Merge pull request #1668 from alexanderkyte/bug1856
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 12 May 2015 21:11:18 +0000 (17:11 -0400)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 12 May 2015 21:11:18 +0000 (17:11 -0400)
[runtime] Overwrite stacktrace for exception on re-throw. Fixes #1856.

1579 files changed:
.gitignore
AUTHORS [deleted file]
Makefile.am
NEWS
README.md
README.vsnet [deleted file]
build-mingw32.sh [deleted file]
configure.ac
data/gdb/mono-gdb.py
data/mono.d
data/net_4_5/machine.config
docs/Makefile.am
docs/assembly-bundle [deleted file]
docs/current-api
docs/documented
docs/exceptions
docs/local-regalloc.txt [deleted file]
docs/mono_handle_d [deleted file]
docs/new-regalloc [deleted file]
docs/opcode-decomp.txt [deleted file]
docs/public-api
docs/reactive-extension-bundle.txt [deleted file]
docs/release-notes-1.0.html [deleted file]
docs/sources/mono-api-internal.html
docs/sources/mono-api-object.html
docs/stack-alignment [deleted file]
docs/tree-mover.txt [deleted file]
external/ikvm
external/referencesource
man/certmgr.1
man/mcs.1
man/mono.1
mcs/COPYING.LIB
mcs/Makefile
mcs/build/Makefile
mcs/build/profiles/basic.make
mcs/build/profiles/binary_reference_assemblies.make [new file with mode: 0644]
mcs/build/profiles/mobile.make
mcs/build/profiles/mobile_static.make
mcs/build/profiles/monodroid.make
mcs/build/profiles/monotouch.make
mcs/build/profiles/monotouch_runtime.make
mcs/build/profiles/net_4_0.make [deleted file]
mcs/build/tests.make
mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
mcs/class/Makefile
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/AssemblyResolver.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/Vbc.cs
mcs/class/Microsoft.Build/Microsoft.Build.Execution/BuildManager.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsColumnType.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds/TdsMetaParameter.cs
mcs/class/Mono.Options/Mono.Options/Options.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/RSAManaged.cs
mcs/class/SMDiagnostics/Makefile
mcs/class/System.ComponentModel.DataAnnotations/Makefile
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations.dll.sources
mcs/class/System.Data/.gitignore
mcs/class/System.Data/Assembly/AssemblyInfo.cs
mcs/class/System.Data/Makefile
mcs/class/System.Data/Mono.Data.SqlExpressions/.gitignore [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Aggregation.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/ArithmeticExpressions.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/BooleanExpressions.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/ColumnReference.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Comparison.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Expressions.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Functions.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/In.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Like.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Literal.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Numeric.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Parser.jay [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/StringFunctions.cs [deleted file]
mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs [deleted file]
mcs/class/System.Data/ReferenceSources/SqlInternalConnectionTds.cs [new file with mode: 0644]
mcs/class/System.Data/System.Data.Common/CatalogLocation.cs [deleted file]
mcs/class/System.Data/System.Data.Common/ChangeLog [deleted file]
mcs/class/System.Data/System.Data.Common/ComparerFactory.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DataContainer.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbCommand.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbCommandBuilder.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbCommandOptionalFeatures.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbCommandSet.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbConnection.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbDataReader.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbDataSourceEnumerator.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbException.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbMetaDataCollectionNames.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbMetaDataColumnNames.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbParameter.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbParameterCollection.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbProviderConfigurationHandler.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbProviderFactories.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbProviderFactoriesConfigurationHandler.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbProviderFactory.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbProviderSupportedClasses.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbTable.cs [deleted file]
mcs/class/System.Data/System.Data.Common/DbTransaction.cs [deleted file]
mcs/class/System.Data/System.Data.Common/GroupByBehavior.cs [deleted file]
mcs/class/System.Data/System.Data.Common/IdentifierCase.cs [deleted file]
mcs/class/System.Data/System.Data.Common/Index.cs [deleted file]
mcs/class/System.Data/System.Data.Common/Key.cs [deleted file]
mcs/class/System.Data/System.Data.Common/PermissionHelper.cs [deleted file]
mcs/class/System.Data/System.Data.Common/RecordCache.cs [deleted file]
mcs/class/System.Data/System.Data.Common/RowUpdatedEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.Common/RowUpdatingEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.Common/SchemaLocation.cs [deleted file]
mcs/class/System.Data/System.Data.Common/SchemaTableColumn.cs [deleted file]
mcs/class/System.Data/System.Data.Common/SchemaTableOptionalColumn.cs [deleted file]
mcs/class/System.Data/System.Data.Common/SupportedJoinOperators.cs [deleted file]
mcs/class/System.Data/System.Data.Common/TaskHelper.cs [deleted file]
mcs/class/System.Data/System.Data.Configuration.jvm/.gitattributes [deleted file]
mcs/class/System.Data/System.Data.Configuration.jvm/GlobalConfig.cs [deleted file]
mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolutionSectionHandler.cs [deleted file]
mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolver.cs [deleted file]
mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolversCollection.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/ChangeLog [deleted file]
mcs/class/System.Data/System.Data.Odbc/NativeBuffer.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcCategoryAttribute.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcColumn.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcCommandBuilder.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcConnection.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcConnectionFactory.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcDataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcDescriptionAttribute.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcErrorCollection.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcException.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcFactory.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcInfoMessageEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcInfoMessageEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcMetaDataCollectionNames.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcMetaDataColumnNames.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcParameter.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcParameterCollection.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcParameterConverter.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatedEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatedEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatingEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatingEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcTransaction.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcType.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcTypeConverter.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/OdbcTypeMap.cs [deleted file]
mcs/class/System.Data/System.Data.Odbc/libodbc.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/.gitattributes [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbCommandBuilder.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbDataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbFactory.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbInfoMessageEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbInfoMessageEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbLiteral.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbParameterCollection.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbPermission.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbPermissionAttribute.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatedEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatedEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatingEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatingEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbSchemaGuid.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbTransaction.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb.jvm/OleDbType.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/ChangeLog [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbCommand.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbCommandBuilder.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbConnection.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbDataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbDataReader.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbError.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbErrorCollection.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbException.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbFactory.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbInfoMessageEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbInfoMessageEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbLiteral.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbMetaDataCollectionNames.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbParameter.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbParameterCollection.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbParameterConverter.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbPermission.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbPermissionAttribute.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatedEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatedEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatingEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatingEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbSchemaGuid.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbTransaction.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/OleDbType.cs [deleted file]
mcs/class/System.Data/System.Data.OleDb/libgda.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase.jvm/.gitattributes [deleted file]
mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDbCommandBuilder.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDbParameterCollection.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase.jvm/ChangeLog [deleted file]
mcs/class/System.Data/System.Data.ProviderBase.jvm/regex.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/ChangeLog [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbCommandBase.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbConnectionBase.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbConnectionFactory.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbConnectionInternal.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbConnectionPoolCounters.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbConnectionPoolOptions.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbDataReaderBase.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbMetaDataFactory.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbParameterBase.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbParameterCollectionBase.cs [deleted file]
mcs/class/System.Data/System.Data.ProviderBase/DbReferenceCollection.cs [deleted file]
mcs/class/System.Data/System.Data.Sql/SqlDataSourceEnumerator.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlBulkCopy.cs
mcs/class/System.Data/System.Data.SqlClient/SqlClientPermission.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlClientPermissionAttribute.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs
mcs/class/System.Data/System.Data.SqlClient/SqlConnectionStringBuilder.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlError.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlErrorCollection.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlException.cs
mcs/class/System.Data/System.Data.SqlClient/SqlInfoMessageEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data.SqlClient/SqlParameter.cs
mcs/class/System.Data/System.Data.dll.sources [deleted file]
mcs/class/System.Data/System.Data/.gitattributes [deleted file]
mcs/class/System.Data/System.Data/AcceptRejectRule.cs [deleted file]
mcs/class/System.Data/System.Data/ChangeLog [deleted file]
mcs/class/System.Data/System.Data/ColumnTypeConverter.cs [deleted file]
mcs/class/System.Data/System.Data/CommandBehavior.cs [deleted file]
mcs/class/System.Data/System.Data/CommandType.cs [deleted file]
mcs/class/System.Data/System.Data/ConflictOption.cs [deleted file]
mcs/class/System.Data/System.Data/ConflictOptions.cs [deleted file]
mcs/class/System.Data/System.Data/ConnectionState.cs [deleted file]
mcs/class/System.Data/System.Data/Constraint.cs [deleted file]
mcs/class/System.Data/System.Data/ConstraintCollection.cs [deleted file]
mcs/class/System.Data/System.Data/ConstraintConverter.cs [deleted file]
mcs/class/System.Data/System.Data/ConstraintException.cs [deleted file]
mcs/class/System.Data/System.Data/CustomDataClassGenerator.cs [deleted file]
mcs/class/System.Data/System.Data/DBConcurrencyException.cs [deleted file]
mcs/class/System.Data/System.Data/DataCategoryAttribute.cs [deleted file]
mcs/class/System.Data/System.Data/DataColumn.cs [deleted file]
mcs/class/System.Data/System.Data/DataColumnChangeEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/DataColumnChangeEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/DataColumnCollection.cs [deleted file]
mcs/class/System.Data/System.Data/DataColumnPropertyDescriptor.cs [deleted file]
mcs/class/System.Data/System.Data/DataException.cs [deleted file]
mcs/class/System.Data/System.Data/DataRelation.cs [deleted file]
mcs/class/System.Data/System.Data/DataRelationCollection.cs [deleted file]
mcs/class/System.Data/System.Data/DataRelationPropertyDescriptor.cs [deleted file]
mcs/class/System.Data/System.Data/DataRow.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowAction.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowBuilder.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowChangeEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowChangeEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowCollection.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowState.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowVersion.cs [deleted file]
mcs/class/System.Data/System.Data/DataRowView.cs [deleted file]
mcs/class/System.Data/System.Data/DataSet.cs [deleted file]
mcs/class/System.Data/System.Data/DataSetDateTime.cs [deleted file]
mcs/class/System.Data/System.Data/DataSysDescriptionAttribute.cs [deleted file]
mcs/class/System.Data/System.Data/DataTable.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableClearEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableClearEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableCollection.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableNewRowEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableNewRowEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/DataTablePropertyDescriptor.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableReader.cs [deleted file]
mcs/class/System.Data/System.Data/DataTableTypeConverter.cs [deleted file]
mcs/class/System.Data/System.Data/DataView.cs [deleted file]
mcs/class/System.Data/System.Data/DataViewManager.cs [deleted file]
mcs/class/System.Data/System.Data/DataViewManagerListItemTypeDescriptor.cs [deleted file]
mcs/class/System.Data/System.Data/DataViewRowState.cs [deleted file]
mcs/class/System.Data/System.Data/DataViewSetting.cs [deleted file]
mcs/class/System.Data/System.Data/DataViewSettingCollection.cs [deleted file]
mcs/class/System.Data/System.Data/DbMetaData.cs [deleted file]
mcs/class/System.Data/System.Data/DbType.cs [deleted file]
mcs/class/System.Data/System.Data/DefaultValueTypeConverter.cs [deleted file]
mcs/class/System.Data/System.Data/DeletedRowInaccessibleException.cs [deleted file]
mcs/class/System.Data/System.Data/DuplicateNameException.cs [deleted file]
mcs/class/System.Data/System.Data/EvaluateException.cs [deleted file]
mcs/class/System.Data/System.Data/ExpressionElement.cs [deleted file]
mcs/class/System.Data/System.Data/FillErrorEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/FillErrorEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/FillOptions.cs [deleted file]
mcs/class/System.Data/System.Data/ForeignKeyConstraint.cs [deleted file]
mcs/class/System.Data/System.Data/IColumnMapping.cs [deleted file]
mcs/class/System.Data/System.Data/IColumnMappingCollection.cs [deleted file]
mcs/class/System.Data/System.Data/IDataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data/IDataParameter.cs [deleted file]
mcs/class/System.Data/System.Data/IDataParameterCollection.cs [deleted file]
mcs/class/System.Data/System.Data/IDataReader.cs [deleted file]
mcs/class/System.Data/System.Data/IDataRecord.cs [deleted file]
mcs/class/System.Data/System.Data/IDbCommand.cs [deleted file]
mcs/class/System.Data/System.Data/IDbConnection.cs [deleted file]
mcs/class/System.Data/System.Data/IDbDataAdapter.cs [deleted file]
mcs/class/System.Data/System.Data/IDbDataParameter.cs [deleted file]
mcs/class/System.Data/System.Data/IDbTransaction.cs [deleted file]
mcs/class/System.Data/System.Data/ISafeDataRecord.cs [deleted file]
mcs/class/System.Data/System.Data/ITableMapping.cs [deleted file]
mcs/class/System.Data/System.Data/ITableMappingCollection.cs [deleted file]
mcs/class/System.Data/System.Data/InRowChangingEventException.cs [deleted file]
mcs/class/System.Data/System.Data/InternalDataCollectionBase.cs [deleted file]
mcs/class/System.Data/System.Data/InvalidConstraintException.cs [deleted file]
mcs/class/System.Data/System.Data/InvalidExpressionException.cs [deleted file]
mcs/class/System.Data/System.Data/IsolationLevel.cs [deleted file]
mcs/class/System.Data/System.Data/LoadOption.cs [deleted file]
mcs/class/System.Data/System.Data/MappingType.cs [deleted file]
mcs/class/System.Data/System.Data/MergeFailedEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/MergeFailedEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/MergeManager.cs [deleted file]
mcs/class/System.Data/System.Data/MissingMappingAction.cs [deleted file]
mcs/class/System.Data/System.Data/MissingPrimaryKeyException.cs [deleted file]
mcs/class/System.Data/System.Data/MissingSchemaAction.cs [deleted file]
mcs/class/System.Data/System.Data/NoNullAllowedException.cs [deleted file]
mcs/class/System.Data/System.Data/Node.cs [deleted file]
mcs/class/System.Data/System.Data/OperationAbortedException.cs [deleted file]
mcs/class/System.Data/System.Data/ParameterDirection.cs [deleted file]
mcs/class/System.Data/System.Data/PropertyAttributes.cs [deleted file]
mcs/class/System.Data/System.Data/PropertyCollection.cs [deleted file]
mcs/class/System.Data/System.Data/ReadOnlyException.cs [deleted file]
mcs/class/System.Data/System.Data/RelatedDataView.cs [deleted file]
mcs/class/System.Data/System.Data/RelationshipConverter.cs [deleted file]
mcs/class/System.Data/System.Data/ResDescriptionAttribute.cs [deleted file]
mcs/class/System.Data/System.Data/ResultSetOptions.cs [deleted file]
mcs/class/System.Data/System.Data/ResultSetSensitivity.cs [deleted file]
mcs/class/System.Data/System.Data/RowNotInTableException.cs [deleted file]
mcs/class/System.Data/System.Data/Rule.cs [deleted file]
mcs/class/System.Data/System.Data/SchemaSerializationMode.cs [deleted file]
mcs/class/System.Data/System.Data/SchemaType.cs [deleted file]
mcs/class/System.Data/System.Data/SerializationFormat.cs [deleted file]
mcs/class/System.Data/System.Data/SqlDbType.cs [deleted file]
mcs/class/System.Data/System.Data/StateChangeEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/StateChangeEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/StatementCompletedEventArgs.cs [deleted file]
mcs/class/System.Data/System.Data/StatementCompletedEventHandler.cs [deleted file]
mcs/class/System.Data/System.Data/StatementType.cs [deleted file]
mcs/class/System.Data/System.Data/StrongTypingException.cs [deleted file]
mcs/class/System.Data/System.Data/SyntaxErrorException.cs [deleted file]
mcs/class/System.Data/System.Data/TableAdapterSchemaInfo.cs [deleted file]
mcs/class/System.Data/System.Data/TypeDataSetGeneratorException.cs [deleted file]
mcs/class/System.Data/System.Data/TypedDataSetGenerator.cs [deleted file]
mcs/class/System.Data/System.Data/UniqueConstraint.cs [deleted file]
mcs/class/System.Data/System.Data/UpdateOptions.cs [deleted file]
mcs/class/System.Data/System.Data/UpdateRowSource.cs [deleted file]
mcs/class/System.Data/System.Data/UpdateStatus.cs [deleted file]
mcs/class/System.Data/System.Data/VersionNotFoundException.cs [deleted file]
mcs/class/System.Data/System.Data/XmlConstants.cs [deleted file]
mcs/class/System.Data/System.Data/XmlDataInferenceLoader.cs [deleted file]
mcs/class/System.Data/System.Data/XmlDataLoader.cs [deleted file]
mcs/class/System.Data/System.Data/XmlDataReader.cs [deleted file]
mcs/class/System.Data/System.Data/XmlDiffLoader.cs [deleted file]
mcs/class/System.Data/System.Data/XmlHelper.cs [deleted file]
mcs/class/System.Data/System.Data/XmlReadMode.cs [deleted file]
mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs [deleted file]
mcs/class/System.Data/System.Data/XmlSchemaWriter.cs [deleted file]
mcs/class/System.Data/System.Data/XmlTableWriter.cs [deleted file]
mcs/class/System.Data/System.Data/XmlWriteMode.cs [deleted file]
mcs/class/System.Data/System.Xml/ChangeLog [deleted file]
mcs/class/System.Data/System.Xml/XmlDataDocument.cs [deleted file]
mcs/class/System.Data/Test/Mono.Data.SqlExpressions/DataColumnExpressionTest.cs
mcs/class/System.Data/Test/System.Data/DataSetTest.cs
mcs/class/System.Data/Test/System.Data/DataTableTest.cs
mcs/class/System.Data/mobile_System.Data.dll.sources
mcs/class/System.Data/mobile_referencesource.sources
mcs/class/System.Data/net_4_5_System.Data.dll.sources
mcs/class/System.Data/referencesource.sources
mcs/class/System.IO.Compression/SharpCompress/Common/Zip/Headers/ZipFileEntry..cs
mcs/class/System.Runtime.Caching/Makefile
mcs/class/System.Runtime.Caching/ReferenceSources/CacheEntryCollection.cs
mcs/class/System.Runtime.Caching/ReferenceSources/CacheExpires.cs
mcs/class/System.Runtime.Caching/ReferenceSources/CacheUsage.cs
mcs/class/System.Runtime.Caching/ReferenceSources/SRef.cs
mcs/class/System.Runtime.DurableInstancing/Assembly/AssemblyInfo.cs
mcs/class/System.Runtime.DurableInstancing/Makefile
mcs/class/System.Runtime.DurableInstancing/SRCore.cs [new file with mode: 0644]
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing.dll.sources
mcs/class/System.Runtime.Serialization.Json/Assembly/AssemblyInfo.cs [deleted file]
mcs/class/System.Runtime.Serialization.Json/Makefile [deleted file]
mcs/class/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources [deleted file]
mcs/class/System.Runtime.Serialization/Assembly/AssemblyInfo.cs
mcs/class/System.Runtime.Serialization/Makefile
mcs/class/System.Runtime.Serialization/ReferenceSource.common.sources [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSource.desktop.sources [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/BitFlagsGenerator.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/CodeInterpreter.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/DiagnosticUtility.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/FxTrace.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/JsonFormatReaderGenerator_static.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/JsonFormatWriterGenerator_static.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/SR.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/SR_missing.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/SchemaExporter_mobile.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/SimplifiedCodeTypeReference.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/XmlDataContract_static.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/XmlExceptionHelper.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatReaderGenerator_static.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatWriterGenerator_static.cs [new file with mode: 0644]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ChangeLog [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DataContractSerializerSection.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DeclaredTypeElement.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DeclaredTypeElementCollection.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ParameterElement.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ParameterElementCollection.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/SerializationSectionGroup.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/TypeElement.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/TypeElementCollection.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.dll.sources
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractResolver.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializerSettings.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataMemberAttribute.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DateTimeFormat.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/EmitTypeInformation.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/EnumMemberAttribute.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ExportOptions.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ExtensionDataObject.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IDataContractSurrogate.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IExtensibleDataObject.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IgnoreDataMemberAttribute.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ImportOptions.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/InvalidDataContractException.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeAttribute.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/NetDataContractSerializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.XsdExporter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlObjectSerializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlSerializableServices.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IFragmentCapableXmlDictionaryWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IStreamProvider.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlBinaryReaderInitializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlBinaryWriterInitializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlDictionary.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlMtomReaderInitializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlMtomWriterInitializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlUTF8ReaderInitializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/IXmlUTF8WriterInitializer.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/OnXmlDictionaryReaderClose.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/UniqueId.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriterAutoGen.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryFormat.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryReaderSession.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryWriterSession.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlC14NWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlCanonicalWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionary.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReader.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderAutoGen.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderQuotas.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryString.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriterAutoGen.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlMtomDictionaryReader.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlMtomDictionaryWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryReader.cs [deleted file]
mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs [deleted file]
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XsdDataContractImporterTest2.cs
mcs/class/System.Runtime.Serialization/Test/System.Xml/XmlMtomDictionaryWriterTest.cs
mcs/class/System.Runtime.Serialization/binary-writer-method-gen.cs [deleted file]
mcs/class/System.Runtime.Serialization/mobile_System.Runtime.Serialization.dll.sources
mcs/class/System.Runtime.Serialization/net_4_0_System.Runtime.Serialization.dll.sources [deleted file]
mcs/class/System.Runtime.Serialization/net_4_5_System.Runtime.Serialization.dll.sources
mcs/class/System.Runtime.Serialization/reader-method-gen.cs [deleted file]
mcs/class/System.Runtime.Serialization/resources/mstypes.schema [deleted file]
mcs/class/System.Runtime.Serialization/writer-method-gen.cs [deleted file]
mcs/class/System.ServiceModel.Discovery/Test/System.ServiceModel.Discovery/AnnouncementClientTest.cs
mcs/class/System.ServiceModel.Internals/Assembly/AssemblyInfo.cs
mcs/class/System.ServiceModel.Internals/Makefile
mcs/class/System.ServiceModel.Web/System.ServiceModel.Channels/WebMessageEncoder.cs
mcs/class/System.ServiceModel.Web/System.ServiceModel.Syndication/SyndicationElementExtensionCollection.cs
mcs/class/System.ServiceModel.Web/System.ServiceModel.Syndication/XmlSyndicationContent.cs
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonReaderTest.cs
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/JsonWriterTest.cs
mcs/class/System.ServiceModel.Web/mobile_System.ServiceModel.Web.dll.sources
mcs/class/System.ServiceModel/System.ServiceModel.Channels/BinaryMessageEncoder.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/Message.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/MessageDescription.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/WsdlExporter.cs
mcs/class/System.Transactions/Assembly/AssemblyInfo.cs
mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JsonDeserializer.cs
mcs/class/System.Web.Extensions/Test/System.Web.Script.Serialization/JavaScriptSerializerTest.cs
mcs/class/System.Windows.Forms/System.Windows.Forms/FileDialog.cs
mcs/class/System.XML/Assembly/AssemblyInfo.cs
mcs/class/System.XML/Dummy.cs [deleted file]
mcs/class/System.XML/Makefile
mcs/class/System.XML/ReferenceSources/CodeDom.cs [new file with mode: 0644]
mcs/class/System.XML/ReferenceSources/Res.cs [new file with mode: 0644]
mcs/class/System.XML/Res.cs [deleted file]
mcs/class/System.XML/System.Xml.Res.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Advanced/ChangeLog [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Advanced/SchemaImporterExtension.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Advanced/SchemaImporterExtensionCollection.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/ChangeLog [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/DateTimeSerializationSection.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionElement.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionElementCollection.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionsSection.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/SerializationSectionGroup.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization.Configuration/XmlSerializerSection.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/CodeGenerationOptions.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/CodeIdentifier.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/CodeIdentifiers.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/UnreferencedObjectEventArgs.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/UnreferencedObjectEventHandler.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlAttributeEventArgs.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlAttributeEventHandler.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlElementEventArgs.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlElementEventHandler.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlNodeEventArgs.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlNodeEventHandler.cs [deleted file]
mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReader.cs
mcs/class/System.XML/System.Xml.Utils.Res.cs [deleted file]
mcs/class/System.XML/System.Xml.Xsl/XslCompiledTransform_Mobile.cs
mcs/class/System.XML/System.Xml.dll.sources
mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTests.cs
mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs
mcs/class/System.XML/genresstringcs.sh [deleted file]
mcs/class/System.XML/mobile_System.Xml.dll.sources
mcs/class/System.Xml.Linq/Test/System.Xml.Linq/XAttributeTest.cs
mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs
mcs/class/System/Microsoft.VisualBasic/VBCodeGenerator.cs
mcs/class/System/ReferenceSources/MonoSocketRuntimeWorkItem.cs [deleted file]
mcs/class/System/ReferenceSources/SR.cs
mcs/class/System/ReferenceSources/Socket.cs
mcs/class/System/System.CodeDom.Compiler/CodeGenerator.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/CodeGeneratorOptions.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/CompilerError.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/CompilerErrorCollection.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/CompilerParameters.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/GeneratedCodeAttribute.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/GeneratorSupport.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/ICodeCompiler.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/ICodeGenerator.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/ICodeParser.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/IndentedTextWriter.cs [deleted file]
mcs/class/System/System.CodeDom.Compiler/LanguageOptions.cs [deleted file]
mcs/class/System/System.CodeDom/ChangeLog [deleted file]
mcs/class/System/System.CodeDom/CodeArgumentReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeArrayCreateExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeArrayIndexerExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeAssignStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeAttachEventStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeAttributeArgument.cs [deleted file]
mcs/class/System/System.CodeDom/CodeAttributeArgumentCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeAttributeDeclaration.cs [deleted file]
mcs/class/System/System.CodeDom/CodeAttributeDeclarationCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeBaseReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeBinaryOperatorExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeBinaryOperatorType.cs [deleted file]
mcs/class/System/System.CodeDom/CodeCastExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeCatchClause.cs [deleted file]
mcs/class/System/System.CodeDom/CodeCatchClauseCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeChecksumPragma.cs [deleted file]
mcs/class/System/System.CodeDom/CodeComment.cs [deleted file]
mcs/class/System/System.CodeDom/CodeCommentStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeCommentStatementCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeCompileUnit.cs [deleted file]
mcs/class/System/System.CodeDom/CodeConditionStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeConstructor.cs [deleted file]
mcs/class/System/System.CodeDom/CodeDefaultValueExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeDelegateCreateExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeDelegateInvokeExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeDirectionExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeDirective.cs [deleted file]
mcs/class/System/System.CodeDom/CodeDirectiveCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeEntryPointMethod.cs [deleted file]
mcs/class/System/System.CodeDom/CodeEventReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeExpressionCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeExpressionStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeFieldReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeGotoStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeIndexerExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeIterationStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeLabeledStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeLinePragma.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMemberEvent.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMemberField.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMemberMethod.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMemberProperty.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMethodInvokeExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMethodReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeMethodReturnStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeNamespace.cs [deleted file]
mcs/class/System/System.CodeDom/CodeNamespaceCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeNamespaceImport.cs [deleted file]
mcs/class/System/System.CodeDom/CodeNamespaceImportCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeObject.cs [deleted file]
mcs/class/System/System.CodeDom/CodeObjectCreateExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeParameterDeclarationExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeParameterDeclarationExpressionCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodePrimitiveExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodePropertyReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodePropertySetValueReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeRegionDirective.cs [deleted file]
mcs/class/System/System.CodeDom/CodeRegionMode.cs [deleted file]
mcs/class/System/System.CodeDom/CodeRemoveEventStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeSnippetCompileUnit.cs [deleted file]
mcs/class/System/System.CodeDom/CodeSnippetExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeSnippetStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeSnippetTypeMember.cs [deleted file]
mcs/class/System/System.CodeDom/CodeStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeStatementCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeThisReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeThrowExceptionStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTryCatchFinallyStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeConstructor.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeDeclaration.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeDeclarationCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeDelegate.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeMember.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeMemberCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeOfExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeParameter.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeParameterCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeReference.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeReferenceCollection.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/CodeTypeReferenceOptions.cs [deleted file]
mcs/class/System/System.CodeDom/CodeVariableDeclarationStatement.cs [deleted file]
mcs/class/System/System.CodeDom/CodeVariableReferenceExpression.cs [deleted file]
mcs/class/System/System.CodeDom/FieldDirection.cs [deleted file]
mcs/class/System/System.CodeDom/ICodeDomVisitor.cs [deleted file]
mcs/class/System/System.CodeDom/MemberAttributes.cs [deleted file]
mcs/class/System/System.Diagnostics/Process.cs
mcs/class/System/System.IO/KeventWatcher.cs
mcs/class/System/System.Net.Sockets/SafeSocketHandle.cs
mcs/class/System/System.Net.Sockets/Socket.cs
mcs/class/System/System.Net.Sockets/SocketAsyncCallback.cs [new file with mode: 0644]
mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
mcs/class/System/System.Net.Sockets/SocketAsyncResult.cs [new file with mode: 0644]
mcs/class/System/System.Net.Sockets/SocketAsyncWorker.cs [new file with mode: 0644]
mcs/class/System/System.Net.Sockets/SocketOperation.cs [new file with mode: 0644]
mcs/class/System/System.Net.Sockets/SocketOptionName.cs [deleted file]
mcs/class/System/System.Net.Sockets/Socket_2_1.cs [deleted file]
mcs/class/System/System.Net/Dns.cs
mcs/class/System/System.Net/ServicePoint.cs
mcs/class/System/System.Net/WebConnectionGroup.cs
mcs/class/System/System.Threading/SemaphoreFullException.cs [deleted file]
mcs/class/System/System.dll.sources
mcs/class/System/System/Uri.cs
mcs/class/System/Test/Microsoft.VisualBasic/CodeGeneratorFromCompileUnitTest.cs
mcs/class/System/Test/System.CodeDom.Compiler/CodeGeneratorGenerateFromCompileUnitTest.cs
mcs/class/System/Test/System.Diagnostics/ProcessTest.cs
mcs/class/System/Test/System.IO.Compression/DeflateStreamTest.cs
mcs/class/System/Test/System.Net.Sockets/SocketTest.cs
mcs/class/System/Test/System/UriTest3.cs
mcs/class/System/mobile_System.dll.sources
mcs/class/corlib/Assembly/AssemblyInfo.cs
mcs/class/corlib/Makefile
mcs/class/corlib/Microsoft.Win32.SafeHandles/ChangeLog [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/CriticalHandleMinusOneIsInvalid.cs [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeFileHandle.cs [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeHandleMinusOneIsInvalid.cs [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeRegistryHandle.cs [deleted file]
mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeWaitHandle.cs [deleted file]
mcs/class/corlib/ReferenceSources/Buffer.cs [new file with mode: 0644]
mcs/class/corlib/ReferenceSources/CultureData.cs
mcs/class/corlib/ReferenceSources/Environment.cs
mcs/class/corlib/ReferenceSources/JitHelpers.cs
mcs/class/corlib/ReferenceSources/MonoRuntimeWorkItem.cs [deleted file]
mcs/class/corlib/ReferenceSources/ParseNumbers.cs
mcs/class/corlib/ReferenceSources/RuntimeType.cs
mcs/class/corlib/ReferenceSources/SharedStatics.cs [new file with mode: 0644]
mcs/class/corlib/ReferenceSources/String.cs
mcs/class/corlib/ReferenceSources/TextInfo.cs [new file with mode: 0644]
mcs/class/corlib/ReferenceSources/TimeZoneInfoOptions.cs [deleted file]
mcs/class/corlib/ReferenceSources/TypeBuilderInstantiation.cs [new file with mode: 0644]
mcs/class/corlib/ReferenceSources/win32native.cs [new file with mode: 0644]
mcs/class/corlib/System.Collections.Generic/Comparer.cs [deleted file]
mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs [deleted file]
mcs/class/corlib/System.Diagnostics/StackTrace.cs
mcs/class/corlib/System.Globalization/.gitattributes [deleted file]
mcs/class/corlib/System.Globalization/CalendarAlgorithmType.cs [deleted file]
mcs/class/corlib/System.Globalization/CalendarWeekRule.cs [deleted file]
mcs/class/corlib/System.Globalization/CultureInfo.cs
mcs/class/corlib/System.Globalization/DateTimeStyles.cs [deleted file]
mcs/class/corlib/System.Globalization/DigitShapes.cs [deleted file]
mcs/class/corlib/System.Globalization/GregorianCalendarTypes.cs [deleted file]
mcs/class/corlib/System.Globalization/TextInfo.cs [deleted file]
mcs/class/corlib/System.IO/DirectoryNotFoundException.cs [deleted file]
mcs/class/corlib/System.IO/DriveNotFoundException.cs [deleted file]
mcs/class/corlib/System.IO/EndOfStreamException.cs [deleted file]
mcs/class/corlib/System.IO/FileLoadException.cs [deleted file]
mcs/class/corlib/System.IO/FileNotFoundException.cs [deleted file]
mcs/class/corlib/System.IO/FileStream.cs
mcs/class/corlib/System.IO/IOException.cs [deleted file]
mcs/class/corlib/System.IO/PathTooLongException.cs [deleted file]
mcs/class/corlib/System.Reflection.Emit/CustomAttributeBuilder.cs
mcs/class/corlib/System.Reflection.Emit/UnmanagedMarshal.cs
mcs/class/corlib/System.Reflection/Assembly.cs
mcs/class/corlib/System.Reflection/MonoField.cs
mcs/class/corlib/System.Reflection/MonoMethod.cs
mcs/class/corlib/System.Runtime.ConstrainedExecution/CER.cs [deleted file]
mcs/class/corlib/System.Runtime.ConstrainedExecution/ChangeLog [deleted file]
mcs/class/corlib/System.Runtime.ConstrainedExecution/Consistency.cs [deleted file]
mcs/class/corlib/System.Runtime.ConstrainedExecution/CriticialFinalizerObject.cs [deleted file]
mcs/class/corlib/System.Runtime.ConstrainedExecution/PrePrepareMethodAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.ConstrainedExecution/ReliabilityContractAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/BINDPTR.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/BIND_OPTS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/CALLCONV.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/CONNECTDATA.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ChangeLog [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/DESCKIND.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/DISPPARAMS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ELEMDESC.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/EXCEPINFO.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FILETIME.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCDESC.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCFLAGS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCKIND.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IBindCtx.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IConnectionPoint.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IConnectionPointContainer.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IDLDESC.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IDLFLAG.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumConnectionPoints.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumConnections.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumMoniker.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumString.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumVARIANT.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IMPLTYPEFLAGS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IMoniker.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/INVOKEKIND.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IPersistFile.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IRunningObjectTable.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IStream.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeComp.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeInfo.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeInfo2.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeLib.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeLib2.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/LIBFLAGS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/PARAMDESC.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/PARAMFLAG.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/STATSTG.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/SYSKIND.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEATTR.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEDESC.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEFLAGS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEKIND.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPELIBATTR.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARDESC.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARFLAGS.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARKIND.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.Expando/Changelog [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.Expando/IExpando.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices.WindowsRuntime/WindowsRuntimeMarshal.cs
mcs/class/corlib/System.Runtime.InteropServices/AllowReversePInvokeCallsAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/AutomationProxyAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/BestFitMappingAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/CONNECTDATA.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ClassInterfaceAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ClassInterfaceType.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/CoClassAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComAliasNameAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComCompatibleVersionAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComConversionLossAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComDefaultInterfaceAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComEventInterfaceAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComImportAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComInterfaceType.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComRegisterFunctionAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComSourceInterfacesAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComUnregisterFunctionAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ComVisible.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/DefaultCharSetAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/DefaultDllImportSearchPathsAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/DispIdAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/DllImportAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/DllImportSearchPath.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/EXCEPINFO.cs
mcs/class/corlib/System.Runtime.InteropServices/FieldOffsetAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/GuidAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/IDispatchImplAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/IDispatchImplType.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/IErrorInfo.cs
mcs/class/corlib/System.Runtime.InteropServices/ImportedFromTypeLibAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/InAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/InterfaceTypeAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/LCIDConversionAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ManagedErrorInfo.cs
mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs
mcs/class/corlib/System.Runtime.InteropServices/OptionalAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/OutAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/PreserveSigAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/PrimaryInteropAssemblyAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/ProgIdAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/SetWin32ContextInIDispatchAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/StructLayoutAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeIdentifierAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibFuncAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibFuncFlags.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibImportClassAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibTypeAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibTypeFlags.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibVarAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibVarFlags.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/TypeLibVersionAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/UCOMIConnectionPoint.cs
mcs/class/corlib/System.Runtime.InteropServices/UCOMIConnectionPointContainer.cs
mcs/class/corlib/System.Runtime.InteropServices/UCOMIEnumConnectionPoints.cs
mcs/class/corlib/System.Runtime.InteropServices/UCOMIEnumConnections.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/UCOMITypeComp.cs
mcs/class/corlib/System.Runtime.InteropServices/UCOMITypeInfo.cs
mcs/class/corlib/System.Runtime.InteropServices/UCOMITypeLib.cs
mcs/class/corlib/System.Runtime.InteropServices/UnmanagedFunctionPointerAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/UnmanagedType.cs [deleted file]
mcs/class/corlib/System.Runtime.InteropServices/VarEnum.cs [deleted file]
mcs/class/corlib/System.Runtime.Reliability/CER.cs [deleted file]
mcs/class/corlib/System.Runtime.Reliability/ChangeLog [deleted file]
mcs/class/corlib/System.Runtime.Reliability/Consistency.cs [deleted file]
mcs/class/corlib/System.Runtime.Reliability/PrePrepareMethodAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.Reliability/ReliabilityContractAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.Remoting.Contexts/Context.cs
mcs/class/corlib/System.Runtime.Remoting.Lifetime/LeaseManager.cs
mcs/class/corlib/System.Runtime.Remoting.Messaging/AsyncResult.cs
mcs/class/corlib/System.Runtime.Remoting/TypeInfo.cs
mcs/class/corlib/System.Runtime.Versioning/ChangeLog [deleted file]
mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesOptions.cs [deleted file]
mcs/class/corlib/System.Runtime.Versioning/ResourceConsumptionAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.Versioning/ResourceExposureAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.Versioning/ResourceScope.cs [deleted file]
mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs [deleted file]
mcs/class/corlib/System.Runtime.Versioning/VersioningHelper.cs [deleted file]
mcs/class/corlib/System.Security.Claims/Claim.cs [deleted file]
mcs/class/corlib/System.Security.Claims/ClaimTypes.cs [deleted file]
mcs/class/corlib/System.Security.Claims/ClaimValueTypes.cs [deleted file]
mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs [deleted file]
mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/Aes.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/AsymmetricAlgorithm.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/AsymmetricKeyExchangeDeformatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/AsymmetricKeyExchangeFormatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/AsymmetricSignatureDeformatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/AsymmetricSignatureFormatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/Base64Constants.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CipherMode.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs
mcs/class/corlib/System.Security.Cryptography/CryptoConfig.fullaot.cs
mcs/class/corlib/System.Security.Cryptography/CryptoConfig_2_1.cs
mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CryptoStreamMode.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CspParameters.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/CspProviderFlags.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/DES.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/DESCryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/DSA.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/DSAParameters.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/DSASignatureDeformatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/DSASignatureFormatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/DeriveBytes.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/FromBase64Transform.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMAC.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMACMD5.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMACRIPEMD160.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMACSHA256.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMACSHA384.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HMACSHA512.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/HashAlgorithm.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/ICryptoTransform.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/KeySizes.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/KeyedHashAlgorithm.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/MACTripleDES.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/MD5.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/MD5CryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/MaskGenerationMethod.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/PKCS1MaskGenerationMethod.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/PaddingMode.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/PasswordDeriveBytes.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RC2.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RC2CryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/RIPEMD160.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RIPEMD160Managed.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RSA.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/RSAOAEPKeyExchangeDeformatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RSAOAEPKeyExchangeFormatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RSAPKCS1KeyExchangeDeformatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RSAPKCS1KeyExchangeFormatter.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RSAParameters.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/Rfc2898DeriveBytes.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/Rijndael.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RijndaelManaged.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/RijndaelManagedTransform.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA1.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA1Managed.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA256.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA256Managed.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA384.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA384Managed.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA512.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHA512Managed.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SHAConstants.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SignatureDescription.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/SymmetricAlgorithm.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/ToBase64Transform.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/TripleDES.cs [deleted file]
mcs/class/corlib/System.Security.Cryptography/TripleDESCryptoServiceProvider.cs
mcs/class/corlib/System.Security.Policy/Evidence.cs
mcs/class/corlib/System.Security.Principal/GenericIdentity.cs [deleted file]
mcs/class/corlib/System.Security.Principal/WindowsIdentity.cs
mcs/class/corlib/System.Security/AllowPartiallyTrustedCallersAttribute.cs [deleted file]
mcs/class/corlib/System.Security/SecurityCriticalAttribute.cs [deleted file]
mcs/class/corlib/System.Security/SecurityCriticalScope.cs [deleted file]
mcs/class/corlib/System.Security/SecurityElement.cs
mcs/class/corlib/System.Security/SecurityFrame.cs
mcs/class/corlib/System.Security/SecurityRuleSet.cs [deleted file]
mcs/class/corlib/System.Security/SecurityRulesAttribute.cs [deleted file]
mcs/class/corlib/System.Security/SecuritySafeCriticalAttribute.cs [deleted file]
mcs/class/corlib/System.Security/SecurityTransparentAttribute.cs [deleted file]
mcs/class/corlib/System.Security/SecurityTreatAsSafeAttribute.cs [deleted file]
mcs/class/corlib/System.Security/SuppressUnmanagedCodeSecurityAttribute.cs [deleted file]
mcs/class/corlib/System.Security/UnverifiableCodeAttribute.cs [deleted file]
mcs/class/corlib/System.Threading/LockRecursionException.cs [deleted file]
mcs/class/corlib/System.Threading/NamedDataSlot.cs
mcs/class/corlib/System.Threading/Thread.cs
mcs/class/corlib/System.Threading/ThreadAbortException.cs [deleted file]
mcs/class/corlib/System.Threading/ThreadInterruptedException.cs [deleted file]
mcs/class/corlib/System/Action.cs [deleted file]
mcs/class/corlib/System/AndroidPlatform.cs
mcs/class/corlib/System/ApplicationId.cs [deleted file]
mcs/class/corlib/System/Array.cs
mcs/class/corlib/System/AsyncCallback.cs [deleted file]
mcs/class/corlib/System/AttributeTargets.cs [deleted file]
mcs/class/corlib/System/BadImageFormatException.cs [deleted file]
mcs/class/corlib/System/Buffer.cs [deleted file]
mcs/class/corlib/System/CLSCompliantAttribute.cs [deleted file]
mcs/class/corlib/System/Comparison.cs [deleted file]
mcs/class/corlib/System/ConsoleCancelEventArgs.cs [deleted file]
mcs/class/corlib/System/ConsoleCancelEventHandler.cs [deleted file]
mcs/class/corlib/System/ConsoleColor.cs [deleted file]
mcs/class/corlib/System/ConsoleKey.cs [deleted file]
mcs/class/corlib/System/ConsoleKeyInfo.cs [deleted file]
mcs/class/corlib/System/ConsoleModifiers.cs [deleted file]
mcs/class/corlib/System/ConsoleSpecialKey.cs [deleted file]
mcs/class/corlib/System/ContextBoundObject.cs [deleted file]
mcs/class/corlib/System/ContextStaticAttribute.cs [deleted file]
mcs/class/corlib/System/Converter.cs [deleted file]
mcs/class/corlib/System/Delegate.cs
mcs/class/corlib/System/Environment.cs
mcs/class/corlib/System/EventArgs.cs [deleted file]
mcs/class/corlib/System/EventHandler.cs [deleted file]
mcs/class/corlib/System/Exception.cs
mcs/class/corlib/System/FlagsAttribute.cs [deleted file]
mcs/class/corlib/System/Funcs.cs [deleted file]
mcs/class/corlib/System/Guid.cs
mcs/class/corlib/System/IAppDomainSetup.cs [deleted file]
mcs/class/corlib/System/IApplicationDescription.cs [deleted file]
mcs/class/corlib/System/IAsyncResult.cs [deleted file]
mcs/class/corlib/System/ICloneable.cs [deleted file]
mcs/class/corlib/System/IComparable.cs [deleted file]
mcs/class/corlib/System/IConvertible.cs [deleted file]
mcs/class/corlib/System/ICustomFormatter.cs [deleted file]
mcs/class/corlib/System/IDisposable.cs [deleted file]
mcs/class/corlib/System/IEquatable.cs [deleted file]
mcs/class/corlib/System/IFormatProvider.cs [deleted file]
mcs/class/corlib/System/IFormattable.cs [deleted file]
mcs/class/corlib/System/IHostContext.cs [deleted file]
mcs/class/corlib/System/IObservable.cs [deleted file]
mcs/class/corlib/System/IObserver.cs [deleted file]
mcs/class/corlib/System/IProgress.cs [deleted file]
mcs/class/corlib/System/IServiceProvider.cs [deleted file]
mcs/class/corlib/System/InvalidTimeZoneException.cs [deleted file]
mcs/class/corlib/System/LoaderOptimization.cs [deleted file]
mcs/class/corlib/System/LoaderOptimizationAttribute.cs [deleted file]
mcs/class/corlib/System/MTAThreadAttribute.cs [deleted file]
mcs/class/corlib/System/MulticastDelegate.cs
mcs/class/corlib/System/NonSerializedAttribute.cs [deleted file]
mcs/class/corlib/System/NullConsoleDriver.cs
mcs/class/corlib/System/ObsoleteAttribute.cs [deleted file]
mcs/class/corlib/System/ParamArrayAttribute.cs [deleted file]
mcs/class/corlib/System/Predicate.cs [deleted file]
mcs/class/corlib/System/STAThreadAttribute.cs [deleted file]
mcs/class/corlib/System/SerializableAttribute.cs [deleted file]
mcs/class/corlib/System/TermInfoReader.cs
mcs/class/corlib/System/ThreadStaticAttribute.cs [deleted file]
mcs/class/corlib/System/TimeZone.cs
mcs/class/corlib/System/TimeZoneInfo.AdjustmentRule.cs [deleted file]
mcs/class/corlib/System/TimeZoneInfo.MonoTouch.cs
mcs/class/corlib/System/TimeZoneInfo.TransitionTime.cs [deleted file]
mcs/class/corlib/System/TimeZoneInfo.cs
mcs/class/corlib/System/TimeZoneNotFoundException.cs [deleted file]
mcs/class/corlib/System/TypeLoadException.cs [deleted file]
mcs/class/corlib/System/Variant.cs
mcs/class/corlib/Test/System.Collections.Generic/DictionaryTest.cs
mcs/class/corlib/Test/System.Collections.Generic/EqualityComparerTest.cs
mcs/class/corlib/Test/System.Globalization/CultureInfoTest.cs
mcs/class/corlib/Test/System.Reflection/AssemblyTest.cs
mcs/class/corlib/Test/System.Reflection/FieldInfoTest.cs
mcs/class/corlib/Test/System.Reflection/ParameterInfoTest.cs
mcs/class/corlib/Test/System.Resources/ResourceReaderTest.cs
mcs/class/corlib/Test/System.Runtime.ExceptionServices/ExceptionDispatchInfoTest.cs
mcs/class/corlib/Test/System.Runtime.Serialization/SerializationTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/CryptoStreamTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/CspParametersTest.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Security.Cryptography/DSACryptoServiceProviderTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/FromBase64Transform.cs
mcs/class/corlib/Test/System.Security.Cryptography/PasswordDeriveBytesTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/RSACryptoServiceProviderTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/RSAPKCS1KeyExchangeDeformatterTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/RSATest.cs
mcs/class/corlib/Test/System.Security.Cryptography/ToBase64TransformTest.cs
mcs/class/corlib/Test/System.Security/SecurityCriticalAttributeTest.cs
mcs/class/corlib/Test/System/AttributeTest.cs
mcs/class/corlib/Test/System/ConvertTest.cs
mcs/class/corlib/Test/System/DelegateTest.cs
mcs/class/corlib/Test/System/StringTest.cs
mcs/class/corlib/Test/System/TimeZoneInfo.AdjustmentRuleTest.cs
mcs/class/corlib/Test/System/TimeZoneInfoTest.cs
mcs/class/corlib/Test/System/TimeZoneTest.cs
mcs/class/corlib/Test/System/TypeTest.cs
mcs/class/corlib/corlib.dll.sources
mcs/class/corlib/corlib_test.dll.sources
mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs
mcs/class/monodoc/Monodoc/generators/html/Ecmaspec2Html.cs
mcs/class/monodoc/Monodoc/generators/html/Toc2Html.cs
mcs/class/reference-assemblies/Makefile
mcs/errors/cs0104-5.cs [new file with mode: 0644]
mcs/errors/cs0200-7.cs [new file with mode: 0644]
mcs/errors/cs0246-35.cs [new file with mode: 0644]
mcs/errors/cs0815-8.cs [new file with mode: 0644]
mcs/jay/jay.vcxproj
mcs/mcs/anonymous.cs
mcs/mcs/ecore.cs
mcs/mcs/expression.cs
mcs/mcs/import.cs
mcs/mcs/module.cs
mcs/mcs/namespace.cs
mcs/mcs/property.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/tests/gtest-autoproperty-03.cs
mcs/tests/gtest-autoproperty-17.cs [new file with mode: 0644]
mcs/tests/gtest-autoproperty-18.cs [new file with mode: 0644]
mcs/tests/gtest-optional-09.cs
mcs/tests/test-923.cs [new file with mode: 0644]
mcs/tests/test-anon-70.cs
mcs/tests/test-async-78.cs [new file with mode: 0644]
mcs/tests/test-static-using-08.cs [new file with mode: 0644]
mcs/tests/test-static-using-09-lib.cs [new file with mode: 0644]
mcs/tests/test-static-using-09.cs [new file with mode: 0644]
mcs/tests/test-static-using-10.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_5.xml
mcs/tools/corcompare/mono-api-html/ApiChange.cs
mcs/tools/corcompare/mono-api-html/ClassComparer.cs
mcs/tools/corcompare/mono-api-html/FieldComparer.cs
mcs/tools/corcompare/mono-api-html/MemberComparer.cs
mcs/tools/corcompare/mono-api-html/PropertyComparer.cs
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs
mcs/tools/mono-symbolicate/LocationProvider.cs
mcs/tools/monop/Makefile
mcs/tools/monop/monop.cs
mcs/tools/monop/outline.cs
mcs/tools/pdb2mdb/BitAccess.cs
mcs/tools/xbuild/Makefile
mcs/tools/xbuild/data/12.0/Microsoft.Common.tasks
mcs/tools/xbuild/data/14.0/Microsoft.Common.tasks
mcs/tools/xbuild/data/2.0/Microsoft.Common.tasks
mcs/tools/xbuild/data/3.5/Microsoft.Common.tasks
mcs/tools/xbuild/data/4.0/Microsoft.Common.tasks
mcs/tools/xbuild/data/Microsoft.VisualBasic.targets
mcs/tools/xbuild/targets/Microsoft.Portable.VisualBasic_4.0.targets [new file with mode: 0644]
mcs/tools/xbuild/targets/Microsoft.Portable.VisualBasic_4.5.targets [new file with mode: 0644]
mono-core.spec.in [deleted file]
mono/Makefile.am
mono/arch/s390x/s390x-codegen.h
mono/dis/Makefile.am
mono/dis/TODO [deleted file]
mono/io-layer/Makefile.am
mono/io-layer/handles.c
mono/io-layer/io-layer.h
mono/io-layer/processes.c
mono/io-layer/system.c [deleted file]
mono/io-layer/system.h [deleted file]
mono/io-layer/threads.h
mono/io-layer/uglify.h
mono/io-layer/wapi-remap.h
mono/io-layer/wapi.h
mono/io-layer/wthreads.c
mono/metadata/Makefile.am
mono/metadata/TODO [deleted file]
mono/metadata/appdomain.c
mono/metadata/assembly.c
mono/metadata/blob.h
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/console-unix.c
mono/metadata/debug-helpers.c
mono/metadata/debug-mono-ppdb.c [new file with mode: 0644]
mono/metadata/debug-mono-ppdb.h [new file with mode: 0644]
mono/metadata/debug-mono-symfile.c
mono/metadata/debug-mono-symfile.h
mono/metadata/decimal-ms.c
mono/metadata/domain-internals.h
mono/metadata/domain.c
mono/metadata/file-mmap-posix.c
mono/metadata/file-mmap-windows.c
mono/metadata/gc-internal.h
mono/metadata/gc-memfuncs.c [deleted file]
mono/metadata/gc-stats.c [new file with mode: 0644]
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/image.c
mono/metadata/jit-info.c
mono/metadata/loader.c
mono/metadata/lock-tracer.h
mono/metadata/make-bundle.pl [deleted file]
mono/metadata/marshal.c
mono/metadata/mempool-internals.h
mono/metadata/metadata-internals.h
mono/metadata/metadata.c
mono/metadata/monitor.c
mono/metadata/mono-debug-debugger.h
mono/metadata/mono-debug.c
mono/metadata/mono-debug.h
mono/metadata/mono-endian.h
mono/metadata/monosn.c [deleted file]
mono/metadata/object-internals.h
mono/metadata/object-offsets.h
mono/metadata/object.c
mono/metadata/process.c
mono/metadata/reflection.c
mono/metadata/row-indexes.h
mono/metadata/sample-bundle [deleted file]
mono/metadata/security-manager.c
mono/metadata/security-manager.h
mono/metadata/seq-points-data.c
mono/metadata/seq-points-data.h
mono/metadata/sgen-alloc.c [deleted file]
mono/metadata/sgen-archdep.h [deleted file]
mono/metadata/sgen-bridge-internal.h [new file with mode: 0644]
mono/metadata/sgen-bridge.c
mono/metadata/sgen-cardtable.c [deleted file]
mono/metadata/sgen-cardtable.h [deleted file]
mono/metadata/sgen-client-mono.h [new file with mode: 0644]
mono/metadata/sgen-conf.h [deleted file]
mono/metadata/sgen-copy-object.h [deleted file]
mono/metadata/sgen-debug.c [deleted file]
mono/metadata/sgen-descriptor.c [deleted file]
mono/metadata/sgen-descriptor.h [deleted file]
mono/metadata/sgen-fin-weak-hash.c [deleted file]
mono/metadata/sgen-gc.c [deleted file]
mono/metadata/sgen-gc.h [deleted file]
mono/metadata/sgen-gray.c [deleted file]
mono/metadata/sgen-gray.h [deleted file]
mono/metadata/sgen-hash-table.c [deleted file]
mono/metadata/sgen-hash-table.h [deleted file]
mono/metadata/sgen-internal.c [deleted file]
mono/metadata/sgen-layout-stats.c [deleted file]
mono/metadata/sgen-layout-stats.h [deleted file]
mono/metadata/sgen-los.c [deleted file]
mono/metadata/sgen-major-copy-object.h [deleted file]
mono/metadata/sgen-marksweep-drain-gray-stack.h [deleted file]
mono/metadata/sgen-marksweep-scan-object-concurrent.h [deleted file]
mono/metadata/sgen-marksweep.c [deleted file]
mono/metadata/sgen-memory-governor.c [deleted file]
mono/metadata/sgen-memory-governor.h [deleted file]
mono/metadata/sgen-minor-copy-object.h [deleted file]
mono/metadata/sgen-minor-scan-object.h [deleted file]
mono/metadata/sgen-mono.c [new file with mode: 0644]
mono/metadata/sgen-new-bridge.c
mono/metadata/sgen-nursery-allocator.c [deleted file]
mono/metadata/sgen-old-bridge.c
mono/metadata/sgen-os-mach.c
mono/metadata/sgen-os-posix.c
mono/metadata/sgen-os-win32.c
mono/metadata/sgen-pinning-stats.c [deleted file]
mono/metadata/sgen-pinning.c [deleted file]
mono/metadata/sgen-pinning.h [deleted file]
mono/metadata/sgen-pointer-queue.c [deleted file]
mono/metadata/sgen-pointer-queue.h [deleted file]
mono/metadata/sgen-protocol-def.h [deleted file]
mono/metadata/sgen-protocol.c [deleted file]
mono/metadata/sgen-protocol.h [deleted file]
mono/metadata/sgen-qsort.c [deleted file]
mono/metadata/sgen-qsort.h [deleted file]
mono/metadata/sgen-scan-object.h [deleted file]
mono/metadata/sgen-simple-nursery.c [deleted file]
mono/metadata/sgen-split-nursery.c [deleted file]
mono/metadata/sgen-stw.c
mono/metadata/sgen-tagged-pointer.h [deleted file]
mono/metadata/sgen-tarjan-bridge.c
mono/metadata/sgen-toggleref.c
mono/metadata/sgen-workers.c [deleted file]
mono/metadata/sgen-workers.h [deleted file]
mono/metadata/socket-io.c
mono/metadata/socket-io.h
mono/metadata/threadpool-ms-io-epoll.c [new file with mode: 0644]
mono/metadata/threadpool-ms-io-kqueue.c [new file with mode: 0644]
mono/metadata/threadpool-ms-io-poll.c [new file with mode: 0644]
mono/metadata/threadpool-ms-io.c
mono/metadata/threadpool-ms-io.h
mono/metadata/threadpool-ms.c
mono/metadata/threadpool-ms.h
mono/metadata/threadpool.c
mono/metadata/threadpool.h
mono/metadata/threads-types.h
mono/metadata/threads.c
mono/mini/Makefile.am.in
mono/mini/README [deleted file]
mono/mini/TODO [deleted file]
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/cpu-amd64.md
mono/mini/cpu-arm.md
mono/mini/cpu-arm64.md
mono/mini/cpu-s390x.md
mono/mini/cpu-x86.md
mono/mini/debugger-agent.c
mono/mini/debugger-agent.h
mono/mini/declsec.c [deleted file]
mono/mini/declsec.h [deleted file]
mono/mini/dominators.c
mono/mini/driver.c
mono/mini/dwarfwriter.c
mono/mini/exceptions-amd64.c
mono/mini/exceptions-arm.c
mono/mini/exceptions-mips.c
mono/mini/exceptions-ppc.c
mono/mini/exceptions-s390x.c
mono/mini/exceptions-x86.c
mono/mini/generics.cs
mono/mini/genmdesc.c
mono/mini/genmdesc.pl
mono/mini/helpers.c
mono/mini/image-writer.c
mono/mini/image-writer.h
mono/mini/ir-emit.h
mono/mini/liveness.c
mono/mini/method-to-ir.c [changed mode: 0755->0644]
mono/mini/mini-amd64.c [changed mode: 0755->0644]
mono/mini/mini-amd64.h
mono/mini/mini-arm.c
mono/mini/mini-arm.h
mono/mini/mini-codegen.c
mono/mini/mini-exceptions.c
mono/mini/mini-gc.c
mono/mini/mini-generic-sharing.c
mono/mini/mini-ia64.c
mono/mini/mini-llvm.c
mono/mini/mini-mips.c
mono/mini/mini-mips.h
mono/mini/mini-ops.h
mono/mini/mini-posix.c
mono/mini/mini-ppc.c
mono/mini/mini-ppc.h
mono/mini/mini-runtime.c [changed mode: 0755->0644]
mono/mini/mini-s390x.c
mono/mini/mini-s390x.h
mono/mini/mini-sparc.c [changed mode: 0755->0644]
mono/mini/mini-trampolines.c
mono/mini/mini-x86.c
mono/mini/mini-x86.h
mono/mini/mini.c [changed mode: 0755->0644]
mono/mini/mini.h
mono/mini/mini.prj [deleted file]
mono/mini/optflags-def.h
mono/mini/patch-info.h
mono/mini/regalloc.c [deleted file]
mono/mini/regalloc2.c [deleted file]
mono/mini/seq-points.c
mono/mini/seq-points.h
mono/mini/simd-intrinsics.c
mono/mini/ssapre.c [deleted file]
mono/mini/ssapre.h [deleted file]
mono/mini/tramp-amd64.c [changed mode: 0755->0644]
mono/mini/tramp-arm.c
mono/mini/tramp-ia64.c
mono/mini/tramp-mips.c
mono/mini/tramp-ppc.c
mono/mini/tramp-s390x.c
mono/mini/tramp-sparc.c
mono/mini/tramp-x86.c
mono/mini/unwind.c
mono/mini/wapihandles.c [deleted file]
mono/mini/xdebug.c
mono/profiler/Makefile.am
mono/profiler/log-profiler.txt [deleted file]
mono/profiler/mono-cov.c [deleted file]
mono/profiler/mono-profiler-logging.c [deleted file]
mono/profiler/proflog.h
mono/sgen/.gitignore [new file with mode: 0644]
mono/sgen/Makefile.am [new file with mode: 0644]
mono/sgen/gc-internal-agnostic.h [new file with mode: 0644]
mono/sgen/sgen-alloc.c [new file with mode: 0644]
mono/sgen/sgen-archdep.h [new file with mode: 0644]
mono/sgen/sgen-cardtable.c [new file with mode: 0644]
mono/sgen/sgen-cardtable.h [new file with mode: 0644]
mono/sgen/sgen-client.h [new file with mode: 0644]
mono/sgen/sgen-conf.h [new file with mode: 0644]
mono/sgen/sgen-copy-object.h [new file with mode: 0644]
mono/sgen/sgen-debug.c [new file with mode: 0644]
mono/sgen/sgen-descriptor.c [new file with mode: 0644]
mono/sgen/sgen-descriptor.h [new file with mode: 0644]
mono/sgen/sgen-fin-weak-hash.c [new file with mode: 0644]
mono/sgen/sgen-gc.c [new file with mode: 0644]
mono/sgen/sgen-gc.h [new file with mode: 0644]
mono/sgen/sgen-gray.c [new file with mode: 0644]
mono/sgen/sgen-gray.h [new file with mode: 0644]
mono/sgen/sgen-hash-table.c [new file with mode: 0644]
mono/sgen/sgen-hash-table.h [new file with mode: 0644]
mono/sgen/sgen-internal.c [new file with mode: 0644]
mono/sgen/sgen-layout-stats.c [new file with mode: 0644]
mono/sgen/sgen-layout-stats.h [new file with mode: 0644]
mono/sgen/sgen-los.c [new file with mode: 0644]
mono/sgen/sgen-major-copy-object.h [new file with mode: 0644]
mono/sgen/sgen-marksweep-drain-gray-stack.h [new file with mode: 0644]
mono/sgen/sgen-marksweep-scan-object-concurrent.h [new file with mode: 0644]
mono/sgen/sgen-marksweep.c [new file with mode: 0644]
mono/sgen/sgen-memory-governor.c [new file with mode: 0644]
mono/sgen/sgen-memory-governor.h [new file with mode: 0644]
mono/sgen/sgen-minor-copy-object.h [new file with mode: 0644]
mono/sgen/sgen-minor-scan-object.h [new file with mode: 0644]
mono/sgen/sgen-nursery-allocator.c [new file with mode: 0644]
mono/sgen/sgen-pinning-stats.c [new file with mode: 0644]
mono/sgen/sgen-pinning.c [new file with mode: 0644]
mono/sgen/sgen-pinning.h [new file with mode: 0644]
mono/sgen/sgen-pointer-queue.c [new file with mode: 0644]
mono/sgen/sgen-pointer-queue.h [new file with mode: 0644]
mono/sgen/sgen-protocol-def.h [new file with mode: 0644]
mono/sgen/sgen-protocol.c [new file with mode: 0644]
mono/sgen/sgen-protocol.h [new file with mode: 0644]
mono/sgen/sgen-qsort.c [new file with mode: 0644]
mono/sgen/sgen-qsort.h [new file with mode: 0644]
mono/sgen/sgen-scan-object.h [new file with mode: 0644]
mono/sgen/sgen-simple-nursery.c [new file with mode: 0644]
mono/sgen/sgen-split-nursery.c [new file with mode: 0644]
mono/sgen/sgen-tagged-pointer.h [new file with mode: 0644]
mono/sgen/sgen-thread-pool.c [new file with mode: 0644]
mono/sgen/sgen-thread-pool.h [new file with mode: 0644]
mono/sgen/sgen-workers.c [new file with mode: 0644]
mono/sgen/sgen-workers.h [new file with mode: 0644]
mono/tests/Makefile.am
mono/tests/cas/.gitignore [deleted file]
mono/tests/cas/ChangeLog [deleted file]
mono/tests/cas/Makefile.am [deleted file]
mono/tests/cas/appdomain/ChangeLog [deleted file]
mono/tests/cas/appdomain/Makefile [deleted file]
mono/tests/cas/appdomain/README [deleted file]
mono/tests/cas/appdomain/makepol.cs [deleted file]
mono/tests/cas/appdomain/quota.cs [deleted file]
mono/tests/cas/appdomain/sandbox.cs [deleted file]
mono/tests/cas/appdomain/whoami.cs [deleted file]
mono/tests/cas/assembly/.gitattributes [deleted file]
mono/tests/cas/assembly/.gitignore [deleted file]
mono/tests/cas/assembly/ChangeLog [deleted file]
mono/tests/cas/assembly/Makefile.am [deleted file]
mono/tests/cas/assembly/README [deleted file]
mono/tests/cas/assembly/all.cs [deleted file]
mono/tests/cas/assembly/all.net_1_1.txt [deleted file]
mono/tests/cas/assembly/min.cs [deleted file]
mono/tests/cas/assembly/min.net_1_1.txt [deleted file]
mono/tests/cas/assembly/none.cs [deleted file]
mono/tests/cas/assembly/none.net_1_1.txt [deleted file]
mono/tests/cas/assembly/opt.cs [deleted file]
mono/tests/cas/assembly/opt.net_1_1.txt [deleted file]
mono/tests/cas/assembly/ref.cs [deleted file]
mono/tests/cas/assembly/ref.net_1_1.txt [deleted file]
mono/tests/cas/demand/.gitignore [deleted file]
mono/tests/cas/demand/ChangeLog [deleted file]
mono/tests/cas/demand/Makefile.am [deleted file]
mono/tests/cas/demand/README [deleted file]
mono/tests/cas/demand/pinvoke1.cs [deleted file]
mono/tests/cas/demand/pinvoke2.cs [deleted file]
mono/tests/cas/demand/pinvoke3.cs [deleted file]
mono/tests/cas/demand/selfassert.cs [deleted file]
mono/tests/cas/demand/selfdeny.cs [deleted file]
mono/tests/cas/demand/selfpermit.cs [deleted file]
mono/tests/cas/demand/sucs1.cs [deleted file]
mono/tests/cas/demand/sucs2.cs [deleted file]
mono/tests/cas/demand/sucs3.cs [deleted file]
mono/tests/cas/demand/sucs4.cs [deleted file]
mono/tests/cas/inheritance/.gitignore [deleted file]
mono/tests/cas/inheritance/ChangeLog [deleted file]
mono/tests/cas/inheritance/Makefile.am [deleted file]
mono/tests/cas/inheritance/README [deleted file]
mono/tests/cas/inheritance/cas.snk [deleted file]
mono/tests/cas/inheritance/cas1.cs [deleted file]
mono/tests/cas/inheritance/cas2.cs [deleted file]
mono/tests/cas/inheritance/cas3.cs [deleted file]
mono/tests/cas/inheritance/library1.cs [deleted file]
mono/tests/cas/inheritance/library2.cs [deleted file]
mono/tests/cas/inheritance/noncas1.cs [deleted file]
mono/tests/cas/inheritance/noncas2.cs [deleted file]
mono/tests/cas/inheritance/noncas3.cs [deleted file]
mono/tests/cas/inheritance/noncas4.cs [deleted file]
mono/tests/cas/inheritance/notused.cs [deleted file]
mono/tests/cas/inheritance/refload1.cs [deleted file]
mono/tests/cas/inheritance/refload2.cs [deleted file]
mono/tests/cas/inheritance/refload3.cs [deleted file]
mono/tests/cas/inheritance/refload4.cs [deleted file]
mono/tests/cas/inheritance/reftype1.cs [deleted file]
mono/tests/cas/inheritance/reftype2.cs [deleted file]
mono/tests/cas/inheritance/reftype3.cs [deleted file]
mono/tests/cas/inheritance/reftype4.cs [deleted file]
mono/tests/cas/linkdemand/.gitignore [deleted file]
mono/tests/cas/linkdemand/ChangeLog [deleted file]
mono/tests/cas/linkdemand/Makefile.am [deleted file]
mono/tests/cas/linkdemand/README [deleted file]
mono/tests/cas/linkdemand/aptc1.cs [deleted file]
mono/tests/cas/linkdemand/aptc2.cs [deleted file]
mono/tests/cas/linkdemand/aptclib.cs [deleted file]
mono/tests/cas/linkdemand/cas1.cs [deleted file]
mono/tests/cas/linkdemand/cas10.cs [deleted file]
mono/tests/cas/linkdemand/cas10.il [deleted file]
mono/tests/cas/linkdemand/cas2.cs [deleted file]
mono/tests/cas/linkdemand/cas3.cs [deleted file]
mono/tests/cas/linkdemand/cas6.cs [deleted file]
mono/tests/cas/linkdemand/cas7.cs [deleted file]
mono/tests/cas/linkdemand/cas8.cs [deleted file]
mono/tests/cas/linkdemand/cas9.cs [deleted file]
mono/tests/cas/linkdemand/ecma.pub [deleted file]
mono/tests/cas/linkdemand/icall1.cs [deleted file]
mono/tests/cas/linkdemand/icall2.cs [deleted file]
mono/tests/cas/linkdemand/icall3.cs [deleted file]
mono/tests/cas/linkdemand/icall4.cs [deleted file]
mono/tests/cas/linkdemand/icall5.cs [deleted file]
mono/tests/cas/linkdemand/icall6.cs [deleted file]
mono/tests/cas/linkdemand/noncas1.cs [deleted file]
mono/tests/cas/linkdemand/noncas2.cs [deleted file]
mono/tests/cas/linkdemand/noncas3.cs [deleted file]
mono/tests/cas/linkdemand/noncas4.cs [deleted file]
mono/tests/cas/linkdemand/pinvoke1.cs [deleted file]
mono/tests/cas/linkdemand/pinvoke2.cs [deleted file]
mono/tests/cas/linkdemand/pinvoke3.cs [deleted file]
mono/tests/cas/linkdemand/pinvoke4.cs [deleted file]
mono/tests/cas/linkdemand/refcas1.cs [deleted file]
mono/tests/cas/linkdemand/refcas2.cs [deleted file]
mono/tests/cas/linkdemand/refcas3.cs [deleted file]
mono/tests/cas/linkdemand/refcas4.cs [deleted file]
mono/tests/cas/linkdemand/refcas5.cs [deleted file]
mono/tests/cas/threads/.gitignore [deleted file]
mono/tests/cas/threads/ChangeLog [deleted file]
mono/tests/cas/threads/Makefile.am [deleted file]
mono/tests/cas/threads/README [deleted file]
mono/tests/cas/threads/delegate1.cs [deleted file]
mono/tests/cas/threads/delegate2.cs [deleted file]
mono/tests/cas/threads/swf-control1.cs [deleted file]
mono/tests/cas/threads/swf-timer3.cs [deleted file]
mono/tests/cas/threads/swf-timer4.cs [deleted file]
mono/tests/cas/threads/thread1.cs [deleted file]
mono/tests/cas/threads/thread2.cs [deleted file]
mono/tests/cas/threads/thread3.cs [deleted file]
mono/tests/cas/threads/timer1.cs [deleted file]
mono/tests/cas/threads/timer2.cs [deleted file]
mono/tests/cas/threads/tpool1.cs [deleted file]
mono/tests/cas/threads/tpool2.cs [deleted file]
mono/tests/delegate10.cs [new file with mode: 0644]
mono/tests/delegate11.cs [new file with mode: 0644]
mono/tests/delegate7.cs
mono/tests/dynamic-generic-size.cs [new file with mode: 0644]
mono/tests/runtime-invoke.cs
mono/unit-tests/.gitignore
mono/unit-tests/Makefile.am
mono/unit-tests/test-gc-memfuncs.c [deleted file]
mono/unit-tests/test-memfuncs.c [new file with mode: 0644]
mono/unit-tests/test-sgen-qsort.c
mono/utils/Makefile.am
mono/utils/dlmalloc.c
mono/utils/dtrace.h
mono/utils/hazard-pointer.c
mono/utils/json.c
mono/utils/json.h
mono/utils/lock-free-alloc.c
mono/utils/lock-free-array-queue.c
mono/utils/lock-free-queue.c
mono/utils/lock-free-queue.h
mono/utils/memfuncs.c [new file with mode: 0644]
mono/utils/memfuncs.h [new file with mode: 0644]
mono/utils/mono-codeman.c
mono/utils/mono-conc-hashtable.h
mono/utils/mono-counters.c
mono/utils/mono-dl.c
mono/utils/mono-error-internals.h
mono/utils/mono-error.c
mono/utils/mono-filemap.c
mono/utils/mono-io-portability.c
mono/utils/mono-io-portability.h
mono/utils/mono-linked-list-set.c
mono/utils/mono-linked-list-set.h
mono/utils/mono-logger.c
mono/utils/mono-mmap.c
mono/utils/mono-mutex.c
mono/utils/mono-mutex.h
mono/utils/mono-networkinterfaces.c
mono/utils/mono-path.c
mono/utils/mono-poll.c
mono/utils/mono-proclib.c
mono/utils/mono-proclib.h
mono/utils/mono-property-hash.c
mono/utils/mono-rand.c
mono/utils/mono-threads-coop.c
mono/utils/mono-threads-coop.h
mono/utils/mono-threads-mach.c
mono/utils/mono-threads-posix.c
mono/utils/mono-threads-state-machine.c
mono/utils/mono-threads-windows.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
mono/utils/mono-time.c
mono/utils/mono-time.h
mono/utils/mono-tls.h
mono/utils/monobitset.c
mono/utils/monobitset.h
mono/utils/parse.c [new file with mode: 0644]
mono/utils/parse.h [new file with mode: 0644]
mono/utils/sha1.c
mono/utils/sha1.h
mono/utils/strtod.h
mono/wrapper/.gitattributes [deleted file]
mono/wrapper/.gitignore [deleted file]
mono/wrapper/ChangeLog [deleted file]
mono/wrapper/Makefile.am [deleted file]
mono/wrapper/build-dll [deleted file]
mono/wrapper/genwrapper.pl [deleted file]
mono/wrapper/glob.c [deleted file]
mono/wrapper/libmonowrapper.rc [deleted file]
mono/wrapper/wrapper.c [deleted file]
msvc/eglib.vcxproj
msvc/genmdesc.vcxproj
msvc/libgc.vcxproj
msvc/libmono.vcxproj
msvc/libmonoruntime.vcxproj
msvc/libmonoutils.vcxproj
msvc/libtest.vcxproj
msvc/mono.def
msvc/mono.props
msvc/mono.vcxproj
msvc/monodiet.vcxproj
msvc/monodis.vcxproj
msvc/monograph.vcxproj
msvc/monoposixhelper.vcxproj
msvc/monosgen.def
msvc/monosgen64.def
msvc/pedump.vcxproj
msvc/profiler-codeanalyst.vcxproj
msvc/profiler-cov.vcxproj
msvc/profiler-logging.vcxproj
msvc/profiler-vtune.vcxproj
notes/cil [deleted file]
runtime/Makefile.am
samples/profiler/sample.c
scripts/mono-find-provides.in
scripts/mono-find-requires.in
support/zlib-helper.c
tools/checker/Makefile [new file with mode: 0644]
tools/checker/MonoChecker.cs [new file with mode: 0644]
tools/checker/README.md [new file with mode: 0644]
tools/checker/compile_commands.json [new file with mode: 0644]
tools/checker/premake5.lua [new file with mode: 0644]
tools/sgen/sgen-grep-binprot.c
winconfig.h

index 6070126688899f54979fb52f35ce6b9e93423472..e5b638b53e876f7e84a53986c778fa3d6f435fdf 100644 (file)
@@ -122,8 +122,6 @@ docs/perlmod*
 compile
 mono.h
 mono-*.tar.*
-mono.spec
-mono-core.spec
 tmpinst-dir.stamp
 msvc/scripts/inputs/
 
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644 (file)
index 6c19bda..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,3 +0,0 @@
-Miguel de Icaza (miguel@ximian.com)
-Paolo Molaro (lupus@ximian.com)
-Dietmar Maurer (dietmar@ximian.com)
index cddaff1621145dac0cf0f23f4d6b58b19c002ad9..68269d7e9175ba4c3ac2f06864f3c3b247b6f836 100644 (file)
@@ -36,11 +36,9 @@ EXTRA_DIST= \
         README.md \
            LICENSE \
            autogen.sh \
-           build-mingw32.sh \
            mkinstalldirs \
            mono-uninstalled.pc.in \
            winconfig.h \
-           mono-core.spec \
            external
 
 DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false
@@ -52,7 +50,7 @@ dist-hook:
        d=`cd $(distdir)/mcs && pwd`; cd $(mcs_topdir) && $(MAKE) distdir=$$d dist-recursive
        rm -rf `find $(top_distdir)/external -path '*\.git'`
        rm -f `find $(top_distdir)/external -path '*\.exe'`
-       rm -f `find $(top_distdir)/external -path '*\.dll' -not -path '*/binary-reference-assemblies/v4\.0*'`
+       rm -f `find $(top_distdir)/external -path '*\.dll' -not -path '*/binary-reference-assemblies/*'`
        cp mcs/class/lib/basic/System.Configuration.dll mcs/class/lib/monolite/
        cp mcs/class/lib/basic/System.Security.dll mcs/class/lib/monolite/
 # Disable this for now because it is very slow and causes wrench to timeout:
diff --git a/NEWS b/NEWS
index 0081b86987952862429bd78def94082b2d078fcf..ec300ca2dcb0f5b13d93cd42eb011c5aad486211 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,3 @@
 Release notes for Mono are hosted on the web, please see:
 
-       http://www.go-mono.com/archive/VERSION
-
-Where version is the version of this Mono package, for example:
-       
-       http://www.go-mono.com/archive/1.1.9
-
+       http://www.mono-project.com/docs/about-mono/releases/
index 36a9c1ef398279ceb8e00e30a79ad03f09788f13..e7ed2c4f704790abd401315f7dd1b001e7dd5e11 100644 (file)
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@ create cross platform applications.  It is an open source
 implementation of Microsoft's .NET Framework based on the ECMA
 standards for C# and the Common Language Runtime.
 
+[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mono/mono?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
 1. [Compilation and Installation](#compilation-and-installation)
 2. [Using Mono](#using-mono)
 3. [Directory Roadmap](#directory-roadmap)
@@ -21,9 +23,9 @@ Officially supported architectures:
 
 Community supported architectures:
 
-| debian-ppc64el              | centos-s390x              |
-|-----------------------------|---------------------------|
-| [![debian-ppc64el][11]][12] | [![centos-s390x][13]][14] |
+| centos-s390x              |
+|---------------------------|
+| [![centos-s390x][11]][12] |
 
 [1]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-amd64/badge/icon
 [2]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-amd64/
@@ -35,10 +37,8 @@ Community supported architectures:
 [8]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/
 [9]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
 [10]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
-[11]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=debian-ppc64el/badge/icon
-[12]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=debian-ppc64el/
-[13]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=centos-s390x/badge/icon
-[14]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=centos-s390x/
+[11]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=nealef-s390x-1/badge/icon
+[12]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=nealef-s390x-1/
 
 Compilation and Installation
 ============================
@@ -145,13 +145,6 @@ runtime as an embedded library.
 
 * `scripts/` - Scripts used to invoke Mono and the corresponding program.
 
-* `../olive/` - Incubation code from [Olive](https://github.com/mono/olive).
-
-  * If the directory ../olive is present (as an
-independent checkout) from the Mono module, that
-directory is automatically configured to share the
-same prefix than this module gets.
-
 Contributing to Mono
 ====================
 
diff --git a/README.vsnet b/README.vsnet
deleted file mode 100644 (file)
index f3a07a1..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-README.vsnet                                   Last updated: 2006-02-01
-
-
-SVN includes a Visual Studio .NET 2005 solution, mono.sln, and some 
-projects files to build most of the unmanaged parts in Mono.
-
-The "mono.sln" solution file contains the VC projects files for:
-
-        * Embedded Samples
-               * test-invoke.vcproj
-               * test-metadata.vcproj
-               * teste.vcproj
-        * Libraries
-               * libgc.vcproj
-               * libmono.vcproj
-        * Tools
-               * genmdesc.vcproj
-               * monoburg.vcproj
-               * monodiet.vcproj
-               * monodis.vcproj
-               * monograph.vcproj
-               * pedump.vcproj
-        * mono.vcproj
-        
-
-REQUIREMENTS
-
-* A working (i.e. where you could succesfully build mono) cygwin 
-(http://www.cygwin.com/) setup! This is required to:
-       * generate some files (via monoburg and genmdesc);
-       * build the class libraries; and
-       * test for regressions.
-
-* Visual Studio .NET 2005. Previous Visual Studio versions may work or 
-requires, hopefully minimal, changes.
-        
-* VSDependencies.zip must be decompressed under the /mono/ directory 
-(otherwise you will need to edit all the projects files). This file can 
-be downloaded from http://www.go-mono.com/archive/VSDependencies.zip
-
-
-LOCAL CHANGES
-
-Sadly solution/projects files aren't easy to move from computers to
-computers (well unless everyone follow the same naming convention) so
-you'll likely have to changes some options in order to compile the
-solution.
-
-        * each executed assembly (i.e. the EXE) must be able to find a
-        working mscorlib.dll (and all the other required assemblies).
-        This can be done in different ways. My preference is to use the
-        project "properties pages" in the "Configuration Properties
-        \Debugging\Environment" options and set MONO_PATH to the class
-        libraries directory build by cygwin (local) or on Linux
-        (remote).
-        
-        e.g. MONO_PATH=z:\svn\mcs\class\lib\default\
-        allows me to use the class libs build under Linux, while
-        MONO_PATH=C:\cygwin\opt\mono\lib\mono\1.0
-        use the one built from cygwin (after a make install)
-
-Some useful informations to adapt the solution/project files...
-
-        * My cygwin root dir is:       c:\cygwin\
-        * My username is:              poupou
-        * My mono install prefix is:   /opt/mono
-                
-
-BUILDING
-
-Once everything is installed (and edited) you can right-click on the
-"mono" solution (in the "Solution Explorer"), select "Clean
-Solution" (for the first time) then "Build Solution".
-
-
-KNOWN ISSUES
-
-[1] Most, BUT NOT ALL, the regressions tests pass under this build. The
-failures seems limited to some mathematical differences and to code
-relying on the stack walking functions. The hacks to replace the GCC
-functions (__builtin_frame_address and __builtin_return_address) are
-incomplete;
-
-[2] The solution doesn't provide complete (i.e. from scratch) build. It
-requires a working cygwin environment to create some files (e.g. via
-genmdesc, monoburg). This isn't so bad as without cygwin you wouldn't be
-able to test Mono properly (see REQUIREMENTS);
-
-[3] Only the Debug target is configured properly (that would be easy to 
-fix, but would require turning off some optimizations like omitting 
-stack frames). Anyway there are other issues [1] to fix before switching
-to Release and IMHO the _biggest_ advantage to VS.NET is it's debugger/
-debugging tools;
-
-[4] The C compiler emits _lots_ of warning during compilation. Some
-warnings have been turned off for some projects (there was so much that
-it slowed down compilation). You can bring them back (or hide more of
-them) using the project "properties pages" windows, "Configuration
-Properties\C/C++\Advanced\Disable Specific Warnings";
-
-[5] Visual Studio 2005 should have all the latest header files required, 
-but if not (or if you're using an older version of VS) then install MS 
-Platform SDK (Windows Server 2003 is the latest) to ensure you have the 
-latest Windows header files. You can download it from:
-http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
-
-[6] Not everyone has VS.NET so it is possible you may have to add some
-(new) files to the build from time to time. See "more informations" for
-reporting those changes.
-
-[7] Probably a lot more I didn't discover... or has changed since.
-
-
-MORE INFORMATION
-
-Please email <mono-devel-list@lists.ximian.com> if you have any problem
-and/or if there's something wrong/missing in the instructions.
-
-An online version of this file is available at
-http://www.mono-project.com/Compiling_Mono_VSNET
diff --git a/build-mingw32.sh b/build-mingw32.sh
deleted file mode 100755 (executable)
index 4c8ed8c..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-#!/bin/bash -e
-CURDIR="`pwd`"
-MINGW=i386-mingw32msvc
-CROSS_DIR=/opt/cross/$MINGW
-EXTRA_CROSS_DIR=
-INSTALL_DESTDIR="$CURDIR/mono-win32"
-PROFILES="default net_2_0 net_3_5 net_4_0 net_4_5 moonlight"
-TEMPORARY_PKG_CONFIG_DIR=/tmp/$RANDOM-pkg-config-$RANDOM
-ORIGINAL_PATH="$PATH"
-
-export CPPFLAGS_FOR_EGLIB CFLAGS_FOR_EGLIB CPPFLAGS_FOR_LIBGC CFLAGS_FOR_LIBGC
-
-function cleanup ()
-{
-    if [ -d "$TEMPORARY_PKG_CONFIG_DIR" ]; then
-       rm -rf "$TEMPORARY_PKG_CONFIG_DIR"
-    fi
-}
-
-function check_pkg_config_dir ()
-{
-    local DIR="$1"
-    local DIR_PREFIX="$2"
-
-    if [ ! -d "$DIR" ]; then
-       return
-    fi
-
-    install -d -m 755 "$TEMPORARY_PKG_CONFIG_DIR"
-    for pc in "$DIR"/*.pc; do
-       if [ -f $pc ]; then
-           pcname="`basename $pc`"
-           sed -e "s;^prefix=.*;prefix=$DIR_PREFIX;g" < $pc > "$TEMPORARY_PKG_CONFIG_DIR"/$pcname
-       fi;
-    done
-
-    if [ -z "$CROSS_PKG_CONFIG_DIR" ]; then
-       CROSS_PKG_CONFIG_DIR="$TEMPORARY_PKG_CONFIG_DIR"
-    fi
-}
-
-function show_build_info ()
-{
-    cat <<EOF
-Installation prefix: $MONO_PREFIX
-           CPPFLAGS: ${CPPFLAGS:=not set}
-            LDFLAGS: ${LDFLAGS:=not set}
-          MONO_PATH: ${MONO_PATH:=not set}
-EOF
-}
-
-function setup ()
-{
-    local pcname
-
-    CROSS_BIN_DIR="$CROSS_DIR/bin"
-    CROSS_DLL_DIR="$CROSS_DIR/bin"
-    PATH=$CROSS_BIN_DIR:$PATH
-
-    MONO_VERSION=`grep AC_INIT configure.ac | cut -d ',' -f 2|tr -d '\[ \]'`
-    
-    if [ -d ./.git ]; then
-       MONO_GIT_COMMIT="`git log -1 --format=format:%t`"
-       MONO_GIT_BRANCH="`git branch|grep '\*'|cut -d ' ' -f 2|tr -d '\)'|tr -d '\('`"
-       MONO_RELEASE="$MONO_VERSION-$MONO_GIT_BRANCH-$MONO_GIT_COMMIT"
-    else
-       MONO_RELEASE="$MONO_VERSION"
-    fi
-
-    MONO_PREFIX="$MONO_PREFIX/mono-$MONO_RELEASE"
-
-    NOCONFIGURE=yes
-    export NOCONFIGURE
-
-    check_pkg_config_dir "$CROSS_DIR/lib/pkgconfig" "$CROSS_DIR"
-
-    if [ -n "$EXTRA_CROSS_DIR" -a -d "$EXTRA_CROSS_DIR" ]; then
-       if [ -d "$EXTRA_CROSS_DIR/bin" ]; then
-               PATH="$EXTRA_CROSS_DIR/bin":$PATH
-       fi
-       
-       check_pkg_config_dir "$EXTRA_CROSS_DIR/lib/pkgconfig" "$EXTRA_CROSS_DIR"
-
-       if [ -d "$EXTRA_CROSS_DIR/include" ]; then
-           if [ -z "$CPPFLAGS" ]; then
-               CPPFLAGS="-I \"$EXTRA_CROSS_DIR/include\""
-           else
-               CPPFLAGS="-I \"$EXTRA_CROSS_DIR/include\" $CFLAGS"
-           fi
-       fi
-
-       if [ -d "$EXTRA_CROSS_DIR/lib" ]; then
-           if [ -z "$LDFLAGS" ]; then
-               LDFLAGS="-I \"$EXTRA_CROSS_DIR/lib\""
-           else
-               LDFLAGS="-I \"$EXTRA_CROSS_DIR/lib\" $LDFLAGS"
-           fi
-       fi
-
-       if [ -d "$EXTRA_CROSS_DIR/share/aclocal" ]; then
-           if [ -z "$MONO_PATH" ]; then
-               MONO_PATH="\"$EXTRA_CROSS_DIR\""
-           else
-               MONO_PATH="\"$EXTRA_CROSS_DIR\":$MONO_PATH"
-           fi
-       fi
-    fi
-    
-    export PATH MONO_PATH CPPFLAGS
-    show_build_info
-}
-
-function build ()
-{
-    if [ -f ./Makefile ]; then
-       make distclean
-    fi
-
-    if [ -d ./autom4te.cache ]; then
-       rm -rf ./autom4te.cache
-    fi
-
-    if [ -f ./config.status ]; then
-       for f in `find -name config.status -type f`; do
-           rm $f
-       done
-    fi
-
-    ./autogen.sh 
-
-    BUILD="`./config.guess`"
-
-    if [ ! -d "$CURDIR/build-cross-windows" ]; then
-       mkdir "$CURDIR/build-cross-windows"
-    fi
-
-    cd "$CURDIR/build-cross-windows"
-    rm -rf *
-    ../configure --prefix=$MONO_PREFIX --with-crosspkgdir=$CROSS_PKG_CONFIG_DIR --build=$BUILD --target=$MINGW --host=$MINGW --enable-parallel-mark --program-transform-name="" --with-tls=none --disable-mcs-build --disable-embed-check --enable-win32-dllmain=yes --with-libgc-threads=win32 --with-profile4=yes
-    make
-    cd "$CURDIR"
-
-    if [ ! -d "$CURDIR/build-cross-windows-mcs" ]; then
-       mkdir "$CURDIR/build-cross-windows-mcs"
-    fi
-
-    rm -rf autom4te.cache
-    unset PATH
-    PATH="$ORIGINAL_PATH"
-    export PATH
-    cd "$CURDIR/build-cross-windows-mcs"
-    rm -rf *
-    ../configure --prefix=$MONO_PREFIX --enable-parallel-mark
-    make
-}
-
-function doinstall ()
-{
-    if [ -d "$INSTALL_DIR" ]; then
-       rm -rf "$INSTALL_DIR"
-    fi
-    cd "$CURDIR/build-cross-windows"
-    make DESTDIR="$INSTALL_DESTDIR" USE_BATCH_FILES=yes install
-
-    if test -d $CURDIR/mcs; then
-      mcsdir=$CURDIR/mcs
-    else
-      mcsdir=$CURDIR/../mcs
-    fi
-
-    cd "$mcsdir/mcs"
-    for p in $PROFILES; do
-       make DESTDIR="$INSTALL_DESTDIR" PROFILE=$p install || echo "mcs profile $p installation failed"
-    done
-
-    cd "$mcsdir/class"
-    for p in $PROFILES; do
-       make DESTDIR="$INSTALL_DESTDIR" PROFILE=$p install || echo "class library profile $p installation failed"
-    done
-
-    cd "$mcsdir/tools"
-    for p in $PROFILES; do
-       make DESTDIR="$INSTALL_DESTDIR" PROFILE=$p install || echo "tools profile $p installation failed"
-    done
-
-    cd "$CURDIR/mono-win32"
-    rm -f "$CURDIR/mono-win32-$MONO_RELEASE".zip
-    zip -9r "$CURDIR/mono-win32-$MONO_RELEASE".zip .
-
-}
-
-function usage ()
-{
-    cat <<EOF
-Usage: build-mingw32.sh [OPTIONS]
-
-where OPTIONS are:
-
- -d DIR     Sets the location of directory where MINGW is installed [$CROSS_DIR]
- -e DIR     Sets the location of directory where additional cross develoment packages are installed [${EXTRA_CROSS_DIR:=none}]
- -m MINGW   Sets the MINGW target name to be passed to configure [$MINGW]
- -p PREFIX  Prefix at which Mono is to be installed. Build will append the 'mono-X.Y' string to that path
-EOF
-
-    exit 1
-}
-
-trap cleanup 0
-
-pushd . > /dev/null
-
-while getopts "d:m:e:p:" opt; do
-    case "$opt" in
-       d) CROSS_DIR="$OPTARG" ;;
-       m) MINGW="$OPTARG" ;;
-       e) EXTRA_CROSS_DIR="$OPTARG" ;;
-       p) MONO_PREFIX="$OPTARG" ;;
-       *) usage ;;
-    esac
-done
-
-setup
-build
-doinstall
-show_build_info
-
-popd > /dev/null
index f6680e3cb094ffed258acf5173397010baa38a98..1d40df3cc814a9802098ad6ce8f0f950998e96ad 100644 (file)
@@ -96,24 +96,22 @@ platform_android=no
 platform_darwin=no
 case "$host" in
        *-mingw*|*-*-cygwin*)
-               AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32])
                AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer])
                AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks])
                host_win32=yes
                mono_cv_clang=no
                if test "x$cross_compiling" = "xno"; then
-                       target_win32=yes
                        if test "x$host" == "x$build" -a "x$host" == "x$target"; then
-                               AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
+                               target_win32=yes
                        fi
                else
-                       target_win32=yes
-                       AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW])
-                       AC_DEFINE(MINGW_CROSS_COMPILE,1,[Cross-compiling using MinGW])
+                       if test "x$host" == "x$target"; then
+                               target_win32=yes
+                       fi
                fi
                HOST_CC="gcc"
-               # Windows XP SP2 is required
-               CPPFLAGS="$CPPFLAGS -DWINVER=0x0502 -D_WIN32_WINNT=0x0502 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
+               # Windows Vista or later is required
+               CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -D_WIN32_WINNT=0x0600 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
                LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32 -liphlpapi"
                libmono_cflags="-mms-bitfields -mwindows"
                libmono_ldflags="-mms-bitfields -mwindows"
@@ -360,6 +358,14 @@ if test x$need_link_unlink = xyes; then
    AC_DEFINE(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace])
 fi
 
+if test x$host_win32 = xyes; then
+   AC_DEFINE(HOST_WIN32, 1, [Host Platform is Win32])
+fi
+
+if test x$target_win32 = xyes; then
+   AC_DEFINE(TARGET_WIN32, 1, [Target Platform is Win32])
+fi
+
 AC_SUBST(extra_runtime_ldflags)
 AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes)
 AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes)
@@ -432,7 +438,7 @@ AC_PROG_LD_GNU
 AM_ICONV()
 
 AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h sys/sysctl.h libproc.h)
-AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h arpa/inet.h)
+AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h arpa/inet.h complex.h)
 AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
                   [], [], [#include <stddef.h>
                  #include <sys/socket.h>
@@ -519,13 +525,13 @@ AC_CACHE_CHECK([for clang],
        [])
 ])
 
-AC_ARG_ENABLE(visiblity-hidden,
-[  --disable-visibility-hidden    disable usage of -fvisiblity=hidden]
-   disable_visibility_hidden=no, disable_visibility_hidden=yes)
+AC_ARG_ENABLE(visibility-hidden,
+[  --disable-visibility-hidden    disable usage of -fvisiblity=hidden],
+   disable_visibility_hidden=yes, disable_visibility_hidden=no)
 
 WARN=''
 if test x"$GCC" = xyes; then
-        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
+        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Wno-attributes'
 
                # We require C99 with some GNU extensions, e.g. `linux` macro
                CFLAGS="$CFLAGS -std=gnu99"
@@ -631,17 +637,6 @@ fi
 AC_SUBST([mcs_topdir])
 AC_SUBST([mcs_topdir_from_srcdir])
 
-# Where's the 'olive' source tree?
-if test -d $srcdir/olive; then
-  olivedir=olive
-else
-  olivedir=../olive
-fi
-
-if test -d $srcdir/$olivedir; then
-olive_topdir='$(top_srcdir)/'$olivedir
-fi
-
 # gettext: prepare the translation directories. 
 # we do not configure the full gettext, as we consume it dynamically from C#
 AM_PO_SUBDIRS
@@ -1154,7 +1149,7 @@ dnl ***********************************
 AC_CHECK_HEADERS(signal.h)
 AC_CHECK_FUNCS(sigaction)
 
-if test x$target_win32 = xno; then
+if test x$host_win32 = xno; then
 
        dnl hires monotonic clock support
        AC_SEARCH_LIBS(clock_gettime, rt)
@@ -2375,6 +2370,24 @@ else
                AC_MSG_RESULT(no)
        ])
 
+       dnl **********************************
+       dnl *** Check for inet_pton ***
+       dnl **********************************
+       AC_MSG_CHECKING(for inet_pton)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <winsock2.h>
+               #include <ws2tcpip.h>
+       ], [
+               inet_pton (0, NULL, NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_INET_PTON, 1, [Have inet_pton])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
        AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include <windows.h>]])
        AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include <windows.h>]])
        AC_CHECK_DECLS(InterlockedDecrement64, [], [], [[#include <windows.h>]])
@@ -2645,7 +2658,7 @@ AC_ARG_WITH(llvm, [  --with-llvm=<llvm prefix>    Enable the LLVM back-end], ena
 if test "x$enable_llvm" = "xyes"; then
    if test "x$with_llvm" != "x"; then
          LLVM_CONFIG=$with_llvm/bin/llvm-config
-         if test x$target_win32 = xyes; then
+         if test x$host_win32 = xyes; then
                LLVM_CONFIG=$LLVM_CONFIG.exe
          fi
          if test ! -x $LLVM_CONFIG; then
@@ -2665,7 +2678,7 @@ if test "x$enable_llvm" = "xyes"; then
                ;;
    esac
 
-   if test "x$target_win32" = "xno"; then
+   if test "x$host_win32" = "xno"; then
 
    # The output of --cflags seems to include optimizations flags too
    LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
@@ -3061,6 +3074,19 @@ if test "x$host" != "x$target"; then
                with_tls=pthread
                target_mach=no
                ;;
+   x86_64-ps4-freebsd)
+               TARGET=AMD64;
+               arch_target=amd64;
+               AC_DEFINE(TARGET_AMD64, 1, [...])
+               AC_DEFINE(TARGET_PS4, 1, [...])
+               CPPFLAGS="$CPPFLAGS"
+               sgen_supported=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               target_mach=no
+               target_win32=no
+               ;;
    aarch64*-linux-*)
                TARGET=ARM64;
                arch_target=arm64;
@@ -3837,7 +3863,6 @@ AC_CONFIG_COMMANDS([nolock-libtool], [sed -e 's/lock_old_archive_extraction=yes/
 
 AC_OUTPUT([
 Makefile
-mono-core.spec
 mono-uninstalled.pc
 scripts/mono-find-provides
 scripts/mono-find-requires
@@ -3856,15 +3881,10 @@ mono/arch/arm/Makefile
 mono/arch/arm64/Makefile
 mono/arch/ia64/Makefile
 mono/arch/mips/Makefile
+mono/sgen/Makefile
 mono/tests/Makefile
 mono/tests/tests-config
 mono/tests/assemblyresolve/Makefile
-mono/tests/cas/Makefile
-mono/tests/cas/assembly/Makefile
-mono/tests/cas/demand/Makefile
-mono/tests/cas/inheritance/Makefile
-mono/tests/cas/linkdemand/Makefile
-mono/tests/cas/threads/Makefile
 mono/tests/gc-descriptors/Makefile
 mono/unit-tests/Makefile
 mono/benchmark/Makefile
@@ -4018,22 +4038,6 @@ fi
 
   fi
 
-  # if we have an olive folder, override the default settings
-  if test -d $olivedir; then
-
-    if test x$cross_compiling = xno && test x$enable_olive_build != xno; then
-
-      test -w $srcdir/$olivedir/build || chmod +w $srcdir/$olivedir/build
-
-      echo "prefix=$prefix" > $srcdir/$olivedir/build/config.make
-      echo "exec_prefix=$exec_prefix" >> $srcdir/$olivedir/build/config.make
-      echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$olivedir/build/config.make
-      echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$olivedir/build/config.make
-      echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $srcdir/$olivedir/build/config.make
-      echo "MONO_VERSION = $myver" >> $srcdir/$olivedir/build/config.make
-    fi
-  fi
-
 )
 
 libgdiplus_msg=${libgdiplus_loc:-assumed to be installed}
index ce34d357f643f46953e45518289e7dc796853b9d..f4dcfe72c09edbea4c3fcf23c19c3e0bbf1c0502 100644 (file)
@@ -31,7 +31,7 @@ class StringPrinter:
         while i < len:
             val = (chars.cast(gdb.lookup_type ("gint64")) + (i * 2)).cast(gdb.lookup_type ("gunichar2").pointer ()).dereference ()
             if val >= 256:
-                c = "\u%X".format (val)
+                c = unichr (val)
             else:
                 c = chr (val)
             res.append (c)
index dae3c397d0ed200d87adf97af68f4640e72b9991..69f46525c7b0403d1ed6f835f99d7344242abe42 100644 (file)
@@ -21,21 +21,8 @@ provider mono {
 
        probe gc__requested (int generation, uintptr_t requested_size, int wait_to_finish);
 
-       probe gc__checkpoint__1 (int generation);
-       probe gc__checkpoint__2 (int generation);
-       probe gc__checkpoint__3 (int generation);
-       probe gc__checkpoint__4 (int generation);
-       probe gc__checkpoint__5 (int generation);
-       probe gc__checkpoint__6 (int generation);
-       probe gc__checkpoint__7 (int generation);
-       probe gc__checkpoint__8 (int generation);
-       probe gc__checkpoint__9 (int generation);
-
        probe gc__concurrent__start__begin (int generation);
-       probe gc__concurrent__start__end (int generation, long long num_major_objects_marked);
        probe gc__concurrent__update__finish__begin (int generation, long long num_major_objects_marked);
-       probe gc__concurrent__update__end (int generation, long long num_major_objects_marked);
-       probe gc__concurrent__finish__end (int generation, long long num_major_objects_marked);
 
        probe gc__sweep__begin (int generation, int full_sweep);
        probe gc__sweep__end (int generation, int full_sweep);
@@ -45,19 +32,12 @@ provider mono {
        probe gc__world__restart__begin (int generation);
        probe gc__world__restart__end (int generation);
 
-       probe gc__heap__alloc (uintptr_t addr, uintptr_t len);
-       probe gc__heap__free (uintptr_t addr, uintptr_t len);
-
-       probe gc__locked ();
-       probe gc__unlocked ();
-
        probe gc__nursery__tlab__alloc (uintptr_t addr, uintptr_t len);
        probe gc__nursery__obj__alloc (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
 
        probe gc__major__obj__alloc__large (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
        probe gc__major__obj__alloc__pinned (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
        probe gc__major__obj__alloc__degraded (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
-       probe gc__major__obj__alloc__mature (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
 
        /* Can be nursery->nursery, nursery->major or major->major */
        probe gc__obj__moved (uintptr_t dest, uintptr_t src, int dest_gen, int src_gen, uintptr_t size, char *ns_name, char *class_name);
@@ -70,13 +50,10 @@ provider mono {
        probe gc__finalize__enqueue (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name, int generation, int is_critical);
        probe gc__finalize__invoke (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
 
-       probe gc__weak__update (uintptr_t ref_addr, uintptr_t old_addr, uintptr_t new_addr, uintptr_t size, char *ns_name, char *class_name, int track);
+       probe gc__weak__update (uintptr_t ref_addr, uintptr_t new_addr, uintptr_t size, char *ns_name, char *class_name, int track);
 
        probe gc__global__remset__add (uintptr_t ref_addr, uintptr_t obj_addr, uintptr_t size, char *ns_name, char *class_name);
        probe gc__obj__cemented (uintptr_t addr, uintptr_t size, char *ns_name, char *class_name);
-
-       probe gc__internal__alloc (uintptr_t addr, uintptr_t size, int type);
-       probe gc__internal__dealloc (uintptr_t add, uintptr_t size, int type);
 };
 
 #pragma D attributes Evolving/Evolving/Common provider mono provider
index 5d4e12b80b0fb86f361e7eeacc01de9c8e833f32..8f7e56a4facce6876d87fe6238a4dbe43bed3575 100644 (file)
@@ -18,6 +18,9 @@
                <section name="system.windows.forms" type="System.Windows.Forms.WindowsFormsSection, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
                <section name="windows" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowLocation="false" />
                <section name="strongNames" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowLocation="false"/>
+               <sectionGroup name="system.runtime.serialization" type="System.Runtime.Serialization.Configuration.SerializationSectionGroup, System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+                       <section name="dataContractSerializer" type="System.Runtime.Serialization.Configuration.DataContractSerializerSection, System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+               </sectionGroup>
                <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
                        <section name="anonymousIdentification" type="System.Web.Configuration.AnonymousIdentificationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
                        <section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication"/>
index 811955257bb529eb63ef9261c61089e99af5ad81..9c514420403427864d1c3e36e808f0371b6c01c4 100644 (file)
@@ -14,7 +14,6 @@ ASSEMBLED_DOCS = \
 EXTRA_DIST = \
        abc-removal.txt         \
        api-style.css           \
-       assembly-bundle         \
        check-exports           \
        check-coverage          \
        convert.cs              \
@@ -23,7 +22,6 @@ EXTRA_DIST = \
        docs.make               \
        documented              \
        embedded-api            \
-       exceptions              \
        exdoc                   \
        file-share-modes        \
        gc-issues               \
@@ -35,33 +33,25 @@ EXTRA_DIST = \
        jit-imt                 \
        jit-thoughts            \
        jit-trampolines         \
-       local-regalloc.txt      \
-       magic.diff              \
        mini-doc.txt            \
        mono-api-metadata.html  \
        mono-file-formats.config\
        mono-file-formats.source\
-       mono_handle_d           \
        mono-tools.config       \
        mono-tools.source       \
        monoapi.source          \
-       new-regalloc            \
        object-layout           \
-       opcode-decomp.txt       \
        precise-gc              \
        produce-lists           \
        public                  \
        public-api              \
        README                  \
-       release-notes-1.0.html  \
        remoting                \
        ssapre.txt              \
-       stack-alignment         \
        stack-overflow.txt      \
        threading               \
        toc.xml                 \
        TODO                    \
-       tree-mover.txt          \
        unmanaged-calls 
 
 dist-hook:
diff --git a/docs/assembly-bundle b/docs/assembly-bundle
deleted file mode 100644 (file)
index 3e64e14..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-          HOWTO bundle assemblies inside the mono runtime.
-                  Paolo Molaro (lupus@ximian.com)
-
-* Intent
-
-       Bundling assemblies inside the mono runtime may be useful for a number
-       of reasons:
-
-               * creating a standalone complete runtime that can be more easily
-               distributed
-
-               * having an application run against a known set of assemblies
-               that has been tested
-       
-       Of course, there are drawbacks, too: if there has been fixes
-       to the assemblies, replacing them means recompiling the
-       runtime as well and if there are other mono apps, unless they
-       use the same mono binary, there will be less opportunities for
-       the operating system to optimize memory usage. So use this
-       feature only when really needed.
-
-* Creating the Bundle
-       
-       To bundle a set of assemblies, you need to create a file that
-       lists the assembly names and the relative files. Empty lines
-       and lines starting with # are ignored:
-       
-       == cut cut ==
-       # Sample bundle template
-       mscorlib: /path/to/mscorlib/assembly.dll
-       myapp: /path/to/myapp.exe
-       == cut cut ==
-       
-       Next you need to build the mono runtime using a special configure option:
-
-               ./configure --with-bundle=/path/to/bundle/template
-
-       The path to the template should be an absolute path.
-
-       The script metadata/make-bundle.pl will take the specifie
-       assemblies and embed them inside the runtime where the loading
-       routines can find them before searching for them on disk.
-
-* Open Issues
-
-       There are still two issues to solve:
-
-               * config files: sometimes they are needed but they are
-                 not yet bundled inside the library ()
-
-               * building with the included libgc makes it not
-                 possible to build a mono binary statically linked to
-                 libmono: this needs to be fixed to make bundles
-                 really useful.
-
-       
index 1bbddca612314f610d3ad92de92757182d325d9f..be79dd8a3d81c2fa64a021ae3dbd86463cb6cfee 100644 (file)
@@ -292,7 +292,6 @@ mono_free_method
 mono_free_verify_list
 mono_gc_collect
 mono_gc_collection_count
-mono_gc_enable_events
 mono_gc_get_generation
 mono_gc_get_heap_size
 mono_gc_get_used_size
@@ -301,9 +300,7 @@ mono_gchandle_get_target
 mono_gchandle_new
 mono_gchandle_new_weakref
 mono_gc_invoke_finalizers
-mono_gc_is_finalizer_thread
 mono_gc_max_generation
-mono_gc_out_of_memory
 mono_gc_wbarrier_arrayref_copy
 mono_gc_wbarrier_generic_nostore
 mono_gc_wbarrier_generic_store
@@ -604,7 +601,6 @@ mono_object_get_class
 mono_object_get_domain
 mono_object_get_size
 mono_object_get_virtual_method
-mono_object_is_alive
 mono_object_isinst
 mono_object_isinst_mbyref
 mono_object_new
index a98a509a37055779994e42b835b08aafdc22c9ab..e02682acddc54505ae9e72a7c6ceeef5b3bb6794 100644 (file)
@@ -269,12 +269,9 @@ mono_gc_weak_link_get
 mono_gc_weak_link_remove
 mono_gc_disable
 mono_gc_enable
-mono_gc_is_finalizer_thread
-mono_gc_out_of_memory
 mono_gc_start_world
 mono_gc_stop_world
 mono_gc_alloc_fixed
-mono_gc_enable_events
 mono_gc_free_fixed
 mono_gc_make_descr_from_bitmap
 mono_gc_base_init
@@ -526,7 +523,6 @@ mono_object_isinst
 mono_object_register_finalizer
 mono_object_unbox
 mono_object_castclass_mbyref
-mono_object_is_alive
 mono_object_get_size
 mono_value_box
 mono_value_copy
index d5ecaeead43a634984b2701a5c5bd5acaa8ff019..bd22de9f25f4ad5886baa969e9465e6f914fc11e 100644 (file)
@@ -71,40 +71,3 @@ unwinding code.
 
 catch handler: catch hanlders are always called from the stack unwinding
 code. The exception object is passed in a local variable (cfg->exvar).
-
-gcc support for Exceptions
-==========================
-
-gcc supports exceptions in files compiled with the -fexception option. gcc
-generates DWARF exceptions tables in that case, so it is possible to unwind the
-stack. The method to read those exception tables is contained in libgcc.a, and
-in newer versions of glibc (glibc 2.2.5 for example), and it is called
-__frame_state_for(). Another usable glibc function is backtrace_symbols() which
-returns the function name corresponding to a code address.
-
-We dynamically check if those features are available using g_module_symbol(),
-and we use them only when available. If not available we use the LMF as
-fallback.
-
-Using gcc exception information prevents us from saving the LMF at each native
-call, so this is a way to speed up native calls. This is especially valuable
-for internal calls, because we can make sure that all internal calls are
-compiled with -fexceptions (we compile the whole mono runtime with that
-option).
-
-All native function are able to call function without exception tables, and so
-we are unable to restore all caller saved registers if an exception is raised
-in such function. Well, its possible if the previous function already saves all
-registers. So we only omit the the LMF if a function has an exception table
-able to restore all caller saved registers.
-
-One problem is that gcc almost never saves all caller saved registers, because
-it is just unnecessary in normal situations. But there is a trick forcing gcc
-to save all register, we just need to call __builtin_unwind_init() at the
-beginning of a function. That way gcc generates code to save all caller saved
-register on the stack.
-
-
-
-
\ No newline at end of file
diff --git a/docs/local-regalloc.txt b/docs/local-regalloc.txt
deleted file mode 100644 (file)
index a6e5235..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-
-* Proposal for the local register allocator
-
-       The local register allocator deals with allocating registers
-       for temporaries inside a single basic block, while the global 
-       register allocator is concerned with method-wide allocation of 
-       variables.
-       The global register allocator uses callee-saved register for it's 
-       purpouse so that there is no need to save and restore these registers
-       at call sites.
-
-       There are a number of issues the local allocator needs to deal with:
-       *) some instructions expect operands in specific registers (for example
-               the shl instruction on x86, or the call instruction with thiscall
-               convention, or the equivalent call instructions on other architectures, 
-               such as the need to put output registers in %oX on sparc)
-       *) some instructions deliver results only in specific registers (for example
-               the div instruction on x86, or the call instructionson on almost all
-               the architectures).
-       *) it needs to know what registers may be clobbered by an instruction
-               (such as in a method call)
-       *) it should avoid excessive reloads or stores to improve performance
-       
-       While which specific instructions have limitations is architecture-dependent,
-       the problem shold be solved in an arch-independent way to reduce code duplication.
-       The register allocator will be 'driven' by the arch-dependent code, but it's 
-       implementation should be arch-independent.
-
-       To improve the current local register allocator, we need to
-       keep more state in it than the current setup that only keeps busy/free info.
-
-       Possible state information is:
-
-       free: the resgister is free to use and it doesn't contain useful info
-       freeable: the register contains data loaded from a local (there is 
-               also info about _which_ local it contains) as a result from previous
-               instructions (like, there was a store from the register to the local)
-       moveable: it contains live data that is needed in a following instruction, but
-               the contents may be moved to a different register
-       busy: the register contains live data and it is placed there because
-               the following instructions need it exactly in that register
-       allocated: the register is used by the global allocator
-
-       The local register allocator will have the following interfaces:
-
-       int get_register ();
-               Searches for a register in the free state. If it doesn't find it,
-               searches for a freeable register. Sets the status to moveable.
-               Looking for a 'free' register before a freeable one should allow for
-               removing a few redundant loads (though I'm still unsure if such
-               things should be delegated entirely to the peephole pass).
-       
-       int get_register_force (int reg);
-               Returns 'reg' if it is free or freeable. If it is moveable, it moves it 
-               to another free or freeable register.
-               Sets the status of 'reg' to busy.
-       
-       void set_register_freeable (int reg);
-               Sets the status of 'reg' to freeable.
-       
-       void set_register_free (int reg);
-               Sets the status of 'reg' to free.
-
-       void will_clobber (int reg);
-               Spills the register to the stack. Sets the status to freeable.
-               After the clobbering has occurred, set the status to free.
-
-       void register_unspill (int reg);
-               Un-spills register reg and sets the status to moveable.
-
-       FIXME: how is the 'local' information represented? Maybe a MonoInst* pointer.
-
-       Note: the register allocator will insert instructions in the basic block
-       during it's operation.
-
-* Examples
-
-       Given the tree (on x86 the right argument to shl needs to be in ecx):
-
-       store (local1, shl (local1, call (some_arg)))
-
-       At the start of the basic block, the registers are set to the free state.
-       The sequence of instructions may be:
-               instruction             register status -> [%eax %ecx %edx]
-               start                                       free free free
-               eax = load local1                           mov  free free
-               /* call clobbers eax, ecx, edx */
-               spill eax                                   free free free
-               call                                        mov  free free
-               /* now eax contains the right operand of the shl */
-               mov %eax -> %ecx                            free busy free
-               un-spill                                    mov  busy free
-               shl %cl, %eax                               mov  free free
-       
-       The resulting x86 code is:
-               mov $fffc(%ebp), %eax
-               mov %eax, $fff0(%ebp)
-               push some_arg
-               call func
-               mov %eax, %ecx
-               mov $fff0(%ebp), %eax
-               shl %cl, %eax
-               
-       Note that since shl could operate directly on memory, we could have:
-       
-               push some_arg
-               call func
-               mov %eax, %ecx
-               shl %cl, $fffc(%ebp)
-
-       The above example with loading the operand in a register is just to complicate
-       the example and show that the algorithm should be able to handle it.
-
-       Let's take another example with the this-call call convention (the first argument 
-       is passed in %ecx).
-       In this case, will_clobber() will be called only on %eax and %edx, while %ecx
-       will be allocated with get_register_force ().
-       Note: when a register is allocated with get_register_force(), it should be set
-       to a different state as soon as possible.
-
-       store (local1, shl (local1, this-call (local1)))
-
-               instruction             register status -> [%eax %ecx %edx]
-               start                                       free free free
-               eax = load local1                           mov  free free
-               /* force load in %ecx */
-               ecx = load local1                           mov  busy free
-               spill eax                                   free busy free
-               call                                        mov  free free
-               /* now eax contains the right operand of the shl */
-               mov %eax -> %ecx                            free busy free
-               un-spill                                    mov  busy free
-               shl %cl, %eax                               mov  free free
-
-       What happens when a register that we need to allocate with get_register_force ()
-       contains an operand for the next instruction?
-
-               instruction             register status -> [%eax %ecx %edx]
-               eax = load local0                           mov  free free
-               ecx = load local1                           mov  mov  free
-               get_register_force (ecx) here.
-               We have two options: 
-                       mov %ecx, %edx
-               or:
-                       spill %ecx
-               The first option is way better (and allows the peephole pass to
-               just load the value in %edx directly, instead of loading first to %ecx).
-               This doesn't work, though, if the instruction clobbers the %edx register
-               (like in a this-call). So, we first need to clobber the registers
-               (so the state of %ecx changes to freebale and there is no issue
-               with get_register_force ()).
-               What if an instruction both clobbers a register and requires it as 
-               an operand? Lets' take the x86 idiv instruction as an example: it
-               requires the dividend in edx:eax and returns the result in eax,
-               with the modulus in edx.
-       
-       store (local1, div (local1, local2))
-               
-               instruction             register status -> [%eax %ecx %edx]
-               eax = load local0                           mov  free free
-               will_clobber eax, edx                       free mov  free
-               force mov %ecx, %eax                        busy free free
-               set %edx                                    busy free busy
-               idiv                                        mov  free free
-       
-       Note: edx is set to free after idiv, because the modulus is not needed
-       (if it was a rem, eax would have been freed).
-       If we load the divisor before will_clobber(), we'll have to spill
-       eax and reload it later. If we load it just after the idiv, there is no issue.
-       In any case, the algorithm should give the correct results and allow the operation.
-               
-       Working recursively on the isntructions there shouldn't be huge issues
-       with this algorithm (though, of course, it's not optimal and it may
-       introduce excessive spills or register moves). The advantage over the current
-       local reg allocator is that:
-       1) the number of spills/moves would be smaller anyway
-       2) a separate peephole pass could be able to eliminate reg moves
-       3) we'll be able to remove the 'forced' spills we currently do with
-               the return value of method calls
-
-* Issues
-
-       How to best integrate such a reg allocator with the burg stuff.
-
-       Think about a call os sparc with two arguments: they got into %o0 and %o1
-       and each of them sets the register as busy. But what if the values to put there
-       are themselves the result of a call? %o0 is no problem, but for all the 
-       next argument n the above algorithm would spill all the 0...n-1 registers...
-
-* Papers
-
-       More complex solutions to the local register allocator problem:
-       http://dimacs.rutgers.edu/TechnicalReports/abstracts/1997/97-33.html
-
-       Combining register allocation and instruction scheduling:
-       http://citeseer.nj.nec.com/motwani95combining.html
-
-       More on LRA euristics:
-       http://citeseer.nj.nec.com/liberatore97hardness.html
-
-       Linear-time optimal code scheduling for delayedload architectures
-       http://www.cs.wisc.edu/~fischer/cs701.f01/inst.sched.ps.gz
-
-       Precise Register Allocation for Irregular Architectures
-       http://citeseer.nj.nec.com/kong98precise.html
-
-       Allocate registers first to subtrees that need more of them.
-       http://www.upb.de/cs/ag-kastens/compii/folien/comment401-409.2.pdf
diff --git a/docs/mono_handle_d b/docs/mono_handle_d
deleted file mode 100644 (file)
index a8f97b1..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-=pod
-
-=head1 Internal design document for the mono_handle_d
-
-This document is designed to hold the design of the mono_handle_d and
-not as an api reference.
-
-=head2 Primary goal and purpose
-
-The mono_handle_d is a process which takes care of the (de)allocation
-of scratch shared memory and handles (of files, threads, mutexes,
-sockets etc. see L<WapiHandleType>) and refcounts of the
-filehandles. It is designed to be run by a user and to be fast, thus
-minimal error checking on input is done and will most likely crash if
-given a faulty package. No effort has been, or should be, made to have
-the daemon talking to machine of different endianness/size of int.
-
-=head2 How to start the daemon
-
-To start the daemon you either run the mono_handle_d executable or try
-to attach to the shared memory segment via L<_wapi_shm_attach> which
-will start a daemon if one does not exist.
-
-=head1 Internal details
-
-The daemon works by opening a socket and listening to clients. These
-clients send packages over the socket complying to L<struct
-WapiHandleRequest>.
-
-=head2 Possible requests
-
-=over
-
-=item WapiHandleRequest_New
-
-Find a handle in the shared memory segment that is free and allocate
-it to the specified type. To destroy use
-L</WapiHandleRequest_Close>. A L<WapiHandleResponse> with
-.type=WapiHandleResponseType_New will be sent back with .u.new.handle
-set to the handle that was allocated. .u.new.type is the type that was
-requested.
-
-=item WapiHandleRequestType_Open
-
-Increase the ref count of an already created handle. A
-L<WapiHandleResponse> with .type=WapiHandleResponseType_Open will be sent
-back with .u.new.handle set to the handle, .u.new.type is set to the
-type of handle this is.
-
-=item WapiHandleRequestType_Close
-
-Decrease the ref count of an already created handle. A
-L<WapiHandleResponse> with .type=WapiHandleResponseType_Close will be
-sent back with .u.close.destroy set to TRUE if ref count for this
-client reached 0.
-
-=item WapiHandleRequestType_Scratch
-
-Allocate a shared memory area of size .u.scratch.length in bytes. A
-L<WapiHandleResponse> with .type=WapiHandleResponseType_Scratch will be
-sent back with .u.scratch.idx set to the index into the shared
-memory's scratch area where to memory begins. (works just like
-malloc(3))
-
-=item WapiHandleRequestType_Scratch
-
-Deallocate a shared memory area, this must have been allocated before
-deallocating. A L<WapiHandleResponse> with
-.type=WapiHandleResponseType_ScratchFree will be sent back (works just
-like free(3))
-
-=back
-
-=head1 Why a daemon
-
-From an email:
-
-Dennis: I just have one question about the daemon... Why does it
-exist? Isn't it better performancewise to just protect the shared area
-with a mutex when allocation a new handle/shared mem segment or
-changing refcnt? It will however be a less resilient to clients that
-crash (the deamon cleans up ref'd handles if socket closes)
-
-Dick: It's precisely because with a mutex the shared memory segment
-can be left in a locked state. Also, it's not so easy to clean up
-shared memory without it (you can't just mark it deleted when creating
-it, because you can't attach any more readers to the same segment
-after that).  I did some minimal performance testing, and I don't
-think the daemon is particularly slow.
-
-
-=head1 Authors
-
-Documentaion: Dennis Haney
-
-Implementation: Dick Porter
-
-=cut
diff --git a/docs/new-regalloc b/docs/new-regalloc
deleted file mode 100644 (file)
index b687c2b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-We need to switch to a new register allocator.
-The current one is split in a global and a local register allocator.
-The global one can assign only callee-saves registers and happens
-on the tree-based internal representation: it assigns local variables 
-to hardware registers. 
-The local one happens on the linear representation on a per basic 
-block basis and assigns hard registers to virtual registers (which 
-hold temporary values during expression executions) and it deals also 
-with the platform-specific issues (fixed registers, call conventions).
-
-Moving to a different register will help solve some of the performance 
-issues introduced by the above split, make the register more easily 
-portable and solve some of the issues generated by dealing with trees.
-
-The general design ideas are below.
-
-The new allocator should have a global view of all the method, so it can be
-able to assign variables also to some of the volatile registers if possible,
-even across basic blocks (this would improve performance).
-
-The allocator would be driven by per-arch declarative data, so porting 
-should be easier: an architecture needs to specify register classes,
-call convention and instructions requirements (similar to the gcc code).
-
-The allocator should operate on the linear representation, this way it's 
-easier and faster to track usages more correctly. We need to assign virtual
-registers on a per-method basis instead of per basic block. We can assign 
-virtual registers to variables, too. Note that since we fix the stack offset
-of local vars only after this step (which happens after the burg rules are run),
-some of the burg rules that try to optimize the code won't apply anymore:
-the peephole code may need to be enhanced to do the optimizations instead.
-
-We need to handle floating point registers in the global allocator, too.
-
-The new allocator also needs to keep track precisely of which registers
-contain references or managed pointers to allow us to move to a precise GC.
-
-It may be worth to use a single increasing set of integers for the virtual 
-registers, with the class of the register stored separately (unless the 
-current local allocator which keeps interger and fp registers separate).
-
-Since this is a large task, we need to do it in steps as much as possible. 
-The first is to run the register allocator _after_ the burg rules: this 
-requires a rewrite of the liveness code, too, to use linear indexes instead 
-of basic-block/tree number combinations. This can be done by:
-*) allocating virtual regs to all the locals that can be register allocated
-*) running the burg rules (some may require adjustments): the local virtual 
-registers are assigned starting from global-virt-regs+1, instead of the current
-hardware-regs+1, so we can tell apart global and local virt regs.
-*) running the liveness/whatever code is needed to allocate the global registers
-*) allocate the rest of the local variables to stack slots
-*) continue with the current local allocator
-
-This work could take 2-3 weeks.
-
-The next step is to define the kind of declarative data an architecture needs
-and assigning virtual regs to all the registers and making the allocator
-assign from the volatile registers, too.
-Note that some of the code that is currently emitted in the arch-specific
-code, will need to be emitted as instructions that the reg allocator
-can inspect: think of a method that returns the first argument which is
-received in a register: the current code copies it to either a local slot or
-to a global reg in the prolog an copies it back to the return register
-int he basic block, but since neither the regallocator nor the peephole code
-knows about the prolog code, the first store cannot be optimized away.
-The gcc code has some example of how to specify register classes in a 
-declarative way.
-
diff --git a/docs/opcode-decomp.txt b/docs/opcode-decomp.txt
deleted file mode 100644 (file)
index 48968d1..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-
-* How to handle complex IL opcodes in an arch-independent way
-
-       Many IL opcodes are very simple: add, ldind etc.
-       Such opcodes can be implemented with a single cpu instruction
-       in most architectures (on some, a group of IL instructions
-       can be converted to a single cpu op).
-       There are many IL opcodes, though, that are more complex, but
-       can be expressed as a series of trees or a single tree of
-       simple operations. Such simple operations are architecture-independent.
-       It makes sense to decompose such complex IL instructions in their
-       simpler equivalent so that we gain in several ways:
-       *) porting effort is easier, because only the simple instructions 
-               need to be implemented in arch-specific code
-       *) we could apply BURG rules to the trees and do pattern matching
-               on them to optimize the expressions according to the host cpu
-       
-       The issue is: where do we do such conversion from coarse opcodes to 
-       simple expressions?
-
-* Doing the conversion in method_to_ir ()
-
-       Some of these conversions can certainly be done in method_to_ir (),
-       but it's not always easy to decide which are better done there and 
-       which in a different pass.
-       For example, let's take ldlen: in the mono implementation, ldlen
-       can be simply implemented with a load from a fixed position in the 
-       array object:
-
-               len = [reg + maxlen_offset]
-       
-       However, ldlen carries also semantics information: the result is the
-       length of the array, and since in the CLR arrays are of fixed size,
-       this information can be useful to later do bounds check removal.
-       If we convert this opcode in method_to_ir () we lost some useful
-       information for further optimizations.
-
-       In some other ways, decomposing an opcode in method_to_ir() may
-       allow for better optimizations later on (need to come up with an 
-       example here ...).
-
-* Doing the conversion in inssel.brg
-
-       Some conversion may be done inside the burg rules: this has the 
-       disadvantage that the instruction selector is not run again on
-       the resulting expression tree and we could miss some optimization
-       (this is what effectively happens with the coarse opcodes in the old 
-       jit). This may also interfere with an efficient local register allocator.
-       It may be possible to add an extension in monoburg that allows a rule 
-       such as:
-
-               recheck: LDLEN (reg) {
-                       create an expression tree representing LDLEN
-                       and return it
-               }
-       
-       When the monoburg label process gets back a recheck, it will run
-       the labeling again on the resulting expression tree.
-       If this is possible at all (and in an efficient way) is a 
-       question for dietmar:-)
-       It should be noted, though, that this may not always work, since
-       some complex IL opcodes may require a series of expression trees
-       and handling such cases in monoburg could become quite hairy.
-       For example, think of opcode that need to do multiple actions on the 
-       same object: this basically means a DUP...
-       On the other end, if a complex opcode needs a DUP, monoburg doesn't
-       actually need to create trees if it emits the instructions in
-       the correct sequence and maintains the right values in the registers
-       (usually the values that need a DUP are not changed...). How
-       this integrates with the current register allocator is not clear, since
-       that assigns registers based on the rule, but the instructions emitted 
-       by the rules may be different (this already happens with the current JIT
-       where a MULT is replaced with lea etc...).
-
-* Doing it in a separate pass.
-
-       Doing the conversion in a separate pass over the instructions
-       is another alternative. This can be done right after method_to_ir ()
-       or after the SSA pass (since the IR after the SSA pass should look
-       almost like the IR we get back from method_to_ir ()).
-
-       This has the following advantages:
-       *) monoburg will handle only the simple opcodes (makes porting easier)
-       *) the instruction selection will be run on all the additional trees
-       *) it's easier to support coarse opcodes that produce multiple expression 
-               trees (and apply the monoburg selector on all of them)
-       *) the SSA optimizer will see the original opcodes and will be able to use
-               the semantic info associated with them
-       
-       The disadvantage is that this is a separate pass on the code and
-       it takes time (how much has not been measured yet, though).
-
-       With this approach, we may also be able to have C implementations
-       of some of the opcodes: this pass would insert a function call to 
-       the C implementation (for example in the cases when first porting
-       to a new arch and implemenating some stuff may be too hard in asm).
-
-* Extended basic blocks
-
-       IL code needs a lot of checks, bounds checks, overflow checks,
-       type checks and so on. This potentially increases by a lot
-       the number of basic blocks in a control flow graph. However,
-       all such blocks end up with a throw opcode that gives control to the
-       exception handling mechanism.
-       After method_to_ir () a MonoBasicBlock can be considered a sort
-       of extended basic block where the additional exits don't point
-       to basic blocks in the same procedure (at least when the method
-       doesn't have exception tables).
-       We need to make sure the passes following method_to_ir () can cope
-       with such kinds of extended basic blocks (especially the passes
-       that we need to apply to all the methods: as a start, we could
-       skip SSA optimizations for methods with exception clauses...)
-
index 231ecf171a990dddb49057c375be48cb19ecc7bc..c9d90eb25bdcdc5f34cc41b0c18ebb9f7b2dbd3e 100644 (file)
@@ -292,7 +292,6 @@ mono_free_method
 mono_free_verify_list
 mono_gc_collect
 mono_gc_collection_count
-mono_gc_enable_events
 mono_gc_get_generation
 mono_gc_get_heap_size
 mono_gc_get_used_size
@@ -301,9 +300,7 @@ mono_gchandle_get_target
 mono_gchandle_new
 mono_gchandle_new_weakref
 mono_gc_invoke_finalizers
-mono_gc_is_finalizer_thread
 mono_gc_max_generation
-mono_gc_out_of_memory
 mono_gc_wbarrier_arrayref_copy
 mono_gc_wbarrier_generic_nostore
 mono_gc_wbarrier_generic_store
@@ -604,7 +601,6 @@ mono_object_get_class
 mono_object_get_domain
 mono_object_get_size
 mono_object_get_virtual_method
-mono_object_is_alive
 mono_object_isinst
 mono_object_isinst_mbyref
 mono_object_new
diff --git a/docs/reactive-extension-bundle.txt b/docs/reactive-extension-bundle.txt
deleted file mode 100644 (file)
index 175818a..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-With this change, we bundle Reactive Extensions from Microsoft.
-
-Steps to do:
-
-- Until we add submodule, check out Rx sources from http://rx.codeplex.com:
-
-       $ cd external
-       $ git clone git://github.com/atsushieno/rx.git
-       $ cd rx
-       $ git checkout rx-oss-v1.0
-       $ cd ../..
-
-  Note that the original repo at rx.codeplex.com will *fail* on Linux!
-  codeplex.codeplex.com/workitem/26133
-  Also note that rx.codeplex.com is huge and takes very long time to checkout.
-
-- expand rx-mono-changes-3.tar.bz2
-
-       $ tar jxvf rx-mono-changes-3.tar.bz2
-
-- Apply changes to mcs/class/Makefile:
-
-       $ cd mcs/class
-       $ patch -i add-rx-libs.patch -p3
-       $ cd ../..
-
-Then it should be done.
-
-Note that this does not include Mono.Reactive.Testing into the build yet -
-this library depends on nunit.framework.dll but it wouldn't be built before
-this assembly is built. This needs to be resolved.
-
-** Current Status
-
-- We don't have Microsoft.Reactive.Testing.dll. Instead, I created an
-  alternative Mono.Reactive.Testing.dll which *mostly* uses MS sources for
-  that assembly but uses NUnit.Framework instead.
-
-  To make it happen, I added a small script that automatically replaces
-  MSTest dependency parts with that for NUnit (replacer.sh under rx tree).
-
-  (We'll also have to rename namespaces and have more source changes, but
-  so far it is to get things runnable.)
-
-- To check the build sanity, I imported unit tests (as explained above)
-  and it is supposed to run by "make run-test" in Mono.Reactive.Testing
-  directory (the tests were all in one place in MS tests, so I made it
-  in Mono.Reactive.Testing directory instead).
-
diff --git a/docs/release-notes-1.0.html b/docs/release-notes-1.0.html
deleted file mode 100644 (file)
index 9c30543..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<h1>Mono 1.0 Release Notes</h1>
-
-<h2>What does Mono Include</h2>
-
-<h2>Missing functionality</h2>
-
-       <p>COM support.
-
-       <p>EnterpriseServices are non-existant.
-
-       <p>Windows.Forms is only available as a preview, it is not
-       completed nor stable.
-       
-<h3>Assembly: System.Drawing</h3>
-
-       <p>System.Drawing.Printing is not supported.
\ No newline at end of file
index 9bd793669108c6797535d6ea224972a537301a7e..23c186249298bb6c3acf3974e84ce497b44a844e 100644 (file)
        
 <h4><a name="api:mono_gc_disable">mono_gc_disable</a></h4>
 <h4><a name="api:mono_gc_enable">mono_gc_enable</a></h4>
-<h4><a name="api:mono_gc_is_finalizer_thread">mono_gc_is_finalizer_thread</a></h4>
-<h4><a name="api:mono_gc_out_of_memory">mono_gc_out_of_memory</a></h4>
 <h4><a name="api:mono_gc_start_world">mono_gc_start_world</a></h4>
 <h4><a name="api:mono_gc_stop_world">mono_gc_stop_world</a></h4>
 <h4><a name="api:mono_gc_alloc_fixed">mono_gc_alloc_fixed</a></h4> 
-<h4><a name="api:mono_gc_enable_events">mono_gc_enable_events</a></h4> 
 <h4><a name="api:mono_gc_free_fixed">mono_gc_free_fixed</a></h4> 
 <h4><a name="api:mono_gc_make_descr_from_bitmap">mono_gc_make_descr_from_bitmap</a></h4> 
 
index 5619040698aa3bf6f9816faf721a80bf86bc3e8e..111a307f1c60baed5c7c9da14e74757c4d662fd4 100644 (file)
@@ -93,7 +93,6 @@ result = mono_object_new (mono_domain_get (), version_class);
 <h4><a name="api:mono_object_isinst">mono_object_isinst</a></h4>
 <h4><a name="api:mono_object_unbox">mono_object_unbox</a></h4>
 <h4><a name="api:mono_object_castclass_mbyref">mono_object_castclass_mbyref</a></h4>
-<h4><a name="api:mono_object_is_alive">mono_object_is_alive</a></h4> 
 <h4><a name="api:mono_object_get_size">mono_object_get_size</a></h4>
 
 <a name="valuetypes"></a>
diff --git a/docs/stack-alignment b/docs/stack-alignment
deleted file mode 100644 (file)
index da995fb..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-Size and alignment requirements of stack values
-===============================================
-
-P  ... System.IntPtr
-I1 ... System.Int8
-I2 ... System.Int16
-I4 ... System.Int32
-I8 ... System.Int64
-F  ... System.Single
-D  ... System.Double
-LD ... native long double
-
------------------------------------------------------------
-ARCH      |   P |  I1 |  I2 |  I4 |  I8 |  F  |   D |  LD | 
------------------------------------------------------------
-X86       | 4/4 | 4/4 | 4/4 | 4/4 | 8/4 | 4/4 | 8/4 |12/4 |
------------------------------------------------------------
-X86/W32   | 4/4 | 4/4 | 4/4 | 4/4 | 8/4 | 4/4 | 8/4 |12/4 |
------------------------------------------------------------
-ARM       | 4/4 | 4/4 | 4/4 | 4/4 | 8/4 | 4/4 | 8/4 | 8/4 |
------------------------------------------------------------
-M68K      | 4/4 | 4/4 | 4/4 | 4/4 | 8/4 | 4/4 | 8/4 |12/4 |
------------------------------------------------------------
-ALPHA     | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 |
------------------------------------------------------------
-SPARC     | 4/4 | 4/4 | 4/4 | 4/4 | 8/8 | 4/4 | 8/8 |16/8 |
------------------------------------------------------------
-SPARC64   | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 |16/16|
------------------------------------------------------------
-MIPS      | 4/4 | 4/4 | 4/4 | 4/4 | ?/? | 4/4 | 8/8 | 8/8 |
------------------------------------------------------------
-          |     |     |     |     |     |     |     |     |
------------------------------------------------------------
diff --git a/docs/tree-mover.txt b/docs/tree-mover.txt
deleted file mode 100644 (file)
index 3ee836a..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-
-Purpose
-
-Especially when inlining is active, it can happen that temporary
-variables add pressure to the register allocator, producing bad
-code.
-
-The idea is that some of these temporaries can be totally eliminated
-my moving the MonoInst tree that defines them directly to the use
-point in the code (so the name "tree mover").
-
-Please note that this is *not* an optimization: it is mostly a
-workaround to issues we have in the regalloc.
-Actually, with the new linear IR this will not be possible at all
-(there will be no more trees in the code!).
-Anyway, this workaround turns out to be useful in the current state
-of things...
-
------------------------------------------------------------------------
-
-Base logic
-
-If a local is defined by a value which is a proper expression (a tree
-of MonoInst, not just another local or a constant), and this definition
-is used only once, the tree can be moved directly to the use location,
-and the definition eliminated.
-Of course, none of the variables used in the tree must be defined in
-the code path between the definition and the use, and the tree must be
-free of side effects.
-We do not handle the cases when the tree is just a local or a constant
-because they are handled by copyprop and consprop, respectively.
-
-To make things simpler, we restrict the tree move to the case when:
-- the definition and the use are in the same BB, and
-- the use is followed by another definition in the same BB (it is not
-  possible that the 1st value is used again), or alternatively there
-  is no BB in the whole CFG that contains a use of this local before a
-  definition (so, again, there is no code path that can lead to a
-  subsequent use).
-
-To handle this, we maintain an ACT array (Available Copy Tree, similar
-to the ACP), where we store the "state" of every local.
-Ideally, every local can be in the following state:
-[E] Undefined (by a tree, it could be in the ACP but we don't care).
-[D] Defined (by a tree), and waiting for a use.
-[U] Used, with a tree definition available in the same BB, but still
-    without a definition following the use (always in the same BB).
-Of course state [E] (empty) is the initial one.
-
-Besides, there are two sort of "meta states", or flags:
-[W] Still waiting for a use or definition in this BB (we have seen no
-    occurrence of the local yet).
-[X] Used without being previously defined in the same BB (note that if
-    there is a definition that precedes the use in the same BB, even if
-    the definition is not a tree or is not available because of side
-    effects or because the tree value has changed the local is not in
-    state [X]).
-Also note that state [X] is a sort of "global" condition, which if set
-in one BB will stay valid for the whole CFG, even if the local will
-otherwise change state. The idea of flagging a local as [X] is that if
-there is a definition/use pair that reaches the end of a BB, it could
-be that there is a CFG path that then leads to the BB flagging it as
-[X] (which contains a use), so the tree cannot be moved.
-So state [X] will always be set, and never examined in all the state
-transitions we will describe.
-In practice, we use flag [W] to set state [X]: if, when traversing a
-BB, we find a use for a local in state [W], then that local is flagged
-[X].
-
-
-For each BB, we initialize all states to [E] and [W], and then we
-traverse the code one inst at a time, and update the variable states
-in the ACT in the following ways:
-
-[Definition]
-  - Flag [W] is cleared.
-  - All "affected trees" are killed (go from state [D] to [E]).
-    The "affected trees" are the trees which contain (use) the defined
-    local, and the rationale is that the tree value changed, so the
-    tree is no longer available.
-  - If the local was in state [U], *that* tree move is marked "safe"
-    (because *this* definition makes us sure that the previous tree
-    cannot be used again in any way).
-    The idea is that "safe" moves can happen even if the local is
-    flagged [X], because the second definition "covers" the use.
-    The tree move is then saved in the "todo" list (and the affecting
-    nodes are cleared).
-  - If the local was defined by a tree, it goes to state [D], the tree
-    is recorded, and all the locals used in it are marked as "affecting
-    this tree" (of course these markers are lists, because each local
-    could affect more than one tree).
-
-[IndirectDefinition]
-  - All potentially affected trees (in state [D]) are killed.
-
-[Use]
-  - If the local is still [W], it is flagged [X] (the [W] goes away).
-  - If the local is in state [D], it goes to state [U].
-    The tree move must not yet be recorded in the "todo" list, it still
-    stays in the ACT slot belonging to this local.
-    Anyway, the "affecting" nodes are updated, because now a definition
-    of a local used in this tree will affect only "indirect" (or also
-    "propagated") moves, but not *this* move (see below).
-  - If the local is in state [U], then the tree cannot be moved (it is
-    used two times): the move is canceled, and the state goes [E].
-  - If the local is in state [E], the use is ignored.
-
-[IndirectUse]
-  - All potentially affected trees (in state [D] or [U]) are killed.
-
-[SideEffect]
-  - Tree is marked as "unmovable".
-
-Then, at the end of the BB, for each ACT slot:
-  - If state is [U], the tree move is recorded in the "todo" list, but
-    flagged "unsafe".
-  - Anyway, state goes to [E], the [W] flag is set, and all "affecting"
-    lists are cleared (we get ready to traverse the next BB).
-Finally, when all BBs has been scanned, we traverse the "todo" list,
-moving all "safe" entries, and moving "unsafe" ones only if their ACT
-slot is not flagged [X].
-
-So far, so good.
-But there are two issues that make things harder :-(
-
-The first is the concept of "indirect tree move".
-It can happen that a tree is scheduled for moving, and its destination
-is a use that is located in a second tree, which could also be moved.
-The main issue is that a definition of a variable of the 1st tree on
-the path between the definition and the use of the 2nd one must prevent
-the move.
-But which move? The 1st or the 2nd?
-Well, any of the two!
-The point is, the 2nd move must be prevented *only* if the 1st one
-happens: if it is aborted (for an [X] flag or any other reason), the
-2nd move is OK, and vice versa...
-We must handle this in the following way:
-- The ACT must still remember if a slot is scheduled for moving in
-  this BB, and if it is, all the locals used in the tree.
-  We say that the slot is in state [M].
-  Note that [M] is (like [X] and [W]) a sort of "meta state": a local
-  is flagged [M] when it goes to state [U], and the flag is cleared
-  when the tree move is cancelled
-- A tree that uses a local whose slot is in state [M] is also using all
-  the locals used by the tree in state [M], but the use is "indirect".
-  These use nodes are also included in the "affecting" lists.
-- The definition of a variable used in an "indirect" way has the
-  effect of "linking" the two involved tree moves, saying that only one
-  of the two can happen in practice, but not both.
-- When the 2nd tree is scheduled for moving, the 1st one is *still* in
-  state [M], because a third move could "carry it forward", and all the
-  *three* moves should be mutually exclusive (to be safe!).
-
-The second tricky complication is the "tree forwarding" that can happen
-when copyprop is involved.
-It is conceptually similar to the "indirect tree move".
-Only, the 2nd tree is not really a tree, it is just the local defined
-in the 1st tree move.
-It can happen that copyprop will propagate the definition.
-We cannot make treeprop do the same job of copyprop, because copyprop
-has less constraints, and is therefore more powerful in its scope.
-The main issue is that treeprop cannot propagate a tree to *two* uses,
-while copyprop is perfectly capable of propagating one definition to
-two (or more) different places.
-So we must let copyprop do its job otherwise we'll miss optimizations,
-but we must also make it play safe with treeprop.
-Let's clarify with an example:
-  a = v1 + v2; //a is defined by a tree, state [D], uses v2 and v2
-  b = a; //a is used, state [U] with move scheduled, and
-         //b is defined by a, ACP[b] is a, and b is in state [DC]
-  c = b + v3; // b is used, goes to state [U]
-The real trouble is that copyprop happens *immediately*, while treeprop
-is deferred to the end of the CFG traversal.
-So, in the 3rd statement, the "b" is immediately turned into an "a" by
-copyprop, regardless of what treeprop will do.
-Anyway, if we are careful, this is not so bad.
-First of all, we must "accept" the fact that in the 3rd statement the
-"b" is in fact an "a", as treeprop must happen *after* copyprop.
-The real problem is that "a" is used twice: in the 2nd and 3rd lines.
-In our usual setup, the 2nd line would set it to [U], and the 3rd line
-would kill the move (and set "a" to [E]).
-I have tried to play tricks, and reason as of copyprop didn't happen,
-but everything becomes really messy.
-Instead, we should note that the 2nd line is very likely to be dead.
-At least in this BB, copyprop will turn all "b"s into "a"s as long as
-it can, and when it cannot, it will be because either "a" or "b" have
-been redefined, which would be after the tree move anyway.
-So, the reasoning gets different: let's pretend that "b" will be dead.
-This will make the "a" use in the 2nd statement useless, so there we
-can "reset" "a" to [D], but also take note that if "b" will end up
-not being dead, the tree move associated to this [D] must be aborted.
-We can detect this in the following way:
-- Either "b" is used before being defined in this BB, or
-- It will be flagged "unsafe".
-Both things are very easy to check.
-The only quirk is that the "affecting" lists must not be cleared when
-a slot goes to state [U], because a "propagation" could put it back
-to state [D] (where those lists are needed, because it can be killed
-by a definition to a used slot).
-
------------------------------------------------------------------------
-
-Implementation notes
-
-All the implementation runs inside the existing mono_local_cprop
-function, and a separate memory pool is used to hold the temporary
-data.
-
-A struct, MonoTreeMover, contains the pointers to the pool, the ACT,
-the list of scheduled moves and auxiliary things.
-This struct is allocated if the tree move pass is requested, and is
-then passed along to all the involved functions, which are therefore
-aware of the tree mover state.
-
-The ACT is an array of slots, obviously one per local.
-Each slot is of type MonoTreeMoverActSlot, and contains the used and
-affected locals, a pointer to the pending tree move and the "waiting"
-and "unsafe" flags.
-
-The "affecting" lists a built from "dependency nodes", of type
-MonoTreeMoverDependencyNode.
-Each of the nodes contains the used and affected local, and is in
-two lists: the locals used by a slot, and the locals affected by a
-slot (obviously a different one).
-So, each node means: "variable x is used in tree t, so a definition
-of x affects tree t".
-The "affecting" lists are doubly linked, to allow for O(1) deletion.
-The "used" lists are simply linked, but when they are mantained there
-is always a pointer to the last element to allow for O(1) list moving.
-When a used list is dismissed (which happens often, any time a node is
-killed), its nodes are unlinked from their respective affecting lists
-and are then put in a "free" list in the MonoTreeMover to be reused.
-
-Each tree move is represented by a struct (MonoTreeMoverTreeMove),
-which contains:
-- the definition and use points,
-- the "affected" moves (recall the concept of "indirect tree move"),
-- the "must be dead" slots (recall "tree forwarding"). and
-- a few utility flags.
-The tree moves stays in the relevant ACT slot until it is ready to be
-scheduled for moving, at which point it is put in a list in the
-MonoTreeMover.
-The tree moves structs are reused when they are killed, so there is
-also a "free" list for them in the MonoTreeMover.
-
-The tree mover code has been added to all the relevant functions that
-participate in consprop and copyprop, particularly:
-- mono_cprop_copy_values takes care of variable uses (transitions from
-  states [D] to [U] and [U] to [E] because of killing),
-- mono_cprop_invalidate_values takes care of side effects (indirect
-  accesses, calls...),
-- mono_local_cprop_bb sets up and cleans the traversals for each BB,
-  and for each MonoInst it takes care of variable definitions.
-To each of them has been added a MonoTreeMover parameter, which is not
-NULL if the tree mover is running.
-After mono_local_cprop_bb has run for all BBs, the MonoTreeMover has
-the list of all the pending moves, which must be walked to actually
-perform the moves (when possible, because "unsafe" flags, "affected"
-moves and "must be dead" slots can still have their effects, which
-must be handled now because they are fully known only at the end of
-the CFG traversal).
index d589df6e8a206e28b84304a75917006a0e076c29..061a13cc772ef15f4d5528eb84fea4d51d4bda1d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit d589df6e8a206e28b84304a75917006a0e076c29
+Subproject commit 061a13cc772ef15f4d5528eb84fea4d51d4bda1d
index ada5da770505b718b60e4e40b837ffcbd758e17e..e8cb487c9e5f57e4394438448121ca6dfa237eb0 160000 (submodule)
@@ -1 +1 @@
-Subproject commit ada5da770505b718b60e4e40b837ffcbd758e17e
+Subproject commit e8cb487c9e5f57e4394438448121ca6dfa237eb0
index 04100342a006edfa0e3f4a28ff0a730667868acb..b80ffd0457f9fad271952beb31a7389830f52319 100644 (file)
@@ -20,6 +20,26 @@ revocation lists (CRL) or certificate trust lists (CTL) to/from a
 certificate store. Certificate stores are used to build and validate 
 certificate chains for Authenticode(r) code signing validation and SSL 
 server certificates.
+.SH STORES
+The 
+.I store
+represents the certificate store to use.   It can be one of the
+following:
+.TP
+.I "My"
+This is the personal certificate store.
+.TP
+.I "AddressBook"
+This is the store for other people.
+.TP
+.I "CA"
+This is a store for intermediate certificate authorities.
+.TP
+.I "Trust"
+This is for trusted roots.
+.TP
+.I "Disallowed"
+This is for untrusted roots
 .SH ACTIONS
 .TP
 .I "-list"
index 14221a83c1020153fa696e6313ccc290d45c6cd8..a193f9f0850006c9b1bc6e636ff8e412ab14fb75 100644 (file)
--- a/man/mcs.1
+++ b/man/mcs.1
@@ -249,29 +249,6 @@ This will instruct the compiler to reference the System.* libraries
 available on a typical dotnet framework installation, notice that this
 does not include all of the Mono libraries, only the System.* ones.  This
 is a convenient shortcut for those porting code.
-.TP
-.I \-pkg:olive
-Use this to reference the "Olive" libraries (the 3.0 and 3.5 extended
-libraries).
-.TP
-.I \-pkg:silver
-References the assemblies for creating Moonlight/Silverlight
-applications.
-.TP
-.I \-pkg:silverdesktop
-Use this option to create Moonlight/Silverlight applications that
-target the desktop.   This option allows developers to consume the
-Silverlight APIs with the full 2.0 profile API available to them,
-unlike 
-.I smcs 
-it gives full access to all the APIs that are part of Mono.  The only
-downside is that applications created with silverdesktop will not run
-on the browser.   Typically these applications will be launched
-with the 
-.I mopen
-command line tool.
-.TP
-For more details see the PACKAGE section in this document
 .ne
 .RE
 .TP
index 17ec6e294460d086b2082f88c209996ff536c1cb..2658da659ce42b4038d27ce664849240c6129816 100644 (file)
@@ -340,31 +340,31 @@ In general, Mono has been tuned to use the default set of flags,
 before using these flags for a deployment setting, you might want to
 actually measure the benefits of using them.    
 .Sp
-The following optimizations are implemented:
+The following optimization flags are implemented in the core engine:
 .nf
+             abcrem     Array bound checks removal
              all        Turn on all optimizations
-             peephole   Peephole postpass
+             aot        Usage of Ahead Of Time compiled code
              branch     Branch optimizations
-             inline     Inline method calls
              cfold      Constant folding
+             cmov       Conditional moves [arch-dependency]
+             deadce     Dead code elimination
              consprop   Constant propagation
              copyprop   Copy propagation
-             deadce     Dead code elimination
-             linears    Linear scan global reg allocation
-             cmov       Conditional moves [arch-dependency]
-             shared     Emit per-domain code
-             sched      Instruction scheduling
-             intrins    Intrinsic method implementations
-             tailc      Tail recursion and tail calls
-             loop       Loop related optimizations
              fcmov      Fast x86 FP compares [arch-dependency]
+             float32   Perform 32-bit float arithmetic using 32-bit operations
+             gshared    Enable generic code sharing.
+             inline     Inline method calls
+             intrins    Intrinsic method implementations
+             linears    Linear scan global reg allocation
              leaf       Leaf procedures optimizations
-             aot        Usage of Ahead Of Time compiled code
+             loop       Loop related optimizations
+             peephole   Peephole postpass
              precomp    Precompile all methods before executing Main
-             abcrem     Array bound checks removal
-             ssapre     SSA based Partial Redundancy Elimination
+             sched      Instruction scheduling
+             shared     Emit per-domain code
              sse2       SSE2 instructions on x86 [arch-dependency]
-             gshared    Enable generic code sharing.
+             tailc      Tail recursion and tail calls
 .fi
 .Sp
 For example, to enable all the optimization but dead code
@@ -377,6 +377,23 @@ The flags that are flagged with [arch-dependency] indicate that the
 given option if used in combination with Ahead of Time compilation
 (--aot flag) would produce pre-compiled code that will depend on the
 current CPU and might not be safely moved to another computer. 
+.RS
+.ne 8
+.PP
+The following optimizations are supported
+.TP
+.I float32
+Requests that the runtime performn 32-bit floating point operations
+using only 32-bits.   By default the Mono runtime tries to use the
+highest precision available for floating point operations, but while
+this might render better results, the code might run slower.   This
+options also affects the code generated by the LLVM backend.
+.TP
+.I inline
+Controls whether the runtime should attempt to inline (the default),
+or not inline methods invocations
+.ne
+.RE
 .TP
 \fB--runtime=VERSION\fR
 Mono supports different runtime versions. The version used depends on the program
@@ -400,10 +417,6 @@ Using security without parameters is equivalent as calling it with the
 "cas" parameter.  
 .PP
 The following modes are supported:
-.TP
-.I cas
-This allows mono to support declarative security attributes,
-e.g. execution of Code Access Security (CAS) or non-CAS demands.
 .TP 
 .I core-clr
 Enables the core-clr security system, typically used for
@@ -1129,9 +1142,16 @@ to 100 percent.  A value of 0 turns evacuation off.
 .TP
 \fB(no-)lazy-sweep\fR
 Enables or disables lazy sweep for the Mark&Sweep collector.  If
-enabled, the sweep phase of the garbage collection is done piecemeal
-whenever the need arises, typically during nursery collections.  Lazy
-sweeping is enabled by default.
+enabled, the sweeping of individual major heap blocks is done
+piecemeal whenever the need arises, typically during nursery
+collections.  Lazy sweeping is enabled by default.
+.TP
+\fB(no-)concurrent-sweep\fR
+Enables or disables concurrent sweep for the Mark&Sweep collector.  If
+enabled, the iteration of all major blocks to determine which ones can
+be freed and which ones have to be kept and swept, is done
+concurrently with the running program.  Concurrent sweeping is enabled
+by default.
 .TP
 \fBstack-mark=\fImark-mode\fR
 Specifies how application threads should be scanned. Options are
@@ -1462,6 +1482,12 @@ include "clearlooks", "nice" and "win32".
 .Sp
 The default is "win32".  
 .TP
+\fBMONO_THREAPOOL\fR
+This environment variable can be used to choose the implementation of
+the ThreadPool used at runtime.  By default this uses the long term
+Mono threadpool implementation.   But a new "microsoft" value switches
+the threadpool implementation to Microsoft's CoreCLR/ReferenceSource implementation.
+.TP
 \fBMONO_TLS_SESSION_CACHE_TIMEOUT\fR
 The time, in seconds, that the SSL/TLS session cache will keep it's entry to
 avoid a new negotiation between the client and a server. Negotiation are very
index eb685a5ec981b949faa391ad3fc395cd42932510..5bc8fb2c8f757e34a0d8f4644f589d57609e213f 100644 (file)
@@ -1,15 +1,15 @@
-                 GNU LIBRARY GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
 
  Copyright (C) 1991 Free Software Foundation, Inc.
                   675 Mass Ave, Cambridge, MA 02139, USA
51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
 [This is the first released version of the library GPL.  It is
  numbered 2 because it goes with version 2 of the ordinary GPL.]
 
-                           Preamble
+                            Preamble
 
   The licenses for most software are designed to take away your
 freedom to share and change it.  By contrast, the GNU General Public
@@ -99,7 +99,7 @@ works together with the library.
   Note that it is possible for a library to be covered by the ordinary
 General Public License rather than by this special one.
 \f
-                 GNU LIBRARY GENERAL PUBLIC LICENSE
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
   0. This License Agreement applies to any software library which
@@ -411,7 +411,7 @@ decision will be guided by the two goals of preserving the free status
 of all derivatives of our free software and of promoting the sharing
 and reuse of software generally.
 
-                           NO WARRANTY
+                            NO WARRANTY
 
   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -434,9 +434,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 DAMAGES.
 
-                    END OF TERMS AND CONDITIONS
+                     END OF TERMS AND CONDITIONS
 \f
-     Appendix: How to Apply These Terms to Your New Libraries
+           How to Apply These Terms to Your New Libraries
 
   If you develop a new library, and you want it to be of the greatest
 possible use to the public, we recommend making it free software that
@@ -463,8 +463,8 @@ convey the exclusion of warranty; and each file should have at least the
     Library General Public License for more details.
 
     You should have received a copy of the GNU Library General Public
-    License along with this library; if not, write to the Free
-    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 Also add information on how to contact you by electronic and paper mail.
 
index cbcfdcc3e0bfbd4f606ea0fb83e24e35c00db1da..b94a7c82d6ef8fd1749bb78b10cbcb38e4a840d8 100644 (file)
@@ -12,7 +12,7 @@ monotouch_runtime_SUBDIRS := build class
 xammac_SUBDIRS := build class
 mobile_SUBDIRS := build class
 mobile_static_SUBDIRS := build class
-net_4_0_SUBDIRS := build class
+binary_reference_assemblies_SUBDIRS := build class
 net_4_5_SUBDIRS := build mcs class nunit24 ilasm tools tests errors docs
 xbuild_12_SUBDIRS := build class tools/xbuild
 xbuild_14_SUBDIRS := build class tools/xbuild
@@ -30,7 +30,7 @@ dir-check:
 
 # fun specialty targets
 
-PROFILES = net_4_5 net_4_0 xbuild_12 xbuild_14
+PROFILES = net_4_5 binary_reference_assemblies xbuild_12 xbuild_14
 
 .PHONY: all-profiles $(STD_TARGETS:=-profiles)
 all-profiles $(STD_TARGETS:=-profiles): %-profiles: profiles-do--%
@@ -51,7 +51,7 @@ profiles-do--run-test:
 _boot_ = all clean install
 $(_boot_:%=profile-do--xbuild_14--%):         profile-do--xbuild_14--%:         profile-do--net_4_5--%
 $(_boot_:%=profile-do--xbuild_12--%):         profile-do--xbuild_12--%:         profile-do--net_4_5--%
-$(_boot_:%=profile-do--net_4_0--%):           profile-do--net_4_0--%:           profile-do--build--%
+$(_boot_:%=profile-do--binary_reference_assemblies--%):           profile-do--binary_reference_assemblies--%:           profile-do--build--%
 $(_boot_:%=profile-do--net_4_5--%):           profile-do--net_4_5--%:           profile-do--build--%
 $(_boot_:%=profile-do--monodroid--%):         profile-do--monodroid--%:         profile-do--build--%
 $(_boot_:%=profile-do--monotouch--%):         profile-do--monotouch--%:         profile-do--build--%
index 8ca1e7c7fa257ad5fd1c95d5afcf1c3566940838..e6d2d0a68afacb7f7ae7b6d2aa6402fc0707c015 100644 (file)
@@ -18,7 +18,7 @@ PLATFORMS = darwin linux win32
 PROFILES = \
        basic \
        build \
-       net_4_0 \
+       binary_reference_assemblies \
        net_4_5 \
        xbuild_12 \
        xbuild_14
index e3f14d7e12ededeb594a90402056475278966fc5..563253738a2bfb1d1368cba6eb1a9823154dd39a 100644 (file)
@@ -10,7 +10,7 @@ MONOLITE_MCS = $(topdir)/class/lib/monolite/basic.exe
 
 ifdef use_monolite
 PROFILE_RUNTIME = $(with_mono_path_monolite) $(RUNTIME)
-BOOTSTRAP_MCS = $(PROFILE_RUNTIME) $(RUNTIME_FLAGS) $(MONOLITE_MCS) -sdk:2
+BOOTSTRAP_MCS = $(PROFILE_RUNTIME) $(RUNTIME_FLAGS) $(MONOLITE_MCS)
 else
 PROFILE_RUNTIME = $(EXTERNAL_RUNTIME)
 BOOTSTRAP_MCS = $(EXTERNAL_MCS)
diff --git a/mcs/build/profiles/binary_reference_assemblies.make b/mcs/build/profiles/binary_reference_assemblies.make
new file mode 100644 (file)
index 0000000..d50e674
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- makefile -*-
+
+profile-check:
+       @:
+
+NO_BUILD = yes
+NO_TEST = yes
index 75611d8cda4d649e058bd4b1b7b45d0e42eb5931..06152882087240536a8400ae665187040d5357fe 100644 (file)
@@ -17,7 +17,7 @@ PROFILE_MCS_FLAGS = \
        -d:NET_1_1 \
        -d:NET_2_0 \
        -d:NET_2_1 \
-       -d:MOBILE \
+       -d:MOBILE,MOBILE_LEGACY \
        -d:MOBILE_DYNAMIC \
        -d:NET_3_5 \
        -d:NET_4_0 \
index 2fef29aa96fa90d710635c67579bc0d2dff22e9d..6b029ae04addccb7c216cfd5b7579c7d82d0b1b5 100644 (file)
@@ -22,7 +22,7 @@ PROFILE_MCS_FLAGS = \
        -d:NET_4_5 \
        -d:MONO \
        -d:DISABLE_CAS_USE \
-       -d:MOBILE \
+       -d:MOBILE,MOBILE_STATIC,MOBILE_LEGACY \
        -d:FULL_AOT_RUNTIME \
        -d:DISABLE_REMOTING \
        -d:DISABLE_COM \
index 28698ca63d60e12ef05cb049a0a42d237871acc1..4471a3f6a3e43e54aa00ccc24c4662de6511bb10 100644 (file)
@@ -22,7 +22,7 @@ PROFILE_MCS_FLAGS = \
        -d:NET_4_5 \
        -d:MONO \
        -d:DISABLE_CAS_USE \
-       -d:MOBILE \
+       -d:MOBILE,MOBILE_LEGACY \
        -d:MOBILE_DYNAMIC \
        -d:MONODROID \
        -d:ANDROID \
index c60d9398ffa190805439342211e43aae899fa056..5edd15f54b73e4c1bd9050ddc7bd7aa4bd3128f5 100644 (file)
@@ -20,7 +20,7 @@ PROFILE_MCS_FLAGS = \
        -d:NET_3_5 \
        -d:NET_4_0 \
        -d:NET_4_5 \
-       -d:MOBILE \
+       -d:MOBILE,MOBILE_LEGACY \
        -d:MONO \
        -d:DISABLE_CAS_USE \
        -d:MONOTOUCH \
index 59c7df4c31cd4366c9a4f6d65807c6056643938c..b85e0f52f52bbd6be85f0a6f626bbf3c1b7eaa93 100644 (file)
@@ -14,7 +14,7 @@ profile-check:
        @:
 
 DEFAULT_REFERENCES = -r:mscorlib.dll
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE  -d:MOBILE -d:MONOTOUCH -D:DISABLE_REMOTING -d:DISABLE_COM -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE  -d:MOBILE,MOBILE_LEGACY -d:MONOTOUCH -D:DISABLE_REMOTING -d:DISABLE_COM -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
 
 FRAMEWORK_VERSION = 2.1
 
diff --git a/mcs/build/profiles/net_4_0.make b/mcs/build/profiles/net_4_0.make
deleted file mode 100644 (file)
index 83e22c4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- makefile -*-
-
-profile-check:
-       @:
-
-FRAMEWORK_VERSION = 4.0
-XBUILD_VERSION = 4.0
-
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
-
-NO_BUILD = yes
-NO_TEST = yes
index a576ba602dbff7e642312899cdcacb52ee3a3d13..66a9e9ca594f7037018747104cb848327534bc39 100644 (file)
@@ -85,6 +85,7 @@ endif
 run-test-lib: test-local
        ok=:; \
        PATH="$(TEST_RUNTIME_WRAPPERS_PATH):$(PATH)" MONO_REGISTRY_PATH="$(HOME)/.mono/registry" MONO_TESTS_IN_PROGRESS="yes" $(TEST_RUNTIME) $(RUNTIME_FLAGS) $(TEST_HARNESS) $(test_assemblies) -noshadow $(TEST_HARNESS_FLAGS) $(LOCAL_TEST_HARNESS_FLAGS) $(TEST_HARNESS_EXCLUDES) $(TEST_HARNESS_OUTPUT) -xml=TestResult-$(PROFILE).xml $(FIXTURE_ARG) $(TESTNAME_ARG)|| ok=false; \
+       if [ ! -f "TestResult-$(PROFILE).xml" ]; then echo "<?xml version='1.0' encoding='utf8'?><test-results failures='1' total='1' not-run='0' name='bcl-tests' date='$$(date +%F)' time='$$(date +%T)'><test-suite name='$(strip $(test_assemblies))' success='False' time='0'><results><test-case name='crash' executed='True' success='False' time='0'><failure><message>The test runner didn't produce a test result XML, probably due to a crash of the runtime. Check the log for more details.</message><stack-trace></stack-trace></failure></test-case></results></test-suite></test-results>" > TestResult-$(PROFILE).xml; fi; \
        $(TEST_HARNESS_POSTPROC) ; $$ok
 
 ## Instructs compiler to compile to target .net execution, it can be usefull in rare cases when runtime detection is not possible
index 3fb4b16a43528bc50955432f52eb232e5a016e8d..a088678a7fb96c382503db951a7ce8a31e7bc692 100644 (file)
 //[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceMode))]
 //[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CustomQueryInterfaceResult))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultCharSetAttribute))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute))]
 //[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispatchWrapper))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispIdAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportAttribute))]
-//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportSearchPath))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DllImportSearchPath))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandle))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GCHandleType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GuidAttribute))]
index bddf0290938f76d87ba58677d54a5ca82c54c667..ce518bdd3a3eaf63958f8bfe75f554542412d9ea 100644 (file)
@@ -118,11 +118,14 @@ net_4_5_dirs := \
        IBM.Data.DB2                    \
        CustomMarshalers                \
        SystemWebTestShim                       \
+       System.ServiceModel.Internals   \
+       SMDiagnostics   \
        System.Runtime.Serialization    \
        System.Xml.Linq                 \
        System.Data.Linq                \
        System.Web.Abstractions         \
        System.Web.Routing              \
+       System.Runtime.DurableInstancing \
        System.IdentityModel            \
        System.IdentityModel.Selectors  \
        System.ServiceModel             \
@@ -139,7 +142,6 @@ net_4_5_dirs := \
        System.ServiceModel.Routing \
        System.ServiceModel.Discovery \
        System.Runtime.Caching \
-       System.Runtime.DurableInstancing \
        Microsoft.Web.Infrastructure \
        System.ServiceModel.Web \
        System.Net.Http \
@@ -223,7 +225,7 @@ monotouch_runtime_SUBDIRS := $(monotouch_runtime_dirs)
 mobile_static_SUBDIRS := $(mobile_static_dirs)
 mobile_SUBDIRS := $(mobile_dynamic_dirs)
 xammac_SUBDIRS := $(xammac_dirs)
-net_4_0_SUBDIRS := reference-assemblies
+binary_reference_assemblies_SUBDIRS := reference-assemblies
 net_4_5_SUBDIRS := $(net_4_5_dirs) $(xbuild_4_0_dirs)
 net_4_5_PARALLEL_SUBDIRS := $(net_4_5_parallel_dirs) aot-compiler
 xbuild_12_SUBDIRS := $(xbuild_4_0_dirs)
index 9c1d478eb180fa0e5ef3be87c4ffc32cd96388b5..bf14075f7ff0dd040cf264e7dca6a96a9c4300fd 100644 (file)
@@ -256,9 +256,8 @@ namespace Microsoft.Build.Tasks {
                {
                        PackageAssemblyInfo pkg = null;
 
-                       if (specific_version) {
-                               pkg = PcCache.GetAssemblyLocation (reference.ItemSpec);
-                       } else {
+                       pkg = PcCache.GetAssemblyLocation (reference.ItemSpec);
+                       if (pkg == null && !specific_version) {
                                // if not specific version, then just match simple name
                                string name = reference.ItemSpec;
                                if (name.IndexOf (',') > 0)
index bc3a5fbd15e28492432797d72828bc09af43db7f..cf56b148f117e2427363568d8a2be911ea64e807 100644 (file)
@@ -73,6 +73,8 @@ namespace Microsoft.Build.Tasks {
                        commandLine.AppendSwitchIfNotNull ("/main:", MainEntryPoint);
 
                        // NoStandardLib
+                       if (Bag ["NoStandardLib"] != null && NoStandardLib)
+                               commandLine.AppendSwitch ("/nostdlib");
                        
                        if (NoWarnings)
                                commandLine.AppendSwitch ("/nowarn");
@@ -91,6 +93,12 @@ namespace Microsoft.Build.Tasks {
                                else
                                        commandLine.AppendSwitch ("/optionstrict-");
 
+                       if (Bag ["OptionInfer"] != null)
+                               if (OptionInfer)
+                                       commandLine.AppendSwitch ("/optioninfer+");
+                               else
+                                       commandLine.AppendSwitch ("/optioninfer-");
+
                        // OptionStrictType
                        
                        // Platform
@@ -114,6 +122,9 @@ namespace Microsoft.Build.Tasks {
                        commandLine.AppendSwitchIfNotNull ("/sdkpath:", SdkPath);
 
                        // TargetCompactFramework
+
+                       if (String.Compare (VBRuntime, "Embed", StringComparison.OrdinalIgnoreCase) == 0) 
+                               commandLine.AppendSwitch ("/vbruntime*");
                        
                        // Verbosity
 
@@ -272,6 +283,12 @@ namespace Microsoft.Build.Tasks {
                        get { return (string) Bag ["OptionStrictType"]; }
                        set { Bag ["OptionStrictType"] = value; }
                }
+
+               [MonoTODO]
+               public bool OptionInfer {
+                       get { return GetBoolParameterWithDefault ("OptionInfer", false); }
+                       set { Bag ["OptionInfer"] = value; }
+               }
                
                [MonoTODO]
                public string Platform {
@@ -316,6 +333,12 @@ namespace Microsoft.Build.Tasks {
                        set { Bag ["UseHostCompilerIfAvailable"] = value; }
                }
 
+               [MonoTODO]
+               public string VBRuntime {
+                       get { return (string) Bag ["VBRuntime"]; }
+                       set { Bag ["VBRuntime"] = value; }
+               }
+
                [MonoTODO]
                public string Verbosity {
                        get { return (string) Bag ["Verbosity"]; }
index ea1e146a0d8590ce15f7796bad5b277aa5c57ee2..bd3c641856d7cd133f9488a37de707a989fff58c 100644 (file)
@@ -112,7 +112,6 @@ namespace Microsoft.Build.Execution
                                throw new InvalidOperationException ("Build has not started");
                        if (submissions.Count > 0)
                                WaitHandle.WaitAll (submissions.Select (s => s.WaitHandle).ToArray ());
-                       BuildNodeManager.Stop ();
                        ongoing_build_parameters = null;
                }
                
index 580c8dd85fa890b14ecd68d30a0f75260dd644a5..5cb0ae8a4ce2ab27e74207542e28e31427e4efe8 100644 (file)
@@ -932,6 +932,11 @@ namespace Mono.Data.Tds.Protocol
                                        element = new Guid (guidBytes);
                                }
                                break;
+                       case TdsColumnType.Variant :
+                               if (outParam)
+                                       comm.Skip (4);
+                               element = GetVariantValue();
+                               break;
                        default :
                                return DBNull.Value;
                        }
@@ -956,6 +961,40 @@ namespace Mono.Data.Tds.Protocol
                        return result;
                }
 
+               private object GetVariantValue ()
+               {
+                       uint len = (uint)comm.GetTdsInt ();
+                       if (len == 0)
+                               return DBNull.Value;
+
+                       // VARIANT_BASETYPE
+                       TdsColumnType colType = (TdsColumnType)comm.GetByte ();
+                       // VARIANT_PROPBYTES
+                       byte propbytes = comm.GetByte ();
+                       if (propbytes != 0)
+                               // VARIANT_PROPERTIES
+                               comm.Skip (propbytes);
+
+                       len -= (uint)propbytes + 2;
+
+                       switch (colType)
+                       {
+                       case TdsColumnType.Int1 :
+                       case TdsColumnType.Int2 :
+                       case TdsColumnType.Int4 :
+                       case TdsColumnType.BigInt :
+                               return GetIntValue (colType);
+                       default:
+                               // The old code was ignoring variants
+                               // and returning null.  Should we
+                               // throw an exception?
+                               comm.Skip (len);
+                               break;
+                       }
+
+                       return DBNull.Value;
+               }
+
                private object GetDateTimeValue (
                        TdsColumnType? type
                )
@@ -1291,7 +1330,7 @@ namespace Mono.Data.Tds.Protocol
                
                internal bool IsBlobType (TdsColumnType columnType)
                {
-                       return (columnType == TdsColumnType.Text || columnType == TdsColumnType.Image || columnType == TdsColumnType.NText);
+                       return (columnType == TdsColumnType.Text || columnType == TdsColumnType.Image || columnType == TdsColumnType.NText || columnType == TdsColumnType.Variant);
                }
 
                internal bool IsLargeType (TdsColumnType columnType)
index 5421004906785cb63f945e77102930fd436ac1c0..725248a8fc06fac676c14e34288ccaa2c06e402a 100644 (file)
@@ -586,6 +586,13 @@ namespace Mono.Data.Tds.Protocol
                        } else if (colType == TdsColumnType.BigVarBinary) {
                                if (size > 8000)
                                        colType = TdsColumnType.Image;
+                       } else if (colType == TdsColumnType.DateTime2 ||
+                                  colType == TdsColumnType.DateTimeOffset) {
+                               // HACK: Wire-level DateTime{2,Offset}
+                               // require TDS 7.3, which this driver
+                               // does not implement correctly--so we
+                               // serialize to ASCII instead.
+                               colType = TdsColumnType.Char;
                        }
                        // Calculation of TypeInfo field
                        /* 
@@ -715,6 +722,8 @@ namespace Mono.Data.Tds.Protocol
                                case "nchar" :
                                case "text" :
                                case "ntext" :
+                               case "datetime2":
+                               case "datetimeoffset":
                                        byte [] tmp = param.GetBytes ();
                                        Comm.Append (tmp);
                                        break;
index af3f22716476d12b229123e01bed344cbe84436a..bc1f7fb0ba1742b6aae35d315d7c9bd4786f18df 100644 (file)
@@ -35,6 +35,8 @@ namespace Mono.Data.Tds.Protocol {
                Char = 0x2f,            // SYBCHAR
                DateTime = 0x3d,        // SYBDATETIME
                DateTime4 = 0x3a,       // SYBDATETIME4
+               DateTime2 = 0x2a,       // SYBMSDATETIME2
+               DateTimeOffset = 0x2b,  // SYBMSDATETIMEOFFSET
                DateTimeN = 0x6f,       // SYBDATETIMN
                Decimal = 0x6a,         // SYBDECIMAL
                Real = 0x3b,            // SYBREAL
index af8d39044526e94a604bf0b49b3982e41eb9511a..3892035220ce24f61a90e9f1c0c7a632f7936e73 100644 (file)
@@ -219,6 +219,9 @@ namespace Mono.Data.Tds.Protocol {
                        case TypeCode.Object :
                                if (o is byte[])
                                        Append ((byte[]) o);
+                               else if (o is Guid)
+                                       Append (((Guid) o).ToByteArray ());
+                               else break;
                                return;
                        case TypeCode.Int16 :
                                Append ((short) o);
index d8a4b34fb133a8a12c1b7a7342ade66dce57918a..e00b9e4e236d853db25863eae6eaf25bfab1b787 100644 (file)
@@ -287,18 +287,31 @@ namespace Mono.Data.Tds {
                internal string Prepare ()
                {
                        string typeName = TypeName;
-                       
-                       if (typeName == "varbinary") {
-                               int size = Size;
+                       // Cf. GetDateTimeString
+                       TdsColumnType actualType = TdsColumnType.Char;
+                       int size;
+
+                       switch (typeName) {
+                       case "varbinary":
+                               size = Size;
                                if (size <= 0) {
                                        size = GetActualSize ();
                                }
-                               
+
                                if (size > 8000) {
                                        typeName = "varbinary(max)";
                                }
+                               break;
+                       case "datetime2":
+                               actualType = TdsColumnType.DateTime2;
+                               typeName = "char";
+                               break;
+                       case "datetimeoffset":
+                               actualType = TdsColumnType.DateTimeOffset;
+                               typeName = "char";
+                               break;
                        }
-                       
+
                        string includeAt = "@";
                        if (ParameterName [0] == '@')
                                includeAt = "";
@@ -313,7 +326,7 @@ namespace Mono.Data.Tds {
                        case "varchar":
                        case "varbinary":
                                //A size of 0 is not allowed in declarations.
-                               int size = Size;
+                               size = Size;
                                if (size <= 0) {
                                        size = GetActualSize ();
                                        if (size <= 0)
@@ -326,6 +339,14 @@ namespace Mono.Data.Tds {
                                result.Append (paramSize > 0 ? (paramSize > 4000 ? "(max)" : String.Format ("({0})", paramSize)) : "(4000)");
                                break;
                        case "char":
+                               size = -1;
+                               if (actualType != TdsColumnType.Char)
+                                       size = GetDateTimeStringLength (actualType);
+                               else if (isSizeSet)
+                                       size = Size;
+                               if (size > 0)
+                                       result.Append (String.Format ("({0})", size));
+                               break;
                        case "nchar":
                        case "binary":
                                if (isSizeSet && Size > 0)
@@ -366,6 +387,10 @@ namespace Mono.Data.Tds {
                        case "float":
                        case "money":
                                return 8;
+                       case "datetime2":
+                               return GetDateTimeStringLength (TdsColumnType.DateTime2);
+                       case "datetimeoffset":
+                               return GetDateTimeStringLength (TdsColumnType.DateTimeOffset);
                        case "int":
                        case "real":
                        case "smalldatetime":
@@ -386,6 +411,53 @@ namespace Mono.Data.Tds {
                        return size;
                }
 
+               private int GetDateTimePrecision ()
+               {
+                       int precision = Precision;
+
+                       // http://msdn.microsoft.com/en-us/library/bb677335.aspx
+                       // says that default precision is 7.  How do
+                       // we distinguish that from zero?
+                       if (precision == 0 || precision > 7)
+                               precision = 7;
+
+                       return precision;
+               }
+
+               private int GetDateTimeStringLength (TdsColumnType type)
+               {
+                       int precision = GetDateTimePrecision ();
+                       int len = precision == 0 ? 19 : 20 + precision;
+
+                       if (type == TdsColumnType.DateTimeOffset)
+                               len += 6;
+
+                       return len;
+               }
+
+               // HACK: Wire-level DateTime{2,Offset} require TDS
+               // 7.3, which this driver does not implement
+               // correctly--so we serialize to ASCII instead.
+               private string GetDateTimeString (TdsColumnType type)
+               {
+                       int precision = GetDateTimePrecision ();
+                       string fmt = "yyyy-MM-dd'T'HH':'mm':'ss";
+
+                       if (precision > 0)
+                               fmt += ".fffffff".Substring(0, precision + 1);
+
+                       switch (type) {
+                       case TdsColumnType.DateTime2:
+                               DateTime dt = (DateTime)Value;
+                               return dt.ToString(fmt);
+                       case TdsColumnType.DateTimeOffset:
+                               DateTimeOffset dto = (DateTimeOffset)Value;
+                               return dto.ToString(fmt + "zzz");
+                       }
+
+                       throw new ApplicationException("Should be unreachable");
+               }
+
                internal byte[] GetBytes ()
                {
                        byte[] result = {};
@@ -403,6 +475,10 @@ namespace Mono.Data.Tds {
                                case "char" :
                                case "text" :
                                        return Encoding.Default.GetBytes ((string)Value);
+                               case "datetime2":
+                                       return Encoding.Default.GetBytes (GetDateTimeString (TdsColumnType.DateTime2));
+                               case "datetimeoffset":
+                                       return Encoding.Default.GetBytes (GetDateTimeString (TdsColumnType.DateTimeOffset));
                                default :
                                        return ((byte[]) Value);
                        }
@@ -441,6 +517,10 @@ namespace Mono.Data.Tds {
                                if (IsNullable)
                                        return TdsColumnType.DateTimeN;
                                return TdsColumnType.DateTime4;
+                       case "datetime2":
+                               return TdsColumnType.DateTime2;
+                       case "datetimeoffset":
+                               return TdsColumnType.DateTimeOffset;
                        case "float":
                                if (IsNullable)
                                        return TdsColumnType.FloatN ;
@@ -480,6 +560,8 @@ namespace Mono.Data.Tds {
                                return TdsColumnType.BigVarBinary;
                        case "varchar":
                                return TdsColumnType.BigVarChar;
+                       case "sql_variant":
+                               return TdsColumnType.Variant;
                        default:
                                throw new NotSupportedException ("Unknown Type : " + TypeName);
                        }
index 0fd21ab5a93e47bb56286dff21edd86d17171242..0519d9ed412a00488dc334450ad3a41f4eec883e 100644 (file)
@@ -678,7 +678,9 @@ namespace Mono.Options
                        get {return this.option;}
                }
 
+#pragma warning disable 618 // SecurityPermissionAttribute is obsolete
                [SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)]
+#pragma warning restore 618
                public override void GetObjectData (SerializationInfo info, StreamingContext context)
                {
                        base.GetObjectData (info, context);
index ca6c2b16c8ab574d727993bffc302c43de8646b4..78cda036a91de106a1427240c2534240bf148dd9 100644 (file)
@@ -154,7 +154,7 @@ namespace Mono.Security.Cryptography {
                                throw new ArgumentOutOfRangeException ("inputCount", "< 0");
                        // ordered to avoid possible integer overflow
                        if (inputOffset > inputBuffer.Length - inputCount)
-                               throw new ArgumentException ("inputBuffer", Locale.GetText ("Overflow"));
+                               throw new ArgumentException (Locale.GetText ("Overflow"), "inputBuffer");
                }
 
                public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) 
@@ -167,7 +167,7 @@ namespace Mono.Security.Cryptography {
                                throw new ArgumentOutOfRangeException ("outputOffset", "< 0");
                        // ordered to avoid possible integer overflow
                        if (outputOffset > outputBuffer.Length - inputCount)
-                               throw new ArgumentException ("outputBuffer", Locale.GetText ("Overflow"));
+                               throw new ArgumentException (Locale.GetText ("Overflow"), "outputBuffer");
 
                        return InternalTransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
                }
index 5d798ac5d22188b21bbd7d9c6aae6bbe7e1cf1ec..7240fa548094b57bcb9c7068fc616ff4423ef8d0 100644 (file)
@@ -145,7 +145,10 @@ namespace Mono.Security.Cryptography {
                // overrides from RSA class
 
                public override int KeySize {
-                       get { 
+                       get {
+                               if (m_disposed)
+                                       throw new ObjectDisposedException (Locale.GetText ("Keypair was disposed"));
+                               
                                // in case keypair hasn't been (yet) generated
                                if (keypairGenerated) {
                                        int ks = n.BitCount ();
index e09562896100a9bb3eba0d9bf5e6b412fecc7799..685d7f5ff1a7afbaedc612986c6fe129f7853f61 100644 (file)
@@ -15,12 +15,4 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES = 
 
-VALID_PROFILE := $(filter net_4_5 monotouch monodroid, $(PROFILE))
-ifndef VALID_PROFILE
-LIBRARY_NAME = dummy-SMDiagnostics.dll
-NO_INSTALL = yes
-NO_SIGN_ASSEMBLY = yes
-NO_TEST = yes
-endif
-
 include ../../build/library.make
index b524628818315e9f9c72365fe5bd97bded236e2c..0f6490c42bea02234414342a70e3c746d8615bc0 100644 (file)
@@ -4,7 +4,7 @@ include ../../build/rules.make
 
 LIBRARY = System.ComponentModel.DataAnnotations.dll
 LIB_REFS = System System.Core System.Data System.Xml
-LIB_MCS_FLAGS =
+LIB_MCS_FLAGS = -nowarn:414
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
index df43b5ed4b0ea1c6086e902041c4ebaa903608b2..9bcea0403eb9d96f2ab0f339913116102381996e 100644 (file)
@@ -1,6 +1,4 @@
 ../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
 Assembly/AssemblyInfo.cs
 ../../../external/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AssociatedMetadataTypeTypeDescriptionProvider.cs
 ../../../external/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AssociatedMetadataTypeTypeDescriptor.cs
index 26520536f945aaf20cbf2b9b7deb3447f311c4e7..11934cb345783d9e9205e7e61776f19f85630cb6 100644 (file)
@@ -1 +1,11 @@
 y.output
+gen_OleDbConnection.cs
+gen_OleDbParameter.cs
+gen_OleDbParameterCollection.cs
+gen_OdbcConnection.cs
+gen_OdbcParameter.cs
+gen_OdbcParameterCollection.cs
+gen_SqlConnection.cs
+gen_SqlParameter.cs
+gen_SqlParameterCollection.cs
+
index 65930ef17203b2116140f052dc7cb0f761705d22..55252a3c447e72929a69a6ec485f9675554d4d8a 100644 (file)
@@ -61,7 +61,6 @@ using System.Runtime.InteropServices;
        [assembly: AssemblyKeyFile("../ecma.pub")]
 
 [assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-[assembly: ComCompatibleVersion (1, 0, 3300, 0)]
 [assembly: InternalsVisibleTo ("System.Data.DataSetExtensions, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull)]
 [assembly: InternalsVisibleTo ("System.Design, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
 [assembly: InternalsVisibleTo ("System.Web, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
index 1605d1c45e04152e144ebf0e916cbc384cd2bc38..1738b756aade896853fc37a77d5b7824f3ab8a93 100644 (file)
@@ -41,7 +41,6 @@ EXTRA_DISTFILES = \
        $(wildcard Test/System.Xml/*.xsd)               \
        Test/System.Data/schemas/ChangeLog      \
        $(wildcard Test/System.Data/schemas/*.xsd)              \
-       Mono.Data.SqlExpressions/Parser.jay     \
        app_test_net_2_0.config                 \
        app_test_net_4_5.config                 \
        Test/System.Data/binserialize/*.bin     \
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/.gitignore b/mcs/class/System.Data/Mono.Data.SqlExpressions/.gitignore
deleted file mode 100644 (file)
index ac16218..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/Parser.cs
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Aggregation.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Aggregation.cs
deleted file mode 100644 (file)
index 5f27a84..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// Aggregation.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal enum AggregationFunction {
-               Count, Sum, Min, Max, Avg, StDev, Var
-       }
-
-       internal class Aggregation : BaseExpression {
-               bool cacheResults;
-               DataRow[] rows;
-               ColumnReference column;
-               AggregationFunction function;
-               int count;
-               IConvertible result;
-               DataRowChangeEventHandler RowChangeHandler;
-               DataTable table ;
-
-               public Aggregation (bool cacheResults, DataRow[] rows, AggregationFunction function, ColumnReference column)
-               {
-                       this.cacheResults = cacheResults;
-                       this.rows = rows;
-                       this.column = column;
-                       this.function = function;
-                       this.result = null;
-                       if (cacheResults)
-                               RowChangeHandler = new DataRowChangeEventHandler (InvalidateCache);
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is Aggregation))
-                               return false;
-
-                       Aggregation other = (Aggregation) obj;
-                       if (!other.function.Equals( function))
-                               return false;
-
-                       if (!other.column.Equals (column))
-                               return false;           
-
-                       if (other.rows != null && rows != null) {
-                       if (other.rows.Length != rows.Length)
-                               return false;
-
-                       for (int i=0; i < rows.Length; i++)
-                               if (other.rows [i] != rows [i])
-                                       return false;
-
-                       }
-                       else if (!(other.rows == null && rows == null))
-                               return false;
-               
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       int hashCode = base.GetHashCode ();
-                       hashCode ^= function.GetHashCode ();
-                       hashCode ^= column.GetHashCode ();
-                       for (int i=0; i < rows.Length; i++)
-                               hashCode ^= rows [i].GetHashCode ();
-                       
-                       return hashCode;
-               }
-               
-       
-               public override object Eval (DataRow row)
-               {
-                       //TODO: implement a better caching strategy and a mechanism for cache invalidation.
-                       //for now only aggregation over the table owning 'row' (e.g. 'sum(parts)'
-                       //in constrast to 'sum(child.parts)') is cached.
-                       if (cacheResults && result != null && column.ReferencedTable == ReferencedTable.Self)
-                               return result;
-                               
-                       count = 0;
-                       result = null;
-                       
-                       object[] values;
-                       if (rows == null)
-                               values = column.GetValues (column.GetReferencedRows (row));
-                       else
-                               values = column.GetValues (rows);
-                       
-                       foreach (object val in values) {
-                               if (val == null)
-                                       continue;
-                                       
-                               count++;
-                               Aggregate ((IConvertible)val);
-                       }
-
-                       switch (function) {
-                       case AggregationFunction.StDev:
-                       case AggregationFunction.Var:
-                               result = CalcStatisticalFunction (values);
-                               break;
-                                       
-                       case AggregationFunction.Avg:
-                               result = ((count == 0) ? DBNull.Value : Numeric.Divide (result, count));
-                               break;
-                       
-                       case AggregationFunction.Count:
-                               result = count;
-                               break;
-                       }
-                       
-                       if (result == null)
-                               result = DBNull.Value;
-                       
-                       if (cacheResults && column.ReferencedTable == ReferencedTable.Self) 
-                       {
-                               table = row.Table;
-                               row.Table.RowChanged += RowChangeHandler;
-                       }       
-                       return result;
-               }
-
-               override public bool DependsOn(DataColumn other)
-               {
-                       return column.DependsOn(other);
-               }
-               
-               private void Aggregate (IConvertible val)
-               {
-                       switch (function) {
-                       case AggregationFunction.Min:
-                               result = (result != null ? Numeric.Min (result, val) : val);
-                               return;
-                       
-                       case AggregationFunction.Max:
-                               result = (result != null ? Numeric.Max (result, val) : val);
-                               return;
-
-                       case AggregationFunction.Sum:
-                       case AggregationFunction.Avg:
-                       case AggregationFunction.StDev:
-                       case AggregationFunction.Var:
-                               result = (result != null ? Numeric.Add (result, val) : val);
-                               return;
-                       }
-               }
-               
-               private IConvertible CalcStatisticalFunction (object[] values)
-               {
-                       if (count < 2)
-                               return DBNull.Value;
-
-                       double average = (double)Convert.ChangeType(result, TypeCode.Double) / count;
-                       double res = 0.0;
-                                               
-                       foreach (object val in values) {
-                               if (val == null)
-                                       continue;
-                                       
-                               double diff = average - (double)Convert.ChangeType(val, TypeCode.Double);
-                               res += System.Math.Pow (diff, 2);
-                       }
-                       res /= (count - 1);
-                       
-                       if (function == AggregationFunction.StDev)
-                               res = System.Math.Sqrt (res);
-
-                       return res;
-               }
-
-               public override void ResetExpression ()
-               {
-                       if (table != null)
-                               InvalidateCache (table, null);
-               }
-
-               private void InvalidateCache (Object sender, DataRowChangeEventArgs args)
-               {
-                       result = null; 
-                       ((DataTable)sender).RowChanged -= RowChangeHandler;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/ArithmeticExpressions.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/ArithmeticExpressions.cs
deleted file mode 100644 (file)
index dc4e084..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// ArithmeticExpressions.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Negative : UnaryExpression {
-               public Negative (IExpression e) : base (e) {}
-       
-               override public object Eval (DataRow row)
-               {
-                       return Numeric.Negative ((IConvertible)expr.Eval (row));
-               }
-       }
-       
-       internal class ArithmeticOperation : BinaryOpExpression {
-               public ArithmeticOperation (Operation op, IExpression e1, IExpression e2) : base (op, e1, e2) {}
-       
-               override public object Eval (DataRow row)
-               {
-                       object obj1 = expr1.Eval (row);
-                       if (obj1 == DBNull.Value || obj1 == null)
-                               return obj1;
-                       object obj2 = expr2.Eval (row);
-                       if (obj2 == DBNull.Value || obj2 == null)
-                               return obj2;
-               
-                       if (op == Operation.ADD && (obj1 is string || obj2 is string))
-                               return obj1.ToString () + obj2.ToString ();
-               
-                       IConvertible o1 = (IConvertible)obj1;
-                       IConvertible o2 = (IConvertible)obj2;
-                       
-                       switch (op) {
-                       case Operation.ADD:
-                               return Numeric.Add (o1, o2);
-                       case Operation.SUB:
-                               return Numeric.Subtract (o1, o2);
-                       case Operation.MUL:
-                               return Numeric.Multiply (o1, o2);
-                       case Operation.DIV:
-                               return Numeric.Divide (o1, o2);
-                       case Operation.MOD:
-                               return Numeric.Modulo (o1, o2);
-                       default:
-                               return 0;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/BooleanExpressions.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/BooleanExpressions.cs
deleted file mode 100644 (file)
index 04f05c0..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// BooleanExpressions.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Negation : UnaryExpression {
-               public Negation (IExpression e) : base (e) {}
-       
-               override public object Eval (DataRow row)
-               {
-                       object o = expr.Eval (row);
-                       if (o == DBNull.Value)
-                               return o;
-                       return !((bool)o);
-               }
-
-               override public bool EvalBoolean (DataRow row)
-               {
-                       return !expr.EvalBoolean (row);
-               }
-       }
-       
-       internal class BoolOperation : BinaryOpExpression {
-               public BoolOperation (Operation op, IExpression e1, IExpression e2) : base (op, e1, e2) {}
-       
-               override public object Eval (DataRow row)
-               {
-                       return EvalBoolean (row);
-               }
-
-               override public bool EvalBoolean (DataRow row)
-               {
-                       if (op == Operation.OR)
-                               return (expr1.EvalBoolean (row)) || (expr2.EvalBoolean (row));
-                       if (op == Operation.AND)
-                               return (expr1.EvalBoolean (row)) && (expr2.EvalBoolean (row));
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog b/mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog
deleted file mode 100644 (file)
index 55aca6a..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-2009-10-28  Marek Habersack  <mhabersack@novell.com>
-
-       * Tokenizer.cs, Parser.jay: a work around for 3 reduce/reduce
-       conflicts (use of 'NOT LIKE' and 'NOT IN' which would previously
-       be ignored because of the conflicts). The grammar still has 6 more
-       of those - the real fix is to rewrite it.
-
-2009-07-23  Adam Wendt  <adam@awendtconsulting.com>
-
-       * Comparison.cs (Compare): Parse string if other object is DateTime
-       regardless of which side the DateTime is on.
-
-2008-08-18  Marek Habersack  <mhabersack@novell.com>
-
-       * Numeric.cs: Max/Min operations do not convert string
-       IConvertibles to double - they perform a simple string compare
-       instead.
-
-2008-01-23 Konstantin Triger <kostat@mainsoft.com>
-
-       * Like.cs: when rh expresssion is null or DBNull always return false.
-
-2007-12-24 Konstantin Triger <kostat@mainsoft.com>
-
-       * Parser.jay, StringFunctions.cs, Like.cs: add support for string concat.
-
-2007-07-26  Nagappan A  <anagappan@novell.com>
-
-       * Comparison.cs (Compare): Should always parse the object of type
-       DateTime in InvariantCulture CultureInfo, Fixes Bug # 82109.
-
-2007-06-06  Nagappan A  <anagappan@novell.com>
-
-       * ColumnReference.cs (Unify): Return object as it is, if object
-       type is char. Fixes bug # 81625.
-
-       * Numeric.cs (IsNumeric): Return false if object type is
-       char. Fixes bug # 81625.
-
-2007-02-23  Nagappan A  <anagappan@novell.com>
-
-       * Comparison.cs (Compare): Extra space characters issue when using
-       System.Data.DataTable.Select. Fixes bug # 79695.
-
-2006-12-07  Nagappan A  <anagappan@novell.com>
-
-       * Parser.jay (ColumnName): Fix Invalid DataColumn Expression, bug
-       # 80169.
-
-2006-06-15  Senganal T  <tsenganal@novell.com>
-
-       * Expression.cs : 
-               - EvalBoolean : throw EvaluateException unless overridden.
-               - UnaryExpression.EvalBoolean : override EvalBoolean
-       * Like.cs, In.cs, ColumnReference.cs : override EvalBoolean 
-
-2006-06-09  Juraj Skripsky <js@hotfeet.ch>
-
-       * Tokenizer.cs (ProcessEscapes): Inspect the next character, not the one
-       after that.
-
-2006-05-02  Senganal T  <tsenganal@novell.com>
-
-       * Parser.jay : fix the rule for IsNull. Fixes bug #78254
-       * Functions.cs : 
-               - IsNullFunction.Eval : If expr evaluates to null or DBNull.Value, return the
-               default expression value.
-
-2006-03-27     Boris Kirzner <borisk@mainsoft.com>
-       * Aggregation.cs: fix possible NullReferenceException.
-
-2006-02-03  Senganal T  <tsenganal@novell.com>
-       
-       * ColumnReference.cs : 
-               - GetReferencedRow () 
-               - GetReferencedRows() : Verify the column before getting the values.
-                       Validate the ColumnReference even when the table has no rows.
-       * Function.cs : Modified Eval()
-               - A tmp fix to check for null. Expression.Eval needs to be modified all
-               around to return DBNull.Value.
-
-2006-01-18 Boris Kirzner <borisk@mainsoft.com>
-       * ColumnReference.cs: added column and relation lazy evaluation 
-       and caching.
-
-2006-01-09 Senganal T <tsenganal@novell.com>
-       * Aggregation.cs
-       * Expression.cs
-               - resolving a name clash in IExpression 
-
-2006-01-06 Senganal T <tsenganal@novell.com>
-
-       * Aggregation.cs
-               - a correction to the previous check-in
-
-2006-01-06 Senganal T <tsenganal@novell.com>
-
-       * Aggregation.cs
-               - Modified the cache to listen for RowChangedEvents.
-       * Expression.cs
-       * IExpression.cs
-               - Added a Reset Method to cleanup when a Datacolumn is removed
-               from a table.
-       * Parser.jay
-               - Modified to check :
-               1.Aggregate Functions : Only for columns returning multiple values (child/local)
-               2.Other Numeric/Functions : Only for columns that return single value (parent/local)
-
-2005-12-20 Senganal T <tsenganal@novell.com>
-
-       * Aggregation.cs :
-               Modified the Eval and CalculateStatisticalFunction to add boundary checks.
-               Fixes #77025.
-
-2005-11-30 Konstantin Triger <kostat@mainsoft.com>
-
-       * Parser.jay: use Convert.ToInt32() instead of cast to throw OverflowException.
-
-2005-10-26 Konstantin Triger <kostat@mainsoft.com>
-
-       * In.cs: Fix the enumerator initialization problem.
-
-2005-10-21 Senganal T <tsenganal@novell.com>
-
-       * Numeric.cs :
-               - Modified the Max and Min functions to convert strings(numeric) to
-               double. Fixes bug #76213. 
-       
-2005-09-19 Boris Kirzner <borisk@mainsoft.com>
-       * ColumnReference.cs, Expressions.cs, Like.cs, Aggregation.cs, Literal.cs,
-       StringFunctions.cs, In.cs, Functions.cs : implemented Equals() 
-       and GetHashCode() methods for all Mono.Data.SqlExpressions classes,enabling
-       comparison of the filter expressions.
-
-2005-08-02  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * Tokenizer.cs: ReadString (): added an overload where the
-       terminator can be escaped by repeating twice.
-
-2005-06-29  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * ArithmeticExpressions.cs: Eval :if any one of the argument is
-       null for an operator, the result is also NULL.
-
-2005-05-02 Konstantin Triger <kostat@mainsoft.com>
-
-        * IExpression interface: Added DependsOn(DataColumn) method, which checks whether the Expression contains a specific column
-
-2005-04-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * Tokenizer.cs: make it not rely in exceptions being thrown to know that
-       the array is entirely processed.
-
-2005-02-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Comparison.cs : allow comparison between guid and string.
-       * ColumnReference.cs : return guid value too. Fixed bug #72426.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Comparison.cs : Eval() could be direct invocation to EvalBoolean().
-
-2005-01-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Tokenizer.cs : just throw SyntaxErrorException instead of Exception.
-
-2005-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Expression.cs, ColumnReference.cs, BooleanExpression.cs,
-         Aggregation.cs, Literal.cs : added EvalBoolean() to avoid extraneous
-         boxing in RowFilter.
-
-2005-01-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Numeric.cs : Fixed ToSameType(). It should let conversion result to
-         reference values.
-
-2005-01-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Parser.jay : let's use debug flag when MONO_DEBUG_SQLEXPRESSIONS
-         environment variable is set.
-         Fixed substring() function. C# cast does not allow implicit
-         conversion from object.
-
-2004-07-12 Umadevi S   <sumadevi@novell.com>
-        * Tokenizer.cs - read an Int64 from the text instead of Int32. Resolves
-bug 61203
-
-                                                                                
-2004-06-17  Boris Kirzner <borisk@mainsoft.com>
-        *  Comparison.cs - use 'as' to avoid NullReferenceExeption in casting.
-
-2004-05-13  Umadevi S <sumadevi@novell.com>
-        *  Literal.cs - made class internal
-
-2004-05-12  Umadevi S <sumadevi@novell.com>
-        * Expression.cs, Functions.cs, In.cs, Like.cs, Parser.jay, StringFunctions.cs - made class/enum/interfaces internal
-
-2004-05-12  Umadevi S <sumadevi@novell.com>
-        * BooleanExpression.cs,ColumnReference.cs, Comparision.cs - made class/enum internal
-
-2004-05-12  Umadevi S <sumadevi@novell.com>
-        * ArthimeticExpression.cs - made class internal
-
-2004-05012  Umadevi S <sumadevi@novell.com>
-       * Aggregation.cs - made class/enums/interfaces internal 
-
-2004-05-05  Atsushi Enomoto <atsushi@ximian.com>
-
-       * ArithmeticExpressions.cs: avoid null exception on add operation.
-
-2004-04-29  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * Parser.jay: Fix rule for negative expressions.
-       Add precedence rules for '<' and '>'.
-
-2004-04-28 Boris Kirzner <borisk@mainsoft.com>
-
-       * ColumnReference.cs : using DataRow _inExpressionEvaluation before accessing row value
-         to get an access to deleted rows also.
-
-2004-04-22  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * Parser.jay: Allow computed expressions on left-hand side of
-       "like" operator.
-       Correct ordering for "is null" rule ("NOT IS NULL" => "IS NOT NULL"). 
-
-2004-04-20  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * Tokenizer.cs (ReadNumber): Correctly consume decimal point
-       when reading numbers. Fixes bug #57251.
-
-2004-03-31  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * Parser.jay, ColumnReference.cs, Comparison.cs, Functions.cs,
-       Aggregation.cs : fix bugs exposed by DataColumnTest.cs.
-
-2004-03-29  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * Initial implementation.
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/ColumnReference.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/ColumnReference.cs
deleted file mode 100644 (file)
index 2284442..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-//
-// ColumnReference.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-using System.ComponentModel;
-
-namespace Mono.Data.SqlExpressions {
-       internal enum ReferencedTable {
-               Self,
-               Parent,
-               Child
-       }
-       
-       internal class ColumnReference : BaseExpression {
-               ReferencedTable refTable;
-               string relationName, columnName;
-               DataColumn _cachedColumn;
-               DataRelation _cachedRelation;
-
-               public ColumnReference (string columnName) : this (ReferencedTable.Self, null, columnName) {}
-
-               public ColumnReference (ReferencedTable refTable, string relationName, string columnName)
-               {
-                       this.refTable = refTable;
-                       this.relationName = relationName;
-                       this.columnName = columnName;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is ColumnReference))
-                               return false;
-
-                       ColumnReference other = (ColumnReference) obj;
-                       if (other.refTable != refTable)
-                               return false;
-
-                       if (other.columnName != columnName)
-                               return false;           
-
-                       if (other.relationName != relationName)
-                               return false;
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       int hashCode = base.GetHashCode ();
-                       hashCode ^= refTable.GetHashCode ();
-                       hashCode ^= columnName.GetHashCode ();
-                       hashCode ^= relationName.GetHashCode ();
-                       return hashCode;
-               }
-
-               public ReferencedTable ReferencedTable {
-                       get { return refTable; }
-               }
-
-               private DataRelation GetRelation (DataRow row)
-               {
-                       if (_cachedRelation == null) {
-                               DataTable table = row.Table;
-                               DataRelationCollection relations;
-                               if (relationName != null) {
-                                       relations = table.DataSet.Relations;
-                                       _cachedRelation = relations [relations.IndexOf (relationName)];
-                               }
-                               else {
-                                       if (refTable == ReferencedTable.Parent)
-                                               relations = table.ParentRelations;
-                                       else
-                                               relations = table.ChildRelations;
-                                               
-                                       if (relations.Count > 1)
-                                               throw new EvaluateException (String.Format (
-                                                       "The table [{0}] is involved in more than one relation." +
-                                                       "You must explicitly mention a relation name.",
-                                                       table.TableName));
-                                       else
-                                               _cachedRelation = relations [0];
-                               }
-                               _cachedRelation.DataSet.Relations.CollectionChanged += new CollectionChangeEventHandler (OnRelationRemoved);
-                       }
-                       return _cachedRelation;
-               }
-
-               private DataColumn GetColumn (DataRow row)
-               {
-                       if (_cachedColumn == null) {
-                               DataTable table = row.Table;
-                               switch (refTable) {
-                                       case ReferencedTable.Parent:
-                                               table = GetRelation (row).ParentTable;
-                                               break;
-                                       case ReferencedTable.Child:
-                                               table = GetRelation (row).ChildTable;
-                                               break;
-                               }
-                               _cachedColumn = table.Columns [columnName];
-                               if (_cachedColumn == null)
-                                       throw new EvaluateException (String.Format ("Cannot find column [{0}].", columnName));
-
-                               _cachedColumn.PropertyChanged += new PropertyChangedEventHandler (OnColumnPropertyChanged);
-                               _cachedColumn.Table.Columns.CollectionChanged += new CollectionChangeEventHandler (OnColumnRemoved);
-                       }
-                       return _cachedColumn;
-               }
-
-               public DataRow GetReferencedRow (DataRow row)
-               {
-                       // Verify the column reference is valid 
-                       GetColumn (row);
-
-                       switch (refTable) {
-                       case ReferencedTable.Self:
-                       default:
-                               return row;
-
-                       case ReferencedTable.Parent:
-                               return row.GetParentRow (GetRelation (row));
-
-                       case ReferencedTable.Child:
-                               return row.GetChildRows (GetRelation (row)) [0];
-                       }
-               }
-               
-               public DataRow[] GetReferencedRows (DataRow row)
-               {
-                       // Verify the column reference is valid 
-                       GetColumn (row);
-
-                       switch (refTable) {
-                       case ReferencedTable.Self:
-                       default:
-                               DataRow[] rows = row.Table.NewRowArray(row.Table.Rows.Count);
-                               row.Table.Rows.CopyTo (rows, 0);
-                               return rows;
-                               
-                       case ReferencedTable.Parent:
-                               return row.GetParentRows (GetRelation (row));
-
-                       case ReferencedTable.Child:
-                               return row.GetChildRows (GetRelation (row));
-                       }
-               }
-               
-               public object[] GetValues (DataRow[] rows)
-               {
-                       object[] values = new object [rows.Length];
-                       for (int i = 0; i < rows.Length; i++)
-                               values [i] = Unify (rows [i][GetColumn (rows [i])]);
-                               
-                       return values;
-               }
-
-               private object Unify (object val) {
-                       if (Numeric.IsNumeric (val))
-                               return Numeric.Unify ((IConvertible)val);
-                               
-                       if (val == null || val == DBNull.Value)
-                               return null;
-                               
-                       if (val is bool || val is string || val is DateTime || val is Guid || val is char)
-                               return val;
-                       
-                       if (val is Enum)
-                               return (int)val;
-                       
-                       throw new EvaluateException (String.Format ("Cannot handle data type found in column '{0}'.", columnName));                     
-               }
-
-               public override object Eval (DataRow row)
-               {
-                       DataRow referencedRow = GetReferencedRow (row);
-                       if (referencedRow == null)
-                               return null;
-                               
-                       object val;
-                       try {
-                               referencedRow._inExpressionEvaluation = true;
-                               val = referencedRow [GetColumn (row)];
-                               referencedRow._inExpressionEvaluation = false;
-                       } catch (IndexOutOfRangeException) {
-                               throw new EvaluateException (String.Format ("Cannot find column [{0}].", columnName));
-                       }
-                       return Unify (val);
-               }
-
-               public override bool EvalBoolean (DataRow row)
-               {
-                       DataColumn col = GetColumn (row);
-                       if (col.DataType != typeof (bool))
-                               throw new EvaluateException ("Not a Boolean Expression");
-
-                       object result  = Eval (row);
-                       if (result == null || result == DBNull.Value)
-                               return false;
-                       else
-                               return (bool)result;
-               }
-
-               override public bool DependsOn(DataColumn other)
-               {
-                       return refTable == ReferencedTable.Self && columnName == other.ColumnName;
-               }
-
-               private void DropCached (DataColumnCollection columnCollection, DataRelationCollection relationCollection)
-               {
-                       if (_cachedColumn != null) {
-                               // unregister column listener
-                               _cachedColumn.PropertyChanged -= new PropertyChangedEventHandler (OnColumnPropertyChanged);
-
-                               // unregister column collection listener
-                               if (columnCollection != null)   
-                                       columnCollection.CollectionChanged -= new CollectionChangeEventHandler (OnColumnRemoved);
-                               else if (_cachedColumn.Table != null)
-                                       _cachedColumn.Table.Columns.CollectionChanged -= new CollectionChangeEventHandler (OnColumnRemoved);
-                               
-                               _cachedColumn = null;
-                       }
-
-                       if (_cachedRelation != null) {
-                               // unregister relation collection listener
-                               if (relationCollection != null)                         
-                                       relationCollection.CollectionChanged -= new CollectionChangeEventHandler (OnRelationRemoved);
-                               else if (_cachedRelation.DataSet != null)
-                                       _cachedRelation.DataSet.Relations.CollectionChanged -= new CollectionChangeEventHandler (OnRelationRemoved);
-
-                               _cachedRelation = null;
-                       }                       
-               }
-
-               private void OnColumnPropertyChanged (object sender, PropertyChangedEventArgs args)
-               {
-                       if (!(sender is DataColumn))
-                               return;
-                       
-                       DataColumn dc = (DataColumn) sender;
-                       if ((dc == _cachedColumn) && args.PropertyName == "ColumnName")
-                               DropCached (null, null);
-               }
-
-               private void OnColumnRemoved (object sender, CollectionChangeEventArgs args)
-               {
-                       if (!(args.Element is DataColumnCollection))
-                               return;
-
-                       if (args.Action != CollectionChangeAction.Remove)
-                               return;
-
-                       DataColumnCollection columnCollection = (DataColumnCollection) args.Element;
-                       if (_cachedColumn != null && columnCollection != null && (columnCollection.IndexOf (_cachedColumn)) == -1)
-                               DropCached (columnCollection, null);
-               }
-
-               private void OnRelationRemoved (object sender, CollectionChangeEventArgs args)
-               {
-                       if (!(args.Element is DataRelationCollection))
-                               return;
-
-                       if (args.Action != CollectionChangeAction.Remove)
-                               return;                 
-
-                       DataRelationCollection relationCollection = (DataRelationCollection) args.Element;
-                       if (_cachedRelation != null && relationCollection != null && (relationCollection.IndexOf (_cachedRelation)) == -1)
-                               DropCached (null, relationCollection);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Comparison.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Comparison.cs
deleted file mode 100644 (file)
index 2e8d07d..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// Comparison.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Threading;
-using System.Globalization;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Comparison : BinaryOpExpression {
-               public Comparison (Operation op, IExpression e1, IExpression e2) : base (op, e1, e2) {}
-       
-               override public object Eval (DataRow row)
-               {
-                       return EvalBoolean (row);
-               }
-
-               public override bool EvalBoolean (DataRow row)
-               {
-                       IComparable o1 = expr1.Eval (row) as IComparable;
-                       IComparable o2 = expr2.Eval (row) as IComparable;
-
-                       if (o1 == null || o2 == null) {
-                               if (o1 == null && o2 == null)
-                                       return (op == Operation.EQ);
-                               else
-                                       return (op == Operation.NE);
-                       }
-
-                       int result = Compare (o1, o2, row.Table.CaseSensitive);
-                       if (result < 0) {
-                               return (op == Operation.NE || op == Operation.LE || op == Operation.LT);
-                       }
-                       if (result > 0) {
-                               return (op == Operation.NE || op == Operation.GE || op == Operation.GT);
-                       }
-                       // result == 0
-                       return (op == Operation.EQ || op == Operation.LE || op == Operation.GE);
-                       
-               }
-                       
-               // certain trailing whitespace chars (including space) are ignored by .NET when comparing strings. See bug #79695.  
-               private static readonly char[] IgnoredTrailingChars = { (char) 0x20, (char) 0x3000, (char) 0xFEFF };
-
-               internal static int Compare (IComparable o1, IComparable o2, bool caseSensitive)
-               {
-                       //TODO: turn this "conversion pipeline" into something nicer
-
-                       try {
-                               if (o1 is string && Numeric.IsNumeric (o2))
-                                       o1 = (IComparable) Convert.ChangeType (o1, o2.GetType ());
-                               else if (o2 is string && Numeric.IsNumeric (o1))
-                                       o2 = (IComparable) Convert.ChangeType (o2, o1.GetType ());
-                               else if (o1 is string && o2 is Guid)
-                                       o2 = o2.ToString ();
-                               else if (o2 is string && o1 is Guid)
-                                       o1 = o1.ToString ();
-                       } catch (FormatException) {
-                               throw new EvaluateException (String.Format ("Cannot perform compare operation on {0} and {1}.", o1.GetType(), o2.GetType()));
-                       }
-
-                       if (o1 is string && o2 is string) {
-                               o1 = ((string) o1).TrimEnd (IgnoredTrailingChars);
-                               o2 = ((string) o2).TrimEnd (IgnoredTrailingChars);
-                               if (!caseSensitive) {
-                                       o1 = ((string) o1).ToLower ();
-                                       o2 = ((string) o2).ToLower ();
-                               }
-                       }
-
-                       if (o1 is DateTime && o2 is string && Thread.CurrentThread.CurrentCulture != CultureInfo.InvariantCulture) {
-                               // DateTime is always CultureInfo.InvariantCulture
-                               o2 = (IComparable) DateTime.Parse ((string)o2, CultureInfo.InvariantCulture);
-                       } else if (o2 is DateTime && o1 is string && 
-                                  Thread.CurrentThread.CurrentCulture != CultureInfo.InvariantCulture) {
-                               // DateTime is always CultureInfo.InvariantCulture
-                o1 = (IComparable) DateTime.Parse ((string)o1, CultureInfo.InvariantCulture);
-                       }
-                       else if (o2 is DateTime && o1 is string && Thread.CurrentThread.CurrentCulture != CultureInfo.InvariantCulture) {
-                               // DateTime is always CultureInfo.InvariantCulture
-                               o1 = (IComparable) DateTime.Parse ((string)o1, CultureInfo.InvariantCulture);
-                       }
-
-                       if (o1.GetType () != o2.GetType ())
-                               o2 = (IComparable)Convert.ChangeType (o2, o1.GetType ());
-
-                       return o1.CompareTo (o2);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Expressions.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Expressions.cs
deleted file mode 100644 (file)
index 0d6c2b1..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-//
-// Expressions.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Common;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal interface IExpression {
-               object Eval (DataRow row);
-               bool DependsOn(DataColumn other);
-
-               bool EvalBoolean (DataRow row);
-               void ResetExpression ();
-       }
-
-       internal abstract class BaseExpression : IExpression {
-               public abstract object Eval (DataRow row);
-               public abstract bool DependsOn(DataColumn other);
-
-               public virtual bool EvalBoolean (DataRow row)
-               {
-                       throw new EvaluateException ("Not a Boolean Expression");
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (obj == null || !(obj is BaseExpression))
-                               return false;
-                       
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return 0;
-               }
-
-               public virtual void ResetExpression ()
-               {
-               }
-       }
-
-       // abstract base classes
-       internal abstract class UnaryExpression : BaseExpression {
-               protected IExpression expr;
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is UnaryExpression))
-                               return false;
-
-                       UnaryExpression other = (UnaryExpression) obj;
-                       if (!other.expr.Equals (expr))
-                               return false;
-                       
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return base.GetHashCode () ^ expr.GetHashCode ();
-               }
-       
-               public UnaryExpression (IExpression e)
-               {
-                       expr = e;
-               }
-
-               override public bool DependsOn(DataColumn other) {
-                       return expr.DependsOn(other);
-               }
-
-               override public bool EvalBoolean (DataRow row)
-               {
-                       return (bool) Eval (row);
-               }
-       }
-       
-       internal abstract class BinaryExpression : BaseExpression {
-               protected IExpression expr1, expr2;
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is BinaryExpression))
-                               return false;
-
-                       BinaryExpression other = (BinaryExpression) obj;
-                       if (!other.expr1.Equals (expr1) || !other.expr2.Equals (expr2))
-                               return false;
-                       
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       int hashCode = base.GetHashCode ();
-                       hashCode ^= expr1.GetHashCode ();
-                       hashCode ^= expr2.GetHashCode ();
-                       return hashCode;
-               }
-       
-               protected BinaryExpression (IExpression e1, IExpression e2)
-               {
-                       expr1 = e1;
-                       expr2 = e2;
-               }
-               override public bool DependsOn(DataColumn other)
-               {
-                       return expr1.DependsOn(other) || expr2.DependsOn(other);
-               }
-
-               override public void ResetExpression ()
-               {
-                       expr1.ResetExpression ();
-                       expr2.ResetExpression ();
-               }
-       }
-       
-       internal enum Operation {
-               AND, OR,
-               EQ, NE, LT, LE, GT, GE,
-               ADD, SUB, MUL, DIV, MOD
-       }
-       
-       internal abstract class BinaryOpExpression : BinaryExpression {
-               protected Operation op;
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is BinaryOpExpression))
-                               return false;
-
-                       BinaryOpExpression other = (BinaryOpExpression) obj;
-                       if (other.op != op)
-                               return false;
-                       
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return base.GetHashCode () ^ op.GetHashCode ();
-               }
-       
-               protected BinaryOpExpression (Operation op, IExpression e1, IExpression e2) : base (e1, e2)
-               {
-                       this.op = op;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Functions.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Functions.cs
deleted file mode 100644 (file)
index 86f6f3f..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-//
-// Functions.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal class IifFunction : UnaryExpression {
-               IExpression trueExpr, falseExpr;
-               public IifFunction (IExpression e, IExpression trueExpr, IExpression falseExpr) : base (e)
-               {
-                       this.trueExpr = trueExpr;
-                       this.falseExpr = falseExpr;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is IifFunction))
-                               return false;
-
-                       IifFunction other = (IifFunction) obj;
-                       if (!other.falseExpr.Equals (falseExpr))
-                               return false;
-
-                       if (!other.trueExpr.Equals (trueExpr))
-                               return false;           
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       int hashCode = base.GetHashCode ();
-                       hashCode ^= falseExpr.GetHashCode ();
-                       hashCode ^= trueExpr.GetHashCode ();
-                       return hashCode;
-               }
-               
-               override public object Eval (DataRow row)
-               {
-                       object o = expr.Eval (row);
-                       if (o == DBNull.Value)
-                               return o;
-                       bool val = Convert.ToBoolean(o);
-                       return (val ? trueExpr.Eval (row) : falseExpr.Eval (row));
-               }
-       }
-       
-       internal class IsNullFunction : UnaryExpression {
-               IExpression defaultExpr;
-               public IsNullFunction (IExpression e, IExpression defaultExpr) : base (e)
-               {
-                       this.defaultExpr = defaultExpr;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is UnaryExpression))
-                               return false;
-
-                       IsNullFunction other = (IsNullFunction) obj;
-                       if (!other.defaultExpr.Equals (defaultExpr))
-                               return false;           
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return defaultExpr.GetHashCode () ^ base.GetHashCode ();
-               }
-               
-               override public object Eval (DataRow row)
-               {
-                       object val = expr.Eval (row);
-                       if (val == null || val == DBNull.Value)
-                               return defaultExpr.Eval (row);
-                       return val;
-               }
-       }
-       
-       internal class ConvertFunction : UnaryExpression {
-               Type targetType;
-               public ConvertFunction (IExpression e, string targetType) : base (e)
-               {
-                       try {
-                               this.targetType = Type.GetType (targetType, true);
-                       } catch (TypeLoadException) {
-                               throw new EvaluateException (String.Format ("Invalid type name '{0}'.", targetType));
-                       }
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is ConvertFunction))
-                               return false;
-
-                       ConvertFunction other = (ConvertFunction) obj;
-                       if (other.targetType != targetType)
-                               return false;           
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return targetType.GetHashCode () ^ base.GetHashCode ();
-               }
-               
-               override public object Eval (DataRow row)
-               {
-                       object val = expr.Eval (row);
-                       
-                       // TMPFIX :Eval shud never really return a null.. DBNull.Value but not null
-                       // needs to be done for all expressions .. for now ,just check for null
-                       if (val == null)
-                               return DBNull.Value;
-
-                       if (val == DBNull.Value || val.GetType () == targetType)
-                               return val;
-
-                       //--> String is always allowed                  
-                       if (targetType == typeof (string))
-                               return val.ToString();
-                               
-                       //only TimeSpan <--> String is allowed
-                       if (targetType == typeof (TimeSpan)) {
-                               if (val is string)
-                                       return TimeSpan.Parse ((string)val);
-                               else
-                                       ThrowInvalidCastException (val);
-                       }
-                       
-                       if (val is TimeSpan)
-                               ThrowInvalidCastException (val);
-                       
-                       //only Char <--> String/Int32/UInt32 is allowed
-                       if (val is Char && !(targetType == typeof (Int32) || targetType == typeof (UInt32)))
-                               ThrowInvalidCastException (val);
-                               
-                       if (targetType == typeof (Char) && !(val is Int32 || val is UInt32))
-                               ThrowInvalidCastException (val);
-
-                       //bool <--> Char/Single/Double/Decimal/TimeSpan/DateTime is not allowed
-                       if (val is Boolean && (targetType == typeof (Single) || targetType == typeof (Double) || targetType == typeof (Decimal)))
-                               ThrowInvalidCastException (val);
-                               
-                       if (targetType == typeof(Boolean) && (val is Single || val is Double || val is Decimal))
-                               ThrowInvalidCastException (val);
-
-                       //Convert throws the remaining invalid casts
-                       return Convert.ChangeType (val, targetType);
-
-               }
-               
-               private void ThrowInvalidCastException (object val) {
-                       throw new InvalidCastException (String.Format ("Type '{0}' cannot be converted to '{1}'.", val.GetType(), targetType));
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/In.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/In.cs
deleted file mode 100644 (file)
index 2a8589d..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-//
-// In.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal class In : UnaryExpression {
-               IList set;
-       
-               public In(IExpression e, IList set) : base (e)
-               {
-                       this.set = set;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is In))
-                               return false;
-
-                       In other = (In) obj;
-                       if (other.set.Count != set.Count)
-                               return false;   
-
-                       for (int i = 0, count = set.Count; i < count; i++) {
-                               object o1 = set[i];
-                               object o2 = other.set[i];
-
-                               if (o1 == null && o2 != null)
-                                       return false;
-
-                               if (!o1.Equals(o2))
-                                       return false;
-                       }
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       int hashCode = base.GetHashCode ();
-                       for (int i = 0, count = set.Count; i < count; i++) {
-                               object o = set[i];
-                               if (o != null)
-                                       hashCode ^= o.GetHashCode();
-                       }
-
-                       return hashCode;
-               }
-       
-               override public object Eval (DataRow row)
-               {
-                       object o = expr.Eval (row);
-                       if (o == DBNull.Value)
-                               return o;
-                       IComparable val = o as IComparable;
-                       if (val == null)
-                               return false;
-
-                       foreach (IExpression e in set) {
-                               IComparable setItem = (IComparable)e.Eval (row);
-                               if (setItem == null)
-                                       continue;
-                               
-                               if (Comparison.Compare (val, setItem, row.Table.CaseSensitive) == 0)    
-                                       return true;
-                       }
-                       
-                       return false;
-               }
-
-               override public bool EvalBoolean (DataRow row)
-               {
-                       return (bool) Eval (row);
-               }
-
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Like.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Like.cs
deleted file mode 100644 (file)
index 95e16cb..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// Like.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Like : UnaryExpression {
-               readonly IExpression _pattern;
-               
-               public Like (IExpression e, IExpression pattern) : base (e)
-               {
-                       _pattern = pattern;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is Like))
-                               return false;
-
-                       Like other = (Like) obj;
-                       return _pattern.Equals (other._pattern);
-               }
-
-               public override int GetHashCode()
-               {
-                       return _pattern.GetHashCode () ^ base.GetHashCode ();
-               }
-
-               override public object Eval (DataRow row)
-               {
-                       object o = expr.Eval (row);
-                       if (o == null || o == DBNull.Value)
-                               return false;
-                       string str = (string)o;
-                       bool openStart, openEnd;
-                       string pattern = (string) _pattern.Eval (row);
-                       string original = pattern;
-                       int len = pattern.Length;
-                       openStart = (pattern [0] == '*' || pattern [0] == '%');
-                       openEnd = (pattern [len - 1] == '*' || pattern [len - 1] == '%');
-
-                       pattern = pattern.Trim ('*', '%');
-                       pattern = pattern.Replace ("[*]", "[[0]]");
-                       pattern = pattern.Replace ("[%]", "[[1]]");
-                       if (pattern.IndexOf ('*') != -1 || pattern.IndexOf ('%') != -1)
-                               throw new EvaluateException (String.Format ("Pattern '{0}' is invalid.", original));
-                       pattern = pattern.Replace ("[[0]]", "*");
-                       pattern = pattern.Replace ("[[1]]", "%");
-                       pattern = pattern.Replace ("[[]", "[");
-                       pattern = pattern.Replace ("[]]", "]");
-
-                       if (!row.Table.CaseSensitive) {
-                               str = str.ToLower();
-                               pattern = pattern.ToLower();
-                       }
-                       
-                       int idx = str.IndexOf (pattern);
-                       if (idx == -1)
-                               return false;
-                               
-                       return (idx == 0 || openStart) && (idx + pattern.Length == str.Length || openEnd);
-               }
-
-               override public bool EvalBoolean (DataRow row)
-               {
-                       return (bool)Eval (row);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Literal.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Literal.cs
deleted file mode 100644 (file)
index 28ee4e1..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// Literal.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Literal : BaseExpression {
-               object val;
-       
-               public Literal (object val)
-               {
-                       this.val = val;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is Literal))
-                               return false;
-
-                       Literal other = (Literal) obj;
-                       if (other.val != null) {
-                               if (!other.val.Equals (val))
-                                       return false;
-                       }
-                       else if (val != null)
-                               return false;
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return val.GetHashCode () ^ base.GetHashCode ();
-               }
-       
-               public override object Eval (DataRow row)
-               {
-                       return val;
-               }
-
-               override public bool DependsOn(DataColumn other)
-               {
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Numeric.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Numeric.cs
deleted file mode 100644 (file)
index 08a0f1d..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Numeric {
-               internal static bool IsNumeric (object o) {
-                       if (o is IConvertible) {
-                               TypeCode tc = ((IConvertible)o).GetTypeCode();
-                               if(TypeCode.Char < tc && tc <= TypeCode.Decimal)
-                                       return true;
-                       }
-                       return false;
-               }
-
-               //extends to Int32/Int64/Decimal/Double
-               internal static IConvertible Unify (IConvertible o)
-               {
-                       switch (o.GetTypeCode()) {
-                       case TypeCode.Char:
-                       case TypeCode.SByte:
-                       case TypeCode.Byte:
-                       case TypeCode.Int16:
-                       case TypeCode.UInt16:
-                               return (IConvertible)Convert.ChangeType (o, TypeCode.Int32);
-                       
-                       case TypeCode.UInt32:
-                               return (IConvertible)Convert.ChangeType (o, TypeCode.Int64);
-                               
-                       case TypeCode.UInt64:
-                               return (IConvertible)Convert.ChangeType (o, TypeCode.Decimal);
-                               
-                       case TypeCode.Single:
-                               return (IConvertible)Convert.ChangeType (o, TypeCode.Double);
-                       
-                       default:
-                               return o;
-                       }
-               }
-               
-               //(note: o1 and o2 must both be of type Int32/Int64/Decimal/Double)
-               internal static TypeCode ToSameType (ref IConvertible o1, ref IConvertible o2)
-               {
-                       TypeCode tc1 = o1.GetTypeCode();
-                       TypeCode tc2 = o2.GetTypeCode();
-                       
-                       if (tc1 == tc2)
-                               return tc1;
-
-                       if (tc1 == TypeCode.DBNull || tc2 == TypeCode.DBNull)
-                               return TypeCode.DBNull;
-
-
-                       // is it ok to make such assumptions about the order of an enum?
-                       if (tc1 < tc2)
-                       {
-                               o1 = (IConvertible)Convert.ChangeType (o1, tc2);
-                               return tc2;
-                       }
-                       else
-                       {
-                               o2 = (IConvertible)Convert.ChangeType (o2, tc1);
-                               return tc1;
-                       }
-               }
-               
-               internal static IConvertible Add (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return (long)((int)o1 + (int)o2);
-                       case TypeCode.Int64:
-                               return (long)o1 + (long)o2;
-                       case TypeCode.Double:
-                               return (double)o1 + (double)o2;
-                       case TypeCode.Decimal:
-                               return (decimal)o1 + (decimal)o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-               
-               internal static IConvertible Subtract (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return (int)o1 - (int)o2;
-                       case TypeCode.Int64:
-                               return (long)o1 - (long)o2;
-                       case TypeCode.Double:
-                               return (double)o1 - (double)o2;
-                       case TypeCode.Decimal:
-                               return (decimal)o1 - (decimal)o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-               
-               internal static IConvertible Multiply (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return (int)o1 * (int)o2;
-                       case TypeCode.Int64:
-                               return (long)o1 * (long)o2;
-                       case TypeCode.Double:
-                               return (double)o1 * (double)o2;
-                       case TypeCode.Decimal:
-                               return (decimal)o1 * (decimal)o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-               
-               internal static IConvertible Divide (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return (int)o1 / (int)o2;
-                       case TypeCode.Int64:
-                               return (long)o1 / (long)o2;
-                       case TypeCode.Double:
-                               return (double)o1 / (double)o2;
-                       case TypeCode.Decimal:
-                               return (decimal)o1 / (decimal)o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-               
-               internal static IConvertible Modulo (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return (int)o1 % (int)o2;
-                       case TypeCode.Int64:
-                               return (long)o1 % (long)o2;
-                       case TypeCode.Double:
-                               return (double)o1 % (double)o2;
-                       case TypeCode.Decimal:
-                               return (decimal)o1 % (decimal)o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-               
-               internal static IConvertible Negative (IConvertible o)
-               {
-                       switch (o.GetTypeCode()) {
-                       case TypeCode.Int32:
-                               return -((int)o);
-                       case TypeCode.Int64:
-                               return -((long)o);
-                       case TypeCode.Double:
-                               return -((double)o);
-                       case TypeCode.Decimal:
-                               return -((decimal)o);
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-               
-               internal static IConvertible Min (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return System.Math.Min ((int)o1, (int)o2);
-                       case TypeCode.Int64:
-                               return System.Math.Min ((long)o1, (long)o2);
-                       case TypeCode.Double:
-                               return System.Math.Min ((double)o1, (double)o2);
-                       case TypeCode.Decimal:
-                               return System.Math.Min ((decimal)o1, (decimal)o2);
-                       case TypeCode.String:
-                               int result = String.Compare ((string)o1, (string)o2);
-                               if (result <= 0)
-                                       return o1;
-                               return o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-
-               internal static IConvertible Max (IConvertible o1, IConvertible o2)
-               {
-                       switch (ToSameType (ref o1, ref o2)) {
-                       case TypeCode.Int32:
-                               return System.Math.Max ((int)o1, (int)o2);
-                       case TypeCode.Int64:
-                               return System.Math.Max ((long)o1, (long)o2);
-                       case TypeCode.Double:
-                               return System.Math.Max ((double)o1, (double)o2);
-                       case TypeCode.Decimal:
-                               return System.Math.Max ((decimal)o1, (decimal)o2);
-                       case TypeCode.String:
-                               int result = String.Compare ((string)o1, (string)o2);
-                               if (result >= 0)
-                                       return o1;
-                               return o2;
-                       default:
-                               return DBNull.Value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Parser.jay b/mcs/class/System.Data/Mono.Data.SqlExpressions/Parser.jay
deleted file mode 100644 (file)
index 135b936..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-%{
-//
-// Parser.jay
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-// Copyright 2011 Xamarin Inc (http://www.xamarin.com)
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-
-       internal class Parser {
-               static Parser ()
-               {
-                       if (Environment.GetEnvironmentVariable ("MONO_DEBUG_SQLEXPRESSIONS") != null)
-                               yacc_verbose_flag = 2;
-               }
-
-               bool cacheAggregationResults = false;
-               DataRow[] aggregationRows = null;
-               static int yacc_verbose_flag;
-               
-               //called by DataTable.Select
-               //called by DataColumn.set_Expression //FIXME: enable cache in this case?
-               public Parser () {
-                       ErrorOutput = System.IO.TextWriter.Null;
-                       cacheAggregationResults = true;
-               }
-               
-               //called by DataTable.Compute
-               public Parser (DataRow[] aggregationRows)
-               {
-                       ErrorOutput = System.IO.TextWriter.Null;
-                       this.aggregationRows = aggregationRows;
-               }
-               
-               public IExpression Compile (string sqlExpr)
-               {
-                       try {
-                               Tokenizer tokenizer = new Tokenizer (sqlExpr);
-                               if (yacc_verbose_flag > 1)
-                                       return (IExpression) yyparse (tokenizer,
-                                               new yydebug.yyDebugSimple ());
-                               else
-                                       return (IExpression) yyparse (tokenizer);
-                       } catch (yyParser.yyException) {
-                               throw new SyntaxErrorException (String.Format ("Expression '{0}' is invalid.", sqlExpr));
-                       }
-               }
-%}
-
-%token PAROPEN PARCLOSE
-
-%token AND OR
-%token NOT
-
-%token TRUE FALSE
-%token NULL
-
-%token PARENT CHILD
-
-%token EQ LT GT
-
-%token PLUS MINUS
-%token MUL DIV MOD
-
-%token DOT COMMA
-
-%token IS IN NOT_IN LIKE NOT_LIKE
-
-%token COUNT SUM AVG MAX MIN STDEV VAR
-%token IIF SUBSTRING ISNULL LEN TRIM CONVERT
-
-%token StringLiteral NumberLiteral DateLiteral
-%token Identifier
-%token FunctionName
-
-%start Expr
-
-%left OR
-%left AND
-%left NOT
-
-%left EQ LT GT
-
-%left PLUS MINUS
-%left MUL DIV MOD
-
-%left UMINUS
-
-%%
-
-Expr
-       : BoolExpr
-       | ArithExpr
-       ;
-
-BoolExpr
-       : PAROPEN BoolExpr PARCLOSE
-       {
-               $$ = (IExpression)$2;
-       }
-       | BoolExpr AND BoolExpr
-       {
-               $$ = new BoolOperation (Operation.AND, (IExpression)$1, (IExpression)$3);
-       }
-       | BoolExpr OR BoolExpr
-       {
-               $$ = new BoolOperation (Operation.OR, (IExpression)$1, (IExpression)$3);
-       }
-       | NOT BoolExpr
-       {
-               $$ = new Negation ((IExpression)$2);
-       }
-       | Predicate
-       ;
-
-Predicate
-       : CompPredicate
-       | IsPredicate
-       | LikePredicate
-       | InPredicate
-       ;
-
-CompPredicate
-       : ArithExpr CompOp ArithExpr
-       {
-               $$ = new Comparison ((Operation)$2, (IExpression)$1, (IExpression)$3);
-       }
-       ;
-
-CompOp
-       : EQ    { $$ = Operation.EQ; }
-       | NE    { $$ = Operation.NE; }
-       | LT    { $$ = Operation.LT; }
-       | GT    { $$ = Operation.GT; }
-       | LE    { $$ = Operation.LE; }
-       | GE    { $$ = Operation.GE; }
-       ;
-
-LE     : LT EQ;                // <=
-NE     : LT GT;                // <>
-GE     : GT EQ;                // >=
-       
-ArithExpr
-       : PAROPEN ArithExpr PARCLOSE
-       {
-               $$ = (IExpression)$2;
-       }
-       | ArithExpr MUL ArithExpr
-       {
-               $$ = new ArithmeticOperation (Operation.MUL, (IExpression)$1, (IExpression)$3);
-       }
-       | ArithExpr DIV ArithExpr
-       {
-               $$ = new ArithmeticOperation (Operation.DIV, (IExpression)$1, (IExpression)$3);
-       }
-       | ArithExpr MOD ArithExpr
-       {
-               $$ = new ArithmeticOperation (Operation.MOD, (IExpression)$1, (IExpression)$3);
-       }
-       | ArithExpr PLUS ArithExpr
-       {
-               $$ = new ArithmeticOperation (Operation.ADD, (IExpression)$1, (IExpression)$3);
-       }
-       | ArithExpr MINUS ArithExpr
-       {
-               $$ = new ArithmeticOperation (Operation.SUB, (IExpression)$1, (IExpression)$3);
-       }
-       | MINUS ArithExpr %prec UMINUS
-       {
-               $$ = new Negative ((IExpression)$2);
-       }
-       | Function
-       | Value
-       ;
-
-Value
-       : LiteralValue
-       | SingleColumnValue
-       ;
-
-LiteralValue
-       : StringLiteral { $$ = new Literal ($1); }
-       | NumberLiteral { $$ = new Literal ($1); }
-       | DateLiteral           { $$ = new Literal ($1); }
-       | BoolLiteral
-       | NULL          { $$ = new Literal (null); }
-       ;
-
-BoolLiteral
-       : TRUE  { $$ = new Literal (true); }
-       | FALSE { $$ = new Literal (false); }
-       ;
-
-SingleColumnValue
-       : LocalColumnValue
-       | ParentColumnValue
-       ;       
-
-MultiColumnValue
-       : LocalColumnValue
-       | ChildColumnValue
-       ;
-
-LocalColumnValue
-       : ColumnName
-       {
-               $$ = new ColumnReference ((string)$1);
-       }
-       ;
-
-ParentColumnValue
-       : PARENT DOT ColumnName
-       {
-               $$ = new ColumnReference (ReferencedTable.Parent, null, (string)$3);
-       }
-       | PARENT PAROPEN RelationName PARCLOSE DOT ColumnName
-       {
-               $$ = new ColumnReference (ReferencedTable.Parent, (string)$3, (string)$6);
-       }
-       ;
-
-ChildColumnValue
-       : CHILD DOT ColumnName
-       {
-               $$ = new ColumnReference (ReferencedTable.Child, null, (string)$3);
-       }
-       | CHILD PAROPEN RelationName PARCLOSE DOT ColumnName
-       {
-               $$ = new ColumnReference (ReferencedTable.Child, (string)$3, (string)$6);
-       }
-       ;
-       
-ColumnName
-       : Identifier
-       | ColumnName DOT Identifier
-       {
-               $$ = (string)$1 + "." + (string)$3;
-       }
-       ;
-       
-RelationName
-       : Identifier;
-
-Function
-       : CalcFunction
-       | AggFunction
-       | StringFunction
-       ;
-
-AggFunction
-       : AggFunctionName PAROPEN MultiColumnValue PARCLOSE
-       {
-               $$ = new Aggregation (cacheAggregationResults, aggregationRows, (AggregationFunction)$1, (ColumnReference)$3);
-       }
-       ;
-
-AggFunctionName
-       : COUNT         { $$ = AggregationFunction.Count; }
-       | SUM           { $$ = AggregationFunction.Sum; }
-       | AVG           { $$ = AggregationFunction.Avg; }
-       | MAX           { $$ = AggregationFunction.Max; }
-       | MIN           { $$ = AggregationFunction.Min; }
-       | STDEV { $$ = AggregationFunction.StDev; }
-       | VAR           { $$ = AggregationFunction.Var; }
-       ;
-
-StringExpr
-       : SingleColumnValue
-       | StringLiteral { $$ = new Literal ($1); }
-       | Function
-       ;
-
-StringFunction
-       : TRIM PAROPEN ArithExpr PARCLOSE
-       {
-               $$ = new TrimFunction ((IExpression)$3);
-       }
-       | SUBSTRING PAROPEN ArithExpr COMMA ArithExpr COMMA ArithExpr PARCLOSE
-       {
-               $$ = new SubstringFunction ((IExpression)$3, (IExpression)$5, (IExpression)$7);
-       }
-       ;
-
-CalcFunction
-       : IIF PAROPEN Expr COMMA Expr COMMA Expr PARCLOSE
-       {
-               $$ = new IifFunction ((IExpression)$3, (IExpression)$5, (IExpression)$7);
-       }
-       | ISNULL PAROPEN Expr COMMA Expr PARCLOSE
-       {
-               $$ = new IsNullFunction ((IExpression)$3, (IExpression)$5);
-       }
-       | LEN PAROPEN Expr PARCLOSE
-       {
-               $$ = new LenFunction ((IExpression)$3);
-       }
-       | CONVERT PAROPEN Expr COMMA TypeSpecifier PARCLOSE
-       {
-               $$ = new ConvertFunction ((IExpression)$3, (string)$5);
-       }
-       ;
-
-TypeSpecifier
-       : StringLiteral
-       | Identifier
-       ;
-
-IsPredicate
-       : ArithExpr IS NULL
-       {
-               $$ = new Comparison (Operation.EQ, (IExpression)$1, new Literal (null));
-       }
-       | ArithExpr IS NOT NULL
-       {
-               $$ = new Comparison (Operation.NE, (IExpression)$1, new Literal (null));
-       }
-       ;
-
-LikePredicate
-       : StringExpr LIKE StringExpr
-       {
-               $$ = new Like ((IExpression)$1, (IExpression)$3);
-       }
-       | StringExpr NOT_LIKE StringExpr
-       {
-               $$ = new Negation (new Like ((IExpression)$1, (IExpression)$3));
-       }
-       ;
-
-InPredicate
-       : ArithExpr IN InPredicateValue
-       {
-               $$ = new In ((IExpression)$1, (IList)$3);
-       }
-       | ArithExpr NOT_IN InPredicateValue
-       {
-               $$ = new Negation (new In ((IExpression)$1, (IList)$3));
-       }
-       ;
-
-InPredicateValue
-       : PAROPEN InValueList PARCLOSE { $$ = $2; }
-       ;
-
-InValueList
-       : LiteralValue
-       {
-               $$ = new ArrayList();
-               ((IList)$$).Add ($1);
-       }
-       | InValueList COMMA LiteralValue
-       {
-               ((IList)($$ = $1)).Add ($3);
-       }
-       ;
-
-%%
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/StringFunctions.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/StringFunctions.cs
deleted file mode 100644 (file)
index 7312542..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// StringFunctions.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-// Copyright 2011 Xamarin Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-
-namespace Mono.Data.SqlExpressions {
-       internal abstract class StringFunction : UnaryExpression {
-               protected StringFunction (IExpression e) : base (e) {}
-
-               override public object Eval (DataRow row)
-               {
-                       object val = expr.Eval (row);
-                       if(val == null)
-                               return null;
-                               
-                       if (!(val is string)) {
-                               string fnct = this.GetType ().ToString ();
-                               int start = fnct.LastIndexOf('.') + 1;
-                               fnct = fnct.Substring (start, fnct.Length - start - "Function".Length);
-                               throw new EvaluateException (String.Format ("'{0}' can be applied only to strings.", fnct));
-                       }
-                               
-                       return val;
-               }
-       }
-
-       internal class SubstringFunction : StringFunction {
-               IExpression start;
-               IExpression len;
-               public SubstringFunction (IExpression e, IExpression start, IExpression len) : base (e)
-               {
-                       this.start = start;
-                       this.len = len;
-               }
-
-               public override bool Equals(object obj)
-               {
-                       if (!base.Equals (obj))
-                               return false;
-
-                       if (!(obj is SubstringFunction))
-                               return false;
-
-                       SubstringFunction other = (SubstringFunction) obj;
-                       if (other.start != start)
-                               return false;
-
-                       if (other.len != len)
-                               return false;           
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       int hashCode = base.GetHashCode ();
-                       hashCode ^= start.GetHashCode ();
-                       hashCode ^= len.GetHashCode ();
-                       return hashCode;
-               }
-               
-               override public object Eval (DataRow row)
-               {
-                       string str = (string)base.Eval (row);
-                       start.Eval (row);
-                       int istart = Convert.ToInt32 (start.Eval (row));
-                       int ilen = Convert.ToInt32 (len.Eval (row));
-                       
-                       if(str == null)
-                               return null;
-                               
-                       if (istart > str.Length)
-                               return String.Empty;
-                       
-                       return str.Substring (istart - 1, System.Math.Min (ilen, str.Length - (istart - 1)));
-               }
-       }
-       
-       internal class LenFunction : StringFunction {
-               public LenFunction (IExpression e) : base (e) {}
-               
-               override public object Eval (DataRow row)
-               {
-                       string str = (string)base.Eval (row);
-                       if(str == null)
-                               return 0;
-                               
-                       return str.Length;
-               }
-       }
-
-       internal class TrimFunction : StringFunction {
-               public TrimFunction (IExpression e) : base (e) {}
-               
-               override public object Eval (DataRow row)
-               {
-                       string str = (string)base.Eval (row);
-                       if(str == null)
-                               return null;
-                               
-                       return str.Trim();
-               }
-       }
-}
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
deleted file mode 100644 (file)
index 1cfa5cb..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-//
-// SqlWhereClauseTokenizer.cs
-//
-// Author:
-//   Juraj Skripsky (juraj@hotfeet.ch)
-//
-// (C) 2004 HotFeet GmbH (http://www.hotfeet.ch)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Collections;
-
-namespace Mono.Data.SqlExpressions {
-       internal class Tokenizer : yyParser.yyInput {
-               private static readonly IDictionary tokenMap = new Hashtable ();
-               private static readonly Object [] tokens = {
-                       Token.AND, "and",
-                       Token.OR, "or",
-                       Token.NOT, "not",
-                       
-                       Token.TRUE, "true",
-                       Token.FALSE, "false",
-                       Token.NULL, "null",
-                       
-                       Token.PARENT, "parent",
-                       Token.CHILD, "child",
-                       
-                       Token.IS, "is",
-                       Token.IN, "in",
-                       Token.NOT_IN, "not in",
-                       Token.LIKE, "like",
-                       Token.NOT_LIKE, "not like",
-                       
-                       Token.COUNT, "count",
-                       Token.SUM, "sum",
-                       Token.AVG, "avg",
-                       Token.MAX, "max",
-                       Token.MIN, "min",
-                       Token.STDEV, "stdev",
-                       Token.VAR, "var",
-                       
-                       Token.IIF, "iif",
-                       Token.SUBSTRING, "substring",
-                       Token.ISNULL, "isnull",
-                       Token.LEN, "len",
-                       Token.TRIM, "trim",
-                       Token.CONVERT, "convert"
-               };
-               private char[] input;
-               private int pos;
-
-               private int tok;
-               private object val;
-
-               static Tokenizer ()
-               {
-                       for (int i = 0; i < tokens.Length; i += 2)
-                               tokenMap.Add (tokens [i + 1], tokens [i]);
-               }
-
-               public Tokenizer (string strInput)
-               {
-                       input = strInput.ToCharArray ();
-                       pos = 0;
-               }
-
-               private char Current() {
-                       return input [pos];
-               }
-
-               private char Next() {
-                       if (pos + 1 >= input.Length)
-                               return (char)0;
-                       return input [pos + 1];
-               }
-
-               private bool MoveNext() {
-                       pos++;
-                       if (pos >= input.Length)
-                               return false;
-
-                       return true;
-               }
-               
-               private bool SkipWhiteSpace ()
-               {
-                       if (pos >= input.Length)
-                               return false;
-
-                       while (Char.IsWhiteSpace (Current ())) {
-                               if (!MoveNext ())
-                                       return false;
-                       }
-
-                       return true;
-               }
-
-               private object ReadNumber ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (Current ());
-
-                       char next;
-                       while (Char.IsDigit (next = Next ()) || next == '.') {
-                               sb.Append (next);
-                               if (!MoveNext ())
-                                       break;
-                       }
-
-                       string str = sb.ToString ();
-
-                       if (str.IndexOf ('.') < 0)
-                               return Int64.Parse (str, CultureInfo.InvariantCulture);
-
-                       return double.Parse (str, CultureInfo.InvariantCulture);
-               }
-
-               private char ProcessEscapes(char c)
-               {
-                       if (c == '\\') {
-                               if (MoveNext())
-                                       c = Current ();
-                               else
-                                       c = '\0';
-
-                               switch (c) {
-                               case 'n':
-                                       c = '\n';
-                                       break;
-                               case 'r':
-                                       c = '\r';
-                                       break;
-                               case 't':
-                                       c = '\t';
-                                       break;
-
-                               case '\\':
-                                       c = '\\';
-                                       break;
-                                       
-                               default:
-                                       throw new SyntaxErrorException (String.Format ("Invalid escape sequence: '\\{0}'.", c));
-                               }
-                       }
-                       return c;
-               }
-
-               private string ReadString (char terminator)
-               {
-                       return ReadString (terminator, false /* canEscape */);
-               }
-
-               private string ReadString (char terminator, 
-                                          bool canEscape // twice the terminator is not a terminator
-                                          )
-               {
-                       bool terminated = false;
-                       StringBuilder sb = new StringBuilder ();
-                       while (MoveNext ()) {
-                               if (Current () == terminator) {
-                                       if (Next () == terminator) {
-                                               sb.Append (ProcessEscapes (Current ()));
-                                               MoveNext ();
-                                               continue;
-                                       }
-                                       terminated = true;
-                                       break;
-                               }
-                               sb.Append (ProcessEscapes (Current ()));
-                       }
-                       
-                       if (! terminated)
-                               throw new SyntaxErrorException (String.Format ("invalid string at {0}{1}<--",
-                                                                              terminator,
-                                                                              sb.ToString ())
-                                                               );
-                       return sb.ToString ();                  
-               }
-
-               private string ReadIdentifier ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (Current ());
-
-                       char next;
-                       string ret;
-                       while ((next = Next ()) == '_' || Char.IsLetterOrDigit (next) || next == '\\') {
-                               sb.Append (ProcessEscapes (next));                              
-                               if (!MoveNext ())
-                                       break;
-                       }
-                       ret = sb.ToString ();
-                       if (String.Compare (ret,
-                                           "not",
-                                           StringComparison.OrdinalIgnoreCase
-                           ) == 0) {
-                               int savedPos = pos;
-                               while (Char.IsWhiteSpace ((next = Next ()))) {
-                                       if (!MoveNext ()) {
-                                               pos = savedPos;
-                                               return ret;
-                                       }
-                               }
-                               MoveNext ();
-                               
-                               string target;
-                               switch (Current ()) {
-                                       case 'i':
-                                       case 'I':
-                                               target = "in";
-                                               break;
-
-                                       case 'l':
-                                       case 'L':
-                                               target = "like";
-                                               break;
-                                       
-                                       default:
-                                               pos = savedPos;
-                                               return ret;
-                               }
-
-                               int tlen = target.Length;
-                               int idx = 1;
-                               while (tlen-- > 0 && Char.IsLetter ((next = Next ()))) {
-                                       if (target [idx++] != Char.ToLowerInvariant (next)) {
-                                               pos = savedPos;
-                                               return ret;
-                                       }
-                                       MoveNext ();
-                               }
-
-                               sb.Append (' ');
-                               sb.Append (target);
-                               ret = sb.ToString ();
-                       }
-
-                       return ret;
-               }
-
-               private int ParseIdentifier ()
-               {
-                       string strToken = ReadIdentifier ();
-                       object tokenObj = tokenMap[strToken.ToLower()];
-
-                       if(tokenObj != null)
-                               return (int)tokenObj;
-                       
-                       val = strToken;
-                       return Token.Identifier;
-               }
-
-               private int ParseToken ()
-               {
-                       char cur;
-                       switch (cur = Current ()) {
-                       case '(':
-                               return Token.PAROPEN;
-
-                       case ')':
-                               return Token.PARCLOSE;
-
-                       case '.':
-                               return Token.DOT;
-
-                       case ',':
-                               return Token.COMMA;
-
-                       case '+':
-                               return Token.PLUS;
-
-                       case '-':
-                               return Token.MINUS;
-
-                       case '*':
-                               return Token.MUL;
-
-                       case '/':
-                               return Token.DIV;
-
-                       case '%':
-                               return Token.MOD;
-                               
-                       case '=':
-                               return Token.EQ;
-
-                       case '<':
-                               return Token.LT;
-
-                       case '>':
-                               return Token.GT;
-
-                       case '[':
-                               val = ReadString (']');
-                               return Token.Identifier;
-
-                       case '#':
-                               string date = ReadString ('#');
-                               val = DateTime.Parse (date, CultureInfo.InvariantCulture);
-                               return Token.DateLiteral;
-
-                       case '\'':
-                       case '\"':
-                               val = ReadString (cur, true);
-                               return Token.StringLiteral;
-
-                       default:
-                               if (Char.IsDigit (cur)) {                               
-                                       val = ReadNumber ();
-                                       return Token.NumberLiteral;
-                               } else if (Char.IsLetter (cur) || cur == '_')
-                                       return ParseIdentifier ();
-                               break;
-                       }
-                       throw new SyntaxErrorException ("invalid token: '" + cur + "'");
-               }
-
-               ///////////////////////////
-               // yyParser.yyInput methods
-               ///////////////////////////
-
-               /** move on to next token.
-                 @return false if positioned beyond tokens.
-                 @throws IOException on input error.
-                 */
-               public bool advance ()
-               {
-                       if (!SkipWhiteSpace())
-                               return false;
-                       tok = ParseToken();
-                       MoveNext ();
-                       return true;
-               }
-
-               /** classifies current token.
-                 Should not be called if advance() returned false.
-                 @return current %token or single character.
-                 */
-               public int token ()
-               {
-                       return tok;
-               }
-
-               /** associated with current token.
-                 Should not be called if advance() returned false.
-                 @return value for token().
-                 */
-               public Object value ()
-               {
-                       return val;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/ReferenceSources/SqlInternalConnectionTds.cs b/mcs/class/System.Data/ReferenceSources/SqlInternalConnectionTds.cs
new file mode 100644 (file)
index 0000000..b82129c
--- /dev/null
@@ -0,0 +1,7 @@
+namespace System.Data.SqlClient
+{
+       class SqlInternalConnectionTds
+       {
+               
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.Common/CatalogLocation.cs b/mcs/class/System.Data/System.Data.Common/CatalogLocation.cs
deleted file mode 100644 (file)
index 60931f1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Data.Common.CatalogLocation.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public enum CatalogLocation 
-       {
-               End = 2,
-               Start = 1
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/ChangeLog b/mcs/class/System.Data/System.Data.Common/ChangeLog
deleted file mode 100644 (file)
index db8c2a8..0000000
+++ /dev/null
@@ -1,1127 +0,0 @@
-2011-05-05  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes 688773
-       * RecordCache.cs (CopyRecord): When copying records, assign default value 
-       for the columns that does not exist in the row being imported.
-
-2010-07-23  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes #565616 - Based on Patch by Hubert FONGARNAND
-       * DataContainer.cs (GetContainerData): If typecode is string, 
-       call Convert.ToString() irrespective of whether value is 
-       IConvertible or not. 
-       
-2010-03-26  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-    ** Fixes #564833/580736
-    * DbDataAdapter.cs (*Command): Fix for .NET compatibility which
-    supports both type of adapters with/without discrete command
-    instances.
-               
-2009-10-28  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #385028/#385029
-       * DbCommandBuilder.cs (CreateInsertCommand): Workaround for inserting 
-       DEFAULT values to non-null-columns.
-       (GetInsertCommand): New overload added to handle above workaround.
-       (set_DataAdapter): Register for the RowUpdatingEventHandlers.
-        
-2009-10-14  Jonathan Pryor  <jpryor@novell.com>
-
-       * DbConnection.cs: Throw NotImplementedException fom
-         DbConnection.DbProviderFactory, as DbProviderFactories isn't
-         included in the MonoTouch profile.
-
-2009-07-30  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * DbDataAdapter.cs (IDbDataAdapter.get_*Command): For non 2.0 profile, do not 
-       implement these properties and related changes.
-       
-2009-07-30  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       * DbDataAdapter.cs (set_DeleteCommand): Code cleanup.
-       
-2009-07-29  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       * DbDataAdapter.cs (*Command properties): Don't call IDbDataAdapter.*Command, 
-       as provider specific DbDataAdapters would have its own implementation.
-       
-2009-07-27  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * DbCommandBuilder.cs (CreateUpdateCommand): Don't set Nullable 
-       property "Original_*" fields.
-       
-2009-07-24  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       * DbCommandBuilder.cs (Create*Command): Fill up the missing pieces from 
-       SqlCommandBuilder version of Create*Commands that fixes the failing tests.
-       
-2009-07-24  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       * DbCommandBuilder.cs (CreateDeleteCommand, CreateUpdateCommand): Add the 
-       nullcheck-param into the respective command's parameter list.  Fixes 
-       build breaks.  Individual provider's CommandBuilder classes from 2.0 
-       profile onwards use the base version of methods to maintain these commands.
-       (Get*Command): Cleanup code duplication
-       * DbDataAdapter (Update): Use SourceColumnNullMapping property to handle 
-       nullcheckparams.  Fixes #522624.  Patch by 
-       Gert Driesen  <drieseng@users.sourceforge.net>.
-       
-2009-07-15  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Part of fix for #325464
-       * DbParameter.cs (FrameworkDbType, DbTypeMapping, SystemType): New internal properties 
-       required to convert between DbType/FrameworkType/SystemType.
-       
-2009-05-10  Marek Habersack  <mhabersack@novell.com>
-
-       * DbConnection.cs: implemented the DbProviderFactory property
-
-2009-03-31  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * Fixes rest of #480377
-       * DataContainer.cs (GetContainerData, GetExplicitValue): Added to handle cases 
-       where passed type overloads an explicit operator for conversion of values.
-       
-2009-01-03  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbCommandBuilder.cs (QuoteIdentifier): Throw NotSupportedException.
-       * DbDataAdapter.cs (Update): Add row causing concurrency violation
-       to DBConcurrencyException.
-
-2008-12-30  Raja R Harinath  <harinath@hurrynot.org>
-
-       Mildly rewrite duplicate-inferring logic.
-       * Index.cs (IndexDuplicateState): Remove.
-       (_hasDuplicates): Remove.  Replace by ...
-       (know_have_duplicates, know_no_duplicates): ... these.
-
-2008-12-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbCommandBuilder.cs: When CatalogSeparator or SchemaSeparator are
-       not set (or explicitly set to null or empty string), then return
-       default separator character. Added value check for CatalogLocation and
-       ConflictOption. Removed regions.
-
-2008-12-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbCommandBuilder.cs: Fixed default value for ConflicOption.
-
-2008-12-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbCommandBuilder.cs: Return a zero-length string when QuotePrefix or
-       QuoteSuffix are not set (or are set to null). Changing QuotePrefix or
-       QuoteSuffix after a command has been generated should result in an
-       InvalidOperationException.
-       * DbConnectionStringBuilder.cs: Added support for ODBC rules. Major
-       rewrite fixing many compatibility issues, and improving support for
-       connectionstring formats/characters.
-
-2008-11-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbDataRecord.cs : it is abstract, so create different impl. class.
-       * DbEnumerator.cs : use above.
-
-2008-11-17  Raja R Harinath  <harinath@hurrynot.org>
-
-       Avoid allocating empty arrays.
-       * Index.cs (empty): New empty array constant.
-       (Reset): Initialize '_array' to 'empty'.
-       (RebuildIndex): Don't allocate array if it will be empty.
-       (FindAllIndexes): Use 'empty' instead of 'new int [0]'.
-
-2008-11-17  Raja R Harinath  <harinath@hurrynot.org>
-
-       * Index.cs: Remove use of Array and Size properties by taking
-       advantage of the invariant that _array is never null.
-       (EnsureArray): Remove.
-       (Array): Remove.
-
-2008-11-17  Raja R Harinath  <harinath@hurrynot.org>
-
-       * RecordCache.cs: Reduce some extraneous nesting.
-
-2008-10-07  Daniel Morgan  <monodanmorg@yahoo.com>
-
-       * DbConnectionStringBuilder.cs: fix setting and getting
-       the ConnectionString property
-
-2008-09-16  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes#421336 - Patch provided by <christian_hoff@gmx.net>    
-       DbCommandBuilder.cs: Several scenarios leading to exceptions when
-       creating the update, insert and delete commands: 
-
-       1. The "IsExpression" column in the column schema table can also
-       be DBNull which is equivalent to "false" but the DBCommandBuilder
-       does not check for DBNull and simply tries to cast it into a bool,
-       which will fail.
-
-       2. The commands do not get refreshed after a call to
-       UpdateSchema() because they are not set to NULL. This has the
-       consequence that empty commands(created with CreateNewCommand())
-       are returned afterwards.
-
-       3. Multiple parameters with the same name are generated if the
-       parameter names should be named after the columns.
-       
-2008-09-05  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataContainer.cs (*.ZeroOut): Rename from the somewhat unclear
-       'SetDefaultValue'.
-       (IsNull): Use a more idiomatic form of the short-circuit.
-       (*.SetValue): Convert to one-liners.
-
-2008-08-08  Raja R Harinath  <harinath@hurrynot.org>
-
-       Reduce massive code duplication
-       * DataContainer.cs (DataContainer): Rename from AbstractDataContainer.
-       Introduce new 'protected abstract' members to encapsulate
-       type-specific handling, and move all common code here.
-       (DataContainer.Create): Rename from CreateInstance.
-
-2008-07-06  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * DbDataReader.cs: Replace a few Type.GetType by typeof
-       [Found using Gendarme AvoidTypeGetTypeForConstantStringsRule]
-
-2008-07-03  Marek Habersack  <mhabersack@novell.com>
-
-       * DataAdapter.cs (BuildSchema): Check for null.
-       
-2008-07-01  Rodrigo Kumpera  <rkumpera@novell.com>
-
-       * RecordCache.cs: Kill some foreach loops.
-
-2008-04-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataColumnMappingCollection.cs: Modified argument names to match
-       MS. Code formatting.
-       * DataTableMappingCollection.cs: Modified argument names to match MS.
-       Code formatting.
-
-2008-03-23  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbDataAdapter.cs: Corcompare fixes and code formatting.
-       * DbDataRecord.cs: Corcompare fixes and code formatting.
-       * DataColumnMappingCollection.cs: Corcompare fixes and code formatting.
-       * RowUpdatedEventArgs.cs: Corcompare fixes and code formatting.
-       * DbParameterCollection.cs: Corcompare fixes and code formatting.
-
-2007-11-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbProviderFactoriesConfigurationHandler.cs : Create() now takes
-         parent DataSet into consideration i.e. it now merges items in
-         different configurations. Fixed bug #323708.
-
-2007-10-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbDataPermissionAttribute.cs: In KeyRestrictionBehavior, reuse
-       ExceptionHelper.CheckEnumValue.
-       * ExceptionHelper.cs: Use same exception message for both 1.0 and 2.0.
-       * Index.cs: Fixed compiler warnings. Code formatting.
-
-2007-10-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbDataAdapter.cs: Implemented UpdateBatchSize setter.
-       * DataAdapter.cs: In FillLoadOption setter, ensure value is valid.
-       Modified MissingMappingAction and MissingSchemaAction setters to use
-       ExceptionHelper.CheckEnumValue to validate value. Spaces to tabs and
-       code formatting.
-       * ExceptionHelper.cs: Added CheckEnumValue method and modified
-       InvalidEnumValueException method to return AORE on 2.0 profile. Added
-       ConnectionClosed method that returns an InvalidOperationException.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbTransaction.cs: Do not perform a rollback in Dispose (bool).
-       Leaves it up to deriving classes to override Dispose (bool) and
-       perform a rollback if necessary. Fixes bug #325397. Code formatting.
-       * ExceptionHelper.cs: Added TransactionNotUsable method that constructs
-       an InvalidOperationException to be thrown by IDbTransaction
-       implementations when the transaction is no longer open.
-
-2007-09-27  Nagappan A <anagappan@novell.com> 
-
-       * DbDataAdapter.cs: Added MonoTODO in appropriate place.
-       
-       * DbCommandBuilder.cs (initializeCommand): Implemented missing API.
-
-2007-09-25  Nagappan A  <anagappan@novell.com>
-
-       * DbConnection.cs: 2.0 attribute fixes.
-
-       * DataColumnMapping.cs: 2.0 attribute fixes.
-
-       * DbParameterCollection.cs: Code alignment.
-
-       * DataAdapter.cs: 2.0 attribute fixes.
-
-       * DataTableMapping.cs: 2.0 attribute fixes.
-
-       * RowUpdatingEventArgs.cs (BaseCommand): Code alignment.
-
-2007-09-24  Konstantin Triger <kostat@mainsoft.com>
-
-       * DbEnumerator.cs, DbDataRecord.cs: refactoring.
-       * DbDataRecord.cs: GetValue() should return null instead of DBNull.
-
-2007-08-10  Nagappan A  <anagappan@novell.com>
-
-       * DbDataAdapter.cs (Fill): Fixed method signature.
-
-2007-07-26  Nagappan A  <anagappan@novell.com>
-
-       * DbConnection.cs: Removed bogus TODO.
-
-2007-07-22  Nagappan A  <anagappan@novell.com>
-
-       * DbConnection.cs: 2.0 missing features.
-
-       * DbDataAdapter.cs: 2.0 missing features.
-
-2007-06-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbDataAdapter.cs: Marked ICloneable.Clone obsolete to match MS.
-
-2007-06-21  Nagappan A  <anagappan@novell.com>
-
-       * DbConnectionStringBuilder.cs (Init): Modified the dictionary to
-       use StringComparer.InvariantCultureIgnoreCase.
-       (Add, ContainsKey): Checks whether argument is null or empty string.
-
-2007-05-08  Adar Wesley <adarw@mainsoft.com>
-
-       * DbProviderFactory.cs: minor refactoring for throwing exceptions
-
-2007-04-30  Marek Habersack  <mhabersack@novell.com>
-
-       * DbProviderFactories.cs: throw the same exception MS.NET does.
-
-2007-03-03  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbProviderFactoriesConfigurationHandler.cs: Added support for
-       clear node.
-
-2007-03-03  Gert driesen  <drieseng@users.sourceforge.net>
-
-       * ConnectionStringsSectionHandler.cs: Removed since the 2.0 config
-       API is in place.
-       * DbProviderFactoriesConfigurationHandler.cs: Fixed name of DataSet
-       to match MS. Removed SupportedClasses column since this is no longer
-       part of 2.0 profile (removed during beta). Throw 
-       ConfigurationErrorsException for unrecognized elements. Mark methods
-       private, and refactor them. Added FIXMEs for missing checks for
-       unrecognized attributes.
-       * DbProviderFactories.cs: Marked constants internal. Replaced spaces
-       with tabs. Use ConfigurationManager.GetSection instead of deprecated
-       ConfigurationSettings.GetConfig.
-
-2007-02-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbProviderFactoriesConfigurationHandler.cs : there was a config
-         test that used to be broken.
-
-2007-02-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbProviderFactoriesConfigurationHandler.cs : remove "support"
-         attribute check, as it does not really do anything.
-
-2007-02-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbProviderFactoriesConfigurationHandler.cs : "support" attribute is
-         optional. Fixed bug #80894.
-
-2007-02-09  Nagappan A  <anagappan@novell.com>
-
-       * DbProviderFactory.cs: Derived class has to implement all the
-       methods of this class.
-
-       * DbProviderFactoriesConfigurationHandler.cs (Create): Removed
-       bogus MonoTODO
-
-2007-01-08  Nagappan A  <anagappan@novell.com>
-
-       * DataTableMappingCollection.cs (AddRange):  Implemented missing
-       NET 2.0 API.
-
-       * DbConnection.cs (GetSchema): Implemented missing NET 2.0 API,
-       based on SqlClient implementation.
-
-       * DbConnectionStringBuilder.cs (AppendKeyValuePair): Implemented
-       missing API.
-
-       * DbDataReader.cs (GetData): Implemented missing API.
-       (GetDbDataReader): Implemented missing API.
-
-       * DbCommandBuilder.cs (BuildCache, BuildInformation)
-       (IncludedInInsert, IncludedInUpdate, IncludedInWhereClause)
-       (CreateDeleteCommand, CreateInsertCommand, CreateNewCommand)
-       (CreateUpdateCommand, CreateParameter): Added private methods.
-       (QuotedTableName, GetQuotedString, CatalogLocation)
-       (CatalogSeparator, ConflictOption, DataAdapter, QuotePrefix)
-       (QuoteSuffix, SchemaSeparator): Implemented public properties.
-       (SourceCommand): Implemented private property.
-       (Dispose, RowUpdatingHandler): Implemented protected methods.
-       (GetDeleteCommand, GetInsertCommand, GetUpdateCommand)
-       (QuoteIdentifier, UnquoteIdentifier, RefreshSchema): Implemented
-       public methods.
-
-       * DbProviderFactory.cs: Removed MonoTODO's as the derived class
-       has to implement all the methods in this class.
-
-       * DataAdapter.cs (Fill): Implemented missing method.
-
-       * DbDataAdapter.cs (FillCommandBehavior): Implemented property.
-
-2006-12-20  Nagappan A  <anagappan@novell.com>
-
-       * DataColumnMapping.cs (GetDataColumnBySchemaAction): Implemented
-       2.0 profile method.
-
-       * DbDataReader.cs: Removed TODO's where ever the implementation is
-       available.
-
-       * RowUpdatedEventArgs.cs: Removed TODO's where ever the
-       implementation is available.
-
-       * DataAdapter.cs (FillInternal): Moved from DbDataAdapater.cs to
-       here.
-       (BuildSchema): Moved from DbDataAdapter.cs.
-       (FillTable): Moved from DbDataAdapter.cs.
-       (OnFillErrorInternal): Implemented new internal method to raise an
-       event.
-       (SetupSchema): Moved from DbDataAdapter.cs.
-       (FillInterl): Moved common implementation from DbDataAdapter.cs.
-       Removed TODO's where ever the implementation is available.
-
-       * DbDataAdapter.cs (OnRowUpdated): Implemented protected method.
-       (OnRowUpdating): Implemented protected method.
-       (CreateFillErrorEvent): Moved to DataAdapter.cs.
-       (Fill): Moved common implementation to DataAdapter.cs.
-       (FillTable): Moved to DataAdapter.cs.
-       (BuildSchema): Moved to DataAdapter.cs.
-       (SetupSchema): Moved to DataAdapter.cs.
-
-2006-12-11  Miguel de Icaza  <miguel@novell.com>
-
-       * DataAdapter.cs: Removed TODO, NotSupportedException was the
-       correct implementation. 
-
-2006-11-28  Nagappan A  <anagappan@novell.com>
-
-       * DbDataAdapter.cs: Removed bogus MonoTODOs
-
-       * DataAdapter.cs: Removed bogus MonoTODOs
-       
-2006-11-15  Nagappan A  <anagappan@novell.com>
-
-       * DbDataAdapter.cs (FillFromReader): Implemented missing API to
-       handle FillErrorEventHandler
-       (DataAdapter): Implemented missing .NET 2.0 function
-       (GetDeleteCommand): Returns DbDataAdapter deleteCommand internal
-       variable.
-       (GetInsertCommand): Returns DbDataAdapter insertCommand internal
-       variable.
-       (GetUpdateCommand): Returns DbDataAdapter updateCommand internal
-       variable.
-
-2006-09-06  Konstantin Triger <kostat@mainsoft.com>
-
-       * DbDataAdapter.cs: added basic implementation for some 2.0 features.
-
-2006-08-24  Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * DbProviderFactories.cs: added TARGET_JVM block to not supported
-       functionality
-
-2006-08-06  Konstantin Triger <kostat@mainsoft.com>
-
-       * DbDataReader.cs: DbDataReader.Dipose(bool) - implemented.
-
-2006-07-17  Senganal T <tsenganal@novell.com>
-
-       * Index.cs :
-               - GetAllRows : Added. Returns all the rows in the current
-               index.
-               - GetDistinctRows :Added. Returns all the distinct rows (based
-               in Key Columns) in the index.
-               
-2006-07-13  Senganal T <tsenganal@novell.com>
-
-       * SchemaInfo.cs DbDataAdapter.cs DbConnectionOptions.cs DbParameter.cs 
-       DbMetaDataColumnNames.cs DbTransaction.cs DataTableMapping.cs DataAdapter.cs 
-       FieldNameLookup.cs DbDataRecord.cs DataColumnMappingCollection.cs DbCommand.cs 
-       DbDataPermission.cs DbProviderFactory.cs DbCommandBuilder.cs DbConnectionString.cs 
-       RowUpdatedEventArgs.cs DbDataReader.cs DbConnectionStringBuilder.cs DbConnection.cs 
-       DataTableMappingCollection.cs :
-               2.0 Api fixes
-
-2006-06-15  Senganal T <tsenganal@novell.com>
-
-       * Key.cs : 
-               -Equals : Check for Equality of Sort Order too.
-               
-2006-04-07  Senganal T <tsenganal@novell.com>
-
-       * DbDataAdapter.cs :
-               * Update () : If the Update/Delete Query has a null check,
-               then populate the parameter value correctly.
-
-2006-03-20  Senganal T <tsenganal@novell.com>
-
-       * DataAdapter.cs :
-               - Ctor () : Set Default Values for DataAdapter members
-       * DbDataAdapter.cs : 
-               - Update () : Call row.AcceptChanges only if AcceptChangesDuringUpdate
-               is true. Fixes bug #77776
-
-2006-03-09  Senganal T <tsenganal@novell.com>
-       
-       * Index.cs :
-               - Update () : Add the new record in the correct position
-
-2006-03-07  Senganal T <tsenganal@novell.com>
-
-       * Key.cs : 
-               Reverted the changes from the earlier patch.
-
-2006-02-22  Senganal T <tsenganal@novell.com>
-
-       * DbDataAdapter.cs :
-               - FillTable : Move BeginLoadData, EndLoadData outside the loop. Also,
-               move EndLoadData outsidet try,catch block. FillError is only for errors
-               occuring during loading the data into datatable.
-       * Key.cs :
-               - Set Default value of RowStateFilter to (CurrentRos | OriginalRows).
-               - ContainsVersion : If RowStateFilter is set to default value, return true
-               for Modified Rows as they can contain Default/Original versions.
-
-2006-02-18  Raja R Harinath  <harinath@gmail.com>
-
-       * DbConnectionStringBuilder.cs (ICollection.CopyTo): Use
-       _dictionary, not 'this' in cast.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DbDataAdapter.cs: more 2.0 cleanup.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DataAdapter.cs, DataColumnMappingCollection.cs,
-       DataColumnMapping.cs, DataTableMappingCollection.cs,
-       DataTableMapping.cs, DbCommandBuilder.cs,
-       DbConnectionStringBuilder.cs, DbParameterCollection.cs,
-       DbParameter.cs: pretty major attribute work.
-       
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DbProviderFactory.cs: remove two methods.  and mark the
-       DbProviderSupportedClasses ctor as internal since it's not part of
-       the public api.
-
-       * DbTable.cs: remove this class from 2.0 build.. leave it for the
-       JVM build, I guess?
-
-       * RowUpdatingEventArgs.cs: this class isn't abstract in 2.0.
-
-       * RowUpdatedEventArgs.cs: this class isn't abstract in 2.0.
-
-       * SupportedJoinOperators.cs: new 2.0 enum.
-
-       * CatalogLocation.cs: fix enum values.
-
-       * GroupByBehavior.cs: same.
-
-       * IdentifierCase.cs: same.
-
-       * SchemaTableColumn.cs: class is static, not sealed.  and add
-       missing elements.
-       
-       * SchemaTableOptionalColumn.cs: same.
-       
-       * DbDataReader.cs: oops, add back in VisibleFieldCount (i missed
-       it in the corcompare output), add EditorBrowsable attributes all
-       over the place, and fix some method signatures.
-
-       * DbDataUpdatableRecord.cs: remove this 2.0 file.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DbDataReader.cs: remove VisibleFieldCount attribute, and remove
-       IDataReader2 and IDataRecord2 interfaces.
-       
-2006-02-13  Senganal T  <tsenganal@novell.com>
-
-       * DbDataAdapter.cs :
-               - FillSchema  : 
-                       - Add table to schema only if MissingSchemaAction is not Ignore
-                       Add schema to table if MissingSchemaAction is set to either of
-                       Add or AddWithKey
-               - BuildSchema :
-                       - Set the Schema values only if MissingSchemaAction is set to
-                       AddWithKey
-
-2006-01-31  Senganal T  <tsenganal@novell.com>
-
-       * DbDataAdapter.cs :
-               - Corrected an error in the prev checkin.. Fixes #77415
-
-2006-01-27  Senganal T  <tsenganal@novell.com>
-
-       * DbDataAdapter.cs :
-               - Modified schema population to follow MissingSchemaAction and MissingMappingAction
-               - Add a column to the Primary Key only if its not a hidden key
-               - Added some argument checks
-               - Removed some redundant code
-       * DataAdapter :
-               - Added argument checks
-       * ExceptionHelper :
-               - Added InvalidEnumException , a helper function to print error msg
-               
-2006-01-11 Boris Kirzner <borisk@mainsoft.com>
-       * Index.cs: removed redundant call to RebuildIndex() in constructor.
-
-2005-12-12  Konstantin Triger <kostat@mainsoft.com>
-
-       * Key.cs: Added ContainsVersion function, refactoring.
-       * Index.cs: Fixed Reset() to be ready for Update() calls.
-          Otherwise the index can be rebuilt with new values inside the
-          Update() call itself.
-          Fixed FindIndexExact(), Update(), Delete().
-
-2005-11-22  Konstantin Triger <kostat@mainsoft.com>
-
-       * DbProviderFactory.cs: TARGET_JVM ifdef.
-
-2005-11-21  Senganal T <tsenganal@novell.com>
-
-       * DbDataAdapter.cs
-       * DbParameter.cs
-       * DbTransaction.cs
-       * DbTable.cs
-       * DbProviderFactories.cs
-       * DbException.cs
-       * DbProviderFactory.cs
-       * DbCommandBuilder.cs
-       * DbDataReader.cs
-       * DbParameterCollection.cs
-               - Added stubs and other changes for ADO.NET 2.0 compatibility.
-       * DbMetaDataCollectionNames.cs (new file)
-               - Added DbMetaDataCollectionNames Enumeration 
-
-2005-10-24  Konstantin Triger <kostat@mainsoft.com>
-
-        * DataContainer.cs: removed extra type validation for object container
-
-2005-10-14  Senganal T  <tsenganal@novell.com>
-
-       * DbDataAdapter.cs : 
-               - BuildSchema() : Set the value of DataColumn Property 'AllowDBNull'
-               as returned by database. Fixes bug#76433. 
-
-2005-09-21 Boris Kirzner <borisk@mainsoft.com>
-       * Index.cs: 
-               - Rebuild index immediately after construction.
-               - Do not add records if they do not padd key filtration.
-               - Do not attempt to remove records if the are not in the index.
-       * Key.cs:
-               - Added HasFilter property, CanContain and DependsOn methods.
-               - Equals() uses filter expression comparison.           
-
-2005-09-07 Boris Kirzner <borisk@mainsoft.com>
-       * DataContainer.cs: Do not convert value if container type 
-       is System.Object.
-
-2005-08-08  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DbTypes.cs: Marked internal to fix public API.
-
-2005-08-05  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs:
-       - Update (): set parameter values only after getting the
-       appropriate command from command builder. Close reader only if it
-       is not closed before. Use parameter's SourceVersion. Whitespace
-       corrections to comply with standard.
-
-2005-07-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataColumnMappingCollection.cs: updated attributes & attribute
-       descriptions to match with masterinfos.
-
-2005-07-15  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTableMappingCollection.cs: GetTableMappingBySchemaAction:
-       meaningful error message if mapping is missing.
-
-       * DbDataAdapter.cs: Update: meaningful message if table is missing.
-
-2005-06-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * Index.cs: Remove : length for Array.Copy (a, i+1, a, i, length -
-       (i+1)) corrected.
-
-2005-06-21  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbConnectionStringBuilder.cs: Implemented method for parsing
-       connection string through "ConnectionString" property.
-
-       * DbConnectionStringBuilderHelper.cs: Helper class to provide
-       conversion between string=>.net type mapping for connection string
-       builders. The idea is to use between other providers (odbc) as
-       well.
-
-2005-05-29 Boris Kirzner <borisk@mainsoft.com>
-       * DbCommand.cs - added #ifdef NET_2_0 on DbCommandOptionalFeatures (not used in TARGET_JVM). 
-       * ExceptionHelper.cs - removed java references. Exceptions created on formatted text messages. Code styling fixes.
-       * DbParameterCollection.cs - implemented indexer properties.
-       * DbDataAdapter.cs - delagate exceptions creating to ExceptionHelper.
-       
-2005-05-25 Konstantin Triger <kostat@mainsoft.com>
-
-      * DataContainer.cs: Correcting the order - first the record is queried whether the value it contains is null, and only if not the value is fetched
-
-2005-05-20 Umadevi S <sumadevi@novell.com>
-       * Added file DbProviderSpecificTypePropertyAttribute.cs
-
-2005-05-19 Umadevi S <sumadevi@novell.com>
-
-       * RowUpdatingEventArgs.cs - added BaseCommand property for net 2.0
-
-2005-05-18 Konstantin Triger <kostat@mainsoft.com>
-
-       * DbDataAdapter.cs: Initialize the schema values to defaults if the schema does not contain the information
-
-2005-05-16  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * RecordCache.cs: quick fix to make build 2.0 profile (follow up
-       for check in 2005-05-16).
-
-2005-05-16 Konstantin Triger <kostat@mainsoft.com>
-
-       * Index.cs: validation that the updated row belongs to the index
-
-2005-05-02 Konstantin Triger <kostat@mainsoft.com>
-
-       * DataContainer.cs: 
-               Added CharDataContainer, SByteDataContainer, UInt16DataContainer, UInt32DataContainer, UInt64DataContainer, DateTimeDataContainer, DecimalDataContainer
-               SetItemFromDataRecord: Changed to work with ISafeDataRecord or through GetValue to enable conversion
-               return DBNull.Value when the stored value is null
-       
-       * DbDataAdapter.cs:
-               Ensure correct order for LoadDataRow
-               Fixing schema creation
-               Use NewRowArray API
-       
-       * DbEnumerator.cs:
-               LoadSchema: Retrieve needed fields only
-       
-       * RecordCache.cs:
-               Added Rows-to-Records mapping
-               Added ReadIDataRecord method for correct handling of default/auto increment values
-       
-       * Added Index.cs: Index implementation
-       * Added Key.cs: Index descriptor implementation
-
-
-2005-04-27  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataReader.cs: Added static method to construct the schema
-       table with default schema. Could be reused in many places.
-
-2005-04-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs: Moved FillTable and BuildSchema as static
-       methods as they are not operating on the current instance. This
-       could be reused to fill any table from a data reader.
-
-       * RecordCache.cs: While disposing records, make sure that the
-       record is not already disposed. i.e. to make sure later the same
-       record is not reused. Implemented a static method to compare two
-       version of records in a container.
-
-2005-04-18  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataAdapter.cs: Implemenetd OnFillError handler.
-
-       * DbDataAdapter.cs: BuildSchema (): the table to be filled might
-       contain few additional columns as well. so mapping length should
-       be columns' length + fields' length.
-
-2005-03-24  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs: Update: If  SourceColumn is null, do not set
-       value for the parameter.
-
-2005-05-25 Umadevi S <sumadevi@novell.com>
-       * Added DbException.cs
-
-2005-03-23  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs: For Update, disable ReadOnly constraint
-       temporarily before updating the row. Info from Ingo Bauersachs.
-       SkipAllRemainingRows should also skip current row (msdn).
-
-2005-03-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs: Update (): update the rows based on the
-       UpdateRowSource property. Process further based on the
-       RowUpdatedEvent handler argument's Status property.
-       Fixes bug #73587. Thanks to mono@rankweg.ch (Ingo Bauersachs) for
-       bug report and patch.
-
-       * RowUpdatedEventArgs.cs: if custom error is not set, throw a
-       default error.
-
-2005-03-01  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * ConnectionStringsSectionHandler.cs: Added. configuration section
-       handler for section "connectionStrings". This handler is a ad hoc
-       solution till the new configuration API is available in mono.
-
-2005-02-04  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs (Update ()) :
-       - Check for one return result set and map the values back to
-         datatable.
-       - Check for output & return value parameters and update the value
-         back to mapped column
-       - check for recordsAffected only after closing the reader.
-
-2005-02-02  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbConnection.cs: Implement Dispose pattern.
-
-2005-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbDataPermission.cs : Empty.Union(Empty) is Empty.
-
-2005-01-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbDataPermissionAttribute.cs, PermissionHelper.cs :
-         fixed some incompatible type of exception between 2.0 and 1.x.
-       * DataContainer.cs :
-         Wrap exceptions thrown by SetValue() within ArgumentException.
-
-2004-12-10  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbDataAdapter.cs (BuildSchema): Add the primary key schema iff
-       MissingSchemaAction is set to AddWithKey. Also, Add auto increment
-       value from the source table. fixes bug #67757 and #69110.
-
-2004-11-24  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbProviderSupportedClasses.cs: Added correct enum values.
-       * DbConnection.cs: Missing virtual method EnlistTransaction Added.
-       * DbCommand.cs: Implemented ProviderFactory base factory methods.
-
-2004-11-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbConnectionStringBuilder.cs: Class for helping creation of db
-       connection strings added.
-
-2004-10-01  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbProviderFactories.cs: Implemented all the stubs. Added functionality for
-       getting available provider factories and creating a specified provider factory.
-
-       * DbProviderFactoriesConfigurationHandler.cs: Added functionality for handling
-       DbProviderFactories configuration section.
-
-       * DbProviderFactory.cs: Added protected constructor. SupportedClasses property
-       is made abstract.
-
-2004-09-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * DbDataPermission.cs: Implemented Intersect, IsSubsetOf and Union.
-       Implementation isn't complete as the restrictions seems to change the
-       expected results (breaking some rules like x.IsSubsetOf (x) == false).
-       Better (real-world) tests cases are required.
-       * PermissionHelper.cs: Fixed small differences between System.Data.dll 
-       validations wrt to mscorlib.dll (XML and PermissionState).
-
-2004-09-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * DbConnectionOptions.cs: New class for Fx 2.0. Partial implementation
-       to support new methods in DBDataPermission.
-       * DbConnectionString.cs: Updated class to split from/inherit 
-       DbConnectionOptions class.
-       * DbDataPermission.cs: Implemented Add, Clear, Copy, ToXml methods and
-       completed constructors.
-       * DbDataPermissionAttribute.cs: Completed/fixed class.
-       * PermissionHelper.cs: Helper methods to create permission classes.
-
-2004-08-31 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
-       * DbDataAdapter.cs: Fix for out of memory exceptions when trying to fill a dataset with a query which doesn't return a resultset like insert, delete or update.
-
-2004-07-21 Umadevi S <sumadevi@novell.com>
-       * DbDataRecord.cs - Fix for bug 58163. Return DBNull instead of null
-
-2004-07-07 Umadevi S <sumadevi@novell.com>
-       * DataContainer.cs :CheckedforNull before calling the relavant setmethods in each of the
-                SetItemForDataRecord method for the DateTimeClass
-
-
-2004-06-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumnMappingCollection.cs : fixed typo.
-       * DbDataAdapter.cs : column mappings were not filled.
-
-2004-06-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTableMapping.cs : Clone() should also clone ColumnMappings.
-
-2004-06-18 Umadevi S <sumadevi@novell.com>
-       * DataContainer.cs - CheckedforNull before calling the relavant setmethods in each of the 
-               SetItemForDataRecord method for all the classes.
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-       * RecordCache.cs : Added CopyRecord mathod that copies single record from one table to another.
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-       * Datacontainer.cs : 
-         - Store and retreival of null and DBNull values reviewed.
-         - Added GetInt64 to support AutoIncrement of DataColumn.
-         - Added missing CopyValue method to BitDataContainer.
-         - Added FillValues method to propagate single value to whole container.
-       
-2004-06-10 Umadevi S <sumadevi@novell.com>
-       * DataTableMappingCollection.cs - fixed nunit testcase errors
-       IndexOfDataSetTable method
-
-2004-06-09 Umadevi S <sumadevi@novell.com>
-       * DataTableMappingCollection.cs - fixed nunit testcase errors
-       - Add, GetByDataSetTable,Insert, Remove, RemoveAt methods.
-
-2004-06-09 Umadevi S <sumadevi@novell.com>
-       * DataColumnMappingCollection.cs - fixed nunit testcase errors
-       - GetByDataSetColumn,IndexOfDataSetColumn, Remove methods.      
-
-2004-06-08 Umadevi S <sumadevi@novell.com>
-       * DataColumnMappingCollection.cs - fixed nunit testcase errors.
-       - remove, removeat, contains methods.
-
-2004-06-04  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * DataAdapter.cs: added missing protected ctor
-       * DbDataAdapter.cs: added stub for missing protected ctor
-       * DbDataPermission.cs: added stubs for missing protected
-       ctors, added stub for missing Clear method
-
-2004-06-02  Gert Driesen <drieseng@users.sourceforge.net>
-       * DataColumnMappingCollection.cs: added missing attributes on
-       indexers
-
-2004-05-27  Boris Kirzner  <borisk@mainsoft.com>
-       * DataContainer.cs : Bug fixes in BitDataContainer.get_Item and StringDataContainer.SetValue .
-
-2004-05-20  Gert Driesen (drieseng@users.sourceforge.net)
-
-        *  DbDataPermissionAttribute.cs: change AllowMultiple and
-        Inherited to match .NET
-
-2004-05-19  Boris Kirzner  <borisk@mainsoft.com>
-       * Datacontainer.cs : CompareValues reviewed. set_Item and get_Item of null and DBNull values in case of DataContainers
-       for primitive types reviewed. Added check for null values when reading from IDataRecord.
-       
-2004-05-19  Boris Kirzner <borisk@mainsoft.com>
-       * RecordCache.cs - added. Each instance of record cache belongs to specific table
-       and manages pool of records ( indexes into data containers) to be used by data rows.
-       * DataContainer.cs - added. Provides implementation for data containers that holds data in arrays 
-       of primitives or objects. Each data container belongs to specific DataColumn.
-       * DbDataAdapter.cs - changes to complete data storage redesign. Bug fix in FillTable 
-       ( to fetch exact number of records required ).
-       
-2004-05-13 Umadevi S (sumadevi@novell.com)
-       * DbDataPermissionAttribute.cs - Added KeyRestrictions property with a TODO tag
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * ComparerFactory.cs: marked internal
-
-2003-04-26  Boris Kirzner <borisk@mainsoft.com>
-       * DataColumnMappingCollection.cs : Small fix in exception message thrown.
-         
-2003-04-25  Boris Kirzner <borisk@mainsoft.com>
-       * DbDataAdapter.cs : Fixed bug in Fill :
-         - Reader can have empty results (fo example from UPDATE or DELETE).
-         - Reader can have results with no rows (SELECT that returns 0 rows but have columns)
-         - In FillTable - skip rows only once for each table.
-       
-2003-04-14  Juraj Skripsky <juraj@hotfeet.ch>
-       * DbDataAdapter.cs : Refactoring of Fill. New private method
-       FillTable does most of the work now. Use int[] instead of
-       hashtable for mapping. Move creation of tableArray[] outside
-       of loop.
-
-2004-03-12  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
-
-       * DbDataPermissionAttribute.cs: Added .Net 1.1 marks
-       * DataColumnMapping.cs: DO NOT USE the consts scheme if types can be referenced directly!
-       * DataTableMapping.cs: DO NOT USE the consts scheme if types can be referenced directly!
-       * DataColumnMappingConverter: Added stub
-       * DataTableMappingConverter: Added stub
-
-2004-03-03  Eran Domb  <erand@miansoft.com>
-       
-       * ComparerFactory.cs : Added.
-       
-2004-01-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbDataPermission.cs : tiny fix to pass OleDbPermission.
-
-2004-01-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DbDataPermission.cs : .ctor(PermissionState state) should not call
-         obsolete .ctor(state, allowBlankPassword). csc reports an error.
-
-2003-12-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DbDataAdapter.cs: handle MissingShemaAction.AddWithKey, call
-       AcceptChanges in Update when a CommandBuilder is used and
-       correctly fill information about primary keys in FillSchema.
-       Patch from Sergei Malinin (smalinin@amurnet.ru).
-
-2003-12-23  Tim Coleman <tim@timcoleman.com>
-       * DbConnectionString.cs:
-               Some implementation
-       * DbProviderFactory.cs:
-               Fix typo to make CLS compliant
-
-2003-12-16  Jackson Harper <jackson@ximian.com>
-
-       * SchemaTableOptionalColumn.cs: Add to fix default build
-       
-2003-12-16  Tim Coleman <tim@timcoleman.com>
-       * CatalogLocation.cs DbCommand.cs DbCommandBuilder.cs
-       * DbCommandOptionalFeatures.cs DbCommandSet.cs DbConnection.cs
-       * DbConnectionString.cs DbDataSourceEnumerator.cs
-       * DbDataUpdatableRecord.cs DbParameter.cs DbParameterCollection.cs
-       * DbProviderConfigurationHandler.cs DbProviderFactories.cs
-       * DbProviderFactoriesConfigurationHandler.cs DbProviderFactory.cs
-       * DbProviderSupportedClasses.cs DbTable.cs DbTransaction.cs
-       * GroupByBehavior.cs IdentifierCase.cs SchemaLocation.cs
-       * SchemaTableColumn.cs:
-               New stubs added for .NET 1.2
-       * DataAdapter.cs DataColumnMapping.cs DataColumnMappingCollection.cs
-       * DataTableMapping.cs DataTableMappingCollection.cs DbDataAdapter.cs
-       * DbDataPermission.cs DbDataPermissionAttribute.cs DbDataRecord.cs
-       * FieldNameLookup.cs SchemaInfo.cs:
-               Changes made for .NET 1.2
-
-2003-10-22  Eran Domb  <erand@miansoft.com>
-       * DbDataAdapter.cs : Check if there is mapping to avoid exception.
-
-2003-11-26  Tim Coleman <tim@timcoleman.com>
-       * DbDataReader.cs: Add new stub class
-
-2003-11-23  Pedro Martínez Juliá  <yoros@wanadoo.es>
-
-       * DbDataAdapter.cs: Call command dispose in self dispose method. We
-       need to dispose the connections and other stuff stored in the
-       commands.
-
-2003-11-10  Pedro Martínez Juliá  <yoros@wanadoo.es>
-
-       * DataColumnMappingCollection.cs: Fix a missing exception when the
-       required mapping is not in the collection. MS.NET throws an
-       exception there.
-
-2003-10-22  Eran Domb  <erand@miansoft.com>
-
-       * DbDataAdapter.cs (Fill): add only the mapped column to the dataTable (not all columns of dataReader).
-            Also closing the dataReader if an exception is thrown.
-       (Fill): the same as above.
-       (SetupSchema): in now return string (the table name). 
-       (GetFillParameters): fix a bug.
-       (BuildSchema) - it now return Hashtable. Add columns to the table only if there is a mapping. Build an Hashtable that maps the columns from the table to the column from the reader.
-       (Update): first open the connection if needed. Catch an exception of the ExecuteQuery.
-       
-
-2003-09-30  Duncan Mak  <duncan@ximian.com>
-
-       Patch from Eran Domb <eran@mainsoft.com>.
-       
-       * DbDataAdapter.cs (Fill): Fixed an Exception from being thrown.
-
-2003-09-25  Duncan Mak  <duncan@ximian.com>
-
-       * DbDataAdapter.cs (Fill): Patch from Eran Domb, <eran@mainsoft.com>.
-       Fixes a possible NullReferenceException, more details here:
-
-       http://lists.ximian.com/archives/public/mono-devel-list/2003-September/002116.html
-
-2003-09-21  eran <erand@mainsoft.com>
-
-       * DbDataRecord.cs: The method
-       System.Data.Common.DbDataRecord.GetValues(object[] values) did not
-       put the values of the DbDataRecord into values parameter.
-
-2003-08-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DbDataAdapter.cs: provide a Type for ToArray to avoid invalid cast
-       exception. Thanks to Mark Easton <measton@tebiki.co.uk>.
-
-2003-07-31  Duncan Mak  <duncan@ximian.com>
-
-       * DataAdapter.cs (CloneInternals): Mark with ObsoleteAttribute for
-       NET_1_1.
-
-2003-03-21  Alan Tam <Tam@SiuLung.com>
-
-       * DbDataAdapter.cs: Update now uses correct DataRowVersion
-       when accessing the data.
-
-2003-03-17  Aleksey Demakov <avd@openlinksw.com>
-
-       * DbDataAdapter.cs: BuildSchema now uses ColumnName instead
-       of BaseColumnName (bug #39830) for DataColumn names.
-       BaseTableName is no longer taken into account as well.
-
-2003-02-28  Aleksey Demakov <avd@openlinksw.com>
-
-       * DbDataAdapter.cs: Update (DataSet) updates the default
-       table only.
-
-2003-02-25  Alan Tam <Tam@SiuLung.com>
-       
-       * DbDataAdapter.cs: Added support for filling when schema is present.
-       Fixed incorrect behavior when ColumnMapping is present
-       when more than one fields have the same name. Implemented Dispose.
-       Fixed error when there is no ColumnMapping at all.
-       Still have some problems in finding the correct TableMapping
-       because the SourceTable name is not present in BuildSchema
-
-2003-02-24  Aleksey Demakov <avd@openlinksw.com>
-
-       * DbDataAdapter.cs: The original code might pass a null DataTableMapping
-       value which is then used to create a RowUpdatingEventArgs
-       instance. So RowUpdatingEvent handler (for instance
-       CommandBuilder) could get null DataTableMapping which
-       might be unexpected. The patch makes sure that a non-null
-       DataTableMapping is passed.
-
-2003-01-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DbEnumerator.cs: why does the runtime throw an invalid cast here? The
-       object is an Int16... Gotta fill a bug report and when fixed undo this
-       patch.
-
-2003-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DbDataRecord.cs: return DbNull.Value in GetValue () if value is null.
-
-2002-10-31  Daniel Morgan <danmorg@sc.rr.com>
-
-       * SchemaInfo.cs: added missing properties to fix mcs build
-
-2002-05-05  Miguel de Icaza  <miguel@ximian.com>
-
-       * DataTableMapping.cs, DataTableMappingCollection.cs: comment out
-       interfaces we do not implement yet.
-
-       * DbDataAdapter.cs: Stub IEnumerable, comment out interfaces
-       we do not implement yet.
-
-       * DbDataPermissionAttribute.cs: call base constructor.
-
diff --git a/mcs/class/System.Data/System.Data.Common/ComparerFactory.cs b/mcs/class/System.Data/System.Data.Common/ComparerFactory.cs
deleted file mode 100644 (file)
index 406f69d..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace System.Data.Common
-{
-       /// <summary>
-       /// Summary description for ComparerFactory.
-       /// </summary>
-       internal class DBComparerFactory
-       {
-               private static IComparer comparableComparer = new ComparebleComparer();
-               private static IComparer ignoreCaseComparer = new IgnoreCaseComparer();
-               private static IComparer caseComparer = new CaseComparer();
-               private static IComparer byteArrayComparer = new ByteArrayComparer();
-               private static Type icomparerType = typeof (IComparable);
-
-               public static IComparer GetComparer (Type type, bool ignoreCase)
-               {
-                       if (type == typeof (string)) {
-                               if (ignoreCase)
-                                       return ignoreCaseComparer;
-                               return caseComparer;
-                       }
-                       if (icomparerType.IsAssignableFrom(type))
-                               return comparableComparer;
-                       if (type == typeof (byte[]))
-                               return byteArrayComparer;
-                       return null;
-               }
-
-               class ComparebleComparer :IComparer
-               {
-                       #region IComparer Members
-
-                       public int Compare(object x, object y)
-                       {
-                               if (x == DBNull.Value) {
-                                       if (y == DBNull.Value) 
-                                               return 0;
-
-                                       return -1;
-                               }
-
-                               if (y == DBNull.Value) 
-                                       return 1;
-                               
-                               return ((IComparable)x).CompareTo (y);
-                       }
-
-                       #endregion
-               }
-
-               class CaseComparer : IComparer
-               {
-                       #region IComparer Members
-
-                       public int Compare(object x, object y)
-                       {
-                               if (x == DBNull.Value) {
-                                       if (y == DBNull.Value) 
-                                               return 0;
-
-                                       return -1;
-                               }
-
-                               if (y == DBNull.Value) 
-                                       return 1;
-                               
-                               return String.Compare ((string)x, (string)y, false);
-                       }
-
-                       #endregion
-               }
-
-               class IgnoreCaseComparer : IComparer
-               {
-                       #region IComparer Members
-
-                       public int Compare(object x, object y)
-                       {
-                               if (x == DBNull.Value) {
-                                       if (y == DBNull.Value) 
-                                               return 0;
-
-                                       return -1;
-                               }
-
-                               if (y == DBNull.Value) 
-                                       return 1;
-                               
-                               return String.Compare ((string)x, (string)y, true);
-                       }
-
-                       #endregion
-               }
-
-               class ByteArrayComparer : IComparer
-               {
-                       #region IComparer Members
-
-                       public int Compare(object x, object y)
-                       {
-                               if (x == DBNull.Value) {
-                                       if (y == DBNull.Value) 
-                                               return 0;
-
-                                       return -1;
-                               }
-
-                               if (y == DBNull.Value) 
-                                       return 1;
-                               
-                               byte[] o1 = (byte[])x;
-                               byte[] o2 = (byte[])y;
-                               int len  = o1.Length;
-                               int lenb = o2.Length;
-
-                               for (int i = 0; ; i++) {
-                                       int a = 0;
-                                       int b = 0;
-
-                                       if (i < len) {
-                                               a = o1[i];
-                                       } 
-                                       else if (i >= lenb) {
-                                               return 0;
-                                       }
-
-                                       if (i < lenb) {
-                                               b = o2[i];
-                                       }
-
-                                       if (a > b) {
-                                               return 1;
-                                       }
-
-                                       if (b > a) {
-                                               return -1;
-                                       }
-                               }
-                       }
-
-                       #endregion
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DataAdapter.cs b/mcs/class/System.Data/System.Data.Common/DataAdapter.cs
deleted file mode 100644 (file)
index 775feb5..0000000
+++ /dev/null
@@ -1,617 +0,0 @@
-//
-// System.Data.Common.DataAdapter
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data.Common
-{
-       /// <summary>
-       /// Represents a set of data commands and a database connection that are used to fill the DataSet and update the data source.
-       /// </summary>
-       public
-       class DataAdapter : Component, IDataAdapter
-       {
-               #region Fields
-
-               private bool acceptChangesDuringFill;
-               private bool continueUpdateOnError;
-               private MissingMappingAction missingMappingAction;
-               private MissingSchemaAction missingSchemaAction;
-               private DataTableMappingCollection tableMappings;
-               private const string DefaultSourceTableName = "Table";
-               private const string DefaultSourceColumnName = "Column";
-
-               private bool acceptChangesDuringUpdate;
-               private LoadOption fillLoadOption;
-               private bool returnProviderSpecificTypes;
-               #endregion
-
-               #region Constructors
-
-               protected DataAdapter () 
-               {
-                       acceptChangesDuringFill = true;
-                       continueUpdateOnError = false;
-                       missingMappingAction = MissingMappingAction.Passthrough;
-                       missingSchemaAction = MissingSchemaAction.Add;
-                       tableMappings = new DataTableMappingCollection ();
-                       acceptChangesDuringUpdate = true;
-                       fillLoadOption = LoadOption.OverwriteChanges;
-                       returnProviderSpecificTypes = false;
-               }
-
-               protected DataAdapter (DataAdapter from)
-               {
-                       AcceptChangesDuringFill = from.AcceptChangesDuringFill;
-                       ContinueUpdateOnError = from.ContinueUpdateOnError;
-                       MissingMappingAction = from.MissingMappingAction;
-                       MissingSchemaAction = from.MissingSchemaAction;
-
-                       if (from.tableMappings != null)
-                               foreach (ICloneable cloneable in from.TableMappings)
-                                       TableMappings.Add (cloneable.Clone ());
-                       acceptChangesDuringUpdate = from.AcceptChangesDuringUpdate;
-                       fillLoadOption = from.FillLoadOption;
-                       returnProviderSpecificTypes = from.ReturnProviderSpecificTypes;
-               }
-
-               #endregion
-
-               #region Properties
-
-               [DataCategory ("Fill")]
-               [DefaultValue (true)]
-               public bool AcceptChangesDuringFill {
-                       get { return acceptChangesDuringFill; }
-                       set { acceptChangesDuringFill = value; }
-               }
-
-               [DefaultValue (true)]
-               public bool AcceptChangesDuringUpdate {
-                       get { return acceptChangesDuringUpdate; }
-                       set { acceptChangesDuringUpdate = value; }
-               }
-
-               [DataCategory ("Update")]
-               [DefaultValue (false)]
-               public bool ContinueUpdateOnError {
-                       get { return continueUpdateOnError; }
-                       set { continueUpdateOnError = value; }
-               }
-
-               [RefreshProperties (RefreshProperties.All)]
-               public LoadOption FillLoadOption {
-                       get { return fillLoadOption; }
-                       set {
-                               ExceptionHelper.CheckEnumValue (typeof (LoadOption), value);
-                               fillLoadOption = value;
-               }
-               }
-
-               ITableMappingCollection IDataAdapter.TableMappings {
-                       get { return TableMappings; }
-               }
-
-               [DataCategory ("Mapping")]
-               [DefaultValue (MissingMappingAction.Passthrough)]
-               public MissingMappingAction MissingMappingAction {
-                       get { return missingMappingAction; }
-                       set {
-                               ExceptionHelper.CheckEnumValue (typeof (MissingMappingAction), value);
-                               missingMappingAction = value;
-                       }
-               }
-
-               [DataCategory ("Mapping")]
-               [DefaultValue (MissingSchemaAction.Add)]
-               public MissingSchemaAction MissingSchemaAction {
-                       get { return missingSchemaAction; }
-                       set {
-                               ExceptionHelper.CheckEnumValue (typeof (MissingSchemaAction), value);
-                               missingSchemaAction = value; 
-                       }
-               }
-
-               [DefaultValue (false)]
-               public virtual bool ReturnProviderSpecificTypes {
-                       get { return returnProviderSpecificTypes; }
-                       set { returnProviderSpecificTypes = value; }
-               }
-
-               [DataCategory ("Mapping")]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-               public DataTableMappingCollection TableMappings {
-                       get { return tableMappings; }
-               }
-
-               #endregion
-
-               #region Events
-
-               public event FillErrorEventHandler FillError;
-
-               #endregion
-
-               #region Methods
-
-               [Obsolete ("Use the protected constructor instead")]
-               [MonoTODO]
-               protected virtual DataAdapter CloneInternals ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected virtual DataTableMappingCollection CreateTableMappings ()
-               {
-                       return new DataTableMappingCollection ();
-               }
-
-               [MonoTODO]
-               protected override void Dispose (bool disposing)
-               {
-               }
-
-               protected virtual bool ShouldSerializeTableMappings ()
-               {
-                       return true;
-               }
-
-
-               internal int FillInternal (DataTable dataTable, IDataReader dataReader)
-               {
-                       if (dataReader.FieldCount == 0) {
-                               dataReader.Close ();
-                               return 0;
-                       }
-                       
-                       int count = 0;
-
-                       try {
-                               string tableName = SetupSchema (SchemaType.Mapped, dataTable.TableName);
-                               if (tableName != null) {
-                                       dataTable.TableName = tableName;
-                                       FillTable (dataTable, dataReader, 0, 0, ref count);
-                               }
-                       } finally {
-                               dataReader.Close ();
-                       }
-
-                       return count;
-               }
-
-               // this method builds the schema for a given datatable. it returns a int array with 
-               // "array[ordinal of datatable column] == index of source column in data reader".
-               // each column in the datatable has a mapping to a specific column in the datareader,
-               // the int array represents this match.
-               internal int[] BuildSchema (IDataReader reader, DataTable table, SchemaType schemaType)
-               {
-                       return BuildSchema (reader, table, schemaType, MissingSchemaAction,
-                                           MissingMappingAction, TableMappings);
-               }
-
-               /// <summary>
-               ///     Creates or Modifies the schema of the given DataTable based on the schema of
-               ///     the reader and the arguments passed.
-               /// </summary>
-               internal static int[] BuildSchema (IDataReader reader, DataTable table,
-                                                   SchemaType schemaType,
-                                                   MissingSchemaAction missingSchAction,
-                                                   MissingMappingAction missingMapAction,
-                                                   DataTableMappingCollection dtMapping
-                                                   )
-               {
-                       int readerIndex = 0;
-                       // FIXME : this fails if query has fewer columns than a table
-                       int[] mapping = new int[table.Columns.Count]; // mapping the reader indexes to the datatable indexes
-                       
-                       for(int i=0; i < mapping.Length; i++) {
-                               mapping[i] = -1;
-                       }
-                       
-                       ArrayList primaryKey = new ArrayList ();
-                       ArrayList sourceColumns = new ArrayList ();
-                       bool createPrimaryKey = true;
-                       
-                       DataTable schemaTable = reader.GetSchemaTable ();
-
-                       DataColumn ColumnNameCol =  schemaTable.Columns["ColumnName"];
-                       DataColumn DataTypeCol = schemaTable.Columns["DataType"];
-                       DataColumn IsAutoIncrementCol = schemaTable.Columns["IsAutoIncrement"];
-                       DataColumn AllowDBNullCol = schemaTable.Columns["AllowDBNull"];
-                       DataColumn IsReadOnlyCol = schemaTable.Columns["IsReadOnly"];
-                       DataColumn IsKeyCol = schemaTable.Columns["IsKey"];
-                       DataColumn IsUniqueCol = schemaTable.Columns["IsUnique"];
-                       DataColumn ColumnSizeCol = schemaTable.Columns["ColumnSize"];
-
-                       foreach (DataRow schemaRow in schemaTable.Rows) {
-                               // generate a unique column name in the source table.
-                               string sourceColumnName;
-                               string realSourceColumnName ;
-                               if (ColumnNameCol == null || schemaRow.IsNull(ColumnNameCol) ||
-                                   (string)schemaRow [ColumnNameCol] == String.Empty) {
-                                       sourceColumnName = DefaultSourceColumnName;
-                                       realSourceColumnName = DefaultSourceColumnName + "1";
-                               } else {
-                                       sourceColumnName = (string) schemaRow [ColumnNameCol];
-                                       realSourceColumnName = sourceColumnName;
-                               }
-
-                               for (int i = 1; sourceColumns.Contains (realSourceColumnName); i += 1)
-                                       realSourceColumnName = String.Format ("{0}{1}", sourceColumnName, i);
-                               sourceColumns.Add(realSourceColumnName);
-
-                               // generate DataSetColumnName from DataTableMapping, if any
-                               DataTableMapping tableMapping = null;
-
-                               //FIXME : The sourcetable name shud get passed as a parameter.. 
-                               int index = dtMapping.IndexOfDataSetTable (table.TableName);
-                               string srcTable = (index != -1 ? dtMapping[index].SourceTable : table.TableName);
-                               tableMapping = DataTableMappingCollection.GetTableMappingBySchemaAction (dtMapping, ADP.IsEmpty (srcTable) ? " " : srcTable, table.TableName, missingMapAction); 
-                               if (tableMapping != null) {
-                                       table.TableName = tableMapping.DataSetTable;
-                                       // check to see if the column mapping exists
-                                       DataColumnMapping columnMapping = DataColumnMappingCollection.GetColumnMappingBySchemaAction(tableMapping.ColumnMappings, realSourceColumnName, missingMapAction);
-                                       if (columnMapping != null) {
-                                               Type columnType = schemaRow[DataTypeCol] as Type;
-                                               DataColumn col = columnType != null ? columnMapping.GetDataColumnBySchemaAction(
-                                                                                                                               table ,
-                                                                                                                               columnType,
-                                                                                                                               missingSchAction) : null;
-
-                                               if (col != null) {
-                                                       // if the column is not in the table - add it.
-                                                       if (table.Columns.IndexOf(col) == -1) {
-                                                               if (missingSchAction == MissingSchemaAction.Add 
-                                                                   || missingSchAction == MissingSchemaAction.AddWithKey)
-                                                                       table.Columns.Add(col);
-
-                                                               int[] tmp = new int[mapping.Length + 1];
-                                                               Array.Copy(mapping,0,tmp,0,col.Ordinal);
-                                                               Array.Copy(mapping,col.Ordinal,tmp,col.Ordinal + 1,mapping.Length - col.Ordinal);
-                                                               mapping = tmp;
-                                                       }
-
-                                                       if (missingSchAction == MissingSchemaAction.AddWithKey) {
-                                                               object value = (AllowDBNullCol != null) ? schemaRow[AllowDBNullCol] : null;
-                                                               bool allowDBNull = value is bool ? (bool)value : true;
-
-                                                               value = (IsKeyCol != null) ? schemaRow[IsKeyCol] : null;
-                                                               bool isKey = value is bool ? (bool)value : false;
-
-                                                               value = (IsAutoIncrementCol != null) ? schemaRow[IsAutoIncrementCol] : null;
-                                                               bool isAutoIncrement = value is bool ? (bool)value : false;
-
-                                                               value = (IsReadOnlyCol != null) ? schemaRow[IsReadOnlyCol] : null;
-                                                               bool isReadOnly = value is bool ? (bool)value : false;
-
-                                                               value = (IsUniqueCol != null) ? schemaRow[IsUniqueCol] : null;
-                                                               bool isUnique = value is bool ? (bool)value : false;
-                                                               
-                                                               col.AllowDBNull = allowDBNull;
-                                                               // fill woth key info
-                                                               if (isAutoIncrement && DataColumn.CanAutoIncrement(columnType)) {
-                                                                       col.AutoIncrement = true;
-                                                                       if (!allowDBNull)
-                                                                               col.AllowDBNull = false;
-                                                               }
-
-                                                               if (columnType == DbTypes.TypeOfString) {
-                                                                       col.MaxLength = (ColumnSizeCol != null) ? (int)schemaRow[ColumnSizeCol] : 0;
-                                                               }
-
-                                                               if (isReadOnly)
-                                                                       col.ReadOnly = true;
-                                                                       
-                                                               if (!allowDBNull && (!isReadOnly || isKey))
-                                                                       col.AllowDBNull = false;
-                                                               if (isUnique && !isKey && !columnType.IsArray) {
-                                                                       col.Unique = true;
-                                                                       if (!allowDBNull)
-                                                                               col.AllowDBNull = false;
-                                                               }
-                                                               
-                                                               // This might not be set by all DataProviders
-                                                               bool isHidden = false;
-                                                               if (schemaTable.Columns.Contains ("IsHidden")) {
-                                                                       value = schemaRow["IsHidden"];
-                                                                       isHidden = ((value is bool) ? (bool)value : false);
-                                                               }
-
-                                                               if (isKey && !isHidden) {
-                                                                       primaryKey.Add (col);
-                                                                       if (allowDBNull)
-                                                                               createPrimaryKey = false;
-                                                               }
-                                                       }
-                                                       // add the ordinal of the column as a key and the index of the column in the datareader as a value.
-                                                       mapping[col.Ordinal] = readerIndex++;
-                                               }
-                                       }
-                               }
-                       }
-                       if (primaryKey.Count > 0) {
-                               DataColumn[] colKey = (DataColumn[])(primaryKey.ToArray(typeof (DataColumn)));
-                               if (createPrimaryKey)
-                                       table.PrimaryKey = colKey;
-                               else {
-                                       UniqueConstraint uConstraint = new UniqueConstraint(colKey);
-                                       for (int i = 0; i < table.Constraints.Count; i++) {
-                                               if (table.Constraints[i].Equals(uConstraint)) {
-                                                       uConstraint = null;
-                                                       break;
-                                               }
-                                       }
-
-                                       if (uConstraint != null)
-                                               table.Constraints.Add(uConstraint);
-                               }
-                       }
-                       return mapping;
-               }
-
-               internal bool FillTable (DataTable dataTable, IDataReader dataReader, int startRecord, int maxRecords, ref int counter)
-               {
-                       if (dataReader.FieldCount == 0)
-                               return false;
-
-                       int counterStart = counter;
-
-                       int[] mapping = BuildSchema (dataReader, dataTable, SchemaType.Mapped);
-                       
-                       int [] sortedMapping = new int [mapping.Length];
-                       int length = sortedMapping.Length;
-                       for (int i = 0; i < sortedMapping.Length; i++) {
-                               if (mapping [i] >= 0)
-                                       sortedMapping [mapping [i]] = i;
-                               else
-                                       sortedMapping [--length] = i;
-                       }
-
-                       for (int i = 0; i < startRecord; i++) {
-                               dataReader.Read ();
-                       }
-
-                       dataTable.BeginLoadData ();
-                       while (dataReader.Read () && (maxRecords == 0 || (counter - counterStart) < maxRecords)) {
-                               try {
-                                       dataTable.LoadDataRow (dataReader, sortedMapping, length, AcceptChangesDuringFill);
-                                       counter++;
-                               }
-                               catch (Exception e) {
-                                       object[] readerArray = new object [dataReader.FieldCount];
-                                       object[] tableArray = new object [mapping.Length];
-                                       // we get the values from the datareader
-                                       dataReader.GetValues (readerArray);
-                                       // copy from datareader columns to table columns according to given mapping
-                                       for (int i = 0; i < mapping.Length; i++) {
-                                               if (mapping [i] >= 0) {
-                                                       tableArray [i] = readerArray [mapping [i]];
-                                               }
-                                       }
-                                       FillErrorEventArgs args = CreateFillErrorEvent (dataTable, tableArray, e);
-                                       OnFillErrorInternal (args);
-
-                                       // if args.Continue is not set to true or if a handler is not set, rethrow the error..
-                                       if(!args.Continue)
-                                               throw e;
-                               }
-                       }
-                       dataTable.EndLoadData ();
-                       return true;
-               }
-
-               internal virtual void OnFillErrorInternal (FillErrorEventArgs value)
-               {
-                       OnFillError (value);
-               }
-
-               internal FillErrorEventArgs CreateFillErrorEvent (DataTable dataTable, object[] values, Exception e)
-               {
-                       FillErrorEventArgs args = new FillErrorEventArgs (dataTable, values);
-                       args.Errors = e;
-                       args.Continue = false;
-                       return args;
-               }
-
-               internal string SetupSchema (SchemaType schemaType, string sourceTableName)
-               {
-                       DataTableMapping tableMapping = null;
-
-                       if (schemaType == SchemaType.Mapped) {
-                               tableMapping = DataTableMappingCollection.GetTableMappingBySchemaAction (TableMappings, sourceTableName, sourceTableName, MissingMappingAction);
-                               if (tableMapping != null)
-                                       return tableMapping.DataSetTable;
-                               return null;
-                       } else
-                               return sourceTableName;
-               }
-
-               internal int FillInternal (DataSet dataSet, string srcTable, IDataReader dataReader, int startRecord, int maxRecords)
-               {
-                       if (dataSet == null)
-                               throw new ArgumentNullException ("DataSet");
-
-                       if (startRecord < 0)
-                               throw new ArgumentException ("The startRecord parameter was less than 0.");
-                       if (maxRecords < 0)
-                               throw new ArgumentException ("The maxRecords parameter was less than 0.");
-
-                       DataTable dataTable = null;
-                       int resultIndex = 0;
-                       int count = 0;
-                       
-                       try {
-                               string tableName = srcTable;
-                               do {
-                                       // Non-resultset queries like insert, delete or update aren't processed.
-                                       if (dataReader.FieldCount != -1) {
-                                               tableName = SetupSchema (SchemaType.Mapped, tableName);
-                                               if (tableName != null) {
-                                                       
-                                                       // check if the table exists in the dataset
-                                                       if (dataSet.Tables.Contains (tableName))
-                                                               // get the table from the dataset
-                                                               dataTable = dataSet.Tables [tableName];
-                                                       else {
-                                                               // Do not create schema if MissingSchemAction is set to Ignore
-                                                               if (this.MissingSchemaAction == MissingSchemaAction.Ignore)
-                                                                       continue;
-                                                               dataTable = dataSet.Tables.Add (tableName);
-                                                       }
-       
-                                                       if (!FillTable (dataTable, dataReader, startRecord, maxRecords, ref count))
-                                                               continue;
-       
-                                                       tableName = String.Format ("{0}{1}", srcTable, ++resultIndex);
-       
-                                                       startRecord = 0;
-                                                       maxRecords = 0;
-                                               }
-                                       }
-                               } while (dataReader.NextResult ());
-                       } finally {
-                               dataReader.Close ();
-                       }
-
-                       return count;
-               }
-
-               public virtual int Fill (DataSet dataSet)
-               {
-                       throw new NotSupportedException();
-               }
-
-               protected virtual int Fill (DataTable dataTable, IDataReader dataReader)
-               {
-                       return FillInternal (dataTable, dataReader);
-               }
-
-               protected virtual int Fill (DataTable[] dataTables, IDataReader dataReader, int startRecord, int maxRecords)
-               {
-                       int count = 0;
-                       if (dataReader.IsClosed)
-                               return 0;
-
-                       if (startRecord < 0)
-                               throw new ArgumentException ("The startRecord parameter was less than 0.");
-                       if (maxRecords < 0)
-                               throw new ArgumentException ("The maxRecords parameter was less than 0.");
-
-                       try {
-                               foreach (DataTable dataTable in dataTables) {
-                                       string tableName = SetupSchema (SchemaType.Mapped, dataTable.TableName);
-                                       if (tableName != null) {
-                                               dataTable.TableName = tableName;
-                                               FillTable (dataTable, dataReader, 0, 0, ref count);
-                                       }
-                               }
-                       } finally {
-                               dataReader.Close ();
-                       }
-
-                       return count;
-               }
-
-               protected virtual int Fill (DataSet dataSet, string srcTable, IDataReader dataReader, int startRecord, int maxRecords)
-               {
-                       return FillInternal (dataSet, srcTable, dataReader, startRecord, maxRecords);
-               }
-
-               [MonoTODO]
-               protected virtual DataTable FillSchema (DataTable dataTable, SchemaType schemaType, IDataReader dataReader)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual DataTable[] FillSchema (DataSet dataSet, SchemaType schemaType, string srcTable, IDataReader dataReader)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public virtual DataTable[] FillSchema (DataSet dataSet, SchemaType schemaType)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               [MonoTODO]
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public virtual IDataParameter[] GetFillParameters ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected bool HasTableMappings ()
-               {
-                       return (TableMappings.Count != 0);
-               }
-
-               protected virtual void OnFillError (FillErrorEventArgs value)
-               {
-                       if (FillError != null)
-                               FillError (this, value);
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public void ResetFillLoadOption ()
-               {
-                       //FIXME: what else ??
-                       FillLoadOption = LoadOption.OverwriteChanges;
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public virtual bool ShouldSerializeAcceptChangesDuringFill ()
-               {
-                       return true;
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public virtual bool ShouldSerializeFillLoadOption ()
-               {
-                       return false;
-               }
-
-               [MonoTODO]
-               public virtual int Update (DataSet dataSet)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion
-               
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DataContainer.cs b/mcs/class/System.Data/System.Data.Common/DataContainer.cs
deleted file mode 100644 (file)
index 7a46a04..0000000
+++ /dev/null
@@ -1,1010 +0,0 @@
-//
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Reflection;
-#if !FULL_AOT_RUNTIME
-using System.Reflection.Emit;
-#endif
-
-namespace System.Data.Common
-{
-       internal abstract class DataContainer {
-               BitArray null_values;
-               System.Type _type;
-               DataColumn _column;
-
-               // implementing class protocol
-               protected internal abstract object GetValue (int index);
-               internal abstract long GetInt64 (int index);
-
-               // used to set the array value to something neutral when the corresponding item is null (in the database sense)
-               // note: we don't actually ever look at the value written there, but the GC may like us to avoid keeping stale
-               // values in the array.
-               protected abstract void ZeroOut (int index);
-               protected abstract void SetValue (int index, object value);
-               protected abstract void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field);
-
-               protected abstract void DoCopyValue (DataContainer from, int from_index, int to_index);
-               protected abstract int DoCompareValues (int index1, int index2);
-
-               protected abstract void Resize (int length);
-
-               internal object this [int index] {
-                       get { return IsNull (index) ? DBNull.Value : GetValue (index); }
-                       set {
-                               if (value == null) {
-                                       // Table might not have a default values row to copy from
-                                       if (Column.Table.DefaultValuesRowIndex == -1) {
-                                               ZeroOut (index);
-                                               null_values [index] = true;
-                                       } else {
-                                               CopyValue (Column.Table.DefaultValuesRowIndex, index);
-                                       }
-                                       return;
-                               }
-
-                               bool is_dbnull = value == DBNull.Value;
-                               if (is_dbnull)
-                                       ZeroOut (index);
-                               else
-                                       SetValue (index, value);
-                               null_values [index] = is_dbnull;
-                       }
-               }
-
-               internal int Capacity {
-                       get { return null_values != null ? null_values.Count : 0; }
-                       set {
-                               int old_capacity = Capacity;
-                               if (value == old_capacity)
-                                       return;
-                               if (null_values == null)
-                                       null_values = new BitArray (value);
-                               else
-                                       null_values.Length = value;
-                               Resize (value);
-                       }
-               }
-
-               internal Type Type {
-                       get { return _type; }
-               }
-
-               protected DataColumn Column {
-                       get { return _column; }
-               }
-
-               internal static DataContainer Create (Type type, DataColumn column)
-               {
-                       DataContainer container;
-                       switch (Type.GetTypeCode(type)) {
-                       case TypeCode.Int16:
-                               container = new Int16DataContainer ();
-                               break;
-                       case TypeCode.Int32:
-                               container = new Int32DataContainer ();
-                               break;
-                       case TypeCode.Int64:
-                               container = new Int64DataContainer ();
-                               break;
-                       case TypeCode.String:
-                               container = new StringDataContainer ();
-                               break;
-                       case TypeCode.Boolean:
-                               container = new BitDataContainer ();
-                               break;
-                       case TypeCode.Byte:
-                               container = new ByteDataContainer ();
-                               break;
-                       case TypeCode.Char:
-                               container = new CharDataContainer ();
-                               break;
-                       case TypeCode.Double:
-                               container = new DoubleDataContainer ();
-                               break;
-                       case TypeCode.SByte:
-                               container = new SByteDataContainer ();
-                               break;
-                       case TypeCode.Single:
-                               container = new SingleDataContainer ();
-                               break;
-                       case TypeCode.UInt16:
-                               container = new UInt16DataContainer ();
-                               break;
-                       case TypeCode.UInt32:
-                               container = new UInt32DataContainer ();
-                               break;
-                       case TypeCode.UInt64:
-                               container = new UInt64DataContainer ();
-                               break;
-                       case TypeCode.DateTime:
-                               container = new DateTimeDataContainer ();
-                               break;
-                       case TypeCode.Decimal:
-                               container = new DecimalDataContainer ();
-                               break;
-                       default:
-                               container = new ObjectDataContainer ();
-                               break;
-                       }
-                       container._type = type;
-                       container._column = column;
-                       return container;
-               }
-
-               internal static object GetExplicitValue (object value) 
-               {
-                       Type valueType = value.GetType ();
-                       MethodInfo method = valueType.GetMethod ("op_Explicit", new Type[]{valueType});
-                       if (method != null) 
-                               return (method.Invoke (value, new object[]{value}));
-                       return null;
-               }
-               
-               internal object GetContainerData (object value) 
-               {
-                       object obj; 
-                       TypeCode tc;
-                       
-                       if (value == null)
-                               return null;
-                       
-                       if (_type.IsInstanceOfType (value)) {
-                               return value;
-                       } else if ((tc = Type.GetTypeCode (_type)) == TypeCode.String) {
-                               return (Convert.ToString (value));
-                       } else if (value is IConvertible) {
-                               switch (tc) {
-                                       case TypeCode.Int16:
-                                               return (Convert.ToInt16 (value));
-                                       case TypeCode.Int32:
-                                               return (Convert.ToInt32 (value));
-                                       case TypeCode.Int64:
-                                               return (Convert.ToInt64 (value));
-                                       case TypeCode.Boolean:
-                                               return (Convert.ToBoolean (value));
-                                       case TypeCode.Byte:
-                                               return (Convert.ToByte (value));
-                                       case TypeCode.Char:
-                                               return (Convert.ToChar (value));
-                                       case TypeCode.Double:
-                                               return (Convert.ToDouble (value));
-                                       case TypeCode.SByte:
-                                               return (Convert.ToSByte (value));
-                                       case TypeCode.Single:
-                                               return (Convert.ToSingle (value));
-                                       case TypeCode.UInt16:
-                                               return (Convert.ToUInt16 (value));
-                                       case TypeCode.UInt32:
-                                               return (Convert.ToUInt32 (value));
-                                       case TypeCode.UInt64:
-                                               return (Convert.ToUInt64 (value));
-                                       case TypeCode.DateTime:
-                                               if (value == DBNull.Value)
-                                                       return DBNull.Value;
-                                               return (Convert.ToDateTime (value));
-                                       case TypeCode.Decimal:
-                                               return (Convert.ToDecimal (value));
-                                       default:
-                                               throw new InvalidCastException (string.Format ("Cannot convert from {0} to {1}", value.GetType ().FullName, _type.FullName));
-                               }
-                       } else if ((obj = GetExplicitValue (value)) != null) {
-                               return (obj);
-                       } else {
-                               throw new InvalidCastException ();
-                       }
-               }
-               
-               internal bool IsNull (int index)
-               {
-                       return null_values == null || null_values [index];
-               }
-
-               internal void FillValues (int fromIndex)
-               {
-                       for (int i = 0; i < Capacity; i++)
-                               CopyValue (fromIndex, i);
-               }
-
-               internal void CopyValue (int from_index, int to_index)
-               {
-                       CopyValue (this, from_index, to_index);
-               }
-
-               internal void CopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       DoCopyValue (from, from_index, to_index);
-                       null_values [to_index] = from.null_values [from_index];
-               }
-
-               internal void SetItemFromDataRecord (int index, IDataRecord record, int field)
-               {
-                       if (record.IsDBNull (field))
-                               this [index] = DBNull.Value;
-                       else if (record is ISafeDataRecord)
-                               SetValueFromSafeDataRecord (index, (ISafeDataRecord) record, field);
-                       else
-                               this [index] = record.GetValue (field);
-               }
-
-               internal int CompareValues (int index1, int index2)
-               {
-                       bool null1 = IsNull (index1);
-                       bool null2 = IsNull (index2);
-
-                       if (null1 == null2)
-                               return null1 ? 0 : DoCompareValues (index1, index2);
-                       return null1 ? -1 : 1;
-               }
-       }
-
-       sealed class BitDataContainer : DataContainer {
-               BitArray _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = false;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (bool) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetBooleanSafe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (bool) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       bool val1 = _values [index1];
-                       bool val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 ? 1 : -1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null)
-                               _values = new BitArray (size);
-                       else
-                               _values.Length = size;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return Convert.ToInt64 (_values [index]);
-               }
-       }
-
-       sealed class CharDataContainer : DataContainer {
-               char [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = '\0';
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (char) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetCharSafe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (char) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       char val1 = _values [index1];
-                       char val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new char [size];
-                               return;
-                       }
-
-                       char[] tmp = new char [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return Convert.ToInt64 (_values [index]);
-               }
-       }
-
-       sealed class ByteDataContainer : DataContainer {
-               byte [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (byte) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetByteSafe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (byte) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       int val1 = _values [index1];
-                       int val2 = _values [index2];
-                       return val1 - val2;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new byte [size];
-                               return;
-                       }
-
-                       byte[] tmp = new byte [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class SByteDataContainer : DataContainer {
-               sbyte [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (sbyte) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = (sbyte) record.GetByteSafe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (sbyte) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       int val1 = _values [index1];
-                       int val2 = _values [index2];
-                       return val1 - val2;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new sbyte [size];
-                               return;
-                       }
-
-                       sbyte[] tmp = new sbyte [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class Int16DataContainer : DataContainer {
-               short [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (short) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetInt16Safe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (short) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       int val1 = _values [index1];
-                       int val2 = _values [index2];
-                       return val1 - val2;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new short [size];
-                               return;
-                       }
-
-                       short[] tmp = new short [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class UInt16DataContainer : DataContainer {
-               ushort [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (ushort) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = (ushort) record.GetInt16Safe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (ushort) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       int val1 = _values [index1];
-                       int val2 = _values [index2];
-                       return val1 - val2;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new ushort [size];
-                               return;
-                       }
-
-                       ushort[] tmp = new ushort [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class Int32DataContainer : DataContainer {
-               int [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (int) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetInt32Safe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (int) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       int val1 = _values [index1];
-                       int val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new int [size];
-                               return;
-                       }
-
-                       int[] tmp = new int [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class UInt32DataContainer : DataContainer {
-               uint [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (uint) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = (uint) record.GetInt32Safe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (uint) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       uint val1 = _values [index1];
-                       uint val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new uint [size];
-                               return;
-                       }
-
-                       uint[] tmp = new uint [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class Int64DataContainer : DataContainer {
-               long [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (long) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetInt64Safe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (long) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       long val1 = _values [index1];
-                       long val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new long [size];
-                               return;
-                       }
-
-                       long[] tmp = new long [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return _values [index];
-               }
-       }
-
-       sealed class UInt64DataContainer : DataContainer {
-               ulong [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (ulong) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = (ulong) record.GetInt64Safe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (ulong) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       ulong val1 = _values [index1];
-                       ulong val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new ulong [size];
-                               return;
-                       }
-
-                       ulong[] tmp = new ulong [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return Convert.ToInt64 (_values [index]);
-               }
-       }
-
-       sealed class SingleDataContainer : DataContainer {
-               float [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (float) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetFloatSafe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (float) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       float val1 = _values [index1];
-                       float val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new float [size];
-                               return;
-                       }
-
-                       float[] tmp = new float [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return Convert.ToInt64 (_values [index]);
-               }
-       }
-
-       sealed class DoubleDataContainer : DataContainer {
-               double [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = 0;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = (double) GetContainerData (value);
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetDoubleSafe (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = (double) GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       double val1 = _values [index1];
-                       double val2 = _values [index2];
-                       return val1 == val2 ? 0 : val1 < val2 ? -1 : 1;
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new double [size];
-                               return;
-                       }
-
-                       double[] tmp = new double [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return Convert.ToInt64 (_values[index]);
-               }
-       }
-
-       class ObjectDataContainer : DataContainer {
-               object [] _values;
-
-               protected internal override object GetValue (int index)
-               {
-                       return _values [index];
-               }
-
-               protected override void ZeroOut (int index)
-               {
-                       _values [index] = null;
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       _values [index] = value;
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       _values [index] = record.GetValue (field);
-               }
-
-               protected override void DoCopyValue (DataContainer from, int from_index, int to_index)
-               {
-                       _values [to_index] = GetContainerData (from.GetValue (from_index));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       object obj1 = _values [index1];
-                       object obj2 = _values [index2];
-
-                       if (obj1 == obj2)
-                               return 0;
-
-                       if (obj1 is IComparable) {
-                               try {
-                                       return ((IComparable)obj1).CompareTo (obj2);
-                               } catch {
-                                       if (obj2 is IComparable) {
-                                               obj2 = Convert.ChangeType (obj2, Type.GetTypeCode (obj1.GetType ()));
-                                               return ((IComparable)obj1).CompareTo (obj2);
-                                       }
-                               }
-                       }
-
-                       return String.Compare (obj1.ToString (), obj2.ToString ());
-               }
-
-               protected override void Resize (int size)
-               {
-                       if (_values == null) {
-                               _values = new object [size];
-                               return;
-                       }
-
-                       object[] tmp = new object [size];
-                       Array.Copy (_values, 0, tmp, 0, _values.Length);
-                       _values = tmp;
-               }
-
-               internal override long GetInt64 (int index)
-               {
-                       return Convert.ToInt64 (_values [index]);
-               }
-       }
-
-       sealed class DateTimeDataContainer : ObjectDataContainer {
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       base.SetValue (index, record.GetDateTimeSafe (field));
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       base.SetValue (index, GetContainerData (value));
-               }
-       }
-
-       sealed class DecimalDataContainer : ObjectDataContainer {
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       base.SetValue (index, record.GetDecimalSafe (field));
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       base.SetValue (index, GetContainerData (value));
-               }
-       }
-
-       sealed class StringDataContainer : ObjectDataContainer {
-               private void SetValue (int index, string value)
-               {
-                       if (value != null && Column.MaxLength >= 0 && Column.MaxLength < value.Length)
-                               throw new ArgumentException ("Cannot set column '" + Column.ColumnName + "' to '" + value + "'. The value violates the MaxLength limit of this column.");
-                       base.SetValue (index, value);
-               }
-
-               protected override void SetValue (int index, object value)
-               {
-                       SetValue (index, (string) GetContainerData (value));
-               }
-
-               protected override void SetValueFromSafeDataRecord (int index, ISafeDataRecord record, int field)
-               {
-                       SetValue (index, record.GetStringSafe (field));
-               }
-
-               protected override int DoCompareValues (int index1, int index2)
-               {
-                       DataTable table = Column.Table;
-                       return String.Compare ((string) this [index1], (string) this [index2], !table.CaseSensitive, table.Locale);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbCommand.cs b/mcs/class/System.Data/System.Data.Common/DbCommand.cs
deleted file mode 100644 (file)
index ad56931..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-//
-// System.Data.Common.DbCommand
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data;
-
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace System.Data.Common {
-       public abstract class DbCommand : Component, IDbCommand, IDisposable
-       {
-               protected DbCommand ()
-               {
-               }
-
-               #region Properties
-
-               [DefaultValue ("")]
-               [RefreshProperties (RefreshProperties.All)]
-               public abstract string CommandText { get; set; }
-
-               public abstract int CommandTimeout { get; set; }
-
-               [DefaultValue (CommandType.Text)]
-               [RefreshProperties (RefreshProperties.All)]
-               public abstract CommandType CommandType { get; set; }
-
-               [DefaultValue (null)]
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbConnection Connection {
-                       get { return DbConnection; }
-                       set { DbConnection = value; }
-               }
-
-               protected abstract DbConnection DbConnection { get; set; }
-               protected abstract DbParameterCollection DbParameterCollection { get; }
-               protected abstract DbTransaction DbTransaction { get; set; }
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               [Browsable (false)]
-               [DefaultValue (true)]
-               [DesignOnly (true)]
-               public abstract bool DesignTimeVisible { get; set; }
-
-               IDbConnection IDbCommand.Connection {
-                       get { return Connection; }
-                       set { Connection = (DbConnection) value; }
-               }
-
-               IDataParameterCollection IDbCommand.Parameters {
-                       get { return Parameters; }
-               }
-
-               IDbTransaction IDbCommand.Transaction {
-                       get { return Transaction; }
-                       set { Transaction = (DbTransaction) value; }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbParameterCollection Parameters {
-                       get { return DbParameterCollection; }
-               }
-
-               [Browsable (false)]
-               [DefaultValue (null)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbTransaction Transaction {
-                       get { return DbTransaction; }
-                       set { DbTransaction = value; }
-               }
-
-               [DefaultValue (UpdateRowSource.Both)]
-               public abstract UpdateRowSource UpdatedRowSource { get; set; }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public abstract void Cancel ();
-               protected abstract DbParameter CreateDbParameter ();
-
-               public DbParameter CreateParameter ()
-               {
-                       return CreateDbParameter ();
-               }
-
-               protected abstract DbDataReader ExecuteDbDataReader (CommandBehavior behavior);
-               public abstract int ExecuteNonQuery ();
-               
-               public DbDataReader ExecuteReader ()
-               {
-                       return ExecuteDbDataReader (CommandBehavior.Default);
-               }
-
-               public DbDataReader ExecuteReader (CommandBehavior behavior)
-               {
-                        return ExecuteDbDataReader (behavior);
-               }
-
-               public abstract object ExecuteScalar ();
-
-               IDbDataParameter IDbCommand.CreateParameter ()
-               {
-                       return CreateParameter ();
-               }
-
-               IDataReader IDbCommand.ExecuteReader ()
-               {
-                       return ExecuteReader ();
-               }
-
-               IDataReader IDbCommand.ExecuteReader (CommandBehavior behavior)
-               {
-                       return ExecuteReader (behavior);
-               }
-
-               public abstract void Prepare ();
-               
-               protected virtual Task<DbDataReader> ExecuteDbDataReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<DbDataReader> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (ExecuteDbDataReader (behavior));
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<DbDataReader> (e);
-                       }
-               }
-               
-               public Task<int> ExecuteNonQueryAsync ()
-               {
-                       return ExecuteNonQueryAsync (CancellationToken.None);
-               }
-               
-               public virtual Task<int> ExecuteNonQueryAsync (CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<int> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (ExecuteNonQuery ());
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<int> (e);
-                       }
-               }
-               
-               public Task<Object> ExecuteScalarAsync ()
-               {
-                       return ExecuteScalarAsync (CancellationToken.None);
-               }
-               
-               public virtual Task<Object> ExecuteScalarAsync (CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<Object> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (ExecuteScalar ());
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<Object> (e);
-                       }
-               }
-               
-               public Task<DbDataReader> ExecuteReaderAsync ()
-               {
-                       return ExecuteReaderAsync (CancellationToken.None);
-               }
-               
-               public Task<DbDataReader> ExecuteReaderAsync (CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<DbDataReader> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (ExecuteReader ());
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<DbDataReader> (e);
-                       }
-               }
-               
-               public Task<DbDataReader> ExecuteReaderAsync (CommandBehavior behavior)
-               {
-                       return ExecuteReaderAsync (behavior, CancellationToken.None);
-               }
-               
-               public Task<DbDataReader> ExecuteReaderAsync (CommandBehavior behavior, CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<DbDataReader> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (ExecuteReader (behavior));
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<DbDataReader> (e);
-                       }
-               }
-
-               
-               #endregion // Methods
-
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbCommandBuilder.cs b/mcs/class/System.Data/System.Data.Common/DbCommandBuilder.cs
deleted file mode 100644 (file)
index 2f83b30..0000000
+++ /dev/null
@@ -1,696 +0,0 @@
-//
-// System.Data.Common.DbCommandBuilder
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.ComponentModel;
-using System.Data;
-using System.Globalization;
-using System.Text;
-
-namespace System.Data.Common {
-       public abstract class DbCommandBuilder : Component
-       {
-               bool _setAllValues;
-               bool _disposed;
-
-               DataTable _dbSchemaTable;
-               DbDataAdapter _dbDataAdapter;
-               private CatalogLocation _catalogLocation = CatalogLocation.Start;
-               private ConflictOption _conflictOption = ConflictOption.CompareAllSearchableValues;
-
-               private string _tableName;
-               private string _catalogSeparator;
-               private string _quotePrefix;
-               private string _quoteSuffix;
-               private string _schemaSeparator;
-               private DbCommand _dbCommand;
-
-               DbCommand _deleteCommand;
-               DbCommand _insertCommand;
-               DbCommand _updateCommand;
-
-               static readonly string SEPARATOR_DEFAULT = ".";
-               // Used to construct WHERE clauses
-               static readonly string clause1 = "({0} = 1 AND {1} IS NULL)";
-               static readonly string clause2 = "({0} = {1})";
-
-               protected DbCommandBuilder ()
-               {
-               }
-
-               private void BuildCache (bool closeConnection)
-               {
-                       DbCommand sourceCommand = SourceCommand;
-                       if (sourceCommand == null)
-                               throw new InvalidOperationException ("The DataAdapter.SelectCommand property needs to be initialized.");
-                       DbConnection connection = sourceCommand.Connection;
-                       if (connection == null)
-                               throw new InvalidOperationException ("The DataAdapter.SelectCommand.Connection property needs to be initialized.");
-
-                       if (_dbSchemaTable == null) {
-                               if (connection.State == ConnectionState.Open)
-                                       closeConnection = false;        
-                               else
-                                       connection.Open ();
-       
-                               DbDataReader reader = sourceCommand.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
-                               _dbSchemaTable = reader.GetSchemaTable ();
-                               reader.Close ();
-                               if (closeConnection)
-                                       connection.Close ();    
-                               BuildInformation (_dbSchemaTable);
-                       }
-               }
-               
-               private string QuotedTableName {
-                       get { return GetQuotedString (_tableName); }
-               }
-
-               bool IsCommandGenerated {
-                       get {
-                               return (_insertCommand != null || _updateCommand != null || _deleteCommand != null);
-                       }
-               }
-
-               private string GetQuotedString (string value)
-               {
-                       if (value == String.Empty || value == null)
-                               return value;
-
-                       string prefix = QuotePrefix;
-                       string suffix = QuoteSuffix;
-
-                       if (prefix.Length == 0 && suffix.Length == 0)
-                               return value;
-                       return String.Format ("{0}{1}{2}", prefix, value, suffix);
-               }
-
-               private void BuildInformation (DataTable schemaTable)
-               {
-                       _tableName = String.Empty;
-                       foreach (DataRow schemaRow in schemaTable.Rows) {
-                               if (schemaRow.IsNull ("BaseTableName") || (string) schemaRow ["BaseTableName"] == String.Empty)
-                                       continue;
-
-                               if (_tableName == String.Empty) 
-                                       _tableName = (string) schemaRow ["BaseTableName"];
-                               else if (_tableName != (string) schemaRow["BaseTableName"])
-                                       throw new InvalidOperationException ("Dynamic SQL generation is not supported against multiple base tables.");
-                       }
-                       if (_tableName == String.Empty)
-                               throw new InvalidOperationException ("Dynamic SQL generation is not supported with no base table.");
-                       _dbSchemaTable = schemaTable;
-               }
-
-               private bool IncludedInInsert (DataRow schemaRow)
-               {
-                       // If the parameter has one of these properties, then we don't include it in the insert:
-                       // AutoIncrement, Hidden, Expression, RowVersion, ReadOnly
-
-                       if (!schemaRow.IsNull ("IsAutoIncrement") && (bool) schemaRow ["IsAutoIncrement"])
-                               return false;
-//                     if (!schemaRow.IsNull ("IsHidden") && (bool) schemaRow ["IsHidden"])
-//                             return false;
-                       if (!schemaRow.IsNull ("IsExpression") && (bool) schemaRow ["IsExpression"])
-                               return false;
-                       if (!schemaRow.IsNull ("IsRowVersion") && (bool) schemaRow ["IsRowVersion"])
-                               return false;
-                       if (!schemaRow.IsNull ("IsReadOnly") && (bool) schemaRow ["IsReadOnly"])
-                               return false;
-                       return true;
-               }
-
-               private bool IncludedInUpdate (DataRow schemaRow)
-               {
-                       // If the parameter has one of these properties, then we don't include it in the insert:
-                       // AutoIncrement, Hidden, RowVersion
-
-                       if (!schemaRow.IsNull ("IsAutoIncrement") && (bool) schemaRow ["IsAutoIncrement"])
-                               return false;
-//                     if (!schemaRow.IsNull ("IsHidden") && (bool) schemaRow ["IsHidden"])
-//                             return false;
-                       if (!schemaRow.IsNull ("IsRowVersion") && (bool) schemaRow ["IsRowVersion"])
-                               return false;
-                       if (!schemaRow.IsNull ("IsExpression") && (bool) schemaRow ["IsExpression"])
-                               return false;
-                       if (!schemaRow.IsNull ("IsReadOnly") && (bool) schemaRow ["IsReadOnly"])
-                               return false;
-
-                       return true;
-               }
-
-               private bool IncludedInWhereClause (DataRow schemaRow)
-               {
-                       if ((bool) schemaRow ["IsLong"])
-                               return false;
-                       return true;
-               }
-
-               private DbCommand CreateDeleteCommand (bool option)
-               {
-                       // If no table was found, then we can't do an delete
-                       if (QuotedTableName == String.Empty)
-                               return null;
-                       
-                       CreateNewCommand (ref _deleteCommand);
-
-                       string command = String.Format ("DELETE FROM {0}", QuotedTableName);
-                       StringBuilder whereClause = new StringBuilder ();
-                       bool keyFound = false;
-                       int parmIndex = 1;
-
-                       foreach (DataRow schemaRow in _dbSchemaTable.Rows) {
-                               if (!schemaRow.IsNull ("IsExpression") && (bool)schemaRow["IsExpression"] == true)
-                                       continue;
-                               if (!IncludedInWhereClause (schemaRow)) 
-                                       continue;
-
-                               if (whereClause.Length > 0) 
-                                       whereClause.Append (" AND ");
-
-                               bool isKey = (bool) schemaRow ["IsKey"];
-                               DbParameter parameter = null;
-                               string sourceColumnName;
-
-                               if (isKey)
-                                       keyFound = true;
-
-                               //ms.net 1.1 generates the null check for columns even if AllowDBNull is false
-                               //while ms.net 2.0 does not. Anyways, since both forms are logically equivalent
-                               //following the 2.0 approach
-                               bool allowNull = (bool) schemaRow ["AllowDBNull"];
-                               if (!isKey && allowNull) {
-                                       parameter = _deleteCommand.CreateParameter ();
-                                       if (option) {
-                                               parameter.ParameterName = String.Format ("@IsNull_{0}",
-                                                                                        schemaRow ["BaseColumnName"]);
-                                       } else {
-                                               parameter.ParameterName = String.Format ("@p{0}", parmIndex++);
-                                       }
-                                       parameter.Value = 1;
-                                       parameter.DbType = DbType.Int32;
-                                       // This should be set for nullcheckparam
-                                       sourceColumnName = (string) schemaRow ["BaseColumnName"];
-                                       parameter.SourceColumn = sourceColumnName;
-                                       parameter.SourceColumnNullMapping = true;
-                                       parameter.SourceVersion = DataRowVersion.Original;
-                                       _deleteCommand.Parameters.Add (parameter);
-                                       
-                                       whereClause.Append ("(");
-                                       whereClause.Append (String.Format (clause1, parameter.ParameterName, 
-                                                                          GetQuotedString (sourceColumnName)));
-                                       whereClause.Append (" OR ");
-                               }
-
-                               if (option)
-                                       parameter = CreateParameter (_deleteCommand, schemaRow, true);
-                               else 
-                                       parameter = CreateParameter (_deleteCommand, parmIndex++, schemaRow);
-                               
-                               parameter.SourceVersion = DataRowVersion.Original;
-                               ApplyParameterInfo (parameter, schemaRow, StatementType.Delete, true);
-                               //parameter.IsNullable = allowNull;
-
-                               whereClause.Append (String.Format (clause2, GetQuotedString (parameter.SourceColumn), parameter.ParameterName));
-
-                               if (!isKey && allowNull)
-                                       whereClause.Append (")");
-                       }
-                       if (!keyFound)
-                               throw new InvalidOperationException ("Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.");
-
-                       // We're all done, so bring it on home
-                       string sql = String.Format ("{0} WHERE ({1})", command, whereClause.ToString ());
-                       _deleteCommand.CommandText = sql;
-                       _dbCommand = _deleteCommand;
-                       return _deleteCommand;
-               }
-
-               private DbCommand CreateInsertCommand (bool option, DataRow row)
-               {
-                       if (QuotedTableName == String.Empty)
-                               return null;
-
-                       CreateNewCommand (ref _insertCommand);
-
-                       string command = String.Format ("INSERT INTO {0}", QuotedTableName);
-                       string sql;
-                       StringBuilder columns = new StringBuilder ();
-                       StringBuilder values = new StringBuilder ();
-
-                       int parmIndex = 1;
-                       DbParameter parameter = null;
-                       foreach (DataRow schemaRow in _dbSchemaTable.Rows) {
-                               if (!IncludedInInsert (schemaRow))
-                                       continue;
-
-                               if (columns.Length > 0) {
-                                       columns.Append (", ");
-                                       values.Append (", ");
-                               }
-
-                               if (option)
-                                       parameter = CreateParameter (_insertCommand, schemaRow, false);
-                               else 
-                                       parameter = CreateParameter (_insertCommand, parmIndex++, schemaRow);                   
-                               parameter.SourceVersion = DataRowVersion.Current;
-                               ApplyParameterInfo (parameter, schemaRow, StatementType.Insert, false);
-                               
-                               columns.Append (GetQuotedString (parameter.SourceColumn));
-
-                               // Workaround for columns that may have a default/bound value and for now, 
-                               // the framework, don't provide a mechanism to read these values yet
-                               // AllowDBNull and DataRow is used to workaround #385028 by using DEFAULT 
-                               string colName = schemaRow ["ColumnName"] as string;
-                               bool allowDBNull = !schemaRow.IsNull ("AllowDBNull") & (bool) schemaRow ["AllowDBNull"];
-                               if (!allowDBNull && row != null &&
-                                   (row [colName] == DBNull.Value || row [colName] == null)) {
-                                       values.Append ("DEFAULT");
-                               } else {
-                                       values.Append (parameter.ParameterName);
-                               }
-                       }
-
-                       sql = String.Format ("{0} ({1}) VALUES ({2})", command, columns.ToString (), values.ToString ());
-                       _insertCommand.CommandText = sql;
-                       _dbCommand = _insertCommand;
-                       return _insertCommand;
-               }
-
-               private void CreateNewCommand (ref DbCommand command)
-               {
-                       DbCommand sourceCommand = SourceCommand;
-                       if (command == null) {
-                               command = sourceCommand.Connection.CreateCommand ();
-                               command.CommandTimeout = sourceCommand.CommandTimeout;
-                               command.Transaction = sourceCommand.Transaction;
-                       }
-                       command.CommandType = CommandType.Text;
-                       command.UpdatedRowSource = UpdateRowSource.None;
-                       command.Parameters.Clear ();
-               }
-
-               private DbCommand CreateUpdateCommand (bool option)
-               {
-                       // If no table was found, then we can't do an update
-                       if (QuotedTableName == String.Empty)
-                               return null;
-
-                       CreateNewCommand (ref _updateCommand);
-
-                       string command = String.Format ("UPDATE {0} SET ", QuotedTableName);
-                       StringBuilder columns = new StringBuilder ();
-                       StringBuilder whereClause = new StringBuilder ();
-                       int parmIndex = 1;
-                       bool keyFound = false;
-                       DbParameter parameter = null;
-
-                       // First, create the X=Y list for UPDATE
-                       foreach (DataRow schemaRow in _dbSchemaTable.Rows) {
-                               if (!IncludedInUpdate (schemaRow))
-                                       continue;
-                               if (columns.Length > 0) 
-                                       columns.Append (", ");
-
-                               if (option)
-                                       parameter = CreateParameter (_updateCommand, schemaRow, false);
-                               else 
-                                       parameter = CreateParameter (_updateCommand, parmIndex++, schemaRow);
-                               parameter.SourceVersion = DataRowVersion.Current;
-                               ApplyParameterInfo (parameter, schemaRow, StatementType.Update, false);
-                               //parameter.IsNullable = (bool) schemaRow ["AllowDBNull"];
-                               columns.Append (String.Format ("{0} = {1}", GetQuotedString (parameter.SourceColumn), parameter.ParameterName));
-                       }
-
-                       // Now, create the WHERE clause.  This may be optimizable, but it would be ugly to incorporate
-                       // into the loop above.  "Premature optimization is the root of all evil." -- Knuth
-                       foreach (DataRow schemaRow in _dbSchemaTable.Rows) {
-                               if (!schemaRow.IsNull ("IsExpression") && (bool) schemaRow ["IsExpression"] == true)
-                                       continue;
-
-                               if (!IncludedInWhereClause (schemaRow)) 
-                                       continue;
-
-                               if (whereClause.Length > 0) 
-                                       whereClause.Append (" AND ");
-
-                               bool isKey = (bool) schemaRow ["IsKey"];
-                               if (isKey)
-                                       keyFound = true;
-
-                               //ms.net 1.1 generates the null check for columns even if AllowDBNull is false
-                               //while ms.net 2.0 does not. Anyways, since both forms are logically equivalent
-                               //following the 2.0 approach
-                               bool allowNull = (bool) schemaRow ["AllowDBNull"];
-                               if (!isKey && allowNull) {
-                                       parameter = _updateCommand.CreateParameter ();
-                                       if (option) {
-                                               parameter.ParameterName = String.Format ("@IsNull_{0}",
-                                                                                        schemaRow ["BaseColumnName"]);
-                                       } else {
-                                               parameter.ParameterName = String.Format ("@p{0}", parmIndex++);
-                                       }
-                                       parameter.DbType = DbType.Int32;
-                                       parameter.Value = 1;
-                                       parameter.SourceColumn = (string) schemaRow ["BaseColumnName"];
-                                       parameter.SourceColumnNullMapping = true;
-                                       parameter.SourceVersion = DataRowVersion.Original;
-                                       whereClause.Append ("(");
-                                       whereClause.Append (String.Format (clause1, parameter.ParameterName,
-                                                                          GetQuotedString ((string) schemaRow ["BaseColumnName"])));
-                                       whereClause.Append (" OR ");
-                                       _updateCommand.Parameters.Add (parameter);
-                               }
-
-                               if (option)
-                                       parameter = CreateParameter (_updateCommand, schemaRow, true);
-                               else 
-                                       parameter = CreateParameter (_updateCommand, parmIndex++, schemaRow);
-                               parameter.SourceVersion = DataRowVersion.Original;
-                               //parameter.IsNullable = allowNull;
-                               ApplyParameterInfo (parameter, schemaRow, StatementType.Update, true);
-
-                               whereClause.Append (String.Format (clause2, GetQuotedString (parameter.SourceColumn), parameter.ParameterName));
-
-                               if (!isKey && allowNull)
-                                       whereClause.Append (")");
-                       }
-                       if (!keyFound)
-                               throw new InvalidOperationException ("Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.");
-
-                       // We're all done, so bring it on home
-                       string sql = String.Format ("{0}{1} WHERE ({2})", command, columns.ToString (), whereClause.ToString ());
-                       _updateCommand.CommandText = sql;
-                       _dbCommand = _updateCommand;
-                       return _updateCommand;
-               }
-
-               private DbParameter CreateParameter (DbCommand _dbCommand, DataRow schemaRow, bool whereClause)
-               {
-                       string sourceColumn = (string) schemaRow ["BaseColumnName"];
-                       DbParameter parameter = _dbCommand.CreateParameter ();
-                       if (whereClause)
-                               parameter.ParameterName = GetParameterName ("Original_" + sourceColumn);
-                       else
-                               parameter.ParameterName = GetParameterName (sourceColumn);
-                       parameter.SourceColumn = sourceColumn;
-                       //parameter.Size = (int) schemaRow ["ColumnSize"];
-                       _dbCommand.Parameters.Add (parameter);
-                       return parameter;
-               }
-
-               private DbParameter CreateParameter (DbCommand _dbCommand, int paramIndex, DataRow schemaRow)
-               {
-                       string sourceColumn = (string) schemaRow ["BaseColumnName"];
-                       DbParameter parameter = _dbCommand.CreateParameter ();
-                       parameter.ParameterName = GetParameterName (paramIndex);
-                       parameter.SourceColumn = sourceColumn;
-                       //parameter.Size = (int) schemaRow ["ColumnSize"];
-                       _dbCommand.Parameters.Add (parameter);
-                       return parameter;
-               }
-               
-               [DefaultValue (CatalogLocation.Start)]
-               public virtual CatalogLocation CatalogLocation {
-                       get { return _catalogLocation; }
-                       set {
-                               CheckEnumValue (typeof (CatalogLocation),
-                                       (int) value);
-                               _catalogLocation = value;
-                       }
-               }
-
-               [DefaultValue (".")]
-               public virtual string CatalogSeparator {
-                       get {
-                               if (_catalogSeparator == null || _catalogSeparator.Length == 0)
-                                       return SEPARATOR_DEFAULT;
-                               return _catalogSeparator;
-                       }
-                       set { _catalogSeparator = value; }
-               }
-
-               [DefaultValue (ConflictOption.CompareAllSearchableValues)]
-               public virtual ConflictOption ConflictOption {
-                       get { return _conflictOption; }
-                       set {
-                               CheckEnumValue (typeof (ConflictOption),
-                                       (int) value);
-                               _conflictOption = value;
-                       }
-               }
-
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               [Browsable (false)]
-               public DbDataAdapter DataAdapter {
-                       get { return _dbDataAdapter; }
-                       set {  if (value != null) 
-                               SetRowUpdatingHandler (value);
-                               _dbDataAdapter = value; 
-                       }
-               }
-
-               [DefaultValue ("")]
-               public virtual string QuotePrefix {
-                       get {
-                               if (_quotePrefix == null)
-                                       return string.Empty;
-                               return _quotePrefix;
-                       }
-                       set {
-                               if (IsCommandGenerated)
-                                       throw new InvalidOperationException (
-                                               "QuotePrefix cannot be set after " +
-                                               "an Insert, Update or Delete command " +
-                                               "has been generated.");
-                               _quotePrefix = value;
-                       }
-               }
-
-               [DefaultValue ("")]
-               public virtual string QuoteSuffix {
-                       get {
-                               if (_quoteSuffix == null)
-                                       return string.Empty;
-                               return _quoteSuffix;
-                       }
-                       set {
-                               if (IsCommandGenerated)
-                                       throw new InvalidOperationException (
-                                               "QuoteSuffix cannot be set after " +
-                                               "an Insert, Update or Delete command " +
-                                               "has been generated.");
-                               _quoteSuffix = value;
-                       }
-               }
-
-               [DefaultValue (".")]
-               public virtual string SchemaSeparator {
-                       get {
-                               if (_schemaSeparator == null || _schemaSeparator.Length == 0)
-                                       return SEPARATOR_DEFAULT;
-                               return _schemaSeparator;
-                       }
-                       set { _schemaSeparator = value; }
-               }
-
-               [DefaultValue (false)]
-               public bool SetAllValues {
-                       get { return _setAllValues; }
-                       set { _setAllValues = value; }
-               }
-
-               private DbCommand SourceCommand {
-                       get {
-                               if (_dbDataAdapter != null)
-                                       return _dbDataAdapter.SelectCommand;
-                               return null;
-                       }
-               }
-
-               protected abstract void ApplyParameterInfo (DbParameter parameter, 
-                                                           DataRow row, 
-                                                           StatementType statementType, 
-                                                           bool whereClause);
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (!_disposed) {
-                               if (disposing) {
-                                       if (_insertCommand != null)
-                                               _insertCommand.Dispose ();
-                                       if (_deleteCommand != null)
-                                               _deleteCommand.Dispose ();
-                                       if (_updateCommand != null)
-                                               _updateCommand.Dispose ();
-                                       if (_dbSchemaTable != null)
-                                               _dbSchemaTable.Dispose ();
-                               }
-                               _disposed = true;
-                       }
-               }
-
-               public DbCommand GetDeleteCommand ()
-               {
-                       return GetDeleteCommand (false);
-               }
-
-               public DbCommand GetDeleteCommand (bool useColumnsForParameterNames)
-               {
-                       BuildCache (true);
-                       if (_deleteCommand == null || useColumnsForParameterNames)
-                               return CreateDeleteCommand (useColumnsForParameterNames);
-                       return _deleteCommand;
-               }
-
-               public DbCommand GetInsertCommand ()
-               {
-                       return GetInsertCommand (false, null);
-               }
-
-               public DbCommand GetInsertCommand (bool useColumnsForParameterNames)
-               {
-                       return GetInsertCommand (useColumnsForParameterNames, null);
-               }
-
-               internal DbCommand GetInsertCommand (bool useColumnsForParameterNames, DataRow row)
-               {
-                       BuildCache (true);
-                       if (_insertCommand == null || useColumnsForParameterNames)
-                               return CreateInsertCommand (useColumnsForParameterNames, row);
-                       return _insertCommand;
-               }
-
-               public DbCommand GetUpdateCommand ()
-               {
-                       return GetUpdateCommand (false);
-               }
-
-               public DbCommand GetUpdateCommand (bool useColumnsForParameterNames)
-               {
-                       BuildCache (true);
-                       if (_updateCommand == null || useColumnsForParameterNames)
-                               return CreateUpdateCommand (useColumnsForParameterNames);
-                       return _updateCommand;
-               }
-
-               protected virtual DbCommand InitializeCommand (DbCommand command)
-               {
-                       if (_dbCommand == null) {
-                               _dbCommand = SourceCommand;
-                       } else {
-                               _dbCommand.CommandTimeout = 30;
-                               _dbCommand.Transaction = null;
-                               _dbCommand.CommandType = CommandType.Text;
-                               _dbCommand.UpdatedRowSource = UpdateRowSource.None;
-                       }
-                       return _dbCommand;
-
-               }
-
-               public virtual string QuoteIdentifier (string unquotedIdentifier)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public virtual string UnquoteIdentifier (string quotedIdentifier)
-               {
-                       if (quotedIdentifier == null) {
-                               throw new ArgumentNullException ("Quoted identifier parameter cannot be null");
-                       }
-                       string unquotedIdentifier = quotedIdentifier.Trim ();
-                       if (unquotedIdentifier.StartsWith (this.QuotePrefix)) {
-                               unquotedIdentifier = unquotedIdentifier.Remove (0, 1);
-                       }
-                       if (unquotedIdentifier.EndsWith (this.QuoteSuffix)) {
-                               unquotedIdentifier = unquotedIdentifier.Remove (unquotedIdentifier.Length - 1, 1);
-                       }
-                       return unquotedIdentifier;
-               }
-
-               public virtual void RefreshSchema ()
-               {
-                       _tableName = String.Empty;
-                       _dbSchemaTable = null;
-                       _deleteCommand = null;
-                       _updateCommand = null;
-                       _insertCommand = null;
-               }
-
-               protected void RowUpdatingHandler (RowUpdatingEventArgs rowUpdatingEvent)
-               {
-                       if (rowUpdatingEvent.Command != null)
-                               return;
-                       try {
-                               switch (rowUpdatingEvent.StatementType) {
-                               case StatementType.Insert:
-                                       rowUpdatingEvent.Command = GetInsertCommand (false, rowUpdatingEvent.Row);
-                                       break;
-                               case StatementType.Update:
-                                       rowUpdatingEvent.Command = GetUpdateCommand ();
-                                       break;
-                               case StatementType.Delete:
-                                       rowUpdatingEvent.Command = GetDeleteCommand ();
-                                       break;
-                               }
-                       } catch (Exception e) {
-                               rowUpdatingEvent.Errors = e;
-                               rowUpdatingEvent.Status = UpdateStatus.ErrorsOccurred;
-                       }
-               }
-
-               protected abstract string GetParameterName (int parameterOrdinal);
-               protected abstract string GetParameterName (String parameterName);
-               protected abstract string GetParameterPlaceholder (int parameterOrdinal);
-
-               protected abstract void SetRowUpdatingHandler (DbDataAdapter adapter);
-
-               protected virtual DataTable GetSchemaTable (DbCommand sourceCommand)
-               {
-                       using (DbDataReader rdr = sourceCommand.ExecuteReader ())
-                               return rdr.GetSchemaTable ();
-               }
-
-               static void CheckEnumValue (Type type, int value)
-               {
-                       if (Enum.IsDefined (type, value))
-                               return;
-
-                       string typename = type.Name;
-                       string msg = string.Format (CultureInfo.CurrentCulture,
-                               "Value {0} is not valid for {1}.", value,
-                               typename);
-                       throw new ArgumentOutOfRangeException (typename, msg);
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbCommandOptionalFeatures.cs b/mcs/class/System.Data/System.Data.Common/DbCommandOptionalFeatures.cs
deleted file mode 100644 (file)
index 3d59212..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Data.Common.DbCommandOptionalFeatures.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public enum DbCommandOptionalFeatures 
-       {
-               ExecutePageReader,
-               None
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbCommandSet.cs b/mcs/class/System.Data/System.Data.Common/DbCommandSet.cs
deleted file mode 100644 (file)
index fe065b2..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// System.Data.Common.DbCommandSet
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.ComponentModel;
-using System.Data;
-
-namespace System.Data.Common {
-       public abstract class DbCommandSet : IDisposable
-       {
-               #region Constructors
-
-               protected DbCommandSet ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public abstract int CommandCount { get; }
-               public abstract int CommandTimeout { get; set; }
-
-               public DbConnection Connection {
-                       get { return DbConnection; }
-                       set { DbConnection = value; }
-               }
-
-               protected abstract DbConnection DbConnection { get; set; }
-               protected abstract DbTransaction DbTransaction { get; set; }
-
-               public DbTransaction Transaction {
-                       get { return DbTransaction; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public abstract void Append (DbCommand command);
-               public abstract void Cancel ();
-               public abstract void Clear ();
-               public abstract void CopyToParameter (int commandIndex, int parameterIndex, DbParameter destination);
-               public abstract void CopyToParameter (int commandIndex, string parameterName, DbParameter destination);
-               public abstract void CopyToParameterCollection (int commandIndex, DbParameterCollection destination);
-               public abstract void Dispose ();
-               public abstract DbDataReader ExecuteDbDataReader (CommandBehavior behavior);
-               public abstract int ExecuteNonQuery ();
-
-               [MonoTODO]
-               public DbDataReader ExecuteReader ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public DbDataReader ExecuteReader (CommandBehavior behavior)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public abstract int GetParameterCount (int commandIndex);
-               
-               #endregion // Methods
-
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbConnection.cs b/mcs/class/System.Data/System.Data.Common/DbConnection.cs
deleted file mode 100644 (file)
index c8c51f2..0000000
+++ /dev/null
@@ -1,767 +0,0 @@
-//
-// System.Data.Common.DbConnection
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data;
-using System.Transactions;
-
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace System.Data.Common {
-       public abstract class DbConnection : Component, IDbConnection, IDisposable
-       {
-               #region Constructors
-
-               protected DbConnection ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-               [RecommendedAsConfigurable (true)]
-               [RefreshProperties (RefreshProperties.All)]
-               [DefaultValue ("")]
-               public abstract string ConnectionString { get; set; }
-
-               public abstract string Database { get; }
-               public abstract string DataSource { get; }
-               
-               [Browsable (false)]
-               public abstract string ServerVersion { get; }
-               
-               [Browsable (false)]
-               public abstract ConnectionState State { get; }
-
-               public virtual int ConnectionTimeout { 
-                       get { return 15; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               protected abstract DbTransaction BeginDbTransaction (IsolationLevel isolationLevel);
-
-               public DbTransaction BeginTransaction ()
-               {
-                       return BeginDbTransaction (IsolationLevel.Unspecified);
-               }
-
-               public DbTransaction BeginTransaction (IsolationLevel isolationLevel)
-               {
-                       return BeginDbTransaction (isolationLevel);
-               }
-
-               public abstract void ChangeDatabase (string databaseName);
-               public abstract void Close ();
-
-               public DbCommand CreateCommand ()
-               {
-                       return CreateDbCommand ();
-               }
-
-               protected abstract DbCommand CreateDbCommand ();
-
-               public virtual void EnlistTransaction (Transaction transaction)
-               {
-                       throw new NotSupportedException ();                        
-               }
-
-               static class DataTypes
-               {
-                       static readonly ColumnInfo [] columns = {
-                               new ColumnInfo ("TypeName", typeof(string)),
-                               new ColumnInfo ("ProviderDbType", typeof(int)),
-                               new ColumnInfo ("ColumnSize", typeof(long)),
-                               new ColumnInfo ("CreateFormat", typeof(string)),
-                               new ColumnInfo ("CreateParameters", typeof(string)),
-                               new ColumnInfo ("DataType", typeof(string)),
-                               new ColumnInfo ("IsAutoIncrementable", typeof(bool)),
-                               new ColumnInfo ("IsBestMatch", typeof(bool)),
-                               new ColumnInfo ("IsCaseSensitive", typeof(bool)),
-                               new ColumnInfo ("IsFixedLength", typeof(bool)),
-                               new ColumnInfo ("IsFixedPrecisionScale", typeof(bool)),
-                               new ColumnInfo ("IsLong", typeof(bool)),
-                               new ColumnInfo ("IsNullable", typeof(bool)),
-                               new ColumnInfo ("IsSearchable", typeof(bool)),
-                               new ColumnInfo ("IsSearchableWithLike", typeof(bool)),
-                               new ColumnInfo ("IsUnsigned", typeof(bool)),
-                               new ColumnInfo ("MaximumScale", typeof(short)),
-                               new ColumnInfo ("MinimumScale", typeof(short)),
-                               new ColumnInfo ("IsConcurrencyType", typeof(bool)),
-                               new ColumnInfo ("IsLiteralSupported", typeof(bool)),
-                               new ColumnInfo ("LiteralPrefix", typeof(string)),
-                               new ColumnInfo ("LiteralSuffix", typeof(string))
-                       };
-
-                       static readonly object [][] rows = {
-                               new object [] {"smallint", 16, 5, "smallint", null, "System.Int16", true, true,
-                                              false, true, true, false, true, true, false, false, null,
-                                              null, false, null, null, null},
-                               new object [] {"int", 8, 10, "int", null, "System.Int32",
-                                              true, true, false, true, true, false, true, true, false,
-                                              false, null, null, false, null, null, null},
-                               new object [] {"real", 13, 7, "real", null,
-                                              "System.Single", false, true, false, true, false, false,
-                                              true, true, false, false, null, null, false, null, null, null},
-                               new object [] {"float", 6, 53, "float({0})",
-                                              "number of bits used to store the mantissa", "System.Double",
-                                              false, true, false, true, false, false, true, true,
-                                              false, false, null, null, false, null, null, null},
-                               new object [] {"money", 9, 19, "money", null,
-                                              "System.Decimal", false, false, false, true, true,
-                                              false, true, true, false, false, null, null, false,
-                                              null, null, null},
-                               new object [] {"smallmoney", 17, 10, "smallmoney", null,
-                                              "System.Decimal", false, false, false, true, true, false,
-                                              true, true, false, false, null, null, false, null, null, null},
-                               new object [] {"bit", 2, 1, "bit", null, "System.Boolean",
-                                              false, false, false, true, false, false, true, true,
-                                              false, null, null, null, false, null, null, null},
-                               new object [] {"tinyint", 20, 3, "tinyint", null,
-                                              "System.SByte", true, true, false, true, true, false,
-                                              true, true, false, true, null, null, false, null, null, null},
-                               new object [] {"bigint", 0, 19, "bigint", null,
-                                              "System.Int64", true, true, false, true, true, false,
-                                              true, true, false, false, null, null, false, null, null, null},
-                               new object [] {"timestamp", 19, 8, "timestamp", null,
-                                              "System.Byte[]", false, false, false, true, false, false,
-                                              false, true, false, null, null, null, true, null, "0x", null},
-                               new object [] {"binary", 1, 8000, "binary({0})", "length",
-                                              "System.Byte[]", false, true, false, true, false, false,
-                                              true, true, false, null, null, null, false, null, "0x", null},
-                               new object [] {"image", 7, 2147483647, "image", null,
-                                              "System.Byte[]", false, true, false, false, false, true,
-                                              true, false, false, null, null, null, false, null, "0x", null},
-                               new object [] {"text", 18, 2147483647, "text", null,
-                                              "System.String", false, true, false, false, false, true,
-                                              true, false, true, null, null, null, false, null, "'", "'"},
-                               new object [] {"ntext", 11, 1073741823, "ntext", null,
-                                              "System.String", false, true, false, false, false, true,
-                                              true, false, true, null, null, null, false, null, "N'", "'"},
-                               new object [] {"decimal", 5, 38, "decimal({0}, {1})",
-                                              "precision,scale", "System.Decimal", true, true, false,
-                                              true, false, false, true, true, false, false, 38, 0,
-                                              false, null, null, null},
-                               new object [] {"numeric", 5, 38, "numeric({0}, {1})",
-                                              "precision,scale", "System.Decimal", true, true, false,
-                                              true, false, false, true, true, false, false, 38, 0,
-                                              false, null, null, null},
-                               new object [] {"datetime", 4, 23, "datetime", null,
-                                              "System.DateTime", false, true, false, true, false, false,
-                                              true, true, true, null, null, null, false, null, "{ts '", "'}"},
-                               new object [] {"smalldatetime", 15, 16, "smalldatetime", null,
-                                              "System.DateTime", false, true, false, true, false, false,
-                                              true, true, true, null, null, null, false, null, "{ts '", "'}"},
-                               new object [] {"sql_variant", 23, null, "sql_variant",
-                                              null, "System.Object", false, true, false, false, false,
-                                              false, true, true, false, null, null, null, false, false,
-                                              null, null},
-                               new object [] {"xml", 25, 2147483647, "xml", null,
-                                              "System.String", false, false, false, false, false, true,
-                                              true, false, false, null, null, null, false, false, null, null},
-                               new object [] {"varchar", 22, 2147483647, "varchar({0})",
-                                              "max length", "System.String", false, true, false, false,
-                                              false, false, true, true, true, null, null, null, false,
-                                              null, "'", "'"},
-                               new object [] {"char", 3, 2147483647, "char({0})", "length",
-                                              "System.String", false, true, false, true, false, false,
-                                              true, true, true, null, null, null, false, null, "'", "'"},
-                               new object [] {"nchar", 10, 1073741823, "nchar({0})", "length",
-                                              "System.String", false, true, false, true, false, false,
-                                              true, true, true, null, null, null, false, null, "N'", "'"},
-                               new object [] {"nvarchar", 12, 1073741823, "nvarchar({0})", "max length",
-                                              "System.String", false, true, false, false, false, false, true, true,
-                                              true, null, null, null, false, null, "N'", "'"},
-                               new object [] {"varbinary", 21, 1073741823, "varbinary({0})",
-                                              "max length", "System.Byte[]", false, true, false, false,
-                                              false, false, true, true, false, null, null, null, false,
-                                              null, "0x", null},
-                               new object [] {"uniqueidentifier", 14, 16, "uniqueidentifier", null,
-                                              "System.Guid", false, true, false, true, false, false, true,
-                                              true, false, null, null, null, false, null, "'", "'"}
-                       };
-
-                       static DataTable instance;
-                       static public DataTable Instance {
-                               get {
-                                       if (instance == null) {
-                                               instance = new DataTable ("DataTypes");
-                                               foreach (ColumnInfo c in columns)
-                                                       instance.Columns.Add (c.name, c.type);
-                                               foreach (object [] row in rows)
-                                                       instance.LoadDataRow (row, true);
-                                       }
-                                       return instance;
-                               }
-                       }
-               }
-
-               struct ColumnInfo {
-                       public string name;
-                       public Type type;
-                       public ColumnInfo (string name, Type type)
-                       {
-                               this.name = name; this.type = type;
-                       }
-               }
-
-               internal static class MetaDataCollections
-               {
-                       static readonly ColumnInfo [] columns = {
-                               new ColumnInfo ("CollectionName", typeof (string)),
-                               new ColumnInfo ("NumberOfRestrictions", typeof (int)),
-                               new ColumnInfo ("NumberOfIdentifierParts", typeof (int))
-                       };
-
-                       static readonly object [][] rows = {
-                               new object [] {"MetaDataCollections", 0, 0},
-                               new object [] {"DataSourceInformation", 0, 0},
-                               new object [] {"DataTypes", 0, 0},
-                               new object [] {"Restrictions", 0, 0},
-                               new object [] {"ReservedWords", 0, 0},
-                               new object [] {"Users", 1, 1},
-                               new object [] {"Databases", 1, 1},
-                               new object [] {"Tables", 4, 3},
-                               new object [] {"Columns", 4, 4},
-                               new object [] {"Views", 3, 3},
-                               new object [] {"ViewColumns", 4, 4},
-                               new object [] {"ProcedureParameters", 4, 1},
-                               new object [] {"Procedures", 4, 3},
-                               new object [] {"ForeignKeys", 4, 3},
-                               new object [] {"IndexColumns", 5, 4},
-                               new object [] {"Indexes", 4, 3},
-                               new object [] {"UserDefinedTypes", 2, 1}
-                       };
-
-                       static DataTable instance;
-                       static public DataTable Instance {
-                               get {
-                                       if (instance == null) {
-                                               instance = new DataTable ("GetSchema");
-                                               foreach (ColumnInfo c in columns)
-                                                       instance.Columns.Add (c.name, c.type);
-                                               foreach (object [] row in rows)
-                                                       instance.LoadDataRow (row, true);
-                                       }
-                                       return instance;
-                               }
-                       }
-               }
-
-               static class Restrictions
-               {
-                       static readonly ColumnInfo [] columns = {
-                               new ColumnInfo ("CollectionName", typeof (string)),
-                               new ColumnInfo ("RestrictionName", typeof(string)),
-                               new ColumnInfo ("ParameterName", typeof(string)),
-                               new ColumnInfo ("RestrictionDefault", typeof(string)),
-                               new ColumnInfo ("RestrictionNumber", typeof(int))
-                       };
-
-                       static readonly object [][] rows = {
-                               new object [] {"Users", "User_Name", "@Name", "name", 1},
-                               new object [] {"Databases", "Name", "@Name", "Name", 1},
-
-                               new object [] {"Tables", "Catalog", "@Catalog", "TABLE_CATALOG", 1},
-                               new object [] {"Tables", "Owner", "@Owner", "TABLE_SCHEMA", 2},
-                               new object [] {"Tables", "Table", "@Name", "TABLE_NAME", 3},
-                               new object [] {"Tables", "TableType", "@TableType", "TABLE_TYPE", 4},
-
-                               new object [] {"Columns", "Catalog", "@Catalog", "TABLE_CATALOG", 1},
-                               new object [] {"Columns", "Owner", "@Owner", "TABLE_SCHEMA", 2},
-                               new object [] {"Columns", "Table", "@Table", "TABLE_NAME", 3},
-                               new object [] {"Columns", "Column", "@Column", "COLUMN_NAME", 4},
-
-                               new object [] {"Views", "Catalog", "@Catalog", "TABLE_CATALOG", 1},
-                               new object [] {"Views", "Owner", "@Owner", "TABLE_SCHEMA", 2},
-                               new object [] {"Views", "Table", "@Table", "TABLE_NAME", 3},
-
-                               new object [] {"ViewColumns", "Catalog", "@Catalog", "VIEW_CATALOG", 1},
-                               new object [] {"ViewColumns", "Owner", "@Owner", "VIEW_SCHEMA", 2},
-                               new object [] {"ViewColumns", "Table", "@Table", "VIEW_NAME", 3},
-                               new object [] {"ViewColumns", "Column", "@Column", "COLUMN_NAME", 4},
-
-                               new object [] {"ProcedureParameters", "Catalog", "@Catalog", "SPECIFIC_CATALOG", 1},
-                               new object [] {"ProcedureParameters", "Owner", "@Owner", "SPECIFIC_SCHEMA", 2},
-                               new object [] {"ProcedureParameters", "Name", "@Name", "SPECIFIC_NAME", 3},
-                               new object [] {"ProcedureParameters", "Parameter", "@Parameter", "PARAMETER_NAME", 4},
-
-                               new object [] {"Procedures", "Catalog", "@Catalog", "SPECIFIC_CATALOG", 1},
-                               new object [] {"Procedures", "Owner", "@Owner", "SPECIFIC_SCHEMA", 2},
-                               new object [] {"Procedures", "Name", "@Name", "SPECIFIC_NAME", 3},
-                               new object [] {"Procedures", "Type", "@Type", "ROUTINE_TYPE", 4},
-
-                               new object [] {"IndexColumns", "Catalog", "@Catalog", "db_name(}", 1},
-                               new object [] {"IndexColumns", "Owner", "@Owner", "user_name(}", 2},
-                               new object [] {"IndexColumns", "Table", "@Table", "o.name", 3},
-                               new object [] {"IndexColumns", "ConstraintName", "@ConstraintName", "x.name", 4},
-                               new object [] {"IndexColumns", "Column", "@Column", "c.name", 5},
-
-                               new object [] {"Indexes", "Catalog", "@Catalog", "db_name(}", 1},
-                               new object [] {"Indexes", "Owner", "@Owner", "user_name(}", 2},
-                               new object [] {"Indexes", "Table", "@Table", "o.name", 3},
-                               new object [] {"Indexes", "Name", "@Name", "x.name", 4},
-
-                               new object [] {"UserDefinedTypes", "assembly_name", "@AssemblyName", "assemblies.name", 1},
-                               new object [] {"UserDefinedTypes", "udt_name", "@UDTName", "types.assembly_class", 2},
-
-                               new object [] {"ForeignKeys", "Catalog", "@Catalog", "CONSTRAINT_CATALOG", 1},
-                               new object [] {"ForeignKeys", "Owner", "@Owner", "CONSTRAINT_SCHEMA", 2},
-                               new object [] {"ForeignKeys", "Table", "@Table", "TABLE_NAME", 3},
-                               new object [] {"ForeignKeys", "Name", "@Name", "CONSTRAINT_NAME", 4}
-                       };
-
-                       static DataTable instance;
-                       static public DataTable Instance {
-                               get {
-                                       if (instance == null) {
-                                               instance = new DataTable ("Restrictions");
-                                               foreach (ColumnInfo c in columns)
-                                                       instance.Columns.Add (c.name, c.type);
-                                               foreach (object [] row in rows)
-                                                       instance.LoadDataRow (row, true);
-                                       }
-                                       return instance;
-                               }
-                       }
-               }
-
-               static class ReservedWords
-               {
-                       static readonly string [] reservedWords =
-                       {
-                               "ADD", "EXCEPT", "PERCENT", "ALL", "EXEC", "PLAN", "ALTER",
-                                 "EXECUTE", "PRECISION", "AND", "EXISTS", "PRIMARY", "ANY",
-                                 "EXIT", "PRINT", "AS", "FETCH", "PROC", "ASC", "FILE",
-                                 "PROCEDURE", "AUTHORIZATION", "FILLFACTOR", "PUBLIC",
-                                 "BACKUP", "FOR", "RAISERROR", "BEGIN", "FOREIGN", "READ",
-                                 "BETWEEN", "FREETEXT", "READTEXT", "BREAK", "FREETEXTTABLE",
-                                 "RECONFIGURE", "BROWSE", "FROM", "REFERENCES", "BULK",
-                                 "FULL", "REPLICATION", "BY", "FUNCTION", "RESTORE",
-                                 "CASCADE", "GOTO", "RESTRICT", "CASE", "GRANT", "RETURN",
-                                 "CHECK", "GROUP", "REVOKE", "CHECKPOINT", "HAVING", "RIGHT",
-                                 "CLOSE", "HOLDLOCK", "ROLLBACK", "CLUSTERED", "IDENTITY",
-                                 "ROWCOUNT", "COALESCE", "IDENTITY_INSERT", "ROWGUIDCOL",
-                                 "COLLATE", "IDENTITYCOL", "RULE", "COLUMN", "IF", "SAVE",
-                                 "COMMIT", "IN", "SCHEMA", "COMPUTE", "INDEX", "SELECT",
-                                 "CONSTRAINT", "INNER", "SESSION_USER", "CONTAINS", "INSERT",
-                                 "SET", "CONTAINSTABLE", "INTERSECT", "SETUSER", "CONTINUE",
-                                 "INTO", "SHUTDOWN", "CONVERT", "IS", "SOME", "CREATE",
-                                 "JOIN", "STATISTICS", "CROSS", "KEY", "SYSTEM_USER",
-                                 "CURRENT", "KILL", "TABLE", "CURRENT_DATE", "LEFT",
-                                 "TEXTSIZE", "CURRENT_TIME", "LIKE", "THEN",
-                                 "CURRENT_TIMESTAMP", "LINENO", "TO", "CURRENT_USER", "LOAD",
-                                 "TOP", "CURSOR", "NATIONAL", "TRAN", "DATABASE", "NOCHECK",
-                                 "TRANSACTION", "DBCC", "NONCLUSTERED", "TRIGGER",
-                                 "DEALLOCATE", "NOT", "TRUNCATE", "DECLARE", "NULL",
-                                 "TSEQUAL", "DEFAULT", "NULLIF", "UNION", "DELETE", "OF",
-                                 "UNIQUE", "DENY", "OFF", "UPDATE", "DESC", "OFFSETS",
-                                 "UPDATETEXT", "DISK", "ON", "USE", "DISTINCT", "OPEN",
-                                 "USER", "DISTRIBUTED", "OPENDATASOURCE", "VALUES", "DOUBLE",
-                                 "OPENQUERY", "VARYING", "DROP", "OPENROWSET", "VIEW",
-                                 "DUMMY", "OPENXML", "WAITFOR", "DUMP", "OPTION", "WHEN",
-                                 "ELSE", "OR", "WHERE", "END", "ORDER", "WHILE", "ERRLVL",
-                                 "OUTER", "WITH", "ESCAPE", "OVER", "WRITETEXT", "ABSOLUTE",
-                                 "FOUND", "PRESERVE", "ACTION", "FREE", "PRIOR", "ADMIN",
-                                 "GENERAL", "PRIVILEGES", "AFTER", "GET", "READS",
-                                 "AGGREGATE", "GLOBAL", "REAL", "ALIAS", "GO", "RECURSIVE",
-                                 "ALLOCATE", "GROUPING", "REF", "ARE", "HOST", "REFERENCING",
-                                 "ARRAY", "HOUR", "RELATIVE", "ASSERTION", "IGNORE", "RESULT",
-                                 "AT", "IMMEDIATE", "RETURNS", "BEFORE", "INDICATOR", "ROLE",
-                                 "BINARY", "INITIALIZE", "ROLLUP", "BIT", "INITIALLY",
-                                 "ROUTINE", "BLOB", "INOUT", "ROW", "BOOLEAN", "INPUT",
-                                 "ROWS", "BOTH", "INT", "SAVEPOINT", "BREADTH", "INTEGER",
-                                 "SCROLL", "CALL", "INTERVAL", "SCOPE", "CASCADED",
-                                 "ISOLATION", "SEARCH", "CAST", "ITERATE", "SECOND",
-                                 "CATALOG", "LANGUAGE", "SECTION", "CHAR", "LARGE",
-                                 "SEQUENCE", "CHARACTER", "LAST", "SESSION", "CLASS",
-                                 "LATERAL", "SETS", "CLOB", "LEADING", "SIZE", "COLLATION",
-                                 "LESS", "SMALLINT", "COMPLETION", "LEVEL", "SPACE",
-                                 "CONNECT", "LIMIT", "SPECIFIC", "CONNECTION", "LOCAL",
-                                 "SPECIFICTYPE", "CONSTRAINTS", "LOCALTIME", "SQL",
-                                 "CONSTRUCTOR", "LOCALTIMESTAMP", "SQLEXCEPTION",
-                                 "CORRESPONDING", "LOCATOR", "SQLSTATE", "CUBE", "MAP",
-                                 "SQLWARNING", "CURRENT_PATH", "MATCH", "START",
-                                 "CURRENT_ROLE", "MINUTE", "STATE", "CYCLE", "MODIFIES",
-                                 "STATEMENT", "DATA", "MODIFY", "STATIC", "DATE", "MODULE",
-                                 "STRUCTURE", "DAY", "MONTH", "TEMPORARY", "DEC", "NAMES",
-                                 "TERMINATE", "DECIMAL", "NATURAL", "THAN", "DEFERRABLE",
-                                 "NCHAR", "TIME", "DEFERRED", "NCLOB", "TIMESTAMP", "DEPTH",
-                                 "NEW", "TIMEZONE_HOUR", "DEREF", "NEXT", "TIMEZONE_MINUTE",
-                                 "DESCRIBE", "NO", "TRAILING", "DESCRIPTOR", "NONE",
-                                 "TRANSLATION", "DESTROY", "NUMERIC", "TREAT", "DESTRUCTOR",
-                                 "OBJECT", "TRUE", "DETERMINISTIC", "OLD", "UNDER",
-                                 "DICTIONARY", "ONLY", "UNKNOWN", "DIAGNOSTICS", "OPERATION",
-                                 "UNNEST", "DISCONNECT", "ORDINALITY", "USAGE", "DOMAIN",
-                                 "OUT", "USING", "DYNAMIC", "OUTPUT", "VALUE", "EACH",
-                                 "PAD", "VARCHAR", "END-EXEC", "PARAMETER", "VARIABLE",
-                                 "EQUALS", "PARAMETERS", "WHENEVER", "EVERY", "PARTIAL",
-                                 "WITHOUT", "EXCEPTION", "PATH", "WORK", "EXTERNAL",
-                                 "POSTFIX", "WRITE", "FALSE", "PREFIX", "YEAR", "FIRST",
-                                 "PREORDER", "ZONE", "FLOAT", "PREPARE", "ADA", "AVG",
-                                 "BIT_LENGTH", "CHAR_LENGTH", "CHARACTER_LENGTH", "COUNT",
-                                 "EXTRACT", "FORTRAN", "INCLUDE", "INSENSITIVE", "LOWER",
-                                 "MAX", "MIN", "OCTET_LENGTH", "OVERLAPS", "PASCAL",
-                                 "POSITION", "SQLCA", "SQLCODE", "SQLERROR", "SUBSTRING",
-                                 "SUM", "TRANSLATE", "TRIM", "UPPER"
-                       };
-                       static DataTable instance;
-                       static public DataTable Instance {
-                               get {
-                                       if (instance == null) {
-                                               DataRow row = null;
-                                               instance = new DataTable ("ReservedWords");
-                                               instance.Columns.Add ("ReservedWord", typeof(string));
-                                               foreach (string reservedWord in reservedWords)
-                                               {
-                                                       row = instance.NewRow();
-
-                                                       row["ReservedWord"] = reservedWord;
-                                                       instance.Rows.Add(row);
-                                               }
-                                       }
-                                       return instance;
-                               }
-                       }
-               }
-
-               public virtual DataTable GetSchema ()
-               {
-                       return MetaDataCollections.Instance;
-               }
-
-               public virtual DataTable GetSchema (string collectionName)
-               {
-                       return GetSchema (collectionName, null);
-               }
-
-               private void AddParameter (DbCommand command, string parameterName, DbType parameterType, int parameterSize)
-               {
-                       DbParameter parameter = command.CreateParameter ();
-                       parameter.ParameterName = parameterName;
-                       parameter.DbType = parameterType;
-                       parameter.Size = parameterSize;
-                       command.Parameters.Add (parameter);
-               }
-
-               public virtual DataTable GetSchema (string collectionName, string[] restrictionValues)
-               {
-                       if (collectionName == null)
-                               //LAMESPEC: In MS.NET, if collectionName is null, it throws ArgumentException.
-                               throw new ArgumentException ();
-
-                       String cName          = null;
-                       DataTable schemaTable = MetaDataCollections.Instance;
-                       int length = restrictionValues == null ? 0 : restrictionValues.Length;
-
-                       foreach (DataRow row in schemaTable.Rows) {
-                               if (String.Compare ((string) row ["CollectionName"], collectionName, true) == 0) {
-                                       if (length > (int) row ["NumberOfRestrictions"]) {
-                                               throw new ArgumentException ("More restrictions were provided " +
-                                                                            "than the requested schema ('" +
-                                                                            row ["CollectionName"].ToString () + "') supports");
-                                       }
-                                       cName = row ["CollectionName"].ToString ();
-                               }
-                       }
-                       if (cName == null)
-                               throw new ArgumentException ("The requested collection ('" + collectionName + "') is not defined.");
-
-                       DbCommand command     = null;
-                       DataTable dataTable   = new DataTable ();
-
-                       switch (cName)
-                       {
-                       case "Databases":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select name as database_name, dbid, crdate as create_date " +
-                                 "from master.sys.sysdatabases where (name = @Name or (@Name " +
-                                 "is null))";
-                               AddParameter (command, "@Name", DbType.StringFixedLength, 4000);
-                               break;
-                       case "ForeignKeys":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, CONSTRAINT_NAME, " +
-                                 "TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_TYPE, " +
-                                 "IS_DEFERRABLE, INITIALLY_DEFERRED from " +
-                                 "INFORMATION_SCHEMA.TABLE_CONSTRAINTS where (CONSTRAINT_CATALOG" +
-                                 " = @Catalog or (@Catalog is null)) and (CONSTRAINT_SCHEMA = " +
-                                 "@Owner or (@Owner is null)) and (TABLE_NAME = @Table or (" +
-                                 "@Table is null)) and (CONSTRAINT_NAME = @Name or (@Name is null))" +
-                                 " and CONSTRAINT_TYPE = 'FOREIGN KEY' order by CONSTRAINT_CATALOG," +
-                                 " CONSTRAINT_SCHEMA, CONSTRAINT_NAME";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Table", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Name", DbType.StringFixedLength, 4000);
-                               break;
-                       case "Indexes":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select distinct db_name() as constraint_catalog, " +
-                                 "constraint_schema = user_name (o.uid), " +
-                                 "constraint_name = x.name, table_catalog = db_name (), " +
-                                 "table_schema = user_name (o.uid), table_name = o.name, " +
-                                 "index_name  = x.name from sysobjects o, sysindexes x, " +
-                                 "sysindexkeys xk where o.type in ('U') and x.id = o.id and " +
-                                 "o.id = xk.id and x.indid = xk.indid and xk.keyno = x.keycnt " +
-                                 "and (db_name() = @Catalog or (@Catalog is null)) and " +
-                                 "(user_name() = @Owner or (@Owner is null)) and (o.name = " +
-                                 "@Table or (@Table is null)) and (x.name = @Name or (@Name is null))" +
-                                 "order by table_name, index_name";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Table", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Name", DbType.StringFixedLength, 4000);
-                               break;
-                       case "IndexColumns":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select distinct db_name() as constraint_catalog, " +
-                                 "constraint_schema = user_name (o.uid), constraint_name = x.name, " +
-                                 "table_catalog = db_name (), table_schema = user_name (o.uid), " +
-                                 "table_name = o.name, column_name = c.name, " +
-                                 "ordinal_position = convert (int, xk.keyno), keyType = c.xtype, " +
-                                 "index_name = x.name from sysobjects o, sysindexes x, syscolumns c, " +
-                                 "sysindexkeys xk where o.type in ('U') and x.id = o.id and o.id = c.id " +
-                                 "and o.id = xk.id and x.indid = xk.indid and c.colid = xk.colid " +
-                                 "and xk.keyno <= x.keycnt and permissions (o.id, c.name) <> 0 " +
-                                 "and (db_name() = @Catalog or (@Catalog is null)) and (user_name() " +
-                                 "= @Owner or (@Owner is null)) and (o.name = @Table or (@Table is" +
-                                 " null)) and (x.name = @ConstraintName or (@ConstraintName is null)) " +
-                                 "and (c.name = @Column or (@Column is null)) order by table_name, " +
-                                 "index_name";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 8);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Table", DbType.StringFixedLength, 13);
-                               AddParameter (command, "@ConstraintName", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Column", DbType.StringFixedLength, 4000);
-                               break;
-                       case "Procedures":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select SPECIFIC_CATALOG, SPECIFIC_SCHEMA, SPECIFIC_NAME, " +
-                                 "ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, " +
-                                 "CREATED, LAST_ALTERED from INFORMATION_SCHEMA.ROUTINES where " +
-                                 "(SPECIFIC_CATALOG = @Catalog or (@Catalog is null)) and " +
-                                 "(SPECIFIC_SCHEMA = @Owner or (@Owner is null)) and (SPECIFIC_NAME" +
-                                 " = @Name or (@Name is null)) and (ROUTINE_TYPE = @Type or (@Type " +
-                                 "is null)) order by SPECIFIC_CATALOG, SPECIFIC_SCHEMA, SPECIFIC_NAME";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Name", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Type", DbType.StringFixedLength, 4000);
-                               break;
-                       case "ProcedureParameters":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select SPECIFIC_CATALOG, SPECIFIC_SCHEMA, SPECIFIC_NAME, " +
-                                 "ORDINAL_POSITION, PARAMETER_MODE, IS_RESULT, AS_LOCATOR, " +
-                                 "PARAMETER_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, " +
-                                 "CHARACTER_OCTET_LENGTH, COLLATION_CATALOG, COLLATION_SCHEMA, " +
-                                 "COLLATION_NAME, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, " +
-                                 "CHARACTER_SET_NAME, NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, " +
-                                 "NUMERIC_SCALE, DATETIME_PRECISION, INTERVAL_TYPE, " +
-                                 "INTERVAL_PRECISION from INFORMATION_SCHEMA.PARAMETERS where " +
-                                 "(SPECIFIC_CATALOG = @Catalog or (@Catalog is null)) and " +
-                                 "(SPECIFIC_SCHEMA = @Owner or (@Owner is null)) and (SPECIFIC_NAME = " +
-                                 "@Name or (@Name is null)) and (PARAMETER_NAME = @Parameter or (" +
-                                 "@Parameter is null)) order by SPECIFIC_CATALOG, SPECIFIC_SCHEMA," +
-                                 " SPECIFIC_NAME, PARAMETER_NAME";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Name", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Parameter", DbType.StringFixedLength, 4000);
-                               break;
-                       case "Tables":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE " +
-                                 "from INFORMATION_SCHEMA.TABLES where" +
-                                 " (TABLE_CATALOG = @catalog or (@catalog is null)) and " +
-                                 "(TABLE_SCHEMA = @owner or (@owner is null))and " +
-                                 "(TABLE_NAME = @name or (@name is null)) and " +
-                                 "(TABLE_TYPE = @table_type or (@table_type is null))";
-                               AddParameter (command, "@catalog", DbType.StringFixedLength, 8);
-                               AddParameter (command, "@owner", DbType.StringFixedLength, 3);
-                               AddParameter (command, "@name", DbType.StringFixedLength, 11);
-                               AddParameter (command, "@table_type", DbType.StringFixedLength, 10);
-                               break;
-                       case "Columns":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, " +
-                                 "ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, " +
-                                 "CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, " +
-                                 "NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE, " +
-                                 "DATETIME_PRECISION, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, " +
-                                 "CHARACTER_SET_NAME, COLLATION_CATALOG from INFORMATION_SCHEMA.COLUMNS" +
-                                 " where (TABLE_CATALOG = @Catalog or (@Catalog is null)) and (" +
-                                 "TABLE_SCHEMA = @Owner or (@Owner is null)) and (TABLE_NAME = @table" +
-                                 " or (@Table is null)) and (COLUMN_NAME = @column or (@Column is null" +
-                                 ")) order by TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Table", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Column", DbType.StringFixedLength, 4000);
-                               break;
-                       case "Users":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select uid, name as user_name, createdate, updatedate from sysusers" +
-                                 " where (name = @Name or (@Name is null))";
-                               AddParameter (command, "@Name", DbType.StringFixedLength, 4000);
-                               break;
-                       case "Views":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, CHECK_OPTION, " +
-                                 "IS_UPDATABLE from INFORMATION_SCHEMA.VIEWS where (TABLE_CATALOG" +
-                                 " = @Catalog or (@Catalog is null)) TABLE_SCHEMA = @Owner or " +
-                                 "(@Owner is null)) and (TABLE_NAME = @table or (@Table is null))" +
-                                 " order by TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Table", DbType.StringFixedLength, 4000);
-                               break;
-                       case "ViewColumns":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select VIEW_CATALOG, VIEW_SCHEMA, VIEW_NAME, TABLE_CATALOG, " +
-                                 "TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME from " +
-                                 "INFORMATION_SCHEMA.VIEW_COLUMN_USAGE where (VIEW_CATALOG = " +
-                                 "@Catalog (@Catalog is null)) and (VIEW_SCHEMA = @Owner (@Owner" +
-                                 " is null)) and (VIEW_NAME = @Table or (@Table is null)) and " +
-                                 "(COLUMN_NAME = @Column or (@Column is null)) order by " +
-                                 "VIEW_CATALOG, VIEW_SCHEMA, VIEW_NAME";
-                               AddParameter (command, "@Catalog", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Owner", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Table", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@Column", DbType.StringFixedLength, 4000);
-                               break;
-                       case "UserDefinedTypes":
-                               command = CreateCommand ();
-                               command.Connection = this;
-                               command.CommandText = "select assemblies.name as assembly_name, types.assembly_class " +
-                                 "as udt_name, ASSEMBLYPROPERTY(assemblies.name, 'VersionMajor') " +
-                                 "as version_major, ASSEMBLYPROPERTY(assemblies.name, 'VersionMinor') " +
-                                 "as version_minor, ASSEMBLYPROPERTY(assemblies.name, 'VersionBuild') " +
-                                 "as version_build, ASSEMBLYPROPERTY(assemblies.name, 'VersionRevision') " +
-                                 "as version_revision, ASSEMBLYPROPERTY(assemblies.name, 'CultureInfo') " +
-                                 "as culture_info, ASSEMBLYPROPERTY(assemblies.name, 'PublicKey') " +
-                                 "as public_key, is_fixed_length, max_length, Create_Date, " +
-                                 "Permission_set_desc from sys.assemblies as assemblies join " +
-                                 "sys.assembly_types as types on assemblies.assembly_id = types.assembly_id" +
-                                 " where (assemblies.name = @AssemblyName or (@AssemblyName is null)) and " +
-                                 "(types.assembly_class = @UDTName or (@UDTName is null))";
-                               AddParameter (command, "@AssemblyName", DbType.StringFixedLength, 4000);
-                               AddParameter (command, "@UDTName", DbType.StringFixedLength, 4000);
-                               break;
-                       case "MetaDataCollections":
-                               return MetaDataCollections.Instance;
-                       case "DataSourceInformation":
-                               throw new NotImplementedException ();
-                       case "DataTypes":
-                               return DataTypes.Instance;
-                       case "ReservedWords":
-                               return ReservedWords.Instance;
-                       case "Restrictions":
-                               return Restrictions.Instance;
-                       }
-                       for (int i = 0; i < length; i++) {
-                               command.Parameters [i].Value = restrictionValues [i];
-                       }
-                       DbDataAdapter dataAdapter = DbProviderFactory.CreateDataAdapter ();
-                       dataAdapter.SelectCommand = command;
-                       dataAdapter.Fill (dataTable);
-                       return dataTable;
-               }
-
-               protected internal virtual DbProviderFactory DbProviderFactory {
-                       get {
-                               return null;
-                       }
-               }
-
-               IDbTransaction IDbConnection.BeginTransaction ()
-               {
-                       return BeginTransaction ();
-               }
-
-               IDbTransaction IDbConnection.BeginTransaction (IsolationLevel il)
-               {
-                       return BeginTransaction (il);
-               }
-
-               IDbCommand IDbConnection.CreateCommand ()
-               {
-                       return CreateCommand ();
-               }
-               
-               public abstract void Open ();
-
-               protected virtual void OnStateChange (StateChangeEventArgs stateChange)
-               {
-                       if (StateChange != null)
-                               StateChange (this, stateChange);
-               }
-               
-               public Task OpenAsync ()
-               {
-                       return OpenAsync (CancellationToken.None);
-               }
-               
-               public virtual Task OpenAsync (CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask ();
-                       }
-                       
-                       try {
-                               Open ();
-                               return TaskHelper.CreateVoidTask ();
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask (e);
-                       }
-               }
-
-               #endregion // Methods
-
-               public virtual event StateChangeEventHandler StateChange;
-
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs b/mcs/class/System.Data/System.Data.Common/DbDataAdapter.cs
deleted file mode 100644 (file)
index 918da04..0000000
+++ /dev/null
@@ -1,875 +0,0 @@
-//
-// System.Data.Common.DbDataAdapter.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//   Sureshkumar T <tsureshkumar@novell.com>
-//   Veerapuram Varadhan  <vvaradhan@novell.com>
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002-2003
-//
-
-//
-// Copyright (C) 2004, 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-namespace System.Data.Common
-{
-       public abstract class DbDataAdapter : DataAdapter, IDbDataAdapter, IDataAdapter, ICloneable
-       {
-               #region Fields
-
-               public const string DefaultSourceTableName = "Table";
-               const string DefaultSourceColumnName = "Column";
-               CommandBehavior _behavior = CommandBehavior.Default;
-
-               IDbCommand _selectCommand;
-               IDbCommand _updateCommand;
-               IDbCommand _deleteCommand;
-               IDbCommand _insertCommand;
-
-               #endregion // Fields
-               
-               #region Constructors
-
-               protected DbDataAdapter ()
-               {
-               }
-
-               protected DbDataAdapter (DbDataAdapter adapter) : base (adapter)
-               {
-               }
-
-               #endregion // Fields
-
-               #region Properties
-
-               protected internal CommandBehavior FillCommandBehavior {
-                       get { return _behavior; }
-                       set { _behavior = value; }
-               }
-
-               IDbCommand IDbDataAdapter.SelectCommand {
-                   get { return ((DbDataAdapter)this).SelectCommand; }
-                   set { ((DbDataAdapter)this).SelectCommand = (DbCommand)value; }
-               }
-
-               IDbCommand IDbDataAdapter.UpdateCommand{
-                   get { return ((DbDataAdapter)this).UpdateCommand; }
-                   set { ((DbDataAdapter)this).UpdateCommand = (DbCommand)value; }
-               }
-               
-               IDbCommand IDbDataAdapter.DeleteCommand{
-                   get { return ((DbDataAdapter)this).DeleteCommand; }
-                   set { ((DbDataAdapter)this).DeleteCommand = (DbCommand)value; }
-               }
-
-               IDbCommand IDbDataAdapter.InsertCommand{
-                   get { return ((DbDataAdapter)this).InsertCommand; }
-                   set { ((DbDataAdapter)this).InsertCommand = (DbCommand)value; }
-               }
-               
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbCommand SelectCommand {
-                   get {
-                                       return (DbCommand) _selectCommand;
-                                       //return (DbCommand) ((IDbDataAdapter)this).SelectCommand; 
-                       }
-                   set {
-                                       if (_selectCommand != value) {
-                                               _selectCommand = value;
-                                               ((IDbDataAdapter)this).SelectCommand = value; 
-                                       }
-                       }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbCommand DeleteCommand {
-                   get {
-                                       return (DbCommand) _deleteCommand;
-                                       //return (DbCommand) ((IDbDataAdapter)this).DeleteCommand; 
-                       }
-                   set {
-                                       if (_deleteCommand != value) {
-                                               _deleteCommand = value;
-                                               ((IDbDataAdapter)this).DeleteCommand = value; 
-                                       }
-                       }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbCommand InsertCommand {
-                   get {
-                                       return (DbCommand) _insertCommand;
-                                       //return (DbCommand) ((IDbDataAdapter)this).InsertCommand; 
-                       }
-                   set {
-                                       if (_insertCommand != value) {
-                                               _insertCommand = value;
-                                               ((IDbDataAdapter)this).InsertCommand = value; 
-                                       }
-                       }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public DbCommand UpdateCommand {
-                   get {
-                                       return (DbCommand) _updateCommand;
-                                       //return (DbCommand) ((IDbDataAdapter)this).DeleteCommand; 
-                       }
-                   set {
-                                       if (_updateCommand != value) {
-                                               _updateCommand = value;
-                                               ((IDbDataAdapter)this).UpdateCommand = value; 
-                                       }
-                       }
-               }
-
-               [DefaultValue (1)]
-               public virtual int UpdateBatchSize {
-                       get { return 1; }
-                       set {
-                               if (value != 1)
-                                       throw new NotSupportedException ();
-                       }
-               }
-
-               #endregion // Properties
-               
-               #region Methods
-
-               protected virtual RowUpdatedEventArgs CreateRowUpdatedEvent (DataRow dataRow, IDbCommand command,
-                                                                            StatementType statementType,
-                                                                            DataTableMapping tableMapping)
-               {
-                       return new RowUpdatedEventArgs (dataRow, command, statementType, tableMapping);
-               }
-
-               protected virtual RowUpdatingEventArgs CreateRowUpdatingEvent (DataRow dataRow, IDbCommand command,
-                                                                              StatementType statementType,
-                                                                              DataTableMapping tableMapping)
-               {
-                       return new RowUpdatingEventArgs (dataRow, command, statementType, tableMapping);
-               }
-
-               protected virtual void OnRowUpdated (RowUpdatedEventArgs value)
-               {
-                       if (Events ["RowUpdated"] != null) {
-                               Delegate [] rowUpdatedList = Events ["RowUpdated"].GetInvocationList ();
-                               foreach (Delegate rowUpdated in rowUpdatedList) {
-                                       MethodInfo rowUpdatedMethod = rowUpdated.Method;
-                                       rowUpdatedMethod.Invoke (value, null);
-                               }
-                       }
-               }
-
-               protected virtual void OnRowUpdating (RowUpdatingEventArgs value)
-               {
-                       if (Events ["RowUpdating"] != null) {
-                               Delegate [] rowUpdatingList = Events ["RowUpdating"].GetInvocationList ();
-                               foreach (Delegate rowUpdating in rowUpdatingList) {
-                                       MethodInfo rowUpdatingMethod = rowUpdating.Method;
-                                       rowUpdatingMethod.Invoke (value, null);
-                               }
-                       }
-               }
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposing) {
-                               IDbDataAdapter da = (IDbDataAdapter) this;
-                               if (da.SelectCommand != null) {
-                                       da.SelectCommand.Dispose();
-                                       da.SelectCommand = null;
-                               }
-                               if (da.InsertCommand != null) {
-                                       da.InsertCommand.Dispose();
-                                       da.InsertCommand = null;
-                               }
-                               if (da.UpdateCommand != null) {
-                                       da.UpdateCommand.Dispose();
-                                       da.UpdateCommand = null;
-                               }
-                               if (da.DeleteCommand != null) {
-                                       da.DeleteCommand.Dispose();
-                                       da.DeleteCommand = null;
-                               }
-                       }
-               }
-
-               public override int Fill (DataSet dataSet)
-               {
-                       return Fill (dataSet, 0, 0, DefaultSourceTableName, ((IDbDataAdapter) this).SelectCommand, _behavior);
-               }
-
-               public int Fill (DataTable dataTable)
-               {
-                       if (dataTable == null)
-                               throw new ArgumentNullException ("DataTable");
-
-                       return Fill (dataTable, ((IDbDataAdapter) this).SelectCommand, _behavior);
-               }
-
-               public int Fill (DataSet dataSet, string srcTable)
-               {
-                       return Fill (dataSet, 0, 0, srcTable, ((IDbDataAdapter) this).SelectCommand, _behavior);
-               }
-
-
-               protected virtual int Fill (DataTable dataTable, IDbCommand command, CommandBehavior behavior)
-               {
-                       CommandBehavior commandBehavior = behavior;
-
-                       // first see that the connection is not close.
-                       if (command.Connection.State == ConnectionState.Closed) {
-                               command.Connection.Open ();
-                               commandBehavior |= CommandBehavior.CloseConnection;
-                       }
-                       return Fill (dataTable, command.ExecuteReader (commandBehavior));
-               }
-
-               public int Fill (DataSet dataSet, int startRecord, int maxRecords, string srcTable)
-               {
-                       return this.Fill (dataSet, startRecord, maxRecords, srcTable, ((IDbDataAdapter) this).SelectCommand, _behavior);
-               }
-
-               [MonoTODO]
-               public int Fill (int startRecord, int maxRecords, params DataTable[] dataTables)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual int Fill (DataTable[] dataTables, int startRecord, int maxRecords, IDbCommand command, CommandBehavior behavior)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected virtual int Fill (DataSet dataSet, int startRecord, int maxRecords, string srcTable, IDbCommand command, CommandBehavior behavior)
-               {
-                       if (command.Connection == null)
-                               throw new InvalidOperationException ("Connection state is closed");
-
-                       if (MissingSchemaAction == MissingSchemaAction.AddWithKey)
-                               behavior |= CommandBehavior.KeyInfo;
-                       CommandBehavior commandBehavior = behavior;
-
-                       if (command.Connection.State == ConnectionState.Closed) {
-                               command.Connection.Open ();
-                               commandBehavior |= CommandBehavior.CloseConnection;
-                       }
-                       return Fill (dataSet, srcTable, command.ExecuteReader (commandBehavior),
-                               startRecord, maxRecords);
-               }
-
-               /// <summary>
-               /// Fills the given datatable using values from reader. if a value 
-               /// for a column is  null, that will be filled with default value. 
-               /// </summary>
-               /// <returns>No. of rows affected </returns>
-               internal static int FillFromReader (DataTable table,
-                                                    IDataReader reader,
-                                                    int start,
-                                                    int length,
-                                                    int [] mapping,
-                                                    LoadOption loadOption
-                                                    )
-               {
-                       if (reader.FieldCount == 0)
-                               return 0 ;
-
-                       for (int i = 0; i < start; i++)
-                               reader.Read ();
-
-                       int counter = 0;
-                       object [] values = new object [mapping.Length];
-                       while (reader.Read () && (length == 0 || counter < length)) {
-                               for (int i = 0 ; i < mapping.Length; i++)
-                                       values [i] = mapping [i] < 0 ? null : reader [mapping [i]];
-                               table.BeginLoadData ();
-                               table.LoadDataRow (values, loadOption);
-                               table.EndLoadData ();
-                               counter++;
-                       }
-                       return counter;
-               }
-
-               internal static int FillFromReader (DataTable table,
-                                                    IDataReader reader,
-                                                    int start,
-                                                    int length,
-                                                    int [] mapping,
-                                                    LoadOption loadOption,
-                                                    FillErrorEventHandler errorHandler)
-               {
-                       if (reader.FieldCount == 0)
-                               return 0 ;
-
-                       for (int i = 0; i < start; i++)
-                               reader.Read ();
-
-                       int counter = 0;
-                       object [] values = new object [mapping.Length];
-                       while (reader.Read () && (length == 0 || counter < length)) {
-                               for (int i = 0 ; i < mapping.Length; i++)
-                                       values [i] = mapping [i] < 0 ? null : reader [mapping [i]];
-                               table.BeginLoadData ();
-                               try {
-                                       table.LoadDataRow (values, loadOption);
-                               } catch (Exception e) {
-                                       FillErrorEventArgs args = new FillErrorEventArgs (table, values);
-                                       args.Errors = e;
-                                       args.Continue = false;
-                                       errorHandler (table, args);
-                                       // if args.Continue is not set to true or if a handler is not set, rethrow the error..
-                                       if(!args.Continue)
-                                               throw e;
-                               }
-                               table.EndLoadData ();
-                               counter++;
-                       }
-                       return counter;
-               }
-
-               public override DataTable [] FillSchema (DataSet dataSet, SchemaType schemaType)
-               {
-                       return FillSchema (dataSet, schemaType, ((IDbDataAdapter) this).SelectCommand, DefaultSourceTableName, _behavior);
-               }
-
-               public DataTable FillSchema (DataTable dataTable, SchemaType schemaType)
-               {
-                       return FillSchema (dataTable, schemaType, ((IDbDataAdapter) this).SelectCommand, _behavior);
-               }
-
-               public DataTable [] FillSchema (DataSet dataSet, SchemaType schemaType, string srcTable)
-               {
-                       return FillSchema (dataSet, schemaType, ((IDbDataAdapter) this).SelectCommand, srcTable, _behavior);
-               }
-
-               protected virtual DataTable FillSchema (DataTable dataTable, SchemaType schemaType, IDbCommand command, CommandBehavior behavior)
-               {
-                       if (dataTable == null)
-                               throw new ArgumentNullException ("DataTable");
-
-                       behavior |= CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo;
-                       if (command.Connection.State == ConnectionState.Closed) {
-                               command.Connection.Open ();
-                               behavior |= CommandBehavior.CloseConnection;
-                       }
-
-                       IDataReader reader = command.ExecuteReader (behavior);
-                       try {
-                               string tableName =  SetupSchema (schemaType, dataTable.TableName);
-                               if (tableName != null) {
-                                       // FillSchema should add the KeyInfo unless MissingSchemaAction
-                                       // is set to Ignore or Error.
-                                       MissingSchemaAction schemaAction = MissingSchemaAction;
-                                       if (!(schemaAction == MissingSchemaAction.Ignore ||
-                                               schemaAction == MissingSchemaAction.Error))
-                                               schemaAction = MissingSchemaAction.AddWithKey;
-
-                                       BuildSchema (reader, dataTable, schemaType, schemaAction,
-                                               MissingMappingAction, TableMappings);
-                               }
-                       } finally {
-                               reader.Close ();
-                       }
-                       return dataTable;
-               }
-
-               protected virtual DataTable[] FillSchema (DataSet dataSet, SchemaType schemaType, IDbCommand command, string srcTable, CommandBehavior behavior)
-               {
-                       if (dataSet == null)
-                               throw new ArgumentNullException ("DataSet");
-
-                       behavior |= CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo;
-                       if (command.Connection.State == ConnectionState.Closed) {
-                               command.Connection.Open ();
-                               behavior |= CommandBehavior.CloseConnection;
-                       }
-
-                       IDataReader reader = command.ExecuteReader (behavior);
-                       ArrayList output = new ArrayList ();
-                       string tableName = srcTable;
-                       int index = 0;
-                       DataTable table;
-                       try {
-                               // FillSchema should add the KeyInfo unless MissingSchemaAction
-                               // is set to Ignore or Error.
-                               MissingSchemaAction schemaAction = MissingSchemaAction;
-                               if (!(MissingSchemaAction == MissingSchemaAction.Ignore ||
-                                       MissingSchemaAction == MissingSchemaAction.Error))
-                                       schemaAction = MissingSchemaAction.AddWithKey;
-
-                               do {
-                                       tableName = SetupSchema (schemaType, tableName);
-                                       if (tableName != null) {
-                                               if (dataSet.Tables.Contains (tableName))
-                                                       table = dataSet.Tables [tableName];
-                                               else {
-                                                       // Do not create schema if MissingSchemAction is set to Ignore
-                                                       if (this.MissingSchemaAction == MissingSchemaAction.Ignore)
-                                                               continue;
-                                                       table =  dataSet.Tables.Add (tableName);
-                                               }
-                                               
-                                               BuildSchema (reader, table, schemaType, schemaAction,
-                                                       MissingMappingAction, TableMappings);
-                                               output.Add (table);
-                                               tableName = String.Format ("{0}{1}", srcTable, ++index);
-                                       }
-                               }while (reader.NextResult ());
-                       } finally {
-                               reader.Close ();
-                       }
-                       return (DataTable []) output.ToArray (typeof (DataTable));
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public override IDataParameter[] GetFillParameters ()
-               {
-                       IDbCommand selectCmd = ((IDbDataAdapter) this).SelectCommand;
-                       IDataParameter[] parameters = new IDataParameter [selectCmd.Parameters.Count];
-                       selectCmd.Parameters.CopyTo (parameters, 0);
-                       return parameters;
-               }
-               
-               [MonoTODO]
-               [Obsolete ("use 'protected DbDataAdapter(DbDataAdapter)' ctor")]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public int Update (DataRow [] dataRows)
-               {
-                       if (dataRows == null)
-                               throw new ArgumentNullException("dataRows");
-                       
-                       if (dataRows.Length == 0)
-                               return 0;
-
-                       if (dataRows [0] == null)
-                               throw new ArgumentException("dataRows[0].");
-
-                       DataTable table = dataRows [0].Table;
-                       if (table == null)
-                               throw new ArgumentException("table is null reference.");
-                       
-                       // all rows must be in the same table
-                       for (int i = 0; i < dataRows.Length; i++) {
-                               if (dataRows [i] == null)
-                                       throw new ArgumentException ("dataRows[" + i + "].");
-                               if (dataRows [i].Table != table)
-                                       throw new ArgumentException(
-                                                                   " DataRow["
-                                                                   + i
-                                                                   + "] is from a different DataTable than DataRow[0].");
-                       }
-                       
-                       // get table mapping for this rows
-                       DataTableMapping tableMapping = TableMappings.GetByDataSetTable(table.TableName);
-                       if (tableMapping == null) {
-                               tableMapping = DataTableMappingCollection.GetTableMappingBySchemaAction(
-                                                                                                       TableMappings,
-                                                                                                       table.TableName,
-                                                                                                       table.TableName,
-                                                                                                       MissingMappingAction);
-                               if (tableMapping != null) {
-                                       foreach (DataColumn col in table.Columns) {
-                                               if (tableMapping.ColumnMappings.IndexOf (col.ColumnName) >= 0)
-                                                       continue;
-                                               DataColumnMapping columnMapping = DataColumnMappingCollection.GetColumnMappingBySchemaAction (tableMapping.ColumnMappings, col.ColumnName, MissingMappingAction);
-                                               if (columnMapping == null)
-                                                       columnMapping = new DataColumnMapping (col.ColumnName, col.ColumnName);
-                                               tableMapping.ColumnMappings.Add (columnMapping);
-                                       }
-                               } else {
-                                       ArrayList cmc = new ArrayList ();
-                                       foreach (DataColumn col in table.Columns)
-                                               cmc.Add (new DataColumnMapping (col.ColumnName, col.ColumnName));
-                                       tableMapping =
-                                               new DataTableMapping (
-                                                                     table.TableName,
-                                                                     table.TableName,
-                                                                     cmc.ToArray (typeof (DataColumnMapping)) as DataColumnMapping []);
-                               }
-                       }
-
-                       DataRow[] copy = table.NewRowArray (dataRows.Length);
-                       Array.Copy (dataRows, 0, copy, 0, dataRows.Length);
-                       return Update (copy, tableMapping);
-               }
-
-               public override int Update (DataSet dataSet)
-               {
-                       return Update (dataSet, DefaultSourceTableName);
-               }
-
-               public int Update (DataTable dataTable)
-               {
-                       /*
-                         int index = TableMappings.IndexOfDataSetTable (dataTable.TableName);
-                         if (index < 0)
-                         throw new ArgumentException ();
-                         return Update (dataTable, TableMappings [index]);
-                       */
-                       DataTableMapping tableMapping = TableMappings.GetByDataSetTable (dataTable.TableName);
-                       if (tableMapping == null) {
-                               tableMapping = DataTableMappingCollection.GetTableMappingBySchemaAction (
-                                                                                                        TableMappings,
-                                                                                                        dataTable.TableName,
-                                                                                                        dataTable.TableName,
-                                                                                                        MissingMappingAction);
-                               if (tableMapping != null) {
-                                       foreach (DataColumn col in dataTable.Columns) {
-                                               if (tableMapping.ColumnMappings.IndexOf (col.ColumnName) >= 0)
-                                                       continue;
-                                               DataColumnMapping columnMapping = DataColumnMappingCollection.GetColumnMappingBySchemaAction (tableMapping.ColumnMappings, col.ColumnName, MissingMappingAction);
-                                               if (columnMapping == null)
-                                                       columnMapping = new DataColumnMapping (col.ColumnName, col.ColumnName);
-                                               tableMapping.ColumnMappings.Add (columnMapping);
-                                       }
-                               } else {
-                                       ArrayList cmc = new ArrayList ();
-                                       foreach (DataColumn col in dataTable.Columns)
-                                               cmc.Add (new DataColumnMapping (col.ColumnName, col.ColumnName));
-                                       tableMapping =
-                                               new DataTableMapping (
-                                                                     dataTable.TableName,
-                                                                     dataTable.TableName,
-                                                                     cmc.ToArray (typeof (DataColumnMapping)) as DataColumnMapping []);
-                               }
-                       }
-                       return Update (dataTable, tableMapping);
-               }
-
-               private int Update (DataTable dataTable, DataTableMapping tableMapping)
-               {
-                       DataRow [] rows = dataTable.NewRowArray(dataTable.Rows.Count);
-                       dataTable.Rows.CopyTo (rows, 0);
-                       return Update (rows, tableMapping);
-               }
-
-               protected virtual int Update (DataRow [] dataRows, DataTableMapping tableMapping)
-               {
-                       int updateCount = 0;
-                       foreach (DataRow row in dataRows) {
-                               StatementType statementType = StatementType.Update;
-                               IDbCommand command = null;
-                               string commandName = String.Empty;
-
-                               switch (row.RowState) {
-                               case DataRowState.Added:
-                                       statementType = StatementType.Insert;
-                                       command = ((IDbDataAdapter) this).InsertCommand;
-                                       commandName = "Insert";
-                                       break;
-                               case DataRowState.Deleted:
-                                       statementType = StatementType.Delete;
-                                       command = ((IDbDataAdapter) this).DeleteCommand;
-                                       commandName = "Delete";
-                                       break;
-                               case DataRowState.Modified:
-                                       statementType = StatementType.Update;
-                                       command = ((IDbDataAdapter) this).UpdateCommand;
-                                       commandName = "Update";
-                                       break;
-                               case DataRowState.Unchanged:
-                               case DataRowState.Detached:
-                                       continue;
-                               }
-
-                               RowUpdatingEventArgs argsUpdating = CreateRowUpdatingEvent (row, command, statementType, tableMapping);
-                               row.RowError = String.Empty;
-                               OnRowUpdating (argsUpdating);
-                               switch (argsUpdating.Status) {
-                               case UpdateStatus.Continue :
-                                       //continue in update operation
-                                       break;
-                               case UpdateStatus.ErrorsOccurred :
-                                       if (argsUpdating.Errors == null)
-                                               argsUpdating.Errors = ExceptionHelper.RowUpdatedError();
-                                       row.RowError += argsUpdating.Errors.Message;
-                                       if (!ContinueUpdateOnError)
-                                               throw argsUpdating.Errors;
-                                       continue;
-                               case UpdateStatus.SkipAllRemainingRows :
-                                       return updateCount;
-                               case UpdateStatus.SkipCurrentRow :
-                                       updateCount++;
-                                       continue;
-                               default :
-                                       throw ExceptionHelper.InvalidUpdateStatus (argsUpdating.Status);
-                               }
-                               command = argsUpdating.Command;
-                               try {
-                                       if (command != null) {
-                                               DataColumnMappingCollection columnMappings = tableMapping.ColumnMappings;
-                                               foreach (IDataParameter parameter in command.Parameters) {
-                                                       if ((parameter.Direction & ParameterDirection.Input) == 0)
-                                                               continue;
-
-                                                       DataRowVersion rowVersion = parameter.SourceVersion;
-                                                       // Parameter version is ignored for non-update commands
-                                                       if (statementType == StatementType.Delete)
-                                                               rowVersion = DataRowVersion.Original;
-
-                                                       string dsColumnName = parameter.SourceColumn;
-                                                       if (columnMappings.Contains(dsColumnName)) {
-                                                               dsColumnName = columnMappings [dsColumnName].DataSetColumn;
-                                                               parameter.Value = row [dsColumnName, rowVersion];
-                                                       } else {
-                                                               parameter.Value = null;
-                                                       }
-
-                                                       DbParameter nullCheckParam = parameter as DbParameter;
-
-                                                       if (nullCheckParam != null && nullCheckParam.SourceColumnNullMapping) {
-                                                               if (parameter.Value != null && parameter.Value != DBNull.Value)
-                                                                       nullCheckParam.Value = 0;
-                                                               else
-                                                                       nullCheckParam.Value = 1;
-                                                               nullCheckParam = null;
-                                                       }
-                                               }
-                                       }
-                               } catch (Exception e) {
-                                       argsUpdating.Errors = e;
-                                       argsUpdating.Status = UpdateStatus.ErrorsOccurred;
-                               }
-
-                               IDataReader reader = null;
-                               try {
-                                       if (command == null)
-                                               throw ExceptionHelper.UpdateRequiresCommand (commandName);
-                               
-                                       CommandBehavior commandBehavior = CommandBehavior.Default;
-                                       if (command.Connection.State == ConnectionState.Closed) {
-                                               command.Connection.Open ();
-                                               commandBehavior |= CommandBehavior.CloseConnection;
-                                       }
-                               
-                                       // use ExecuteReader because we want to use the commandbehavior parameter.
-                                       // so the connection will be closed if needed.
-                                       reader = command.ExecuteReader (commandBehavior);
-
-                                       // update the current row, if the update command returns any resultset
-                                       // ignore other than the first record.
-                                       DataColumnMappingCollection columnMappings = tableMapping.ColumnMappings;
-
-                                       if (command.UpdatedRowSource == UpdateRowSource.Both ||
-                                           command.UpdatedRowSource == UpdateRowSource.FirstReturnedRecord) {
-                                               if (reader.Read ()){
-                                                       DataTable retSchema = reader.GetSchemaTable ();
-                                                       foreach (DataRow dr in retSchema.Rows) {
-                                                               string columnName = dr ["ColumnName"].ToString ();
-                                                               string dstColumnName = columnName;
-                                                               if (columnMappings != null &&
-                                                                   columnMappings.Contains(columnName))
-                                                                       dstColumnName = columnMappings [dstColumnName].DataSetColumn;
-                                                               DataColumn dstColumn = row.Table.Columns [dstColumnName];
-                                                               if (dstColumn == null
-                                                                   || (dstColumn.Expression != null
-                                                                       && dstColumn.Expression.Length > 0))
-                                                                       continue;
-                                                               // info from : http://www.error-bank.com/microsoft.public.dotnet.framework.windowsforms.databinding/
-                                                               // _35_hcsyiv0dha.2328@tk2msftngp10.phx.gbl_Thread.aspx
-                                                               // disable readonly for non-expression columns.
-                                                               bool readOnlyState = dstColumn.ReadOnly;
-                                                               dstColumn.ReadOnly = false;
-                                                               try {
-                                                                       row [dstColumnName] = reader [columnName];
-                                                               } finally {
-                                                                       dstColumn.ReadOnly = readOnlyState;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                                       reader.Close ();
-
-                                       int tmp = reader.RecordsAffected; // records affected is valid only after closing reader
-                                       // if the execute does not effect any rows we throw an exception.
-                                       if (tmp == 0)
-                                               throw new DBConcurrencyException("Concurrency violation: the " + 
-                                                       commandName +"Command affected 0 records.", null,
-                                                       new DataRow [] { row });
-                                       updateCount += tmp;
-
-                                       if (command.UpdatedRowSource == UpdateRowSource.Both ||
-                                           command.UpdatedRowSource == UpdateRowSource.OutputParameters) {
-                                               // Update output parameters to row values
-                                               foreach (IDataParameter parameter in command.Parameters) {
-                                                       if (parameter.Direction != ParameterDirection.InputOutput
-                                                           && parameter.Direction != ParameterDirection.Output
-                                                           && parameter.Direction != ParameterDirection.ReturnValue)
-                                                               continue;
-
-                                                       string dsColumnName = parameter.SourceColumn;
-                                                       if (columnMappings != null &&
-                                                           columnMappings.Contains(parameter.SourceColumn))
-                                                               dsColumnName = columnMappings [parameter.SourceColumn].DataSetColumn;
-                                                       DataColumn dstColumn = row.Table.Columns [dsColumnName];
-                                                       if (dstColumn == null
-                                                           || (dstColumn.Expression != null 
-                                                               && dstColumn.Expression.Length > 0))
-                                                               continue;
-                                                       bool readOnlyState = dstColumn.ReadOnly;
-                                                       dstColumn.ReadOnly  = false;
-                                                       try {
-                                                               row [dsColumnName] = parameter.Value;
-                                                       } finally {
-                                                               dstColumn.ReadOnly = readOnlyState;
-                                                       }
-                                               }
-                                       }
-
-                                       RowUpdatedEventArgs updatedArgs = CreateRowUpdatedEvent (row, command, statementType, tableMapping);
-                                       OnRowUpdated (updatedArgs);
-                                       switch (updatedArgs.Status) {
-                                       case UpdateStatus.Continue:
-                                               break;
-                                       case UpdateStatus.ErrorsOccurred:
-                                               if (updatedArgs.Errors == null)
-                                                       updatedArgs.Errors = ExceptionHelper.RowUpdatedError();
-                                               row.RowError += updatedArgs.Errors.Message;
-                                               if (!ContinueUpdateOnError)
-                                                       throw updatedArgs.Errors;
-                                               break;
-                                       case UpdateStatus.SkipCurrentRow:
-                                               continue;
-                                       case UpdateStatus.SkipAllRemainingRows:
-                                               return updateCount;
-                                       }
-                                       if (!AcceptChangesDuringUpdate)
-                                               continue;
-                                       row.AcceptChanges ();
-                               } catch (Exception e) {
-                                       row.RowError = e.Message;
-                                       if (!ContinueUpdateOnError)
-                                               throw e;
-                               } finally {
-                                       if (reader != null && ! reader.IsClosed)
-                                               reader.Close ();
-                               }
-                       }
-                       return updateCount;
-               }
-
-               public int Update (DataSet dataSet, string srcTable)
-               {
-                       MissingMappingAction mappingAction = MissingMappingAction;
-
-                       if (mappingAction == MissingMappingAction.Ignore)
-                               mappingAction = MissingMappingAction.Error;
-
-                       DataTableMapping tableMapping = DataTableMappingCollection.GetTableMappingBySchemaAction (TableMappings, srcTable, srcTable, mappingAction);
-
-                       DataTable dataTable = dataSet.Tables [tableMapping.DataSetTable];
-                       if (dataTable == null)
-                               throw new ArgumentException (String.Format ("Missing table {0}",
-                                                                           srcTable));
-
-                       /** Copied from another Update function **/
-                       if (tableMapping != null) {
-                               foreach (DataColumn col in dataTable.Columns) {
-                                       if (tableMapping.ColumnMappings.IndexOf (col.ColumnName) >= 0)
-                                               continue;
-                                       DataColumnMapping columnMapping = DataColumnMappingCollection.GetColumnMappingBySchemaAction (tableMapping.ColumnMappings, col.ColumnName, MissingMappingAction);
-                                       if (columnMapping == null)
-                                               columnMapping = new DataColumnMapping (col.ColumnName, col.ColumnName);
-                                       tableMapping.ColumnMappings.Add (columnMapping);
-                               }
-                       } else {
-                               ArrayList cmc = new ArrayList ();
-                               foreach (DataColumn col in dataTable.Columns)
-                                       cmc.Add (new DataColumnMapping (col.ColumnName, col.ColumnName));
-                               tableMapping =
-                                       new DataTableMapping (
-                                                             dataTable.TableName,
-                                                             dataTable.TableName,
-                                                             cmc.ToArray (typeof (DataColumnMapping)) as DataColumnMapping []);
-                       }
-                       /**end insert from another update**/
-                       return Update (dataTable, tableMapping);
-               }
-
-               // All the batch methods, should be implemented, if supported,
-               // by individual providers
-
-               protected virtual int AddToBatch (IDbCommand command)
-               {
-                       throw CreateMethodNotSupportedException ();
-               }
-
-               protected virtual void ClearBatch ()
-               {
-                       throw CreateMethodNotSupportedException ();
-               }
-
-               protected virtual int ExecuteBatch ()
-               {
-                       throw CreateMethodNotSupportedException ();
-               }
-
-               protected virtual IDataParameter GetBatchedParameter (int commandIdentifier, int parameterIndex)
-               {
-                       throw CreateMethodNotSupportedException ();
-               }
-
-               protected virtual bool GetBatchedRecordsAffected (int commandIdentifier, out int recordsAffected, out Exception error)
-               {
-                       recordsAffected = 1;
-                       error = null;
-                       return true;
-               }
-
-               protected virtual void InitializeBatching ()
-               {
-                       throw CreateMethodNotSupportedException ();
-               }
-
-               protected virtual void TerminateBatching ()
-               {
-                       throw CreateMethodNotSupportedException ();
-               }
-
-               Exception CreateMethodNotSupportedException ()
-               {
-                       return new NotSupportedException ("Method is not supported.");
-               }
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbDataReader.cs b/mcs/class/System.Data/System.Data.Common/DbDataReader.cs
deleted file mode 100644 (file)
index 45b5a5c..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-//
-// System.Data.Common.DbDataReader.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.IO;
-
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace System.Data.Common {
-       public abstract class DbDataReader : MarshalByRefObject, IDataReader, IDataRecord, IDisposable, IEnumerable
-       {
-               #region Constructors
-
-               protected DbDataReader ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public abstract int Depth { get; }
-               public abstract int FieldCount { get; }
-               public abstract bool HasRows { get; }
-               public abstract bool IsClosed { get; }
-               public abstract object this [int ordinal] { get; }
-               public abstract object this [string name] { get; }
-               public abstract int RecordsAffected { get; }
-
-               public virtual int VisibleFieldCount {
-                       get { return FieldCount; }
-               }
-               #endregion // Properties
-
-               #region Methods
-
-               public abstract void Close ();
-               public abstract bool GetBoolean (int ordinal);
-               public abstract byte GetByte (int ordinal);
-               public abstract long GetBytes (int ordinal, long dataOffset, byte[] buffer, int bufferOffset, int length);
-               public abstract char GetChar (int ordinal);
-               public abstract long GetChars (int ordinal, long dataOffset, char[] buffer, int bufferOffset, int length);
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public void Dispose ()
-               {
-                       Dispose (true); 
-               }
-               
-               protected virtual void Dispose (bool disposing)
-               {
-                       if (disposing)
-                               Close ();
-               }
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public DbDataReader GetData (int ordinal)
-               {
-                       return ((DbDataReader) this [ordinal]);
-               }
-
-               public abstract string GetDataTypeName (int ordinal);
-               public abstract DateTime GetDateTime (int ordinal);
-               public abstract decimal GetDecimal (int ordinal);
-               public abstract double GetDouble (int ordinal);
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract IEnumerator GetEnumerator ();
-
-               public abstract Type GetFieldType (int ordinal);
-               public abstract float GetFloat (int ordinal);
-               public abstract Guid GetGuid (int ordinal);
-               public abstract short GetInt16 (int ordinal);
-               public abstract int GetInt32 (int ordinal);
-               public abstract long GetInt64 (int ordinal);
-               public abstract string GetName (int ordinal);
-               public abstract int GetOrdinal (string name);
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public virtual Type GetProviderSpecificFieldType (int ordinal)
-               {
-                       return GetFieldType (ordinal);
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public virtual object GetProviderSpecificValue (int ordinal)
-               {
-                       return GetValue (ordinal);
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public virtual int GetProviderSpecificValues (object[] values)
-               {
-                       return GetValues (values);
-               }
-       
-               protected virtual DbDataReader GetDbDataReader (int ordinal)
-               {
-                       return ((DbDataReader) this [ordinal]);
-               }
-
-               public abstract DataTable GetSchemaTable ();
-               public abstract string GetString (int ordinal);
-               public abstract object GetValue (int ordinal);
-               public abstract int GetValues (object[] values);
-
-               IDataReader IDataRecord.GetData (int ordinal)
-               {
-                       return ((IDataReader) this).GetData (ordinal);
-               }
-
-               public abstract bool IsDBNull (int ordinal);
-               public abstract bool NextResult ();
-               public abstract bool Read ();
-
-                internal static DataTable GetSchemaTableTemplate ()
-               {
-                       Type booleanType = typeof (bool);
-                       Type stringType = typeof (string);
-                       Type intType = typeof (int);
-                       Type typeType = typeof (Type);
-                       Type shortType = typeof (short);
-
-                       DataTable schemaTable = new DataTable ("SchemaTable");
-                       schemaTable.Columns.Add ("ColumnName",       stringType);
-                       schemaTable.Columns.Add ("ColumnOrdinal",    intType);
-                       schemaTable.Columns.Add ("ColumnSize",       intType);
-                       schemaTable.Columns.Add ("NumericPrecision", shortType);
-                       schemaTable.Columns.Add ("NumericScale",     shortType);
-                       schemaTable.Columns.Add ("IsUnique",         booleanType);
-                       schemaTable.Columns.Add ("IsKey",            booleanType);
-                       schemaTable.Columns.Add ("BaseServerName",   stringType);
-                       schemaTable.Columns.Add ("BaseCatalogName",  stringType);
-                       schemaTable.Columns.Add ("BaseColumnName",   stringType);
-                       schemaTable.Columns.Add ("BaseSchemaName",   stringType);
-                       schemaTable.Columns.Add ("BaseTableName",    stringType);
-                       schemaTable.Columns.Add ("DataType",         typeType);
-                       schemaTable.Columns.Add ("AllowDBNull",      booleanType);
-                       schemaTable.Columns.Add ("ProviderType",     intType);
-                       schemaTable.Columns.Add ("IsAliased",        booleanType);
-                       schemaTable.Columns.Add ("IsExpression",     booleanType);
-                       schemaTable.Columns.Add ("IsIdentity",       booleanType);
-                       schemaTable.Columns.Add ("IsAutoIncrement",  booleanType);
-                       schemaTable.Columns.Add ("IsRowVersion",     booleanType);
-                       schemaTable.Columns.Add ("IsHidden",         booleanType);
-                       schemaTable.Columns.Add ("IsLong",           booleanType);
-                       schemaTable.Columns.Add ("IsReadOnly",       booleanType);
-
-                       return schemaTable;
-               }
-               
-               public virtual T GetFieldValue<T> (int i)
-               {
-                       return (T) GetValue (i);
-               }
-
-               public Task<T> GetFieldValueAsync<T> (int ordinal)
-               {
-                       return GetFieldValueAsync<T> (ordinal, CancellationToken.None);
-               }
-               
-               public virtual Task<T> GetFieldValueAsync<T> (int ordinal, CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<T> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult<T> (GetFieldValue<T> (ordinal));
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<T> (e);
-                       }
-               }
-               
-               public Task<bool> NextResultAsync ()
-               {
-                       return NextResultAsync (CancellationToken.None);
-               }
-               
-               public Task<bool> IsDBNullAsync (int ordinal)
-               {
-                       return IsDBNullAsync (ordinal, CancellationToken.None);
-               }
-
-               public virtual Stream GetStream (int i)
-               {
-
-                       long offset = 0L;
-                       byte [] buffer = new byte [1024 * 8];
-                       long read;
-                       MemoryStream memoryStream = new MemoryStream ();
-                       while ((read = this.GetBytes (i, offset, buffer, 0, buffer.Length)) > 0) {
-                               memoryStream.Write (buffer, 0, (int) read);
-                               offset += read;
-                       }
-                       memoryStream.Seek (0, SeekOrigin.Begin);
-                       return memoryStream;
-               }
-               
-               public virtual TextReader GetTextReader (int i)
-               {
-                       String value;
-                       if (IsDBNull (i))
-                               value = string.Empty;
-                       else
-                               value = this.GetString (i);
-                       return new StringReader (value);
-               }
-
-               public virtual Task<bool> IsDBNullAsync (int ordinal, CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<bool> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (IsDBNull (ordinal));
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<bool> (e);
-                       }
-               }
-               
-               public virtual Task<bool> NextResultAsync (CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<bool> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (NextResult ());
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<bool> (e);
-                       }
-               }
-               
-               public Task<bool> ReadAsync ()
-               {
-                       return ReadAsync (CancellationToken.None);
-               }
-               
-               public virtual Task<bool> ReadAsync (CancellationToken cancellationToken)
-               {
-                       if (cancellationToken.IsCancellationRequested) {
-                               return TaskHelper.CreateCanceledTask<bool> ();
-                       }
-                       
-                       try {
-                               return Task.FromResult (Read ());
-                       } catch (Exception e) {
-                               return TaskHelper.CreateExceptionTask<bool> (e);
-                       }
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbDataSourceEnumerator.cs b/mcs/class/System.Data/System.Data.Common/DbDataSourceEnumerator.cs
deleted file mode 100644 (file)
index bd09283..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Data.Common.DbDataSourceEnumerator.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public abstract class DbDataSourceEnumerator
-       {
-               #region Constructors
-
-               protected DbDataSourceEnumerator ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               public abstract DataTable GetDataSources ();
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbException.cs b/mcs/class/System.Data/System.Data.Common/DbException.cs
deleted file mode 100644 (file)
index 0a57d99..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// System.Data.Common.DbException.cs
-//
-// Author: Umadevi S  (sumadevi@novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.Data.Common {
-       [Serializable]
-       public abstract class DbException : ExternalException
-       {
-               protected DbException ()
-               {
-               }
-
-               protected DbException (string message) : base(message) 
-               {
-               }
-
-               protected DbException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected DbException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               protected DbException (string message, int errorCode) : base(message,errorCode) 
-               {
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbMetaDataCollectionNames.cs b/mcs/class/System.Data/System.Data.Common/DbMetaDataCollectionNames.cs
deleted file mode 100644 (file)
index b605967..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// System.Data.Common.DbMetaDataCollectionNames
-//
-// Author: Senganal T  (tsenganal@novell.com)
-//
-// (C)  Senganal T 2005
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Common {
-       [MonoTODO]
-       public static class DbMetaDataCollectionNames {
-
-               public static readonly string DataSourceInformation = "DataSourceInformation";
-               public static readonly string DataTypes = "DataTypes" ;
-               public static readonly string MetaDataCollections = "MetaDataCollections";
-               public static readonly string ReservedWords = "ReservedWords";
-               public static readonly string Restrictions = "Restrictions";
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbMetaDataColumnNames.cs b/mcs/class/System.Data/System.Data.Common/DbMetaDataColumnNames.cs
deleted file mode 100644 (file)
index b51a1fd..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-// System.Data.Common.DbMetaDataCollectionNames
-//
-// Author: Senganal T  (tsenganal@novell.com)
-//
-// (C)  Senganal T 2005
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Common {
-       public static class DbMetaDataColumnNames {
-               public static readonly string CollectionName = "CollectionName";
-               public static readonly string ColumnSize = "ColumnSize";
-               public static readonly string CompositeIdentifierSeparatorPattern = "CompositeIdentifierSeparatorPattern";
-               public static readonly string CreateFormat = "CreateFormat";
-               public static readonly string CreateParameters = "CreateParameters";
-               public static readonly string DataSourceProductName = "DataSourceProductName";
-               public static readonly string DataSourceProductVersion = "DataSourceProductVersion";
-               public static readonly string DataType = "DataType";
-               public static readonly string DataSourceProductVersionNormalized = "DataSourceProductVersionNormalized";
-               public static readonly string GroupByBehavior = "GroupByBehavior";
-               public static readonly string IdentifierCase = "IdentifierCase";
-               public static readonly string IdentifierPattern = "IdentifierPattern";
-               public static readonly string IsAutoIncrementable = "IsAutoIncrementable";
-               public static readonly string IsBestMatch = "IsBestMatch";
-               public static readonly string IsCaseSensitive = "IsCaseSensitive";
-               public static readonly string IsConcurrencyType = "IsConcurrencyType";
-               public static readonly string IsFixedLength = "IsFixedLength";
-               public static readonly string IsFixedPrecisionScale = "IsFixedPrecisionScale";
-               public static readonly string IsLiteralSupported = "IsLiteralSupported";
-               public static readonly string IsLong = "IsLong";
-               public static readonly string IsNullable = "IsNullable";
-               public static readonly string IsSearchable = "IsSearchable";
-               public static readonly string IsSearchableWithLike = "IsSearchableWithLike";
-               public static readonly string IsUnsigned = "IsUnsigned";
-               public static readonly string LiteralPrefix = "LiteralPrefix";
-               public static readonly string LiteralSuffix = "LiteralSuffix";
-               public static readonly string MaximumScale = "MaximumScale";
-               public static readonly string MinimumScale = "MinimumScale";
-               public static readonly string NumberOfIdentifierParts = "NumberOfIdentifierParts";
-               public static readonly string NumberOfRestrictions = "NumberOfRestrictions";
-               public static readonly string OrderByColumnsInSelect = "OrderByColumnsInSelect";
-               public static readonly string ParameterMarkerFormat = "ParameterMarkerFormat";
-               public static readonly string ParameterMarkerPattern = "ParameterMarkerPattern";
-               public static readonly string ParameterNameMaxLength = "ParameterNameMaxLength";
-               public static readonly string ParameterNamePattern = "ParameterNamePattern";
-               public static readonly string ProviderDbType = "ProviderDbType";
-               public static readonly string QuotedIdentifierCase = "QuotedIdentifierCase";
-               public static readonly string QuotedIdentifierPattern = "QuotedIdentifierPattern";
-               public static readonly string ReservedWord = "ReservedWord";
-               public static readonly string StatementSeparatorPattern = "StatementSeparatorPattern";
-               public static readonly string StringLiteralPattern = "StringLiteralPattern";
-               public static readonly string SupportedJoinOperators = "SupportedJoinOperators";
-               public static readonly string TypeName = "TypeName";
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbParameter.cs b/mcs/class/System.Data/System.Data.Common/DbParameter.cs
deleted file mode 100644 (file)
index a589d29..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// System.Data.Common.DbParameter.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data.Common {
-       public abstract class DbParameter : MarshalByRefObject, IDbDataParameter, IDataParameter
-       {
-               #region Constructors
-               internal static Hashtable dbTypeMapping;
-               protected DbParameter ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               [RefreshProperties (RefreshProperties.All)]
-               public abstract DbType DbType { get; set; }
-
-               [DefaultValue (ParameterDirection.Input)]
-               [RefreshProperties (RefreshProperties.All)]
-               public abstract ParameterDirection Direction { get; set; }
-
-               [DefaultValue ("")]
-               public abstract string ParameterName { get; set; }
-               public abstract int Size { get; set; }
-               byte IDbDataParameter.Precision { 
-                       get { return  0; }
-                       set {} 
-               }
-               byte IDbDataParameter.Scale { 
-                       get { return 0; }
-                       set {} 
-               }
-
-               [DefaultValue (null)]
-               [RefreshProperties (RefreshProperties.All)]
-               public abstract object Value { get; set; }
-
-               [Browsable (false)]
-               [DesignOnly (true)]
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract bool IsNullable { get; set; }
-
-               [DefaultValue ("")]
-               public abstract string SourceColumn { get; set; }
-
-               [RefreshProperties (RefreshProperties.All)]
-               [DefaultValue (false)]
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public abstract bool SourceColumnNullMapping { get; set; }
-
-               [DefaultValue (DataRowVersion.Current)]
-               public abstract DataRowVersion SourceVersion { get; set; }
-
-               #endregion // Properties
-
-               #region Methods
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public abstract void ResetDbType ();
-               
-               internal virtual object FrameworkDbType {
-                       get {return null;}
-                       set {}
-               }
-               
-               internal static Hashtable DbTypeMapping {
-                       get { return dbTypeMapping;}
-                       set { dbTypeMapping = value;}
-               }
-               
-               // LAMESPEC: Implementors should populate the dbTypeMapping accordingly
-               internal virtual Type SystemType {
-                       get {
-                               return (Type) dbTypeMapping [DbType];
-                       }
-               }
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbParameterCollection.cs b/mcs/class/System.Data/System.Data.Common/DbParameterCollection.cs
deleted file mode 100644 (file)
index f9d0082..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// System.Data.Common.DbParameterCollection.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Collections;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-
-namespace System.Data.Common {
-       public abstract class DbParameterCollection : MarshalByRefObject, IDataParameterCollection, IList, ICollection, IEnumerable
-       {
-               #region Constructors
-
-               protected DbParameterCollection ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public abstract int Count {
-                       get;
-               }
-
-               object IDataParameterCollection.this [string parameterName] {
-                       get { return this [parameterName]; }
-                       set { this [parameterName] = (DbParameter) value; }
-               }
-
-               object IList.this [int index] {
-                       get { return this [index]; }
-                       set { this [index] = (DbParameter) value; }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract bool IsFixedSize {
-                       get;
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract bool IsReadOnly {
-                       get;
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract bool IsSynchronized {
-                       get;
-               }
-
-               public DbParameter this [string parameterName] {
-                       get {
-                               int index = IndexOf (parameterName);
-                               return this [index];
-                       }
-                       set {
-                               int index = IndexOf (parameterName);
-                               this [index] = value;
-                       }
-               }
-
-               public DbParameter this [int index] {
-                       get { return GetParameter (index); }
-                       set { SetParameter (index, value); }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract object SyncRoot {
-                       get;
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public abstract int Add (object value);
-
-               public abstract void AddRange (Array values);
-               protected abstract DbParameter GetParameter (String parameterName);
-               protected abstract void SetParameter (String parameterName, 
-                                                     DbParameter value);
-
-               public abstract void Clear ();
-               public abstract bool Contains (object value);
-               public abstract bool Contains (string value);
-               public abstract void CopyTo (Array array, int index);
-
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public abstract IEnumerator GetEnumerator ();
-
-               protected abstract DbParameter GetParameter (int index);
-               public abstract int IndexOf (object value);
-               public abstract int IndexOf (string parameterName);
-               public abstract void Insert (int index, object value);
-               public abstract void Remove (object value);
-               public abstract void RemoveAt (int index);
-               public abstract void RemoveAt (string parameterName);
-               protected abstract void SetParameter (int index, DbParameter value);
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbProviderConfigurationHandler.cs b/mcs/class/System.Data/System.Data.Common/DbProviderConfigurationHandler.cs
deleted file mode 100644 (file)
index 5706442..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.Common.DbProviderConfigurationHandler.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Configuration;
-using System.Xml;
-
-namespace System.Data.Common {
-       public class DbProviderConfigurationHandler : IConfigurationSectionHandler
-       {
-               #region Constructors
-
-               public DbProviderConfigurationHandler ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               [MonoTODO]
-               public virtual object Create (object parent, object configContext, XmlNode section)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbProviderFactories.cs b/mcs/class/System.Data/System.Data.Common/DbProviderFactories.cs
deleted file mode 100644 (file)
index d9c2b48..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// System.Data.Common.DbProviderFactories.cs
-//
-// Author:
-//   Sureshkumar T (tsureshkumar@novell.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Threading;
-using System.Reflection;
-using System.Collections;
-using System.Configuration;
-
-namespace System.Data.Common {
-       public static class DbProviderFactories
-       {
-               private static object configEntries; // DataSet
-
-               internal const string CONFIG_SECTION_NAME        = "system.data";
-               internal const string CONFIG_SEC_TABLE_NAME      = "DbProviderFactories";
-
-               #region Methods
-
-               public static DbProviderFactory GetFactory (DataRow providerRow)
-               {
-                       string assemblyType = (string) providerRow ["AssemblyQualifiedName"];
-                       Type type = Type.GetType (assemblyType, false, true);
-                       if (type != null && type.IsSubclassOf (typeof (DbProviderFactory))) {
-                               // Provider factories are singletons with Instance field having
-                               // the sole instance
-                               FieldInfo field = type.GetField ("Instance", BindingFlags.Public |
-                                       BindingFlags.Static);
-                               if (field != null) {
-                                       return field.GetValue (null) as DbProviderFactory;
-                               }
-                       }
-
-                       throw new ConfigurationErrorsException("Failed to find or load the registered .Net Framework Data Provider.");
-               }
-
-               public static DbProviderFactory GetFactory (string providerInvariantName)
-               {
-                       if (providerInvariantName == null)
-                               throw new ArgumentNullException ("providerInvariantName");
-
-                       DataTable table = GetFactoryClasses ();
-                       if (table != null) {
-                               DataRow row = table.Rows.Find (providerInvariantName);
-                               if (row != null)
-                                       return GetFactory (row);
-                       }
-
-                       throw new ConfigurationErrorsException (String.Format("Failed to find or load the registered .Net Framework Data Provider '{0}'.", providerInvariantName));
-               }
-               
-               public static DbProviderFactory GetFactory (DbConnection connection)
-               {
-                       if (connection == null)
-                               throw new ArgumentNullException ("connection");
-
-                       return connection.DbProviderFactory;
-               }
-
-               public static DataTable GetFactoryClasses ()
-               {
-                               DataSet ds = GetConfigEntries ();
-                               DataTable table = ds != null ? ds.Tables [CONFIG_SEC_TABLE_NAME] : null;
-                               if (table != null)
-                                       table = table.Copy (); // avoid modifications by user
-                               return table;
-               }
-
-               #endregion // Methods
-
-               #region Internal Methods
-
-               internal static DataSet GetConfigEntries ()
-               {
-                       if (configEntries != null)
-                               return configEntries as DataSet;
-
-                       DataSet ds = (DataSet) ConfigurationManager.GetSection (CONFIG_SECTION_NAME);
-                       Interlocked.CompareExchange (ref configEntries, ds, null);
-                       return configEntries as DataSet;
-               }
-
-               #endregion Internal Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/DbProviderFactoriesConfigurationHandler.cs b/mcs/class/System.Data/System.Data.Common/DbProviderFactoriesConfigurationHandler.cs
deleted file mode 100644 (file)
index be3146b..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// System.Data.Common.DbProviderFactoriesConfigurationHandler.cs
-//
-// Author:
-//   Sureshkumar T (tsureshkumar@novell.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.IO;
-using System.Xml;
-using System.Globalization;
-using System.Configuration;
-
-namespace System.Data.Common
-{
-       public class DbProviderFactoriesConfigurationHandler : IConfigurationSectionHandler
-       {
-               #region Constructors
-
-               public DbProviderFactoriesConfigurationHandler ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               public virtual object Create (object parent, object configContext, XmlNode section)
-               {
-                       DataSet ds = parent as DataSet ?? CreateDataSet ();
-                       FillDataTables (ds, section);
-                       return ds;
-               }
-
-               DataSet CreateDataSet ()
-               {
-                       DataSet ds = new DataSet (DbProviderFactories.CONFIG_SECTION_NAME);
-                       DataTable dt = ds.Tables.Add (DbProviderFactories.CONFIG_SEC_TABLE_NAME);
-                       DataColumn [] columns = new DataColumn [4];
-                       columns [0] = new DataColumn ("Name", typeof (string));
-                       columns [1] = new DataColumn ("Description", typeof (string));
-                       columns [2] = new DataColumn ("InvariantName", typeof (string));
-                       columns [3] = new DataColumn ("AssemblyQualifiedName", typeof (string));
-                       dt.Columns.AddRange (columns);
-                       dt.PrimaryKey = new DataColumn [] { columns [2] };
-                       return ds;
-               }
-
-               void FillDataTables (DataSet ds, XmlNode section)
-               {
-                       DataTable dt = ds.Tables [0];
-                       foreach (XmlNode node in section.ChildNodes) {
-                               if (node.NodeType != XmlNodeType.Element)
-                                       continue;
-
-                               if (node.Name == DbProviderFactories.CONFIG_SEC_TABLE_NAME) {
-                                       foreach (XmlNode factoryNode in node.ChildNodes) {
-                                               if (factoryNode.NodeType != XmlNodeType.Element)
-                                                       continue;
-
-                                               switch (factoryNode.Name) {
-                                               case "add":
-                                                       AddRow (dt, factoryNode);
-                                                       break;
-                                               case "clear":
-                                                       dt.Rows.Clear ();
-                                                       break;
-                                               case "remove":
-                                                       RemoveRow (dt, factoryNode);
-                                                       break;
-                                               default:
-                                                       throw new ConfigurationErrorsException (
-                                                               "Unrecognized element.", factoryNode);
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               string GetAttributeValue (XmlNode node, string name, bool required)
-               {
-                       XmlAttribute attr = node.Attributes [name];
-                       if (attr == null) {
-                               if (!required)
-                                       return null;
-                               throw new ConfigurationErrorsException ("Required Attribute '" 
-                                       + name + "' is  missing!", node);
-                       }
-                       string value = attr.Value;
-                       if (value == "")
-                               throw new ConfigurationException ("Attribute '" + name 
-                                       + "' cannot be empty!", node);
-                       return value;
-               }
-
-               void AddRow (DataTable dt, XmlNode addNode)
-               {
-                       string name = GetAttributeValue (addNode, "name", true);
-                       string description = GetAttributeValue (addNode, "description", true);
-                       string invariant = GetAttributeValue (addNode, "invariant", true);
-                       string type = GetAttributeValue (addNode, "type", true);
-
-                       // FIXME: throw ConfigurationErrorsException for unrecognized
-                       // attributes. Consider "supports" valid although we're not using
-                       // it
-
-                       DataRow row = dt.NewRow ();
-                       row [0] = name;
-                       row [1] = description;
-                       row [2] = invariant;
-                       row [3] = type;
-
-                       dt.Rows.Add (row);
-               }
-
-               void RemoveRow (DataTable dt, XmlNode removeNode)
-               {
-                       // FIXME: throw ConfigurationErrorsException for unrecognized
-                       // attributes.
-
-                       string invariant = GetAttributeValue (removeNode, "invariant", true);
-                       DataRow row = dt.Rows.Find (invariant);
-                       if (row != null)
-                               row.Delete ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbProviderFactory.cs b/mcs/class/System.Data/System.Data.Common/DbProviderFactory.cs
deleted file mode 100644 (file)
index c407145..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// System.Data.Common.DbProviderFactory.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.Common {
-       public abstract class DbProviderFactory
-       {
-               #region Constructors
-
-               protected DbProviderFactory ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               private NotImplementedException CreateNotImplementedException ()
-               {
-                       return new NotImplementedException ();
-               }
-
-               public virtual bool CanCreateDataSourceEnumerator { 
-                       get {
-                               throw CreateNotImplementedException ();
-                       }
-               }
-               #endregion // Properties
-
-               #region Methods
-
-               public virtual DbCommand CreateCommand ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual DbCommandBuilder CreateCommandBuilder ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual DbConnection CreateConnection ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual DbDataAdapter CreateDataAdapter ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual DbDataSourceEnumerator CreateDataSourceEnumerator ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual DbParameter CreateParameter ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual CodeAccessPermission CreatePermission (PermissionState state)
-               {
-                       throw CreateNotImplementedException ();
-               }
-
-               public virtual DbConnectionStringBuilder CreateConnectionStringBuilder ()
-               {
-                       throw CreateNotImplementedException ();
-               }
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs b/mcs/class/System.Data/System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs
deleted file mode 100644 (file)
index dfecbce..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// System.Data.Common.DbProviderSpecificTypePropertyAttribute
-//
-// Author:
-//     Umadevi S (sumadevi@novell.com)
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-
-namespace System.Data.Common {
-       [AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
-       [SerializableAttribute()]
-       public sealed class DbProviderSpecificTypePropertyAttribute : Attribute
-       {
-               #region Fields
-
-               bool isProviderSpecificTypeProperty;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public DbProviderSpecificTypePropertyAttribute (bool isProviderSpecificTypeProperty)                {
-                       this.isProviderSpecificTypeProperty = isProviderSpecificTypeProperty;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public bool IsProviderSpecificTypeProperty{
-                       get {
-                               return this.isProviderSpecificTypeProperty;
-                       }
-               }
-
-               #endregion // Properties
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbProviderSupportedClasses.cs b/mcs/class/System.Data/System.Data.Common/DbProviderSupportedClasses.cs
deleted file mode 100644 (file)
index 0941f87..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Data.Common.DbProviderSupportedClasses.cs
-//
-// Author:
-//   Sureshkumar T (tsureshkumar@novell.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public enum DbProviderSupportedClasses 
-       {
-                CodeAccessPermission = 0x80,
-                DbCommand = 0x02,
-                DbCommandBuilder = 0x10,
-                DbCommandSet = 0x100,
-                DbConnection = 0x01,
-                DbConnectionStringBuilder = 0x08,
-                DbDataAdapter = 0x20,
-                DbDataSourceEnumerator = 0x40,
-                DbParameter = 0x04,
-                None = 0x00
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbTable.cs b/mcs/class/System.Data/System.Data.Common/DbTable.cs
deleted file mode 100644 (file)
index ae4da77..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// System.Data.Common.DbTable.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
diff --git a/mcs/class/System.Data/System.Data.Common/DbTransaction.cs b/mcs/class/System.Data/System.Data.Common/DbTransaction.cs
deleted file mode 100644 (file)
index 8f0d744..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-
-// System.Data.Common.DbTransaction.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common
-{
-       public abstract class DbTransaction : MarshalByRefObject, IDbTransaction, IDisposable
-       {
-               #region Constructors
-
-               protected DbTransaction ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public DbConnection Connection {
-                       get { return DbConnection; }
-               }
-
-               protected abstract DbConnection DbConnection {
-                       get;
-               }
-
-               IDbConnection IDbTransaction.Connection {
-                       get { return (IDbConnection) Connection; }
-               }
-
-               public abstract IsolationLevel IsolationLevel {
-                       get;
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public abstract void Commit ();
-
-               public abstract void Rollback ();
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-               }
-
-               protected virtual void Dispose (bool disposing)
-               {
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/GroupByBehavior.cs b/mcs/class/System.Data/System.Data.Common/GroupByBehavior.cs
deleted file mode 100644 (file)
index 75269a8..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Data.Common.GroupByBehavior.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public enum GroupByBehavior 
-       {
-               ExactMatch = 4,
-               MustContainAll = 3,
-               NotSupported = 1,
-               Unknown = 0,
-               Unrelated = 2
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/IdentifierCase.cs b/mcs/class/System.Data/System.Data.Common/IdentifierCase.cs
deleted file mode 100644 (file)
index 3d15fc6..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Data.Common.IdentifierCase.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public enum IdentifierCase 
-       {
-               Insensitive = 1,
-               Sensitive = 2,
-               Unknown = 0
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/Index.cs b/mcs/class/System.Data/System.Data.Common/Index.cs
deleted file mode 100644 (file)
index 1c57d4e..0000000
+++ /dev/null
@@ -1,643 +0,0 @@
-//\r
-// System.Data.Common.Key.cs\r
-//\r
-// Author:\r
-//   Boris Kirzner  <borisk@mainsoft.com>\r
-//   Konstantin Triger (kostat@mainsoft.com)\r
-//\r
-\r
-/*\r
-  * Copyright (c) 2002-2004 Mainsoft Corporation.\r
-  *\r
-  * Permission is hereby granted, free of charge, to any person obtaining a\r
-  * copy of this software and associated documentation files (the "Software"),\r
-  * to deal in the Software without restriction, including without limitation\r
-  * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
-  * and/or sell copies of the Software, and to permit persons to whom the\r
-  * Software is furnished to do so, subject to the following conditions:\r
-  *\r
-  * The above copyright notice and this permission notice shall be included in\r
-  * all copies or substantial portions of the Software.\r
-  *\r
-  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
-  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
-  * DEALINGS IN THE SOFTWARE.\r
-  */\r
-\r
-using System;\r
-using System.Collections;\r
-\r
-using System.Text;\r
-\r
-namespace System.Data.Common\r
-{\r
-       /// <summary>\r
-       /// Summary description for Index.\r
-       /// </summary>\r
-       internal class Index {\r
-               #region Fields\r
-\r
-               static readonly int [] empty = new int [0];\r
-\r
-               int [] _array;\r
-               int _size;\r
-               Key _key;\r
-               int _refCount;\r
-\r
-               // Implement a tri-state, with the property that 'know_no_duplicates' has meaning only when '!know_have_duplicates'\r
-               bool know_have_duplicates, know_no_duplicates;\r
-\r
-               #endregion // Fields\r
-\r
-               #region Constructors\r
-\r
-               internal Index (Key key)\r
-               {\r
-                       _key = key;\r
-                       Reset ();\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Properties\r
-\r
-               internal Key Key {\r
-                       get { return _key; }\r
-               }\r
-\r
-               internal int Size {\r
-                       get { return _size; }\r
-               }\r
-\r
-               internal int RefCount {\r
-                       get { return _refCount; }\r
-               }\r
-\r
-               internal int IndexToRecord (int index)\r
-               {\r
-                       return index < 0 ? index : _array [index];\r
-               }\r
-\r
-               internal bool HasDuplicates {\r
-                       get {\r
-                               if (!know_have_duplicates && !know_no_duplicates) {\r
-                                       for (int i = 0; i < _size - 1; i++) {\r
-                                               if (Key.CompareRecords (_array [i], _array [i + 1]) == 0) {\r
-                                                       know_have_duplicates = true;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                                       know_no_duplicates = !know_have_duplicates;\r
-                               }\r
-                               return know_have_duplicates;\r
-                       }\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               internal int [] Duplicates {\r
-                       get {\r
-                               if (!HasDuplicates)\r
-                                       return null;\r
-\r
-                               ArrayList dups = new ArrayList ();\r
-\r
-                               bool inRange = false;\r
-                               for (int i = 0; i < _size - 1; i++) {\r
-                                       if (Key.CompareRecords (_array [i], _array [i + 1]) == 0) {\r
-                                               if (!inRange) {\r
-                                                       dups.Add (_array [i]);\r
-                                                       inRange = true;\r
-                                               }\r
-\r
-                                               dups.Add (_array [i + 1]);\r
-                                       } else {\r
-                                               inRange = false;\r
-                                       }\r
-                               }\r
-\r
-                               return (int []) dups.ToArray (typeof (int));\r
-                       }\r
-               }\r
-\r
-               internal int [] GetAll ()\r
-               {\r
-                       return _array;\r
-               }\r
-\r
-               internal DataRow [] GetAllRows ()\r
-               {\r
-                       DataRow [] list = new DataRow [_size];\r
-                       for (int i = 0; i < _size; ++i)\r
-                               list [i] = Key.Table.RecordCache [_array [i]];\r
-                       return list;\r
-               }\r
-\r
-               internal DataRow [] GetDistinctRows ()\r
-               {\r
-                       ArrayList list = new ArrayList ();\r
-                       list.Add (Key.Table.RecordCache [_array [0]]);\r
-                       int currRecord = _array [0];\r
-                       for (int i = 1; i <  _size; ++i) {\r
-                               if (Key.CompareRecords (currRecord, _array [i]) == 0)\r
-                                       continue;\r
-                               list.Add (Key.Table.RecordCache [_array [i]]);\r
-                               currRecord = _array [i];\r
-                       }\r
-                       return (DataRow []) list.ToArray (typeof (DataRow));\r
-               }\r
-\r
-               internal void Reset ()\r
-               {\r
-                       _array = empty;\r
-                       _size = 0;\r
-                       RebuildIndex ();\r
-               }\r
-\r
-               private void RebuildIndex ()\r
-               {\r
-                       int rows_upperbound = Key.Table.RecordCache.CurrentCapacity;\r
-\r
-                       if (rows_upperbound == 0)\r
-                               return;\r
-\r
-                       // consider better capacity approximation\r
-                       _array = new int [rows_upperbound];\r
-                       _size = 0;\r
-                       foreach (DataRow row in Key.Table.Rows) {\r
-                               int record = Key.GetRecord (row);\r
-                               if (record != -1)\r
-                                       _array [_size++] = record;\r
-                       }\r
-                       know_have_duplicates = know_no_duplicates = false;\r
-                       Sort ();\r
-                       know_no_duplicates = !know_have_duplicates;\r
-               }\r
-\r
-               private void Sort ()\r
-               {\r
-                       //QuickSort(_array,0,_size-1);\r
-                       MergeSort (_array, _size);\r
-               }\r
-\r
-               /*\r
-                * Returns record number of the record equal to the key values supplied\r
-                * in the meaning of index key, or -1 if no equal record found.\r
-                */\r
-               internal int Find (object [] keys)\r
-               {\r
-                       int index = FindIndex (keys);\r
-                       return IndexToRecord (index);\r
-               }\r
-\r
-               /*\r
-                * Returns record index (location) of the record equal to the key values supplied\r
-                * in the meaning of index key, or -1 if no equal record found.\r
-                */\r
-               internal int FindIndex (object [] keys)\r
-               {\r
-                       if (keys == null || keys.Length != Key.Columns.Length)\r
-                               throw new ArgumentException("Expecting " + Key.Columns.Length + " value(s) for the key being indexed, " +\r
-                                       "but received " + ((keys == null) ? 0 : keys.Length) + " value(s).");\r
-\r
-                       int tmp = Key.Table.RecordCache.NewRecord ();\r
-                       try {\r
-                               // init key values for temporal record\r
-                               for (int i = 0; i < Key.Columns.Length; i++)\r
-                                       Key.Columns [i].DataContainer [tmp] = keys [i];\r
-                               return FindIndex (tmp);\r
-                       } finally {\r
-                               Key.Table.RecordCache.DisposeRecord (tmp);\r
-                       }\r
-               }\r
-\r
-               /*\r
-                * Returns record number of the record equal to the record supplied\r
-                * in the meaning of index key, or -1 if no equal record found.\r
-                */\r
-               internal int Find (int record)\r
-               {\r
-                       int index = FindIndex (record);\r
-                       return IndexToRecord (index);\r
-               }\r
-\r
-               /*\r
-                * Returns array of record numbers of the records equal equal to the key values supplied\r
-                * in the meaning of index key, or -1 if no equal record found.\r
-                */\r
-               internal int [] FindAll (object [] keys)\r
-               {\r
-                       int [] indexes = FindAllIndexes (keys);\r
-                       IndexesToRecords (indexes);\r
-                       return indexes;\r
-               }\r
-\r
-               /*\r
-                * Returns array of indexes of the records inside the index equal equal to the key values supplied\r
-                * in the meaning of index key, or -1 if no equal record found.\r
-                */\r
-               internal int [] FindAllIndexes (object [] keys)\r
-               {\r
-                       if (keys == null || keys.Length != Key.Columns.Length)\r
-                               throw new ArgumentException("Expecting " + Key.Columns.Length + " value(s) for the key being indexed," +\r
-                                       "but received " + ((keys == null) ? 0 : keys.Length) + " value(s).");\r
-\r
-                       int tmp = Key.Table.RecordCache.NewRecord ();\r
-                       try {\r
-                               // init key values for temporal record\r
-                               for (int i = 0; i < Key.Columns.Length; i++)\r
-                                       Key.Columns [i].DataContainer [tmp] = keys [i];\r
-                               return FindAllIndexes (tmp);\r
-                       } catch (FormatException) {\r
-                               return empty;\r
-                       } catch (InvalidCastException) {\r
-                               return empty;\r
-                       } finally {\r
-                               Key.Table.RecordCache.DisposeRecord (tmp);\r
-                       }\r
-               }\r
-\r
-               /*\r
-                * Returns array of record numbers of the records equal to the record supplied\r
-                * in the meaning of index key, or empty list if no equal records found.\r
-                */\r
-               internal int [] FindAll (int record)\r
-               {\r
-                       int [] indexes = FindAllIndexes (record);\r
-                       IndexesToRecords (indexes);\r
-                       return indexes;\r
-               }\r
-\r
-               /*\r
-                * Returns array of indexes of the records inside the index that equal to the record supplied\r
-                * in the meaning of index key, or empty list if no equal records found.\r
-                */\r
-               internal int [] FindAllIndexes (int record)\r
-               {\r
-                       int index = FindIndex (record);\r
-                       if (index == -1)\r
-                               return empty;\r
-\r
-                       int startIndex = index++;\r
-                       int endIndex = index;\r
-\r
-                       for (; startIndex >= 0 && Key.CompareRecords (_array [startIndex], record) == 0; startIndex--) {\r
-                       }\r
-                       for (; endIndex < _size && Key.CompareRecords (_array [endIndex], record) == 0; endIndex++) {\r
-                       }\r
-\r
-                       int length = endIndex - startIndex - 1;\r
-                       int [] indexes = new int [length];\r
-\r
-                       for (int i = 0; i < length; i++)\r
-                               indexes [i] = ++startIndex;\r
-\r
-                       return indexes;\r
-               }\r
-\r
-               /*\r
-                * Returns index inside the array where record number of the record equal to the record supplied\r
-                * in the meaning of index key is sored, or -1 if no equal record found.\r
-                */\r
-               private int FindIndex (int record)\r
-               {\r
-                       if (_size == 0)\r
-                               return -1;\r
-                       return BinarySearch (_array, 0, _size - 1, record);\r
-               }\r
-\r
-               /*\r
-                * Finds exact location of the record specified\r
-                */\r
-               private int FindIndexExact (int record)\r
-               {\r
-                       for (int i = 0, size = _size; i < size; i++)\r
-                               if (_array [i] == record)\r
-                                       return i;\r
-                       return -1;\r
-               }\r
-\r
-               /*\r
-                * Returns array of records from the indexes (locations) inside the index\r
-                */\r
-               private void IndexesToRecords (int [] indexes)\r
-               {\r
-                       for (int i = 0; i < indexes.Length; i++)\r
-                               indexes [i] = _array [indexes [i]];\r
-               }\r
-\r
-               internal void Delete (DataRow row)\r
-               {\r
-                       int oldRecord = Key.GetRecord (row);\r
-                       Delete (oldRecord);\r
-               }\r
-\r
-               internal void Delete (int oldRecord)\r
-               {\r
-                       if (oldRecord == -1)\r
-                               return;\r
-\r
-                       int index = FindIndexExact (oldRecord);\r
-                       if (index != -1) {\r
-                               if (know_have_duplicates) {\r
-                                       int c1 = 1;\r
-                                       int c2 = 1;\r
-\r
-                                       if (index > 0)\r
-                                               c1 = Key.CompareRecords (_array [index - 1], oldRecord);\r
-                                       if (index < _size - 1)\r
-                                               c2 = Key.CompareRecords (_array [index + 1], oldRecord);\r
-\r
-                                       if (c1 == 0 ^ c2 == 0)\r
-                                               know_have_duplicates = know_no_duplicates = false;\r
-                               }\r
-                               Remove (index);\r
-                       }\r
-               }\r
-\r
-               private void Remove (int index)\r
-               {\r
-                       if (_size > 1)\r
-                               System.Array.Copy (_array, index + 1, _array, index, _size - index - 1);\r
-                       _size--;\r
-               }\r
-\r
-               internal void Update (DataRow row, int oldRecord, DataRowVersion oldVersion, DataRowState oldState)\r
-               {\r
-                       bool contains = Key.ContainsVersion (oldState, oldVersion);\r
-                       int newRecord = Key.GetRecord (row);\r
-                       // the record did not appeared in the index before update\r
-                       if (oldRecord == -1 || _size == 0 || !contains) {\r
-                               if (newRecord >= 0)\r
-                                       if (FindIndexExact (newRecord) < 0)\r
-                                               Add (row,newRecord);\r
-                               return;\r
-                       }\r
-\r
-                       // the record will not appeare in the index after update\r
-                       if (newRecord < 0 || !Key.CanContain (newRecord)) {\r
-                               Delete (oldRecord);\r
-                               return;\r
-                       }\r
-\r
-                       int oldIdx = FindIndexExact (oldRecord);\r
-                       if (oldIdx == -1) {\r
-                               Add (row, newRecord);\r
-                               return;\r
-                       }\r
-\r
-                       int newIdx = -1;\r
-                       int compare = Key.CompareRecords (_array [oldIdx], newRecord);\r
-                       int start, end;\r
-\r
-                       int c1 = 1;\r
-                       int c2 = 1;\r
-\r
-                       if (compare == 0) {\r
-                               if (_array [oldIdx] == newRecord) {\r
-                                       // we deal with the same record that didn't change\r
-                                       // in the context of current index.\r
-                                       // so , do nothing.\r
-                                       return;\r
-                               }\r
-                       } else {\r
-                               if (know_have_duplicates) {\r
-                                       if (oldIdx > 0)\r
-                                               c1 = Key.CompareRecords (_array [oldIdx - 1], newRecord);\r
-                                       if (oldIdx < _size - 1)\r
-                                               c2 = Key.CompareRecords (_array [oldIdx + 1], newRecord);\r
-\r
-                                       if ((c1 == 0 ^ c2 == 0) && compare != 0)\r
-                                               know_have_duplicates = know_no_duplicates = false;\r
-                               }\r
-                       }\r
-\r
-                       if ((oldIdx == 0 && compare > 0) || (oldIdx == (_size - 1) && compare < 0) || (compare == 0)) {\r
-                               // no need to switch cells\r
-                               newIdx = oldIdx;\r
-                       } else {\r
-                               if (compare < 0) {\r
-                                       // search after the old place\r
-                                       start = oldIdx + 1;\r
-                                       end = _size - 1;\r
-                               } else {\r
-                                       // search before the old palce\r
-                                       start = 0;\r
-                                       end = oldIdx - 1;\r
-                               }\r
-\r
-                               newIdx = LazyBinarySearch (_array, start, end, newRecord);\r
-\r
-                               if (oldIdx < newIdx) {\r
-                                       System.Array.Copy (_array, oldIdx + 1, _array, oldIdx, newIdx - oldIdx);\r
-                                       if (Key.CompareRecords (_array [newIdx], newRecord) > 0)\r
-                                               --newIdx;\r
-                               } else if (oldIdx > newIdx){\r
-                                       System.Array.Copy (_array, newIdx, _array, newIdx + 1, oldIdx - newIdx);\r
-                                       if (Key.CompareRecords (_array [newIdx], newRecord) < 0)\r
-                                               ++newIdx;\r
-                               }\r
-                       }\r
-                       _array[newIdx] = newRecord;\r
-\r
-                       if (compare != 0) {\r
-                               if (!know_have_duplicates) {\r
-                                       if (newIdx > 0)\r
-                                               c1 = Key.CompareRecords (_array [newIdx - 1], newRecord);\r
-                                       if (newIdx < _size - 1)\r
-                                               c2 = Key.CompareRecords (_array [newIdx + 1], newRecord);\r
-\r
-                                       if (c1 == 0 || c2 == 0)\r
-                                               know_have_duplicates = true;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               internal void Add (DataRow row)\r
-               {\r
-                       Add(row, Key.GetRecord (row));\r
-               }\r
-\r
-               private void Add (DataRow row, int newRecord)\r
-               {\r
-                       int newIdx;\r
-\r
-                       if (newRecord < 0 || !Key.CanContain (newRecord))\r
-                               return;\r
-\r
-                       if (_size == 0) {\r
-                               newIdx = 0;\r
-                       } else {\r
-                               newIdx = LazyBinarySearch (_array, 0, _size - 1, newRecord);\r
-                               // if newl value is greater - insert afer old value\r
-                               // else - insert before old value\r
-                               if (Key.CompareRecords (_array [newIdx], newRecord) < 0)\r
-                                       newIdx++;\r
-                       }\r
-\r
-                       Insert (newIdx, newRecord);\r
-\r
-                       int c1 = 1;\r
-                       int c2 = 1;\r
-                       if (!know_have_duplicates) {\r
-                               if (newIdx > 0)\r
-                                       c1 = Key.CompareRecords (_array [newIdx - 1], newRecord);\r
-                               if (newIdx < _size - 1)\r
-                                       c2 = Key.CompareRecords (_array [newIdx + 1], newRecord);\r
-\r
-                               if (c1 == 0 || c2 == 0)\r
-                                       know_have_duplicates = true;\r
-                       }\r
-               }\r
-\r
-               private void Insert (int index, int r)\r
-               {\r
-                       if (_array.Length == _size) {\r
-                               int [] tmp = (_size == 0) ? new int [16] : new int [_size << 1];\r
-                               System.Array.Copy (_array, 0, tmp, 0, index);\r
-                               tmp [index] = r;\r
-                               System.Array.Copy (_array, index, tmp, index + 1, _size - index);\r
-                               _array = tmp;\r
-                       } else {\r
-                               System.Array.Copy (_array, index, _array, index + 1, _size - index);\r
-                               _array [index] = r;\r
-                       }\r
-                       _size++;\r
-               }\r
-\r
-               private void MergeSort (int [] to, int length)\r
-               {\r
-                       int [] from = new int [length];\r
-                       System.Array.Copy (to, 0, from, 0, from.Length);\r
-                       MergeSort (from, to, 0, from.Length);\r
-               }\r
-\r
-               private void MergeSort (int [] from, int [] to, int p, int r)\r
-               {\r
-                       int q = (p + r) >> 1;\r
-                       if (q == p)\r
-                               return;\r
-\r
-                       MergeSort (to, from, p, q);\r
-                       MergeSort (to, from, q, r);\r
-\r
-                       // merge\r
-                       for (int middle = q, current = p;;) {\r
-                               int res = Key.CompareRecords (from[p], from[q]);\r
-                               if (res > 0) {\r
-                                       to [current++] = from [q++];\r
-\r
-                                       if (q == r) {\r
-                                               while (p < middle)\r
-                                                       to [current++] = from [p++];\r
-                                               break;\r
-                                       }\r
-                               } else {\r
-                                       if (res == 0)\r
-                                               know_have_duplicates = true;\r
-\r
-                                       to [current++] = from [p++];\r
-\r
-                                       if (p == middle) {\r
-                                               while (q < r)\r
-                                                       to [current++] = from [q++];\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void QuickSort (int [] a, int p, int r)\r
-               {\r
-                       if (p < r) {\r
-                               int q = Partition (a, p, r);\r
-                               QuickSort (a, p, q);\r
-                               QuickSort (a, q + 1, r);\r
-                       }\r
-               }\r
-\r
-               private int Partition (int [] a, int p, int r)\r
-               {\r
-                       int x = a [p];\r
-                       int i = p - 1;\r
-                       int j = r + 1;\r
-\r
-                       while (true) {\r
-                               // decrement upper limit while values are greater then border value\r
-                               do {\r
-                                       j--;\r
-                               } while (Key.CompareRecords (a [j], x) > 0);\r
-\r
-                               do {\r
-                                       i++;\r
-                               } while (Key.CompareRecords (a [i], x) < 0);\r
-\r
-                               if (i < j) {\r
-                                       int tmp = a [j];\r
-                                       a [j] = a [i];\r
-                                       a [i] = tmp;\r
-                               } else {\r
-                                       return j;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private int BinarySearch (int [] a, int p, int r, int b)\r
-               {\r
-                       int i = LazyBinarySearch (a, p, r, b);\r
-                       return (Key.CompareRecords (a [i], b) == 0) ? i : -1;\r
-               }\r
-\r
-               // Lazy binary search only returns the cell number the search finished in,\r
-               // but does not checks that the correct value was actually found\r
-               private int LazyBinarySearch (int [] a, int p, int r, int b)\r
-               {\r
-                       if (p == r)\r
-                               return p;\r
-\r
-                       int q = (p + r) >> 1;\r
-\r
-                       int compare = Key.CompareRecords (a [q], b);\r
-                       if (compare < 0)\r
-                               return LazyBinarySearch (a, q + 1, r, b);\r
-                       else if (compare > 0)\r
-                               return LazyBinarySearch (a, p, q, b);\r
-                       else\r
-                               return q;\r
-               }\r
-\r
-               internal void AddRef ()\r
-               {\r
-                       _refCount++;\r
-               }\r
-\r
-               internal void RemoveRef ()\r
-               {\r
-                       _refCount--;\r
-               }\r
-\r
-               /*\r
-               // Prints indexes. For debugging.\r
-               internal void Print ()\r
-               {\r
-                       for (int i=0; i < _size; i++) {\r
-                               Console.Write ("Index {0} record {1}: ", i, _array [i]);\r
-                               for (int j=0; j < Key.Table.Columns.Count; j++) {\r
-                                       DataColumn col = Key.Table.Columns [j];\r
-                                       if (_array [i] >= 0)\r
-                                               Console.Write ("{0,15} ", col [_array [i]]);\r
-                               }\r
-                               Console.WriteLine ();\r
-                       }\r
-               }\r
-               */\r
-\r
-               #endregion // Methods\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.Common/Key.cs b/mcs/class/System.Data/System.Data.Common/Key.cs
deleted file mode 100644 (file)
index a41dd79..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-//\r
-// System.Data.Common.Key.cs\r
-//\r
-// Author:\r
-//   Boris Kirzner  <borisk@mainsoft.com>\r
-//   Konstantin Triger (kostat@mainsoft.com)\r
-//\r
-\r
-/*\r
-  * Copyright (c) 2002-2004 Mainsoft Corporation.\r
-  *\r
-  * Permission is hereby granted, free of charge, to any person obtaining a\r
-  * copy of this software and associated documentation files (the "Software"),\r
-  * to deal in the Software without restriction, including without limitation\r
-  * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
-  * and/or sell copies of the Software, and to permit persons to whom the\r
-  * Software is furnished to do so, subject to the following conditions:\r
-  *\r
-  * The above copyright notice and this permission notice shall be included in\r
-  * all copies or substantial portions of the Software.\r
-  *\r
-  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
-  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
-  * DEALINGS IN THE SOFTWARE.\r
-  */\r
-\r
-using System;\r
-using Mono.Data.SqlExpressions;\r
-using System.ComponentModel;\r
-\r
-namespace System.Data.Common\r
-{\r
-       internal class Key\r
-       {\r
-               #region Fields\r
-\r
-               DataTable _table;\r
-               DataColumn[] _columns;\r
-               ListSortDirection[] _sortDirection;\r
-               DataViewRowState _rowStateFilter;\r
-               IExpression _filter;\r
-               //Currently IExpression.Eval does not receive DataRowVersion\r
-               //      and always uses the _current version\r
-               //so need a temp row for Eval calls\r
-               DataRow _tmpRow;\r
-\r
-               #endregion //Fields\r
-\r
-               #region Constructors\r
-\r
-               internal Key(DataTable table,DataColumn[] columns,ListSortDirection[] sort, DataViewRowState rowState, IExpression filter)\r
-               {\r
-                       _table = table;\r
-                       _filter = filter;\r
-                       if (_filter != null)\r
-                               _tmpRow = _table.NewNotInitializedRow();\r
-                       _columns = columns;\r
-                       if (sort != null && sort.Length == columns.Length) {\r
-                               _sortDirection = sort;\r
-                       }\r
-                       else {\r
-                               _sortDirection = new ListSortDirection[columns.Length];\r
-                               for(int i=0; i < _sortDirection.Length; i++) {\r
-                                       _sortDirection[i] = ListSortDirection.Ascending;\r
-                               }\r
-                       }\r
-\r
-                       if (rowState != DataViewRowState.None)\r
-                               _rowStateFilter = rowState;\r
-                       else\r
-                               // FIXME : what is the correct value ?\r
-                               _rowStateFilter = DataViewRowState.CurrentRows;\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Properties\r
-\r
-               internal DataColumn[] Columns\r
-               {\r
-                       get {\r
-                               return _columns;\r
-                       }\r
-               }\r
-\r
-               internal DataTable Table\r
-               {\r
-                       get {\r
-                               return _table;\r
-                       }\r
-               }\r
-\r
-               ListSortDirection[] Sort \r
-               {\r
-                       get {\r
-                               return _sortDirection;\r
-                       }\r
-               }\r
-\r
-               internal DataViewRowState RowStateFilter\r
-               {\r
-                       get {\r
-                               return _rowStateFilter;\r
-                       }\r
-\r
-                       set {\r
-                               _rowStateFilter = value;\r
-                       }\r
-               }\r
-\r
-               internal bool HasFilter\r
-               {\r
-                       get { return _filter != null; }\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               internal int CompareRecords(int first, int second)\r
-               {\r
-                       if (first == second) {\r
-                               return 0;\r
-                       }\r
-\r
-                       for(int i = 0; i < Columns.Length; i++) {\r
-\r
-                               int res = Columns[i].CompareValues(first,second);\r
-\r
-                               if (res == 0) {\r
-                                       continue;\r
-                               }\r
-\r
-                               return (Sort[i] == ListSortDirection.Ascending) ? res : -res;\r
-                       }\r
-                       return 0;\r
-               }\r
-\r
-               internal int GetRecord(DataRow row)\r
-               {\r
-                       int index = Key.GetRecord(row,_rowStateFilter);\r
-                       if (_filter == null)\r
-                               return index;\r
-\r
-                       if (index < 0)\r
-                               return index;\r
-\r
-                       return CanContain (index) ? index : -1;\r
-               }\r
-\r
-               internal bool CanContain (int index)\r
-               {\r
-                       if (_filter == null)\r
-                               return true;\r
-\r
-                       _tmpRow._current = index;\r
-                       return _filter.EvalBoolean(_tmpRow);\r
-               }\r
-\r
-               internal bool ContainsVersion (DataRowState state, DataRowVersion version)\r
-               {\r
-                       switch (state) {\r
-                               case DataRowState.Unchanged:\r
-                                       if ((_rowStateFilter & DataViewRowState.Unchanged) != DataViewRowState.None)\r
-                                               return ((version & DataRowVersion.Default) != 0);\r
-                                       break;\r
-                               case DataRowState.Added:\r
-                                       if ((_rowStateFilter & DataViewRowState.Added) != DataViewRowState.None)\r
-                                               return ((version & DataRowVersion.Default) != 0);\r
-                                       break;\r
-                               case DataRowState.Deleted:\r
-                                       if ((_rowStateFilter & DataViewRowState.Deleted) != DataViewRowState.None)\r
-                                               return (version == DataRowVersion.Original);\r
-                                       break;\r
-                               default:\r
-                                       if ((_rowStateFilter & DataViewRowState.ModifiedCurrent) != DataViewRowState.None)\r
-                                               return ((version & DataRowVersion.Default) != 0);\r
-                                       if ((_rowStateFilter & DataViewRowState.ModifiedOriginal) != DataViewRowState.None)\r
-                                               return (version == DataRowVersion.Original);\r
-                                       break;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               internal static int GetRecord(DataRow row, DataViewRowState rowStateFilter)\r
-               {\r
-                       switch (row.RowState) {\r
-                               case DataRowState.Unchanged: {\r
-                                       if ((rowStateFilter & DataViewRowState.Unchanged) != DataViewRowState.None)\r
-                                               return row.Proposed >= 0 ? row.Proposed : row.Current;\r
-                                       break;\r
-                               }\r
-                               case DataRowState.Added: {\r
-                                       if ((rowStateFilter & DataViewRowState.Added) != DataViewRowState.None)\r
-                                               return row.Proposed >= 0 ? row.Proposed : row.Current;\r
-                                       break;\r
-                               }\r
-                               case DataRowState.Deleted: {\r
-                                       if ((rowStateFilter & DataViewRowState.Deleted) != DataViewRowState.None)\r
-                                               return row.Original;\r
-                                       break;\r
-                               }\r
-                               default:\r
-                                       if ((rowStateFilter & DataViewRowState.ModifiedCurrent) != DataViewRowState.None)\r
-                                               return row.Proposed >= 0 ? row.Proposed : row.Current;\r
-                                       if ((rowStateFilter & DataViewRowState.ModifiedOriginal) != DataViewRowState.None)\r
-                                               return row.Original;\r
-                                       break;\r
-                       }\r
-\r
-                       return -1;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Checks for key equality to parameters set given\r
-               /// </summary>\r
-               /// <param name="columns">Columns the key consits of. If this parameter is null, it does not affects equality check</param>\r
-               /// <param name="sort">Sort order of columns. If this parameter is null, it does not affects equality check</param>\r
-               /// <param name="rowState">DataViewRowState to check for.If this parameter is null, it does not affects equality check</param>\r
-               /// <param name="unique">Indicates whenever the index managed by this key allows non-uniqie keys to appear.</param>\r
-               /// <param name="strict">Indicates whenever unique parameter should affect the equality check.</param>\r
-               /// <returns></returns>\r
-               internal bool Equals(DataColumn[] columns, ListSortDirection[] sort, DataViewRowState rowState, IExpression filter) \r
-               {\r
-                       if (rowState != DataViewRowState.None && RowStateFilter != rowState) {\r
-                               return false;\r
-                       }\r
-\r
-                       if (_filter != null) {\r
-                               if (!_filter.Equals (filter))\r
-                                       return false;\r
-                       }\r
-                       else if (filter != null)\r
-                                       return false;\r
-\r
-                       if (Columns.Length != columns.Length) {\r
-                               return false;\r
-                       }\r
-\r
-                       if (sort != null && Sort.Length != sort.Length) {\r
-                               return false;\r
-                       }\r
-\r
-                       if (sort != null) {\r
-                               for(int i=0; i < columns.Length; i++) {\r
-                                       if (Sort[i] != sort[i] || Columns[i] != columns[i]) {\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                       }\r
-                       else {\r
-                               for(int i=0; i < columns.Length; i++) {\r
-                                       if (Sort [i] != ListSortDirection.Ascending || Columns[i] != columns[i]) {\r
-                                               return false;\r
-                                       }\r
-                               }\r
-                       }\r
-                       return true;\r
-               }\r
-\r
-               internal bool DependsOn (DataColumn column)\r
-               {\r
-                       if (_filter == null)\r
-                               return false;\r
-\r
-                       return _filter.DependsOn (column);\r
-               }\r
-\r
-               #endregion // Methods\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.Common/PermissionHelper.cs b/mcs/class/System.Data/System.Data.Common/PermissionHelper.cs
deleted file mode 100644 (file)
index e2e5c08..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// System.Data.Common.PermissionHelper.cs
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.Common {
-
-       // NOTE: This version of PermissionHelper was customized for System.Data
-
-       internal sealed class PermissionHelper {
-
-               // snippet moved from FileIOPermission (nickd) to be reused in all derived classes
-               internal static SecurityElement Element (Type type, int version) 
-               {
-                       SecurityElement se = new SecurityElement ("IPermission");
-                       se.AddAttribute ("class", type.FullName + ", " + type.Assembly.ToString ().Replace ('\"', '\''));
-                       se.AddAttribute ("version", version.ToString ());
-                       return se;
-               }
-
-               internal static PermissionState CheckPermissionState (PermissionState state, bool allowUnrestricted)
-               {
-                       string msg;
-                       switch (state) {
-                       case PermissionState.None:
-                               break;
-                       case PermissionState.Unrestricted:
-                               if (!allowUnrestricted) {
-                                       msg = Locale.GetText ("Unrestricted isn't not allowed for identity permissions.");
-                                       throw new ArgumentException (msg, "state");
-                               }
-                               break;
-                       default:
-                               msg = String.Format (Locale.GetText ("Invalid enum {0}"), state);
-                               throw new ArgumentOutOfRangeException (msg, "state");
-                       }
-                       return state;
-               }
-
-               internal static int CheckSecurityElement (SecurityElement se, string parameterName, int minimumVersion, int maximumVersion) 
-               {
-                       if (se == null)
-                               throw new ArgumentNullException (parameterName);
-
-                       if (se.Tag != "IPermission") {
-                               string msg = Locale.GetText ("Invalid tag '{0}' expected 'IPermission'.");
-                               throw new ArgumentException (String.Format (msg, se.Tag), parameterName);
-                       }
-
-                       // we assume minimum version if no version number is supplied
-                       int version = minimumVersion;
-                       string v = se.Attribute ("version");
-                       if (v != null) {
-                               try {
-                                       version = Int32.Parse (v);
-                               }
-                               catch (Exception e) {
-                                       string msg = Locale.GetText ("Couldn't parse version from '{0}'.");
-                                       msg = String.Format (msg, v);
-                                       throw new ArgumentException (msg, parameterName, e);
-                               }
-                       }
-
-                       if ((version < minimumVersion) || (version > maximumVersion)) {
-                               string msg = Locale.GetText ("Unknown version '{0}', expected versions between ['{1}','{2}'].");
-                               msg = String.Format (msg, version, minimumVersion, maximumVersion);
-                               throw new ArgumentException (msg, parameterName);
-                       }
-                       return version;
-               }
-
-               // must be called after CheckSecurityElement (i.e. se != null)
-               internal static bool IsUnrestricted (SecurityElement se) 
-               {
-                       string value = se.Attribute ("Unrestricted");
-                       if (value == null)
-                               return false;
-                       return (String.Compare (value, Boolean.TrueString, true, CultureInfo.InvariantCulture) == 0);
-               }
-
-               internal static void ThrowInvalidPermission (IPermission target, Type expected) 
-               {
-                       string msg = Locale.GetText ("Invalid permission type '{0}', expected type '{1}'.");
-                       msg = String.Format (msg, target.GetType (), expected);
-                       throw new ArgumentException (msg, "target");
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/RecordCache.cs b/mcs/class/System.Data/System.Data.Common/RecordCache.cs
deleted file mode 100644 (file)
index f7ce6fb..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace System.Data.Common
-{
-       internal class RecordCache {
-               #region Fields
-
-               const int MIN_CACHE_SIZE = 128;
-
-               Stack _records = new Stack (16);
-               int _nextFreeIndex = 0;
-               int _currentCapacity = 0;
-               DataTable _table;
-               DataRow [] _rowsToRecords;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal RecordCache (DataTable table)
-               {
-                       _table = table;
-                       _rowsToRecords = table.NewRowArray (16);
-               }
-
-               #endregion //Constructors
-
-               #region Properties
-
-               internal int CurrentCapacity {
-                       get { return _currentCapacity; }
-               }
-
-               internal DataRow this [int index] {
-                       get { return _rowsToRecords [index]; }
-                       set {
-                               if (index >= 0)
-                                       _rowsToRecords [index] = value;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               internal int NewRecord ()
-               {
-                       if (_records.Count > 0)
-                               return (int) _records.Pop ();
-
-                       DataColumnCollection cols = _table.Columns;
-                       if (_nextFreeIndex >= _currentCapacity) {
-                               _currentCapacity *= 2;
-                               if (_currentCapacity < MIN_CACHE_SIZE)
-                                       _currentCapacity = MIN_CACHE_SIZE;
-
-                               for (int i = 0; i < cols.Count; ++i)
-                                       cols [i].DataContainer.Capacity = _currentCapacity;
-
-                               DataRow [] old = _rowsToRecords;
-                               _rowsToRecords = _table.NewRowArray (_currentCapacity);
-                               Array.Copy (old, 0, _rowsToRecords, 0, old.Length);
-                       }
-                       return _nextFreeIndex++;
-               }
-
-               internal void DisposeRecord (int index)
-               {
-                       if (index < 0)
-                               throw new ArgumentException ();
-
-                       if (!_records.Contains (index))
-                               _records.Push (index);
-
-                       this [index] = null;
-               }
-
-               // FIXME: This doesn't seem to be the right class to have this method
-               internal int CopyRecord (DataTable fromTable, int fromRecordIndex, int toRecordIndex)
-               {
-                       int recordIndex = toRecordIndex;
-                       if (toRecordIndex == -1)
-                               recordIndex = NewRecord ();
-
-                       try {
-                               foreach (DataColumn toColumn in _table.Columns) {
-                                       DataColumn fromColumn = fromTable.Columns [toColumn.ColumnName];
-                                       if (fromColumn != null)
-                                               toColumn.DataContainer.CopyValue (fromColumn.DataContainer, fromRecordIndex, recordIndex);
-                                       else
-                                               toColumn.DataContainer.CopyValue (_table.DefaultValuesRowIndex, recordIndex);                                   
-                               }
-                               return recordIndex;
-                       } catch {
-                               if (toRecordIndex == -1)
-                                       DisposeRecord (recordIndex);
-
-                               throw;
-                       }
-               }
-
-               // FIXME: This doesn't seem to be the right class to have this method
-               internal void ReadIDataRecord (int recordIndex, IDataRecord record, int [] mapping, int length)
-               {
-                       if (mapping.Length > _table.Columns.Count)
-                               throw new ArgumentException ();
-
-                       int i = 0;
-                       for(; i < length; i++) {
-                               DataColumn column = _table.Columns [mapping [i]];
-                               column.DataContainer.SetItemFromDataRecord (recordIndex, record, i);
-                       }
-
-                       for (; i < mapping.Length; i++) {
-                               DataColumn column = _table.Columns [mapping [i]];
-                               if (column.AutoIncrement)
-                                       column.DataContainer [recordIndex] = column.AutoIncrementValue ();
-                               else
-                                       column.DataContainer [recordIndex] = column.DefaultValue;
-                       }
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/RowUpdatedEventArgs.cs b/mcs/class/System.Data/System.Data.Common/RowUpdatedEventArgs.cs
deleted file mode 100644 (file)
index 03343fa..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// System.Data.Common.RowUpdatedEventArgs.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-
-namespace System.Data.Common
-{
-       public
-       class RowUpdatedEventArgs : EventArgs
-       {
-               #region Fields
-
-               DataRow dataRow;
-               IDbCommand command;
-               StatementType statementType;
-               DataTableMapping tableMapping;
-               Exception errors;
-               UpdateStatus status;
-               int recordsAffected;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public
-               RowUpdatedEventArgs (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
-               {
-                       this.dataRow = dataRow;
-                       this.command = command;
-                       this.statementType = statementType;
-                       this.tableMapping = tableMapping;
-                       this.status = UpdateStatus.Continue;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-               
-               public IDbCommand Command {
-                       get { return command; }
-               }
-
-               public Exception Errors {
-                       get {
-                               if (errors == null)
-                                       errors =  new DataException ("RowUpdatedEvent: No additional information is available!");
-                               return errors; 
-                       }
-                       set { errors = value; }
-               }
-
-               public int RecordsAffected {
-                       get { return recordsAffected; }
-               }
-
-               public DataRow Row {
-                       get { return dataRow; }
-               }
-
-               public StatementType StatementType {
-                       get { return statementType; }
-               }
-
-               public UpdateStatus Status {
-                       get { return status; }
-                       set { status = value; }
-               }
-
-               public DataTableMapping TableMapping {
-                       get { return tableMapping; }
-               }
-
-               public int RowCount {
-                       get { return 0; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public void CopyToRows (DataRow[] array)
-               {
-               }
-
-               public void CopyToRows (DataRow[] array, int arrayIndex)
-               {
-               }
-
-               #endregion //Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/RowUpdatingEventArgs.cs b/mcs/class/System.Data/System.Data.Common/RowUpdatingEventArgs.cs
deleted file mode 100644 (file)
index e7d714c..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-//
-// System.Data.Common.RowUpdatingEventArgs.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Common {
-       public
-       class RowUpdatingEventArgs : EventArgs
-       {
-               #region Fields
-
-               DataRow dataRow;
-               IDbCommand command;
-               StatementType statementType;
-               DataTableMapping tableMapping;
-               UpdateStatus status;
-               Exception errors;
-               
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public
-               RowUpdatingEventArgs (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
-               {
-                       this.dataRow = dataRow;
-                       this.command = command;
-                       this.statementType = statementType;
-                       this.tableMapping = tableMapping;
-                       this.status = UpdateStatus.Continue;
-                       this.errors = null;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-               
-               public IDbCommand Command {
-                       get { return command; }
-                       set { command = value; }
-               }
-
-               public Exception Errors {
-                       get { return errors; }
-                       set { errors = value; }
-               }
-
-               public DataRow Row {
-                       get { return dataRow; }
-               }
-
-               public StatementType StatementType {
-                       get { return statementType; }
-               }
-
-               public UpdateStatus Status {
-                       get { return status; }
-                       set { status = value; }
-               }
-
-               public DataTableMapping TableMapping {
-                       get { return tableMapping; }
-               }
-
-               
-               protected virtual IDbCommand BaseCommand {
-                       get { return this.command; }    
-                       set { this.command = value; }
-               }
-
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Common/SchemaLocation.cs b/mcs/class/System.Data/System.Data.Common/SchemaLocation.cs
deleted file mode 100644 (file)
index 2bebedf..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Data.Common.SchemaLocation.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public enum SchemaLocation 
-       {
-               DataTable,
-               SelectCommand
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/SchemaTableColumn.cs b/mcs/class/System.Data/System.Data.Common/SchemaTableColumn.cs
deleted file mode 100644 (file)
index f88e956..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.Common.SchemaTableColumn.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public static class SchemaTableColumn 
-       {
-               #region Fields
-                       public static readonly string AllowDBNull = "AllowDBNull";
-                       public static readonly string BaseColumnName = "BaseColumnName";
-                       public static readonly string BaseSchemaName = "BaseSchemaName";
-                       public static readonly string BaseTableName = "BaseTableName";
-                       public static readonly string ColumnName = "ColumnName";
-                       public static readonly string ColumnOrdinal = "ColumnOrdinal";
-                       public static readonly string ColumnSize = "ColumnSize";
-                       public static readonly string DataType = "DataType";
-                       public static readonly string IsAliased = "IsAliased";
-                       public static readonly string IsExpression = "IsExpression";
-                       public static readonly string IsKey = "IsKey";
-                       public static readonly string IsLong = "IsLong";
-                       public static readonly string IsUnique = "IsUnique";
-                       public static readonly string NonVersionedProviderType = "NonVersionedProviderType";
-                       public static readonly string NumericPrecision = "NumericPrecision";
-                       public static readonly string NumericScale = "NumericScale";
-                       public static readonly string ProviderType = "ProviderType";
-
-               #endregion // Fields
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/SchemaTableOptionalColumn.cs b/mcs/class/System.Data/System.Data.Common/SchemaTableOptionalColumn.cs
deleted file mode 100644 (file)
index fe54dfa..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.Data.Common.SchemaTableOptionalColumn.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-       public static class SchemaTableOptionalColumn 
-       {
-               #region Fields
-                       public static readonly string AutoIncrementSeed = "AutoIncrementSeed";
-                       public static readonly string AutoIncrementStep = "AutoIncrementStep";
-                       public static readonly string BaseCatalogName = "BaseCatalogName";
-                       public static readonly string BaseColumnNamespace = "BaseColumnNamespace";
-                       public static readonly string BaseServerName = "BaseServerName";
-                       public static readonly string BaseTableNamespace = "BaseTableNamespace";
-                       public static readonly string ColumnMapping = "ColumnMapping";
-                       public static readonly string DefaultValue = "DefaultValue";
-                       public static readonly string Expression = "Expression";
-                       public static readonly string IsAutoIncrement = "IsAutoIncrement";
-                       public static readonly string IsHidden = "IsHidden";
-                       public static readonly string IsReadOnly = "IsReadOnly";
-                       public static readonly string IsRowVersion = "IsRowVersion";
-                       public static readonly string ProviderSpecificDataType = "ProviderSpecificDataType";
-
-
-               #endregion // Fields
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/SupportedJoinOperators.cs b/mcs/class/System.Data/System.Data.Common/SupportedJoinOperators.cs
deleted file mode 100644 (file)
index f7ad936..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Data.Common.SupportedJoinOperators.cs
-//
-// Author:
-//   Chris Toshok (toshok@ximian.com)
-//
-
-//
-// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Common {
-
-       [Flags]
-       public enum SupportedJoinOperators
-       {
-               None = 0,
-               Inner = 1 << 0,
-               LeftOuter = 1 << 1,
-               RightOuter = 1 << 2,
-               FullOuter = 1 << 3
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Common/TaskHelper.cs b/mcs/class/System.Data/System.Data.Common/TaskHelper.cs
deleted file mode 100644 (file)
index d10c73f..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// System.Data.Common.TaskHelper.cs
-//
-// Copyright (C) 2013 PÄ“teris Å…ikiforovs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Threading.Tasks;
-
-namespace System.Data.Common {
-       static class TaskHelper
-       {
-               internal static Task CreateCanceledTask ()
-               {
-                       TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
-                       tsc.SetCanceled ();
-                       return tsc.Task;
-               }
-               
-               internal static Task<T> CreateCanceledTask<T> ()
-               {
-                       TaskCompletionSource<T> tsc = new TaskCompletionSource<T> ();
-                       tsc.SetCanceled ();
-                       return tsc.Task;
-               }
-               
-               internal static Task CreateExceptionTask (Exception e)
-               {
-                       TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
-                       tsc.SetException (e);
-                       return tsc.Task;
-               }
-               
-               internal static Task<T> CreateExceptionTask<T> (Exception e)
-               {
-                       TaskCompletionSource<T> tsc = new TaskCompletionSource<T> ();
-                       tsc.SetException (e);
-                       return tsc.Task;
-               }
-               
-               internal static Task CreateVoidTask ()
-               {
-                       TaskCompletionSource<object> tsc = new TaskCompletionSource<object> ();
-                       tsc.SetResult (null);
-                       return tsc.Task;
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Configuration.jvm/.gitattributes b/mcs/class/System.Data/System.Data.Configuration.jvm/.gitattributes
deleted file mode 100644 (file)
index 8036553..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/GlobalConfig.cs -crlf
-/ObjectNameResolutionSectionHandler.cs -crlf
-/ObjectNameResolver.cs -crlf
-/ObjectNameResolversCollection.cs -crlf
diff --git a/mcs/class/System.Data/System.Data.Configuration.jvm/GlobalConfig.cs b/mcs/class/System.Data/System.Data.Configuration.jvm/GlobalConfig.cs
deleted file mode 100644 (file)
index 88a08a1..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// 
-// System.Data.Configuration.GlobaConfig.cs
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-using System.Collections;\r
-using System.Configuration;\r
-using System.Xml;\r
-using System.Collections.Specialized;\r
-\r
-namespace System.Data.Configuration {\r
-\r
-       internal enum BooleanSetting {\r
-               False,\r
-               True,\r
-               NotSet\r
-       }\r
-\r
-       internal sealed class Switches {\r
-\r
-               private Switches() {}\r
-\r
-               const string SwitchesSection = "Mainsoft.Data.Configuration/switches";\r
-               const string PrefetchSchemaConfigName = "JDBC.PrefetchSchema";\r
-               static readonly string AppDomainPrefetchSchemaConfigName = String.Concat(SwitchesSection, "/", PrefetchSchemaConfigName);\r
-\r
-               internal static BooleanSetting PrefetchSchema {\r
-                       get {\r
-\r
-                               object value = AppDomain.CurrentDomain.GetData(AppDomainPrefetchSchemaConfigName);\r
-                               if (value != null)\r
-                                       return (BooleanSetting)value;\r
-\r
-                               BooleanSetting setting = BooleanSetting.NotSet;\r
-\r
-                               NameValueCollection switches = (NameValueCollection)ConfigurationSettings.GetConfig(SwitchesSection);\r
-                               if (switches != null) {\r
-                                       string strVal = (string)switches[PrefetchSchemaConfigName];\r
-                                       if (strVal != null) {\r
-                                               try {\r
-                                                       setting = Boolean.Parse(strVal) ? BooleanSetting.True : BooleanSetting.False;\r
-                                               }\r
-                                               catch (Exception e) {\r
-                                                       throw new ConfigurationException(e.Message, e);\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               //lock(AppDomainPrefetchSchemaConfigName)\r
-                               AppDomain.CurrentDomain.SetData(AppDomainPrefetchSchemaConfigName, setting);\r
-\r
-                               return setting;\r
-                       }\r
-               }\r
-       }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolutionSectionHandler.cs b/mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolutionSectionHandler.cs
deleted file mode 100644 (file)
index 2093522..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-// 
-// System.Data.Configuration.ObjectNameResolutionSectionHandler.cs
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-using System.Collections;\r
-using System.Configuration;\r
-using System.Xml;\r
-\r
-namespace System.Data.Configuration {\r
-       class ObjectNameResolutionSectionHandler : IConfigurationSectionHandler {\r
-               public virtual object Create (object parent, object configContext, XmlNode section) {\r
-                       if (section.Attributes != null && section.Attributes.Count != 0)\r
-                               HandlersUtil.ThrowException ("Unrecognized attribute", section);\r
-\r
-                       ObjectNameResolversCollection col = new ObjectNameResolversCollection(parent as ObjectNameResolversCollection);\r
-\r
-                       XmlNodeList resolvers = section.ChildNodes;\r
-                       foreach (XmlNode child in resolvers) {\r
-                               XmlNodeType ntype = child.NodeType;\r
-                               if (ntype == XmlNodeType.Whitespace || ntype == XmlNodeType.Comment)\r
-                                       continue;\r
-\r
-                               if (ntype != XmlNodeType.Element)\r
-                                       HandlersUtil.ThrowException ("Only elements allowed", child);\r
-\r
-                               string dbname = HandlersUtil.ExtractAttributeValue ("dbname", child,false,true);\r
-                               string match = HandlersUtil.ExtractAttributeValue ("match", child);\r
-                               string pri = HandlersUtil.ExtractAttributeValue ("priority", child);\r
-\r
-                               ObjectNameResolver resolver = new ObjectNameResolver(dbname, match, int.Parse(pri));\r
-                               col.Add(resolver);\r
-                       }\r
-\r
-                       col.Sort();\r
-                       \r
-                       return col;\r
-               }\r
-       }\r
-\r
-       internal sealed class HandlersUtil {\r
-               private HandlersUtil () {\r
-               }\r
-\r
-               static internal string ExtractAttributeValue (string attKey, XmlNode node) {\r
-                       return ExtractAttributeValue (attKey, node, false);\r
-               }\r
-                       \r
-               static internal string ExtractAttributeValue (string attKey, XmlNode node, bool optional) {\r
-                       return ExtractAttributeValue (attKey, node, optional, false);\r
-               }\r
-               \r
-               static internal string ExtractAttributeValue (string attKey, XmlNode node, bool optional,\r
-                       bool allowEmpty) {\r
-                       if (node.Attributes == null) {\r
-                               if (optional)\r
-                                       return null;\r
-\r
-                               ThrowException ("Required attribute not found: " + attKey, node);\r
-                       }\r
-\r
-                       XmlNode att = node.Attributes.RemoveNamedItem (attKey);\r
-                       if (att == null) {\r
-                               if (optional)\r
-                                       return null;\r
-                               ThrowException ("Required attribute not found: " + attKey, node);\r
-                       }\r
-\r
-                       string value = att.Value;\r
-                       if (!allowEmpty && value == String.Empty) {\r
-                               string opt = optional ? "Optional" : "Required";\r
-                               ThrowException (opt + " attribute is empty: " + attKey, node);\r
-                       }\r
-\r
-                       return value;\r
-               }\r
-\r
-               static internal void ThrowException (string msg, XmlNode node) {\r
-                       if (node != null && node.Name != String.Empty)\r
-                               msg = msg + " (node name: " + node.Name + ") ";\r
-                       throw new ConfigurationException (msg, node);\r
-               }\r
-       }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolver.cs b/mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolver.cs
deleted file mode 100644 (file)
index 9f50c28..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-// 
-// System.Data.Configuration.ObjectNameResolver.cs
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-using System.Collections;\r
-using System.Configuration;\r
-using System.Xml;\r
-using System.Text.RegularExpressions;\r
-\r
-namespace System.Data.Configuration {\r
-       sealed class ObjectNameResolver : IComparable {\r
-               string _dbname;\r
-               int _priority;\r
-               Regex _regex;\r
-               \r
-               public ObjectNameResolver(string dbname, string match, int priority) {\r
-                       _dbname = dbname;\r
-                       _regex = new Regex(match, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);\r
-                       \r
-                       _priority = priority;\r
-               }\r
-\r
-               public ObjectNameResolver(Regex regex) {\r
-                       _regex = regex;\r
-                       _dbname = null;\r
-                       _priority = int.MaxValue;\r
-               }\r
-\r
-               public string DbName {\r
-                       get {\r
-                               return _dbname;\r
-                       }\r
-               }\r
-\r
-               public static string GetCatalog(Match match) {\r
-                       return GetCapture(match, "CATALOG");\r
-               }\r
-\r
-               public static string GetSchema(Match match) {\r
-                       return GetCapture(match, "SCHEMA");\r
-               }\r
-\r
-               public static string GetName(Match match) {\r
-                       return GetCapture(match, "NAME");\r
-               }\r
-\r
-               public Match Match(string expression) {\r
-                       return _regex.Match(expression.Trim());\r
-               }\r
-\r
-               static string GetCapture(Match match, string captureName) {\r
-                       Group g = match.Groups[captureName];\r
-                       if (!g.Success)\r
-                               return String.Empty;\r
-\r
-                       return g.Value.Trim();\r
-               }\r
-\r
-               #region IComparable Members\r
-\r
-               public int CompareTo(object obj) {\r
-                       // TODO:  Add ObjectNameResolver.CompareTo implementation\r
-                       return _priority.CompareTo(((ObjectNameResolver)obj)._priority);\r
-               }\r
-\r
-               #endregion\r
-\r
-       }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolversCollection.cs b/mcs/class/System.Data/System.Data.Configuration.jvm/ObjectNameResolversCollection.cs
deleted file mode 100644 (file)
index dfdea04..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-// 
-// System.Data.Configuration.ObjectNameResolversCollection.cs
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-using System.Collections;\r
-using System.Configuration;\r
-using System.Xml;\r
-using System.Text.RegularExpressions;\r
-\r
-namespace System.Data.Configuration {\r
-       sealed class ObjectNameResolversCollection : IEnumerable, ICollection {\r
-\r
-               ArrayList _resolvers;\r
-\r
-               #region ctors\r
-\r
-               internal ObjectNameResolversCollection(ObjectNameResolversCollection parent) {\r
-                       _resolvers = new ArrayList();\r
-\r
-                       if (parent != null)\r
-                               _resolvers.AddRange(parent);\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region methods\r
-\r
-               internal void Add(ObjectNameResolver value) {\r
-                       _resolvers.Add(value);\r
-               }\r
-\r
-               internal void Sort() {\r
-                       _resolvers.Sort();\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region props\r
-\r
-               internal ObjectNameResolver this[int index] {\r
-                       get {\r
-                               return (ObjectNameResolver)_resolvers[index];\r
-                       }\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region IEnumerable Members\r
-\r
-               public IEnumerator GetEnumerator() {\r
-                       // TODO:  Add ObjectNameResolversCollection.GetEnumerator implementation\r
-                       return _resolvers.GetEnumerator();\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region ICollection Members\r
-\r
-               public bool IsSynchronized {\r
-                       get {\r
-                               // TODO:  Add ObjectNameResolversCollection.IsSynchronized getter implementation\r
-                               return _resolvers.IsSynchronized;\r
-                       }\r
-               }\r
-\r
-               public int Count {\r
-                       get {\r
-                               // TODO:  Add ObjectNameResolversCollection.Count getter implementation\r
-                               return _resolvers.Count;\r
-                       }\r
-               }\r
-\r
-               public void CopyTo(Array array, int index) {\r
-                       // TODO:  Add ObjectNameResolversCollection.CopyTo implementation\r
-                       _resolvers.CopyTo(array, index);\r
-               }\r
-\r
-               public object SyncRoot {\r
-                       get {\r
-                               // TODO:  Add ObjectNameResolversCollection.SyncRoot getter implementation\r
-                               return _resolvers.SyncRoot;\r
-                       }\r
-               }\r
-\r
-               #endregion\r
-       }\r
-\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.Odbc/ChangeLog b/mcs/class/System.Data/System.Data.Odbc/ChangeLog
deleted file mode 100644 (file)
index 41f2b51..0000000
+++ /dev/null
@@ -1,1019 +0,0 @@
-2011-03-22  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes #676368 - Patch by 0richardkk.novell@chiark.greenend.org.uk
-       * OdbcConnection.cs: Make linking/unlinking of OdbcCommands thread safe.
-       * OdbcCommand.cs: Check generation object from connection in order to 
-       free the associated statement handle.
-       
-2010-12-07  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #456234 - Patch by amc1999@gmail.com
-       * OdbcDataReader.cs (GetValue): Handle SQL_NO_TOTAL sanely and 
-       use corresponding Decoder.GetChars instead of Encoding.GetString.
-       
-2010-06-15 Jonathan Chambers  <joncham@gmail.com>
-
-       * OdbcDataReader.cs: Remove unneeded cast on ref parameter
-
-2009-07-15  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * OdbcParameter.cs (OdbcType): Return appropriate type from the typeMap.
-       
-2009-02-20  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * OdbcDataReader.cs (GetValue): Handle null image data.  Fixes ##419224
-       Patch by John Mortlock <johnm@hlaustralia.com.au>.
-       
-2009-01-18  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcDataReader.cs: Fixed GetBytes with limited length. Added reader
-       state and argument checks.
-
-2009-01-18  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcCommand.cs: Do not allow negative CommandTimeout. Reject invalid
-       value for CommandType and UpdatedRowSource. In Dispose, clear
-       CommandText (2.0 only) and Parameters. Include method that is being
-       executed in the exception messages for Connection and CommandText
-       verification.
-
-2009-01-03  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcCommandBuilder.cs (QuoteIdentifier): Escape QuoteSuffix
-       character(s) in unquoted identifier.
-
-2008-12-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcColumn.cs: Treat OdbcType.Numeric as decimal.
-       * OdbcConnection.cs: Keep (weak) list of commands to allow us to
-       dispose them (and free their corresponding statement handles) when
-       the connection is closed. Fixed bug #341743.
-       * OdbcCommand.cs: Add internal Unlink method that is invoked when the
-       OdbcConnection is disposed, and which frees the statement handle.
-       Modified ExecuteNonQuery helper to take CommandBehavior and rename
-       freeHandle argument to createReader. Added CommandBehavior argument
-       to ExecSQL. Added FreeStatement overload that takes an option to not
-       perform an unlink. Fixes bug #3417434.
-
-2008-12-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * libodbc.cs: Add IdentifierQuoteChar to OdbcInfo.
-       * OdbcCommandBuilder.cs: Return a zero-length string when QuotePrefix
-       or QuoteSuffix are not set (or are set to null). Changing QuotePrefix
-       or QuoteSuffix after a command has been generated should result in an
-       InvalidOperationException. Implemented support for obtaining
-       character(s) for quoting identifiers from specified connection.
-       Modified generated SQL to match MS.
-       * OdbcConnectionStringBuilder.cs: Improved special casing of Driver
-       and Dsn keywords. Re-use implemenation of DbConnectionStringBuilder.
-       Improved argument checks to match MS.
-
-2008-10-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
-
-       * OdbcDataReader.cs: apply patch from Steve ? that fixes bug #433741.
-       GetBytes() was returning only the last byte.
-
-2008-08-26  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       Patch provided by Ernesto <equistango@gmail.com>
-       * OdbcDataReader.cs: Don't call GetSchemaTable in the constructor
-       instead just get column information.  Enhances performance of
-       DataReader.
-       
-2008-08-26  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       Patch provided by Ernesto <equistango@gmail.com>
-       * OdbcParameter.cs (CopyValue): Handle Binary type along with
-       VarBinary and Image. 
-       
-2008-07-06  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * OdbcDataReader.cs: Fix unneeded self-assignment for 'length'. Also
-       fix a bad setter where "value = behavior" instead of "behavior = value"
-       [Found using Gendarme ReviewSelfAssignmentRule]
-
-2008-04-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcParameterCollection.cs: Changed argument names to match MS.
-       Code formatting.
-
-2008-03-24  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcTransaction.cs: Use internal CreateOdbcException method on
-       OdbcConnection to create OdbcException.
-       * OdbcException.cs: Added support for multiple OdbcError instances
-       and fixed Message property on 2.0 profile.
-       * OdbcCommand.cs: Use internal CreateOdbcException method on
-       OdbcConnection to create OdbcException. Code formatting.
-       * OdbcError.cs: Moved code to obtain ODBC error info to newly
-       introduced CreateOdbcException on OdbcConnection. Code formatting.
-       * OdbcDataReader.cs: Use internal CreateOdbcException method on
-       OdbcTransaction to create OdbcException.
-       * OdbcParameterCollection.cs: Removed obsolete Bind method.
-       * OdbcConnection.cs: Added SafeDriver property that returns
-       name of driver if available and a zero-length string otherwise.
-       Use CreateOdbcException method to create OdbcException from ODBC
-       error info. Added CreateOdbcException method to construct
-       OdbcException from all available ODBC error info.
-       * OdbcParameter.cs: Use internal CreateOdbcException method on
-       OdbcConnection to create OdbcException.
-
-2008-03-23  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcErrorCollection.cs: Corcompare fixes and code formatting.
-       * OdbcCommandBuilder.cs: Corcompare fixes and code formatting.
-       * OdbcPermission.cs: Corcompare fixes and code formatting.
-       * OdbcDataReader.cs: Corcompare fixes and code formatting.
-       * OdbcParameterCollection.cs: Corcompare fixes and code formatting.
-       * OdbcConnection.cs: Corcompare fixes and code formatting. Use
-       unicode encoding in ChangeDatabase and GetInfo.
-       * OdbcDataAdapter.cs: Corcompare fixes and code formatting.
-       * OdbcParameter.cs: Corcompare fixes and code formatting.
-
-2008-03-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * libodbc.cs: Always use unicode version of ODBC functions. Fixes part
-       of bug #372823.
-       * OdbcTypeMap.cs: Fixed mapping for NChar, NText and NVarChar.
-       * OdbcDataReader.cs (GetColumn): Use Unicode encoding to decode
-       column name buffer.
-       (GetDataTypeName): Use SQLColAttribute to determine type name of
-       column.
-       (GetValue): Fixed retrieving value of nchar column. When retrieving
-       variable length unicode value, use Unicode encoding to decode buffer
-       and remove trailing null characters. Fixes bug #364430.
-
-2008-03-03  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes Bug#324025
-       * OdbcDataReader (GetString): Use Convert.ToString() to return
-       appropriate typed values.
-       (GetValue): Fixes a regression. 
-       
-2008-03-03  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * OdbcCommandBuilder.cs: Clean up.
-       
-2008-03-03  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes Bug#340451 - patch provided by Ernesto Carrea
-       <equistango@gmail.com>
-       * OdbcConnection.cs (GetInfo): Trim the value to actual length
-       returned by libodbc.
-       
-2008-03-03  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes from BNC#332809 - patch provided by Ernesto Carrea
-       <equistango@gmail.com>
-       * OdbcParameter.cs (Bind): Do not allocate buffer if value is
-       DBNull.
-       * OdbcTypeConverter.cs (InferFromValue): Incase of DBNull, do not
-       throw exception, instead return NVarChar to match MS.NET
-       implementation.
-       
-2008-03-03  Ankit Jain  <jankit@novell.com>
-
-       * OdbcMetaDataCollectionNames.cs: Set the field values.
-
-2008-02-26  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes BNC#364432.
-       * OdbcParameter.cs: (Bind): Set StrLen parameter of
-       SQLBindParameter to reflect NullData in case of DBNull.
-       (CopyValue): If Value is DBNull.Value, just don't try any
-       heroics. 
-       
-2008-02-25  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes BNC#364426.
-       * OdbcDataReader.cs: (GetValue): Map OdbcType.Time to
-       System.TimeSpan.  
-
-       * OdbcTypeConverter.cs: (GetTypeMap): Map OdbcType.Time and
-       SqlType.TIME to corresponding types. 
-
-       * OdbcColumn.cs: -- ditto --
-       
-2008-02-20  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * OdbcDataReader.cs: (GetValue): Handle cases when certain 
-       ODBC drivers return unexpected results.  Fixes #326740.  Patch 
-       provided by Mark Junker <mjscod@gmx.de>.
-       
-2008-01-16  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * OdbcCommandBuilder.cs: Implemented 2.0 APIs and code
-       restructuring. 
-       
-2007-10-28  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcDataReader.cs: Code formatting, spaces to tabs.
-
-2007-10-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcCommand.cs: Added constant for default CommandTimeout, instead
-       of using a magic number. Avoid unnecessary initialization. Fixed
-       default value for DesignTimeVisible. Return zero-length string if
-       CommandText is null. Spaces to tabs and code formatting.
-       * OdbcError.cs: Fixed typo in exception message.
-       * OdbcConnection.cs: Return zero-length string if ConnectionString is
-       null. In getters for Database, DataSource and Driver return a
-       zero-length string if connection is closed. In BeginTransaction and
-       GetSchema throw InvalidOperationException if connection is closed.
-       Added override for GetSchema (string, string []). Use string.Empty
-       instead of "".
-       * OdbcDataAdapter.cs: Avoid unnecessary initializations. Use direct
-       assignment in IDbDataAdapter implementation. In default ctor, set
-       SelectCommand to null.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcTransaction.cs: Clear connection in Commit and Rollback.
-       In IsolationLevel, throw IOE if transaction is no longer open.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcTransaction.cs: Keep state of the transaction, and update it
-       when performing commit or rollback. In Dispose (bool), only perform
-       a rollback if transaction was not committed or rollback before.
-       In Commit and Rollback, throw an InvalidOperationException if
-       transaction is no longer open.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcTransaction.cs: Use OdbcIsolationLevel enum value instead of
-       magic numbers. For Snapshot isolation level, the attribute
-       SQL_COPT_SS_TXN_ISOLATION must be used instead. When isolation level
-       is Unspecified, then do not modify the isolation level at all and
-       lazy initlization the IsolationLevel property. Modified exceptions
-       for invalid / not supported isolation levels to match MS.
-       * libodbc.cs: Added attribute for changing SQL Server specific
-       connection option. Added enum for ODBC isolation level options.
-       Added SQLGetConnectAttr method.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * libodbc.cs: Spaces to tabs. Code formatting.
-       * OdbcConnection.cs: Spaces to tabs. Code formatting.
-       * OdbcTransaction.cs: Code formatting.
-
-2007-10-19  Nagappan <anagappan@novell.com> 
-
-       * OdbcCommandBuilder.cs, OdbcParameterCollection.cs: Code alignment.
-       * OdbcDataReader.cs: Fixes numeric columns, bug # 332404.
-
-2007-10-19  Nagappan <anagappan@novell.com> 
-
-       * OdbcCommand.cs: (Clone): Implemented new method. Code alignment.
-
-2007-10-12  Nagappan <anagappan@novell.com> 
-
-       * OdbcDataReader.cs: Bug 332400 - ODBC and LONGBLOB columns. Thanks to
-         Ernesto Carrea <equistango@gmail.com> for the patch and the test case.
-
-2007-10-08  Marek Safar <marek.safar@gmail.com> 
-
-       * OdbcParameterCollection.cs (SetParameter): Fixed missing cast.
-
-2007-09-27  Nagappan A <anagappan@novell.com> 
-
-       * OdbcTransaction.cs: AutoCommit and BeginTransaction fix. Thanks to
-         Mads Bondo Dydensborg <mbd@dbc.dk> and Amc <amc1999@gmail.com> for
-         providing this patch.
-
-2007-09-25  Nagappan A  <anagappan@novell.com>
-
-       * OdbcParameter.cs (ResetOdbcType, ResetDbType): Implemented
-       missing methods. 2.0 attribute fixes.
-
-       * OdbcInfoMessageEventArgs.cs (Message, Errors, ToString):
-       Implemented missing properties and methods. 2.0 attribute fixes.
-
-       * OdbcConnection.cs (InfoMessage): Added public event and relevant
-       private APIs. 2.0 attribute fixes.
-
-       * OdbcConnectionStringBuilder.cs: 2.0 attribute fixes.
-
-       * OdbcParameterCollection.cs (GetParameter, SetParameter):
-       Implemented missing 2.0 APIs and 2.0 attribute fixes.
-
-       * OdbcDataReader.cs (finalize): 2.0 compatibility fixes.
-
-       * OdbcPermission.cs (Add): 2.0 compatibility fixes.
-
-       * OdbcCommandBuilder.cs: 2.0 attribute fixes.
-
-       * OdbcRowUpdatingEventArgs.cs (BaseCommand): Added 2.0 property.
-
-       * OdbcCommand.cs: 2.0 attribute fixes.
-
-       * OdbcException.cs: 2.0 attribute fixes.
-
-2007-09-11  AMC  <amc1999@gmail.com>
-
-       * OdbcDataReader.cs (GetPrimaryKeys): ODBC data reader can now
-       properly handle "no-primary-keys" situation. Fixes bug # 82560.
-
-2007-09-11  Nagappan A  <anagappan@novell.com>
-
-       * OdbcConnectionStringBuilder.cs: Fixed Dsn DisplayName attribute.
-
-2007-08-13  Nagappan A  <anagappan@novell.com>
-
-       * OdbcMetaDataColumnNames.cs: Added new class.
-
-       * OdbcMetaDataCollectionNames.cs: Added new class.
-
-       * OdbcParameter.cs: 2.0 compatibility changes.
-
-       * OdbcFactory.cs (CreateConnectionStringBuilder)
-       (CreatePermission): Implemented new methods.
-
-       * OdbcInfoMessageEventHandler.cs: 2.0 compatibility changes.
-
-       * OdbcConnection.cs: 2.0 compatibility changes.
-       (GetSchema): Added new overloaded methods.
-
-       * OdbcConnectionStringBuilder.cs (Driver, Dsn): Added attributes
-       as per 2.0 requirement.
-
-       * OdbcDataReader.cs: 2.0 compatibility changes.
-
-       * OdbcCommandBuilder.cs: 2.0 compatibility changes.
-
-       * OdbcCommand.cs: 2.0 compatibility changes.
-
-       * OdbcErrorCollection.cs (CopyTo): Implemented new overloaded
-       method.
-
-       * OdbcException.cs: In 2.0 DbException should be inherited instead
-       of SystemException.
-
-2007-07-31  Nagappan A  <anagappan@novell.com>
-
-       * OdbcCommand.cs (ExecSQL): Thanks to amc1999@gmail.com (amc) for
-         providing the patch, Fixes bug # 82135. ODBC SQLExecDirect
-         error. Delete where no-data-found fails.
-
-       * OdbcCommandBuilder.cs: Removed bogus TODO.
-         Fixed 2.0 missing attributes
-
-       * libodbc.cs: Added new libodbc global constant SQL_NTS.
-
-       * OdbcCommand.cs (ExecSQL): Thanks to amc1999@gmail.com (amc) for
-         providing the patch, Fixes bug # 82191. ODBC command UTF8
-         error. SQL failed with UTF8 symbols in query.
-         Removed bogus TODO.
-         Fixed 2.0 missing attributes
-
-2007-07-22  Nagappan A  <anagappan@novell.com>
-
-       * OdbcDataAdapter.cs: Fixed compilation warning.
-
-       * OdbcTransaction.cs: Fixed compilation warning.
-
-2007-06-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcDataAdapter.cs: Only override Dispose on 1.0 profile. Added
-       stub for ICloneable.Clone.
-       * OdbcTransaction.cs: Dispose should be explicit interface impl., not
-       public. Connection is also public on 2.0 profile.
-
-2007-06-21  Nagappan A  <anagappan@novell.com>
-
-       * OdbcConnectionStringBuilder.cs: Added new file with the basic
-       work of Nidhi Rawal (rawalnidhi_rawal@yahoo.com).
-
-       * OdbcDataReader.cs (GetValue): Patch for varchar longer than 255
-       characters, by Mads Bondo Dydensborg <mbd@dbc.dk>.
-
-       * OdbcConnection.cs: Fixed compiler warning.
-
-2007-06-06  Amit Biswas <amit@amitbiswas.com>
-
-       * OdbcParameter.cs (OdbcParameter ()): Changed default values in the constructor
-       
-       * OdbcParameterCollection.cs (AddRange (Array values)): Implemented missing method
-       (Add): Corrected bug related to default parameter names
-       (Insert): Added check for valid index values
-       (Contains): Corrected bug for case sensitivity
-       (IndexOf): Corrected bug for case sensitivity
-       (IndexOf): Corrected bug in comparing parameter names
-       (Remove): Added check for non existing parameters
-       (AddRange (OdbcParameter): Implemented missing method
-       (AddRange (Array values): Implemented missing method
-       (Insert (int index, OdbcParameter value)): Implemented missing method
-       (Insert (int index, object value)): Implemented missing method
-       (AddWithValue (string parameterName, Object value)): Implemented missing method
-       (Remove (OdbcParameter value)): Implemented missing method
-       (Contains (OdbcParameter value)): Implemented missing method
-       (CopyTo (OdbcParameter [] array, int index)): Implemented missing method
-
-2007-05-30  Nagappan A  <anagappan@novell.com>
-
-       * OdbcDataReader.cs (GetValue): Adds nano seconds as tickcs from
-       the received buffer.
-
-2007-05-25  Nagappan A  <anagappan@novell.com>
-
-       * OdbcDataReader.cs (GetValue): Sybase returns the fraction values
-       in nano seconds, but DateTime expects the value in milliseconds,
-       so the conversion.
-
-2007-05-04  Nagappan A  <anagappan@novell.com>
-
-       * libodbc.cs: Wrong ODBC API definitions (using ints instead of
-       shorts) - Fixes bug 81306. Thanks to will.mooar@tait.co.nz and
-       tausq@debian.org.
-
-       * OdbcDataReader.cs: Wrong ODBC API definitions (using ints
-       instead of shorts) - Fixes bug 81306. Thanks to
-       will.mooar@tait.co.nz and tausq@debian.org.
-
-2007-02-09  Nagappan A  <anagappan@novell.com>
-
-       * OdbcDataReader.cs (GetDecimal): Implemented new API.
-
-2007-01-08  Nagappan A  <anagappan@novell.com>
-
-       * OdbcFactory.cs: Fixed compilation warning.
-
-       * OdbcCategoryAttribute.cs (Category): Implemented missing
-       property.
-
-       * OdbcParameterCollection.cs: Fixed compilation warning.
-
-       * OdbcCommandBuilder.cs (GetInsertCommand, GetUpdateCommand)
-       (GetDeleteCommand): Implemented overloaded method.
-
-       * OdbcTransaction.cs: Modified partial content of DOS format file
-       to UNIX format.
-
-2006-07-13  Senganal T  <tsenganal@novell.com>
-
-       * OdbcTransaction.cs OdbcCommand.cs OdbcConnectionFactory.cs 
-       OdbcPermission.cs OdbcDataReader.cs OdbcParameterCollection.cs 
-       OdbcConnection.cs OdbcFactory.cs OdbcParameter.cs :
-               2.0 Api fixes
-
-2006-05-31  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcErrorCollection.cs: Removed explicit interface implementation 
-       of IEnumerable.GetEnumerator ().
-       * OdbcCommand.cs: Removed destructor as the destructor in
-       System.ComponentModel.Component already calls the Dispose method.
-       Removed explicit interface implemenation of members that are 
-       implement by public members.
-       * OdbcDataReader.cs: Removed explicit interface implemenation of
-       IDataRecord.GetData.
-
-2006-05-24  Senganal T <tsenganal@novell.com>
-       
-       * OdbcColumn.cs :
-               - Added IsVariableSizeType : Handle types with variable datasize
-       * OdbcTypeConverter.cs : map LongVarBinary to Image
-       * OdbcDataReader.cs :
-               - GetValue () : Handle Text,Image datatypes differently. Only allocate
-               storage for the data contained and not for MaxLength. Fixes #78234
-
-2006-05-09  Senganal T  <tsenganal@novell.com>
-
-       * OdbcConnection.cs : Implemented ChangeDatabase Method
-       * libodbc.cs : Added value for CurrentCatalog in OdbcConnectionAttribute 
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * OdbcDataReader.cs: remove VisibleFieldCount property.
-
-2005-11-21  Senganal T <tsenganal@novell.com>
-
-       * OdbcTransaction.cs
-       * OdbcCommandBuilder.cs
-       * OdbcParameterCollection.cs
-       * OdbcDataReader.cs
-       * OdbcFactory.cs
-       * OdbcDataAdapter.cs
-       * OdbcParameter.cs
-       
-       Added stubs and other changes for ADO.NET 2.0 compatibility
-
-2005-10-14  Senganal T <tsenganal@novell.com>
-
-       * OdbcColumn.cs : Changed the mapping of OdbcType.Char to string
-       instead of char. Fixes bug #67269
-
-2005-10-14  Senganal T <tsenganal@novell.com>
-
-       * OdbcDataReader.cs: Added Text and NText datatypes to the list
-       of datatypes checked by GetValue () method. Fixes bug #75032
-
-2005-10-14  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs (GetValue): Use SQL_CHAR for Numeric as
-       temporary fix.
-
-       * OdbcParameter.cs (CopyValue): Add support for Numeric & Decimal
-       parameters.
-
-2005-10-08  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcCommand.cs (BindParameters): Copy the parameter Value after
-       binding.
-
-       * OdbcParameter.cs: re-implemented the native buffer handling and
-       odbc type handling.
-
-       * NativeBuffer.cs: A native buffer class to hold pointer to native
-       memory.
-
-       * OdbcTypeMap.cs (OdbcTypeMap): structure to hold different odbc
-       types and the default mapping.
-
-       * OdbcTypeConverter.cs: Simplified mapping between different odbc
-       types using switch-case.
-
-       * libodbc.cs (SQLBindParameter): use only one entry point and use
-       IntPtr instead of ref.
-
-2005-08-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcDataReader.cs: Marked GetPrimaryKeysBySQLStatistics unsafe.
-       This fixes the build on Windows (using csc).
-
-2005-08-09  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: GetSchemaTable (): set values for the column
-       attributes using SQLColAttribute. If SQLPrimaryKeys does not
-       yeild, try SQLStatistics. Optimized primary key logic.
-
-       * libodbc.cs: Added api SQLStatistics and constants.
-
-       * OdbcParameter.cs: setBuffer (): allocate a short int buffer for
-       OdbcType.SmallInt. fixes bug #75600.
-
-2005-08-08  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OdbcConnection.cs: Marked Init helper method private.
-       * OdbcCommand.cs: Marked BindParameters helper method private.
-
-2005-08-08  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: Implemented Dispose pattern. Cache
-       schematable for same result set. don't free command's statements
-       if the command is prepared.
-
-       * OdbcConnection.cs: Open (): set disposed to false so that close
-       will be called in Dispose.
-
-       * OdbcCommand.cs:
-       - Prepare (): Split SQLPrepare and SQLBind so that
-       already prepared statements can be reused with new parameter
-       values.
-       - ExecSQL (): create new statement handle, if not prepared
-       and there are no parameters. if there are parameters, prepare and
-       use.
-       - Implemented Dispose pattern
-       - Streamlined the allocation and de-allocation of statement
-       handles.
-
-2005-08-05  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: RecordsAffected: get value from command.
-       GetSchemaTable (): set IsExpression based on BaseTableName. set
-       AllowDBNull to false if the column is PK.
-
-       * OdbcCommand.cs: correct UpdatedRowSource is returned. whitespace
-       changes to conform to standard.
-
-       * OdbcCommandBuilder.cs: Implemented.
-
-       * OdbcParameter.cs: Direction is set to Input by default.
-
-2005-07-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcParameter.cs: updated attributes & attribute descriptions to
-       match with masterinfos.
-
-       * OdbcDataReader.cs: NextRow (): made private.
-
-2005-07-21  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: GetValue (): added case for OdbcType.Bit. and
-       Formatting corrections. Fixes bug #75574.
-
-2005-07-07  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcTypeConverter.cs: ConvertToSqlType & ConvertToSqlCType: map
-       VarChar to SQL_C_CHAR and SQL_VARCHAR respective instead of WCHAR
-       and WVARCHAR as temporary fix.
-
-       * OdbcParameter.cs: setBuffer: string types need not be quoted.
-
-2005-06-28  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: GetPrimaryKeys (): use the length indicator
-       for GetString, otherwise, it creates a string of length 255. Use
-       ArrayList for keys as the columns are different from the selected
-       columns. fixes bug #75263.
-
-2005-06-09  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: GetValue (): return decimal in case of odbc
-       type Numeric. Move the temp buffer logic inside.
-
-       * OdbcTypeConverter.cs: map SQL_TYPE.NUMERIC to SQL_C_TYPE.CHAR by
-       now, since PgSql driver seems not to accept NUMERIC c type. Other
-       database anyway, provides NUMERIC datatype as DECIMAL.
-
-2005-05-31  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcParameter.cs: setBuffer (): for numeric type, the buffer
-       parameter should be a packed decimal struct. fixes bug #75041.
-
-2005-04-05  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcParameter.cs: SqlBindParameter requires the last parameter
-       to be a ref.
-       * libodbc.cs: API change for above.
-
-2005-04-04  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: Ignore BaseTableName & BaseColumnName
-       properties while building Schema information as most drivers
-       ignores these properties. e.g. PostgreSQL.
-
-2005-03-24  Sureshkumar T  <tsureshkumar@novell.com>
-           Appasamy <appasamy@rediffmail.com>
-
-       * OdbcColumn.cs: IsStringType: OdbcType.Char is also of type
-       String.
-       * OdbcDataReader.cs: GetSchemaTable: Get Additional info using
-       SQLColAttribute. Don't pad with spaces in GetColAttributeStr.
-
-2005-03-24  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs:
-       - GetValue: Decode only outsize length for SQL_C_TYPE.CHAR type in
-       SQLGetData.
-       - GetOrdinal: Perform case insensitive lookup if sensitive lookup
-       fails.
-
-2005-03-22  Sureshkumar T  <tsureshkumar@novell.com>
-            Appsamy <appasamy@rediffmail.com>
-
-       * libodbc.cs (System.Data.Odbc): Added enum FieldIdentifier. Added
-       library functions SQLPrimaryKeys, SQLBindCol and SQLColAttribute.
-
-       * OdbcDataReader.cs: Implemented GetPrimaryKeys to get the primary
-       keys associated with resultset using SQLPrimaryKeys.
-
-2005-03-15  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcConnection.cs: re-throw error on exception in Open method.
-
-2005-03-11  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcConnection.cs : notify state change through event. clean up
-       handles in case any exception while opening a connection. NET_2_0
-       uses base class's OnStateChange handler.
-
-2005-03-10  Sureshkumar T  <tsureshkumar@novell.com>
-
-       Migrated core classes to derive from ProviderBase instead of
-       implementing IDb* interfaces. Most part of these files have been
-       branched with #if NET_2_0/ONLY_1_1. Make sure any changes works
-       with both the profiles.
-
-       * OdbcFactory.cs: Concrete Factory for DbProviderFactory. Factory
-       to generate Connection,Command,etc.
-
-       * OdbcConnectionFactory.cs: Concrete factory for DbConnectionFactory.
-
-       * OdbcTransaction.cs: migration and overrides.
-       * OdbcCommandBuilder.cs: migration and overrides.
-       * OdbcDataReader.cs: --do--. no command behavior member as it will
-       be maintained in base provider class.
-       * OdbcParameterCollection.cs: --do--. Now, local ArrayList is not
-       maintained here, instead it is in base class. Most of the methods
-       which operated on this list are not needed in NET_2_0.
-       * OdbcConnection.cs: Migration. connectionString is maintained in
-       DbConnectionBase class.
-       * OdbcParameter.cs: Migration. Many of the local members like
-       value,sourceColumn are maintained in DbParameterBase.
-       * OdbcCommand.cs: Migration. commandText,timeout and
-       commandTimeOut are maintained in DbCommandBase class.
-
-2005-03-10  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcType.cs: Added enums for SQL_TYPE & SQL_C_TYPE.
-       
-       * libodbc.cs: Accept SQL_C_TYPE for driver
-       parameters. SQLBindParameter takes two parameters SQL_TYPE and
-       SQL_C_TYPE. This caused the whole lot of changes done in this
-       revision.
-       
-       * OdbcParameter.cs: Set default values of OdbcType & DbType. Pass
-       mapped SQL_TYPE and SQL_C_TYPE to SQLBindParameter. Increase
-       buffer size by 2 for additional ' chars.
-       
-       * OdbcTypeConverter.cs: Added class to convert between OdbcType,
-       SQL_TYPE, SQL_C_TYPE.
-       
-       * OdbcColumn.cs: Added private members for SQL_TYPE and
-       SQL_C_TYPE. conversion from/to odbctype to/from SQL_TYPE is done
-       through OdbcTypeConverter class.
-       
-       * OdbcDataReader.cs: use OdbcColumn's SQL_C_TYPE member. It keeps
-       track of default mapping between odbctype, SQL_TYPE and
-       SQL_C_TYPE. Move dataTableSchema.AcceptChanges inside if condition
-       to avoid null reference exception.
-
-2005-02-04  Sureshkumar T  <tsureshkumar@novell.com>
-           Appasamy <appasamy@rediffmail.com>
-
-       * OdbcConnection.cs: Implemented properties database, datasource,
-       serverversion and driver.
-       * libodbc.cs: Added type OdbcInfo and native call SQLGetInfo.
-
-2005-01-20  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: case for type OdbcType.Double added in
-       GetValue.  fixes bug #71173.
-
-       Thanks to patch given by "Appasamy T" <appasamy@rediffmail.com>
-
-2005-01-19  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcType.cs: Change enum values for compatiability with MS.NET.
-       * libodbc.cs: Change enum values for compatiability with
-       MS.NET. Change calls into driver with native type.
-       * OdbcDataReader.cs: Change enum values for compatiability with
-       MS.NET. Change calls from/into driver with native type.
-
-2005-01-18  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: GetOrdinal need not check for
-       currentRow. Return -1 if column name is not found.
-
-       fixes bug #71261. Thanks to patch given by "Appasamy T"
-       <appasamy@rediffmail.com>.
-
-2005-01-13  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: Implement NextResultSet for multiple result
-       set queries. 
-       
-       * OdbcDataReader.cs: build column schema once creating reader and
-       then for each Next result set. Thanks to
-       sebastien.robitaille@croesus.com (Sebastien Robitaille) for
-       pointing out this optimization (bugzilla #70530).
-
-       * libodbc.cs: Added library calls SQLFreeStmt and SQLMoreResults
-       for mutiple resultsets.
-
-2005-01-10  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: Connection has to be closed only after
-       Statement handle is freed. fixes bug #70048.
-
-2005-01-07  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcDataReader.cs: Pass OdbcCType.SignedBigInt for accessing big
-       int columns.
-
-       * OdbcType.cs: Added a new enum for Odbc C DataTypes. This should
-       essentially be passed to drivers, since the public OdbcType types
-       differs from types expected in drivers in some cases.
-
-       * libodbc.cs : Added a ODBC method which takes OdbcCType
-       enumeration for SQLGetData for BigInt fields.
-
-       fixes bug #65342.
-
-2004-12-28  Duncan Mak  <duncan@ximian.com>
-
-       * libodbc.cs: Change all the DllImport attributes to point to
-       "odbc32.dll" instead of "odbc32", because /etc/mono/config lists
-       "odbc32.dll" (all other entries in the file have the .dll suffix
-       as well, for consistency's sake, let's rename it here.)
-
-       This fixes #70727.
-       
-2004-12-03  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcParameter.cs: Fixed a null reference exception when a
-       parameter is created and its value is not set. #68750.
-
-2004-11-26  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * OdbcParameter.cs: Fixed Parameter Size property as well as
-       insufficient buffer errors. bug #68749.
-
-2004-09-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * OdbcPermission.cs: Added internal constructor accepting an Odbc
-       PermissionAttribute parameter (using base class protected ctor).
-       * OdbcPermissionAttribute.cs: Copy now use the new OdbcPermission
-       constructor.
-
-2004-09-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * OdbcPermission.cs: Mostly completed (needs tests).
-       * OdbcPermissionAttribute.cs: Completed.
-
-2004-08-31 Umadevi S (sumadevi@novell.com)
-       * OdbcDataReader.cs - Fixed Decimal parsing
-
-2004-08-30 Umadevi S (sumadevi@novell.com)
-       * OdbcType.cs - removed inheritance from short.
-
-2004-08-27 Sureshkumar T (tsureshkumar@novell.com)
-       * OdbcDataReader.cs - fixed bug #63539 - TINYINT ODBC datatype is converted into System.Byte
-
-2004-08-26 Sureshkumar T (tsureshkumar@novell.com)
-       * OdbcDataReader.cs - Date & DateTime GetValue fixed. 
-                             GetBytes ordinal parameter passing fixed for BINARY in GetValue.
-
-2004-08-20 Sureshkumar T (tsureshkumar@novell.com)
-       * OdbcConnection.cs - correct handles are passed to OdbcError exception to trap the correct error
-
-2004-08-04 Umadevi S (sumadevi@novell.com)
-        * OdbcDataReader.cs - Fixed bug 61832 - Column names were not filled, due to which name based lookup of columns failed.
-                                                                                                  
-
-2004-08-04 Umadevi S (sumadevi@novell.com)
-        * OdbcDataReader.cs - Fixed bug 61405 - Handling smallint column type.
-
-2004-07-30  Sureshkumar T (tsureshkumar@novell.com)
-        * OdbcCommand.cs: ExecuteNonQuery Closed statement handle to fix memory leak
-        * OdbcDataReader.cs: Closed statement handle to fix memory leak
-                            Removed SQLState login in GetBytes coz OdbcError provides the same.
-                                   
-2004-07-29 Umadevi S (sumadevi@novell.com)
-        * OdbcCommand.cs - Fixed bug 62046. ExecuteNonQuery implemented correctly
-                                                                                                    
-
-2004-07-28 Umadevi S (sumadevi@novell.com)
-        * OdbcParameter.cs - fixed bug 61968. String values passed with quotes
-                                                                                                 
-
-2004-07-07 Umadevi S (sumadevi@novell.com)
-        * OdbcConnection.cs - Allowed Close to be called multiple times
-                            - Implementation of Dispose method
-
-2004-07-07 Umadevi S (sumadevi@novell.com)
-        * OdbcCommand.cs : fixed set method for Transaction
-                                                          
-2004-07-01  Sureshkumar T (tsureshkumar@novell.com)
-       * OdbcCommand.cs   : fixed reader problem with ExecuteScalar
-
-2004-06-23  Sureshkumar T (tsureshkumar@novell.com)
-        * OdbcConnection.cs: Fix: Moved env allocation to Open method. 
-                            Disconnection & freeing handles are done in Close 
-                            method to avoid simultaneous connections.
-       * libodbc.cs       : Added constants for odbc version.
-                                   
-2004-06-16  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * OdbcError.cs: fixed serialization compatibility with MS.NET
-       * OdbcErrorCollection.cs: fixed serialization compatibility with
-       MS.NET
-       * OdbcException.cs: fixed serialization compatibility with MS.NET
-
-2004-06-16  Sureshkumar T (tsureshkumar@novell.com)
-       * OdbcDataReader.cs: Added GetValue support for Sql Binary type to return byte array.
-                            Implemented GetBytes method.
-       * libodbc.cs       : Added enums, constants & imports for above fix.
-
-2004-06-13  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * OdbcDataReader.cs: changed GetData method to return IDataReader
-       to match MS.NET
-
-2004-06-09  Sureshkumar T (tsureshkumar@novell.com)
-        * OdbcDataReader.cs: Removed checking of currentRow in GetName
-          method
-
-2004-06-04  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * OdbcPermission.cs: moved Obsolete attribute to correct
-       ctor
-
-2004-06-02  Sureshkumar T (tsureshkumar@novell.com)
-       
-       * OdbcDataReader.cs: Implemented GetByte method. Fixed bug #58820
-
-2004-06-02  Gert Driesen <drieseng@users.sourceforge.net>
-
-        * OdbcParameter.cs: added missing attributes
-        * OdbcPermission.cs: added missing attributes
-        * OdbcConnection.cs: fixes attribute, added missing attributes
-        * OdbcInfoMessageEventArgs.cs: removed extra properties, fixed
-        API compatibility with MS.NET
-        * OdbcCommandBuilder.cs: use correct attributes
-
-2004-05-20  Gert Driesen (drieseng@users.sourceforge.net)
-
-        *  OdbcPermissionAttribute.cs: change AllowMultiple and
-        Inherited to match .NET
-
-2004-05-17 Umadevi S (sumadevi@novell.com)
-       * OdbcPermissionAttribute, OdbcPermission.cs - fixed missing methods
-
-2004-05-17 Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcCategoryAttribute.cs: fixed namespace
-       * OdbcDataAdapter.cs: removed extra attributes
-       * OdbcDescriptionAttribute.cs: fixed namespace
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OdbcParameterConverter.cs -Added 
-       * OdbcParameter.cs - Added some attributes      
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OdbcDataAdapter.cs - Added Attributes
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OdbcConnection.cs - Added Attributes
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OdbcCommand.cs - Added Attributes
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OdbcDataReader.cs - Added Attributes
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * Added Classes OdbcCategoryAttribute.cs, OdbcDescriptionAttribute.cs
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-       * Added Class OdbcCommandBuilder.cs
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * Added classes OdbcInfoMessageEventArgs.cs - with stubs
-       * Added classes OdbcInfoMessageEventInfo.cs     
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-       * Added classes OdbcPermission.cs, OdbcPermissionAttribute.cs - with stubs
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcException.cs : removed ErrorCode property, fixing signature
-       * OdbcErrorCollection.cs : added internal ctor, reduced 
-       accessibility of Add method to internal
-       * OdbcCommand.cs: marked hstmt field private, remove setters for
-       Parameters property
-       * OdbcDataReader.cs: Added GetDate method, renamed GetTimeSpan to
-       GetTime to match MS.NET, added HasRows stub
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcError.cs: 
-       * OdbcErrorCollection.cs:
-       * OdbcException.cs: fixed linefeeds to DOS to match other
-       sources in System.Data.Odbc
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcCommand.cs: No longer use OdbcConnection.Datareader, in order 
-       to fix signature of OdbcConnection
-       * OdbcDataReader.cs: No longer use ODbcConnection.Datareader, in 
-       order to fix signature of OdbcConnection
-       * OdbcConnection.cs: Signature fixes: removed DataReader property, 
-       added setter for ConnectionTimeout, made transaction internal
-       * OdbcParameter.cs: reduced accessibility of Bind method to 
-       internal, added setter for IsNullable
-       * OdbcParameterCollection.cs: made default ctor and Bind method
-       internal
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcCommand.cs: fixed linefeeds to DOS to match other sources
-       in System.Data.Odbc
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcTransaction.cs: fixed signature to match MS.NET
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcType.cs: fixed typo UniqueIndetifier
-       * OdbcColumn.cs : fixed typo UniqueIndetifier
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OdbcType.cs: fixed linefeeds to DOS to match other sources
-       in System.Data.Odbc
-
-2003-12-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * OdbcTransaction.cs: applied patch from Jeff Seifert that makes
-       this class implement IDbTransaction interface.
-
-2002-11-01  Daniel Morgan <danmorg@sc.rr.com>
-
-       * OdbcDataReader.cs: - uncommented code, but I put a FIXME:
-       according to Brian, this does not work on MS .NET however, we need it
-       for Mono for now. schemaRow.AcceptChanges(),
-       - implement IEnumerable.GetEnumerator()
-    
-       * libodbc.cs: changed the DllImport from "odbc32.dll" to "odbc32"
-    
-2002-10-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * ChangeLog: added.
-       * OdbcError.cs:
-       * OdbcException.cs: added dummy implementation for these missing
-       classes.
-
diff --git a/mcs/class/System.Data/System.Data.Odbc/NativeBuffer.cs b/mcs/class/System.Data/System.Data.Odbc/NativeBuffer.cs
deleted file mode 100644 (file)
index 15d74bd..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// NativeBuffer.cs: class for handling native pointers.
-//
-// Authors:
-//   Brian Ritchie (brianlritchie@hotmail.com)
-//   Sureshkumar T <tsureshkumar@novell.com>  2004.
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Text;
-using System.Data;
-using System.Data.Common;
-
-using System.Runtime.InteropServices;
-
-namespace System.Data.Odbc
-{
-        sealed class NativeBuffer : IDisposable
-       {
-               private IntPtr _ptr;
-               private int _length;
-               private bool disposed;
-
-               public NativeBuffer ()
-               {
-               }
-
-               public IntPtr Handle
-               {
-                       get { return _ptr; }
-                       set { _ptr = value; }
-               }
-
-               public int Size
-               {
-                       get { return _length; }
-               }
-
-               public void AllocBuffer (int length)
-               {
-                       FreeBuffer ();
-                       _ptr = Marshal.AllocCoTaskMem (length);
-                       _length = length;
-               }
-
-               public void FreeBuffer ()
-               {
-                       if (_ptr == IntPtr.Zero)
-                               return;
-
-                       Marshal.FreeCoTaskMem (_ptr);
-                       _length = 0;
-                       _ptr = IntPtr.Zero;
-               }
-
-               public void EnsureAlloc (int length)
-               {
-                       if (Size == length && _ptr != IntPtr.Zero)
-                               return;
-                       
-                       AllocBuffer (length);
-               }
-
-               public void Dispose (bool disposing)
-               {
-                       if (disposed)
-                               return;
-                       FreeBuffer ();
-                       _ptr = IntPtr.Zero;
-                       disposed = true;
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);
-               }
-
-               ~NativeBuffer ()
-               {
-                       Dispose (false);
-               }
-
-               public static implicit operator IntPtr (NativeBuffer buf)
-               {
-                       return buf.Handle;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcCategoryAttribute.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcCategoryAttribute.cs
deleted file mode 100644 (file)
index 5c8a84a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-// 
-// System.Data.Odbc/OdbcCategoryAttribute.cs
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data.Odbc {
-       [AttributeUsage (AttributeTargets.All)]
-       internal sealed class OdbcCategoryAttribute : CategoryAttribute
-       {
-               #region Fields
-
-               string category;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public OdbcCategoryAttribute (string category)
-               {
-                       this.category = category; 
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public new string Category {
-                       get { return category; }
-               }
-
-               #endregion
-
-               #region Methods
-
-               [MonoTODO]
-               protected override string GetLocalizedString (string value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcColumn.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcColumn.cs
deleted file mode 100644 (file)
index a7160d8..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Odbc
-{
-       /// <summary>
-       /// Summary description for OdbcColumn.
-       /// </summary>
-       internal class OdbcColumn
-       {
-               internal string ColumnName;
-               internal OdbcType OdbcType;
-                private SQL_TYPE _sqlType = SQL_TYPE.UNASSIGNED;
-                private SQL_C_TYPE _sqlCType = SQL_C_TYPE.UNASSIGNED;
-               internal bool AllowDBNull;
-               internal int MaxLength;
-               internal int Digits;
-               internal object Value;
-
-               internal OdbcColumn (string Name, OdbcType Type)
-               {
-                       this.ColumnName = Name;
-                       this.OdbcType = Type;           
-                       AllowDBNull = false;
-                       MaxLength = 0;
-                       Digits = 0;
-                       Value = null;
-               }
-
-                internal OdbcColumn (string Name, SQL_TYPE type)
-               {
-                        this.ColumnName = Name;
-                       AllowDBNull = false;
-                       MaxLength = 0;
-                       Digits = 0;
-                       Value = null;
-                        UpdateTypes (type);
-
-               }
-
-
-               internal Type DataType
-               {
-                       get
-                       {
-                               switch (OdbcType)
-                               {
-                                       case OdbcType.TinyInt:
-                                               return typeof (System.Byte);
-                                       case OdbcType.BigInt: 
-                                               return typeof (System.Int64);
-                                       case OdbcType.Image:
-                                       case OdbcType.VarBinary:
-                                       case OdbcType.Binary:
-                                               return typeof (byte[]);
-                                       case OdbcType.Bit:
-                                               return typeof (bool);
-                                       case OdbcType.NChar:
-                                       case OdbcType.Char:
-                                               return typeof (string);
-                                       case OdbcType.Time:
-                                               return typeof (TimeSpan);
-                                       case OdbcType.Timestamp:
-                                       case OdbcType.DateTime:
-                                       case OdbcType.Date:
-                                       case OdbcType.SmallDateTime:
-                                               return typeof (DateTime);
-                                       case OdbcType.Decimal:
-                                       case OdbcType.Numeric:
-                                               return typeof (Decimal);
-                                       case OdbcType.Double:
-                                               return typeof (Double);
-                                       case OdbcType.Int:
-                                               return typeof (System.Int32);
-                                       case OdbcType.Text:
-                                       case OdbcType.NText:
-                                       case OdbcType.NVarChar:
-                                       case OdbcType.VarChar:
-                                               return typeof (string);
-                                       case OdbcType.Real:
-                                               return typeof (float);
-                                       case OdbcType.SmallInt:
-                                               return typeof (System.Int16);
-                                       case OdbcType.UniqueIdentifier:
-                                               return typeof (Guid);
-                               }
-                               throw new InvalidCastException();
-                       }
-               }
-
-               internal bool IsDateType
-               {
-                       get
-                       {
-                               switch (OdbcType)
-                               {
-                                       case OdbcType.Time:
-                                       case OdbcType.Timestamp:
-                                       case OdbcType.DateTime:
-                                       case OdbcType.Date:
-                                       case OdbcType.SmallDateTime:
-                                               return true;
-                                       default:
-                                               return false;
-                               }
-                       }
-               }
-
-               internal bool IsStringType
-               {
-                       get
-                       {
-                               switch (OdbcType)
-                               {
-                                       case OdbcType.Char:
-                                       case OdbcType.Text:
-                                       case OdbcType.NText:
-                                       case OdbcType.NVarChar:
-                                       case OdbcType.VarChar:
-                                               return true;
-                                       default:
-                                               return false;
-                               }
-                       }
-               }
-
-               internal bool IsVariableSizeType {
-                       get {
-                               if (IsStringType)
-                                       return true;
-                               switch (OdbcType) {
-                               case OdbcType.Binary :
-                               case OdbcType.VarBinary :
-                               case OdbcType.Image :
-                                       return true;
-                               default : 
-                                       return false;
-                               }
-                       }
-               }
-
-                internal SQL_TYPE SqlType
-                {
-                        get {
-                                if ( _sqlType == SQL_TYPE.UNASSIGNED)
-                                        _sqlType = OdbcTypeConverter.GetTypeMap (OdbcType).SqlType;
-                                return _sqlType;
-                        }
-
-                        set {_sqlType = value;}
-                }
-
-                internal SQL_C_TYPE SqlCType
-                {
-                        get {
-                                
-                                if ( _sqlCType == SQL_C_TYPE.UNASSIGNED)
-                                        _sqlCType = OdbcTypeConverter.GetTypeMap (OdbcType).NativeType;
-                                return _sqlCType;
-                        }
-                        set {_sqlCType = value;}
-                }
-
-                internal void UpdateTypes (SQL_TYPE sqlType)
-                {
-                        SqlType = sqlType;
-                        OdbcTypeMap map = OdbcTypeConverter.GetTypeMap (SqlType);
-                        OdbcType = map.OdbcType;
-                        SqlCType = map.NativeType;
-                }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcCommand.cs
deleted file mode 100644 (file)
index 9d13b84..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-//
-// System.Data.Odbc.OdbcCommand
-//
-// Authors:
-//   Brian Ritchie (brianlritchie@hotmail.com)
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Collections;
-using System.Runtime.InteropServices;
-
-namespace System.Data.Odbc
-{
-       /// <summary>
-       /// Represents an SQL statement or stored procedure to execute against a data source.
-       /// </summary>
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.OdbcCommandDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]
-       [ToolboxItemAttribute ("System.Drawing.Design.ToolboxItem, "+ Consts.AssemblySystem_Drawing)]
-       [DefaultEvent ("RecordsAffected")]
-       public sealed class OdbcCommand : DbCommand, ICloneable
-       {
-               #region Fields
-
-               const int DEFAULT_COMMAND_TIMEOUT = 30;
-
-               string commandText;
-               int timeout;
-               CommandType commandType;
-               UpdateRowSource updateRowSource;
-
-               OdbcConnection connection;
-               OdbcTransaction transaction;
-               OdbcParameterCollection _parameters;
-
-               bool designTimeVisible;
-               bool prepared;
-               IntPtr hstmt = IntPtr.Zero;
-               object generation = null; // validity of hstmt
-
-               bool disposed;
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               public OdbcCommand ()
-               {
-                       timeout = DEFAULT_COMMAND_TIMEOUT;
-                       commandType = CommandType.Text;
-                       _parameters = new OdbcParameterCollection ();
-                       designTimeVisible = true;
-                       updateRowSource = UpdateRowSource.Both;
-               }
-
-               public OdbcCommand (string cmdText) : this ()
-               {
-                       commandText = cmdText;
-               }
-
-               public OdbcCommand (string cmdText, OdbcConnection connection)
-                       : this (cmdText)
-               {
-                       Connection = connection;
-               }
-
-               public OdbcCommand (string cmdText, OdbcConnection connection,
-                                   OdbcTransaction transaction) : this (cmdText, connection)
-               {
-                       this.Transaction = transaction;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               internal IntPtr hStmt {
-                       get { return hstmt; }
-               }
-
-               [OdbcCategory ("Data")]
-               [DefaultValue ("")]
-               [OdbcDescriptionAttribute ("Command text to execute")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Odbc.Design.OdbcCommandTextEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public
-               override
-               string CommandText {
-                       get {
-                               if (commandText == null)
-                                       return string.Empty;
-                               return commandText;
-                       }
-                       set {
-                               prepared = false;
-                               commandText = value;
-                       }
-               }
-
-               [OdbcDescriptionAttribute ("Time to wait for command to execute")]
-               public override
-               int CommandTimeout {
-                       get { return timeout; }
-                       set {
-                               if (value < 0)
-                                       throw new ArgumentException ("The property value assigned is less than 0.",
-                                               "CommandTimeout");
-                               timeout = value;
-                       }
-               }
-
-               [OdbcCategory ("Data")]
-               [DefaultValue ("Text")]
-               [OdbcDescriptionAttribute ("How to interpret the CommandText")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public
-               override
-               CommandType CommandType {
-                       get { return commandType; }
-                       set {
-                               ExceptionHelper.CheckEnumValue (typeof (CommandType), value);
-                               commandType = value;
-                       }
-               }
-
-
-               [DefaultValue (null)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               public new OdbcConnection Connection {
-                       get { return DbConnection as OdbcConnection; }
-                       set { DbConnection = value; }
-               }
-
-               [BrowsableAttribute (false)]
-               [DesignOnlyAttribute (true)]
-               [DefaultValue (true)]
-               [EditorBrowsable (EditorBrowsableState.Never)]
-               public
-               override
-               bool DesignTimeVisible {
-                       get { return designTimeVisible; }
-                       set { designTimeVisible = value; }
-               }
-
-               [OdbcCategory ("Data")]
-               [OdbcDescriptionAttribute ("The parameters collection")]
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
-               public
-               new
-               OdbcParameterCollection Parameters {
-                       get {
-                               return base.Parameters as OdbcParameterCollection;
-                       }
-               }
-               
-               [BrowsableAttribute (false)]
-               [OdbcDescriptionAttribute ("The transaction used by the command")]
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               public
-               new
-               OdbcTransaction Transaction {
-                       get { return transaction; }
-                       set { transaction = value; }
-               }
-
-               [OdbcCategory ("Behavior")]
-               [DefaultValue (UpdateRowSource.Both)]
-               [OdbcDescriptionAttribute ("When used by a DataAdapter.Update, how command results are applied to the current DataRow")]
-               public
-               override
-               UpdateRowSource UpdatedRowSource {
-                       get { return updateRowSource; }
-                       set {
-                               ExceptionHelper.CheckEnumValue (typeof (UpdateRowSource), value);
-                               updateRowSource = value;
-                       }
-               }
-
-               protected override DbConnection DbConnection {
-                       get { return connection; }
-                       set { connection = (OdbcConnection) value;}
-               }
-
-
-               protected override DbParameterCollection DbParameterCollection {
-                       get { return _parameters as DbParameterCollection;}
-               }
-
-               protected override DbTransaction DbTransaction {
-                       get { return transaction; }
-                       set { transaction = (OdbcTransaction) value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public
-               override
-               void Cancel ()
-               {
-                       if (hstmt != IntPtr.Zero) {
-                               OdbcReturn Ret = libodbc.SQLCancel (hstmt);
-                               if (Ret != OdbcReturn.Success && Ret != OdbcReturn.SuccessWithInfo)
-                                       throw connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-                       } else
-                               throw new InvalidOperationException ();
-               }
-
-               protected override DbParameter CreateDbParameter ()
-               {
-                       return CreateParameter ();
-               }
-
-               public new OdbcParameter CreateParameter ()
-               {
-                       return new OdbcParameter ();
-               }
-
-               internal void Unlink ()
-               {
-                       if (disposed)
-                               return;
-
-                       FreeStatement (false);
-               }
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposed)
-                               return;
-
-                       FreeStatement (); // free handles
-                       CommandText = null;
-                       Connection = null;
-                       Transaction = null;
-                       Parameters.Clear ();
-                       disposed = true;
-               }
-
-               private IntPtr ReAllocStatment ()
-               {
-                       OdbcReturn ret;
-
-                       if (hstmt != IntPtr.Zero)
-                               // Free the existing hstmt.  Also unlinks from the connection.
-                               FreeStatement ();
-                       // Link this command to the connection.  The hstmt created below
-                       // only remains valid while generation == Connection.generation.
-                       generation = Connection.Link (this);
-                       ret = libodbc.SQLAllocHandle (OdbcHandleType.Stmt, Connection.hDbc, ref hstmt);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               throw connection.CreateOdbcException (OdbcHandleType.Dbc, Connection.hDbc);
-                       disposed = false;
-                       return hstmt;
-               }
-
-               void FreeStatement ()
-               {
-                       FreeStatement (true);
-               }
-
-               private void FreeStatement (bool unlink)
-               {
-                       prepared = false;
-
-                       if (hstmt == IntPtr.Zero)
-                               return;
-
-                       // Normally the command is unlinked from the connection, but during
-                       // OdbcConnection.Close() this would be pointless and (quadratically)
-                       // slow.
-                       if (unlink)
-                               Connection.Unlink (this);
-
-                       // Serialize with respect to the connection's own destruction
-                       lock(Connection) {
-                               // If the connection has already called SQLDisconnect then hstmt
-                               // may have already been freed, in which case it is not safe to
-                               // use.  Thus the generation check.
-                               if(Connection.Generation == generation) {
-                                       // free previously allocated handle.
-                                       OdbcReturn ret = libodbc.SQLFreeStmt (hstmt, libodbc.SQLFreeStmtOptions.Close);
-                                       if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                               throw connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-                       
-                                       ret = libodbc.SQLFreeHandle ((ushort) OdbcHandleType.Stmt, hstmt);
-                                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                               throw connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-                               }
-                               hstmt = IntPtr.Zero;
-                       }
-               }
-               
-               private void ExecSQL (CommandBehavior behavior, bool createReader, string sql)
-               {
-                       OdbcReturn ret;
-
-                       if (!prepared && Parameters.Count == 0) {
-                               ReAllocStatment ();
-
-                               ret = libodbc.SQLExecDirect (hstmt, sql, libodbc.SQL_NTS);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo && ret != OdbcReturn.NoData)
-                                       throw connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-                               return;
-                       }
-
-                       if (!prepared)
-                               Prepare();
-
-                       BindParameters ();
-                       ret = libodbc.SQLExecute (hstmt);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo && ret != OdbcReturn.NoData)
-                               throw connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-               }
-
-               internal void FreeIfNotPrepared ()
-               {
-                       if (! prepared)
-                               FreeStatement ();
-               }
-
-               public
-               override
-               int ExecuteNonQuery ()
-               {
-                       return ExecuteNonQuery ("ExecuteNonQuery", CommandBehavior.Default, false);
-               }
-
-               private int ExecuteNonQuery (string method, CommandBehavior behavior, bool createReader)
-               {
-                       int records = 0;
-                       if (Connection == null)
-                               throw new InvalidOperationException (string.Format (
-                                       "{0}: Connection is not set.", method));
-                       if (Connection.State == ConnectionState.Closed)
-                               throw new InvalidOperationException (string.Format (
-                                       "{0}: Connection state is closed", method));
-                       if (CommandText.Length == 0)
-                               throw new InvalidOperationException (string.Format (
-                                       "{0}: CommandText is not set.", method));
-
-                       ExecSQL (behavior, createReader, CommandText);
-
-                       // .NET documentation says that except for INSERT, UPDATE and
-                       // DELETE  where the return value is the number of rows affected
-                       // for the rest of the commands the return value is -1.
-                       if ((CommandText.ToUpper().IndexOf("UPDATE")!=-1) ||
-                           (CommandText.ToUpper().IndexOf("INSERT")!=-1) ||
-                           (CommandText.ToUpper().IndexOf("DELETE")!=-1)) {
-                               int numrows = 0;
-                               libodbc.SQLRowCount (hstmt, ref numrows);
-                               records = numrows;
-                       } else
-                               records = -1;
-
-                       if (!createReader && !prepared)
-                               FreeStatement ();
-                       
-                       return records;
-               }
-
-               public
-               override
-               void Prepare()
-               {
-                       ReAllocStatment ();
-                       
-                       OdbcReturn ret;
-                       ret = libodbc.SQLPrepare(hstmt, CommandText, CommandText.Length);
-                       if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                               throw connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-                       prepared = true;
-               }
-
-               private void BindParameters ()
-               {
-                       int i = 1;
-                       foreach (OdbcParameter p in Parameters) {
-                               p.Bind (this, hstmt, i);
-                               p.CopyValue ();
-                               i++;
-                       }
-               }
-
-               public
-               new
-               OdbcDataReader ExecuteReader ()
-               {
-                       return ExecuteReader (CommandBehavior.Default);
-               }
-
-               protected override DbDataReader ExecuteDbDataReader (CommandBehavior behavior)
-               {
-                       return ExecuteReader (behavior);
-               }
-
-               public
-               new
-               OdbcDataReader ExecuteReader (CommandBehavior behavior)
-               {
-                       return ExecuteReader ("ExecuteReader", behavior);
-               }
-
-               OdbcDataReader ExecuteReader (string method, CommandBehavior behavior)
-               {
-                       int recordsAffected = ExecuteNonQuery (method, behavior, true);
-                       OdbcDataReader dataReader = new OdbcDataReader (this, behavior, recordsAffected);
-                       return dataReader;
-               }
-
-
-               public
-               override
-               object ExecuteScalar ()
-               {
-                       object val = null;
-                       OdbcDataReader reader = ExecuteReader ("ExecuteScalar",
-                               CommandBehavior.Default);
-                       try {
-                               if (reader.Read ())
-                                       val = reader [0];
-                       } finally {
-                               reader.Close ();
-                       }
-                       return val;
-               }
-
-               object ICloneable.Clone ()
-               {
-                       OdbcCommand command = new OdbcCommand ();
-                       command.CommandText = this.CommandText;
-                       command.CommandTimeout = this.CommandTimeout;
-                       command.CommandType = this.CommandType;
-                       command.Connection = this.Connection;
-                       command.DesignTimeVisible = this.DesignTimeVisible;
-                       foreach (OdbcParameter parameter in this.Parameters)
-                               command.Parameters.Add (parameter);
-                       command.Transaction = this.Transaction;
-                       return command;
-               }
-
-               public void ResetCommandTimeout ()
-               {
-                       CommandTimeout = DEFAULT_COMMAND_TIMEOUT;
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcCommandBuilder.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcCommandBuilder.cs
deleted file mode 100644 (file)
index 7f5fb30..0000000
+++ /dev/null
@@ -1,612 +0,0 @@
-//
-// System.Data.Odbc.OdbcCommandBuilder
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//   Sureshkumar T (tsureshkumar@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Text;
-using System.Data;
-using System.Data.Common;
-using System.ComponentModel;
-
-namespace System.Data.Odbc
-{
-       /// <summary>
-       /// Provides a means of automatically generating single-table commands used to reconcile changes made to a DataSet with the associated database. This class cannot be inherited.
-       /// </summary>
-
-       public sealed class OdbcCommandBuilder : DbCommandBuilder
-       {
-               #region Fields
-
-               private OdbcDataAdapter _adapter;
-
-               private DataTable               _schema;
-               private string                  _tableName;
-               private OdbcCommand             _insertCommand;
-               private OdbcCommand             _updateCommand;
-               private OdbcCommand             _deleteCommand;
-
-               bool _disposed;
-
-               private OdbcRowUpdatingEventHandler rowUpdatingHandler;
-               
-               #endregion // Fields
-
-               #region Constructors
-               
-               public OdbcCommandBuilder ()
-               {
-               }
-
-               public OdbcCommandBuilder (OdbcDataAdapter adapter)
-                       : this ()
-               {
-                       DataAdapter = adapter;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [OdbcDescriptionAttribute ("The DataAdapter for which to automatically generate OdbcCommands")]
-               [DefaultValue (null)]
-               public
-               new
-               OdbcDataAdapter DataAdapter {
-                       get {
-                               return _adapter;
-                       }
-                       set {
-                               if (_adapter == value)
-                                       return;
-
-                               if (rowUpdatingHandler != null)
-                                       rowUpdatingHandler = new OdbcRowUpdatingEventHandler (OnRowUpdating);
-                               
-                               if (_adapter != null)
-                                       _adapter.RowUpdating -= rowUpdatingHandler;
-                               _adapter = value;
-                               if (_adapter != null)
-                                       _adapter.RowUpdating += rowUpdatingHandler;
-                       }
-               }
-
-               private OdbcCommand SelectCommand {
-                       get {
-                               if (DataAdapter == null)
-                                       return null;
-                               return DataAdapter.SelectCommand;
-                       }
-               }
-
-               private DataTable Schema {
-                       get {
-                               if (_schema == null)
-                                       RefreshSchema ();
-                               return _schema;
-                       }
-               }
-               
-               private string TableName {
-                       get {
-                               if (_tableName != string.Empty)
-                                       return _tableName;
-
-                               DataRow [] schemaRows = Schema.Select ("BaseTableName is not null and BaseTableName <> ''");
-                               if (schemaRows.Length > 1) {
-                                       string tableName = (string) schemaRows [0] ["BaseTableName"];
-                                       foreach (DataRow schemaRow in schemaRows) {
-                                               if ( (string) schemaRow ["BaseTableName"] != tableName)
-                                                       throw new InvalidOperationException ("Dynamic SQL generation is not supported against multiple base tables.");
-                                       }
-                               }
-                               if (schemaRows.Length == 0)
-                                       throw new InvalidOperationException ("Cannot determine the base table name. Cannot proceed");
-                               _tableName = schemaRows [0] ["BaseTableName"].ToString ();
-                               return _tableName;
-                       }
-               }
-
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public static void DeriveParameters (OdbcCommand command)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               new
-               void Dispose (bool disposing)
-               {
-                       if (_disposed)
-                               return;
-                       
-                       if (disposing) {
-                               // dispose managed resource
-                               if (_insertCommand != null)
-                                       _insertCommand.Dispose ();
-                               if (_updateCommand != null)
-                                       _updateCommand.Dispose ();
-                               if (_deleteCommand != null)
-                                       _deleteCommand.Dispose ();
-                               if (_schema != null)
-                                       _schema.Dispose ();
-
-                               _insertCommand = null;
-                               _updateCommand = null;
-                               _deleteCommand = null;
-                               _schema = null;
-                       }
-                       _disposed = true;
-               }
-
-               private bool IsUpdatable (DataRow schemaRow)
-               {
-                       if ( (! schemaRow.IsNull ("IsAutoIncrement") && (bool) schemaRow ["IsAutoIncrement"])
-                            || (! schemaRow.IsNull ("IsRowVersion") && (bool) schemaRow ["IsRowVersion"])
-                            || (! schemaRow.IsNull ("IsReadOnly") && (bool) schemaRow ["IsReadOnly"])
-                            || (schemaRow.IsNull ("BaseTableName") || ((string) schemaRow ["BaseTableName"]).Length == 0)
-                            )
-                               return false;
-                       return true;
-               }
-               
-               private string GetColumnName (DataRow schemaRow)
-               {
-                       string columnName = schemaRow.IsNull ("BaseColumnName") ? String.Empty : (string) schemaRow ["BaseColumnName"];
-                       if (columnName == String.Empty)
-                               columnName = schemaRow.IsNull ("ColumnName") ? String.Empty : (string) schemaRow ["ColumnName"];
-                       return columnName;
-               }
-               
-               private OdbcParameter AddParameter (OdbcCommand cmd, string paramName, OdbcType odbcType,
-                                                   int length, string sourceColumnName, DataRowVersion rowVersion)
-               {
-                       OdbcParameter param;
-                       if (length >= 0 && sourceColumnName != String.Empty)
-                               param = cmd.Parameters.Add (paramName, odbcType, length, sourceColumnName);
-                       else
-                               param = cmd.Parameters.Add (paramName, odbcType);
-                       param.SourceVersion = rowVersion;
-                       return param;
-               }
-
-               /*
-                * creates where clause for optimistic concurrency
-                */
-               private string CreateOptWhereClause (OdbcCommand command, int paramCount)
-               {
-                       string [] whereClause = new string [Schema.Rows.Count];
-
-                       int partCount = 0;
-
-                       foreach (DataRow schemaRow in Schema.Rows) {
-                               // exclude non updatable columns
-                               if (! IsUpdatable (schemaRow))
-                                       continue;
-
-                               string columnName = GetColumnName (schemaRow);
-                               if (columnName == String.Empty)
-                                       throw new InvalidOperationException ("Cannot form delete command. Column name is missing!");
-
-                               bool    allowNull  = schemaRow.IsNull ("AllowDBNull") || (bool) schemaRow ["AllowDBNull"];
-                               OdbcType sqlDbType = schemaRow.IsNull ("ProviderType") ? OdbcType.VarChar : (OdbcType) schemaRow ["ProviderType"];
-                               int     length     = schemaRow.IsNull ("ColumnSize") ? -1 : (int) schemaRow ["ColumnSize"];
-
-                               if (allowNull) {
-                                       whereClause [partCount++] = String.Format ("((? = 1 AND {0} IS NULL) OR ({0} = ?))",
-                                               GetQuotedString (columnName));
-                                       OdbcParameter nullParam = AddParameter (
-                                               command,
-                                               GetParameterName (++paramCount),
-                                               OdbcType.Int,
-                                               length,
-                                               columnName,
-                                               DataRowVersion.Original);
-                                       nullParam.Value = 1;
-                                       AddParameter (command, GetParameterName (++paramCount),
-                                               sqlDbType, length, columnName,
-                                               DataRowVersion.Original);
-                               } else {
-                                       whereClause [partCount++] = String.Format ("({0} = ?)",
-                                               GetQuotedString (columnName));
-                                       AddParameter (command, GetParameterName (++paramCount),
-                                               sqlDbType, length, columnName,
-                                               DataRowVersion.Original);
-                               }
-                       }
-
-                       return String.Join (" AND ", whereClause, 0, partCount);
-               }
-
-               private void CreateNewCommand (ref OdbcCommand command)
-               {
-                       OdbcCommand sourceCommand = SelectCommand;
-                       if (command == null) {
-                               command = new OdbcCommand ();
-                               command.Connection = sourceCommand.Connection;
-                               command.CommandTimeout = sourceCommand.CommandTimeout;
-                               command.Transaction = sourceCommand.Transaction;
-                       }
-                       command.CommandType = CommandType.Text;
-                       command.UpdatedRowSource = UpdateRowSource.None;
-                       command.Parameters.Clear ();
-               }
-               
-               private OdbcCommand CreateInsertCommand (bool option)
-               {
-                       CreateNewCommand (ref _insertCommand);
-
-                       string query = String.Format ("INSERT INTO {0}", GetQuotedString (TableName));
-                       string [] columns = new string [Schema.Rows.Count];
-                       string [] values  = new string [Schema.Rows.Count];
-
-                       int count = 0;
-
-                       foreach (DataRow schemaRow in Schema.Rows) {
-                               // exclude non updatable columns
-                               if (! IsUpdatable (schemaRow))
-                                       continue;
-
-                               string columnName = GetColumnName (schemaRow);
-                               if (columnName == String.Empty)
-                                       throw new InvalidOperationException ("Cannot form insert command. Column name is missing!");
-
-                               // create column string & value string
-                               columns [count] = GetQuotedString (columnName);
-                               values [count++] = "?";
-
-                               // create parameter and add
-                               OdbcType sqlDbType = schemaRow.IsNull ("ProviderType") ? OdbcType.VarChar : (OdbcType) schemaRow ["ProviderType"];
-                               int length = schemaRow.IsNull ("ColumnSize") ? -1 : (int) schemaRow ["ColumnSize"];
-
-                               AddParameter (_insertCommand, GetParameterName (count),
-                                       sqlDbType, length, columnName, DataRowVersion.Current);
-                       }
-
-                       query = String.Format (
-                               "{0} ({1}) VALUES ({2})", 
-                               query, 
-                               String.Join (", ", columns, 0, count),
-                               String.Join (", ", values, 0, count));
-                       _insertCommand.CommandText = query;
-                       return _insertCommand;
-               }
-
-               public
-               new
-               OdbcCommand GetInsertCommand ()
-               {
-                       // FIXME: check validity of adapter
-                       if (_insertCommand != null)
-                               return _insertCommand;
-
-                       if (_schema == null)
-                               RefreshSchema ();
-
-                       return CreateInsertCommand (false);
-               }
-
-               public new OdbcCommand GetInsertCommand (bool useColumnsForParameterNames)
-               {
-                       // FIXME: check validity of adapter
-                       if (_insertCommand != null)
-                               return _insertCommand;
-
-                       if (_schema == null)
-                               RefreshSchema ();
-
-                       return CreateInsertCommand (useColumnsForParameterNames);
-               }
-
-               private OdbcCommand CreateUpdateCommand (bool option)
-               {
-                       CreateNewCommand (ref _updateCommand);
-
-                       string query = String.Format ("UPDATE {0} SET", GetQuotedString (TableName));
-                       string [] setClause = new string [Schema.Rows.Count];
-
-                       int count = 0;
-
-                       foreach (DataRow schemaRow in Schema.Rows) {
-                               // exclude non updatable columns
-                               if (! IsUpdatable (schemaRow))
-                                       continue;
-
-                               string columnName = GetColumnName (schemaRow);
-                               if (columnName == String.Empty)
-                                       throw new InvalidOperationException ("Cannot form update command. Column name is missing!");
-
-                               OdbcType sqlDbType = schemaRow.IsNull ("ProviderType") ? OdbcType.VarChar : (OdbcType) schemaRow ["ProviderType"];
-                               int length = schemaRow.IsNull ("ColumnSize") ? -1 : (int) schemaRow ["ColumnSize"];
-
-                               // create column = value string
-                               setClause [count++] = String.Format ("{0} = ?", GetQuotedString (columnName));
-                               AddParameter (_updateCommand, GetParameterName (count),
-                                       sqlDbType, length, columnName, DataRowVersion.Current);
-                       }
-
-                       // create where clause. odbc uses positional parameters. so where class
-                       // is created seperate from the above loop.
-                       string whereClause = CreateOptWhereClause (_updateCommand, count);
-                       
-                       query = String.Format (
-                               "{0} {1} WHERE ({2})",
-                               query,
-                               String.Join (", ", setClause, 0, count),
-                               whereClause);
-                       _updateCommand.CommandText = query;
-                       return _updateCommand;
-               }
-               
-               public
-               new
-               OdbcCommand GetUpdateCommand ()
-               {
-                       // FIXME: check validity of adapter
-                       if (_updateCommand != null)
-                               return _updateCommand;
-
-                       if (_schema == null)
-                               RefreshSchema ();
-
-                       return CreateUpdateCommand (false);
-               }
-
-               public new OdbcCommand GetUpdateCommand (bool useColumnsForParameterNames)
-               {
-                       // FIXME: check validity of adapter
-                       if (_updateCommand != null)
-                               return _updateCommand;
-
-                       if (_schema == null)
-                               RefreshSchema ();
-
-                       return CreateUpdateCommand (useColumnsForParameterNames);
-               }
-
-               private OdbcCommand CreateDeleteCommand (bool option)
-               {
-                       CreateNewCommand (ref _deleteCommand);
-
-                       string query = String.Format (
-                               "DELETE FROM {0}",
-                               GetQuotedString (TableName));
-                       string whereClause = CreateOptWhereClause (_deleteCommand, 0);
-                       
-                       query = String.Format (
-                               "{0} WHERE ({1})",
-                               query,
-                               whereClause);
-                       _deleteCommand.CommandText = query;
-                       return _deleteCommand;
-               }
-
-               public
-               new
-               OdbcCommand GetDeleteCommand ()
-               {
-                       // FIXME: check validity of adapter
-                       if (_deleteCommand != null)
-                               return _deleteCommand;
-
-                       if (_schema == null)
-                               RefreshSchema ();
-                       
-                       return CreateDeleteCommand (false);
-               }
-
-               public new OdbcCommand GetDeleteCommand (bool useColumnsForParameterNames)
-               {
-                       // FIXME: check validity of adapter
-                       if (_deleteCommand != null)
-                               return _deleteCommand;
-
-                       if (_schema == null)
-                               RefreshSchema ();
-
-                       return CreateDeleteCommand (useColumnsForParameterNames);
-               }
-
-               new
-               void RefreshSchema ()
-               {
-                       // creates metadata
-                       if (SelectCommand == null)
-                               throw new InvalidOperationException ("SelectCommand should be valid");
-                       if (SelectCommand.Connection == null)
-                               throw new InvalidOperationException ("SelectCommand's Connection should be valid");
-                       
-                       CommandBehavior behavior = CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo;
-                       if (SelectCommand.Connection.State != ConnectionState.Open) {
-                               SelectCommand.Connection.Open ();
-                               behavior |= CommandBehavior.CloseConnection;
-                       }
-                       
-                       OdbcDataReader reader = SelectCommand.ExecuteReader (behavior);
-                       _schema = reader.GetSchemaTable ();
-                       reader.Close ();
-                       
-                       // force creation of commands
-                       _insertCommand  = null;
-                       _updateCommand  = null;
-                       _deleteCommand  = null;
-                       _tableName      = String.Empty;
-               }
-
-               protected override
-               string GetParameterName (int parameterOrdinal)
-               {
-                       return String.Format ("p{0}", parameterOrdinal);
-               }
-
-
-               protected override void ApplyParameterInfo (DbParameter parameter,
-                                                           DataRow datarow,
-                                                           StatementType statementType,
-                                                           bool whereClause)
-               {
-                       OdbcParameter odbcParam = (OdbcParameter) parameter;
-                       odbcParam.Size = int.Parse (datarow ["ColumnSize"].ToString ());
-                       if (datarow ["NumericPrecision"] != DBNull.Value)
-                               odbcParam.Precision = byte.Parse (datarow ["NumericPrecision"].ToString ());
-                       if (datarow ["NumericScale"] != DBNull.Value)
-                               odbcParam.Scale = byte.Parse (datarow ["NumericScale"].ToString ());
-                       odbcParam.DbType = (DbType) datarow ["ProviderType"];
-               }
-
-               protected override string GetParameterName (string parameterName)
-               {
-                       return String.Format("@{0}", parameterName);
-               }
-
-               protected override string GetParameterPlaceholder (int parameterOrdinal)
-               {
-                       return GetParameterName (parameterOrdinal);
-               }
-
-               // FIXME: According to MSDN - "if this method is called again with
-               // the same DbDataAdapter, the DbCommandBuilder is unregistered for 
-               // that DbDataAdapter's RowUpdating event" - this behaviour is yet
-               // to be verified
-               protected override void SetRowUpdatingHandler (DbDataAdapter adapter)
-               {
-                       if (!(adapter is OdbcDataAdapter))
-                               throw new InvalidOperationException ("Adapter needs to be a SqlDataAdapter");
-                       if (rowUpdatingHandler == null)
-                               rowUpdatingHandler = new OdbcRowUpdatingEventHandler (OnRowUpdating);
-
-                       ((OdbcDataAdapter) adapter).RowUpdating += rowUpdatingHandler;
-               }
-
-               public override string QuoteIdentifier (string unquotedIdentifier)
-               {
-                       return QuoteIdentifier (unquotedIdentifier, null);
-               }
-
-               public string QuoteIdentifier (string unquotedIdentifier, OdbcConnection connection)
-               {
-                       if (unquotedIdentifier == null)
-                               throw new ArgumentNullException ("unquotedIdentifier");
-
-                       string prefix = QuotePrefix;
-                       string suffix = QuoteSuffix;
-
-                       if (QuotePrefix.Length == 0) {
-                               if (connection == null)
-                                       throw new InvalidOperationException (
-                                               "An open connection is required if "
-                                               + "QuotePrefix is not set.");
-                               prefix = suffix = GetQuoteCharacter (connection);
-                       }
-
-                       if (prefix.Length > 0 && prefix != " ") {
-                               string escaped;
-                               if (suffix.Length > 0)
-                                       escaped = unquotedIdentifier.Replace (
-                                               suffix, suffix + suffix);
-                               else
-                                       escaped = unquotedIdentifier;
-                               return string.Concat (prefix, escaped, suffix);
-                       }
-                       return unquotedIdentifier;
-               }
-
-               public string UnquoteIdentifier (string quotedIdentifier, OdbcConnection connection)
-               {
-                       return UnquoteIdentifier (quotedIdentifier);
-               }
-
-               public override string UnquoteIdentifier (string quotedIdentifier)
-               {
-                       if (quotedIdentifier == null || quotedIdentifier.Length == 0)
-                               return quotedIdentifier;
-                       
-                       StringBuilder sb = new StringBuilder (quotedIdentifier.Length);
-                       sb.Append (quotedIdentifier);
-                       if (quotedIdentifier.StartsWith (QuotePrefix))
-                               sb.Remove (0,QuotePrefix.Length);
-                       if (quotedIdentifier.EndsWith (QuoteSuffix))
-                               sb.Remove (sb.Length - QuoteSuffix.Length, QuoteSuffix.Length );
-                       return sb.ToString ();
-               }
-
-               private void OnRowUpdating (object sender, OdbcRowUpdatingEventArgs args)
-               {
-                       if (args.Command != null)
-                               return;
-                       try {
-                               switch (args.StatementType) {
-                               case StatementType.Insert:
-                                       args.Command = GetInsertCommand ();
-                                       break;
-                               case StatementType.Update:
-                                       args.Command = GetUpdateCommand ();
-                                       break;
-                               case StatementType.Delete:
-                                       args.Command = GetDeleteCommand ();
-                                       break;
-                               }
-                       } catch (Exception e) {
-                               args.Errors = e;
-                               args.Status = UpdateStatus.ErrorsOccurred;
-                       }
-               }
-
-               string GetQuotedString (string unquotedIdentifier)
-               {
-                       string prefix = QuotePrefix;
-                       string suffix = QuoteSuffix;
-
-                       if (prefix.Length == 0 && suffix.Length == 0)
-                               return unquotedIdentifier;
-
-                       return String.Format ("{0}{1}{2}", prefix,
-                               unquotedIdentifier, suffix);
-               }
-
-               bool IsCommandGenerated {
-                       get {
-                               return (_insertCommand != null || _updateCommand != null || _deleteCommand != null);
-                       }
-               }
-
-               string GetQuoteCharacter (OdbcConnection conn)
-               {
-                       return conn.GetInfo (OdbcInfo.IdentifierQuoteChar);
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcConnection.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcConnection.cs
deleted file mode 100644 (file)
index 05b52b7..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-//
-// System.Data.Odbc.OdbcConnection
-//
-// Authors:
-//  Brian Ritchie (brianlritchie@hotmail.com) 
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.EnterpriseServices;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Transactions;
-
-namespace System.Data.Odbc
-{
-       [DefaultEvent ("InfoMessage")]
-       public sealed class OdbcConnection : DbConnection, ICloneable
-       {
-               #region Fields
-
-               string connectionString;
-               int connectionTimeout;
-               internal OdbcTransaction transaction;
-               IntPtr henv = IntPtr.Zero;
-               IntPtr hdbc = IntPtr.Zero;
-               bool disposed;
-               ArrayList linkedCommands;
-
-               #endregion
-
-               #region Constructors
-               
-               public OdbcConnection () : this (String.Empty)
-               {
-               }
-
-               public OdbcConnection (string connectionString)
-               {
-                       connectionTimeout = 15;
-                       ConnectionString = connectionString;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               internal IntPtr hDbc {
-                       get { return hdbc; }
-               }
-
-               internal object Generation {
-                       // We use the linkedCommands array as a generation indicator for statement
-                       // handles allocated in our subsiduary OdbcCommands.  The rule is that the
-                       // statement handles are only valid if the generation matches the one
-                       // returned when the command was linked to the connection.
-                       get { return linkedCommands; }
-               }
-
-               [OdbcCategoryAttribute ("DataCategory_Data")]
-               [DefaultValue ("")]
-               [OdbcDescriptionAttribute ("Information used to connect to a Data Source")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Odbc.Design.OdbcConnectionStringEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               [RecommendedAsConfigurableAttribute (true)]
-               public
-               override
-               string ConnectionString {
-                       get {
-                               if (connectionString == null)
-                                       return string.Empty;
-                               return connectionString;
-                       }
-                       set { connectionString = value; }
-               }
-               
-               [OdbcDescriptionAttribute ("Current connection timeout value, not settable  in the ConnectionString")]
-               [DefaultValue (15)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public
-               new
-               int ConnectionTimeout {
-                       get {
-                               return connectionTimeout;
-                       }
-                       set {
-                               if (value < 0)
-                                       throw new ArgumentException("Timout should not be less than zero.");
-                               connectionTimeout = value;
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [OdbcDescriptionAttribute ("Current data source Catlog value, 'Database=X' in the ConnectionString")]
-               public
-               override
-               string Database {
-                       get {
-                               if (State == ConnectionState.Closed)
-                                       return string.Empty;
-                               return GetInfo (OdbcInfo.DatabaseName);
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [OdbcDescriptionAttribute ("The ConnectionState indicating whether the connection is open or closed")]
-               [BrowsableAttribute (false)]
-               public
-               override
-               ConnectionState State {
-                       get {
-                               if (hdbc != IntPtr.Zero)
-                                       return ConnectionState.Open;
-                               return ConnectionState.Closed;
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [OdbcDescriptionAttribute ("Current data source, 'Server=X' in the ConnectionString")]
-               [Browsable (false)]
-               public
-               override
-               string DataSource {
-                       get {
-                               if (State == ConnectionState.Closed)
-                                       return string.Empty;
-                               return GetInfo (OdbcInfo.DataSourceName);
-                       }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [OdbcDescriptionAttribute ("Current ODBC Driver")]
-               public string Driver {
-                       get {
-                               if (State == ConnectionState.Closed)
-                                       return string.Empty;
-
-                               return GetInfo (OdbcInfo.DriverName);
-                       }
-               }
-               
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [OdbcDescriptionAttribute ("Version of the product accessed by the ODBC Driver")]
-               [BrowsableAttribute (false)]
-               public
-               override
-               string ServerVersion {
-                       get {
-                               return GetInfo (OdbcInfo.DbmsVersion);
-                       }
-               }
-
-               internal string SafeDriver {
-                       get {
-                               string driver_name = GetSafeInfo (OdbcInfo.DriverName);
-                               if (driver_name == null)
-                                       return string.Empty;
-                               return driver_name;
-                       }
-               }
-
-               #endregion // Properties
-       
-               #region Methods
-       
-               public
-               new
-               OdbcTransaction BeginTransaction ()
-               {
-                       return BeginTransaction (IsolationLevel.Unspecified);
-               }
-
-
-               protected override DbTransaction BeginDbTransaction (IsolationLevel isolationLevel)
-               {
-                       return BeginTransaction (isolationLevel);
-               }
-
-               public
-               new
-               OdbcTransaction BeginTransaction (IsolationLevel isolevel)
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-
-                       if (transaction == null) {
-                               transaction = new OdbcTransaction (this, isolevel);
-                               return transaction;
-                       } else
-                               throw new InvalidOperationException ();
-               }
-
-
-               public
-               override
-               void Close ()
-               {
-                       OdbcReturn ret = OdbcReturn.Error;
-                       if (State == ConnectionState.Open) {
-                               lock(this) {
-                                       // close any associated commands
-                                       // NOTE: we may 'miss' some if the garbage collector has
-                                       // already started to destroy them.
-                                       if (linkedCommands != null) {
-                                               for (int i = 0; i < linkedCommands.Count; i++) {
-                                                       WeakReference wr = (WeakReference) linkedCommands [i];
-                                                       if (wr == null)
-                                                               continue;
-                                                       OdbcCommand c = (OdbcCommand) wr.Target;
-                                                       if (c != null)
-                                                               c.Unlink ();
-                                               }
-                                               linkedCommands = null;
-                                       }
-
-                                       // disconnect
-                                       ret = libodbc.SQLDisconnect (hdbc);
-
-                               }
-                               // There could be OdbcCommands outstanding (see NOTE above); their
-                               // hstmts will have been freed and therefore will be invalid.
-                               // However, they will find that their definition of Generation
-                               // does not match the connection's, so they won't try and free
-                               // those hstmt.
-                               if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                       throw CreateOdbcException (OdbcHandleType.Dbc, hdbc);
-
-                               FreeHandles ();
-                               transaction = null;
-                               RaiseStateChange (ConnectionState.Open, ConnectionState.Closed);
-                       }
-               }
-
-               public
-               new
-               OdbcCommand CreateCommand ()
-               {
-                       return new OdbcCommand (string.Empty, this, transaction);
-               }
-
-               public
-               override
-               void ChangeDatabase (string value)
-               {
-                       IntPtr ptr = IntPtr.Zero;
-                       OdbcReturn ret = OdbcReturn.Error;
-
-                       try {
-                               ptr = Marshal.StringToHGlobalUni (value);
-                               ret = libodbc.SQLSetConnectAttr (hdbc, OdbcConnectionAttribute.CurrentCatalog, ptr, value.Length * 2);
-
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw CreateOdbcException (OdbcHandleType.Dbc, hdbc);
-                       } finally {
-                               if (ptr != IntPtr.Zero)
-                                       Marshal.FreeCoTaskMem (ptr);
-                       }
-               }
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (!this.disposed) {
-                               try {
-                                       // release the native unmananged resources
-                                       this.Close ();
-                                       this.disposed = true;
-                               } finally {
-                                       // call Dispose on the base class
-                                       base.Dispose (disposing);
-                               }
-                       }
-               }
-
-               [MonoTODO]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-
-               protected override DbCommand CreateDbCommand ()
-               {
-                       return CreateCommand ();
-               }
-
-               public
-               override
-               void Open ()
-               {
-                       if (State == ConnectionState.Open)
-                               throw new InvalidOperationException ();
-
-                       OdbcReturn ret = OdbcReturn.Error;
-                       OdbcException e = null;
-               
-                       try {
-                               // allocate Environment handle
-                               ret = libodbc.SQLAllocHandle (OdbcHandleType.Env, IntPtr.Zero, ref henv);
-                               if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo)) {
-                                       OdbcErrorCollection errors = new OdbcErrorCollection ();
-                                       errors.Add (new OdbcError (SafeDriver, "Error in " + SafeDriver, "", 1));
-                                       e = new OdbcException (errors);
-                                       MessageHandler (e);
-                                       throw e;
-                               }
-
-                               ret = libodbc.SQLSetEnvAttr (henv, OdbcEnv.OdbcVersion, (IntPtr) libodbc.SQL_OV_ODBC3 , 0); 
-                               if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                       throw CreateOdbcException (OdbcHandleType.Env, henv);
-
-                               // allocate connection handle
-                               ret = libodbc.SQLAllocHandle (OdbcHandleType.Dbc, henv, ref hdbc);
-                               if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                       throw CreateOdbcException (OdbcHandleType.Env, henv);
-
-                               // DSN connection
-                               if (ConnectionString.ToLower ().IndexOf ("dsn=") >= 0) {
-                                       string _uid = string.Empty, _pwd = string.Empty, _dsn = string.Empty;
-                                       string [] items = ConnectionString.Split (new char[1] {';'});
-                                       foreach (string item in items)
-                                       {
-                                               string [] parts = item.Split (new char[1] {'='});
-                                               switch (parts [0].Trim ().ToLower ()) {
-                                               case "dsn":
-                                                       _dsn = parts [1].Trim ();
-                                                       break;
-                                               case "uid":
-                                                       _uid = parts [1].Trim ();
-                                                       break;
-                                               case "pwd":
-                                                       _pwd = parts [1].Trim ();
-                                                       break;
-                                               }
-                                       }
-                                       ret = libodbc.SQLConnect(hdbc, _dsn, -3, _uid, -3, _pwd, -3);
-                                       if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                               throw CreateOdbcException (OdbcHandleType.Dbc, hdbc);
-                               } else {
-                                       // DSN-less Connection
-                                       string OutConnectionString = new String (' ',1024);
-                                       short OutLen = 0;
-                                       ret = libodbc.SQLDriverConnect (hdbc, IntPtr.Zero, ConnectionString, -3, 
-                                               OutConnectionString, (short) OutConnectionString.Length, ref OutLen, 0);
-                                       if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                               throw CreateOdbcException (OdbcHandleType.Dbc, hdbc);
-                               }
-
-                               RaiseStateChange (ConnectionState.Closed, ConnectionState.Open);
-                       } catch {
-                               // free handles if any.
-                               FreeHandles ();
-                               throw;
-                       }
-                       disposed = false;
-               }
-
-               [MonoTODO]
-               public static void ReleaseObjectPool ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               private void FreeHandles ()
-               {
-                       OdbcReturn ret = OdbcReturn.Error;
-                       if (hdbc != IntPtr.Zero) {
-                               ret = libodbc.SQLFreeHandle ((ushort) OdbcHandleType.Dbc, hdbc);
-                               if ( (ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                       throw CreateOdbcException (OdbcHandleType.Dbc, hdbc);
-                       }
-                       hdbc = IntPtr.Zero;
-
-                       if (henv != IntPtr.Zero) {
-                               ret = libodbc.SQLFreeHandle ((ushort) OdbcHandleType.Env, henv);
-                               if ( (ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                       throw CreateOdbcException (OdbcHandleType.Env, henv);
-                       }
-                       henv = IntPtr.Zero;
-               }
-
-               public override DataTable GetSchema ()
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-                       return MetaDataCollections.Instance;
-               }
-
-               public override DataTable GetSchema (string collectionName)
-               {
-                       return GetSchema (collectionName, null);
-               }
-
-               public override DataTable GetSchema (string collectionName, string [] restrictionValues)
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-                       return GetSchema (collectionName, null);
-               }
-
-               [MonoTODO]
-               public override void EnlistTransaction (Transaction transaction)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void EnlistDistributedTransaction (ITransaction transaction)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               internal string GetInfo (OdbcInfo info)
-               {
-                       if (State == ConnectionState.Closed)
-                               throw new InvalidOperationException ("The connection is closed.");
-
-                       OdbcReturn ret = OdbcReturn.Error;
-                       short max_length = 512;
-                       byte [] buffer = new byte [512];
-                       short actualLength = 0;
-
-                       ret = libodbc.SQLGetInfo (hdbc, info, buffer, max_length, ref actualLength);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               throw CreateOdbcException (OdbcHandleType.Dbc, hdbc);
-                       return Encoding.Unicode.GetString (buffer, 0, actualLength);
-               }
-
-               string GetSafeInfo (OdbcInfo info)
-               {
-                       if (State == ConnectionState.Closed)
-                               return null;
-
-                       OdbcReturn ret = OdbcReturn.Error;
-                       short max_length = 512;
-                       byte [] buffer = new byte [512];
-                       short actualLength = 0;
-
-                       ret = libodbc.SQLGetInfo (hdbc, info, buffer, max_length, ref actualLength);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               return null;
-                       return Encoding.Unicode.GetString (buffer, 0, actualLength);
-               }
-
-               private void RaiseStateChange (ConnectionState from, ConnectionState to)
-               {
-                       base.OnStateChange (new StateChangeEventArgs (from, to));
-               }
-
-               private OdbcInfoMessageEventArgs CreateOdbcInfoMessageEvent (OdbcErrorCollection errors)
-               {
-                       return new OdbcInfoMessageEventArgs (errors);
-               }
-
-               private void OnOdbcInfoMessage (OdbcInfoMessageEventArgs e)
-               {
-                       if (InfoMessage != null)
-                               InfoMessage (this, e);
-               }
-
-               internal OdbcException CreateOdbcException (OdbcHandleType HandleType, IntPtr Handle)
-               {
-                       short buflen = 256;
-                       short txtlen = 0;
-                       int nativeerror = 0;
-                       OdbcReturn ret = OdbcReturn.Success;
-
-                       OdbcErrorCollection errors = new OdbcErrorCollection ();
-
-                       while (true) {
-                               byte [] buf_MsgText = new byte [buflen * 2];
-                               byte [] buf_SqlState = new byte [buflen * 2];
-
-                               switch (HandleType) {
-                               case OdbcHandleType.Dbc:
-                                       ret = libodbc.SQLError (IntPtr.Zero, Handle, IntPtr.Zero, buf_SqlState,
-                                               ref nativeerror, buf_MsgText, buflen, ref txtlen);
-                                       break;
-                               case OdbcHandleType.Stmt:
-                                       ret = libodbc.SQLError (IntPtr.Zero, IntPtr.Zero, Handle, buf_SqlState,
-                                               ref nativeerror, buf_MsgText, buflen, ref txtlen);
-                                       break;
-                               case OdbcHandleType.Env:
-                                       ret = libodbc.SQLError (Handle, IntPtr.Zero, IntPtr.Zero, buf_SqlState,
-                                               ref nativeerror, buf_MsgText, buflen, ref txtlen);
-                                       break;
-                               }
-
-                               if (ret != OdbcReturn.Success)
-                                       break;
-
-                               string state = RemoveTrailingNullChar (Encoding.Unicode.GetString (buf_SqlState));
-                               string message = Encoding.Unicode.GetString (buf_MsgText, 0, txtlen * 2);
-
-                               errors.Add (new OdbcError (SafeDriver, message, state, nativeerror));
-                       }
-
-                       string source = SafeDriver;
-                       foreach (OdbcError error in errors)
-                               error.SetSource (source);
-                       return new OdbcException (errors);
-               }
-
-               static string RemoveTrailingNullChar (string value)
-               {
-                       return value.TrimEnd ('\0');
-               }
-
-               internal object Link (OdbcCommand cmd)
-               {
-                       lock(this) {
-                               if (linkedCommands == null)
-                                       linkedCommands = new ArrayList ();
-                               linkedCommands.Add (new WeakReference (cmd));
-                               return linkedCommands;
-                       }
-               }
-
-               internal object Unlink (OdbcCommand cmd)
-               {
-                       lock(this) {
-                               if (linkedCommands == null)
-                                       return null;
-
-                               for (int i = 0; i < linkedCommands.Count; i++) {
-                                       WeakReference wr = (WeakReference) linkedCommands [i];
-                                       if (wr == null)
-                                               continue;
-                                       OdbcCommand c = (OdbcCommand) wr.Target;
-                                       if (c == cmd) {
-                                               linkedCommands [i] = null;
-                                               break;
-                                       }
-                               }
-                               return linkedCommands;
-                       }
-               }
-
-               #endregion
-
-               #region Events and Delegates
-
-
-               [OdbcDescription ("DbConnection_InfoMessage")]
-               [OdbcCategory ("DataCategory_InfoMessage")]
-               public event OdbcInfoMessageEventHandler InfoMessage;
-
-               private void MessageHandler (OdbcException e)
-               {
-                       OnOdbcInfoMessage (CreateOdbcInfoMessageEvent (e.Errors));
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcConnectionFactory.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcConnectionFactory.cs
deleted file mode 100644 (file)
index 36d9553..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// System.Data.Odbc.OdbcConnectionFactory
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc {
-       internal class OdbcConnectionFactory : DbConnectionFactory
-       {
-               #region Fields
-               internal static OdbcConnectionFactory Instance; // singleton
-                private static DbProviderFactory _providerFactory;
-               static readonly object lockobj = new object ();
-               #endregion // Fields
-
-               #region Constructors
-
-               private OdbcConnectionFactory (DbProviderFactory pvdrfactory)
-               {
-                        _providerFactory = pvdrfactory;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override DbProviderFactory ProviderFactory { get { return _providerFactory; }}
-
-               #endregion // Properties
-
-               #region Methods
-
-                // create singleton connection factory.
-                internal static OdbcConnectionFactory GetSingleton (OdbcFactory pvdrFactory)
-                {
-                        lock (lockobj) 
-                                {
-                                        if (Instance == null)
-                                                Instance = new OdbcConnectionFactory (pvdrFactory);
-                                        return Instance;
-                                }
-                }
-
-               [MonoTODO]
-                protected override IAsyncResult BeginCreateConnection (DbConnectionBase owningObject, DbConnectionString connectionOptions, DbConnectionInternal connection, AsyncCallback callback, object asyncStateObject)
-                {
-                        throw new NotImplementedException ();
-                }
-
-               [MonoTODO]
-                public new void ClearAllPools ()
-                {
-                        throw new NotImplementedException ();
-                }
-
-               [MonoTODO]
-                public new void ClearPool (DbConnectionBase connection)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                [MonoTODO]
-               protected override DbConnectionInternal CreateConnection (DbConnectionString options, DbConnectionBase owningObject)
-                {
-                        throw new NotImplementedException ();
-                }
-                
-                [MonoTODO]
-               protected override DbConnectionString CreateConnectionOptions (string connectionString)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                [MonoTODO]
-               protected override DbConnectionPoolOptions CreateConnectionPoolOptions (DbConnectionString options)
-                {
-                        throw new NotImplementedException ();
-                }
-
-
-               [MonoTODO]
-                protected override DbMetaDataFactory CreateMetaDataFactory (DbConnectionInternal internalConnection)
-                {
-                        throw new NotImplementedException ();
-                }
-
-               [MonoTODO]
-                protected override DbConnectionInternal EndCreateConnection (IAsyncResult asyncResult)
-                {
-                        throw new NotImplementedException ();
-                }
-
-               [MonoTODO]
-                protected internal new DbMetaDataFactory GetMetaDataFactory (DbConnectionString connectionOptions, DbConnectionInternal internalConnection)
-                {
-                        throw new NotImplementedException ();
-                }
-
-               internal new DbConnectionString CreateConnectionOptionsInternal (string connectionString)
-                {
-                        return CreateConnectionOptions (connectionString);
-                }
-
-               [MonoTODO]
-                public new void SetConnectionPoolOptions (string connectionString, DbConnectionPoolOptions poolOptions)
-                {
-                        throw new NotImplementedException ();
-                }
-
-               #endregion // Methods
-        }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcDataAdapter.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcDataAdapter.cs
deleted file mode 100644 (file)
index b48170d..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-//
-// System.Data.Odbc.OdbcDataAdapter.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) 2002 Tim Coleman
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{
-       [DefaultEvent ("RowUpdated")]
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.OdbcDataAdapterDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]
-       [ToolboxItemAttribute ("Microsoft.VSDesigner.Data.VS.OdbcDataAdapterToolboxItem, "+ Consts.AssemblyMicrosoft_VSDesigner)]
-       public sealed class OdbcDataAdapter : DbDataAdapter, IDbDataAdapter, ICloneable
-       {
-               #region Fields
-
-               OdbcCommand deleteCommand;
-               OdbcCommand insertCommand;
-               OdbcCommand selectCommand;
-               OdbcCommand updateCommand;
-
-               #endregion
-
-               #region Constructors
-               
-               public OdbcDataAdapter () : this ((OdbcCommand) null)
-               {
-               }
-
-               public OdbcDataAdapter (OdbcCommand selectCommand) 
-               {
-                       SelectCommand = selectCommand;
-               }
-
-               public OdbcDataAdapter (string selectCommandText, OdbcConnection selectConnection) 
-                       : this (new OdbcCommand (selectCommandText, selectConnection))
-               { 
-               }
-
-               public OdbcDataAdapter (string selectCommandText, string selectConnectionString)
-                       : this (selectCommandText, new OdbcConnection (selectConnectionString))
-               {
-               }
-
-               #endregion
-
-               #region Properties
-
-               [OdbcCategory ("Update")]
-               [OdbcDescription ("Used during Update for deleted rows in DataSet.")]
-               [DefaultValue (null)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               public new OdbcCommand DeleteCommand {
-                       get { return deleteCommand; }
-                       set { deleteCommand = value; }
-               }
-
-               [OdbcCategory ("Update")]
-               [OdbcDescription ("Used during Update for new rows in DataSet.")]
-               [DefaultValue (null)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               public new OdbcCommand InsertCommand {
-                       get { return insertCommand; }
-                       set { insertCommand = value; }
-               }
-
-               [OdbcCategory ("Fill")]
-               [OdbcDescription ("Used during Fill/FillSchema.")]
-               [DefaultValue (null)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               public new OdbcCommand SelectCommand {
-                       get { return selectCommand; }
-                       set { selectCommand = value; }
-               }
-
-               [OdbcCategory ("Update")]
-               [OdbcDescription ("Used during Update for modified rows in DataSet.")]
-               [DefaultValue (null)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               public new OdbcCommand UpdateCommand {
-                       get { return updateCommand; }
-                       set { updateCommand = value; }
-               }
-
-               IDbCommand IDbDataAdapter.DeleteCommand {
-                       get { return DeleteCommand; }
-                       set { DeleteCommand = (OdbcCommand) value; }
-               }
-
-               IDbCommand IDbDataAdapter.InsertCommand {
-                       get { return InsertCommand; }
-                       set { InsertCommand = (OdbcCommand) value; }
-               }
-
-               IDbCommand IDbDataAdapter.SelectCommand {
-                       get { return SelectCommand; }
-                       set { SelectCommand = (OdbcCommand) value; }
-               }
-
-               IDbCommand IDbDataAdapter.UpdateCommand {
-                       get { return UpdateCommand; }
-                       set { UpdateCommand = (OdbcCommand) value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               protected override RowUpdatedEventArgs CreateRowUpdatedEvent (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
-               {
-                       return new OdbcRowUpdatedEventArgs (dataRow, command, statementType, tableMapping);
-               }
-
-
-               protected override RowUpdatingEventArgs CreateRowUpdatingEvent (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
-               {
-                       return new OdbcRowUpdatingEventArgs (dataRow, command, statementType, tableMapping);
-               }
-
-
-               protected override void OnRowUpdated (RowUpdatedEventArgs value)
-               {
-                       if (RowUpdated != null)
-                               RowUpdated (this, (OdbcRowUpdatedEventArgs) value);
-               }
-
-               protected override void OnRowUpdating (RowUpdatingEventArgs value)
-               {
-                       if (RowUpdating != null)
-                               RowUpdating (this, (OdbcRowUpdatingEventArgs) value);
-               }
-
-               [MonoTODO]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-
-               #region Events and Delegates
-
-               public event OdbcRowUpdatedEventHandler RowUpdated;
-               public event OdbcRowUpdatingEventHandler RowUpdating;
-
-               #endregion // Events and Delegates
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs
deleted file mode 100644 (file)
index 301d082..0000000
+++ /dev/null
@@ -1,1061 +0,0 @@
-//
-// System.Data.Odbc.OdbcDataReader
-//
-// Author:
-//   Brian Ritchie (brianlritchie@hotmail.com) 
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Sureshkumar T <tsureshkumar@novell.com> (2004)
-//
-// Copyright (C) Brian Ritchie, 2002
-// Copyright (C) Daniel Morgan, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Globalization;
-using System.Text;
-
-namespace System.Data.Odbc
-{
-       public sealed class OdbcDataReader : DbDataReader
-       {
-               #region Fields
-               
-               private OdbcCommand command;
-               private bool open;
-               private int currentRow;
-               private OdbcColumn[] cols;
-               private IntPtr hstmt;
-               private int _recordsAffected = -1;
-               bool disposed;
-               private DataTable _dataTableSchema;
-               private CommandBehavior behavior;
-
-               #endregion
-
-               #region Constructors
-
-               internal OdbcDataReader (OdbcCommand command, CommandBehavior behavior)
-               {
-                       this.command = command;
-                       this.CommandBehavior = behavior;
-                       open = true;
-                       currentRow = -1;
-                       hstmt = command.hStmt;
-                       // Init columns array;
-                       short colcount = 0;
-                       libodbc.SQLNumResultCols (hstmt, ref colcount);
-                       cols = new OdbcColumn [colcount];
-                       GetColumns ();
-               }
-
-               internal OdbcDataReader (OdbcCommand command, CommandBehavior behavior,
-                                        int recordAffected) : this (command, behavior)
-               {
-                       _recordsAffected = recordAffected;
-               }
-               
-
-               #endregion
-
-               #region Properties
-
-               private CommandBehavior CommandBehavior {
-                       get { return behavior; }
-                       set { behavior = value; }
-               }
-
-               public
-               override
-               int Depth {
-                       get {
-                               return 0; // no nested selects supported
-                       }
-               }
-
-               public
-               override
-               int FieldCount {
-                       get {
-                               if (IsClosed)
-                                       throw new InvalidOperationException ("The reader is closed.");
-                               return cols.Length;
-                       }
-               }
-
-               public
-               override
-               bool IsClosed {
-                       get {
-                               return !open;
-                       }
-               }
-
-               public
-               override
-               object this [string value] {
-                       get {
-                               int pos = GetOrdinal (value);
-                               return this [pos];
-                       }
-               }
-
-               public
-               override
-               object this [int i] {
-                       get {
-                               return GetValue (i);
-                       }
-               }
-
-               public
-               override
-               int RecordsAffected {
-                       get {
-                               return _recordsAffected;
-                       }
-               }
-
-               [MonoTODO]
-               public
-               override
-               bool HasRows {
-                       get { throw new NotImplementedException(); }
-               }
-
-               private OdbcConnection Connection {
-                       get {
-                               if (command != null)
-                                       return command.Connection;
-                               return null;
-                       }
-               }
-
-               #endregion
-
-               #region Methods
-               
-               private int ColIndex (string colname)
-               {
-                       int i = 0;
-                       foreach (OdbcColumn col in cols) {
-                               if (col != null) {
-                                       if (col.ColumnName == colname)
-                                               return i;
-                                       if (String.Compare (col.ColumnName, colname, true) == 0)
-                                               return i;
-                               }
-                               i++;
-                       }
-                       return -1;
-               }
-
-               // Dynamically load column descriptions as needed.
-               private OdbcColumn GetColumn (int ordinal)
-               {
-                       if (cols [ordinal] == null) {
-                               short bufsize = 255;
-                               byte [] colname_buffer = new byte [bufsize];
-                               string colname;
-                               short colname_size = 0;
-                               uint ColSize = 0;
-                               short DecDigits = 0, Nullable = 0, dt = 0;
-                               OdbcReturn ret = libodbc.SQLDescribeCol (hstmt, Convert.ToUInt16 (ordinal + 1), 
-                                                                        colname_buffer, bufsize, ref colname_size, ref dt, ref ColSize, 
-                                                                        ref DecDigits, ref Nullable);
-                               if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-                               colname = RemoveTrailingNullChar (Encoding.Unicode.GetString (colname_buffer));
-                               OdbcColumn c = new OdbcColumn (colname, (SQL_TYPE) dt);
-                               c.AllowDBNull = (Nullable != 0);
-                               c.Digits = DecDigits;
-                               if (c.IsVariableSizeType)
-                                       c.MaxLength = (int) ColSize;
-                               cols [ordinal] = c;
-                       }
-                       return cols [ordinal];
-               }
-               
-               // Load all column descriptions
-               private void GetColumns ()
-               {
-                       for(int i = 0; i < cols.Length; i++)
-                               GetColumn (i);
-               }
-
-               public
-               override
-               void Close ()
-               {
-                       // FIXME : have to implement output parameter binding
-                       open = false;
-                       currentRow = -1;
-
-                       this.command.FreeIfNotPrepared ();
-
-                       if ((this.CommandBehavior & CommandBehavior.CloseConnection) == CommandBehavior.CloseConnection)
-                               this.command.Connection.Close ();
-               }
-
-
-               public 
-               override
-               bool GetBoolean (int i)
-               {
-                       return (bool) GetValue (i);
-               }
-
-               public 
-               override
-               byte GetByte (int i)
-               {
-                       return Convert.ToByte (GetValue (i));
-               }
-
-               public 
-               override
-               long GetBytes (int i, long dataIndex, byte[] buffer, int bufferIndex, int length)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("Reader is not open.");
-                       if (currentRow == -1)
-                               throw new InvalidOperationException ("No data available.");
-
-                       OdbcReturn ret = OdbcReturn.Error;
-                       bool copyBuffer = false;
-                       int returnVal = 0, outsize = 0;
-                       byte [] tbuff = new byte [length+1];
-
-                       if (buffer == null)
-                               length = 0;
-                       ret=libodbc.SQLGetData (hstmt, (ushort) (i + 1), SQL_C_TYPE.BINARY, tbuff, length, 
-                                               ref outsize);
-
-                       if (ret == OdbcReturn.NoData)
-                               return 0;
-
-                       if ( (ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                               throw Connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-
-                       OdbcException odbcException = null;
-                       if ( (ret == OdbcReturn.SuccessWithInfo))
-                               odbcException = Connection.CreateOdbcException (
-                                       OdbcHandleType.Stmt, hstmt);
-
-                       if (buffer == null)
-                               return outsize; //if buffer is null,return length of the field
-
-                       if (ret == OdbcReturn.SuccessWithInfo) {
-                               if (outsize == (int) OdbcLengthIndicator.NoTotal)
-                                       copyBuffer = true;
-                               else if (outsize == (int) OdbcLengthIndicator.NullData) {
-                                       copyBuffer = false;
-                                       returnVal = -1;
-                               } else {
-                                       string sqlstate = odbcException.Errors [0].SQLState;
-                                       //SQLState: String Data, Right truncated
-                                       if (sqlstate != libodbc.SQLSTATE_RIGHT_TRUNC)
-                                               throw odbcException;
-                                       copyBuffer = true;
-                               }
-                       } else {
-                               copyBuffer = outsize == -1 ? false : true;
-                               returnVal = outsize;
-                       }
-
-                       if (copyBuffer) {
-                               if (outsize == (int) OdbcLengthIndicator.NoTotal) {
-                                       int j = 0;
-                                       while (tbuff [j] != libodbc.C_NULL) {
-                                               buffer [bufferIndex + j] = tbuff [j];
-                                               j++;
-                                       }
-                                       returnVal = j;
-                               } else {
-                                       int read_bytes = Math.Min (outsize, length);
-                                       for (int j = 0; j < read_bytes; j++)
-                                               buffer [bufferIndex + j] = tbuff [j];
-                                       returnVal = read_bytes;
-                               }
-                       }
-                       return returnVal;
-               }
-               
-               [MonoTODO]
-               public 
-               override
-               char GetChar (int i)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public 
-               override
-               long GetChars (int i, long dataIndex, char[] buffer, int bufferIndex, int length)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       if (currentRow == -1)
-                               throw new InvalidOperationException ("No data available.");
-                       if (i < 0 || i >= FieldCount)
-                               throw new IndexOutOfRangeException ();
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               [EditorBrowsableAttribute (EditorBrowsableState.Never)]
-               new
-               IDataReader GetData (int i)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               string GetDataTypeName (int i)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       if (i < 0 || i >= FieldCount)
-                               throw new IndexOutOfRangeException ();
-                       return GetColumnAttributeStr (i + 1, FieldIdentifier.TypeName);
-               }
-
-               public DateTime GetDate (int i)
-               {
-                       return GetDateTime (i);
-               }
-
-               public
-               override
-               DateTime GetDateTime (int i)
-               {
-                       return (DateTime) GetValue (i);
-               }
-
-               public
-               override
-               decimal GetDecimal (int i)
-               {
-                       return (decimal) GetValue (i);
-               }
-
-               public
-               override
-               double GetDouble (int i)
-               {
-                       return (double) GetValue (i);
-               }
-
-               public
-               override
-               Type GetFieldType (int i)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       return GetColumn (i).DataType;
-               }
-
-               public
-               override
-               float GetFloat (int i)
-               {
-                       return (float) GetValue (i);
-               }
-
-               [MonoTODO]
-               public
-               override
-               Guid GetGuid (int i)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               short GetInt16 (int i)
-               {
-                       return (short) GetValue (i);
-               }
-
-               public
-               override
-               int GetInt32 (int i)
-               {
-                       return (int) GetValue (i);
-               }
-
-               public
-               override
-               long GetInt64 (int i)
-               {
-                       return (long) GetValue (i);
-               }
-
-               public
-               override
-               string GetName (int i)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       return GetColumn (i).ColumnName;
-               }
-
-               public
-               override
-               int GetOrdinal (string value)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       if (value == null)
-                               throw new ArgumentNullException ("fieldName");
-
-                       int i = ColIndex (value);
-                       if (i == -1)
-                               throw new IndexOutOfRangeException ();
-                       return i;
-               }
-
-               [MonoTODO]
-               public
-               override
-               DataTable GetSchemaTable ()
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-
-                       // FIXME : 
-                       // * Map OdbcType to System.Type and assign to DataType.
-                       //   This will eliminate the need for IsStringType in
-                       //   OdbcColumn
-
-                       if (_dataTableSchema != null)
-                               return _dataTableSchema;
-                       
-                       DataTable dataTableSchema = null;
-                       // Only Results from SQL SELECT Queries 
-                       // get a DataTable for schema of the result
-                       // otherwise, DataTable is null reference
-                       if (cols.Length > 0) {
-                               dataTableSchema = new DataTable ();
-                               
-                               dataTableSchema.Columns.Add ("ColumnName", typeof (string));
-                               dataTableSchema.Columns.Add ("ColumnOrdinal", typeof (int));
-                               dataTableSchema.Columns.Add ("ColumnSize", typeof (int));
-                               dataTableSchema.Columns.Add ("NumericPrecision", typeof (int));
-                               dataTableSchema.Columns.Add ("NumericScale", typeof (int));
-                               dataTableSchema.Columns.Add ("IsUnique", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsKey", typeof (bool));
-                               DataColumn dc = dataTableSchema.Columns["IsKey"];
-                               dc.AllowDBNull = true; // IsKey can have a DBNull
-                               dataTableSchema.Columns.Add ("BaseCatalogName", typeof (string));
-                               dataTableSchema.Columns.Add ("BaseColumnName", typeof (string));
-                               dataTableSchema.Columns.Add ("BaseSchemaName", typeof (string));
-                               dataTableSchema.Columns.Add ("BaseTableName", typeof (string));
-                               dataTableSchema.Columns.Add ("DataType", typeof(Type));
-                               dataTableSchema.Columns.Add ("AllowDBNull", typeof (bool));
-                               dataTableSchema.Columns.Add ("ProviderType", typeof (int));
-                               dataTableSchema.Columns.Add ("IsAliased", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsExpression", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsIdentity", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsAutoIncrement", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsRowVersion", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsHidden", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsLong", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsReadOnly", typeof (bool));
-
-                               DataRow schemaRow;
-
-                               for (int i = 0; i < cols.Length; i += 1 ) {
-                                       OdbcColumn col=GetColumn(i);
-
-                                       schemaRow = dataTableSchema.NewRow ();
-                                       dataTableSchema.Rows.Add (schemaRow);
-
-                                       schemaRow ["ColumnName"]        = col.ColumnName;
-                                       schemaRow ["ColumnOrdinal"]     = i;
-                                       schemaRow ["ColumnSize"]        = col.MaxLength;
-                                       schemaRow ["NumericPrecision"]  = GetColumnAttribute (i+1, FieldIdentifier.Precision);
-                                       schemaRow ["NumericScale"]      = GetColumnAttribute (i+1, FieldIdentifier.Scale);
-                                       schemaRow ["BaseTableName"]     = GetColumnAttributeStr (i+1, FieldIdentifier.TableName);
-                                       schemaRow ["BaseSchemaName"]    = GetColumnAttributeStr (i+1, FieldIdentifier.SchemaName);
-                                       schemaRow ["BaseCatalogName"]   = GetColumnAttributeStr (i+1, FieldIdentifier.CatelogName);
-                                       schemaRow ["BaseColumnName"]    = GetColumnAttributeStr (i+1, FieldIdentifier.BaseColumnName);
-                                       schemaRow ["DataType"]          = col.DataType;
-                                       schemaRow ["IsUnique"]          = false;
-                                       schemaRow ["IsKey"]             = DBNull.Value;
-                                       schemaRow ["AllowDBNull"]       = GetColumnAttribute (i+1, FieldIdentifier.Nullable) != libodbc.SQL_NO_NULLS;
-                                       schemaRow ["ProviderType"]      = (int) col.OdbcType;
-                                       schemaRow ["IsAutoIncrement"]   = GetColumnAttribute (i+1, FieldIdentifier.AutoUniqueValue) == libodbc.SQL_TRUE;
-                                       schemaRow ["IsExpression"]      = schemaRow.IsNull ("BaseTableName") || (string) schemaRow ["BaseTableName"] == String.Empty;
-                                       schemaRow ["IsAliased"]         = (string) schemaRow ["BaseColumnName"] != (string) schemaRow ["ColumnName"];
-                                       schemaRow ["IsReadOnly"]        = ((bool) schemaRow ["IsExpression"]
-                                                                          || GetColumnAttribute (i+1, FieldIdentifier.Updatable) == libodbc.SQL_ATTR_READONLY);
-
-                                       // FIXME: all of these
-                                       schemaRow ["IsIdentity"]        = false;
-                                       schemaRow ["IsRowVersion"]      = false;
-                                       schemaRow ["IsHidden"]          = false;
-                                       schemaRow ["IsLong"]            = false;
-
-                                       // FIXME: according to Brian, 
-                                       // this does not work on MS .NET
-                                       // however, we need it for Mono 
-                                       // for now
-                                       // schemaRow.AcceptChanges();
-                               }
-
-                               // set primary keys
-                               DataRow [] rows = dataTableSchema.Select ("BaseTableName <> ''",
-                                                                         "BaseCatalogName, BaseSchemaName, BaseTableName ASC");
-
-                               string lastTableName = String.Empty,
-                                       lastSchemaName = String.Empty,
-                                       lastCatalogName = String.Empty;
-                               string [] keys = null; // assumed to be sorted.
-                               foreach (DataRow row in rows) {
-                                       string tableName = (string) row ["BaseTableName"];
-                                       string schemaName = (string) row ["BaseSchemaName"];
-                                       string catalogName = (string) row ["BaseCatalogName"];
-
-                                       if (tableName != lastTableName || schemaName != lastSchemaName
-                                           || catalogName != lastCatalogName)
-                                               keys = GetPrimaryKeys (catalogName, schemaName, tableName);
-                               
-                                       if (keys != null &&
-                                           Array.BinarySearch (keys, (string) row ["BaseColumnName"]) >= 0) {
-                                               row ["IsKey"] = true;
-                                               row ["IsUnique"] = true;
-                                               row ["AllowDBNull"] = false;
-                                               GetColumn ( ColIndex ( (string) row ["ColumnName"])).AllowDBNull = false;
-                                       }
-                                       lastTableName = tableName;
-                                       lastSchemaName = schemaName;
-                                       lastCatalogName = catalogName;
-                               }
-                               dataTableSchema.AcceptChanges ();
-                       }
-                       return (_dataTableSchema = dataTableSchema);
-               }
-
-               public
-               override
-               string GetString (int i)
-               {
-                       object ret = GetValue (i);
-
-                       if (ret != null && ret.GetType () != typeof (string))
-                               return Convert.ToString (ret);
-                       else
-                               return (string) GetValue (i);
-               }
-
-               [MonoTODO]
-               public TimeSpan GetTime (int i)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               object GetValue (int i)
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       if (currentRow == -1)
-                               throw new InvalidOperationException ("No data available.");
-                       if (i > cols.Length-1 || i < 0)
-                               throw new IndexOutOfRangeException ();
-
-                       OdbcReturn ret;
-                       int outsize = 0, bufsize;
-                       byte[] buffer;
-                       OdbcColumn col = GetColumn (i);
-                       object DataValue = null;
-                       ushort ColIndex = Convert.ToUInt16 (i + 1);
-
-                       // Check cached values
-                       if (col.Value == null) {
-                               // odbc help file
-                               // mk:@MSITStore:C:\program%20files\Microsoft%20Data%20Access%20SDK\Docs\odbc.chm::/htm/odbcc_data_types.htm
-                               switch (col.OdbcType) {
-                               case OdbcType.Bit:
-                                       short bit_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref bit_data, 0, ref outsize);
-                                       if (outsize != (int) OdbcLengthIndicator.NullData)
-                                               DataValue = bit_data == 0 ? "False" : "True";
-                                       break;
-                               case OdbcType.Numeric:
-                               case OdbcType.Decimal:
-                                       bufsize = 50;
-                                       buffer = new byte [bufsize];  // According to sqlext.h, use SQL_CHAR for decimal.
-                                       // FIXME : use Numeric.
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, SQL_C_TYPE.CHAR, buffer, bufsize, ref outsize);
-                                       if (outsize!=-1) {
-                                               byte [] temp = new byte [outsize];
-                                               for (int j = 0; j < outsize; j++)
-                                                       temp [j] = buffer [j];
-                                               DataValue = Decimal.Parse (Encoding.Default.GetString (temp),
-                                                       CultureInfo.InvariantCulture);
-                                       }
-                                       break;
-                               case OdbcType.TinyInt:
-                                       short short_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref short_data, 0, ref outsize);
-                                       DataValue = Convert.ToByte (short_data);
-                                       break;
-                               case OdbcType.Int:
-                                       int int_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref int_data, 0, ref outsize);
-                                       DataValue = int_data;
-                                       break;
-
-                               case OdbcType.SmallInt:
-                                       short sint_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref sint_data, 0, ref outsize);
-                                       DataValue = sint_data;
-                                       break;
-
-                               case OdbcType.BigInt:
-                                       long long_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref long_data, 0, ref outsize);
-                                       DataValue = long_data;
-                                       break;
-                               case OdbcType.NChar:
-                                       bufsize = 255;
-                                       buffer = new byte [bufsize];
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, SQL_C_TYPE.WCHAR, buffer, bufsize, ref outsize);
-                                       if (outsize != (int) OdbcLengthIndicator.NullData)
-                                               if (!(ret == OdbcReturn.SuccessWithInfo
-                                                      && outsize == (int) OdbcLengthIndicator.NoTotal))
-                                                       DataValue = Encoding.Unicode.GetString (buffer, 0, outsize);
-                                       break;
-                               case OdbcType.NText:
-                               case OdbcType.NVarChar:
-                                       bufsize = (col.MaxLength < 127 ? (col.MaxLength*2+1) : 255);
-                                       buffer = new byte[bufsize];  // According to sqlext.h, use SQL_CHAR for both char and varchar
-                                       StringBuilder sb = new StringBuilder ();
-                                       char[] charBuffer = new char[bufsize];
-                                       Decoder unicodeDecoder = Encoding.Unicode.GetDecoder ();
-                                       do {
-                                               ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize);
-                                               if (ret == OdbcReturn.Error)
-                                                       break;
-                                               // Fix for strance ODBC drivers (like psqlODBC)
-                                               if (ret == OdbcReturn.Success && outsize==-1)
-                                                       ret = OdbcReturn.NoData;
-
-                                               if (ret == OdbcReturn.Success || ret == OdbcReturn.SuccessWithInfo) {
-                                                       if (outsize >= bufsize || outsize == (int)OdbcLengthIndicator.NoTotal)
-                                                               outsize = bufsize;
-                                                       int charCount = unicodeDecoder.GetChars (buffer, 0, outsize, charBuffer, 0);
-                                                       string strValue = new String (charBuffer, 0, charCount);
-                                                       sb.Append (RemoveTrailingNullChar (strValue));
-                                               }
-                                       } while (ret != OdbcReturn.NoData);
-                                       DataValue = sb.ToString ();
-                                       charBuffer = null;
-                                       break;
-                               case OdbcType.Text:
-                               case OdbcType.VarChar:
-                                       bufsize = (col.MaxLength < 255 ? (col.MaxLength+1) : 255);
-                                       buffer = new byte[bufsize];  // According to sqlext.h, use SQL_CHAR for both char and varchar
-                                       StringBuilder sb1 = new StringBuilder ();
-                                       charBuffer = new char[bufsize];
-                                       Decoder defaultDecoder = Encoding.Default.GetDecoder();
-                                       do { 
-                                               ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize);
-                                               if (ret == OdbcReturn.Error)
-                                                       break;
-                                               // Fix for strance ODBC drivers (like psqlODBC)
-                                               if (ret == OdbcReturn.Success && outsize==-1)
-                                                       ret = OdbcReturn.NoData;
-                                               if (ret == OdbcReturn.Success || ret == OdbcReturn.SuccessWithInfo) {
-                                                       if (outsize >= bufsize || outsize == (int)OdbcLengthIndicator.NoTotal)
-                                                               outsize = bufsize - 1;
-                                                       int charCount = defaultDecoder.GetChars(buffer, 0, outsize, charBuffer, 0);
-                                                       sb1.Append(charBuffer, 0, charCount);
-                                               }
-                                       } while (ret != OdbcReturn.NoData);
-                                       DataValue = sb1.ToString ();
-                                       break;
-                               case OdbcType.Real:
-                                       float float_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref float_data, 0, ref outsize);
-                                       DataValue = float_data;
-                                       break;
-                               case OdbcType.Double:
-                                       double double_data = 0;
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref double_data, 0, ref outsize);
-                                       DataValue = double_data;
-                                       break;
-                               case OdbcType.Timestamp:
-                               case OdbcType.DateTime:
-                               case OdbcType.Date:
-                               case OdbcType.Time:
-                                       OdbcTimestamp ts_data = new OdbcTimestamp();
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref ts_data, 0, ref outsize);
-                                       if (outsize != -1) {// This means SQL_NULL_DATA
-                                               if (col.OdbcType == OdbcType.Time) {
-                                                       // libodbc returns value in first three fields for OdbcType.Time 
-                                                       DataValue = new System.TimeSpan (ts_data.year, ts_data.month, ts_data.day);
-                                               } else {
-                                                       DataValue = new DateTime(ts_data.year, ts_data.month,
-                                                                                ts_data.day, ts_data.hour, ts_data.minute,
-                                                                                ts_data.second);
-                                                       if (ts_data.fraction != 0)
-                                                               DataValue = ((DateTime) DataValue).AddTicks ((long)ts_data.fraction / 100);
-                                               }
-                                       }
-                                       break;
-                               case OdbcType.VarBinary :
-                               case OdbcType.Image :
-                                       bufsize = (col.MaxLength < 255 && col.MaxLength > 0 ? col.MaxLength : 255);
-                                       buffer= new byte [bufsize];
-                                       ArrayList al = new ArrayList ();
-                                       //get the size of data to be returned.
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, SQL_C_TYPE.BINARY, buffer, 0, ref outsize);
-                                       if (outsize != (int) OdbcLengthIndicator.NullData) {
-                                               do {
-                                                       ret = libodbc.SQLGetData (hstmt, ColIndex, SQL_C_TYPE.BINARY, buffer, bufsize, ref outsize);
-                                                       if (ret == OdbcReturn.Error)
-                                                               break;
-                                                       if (ret != OdbcReturn.NoData && outsize != -1) {
-                                                               if (outsize < bufsize) {
-                                                                       byte [] tmparr = new byte [outsize];
-                                                                       Array.Copy (buffer, 0, tmparr, 0, outsize);
-                                                                       al.AddRange (tmparr);
-                                                               } else
-                                                                       al.AddRange (buffer);
-                                                       } else {
-                                                               break;
-                                                       }
-                                               } while (ret != OdbcReturn.NoData);
-                                       }
-                                       DataValue = al.ToArray (typeof (byte));
-                                       break;
-                               case OdbcType.Binary :
-                                       bufsize = col.MaxLength;
-                                       buffer = new byte [bufsize];
-                                       GetBytes (i, 0, buffer, 0, bufsize);
-                                       ret = OdbcReturn.Success;
-                                       DataValue = buffer;
-                                       break;
-                               default:
-                                       bufsize = 255;
-                                       buffer = new byte[bufsize];
-                                       ret = libodbc.SQLGetData (hstmt, ColIndex, SQL_C_TYPE.CHAR, buffer, bufsize, ref outsize);
-                                       if (outsize != (int) OdbcLengthIndicator.NullData)
-                                               if (! (ret == OdbcReturn.SuccessWithInfo
-                                                      && outsize == (int) OdbcLengthIndicator.NoTotal))
-                                                       DataValue = Encoding.Default.GetString (buffer, 0, outsize);
-                                       break;
-                               }
-
-                               if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo) && (ret!=OdbcReturn.NoData))
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-
-                               if (outsize == -1) // This means SQL_NULL_DATA 
-                                       col.Value = DBNull.Value;
-                               else
-                                       col.Value = DataValue;
-                       }
-                       return col.Value;
-               }
-               
-               public 
-               override
-               int GetValues (object [] values)
-               {
-                       int numValues = 0;
-
-                       if (IsClosed)
-                               throw new InvalidOperationException ("The reader is closed.");
-                       if (currentRow == -1)
-                               throw new InvalidOperationException ("No data available.");
-
-                       // copy values
-                       for (int i = 0; i < values.Length; i++) {
-                               if (i < FieldCount) {
-                                       values [i] = GetValue (i);
-                               } else {
-                                       values [i] = null;
-                               }
-                       }
-
-                       // get number of object instances in array
-                       if (values.Length < FieldCount)
-                               numValues = values.Length;
-                       else if (values.Length == FieldCount)
-                               numValues = FieldCount;
-                       else
-                               numValues = FieldCount;
-
-                       return numValues;
-               }
-
-
-               public override IEnumerator GetEnumerator ()
-               {
-                       return new DbEnumerator (this);
-               }
-
-               protected override
-               void Dispose (bool disposing)
-               {
-                       if (disposed)
-                               return;
-
-                       if (disposing) {
-                               // dispose managed resources
-                               Close ();
-                       }
-
-                       command = null;
-                       cols = null;
-                       _dataTableSchema = null;
-                       disposed = true;
-               }
-
-               public
-               override
-               bool IsDBNull (int i)
-               {
-                       return (GetValue (i) is DBNull);
-               }
-
-               /// <remarks>
-               /// Move to the next result set.
-               /// </remarks>
-               public
-               override
-               bool NextResult ()
-               {
-                       OdbcReturn ret = OdbcReturn.Success;
-                       ret = libodbc.SQLMoreResults (hstmt);
-                       if (ret == OdbcReturn.Success) {
-                               short colcount = 0;
-                               libodbc.SQLNumResultCols (hstmt, ref colcount);
-                               cols = new OdbcColumn [colcount];
-                               _dataTableSchema = null; // force fresh creation
-                               GetColumns ();
-                       }
-                       return (ret == OdbcReturn.Success);
-               }
-
-               /// <remarks>
-               /// Load the next row in the current result set.
-               /// </remarks>
-               private bool NextRow ()
-               {
-                       OdbcReturn ret = libodbc.SQLFetch (hstmt);
-                       if (ret != OdbcReturn.Success)
-                               currentRow = -1;
-                       else
-                               currentRow++;
-
-                       // Clear cached values from last record
-                       foreach (OdbcColumn col in cols) {
-                               if (col != null)
-                                       col.Value = null;
-                       }
-                       return (ret == OdbcReturn.Success);
-               }
-
-               private int GetColumnAttribute (int column, FieldIdentifier fieldId)
-               {
-                       OdbcReturn ret = OdbcReturn.Error;
-                       byte [] buffer = new byte [255];
-                       short outsize = 0;
-                       int val = 0;
-                       ret = libodbc.SQLColAttribute (hstmt, (short)column, fieldId, 
-                                                       buffer, (short)buffer.Length, 
-                                                       ref outsize, ref val);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               throw Connection.CreateOdbcException (
-                                       OdbcHandleType.Stmt, hstmt);
-                       return val;
-               }
-
-               private string GetColumnAttributeStr (int column, FieldIdentifier fieldId)
-               {
-                       OdbcReturn ret = OdbcReturn.Error;
-                       byte [] buffer = new byte [255];
-                       short outsize = 0;
-                       int val = 0;
-                       ret = libodbc.SQLColAttribute (hstmt, (short)column, fieldId,
-                                                       buffer, (short)buffer.Length,
-                                                       ref outsize, ref val);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               throw Connection.CreateOdbcException (
-                                       OdbcHandleType.Stmt, hstmt);
-                       string value = string.Empty;
-                       if (outsize > 0)
-                               value = Encoding.Unicode.GetString (buffer, 0, outsize);
-                       return value;
-               }
-
-               private string [] GetPrimaryKeys (string catalog, string schema, string table)
-               {
-                       if (cols.Length <= 0)
-                               return new string [0];
-
-                       ArrayList keys = null;
-                       try {
-                               keys = GetPrimaryKeysBySQLPrimaryKey (catalog, schema, table);
-                       } catch (OdbcException) {
-                               try {
-                                       keys = GetPrimaryKeysBySQLStatistics (catalog, schema, table);
-                               } catch (OdbcException) {
-                               }
-                       }
-                       if (keys == null)
-                               return null;
-                       keys.Sort ();
-                       return (string []) keys.ToArray (typeof (string));
-               }
-
-               private ArrayList GetPrimaryKeysBySQLPrimaryKey (string catalog, string schema, string table)
-               {
-                       ArrayList keys = new ArrayList ();
-                       IntPtr handle = IntPtr.Zero;
-                       OdbcReturn ret;
-                       try {
-                               ret=libodbc.SQLAllocHandle(OdbcHandleType.Stmt, 
-                                                          command.Connection.hDbc, ref handle);
-                               if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                       throw Connection.CreateOdbcException (
-                                               OdbcHandleType.Dbc, Connection.hDbc);
-
-                               ret = libodbc.SQLPrimaryKeys (handle, catalog, -3,
-                                       schema, -3, table, -3);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-
-                               int length = 0;
-                               byte [] primaryKey = new byte [255];
-
-                               ret = libodbc.SQLBindCol (handle, 4, SQL_C_TYPE.CHAR, primaryKey, primaryKey.Length, ref length);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-
-                               while (true) {
-                                       ret = libodbc.SQLFetch (handle);
-                                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                               break;
-                                       string pkey = Encoding.Default.GetString (primaryKey, 0, length);
-                                       keys.Add (pkey);
-                               }
-                       } finally {
-                               if (handle != IntPtr.Zero) {
-                                       ret = libodbc.SQLFreeStmt (handle, libodbc.SQLFreeStmtOptions.Close);
-                                       if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                               throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-
-                                       ret = libodbc.SQLFreeHandle( (ushort) OdbcHandleType.Stmt, handle);
-                                       if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                               throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-                               }
-                       }
-                       return keys;
-               }
-               
-               private unsafe ArrayList GetPrimaryKeysBySQLStatistics (string catalog, string schema, string table)
-               {
-                       ArrayList keys = new ArrayList ();
-                       IntPtr handle = IntPtr.Zero;
-                       OdbcReturn ret;
-                       try {
-                               ret=libodbc.SQLAllocHandle(OdbcHandleType.Stmt, 
-                                                          command.Connection.hDbc, ref handle);
-                               if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                       throw Connection.CreateOdbcException (
-                                               OdbcHandleType.Dbc, Connection.hDbc);
-
-                               ret = libodbc.SQLStatistics (handle, catalog, -3,  
-                                                            schema, -3, 
-                                                            table, -3,
-                                                            libodbc.SQL_INDEX_UNIQUE,
-                                                            libodbc.SQL_QUICK);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-
-                               // NON_UNIQUE
-                               int  nonUniqueLength = 0;
-                               short nonUnique = libodbc.SQL_FALSE;
-                               ret = libodbc.SQLBindCol (handle, 4, SQL_C_TYPE.SHORT, ref nonUnique, sizeof (short), ref nonUniqueLength);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-
-                               // COLUMN_NAME
-                               int length = 0;
-                               byte [] colName = new byte [255];
-                               ret = libodbc.SQLBindCol (handle, 9, SQL_C_TYPE.CHAR, colName, colName.Length, ref length);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-                       
-                               while (true) {
-                                       ret = libodbc.SQLFetch (handle);
-                                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                               break;
-                                       if (nonUnique == libodbc.SQL_TRUE) {
-                                               string pkey = Encoding.Default.GetString (colName, 0, length);
-                                               keys.Add (pkey);
-                                               break;
-                                       }
-                               }
-                       } finally {
-                               if (handle != IntPtr.Zero) {
-                                       ret = libodbc.SQLFreeStmt (handle, libodbc.SQLFreeStmtOptions.Close);
-                                       if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                               throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-
-                                       ret = libodbc.SQLFreeHandle ((ushort) OdbcHandleType.Stmt, handle);
-                                       if ((ret!=OdbcReturn.Success) && (ret!=OdbcReturn.SuccessWithInfo))
-                                               throw Connection.CreateOdbcException (OdbcHandleType.Stmt, handle);
-                               }
-                       }
-                       return keys;
-               }
-               
-               public
-               override
-               bool Read ()
-               {
-                       return NextRow ();
-               }
-
-               static string RemoveTrailingNullChar (string value)
-               {
-                       return value.TrimEnd ('\0');
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcDescriptionAttribute.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcDescriptionAttribute.cs
deleted file mode 100644 (file)
index 0e679fc..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// 
-// System.Data.Odbc/OdbcDescriptionAttribute.cs
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data.Odbc {
-       [AttributeUsage (AttributeTargets.All)]
-       internal sealed class OdbcDescriptionAttribute : DescriptionAttribute
-       {
-               #region Fields
-
-               string description;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public OdbcDescriptionAttribute (string description)
-                       : base (description)
-               {
-                       this.description = description; 
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override string Description {
-                       get { return description; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcErrorCollection.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcErrorCollection.cs
deleted file mode 100644 (file)
index 8ceda97..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// System.Data.Odbc.OdbcErrorCollection
-//
-// Author:
-//   Brian Ritchie (brianlritchie@hotmail.com) 
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{
-       [Serializable]
-       public sealed class OdbcErrorCollection : ICollection, IEnumerable
-       {
-               #region Fields
-
-               readonly ArrayList _items = new ArrayList ();
-       
-               #endregion // Fields
-
-               #region Constructors
-
-               internal OdbcErrorCollection ()
-               {
-               }
-
-               #endregion Constructors
-
-               #region Properties 
-
-               public int Count {
-                       get {
-                               return _items.Count;
-                       }
-               }
-
-               public OdbcError this[int i] {
-                       get {
-                               return (OdbcError) _items [i];
-                       }
-               }
-
-               object ICollection.SyncRoot {
-                       get {
-                               return _items.SyncRoot;
-                       }
-               }
-
-               bool ICollection.IsSynchronized {
-                       get {
-                               return _items.IsSynchronized;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               internal void Add (OdbcError error)
-               {
-                       _items.Add ((object) error);
-               }
-               
-               public void CopyTo (Array array, int i)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException("array");
-
-                       if ((i < array.GetLowerBound (0)) || (i > array.GetUpperBound (0)))
-                               throw new ArgumentOutOfRangeException("index");
-               
-                       // is the check for IsFixedSize required?
-                       if ((array.IsFixedSize) || (i + this.Count > array.GetUpperBound (0)))
-                               throw new ArgumentException("array");
-
-                       ((OdbcError[]) (_items.ToArray ())).CopyTo (array, i);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return _items.GetEnumerator ();
-               }
-
-               public void CopyTo (OdbcError [] array, int i)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException ("array");
-
-                       if ((i < array.GetLowerBound (0)) || (i > array.GetUpperBound (0)))
-                               throw new ArgumentOutOfRangeException ("index");
-                       ((OdbcError[]) (_items.ToArray ())).CopyTo (array, i);
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcException.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcException.cs
deleted file mode 100644 (file)
index 93b44d6..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// System.Data.Odbc.OdbcException
-//
-// Author:
-//   Brian Ritchie (brianlritchie@hotmail.com)
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Runtime.Serialization;
-using System.Text;
-
-namespace System.Data.Odbc
-{
-       [Serializable]
-       public sealed class OdbcException : DbException
-       {
-               OdbcErrorCollection odbcErrors;
-
-               internal OdbcException (OdbcErrorCollection errors)
-                       : base (CreateMessage (errors))
-               {
-                       odbcErrors = errors;
-               }
-
-               public OdbcErrorCollection Errors {
-                       get {
-                               return odbcErrors;
-                       }
-               }
-
-               public override string Source {
-                       get {
-                               return odbcErrors [0].Source;
-                       }
-               }
-
-
-               private OdbcException (SerializationInfo si, StreamingContext sc) : base(si, sc)
-               {
-                       odbcErrors = new OdbcErrorCollection ();
-                       odbcErrors = ((OdbcErrorCollection) si.GetValue (
-                               "odbcErrors", typeof (OdbcErrorCollection)));
-               }
-
-               #region Methods
-
-               public override void GetObjectData (SerializationInfo si, StreamingContext context)
-               {
-                       if (si == null)
-                               throw new ArgumentNullException ("si");
-
-                       si.AddValue ("odbcErrors", odbcErrors, typeof(OdbcErrorCollection));
-                       base.GetObjectData (si, context);
-               }
-
-               static string CreateMessage (OdbcErrorCollection errors)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       for (int i = 0; i < errors.Count; i++) {
-                               if (i > 0)
-                                       sb.Append (Environment.NewLine);
-                               OdbcError error = errors [i];
-                               sb.AppendFormat ("ERROR [{0}] {1}", error.SQLState,
-                                       error.Message);
-                       }
-                       return sb.ToString ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcFactory.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcFactory.cs
deleted file mode 100644 (file)
index 43bcf5e..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// System.Data.Odbc.OdbcFactory
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-#region Using Directives
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-#endregion // Using Directives
-
-namespace System.Data.Odbc 
-{
-        
-        public sealed class OdbcFactory : DbProviderFactory
-        {
-                #region Fields
-                public static readonly OdbcFactory Instance;
-               static readonly object lockStatic = new object ();
-                #endregion //Fields
-
-                #region Constructors
-               /// <remarks>
-               /// public static variable Instance should hold the the singleton instance 
-               /// based on the knowledge that custom factories without this instance variable
-               /// ms.net  throws exception 
-               /// <pre>
-               /// System.InvalidOperationException: The requested .Net Framework Data 
-               ///             Provider's implementation does not have an Instance field 
-               ///             of a System.Data.Common.DbProviderFactory derived type.
-               ///     at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow)
-               ///     at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)
-               /// </pre>
-               /// </remarks>
-               static OdbcFactory() 
-               {
-                        lock (lockStatic) 
-                        {
-                               if (Instance == null)
-                                       Instance = new OdbcFactory ();
-                       }
-               }
-                
-                private OdbcFactory()
-                {
-                        
-                }
-                
-                #endregion //Constructors
-
-                #region Methods
-                public override DbConnection CreateConnection()
-                {
-                        return  new OdbcConnection () as DbConnection;
-                }
-                
-                public override DbCommand CreateCommand()
-                {
-                        return new OdbcCommand () as DbCommand;
-                }
-                
-                public override DbCommandBuilder CreateCommandBuilder()
-                {
-                        return new OdbcCommandBuilder () as DbCommandBuilder;
-                }
-                
-                
-               public override DbConnectionStringBuilder CreateConnectionStringBuilder ()
-               {
-                       return new OdbcConnectionStringBuilder () as DbConnectionStringBuilder;
-               }
-                
-                public override DbDataAdapter CreateDataAdapter()
-                {
-                        return new OdbcDataAdapter () as DbDataAdapter;
-                }
-                
-                public override DbParameter CreateParameter()
-                {
-                        return new OdbcParameter () as DbParameter;
-                }
-
-               public override CodeAccessPermission CreatePermission (PermissionState state)
-               {
-                       return new OdbcPermission (state);
-               }
-
-                #endregion //Methods
-        }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcInfoMessageEventArgs.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcInfoMessageEventArgs.cs
deleted file mode 100644 (file)
index b2ce7c2..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// System.Data.Odbc.OdbcInfoMessageEventArgs
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{
-       public sealed class OdbcInfoMessageEventArgs : EventArgs
-       {
-               OdbcErrorCollection errors = new OdbcErrorCollection ();
-
-               #region Constructors
-
-               internal OdbcInfoMessageEventArgs (OdbcErrorCollection errors) {
-                       foreach (OdbcError e in errors) 
-                               this.errors.Add (e);
-               }
-
-               #endregion Constructors
-
-               #region Properties
-
-
-               public OdbcErrorCollection Errors {
-                       get { return errors; }
-               }
-
-               public string Message {
-                       get { return errors [0].Message; }
-               }       
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override string ToString ()
-               {
-                       return Message;
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcInfoMessageEventHandler.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcInfoMessageEventHandler.cs
deleted file mode 100644 (file)
index 4849969..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Data.Odbc.OdbcInfoMessageEventHandler
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{
-       public delegate void OdbcInfoMessageEventHandler (object sender, OdbcInfoMessageEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcMetaDataCollectionNames.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcMetaDataCollectionNames.cs
deleted file mode 100644 (file)
index 9d424c5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Data.Odbc.OdbcMetaDataCollectionNames.cs
-//
-// Author:
-//   Nagappan A <anagappan@novell.com>
-//
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Odbc
-{
-       /// <summary>
-       /// Collection names
-       /// </summary>
-       public static class OdbcMetaDataCollectionNames {
-               public static readonly string Columns = "Columns";
-               public static readonly string Indexes = "Indexes";
-               public static readonly string ProcedureColumns = "ProcedureColumns";
-               public static readonly string ProcedureParameters = "ProcedureParameters";
-               public static readonly string Procedures = "Procedures";
-               public static readonly string Tables = "Tables";
-               public static readonly string Views = "Views";
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcMetaDataColumnNames.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcMetaDataColumnNames.cs
deleted file mode 100644 (file)
index 54d89de..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Data.Odbc.OdbcMetaDataColumnNames.cs
-//
-// Author:
-//   Nagappan A <anagappan@novell.com>
-//
-//
-// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.Odbc
-{
-       /// <summary>
-       /// Collection names
-       /// </summary>
-       public static class OdbcMetaDataColumnNames {
-               public static readonly string BooleanFalseLiteral;
-               public static readonly string BooleanTrueLiteral;
-               public static readonly string SQLType;
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcParameter.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcParameter.cs
deleted file mode 100644 (file)
index 9b80f9b..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-//
-// System.Data.Odbc.OdbcParameter
-//
-// Authors:
-//   Brian Ritchie (brianlritchie@hotmail.com)
-//   Sureshkumar T <tsureshkumar@novell.com>  2004.
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Text;
-using System.Data;
-using System.Data.Common;
-using System.Runtime.InteropServices;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Data.Odbc
-{
-       [TypeConverterAttribute ("System.Data.Odbc.OdbcParameter+OdbcParameterConverter, " + Consts.AssemblySystem_Data)]
-       public sealed class OdbcParameter :
-       DbParameter,
-       ICloneable, IDbDataParameter, IDataParameter
-       {
-               #region Fields
-
-               string name;
-               ParameterDirection direction;
-               bool isNullable;
-               int size;
-               DataRowVersion sourceVersion;
-               string sourceColumn;
-               byte _precision;
-               byte _scale;
-               object _value;
-
-               private OdbcTypeMap _typeMap;
-               private NativeBuffer _nativeBuffer = new NativeBuffer ();
-               private NativeBuffer _cbLengthInd;
-               private OdbcParameterCollection container;
-               
-               #endregion
-
-               #region Constructors
-               
-               public OdbcParameter ()
-               {
-                       _cbLengthInd = new NativeBuffer ();
-                       ParameterName = String.Empty;
-                       IsNullable = false;
-                       SourceColumn = String.Empty;
-                       Direction = ParameterDirection.Input;
-                       _typeMap = OdbcTypeConverter.GetTypeMap (OdbcType.NVarChar);
-               }
-
-               public OdbcParameter (string name, object value)
-                       : this ()
-               {
-                       this.ParameterName = name;
-                       Value = value;
-                       //FIXME: MS.net does not infer OdbcType from value unless a type is provided
-                       _typeMap = OdbcTypeConverter.InferFromValue (value);
-                       if (value != null && !value.GetType ().IsValueType) {
-                               Type type = value.GetType ();
-                               if (type.IsArray)
-                                       Size = type.GetElementType () == typeof (byte) ?
-                                               ((Array) value).Length : 0;
-                               else
-                                       Size = value.ToString ().Length;
-                       }
-               }
-
-               public OdbcParameter (string name, OdbcType type)
-                       : this ()
-               {
-                       this.ParameterName = name;
-                       _typeMap = (OdbcTypeMap) OdbcTypeConverter.GetTypeMap (type);
-               }
-
-               public OdbcParameter (string name, OdbcType type, int size)
-                       : this (name, type)
-               {
-                       this.Size = size;
-               }
-
-               public OdbcParameter (string name, OdbcType type, int size, string sourcecolumn)
-                       : this (name, type, size)
-               {
-                       this.SourceColumn = sourcecolumn;
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public OdbcParameter (string parameterName, OdbcType odbcType, int size,
-                                    ParameterDirection parameterDirection, bool isNullable, 
-                                    byte precision, byte scale, string srcColumn, 
-                                    DataRowVersion srcVersion, object value)
-                       : this (parameterName, odbcType, size, srcColumn)
-               {
-                       this.Direction = parameterDirection;
-                       this.IsNullable = isNullable;
-                       this.SourceVersion = srcVersion;
-               }
-
-               #endregion
-
-               #region Properties
-
-               // Used to ensure that only one collection can contain this
-               // parameter
-               internal OdbcParameterCollection Container {
-                       get { return container; }
-                       set { container = value; }
-               }
-
-               [OdbcCategory ("Data")]
-               [OdbcDescriptionAttribute ("The parameter generic type")]
-               public
-               override
-               DbType DbType {
-                       get { return _typeMap.DbType; }
-                       set { 
-                               if (value == _typeMap.DbType)
-                                       return;
-                               
-                               _typeMap = OdbcTypeConverter.GetTypeMap (value);
-                       }
-               }
-
-               [OdbcCategory ("Data")]
-               [OdbcDescriptionAttribute ("Input, output, or bidirectional parameter")]  
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public
-               override
-               ParameterDirection Direction {
-                       get { return direction; }
-                       set { direction = value; }
-               }
-
-               [OdbcDescriptionAttribute ("A design-time property used for strongly typed code generation")]
-               public
-               override
-               bool IsNullable {
-                       get { return isNullable; }
-                       set { isNullable = value; }
-               }
-
-               [DefaultValue (OdbcType.NChar)]
-               [OdbcDescriptionAttribute ("The parameter native type")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [OdbcCategory ("Data")]
-               [DbProviderSpecificTypeProperty (true)]
-               public OdbcType OdbcType {
-                       get { return _typeMap.OdbcType; }
-                       set {
-                               if (value == _typeMap.OdbcType)
-                                       return;
-
-                               _typeMap = OdbcTypeConverter.GetTypeMap (value);
-                       }
-               }
-
-               [OdbcDescription ("DataParameter_ParameterName")]
-               public 
-               override
-               string ParameterName {
-                       get { return name; }
-                       set { name = value; }
-               }
-
-               [OdbcDescription ("DbDataParameter_Precision")]
-               [OdbcCategory ("DataCategory_Data")]
-               [DefaultValue (0)]
-               public byte Precision {
-                       get { return _precision; }
-                       set { _precision = value; }
-               }
-
-               [OdbcDescription ("DbDataParameter_Scale")]
-               [OdbcCategory ("DataCategory_Data")]
-               [DefaultValue (0)]
-               public byte Scale {
-                       get { return _scale; }
-                       set { _scale = value; }
-               }
-               
-               [OdbcDescription ("DbDataParameter_Size")]
-               [OdbcCategory ("DataCategory_Data")]
-               public
-               override
-               int Size {
-                       get { return size; }
-                       set { size = value; }
-               }
-
-               [OdbcDescription ("DataParameter_SourceColumn")]
-               [OdbcCategory ("DataCategory_Data")]
-               public
-               override
-               string SourceColumn {
-                       get { return sourceColumn; }
-                       set { sourceColumn = value; }
-               }
-               
-               [OdbcDescription ("DataParameter_SourceVersion")]
-               [OdbcCategory ("DataCategory_Data")]
-               public
-               override
-               DataRowVersion SourceVersion {
-                       get { return sourceVersion; }
-                       set { sourceVersion = value; }
-               }
-
-               [TypeConverter (typeof(StringConverter))]
-               [OdbcDescription ("DataParameter_Value")]
-               [OdbcCategory ("DataCategory_Data")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public
-               override
-               object Value {
-                       get { return _value; }
-                       set { _value = value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               internal void Bind (OdbcCommand command, IntPtr hstmt, int ParamNum)
-               {
-                       OdbcReturn ret;
-                       int len;
-                       
-                       // Convert System.Data.ParameterDirection into odbc enum
-                       OdbcInputOutputDirection paramdir = libodbc.ConvertParameterDirection (this.Direction);
-
-                       _cbLengthInd.EnsureAlloc (Marshal.SizeOf (typeof (int)));
-                       if (Value is DBNull)
-                               len = (int)OdbcLengthIndicator.NullData;
-                       else {
-                               len = GetNativeSize ();
-                               AllocateBuffer ();
-                       }
-                       
-                       Marshal.WriteInt32 (_cbLengthInd, len);
-                       ret = libodbc.SQLBindParameter (hstmt, (ushort) ParamNum, (short) paramdir,
-                               _typeMap.NativeType, _typeMap.SqlType, Convert.ToUInt32 (Size),
-                               0, (IntPtr) _nativeBuffer, 0, _cbLengthInd);
-
-                       // Check for error condition
-                       if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
-                               throw command.Connection.CreateOdbcException (OdbcHandleType.Stmt, hstmt);
-               }
-
-               [MonoTODO]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override string ToString ()
-               {
-                       return ParameterName;
-               }
-               
-               private int GetNativeSize ()
-               {
-                       TextInfo ti = CultureInfo.InvariantCulture.TextInfo;
-                       Encoding enc = Encoding.GetEncoding (ti.ANSICodePage);
-
-                       switch (_typeMap.OdbcType) {
-                       case OdbcType.Binary:
-                               if (Value.GetType ().IsArray &&
-                                   Value.GetType ().GetElementType () == typeof (byte))
-                                       return ( (Array) Value).Length;
-                               else
-                                       return Value.ToString ().Length;
-                       case OdbcType.Bit:
-                               return Marshal.SizeOf (typeof (byte));
-                       case OdbcType.Double:
-                               return Marshal.SizeOf (typeof (double));
-                       case OdbcType.Real:
-                               return Marshal.SizeOf (typeof (float));
-                       case OdbcType.Int:
-                               return Marshal.SizeOf (typeof (int));
-                       case OdbcType.BigInt:
-                               return Marshal.SizeOf (typeof (long));
-                       case OdbcType.Decimal:
-                       case OdbcType.Numeric:
-                               return 19;
-                       case OdbcType.SmallInt:
-                               return Marshal.SizeOf (typeof (Int16));
-                       case OdbcType.TinyInt:
-                               return Marshal.SizeOf (typeof (byte));
-                       case OdbcType.Char:
-                       case OdbcType.Text:
-                       case OdbcType.VarChar:
-                               return enc.GetByteCount (Convert.ToString (Value)) + 1;
-                       case OdbcType.NChar:
-                       case OdbcType.NText:
-                       case OdbcType.NVarChar:
-                               // FIXME: Change to unicode
-                               return enc.GetByteCount (Convert.ToString (Value)) + 1;
-                       case OdbcType.VarBinary:
-                       case OdbcType.Image:
-                               if (Value.GetType ().IsArray &&
-                                   Value.GetType ().GetElementType () == typeof (byte))
-                                       return ((Array) Value).Length;
-                               throw new ArgumentException ("Unsupported Native Type!");
-                       case OdbcType.Date:
-                       case OdbcType.DateTime:
-                       case OdbcType.SmallDateTime:
-                       case OdbcType.Time:
-                       case OdbcType.Timestamp:
-                               return 18;
-                       case OdbcType.UniqueIdentifier:
-                               return Marshal.SizeOf (typeof (Guid));
-                       }
-
-                       if (Value.GetType ().IsArray &&
-                           Value.GetType ().GetElementType () == typeof (byte))
-                               return ((Array) Value).Length;
-                       
-                       return Value.ToString ().Length;
-               }
-
-               private void AllocateBuffer ()
-               {
-                       int size = GetNativeSize ();
-
-                       if (_nativeBuffer.Size == size)
-                               return;
-
-                       _nativeBuffer.AllocBuffer (size);
-               }
-
-               internal void CopyValue ()
-               {
-                       if (_nativeBuffer.Handle == IntPtr.Zero)
-                               return;
-
-                       if (Value is DBNull)
-                               return;
-                       
-                       DateTime dt;
-                       TextInfo ti = CultureInfo.InvariantCulture.TextInfo;
-                       Encoding enc = Encoding.GetEncoding (ti.ANSICodePage);
-                       byte [] nativeBytes, buffer;
-
-                       switch (_typeMap.OdbcType) {
-                       case OdbcType.Bit:
-                               Marshal.WriteByte (_nativeBuffer, Convert.ToByte (Value));
-                               return;
-                       case OdbcType.Double:
-                               Marshal.StructureToPtr (Convert.ToDouble (Value), _nativeBuffer, false);
-                               return;
-                       case OdbcType.Real:
-                               Marshal.StructureToPtr (Convert.ToSingle (Value), _nativeBuffer, false);
-                               return;
-                       case OdbcType.Int:
-                               Marshal.WriteInt32 (_nativeBuffer, Convert.ToInt32 (Value));
-                               return;
-                       case OdbcType.BigInt:
-                               Marshal.WriteInt64 (_nativeBuffer, Convert.ToInt64 (Value));
-                               return;
-                       case OdbcType.Decimal:
-                       case OdbcType.Numeric:
-                               // for numeric, the buffer is a packed decimal struct.
-                               // ref http://www.it-faq.pl/mskb/181/254.HTM
-                               int [] bits = Decimal.GetBits (Convert.ToDecimal (Value));
-                               buffer = new byte [19]; // ref sqltypes.h
-                               buffer [0] = Precision;
-                               buffer [1] = (byte) ((bits [3] & 0x00FF0000) >> 16); // scale
-                               buffer [2] = (byte) ((bits [3] & 0x80000000) > 0 ? 2 : 1); //sign
-                               Buffer.BlockCopy (bits, 0, buffer, 3, 12); // copy data
-                               for (int j = 16; j < 19; j++) // pad with 0
-                                       buffer [j] = 0;
-                               Marshal.Copy (buffer, 0, _nativeBuffer, 19); 
-                               return; 
-                       case OdbcType.SmallInt:
-                               Marshal.WriteInt16 (_nativeBuffer, Convert.ToInt16 (Value));
-                               return;
-                       case OdbcType.TinyInt:
-                               Marshal.WriteByte (_nativeBuffer, Convert.ToByte (Value));
-                               return;
-                       case OdbcType.Char:
-                       case OdbcType.Text:
-                       case OdbcType.VarChar:
-                               buffer = new byte [GetNativeSize ()];
-                               nativeBytes = enc.GetBytes (Convert.ToString (Value));
-                               Array.Copy (nativeBytes, 0, buffer, 0, nativeBytes.Length);
-                               buffer [buffer.Length-1] = (byte) 0;
-                               Marshal.Copy (buffer, 0, _nativeBuffer, buffer.Length);
-                               Marshal.WriteInt32 (_cbLengthInd, -3);
-                               return;
-                       case OdbcType.NChar:
-                       case OdbcType.NText:
-                       case OdbcType.NVarChar:
-                               // FIXME : change to unicode
-                               buffer = new byte [GetNativeSize ()];
-                               nativeBytes = enc.GetBytes (Convert.ToString (Value));
-                               Array.Copy (nativeBytes, 0, buffer, 0, nativeBytes.Length);
-                               buffer [buffer.Length-1] = (byte) 0;
-                               Marshal.Copy (buffer, 0, _nativeBuffer, buffer.Length);
-                               Marshal.WriteInt32 (_cbLengthInd, -3);
-                               return;
-                       case OdbcType.VarBinary:
-                       case OdbcType.Image:
-                       case OdbcType.Binary:
-                               if (Value.GetType ().IsArray &&
-                                   Value.GetType ().GetElementType () == typeof (byte)) {
-                                       Marshal.Copy ( (byte []) Value, 0, _nativeBuffer, ((byte []) Value).Length);
-                               }else
-                                       throw new ArgumentException ("Unsupported Native Type!");
-                               return;
-                       case OdbcType.Date:
-                               dt = (DateTime) Value;
-                               Marshal.WriteInt16 (_nativeBuffer, 0, (short) dt.Year);
-                               Marshal.WriteInt16 (_nativeBuffer, 2, (short) dt.Month);
-                               Marshal.WriteInt16 (_nativeBuffer, 4, (short) dt.Day);
-                               return;
-                       case OdbcType.Time:
-                               dt = (DateTime) Value;
-                               Marshal.WriteInt16 (_nativeBuffer, 0, (short) dt.Hour);
-                               Marshal.WriteInt16 (_nativeBuffer, 2, (short) dt.Minute);
-                               Marshal.WriteInt16 (_nativeBuffer, 4, (short) dt.Second);
-                               return;
-                       case OdbcType.SmallDateTime:
-                       case OdbcType.Timestamp:
-                       case OdbcType.DateTime:
-                               dt = (DateTime) Value;
-                               Marshal.WriteInt16 (_nativeBuffer, 0, (short) dt.Year);
-                               Marshal.WriteInt16 (_nativeBuffer, 2, (short) dt.Month);
-                               Marshal.WriteInt16 (_nativeBuffer, 4, (short) dt.Day);
-                               Marshal.WriteInt16 (_nativeBuffer, 6, (short) dt.Hour);
-                               Marshal.WriteInt16 (_nativeBuffer, 8, (short) dt.Minute);
-                               Marshal.WriteInt16 (_nativeBuffer, 10, (short) dt.Second);
-                               Marshal.WriteInt32 (_nativeBuffer, 12, (int) (dt.Ticks % 10000000) * 100);
-                               return;
-                       case OdbcType.UniqueIdentifier:
-                               throw new NotImplementedException ();
-                       }
-
-                       if (Value.GetType ().IsArray &&
-                           Value.GetType ().GetElementType () == typeof (byte)) {
-                               Marshal.Copy ( (byte []) Value, 0, _nativeBuffer, ((byte []) Value).Length);
-                       }else
-                               throw new ArgumentException ("Unsupported Native Type!");
-               }
-
-               public override bool SourceColumnNullMapping {
-                       get { return false; }
-                       set { }
-               }
-
-               public override void ResetDbType ()
-               {
-                       _typeMap = OdbcTypeConverter.GetTypeMap (OdbcType.NVarChar);
-               }
-
-               public void ResetOdbcType ()
-               {
-                       _typeMap = OdbcTypeConverter.GetTypeMap (OdbcType.NVarChar);
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcParameterCollection.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcParameterCollection.cs
deleted file mode 100644 (file)
index 529a272..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-//
-// System.Data.Odbc.OdbcParameterCollection
-//
-// Authors:
-//   Brian Ritchie (brianlritchie@hotmail.com) 
-//   Umadevi S (sumadevi@novell.com)
-//   Amit Biswas (amit@amitbiswas.com)
-//
-// Copyright (C) Brian Ritchie, 2002
-// Copyright (C) Novell,Inc 
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{
-       [ListBindable (false)]
-       [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBParametersEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-       public sealed class OdbcParameterCollection : DbParameterCollection
-       {
-               #region Fields
-
-               readonly ArrayList list = new ArrayList ();
-               int nullParamCount = 1;
-
-               #endregion // Fields
-       
-               #region Constructors
-
-               internal OdbcParameterCollection ()
-               {
-               }
-
-               #endregion // Constructors
-       
-               #region Properties
-
-               public
-               override
-               int Count {
-                       get { return list.Count; }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public new OdbcParameter this [int index] {
-                       get { return (OdbcParameter) list [index]; }
-                       set { list [index] = value; }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public new OdbcParameter this [string parameterName] {
-                       get {
-                               foreach (OdbcParameter p in list)
-                                       if (p.ParameterName.Equals (parameterName))
-                                               return p;
-                               throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
-                       }
-                       set {
-                               if (!Contains (parameterName))
-                                       throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
-                               this [IndexOf (parameterName)] = value;
-                       }
-               }
-
-               public override bool IsFixedSize {
-                       get { return false; }
-               }
-
-               public override bool IsReadOnly {
-                       get { return false; }
-               }
-
-               public override bool IsSynchronized {
-                       get { return list.IsSynchronized; }
-               }
-
-               public override object SyncRoot {
-                       get { return list.SyncRoot; }
-               }
-               
-
-               #endregion // Properties
-
-               #region Methods
-
-               [EditorBrowsableAttribute (EditorBrowsableState.Never)]
-               public
-               override
-               int Add (object value)
-               {
-                       if (!(value is OdbcParameter))
-                               throw new InvalidCastException ("The parameter was not an OdbcParameter.");
-                       Add ((OdbcParameter) value);
-                       return IndexOf (value);
-               }
-
-               public OdbcParameter Add (OdbcParameter value)
-               {
-                       if (value.Container != null)
-                               throw new ArgumentException ("The OdbcParameter specified in " +
-                                                            "the value parameter is already " +
-                                                            "added to this or another OdbcParameterCollection.");
-                       if (value.ParameterName == null || value.ParameterName.Length == 0) {
-                               value.ParameterName = "Parameter" + nullParamCount;
-                               nullParamCount++;
-                       }
-                       value.Container = this;
-                       list.Add (value);
-                       return value;
-               }
-
-               [EditorBrowsableAttribute (EditorBrowsableState.Never)]
-               [Obsolete ("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).")]
-               public OdbcParameter Add (string parameterName, object value)
-               {
-                       return Add (new OdbcParameter (parameterName, value));
-               }
-
-               public OdbcParameter Add (string parameterName, OdbcType odbcType)
-               {
-                       return Add (new OdbcParameter (parameterName, odbcType));
-               }
-
-               public OdbcParameter Add (string parameterName, OdbcType odbcType, int size)
-               {
-                       return Add (new OdbcParameter (parameterName, odbcType, size));
-               }
-
-               public OdbcParameter Add (string parameterName, OdbcType odbcType,
-                                          int size, string sourceColumn)
-               {
-                       return Add (new OdbcParameter (parameterName, odbcType,
-                               size, sourceColumn));
-               }
-
-               public
-               override
-               void Clear()
-               {
-                       foreach (OdbcParameter p in list)
-                               p.Container = null;
-                       list.Clear ();
-               }
-
-               public
-               override
-               bool Contains (object value)
-               {
-                       if (value == null)
-                               //should not throw ArgumentNullException
-                               return false;
-                       if (!(value is OdbcParameter))
-                               throw new InvalidCastException ("The parameter was not an OdbcParameter.");
-                       return Contains (((OdbcParameter) value).ParameterName);
-               }
-
-               public
-               override
-               bool Contains (string value)
-               {
-                       if (value == null || value.Length == 0)
-                               //should not throw ArgumentNullException
-                               return false;
-                       string value_upper = value.ToUpper ();
-                       foreach (OdbcParameter p in this)
-                               if (p.ParameterName.ToUpper ().Equals (value_upper))
-                                       return true;
-                       return false;
-               }
-
-               public
-               override
-               void CopyTo (Array array, int index)
-               {
-                       list.CopyTo (array, index);
-               }
-
-               public
-               override
-               IEnumerator GetEnumerator()
-               {
-                       return list.GetEnumerator ();
-               }
-
-               public
-               override
-               int IndexOf (object value)
-               {
-                       if (value == null)
-                               return -1;
-                       if (!(value is OdbcParameter))
-                               throw new InvalidCastException ("The parameter was not an OdbcParameter.");
-                       return list.IndexOf (value);
-               }
-
-               public
-               override
-               int IndexOf (string parameterName)
-               {
-                       if (parameterName == null || parameterName.Length == 0)
-                               return -1;
-                       string parameterName_upper = parameterName.ToUpper ();
-                       for (int i = 0; i < Count; i += 1)
-                               if (this [i].ParameterName.ToUpper ().Equals (parameterName_upper))
-                                       return i;
-                       return -1;
-               }
-
-               public
-               override
-               void Insert (int index, object value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       if (!(value is OdbcParameter))
-                               throw new InvalidCastException ("The parameter was not an OdbcParameter.");
-                       Insert (index, (OdbcParameter) value);
-               }
-
-               public
-               override
-               void Remove (object value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       if (!(value is OdbcParameter))
-                               throw new InvalidCastException ("The parameter was not an OdbcParameter.");
-                       Remove ((OdbcParameter) value);
-               }
-
-               public
-               override
-               void RemoveAt (int index)
-               {
-                       if (index >= list.Count || index < 0)
-                               throw new IndexOutOfRangeException (String.Format ("Invalid index {0} for this OdbcParameterCollection with count = {1}", index, list.Count));
-                       this [index].Container = null;
-                       list.RemoveAt (index);
-               }
-
-               public
-               override
-               void RemoveAt (string parameterName)
-               {
-                       RemoveAt (IndexOf (parameterName));
-               }
-
-               protected override DbParameter GetParameter (string parameterName)
-               {
-                       return this [parameterName];
-               }
-
-               protected override DbParameter GetParameter (int index)
-               {
-                       return this [index];
-               }
-
-               protected override void SetParameter (string parameterName, DbParameter value)
-               {
-                       this [parameterName] = (OdbcParameter) value;
-               }
-
-               protected override void SetParameter (int index, DbParameter value)
-               {
-                       this [index] = (OdbcParameter) value;
-               }
-
-
-               public override void AddRange (Array values)
-               {
-                       if (values == null)
-                               throw new ArgumentNullException ("values");
-                       foreach (OdbcParameter p in values)
-                               if (p == null)
-                                       throw new ArgumentNullException ("values", "The OdbcParameterCollection only accepts non-null OdbcParameter type objects");
-                       // no need to check if parameter is already contained
-                       foreach (OdbcParameter p in values)
-                               Add (p);
-               }
-
-               public void AddRange (OdbcParameter [] values)
-               {
-                       AddRange ((Array) values);
-               }
-
-               public void Insert (int index, OdbcParameter value)
-               {
-                       if (index > list.Count || index < 0)
-                               throw new ArgumentOutOfRangeException ("index", "The index must be non-negative and less than or equal to size of the collection");
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       if (value.Container != null)
-                               throw new ArgumentException ("The OdbcParameter is already contained by another collection");
-                       if (String.IsNullOrEmpty (value.ParameterName)) {
-                               value.ParameterName = "Parameter" + nullParamCount;
-                               nullParamCount++;
-                       }
-                       value.Container = this;
-                       list.Insert (index, value);
-               }
-
-               public OdbcParameter AddWithValue (string parameterName, Object value)
-               {
-                       if (value == null)
-                               return Add (new OdbcParameter (parameterName, OdbcType.NVarChar));
-                       return Add (new OdbcParameter (parameterName, value));
-               }
-
-               public void Remove (OdbcParameter value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       if (value.Container != this)
-                               throw new ArgumentException ("values", "Attempted to remove an OdbcParameter that is not contained in this OdbcParameterCollection");
-                       value.Container = null;
-                       list.Remove (value);
-               }
-
-               public bool Contains (OdbcParameter value)
-               {
-                       if (value == null)
-                               //should not throw ArgumentNullException
-                               return false;
-                       if (value.Container != this)
-                               return false;
-                       return Contains (value.ParameterName);
-               }
-
-               public int IndexOf (OdbcParameter value)
-               {
-                       if (value == null)
-                               //should not throw ArgumentNullException
-                               return -1;
-                       return IndexOf ((Object) value);
-               }
-
-               public void CopyTo (OdbcParameter [] array, int index)
-               {
-                       list.CopyTo (array, index);
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcParameterConverter.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcParameterConverter.cs
deleted file mode 100644 (file)
index fba9c51..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// System.Data.Odbc.OdbcParameterConverter.cs
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-
-namespace System.Data.Odbc {
-       internal sealed class OdbcParameterConverter : ExpandableObjectConverter
-       {
-               #region Constructors
-
-               [MonoTODO]
-               public OdbcParameterConverter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-       
-               [MonoTODO]
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatedEventArgs.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatedEventArgs.cs
deleted file mode 100644 (file)
index 0c2c999..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.Odbc.OdbcRowUpdatedEventArgs.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc {
-       public sealed class OdbcRowUpdatedEventArgs : RowUpdatedEventArgs 
-       {
-               #region Constructors
-
-               public OdbcRowUpdatedEventArgs (DataRow row, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
-                       : base (row, command, statementType, tableMapping)
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public new OdbcCommand Command {
-                       get { return (OdbcCommand) base.Command; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatedEventHandler.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatedEventHandler.cs
deleted file mode 100644 (file)
index 49a704e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Data.Odbc.OdbcRowUpdatedEventHandler.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//
-// (C) Ximian, Inc 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data.Odbc {
-       public delegate void OdbcRowUpdatedEventHandler (object sender, OdbcRowUpdatedEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatingEventArgs.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatingEventArgs.cs
deleted file mode 100644 (file)
index 96ca40c..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// System.Data.Odbc.OdbcRowUpdatingEventArgs.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc {
-       public sealed class OdbcRowUpdatingEventArgs : RowUpdatingEventArgs
-       {
-               #region Constructors
-
-               public OdbcRowUpdatingEventArgs (DataRow row, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) 
-                       : base (row, command, statementType, tableMapping)
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public new OdbcCommand Command {
-                       get { return (OdbcCommand) base.Command; }
-                       set { base.Command = value; }
-               }
-
-               protected override IDbCommand BaseCommand {
-                       get { return base.Command; }    
-                       set { base.Command = value; }
-               }
-
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatingEventHandler.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcRowUpdatingEventHandler.cs
deleted file mode 100644 (file)
index 4c38050..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Data.Odbc.OdbcRowUpdatingEventHandler.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//
-// (C) Ximian, Inc 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data.Odbc {
-       public delegate void OdbcRowUpdatingEventHandler(object sender, OdbcRowUpdatingEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcTransaction.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcTransaction.cs
deleted file mode 100644 (file)
index 13b28a6..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-//
-// System.Data.Odbc.OdbcTransaction
-//
-// Authors:
-//  Brian Ritchie (brianlritchie@hotmail.com) 
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Globalization;
-
-namespace System.Data.Odbc
-{
-       public sealed class OdbcTransaction : DbTransaction, IDisposable
-       {
-               private bool disposed;
-               private OdbcConnection connection;
-               private IsolationLevel isolationlevel;
-               private bool isOpen;
-
-               internal OdbcTransaction (OdbcConnection conn, IsolationLevel isolationlevel)
-               {
-                       // Set Auto-commit (102) to false
-                       SetAutoCommit (conn, false);
-                       // Handle isolation level
-                       OdbcIsolationLevel lev = OdbcIsolationLevel.ReadCommitted;
-                       OdbcConnectionAttribute attr = OdbcConnectionAttribute.TransactionIsolation;
-                       switch (isolationlevel) {
-                       case IsolationLevel.ReadUncommitted:
-                               lev = OdbcIsolationLevel.ReadUncommitted;
-                               break;
-                       case IsolationLevel.ReadCommitted:
-                               lev = OdbcIsolationLevel.ReadCommitted;
-                               break;
-                       case IsolationLevel.RepeatableRead:
-                               lev = OdbcIsolationLevel.RepeatableRead;
-                               break;
-                       case IsolationLevel.Serializable:
-                               lev = OdbcIsolationLevel.Serializable;
-                               break;
-                       case IsolationLevel.Snapshot:
-                               // badly broken on MS:
-                               // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=305736
-                               lev = OdbcIsolationLevel.Snapshot;
-
-                               // SQL_ATTR_TXN_ISOLATION can be used to set all other isolation
-                               // levels except for SQL_TXN_SS_SNAPSHOT. If you want to use snapshot
-                               // isolation, you must set SQL_TXN_SS_SNAPSHOT through
-                               // SQL_COPT_SS_TXN_ISOLATION. However, you can retrieve the
-                               // isolation level by using either SQL_ATTR_TXN_ISOLATION or
-                               // SQL_COPT_SS_TXN_ISOLATION.
-                               // Source:
-                               // http://msdn2.microsoft.com/en-us/library/ms131709.aspx
-                               attr = OdbcConnectionAttribute.CoptTransactionIsolation;
-                               break;
-                       case IsolationLevel.Unspecified:
-                               // when isolationlevel is not specified, then use
-                               // default isolation level of the driver and
-                               // lazy initialize it in the IsolationLevel property
-                               break;
-                       case IsolationLevel.Chaos:
-                               throw new ArgumentOutOfRangeException ("IsolationLevel",
-                                       string.Format (CultureInfo.CurrentCulture,
-                                               "The IsolationLevel enumeration " +
-                                               "value, {0}, is not supported by " +
-                                               "the .Net Framework Odbc Data " +
-                                               "Provider.", (int) isolationlevel));
-                       default:
-                               throw new ArgumentOutOfRangeException ("IsolationLevel",
-                                       string.Format (CultureInfo.CurrentCulture,
-                                               "The IsolationLevel enumeration value, {0}, is invalid.",
-                                               (int) isolationlevel));
-                       }
-
-                       // only change isolation level if it was explictly set
-                       if (isolationlevel != IsolationLevel.Unspecified) {
-                               // mbd: Getting the return code of the second call to SQLSetConnectAttr is missing from original code!
-                               OdbcReturn ret = libodbc.SQLSetConnectAttr (conn.hDbc,
-                                       attr, (IntPtr) lev, 0);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw conn.CreateOdbcException (OdbcHandleType.Dbc, conn.hDbc);
-                       }
-                       this.isolationlevel = isolationlevel;
-                       connection = conn;
-                       isOpen = true;
-               }
-
-               // Set Auto-commit (102) connection attribute
-               // [MonoTODO]: nice to have before svn: define libodbc.SQL_IS_UINTEGER = -5
-               private static void SetAutoCommit (OdbcConnection conn, bool isAuto)
-               {
-                       OdbcReturn ret = libodbc.SQLSetConnectAttr (conn.hDbc,
-                               OdbcConnectionAttribute.AutoCommit,
-                               (IntPtr) (isAuto ? 1 : 0), -5);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               throw conn.CreateOdbcException (OdbcHandleType.Dbc, conn.hDbc);
-               }
-
-               private static IsolationLevel GetIsolationLevel (OdbcConnection conn)
-               {
-                       int lev;
-                       int length;
-                       OdbcReturn ret = libodbc.SQLGetConnectAttr (conn.hDbc,
-                               OdbcConnectionAttribute.TransactionIsolation,
-                               out lev, 0, out length);
-                       if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                               throw conn.CreateOdbcException (OdbcHandleType.Dbc, conn.hDbc);
-                       return MapOdbcIsolationLevel ((OdbcIsolationLevel) lev);
-               }
-
-               private static IsolationLevel MapOdbcIsolationLevel (OdbcIsolationLevel odbcLevel)
-               {
-                       IsolationLevel isoLevel = IsolationLevel.Unspecified;
-
-                       switch (odbcLevel) {
-                       case OdbcIsolationLevel.ReadUncommitted:
-                               isoLevel = IsolationLevel.ReadUncommitted;
-                               break;
-                       case OdbcIsolationLevel.ReadCommitted:
-                               isoLevel = IsolationLevel.ReadCommitted;
-                               break;
-                       case OdbcIsolationLevel.RepeatableRead:
-                               isoLevel = IsolationLevel.RepeatableRead;
-                               break;
-                       case OdbcIsolationLevel.Serializable:
-                               isoLevel = IsolationLevel.Serializable;
-                               break;
-                       case OdbcIsolationLevel.Snapshot:
-                               isoLevel = IsolationLevel.Snapshot;
-                               break;
-                       }
-                       return isoLevel;
-               }
-
-               #region Implementation of IDisposable
-
-               protected override
-               void Dispose (bool disposing)
-               {
-                       if (!disposed) {
-                               if (disposing && isOpen)
-                                       Rollback ();
-                               disposed = true;
-                       }
-               }
-
-               void IDisposable.Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);
-               }
-
-               #endregion Implementation of IDisposable
-
-               #region Implementation of IDbTransaction
-
-               public
-               override
-               void Commit ()
-               {
-                       if (!isOpen)
-                               throw ExceptionHelper.TransactionNotUsable (GetType ());
-
-                       if (connection.transaction == this) {
-                               OdbcReturn ret = libodbc.SQLEndTran ((short) OdbcHandleType.Dbc, connection.hDbc, 0);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw connection.CreateOdbcException (OdbcHandleType.Dbc, connection.hDbc);
-                               SetAutoCommit (connection, true); // restore default auto-commit
-                               connection.transaction = null;
-                               connection = null;
-                               isOpen = false;
-                       } else
-                               throw new InvalidOperationException ();
-               }
-
-               public
-               override
-               void Rollback()
-               {
-                       if (!isOpen)
-                               throw ExceptionHelper.TransactionNotUsable (GetType ());
-
-                       if (connection.transaction == this) {
-                               OdbcReturn ret = libodbc.SQLEndTran ((short) OdbcHandleType.Dbc, connection.hDbc, 1);
-                               if (ret != OdbcReturn.Success && ret != OdbcReturn.SuccessWithInfo)
-                                       throw connection.CreateOdbcException (OdbcHandleType.Dbc, connection.hDbc);
-                               SetAutoCommit (connection, true);    // restore default auto-commit
-                               connection.transaction = null;
-                               connection = null;
-                               isOpen = false;
-                       } else
-                               throw new InvalidOperationException ();
-               }
-
-               protected override DbConnection DbConnection {
-                       get {
-                               return Connection;
-                       }
-               }
-
-               public
-               override
-               IsolationLevel IsolationLevel {
-                       get {
-                               if (!isOpen)
-                                       throw ExceptionHelper.TransactionNotUsable (GetType ());
-
-                               if (isolationlevel == IsolationLevel.Unspecified)
-                                       isolationlevel = GetIsolationLevel (Connection);
-                               return isolationlevel;
-                       }
-               }
-
-               #endregion Implementation of IDbTransaction
-
-               #region Public Instance Properties
-
-               public new OdbcConnection Connection {
-                       get {
-                               return connection;
-                       }
-               }
-
-               #endregion Public Instance Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcType.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcType.cs
deleted file mode 100644 (file)
index 36cc0e8..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// System.Data.Odbc.OdbcType
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com> 2005.
-//   Brian Ritchie
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{ 
-
-        public enum OdbcType
-        {
-                BigInt = 1,
-                Binary = 2,
-                Bit = 3,
-                Char = 4,
-                Date = 0x17,
-                DateTime = 5,
-                Decimal = 6,
-                Double = 8,
-                Image = 9,
-                Int = 10,
-                NChar = 11,
-                NText = 12,
-                Numeric = 7,
-                NVarChar = 13,
-                Real = 14,
-                SmallDateTime = 0x10,
-                SmallInt = 0x11,
-                Text = 0x12,
-                Time = 0x18,
-                Timestamp = 0x13,
-                TinyInt = 20,
-                UniqueIdentifier = 15,
-                VarBinary = 0x15,
-                VarChar = 0x16
-        }
-
-        // From the ODBC documentation:
-        //
-        //     In ODBC 3.x, the identifiers for date, time, and timestamp SQL data types 
-        //  have changed from SQL_DATE, SQL_TIME, and SQL_TIMESTAMP (with instances of 
-        //  #define in the header file of 9, 10, and 11) to SQL_TYPE_DATE, SQL_TYPE_TIME,
-        //  and SQL_TYPE_TIMESTAMP (with instances of #define in the header file of 91, 92, and 93), 
-        //  respectively.
-        
-        // This internal enum is used as mapping types into database drivers.
-        // This is essentially a map between public OdbcType to C types for 
-        // Odbc to call into driver. These values are taken from sql.h & sqlext.h.
-        internal enum SQL_TYPE : short
-        {
-                BIGINT                         = (-5),
-                BINARY                         = (-2),
-                BIT                            = (-7),
-                CHAR                           = 1,
-                DATE                           = 9,
-                DECIMAL                         = 3,
-                DOUBLE                         = 8,
-                GUID                           = (-11),
-                INTEGER                                = 4,
-                INTERVAL_DAY                   = (100 + 3),
-                INTERVAL_DAY_TO_HOUR           = (100 + 8),
-                INTERVAL_DAY_TO_MINUTE         = (100 + 9),
-                INTERVAL_DAY_TO_SECOND         = (100 + 10),
-                INTERVAL_HOUR                  = (100 + 4),
-                INTERVAL_HOUR_TO_MINUTE                = (100 + 11),
-                INTERVAL_HOUR_TO_SECOND                = (100 + 12),
-                INTERVAL_MINUTE                        = (100 + 5),
-                INTERVAL_MINUTE_TO_SECOND      = (100 + 13),
-                INTERVAL_MONTH                 = (100 + 2),
-                INTERVAL_SECOND                        = (100 + 6),
-                INTERVAL_YEAR                  = (100 + 1),
-                INTERVAL_YEAR_TO_MONTH         = (100 + 7),
-                LONGVARBINARY                   = (-4),
-                LONGVARCHAR                     = (-1),
-                NUMERIC                         = 2,
-                REAL                           = 7,
-                SMALLINT                       = 5,
-                TIME                           = 10,
-                TIMESTAMP                      = 11,
-                TINYINT                                = (-6),
-                TYPE_DATE                      = 91,
-                TYPE_TIME                      = 92,
-                TYPE_TIMESTAMP                 = 93,
-                VARBINARY                       = (-3),
-                VARCHAR                         = 12,
-                WCHAR                          = (-8),
-                WLONGVARCHAR                    = (-10),
-                WVARCHAR                        = (-9),
-                UNASSIGNED                      = Int16.MaxValue
-        }
-
-        internal enum SQL_C_TYPE : short
-        {
-                BINARY                         = (-2),
-                BIT                            = (-7),
-                BOOKMARK                       = (4 +(-22)),
-                CHAR                           = 1,
-                DATE                           = 9,
-                DEFAULT                                = 99,
-                DOUBLE                         = 8,
-                FLOAT                          = 7,
-                GUID                           = (-11),
-                INTERVAL_DAY                   = (100 + 3),
-                INTERVAL_DAY_TO_HOUR           = (100 + 8),
-                INTERVAL_DAY_TO_MINUTE         = (100 + 9),
-                INTERVAL_DAY_TO_SECOND         = (100 + 10),
-                INTERVAL_HOUR                  = (100 + 4),
-                INTERVAL_HOUR_TO_MINUTE                = (100 + 11),
-                INTERVAL_HOUR_TO_SECOND                = (100 + 12),
-                INTERVAL_MINUTE                        = (100 + 5),
-                INTERVAL_MINUTE_TO_SECOND      = (100 + 13),
-                INTERVAL_MONTH                 = (100 + 2),
-                INTERVAL_SECOND                        = (100 + 6),
-                INTERVAL_YEAR                  = (100 + 1),
-                INTERVAL_YEAR_TO_MONTH         = (100 + 7),
-                LONG                           = 4,
-                NUMERIC                                = 2,
-                SBIGINT                                = ((-5)+(-20)),
-                SHORT                          = 5,
-                SLONG                          = (4 +(-20)),
-                SSHORT                         = (5 +(-20)),
-                STINYINT                       = ((-6)+(-20)),
-                TCHAR                          = 1,
-                TIME                           = 10,
-                TIMESTAMP                      = 11,
-                TINYINT                                = (-6),
-                TYPE_DATE                      = 91,
-                TYPE_TIME                      = 92,
-                TYPE_TIMESTAMP                 = 93,
-                UBIGINT                                = ((-5)+(-22)),
-                ULONG                          = (4 +(-22)),
-                USHORT                         = (5 +(-22)),
-                UTINYINT                       = ((-6)+(-22)),
-                WCHAR                          = (-8),
-                UNASSIGNED                      = Int16.MaxValue
-        }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcTypeConverter.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcTypeConverter.cs
deleted file mode 100644 (file)
index aeaecdf..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-// OdbcTypeConvert.cs : helps conversion between various odbc types.
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-//
-//
-// For mapping between types, refer OdbcTypeMap.cs
-//
-//
-
-
-using System.Data;
-using System.Collections;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{ 
-       internal class OdbcTypeConverter  
-       {
-               public static OdbcTypeMap GetTypeMap (OdbcType odbcType)
-               {
-                       return (OdbcTypeMap) OdbcTypeMap.Maps [odbcType];
-               }
-
-               public static OdbcTypeMap InferFromValue (object value)
-               {
-
-                       if (value.GetType ().IsArray)
-                               if (value.GetType ().GetElementType () == typeof (byte))
-                                       return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Binary];
-                               else
-                                       return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.VarChar]; // change
-
-                       switch (Type.GetTypeCode (value.GetType ())) {
-                       case TypeCode.Empty:
-                       case TypeCode.Object:
-                       case TypeCode.DBNull:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.NVarChar];  //Default to NVarChar as in MS.net. OdbcParameter.Bind() will take care.
-                       case TypeCode.Boolean:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Bit];
-                       case TypeCode.Char:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Char];
-                       case TypeCode.SByte:
-                               throw new ArgumentException ("infering OdbcType from SByte is not supported");
-                       case TypeCode.Byte:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.TinyInt];
-                       case TypeCode.Int16:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.SmallInt];
-                       case TypeCode.UInt16:
-                       case TypeCode.Int32:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Int];
-                       case TypeCode.UInt32:
-                       case TypeCode.Int64:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.BigInt];
-                       case TypeCode.UInt64:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Numeric];
-                       case TypeCode.Single:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Real];
-                       case TypeCode.Double:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Double];
-                       case TypeCode.Decimal:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Numeric];
-                       case TypeCode.DateTime:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.DateTime];
-                       case TypeCode.String:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.NVarChar];
-                       }
-
-                       // FIXME : Guid
-                       // FIXME : TimeSpan
-                       // FIXME : DateTime
-
-                       return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.VarChar];
-               }
-
-               public static OdbcTypeMap GetTypeMap (SQL_TYPE sqlType) 
-               {
-                       switch (sqlType) {
-                       case SQL_TYPE.BINARY:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Binary];
-                       case SQL_TYPE.BIT:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Bit];
-                       case SQL_TYPE.CHAR:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Char];
-                       case SQL_TYPE.DATE:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Date];
-                       case SQL_TYPE.DECIMAL:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Decimal];
-                       case SQL_TYPE.DOUBLE:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Double];
-                       case SQL_TYPE.GUID:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.UniqueIdentifier];
-                       case SQL_TYPE.INTEGER:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Int];
-                       case SQL_TYPE.INTERVAL_DAY:
-                       case SQL_TYPE.INTERVAL_DAY_TO_HOUR:
-                       case SQL_TYPE.INTERVAL_DAY_TO_MINUTE:
-                       case SQL_TYPE.INTERVAL_DAY_TO_SECOND:
-                       case SQL_TYPE.INTERVAL_HOUR:
-                       case SQL_TYPE.INTERVAL_HOUR_TO_MINUTE:
-                       case SQL_TYPE.INTERVAL_HOUR_TO_SECOND:
-                       case SQL_TYPE.INTERVAL_MINUTE:
-                       case SQL_TYPE.INTERVAL_MINUTE_TO_SECOND:
-                       case SQL_TYPE.INTERVAL_MONTH:
-                       case SQL_TYPE.INTERVAL_SECOND:
-                       case SQL_TYPE.INTERVAL_YEAR:
-                       case SQL_TYPE.INTERVAL_YEAR_TO_MONTH:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.DateTime];
-                       case SQL_TYPE.LONGVARBINARY:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Image];
-                       case SQL_TYPE.LONGVARCHAR:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Text];
-                       case SQL_TYPE.NUMERIC:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Numeric];
-                       case SQL_TYPE.REAL:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Real];
-                       case SQL_TYPE.SMALLINT:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.SmallInt];
-                       case SQL_TYPE.TYPE_TIME:
-                       case SQL_TYPE.TIME:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.Time];
-                       case SQL_TYPE.TIMESTAMP:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.DateTime];
-                       case SQL_TYPE.TINYINT:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.TinyInt];
-                       case SQL_TYPE.TYPE_DATE:
-                       case SQL_TYPE.TYPE_TIMESTAMP:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.DateTime];
-                       case SQL_TYPE.VARBINARY:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.VarBinary];
-                       case SQL_TYPE.VARCHAR:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.VarChar];
-                       case SQL_TYPE.WCHAR:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.NChar];
-                       case SQL_TYPE.WLONGVARCHAR:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.NText];
-                       case SQL_TYPE.WVARCHAR:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.NVarChar];
-                       case SQL_TYPE.UNASSIGNED:
-                               return (OdbcTypeMap)  OdbcTypeMap.Maps [OdbcType.VarChar];
-                       }
-                       return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.VarChar];
-               }
-
-               public static OdbcTypeMap GetTypeMap (DbType dbType) 
-               {
-                       switch (dbType) {
-                       case DbType.AnsiString:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.VarChar];
-                       case DbType.Binary:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Binary];
-                       case DbType.Byte:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.TinyInt];
-                       case DbType.Boolean:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Bit];
-                       case DbType.Currency:
-                               throw new NotSupportedException ("Infering OdbcType from DbType.Currency is not" +
-                                                                " supported");
-                       case DbType.Date:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Date];
-                       case DbType.DateTime:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.DateTime];
-                       case DbType.Decimal:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Numeric];
-                       case DbType.Double:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Double];
-                       case DbType.Guid:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.UniqueIdentifier];
-                       case DbType.Int16:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.SmallInt];
-                       case DbType.Int32:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Int];
-                       case DbType.Int64:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.BigInt];
-                       case DbType.Object:
-                               throw new NotSupportedException ("Infering OdbcType from DbType.Object is not" +
-                                                                " supported");
-                       case DbType.SByte:
-                               throw new NotSupportedException ("Infering OdbcType from DbType.SByte is not" +
-                                                                " supported");
-                       case DbType.Single:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Real];
-                       case DbType.String:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.NVarChar];
-                       case DbType.Time:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Time];
-                       case DbType.UInt16:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Int];
-                       case DbType.UInt32:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.BigInt];
-                       case DbType.UInt64:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Numeric];
-                       case DbType.VarNumeric:
-                               throw new NotSupportedException ("Infering OdbcType from DbType.VarNumeric is not" +
-                                                                " supported");
-                       case DbType.AnsiStringFixedLength:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.Char];
-                       case DbType.StringFixedLength:
-                               return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.NChar];
-                       }
-                       return (OdbcTypeMap) OdbcTypeMap.Maps [OdbcType.VarChar];
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.Odbc/OdbcTypeMap.cs b/mcs/class/System.Data/System.Data.Odbc/OdbcTypeMap.cs
deleted file mode 100644 (file)
index daaa48b..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-//
-// OdbcTypeMap.cs : Mapping between different odbc types
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-//
-//
-// * Type mapping between various odbc driver types.
-// For further infomartion between these mapping visit following msdn site
-//
-//      * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/
-//        odbcc_data_types.asp
-//      * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/
-//        odbcconverting_data_from_c_to_sql_data_types.asp
-//      * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/
-//        odbcconverting_data_from_sql_to_c_data_types.asp
-//      * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/
-//        odbcparameter_data_types.asp
-//      * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/
-//        html/frlrfsystemdataodbcodbctypeclasstopic.asp
-//
-//
-// OdbcType             SQL_C_TYPE              SQL_TYPE
-// ===================================================================
-// BigInt              SQL_C_TYPE.SBIGINT      SQL_TYPE.BIGINT     
-// Binary              SQL_C_TYPE.BINARY       SQL_TYPE.BINARY     
-// Bit                 SQL_C_TYPE.BIT          SQL_TYPE.BIT        
-// Char                        SQL_C_TYPE.CHAR         SQL_TYPE.CHAR       
-// Date                        SQL_C_TYPE.TYPE_DATE    SQL_TYPE.TYPE_DATE  
-// DateTime            SQL_C_TYPE.TIMESTAMP    SQL_TYPE.TIMESTAMP  
-// Decimal             SQL_C_TYPE.NUMERIC      SQL_TYPE.NUMERIC    
-// Double              SQL_C_TYPE.DOUBLE       SQL_TYPE.DOUBLE     
-// Image               SQL_C_TYPE.BINARY       SQL_TYPE.BINARY     
-// Int                 SQL_C_TYPE.LONG         SQL_TYPE.INTEGER    
-// NChar               SQL_C_TYPE.WCHAR        SQL_TYPE.WCHAR      
-// NText               SQL_C_TYPE.WCHAR        SQL_TYPE.WLONGVARCHAR
-// Numeric             SQL_C_TYPE.NUMERIC      SQL_TYPE.NUMERIC    
-// NVarChar            SQL_C_TYPE.WCHAR        SQL_TYPE.WVARCHAR   
-// Real                        SQL_C_TYPE.FLOAT        SQL_TYPE.REAL       
-// SignedBigInt                SQL_C_TYPE.SBIGINT      SQL_TYPE.BIGINT     
-// SmallDateTime       SQL_C_TYPE.TIMESTAMP    SQL_TYPE.TIMESTAMP  
-// SmallInt            SQL_C_TYPE.SHORT        SQL_TYPE.SMALLINT   
-// Text                        SQL_C_TYPE.WCHAR        SQL_TYPE.LONGVARCHAR
-// Time                        SQL_C_TYPE.TYPE_TIME    SQL_TYPE.TYPE_TIME  
-// Timestamp           SQL_C_TYPE.BINARY       SQL_TYPE.BINARY     
-// TinyInt             SQL_C_TYPE.UTINYINT     SQL_TYPE.TINYINT    
-// UniqueIdentifier    SQL_C_TYPE.GUID         SQL_TYPE.GUID       
-// VarBinary           SQL_C_TYPE.BINARY       SQL_TYPE.VARBINARY  
-// VarChar             SQL_C_TYPE.WCHAR        SQL_TYPE.WVARCHAR   
-//====================================================================
-
-
-using System.Data;
-using System.Collections;
-using System.Data.Common;
-
-namespace System.Data.Odbc
-{ 
-       internal struct OdbcTypeMap
-       {
-               public DbType         DbType;
-               public OdbcType       OdbcType;
-               public SQL_C_TYPE     NativeType;
-               public SQL_TYPE       SqlType;
-
-               private static Hashtable maps = new Hashtable ();
-
-               public OdbcTypeMap (DbType dbType, OdbcType odbcType, 
-                               SQL_C_TYPE nativeType, SQL_TYPE sqlType)
-               {
-                       DbType          = dbType;
-                       OdbcType        = odbcType;
-                       SqlType         = sqlType;
-                       NativeType      = nativeType;
-               }
-
-
-               public static Hashtable Maps {
-                       get { return maps; }
-               }
-
-               static OdbcTypeMap ()
-               {
-                       maps [OdbcType.BigInt]    = new OdbcTypeMap (DbType.Int64,
-                                                                OdbcType.BigInt,
-                                                                SQL_C_TYPE.SBIGINT,
-                                                                SQL_TYPE.BIGINT);
-                       maps [OdbcType.Binary]    = new OdbcTypeMap (DbType.Binary,
-                                                                OdbcType.Binary,
-                                                                SQL_C_TYPE.BINARY,
-                                                                SQL_TYPE.BINARY);
-                       maps [OdbcType.Bit]       = new OdbcTypeMap (DbType.Boolean, 
-                                                                OdbcType.Bit,
-                                                                SQL_C_TYPE.BIT,
-                                                                SQL_TYPE.BIT);
-                       maps [OdbcType.Char]      = new OdbcTypeMap (DbType.String, 
-                                                                OdbcType.Char,
-                                                                SQL_C_TYPE.CHAR,
-                                                                SQL_TYPE.CHAR);
-                       maps [OdbcType.Date]      = new OdbcTypeMap (DbType.Date, 
-                                                                OdbcType.Date,
-                                                                SQL_C_TYPE.DATE,
-                                                                SQL_TYPE.DATE);
-                       maps [OdbcType.DateTime]  = new OdbcTypeMap (DbType.DateTime, 
-                                                                OdbcType.DateTime,
-                                                                SQL_C_TYPE.TIMESTAMP,
-                                                                SQL_TYPE.TIMESTAMP);
-                       maps [OdbcType.Decimal]   = new OdbcTypeMap (DbType.Decimal, 
-                                                                OdbcType.Decimal,
-                                                                SQL_C_TYPE.NUMERIC,
-                                                                SQL_TYPE.NUMERIC);
-                       maps [OdbcType.Double]    = new OdbcTypeMap (DbType.Double, 
-                                                                OdbcType.Double,
-                                                                SQL_C_TYPE.DOUBLE,
-                                                                SQL_TYPE.DOUBLE);
-                       maps [OdbcType.Image]     = new OdbcTypeMap (DbType.Binary, 
-                                                                OdbcType.Image,
-                                                                SQL_C_TYPE.BINARY,
-                                                                SQL_TYPE.BINARY);
-                       maps [OdbcType.Int]       = new OdbcTypeMap (DbType.Int32, 
-                                                                OdbcType.Int,
-                                                                SQL_C_TYPE.LONG,
-                                                                SQL_TYPE.INTEGER);
-                       maps [OdbcType.NChar]     = new OdbcTypeMap (DbType.String, 
-                                                                OdbcType.NChar,
-                                                                    SQL_C_TYPE.WCHAR,
-                                                                    SQL_TYPE.WCHAR);
-                       maps [OdbcType.NText]     = new OdbcTypeMap (DbType.String, 
-                                                                OdbcType.NText,
-                                                                    SQL_C_TYPE.WCHAR, // change
-                                                                    SQL_TYPE.WLONGVARCHAR); //change
-                       // Currently, NUMERIC types works only with NUMERIC SQL Type to CHAR C Type mapping (pgsql). Other databases return 
-                       // SQL_TYPE.DECIMAL in place of numeric types.
-                       maps [OdbcType.Numeric]   = new OdbcTypeMap (DbType.Decimal, 
-                                                                OdbcType.Numeric,
-                                                                SQL_C_TYPE.CHAR,
-                                                                SQL_TYPE.NUMERIC);
-                       maps [OdbcType.NVarChar]  = new OdbcTypeMap (DbType.String, 
-                                                                OdbcType.NVarChar,
-                                                                    SQL_C_TYPE.WCHAR,
-                                                                    SQL_TYPE.WVARCHAR);
-                       maps [OdbcType.Real]      = new OdbcTypeMap (DbType.Single, 
-                                                                OdbcType.Real,
-                                                                SQL_C_TYPE.FLOAT,
-                                                                SQL_TYPE.REAL);
-                       maps [OdbcType.SmallDateTime] = new OdbcTypeMap (DbType.DateTime, 
-                                                                    OdbcType.SmallDateTime,
-                                                                    SQL_C_TYPE.TIMESTAMP,
-                                                                    SQL_TYPE.TIMESTAMP);
-                       maps [OdbcType.SmallInt]  = new OdbcTypeMap (DbType.Int16, 
-                                                                OdbcType.SmallInt,
-                                                                SQL_C_TYPE.SHORT,
-                                                                SQL_TYPE.SMALLINT);
-                       maps [OdbcType.Text]      = new OdbcTypeMap (DbType.String, 
-                                                                OdbcType.Text,
-                                                                    SQL_C_TYPE.CHAR, //change
-                                                                SQL_TYPE.LONGVARCHAR);
-                       maps [OdbcType.Time]      = new OdbcTypeMap (DbType.DateTime, 
-                                                                OdbcType.Time,
-                                                                SQL_C_TYPE.TIME,
-                                                                SQL_TYPE.TIME);
-                       maps [OdbcType.Timestamp] = new OdbcTypeMap (DbType.DateTime, 
-                                                                OdbcType.Timestamp,
-                                                                SQL_C_TYPE.BINARY,
-                                                                SQL_TYPE.BINARY);
-                       maps [OdbcType.TinyInt]   = new OdbcTypeMap (DbType.SByte, 
-                                                                OdbcType.TinyInt,
-                                                                SQL_C_TYPE.UTINYINT,
-                                                                SQL_TYPE.TINYINT);
-                       maps [OdbcType.UniqueIdentifier] = new OdbcTypeMap (DbType.Guid, 
-                                                                       OdbcType.UniqueIdentifier,
-                                                                       SQL_C_TYPE.GUID,
-                                                                       SQL_TYPE.GUID);
-                       maps [OdbcType.VarBinary] = new OdbcTypeMap (DbType.Binary, 
-                                                                OdbcType.VarBinary,
-                                                                SQL_C_TYPE.BINARY,
-                                                                SQL_TYPE.VARBINARY);
-                       maps [OdbcType.VarChar]   = new OdbcTypeMap (DbType.String, 
-                                                                OdbcType.VarChar,
-                                                                SQL_C_TYPE.CHAR,
-                                                                SQL_TYPE.VARCHAR);
-               }
-
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.Odbc/libodbc.cs b/mcs/class/System.Data/System.Data.Odbc/libodbc.cs
deleted file mode 100644 (file)
index 583c2ac..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
-//
-// System.Data.Odbc.libodbc
-//
-// Authors:
-//   Brian Ritchie (brianlritchie@hotmail.com) 
-//   Sureshkumar T (tsureshkumar@novell.com)
-//
-// Copyright (C) Brian Ritchie, 2002
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-using System.Runtime.InteropServices;
-
-namespace System.Data.Odbc
-{
-       internal enum OdbcHandleType : short
-       {
-               Env = 1,
-               Dbc = 2,
-               Stmt = 3,
-               Desc = 4
-       }
-
-       internal enum OdbcReturn : short
-       {
-               Error = -1,
-               InvalidHandle = -2,
-               StillExecuting = 2,
-               NeedData = 99,
-               Success = 0,
-               SuccessWithInfo = 1,
-               NoData = 100
-       }
-
-       internal enum OdbcEnv : ushort
-       {
-               OdbcVersion = 200,
-               ConnectionPooling = 201,
-               CPMatch = 202
-       }
-
-       internal enum OdbcConnectionAttribute : int 
-       {
-               AutoCommit = 102,
-               TransactionIsolation = 108,
-               CurrentCatalog = 109,
-               CoptTransactionIsolation = 1227         /* SQL_COPT_SS_TXN_ISOLATION */
-       }
-
-       internal enum OdbcInfo : ushort
-       {
-               DataSourceName = 2,
-               DriverName = 6,
-               DriverVersion = 7,
-               DatabaseName = 16,
-               DbmsVersion = 18,
-               IdentifierQuoteChar = 29
-       }
-
-       internal enum OdbcInputOutputDirection : short
-       {
-               Input = 1,
-               InputOutput = 2,
-               ResultCol = 3,
-               Output = 4,
-               ReturnValue = 5
-       }
-
-       internal enum OdbcIsolationLevel
-       {
-               ReadUncommitted = 1,
-               ReadCommitted = 2,
-               RepeatableRead = 4,
-               Serializable = 8,
-               Snapshot = 32           /* SQL_TXN_SS_SNAPSHOT */
-       }
-
-       internal enum OdbcLengthIndicator : short
-       {
-               NoTotal = -4,
-               NullData = -1
-       }
-
-       // Keep this sorted.
-       internal enum FieldIdentifier : short
-       {
-               AutoUniqueValue = 11,   /* SQL_DESC_AUTO_UNIQUE_VALUE */
-               BaseColumnName = 22,    /* SQL_DESC_BASE_COLUMN_NAME */
-               BaseTableName = 23,     /* SQL_DESC_BASE_TABLE_NAME */
-               CaseSensitive = 12,     /* SQL_DESC_CASE_SENSITIVE */
-               CatelogName = 17,       /* SQL_DESC_CATALOG_NAME */
-               ConsiseType = 2,        /* SQL_DESC_CONCISE_TYPE */
-               Count = 1001,           /* SQL_DESC_COUNT */
-               DisplaySize = 6,        /* SQL_DESC_DISPLAY_SIZE */
-               FixedPrecScale = 9,     /* SQL_DESC_FIXED_PREC_SCALE */
-               Label = 18,             /* SQL_DESC_LABEL */
-               Length = 1003,          /* SQL_DESC_LENGTH */
-               LiteralPrefix = 27,     /* SQL_DESC_LITERAL_PREFIX */
-               LiteralSuffix = 28,     /* SQL_DESC_LITERAL_SUFFIX */
-               LocalTypeName = 29,     /* SQL_DESC_LOCAL_TYPE_NAME */
-               Name = 1011,            /* SQL_DESC_NAME */
-               Nullable = 1008,        /* SQL_DESC_NULLABLE */
-               NumPrecRadix = 32,      /* SQL_DESC_NUM_PREC_RADIX */
-               OctetLength = 1013,     /* SQL_DESC_OCTET_LENGTH */
-               Precision = 1005,       /* SQL_DESC_PRECISION */
-               Scale = 1006,           /* SQL_DESC_SCALE */
-               SchemaName = 16,        /* SQL_DESC_SCHEMA_NAME */
-               Searchable = 13,        /* SQL_DESC_SEARCHABLE */
-               TableName = 15,         /* SQL_DESC_TABLE_NAME */
-               Type = 1002,            /* SQL_DESC_TYPE */
-               TypeName = 14,          /* SQL_DESC_TYPE_NAME */
-               Unnamed = 1012,         /* SQL_DESC_UNNAMED */
-               Unsigned = 8,           /* SQL_DESC_UNSIGNED */
-               Updatable = 10          /* SQL_DESC_UPDATABLE */
-       }
-
-       [StructLayout(LayoutKind.Sequential)]
-       internal struct OdbcTimestamp
-       {
-               internal short year;
-               internal ushort month;
-               internal ushort day;
-               internal ushort hour;
-               internal ushort minute;
-               internal ushort second;
-               internal ulong fraction;
-       }
-
-       internal class libodbc
-       {
-               #region global constants
-               internal const int              SQL_OV_ODBC2            = 2;
-               internal const int              SQL_OV_ODBC3            = 3;
-
-               internal const string           SQLSTATE_RIGHT_TRUNC    = "01004";
-               internal const char             C_NULL                  = '\0';
-               internal const int              SQL_NTS                 = -3;
-
-               internal const short            SQL_TRUE                = 1;
-               internal const short            SQL_FALSE               = 0;
-
-               // SQLStatistics
-               internal const short            SQL_INDEX_UNIQUE        = 0;
-               internal const short            SQL_INDEX_ALL           = 1;
-               internal const short            SQL_QUICK               = 0;
-               internal const short            SQL_ENSURE              = 1;
-
-               // SQLColumnAttribute
-               internal const short            SQL_NO_NULLS            = 0;
-               internal const short            SQL_NULLABLE            = 1;
-               internal const short            SQL_NULLABLE_UNKNOWN    = 2;
-               internal const short            SQL_ATTR_READONLY       = 0;
-               internal const short            SQL_ATTR_WRITE          = 1;
-               internal const short            SQL_ATTR_READWRITE_UNKNOWN = 2;
-               #endregion
-
-               internal static OdbcInputOutputDirection ConvertParameterDirection(
-                       ParameterDirection dir)
-               {
-                       switch (dir) {
-                       case ParameterDirection.Input:
-                               return OdbcInputOutputDirection.Input;
-                       case ParameterDirection.InputOutput:
-                               return OdbcInputOutputDirection.InputOutput;
-                       case ParameterDirection.Output:
-                               return OdbcInputOutputDirection.Output;
-                       case ParameterDirection.ReturnValue:
-                               return OdbcInputOutputDirection.ReturnValue;
-                       default:
-                               return OdbcInputOutputDirection.Input;
-                       }
-               }
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLAllocHandle (
-                       OdbcHandleType HandleType,
-                       IntPtr InputHandle,
-                       ref IntPtr OutputHandlePtr);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLSetEnvAttr (
-                       IntPtr EnvHandle,
-                       OdbcEnv Attribute,
-                       IntPtr Value,
-                       int StringLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLConnect (
-                       IntPtr ConnectionHandle,
-                       string ServerName,
-                       short NameLength1,
-                       string UserName,
-                       short NameLength2,
-                       string Authentication,
-                       short NameLength3);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLDriverConnect (
-                       IntPtr ConnectionHandle,
-                       IntPtr WindowHandle,
-                       string InConnectionString,
-                       short StringLength1,
-                       string OutConnectionString,
-                       short BufferLength,
-                       ref short StringLength2Ptr,
-                       ushort DriverCompletion);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLExecDirect (
-                       IntPtr StatementHandle,
-                       string StatementText,
-                       int TextLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLRowCount (
-                       IntPtr StatementHandle,
-                       ref int RowCount);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLNumResultCols (
-                       IntPtr StatementHandle,
-                       ref short ColumnCount);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLFetch (
-                       IntPtr StatementHandle);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref bool TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref double TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref long TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref short TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref float TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref OdbcTimestamp TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       ref int TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetData (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       SQL_C_TYPE TargetType,
-                       byte[] TargetPtr,
-                       int BufferLen,
-                       ref int Len);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLDescribeCol (
-                       IntPtr StatementHandle,
-                       ushort ColumnNumber,
-                       byte[] ColumnName,
-                       short BufferLength,
-                       ref short NameLength,
-                       ref short DataType,
-                       ref uint ColumnSize,
-                       ref short DecimalDigits,
-                       ref short Nullable);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLFreeHandle (
-                       ushort HandleType,
-                       IntPtr SqlHandle);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLDisconnect (
-                       IntPtr ConnectionHandle);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLPrepare (
-                       IntPtr StatementHandle,
-                       string Statement,
-                       int TextLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLExecute (
-                       IntPtr StatementHandle);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetConnectAttr (
-                       IntPtr ConnectionHandle,
-                       OdbcConnectionAttribute Attribute,
-                       out int value,
-                       int BufferLength,
-                       out int StringLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLSetConnectAttr (
-                       IntPtr ConnectionHandle,
-                       OdbcConnectionAttribute Attribute,
-                       IntPtr Value,
-                       int Length);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLEndTran (
-                       int HandleType,
-                       IntPtr Handle,
-                       short CompletionType);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLBindParameter (
-                       IntPtr StatementHandle,
-                       ushort ParamNum,
-                       short InputOutputType,
-                       SQL_C_TYPE ValueType,
-                       SQL_TYPE ParamType,
-                       uint ColSize,
-                       short DecimalDigits,
-                       IntPtr ParamValue,
-                       int BufLen,
-                       IntPtr StrLen);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLCancel (
-                       IntPtr StatementHandle);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLCloseCursor (
-                       IntPtr StatementHandle);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLError (
-                       IntPtr EnvironmentHandle,
-                       IntPtr ConnectionHandle,
-                       IntPtr StatementHandle,
-                       byte[] Sqlstate,
-                       ref int NativeError,
-                       byte[] MessageText,
-                       short BufferLength,
-                       ref short TextLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetStmtAttr (
-                       IntPtr StatementHandle,
-                       int Attribute,
-                       ref IntPtr Value,
-                       int BufLen,
-                       int StrLen);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLSetDescField (
-                       IntPtr DescriptorHandle,
-                       short RecNumber,
-                       short FieldIdentifier,
-                       byte[] Value,
-                       int BufLen);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetDiagRec (
-                       OdbcHandleType HandleType,
-                       IntPtr Handle,
-                       ushort RecordNumber,
-                       byte [] Sqlstate,
-                       ref int NativeError,
-                       byte [] MessageText,
-                       short BufferLength,
-                       ref short TextLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLMoreResults (
-                       IntPtr Handle);
-
-               internal enum SQLFreeStmtOptions : short
-               {
-                       Close = 0,
-                       Drop,
-                       Unbind,
-                       ResetParams
-               }
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLFreeStmt (
-                       IntPtr Handle,
-                       SQLFreeStmtOptions option);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLGetInfo (
-                       IntPtr connHandle,
-                       OdbcInfo info,
-                       byte [] buffer,
-                       short buffLength,
-                       ref short remainingStrLen);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLColAttribute (
-                       IntPtr StmtHandle,
-                       short column,
-                       FieldIdentifier fieldId,
-                       byte [] charAttributePtr,
-                       short bufferLength,
-                       ref short strLengthPtr,
-                       ref int numericAttributePtr);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLPrimaryKeys (
-                       IntPtr StmtHandle,
-                       string catalog,
-                       short catalogLength,
-                       string schema,
-                       short schemaLength,
-                       string tableName,
-                       short tableLength);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLStatistics (
-                       IntPtr StmtHandle,
-                       string catalog,
-                       short catalogLength,
-                       string schema,
-                       short schemaLength,
-                       string tableName,
-                       short tableLength,
-                       short unique,
-                       short Reserved);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLBindCol (
-                       IntPtr StmtHandle,
-                       short column,
-                       SQL_C_TYPE targetType,
-                       byte [] buffer,
-                       int bufferLength,
-                       ref int indicator);
-
-               [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
-               internal static extern OdbcReturn SQLBindCol (
-                       IntPtr StmtHandle,
-                       short column,
-                       SQL_C_TYPE targetType,
-                       ref short value,
-                       int bufferLength,
-                       ref int indicator);
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/.gitattributes b/mcs/class/System.Data/System.Data.OleDb.jvm/.gitattributes
deleted file mode 100644 (file)
index d628d3a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/OleDbCommand.cs -crlf
-/OleDbConvert.cs -crlf
-/OleDbDataAdapter.cs -crlf
-/OleDbException.cs -crlf
-/OleDbInfoMessageEventArgs.cs -crlf
-/OleDbInfoMessageEventHandler.cs -crlf
-/OleDbLiteral.cs -crlf
-/OleDbPermission.cs -crlf
-/OleDbPermissionAttribute.cs -crlf
-/OleDbRowUpdatedEventArgs.cs -crlf
-/OleDbRowUpdatedEventHandler.cs -crlf
-/OleDbRowUpdatingEventArgs.cs -crlf
-/OleDbRowUpdatingEventHandler.cs -crlf
-/OleDbSchemaGuid.cs -crlf
-/OleDbTransaction.cs -crlf
-/OleDbType.cs -crlf
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog b/mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog
deleted file mode 100644 (file)
index 6daabb8..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-2007-05-08 Adar Wesley <adarw@mainsoft.com>
-
-       * OleDbCommandBuilder.cs: added missing methods QuoteIdentifier,
-       UnquoteIdentifier.
-
-       * OleDbConnection.cs: added missing method ResetState.
-
-       * OleDbDataReader.cs: added missing method GetData.
-
-       * OleDbError.cs: added missing method ToString.
-
-       * OleDbErrorCollection.cs: added missing method strongly typed
-       CopyTo.
-
-       * OleDbFactory.cs: added missing method CreatePermission.
-
-       * OleDbParameter.cs: added missing methods ResetOleDbType,
-       ResetDbType.
-
-       * OleDbParameterCollection.cs: added missing methods strongly
-       typed AddRange, IndexOf.
-
-2007-05-01 Adar Wesley <adarw@mainsoft.com>
-
-       * OleDbCommandBuilder.cs: Fixed typo and called base implementation
-       in Get[Insert|Updata|Delete]Command methods.
-
-2006-11-05 Vladimir Krasnov  <vladimirk@mainsoft.com>
-
-       * added: OleDbFactory.cs
-
-2006-05-23 Boris Kirzner <borisk@mainsoft.com>
-       * OleDbConnection.cs: add MonoTODO to GetOleDbSchemaTable.
-
-2006-05-09  Konstantin Triger <kostat@mainsoft.com>
-
-       * OleDbConnection.cs: fix GetOleDbSchemaTable for OleDbSchemaGuid.Tables.
-
-2006-04-26  Konstantin Triger <kostat@mainsoft.com>
-
-        * OleDbParameter.cs: map NCHAR to VARCHAR type.
-
-2006-03-21     Boris Kirzner <borisk@mainsoft.com>
-       * OleDbConnection.cs: resolve ambiguity.
-
-2006-03-06  Konstantin Triger <kostat@mainsoft.com>
-
-       * OleDbConnection.cs: compare up to the provider name length.
-
-2005-16-11 Boris Kirzner <borisk@mainsoft.com>
-       * OleDbConnection.cs: Added override for CreateException().
-
-2005-11-07 Konstantin Triger <kostat@mainsoft.com>
-
-       * OleDbConnection.cs: retrieve the StringManager from AppDomain
-               to workaround lack of correct AppDomain management in GH
-
-2005-09-05 Boris Kirzner <borisk@mainsoft.com>
-       * OleDbConvert.cs: return underlined value type in case of enum value.
-       * OleDbParameter.cs:
-               - Update of DbType should also update OleDbType property. 
-               - Do not update parameter type is the value set is DbNull.
-
-2005-06-21  Konstantin  Triger <kostat@mainsoft.com>
-
-       * OleDbConvert.cs: mapping OleDbType.Guid to Types.CHAR
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbCommandBuilder.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbCommandBuilder.cs
deleted file mode 100644 (file)
index 5496e5c..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-// System.Data.OleDb.OleDbCommandBuilder
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//     Konstantin Triger <kostat@mainsoft.com>
-//     Boris Kirzner <borisk@mainsoft.com>
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Data.ProviderBase;
-
-namespace System.Data.OleDb
-{
-       /// <summary>
-       /// Provides a means of automatically generating single-table commands used to reconcile changes made to a DataSet with the associated database. This class cannot be inherited.
-       /// </summary>
-       public sealed class OleDbCommandBuilder : AbstractDbCommandBuilder
-       {
-               #region Fields
-
-               OleDbDataAdapter adapter;
-               string quotePrefix;
-               string quoteSuffix;
-
-               #endregion // Fields
-
-               #region Constructors
-               
-               public OleDbCommandBuilder ()
-               {
-                       adapter = null;
-                       quotePrefix = String.Empty;
-                       quoteSuffix = String.Empty;
-               }
-
-               public OleDbCommandBuilder (OleDbDataAdapter adapter) 
-                       : this ()
-               {
-                       this.adapter = adapter;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public OleDbDataAdapter DataAdapter {
-                       get {
-                               return adapter;
-                       }
-                       set {
-                               adapter = value;
-                       }
-               }
-
-               public string QuotePrefix {
-                       get {
-                               return quotePrefix;
-                       }
-                       set {
-                               quotePrefix = value;
-                       }
-               }
-
-               public string QuoteSuffix {
-                       get {
-                               return quoteSuffix;
-                       }
-                       set {
-                               quoteSuffix = value;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public static void DeriveParameters (OleDbCommand command) 
-               {
-                       DeriveParameters((AbstractDbCommand)command);
-               }
-
-               protected override void Dispose (bool disposing) 
-               {
-                       base.Dispose ();        
-               }
-
-               public new OleDbCommand GetDeleteCommand ()
-               {
-                       return (OleDbCommand) base.GetDeleteCommand ();
-               }
-
-               public new OleDbCommand GetInsertCommand ()
-               {
-                       return (OleDbCommand) base.GetInsertCommand ();
-               }
-
-               public new OleDbCommand GetUpdateCommand ()
-               {
-                       return (OleDbCommand) base.GetUpdateCommand ();
-               }
-
-               [MonoTODO]
-               public void RefreshSchema ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-
-               [MonoNotSupported("")]
-               public string QuoteIdentifier (string unquotedIdentifier, OleDbConnection connection) 
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoNotSupported ("")]
-               public string UnquoteIdentifier (string quotedIdentifier, OleDbConnection connection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbDataAdapter.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbDataAdapter.cs
deleted file mode 100644 (file)
index 2b112e4..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbDataAdapter\r
-//\r
-// Authors:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//     Konstantin Triger <kostat@mainsoft.com>\r
-//     Boris Kirzner <borisk@mainsoft.com>\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002\r
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-\r
-using System;\r
-using System.ComponentModel;\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       public sealed class OleDbDataAdapter : DbDataAdapter, IDbDataAdapter\r
-       {\r
-               #region Fields\r
-\r
-               OleDbCommand deleteCommand;\r
-               OleDbCommand insertCommand;\r
-               OleDbCommand selectCommand;\r
-               OleDbCommand updateCommand;\r
-\r
-               #endregion\r
-\r
-               #region Constructors\r
-\r
-               public OleDbDataAdapter ()\r
-                       : this (new OleDbCommand ())\r
-               {\r
-               }\r
-\r
-               public OleDbDataAdapter (OleDbCommand selectCommand)\r
-               {\r
-                       DeleteCommand = new OleDbCommand ();\r
-                       InsertCommand = new OleDbCommand ();\r
-                       SelectCommand = selectCommand;\r
-                       UpdateCommand = new OleDbCommand ();\r
-               }\r
-\r
-               public OleDbDataAdapter (string selectCommandText, OleDbConnection selectConnection)\r
-                       : this (new OleDbCommand (selectCommandText, selectConnection))\r
-               {\r
-               }\r
-\r
-               public OleDbDataAdapter (string selectCommandText, string selectConnectionString)\r
-                       : this (selectCommandText, new OleDbConnection (selectConnectionString))\r
-               {\r
-               }\r
-\r
-               #endregion // Fields\r
-\r
-               #region Properties\r
-\r
-               public OleDbCommand DeleteCommand {\r
-                       get {\r
-                               return deleteCommand;\r
-                       }\r
-                       set {\r
-                               deleteCommand = value;\r
-                       }\r
-               }\r
-\r
-               public OleDbCommand InsertCommand {\r
-                       get {\r
-                               return insertCommand;\r
-                       }\r
-                       set {\r
-                               insertCommand = value;\r
-                       }\r
-               }\r
-\r
-               public OleDbCommand SelectCommand {\r
-                       get {\r
-                               return selectCommand;\r
-                       }\r
-                       set {\r
-                               selectCommand = value;\r
-                       }\r
-               }\r
-\r
-               public OleDbCommand UpdateCommand {\r
-                       get {\r
-                               return updateCommand;\r
-                       }\r
-                       set {\r
-                               updateCommand = value;\r
-                       }\r
-               }\r
-\r
-               IDbCommand IDbDataAdapter.DeleteCommand {\r
-                       get {\r
-                               return DeleteCommand;\r
-                       }\r
-                       set { \r
-                               if (value != null && !(value is OleDbCommand))\r
-                                       throw new ArgumentException ("DeleteCommand is not of Type OleDbCommand");\r
-                               DeleteCommand = (OleDbCommand)value;\r
-                       }\r
-               }\r
-\r
-               IDbCommand IDbDataAdapter.InsertCommand {\r
-                       get {\r
-                               return InsertCommand;\r
-                       }\r
-                       set { \r
-                               if (value != null && !(value is OleDbCommand))\r
-                                       throw new ArgumentException ("InsertCommand is not of Type OleDbCommand");\r
-                               InsertCommand = (OleDbCommand)value;\r
-                       }\r
-               }\r
-\r
-               IDbCommand IDbDataAdapter.SelectCommand {\r
-                       get {\r
-                               return SelectCommand;\r
-                       }\r
-                       set { \r
-                               if (value != null && !(value is OleDbCommand))\r
-                                       throw new ArgumentException ("SelectCommand is not of Type OleDbCommand");\r
-                               SelectCommand = (OleDbCommand)value;\r
-                       }\r
-               }\r
-\r
-               \r
-               IDbCommand IDbDataAdapter.UpdateCommand {\r
-                       get {\r
-                               return UpdateCommand;\r
-                       }\r
-                       set { \r
-                               if (value != null && !(value is OleDbCommand))\r
-                                       throw new ArgumentException ("UpdateCommand is not of Type OleDbCommand");\r
-                               UpdateCommand = (OleDbCommand)value;\r
-                       }\r
-               }\r
-\r
-               ITableMappingCollection IDataAdapter.TableMappings {\r
-                       get {\r
-                               return TableMappings;\r
-                       }\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               protected override RowUpdatedEventArgs CreateRowUpdatedEvent (DataRow dataRow,\r
-                                                                             IDbCommand command,\r
-                                                                             StatementType statementType,\r
-                                                                             DataTableMapping tableMapping) \r
-               {\r
-                       return new OleDbRowUpdatedEventArgs (dataRow, command, statementType, tableMapping);\r
-               }\r
-\r
-\r
-               protected override RowUpdatingEventArgs CreateRowUpdatingEvent (DataRow dataRow,\r
-                                                                               IDbCommand command,\r
-                                                                               StatementType statementType,\r
-                                                                               DataTableMapping tableMapping) \r
-               {\r
-                       return new OleDbRowUpdatingEventArgs (dataRow, command, statementType, tableMapping);\r
-               }\r
-\r
-               protected override void OnRowUpdated (RowUpdatedEventArgs value) \r
-               {\r
-                       if (RowUpdated != null)\r
-                               RowUpdated (this, (OleDbRowUpdatedEventArgs) value);\r
-               }\r
-\r
-               protected override void OnRowUpdating (RowUpdatingEventArgs value) \r
-               {\r
-                       if (RowUpdating != null)\r
-                               RowUpdating (this, (OleDbRowUpdatingEventArgs) value);\r
-               }\r
-               \r
-               #endregion // Methods\r
-\r
-               #region Events and Delegates\r
-\r
-               public event OleDbRowUpdatedEventHandler RowUpdated;\r
-               public event OleDbRowUpdatingEventHandler RowUpdating;\r
-\r
-               #endregion // Events and Delegates\r
-\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbFactory.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbFactory.cs
deleted file mode 100644 (file)
index 18e8853..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// System.Data.OleDb.OleDbFactory.cs
-//
-// Author:
-//   Sureshkumar T (tsureshkumar@novell.com)
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.OleDb
-{
-       using System.Data;
-       using System.Data.Common;
-       using System.Security;
-       using System.Security.Permissions;
-
-       public sealed class OleDbFactory : DbProviderFactory
-       {
-               #region Fields
-               public static readonly OleDbFactory Instance = new OleDbFactory ();
-               #endregion //Fields
-
-               #region Constructors
-
-               private OleDbFactory ()
-               {
-
-               }
-
-               #endregion //Constructors
-
-               public override bool CanCreateDataSourceEnumerator
-               {
-                       get { return false; }
-               }
-
-               #region public overrides
-               public override DbCommand CreateCommand ()
-               {
-                       return (DbCommand) new OleDbCommand ();
-               }
-
-               public override DbCommandBuilder CreateCommandBuilder ()
-               {
-                       return (DbCommandBuilder) new OleDbCommandBuilder ();
-               }
-
-               public override DbConnection CreateConnection ()
-               {
-                       return (DbConnection) new OleDbConnection ();
-               }
-
-               public override DbDataAdapter CreateDataAdapter ()
-               {
-                       return (DbDataAdapter) new OleDbDataAdapter ();
-               }
-
-               [MonoLimitation("Code Access Security is not supported")]
-               public override CodeAccessPermission CreatePermission (PermissionState state) 
-               {
-                       return new OleDbPermission (state);
-               }
-
-               [MonoTODO]
-               public override DbDataSourceEnumerator CreateDataSourceEnumerator ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override DbParameter CreateParameter ()
-               {
-                       return (DbParameter) new OleDbParameter ();
-               }
-
-               #endregion // public overrides
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbInfoMessageEventArgs.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbInfoMessageEventArgs.cs
deleted file mode 100644 (file)
index 91e74ef..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbInfoMessageEventArgs\r
-//\r
-// Authors:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       public sealed class OleDbInfoMessageEventArgs : EventArgs\r
-       {\r
-               private OleDbErrorCollection errors;\r
-               internal OleDbInfoMessageEventArgs(OleDbErrorCollection errors)\r
-               {\r
-                       this.errors = errors;\r
-               }\r
-               #region Properties\r
-\r
-               public int ErrorCode {\r
-                       [MonoTODO]\r
-                       get { return errors[0].NativeError; }\r
-               }\r
-\r
-               public OleDbErrorCollection Errors {\r
-                       [MonoTODO]\r
-                       get { return errors; }\r
-               }\r
-\r
-               public string Message {\r
-                       [MonoTODO]\r
-                       get { return errors[0].Message; }\r
-               }\r
-\r
-               public string Source {\r
-                       [MonoTODO]\r
-                       get { return errors[0].Source;}\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               [MonoTODO]\r
-               public override string ToString ()\r
-               {\r
-                       return errors[0].Message;\r
-               }\r
-\r
-               #endregion // Methods\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbInfoMessageEventHandler.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbInfoMessageEventHandler.cs
deleted file mode 100644 (file)
index f36ac7a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbInfoMessageEventHandler\r
-//\r
-// Author:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002    
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       [Serializable]\r
-       public delegate void OleDbInfoMessageEventHandler (object sender, OleDbInfoMessageEventArgs e);\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbLiteral.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbLiteral.cs
deleted file mode 100644 (file)
index 9b78ba7..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbLiteral\r
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     Boris Kirzner <borisk@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-namespace System.Data.OleDb\r
-{\r
-\r
-    using System;\r
-    /**\r
-     *\r
-     */\r
-    public enum OleDbLiteral\r
-                                     {\r
-\r
-        Invalid = 0,\r
-        Binary_Literal = 1,\r
-\r
-        Catalog_Name = 2,\r
-\r
-        Catalog_Separator = 3,\r
-\r
-        Char_Literal = 4,\r
-\r
-        Column_Alias = 5,\r
-\r
-        Column_Name = 6,\r
-\r
-        Correlation_Name = 7,\r
-\r
-        Cursor_Name = 8,\r
-\r
-        Escape_Percent_Prefix = 9,\r
-\r
-        Escape_Underscore_Prefix = 10,\r
-\r
-        Index_Name = 11,\r
-\r
-        Like_Percent = 12,\r
-\r
-        Like_Underscore = 13,\r
-\r
-        Procedure_Name = 14,\r
-\r
-        Quote_Prefix = 15,\r
-\r
-        Schema_Name = 16,\r
-\r
-        Table_Name = 17,\r
-\r
-        Text_Command = 18,\r
-\r
-        User_Name = 19,\r
-\r
-        View_Name = 20,\r
-\r
-        Cube_Name = 21,\r
-\r
-        Dimension_Name = 22,\r
-\r
-        Hierarchy_Name = 23,\r
-\r
-        Level_Name = 24,\r
-\r
-        Member_Name = 25,\r
-\r
-        Property_Name = 26,\r
-\r
-        Schema_Separator = 27,\r
-\r
-        Quote_Suffix = 28,\r
-\r
-        Escape_Percent_Suffix = 29,\r
-\r
-        Escape_Underscore_Suffix = 30,\r
-\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbParameterCollection.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbParameterCollection.cs
deleted file mode 100644 (file)
index 027ffcf..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-//
-// System.Data.Common.OleDbParameterCollection
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     Boris Kirzner <borisk@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.ProviderBase;
-
-namespace System.Data.OleDb
-{
-    public sealed class OleDbParameterCollection :  AbstractDbParameterCollection
-    {
-               #region Constructors
-
-        public OleDbParameterCollection(OleDbCommand parent): base(parent)
-        {
-        }
-
-               #endregion // Constructors
-
-               #region Properties
-        
-        public OleDbParameter this[int index]
-        {
-            get { return (OleDbParameter)base[index]; }
-            set { 
-                               OnSchemaChanging();
-                               base[index] = value; 
-                       }
-        }
-
-        public OleDbParameter this[string parameterName]
-        {
-            get { return (OleDbParameter)base[parameterName]; }
-            set { 
-                               OnSchemaChanging();
-                               base[parameterName] = value; 
-                       }
-        }
-
-               protected override Type ItemType { 
-                       get { return typeof(OleDbParameter); }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-        public OleDbParameter Add(OleDbParameter value)
-        {
-            base.Add(value);
-            return value;
-        }
-
-        public OleDbParameter Add(string parameterName, object value)
-        {
-            OleDbParameter param = new OleDbParameter(parameterName, value);
-            return Add(param);
-        }
-
-        public OleDbParameter Add(string parameterName, OleDbType sqlDbType)
-        {
-            OleDbParameter param = new OleDbParameter(parameterName, sqlDbType);
-            return Add(param);
-        }
-
-        public OleDbParameter Add(string parameterName, OleDbType sqlDbType, int size)
-        {
-            OleDbParameter param = new OleDbParameter(parameterName, sqlDbType, size);
-            return Add(param);
-        }
-
-        public OleDbParameter Add(string parameterName, OleDbType sqlDbType, int size, string sourceColumn)
-        {
-            OleDbParameter param = new OleDbParameter(parameterName, sqlDbType, size, sourceColumn);
-            return Add(param);
-               }
-
-               public void AddRange (OleDbParameter [] values)
-               {
-                       base.AddRange (values);
-               }
-
-               public OleDbParameter AddWithValue (string parameterName, object value)
-               {
-                       return Add (parameterName, value);
-               }
-
-               public bool Contains (OleDbParameter value)
-               {
-                       return base.Contains (value);
-               }
-
-               public void CopyTo (OleDbParameter [] array, int index)
-               {
-                       base.CopyTo (array, index);
-               }
-
-               public void Insert (int index, OleDbParameter value)
-               {
-                       base.Insert (index, value);
-               }
-
-               public void Remove (OleDbParameter value)
-               {
-                       base.Remove (value);
-               }
-
-               public int IndexOf (OleDbParameter value)
-               {
-                       return base.IndexOf (value);
-               }
-
-               #endregion // Methods        
-        
-    }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbPermission.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbPermission.cs
deleted file mode 100644 (file)
index bc287a9..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbPermission\r
-//\r
-// Author:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002     \r
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-using System.Security;\r
-using System.Security.Permissions;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       [Serializable]\r
-       public sealed class OleDbPermission : DBDataPermission\r
-       {\r
-               #region Constructors\r
-\r
-               [ObsoleteAttribute ("OleDbPermission() has been deprecated.  Use the OleDbPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202", true)]\r
-               public OleDbPermission ()\r
-               {\r
-               }\r
-\r
-               public OleDbPermission (PermissionState state) : base(state)\r
-               {\r
-               }\r
-\r
-               [ObsoleteAttribute ("OleDbPermission() has been deprecated.  Use the OleDbPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202", true)]\r
-               public OleDbPermission (PermissionState state, bool allowBlankPassword) : base(state, allowBlankPassword)\r
-               {\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region Properties\r
-\r
-               public string Provider {\r
-                       [MonoTODO]\r
-                       get { throw new NotImplementedException (); }\r
-                       [MonoTODO]\r
-                       set { throw new NotImplementedException (); }\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region Methods\r
-\r
-               [MonoTODO]\r
-               public override IPermission Copy ()\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               public override void FromXml (SecurityElement securityElement)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               public override IPermission Intersect (IPermission target)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               public override bool IsSubsetOf (IPermission target)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               public override SecurityElement ToXml ()\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               public override IPermission Union (IPermission target)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               #endregion\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbPermissionAttribute.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbPermissionAttribute.cs
deleted file mode 100644 (file)
index c2d0dbd..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbPermissionAttribute\r
-//\r
-// Authors:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-using System.Security;\r
-using System.Security.Permissions;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class\r
-                       | AttributeTargets.Struct | AttributeTargets.Constructor |\r
-                       AttributeTargets.Method)]\r
-       [Serializable]\r
-       public sealed class OleDbPermissionAttribute : DBDataPermissionAttribute\r
-       {\r
-\r
-               #region Constructors \r
-\r
-               [MonoTODO]\r
-               OleDbPermissionAttribute (SecurityAction action) \r
-                       : base (action)\r
-               {\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region Properties\r
-\r
-               [MonoTODO]\r
-               public string Provider {\r
-                       [MonoTODO]\r
-                       get {\r
-                               throw new NotImplementedException (); \r
-                       }\r
-                       [MonoTODO]\r
-                       set {\r
-                               throw new NotImplementedException (); \r
-                       }\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region Methods\r
-\r
-               [MonoTODO]\r
-               public override IPermission CreatePermission () \r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               #endregion\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatedEventArgs.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatedEventArgs.cs
deleted file mode 100644 (file)
index a086519..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbRowUpdatedEventArgs\r
-//\r
-// Authors:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       public sealed class OleDbRowUpdatedEventArgs : RowUpdatedEventArgs\r
-       {\r
-               #region Fields\r
-               \r
-               OleDbCommand command;\r
-\r
-               #endregion // Fields\r
-\r
-               #region Constructors\r
-\r
-               [MonoTODO]\r
-               public OleDbRowUpdatedEventArgs (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)\r
-                       : base (dataRow, command, statementType, tableMapping)\r
-\r
-               {\r
-                       this.command = (OleDbCommand) command;\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Properties\r
-\r
-               public new OleDbCommand Command {\r
-                       get { return command; }\r
-               }\r
-\r
-               #endregion // Properties\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatedEventHandler.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatedEventHandler.cs
deleted file mode 100644 (file)
index 1c2ca7a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbRowUpdatedEventHandler\r
-//\r
-// Author:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002    
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       [Serializable]\r
-       public delegate void OleDbRowUpdatedEventHandler (\r
-               object sender,\r
-               OleDbRowUpdatedEventArgs e);\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatingEventArgs.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatingEventArgs.cs
deleted file mode 100644 (file)
index 67034dd..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbRowUpdatingEventArgs\r
-//\r
-// Authors:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       public sealed class OleDbRowUpdatingEventArgs : RowUpdatingEventArgs\r
-       {\r
-\r
-               #region Fields\r
-\r
-               OleDbCommand command = null;\r
-\r
-               #endregion\r
-\r
-               #region Constructors\r
-\r
-               [MonoTODO]\r
-               public OleDbRowUpdatingEventArgs (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)\r
-                       : base (dataRow, command, statementType, tableMapping)\r
-\r
-               {\r
-                       this.command = (OleDbCommand) command;\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region Properties\r
-               \r
-               public new OleDbCommand Command {\r
-                       get { return command; }\r
-                       set { command = value; }\r
-               }\r
-\r
-               #endregion\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatingEventHandler.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbRowUpdatingEventHandler.cs
deleted file mode 100644 (file)
index 002cd85..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbRowUpdatingEventHandler\r
-//\r
-// Author:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002    
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       [Serializable]\r
-       public delegate void OleDbRowUpdatingEventHandler (\r
-               object sender,\r
-               OleDbRowUpdatingEventArgs e);\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbSchemaGuid.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbSchemaGuid.cs
deleted file mode 100644 (file)
index 877d4eb..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbSchemaGuid\r
-//\r
-// Authors:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// Copyright (C) Rodrigo Moya, 2002\r
-// Copyright (C) Tim Coleman, 2002     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-\r
-namespace System.Data.OleDb\r
-{\r
-       public sealed class OleDbSchemaGuid\r
-       {\r
-               #region Fields\r
-\r
-               public static readonly Guid Assertions = new Guid ("df855bea-fb95-4abc-8932-e57e45c7ddae");\r
-               public static readonly Guid Catalogs = new Guid ("e4a67334-f03c-45af-8b1d-531f99268045");\r
-               public static readonly Guid Character_Sets = new Guid ("e4533bdb-0b55-48ee-986d-17d07143657d");\r
-               public static readonly Guid Check_Constraints = new Guid ("fedf7f5d-cfb4-4635-af02-45eb4bb4e8f3");\r
-               public static readonly Guid Check_Constraints_By_Table = new Guid ("d76547ef-837d-413c-8d76-bab1d7bb014a");\r
-               public static readonly Guid Collations = new Guid ("5145b85c-c448-4b9e-8929-4c2de31ffa30");\r
-               public static readonly Guid Columns = new Guid ("86dcd6e2-9a8c-4c6d-bc1c-e0e334c727c9");\r
-               public static readonly Guid Column_Domain_Usage = new Guid ("058acb5e-eb1d-4b6e-8e98-a7d59a959ff1");\r
-               public static readonly Guid Column_Privileges = new Guid ("43152796-f3b4-4342-9647-008f1060e352");\r
-               public static readonly Guid Constraint_Column_Usage = new Guid ("3a39f999-f481-4293-8b9f-af7e91b4ee7d");\r
-               public static readonly Guid Constraint_Table_Usage = new Guid ("d689719b-24b0-4963-a635-097c480edcd2");\r
-               public static readonly Guid DbInfoLiterals = new Guid ("7a564da6-f3bc-474b-9e66-71cb47bde5b0");\r
-               public static readonly Guid Foreign_Keys = new Guid ("d9e547ce-e62d-4200-b849-566bc3dc29de");\r
-               public static readonly Guid Indexes = new Guid ("69d8523c-96ad-40cb-a89a-ee98d2d6fcec");\r
-               public static readonly Guid Key_Column_Usage = new Guid ("65423211-805e-4822-8eb4-f4f6d540056e");\r
-               public static readonly Guid Primary_Keys = new Guid ("c6e5b174-fbd8-4055-b757-8585040e463f");\r
-               public static readonly Guid Procedures = new Guid ("61f276ad-4f25-4c26-b4ae-8238e06d56db");\r
-               public static readonly Guid Procedure_Columns = new Guid ("7148080d-e053-4ada-b79a-9a2ff614a3d4");\r
-               public static readonly Guid Procedure_Parameters = new Guid ("984af700-8fe7-476f-81c2-4b814df67907");\r
-               public static readonly Guid Provider_Types = new Guid ("0bc2da44-d834-4136-9ff0-3cef477784b9");\r
-               public static readonly Guid Referential_Constraints = new Guid ("d2eab85e-49a7-462d-aa22-1d97c74178ae");\r
-               public static readonly Guid Schemata = new Guid ("2fbd7503-0af3-43d2-92c6-51e78b84dd37");\r
-               public static readonly Guid Sql_Languages = new Guid ("d60a511d-a07f-4e59-aac2-71c25fab5b02");\r
-               public static readonly Guid Statistics = new Guid ("03ed9f7d-35bc-45fe-993f-ee7a5f29fb74");\r
-               public static readonly Guid Tables = new Guid ("ceac88ba-240c-4bb4-821e-4a49fc013371");\r
-               public static readonly Guid Tables_Info = new Guid ("9ff81c59-2b1e-4371-a08b-3a2d373189fa");\r
-               public static readonly Guid Table_Constraints = new Guid ("62883c55-082d-42cb-bb00-747985ca6047");\r
-               public static readonly Guid Table_Privileges = new Guid ("1a73f478-8c8e-4ede-b3ec-22ba13ab55a0");\r
-               public static readonly Guid Table_Statistics = new Guid ("9c944744-cd51-448a-8be4-7095f039d0ef");\r
-               public static readonly Guid Translations = new Guid ("5578b57e-a682-4f1b-bdb4-f8a14ad6f61e");\r
-               public static readonly Guid Trustee = new Guid ("521207e2-3a23-42b6-ac78-810a3fce3271");\r
-               public static readonly Guid Usage_Privileges = new Guid ("f8113a2b-2934-4c67-ab7b-adbe3ab74973");\r
-               public static readonly Guid Views = new Guid ("9a6345b6-61a0-40fd-9b45-402f3c9c9c3e");\r
-               public static readonly Guid View_Column_Usage = new Guid ("2c91ef91-02d8-4d38-ae5a-1e826873d6ea");\r
-               public static readonly Guid View_Table_Usage = new Guid ("7dcb7f53-1045-4fdf-86a1-d3caaf27c7f5");\r
-\r
-               #endregion\r
-\r
-               #region Constructors\r
-\r
-               public OleDbSchemaGuid ()\r
-               {\r
-               }\r
-\r
-               #endregion\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbTransaction.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbTransaction.cs
deleted file mode 100644 (file)
index 9699011..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-// 
-// System.Data.OleDb.OleDbTransaction.cs
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     Boris Kirzner <borisk@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//\r
-\r
-\r
-namespace System.Data.OleDb\r
-{\r
-\r
-    using System.Data.Common;\r
-       using System.Data.ProviderBase;\r
-    using System.Data;\r
-\r
-    public class OleDbTransaction : AbstractTransaction\r
-    {\r
-    \r
-        internal OleDbTransaction(OleDbConnection connection) : base(IsolationLevel.ReadCommitted, connection, null)\r
-        {\r
-        }\r
-\r
-        internal OleDbTransaction(OleDbConnection connection, String transactionName) : base(IsolationLevel.ReadCommitted, connection, transactionName)\r
-        {\r
-        }\r
-\r
-        internal OleDbTransaction(IsolationLevel isolationLevel, OleDbConnection connection) : base(isolationLevel, connection, null)\r
-        {\r
-        }\r
-\r
-           public new OleDbConnection Connection\r
-           {\r
-                   get\r
-                   {\r
-                           return (OleDbConnection)base.Connection;\r
-                   }\r
-           }\r
-\r
-           public OleDbTransaction Begin()\r
-           {\r
-                   return Begin(IsolationLevel.ReadCommitted);\r
-           }\r
-\r
-           public OleDbTransaction Begin(IsolationLevel isolationLevetl)\r
-           {\r
-                       throw new InvalidOperationException("Only one transaction can be active on this session.");\r
-           }\r
-    \r
-    }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbType.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbType.cs
deleted file mode 100644 (file)
index 90141e8..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-//\r
-// System.Data.OleDb.OleDbType\r
-//\r
-// Authors:\r
-//     Konstantin Triger <kostat@mainsoft.com>\r
-//     Boris Kirzner <borisk@mainsoft.com>\r
-//     \r
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-namespace System.Data.OleDb\r
-{\r
-\r
-    \r
-    /**\r
-     *\r
-     */\r
-    public enum OleDbType\r
-    {\r
-\r
-        Empty = 0,\r
-\r
-        SmallInt = 2,\r
-\r
-        Integer = 3,\r
-\r
-        Single = 4,\r
-\r
-        Double = 5,\r
-\r
-        Currency = 6,\r
-\r
-        Date = 7,\r
-\r
-        BSTR = 8,\r
-\r
-        IDispatch = 9,\r
-\r
-        Error = 10,\r
-\r
-        Boolean = 11,\r
-\r
-        Variant = 12,\r
-\r
-        IUnknown = 13,\r
-\r
-        Decimal = 14,\r
-\r
-        TinyInt = 16,\r
-\r
-        UnsignedTinyInt = 17,\r
-\r
-        UnsignedSmallInt = 18,\r
-\r
-        UnsignedInt = 19,\r
-\r
-        BigInt = 20,\r
-\r
-        UnsignedBigInt = 21,\r
-\r
-        Filetime = 64,\r
-\r
-        Guid = 72,\r
-\r
-        Binary = 128,\r
-\r
-        Char = 129,\r
-\r
-        WChar = 130,\r
-\r
-        Numeric = 131,\r
-\r
-        DBDate = 133,\r
-\r
-        DBTime = 134,\r
-\r
-        DBTimeStamp = 135,\r
-\r
-        PropVariant = 138,\r
-\r
-        VarNumeric = 139,\r
-\r
-        VarChar = 200,\r
-\r
-        LongVarChar = 201,\r
-\r
-        VarWChar = 202,\r
-\r
-        LongVarWChar = 203,\r
-\r
-        VarBinary = 204,\r
-\r
-        LongVarBinary = 205,\r
-\r
-        \r
-    }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.OleDb/ChangeLog b/mcs/class/System.Data/System.Data.OleDb/ChangeLog
deleted file mode 100644 (file)
index 769e36f..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-2009-02-19 Gonzalo Paniagua Javier <gonzalo@novell.com>
-
-       * OleDbFactory.cs: New file.
-
-2008-04-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbDataAdapter.cs: Changed argument names to match MS. Removed
-       extra explicit interface implementation.
-       * OleDbParameter.cs: Changed argument names to match MS.
-       * OleDbTransaction.cs: Do not include IDbConnection.Connection and
-       IDisposable.Dispose for 2.0 profile.
-       * OleDbParameterCollection.cs: Changed argument names to match MS.
-       Do not include explicit interface implementations on 2.0 profile.
-       * OleDbConnection.cs: Changed argument names to match MS. Code
-       formatting.
-
-2008-03-03  Ankit Jain  <jankit@novell.com>
-
-       * OleDbMetaDataCollectionNames.cs: New.
-
-2007-10-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbCommand.cs: Use ExceptionHelper.CheckEnumValue for enum checks.
-
-2007-10-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbDataAdapter.cs: In default ctor, set SelectCommand to null.
-       Only initialize SelectCommand in ctors. Use direct assignment in
-       IDbDataAdapter implementation.
-       * OleDbCommand.cs: Added constant for default CommandTimeout, instead
-       of using a magic number. Avoid unnecessary initialization. Fixed
-       default value for DesignTimeVisible. Return zero-length string if
-       CommandText is null. Added implementation for UpdatedRowSource.
-       * OleDbConnection.cs: Moved initialization of gda to Open ().
-       Avoid unnecessary initialization. Return zero-length string if
-       ConnectionString is null. If getters to Database, DataSource and
-       Provider return zero-length string if the connection is closed.
-       In ServerVersion, BeginTransaction and GetSchema, throw an
-       InvalidOperationException if connection is closed.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbTransaction.cs: Clear connection in Commit and Rollback. In
-       IsolationLevel and Begin overloads, throw IOE if transaction is no
-       longer open.
-
-2007-10-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbTransaction.cs: Keep track of whether transaction is open and
-       whether it's disposed. In Commit an Rollback, throw an IOE if the
-       transaction is no longer open. In Dispose (bool), perform a rollback
-       if the transaction is still open.
-
-2007-10-19  Nagappan <anagappan@novell.com> 
-
-       * OleDbCommandBuilder.cs: Implemented ApplyParameterInfo, Dispose,
-         GetParameterName, GetParameterPlaceholder, RefreshSchema methods.
-
-2007-10-19  Nagappan <anagappan@novell.com> 
-
-       * OleDbCommand.cs: Implemented Clone, Dispose methods.
-         Implemented CreateDbParameter, DbConnection, DbParameterCollection,
-         DbTransaction, ExecuteDbDataReader properties.
-
-       * OleDbParameterCollection.cs: Fixed 1.0 API compatibility.
-
-2007-09-27  Nagappan A <anagappan@novell.com> 
-
-       * OleDbDataReader.cs: Removed bogus MonoTODO.
-
-2007-09-26  Nagappan A <anagappan@novell.com> 
-
-       * OleDbTransaction.cs: Removed bogus TODO.
-         Modified Finalize method to exist only in 1.0 profile.
-
-2007-09-25  Nagappan A  <anagappan@novell.com>
-
-       * OleDbConnection.cs: 2.0 attribute changes.
-
-       * OleDbException.cs: 2.0 attribute changes.
-
-       * OleDbDataReader.cs: 2.0 attribute changes.
-
-       * OleDbCommandBuilder.cs: 2.0 attribute changes.
-
-       * OleDbParameter.cs: 2.0 attribute changes.
-
-2007-07-22  Nagappan A  <anagappan@novell.com>
-
-       * OleDbDataReader.cs: Fixed compilation warning.
-
-       * OleDbParameterCollection.cs: Fixed compilation warning.
-
-       * OleDbTransaction.cs: Fixed compilation warning.
-
-       * OleDbCommandBuilder.cs: Fixed compilation warning.
-
-2007-07-02  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbConnection.cs: Derive from DbConnection on 2.0 profile, and
-       stubbed out where necessary. Fixed attributes for ConnectionString on
-       2.0 profile. Marked several members as override on 2.0 profile.
-       Do not hide StateChange event. Code formatting.
-       * OleDbCommandBuilder.cs: On 2.0, derive from DbCommandBuilder. Do not
-       include QuotePrefix and QuoteSuffix on 2.0. Stubbed out 2.0 members.
-       * OleDbDataAdapter.cs: On 2.0, derive from DbDataAdapter. Stubbed out
-       2.0 members. Do not not override Dispose on 2.0. Code formatting.
-       * OleDbDataReader.cs: Derive from DbDataReader on 2.0 profile. Marked
-       several members as override. Stubbed VisibleFieldCount. Added
-       EditorBrowsable attribute on GetData. Added GetDbDataReader on 2.0.
-       On 2.0, override GetEnumerator instead of explicit interface
-       implementation.
-       * OleDbErrorCollection.cs: Added 2.0 CopyTo overload.
-       * OleDbInfoMessageEventHandler.cs: Do not mark class serializable on
-       2.0 profile. Fixed API mismatch.
-       * OleDbParameter.cs: On 2.0, derive from DbParameter. Added new 2.0
-       ctor.  Override properties from base class and added
-       SourceColumnNullMapping property on 2.0. Implemented ResetDbType and
-       ResetOleDbType methods on 2.0.
-       * OleDbParameterCollection.cs: Derive from DbParameterCollection on
-       2.0 profile. Marked several members as override. Implemented AddRange,
-       CopyTo, IndexOf, Insert, Remove and RemoveAt methods introduced in
-       2.0 profile. Stubbed out GetParameter and SetParameter overloads.
-       * OleDbPermission.cs: Added missing BrowsableAttribute on Provider.
-       Code formatting.
-       * OleDbPermissionAttribute.cs: Added BrowsableAttribute on Provdider
-       (2.0 only).
-       * OleDbRowUpdatedEventHandler.cs:  Do not mark class serializable on
-       2.0 profile.
-       * OleDbRowUpdatingEventArgs.cs: Removed unused command field. Added
-       BaseCommand property on 2.0
-       * OleDbRowUpdatingEventHandler.cs: Do not mark class serializable on
-       2.0 profile. Fixed API mismatch.
-       * OleDbTransaction.cs: On 2.0, derive from DbTransaction. Added
-       DbConnection property and override Dispose (both 2.0 only). On 2.0,
-       Override Commit and Rollback. Code formatting.
-
-2007-07-01  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbCommand.cs: 2.0 API fixes. Build fix.
-
-2007-07-01  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbCommand.cs: Code formatting.
-       * OleDbDataReader.cs: Code formatting.
-       * OleDbError.cs: Code formatting.
-       * OleDbErrorCollection.cs: Code formatting.
-       * OleDbException.cs: Code formatting.
-       * OleDbInfoMessageEventArgs.cs: Code formatting.
-       * OleDbParameter.cs: Code formatting.
-       * OleDbParameterCollection.cs: Code formatting.
-
-2007-06-21  Nagappan A  <anagappan@novell.com>
-
-       * OleDbConnection.cs: Fixed compiler warning.
-
-       * OleDbParameterCollection.cs (AddWithValue): Fixed compiler
-       warning.
-
-2007-02-20  Frederik Carlier <frederik.carlier@carlier-online.be>
-
-       * OleDbParameterCollection.cs: Added AddWithValue method.
-
-2007-01-08  Nagappan A  <anagappan@novell.com>
-
-       * OleDbCommand.cs: Fixed compilation warning.
-
-       * OleDbDataAdapter.cs: Fixed compilation warning.
-
-2006-07-13  Senganal T  <tsenganal@novell.com>
-       
-       * OleDbCommand : 2.0 Api fixes
-
-2006-05-31  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbErrorCollection.cs: Removed explicit interface implementation
-       of IEnumerable.GetEnumerator ().
-       * OleDbParameterCollection.cs: Removed explicit interface 
-       implementation members that are already implementation by public
-       members.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * OleDbDataAdapter.cs, OleDbCommand.cs, OleDbParameter.cs,
-       OleDbCommandBuilder.cs, OleDbConnection.cs: remove
-       DataSysDescriptions for >= 2.0.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * OleDbCommand.cs: remove extra using System.Data.  fixes warning.
-
-2005-10-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * OleDbDataReader.cs: Added a call to GC.SuppressFinalize in Dispose
-       method (and avoids calling the destructor if the object was disposed).
-       * OleDbTransaction.cs: Added a call to GC.SuppressFinalize in Dispose
-       method (even if we throw an NotImplementedException afterward). This
-       will remove warnings from gendarme.
-
-2005-09-20  Alexandre Miguel Pedro Gomes  <alexmipego@gmail.com>
-       
-       * OleDbConnection.cs: Verify and throw an exception if the
-       connection isn't valid.
-
-2005-09-13  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * Moved TestGda.cs & TestOleDb.cs to ..\Test.
-       
-2005-08-08  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * OleDbDataAdapter.cs: Fixed custom attributes to match MS.NET.
-       * OleDbCommand.cs: Fixed custom attributes to match MS.NET.
-       * OleDbParameter.cs: Fixed custom attribute to match MS.NET.
-       * OleDbException.cs: Added ErrorTypeConverter, assigned to ErrorCode
-       property to match MS.NET.
-       * OleDbConnection.cs: Fixed custom attributes to match MS.NET.
-
-2005-02-16  Lluis Sanchez Gual  <lluis@novell.com>
-
-       * OleDbCommand.cs: Make it inherit from the correct base class in 2.0,
-       and added stubs for some interface methods.
-
-2004-09-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * OleDbPermission.cs: Added internal constructor accepting an OleDb
-       PermissionAttribute parameter (using base class protected ctor).
-       Re-added the Provider property (removed by error).
-       * OleDbPermission.cs: Copy now use the new OleDbPermission
-       constructor. Re-added the Provider property (removed by error).
-
-2004-09-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * OleDbPermission.cs: Mostly completed (needs tests).
-       * OleDbPermissionAttribute.cs: Completed.
-
-2004-06-16  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * OleDbError.cs: fixed serialization compatibility with MS.NET
-       * OleDbErrorCollection.cs: fixed serialization compatibility with
-       MS.NET
-
-2004-06-13  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * OleDbLiteral.cs: changed enum field values to match MS.NET
-       * OleDbType.cs: changed enum field values to match MS.NET
-
-2004-06-04  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * OleDbDataAdapter.cs: added stub for missing 
-       Dispose override
-
-2004-06-02  Gert Driesen <drieseng@users.sourceforge.net>
-
-        * OleDbParameter.cs: added missing attributes
-        * OleDbPermission.cs: added missing attributes
-        * OleDbConnection.cs: added missing attributes
-        * OleDbDataAdapter.cs: added missing attributes
-
-2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * OleDbDataReader.cs : don't output debug message to Console.
-
-2004-05-20  Gert Driesen (drieseng@users.sourceforge.net)
-
-        *  OleDbPermissionAttribute.cs: change AllowMultiple and
-        Inherited to match .NET
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OleDbAdapter.cs -Implemented attributes, changed method signature for fill
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OleDbCommand.cs - Completed implementing all the attributes
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OleDbCommand.cs - Completed implementing all the attribute
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OleDbConnection.cs - Completed implementing all the attributes
-                           - Stubbed EnlistDistributedTransaction method
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OleDbDataAdapter.cs - Completed implementing all the attributes
-                          - Stubbed the Fill methods
-
-2004-05-14 Umadevi S (sumadevi@novell.com)
-        * OleDbParameter.cs - Completed implementing all the attributes             
-
-
-2004-05-13 Umadevi S (sumadevi@novell.com)
-       * OleDbDataReader.cs - Stubbed HasRows method
-                       - Implemented EditorBrowsableAttribute
-       * OleDbParameterConverter.cs - Stubbed this class
-       * OleDbParameter.cs - Added a few attributes.
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * OleDbCommand.cs: removed setter for Parameters property to
-       match MS.NET
-       * OleDbCommandBuilder.cs: fixed GetUpdatetCommand typo
-       * OleDbErrorCollection: added default internal ctor to match
-       MS.NET
-       * OleDbInfoMessageEventArgs.cs: added default internal ctor
-       to match MS.NET
-       * OleDbParameter.cs: added setter for IsNullable
-       * OleDbParameterCollection: added default internal ctor to
-       match MS.NET
-       * OleDbPermission.cs: removed extra IsSubsetOf method
-
-2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * OleDbPermissionAttribute.cs: missing bits from Gert's patch for
-       CLS compliance.
-
-2004-01-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * OleDbPermission.cs : NET_2_0 fix not to call obsolete .ctor.
-
-2002-11-01  Daniel Morgan <danmorg@sc.rr.com>
-
-       * OleDbDataReader.cs: implemented
-       Dispose() and GetEnumerator()
-       
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbCommand.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbCommand.cs
deleted file mode 100644 (file)
index 45109d4..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-//
-// System.Data.OleDb.OleDbCommand
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Collections;
-using System.Runtime.InteropServices;
-
-namespace System.Data.OleDb
-{
-       /// <summary>
-       /// Represents an SQL statement or stored procedure to execute against a data source.
-       /// </summary>
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.OleDbCommandDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]
-       [ToolboxItemAttribute ("System.Drawing.Design.ToolboxItem, "+ Consts.AssemblySystem_Drawing)]
-       [DefaultEvent( "RecordsAffected")]
-       public sealed class OleDbCommand : 
-       DbCommand
-       , ICloneable, IDbCommand
-       {
-               #region Fields
-
-               const int DEFAULT_COMMAND_TIMEOUT = 30;
-
-               string commandText;
-               int timeout;
-               CommandType commandType;
-               OleDbConnection connection;
-               OleDbParameterCollection parameters;
-               OleDbTransaction transaction;
-               bool designTimeVisible;
-               OleDbDataReader dataReader;
-               CommandBehavior behavior;
-               IntPtr gdaCommand;
-               UpdateRowSource updatedRowSource;
-
-               bool disposed;
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               public OleDbCommand ()
-               {
-                       timeout = DEFAULT_COMMAND_TIMEOUT;
-                       commandType = CommandType.Text;
-                       parameters = new OleDbParameterCollection ();
-                       behavior = CommandBehavior.Default;
-                       gdaCommand = IntPtr.Zero;
-                       designTimeVisible = true;
-                       this.updatedRowSource = UpdateRowSource.Both;
-               }
-
-               public OleDbCommand (string cmdText) : this ()
-               {
-                       CommandText = cmdText;
-               }
-
-               public OleDbCommand (string cmdText, OleDbConnection connection)
-                       : this (cmdText)
-               {
-                       Connection = connection;
-               }
-
-               public OleDbCommand (string cmdText, OleDbConnection connection,
-                       OleDbTransaction transaction) : this (cmdText, connection)
-               {
-                       this.transaction = transaction;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-       
-               [DataCategory ("Data")]
-               [DefaultValue ("")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.ADO.Design.OleDbCommandTextEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public 
-               override
-               string CommandText {
-                       get {
-                               if (commandText == null)
-                                       return string.Empty;
-                               return commandText;
-                       }
-                       set {
-                               commandText = value;
-                       }
-               }
-
-               public
-               override
-               int CommandTimeout {
-                       get {
-                               return timeout;
-                       }
-                       set {
-                               timeout = value;
-                       }
-               }
-
-               [DataCategory ("Data")]
-               [DefaultValue ("Text")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public
-               override
-               CommandType CommandType {
-                       get {
-                               return commandType;
-                       }
-                       set {
-                               commandType = value;
-                       }
-               }
-
-               [DataCategory ("Behavior")]
-               [DefaultValue (null)]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               public new OleDbConnection Connection {
-                       get {
-                               return connection;
-                       }
-                       set {
-                               connection = value;
-                       }
-               }
-               
-               [BrowsableAttribute (false)]
-               [DesignOnlyAttribute (true)]
-               [DefaultValue (true)]
-               [EditorBrowsable(EditorBrowsableState.Never)]
-               public
-               override
-               bool DesignTimeVisible {
-                       get {
-                               return designTimeVisible;
-                       }
-                       set {
-                               designTimeVisible = value;
-                       }
-               }
-
-               [DataCategory ("Data")]
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
-               public new OleDbParameterCollection Parameters {
-                       get { return parameters; }
-                       internal set { parameters = value; }
-               }
-
-               [BrowsableAttribute (false)]
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               public new OleDbTransaction Transaction {
-                       get {
-                               return transaction;
-                       }
-                       set {
-                               transaction = value;
-                       }
-               }
-
-               [DataCategory ("Behavior")]
-               [DefaultValue (UpdateRowSource.Both)]
-               [MonoTODO]
-               public
-               override
-               UpdateRowSource UpdatedRowSource {
-                       get { return updatedRowSource; }
-                       set {
-                               ExceptionHelper.CheckEnumValue (typeof (UpdateRowSource), value);
-                               updatedRowSource = value;
-                       }
-               }
-
-               IDbConnection IDbCommand.Connection {
-                       get {
-                               return Connection;
-                       }
-                       set {
-                               Connection = (OleDbConnection) value;
-                       }
-               }
-
-               IDataParameterCollection IDbCommand.Parameters {
-                       get {
-                               return Parameters;
-                       }
-               }
-
-               IDbTransaction IDbCommand.Transaction {
-                       get {
-                               return Transaction;
-                       }
-                       set {
-                               Transaction = (OleDbTransaction) value;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public 
-               override 
-               void Cancel () 
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public new OleDbParameter CreateParameter ()
-               {
-                       return new OleDbParameter ();
-               }
-
-               
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposed)
-                               return;
-                       
-                       Connection = null;
-                       Transaction = null;
-                       disposed = true;
-               }
-
-               private void SetupGdaCommand ()
-               {
-                       GdaCommandType type;
-                       
-                       switch (commandType) {
-                       case CommandType.TableDirect :
-                               type = GdaCommandType.Table;
-                               break;
-                       case CommandType.StoredProcedure :
-                               type = GdaCommandType.Procedure;
-                               break;
-                       case CommandType.Text :
-                       default :
-                               type = GdaCommandType.Sql;
-                               break;
-                       }
-                       
-                       if (gdaCommand != IntPtr.Zero) {
-                               libgda.gda_command_set_text (gdaCommand, CommandText);
-                               libgda.gda_command_set_command_type (gdaCommand, type);
-                       } else {
-                               gdaCommand = libgda.gda_command_new (CommandText, type, 0);
-                       }
-
-                       //libgda.gda_command_set_transaction 
-               }
-
-               public 
-               override
-               int ExecuteNonQuery ()
-               {
-                       if (connection == null)
-                               throw new InvalidOperationException ("connection == null");
-                       if (connection.State == ConnectionState.Closed)
-                               throw new InvalidOperationException ("State == Closed");
-                       // FIXME: a third check is mentioned in .NET docs
-
-                       IntPtr gdaConnection = connection.GdaConnection;
-                       IntPtr gdaParameterList = parameters.GdaParameterList;
-
-                       SetupGdaCommand ();
-                       return libgda.gda_connection_execute_non_query (gdaConnection,
-                                                                       (IntPtr) gdaCommand,
-                                                                       gdaParameterList);
-               }
-
-               public new OleDbDataReader ExecuteReader ()
-               {
-                       return ExecuteReader (behavior);
-               }
-
-               IDataReader IDbCommand.ExecuteReader ()
-               {
-                       return ExecuteReader ();
-               }
-
-               public new OleDbDataReader ExecuteReader (CommandBehavior behavior)
-               {
-                       ArrayList results = new ArrayList ();
-                       IntPtr rs_list;
-                       GdaList glist_node;
-
-                       if (connection.State != ConnectionState.Open)
-                               throw new InvalidOperationException ("State != Open");
-
-                       this.behavior = behavior;
-
-                       IntPtr gdaConnection = connection.GdaConnection;
-                       IntPtr gdaParameterList = parameters.GdaParameterList;
-
-                       /* execute the command */
-                       SetupGdaCommand ();
-                       rs_list = libgda.gda_connection_execute_command (
-                               gdaConnection,
-                               gdaCommand,
-                               gdaParameterList);
-                       if (rs_list != IntPtr.Zero) {
-                               glist_node = (GdaList) Marshal.PtrToStructure (rs_list, typeof (GdaList));
-
-                               while (glist_node != null) {
-                                       results.Add (glist_node.data);
-                                       if (glist_node.next == IntPtr.Zero)
-                                               break;
-
-                                       glist_node = (GdaList) Marshal.PtrToStructure (glist_node.next,
-                                               typeof (GdaList));
-                               }
-                               dataReader = new OleDbDataReader (this, results);
-                               dataReader.NextResult ();
-                       }
-
-                       return dataReader;
-               }
-
-               IDataReader IDbCommand.ExecuteReader (CommandBehavior behavior)
-               {
-                       return ExecuteReader (behavior);
-               }
-               
-               public
-               override
-               object ExecuteScalar ()
-               {
-                       SetupGdaCommand ();
-                       OleDbDataReader reader = ExecuteReader ();
-                       if (reader == null) {
-                               return null;
-                       }
-                       if (!reader.Read ()) {
-                               reader.Close ();
-                               return null;
-                       }
-                       object o = reader.GetValue (0);
-                       reader.Close ();
-                       return o;
-               }
-
-               public
-               OleDbCommand Clone ()
-               {
-                       OleDbCommand command = new OleDbCommand ();
-                       command.CommandText = this.CommandText;
-                       command.CommandTimeout = this.CommandTimeout;
-                       command.CommandType = this.CommandType;
-                       command.Connection = this.Connection;
-                       command.DesignTimeVisible = this.DesignTimeVisible;
-                       command.Parameters = this.Parameters;
-                       command.Transaction = this.Transaction;
-                       return command;
-               }
-
-               object ICloneable.Clone ()
-               {
-                       return Clone ();
-               }
-
-               [MonoTODO]
-               public 
-               override
-               void Prepare ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public void ResetCommandTimeout ()
-               {
-                       timeout = DEFAULT_COMMAND_TIMEOUT;
-               }
-               
-               protected override DbParameter CreateDbParameter ()
-               {
-                       return (DbParameter) CreateParameter ();
-               }
-               
-               protected override DbDataReader ExecuteDbDataReader (CommandBehavior behavior)
-               {
-                       return (DbDataReader) ExecuteReader (behavior);
-               }
-               
-               protected override DbConnection DbConnection {
-                       get { return Connection; }
-                       set { Connection = (OleDbConnection) value; }
-               }
-               
-               protected override DbParameterCollection DbParameterCollection {
-                       get { return Parameters; }
-               }
-               
-               protected override DbTransaction DbTransaction {
-                       get { return Transaction; }
-                       set { Transaction = (OleDbTransaction) value; }
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbCommandBuilder.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbCommandBuilder.cs
deleted file mode 100644 (file)
index 779fd35..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-//
-// System.Data.OleDb.OleDbCommandBuilder
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       /// <summary>
-       /// Provides a means of automatically generating single-table commands used to reconcile changes made to a DataSet with the associated database. This class cannot be inherited.
-       /// </summary>
-       public sealed class OleDbCommandBuilder :
-               DbCommandBuilder
-       {
-               #region Fields
-
-               OleDbDataAdapter adapter;
-               #endregion // Fields
-
-               #region Constructors
-               
-               public OleDbCommandBuilder ()
-               {
-               }
-
-               public OleDbCommandBuilder (OleDbDataAdapter adapter) 
-                       : this ()
-               {
-                       this.adapter = adapter;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [DefaultValue (null)]
-               public new OleDbDataAdapter DataAdapter {
-                       get {
-                               return adapter;
-                       }
-                       set {
-                               adapter = value;
-                       }
-               }
-
-
-               #endregion // Properties
-
-               #region Methods
-
-               protected override void ApplyParameterInfo (DbParameter parameter,
-                                                                   DataRow datarow,
-                                                                   StatementType statementType,
-                                                                   bool whereClause)
-               {
-                       OleDbParameter p = (OleDbParameter) parameter;
-                       p.Size = int.Parse (datarow ["ColumnSize"].ToString ());
-                       if (datarow ["NumericPrecision"] != DBNull.Value) {
-                               p.Precision = byte.Parse (datarow ["NumericPrecision"].ToString ());
-                       }
-                       if (datarow ["NumericScale"] != DBNull.Value) {
-                               p.Scale = byte.Parse (datarow ["NumericScale"].ToString ());
-                       }
-                       p.DbType = (DbType) datarow ["ProviderType"];
-               }
-
-               [MonoTODO]
-               public static void DeriveParameters (OleDbCommand command)
-               {
-                       if (command.CommandType != CommandType.StoredProcedure) {
-                               throw new InvalidOperationException ("You can perform this " +
-                                                                            "operation only on CommandTye" + 
-                                                                            " StoredProcedure");
-                       }
-                       // FIXME: Retrive info from server
-                       throw new NotImplementedException ();
-               }
-
-
-               [MonoTODO]
-               public new OleDbCommand GetDeleteCommand ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public new OleDbCommand GetDeleteCommand (bool useColumnsForParameterNames)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public new OleDbCommand GetInsertCommand ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public new OleDbCommand GetInsertCommand (bool useColumnsForParameterNames)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected override string GetParameterName (int parameterOrdinal)
-               {
-                       return String.Format("@p{0}", parameterOrdinal);
-               }
-
-               protected override string GetParameterName (string parameterName)
-               {
-                       return String.Format("@{0}", parameterName);                       
-               }
-                
-               protected override string GetParameterPlaceholder (int parameterOrdinal)
-               {
-                       return GetParameterName (parameterOrdinal);
-               }
-                
-
-               [MonoTODO]
-               public new OleDbCommand GetUpdateCommand ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public new OleDbCommand GetUpdateCommand (bool useColumnsForParameterNames)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override string QuoteIdentifier(string unquotedIdentifier)
-               {
-                       return base.QuoteIdentifier (unquotedIdentifier);
-               }
-
-               [MonoTODO]
-               public string QuoteIdentifier(string unquotedIdentifier, OleDbConnection connection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected override void SetRowUpdatingHandler(DbDataAdapter adapter)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override string UnquoteIdentifier(string quotedIdentifier)
-               {
-                       return base.UnquoteIdentifier (quotedIdentifier);
-               }
-
-               [MonoTODO]
-               public string UnquoteIdentifier(string quotedIdentifier, OleDbConnection connection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbConnection.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbConnection.cs
deleted file mode 100644 (file)
index eb22eae..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-//
-// System.Data.OleDb.OleDbConnection
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.EnterpriseServices;
-using System.Transactions;
-
-namespace System.Data.OleDb
-{
-       [DefaultEvent ("InfoMessage")]
-       public sealed class OleDbConnection : DbConnection, ICloneable
-       {
-               #region Fields
-
-               string connectionString;
-               int connectionTimeout;
-               IntPtr gdaConnection;
-
-               #endregion
-
-               #region Constructors
-               
-               public OleDbConnection ()
-               {
-                       gdaConnection = IntPtr.Zero;
-                       connectionTimeout = 15;
-               }
-
-               public OleDbConnection (string connectionString) : this ()
-               {
-                       this.connectionString = connectionString;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-               
-               [DataCategory ("Data")]
-               [DefaultValue ("")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.ADO.Design.OleDbConnectionStringEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
-               [RecommendedAsConfigurable (true)]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public override string ConnectionString {
-                       get {
-                               if (connectionString == null)
-                                       return string.Empty;
-                               return connectionString;
-                       }
-                       set {
-                               connectionString = value;
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               public override int ConnectionTimeout {
-                       get {
-                               return connectionTimeout;
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               public override 
-               string Database {
-                       get {
-                               if (gdaConnection != IntPtr.Zero
-                                       && libgda.gda_connection_is_open (gdaConnection)) {
-                                       return libgda.gda_connection_get_database (gdaConnection);
-                               }
-
-                               return string.Empty;
-                       }
-               }
-
-               [BrowsableAttribute (true)]
-               public override string DataSource {
-                       get {
-                               if (gdaConnection != IntPtr.Zero
-                                       && libgda.gda_connection_is_open (gdaConnection)) {
-                                       return libgda.gda_connection_get_dsn (gdaConnection);
-                               }
-
-                               return string.Empty;
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [BrowsableAttribute (true)]
-               public string Provider {
-                       get {
-                               if (gdaConnection != IntPtr.Zero
-                                       && libgda.gda_connection_is_open (gdaConnection)) {
-                                       return libgda.gda_connection_get_provider (gdaConnection);
-                               }
-
-                               return string.Empty;
-                       }
-               }
-
-               public override string ServerVersion {
-                       get {
-                               if (State == ConnectionState.Closed)
-                                       throw ExceptionHelper.ConnectionClosed ();
-                               return libgda.gda_connection_get_server_version (gdaConnection);
-                       }
-               }
-
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
-               [BrowsableAttribute (false)]
-               public override ConnectionState State {
-                       get {
-                               if (gdaConnection != IntPtr.Zero) {
-                                       if (libgda.gda_connection_is_open (gdaConnection))
-                                               return ConnectionState.Open;
-                               }
-
-                               return ConnectionState.Closed;
-                       }
-               }
-
-               internal IntPtr GdaConnection {
-                       get {
-                               return gdaConnection;
-                       }
-               }
-               
-               #endregion // Properties
-       
-               #region Methods
-       
-               public new OleDbTransaction BeginTransaction ()
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-                       return new OleDbTransaction (this);
-               }
-
-               public new OleDbTransaction BeginTransaction (IsolationLevel isolationLevel)
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-                       return new OleDbTransaction (this, isolationLevel);
-               }
-
-               protected override DbTransaction BeginDbTransaction(IsolationLevel isolationLevel)
-               {
-                       return BeginTransaction (isolationLevel);
-               }
-
-               protected override DbCommand CreateDbCommand()
-               {
-                       return CreateCommand ();
-               }
-
-               public override void ChangeDatabase (string value)
-               {
-                       if (State != ConnectionState.Open)
-                               throw new InvalidOperationException ();
-
-                       if (!libgda.gda_connection_change_database (gdaConnection, value))
-                               throw new OleDbException (this);
-               }
-
-               public override void Close ()
-               {
-                       if (State == ConnectionState.Open) {
-                               libgda.gda_connection_close (gdaConnection);
-                               gdaConnection = IntPtr.Zero;
-                       }
-               }
-
-               public new OleDbCommand CreateCommand ()
-               {
-                       if (State == ConnectionState.Open)
-                               return new OleDbCommand (null, this);
-
-                       return null;
-               }
-
-               [MonoTODO]
-               protected override void Dispose (bool disposing)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public DataTable GetOleDbSchemaTable (Guid schema, object[] restrictions)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException();
-               }
-
-               public
-               override
-               void Open ()
-               {
-//                     string provider = "Default";
-//                     string gdaCncStr = string.Empty;
-//                     string[] args;
-//                     int len;
-//                     char [] separator = { ';' };
-                       
-                       if (State == ConnectionState.Open)
-                               throw new InvalidOperationException ();
-
-                       libgda.gda_init ("System.Data.OleDb", "1.0", 0, new string [0]);
-
-                       gdaConnection = libgda.gda_client_open_connection (libgda.GdaClient,
-                               ConnectionString, string.Empty, string.Empty, 0);
-
-                       if (gdaConnection == IntPtr.Zero)
-                               throw new OleDbException (this);
-                       /* convert the connection string to its GDA equivalent */
-                       //args = connectionString.Split (';');
-                       //len = args.Length;
-                       //for (int i = 0; i < len; i++) {
-                       //      string[] values = args[i].Split (separator, 2);
-                       //      if (values[0] == "Provider") {
-                       //              if (values[1] == "SQLOLEDB")
-                       //                      provider = "FreeTDS";
-                       //              else if (values[1] == "MSDAORA")
-                       //                      provider = "Oracle";
-                       //              else if (values[2] == "Microsoft.Jet.OLEDB.4.0")
-                       //                      provider = "MS Access";
-                       //              else
-                       //                      provider = values[2];
-                       //      }
-                       //      else if (values[0] == "Addr" || values[0] == "Address")
-                       //              gdaCncStr = String.Concat (gdaCncStr, "HOST=", values[1], ";");
-                       //      else if (values[0] == "Database")
-                       //              gdaCncStr = String.Concat (gdaCncStr, "DATABASE=", values[1], ";");
-                       //      else if (values[0] == "Connection Lifetime")
-                       //              connectionTimeout = System.Convert.ToInt32 (values[1]);
-                       //      else if (values[0] == "File Name")
-                       //              gdaCncStr = String.Concat (gdaCncStr, "FILENAME=", values[1], ";");
-                       //      else if (values[0] == "Password" || values[0] == "Pwd")
-                       //              gdaCncStr = String.Concat (gdaCncStr, "PASSWORD=", values[1], ";");
-                       //      else if (values[0] == "User ID")
-                       //              gdaCncStr = String.Concat (gdaCncStr, "USERNAME=", values[1], ";");
-                       //}
-
-                       /* open the connection */
-                       //System.Console.WriteLine ("Opening connection for provider " +
-                       //                provider + " with " + gdaCncStr);
-                       //gdaConnection = libgda.gda_client_open_connection_from_string (libgda.GdaClient,
-                       //                                                             provider,
-                       //                                                             gdaCncStr);
-               }
-
-               [MonoTODO]
-               public static void ReleaseObjectPool ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void EnlistDistributedTransaction (ITransaction transaction)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override void EnlistTransaction (Transaction transaction)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchema ()
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchema(string collectionName)
-               {
-                       return GetSchema (collectionName, null);
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchema (String collectionName, string [] restrictionValues)
-               {
-                       if (State == ConnectionState.Closed)
-                               throw ExceptionHelper.ConnectionClosed ();
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public void ResetState ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion
-
-               #region Events and Delegates
-
-               [DataCategory ("DataCategory_InfoMessage")]
-               public event OleDbInfoMessageEventHandler InfoMessage;
-
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbDataAdapter.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbDataAdapter.cs
deleted file mode 100644 (file)
index 4cbcc58..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-//
-// System.Data.OleDb.OleDbDataAdapter
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       [DefaultEvent ("RowUpdated")]
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.OleDbDataAdapterDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]
-       [ToolboxItemAttribute ("Microsoft.VSDesigner.Data.VS.OleDbDataAdapterToolboxItem, "+ Consts.AssemblyMicrosoft_VSDesigner)]
-       public sealed class OleDbDataAdapter : DbDataAdapter, IDbDataAdapter, ICloneable
-       {
-               #region Fields
-
-               OleDbCommand deleteCommand;
-               OleDbCommand insertCommand;
-               OleDbCommand selectCommand;
-               OleDbCommand updateCommand;
-
-               #endregion
-
-               #region Constructors
-
-               public OleDbDataAdapter () : this ((OleDbCommand) null)
-               {
-               }
-
-               public OleDbDataAdapter (OleDbCommand selectCommand)
-               {
-                       SelectCommand = selectCommand;
-               }
-
-               public OleDbDataAdapter (string selectCommandText, OleDbConnection selectConnection)
-                       : this (new OleDbCommand (selectCommandText, selectConnection))
-               {
-               }
-
-               public OleDbDataAdapter (string selectCommandText, string selectConnectionString)
-                       : this (selectCommandText, new OleDbConnection (selectConnectionString))
-               {
-               }
-
-               #endregion // Fields
-
-               #region Properties
-               
-               [DefaultValue (null)]
-               [DataCategory ("Update")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
-               public new OleDbCommand DeleteCommand {
-                       get {
-                               return deleteCommand;
-                       }
-                       set {
-                               deleteCommand = value;
-                       }
-               }
-
-               [DefaultValue (null)]
-               [DataCategory ("Update")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
-               public new OleDbCommand InsertCommand {
-                       get {
-                               return insertCommand;
-                       }
-                       set {
-                               insertCommand = value;
-                       }
-               }
-
-               [DefaultValue (null)]
-               [DataCategory ("Fill")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
-               public new OleDbCommand SelectCommand {
-                       get {
-                               return selectCommand;
-                       }
-                       set {
-                               selectCommand = value;
-                       }
-               }
-
-               [DefaultValue (null)]
-               [DataCategory ("Update")]
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBCommandEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
-               public new OleDbCommand UpdateCommand {
-                       get { return updateCommand; }
-                       set { updateCommand = value; }
-               }
-
-               IDbCommand IDbDataAdapter.DeleteCommand {
-                       get { return DeleteCommand; }
-                       set { DeleteCommand = (OleDbCommand) value; }
-               }
-
-               IDbCommand IDbDataAdapter.InsertCommand {
-                       get { return InsertCommand; }
-                       set { InsertCommand = (OleDbCommand) value; }
-               }
-
-               IDbCommand IDbDataAdapter.SelectCommand {
-                       get {
-                               return SelectCommand;
-                       }
-                       set {
-                               SelectCommand = (OleDbCommand) value;
-                       }
-               }
-
-               IDbCommand IDbDataAdapter.UpdateCommand {
-                       get { return UpdateCommand; }
-                       set { UpdateCommand = (OleDbCommand) value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               protected override RowUpdatedEventArgs CreateRowUpdatedEvent (DataRow dataRow,
-                                                                             IDbCommand command,
-                                                                             StatementType statementType,
-                                                                             DataTableMapping tableMapping) 
-               {
-                       return new OleDbRowUpdatedEventArgs (dataRow, command, statementType, tableMapping);
-               }
-
-
-               protected override RowUpdatingEventArgs CreateRowUpdatingEvent (DataRow dataRow,
-                                                                               IDbCommand command,
-                                                                               StatementType statementType,
-                                                                               DataTableMapping tableMapping)
-               {
-                       return new OleDbRowUpdatingEventArgs (dataRow, command, statementType, tableMapping);
-               }
-
-               protected override void OnRowUpdated (RowUpdatedEventArgs value)
-               {
-                       if (RowUpdated != null)
-                               RowUpdated (this, (OleDbRowUpdatedEventArgs) value);
-               }
-
-               protected override void OnRowUpdating (RowUpdatingEventArgs value)
-               {
-                       if (RowUpdating != null)
-                               RowUpdating (this, (OleDbRowUpdatingEventArgs) value);
-               }
-               
-               [MonoTODO]
-               public int Fill (DataTable dataTable, Object ADODBRecordSet)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public int Fill (DataSet dataSet, Object ADODBRecordSet, String srcTable)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-
-               #endregion // Methods
-
-               #region Events and Delegates
-
-               [DataCategory ("DataCategory_Update")]
-               public event OleDbRowUpdatedEventHandler RowUpdated;
-
-               [DataCategory ("DataCategory_Update")]
-               public event OleDbRowUpdatingEventHandler RowUpdating;
-
-               #endregion // Events and Delegates
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbDataReader.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbDataReader.cs
deleted file mode 100644 (file)
index 7d4624f..0000000
+++ /dev/null
@@ -1,774 +0,0 @@
-//
-// System.Data.OleDb.OleDbDataReader
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data.Common;
-using System.Runtime.InteropServices;
-
-namespace System.Data.OleDb
-{
-       public sealed class OleDbDataReader : DbDataReader, IDisposable
-       {
-               #region Fields
-               
-               private OleDbCommand command;
-               private bool open;
-               private ArrayList gdaResults;
-               private int currentResult;
-               private int currentRow;
-               private bool disposed;
-
-               #endregion
-
-               #region Constructors
-
-               internal OleDbDataReader (OleDbCommand command, ArrayList results) 
-               {
-                       this.command = command;
-                       open = true;
-                       if (results != null)
-                               gdaResults = results;
-                       else
-                               gdaResults = new ArrayList ();
-                       currentResult = -1;
-                       currentRow = -1;
-               }
-
-               #endregion
-
-               #region Properties
-
-               public
-               override
-               int Depth {
-                       get {
-                               return 0; // no nested selects supported
-                       }
-               }
-
-               public
-               override
-               int FieldCount {
-                       get {
-                               if (currentResult < 0 || currentResult >= gdaResults.Count)
-                                       return 0;
-
-                               return libgda.gda_data_model_get_n_columns (
-                                       (IntPtr) gdaResults[currentResult]);
-                       }
-               }
-
-               public
-               override
-               bool IsClosed {
-                       get {
-                               return !open;
-                       }
-               }
-
-               public
-               override
-               object this[string name] {
-                       get {
-                               int pos;
-
-                               if (currentResult == -1)
-                                       throw new InvalidOperationException ();
-
-                               pos = libgda.gda_data_model_get_column_position (
-                                       (IntPtr) gdaResults[currentResult],
-                                       name);
-                               if (pos == -1)
-                                       throw new IndexOutOfRangeException ();
-
-                               return this[pos];
-                       }
-               }
-
-               public
-               override
-               object this[int index] {
-                       get {
-                               return (object) GetValue (index);
-                       }
-               }
-
-               public
-               override
-               int RecordsAffected {
-                       get {
-                               int total_rows;
-                               
-                               if (currentResult < 0 || currentResult >= gdaResults.Count)
-                                       return 0;
-
-                               total_rows = libgda.gda_data_model_get_n_rows (
-                                       (IntPtr) gdaResults[currentResult]);
-                               if (total_rows > 0) {
-                                       if (FieldCount > 0) {
-                                               // It's a SELECT statement
-                                               return -1;
-                                       }
-                               }
-
-                               return FieldCount > 0 ? -1 : total_rows;
-                       }
-               }
-               
-               [MonoTODO]
-               public
-               override
-               bool HasRows {
-                       get {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               [MonoTODO]
-               public override int VisibleFieldCount {
-                       get {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               #endregion
-
-               #region Methods
-
-               public
-               override
-               void Close ()
-               {
-                       for (int i = 0; i < gdaResults.Count; i++) {
-                               IntPtr obj = (IntPtr) gdaResults[i];
-                               libgda.FreeObject (obj);
-                       }
-
-                       gdaResults.Clear ();
-                       gdaResults = null;
-                       
-                       open = false;
-                       currentResult = -1;
-                       currentRow = -1;
-               }
-
-               public
-               override
-               bool GetBoolean (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                                                                   ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Boolean)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_boolean (value);
-               }
-
-               public
-               override
-               byte GetByte (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                                                                   ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Tinyint)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_tinyint (value);
-               }
-
-               [MonoTODO]
-               public
-               override
-               long GetBytes (int ordinal, long dataIndex, byte[] buffer, int bufferIndex, int length)
-               {
-                       throw new NotImplementedException ();
-               }
-               
-               [EditorBrowsableAttribute (EditorBrowsableState.Never)]
-               public
-               override
-               char GetChar (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Tinyint)
-                               throw new InvalidCastException ();
-                       return (char) libgda.gda_value_get_tinyint (value);
-               }
-
-               [MonoTODO]
-               public
-               override
-               long GetChars (int ordinal, long dataIndex, char[] buffer, int bufferIndex, int length)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public new OleDbDataReader GetData (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected override DbDataReader GetDbDataReader (int ordinal)
-               {
-                       return this.GetData (ordinal);
-               }
-
-               public
-               override
-               string GetDataTypeName (int index)
-               {
-                       IntPtr attrs;
-                       GdaValueType type;
-
-                       if (currentResult == -1)
-                               return "unknown";
-
-                       
-                       attrs = libgda.gda_data_model_describe_column ((IntPtr) gdaResults[currentResult],
-                               index);
-                       if (attrs == IntPtr.Zero)
-                               return "unknown";
-
-                       type = libgda.gda_field_attributes_get_gdatype (attrs);
-                       libgda.gda_field_attributes_free (attrs);
-                       
-                       return libgda.gda_type_to_string (type);
-               }
-
-               public
-               override
-               DateTime GetDateTime (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) == GdaValueType.Date) {
-                               GdaDate gdt;
-
-                               gdt = (GdaDate) Marshal.PtrToStructure (libgda.gda_value_get_date (value),
-                                                                       typeof (GdaDate));
-                               return new DateTime ((int) gdt.year, (int) gdt.month, (int) gdt.day);
-                       } else if (libgda.gda_value_get_type (value) == GdaValueType.Time) {
-                               GdaTime gdt;
-
-                               gdt = (GdaTime) Marshal.PtrToStructure (libgda.gda_value_get_time (value),
-                                                                       typeof (GdaTime));
-                               return new DateTime (0, 0, 0, (int) gdt.hour, (int) gdt.minute, (int) gdt.second, 0);
-                       } else if (libgda.gda_value_get_type (value) == GdaValueType.Timestamp) {
-                               GdaTimestamp gdt;
-                               
-                               gdt = (GdaTimestamp) Marshal.PtrToStructure (libgda.gda_value_get_timestamp (value),
-                                       typeof (GdaTimestamp));
-
-                               return new DateTime ((int) gdt.year, (int) gdt.month, (int) gdt.day,
-                                       (int) gdt.hour, (int) gdt.minute, (int) gdt.second,
-                                       (int) gdt.fraction);
-                       }
-
-                       throw new InvalidCastException ();
-               }
-
-               [MonoTODO]
-               public
-               override
-               decimal GetDecimal (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               double GetDouble (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                                                                   ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Double)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_double (value);
-               }
-
-               public
-               override
-               Type GetFieldType (int index)
-               {
-                       IntPtr value;
-                       GdaValueType type;
-
-                       if (currentResult == -1)
-                               throw new IndexOutOfRangeException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               index, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new IndexOutOfRangeException ();
-
-                       type = libgda.gda_value_get_type (value);
-                       switch (type) {
-                       case GdaValueType.Bigint : return typeof (long);
-                       case GdaValueType.Boolean : return typeof (bool);
-                       case GdaValueType.Date : return typeof (DateTime);
-                       case GdaValueType.Double : return typeof (double);
-                       case GdaValueType.Integer : return typeof (int);
-                       case GdaValueType.Single : return typeof (float);
-                       case GdaValueType.Smallint : return typeof (byte);
-                       case GdaValueType.String : return typeof (string);
-                       case GdaValueType.Time : return typeof (DateTime);
-                       case GdaValueType.Timestamp : return typeof (DateTime);
-                       case GdaValueType.Tinyint : return typeof (byte);
-                       }
-
-                       return typeof(string); // default
-               }
-
-               public
-               override
-               float GetFloat (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Single)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_single (value);
-               }
-
-               [MonoTODO]
-               public
-               override
-               Guid GetGuid (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               short GetInt16 (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Smallint)
-                               throw new InvalidCastException ();
-                       return (short) libgda.gda_value_get_smallint (value);
-               }
-
-               public
-               override
-               int GetInt32 (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Integer)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_integer (value);
-               }
-
-               public
-               override
-               long GetInt64 (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.Bigint)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_bigint (value);
-               }
-
-               public
-               override
-               string GetName (int index)
-               {
-                       if (currentResult == -1)
-                               return null;
-
-                       return libgda.gda_data_model_get_column_title (
-                               (IntPtr) gdaResults[currentResult], index);
-               }
-
-               public
-               override
-               int GetOrdinal (string name)
-               {
-                       if (currentResult == -1)
-                               throw new IndexOutOfRangeException ();
-
-                       for (int i = 0; i < FieldCount; i++) {
-                               if (GetName (i) == name)
-                                       return i;
-                       }
-
-                       throw new IndexOutOfRangeException ();
-               }
-
-               public
-               override
-               DataTable GetSchemaTable ()
-               {
-                       DataTable dataTableSchema = null;
-                       // Only Results from SQL SELECT Queries 
-                       // get a DataTable for schema of the result
-                       // otherwise, DataTable is null reference
-                       if(this.FieldCount > 0) {
-
-                               IntPtr attrs;
-                               GdaValueType gdaType;
-                               long columnSize = 0;
-
-                               if (currentResult == -1) {
-                                       // FIXME: throw an exception?
-#if DEBUG_OleDbDataReader
-                                       Console.WriteLine("Error: current result -1");
-#endif
-                                       return null;
-                               }
-                                               
-                               dataTableSchema = new DataTable ();
-                               
-                               dataTableSchema.Columns.Add ("ColumnName", typeof (string));
-                               dataTableSchema.Columns.Add ("ColumnOrdinal", typeof (int));
-                               dataTableSchema.Columns.Add ("ColumnSize", typeof (int));
-                               dataTableSchema.Columns.Add ("NumericPrecision", typeof (int));
-                               dataTableSchema.Columns.Add ("NumericScale", typeof (int));
-                               dataTableSchema.Columns.Add ("IsUnique", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsKey", typeof (bool));
-                               DataColumn dc = dataTableSchema.Columns["IsKey"];
-                               dc.AllowDBNull = true; // IsKey can have a DBNull
-                               dataTableSchema.Columns.Add ("BaseCatalogName", typeof (string));
-                               dataTableSchema.Columns.Add ("BaseColumnName", typeof (string));
-                               dataTableSchema.Columns.Add ("BaseSchemaName", typeof (string));
-                               dataTableSchema.Columns.Add ("BaseTableName", typeof (string));
-                               dataTableSchema.Columns.Add ("DataType", typeof(Type));
-                               dataTableSchema.Columns.Add ("AllowDBNull", typeof (bool));
-                               dataTableSchema.Columns.Add ("ProviderType", typeof (int));
-                               dataTableSchema.Columns.Add ("IsAliased", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsExpression", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsIdentity", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsAutoIncrement", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsRowVersion", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsHidden", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsLong", typeof (bool));
-                               dataTableSchema.Columns.Add ("IsReadOnly", typeof (bool));
-
-                               DataRow schemaRow;
-
-                               for (int i = 0; i < this.FieldCount; i += 1 ) {
-                                       
-                                       schemaRow = dataTableSchema.NewRow ();
-
-                                       attrs = libgda.gda_data_model_describe_column ((IntPtr) gdaResults[currentResult],
-                                               i);
-                                       if (attrs == IntPtr.Zero){
-                                               // FIXME: throw exception
-#if DEBUG_OleDbDataReader
-                                               Console.WriteLine("Error: attrs null");
-#endif
-                                               return null;
-                                       }
-
-                                       gdaType = libgda.gda_field_attributes_get_gdatype (attrs);
-                                       columnSize = libgda.gda_field_attributes_get_defined_size (attrs);
-                                       libgda.gda_field_attributes_free (attrs);
-                                       
-                                       schemaRow["ColumnName"] = this.GetName(i);
-                                       schemaRow["ColumnOrdinal"] = i + 1;
-                                       
-                                       schemaRow["ColumnSize"] = (int) columnSize;
-                                       schemaRow["NumericPrecision"] = 0;
-                                       schemaRow["NumericScale"] = 0;
-                                       // TODO: need to get KeyInfo
-                                       //if((cmdBehavior & CommandBehavior.KeyInfo) == CommandBehavior.KeyInfo) {
-                                               // bool IsUnique, IsKey;
-                                               // GetKeyInfo(field[i].Name, out IsUnique, out IsKey);
-                                       //}
-                                       //else {
-                                               schemaRow["IsUnique"] = false;
-                                               schemaRow["IsKey"] = DBNull.Value;
-                                       //}
-                                       schemaRow["BaseCatalogName"] = "";
-                                       
-                                       schemaRow["BaseColumnName"] = this.GetName(i);
-                                       schemaRow["BaseSchemaName"] = "";
-                                       schemaRow["BaseTableName"] = "";
-
-                                       schemaRow["DataType"] = this.GetFieldType(i);
-
-                                       schemaRow["AllowDBNull"] = false;
-                                       
-                                       schemaRow["ProviderType"] = (int) gdaType;
-                                       schemaRow["IsAliased"] = false;
-                                       schemaRow["IsExpression"] = false;
-                                       schemaRow["IsIdentity"] = false;
-                                       schemaRow["IsAutoIncrement"] = false;
-                                       schemaRow["IsRowVersion"] = false;
-                                       schemaRow["IsHidden"] = false;
-                                       schemaRow["IsLong"] = false;
-                                       schemaRow["IsReadOnly"] = false;
-                                       
-                                       schemaRow.AcceptChanges();
-                                       
-                                       dataTableSchema.Rows.Add (schemaRow);
-                               }
-                               
-#if DEBUG_OleDbDataReader
-                               Console.WriteLine("********** DEBUG Table Schema BEGIN ************");
-                               foreach (DataRow myRow in dataTableSchema.Rows) {
-                                       foreach (DataColumn myCol in dataTableSchema.Columns)
-                                               Console.WriteLine(myCol.ColumnName + " = " + myRow[myCol]);
-                                       Console.WriteLine();
-                               }
-                               Console.WriteLine("********** DEBUG Table Schema END ************");
-#endif // DEBUG_OleDbDataReader
-
-                       }
-                       
-                       return dataTableSchema;
-               }
-
-               public
-               override
-               string GetString (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new InvalidCastException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new InvalidCastException ();
-                       
-                       if (libgda.gda_value_get_type (value) != GdaValueType.String)
-                               throw new InvalidCastException ();
-                       return libgda.gda_value_get_string (value);
-               }
-
-               [MonoTODO]
-               public TimeSpan GetTimeSpan (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               object GetValue (int ordinal)
-               {
-                       IntPtr value;
-                       GdaValueType type;
-
-                       if (currentResult == -1)
-                               throw new IndexOutOfRangeException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new IndexOutOfRangeException ();
-
-                       type = libgda.gda_value_get_type (value);
-                       switch (type) {
-                       case GdaValueType.Bigint : return GetInt64 (ordinal);
-                       case GdaValueType.Boolean : return GetBoolean (ordinal);
-                       case GdaValueType.Date : return GetDateTime (ordinal);
-                       case GdaValueType.Double : return GetDouble (ordinal);
-                       case GdaValueType.Integer : return GetInt32 (ordinal);
-                       case GdaValueType.Single : return GetFloat (ordinal);
-                       case GdaValueType.Smallint : return GetByte (ordinal);
-                       case GdaValueType.String : return GetString (ordinal);
-                       case GdaValueType.Time : return GetDateTime (ordinal);
-                       case GdaValueType.Timestamp : return GetDateTime (ordinal);
-                       case GdaValueType.Tinyint : return GetByte (ordinal);
-                       }
-
-                       return (object) libgda.gda_value_stringify (value);
-               }
-
-               [MonoTODO]
-               public
-               override
-               int GetValues (object[] values)
-               {
-                       throw new NotImplementedException ();
-               }
-
-
-               public override IEnumerator GetEnumerator()
-               {
-                       return new DbEnumerator(this);
-               }
-
-               public
-               override
-               bool IsDBNull (int ordinal)
-               {
-                       IntPtr value;
-
-                       if (currentResult == -1)
-                               throw new IndexOutOfRangeException ();
-
-                       value = libgda.gda_data_model_get_value_at ((IntPtr) gdaResults[currentResult],
-                               ordinal, currentRow);
-                       if (value == IntPtr.Zero)
-                               throw new IndexOutOfRangeException ();
-
-                       return libgda.gda_value_is_null (value);
-               }
-
-               public
-               override
-               bool NextResult ()
-               {
-                       int i = currentResult + 1;
-                       if (i >= 0 && i < gdaResults.Count) {
-                               currentResult++;
-                               return true;
-                       }
-
-                       return false;
-               }
-
-               public
-               override
-               bool Read ()
-               {
-                       if (currentResult < 0 || currentResult >= gdaResults.Count)
-                               return false;
-
-                       currentRow++;
-                       if (currentRow < libgda.gda_data_model_get_n_rows ((IntPtr) gdaResults[currentResult]))
-                               return true;
-
-                       return false;
-               }
-
-               #endregion
-
-               #region Destructors
-
-               private new void Dispose (bool disposing)
-               {
-                       if (!this.disposed) {
-                               if (disposing) {
-                                       // release any managed resources
-                                       command = null;
-                                       GC.SuppressFinalize (this);
-                               }
-                               // release any unmanaged resources
-                               if (gdaResults != null) {
-                                       gdaResults.Clear ();
-                                       gdaResults = null;
-                               }
-
-                               // close any handles
-                               if (open)
-                                       Close ();
-
-                               this.disposed = true;
-                       }
-               }
-
-               void IDisposable.Dispose() {
-                       Dispose (true);
-               }
-
-               #endregion // Destructors
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbError.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbError.cs
deleted file mode 100644 (file)
index 9f2dbdf..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// System.Data.OleDb.OleDbError
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       [Serializable]
-       public sealed class OleDbError
-       {
-               private string message;
-               private int nativeError;
-               private string source;
-               private string sqlState;
-
-               #region Constructors
-
-               internal OleDbError (string msg, int code, string source, string sql)
-               {
-                       message = msg;
-                       nativeError = code;
-                       this.source = source;
-                       sqlState = sql;
-               }
-               
-               #endregion // Constructors
-               
-               #region Properties
-
-               public string Message {
-                       get {
-                               return message;
-                       }
-               }
-
-               public int NativeError {
-                       get {
-                               return nativeError;
-                       }
-               }
-
-               public string Source {
-                       get {
-                               return source;
-                       }
-               }
-
-               public string SQLState {
-                       get {
-                               return sqlState;
-                       }
-               }
-
-               #endregion
-
-               #region Methods
-               
-               [MonoTODO]
-               public override string ToString ()
-               {
-                       string toStr;
-                       String stackTrace = " <Stack Trace>";
-                       // FIXME: generate the correct SQL error string
-                       toStr = "OleDbError:" + message + stackTrace;
-                       return toStr;
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbErrorCollection.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbErrorCollection.cs
deleted file mode 100644 (file)
index 1099eb6..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// System.Data.OleDb.OleDbErrorCollection
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       [ListBindableAttribute ( false)]
-       [Serializable]
-       public sealed class OleDbErrorCollection : ICollection, IEnumerable
-       {
-               #region Fields
-
-               ArrayList items;
-       
-               #endregion // Fields
-
-               #region Constructors
-
-               internal OleDbErrorCollection() {
-               }
-
-               #endregion Constructors
-
-               #region Properties 
-
-               public int Count {
-                       get {
-                               return items.Count;
-                       }
-               }
-
-               public OleDbError this[int index] {
-                       get {
-                               return (OleDbError) items[index];
-                       }
-               }
-
-               object ICollection.SyncRoot {
-                       get {
-                               return items.SyncRoot;
-                       }
-               }
-
-               bool ICollection.IsSynchronized {
-                       get {
-                               return items.IsSynchronized;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               internal void Add (OleDbError error)
-               {
-                       items.Add ((object) error);
-               }
-               
-               public void CopyTo (Array array, int index) 
-               {
-                       if (array == null)
-                               throw new ArgumentNullException("array");
-
-                       if ((index < array.GetLowerBound (0)) || (index > array.GetUpperBound (0)))
-                               throw new ArgumentOutOfRangeException("index");
-
-                       // is the check for IsFixedSize required?
-                       if ((array.IsFixedSize) || (index + this.Count > array.GetUpperBound (0)))
-                               throw new ArgumentException("array");
-
-                       ((OleDbError[]) (items.ToArray ())).CopyTo (array, index);
-               }
-
-               public void CopyTo (OleDbError [] array, int index)
-               {
-                       items.CopyTo (array, index);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return items.GetEnumerator ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbException.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbException.cs
deleted file mode 100644 (file)
index bffd853..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-//
-// System.Data.OleDb.OleDbException
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Runtime.Serialization;
-
-namespace System.Data.OleDb
-{
-       [Serializable]
-       public sealed class OleDbException : DbException
-       {
-               private OleDbConnection connection;
-
-               #region Constructors
-
-               internal OleDbException (OleDbConnection cnc)
-               {
-                       connection = cnc;
-               }
-               
-               #endregion // Constructors
-               
-               #region Properties
-
-               [TypeConverterAttribute (typeof (OleDbException.ErrorCodeConverter))]
-               public override int ErrorCode {
-                       get {
-                               GdaList glist;
-                               IntPtr errors;
-
-                               errors = libgda.gda_connection_get_errors (connection.GdaConnection);
-                               if (errors != IntPtr.Zero) {
-                                       glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
-                                       return (int) libgda.gda_error_get_number (glist.data);
-                               }
-
-                               return -1;
-                       }
-               }
-               
-               [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
-               public OleDbErrorCollection Errors {
-                       get {
-                               GdaList glist;
-                               IntPtr errors;
-                               OleDbErrorCollection col = new OleDbErrorCollection ();
-                               
-                               errors = libgda.gda_connection_get_errors (connection.GdaConnection);
-                               if (errors != IntPtr.Zero) {
-                                       glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
-                                       while (glist != null) {
-                                               col.Add (new OleDbError (
-                                                                libgda.gda_error_get_description (glist.data),
-                                                                (int) libgda.gda_error_get_number (glist.data),
-                                                                libgda.gda_error_get_source (glist.data),
-                                                                libgda.gda_error_get_sqlstate (glist.data)));
-                                               glist = (GdaList) Marshal.PtrToStructure (glist.next,
-                                                                                         typeof (GdaList));
-                                       }
-                               }
-
-                               return col;
-                       }
-               }
-
-               new public string Message {
-                       get {
-                               GdaList glist;
-                               IntPtr errors;
-                               string msg = "";
-
-                               errors = libgda.gda_connection_get_errors (connection.GdaConnection);
-                               if (errors != IntPtr.Zero) {
-                                       glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
-                                       while (glist != null) {
-                                               msg = msg + ";" +  libgda.gda_error_get_description (glist.data);
-                                               glist = (GdaList) Marshal.PtrToStructure (glist.next,
-                                                                                         typeof (GdaList));
-                                       }
-
-                                       return msg;
-                               }
-
-                               return null;
-                       }
-               }
-
-               new public string Source {
-                       get {
-                               GdaList glist;
-                               IntPtr errors;
-
-                               errors = libgda.gda_connection_get_errors (connection.GdaConnection);
-                               if (errors != IntPtr.Zero) {
-                                       glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
-                                       return libgda.gda_error_get_source (glist.data);
-                               }
-
-                               return null;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override void GetObjectData (SerializationInfo si, StreamingContext context)
-               {
-                       if (si == null)
-                               throw new ArgumentNullException ("si");
-
-                       si.AddValue ("connection", connection);
-                       base.GetObjectData (si, context);
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-
-               internal sealed class ErrorCodeConverter : Int32Converter
-               {
-                       [MonoTODO]
-                       public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
-                               return base.ConvertTo (context, culture, value, destinationType);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbFactory.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbFactory.cs
deleted file mode 100644 (file)
index 07e27d2..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// System.Data.oleDb.OleDbFactory
-//
-// Author:
-//     Gonzalo Paniagua (gonzalo@novell.com)
-//    
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.OleDb {
-       public sealed class OleDbFactory : DbProviderFactory {
-               public static readonly OleDbFactory Instance = new OleDbFactory ();
-
-               private OleDbFactory()
-               {
-               }
-
-               public override DbCommand CreateCommand ()
-               {
-                       return new OleDbCommand ();
-               }
-
-               public override DbCommandBuilder CreateCommandBuilder ()
-               {
-                       return new OleDbCommandBuilder ();
-               }
-
-               public override DbConnection CreateConnection ()
-               {
-                       return new OleDbConnection ();
-               }
-
-               public override DbConnectionStringBuilder CreateConnectionStringBuilder ()
-               {
-                       //TODO: Once we have an OleDbConnectionStringBuilder implementation, comment the next line out
-                       //return new OleDbConnectionStringBuilder ();
-                       return null;
-               }
-
-               public override DbDataAdapter CreateDataAdapter ()
-               {
-                       return new OleDbDataAdapter ();
-               }
-
-               public override DbParameter CreateParameter ()
-               {
-                       return new OleDbParameter ();
-               }
-
-               public override CodeAccessPermission CreatePermission (PermissionState state)
-               {
-                       return new OleDbPermission (state);
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbInfoMessageEventArgs.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbInfoMessageEventArgs.cs
deleted file mode 100644 (file)
index 6eed2eb..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.Data.OleDb.OleDbInfoMessageEventArgs
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public sealed class OleDbInfoMessageEventArgs : EventArgs
-       {
-               #region Constructors
-
-               internal OleDbInfoMessageEventArgs ()
-               {
-               }
-
-               #endregion Constructors
-
-               #region Properties
-
-               public int ErrorCode {
-                       [MonoTODO]
-                       get { throw new NotImplementedException (); }
-               }
-
-               public OleDbErrorCollection Errors {
-                       [MonoTODO]
-                       get { throw new NotImplementedException (); }
-               }
-
-               public string Message {
-                       [MonoTODO]
-                       get { throw new NotImplementedException (); }
-               }
-
-               public string Source {
-                       [MonoTODO]
-                       get { throw new NotImplementedException (); }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public override string ToString ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbInfoMessageEventHandler.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbInfoMessageEventHandler.cs
deleted file mode 100644 (file)
index c8bec34..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Data.OleDb.OleDbInfoMessageEventHandler
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public delegate void OleDbInfoMessageEventHandler (object sender, OleDbInfoMessageEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbLiteral.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbLiteral.cs
deleted file mode 100644 (file)
index 5f6d1db..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// System.Data.OleDb.OleDbLiteral
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public enum OleDbLiteral {
-               Binary_Literal = 1,
-               Catalog_Name = 2,
-               Catalog_Separator = 3,
-               Char_Literal = 4,
-               Column_Alias = 5,
-               Column_Name = 6,
-               Correlation_Name = 7,
-               Cube_Name = 21,
-               Cursor_Name = 8,
-               Dimension_Name = 22,
-               Escape_Percent_Prefix = 9,
-               Escape_Percent_Suffix = 29,
-               Escape_Underscore_Prefix = 10,
-               Escape_Underscore_Suffix = 30,
-               Hierarchy_Name = 23,
-               Index_Name = 11,
-               Invalid = 0,
-               Level_Name = 24,
-               Like_Percent = 12,
-               Like_Underscore = 13,
-               Member_Name = 25,
-               Procedure_Name = 14,
-               Property_Name = 26,
-               Quote_Prefix = 15,
-               Quote_Suffix = 28,
-               Schema_Name = 16,
-               Schema_Separator = 27,
-               Table_Name = 17,
-               Text_Command = 18,
-               User_Name = 19,
-               View_Name = 20
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbMetaDataCollectionNames.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbMetaDataCollectionNames.cs
deleted file mode 100644 (file)
index ec18726..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Data.OleDb.OleDbMetaDataCollectionNames.cs
-//
-// Author:
-//   Ankit Jain <jankit@novell.com>
-//
-//
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data.OleDb
-{
-       /// <summary>
-       /// Collection names
-       /// </summary>
-       public static class OleDbMetaDataCollectionNames {
-               public static readonly string Catalogs = "Catalogs";
-               public static readonly string Collations = "Collations";
-               public static readonly string Columns = "Columns";
-               public static readonly string Indexes = "Indexes";
-               public static readonly string ProcedureColumns = "ProcedureColumns";
-               public static readonly string ProcedureParameters = "ProcedureParameters";
-               public static readonly string Procedures = "Procedures";
-               public static readonly string Tables = "Tables";
-               public static readonly string Views = "Views";
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbParameter.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbParameter.cs
deleted file mode 100644 (file)
index 1904c4e..0000000
+++ /dev/null
@@ -1,458 +0,0 @@
-//
-// System.Data.OleDb.OleDbParameter
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-using System.ComponentModel;
-
-namespace System.Data.OleDb
-{
-       [TypeConverterAttribute ("System.Data.OleDb.OleDbParameter+OleDbParameterConverter, " + Consts.AssemblySystem_Data)]
-       public sealed class OleDbParameter : DbParameter, IDbDataParameter, ICloneable
-       {
-               #region Fields
-
-               string name;
-               object value;
-               int size;
-               bool isNullable;
-               byte precision;
-               byte scale;
-               DataRowVersion sourceVersion;
-               string sourceColumn;
-               bool sourceColumnNullMapping;
-               ParameterDirection direction;
-               OleDbType oleDbType;
-               DbType dbType;
-               OleDbParameterCollection container;
-               IntPtr gdaParameter;
-
-               #endregion
-
-               #region Constructors
-               
-               public OleDbParameter ()
-               {
-                       name = string.Empty;
-                       isNullable = true;
-                       sourceColumn = string.Empty;
-                       gdaParameter = IntPtr.Zero;
-               }
-
-               public OleDbParameter (string name, object value) 
-                       : this ()
-               {
-                       this.name = name;
-                       this.value = value;
-                       OleDbType = GetOleDbType (value);
-               }
-
-               public OleDbParameter (string name, OleDbType dataType) 
-                       : this ()
-               {
-                       this.name = name;
-                       OleDbType = dataType;
-               }
-
-               public OleDbParameter (string name, OleDbType dataType, int size)
-                       : this (name, dataType)
-               {
-                       this.size = size;
-               }
-
-               public OleDbParameter (string name, OleDbType dataType, int size, string srcColumn)
-                       : this (name, dataType, size)
-               {
-                       this.sourceColumn = srcColumn;
-               }
-               
-               [EditorBrowsableAttribute (EditorBrowsableState.Advanced)]
-               public OleDbParameter (string parameterName, OleDbType dbType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string srcColumn, DataRowVersion srcVersion, object value)
-                       : this (parameterName, dbType, size, srcColumn)
-               {
-                       this.direction = direction;
-                       this.isNullable = isNullable;
-                       this.precision = precision;
-                       this.scale = scale;
-                       this.sourceVersion = srcVersion;
-                       this.value = value;
-               }
-
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public OleDbParameter (string parameterName, OleDbType dbType, int size, ParameterDirection direction, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, bool sourceColumnNullMapping, object value)
-                       : this (parameterName, dbType, size, sourceColumn)
-               {
-                       this.direction = direction;
-                       this.precision = precision;
-                       this.scale = scale;
-                       this.sourceVersion = sourceVersion;
-                       this.sourceColumnNullMapping = sourceColumnNullMapping;
-                       this.value = value;
-               }
-
-               #endregion
-
-               #region Properties
-
-               [DataCategory ("DataCategory_Data")]
-               public
-               override
-               DbType DbType {
-                       get { return dbType; }
-                       set {
-                               dbType = value;
-                               oleDbType = DbTypeToOleDbType (value);
-                       }
-               }
-
-               [RefreshProperties (RefreshProperties.All)]
-               [DataCategory ("DataCategory_Data")]
-               public
-               override
-               ParameterDirection Direction {
-                       get { return direction; }
-                       set { direction = value; }
-               }
-
-               public
-               override
-               bool IsNullable {
-                       get { return isNullable; }
-                       set { isNullable = value; }
-               }
-
-               [DbProviderSpecificTypeProperty (true)]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [DataCategory ("DataCategory_Data")]
-               public OleDbType OleDbType {
-                       get { return oleDbType; }
-                       set {
-                               oleDbType = value;
-                               dbType = OleDbTypeToDbType (value);
-                       }
-               }
-
-               public
-               override
-               string ParameterName {
-                       get { return name; }
-                       set { name = value; }
-               }
-
-               [DefaultValue (0)]
-               [DataCategory ("DataCategory_Data")]
-               public byte Precision {
-                       get { return precision; }
-                       set { precision = value; }
-               }
-
-               [DefaultValue (0)]
-               [DataCategory ("DataCategory_Data")]
-               public byte Scale {
-                       get { return scale; }
-                       set { scale = value; }
-               }
-
-               [DataCategory ("DataCategory_Data")]
-               public
-               override
-               int Size {
-                       get { return size; }
-                       set { size = value; }
-               }
-
-               [DataCategory ("DataCategory_Data")]
-               public
-               override
-               string SourceColumn {
-                       get { return sourceColumn; }
-                       set { sourceColumn = value; }
-               }
-
-               public override bool SourceColumnNullMapping {
-                       get {
-                               return sourceColumnNullMapping;
-                       } set {
-                               sourceColumnNullMapping = value;
-                       }
-               }
-
-               [DataCategory ("DataCategory_Data")]
-               public
-               override
-               DataRowVersion SourceVersion {
-                       get { return sourceVersion; }
-                       set { sourceVersion = value; }
-               }
-
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [TypeConverter (typeof (StringConverter))]
-               [DataCategory ("DataCategory_Data")]
-               public
-               override
-               object Value {
-                       get { return value; }
-                       set { this.value = value; }
-               }
-
-               // Used to ensure that only one collection can contain this
-               // parameter
-               internal OleDbParameterCollection Container {
-                       get { return container; }
-                       set { container = value; }
-               }
-
-               #endregion // Properties
-
-               #region Internal Properties
-
-               internal IntPtr GdaParameter {
-                       get { return gdaParameter; }
-               }
-
-               #endregion // Internal Properties
-
-               #region Methods
-
-               [MonoTODO]
-               object ICloneable.Clone ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void ResetDbType ()
-               {
-                       ResetOleDbType ();
-               }
-
-               public void ResetOleDbType ()
-               {
-                       oleDbType = GetOleDbType (Value);
-                       dbType = OleDbTypeToDbType (oleDbType);
-               }
-
-               public override string ToString ()
-               {
-                       return ParameterName;
-               }
-
-               private OleDbType DbTypeToOleDbType (DbType dbType)
-               {
-                       switch (dbType) {
-                       case DbType.AnsiString :
-                               return OleDbType.VarChar;
-                       case DbType.AnsiStringFixedLength :
-                               return OleDbType.Char;
-                       case DbType.Binary :
-                               return OleDbType.Binary;
-                       case DbType.Boolean :
-                               return OleDbType.Boolean;
-                       case DbType.Byte :
-                               return OleDbType.UnsignedTinyInt;
-                       case DbType.Currency :
-                               return OleDbType.Currency;
-                       case DbType.Date :
-                               return OleDbType.Date;
-                       case DbType.DateTime :
-                               throw new NotImplementedException ();
-                       case DbType.Decimal :
-                               return OleDbType.Decimal;
-                       case DbType.Double :
-                               return OleDbType.Double;
-                       case DbType.Guid :
-                               return OleDbType.Guid;
-                       case DbType.Int16 :
-                               return OleDbType.SmallInt;
-                       case DbType.Int32 :
-                               return OleDbType.Integer;
-                       case DbType.Int64 :
-                               return OleDbType.BigInt;
-                       case DbType.Object :
-                               return OleDbType.Variant;
-                       case DbType.SByte :
-                               return OleDbType.TinyInt;
-                       case DbType.Single :
-                               return OleDbType.Single;
-                       case DbType.String :
-                               return OleDbType.WChar;
-                       case DbType.StringFixedLength :
-                               return OleDbType.VarWChar;
-                       case DbType.Time :
-                               throw new NotImplementedException ();
-                       case DbType.UInt16 :
-                               return OleDbType.UnsignedSmallInt;
-                       case DbType.UInt32 :
-                               return OleDbType.UnsignedInt;
-                       case DbType.UInt64 :
-                               return OleDbType.UnsignedBigInt;
-                       case DbType.VarNumeric :
-                               return OleDbType.VarNumeric;
-                       }
-                       return OleDbType.Variant;
-               }
-
-               private DbType OleDbTypeToDbType (OleDbType oleDbType)
-               {
-                       switch (oleDbType) {
-                       case OleDbType.BigInt :
-                               return DbType.Int64;
-                       case OleDbType.Binary :
-                               return DbType.Binary;
-                       case OleDbType.Boolean :
-                               return DbType.Boolean;
-                       case OleDbType.BSTR :
-                               return DbType.AnsiString;
-                       case OleDbType.Char :
-                               return DbType.AnsiStringFixedLength;
-                       case OleDbType.Currency :
-                               return DbType.Currency;
-                       case OleDbType.Date :
-                               return DbType.DateTime;
-                       case OleDbType.DBDate :
-                               return DbType.DateTime;
-                       case OleDbType.DBTime :
-                               throw new NotImplementedException ();
-                       case OleDbType.DBTimeStamp :
-                               return DbType.DateTime;
-                       case OleDbType.Decimal :
-                               return DbType.Decimal;
-                       case OleDbType.Double :
-                               return DbType.Double;
-                       case OleDbType.Empty :
-                               throw new NotImplementedException ();
-                       case OleDbType.Error :
-                               throw new NotImplementedException ();
-                       case OleDbType.Filetime :
-                               return DbType.DateTime;
-                       case OleDbType.Guid :
-                               return DbType.Guid;
-                       case OleDbType.IDispatch :
-                               return DbType.Object;
-                       case OleDbType.Integer :
-                               return DbType.Int32;
-                       case OleDbType.IUnknown :
-                               return DbType.Object;
-                       case OleDbType.LongVarBinary :
-                               return DbType.Binary;
-                       case OleDbType.LongVarChar :
-                               return DbType.AnsiString;
-                       case OleDbType.LongVarWChar :
-                               return DbType.String;
-                       case OleDbType.Numeric :
-                               return DbType.Decimal;
-                       case OleDbType.PropVariant :
-                               return DbType.Object;
-                       case OleDbType.Single :
-                               return DbType.Single;
-                       case OleDbType.SmallInt :
-                               return DbType.Int16;
-                       case OleDbType.TinyInt :
-                               return DbType.SByte;
-                       case OleDbType.UnsignedBigInt :
-                               return DbType.UInt64;
-                       case OleDbType.UnsignedInt :
-                               return DbType.UInt32;
-                       case OleDbType.UnsignedSmallInt :
-                               return DbType.UInt16;
-                       case OleDbType.UnsignedTinyInt :
-                               return DbType.Byte;
-                       case OleDbType.VarBinary :
-                               return DbType.Binary;
-                       case OleDbType.VarChar :
-                               return DbType.AnsiString;
-                       case OleDbType.Variant :
-                               return DbType.Object;
-                       case OleDbType.VarNumeric :
-                               return DbType.VarNumeric;
-                       case OleDbType.VarWChar :
-                               return DbType.StringFixedLength;
-                       case OleDbType.WChar :
-                               return DbType.String;
-                       }
-                       return DbType.Object;
-               }
-
-               private OleDbType GetOleDbType (object value)
-               {
-                       if (value is Guid) return OleDbType.Guid;
-                       if (value is TimeSpan) return OleDbType.DBTime;
-
-                       switch (Type.GetTypeCode (value.GetType ())) {
-                       case TypeCode.Boolean :
-                               return OleDbType.Boolean;
-                       case TypeCode.Byte :
-                               if (value.GetType().IsArray) 
-                                       return OleDbType.Binary;
-                               else 
-                                       return OleDbType.UnsignedTinyInt;
-                       case TypeCode.Char :
-                               return OleDbType.Char;
-                       case TypeCode.DateTime :
-                               return OleDbType.Date;
-                       case TypeCode.DBNull :
-                               return OleDbType.Empty;
-                       case TypeCode.Decimal :
-                               return OleDbType.Decimal;
-                       case TypeCode.Double :
-                               return OleDbType.Double;
-                       case TypeCode.Empty :
-                               return OleDbType.Empty;
-                       case TypeCode.Int16 :
-                               return OleDbType.SmallInt;
-                       case TypeCode.Int32 :
-                               return OleDbType.Integer;
-                       case TypeCode.Int64 :
-                               return OleDbType.BigInt;
-                       case TypeCode.SByte :
-                               return OleDbType.TinyInt;
-                       case TypeCode.String :
-                               return OleDbType.VarChar;
-                       case TypeCode.Single :
-                               return OleDbType.Single;
-                       case TypeCode.UInt64 :
-                               return OleDbType.UnsignedBigInt;
-                       case TypeCode.UInt32 :
-                               return OleDbType.UnsignedInt;
-                       case TypeCode.UInt16 :
-                               return OleDbType.UnsignedSmallInt;
-                       case TypeCode.Object :
-                               return OleDbType.Variant;
-                       }
-                       return OleDbType.IUnknown;
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbParameterCollection.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbParameterCollection.cs
deleted file mode 100644 (file)
index 588dc22..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-//
-// System.Data.OleDb.OleDbParameterCollection
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//   Umadevi S  (sumadevi@novell.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) Novell Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Data;
-using System.Data.Common;
-using System.ComponentModel;
-
-namespace System.Data.OleDb
-{
-       [ListBindable (false)]
-       [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DBParametersEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing)]
-       public sealed class OleDbParameterCollection :
-               DbParameterCollection, IList, ICollection, IDataParameterCollection
-       {
-               #region Fields
-
-               ArrayList list = new ArrayList ();
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal OleDbParameterCollection ()
-               {
-               }
-
-               #endregion // Constructors
-       
-               #region Properties
-
-               public
-               override
-               int Count {
-                       get { return list.Count; }
-               }
-               
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public new OleDbParameter this[int index] {
-                       get { return (OleDbParameter) list [index]; }
-                       set { list[index] = (OleDbParameter) value; }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public new OleDbParameter this[string parameterName] {
-                       get {
-                               foreach (OleDbParameter p in list)
-                                       if (p.ParameterName.Equals (parameterName))
-                                               return p; 
-                               throw new IndexOutOfRangeException ("The specified name does not exist: " + parameterName);
-                       }
-                       set {
-                               if (!Contains (parameterName))
-                                       throw new IndexOutOfRangeException("The specified name does not exist: " + parameterName);
-                               this [IndexOf (parameterName)] = (OleDbParameter) value;
-                       }
-               }
-
-               public override bool IsFixedSize {
-                       get {
-                               return list.IsFixedSize;
-                       }
-               }
-
-               public override bool IsReadOnly {
-                       get {
-                               return list.IsReadOnly;
-                       }
-               }
-
-               public override bool IsSynchronized {
-                       get {
-                               return list.IsSynchronized;
-                       }
-               }
-
-               public override object SyncRoot {
-                       get {
-                               return list.SyncRoot;
-                       }
-               }
-
-               internal IntPtr GdaParameterList {
-                       [MonoTODO]
-                       get {
-                               IntPtr param_list;
-
-                               param_list = libgda.gda_parameter_list_new ();
-                               // FIXME: add parameters to list
-                               
-                               return param_list;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [EditorBrowsable(EditorBrowsableState.Never)]
-               public
-               override
-               int Add (object value)
-               {
-                       if (!(value is OleDbParameter))
-                               throw new InvalidCastException ("The parameter was not an OleDbParameter.");
-                       Add ((OleDbParameter) value);
-                       return IndexOf (value);
-               }
-
-               public OleDbParameter Add (OleDbParameter value)
-               {
-                       if (value.Container != null)
-                               throw new ArgumentException ("The OleDbParameter specified in the value parameter is already added to this or another OleDbParameterCollection.");
-                       value.Container = this;
-                       list.Add (value);
-                       return value;
-               }
-
-               [Obsolete("OleDbParameterCollection.Add(string, value) is now obsolete. Use OleDbParameterCollection.AddWithValue(string, object) instead.")]
-               [EditorBrowsable(EditorBrowsableState.Never)]
-               public OleDbParameter Add (string parameterName, object value)
-               {
-                       return Add (new OleDbParameter (parameterName, value));
-               }
-
-               public OleDbParameter AddWithValue (string parameterName, object value)
-               {
-                       return Add (new OleDbParameter (parameterName, value));
-               }
-
-               public OleDbParameter Add (string parameterName, OleDbType oleDbType)
-               {
-                       return Add (new OleDbParameter (parameterName, oleDbType));
-               }
-
-               public OleDbParameter Add (string parameterName, OleDbType oleDbType, int size)
-               {
-                       return Add (new OleDbParameter (parameterName, oleDbType, size));
-               }
-
-               public OleDbParameter Add (string parameterName, OleDbType oleDbType, int size, string sourceColumn)
-               {
-                       return Add (new OleDbParameter (parameterName, oleDbType, size, sourceColumn));
-               }
-
-               public override void AddRange(Array values)
-               {
-                       if (values == null)
-                               throw new ArgumentNullException ("values");
-
-                       foreach (object value in values)
-                               Add (value);
-               }
-
-               public void AddRange(OleDbParameter[] values)
-               {
-                       if (values == null)
-                               throw new ArgumentNullException ("values");
-
-                       foreach (OleDbParameter value in values)
-                               Add (value);
-               }
-
-               public
-               override
-               void Clear()
-               {
-                       foreach (OleDbParameter p in list)
-                               p.Container = null;
-                       list.Clear ();
-               }
-
-               public
-               override
-               bool Contains (object value)
-               {
-                       if (!(value is OleDbParameter))
-                               throw new InvalidCastException ("The parameter was not an OleDbParameter.");
-                       return Contains (((OleDbParameter) value).ParameterName);
-               }
-
-               public
-               override
-               bool Contains (string value)
-               {
-                       foreach (OleDbParameter p in list)
-                               if (p.ParameterName.Equals (value))
-                                       return true;
-                       return false;
-               }
-
-               public bool Contains (OleDbParameter value)
-               {
-                       return IndexOf (value) != -1;
-               }
-
-               public
-               override
-               void CopyTo (Array array, int index)
-               {
-                       list.CopyTo (array, index);
-               }
-
-               public void CopyTo(OleDbParameter[] array, int index)
-               {
-                       CopyTo (array, index);
-               }
-
-               public
-               override
-               IEnumerator GetEnumerator()
-               {
-                       return list.GetEnumerator ();
-               }
-
-               [MonoTODO]
-               protected override DbParameter GetParameter (int index)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected override DbParameter GetParameter (string parameterName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public
-               override
-               int IndexOf (object value)
-               {
-                       if (!(value is OleDbParameter))
-                               throw new InvalidCastException ("The parameter was not an OleDbParameter.");
-                       return IndexOf (((OleDbParameter) value).ParameterName);
-               }
-
-               public int IndexOf(OleDbParameter value)
-               {
-                       return IndexOf (value);
-               }
-
-               public
-               override
-               int IndexOf (string parameterName)
-               {
-                       for (int i = 0; i < Count; i += 1)
-                               if (this [i].ParameterName.Equals (parameterName))
-                                       return i;
-                       return -1;
-               }
-
-               public
-               override
-               void Insert (int index, object value)
-               {
-                       list.Insert (index, value);
-               }
-
-               public void Insert (int index, OleDbParameter value)
-               {
-                       Insert (index, value);
-               }
-
-               public
-               override
-               void Remove (object value)
-               {
-                       ((OleDbParameter) value).Container = null;
-                       list.Remove (value);
-               }
-
-               public void Remove (OleDbParameter value)
-               {
-                       Remove (value);
-               }
-
-               public
-               override
-               void RemoveAt (int index)
-               {
-                       this [index].Container = null;
-                       list.RemoveAt (index);
-               }
-
-               public
-               override
-               void RemoveAt (string parameterName)
-               {
-                       RemoveAt (IndexOf (parameterName));
-               }
-
-               [MonoTODO]
-               protected override void SetParameter (int index, DbParameter value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected override void SetParameter (string parameterName, DbParameter value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbParameterConverter.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbParameterConverter.cs
deleted file mode 100644 (file)
index 27224b9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// System.Data.OleDb.OleDbParameterConverter.cs
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-
-namespace System.Data.OleDb {
-       internal sealed class OleDbParameterConverter : ExpandableObjectConverter
-       {
-               #region Constructors
-
-               [MonoTODO]
-               public OleDbParameterConverter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-       
-               [MonoTODO]
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbPermission.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbPermission.cs
deleted file mode 100644 (file)
index af23b58..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// System.Data.OleDb.OleDbPermission
-//
-// Author:
-//     Rodrigo Moya (rodrigo@ximian.com)
-//     Tim Coleman (tim@timcoleman.com)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.OleDb
-{
-       [Serializable]
-       public sealed class OleDbPermission : DBDataPermission
-       {
-               #region Fields
-
-               private string _provider;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               [Obsolete ("use OleDbPermission(PermissionState.None)", true)]
-               public OleDbPermission ()
-                       : base (PermissionState.None)
-               {
-               }
-
-               public OleDbPermission (PermissionState state)
-                       : base (state)
-               {
-               }
-
-               [Obsolete ("use OleDbPermission(PermissionState.None)", true)]
-               public OleDbPermission (PermissionState state, bool allowBlankPassword)
-                       : base (state)
-               {
-                       AllowBlankPassword = allowBlankPassword;
-               }
-
-               // required for Copy method
-               internal OleDbPermission (DBDataPermission permission)
-                       : base (permission)
-               {
-               }
-
-               // easier (and common) permission creation from attribute class
-               internal OleDbPermission (DBDataPermissionAttribute attribute)
-                       : base (attribute)
-               {
-               }
-
-               #endregion
-
-               #region Properties
-
-               [Obsolete ()]
-               [BrowsableAttribute (false)]
-               [EditorBrowsableAttribute (EditorBrowsableState.Never)]
-               public string Provider {
-                       get {
-                               if (_provider == null)
-                                       return String.Empty;
-                               return _provider;
-                       }
-                       set { _provider = value; }
-               }
-
-               #endregion
-
-               #region Methods
-
-               public override IPermission Copy ()
-               {
-                       return new OleDbPermission (this);
-               }
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbPermissionAttribute.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbPermissionAttribute.cs
deleted file mode 100644 (file)
index 6abf041..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.Data.OleDb.OleDbPermissionAttribute
-//
-// Authors:
-//     Rodrigo Moya (rodrigo@ximian.com)
-//     Tim Coleman (tim@timcoleman.com)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.OleDb {
-
-       [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | 
-                       AttributeTargets.Struct | AttributeTargets.Constructor |
-                       AttributeTargets.Method, AllowMultiple=true,
-                       Inherited=false)]
-       [Serializable]
-       public sealed class OleDbPermissionAttribute : DBDataPermissionAttribute {
-
-               #region Fields
-
-               private string _provider;
-
-               #endregion // Fields
-
-               #region Constructors 
-
-               public OleDbPermissionAttribute (SecurityAction action) 
-                       : base (action)
-               {
-               }
-
-               #endregion
-
-               #region Properties
-
-               [Obsolete ()]
-               [BrowsableAttribute (false)]
-               [EditorBrowsableAttribute (EditorBrowsableState.Never)]
-               public string Provider {
-                       get {
-                               if (_provider == null)
-                                       return String.Empty;
-                               return _provider;
-                       }
-                       set { _provider = value; }
-               }
-
-               #endregion
-
-               #region Methods
-
-               public override IPermission CreatePermission () 
-               {
-                       OleDbPermission p = new OleDbPermission (this);
-                       return p;
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatedEventArgs.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatedEventArgs.cs
deleted file mode 100644 (file)
index 0993b2b..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.OleDb.OleDbRowUpdatedEventArgs
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public sealed class OleDbRowUpdatedEventArgs : RowUpdatedEventArgs
-       {
-               #region Constructors
-
-               public OleDbRowUpdatedEventArgs (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
-                       : base (dataRow, command, statementType, tableMapping)
-
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public new OleDbCommand Command {
-                       get { return (OleDbCommand) base.Command; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatedEventHandler.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatedEventHandler.cs
deleted file mode 100644 (file)
index 877efb7..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Data.OleDb.OleDbRowUpdatedEventHandler
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public delegate void OleDbRowUpdatedEventHandler (
-               object sender,
-               OleDbRowUpdatedEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatingEventArgs.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatingEventArgs.cs
deleted file mode 100644 (file)
index a0dea35..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// System.Data.OleDb.OleDbRowUpdatingEventArgs
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public sealed class OleDbRowUpdatingEventArgs : RowUpdatingEventArgs
-       {
-               #region Constructors
-
-               public OleDbRowUpdatingEventArgs (DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
-                       : base (dataRow, command, statementType, tableMapping)
-               {
-               }
-
-               #endregion
-
-               #region Properties
-               
-               public new OleDbCommand Command {
-                       get { return (OleDbCommand) base.Command; }
-                       set { base.Command = value; }
-               }
-
-               protected override IDbCommand BaseCommand {
-                       get {
-                               return base.BaseCommand;
-                       }
-                       set {
-                               base.BaseCommand = value;
-                       }
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatingEventHandler.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbRowUpdatingEventHandler.cs
deleted file mode 100644 (file)
index 6669d34..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Data.OleDb.OleDbRowUpdatingEventHandler
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public delegate void OleDbRowUpdatingEventHandler (
-               object sender,
-               OleDbRowUpdatingEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbSchemaGuid.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbSchemaGuid.cs
deleted file mode 100644 (file)
index 30ae474..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// System.Data.OleDb.OleDbSchemaGuid
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public sealed class OleDbSchemaGuid
-       {
-               #region Fields
-
-               public static readonly Guid Assertions = new Guid ("df855bea-fb95-4abc-8932-e57e45c7ddae");
-               public static readonly Guid Catalogs = new Guid ("e4a67334-f03c-45af-8b1d-531f99268045");
-               public static readonly Guid Character_Sets = new Guid ("e4533bdb-0b55-48ee-986d-17d07143657d");
-               public static readonly Guid Check_Constraints = new Guid ("fedf7f5d-cfb4-4635-af02-45eb4bb4e8f3");
-               public static readonly Guid Check_Constraints_By_Table = new Guid ("d76547ef-837d-413c-8d76-bab1d7bb014a");
-               public static readonly Guid Collations = new Guid ("5145b85c-c448-4b9e-8929-4c2de31ffa30");
-               public static readonly Guid Columns = new Guid ("86dcd6e2-9a8c-4c6d-bc1c-e0e334c727c9");
-               public static readonly Guid Column_Domain_Usage = new Guid ("058acb5e-eb1d-4b6e-8e98-a7d59a959ff1");
-               public static readonly Guid Column_Privileges = new Guid ("43152796-f3b4-4342-9647-008f1060e352");
-               public static readonly Guid Constraint_Column_Usage = new Guid ("3a39f999-f481-4293-8b9f-af7e91b4ee7d");
-               public static readonly Guid Constraint_Table_Usage = new Guid ("d689719b-24b0-4963-a635-097c480edcd2");
-               public static readonly Guid DbInfoLiterals = new Guid ("7a564da6-f3bc-474b-9e66-71cb47bde5b0");
-               public static readonly Guid Foreign_Keys = new Guid ("d9e547ce-e62d-4200-b849-566bc3dc29de");
-               public static readonly Guid Indexes = new Guid ("69d8523c-96ad-40cb-a89a-ee98d2d6fcec");
-               public static readonly Guid Key_Column_Usage = new Guid ("65423211-805e-4822-8eb4-f4f6d540056e");
-               public static readonly Guid Primary_Keys = new Guid ("c6e5b174-fbd8-4055-b757-8585040e463f");
-               public static readonly Guid Procedures = new Guid ("61f276ad-4f25-4c26-b4ae-8238e06d56db");
-               public static readonly Guid Procedure_Columns = new Guid ("7148080d-e053-4ada-b79a-9a2ff614a3d4");
-               public static readonly Guid Procedure_Parameters = new Guid ("984af700-8fe7-476f-81c2-4b814df67907");
-               public static readonly Guid Provider_Types = new Guid ("0bc2da44-d834-4136-9ff0-3cef477784b9");
-               public static readonly Guid Referential_Constraints = new Guid ("d2eab85e-49a7-462d-aa22-1d97c74178ae");
-               public static readonly Guid Schemata = new Guid ("2fbd7503-0af3-43d2-92c6-51e78b84dd37");
-               public static readonly Guid Sql_Languages = new Guid ("d60a511d-a07f-4e59-aac2-71c25fab5b02");
-               public static readonly Guid Statistics = new Guid ("03ed9f7d-35bc-45fe-993f-ee7a5f29fb74");
-               public static readonly Guid Tables = new Guid ("ceac88ba-240c-4bb4-821e-4a49fc013371");
-               public static readonly Guid Tables_Info = new Guid ("9ff81c59-2b1e-4371-a08b-3a2d373189fa");
-               public static readonly Guid Table_Constraints = new Guid ("62883c55-082d-42cb-bb00-747985ca6047");
-               public static readonly Guid Table_Privileges = new Guid ("1a73f478-8c8e-4ede-b3ec-22ba13ab55a0");
-               public static readonly Guid Table_Statistics = new Guid ("9c944744-cd51-448a-8be4-7095f039d0ef");
-               public static readonly Guid Translations = new Guid ("5578b57e-a682-4f1b-bdb4-f8a14ad6f61e");
-               public static readonly Guid Trustee = new Guid ("521207e2-3a23-42b6-ac78-810a3fce3271");
-               public static readonly Guid Usage_Privileges = new Guid ("f8113a2b-2934-4c67-ab7b-adbe3ab74973");
-               public static readonly Guid Views = new Guid ("9a6345b6-61a0-40fd-9b45-402f3c9c9c3e");
-               public static readonly Guid View_Column_Usage = new Guid ("2c91ef91-02d8-4d38-ae5a-1e826873d6ea");
-               public static readonly Guid View_Table_Usage = new Guid ("7dcb7f53-1045-4fdf-86a1-d3caaf27c7f5");
-
-               #endregion
-
-               #region Constructors
-
-               public OleDbSchemaGuid ()
-               {
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbTransaction.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbTransaction.cs
deleted file mode 100644 (file)
index 7bd79b1..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// System.Data.OleDb.OleDbTransaction
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public sealed class OleDbTransaction : DbTransaction, IDbTransaction
-       {
-               #region Fields
-
-               bool disposed;
-               OleDbConnection connection;
-               IntPtr gdaTransaction;
-               int depth;
-               bool isOpen;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal OleDbTransaction (OleDbConnection connection, int depth)
-                       : this (connection, depth, IsolationLevel.ReadCommitted)
-               {
-               }
-
-               internal OleDbTransaction (OleDbConnection connection)
-                       : this (connection, 1)
-               {
-               }
-
-               internal OleDbTransaction (OleDbConnection connection, int depth, IsolationLevel isolevel) 
-               {
-                       this.connection = connection;
-
-                       gdaTransaction = libgda.gda_transaction_new (depth.ToString ());
-                       
-                       switch (isolevel) {
-                       case IsolationLevel.ReadCommitted :
-                               libgda.gda_transaction_set_isolation_level (gdaTransaction,
-                                                                           GdaTransactionIsolation.ReadCommitted);
-                               break;
-                       case IsolationLevel.ReadUncommitted :
-                               libgda.gda_transaction_set_isolation_level (gdaTransaction,
-                                                                           GdaTransactionIsolation.ReadUncommitted);
-                               break;
-                       case IsolationLevel.RepeatableRead :
-                               libgda.gda_transaction_set_isolation_level (gdaTransaction,
-                                                                           GdaTransactionIsolation.RepeatableRead);
-                               break;
-                       case IsolationLevel.Serializable :
-                               libgda.gda_transaction_set_isolation_level (gdaTransaction,
-                                                                           GdaTransactionIsolation.Serializable);
-                               break;
-                       }
-                       
-                       libgda.gda_connection_begin_transaction (connection.GdaConnection, gdaTransaction);
-                       isOpen = true;
-               }
-
-               internal OleDbTransaction (OleDbConnection connection, IsolationLevel isolevel) 
-                       : this (connection, 1, isolevel)
-               {
-               }
-
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public new OleDbConnection Connection {
-                       get {
-                               return connection;
-                       }
-               }
-
-               protected override DbConnection DbConnection {
-                       get { return connection; }
-               }
-               
-               public
-               override
-               IsolationLevel IsolationLevel {
-                       get {
-                               if (!isOpen)
-                                       throw ExceptionHelper.TransactionNotUsable (GetType ());
-
-                               switch (libgda.gda_transaction_get_isolation_level (gdaTransaction)) {
-                               case GdaTransactionIsolation.ReadCommitted :
-                                       return IsolationLevel.ReadCommitted;
-                               case GdaTransactionIsolation.ReadUncommitted :
-                                       return IsolationLevel.ReadUncommitted;
-                               case GdaTransactionIsolation.RepeatableRead :
-                                       return IsolationLevel.RepeatableRead;
-                               case GdaTransactionIsolation.Serializable :
-                                       return IsolationLevel.Serializable;
-                               }
-                               return IsolationLevel.Unspecified;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public OleDbTransaction Begin ()
-               {
-                       if (!isOpen)
-                               throw ExceptionHelper.TransactionNotUsable (GetType ());
-                       return new OleDbTransaction (connection, depth + 1);
-               }
-
-               public OleDbTransaction Begin (IsolationLevel isolevel) 
-               {
-                       if (!isOpen)
-                               throw ExceptionHelper.TransactionNotUsable (GetType ());
-                       return new OleDbTransaction (connection, depth + 1, isolevel);
-               }
-
-               public
-               override
-               void Commit ()
-               {
-                       if (!isOpen)
-                               throw ExceptionHelper.TransactionNotUsable (GetType ());
-
-                       if (!libgda.gda_connection_commit_transaction (connection.GdaConnection,
-                               gdaTransaction))
-                               throw new InvalidOperationException ();
-                       connection = null;
-                       isOpen = false;
-               }
-
-
-               protected override
-               void Dispose (bool disposing)
-               {
-                       if (!disposed) {
-                               if (disposing && isOpen)
-                                       Rollback ();
-                               disposed = true;
-                       }
-
-                       base.Dispose (disposing);
-               }
-
-
-               public
-               override
-               void Rollback ()
-               {
-                       if (!isOpen)
-                               throw ExceptionHelper.TransactionNotUsable (GetType ());
-
-                       if (!libgda.gda_connection_rollback_transaction (connection.GdaConnection,
-                               gdaTransaction))
-                               throw new InvalidOperationException ();
-                       connection = null;
-                       isOpen = false;
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/OleDbType.cs b/mcs/class/System.Data/System.Data.OleDb/OleDbType.cs
deleted file mode 100644 (file)
index ad730f2..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// System.Data.OleDb.OleDbType
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data.OleDb
-{
-       public enum OleDbType {
-               BigInt = 20,
-               Binary = 128,
-               Boolean = 11,
-               BSTR = 8,
-               Char = 129,
-               Currency = 6,
-               Date = 7,
-               DBDate = 133,
-               DBTime = 134,
-               DBTimeStamp = 135,
-               Decimal = 14,
-               Double = 5,
-               Empty = 0,
-               Error = 10,
-               Filetime = 64,
-               Guid = 72,
-               IDispatch = 9,
-               Integer = 3,
-               IUnknown = 13,
-               LongVarBinary = 205,
-               LongVarChar = 201,
-               LongVarWChar = 203,
-               Numeric = 131,
-               PropVariant = 138,
-               Single = 4,
-               SmallInt = 2,
-               TinyInt = 16,
-               UnsignedBigInt = 21,
-               UnsignedInt = 19,
-               UnsignedSmallInt = 18,
-               UnsignedTinyInt = 17,
-               VarBinary = 204,
-               VarChar = 200,
-               Variant = 12,
-               VarNumeric = 139,
-               VarWChar = 202,
-               WChar = 130
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.OleDb/libgda.cs b/mcs/class/System.Data/System.Data.OleDb/libgda.cs
deleted file mode 100644 (file)
index 835a0f9..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-//
-// System.Data.OleDb.libgda
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Rodrigo Moya, 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data;
-using System.Data.Common;
-using System.Runtime.InteropServices;
-
-namespace System.Data.OleDb
-{
-       internal enum GdaConnectionOptions {
-               ReadOnly = 1 << 0
-       };
-       
-       internal enum GdaCommandOptions {
-               IgnoreErrors = 1,
-               StopOnErrors = 1 << 1,
-               BadOption = 1 << 2,
-       };
-
-       internal enum GdaCommandType {
-               Sql = 0,
-               Xml = 1,
-               Procedure = 2,
-               Table = 3,
-               Schema = 4,
-               Invalid = 5
-       };
-
-       internal enum GdaTransactionIsolation {
-               Unknown,
-               ReadCommitted,
-               ReadUncommitted,
-               RepeatableRead,
-               Serializable
-       };
-       
-       internal enum GdaValueType {
-               Null = 0,
-               Bigint = 1,
-               Binary = 2,
-               Boolean = 3,
-               Date = 4,
-               Double = 5,
-               GeometricPoint = 6,
-               Integer = 7,
-               List = 8,
-               Numeric = 9,
-               Single = 10,
-               Smallint = 11,
-               String = 12,
-               Time = 13,
-               Timestamp = 14,
-               Tinyint = 15,
-               Type = 16,
-               Unknown = 17
-       };
-
-       [StructLayout(LayoutKind.Sequential)]
-       internal class GdaDate
-       {
-               public short year;
-               public ushort month;
-               public ushort day;
-       }
-
-       [StructLayout(LayoutKind.Sequential)]
-       internal class GdaTime
-       {
-               public ushort hour;
-               public ushort minute;
-               public ushort second;
-               public long timezone;
-       }
-       
-       [StructLayout(LayoutKind.Sequential)]
-       internal class GdaTimestamp
-       {
-               public short year;
-               public ushort month;
-               public ushort day;
-               public ushort hour;
-               public ushort minute;
-               public ushort second;
-               public ulong fraction;
-               public long timezone;
-       }
-       
-       [StructLayout(LayoutKind.Sequential)]
-       internal class GdaList
-       {
-               public IntPtr data;
-               public IntPtr next;
-               public IntPtr prev;
-       }
-       
-       sealed internal class libgda
-       {
-               private static IntPtr gdaClient = IntPtr.Zero;
-
-               public static IntPtr GdaClient
-               {
-                       get {
-                               if (gdaClient == IntPtr.Zero)
-                                       gdaClient = gda_client_new ();
-
-                               return gdaClient;
-                       }
-               }
-
-               [DllImport("gobject-2.0",
-                          EntryPoint="g_object_unref")]
-               public static extern void FreeObject (IntPtr obj);
-
-               [DllImport("gda-2")]
-               public static extern void gda_init (string app_id, string version, int nargs, string[] args);
-
-               [DllImport("gda-2")]
-               public static extern GdaValueType gda_value_get_type (IntPtr value);
-
-               [DllImport("gda-2")]
-               public static extern long gda_value_get_bigint (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern bool gda_value_get_boolean (IntPtr value);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_value_get_date (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern double gda_value_get_double (IntPtr value);
-
-               [DllImport("gda-2")]
-               public static extern int gda_value_get_integer (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern float gda_value_get_single (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern int gda_value_get_smallint (IntPtr value);
-
-               [DllImport("gda-2")]
-               public static extern string gda_value_get_string (IntPtr value);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_value_get_time (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_value_get_timestamp (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern byte gda_value_get_tinyint (IntPtr value);
-
-               [DllImport("gda-2")]
-               public static extern bool gda_value_is_null (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern string gda_value_stringify (IntPtr value);
-               
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_parameter_list_new ();
-
-               [DllImport("gda-2")]
-               public static extern string gda_type_to_string (GdaValueType type);
-               
-               [DllImport("gda-2")]
-               public static extern int gda_data_model_get_n_rows (IntPtr model);
-
-               [DllImport("gda-2")]
-               public static extern int gda_data_model_get_n_columns (IntPtr model);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_data_model_get_value_at (IntPtr model, int col, int row);
-
-               [DllImport("gda-2")]
-               public static extern string gda_data_model_get_column_title (IntPtr model, int col);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_data_model_describe_column (IntPtr model, int col);
-
-               [DllImport("gda-2")]
-               public static extern int gda_data_model_get_column_position (IntPtr model, string name);
-               
-               [DllImport("gda-2")]
-               public static extern void gda_field_attributes_free (IntPtr fa);
-
-               [DllImport("gda-2")]
-               public static extern string gda_field_attributes_get_name (IntPtr fa);
-               
-               [DllImport("gda-2")]
-               public static extern GdaValueType gda_field_attributes_get_gdatype (IntPtr fa);
-
-               [DllImport("gda-2")]
-               public static extern long gda_field_attributes_get_defined_size (IntPtr fa);
-
-               [DllImport("gda-2")]
-               public static extern long gda_field_attributes_get_scale (IntPtr fa);
-
-               [DllImport("gda-2")]
-               public static extern bool gda_field_attributes_get_allow_null (IntPtr fa);
-               
-               [DllImport("gda-2")]
-               public static extern bool gda_field_attributes_get_primary_key (IntPtr fa);
-               
-               [DllImport("gda-2")]
-               public static extern bool gda_field_attributes_get_unique_key (IntPtr fa);
-               
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_client_new ();
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_client_open_connection (IntPtr client, string dsn,
-                                                                       string username, string password,
-                                                                       GdaConnectionOptions options);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_client_open_connection_from_string (IntPtr client,
-                                                                                   string provider,
-                                                                                   string cnc_string,
-                                                                                   GdaConnectionOptions options);
-
-               [DllImport("gda-2")]
-               public static extern bool gda_connection_is_open (IntPtr cnc);
-               
-               [DllImport("gda-2")]
-               public static extern bool gda_connection_close (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_server_version (IntPtr cnc);
-               
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_database (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_dsn (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_cnc_string (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_provider (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_username (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern string gda_connection_get_password (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern bool gda_connection_change_database (IntPtr cnc, string name);
-               
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_transaction_new (string name);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_transaction_get_name (IntPtr xaction);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_transaction_set_name (IntPtr xaction, string name);
-
-               [DllImport("gda-2")]
-               public static extern GdaTransactionIsolation gda_transaction_get_isolation_level (IntPtr xaction);
-
-               [DllImport("gda-2")]
-               public static extern void gda_transaction_set_isolation_level (IntPtr xaction,
-                                                                              GdaTransactionIsolation level);
-               
-               [DllImport("gda-2")]
-               public static extern bool gda_connection_begin_transaction (IntPtr cnc, IntPtr xaction);
-
-               [DllImport("gda-2")]
-               public static extern bool gda_connection_commit_transaction (IntPtr cnc, IntPtr xaction);
-
-               [DllImport("gda-2")]
-               public static extern bool gda_connection_rollback_transaction (IntPtr cnc, IntPtr xaction);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_connection_execute_command (IntPtr cnc, IntPtr cmd, IntPtr parameterList);
-               
-               [DllImport("gda-2")]
-               public static extern int gda_connection_execute_non_query (IntPtr cnc, IntPtr command, IntPtr parameterList);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_connection_execute_single_command (IntPtr cnc, IntPtr command, IntPtr parameterList);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_connection_get_errors (IntPtr cnc);
-
-               [DllImport("gda-2")]
-               public static extern IntPtr gda_command_new (string text, GdaCommandType type, GdaCommandOptions options);
-
-               [DllImport("gda-2")]
-               public static extern void gda_command_set_text (IntPtr cmd, string text);
-
-               [DllImport("gda-2")]
-               public static extern void gda_command_set_command_type (IntPtr cmd, GdaCommandType type);
-
-               [DllImport("gda-2")]
-               public static extern string gda_error_get_description (IntPtr error);
-
-               [DllImport("gda-2")]
-               public static extern long gda_error_get_number (IntPtr error);
-
-               [DllImport("gda-2")]
-               public static extern string gda_error_get_source (IntPtr error);
-               
-               [DllImport("gda-2")]
-               public static extern string gda_error_get_sqlstate (IntPtr error);
-               
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.ProviderBase.jvm/.gitattributes b/mcs/class/System.Data/System.Data.ProviderBase.jvm/.gitattributes
deleted file mode 100644 (file)
index 7b2e59e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/AbstractDBCommand.cs -crlf
-/AbstractDBConnection.cs -crlf
-/AbstractDataReader.cs -crlf
-/AbstractDbError.cs -crlf
-/AbstractDbErrorCollection.cs -crlf
-/AbstractDbException.cs -crlf
-/AbstractTransaction.cs -crlf
-/DbConvert.cs -crlf
-/ParameterMetadataWrapper.cs -crlf
-/ReaderCache.cs -crlf
-/regex.cs -crlf
diff --git a/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDbCommandBuilder.cs b/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDbCommandBuilder.cs
deleted file mode 100644 (file)
index 300e9cd..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.Data.ProviderBase.AbstractDbCommand
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     
-// (C) 2006 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Common;
-using System.Text;
-
-namespace System.Data.ProviderBase {
-       public abstract class AbstractDbCommandBuilder : DbCommandBuilder {
-               protected override void ApplyParameterInfo(DbParameter parameter, DataRow row, StatementType statementType, bool whereClause) {
-                       throw new NotImplementedException();
-               }
-
-               protected override string GetParameterName(int parameterOrdinal) {
-                       throw new NotImplementedException();
-               }
-
-               protected override string GetParameterName(String parameterName) {
-                       throw new NotImplementedException();
-               }
-
-               protected override string GetParameterPlaceholder(int parameterOrdinal) {
-                       return "?";
-               }
-
-               protected override void SetRowUpdatingHandler(DbDataAdapter adapter) {
-                       throw new NotImplementedException();
-               }
-
-               protected static void DeriveParameters (AbstractDbCommand command) {
-                       if (command.Connection.State != ConnectionState.Open) {
-                               throw new InvalidOperationException("DeriveParameters requires an open and available Connection. The connection's current state is Closed.");
-                       }
-                       
-                       if(command.CommandType != CommandType.StoredProcedure) {
-                               throw ExceptionHelper.DeriveParametersNotSupported(command.GetType(),command.CommandType);
-                       }
-
-                       ArrayList parameters = command.DeriveParameters(command.CommandText, true);
-                       command.Parameters.Clear();
-                       foreach (AbstractDbParameter param in parameters) {
-                               command.Parameters.Add(param.Clone());
-                       }
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDbParameterCollection.cs b/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDbParameterCollection.cs
deleted file mode 100644 (file)
index f2fee7f..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-//
-// System.Data.Common.AbstractDbParameterCollection
-//
-// Authors:
-//     Konstantin Triger <kostat@mainsoft.com>
-//     Boris Kirzner <borisk@mainsoft.com>
-//     
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Data.Common;
-using System.Collections;
-
-namespace System.Data.ProviderBase
-{
-       public abstract class AbstractDbParameterCollection : DbParameterCollection
-       {
-               #region Fields
-
-               readonly AbstractDbCommand _parent;
-               readonly ArrayList _list = new ArrayList();
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public AbstractDbParameterCollection(DbCommand parent)
-        {
-                       _parent = (AbstractDbCommand)parent;
-        }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override int Count {
-                       get { return _list.Count; }
-               }
-
-               public override bool IsFixedSize {
-                       get { return _list.IsFixedSize; }
-               }
-
-               public override bool IsReadOnly {
-                       get { return _list.IsReadOnly; }
-               }
-
-               public override bool IsSynchronized {
-                       get { return _list.IsSynchronized; }
-               }
-
-               protected abstract Type ItemType { get; }
-
-               public override object SyncRoot {
-                       get { return _list.SyncRoot; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override int Add (object value) {
-                       Validate (-1, value);
-                       OnSchemaChanging();
-                       ((AbstractDbParameter)value).Parent = this;
-                       return _list.Add (value);
-               }
-
-               public override void AddRange (Array values)
-               {
-                       foreach (object value in values)
-                               Add (value);
-               }
-
-
-               public override void Clear () {
-                       OnSchemaChanging();
-                       if (_list != null && Count != 0) {
-                               for (int i = 0; i < _list.Count; i++) {
-                                       ((AbstractDbParameter)_list [i]).Parent = null;
-                               }
-                               _list.Clear ();
-                       }
-               }
-
-               public override bool Contains (object value) {
-                       if (IndexOf (value) != -1)
-                               return true;
-                       else
-                               return false;
-               }
-
-               public override bool Contains (string value) {
-                       if (IndexOf (value) != -1)
-                               return true;
-                       else
-                               return false;
-               }
-
-               public override void CopyTo (Array array, int index) {
-                       _list.CopyTo (array, index);
-               }
-
-               public override IEnumerator GetEnumerator () {
-                       return _list.GetEnumerator ();
-               }
-
-               protected override DbParameter GetParameter (int index) {
-                       return (DbParameter) _list [index];
-               }
-
-               protected override DbParameter GetParameter (string parameterName) {
-                       return GetParameter (IndexOf (parameterName));
-               }
-
-               protected override void SetParameter (string parameterName, DbParameter value) {
-                       SetParameter (IndexOf (parameterName), value);
-               }
-
-               public override int IndexOf (object value) {
-                       ValidateType (value);
-                       return _list.IndexOf (value);
-               }
-
-               public override int IndexOf (string parameterName) {
-                       if (_list == null)
-                               return -1;
-
-                       for (int i = 0; i < _list.Count; i++) {
-                               string name = ((DbParameter)_list [i]).ParameterName;
-                               if (String.Compare (name, parameterName, StringComparison.OrdinalIgnoreCase) == 0) {
-                                       return i;
-                               }
-                       }
-                       return -1;
-               }
-
-               public override void Insert (int index, object value) {
-                       Validate(-1, (DbParameter)value);
-                       OnSchemaChanging();
-                       ((AbstractDbParameter)value).Parent = this;
-                       _list.Insert (index, value);
-               }
-
-               public override void Remove (object value) {
-                       ValidateType (value);
-                       int index = IndexOf (value);
-                       RemoveIndex (index);
-               }
-
-               public override void RemoveAt (int index) {
-                       RemoveIndex (index);
-               }
-
-               public override void RemoveAt (string parameterName) {
-                       int index = IndexOf (parameterName);
-                       RemoveIndex (index);
-               }
-
-               protected override void SetParameter (int index, DbParameter value) {
-                       Replace (index, value);
-               }
-
-               void Validate (int index, object value) {
-                       ValidateType (value);
-                       AbstractDbParameter parameter = (AbstractDbParameter) value;
-
-                       if (parameter.Parent != null) {
-                               if (parameter.Parent.Equals (this)) {
-                                       if (IndexOf (parameter) != index)
-                                               throw ExceptionHelper.CollectionAlreadyContains (ItemType,"ParameterName",parameter.ParameterName,this);                    
-                               }
-                               else {
-                                       // FIXME :  The OleDbParameter with ParameterName 'MyParam2' is already contained by another OleDbParameterCollection.
-                                       throw new ArgumentException ("");
-                               }
-                       }
-
-                       if (parameter.ParameterName == null  || parameter.ParameterName == String.Empty) {
-                               int newIndex = 1;
-                               string parameterName;
-                               
-                               do {
-                                       parameterName = "Parameter" + newIndex;
-                                       newIndex++;
-                               }
-                               while(IndexOf (parameterName) != -1);
-
-                               parameter.ParameterName = parameterName;
-                       }
-               }               
-
-               void ValidateType (object value) {
-                       if (value == null)
-                               throw ExceptionHelper.CollectionNoNullsAllowed (this,ItemType);
-
-                       Type objectType = value.GetType ();
-                       Type itemType = ItemType;
-
-                       if (itemType.IsInstanceOfType(objectType)) {
-                               Type thisType = this.GetType ();
-                               string err = String.Format ("The {0} only accepts non-null {1} type objects, not {2} objects.", thisType.Name, itemType.Name, objectType.Name);
-                               throw new InvalidCastException (err);
-                       }
-               }
-
-               private void RemoveIndex (int index) {
-                       OnSchemaChanging();
-                       AbstractDbParameter oldItem = (AbstractDbParameter)_list [index];
-                       oldItem.Parent = null;
-                       _list.RemoveAt (index);
-               }               
-
-               private void Replace (int index, DbParameter value) {
-                       Validate (index, value);
-                       AbstractDbParameter oldItem = (AbstractDbParameter)this [index];
-                       oldItem.Parent = null;
-
-                       ((AbstractDbParameter)value).Parent = this;
-                       _list [index] = value;
-               }
-
-               protected internal void OnSchemaChanging()
-        {
-            if (_parent != null) {
-                _parent.OnSchemaChanging();
-            }
-        }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.ProviderBase.jvm/ChangeLog b/mcs/class/System.Data/System.Data.ProviderBase.jvm/ChangeLog
deleted file mode 100644 (file)
index 4867cbb..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-2007-08-19 Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * AbstractDataReader.cs: optimized IndexOf in Results proprty
-
-2007-08-14 Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * AbstractDBConnection.cs: performance optimization
-
-2006-11-29 Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * AbstractDBConnection.cs: fixed ExecuteDbDataReader, wrong exception
-       if executiong on closed connection
-
-2006-08-24 Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * AbstractDBConnection.cs: fixed GetSyntaxPatterns, configuration
-       section moved
-
-2006-05-09 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBCommand.cs: only input parameters can be set by specialized methods.
-
-2006-05-07 Boris Kirzner <borisk@mainsfot.com>
-       * AbstractDBConnection.cs : resolved ambigous reference.
-
-2006-03-26  Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractDataReader.cs: check for SQLServer uniqueidentifier type for VARCHAR.
-
-2006-03-21     Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBConnection.cs: resolve abguity.
-
-2006-03-05  Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractDBCommand.cs: differentiate between setting varying and fixed length strings.
-
-2006-03-05  Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractDataReader.cs, ReaderCache.cs: enable provider specific caches.
-
-2006-02-26  Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractDataReader.cs: Prevent recursion when GetXXX is overriden and GetXXXSafe is called.
-       * ReaderCache.cs: Added IsNumeric to cache containers.
-       * AbstractDBCommand.cs, regex.cs: Refactoring.
-
-2006-05-01 Konstantin Triger <kostat@mainsoft.com
-
-       *      AbstractDataReader.cs, ReaderCache.cs: use stream interfaces
-               where appropriate.
-
-2005-14-12 Konstantin Triger <kostat@mainsoft.com>
-
-       * DbPortResolver.cs, AbstractDBConnection.cs: differentiate between the situation where
-               don't have a response and where instance name does not exist.
-       
-2005-14-12 Konstantin Triger <kostat@mainsoft.com>
-
-       * DbPortResolver.cs: fix port resolution for unnamed instances.
-
-2005-27-11 Boris Kirzner <borisk@mainsoft.com>
-       AbstractDBCommand.cs: TARGET_JVM fix. Proper handle of return value 
-       parameter and corresponding user parameter.
-
-2006-22-11 Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractTransaction.cs: set inner exception.
-
-2005-16-11 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBConnection.cs: TARGET_JVM fix. Throw exception if MSSQL port
-       resolution failed.
-
-2005-14-11 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBCommand.cs: TARGET_JVM fix. Provider name can be in any case..
-
-2005-13-09 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBCommand.cs: TARGET_JVM fix. Check for derived parameters
-       array length.
-
-2005-28-08 Boris Kirzner <borisk@mainsoft.com>
-       * ReaderCache.cs: 
-               - Create Guid from the string fetched.
-
-2005-28-08 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBCommand.cs: 
-               - Do not check for "select ... from", just add "for browse" if needed.
-               Removed unused regex.
-
-2005-25-08 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBCommand.cs: 
-               - Set max fetch size for jdbc statement.
-               
-2005-21-08 Boris Kirzner <borisk@mainsoft.com>
-       * ReaderCache.cs: no not create guid if the value fetched is null.
-       * SqlClientStrings.resx: fixed CON_PORT key value.
-
-2005-18-08 Boris Kirzner <borisk@mainsoft.com>
-       * AbstractDBCommand.cs: 
-               - Using Java regex instead of .Net ones.
-               - Added GetReturnParameter method, used in resolving return value 
-               user parameter for stored procedures.
-               - Do not set max rows for jdbc statement - this causes sp on sql server
-               to fail in creating additional rows.
-
-2005-22-06  Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractDataReader.cs: GetBytes should return the data length if target buffer is null
-
-2005-21-06  Konstantin Triger <kostat@mainsoft.com>
-
-       * AbstractDataReader.cs: if command is preapred, recalculate params on every ExecReader
diff --git a/mcs/class/System.Data/System.Data.ProviderBase.jvm/regex.cs b/mcs/class/System.Data/System.Data.ProviderBase.jvm/regex.cs
deleted file mode 100644 (file)
index 797a589..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-//\r
-// System.Data.ProviderBase.regex.cs\r
-//\r
-// Authors:\r
-//     Konstantin Triger <kostat@mainsoft.com>\r
-//     \r
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System.Data;\r
-using System.Data.Common;\r
-using System.Data.OleDb;\r
-\r
-namespace System.Data.ProviderBase {\r
-       public abstract class SimpleRegex {\r
-               abstract protected internal SimpleMatch Match(string input, int beginning, int length);\r
-               protected internal SimpleMatch Match(string input) {\r
-                       return Match(input, 0, input.Length);\r
-               }\r
-\r
-               protected bool IsWordChar(char c) { //regexp w ([a-zA-Z_0-9]) + #@$\r
-                       if (c < '@') {\r
-                               return (c >= '0' && c <= '9') ||\r
-                                               (c == '#' || c == '$');\r
-                       }\r
-                       else {\r
-                               return (c <= 'Z') ||\r
-                                       (c <= 'z' && c >= '_' && c != '`');\r
-                       }\r
-               }\r
-       }\r
-       public class SimpleCapture {\r
-               readonly int _index;\r
-               readonly int _length;\r
-               readonly string _input;\r
-\r
-               protected SimpleCapture(int index, int length, string input) {\r
-                       _index = index;\r
-                       _length = length;\r
-                       _input = input;\r
-               }\r
-\r
-               protected internal int Index {\r
-                       get {\r
-                               return _index;\r
-                       }\r
-               }\r
-\r
-               protected internal int Length {\r
-                       get {\r
-                               return _length;\r
-                       }\r
-               }\r
-\r
-               protected internal string Value {\r
-                       get {\r
-                               return Input.Substring(Index, Length);\r
-                       }\r
-               }\r
-\r
-               protected string Input {\r
-                       get {\r
-                               return _input;\r
-                       }\r
-               }\r
-       }\r
-\r
-       public class SimpleMatch : SimpleCapture {\r
-               readonly bool _success;\r
-               readonly SimpleRegex _regex;\r
-               readonly int _total;\r
-               readonly int _skip;\r
-\r
-               public SimpleMatch(SimpleRegex regex, int total, bool success, int index, int length, string input)\r
-                       : this(regex, total, success, index, length, 0, input) {}\r
-\r
-               public SimpleMatch(SimpleRegex regex, int total, bool success, int index, int length, int skip, string input)\r
-                       : base(index, length, input) {\r
-                       _success = success;\r
-                       _regex = regex;\r
-                       _total = total;\r
-                       _skip = skip;\r
-               }\r
-\r
-               protected internal SimpleMatch NextMatch() {\r
-                       return _regex.Match(Input, Index+Length+_skip, _total);\r
-               }\r
-\r
-               protected internal bool Success {\r
-                       get {\r
-                               return _success;\r
-                       }\r
-               }\r
-       }\r
-\r
-       internal class OleDbParamsRegex : SimpleRegex {\r
-               protected internal override SimpleMatch Match(string input, int beginning, int length) {\r
-\r
-                       for (int i = beginning; i < length; i++) {\r
-                               char ch = input[i];\r
-                               switch(ch) {\r
-                                       case '\'': {\r
-                                               int end = input.IndexOf('\'', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '"': {\r
-                                               int end = input.IndexOf('"', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '[': {\r
-                                               int end = input.IndexOf(']', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '?': {\r
-                                               return new SimpleMatch(this, length, true, i, 1, input);\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       return new SimpleMatch(this, length, false, length, 0, input);\r
-               }\r
-       }\r
-\r
-       internal class SqlParamsRegex : SimpleRegex {\r
-               //static readonly char[] charsEnd = new char[] {' ', '\f', '\t', '\v', '\r', '\n',  ',', ';', '(', ')', '[', ']','='};\r
-               protected internal override SimpleMatch Match(string input, int beginning, int length) {\r
-\r
-                       int actualLen = length-1; //there must be something after @\r
-                       for (int i = beginning; i < actualLen; i++) {\r
-                               char ch = input[i];\r
-                               switch(ch) {\r
-                                       case '\'': {\r
-                                               int end = input.IndexOf('\'', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '"': {\r
-                                               int end = input.IndexOf('"', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '[': {\r
-                                               int end = input.IndexOf(']', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '@': {\r
-                                               int start = i;\r
-\r
-                                               do {\r
-                                                       i++;\r
-                                               }while (i < length && input[i] == '@');\r
-\r
-                                               if (i - start > 1)\r
-                                                       break;\r
-\r
-                                               while (i < length && IsWordChar(input[i]))\r
-                                                       i++;\r
-       \r
-                                               return new SimpleMatch(this, length, true, start, i-start, input);\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       return new SimpleMatch(this, length, false, length, 0, input);\r
-               }\r
-       }\r
-\r
-       internal class CharacterSplitterRegex : SimpleRegex {\r
-               char _delimiter;\r
-               internal CharacterSplitterRegex(char delimiter) {\r
-                       _delimiter = delimiter;\r
-               }\r
-               protected internal override SimpleMatch Match(string input, int beginning, int length) {\r
-\r
-                       for (int i = beginning; i < length; i++) {\r
-                               char ch = input[i];\r
-                               switch(ch) {\r
-                                       case '\'': {\r
-                                               int end = input.IndexOf('\'', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '"': {\r
-                                               int end = input.IndexOf('"', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       case '[': {\r
-                                               int end = input.IndexOf(']', i+1);\r
-                                               if (end < 0)\r
-                                                       break;\r
-\r
-                                               i = end;\r
-                                               break;\r
-                                       }\r
-                                       default: {\r
-                                               if (ch != _delimiter)\r
-                                                       break;\r
-\r
-                                               return new SimpleMatch(this, length, true, beginning, i-beginning, 1, input);\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       int matchLength = length-beginning;\r
-                       return new SimpleMatch(this, length, matchLength > 0, beginning, matchLength, input);\r
-               }\r
-       }\r
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/ChangeLog b/mcs/class/System.Data/System.Data.ProviderBase/ChangeLog
deleted file mode 100644 (file)
index 883b6a2..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DbDataReaderBase.cs: Switch to the (bool) form of Dispose to
-       override, as the no-arg form isn't virtual.
-
-2005-11-21 Senganal T <tsenganal@novell.com>
-       
-       * DbParameterCollectionBase.cs 
-               - Marked CheckName method as virtual
-       * DbParameterBase.cs
-               - Marked Offset property and CopyTo method as virtual
-
-2005-05-29 Boris Kirzner <borisk@mainsoft.com>
-       * DbCommandBase.cs 
-               - Private members names changed.
-               - Implemented ExsecuteScalar, ExecuteNonQuery, PropertyChanging and ResetCommandTimeout.
-               - Implemented copy ctor.
-       * DbDataReaderBase.cs
-               - Implemented Depth property.
-               - Added #ifdef NET_2_0 on ISValidRow (not used in TARGET_JVM).
-               - Implemented Dispose and GetEnumerator methods.
-       * DbParameterBase.cs
-               - Private members names changed.
-               - Implemented copy ctor.
-               - Reimplemented Direction, ParameterName, Size and SourceColumn properties.
-               - Added #ifdef NET_2_0 on methods not used in TARGET_JVM
-               - Implemented CopyTo and ShouldSerializeSize methods
-               - Added internal Parent property (used by DbParameterCollectionBase)
-       * DbParameterCollectionBase.cs
-               - Private members names changed.
-               - Re/Implemented public methods and added private ones.
-       * DbStringManager.cs - removed.
-       
-2005-03-11  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbConnectionBase.cs : Implemented OnStateChange.
-
-2005-03-08  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbParameterBase.cs: Implemented most of get set methods.
-       * DbConnectionBase.cs: Commented ConnectionOptions creation,
-       because it is not yet implemented.
-       * DbCommandBase.cs: Implemented ExecuteScalar method.
-       * DbParameterCollectionBase.cs: Implemented Add method.
-       * DbDataReaderBase.cs: removed internal constructor DbDataReader
-       (DbCommand).
-
-2005-03-02  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbConnectionBase.cs: CreateDbCommand: assign connection to the
-       created command.
-
-2005-02-02  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbConnectionBase.cs: Implement Dispose Pattern
-
-2004-11-24  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DbParameterCollectionBase.cs: Class name changed according to
-       the documentation
-       * DbDataReaderBase.cs: Added internal constructor to satisfy
-       SqlDataReader, which takes command object.
-       * DbConnectionBase.cs: Added additional methods overriding
-       DbConnection
-
-2003-12-28  Tim Coleman <tim@timcoleman.com>
-       * DbParameterBase.cs:
-               Correct type of ValueSize method to int
-
-2003-12-23  Tim Coleman <tim@timcoleman.com>
-       * DbCommandBase.cs DbConnectionBase.cs DbConnectionFactory.cs
-       * DbParameterCollectionBase.cs:
-               Some implementation
-
-2003-12-21  Tim Coleman <tim@timcoleman.com>
-       * DbConnectionBase.cs DbConnectionFactory.cs DbConnectionInternal.cs
-       * DbConnectionPoolCounters.cs DbConnectionPoolOptions.cs
-       * DbDataReaderBase.cs DbMetaDataFactory.cs DbParameterBase.cs
-       * DbParameterCollectionBase.cs DbReferenceCollection.cs:
-               New stubs added
-
-2003-12-19  Tim Coleman <tim@timcoleman.com>
-       * DbCommandBase.cs:
-               New stub added
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbCommandBase.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbCommandBase.cs
deleted file mode 100644 (file)
index 78e753a..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-//
-// System.Data.ProviderBase.DbCommandBase
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//      Boris Kirzner (borisk@mainsoft.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbCommandBase : DbCommand
-       {
-               #region Fields
-               
-               string _commandText;
-               int _commandTimeout;
-               CommandType _commandType;
-               bool _designTimeVisible;
-               UpdateRowSource _updatedRowSource;
-
-               #endregion // Fields
-
-               #region Constructors
-               
-               protected DbCommandBase ()
-               {
-                       _commandText = String.Empty;
-                       _commandTimeout = 30;
-                       _commandType = CommandType.Text;
-                       _designTimeVisible = true;
-                       _updatedRowSource = UpdateRowSource.Both;
-               }
-
-               protected DbCommandBase (DbCommandBase from)
-               {
-                       _commandText = from._commandText;
-                       _commandTimeout = from._commandTimeout;
-                       _commandType = from._commandType;
-                       _updatedRowSource = from._updatedRowSource;
-                       _designTimeVisible = from._designTimeVisible;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override string CommandText {
-                       get { return _commandText; }
-                       set { _commandText = value; }
-               }
-               public override int CommandTimeout {
-                       get { return _commandTimeout; }
-                       set { _commandTimeout = value; }
-               }
-
-               public override CommandType CommandType {
-                       get { return _commandType; }
-                       set { _commandType = value; }
-               }
-
-               public override bool DesignTimeVisible {
-                       get { return _designTimeVisible; }
-                       set { _designTimeVisible = value; }
-               }       
-
-               public override UpdateRowSource UpdatedRowSource {
-                       get { return _updatedRowSource; }
-                       set { _updatedRowSource = value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public override void Cancel ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               
-               public override int ExecuteNonQuery ()
-               {
-                       IDataReader reader = null;
-                       try {
-                               reader = ExecuteReader ();
-                       }
-                       finally {
-                               if (reader != null)
-                                       reader.Close ();                                
-                       }
-                       return reader.RecordsAffected;
-               }
-
-               public override object ExecuteScalar ()
-               {
-                       IDataReader reader = ExecuteReader(CommandBehavior.SingleRow | CommandBehavior.SequentialAccess);
-                       
-                       try {
-                               do {
-                                       if (reader.FieldCount > 0 && reader.Read ())
-                                               return reader.GetValue (0);                     
-                               }
-                               while (reader.NextResult ());
-                               return null;
-                       } finally {
-                               reader.Close();
-                       }
-               }
-
-               [MonoTODO]
-               public override void Prepare ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public virtual void PropertyChanging ()
-               {
-               }
-
-               public virtual void ResetCommandTimeout ()
-               {
-                       _commandTimeout = 30;
-               }
-
-               [MonoTODO]
-               protected internal static void SetInputParameterValues (DbCommand command, object[] inputParameterValues)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionBase.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionBase.cs
deleted file mode 100644 (file)
index 56685cd..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-//
-// System.Data.ProviderBase.DbConnectionBase
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Transactions;
-using System.Data.Common;
-using System.EnterpriseServices;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbConnectionBase : DbConnection
-       {
-               #region Fields
-
-               DbConnectionFactory connectionFactory;
-               DbConnectionString connectionOptions;
-               string connectionString;
-                bool disposed = false;
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               protected DbConnectionBase (DbConnectionBase connection)
-                       : this (connection.ConnectionFactory)
-               {
-               }
-
-               protected DbConnectionBase (DbConnectionFactory connectionFactory)
-               {
-                       this.connectionFactory = connectionFactory;
-               }
-
-                protected DbConnectionBase ()
-                {
-                        
-                }
-               
-               #endregion // Constructors
-
-               #region Properties
-
-               [MonoTODO]
-               protected int CloseCount {
-                       get { throw new NotImplementedException (); }
-               }
-
-               protected internal DbConnectionFactory ConnectionFactory {
-                       get { return connectionFactory; }
-               }
-
-               protected internal DbConnectionString ConnectionOptions {
-                       get { return connectionOptions; }
-               }
-
-               public override string ConnectionString {
-                       get { return connectionString; }
-                       set { 
-                               //connectionOptions = ConnectionFactory.CreateConnectionOptionsInternal (value);
-                               connectionString = value;
-                       }
-               }
-
-               [MonoTODO]
-               public override int ConnectionTimeout {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               protected virtual int ConnectionTimeoutInternal {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override string Database {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override string DataSource {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               protected internal DbConnectionInternal InnerConnection {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override string ServerVersion {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override ConnectionState State {
-                       get { throw new NotImplementedException (); }
-               }
-
-               #endregion // Properties
-
-               #region Events
-
-               public event StateChangeEventHandler StateChange;
-
-               #endregion // Events
-
-               #region Methods
-
-               [MonoTODO]
-               protected override DbTransaction BeginDbTransaction (IsolationLevel isolationLevel)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override void ChangeDatabase (string value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override void Close ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected override DbCommand CreateDbCommand ()
-               {
-                       DbCommand cmd = (DbCommand) ConnectionFactory.ProviderFactory.CreateCommand ();
-                        cmd.Connection = this;
-                        return cmd;
-               }
-
-               protected override void Dispose (bool disposing)
-               {
-                        if (!disposed) { 
-                                try {
-                                        if (disposing) {
-                                                // do necessary clean up
-                                        }
-                                        disposed = true;
-                                } finally {
-                                        base.Dispose (disposing);
-                                }
-                       }
-               }
-
-               [MonoTODO]
-               public void EnlistDistributedTransaction (EnterpriseServices.ITransaction transaction)
-               {
-                       throw new NotImplementedException ();
-               }
-
-                [MonoTODO]
-                public void EnlistTransaction (Transaction transaction)
-                {
-                       throw new NotImplementedException ();                        
-                }
-
-               [MonoTODO]
-               protected virtual DbMetaDataFactory GetMetaDataFactory (DbConnectionInternal internalConnection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected void OnStateChange (ConnectionState originalState, ConnectionState currentState)
-               {
-                        if (StateChange != null)
-                                StateChange (this, new StateChangeEventArgs (originalState, currentState));
-               }
-
-               [MonoTODO]
-               public override void Open ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchema ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchema (string collectionName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchema (string collectionName, string [] restrictionValues)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionFactory.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionFactory.cs
deleted file mode 100644 (file)
index 37f8bcb..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// System.Data.ProviderBase.DbConnectionFactory
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbConnectionFactory 
-       {
-               #region Fields
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               [MonoTODO]
-               protected DbConnectionFactory ()
-               {
-               }
-
-               [MonoTODO]
-               protected DbConnectionFactory (DbConnectionPoolCounters performanceCounters)
-               {
-               }
-               
-               #endregion // Constructors
-
-               #region Properties
-
-               public abstract DbProviderFactory ProviderFactory { get; }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               protected virtual IAsyncResult BeginCreateConnection (DbConnectionBase owningObject, DbConnectionString connectionOptions, DbConnectionInternal connection, AsyncCallback callback, object asyncStateObject)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void ClearAllPools ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void ClearPool (DbConnectionBase connection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected abstract DbConnectionInternal CreateConnection (DbConnectionString options, DbConnectionBase owningObject);
-               protected abstract DbConnectionString CreateConnectionOptions (string connectionString);
-               protected abstract DbConnectionPoolOptions CreateConnectionPoolOptions (DbConnectionString options);
-
-               [MonoTODO]
-               protected virtual DbMetaDataFactory CreateMetaDataFactory (DbConnectionInternal internalConnection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual DbConnectionInternal EndCreateConnection (IAsyncResult asyncResult)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected internal DbMetaDataFactory GetMetaDataFactory (DbConnectionString connectionOptions, DbConnectionInternal internalConnection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               internal DbConnectionString CreateConnectionOptionsInternal (string connectionString)
-               {
-                       return CreateConnectionOptions (connectionString);
-               }
-
-               [MonoTODO]
-               public void SetConnectionPoolOptions (string connectionString, DbConnectionPoolOptions poolOptions)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionInternal.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionInternal.cs
deleted file mode 100644 (file)
index 5a22ebe..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-//
-// System.Data.ProviderBase.DbConnectionInternal
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-using System.EnterpriseServices;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbConnectionInternal 
-       {
-               #region Fields
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               [MonoTODO]
-               protected DbConnectionInternal ()
-               {
-               }
-               
-               #endregion // Constructors
-
-               #region Properties
-
-               [MonoTODO]
-               protected bool IsEnlistedInDistributedTransaction {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               protected internal object Owner {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               protected internal DbReferenceCollection ReferenceCollection {
-                       get { throw new NotImplementedException (); }
-               }
-
-               public abstract string ServerVersion { get; }
-
-               [MonoTODO]
-               public virtual string ServerVersionNormalized {
-                       get { throw new NotImplementedException (); }
-               }
-
-               public abstract ConnectionState State { get; }
-
-               #endregion // Properties
-
-               #region Methods
-
-               protected abstract void Activate (bool isInTransaction);
-
-               [MonoTODO]
-               protected virtual IAsyncResult BeginOpen (DbConnectionBase outerConnection, AsyncCallback callback, object asyncStateObject)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public abstract DbTransaction BeginTransaction (IsolationLevel il);
-
-               [MonoTODO]
-               public virtual void ChangeDatabase (string value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public virtual void Close ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual DbReferenceCollection CreateReferenceCollection ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected abstract void Deactivate ();
-
-               [MonoTODO]
-               public void Dispose ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual void Dispose (bool disposing)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected internal void DoomThisConnection ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public virtual void EndOpen (DbConnectionBase outerConnection, IAsyncResult asyncResult)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public abstract void EnlistDistributedTransaction (ITransaction transaction);
-
-               [MonoTODO]
-               protected virtual DataTable GetSchemaInternal (DbConnectionBase outerConnection, string collectionName, string[] restrictions)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public virtual void Open (DbConnectionBase outerConnection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected void PurgeWeakReferences ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected internal void SetDistributedTransaction (ITransaction transaction, bool manualEnlistment)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionPoolCounters.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionPoolCounters.cs
deleted file mode 100644 (file)
index 9791e76..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// System.Data.ProviderBase.DbConnectionPoolCounters
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbConnectionPoolCounters
-       {
-               #region Constructors
-       
-               [MonoTODO]
-               protected DbConnectionPoolCounters ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               [MonoTODO]
-               public virtual void Dispose ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected void InitCounters ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionPoolOptions.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbConnectionPoolOptions.cs
deleted file mode 100644 (file)
index e996830..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// System.Data.ProviderBase.DbConnectionPoolOptions
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public sealed class DbConnectionPoolOptions
-       {
-               #region Fields
-
-               bool poolByIdentity;
-               int creationTimeout;
-               bool hasTransactionAffinity;
-               int loadBalanceTimeout;
-               int maxPoolSize;
-               int minPoolSize;
-               bool useDeactivateQueue;
-
-               #endregion // Fields
-
-               #region Constructors
-       
-               [MonoTODO]
-               public DbConnectionPoolOptions (bool poolByIdentity, int minPoolSize, int maxPoolSize, int creationTimeout, int loadBalanceTimeout, bool hasTransactionAffinity, bool useDeactivateQueue)
-               {
-                       this.poolByIdentity = poolByIdentity;
-                       this.minPoolSize = minPoolSize;
-                       this.maxPoolSize = maxPoolSize;
-                       this.creationTimeout = creationTimeout;
-                       this.loadBalanceTimeout = loadBalanceTimeout;
-                       this.hasTransactionAffinity = hasTransactionAffinity;
-                       this.useDeactivateQueue = useDeactivateQueue;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public int CreationTimeout {
-                       get { return creationTimeout; }
-               }
-
-               public bool HasTransactionAffinity {
-                       get { return hasTransactionAffinity; }
-               }
-
-               public int LoadBalanceTimeout {
-                       get { return loadBalanceTimeout; }
-               }
-
-               public int MaxPoolSize {
-                       get { return maxPoolSize; }
-               }
-
-               public int MinPoolSize {
-                       get { return minPoolSize; }
-               }
-
-               public bool PoolByIdentity {
-                       get { return poolByIdentity; }
-               }
-
-               public bool UseDeactivateQueue {
-                       get { return useDeactivateQueue; }
-               }
-
-               [MonoTODO]
-               public bool UseLoadBalancing {
-                       get { throw new NotImplementedException (); }
-               }
-
-               #endregion // Properties
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbDataReaderBase.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbDataReaderBase.cs
deleted file mode 100644 (file)
index a667b9c..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-//
-// System.Data.ProviderBase.DbDataReaderBase
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//      Boris Kirzner (borisk@mainsoft.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Collections;
-using System.Data.Common;
-using System.Runtime.InteropServices;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbDataReaderBase : DbDataReader
-       {
-               #region Fields
-               
-               CommandBehavior behavior;
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               protected DbDataReaderBase (CommandBehavior behavior)
-               {
-                       this.behavior = behavior;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               protected CommandBehavior CommandBehavior {
-                       get { return behavior; }
-               }
-
-               public override int Depth {
-                       // default value to be overriden by user
-                       get { return 0; }
-               }
-
-               [MonoTODO]
-               public override int FieldCount {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override bool HasRows {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override bool IsClosed {
-                       get { throw new NotImplementedException (); }
-               }
-
-               protected abstract bool IsValidRow { get; }
-
-               [MonoTODO]
-               public override object this [[Optional] int index] {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override object this [[Optional] string columnName] {
-                       get { throw new NotImplementedException (); }
-               }
-
-               [MonoTODO]
-               public override int RecordsAffected {
-                       get { throw new NotImplementedException (); }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               protected void AssertReaderHasColumns ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected void AssertReaderHasData ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected void AssertReaderIsOpen (string methodName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override void Close ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected static DataTable CreateSchemaTable ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected override void Dispose (bool disposing)
-               {
-                       if (disposing)
-                               Close ();
-               }
-
-               [MonoTODO]
-               protected virtual void FillSchemaTable (DataTable dataTable)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool GetBoolean (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override byte GetByte (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override long GetBytes (int ordinal, long fieldoffset, byte[] buffer, int bufferoffset, int length)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override char GetChar (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override long GetChars (int ordinal, long fieldoffset, char[] buffer, int bufferoffset, int length)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override string GetDataTypeName (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DateTime GetDateTime (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override decimal GetDecimal (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override double GetDouble (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override IEnumerator GetEnumerator ()
-               {
-                       bool closeReader = (CommandBehavior & CommandBehavior.CloseConnection) != 0;
-                       return new DbEnumerator (this , closeReader);
-               }
-
-               [MonoTODO]
-               public override Type GetFieldType (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override float GetFloat (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override Guid GetGuid (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override short GetInt16 (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override int GetInt32 (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override long GetInt64 (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override string GetName (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override int GetOrdinal (string name)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override DataTable GetSchemaTable ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override string GetString (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override object GetValue (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override int GetValues (object[] values)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected bool IsCommandBehavior (CommandBehavior condition)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool IsDBNull (int ordinal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool NextResult ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool Read ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbMetaDataFactory.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbMetaDataFactory.cs
deleted file mode 100644 (file)
index 088b701..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// System.Data.ProviderBase.DbMetaDataFactory
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-using System.IO;
-
-namespace System.Data.ProviderBase {
-       public class DbMetaDataFactory 
-       {
-               #region Fields
-
-               Stream xmlStream;
-               string serverVersion;
-               string serverVersionNormalized;
-               
-               #endregion // Fields
-
-               #region Constructors
-
-               [MonoTODO]
-               public DbMetaDataFactory (Stream XmlStream, string serverVersion, string serverVersionNormalized)
-               {
-                       this.xmlStream = XmlStream;
-                       this.serverVersion = serverVersion;
-                       this.serverVersionNormalized = serverVersionNormalized;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [MonoTODO]
-               protected DataSet CollectionDataSet {
-                       get { throw new NotImplementedException (); }
-               }
-
-               protected string ServerVersion {
-                       get { return serverVersion; }
-               }
-
-               protected string ServerVersionNormalized {
-                       get { return serverVersionNormalized; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               protected DataTable CloneAndFilterCollection (string collectionName, string[] hiddenColumnNames)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void Dispose ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual void Dispose (bool disposing)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public virtual DataTable GetSchema (DbConnection connection, DbConnectionInternal internalConnection, string collectionName, string[] restrictions)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public virtual DataTable PrepareCollection (string collectionName, string[] restrictions, DbConnection connection, DbConnectionInternal internalConnection)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-
-               public class CollectionNames
-               {
-                       #region Fields
-
-                       public const string DataSourceInformation = "DataSourceInformation";
-                       public const string DataTypes = "DataTypes";
-                       public const string MetaDataCollections = "MetaDataCollections";
-                       public const string ReservedWords = "ReservedWords";
-                       public const string Restrictions = "Restrictions";
-
-                       #endregion // Fields
-
-                       #region Constructors
-       
-                       [MonoTODO]
-                       protected CollectionNames ()
-                       {
-                       }
-
-                       #endregion // Constructors
-               }
-
-               public class ColumnNames
-               {
-                       #region Fields
-
-                       public const string CollectionName = "CollectionName";
-                       public const string ColumnSize = "ColumnSize";
-                       public const string CompositeIdentifierSeparatorPattern = "CompositeIdentifierSeparatorPattern";
-                       public const string CreateFormat = "CreateFormat";
-                       public const string CreateParameters = "CreateParameters";
-                       public const string DataSourceProductName = "DataSourceProductName";
-                       public const string DataSourceProductVersion = "DataSourceProductVersion";
-                       public const string DataSourceProductVersionNormalized = "DataSourceProductVersionNormalized";
-                       public const string DataType = "DataType";
-                       public const string GroupByBehavior = "GroupByBehavior";
-                       public const string IdentifierCase = "IdentifierCase";
-                       public const string IdentifierPattern = "IdentifierPattern";
-                       public const string IsAutoIncrementable = "IsAutoIncrementable";
-                       public const string IsBestMatch = "IsBestMatch";
-                       public const string IsCaseSensitive = "IsCaseSensitive";
-                       public const string IsFixedLength = "IsFixedLength";
-                       public const string IsFixedPrecisionScale = "IsFixedPrecisionScale";
-                       public const string IsLiteralSupported = "IsLiteralSupported";
-                       public const string IsLong = "IsLong";
-                       public const string IsNullable = "IsNullable";
-                       public const string IsSearchable = "IsSearchable";
-                       public const string IsSearchableWithLike = "IsSearchableWithLike";
-                       public const string IsUnsigned = "IsUnsigned";
-                       public const string LiteralPrefix = "LiteralPrefix";
-                       public const string LiteralSuffix = "LiteralSuffix";
-                       public const string MaximumScale = "MaximumScale";
-                       public const string MinimumScale = "MinimumScale";
-                       public const string NumberOfIdentifierParts = "NumberOfIdentifierParts";
-                       public const string NumberOfRestrictions = "NumberOfRestrictions";
-                       public const string OrderByColumnsInSelect = "OrderByColumnsInSelect";
-                       public const string ParameterMarkerFormat = "ParameterMarkerFormat";
-                       public const string ParameterMarkerPattern = "ParameterMarkerPattern";
-                       public const string ParameterNameMaxLength = "ParameterNameMaxLength";
-                       public const string ProviderDbType = "ProviderDbType";
-                       public const string QuotedIdentifierCase = "QuotedIdentifierCase";
-                       public const string QuotedIdentifierPattern = "QuotedIdentifierPattern";
-                       public const string ReservedWord = "ReservedWord";
-                       public const string SQLJoinSupport = "SQLJoinSupport";
-                       public const string StatementSeparatorPattern = "StatementSeparatorPattern";
-                       public const string StringLiteralPattern = "StringLiteralPattern";
-                       public const string TypeName = "TypeName";
-
-                       #endregion // Fields
-
-                       #region Constructors
-
-                       [MonoTODO]
-                       public ColumnNames ()
-                       {
-                       }
-
-                       #endregion // Constructors
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbParameterBase.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbParameterBase.cs
deleted file mode 100644 (file)
index a1a428a..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-//
-// System.Data.ProviderBase.DbParameterBase
-//
-// Author:
-//   Sureshkumar T (tsureshkumar@novell.com)
-//   Tim Coleman (tim@timcoleman.com)
-//   Boris Kirzner <borisk@mainsoft.com>
-//
-// Copyright (C) Tim Coleman, 2003
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbParameterBase : DbParameter
-       {
-                #region Fields
-               string _parameterName;
-                ParameterDirection _direction = ParameterDirection.Input;
-               int _size;
-               byte _precision;
-               byte _scale;
-               DataRowVersion _sourceVersion;
-               object _value;
-               bool _isNullable;
-               int _offset;
-               string _sourceColumn;
-               DbParameterCollection _parent = null;
-
-                #endregion // Fields
-
-               #region Constructors
-       
-               [MonoTODO]
-               protected DbParameterBase ()
-               {
-               }
-
-               protected DbParameterBase (DbParameterBase source)
-               {
-                       if (source == null) 
-                               throw ExceptionHelper.ArgumentNull ("source");
-
-                       source.CopyTo (this);
-                       ICloneable cloneable = source._value as ICloneable;
-                       if (cloneable != null)
-                               _value = cloneable.Clone ();
-               }
-        
-               #endregion // Constructors
-
-               #region Properties
-
-               [MonoTODO]
-               protected object CoercedValue {
-                       get { throw new NotImplementedException (); }
-               }
-
-               public override ParameterDirection Direction {
-                       get { return _direction; }
-                       set {
-                               if (_direction != value) {
-                                       switch (value) {
-                                                       case ParameterDirection.Input:
-                                                       case ParameterDirection.Output:
-                                                       case ParameterDirection.InputOutput:
-                                                       case ParameterDirection.ReturnValue:
-                                                       {
-                                                               PropertyChanging ();
-                                                               _direction = value;
-                                                               return;
-                                                       }
-                                       }
-                                       throw ExceptionHelper.InvalidParameterDirection (value);
-                               }
-                       }
-               }
-
-               public override bool IsNullable {
-                       get { return _isNullable; }
-                       set { _isNullable = value; }
-               }
-
-               
-               public virtual int Offset {
-                       get { return _offset; }
-                       set { _offset = value; }                        
-               }
-
-               public override string ParameterName {
-                       get {
-                               if (_parameterName == null)
-                                               return String.Empty;
-
-                               return _parameterName;
-                       }
-                       set {
-                               if (_parameterName != value) {
-                                       PropertyChanging ();
-                                       _parameterName = value;
-                               }
-                       }
-               }
-
-               public override int Size {
-                       get { return _size; }
-
-                       set {
-                               if (_size != value) {
-                                       if (value < -1)
-                                               throw ExceptionHelper.InvalidSizeValue (value);
-
-                                       PropertyChanging ();
-                                       _size = value;
-                               }
-                       }
-               }
-
-               
-               public override string SourceColumn {
-                       get { 
-                               if (_sourceColumn == null)
-                                       return String.Empty;
-
-                               return _sourceColumn;
-                       }
-
-                       set     { _sourceColumn = value; }
-               }
-
-               public override DataRowVersion SourceVersion {
-                       get { return _sourceVersion; }
-                       set { _sourceVersion = value; }
-               }
-
-               
-               public override object Value {
-                       get { return _value; }
-                       set { _value = value; }
-               }
-
-               internal DbParameterCollection Parent
-               {
-                       get { return _parent; }
-                       set { _parent = value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public virtual void CopyTo (DbParameter destination)
-               {
-                       if (destination == null)
-                               throw ExceptionHelper.ArgumentNull ("destination");
-
-                       DbParameterBase t = (DbParameterBase)destination;
-                       t._parameterName = _parameterName;                      
-                       t._size = _size;
-                       t._offset = _offset;
-                       t._isNullable = _isNullable;
-                       t._sourceColumn = _sourceColumn;
-                       t._direction = _direction;
-
-                       if (_value is ICloneable)
-                t._value = ((ICloneable) _value).Clone ();
-            else
-                t._value = this._value;
-               }               
-
-               public virtual void PropertyChanging ()
-               {
-               }
-
-
-               [MonoTODO]
-               protected void ResetCoercedValue ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected void ResetScale ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected void SetCoercedValue ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected bool ShouldSerializePrecision ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected bool ShouldSerializeScale ()
-               {
-                       throw new NotImplementedException ();
-               }
-       
-               protected bool ShouldSerializeSize ()
-               {
-                       return (_size != 0);
-               }
-
-               [MonoTODO]
-               public override string ToString ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual byte ValuePrecision (object value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual byte ValueScale (object value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected virtual int ValueSize (object value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbParameterCollectionBase.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbParameterCollectionBase.cs
deleted file mode 100644 (file)
index 23986ee..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-//
-// System.Data.ProviderBase.DbParameterCollectionBase
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//      Boris Kirzner (borisk@mainsoft.com)
-//
-// Copyright (C) Tim Coleman, 2003
-// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Collections;
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbParameterBaseCollection : DbParameterCollection
-       {
-               #region Fields
-
-               ArrayList _list;
-
-               #endregion // Fields
-
-               #region Constructors
-       
-               protected DbParameterBaseCollection ()
-               {
-                       _list = new ArrayList ();
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override int Count {
-                       get { return _list.Count; }
-               }
-
-               public override bool IsFixedSize {
-                       get { return _list.IsFixedSize; }
-               }
-
-               public override bool IsReadOnly {
-                       get { return _list.IsReadOnly; }
-               }
-
-               public override bool IsSynchronized {
-                       get { return _list.IsSynchronized; }
-               }
-
-               protected abstract Type ItemType { get; }
-
-               [MonoTODO]
-               protected virtual string ParameterNamePrefix {
-                       get { throw new NotImplementedException (); }
-               }
-
-               public override object SyncRoot {
-                       get { return _list.SyncRoot; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override int Add (object value)
-               {
-            Validate (-1, value);
-            ((DbParameterBase)value).Parent = this;
-                        return _list.Add (value);
-               }
-
-               public override void AddRange (Array values)
-               {
-                       foreach (object value in values)
-                               Add (value);
-               }
-
-               [MonoTODO]
-               protected virtual int CheckName (string parameterName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void Clear ()
-               {
-            if (_list != null && Count != 0) {
-                               for (int i = 0; i < _list.Count; i++) {
-                                       ((DbParameterBase)_list [i]).Parent = null;
-                               }
-                               _list.Clear ();
-            }
-               }
-
-               public override bool Contains (object value)
-               {
-            if (IndexOf (value) != -1)
-                return true;
-            else
-                return false;
-               }
-
-               public override bool Contains (string value)
-               {
-            if (IndexOf (value) != -1)
-                return true;
-            else
-                return false;
-               }
-
-               public override void CopyTo (Array array, int index)
-               {
-                       _list.CopyTo (array, index);
-               }
-
-               public override IEnumerator GetEnumerator ()
-               {
-                       return _list.GetEnumerator ();
-               }
-
-               protected override DbParameter GetParameter (int index)
-               {
-                       return (DbParameter) _list [index];
-               }
-
-               public override int IndexOf (object value)
-               {
-            ValidateType (value);
-                       return _list.IndexOf (value);
-               }
-
-               public override int IndexOf (string parameterName)
-               {
-            if (_list == null)
-                return -1;
-
-            for (int i = 0; i < _list.Count; i++) {
-                string name = ((DbParameterBase)_list [i]).ParameterName;
-                if (name == parameterName) {
-                    return i;
-                }
-            }
-            return -1;
-               }
-
-               [MonoTODO]
-               protected internal static int IndexOf (IEnumerable items, string parameterName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void Insert (int index, object value)
-               {
-                       Validate(-1, (DbParameterBase)value);
-                       ((DbParameterBase)value).Parent = this;
-                       _list.Insert (index, value);
-               }
-
-               [MonoTODO]
-               protected virtual void OnChange ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void Remove (object value)
-               {
-            ValidateType (value);
-                       int index = IndexOf (value);
-            RemoveIndex (index);
-               }
-
-               public override void RemoveAt (int index)
-               {
-                       RemoveIndex (index);
-               }
-
-               public override void RemoveAt (string parameterName)
-               {
-            int index = IndexOf (parameterName);
-            RemoveIndex (index);
-               }
-
-               protected override void SetParameter (int index, DbParameter value)
-               {
-                       Replace (index, value);
-               }
-
-               protected virtual void Validate (int index, object value)
-               {
-                       ValidateType (value);
-                       DbParameterBase parameter = (DbParameterBase) value;
-
-            if (parameter.Parent != null) {
-                if (parameter.Parent.Equals (this)) {
-                    if (IndexOf (parameter) != index)
-                        throw ExceptionHelper.CollectionAlreadyContains (ItemType,"ParameterName",parameter.ParameterName,this);                    
-                }
-                else {
-                                       // FIXME :  The OleDbParameter with ParameterName 'MyParam2' is already contained by another OleDbParameterCollection.
-                    throw new ArgumentException ("");
-                }
-            }
-
-            if (parameter.ParameterName == null  || parameter.ParameterName == String.Empty) {
-                               int newIndex = 1;
-                               string parameterName;
-                               
-                               do {
-                                       parameterName = "Parameter" + newIndex;
-                                       newIndex++;
-                               }
-                               while(IndexOf (parameterName) != -1);
-
-                parameter.ParameterName = parameterName;
-            }
-               }               
-
-               protected virtual void ValidateType (object value)
-               {
-                       if (value == null)
-                throw ExceptionHelper.CollectionNoNullsAllowed (this,ItemType);
-
-                       Type objectType = value.GetType ();
-                       Type itemType = ItemType;
-
-                       if (itemType.IsInstanceOfType(objectType)) {
-                               Type thisType = this.GetType ();
-                               string err = String.Format ("The {0} only accepts non-null {1} type objects, not {2} objects.", thisType.Name, itemType.Name, objectType.Name);
-                               throw new InvalidCastException (err);
-                       }
-               }
-
-               private void RemoveIndex (int index)
-        {
-                       DbParameterBase oldItem = (DbParameterBase)_list [index];
-            oldItem.Parent = null;
-            _list.RemoveAt (index);
-        }              
-
-               private void Replace (int index, DbParameter value)
-        {
-            Validate (index, value);
-            DbParameterBase oldItem = (DbParameterBase)this [index];
-            oldItem.Parent = null;
-
-            ((DbParameterBase)value).Parent = this;
-            _list [index] = value;
-        }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.ProviderBase/DbReferenceCollection.cs b/mcs/class/System.Data/System.Data.ProviderBase/DbReferenceCollection.cs
deleted file mode 100644 (file)
index 77bf72c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// System.Data.ProviderBase.DbReferenceCollection
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Collections;
-using System.Data.Common;
-
-namespace System.Data.ProviderBase {
-       public abstract class DbReferenceCollection : IEnumerable
-       {
-               #region Constructors
-       
-               [MonoTODO]
-               protected DbReferenceCollection ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               [MonoTODO]
-               public void Add (object value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public abstract void Add (object value, int tag);
-
-               [MonoTODO]
-               protected void AddItem (object value, int tag)
-               {
-                       Add (value, tag);
-               }
-
-               [MonoTODO]
-               IEnumerator IEnumerable.GetEnumerator ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void Notify (int message, int tag, object connectionInternal)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected abstract bool NotifyItem (int message, object value, int tag, object connectionInternal);
-
-               [MonoTODO]
-               public void Purge ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public abstract void Remove (object value);
-
-               [MonoTODO]
-               protected void RemoveItem (object value)
-               {
-                       Remove (value);
-               }
-
-               #endregion // Methods
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data.Sql/SqlDataSourceEnumerator.cs b/mcs/class/System.Data/System.Data.Sql/SqlDataSourceEnumerator.cs
deleted file mode 100644 (file)
index ea144fe..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.Data.Sql.SqlDataSourceEnumerator
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Data.Common;
-
-namespace System.Data.Sql {
-       public sealed class SqlDataSourceEnumerator : DbDataSourceEnumerator
-       {
-               #region Constructors
-
-               private SqlDataSourceEnumerator ()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [MonoTODO]
-               public static SqlDataSourceEnumerator Instance { 
-                       get { throw new NotImplementedException (); }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public override DataTable GetDataSources ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
-
index 8746e40cae635a874a5730662517d669bfe6fdb9..1620c6055ea0d019430deee21bfd407be4d6b548 100644 (file)
@@ -179,6 +179,10 @@ namespace System.Data.SqlClient {
                                                         "exec sp_tablecollations_90 '" +
                                                         DestinationTableName + "'",
                                                         connection);
+
+                       if (externalTransaction != null)
+                               cmd.Transaction = externalTransaction;
+
                        SqlDataReader reader = cmd.ExecuteReader ();
                        int i = 0; // Skipping 1st result
                        do {
@@ -187,7 +191,7 @@ namespace System.Data.SqlClient {
                                  } else if (i == 2) {
                                        SqlDataAdapter adapter = new SqlDataAdapter ();
                                        adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
-                                       columnMetaDataTables [i - 1] = new DataTable ();
+                                       columnMetaDataTables [i - 1] = new DataTable (DestinationTableName);
                                        adapter.FillInternal (columnMetaDataTables [i - 1], reader);
                                }
                                i++;
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlClientPermission.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlClientPermission.cs
deleted file mode 100644 (file)
index c66bf33..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// System.Data.SqlClient.SqlClientPermission.cs
-//
-// Authors:
-//     Rodrigo Moya (rodrigo@ximian.com)
-//     Daniel Morgan (danmorg@sc.rr.com)
-//     Tim Coleman (tim@timcoleman.com)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.SqlClient {
-
-       [Serializable]
-       public sealed class SqlClientPermission : DBDataPermission {
-
-               #region Fields
-               #endregion // Fields
-
-               #region Constructors
-
-               [Obsolete ("Use SqlClientPermission(PermissionState.None)", true)]
-               public SqlClientPermission ()
-                       : this (PermissionState.None)
-               {
-               }
-
-               public SqlClientPermission (PermissionState state) 
-                       : base (state)
-               {
-               }
-
-               [Obsolete ("Use SqlClientPermission(PermissionState.None)", true)]
-               public SqlClientPermission (PermissionState state, bool allowBlankPassword) 
-                       : base (state)
-               {
-                       AllowBlankPassword = allowBlankPassword;
-               }
-
-               // required for Copy method
-               internal SqlClientPermission (DBDataPermission permission)
-                       : base (permission)
-               {
-               }
-
-               // easier (and common) permission creation from attribute class
-               internal SqlClientPermission (DBDataPermissionAttribute attribute)
-                       : base (attribute)
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               public override IPermission Copy ()
-               {
-                       return new SqlClientPermission (this);
-               }
-
-               public override void Add (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
-               {
-                       base.Add (connectionString, restrictions, behavior);
-               }
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlClientPermissionAttribute.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlClientPermissionAttribute.cs
deleted file mode 100644 (file)
index 7330119..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// System.Data.SqlClient.SqlClientPermissionAttribute.cs
-//
-// Authors:
-//     Rodrigo Moya (rodrigo@ximian.com)
-//     Daniel Morgan (danmorg@sc.rr.com)
-//     Tim Coleman (tim@timcoleman.com)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Data.SqlClient {
-
-       [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | 
-                        AttributeTargets.Struct | AttributeTargets.Constructor | 
-                        AttributeTargets.Method, AllowMultiple=true,
-                        Inherited=false)]
-       [Serializable]
-       public sealed class SqlClientPermissionAttribute : DBDataPermissionAttribute {
-
-               #region Constructors
-
-               public SqlClientPermissionAttribute (SecurityAction action) 
-                       : base (action)
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               public override IPermission CreatePermission () 
-               {
-                       return new SqlClientPermission (this);
-               }
-
-               #endregion // Methods
-       }
-}
index 38f7ec7bb6e0d98f2dba2283d9519727e02a4524..194aef4668076d23e69f244c31588d2d58dcc49d 100644 (file)
@@ -419,7 +419,10 @@ namespace System.Data.SqlClient
                
                private SqlInfoMessageEventArgs CreateSqlInfoMessageEvent (TdsInternalErrorCollection errors)
                {
-                       return new SqlInfoMessageEventArgs (errors);
+                       foreach (TdsInternalError e in errors)
+                               return new SqlInfoMessageEventArgs (new SqlException (e.Class, e.LineNumber, e.Message, e.Number, e.Procedure, e.Server, "Mono SqlClient Data Provider", e.State));
+
+                       return null;
                }
 
                private StateChangeEventArgs CreateStateChangeEvent (ConnectionState originalState, ConnectionState currentState)
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlConnectionStringBuilder.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlConnectionStringBuilder.cs
deleted file mode 100644 (file)
index ea68940..0000000
+++ /dev/null
@@ -1,864 +0,0 @@
-//
-// System.Data.SqlClient.SqlConnectionStringBuilder.cs
-//
-// Author:
-//   Sureshkumar T (tsureshkumar@novell.com)
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Text;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-
-using System.Data;
-using System.Data.Common;
-using System.ComponentModel;
-
-namespace System.Data.SqlClient
-{
-       [DefaultPropertyAttribute ("DataSource")]
-       [TypeConverterAttribute ("System.Data.SqlClient.SqlConnectionStringBuilder+SqlConnectionStringBuilderConverter, " + Consts.AssemblySystem_Data)]
-       public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder
-       {
-
-               private const string    DEF_APPLICATIONNAME             = ".NET SqlClient Data Provider";
-               private const bool      DEF_ASYNCHRONOUSPROCESSING      = false;
-               private const string    DEF_ATTACHDBFILENAME            = "";
-               private const bool      DEF_CONNECTIONRESET             = true;
-               private const int       DEF_CONNECTTIMEOUT              = 15;
-               private const string    DEF_CURRENTLANGUAGE             = "";
-               private const string    DEF_DATASOURCE                  = "";
-               private const bool      DEF_ENCRYPT                     = false;
-               private const bool      DEF_ENLIST                      = false;
-               private const string    DEF_FAILOVERPARTNER             = "";
-               private const string    DEF_INITIALCATALOG              = "";
-               private const bool      DEF_INTEGRATEDSECURITY          = false;
-               private const int       DEF_LOADBALANCETIMEOUT          = 0;
-               private const int       DEF_MAXPOOLSIZE                 = 100;
-               private const int       DEF_MINPOOLSIZE                 = 0;
-               private const bool      DEF_MULTIPLEACTIVERESULTSETS    = false;
-               private const string    DEF_NETWORKLIBRARY              = "";
-               private const int       DEF_PACKETSIZE                  = 8000;
-               private const string    DEF_PASSWORD                    = "";
-               private const bool      DEF_PERSISTSECURITYINFO         = false;
-               private const bool      DEF_POOLING                     = true;
-               private const bool      DEF_REPLICATION                 = false;
-               private const string    DEF_USERID                      = "";
-               private const string    DEF_WORKSTATIONID               = "";
-               private const string    DEF_TYPESYSTEMVERSION           = "Latest";
-               private const bool      DEF_TRUSTSERVERCERTIFICATE      = false;
-               private const bool      DEF_USERINSTANCE                = false;  
-               private const bool      DEF_CONTEXTCONNECTION           = false;        
-               private const string    DEF_TRANSACTIONBINDING          = "Implicit Unbind";
-
-
-               #region // Fields
-               private string  _applicationName;
-               private bool    _asynchronousProcessing;
-               private string  _attachDBFilename;
-               private bool    _connectionReset;
-               private int     _connectTimeout;
-               private string  _currentLanguage;
-               private string  _dataSource;
-               private bool    _encrypt;
-               private bool    _enlist;
-               private string  _failoverPartner;
-               private string  _initialCatalog;
-               private bool    _integratedSecurity;
-               private int     _loadBalanceTimeout;
-               private int     _maxPoolSize;
-               private int     _minPoolSize;
-               private bool    _multipleActiveResultSets;
-               private string  _networkLibrary;
-               private int     _packetSize;
-               private string  _password;
-               private bool    _persistSecurityInfo;
-               private bool    _pooling;
-               private bool    _replication;
-               private string  _userID;
-               private string  _workstationID;
-               private bool    _trustServerCertificate;
-               private string  _typeSystemVersion;
-               private bool    _userInstance;
-               private bool    _contextConnection;
-               private string  _transactionBinding;
-
-               private static Dictionary <string, string> _keywords; // for mapping duplicate keywords
-               private static Dictionary <string, object> _defaults; 
-               #endregion // Fields
-
-               #region Constructors
-               public SqlConnectionStringBuilder () : this (String.Empty)
-               {
-               }
-
-               public SqlConnectionStringBuilder (string connectionString)
-               {
-                       Init ();
-                       base.ConnectionString = connectionString;
-               }
-
-               static SqlConnectionStringBuilder ()
-               {
-                       _keywords = new Dictionary <string, string> ();
-                       _keywords ["APP"]                       = "Application Name";
-                       _keywords ["APPLICATION NAME"]          = "Application Name";
-                       _keywords ["ATTACHDBFILENAME"]          = "AttachDbFilename";
-                       _keywords ["EXTENDED PROPERTIES"]       = "Extended Properties";
-                       _keywords ["INITIAL FILE NAME"]         = "Initial File Name";
-                       _keywords ["TIMEOUT"]                   = "Connect Timeout";
-                       _keywords ["CONNECT TIMEOUT"]           = "Connect Timeout";
-                       _keywords ["CONNECTION TIMEOUT"]        = "Connect Timeout";
-                       _keywords ["CONNECTION RESET"]          = "Connection Reset";
-                       _keywords ["LANGUAGE"]                  = "Current Language";
-                       _keywords ["CURRENT LANGUAGE"]          = "Current Language";
-                       _keywords ["DATA SOURCE"]               = "Data Source";
-                       _keywords ["SERVER"]                    = "Data Source";
-                       _keywords ["ADDRESS"]                   = "Data Source";
-                       _keywords ["ADDR"]                      = "Data Source";
-                       _keywords ["NETWORK ADDRESS"]           = "Data Source";
-                       _keywords ["ENCRYPT"]                   = "Encrypt";
-                       _keywords ["ENLIST"]                    = "Enlist";
-                       _keywords ["INITIAL CATALOG"]           = "Initial Catalog";
-                       _keywords ["DATABASE"]                  = "Initial Catalog";
-                       _keywords ["INTEGRATED SECURITY"]       = "Integrated Security";
-                       _keywords ["TRUSTED_CONNECTION"]        = "Integrated Security";
-                       _keywords ["MAX POOL SIZE"]             = "Max Pool Size";
-                       _keywords ["MIN POOL SIZE"]             = "Min Pool Size";
-                       _keywords ["MULTIPLEACTIVERESULTSETS"]  = "MultipleActiveResultSets";
-                       _keywords ["ASYNCHRONOUS PROCESSING"]   = "Asynchronous Processing";
-                       _keywords ["ASYNC"]                     = "Async";
-                       _keywords ["NET"]                       = "Network Library";
-                       _keywords ["NETWORK"]                   = "Network Library";
-                       _keywords ["NETWORK LIBRARY"]           = "Network Library";
-                       _keywords ["PACKET SIZE"]               = "Packet Size";
-                       _keywords ["PASSWORD"]                  = "Password";
-                       _keywords ["PWD"]                       = "Password";
-                       _keywords ["PERSISTSECURITYINFO"]       = "Persist Security Info";
-                       _keywords ["PERSIST SECURITY INFO"]     = "Persist Security Info";
-                       _keywords ["POOLING"]                   = "Pooling";
-                       _keywords ["UID"]                       = "User ID";
-                       _keywords ["USER"]                      = "User ID";
-                       _keywords ["USER ID"]                   = "User ID";
-                       _keywords ["WSID"]                      = "Workstation ID";
-                       _keywords ["WORKSTATION ID"]            = "Workstation ID";
-                       _keywords ["USER INSTANCE"]             = "User Instance";
-                       _keywords ["CONTEXT CONNECTION"]        = "Context Connection";
-                       _keywords ["TRANSACTION BINDING"]       = "Transaction Binding";
-                       _keywords ["FAILOVER PARTNER"]          = "Failover Partner";
-                       _keywords ["REPLICATION"]               = "Replication";
-                       _keywords ["TRUSTSERVERCERTIFICATE"]    = "TrustServerCertificate";
-                       _keywords ["LOAD BALANCE TIMEOUT"]      = "Load Balance Timeout";
-                       _keywords ["TYPE SYSTEM VERSION"]       = "Type System Version";
-
-                       _defaults = new Dictionary<string, object> ();
-                       _defaults.Add("Data Source", DEF_DATASOURCE);
-                       _defaults.Add("Failover Partner", DEF_FAILOVERPARTNER);
-                       _defaults.Add("AttachDbFilename", DEF_ATTACHDBFILENAME);
-                       _defaults.Add("Initial Catalog", DEF_INITIALCATALOG);
-                       _defaults.Add("Integrated Security", DEF_INTEGRATEDSECURITY);
-                       _defaults.Add("Persist Security Info", DEF_PERSISTSECURITYINFO);
-                       _defaults.Add("User ID", DEF_USERID);
-                       _defaults.Add("Password", DEF_PASSWORD);
-                       _defaults.Add("Enlist", DEF_ENLIST);
-                       _defaults.Add("Pooling", DEF_POOLING);
-                       _defaults.Add("Min Pool Size", DEF_MINPOOLSIZE);
-                       _defaults.Add("Max Pool Size", DEF_MAXPOOLSIZE);
-                       _defaults.Add("Asynchronous Processing", DEF_ASYNCHRONOUSPROCESSING);
-                       _defaults.Add("Connection Reset", DEF_CONNECTIONRESET);
-                       _defaults.Add("MultipleActiveResultSets", DEF_MULTIPLEACTIVERESULTSETS);
-                       _defaults.Add("Replication", DEF_REPLICATION);
-                       _defaults.Add("Connect Timeout", DEF_CONNECTTIMEOUT);
-                       _defaults.Add("Encrypt", DEF_ENCRYPT);
-                       _defaults.Add("TrustServerCertificate", DEF_TRUSTSERVERCERTIFICATE);
-                       _defaults.Add("Load Balance Timeout", DEF_LOADBALANCETIMEOUT);
-                       _defaults.Add("Network Library", DEF_NETWORKLIBRARY);
-                       _defaults.Add("Packet Size", DEF_PACKETSIZE);
-                       _defaults.Add("Type System Version", DEF_TYPESYSTEMVERSION);
-                       _defaults.Add("Application Name", DEF_APPLICATIONNAME);
-                       _defaults.Add("Current Language", DEF_CURRENTLANGUAGE);
-                       _defaults.Add("Workstation ID", DEF_WORKSTATIONID);
-                       _defaults.Add("User Instance", DEF_USERINSTANCE);
-                       _defaults.Add("Context Connection", DEF_CONTEXTCONNECTION);
-                       _defaults.Add("Transaction Binding", DEF_TRANSACTIONBINDING);                   
-               }
-               #endregion // Constructors
-
-               #region Properties
-               [DisplayNameAttribute ("Application Name")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public string ApplicationName { 
-                       get { return _applicationName; }
-                       set { 
-                               base ["Application Name"] = value;
-                               _applicationName = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Asynchronous Processing")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool AsynchronousProcessing { 
-                       get { return _asynchronousProcessing; }
-                       set { 
-                               base ["Asynchronous Processing"] = value;
-                               _asynchronousProcessing = value; 
-                       }
-               }
-
-               [Editor ("System.Windows.Forms.Design.FileNameEditor, " + Consts.AssemblySystem_Design,
-                        "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-               [DisplayNameAttribute ("AttachDbFilename")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public string AttachDBFilename { 
-                       get { return _attachDBFilename; }
-                       set { 
-                               base ["AttachDbFilename"] = value;
-                               _attachDBFilename = value; 
-                       }
-               }
-               
-               [DisplayNameAttribute ("Connection Reset")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool ConnectionReset { 
-                       get { return _connectionReset; }
-                       set { 
-                               base ["Connection Reset"] = value;
-                               _connectionReset = value; 
-                       }
-               }
-               
-               [DisplayNameAttribute ("Connect Timeout")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public int ConnectTimeout { 
-                       get { return _connectTimeout; }
-                       set { 
-                               base ["Connect Timeout"] = value;
-                               _connectTimeout = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Current Language")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public string CurrentLanguage { 
-                       get { return _currentLanguage; }
-                       set { 
-                               base ["Current Language"] = value;
-                               _currentLanguage = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Data Source")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [TypeConverterAttribute ("System.Data.SqlClient.SqlConnectionStringBuilder+SqlDataSourceConverter, " + Consts.AssemblySystem_Data)]
-               public string DataSource { 
-                       get { return _dataSource; }
-                       set { 
-                               base ["Data Source"] = value;
-                               _dataSource = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Encrypt")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool Encrypt { 
-                       get { return _encrypt; }
-                       set { 
-                               base ["Encrypt"] = value;
-                               _encrypt = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Enlist")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool Enlist { 
-                       get { return _enlist; }
-                       set { 
-                               base ["Enlist"] = value;
-                               _enlist = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Failover Partner")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [TypeConverterAttribute ("System.Data.SqlClient.SqlConnectionStringBuilder+SqlDataSourceConverter, " + Consts.AssemblySystem_Data)]
-               public string FailoverPartner { 
-                       get { return _failoverPartner; }
-                       set { 
-                               base ["Failover Partner"] = value;
-                               _failoverPartner = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Initial Catalog")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [TypeConverterAttribute ("System.Data.SqlClient.SqlConnectionStringBuilder+SqlInitialCatalogConverter, " + Consts.AssemblySystem_Data)]
-               public string InitialCatalog { 
-                       get { return _initialCatalog; }
-                       set { 
-                               base ["Initial Catalog"] = value;
-                               _initialCatalog = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Integrated Security")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool IntegratedSecurity { 
-                       get { return _integratedSecurity; }
-                       set { 
-                               base ["Integrated Security"] = value;
-                               _integratedSecurity = value; 
-                       }
-               }
-
-               public override bool IsFixedSize { 
-                       get { return true; }
-               }
-
-               public override object this [string keyword] { 
-                       get { 
-                               string mapped = MapKeyword (keyword);
-                               if (base.ContainsKey (mapped)) 
-                                       return base [mapped];
-                               else
-                                       return _defaults [mapped];
-                       }
-                       set {SetValue (keyword, value);}
-               }
-
-               public override ICollection Keys { 
-                       get { 
-                               List<string> keys = new List<string>();
-                                keys.Add("Data Source");
-                                keys.Add("Failover Partner");
-                                keys.Add("AttachDbFilename");
-                                keys.Add("Initial Catalog");
-                                keys.Add("Integrated Security");
-                                keys.Add("Persist Security Info");
-                                keys.Add("User ID");
-                                keys.Add("Password");
-                                keys.Add("Enlist");
-                                keys.Add("Pooling");
-                                keys.Add("Min Pool Size");
-                                keys.Add("Max Pool Size");
-                                keys.Add("Asynchronous Processing");
-                                keys.Add("Connection Reset");
-                                keys.Add("MultipleActiveResultSets");
-                                keys.Add("Replication");
-                                keys.Add("Connect Timeout");
-                                keys.Add("Encrypt");
-                                keys.Add("TrustServerCertificate");
-                                keys.Add("Load Balance Timeout");
-                                keys.Add("Network Library");
-                                keys.Add("Packet Size");
-                                keys.Add("Type System Version");
-                                keys.Add("Application Name");
-                                keys.Add("Current Language");
-                                keys.Add("Workstation ID");
-                                keys.Add("User Instance");
-                                keys.Add("Context Connection");
-                                keys.Add("Transaction Binding");
-                               var coll = new System.Collections.ObjectModel.ReadOnlyCollection<string>(keys);
-                               return coll;
-                       }
-               }
-
-               [DisplayNameAttribute ("Load Balance Timeout")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public int LoadBalanceTimeout { 
-                       get { return _loadBalanceTimeout; }
-                       set { 
-                               base ["Load Balance Timeout"] = value;
-                               _loadBalanceTimeout = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Max Pool Size")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public int MaxPoolSize { 
-                       get { return _maxPoolSize; }
-                       set { 
-                               base ["Max Pool Size"] = value;
-                               _maxPoolSize = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Min Pool Size")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public int MinPoolSize { 
-                       get { return _minPoolSize; }
-                       set {
-                               base ["Min Pool Size"] = value;
-                               _minPoolSize = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("MultipleActiveResultSets")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool MultipleActiveResultSets { 
-                       get { return _multipleActiveResultSets; }
-                       set { 
-                               base ["Multiple Active Resultsets"] = value;
-                               _multipleActiveResultSets = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Network Library")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [TypeConverterAttribute ("System.Data.SqlClient.SqlConnectionStringBuilder+NetworkLibraryConverter, " + Consts.AssemblySystem_Data)]
-               public string NetworkLibrary { 
-                       get { return _networkLibrary; }
-                       set { 
-                               base ["Network Library"] = value;
-                               _networkLibrary = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Packet Size")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public int PacketSize { 
-                       get { return _packetSize; }
-                       set { 
-                               base ["Packet Size"] = value;
-                               _packetSize = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Password")]
-               [PasswordPropertyTextAttribute (true)]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public string Password { 
-                       get { return _password; }
-                       set { 
-                               base ["Password"] = value;
-                               _password = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Persist Security Info")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool PersistSecurityInfo { 
-                       get { return _persistSecurityInfo; }
-                       set {
-                               base ["Persist Security Info"] = value;
-                               _persistSecurityInfo = value; 
-                       }
-               }
-               
-               [DisplayNameAttribute ("Pooling")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool Pooling { 
-                       get { return _pooling; }
-                       set {
-                               base ["Pooling"] = value;
-                               _pooling = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("Replication")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public bool Replication { 
-                       get { return _replication; }
-                       set { 
-                               base ["Replication"] = value;
-                               _replication = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("User ID")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public string UserID { 
-                       get { return _userID; }
-                       set { 
-                               base ["User Id"]= value;
-                               _userID = value; 
-                       }
-               }
-               
-               public override ICollection Values { 
-                       get {
-                               List<object> values = new List<object>();
-                                values.Add(_dataSource);
-                                values.Add(_failoverPartner);
-                                values.Add(_attachDBFilename);
-                                values.Add(_initialCatalog);
-                                values.Add(_integratedSecurity);
-                                values.Add(_persistSecurityInfo);
-                                values.Add(_userID);
-                                values.Add(_password);
-                                values.Add(_enlist);
-                                values.Add(_pooling);
-                                values.Add(_minPoolSize);
-                                values.Add(_maxPoolSize);
-                                values.Add(_asynchronousProcessing);
-                                values.Add(_connectionReset);
-                                values.Add(_multipleActiveResultSets);
-                                values.Add(_replication);
-                                values.Add(_connectTimeout);
-                                values.Add(_encrypt);
-                                values.Add(_trustServerCertificate);
-                                values.Add(_loadBalanceTimeout);
-                                values.Add(_networkLibrary);
-                                values.Add(_packetSize);
-                                values.Add(_typeSystemVersion);
-                                values.Add(_applicationName);
-                                values.Add(_currentLanguage);
-                                values.Add(_workstationID);
-                                values.Add(_userInstance);
-                                values.Add(_contextConnection);
-                                values.Add(_transactionBinding);
-                               var coll = new System.Collections.ObjectModel.ReadOnlyCollection<object>(values);
-                               return coll;             
-                       }
-               }
-
-               [DisplayNameAttribute ("Workstation ID")]
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               public string WorkstationID { 
-                       get { return _workstationID; }
-                       set { 
-                               base ["Workstation Id"] = value;
-                               _workstationID = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("TrustServerCertificate")]
-               [RefreshProperties (RefreshProperties.All)]
-               public bool TrustServerCertificate { 
-                       get { return _trustServerCertificate; } 
-                       set {
-                               base ["Trust Server Certificate"] = value;
-                                _trustServerCertificate = value;
-                       }
-               }
-
-               [DisplayNameAttribute ("Type System Version")]
-               [RefreshProperties (RefreshProperties.All)]
-               public string TypeSystemVersion { 
-                       get { return _typeSystemVersion; } 
-                       set {
-                               base ["Type System Version"] = value;                           
-                               _typeSystemVersion = value; 
-                       }
-               }
-
-               [DisplayNameAttribute ("User Instance")]
-               [RefreshProperties (RefreshProperties.All)]
-               public bool UserInstance { 
-                       get { return _userInstance; }
-                       set { 
-                               base ["User Instance"] = value;
-                               _userInstance = value;
-                       }
-               }
-
-               [RefreshPropertiesAttribute (RefreshProperties.All)]
-               [DisplayNameAttribute ("Context Connection")]
-               public bool ContextConnection { 
-                       get { return _contextConnection; }
-                       set { 
-                               base ["Context Connection"] = value;
-                               _contextConnection = value;
-                       }
-               }
-               #endregion // Properties
-
-               #region Methods
-               private void Init ()
-               {
-                       _applicationName        = DEF_APPLICATIONNAME;
-                       _asynchronousProcessing = DEF_ASYNCHRONOUSPROCESSING;
-                       _attachDBFilename       = DEF_ATTACHDBFILENAME;
-                       _connectionReset        = DEF_CONNECTIONRESET;
-                       _connectTimeout         = DEF_CONNECTTIMEOUT;
-                       _currentLanguage        = DEF_CURRENTLANGUAGE;
-                       _dataSource             = DEF_DATASOURCE;
-                       _encrypt                = DEF_ENCRYPT;
-                       _enlist                 = DEF_ENLIST;
-                       _failoverPartner        = DEF_FAILOVERPARTNER;
-                       _initialCatalog         = DEF_INITIALCATALOG;
-                       _integratedSecurity     = DEF_INTEGRATEDSECURITY;
-                       _loadBalanceTimeout     = DEF_LOADBALANCETIMEOUT;
-                       _maxPoolSize            = DEF_MAXPOOLSIZE;
-                       _minPoolSize            = DEF_MINPOOLSIZE;
-                       _multipleActiveResultSets= DEF_MULTIPLEACTIVERESULTSETS;
-                       _networkLibrary         = DEF_NETWORKLIBRARY;
-                       _packetSize             = DEF_PACKETSIZE;
-                       _password               = DEF_PASSWORD;
-                       _persistSecurityInfo    = DEF_PERSISTSECURITYINFO;
-                       _pooling                = DEF_POOLING;
-                       _replication            = DEF_REPLICATION;
-                       _userID                 = DEF_USERID;
-                       _workstationID          = DEF_WORKSTATIONID;
-                       _trustServerCertificate = DEF_TRUSTSERVERCERTIFICATE;
-                       _typeSystemVersion      = DEF_TYPESYSTEMVERSION;
-                       _userInstance           = DEF_USERINSTANCE;
-                       _contextConnection      = DEF_CONTEXTCONNECTION;
-                       _transactionBinding     = DEF_TRANSACTIONBINDING;
-               }
-
-               public override void Clear ()
-               {
-                       base.Clear ();
-                       Init ();
-               }
-
-               public override bool ContainsKey (string keyword)
-               {
-                       keyword = keyword.ToUpper ().Trim ();
-                       if (_keywords.ContainsKey (keyword))
-                               return base.ContainsKey (_keywords [keyword]);
-                       return false;
-               }
-
-               public override bool Remove (string keyword)
-               {
-                       if (!ContainsKey (keyword))
-                               return false;
-                       this [keyword] = null;
-                       return true;
-               }
-
-               [MonoNotSupported ("")] // Note that base.ShouldSerialize() is called but not implemented
-               public override bool ShouldSerialize (string keyword)
-               {
-                       if (!ContainsKey (keyword))
-                               return false;
-                       keyword = keyword.ToUpper ().Trim ();
-                       // Assuming passwords cannot be serialized.
-                       if (_keywords [keyword] == "Password")
-                               return false;
-                       return base.ShouldSerialize (_keywords [keyword]);
-               }
-
-               public override bool TryGetValue (string keyword, out object value)
-               {
-                       if (! ContainsKey (keyword)) {
-                               value = String.Empty;
-                               return false;
-                       }
-                       return base.TryGetValue (_keywords [keyword.ToUpper ().Trim ()], out value);
-               }
-
-               #endregion // Methods
-
-               #region Private Methods
-               private string MapKeyword (string keyword)
-               {
-                       keyword = keyword.ToUpper ().Trim ();
-                       if (! _keywords.ContainsKey (keyword))
-                               throw new ArgumentException("Keyword not supported :" + keyword);
-                       return _keywords [keyword];
-               }
-               
-               private void SetValue (string key, object value)
-               {
-                       if (key == null)
-                               throw new ArgumentNullException ("key cannot be null!");
-
-                       string mappedKey = MapKeyword (key);
-
-                       switch (mappedKey.ToUpper ().Trim ()) {
-                       case "APPLICATION NAME" :
-                               if (value == null) {
-                                       _applicationName = DEF_APPLICATIONNAME;
-                                       base.Remove (mappedKey);
-                               } else
-                                       this.ApplicationName = value.ToString ();
-                               break;
-                       case "ATTACHDBFILENAME" :
-                               throw new NotImplementedException ("Attachable database support is " +
-                                                                  "not implemented.");
-                       case "CONNECT TIMEOUT" :
-                               if (value == null) {
-                                       _connectTimeout = DEF_CONNECTTIMEOUT;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.ConnectTimeout = DbConnectionStringBuilderHelper.ConvertToInt32 (value);
-                               break;
-                       case "CONNECTION LIFETIME" :
-                               break;
-                       case "CONNECTION RESET" :
-                               if (value == null) {
-                                       _connectionReset = DEF_CONNECTIONRESET;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.ConnectionReset = DbConnectionStringBuilderHelper.ConvertToBoolean (value);
-                               break;
-                       case "CURRENT LANGUAGE" :
-                               if (value == null) {
-                                       _currentLanguage = DEF_CURRENTLANGUAGE;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.CurrentLanguage = value.ToString ();
-                               break;
-                       case "CONTEXT CONNECTION" :
-                               if (value == null) {
-                                       _contextConnection = DEF_CONTEXTCONNECTION;
-                                       base.Remove (mappedKey);
-                               } else
-                                       this.ContextConnection = DbConnectionStringBuilderHelper.ConvertToBoolean (value);
-                               break;
-                       case "DATA SOURCE" :
-                               if (value == null) {
-                                       _dataSource = DEF_DATASOURCE;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.DataSource = value.ToString ();
-                               break;
-                       case "ENCRYPT":
-                               if (value == null) {
-                                       _encrypt = DEF_ENCRYPT;
-                                       base.Remove (mappedKey);
-                               }else if (DbConnectionStringBuilderHelper.ConvertToBoolean(value))
-                                       throw new NotImplementedException("SSL encryption for"
-                                                                         + " data sent between client and server is not"
-                                                                         + " implemented.");
-                               break;
-                       case "ENLIST" :
-                               if (value == null) {
-                                       _enlist = DEF_ENLIST;
-                                       base.Remove (mappedKey);
-                               } else if ( ! DbConnectionStringBuilderHelper.ConvertToBoolean(value))
-                                       throw new NotImplementedException("Disabling the automatic"
-                                                                         + " enlistment of connections in the thread's current"
-                                                                         + " transaction context is not implemented.");
-                               break;
-                       case "INITIAL CATALOG" :
-                               if (value == null) {
-                                       _initialCatalog = DEF_INITIALCATALOG;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.InitialCatalog = value.ToString ();
-                               break;
-                       case "INTEGRATED SECURITY" :
-                               if (value == null) {
-                                       _integratedSecurity = DEF_INTEGRATEDSECURITY;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.IntegratedSecurity = DbConnectionStringBuilderHelper.ConvertToBoolean (value);
-                               break;
-                       case "MAX POOL SIZE" :
-                               if (value == null) {
-                                       _maxPoolSize = DEF_MAXPOOLSIZE;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.MaxPoolSize = DbConnectionStringBuilderHelper.ConvertToInt32 (value);
-                               break;
-                       case "MIN POOL SIZE" :
-                               if (value == null) {
-                                       _minPoolSize = DEF_MINPOOLSIZE;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.MinPoolSize = DbConnectionStringBuilderHelper.ConvertToInt32 (value);
-                               break;
-                       case "MULTIPLEACTIVERESULTSETS":
-                               if (value == null) {
-                                       _multipleActiveResultSets = DEF_MULTIPLEACTIVERESULTSETS;
-                                       base.Remove (mappedKey);
-                               } else if ( DbConnectionStringBuilderHelper.ConvertToBoolean (value))
-                                       throw new NotImplementedException ("MARS is not yet implemented!");
-                               break;
-                       case "ASYNCHRONOUS PROCESSING" :
-                               if (value == null) {
-                                       _asynchronousProcessing = DEF_ASYNCHRONOUSPROCESSING;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.AsynchronousProcessing = DbConnectionStringBuilderHelper.ConvertToBoolean (value);
-                               break;
-                       case "NETWORK LIBRARY" :
-                               if (value == null) {
-                                       _networkLibrary = DEF_NETWORKLIBRARY;
-                                       base.Remove (mappedKey);
-                               } else {
-                                       if (!value.ToString ().ToUpper ().Equals ("DBMSSOCN"))
-                                               throw new ArgumentException ("Unsupported network library.");
-                                       this.NetworkLibrary = value.ToString ().ToLower ();
-                               }
-                               break;
-                       case "LOAD BALANCE TIMEOUT":
-                               // TODO: what is this?
-                               break;
-                       case "PACKET SIZE" :
-                               if (value == null) {
-                                       _packetSize = DEF_PACKETSIZE;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.PacketSize = DbConnectionStringBuilderHelper.ConvertToInt32 (value);
-                               break;
-                       case "PASSWORD" :
-                               if (value == null) {
-                                       _password = DEF_PASSWORD;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.Password = value.ToString ();
-                               break;
-                       case "PERSIST SECURITY INFO" :
-                               if (value == null) {
-                                       _persistSecurityInfo = DEF_PERSISTSECURITYINFO;
-                                       base.Remove (mappedKey);
-                               } else if (DbConnectionStringBuilderHelper.ConvertToBoolean (value))
-                                       throw new NotImplementedException ("Persisting security info" +
-                                                                          " is not yet implemented");
-                               break;
-                       case "POOLING" :
-                               if (value == null) {
-                                       _pooling = DEF_POOLING;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.Pooling = DbConnectionStringBuilderHelper.ConvertToBoolean (value);
-                               break;
-                       case "USER ID" :
-                               if (value == null) {
-                                       _userID = DEF_USERID;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.UserID = value.ToString ();
-                               break;
-                       case "USER INSTANCE" :
-                               if (value == null) {
-                                       _userInstance = DEF_USERINSTANCE;
-                                       base.Remove (mappedKey);
-                               } else
-                                       this.UserInstance = DbConnectionStringBuilderHelper.ConvertToBoolean (value);
-                               break;
-                       case "WORKSTATION ID" :
-                               if (value == null) {
-                                       _workstationID = DEF_WORKSTATIONID;
-                                       base.Remove (mappedKey);
-                               } else 
-                                       this.WorkstationID = value.ToString ();
-                               break;
-                       case "TRANSACTION BINDING":
-                               // TODO: what is this?
-                               break;
-                       default :
-                               throw new ArgumentException("Keyword not supported :" + key);
-                       }
-               }
-               #endregion // Private Methods
-       }
-       
-}
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlError.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlError.cs
deleted file mode 100644 (file)
index 995e657..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// System.Data.SqlClient.SqlError.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Runtime.InteropServices;
-
-namespace System.Data.SqlClient {
-       /// <summary>
-       /// Describes an error from a SQL database.
-       /// </summary>
-       [Serializable]
-       public sealed class SqlError
-       {
-               #region Fields
-
-               byte errorClass = 0;
-               int lineNumber = 0;
-               string message = "";
-               int number = 0;
-               string procedure = "";
-               string source = "";
-               byte state = 0;
-
-               [NonSerialized]         
-               string server = "";
-               
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal SqlError (byte errorClass, int lineNumber, string message, int number, string procedure, string server, string source, byte state) 
-               {
-                       this.errorClass = errorClass;
-                       this.lineNumber = lineNumber;
-                       this.message = message;
-                       this.number = number;
-                       this.procedure = procedure;
-                       this.server = server;
-                       this.source = source;
-                       this.state = state;
-               }
-
-               #endregion // Constructors
-               
-               #region Properties
-
-               public byte Class {
-                       get { return errorClass; }
-               }
-
-               public int LineNumber {
-                       get { return lineNumber; }
-               }
-
-               public string Message {
-                       get { return message; }
-               }
-               
-               public int Number {
-                       get { return number; }
-               }
-
-               public string Procedure {
-                       get { return procedure; }
-               }
-
-               public string Server {
-                       get { return server; }
-               }
-
-               public string Source {
-                       get { return source; }
-               }
-
-               public byte State {
-                       get { return state; }
-               }
-
-               #endregion
-
-               #region Methods
-
-               public override string ToString ()
-               {
-                       return Message;
-               }
-
-               #endregion
-               
-       }
-}
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlErrorCollection.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlErrorCollection.cs
deleted file mode 100644 (file)
index 7a721f9..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// System.Data.SqlClient.SqlErrorCollection.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Data;
-using System.Runtime.InteropServices;
-
-namespace System.Data.SqlClient {
-       [ListBindable (false)]
-       [Serializable]
-       public sealed class SqlErrorCollection : ICollection, IEnumerable
-       {
-               #region Fields
-
-               ArrayList list = new ArrayList();
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal SqlErrorCollection () 
-               {
-               }
-
-               internal SqlErrorCollection (byte theClass, int lineNumber, string message, int number, string procedure, string server, string source, byte state) 
-               {
-                       Add (theClass, lineNumber, message, number, procedure, server, source, state);
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-                
-               public int Count {
-                       get { return list.Count; }                        
-               }
-
-               bool ICollection.IsSynchronized {
-                       get { return list.IsSynchronized; }
-               }
-
-               object ICollection.SyncRoot {
-                       get { return list.SyncRoot; }
-               }
-
-               public SqlError this[int index] {
-                       get { return (SqlError) list [index]; }
-               }
-
-               #endregion
-
-               #region Methods
-               
-               internal void Add(SqlError error) 
-               {
-                       list.Add (error);
-               }
-
-               internal void Add(byte theClass, int lineNumber, string message, int number, string procedure, string server, string source, byte state) 
-               {
-                       SqlError error = new SqlError (theClass, lineNumber, message, number, procedure, server, source, state);
-                       Add (error);
-               }
-
-               public void CopyTo (Array array, int index) 
-               {
-                       list.CopyTo (array, index);
-               }
-
-               public IEnumerator GetEnumerator() 
-               {
-                       return list.GetEnumerator ();
-               }
-
-               public void CopyTo (SqlError[] array, int index)
-               {
-                       list.CopyTo (array, index);
-               }
-
-
-               #endregion              
-       }
-}
index 25cff54ee6280b25f10d777e830dc86d76360e9b..2b0e1a88629b23ff280c94f481b8980fcaa5fb9d 100644 (file)
@@ -39,6 +39,8 @@ using System.Data;
 using System.Data.Common;
 using System.Runtime.Serialization;
 using System.Text;
+using System.Diagnostics;
+using System.Globalization;
 
 using Mono.Data.Tds.Protocol;
 
@@ -54,6 +56,61 @@ namespace System.Data.SqlClient
                        ret.errors.Add (e);
                return ret;
         }
+
+        static internal SqlException CreateException(SqlErrorCollection errorCollection, string serverVersion) {
+            return CreateException(errorCollection, serverVersion, Guid.Empty);
+        }
+
+        static internal SqlException CreateException(SqlErrorCollection errorCollection, string serverVersion, SqlInternalConnectionTds internalConnection, Exception innerException = null) {
+            Guid connectionId = Guid.Empty;
+            var exception = CreateException(errorCollection, serverVersion, connectionId, innerException);
+/*
+            if (internalConnection != null) { 
+                if ((internalConnection.OriginalClientConnectionId != Guid.Empty) && (internalConnection.OriginalClientConnectionId != internalConnection.ClientConnectionId)) {
+                    exception.Data.Add(OriginalClientConnectionIdKey, internalConnection.OriginalClientConnectionId);
+                }
+
+                if (!string.IsNullOrEmpty(internalConnection.RoutingDestination)) {
+                    exception.Data.Add(RoutingDestinationKey, internalConnection.RoutingDestination);
+                }
+            }
+*/
+            return exception;
+        }
+
+
+        static internal SqlException CreateException(SqlErrorCollection errorCollection, string serverVersion, Guid conId, Exception innerException = null) {
+            Debug.Assert(null != errorCollection && errorCollection.Count > 0, "no errorCollection?");
+            
+            // concat all messages together MDAC 65533
+            StringBuilder message = new StringBuilder();
+            for (int i = 0; i < errorCollection.Count; i++) {
+                if (i > 0) {
+                    message.Append(Environment.NewLine);
+                }
+                message.Append(errorCollection[i].Message);
+            }
+
+            if (innerException == null && errorCollection[0].Win32ErrorCode != 0 && errorCollection[0].Win32ErrorCode != -1) {
+                innerException = new Win32Exception(errorCollection[0].Win32ErrorCode);
+            }
+
+            SqlException exception = new SqlException(message.ToString(), /*errorCollection, */innerException/*, conId*/);
+
+            exception.Data.Add("HelpLink.ProdName",    "Microsoft SQL Server");
+
+            if (!ADP.IsEmpty(serverVersion)) {
+                exception.Data.Add("HelpLink.ProdVer", serverVersion);
+            }
+            exception.Data.Add("HelpLink.EvtSrc",      "MSSQLServer");
+            exception.Data.Add("HelpLink.EvtID",       errorCollection[0].Number.ToString(CultureInfo.InvariantCulture));
+            exception.Data.Add("HelpLink.BaseHelpUrl", "http://go.microsoft.com/fwlink");
+            exception.Data.Add("HelpLink.LinkId",      "20476");
+
+            return exception;
+        }
+
+        internal bool _doNotReconnect = false;
 #endregion
 
                #region Fields
@@ -87,9 +144,7 @@ namespace System.Data.SqlClient
                internal SqlException (byte theClass, int lineNumber, string message, int number, string procedure, string server, string source, byte state) 
                        : this (null, 
                                null, 
-                               new SqlError (theClass, lineNumber, message, 
-                                             number, procedure, server, source, 
-                                             state)) 
+                               new SqlError (number, state, theClass, server, message, procedure, lineNumber, 0))
                {
                }
                
@@ -160,10 +215,9 @@ namespace System.Data.SqlClient
 
                internal static SqlException FromTdsInternalException (TdsInternalException e)
                {
-                       SqlError sqlError = new SqlError (e.Class, e.LineNumber, e.Message,
+                       return new SqlException (e.Class, e.LineNumber, e.Message,
                                                          e.Number, e.Procedure, e.Server,
                                                          "Mono SqlClient Data Provider", e.State);
-                       return new SqlException (null, e, sqlError);
                }
 
                public override void GetObjectData (SerializationInfo si, StreamingContext context) 
diff --git a/mcs/class/System.Data/System.Data.SqlClient/SqlInfoMessageEventArgs.cs b/mcs/class/System.Data/System.Data.SqlClient/SqlInfoMessageEventArgs.cs
deleted file mode 100644 (file)
index 4028317..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.Data.SqlClient.SqlInfoMessageEventArgs.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using Mono.Data.Tds.Protocol;
-using System;
-using System.Data;
-
-namespace System.Data.SqlClient {
-       public sealed class SqlInfoMessageEventArgs : EventArgs
-       {
-               #region Fields
-
-               SqlErrorCollection errors = new SqlErrorCollection ();
-
-               #endregion // Fields
-
-               #region Constructors
-       
-               internal SqlInfoMessageEventArgs (TdsInternalErrorCollection tdsErrors)
-               {
-                       foreach (TdsInternalError e in tdsErrors) 
-                               errors.Add (e.Class, e.LineNumber, e.Message, e.Number, e.Procedure, e.Server, "Mono SqlClient Data Provider", e.State);
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public SqlErrorCollection Errors {
-                       get { return errors; }
-               }       
-
-               public string Message {
-                       get { return errors[0].Message; }
-               }       
-
-               public string Source {
-                       get { return errors[0].Source; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override string ToString() 
-               {
-                       return Message;
-               }
-
-               #endregion // Methods
-       }
-}
index 346c796ee9bfcfa7b2d0b68b3369d7e7384038b1..f011f7cb3b9d4feb9c015c1131ef9e6cb9a20e62 100644 (file)
@@ -64,7 +64,7 @@ namespace System.Data.SqlClient {
                 // LAMESPEC: Implementors should populate the dbTypeMapping accordingly
                 internal Type SystemType {
                         get {
-                                return (Type) dbTypeMapping [DbType];
+                                return (Type) dbTypeMapping [SqlDbType];
                         }
                 }
 #endregion
@@ -112,6 +112,8 @@ namespace System.Data.SqlClient {
                        DbTypeMapping.Add (SqlDbType.NVarChar, typeof (string));
                        DbTypeMapping.Add (SqlDbType.SmallDateTime, typeof (DateTime));
                        DbTypeMapping.Add (SqlDbType.DateTime, typeof (DateTime));
+                       DbTypeMapping.Add (SqlDbType.DateTime2, typeof (DateTime));
+                       DbTypeMapping.Add (SqlDbType.DateTimeOffset, typeof (DateTimeOffset));
                        DbTypeMapping.Add (SqlDbType.Decimal, typeof (decimal));
                        DbTypeMapping.Add (SqlDbType.Float, typeof (double));
                        DbTypeMapping.Add (SqlDbType.Binary, typeof (byte []));
@@ -177,6 +179,7 @@ namespace System.Data.SqlClient {
                        type_mapping.Add (typeof (SqlTypes.SqlXml), SqlDbType.Xml);
 
                        type_mapping.Add (typeof (object), SqlDbType.Variant);
+                       type_mapping.Add (typeof (DateTimeOffset), SqlDbType.DateTimeOffset);
                }
                
                public SqlParameter () 
@@ -221,8 +224,7 @@ namespace System.Data.SqlClient {
                                                              scale,
                                                              GetFrameworkValue);
                        metaParameter.RawValue =  value;
-                       if (dbType != SqlDbType.Variant) 
-                               SqlDbType = dbType;
+                       SqlDbType = dbType;
                        Direction = direction;
                        SourceColumn = sourceColumn;
                        SourceVersion = sourceVersion;
@@ -774,6 +776,14 @@ namespace System.Data.SqlClient {
                                MetaParameter.TypeName = "smalldatetime";
                                dbType = DbType.DateTime;
                                break;
+                       case SqlDbType.DateTime2:
+                               MetaParameter.TypeName = "datetime2";
+                               dbType = DbType.DateTime2;
+                               break;
+                       case SqlDbType.DateTimeOffset:
+                               MetaParameter.TypeName = "datetimeoffset";
+                               dbType = DbType.DateTimeOffset;
+                               break;
                        case SqlDbType.Decimal:
                                MetaParameter.TypeName = "decimal";
                                dbType = DbType.Decimal;
@@ -1067,6 +1077,13 @@ namespace System.Data.SqlClient {
 
                object ConvertToFrameworkType (object value, Type frameworkType)
                {
+                       if (frameworkType == typeof (string)) {
+                               if (value is DateTime)
+                                       return ((DateTime) value).ToString ("yyyy-MM-dd'T'HH':'mm':'ss.fffffff");
+                               if (value is DateTimeOffset)
+                                       return ((DateTimeOffset) value).ToString ("yyyy-MM-dd'T'HH':'mm':'ss.fffffffzzz");
+                       }
+
                        object sqlvalue = Convert.ChangeType (value, frameworkType);
                        switch (sqlDbType) {
                        case SqlDbType.Money:
diff --git a/mcs/class/System.Data/System.Data.dll.sources b/mcs/class/System.Data/System.Data.dll.sources
deleted file mode 100644 (file)
index fb44281..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs.in
-../../build/common/Locale.cs
-../../build/common/SR.cs
-System.Data/AcceptRejectRule.cs
-System.Data/ColumnTypeConverter.cs
-System.Data/CommandBehavior.cs
-System.Data/CommandType.cs
-System.Data/ConnectionState.cs
-System.Data/ConflictOption.cs
-System.Data/Constraint.cs
-System.Data/ConstraintCollection.cs
-System.Data/ConstraintConverter.cs
-System.Data/ConstraintException.cs
-System.Data/CustomDataClassGenerator.cs
-System.Data/DataCategoryAttribute.cs
-System.Data/DataColumn.cs
-System.Data/DataColumnChangeEventArgs.cs
-System.Data/DataColumnChangeEventHandler.cs
-System.Data/DataColumnCollection.cs
-System.Data/DataColumnPropertyDescriptor.cs
-System.Data/DataException.cs
-System.Data/RelatedDataView.cs
-System.Data/RelationshipConverter.cs
-System.Data/DataRelation.cs
-System.Data/DataRelationCollection.cs
-System.Data/DataRelationPropertyDescriptor.cs
-System.Data/DataRow.cs
-System.Data/DataRowAction.cs
-System.Data/DataRowBuilder.cs
-System.Data/DataRowChangeEventArgs.cs
-System.Data/DataRowChangeEventHandler.cs
-System.Data/DataRowCollection.cs
-System.Data/DataRowState.cs
-System.Data/DataRowVersion.cs
-System.Data/DataRowView.cs
-System.Data/DataSet.cs
-System.Data/DataSetDateTime.cs
-System.Data/DataSysDescriptionAttribute.cs
-System.Data/DataTable.cs
-System.Data/DataTableCollection.cs
-System.Data/DataTableClearEventArgs.cs
-System.Data/DataTableClearEventHandler.cs
-System.Data/DataTableTypeConverter.cs
-System.Data/DataTablePropertyDescriptor.cs
-System.Data/DataTableReader.cs
-System.Data/DataTableNewRowEventArgs.cs
-System.Data/DataTableNewRowEventHandler.cs
-System.Data/DataView.cs
-System.Data/DataViewManager.cs
-System.Data/DataViewManagerListItemTypeDescriptor.cs
-System.Data/DataViewRowState.cs
-System.Data/DataViewSetting.cs
-System.Data/DataViewSettingCollection.cs
-System.Data/DBConcurrencyException.cs
-System.Data/DbType.cs
-System.Data/DefaultValueTypeConverter.cs
-System.Data/DeletedRowInaccessibleException.cs
-System.Data/DuplicateNameException.cs
-System.Data/EvaluateException.cs
-System.Data/FillErrorEventArgs.cs
-System.Data/FillErrorEventHandler.cs
-System.Data/ForeignKeyConstraint.cs
-System.Data/IColumnMapping.cs
-System.Data/IColumnMappingCollection.cs
-System.Data/IDataAdapter.cs
-System.Data/IDataParameter.cs
-System.Data/IDataParameterCollection.cs
-System.Data/IDataReader.cs
-System.Data/IDataRecord.cs
-System.Data/IDbCommand.cs
-System.Data/IDbConnection.cs
-System.Data/IDbDataAdapter.cs
-System.Data/IDbDataParameter.cs
-System.Data/IDbTransaction.cs
-System.Data/InRowChangingEventException.cs
-System.Data/InternalDataCollectionBase.cs
-System.Data/InvalidConstraintException.cs
-System.Data/InvalidExpressionException.cs
-System.Data/ISafeDataRecord.cs
-System.Data/IsolationLevel.cs
-System.Data/ITableMapping.cs
-System.Data/ITableMappingCollection.cs
-System.Data/LoadOption.cs
-System.Data/MappingType.cs
-System.Data/MergeFailedEventArgs.cs
-System.Data/MergeFailedEventHandler.cs
-System.Data/MergeManager.cs
-System.Data/MissingMappingAction.cs
-System.Data/MissingPrimaryKeyException.cs
-System.Data/MissingSchemaAction.cs
-System.Data/Node.cs
-System.Data/NoNullAllowedException.cs
-System.Data/OperationAbortedException.cs
-System.Data/ParameterDirection.cs
-System.Data/PropertyAttributes.cs
-System.Data/PropertyCollection.cs
-System.Data/ReadOnlyException.cs
-System.Data/ResDescriptionAttribute.cs
-System.Data/RowNotInTableException.cs
-System.Data/Rule.cs
-System.Data/SchemaType.cs
-System.Data/SerializationFormat.cs
-System.Data/SchemaSerializationMode.cs
-System.Data/SqlDbType.cs
-System.Data/StateChangeEventArgs.cs
-System.Data/StateChangeEventHandler.cs
-System.Data/StatementCompletedEventArgs.cs
-System.Data/StatementCompletedEventHandler.cs
-System.Data/StatementType.cs
-System.Data/StrongTypingException.cs
-System.Data/SyntaxErrorException.cs
-../../build/common/MonoTODOAttribute.cs
-System.Data/TableAdapterSchemaInfo.cs
-System.Data/TypedDataSetGenerator.cs
-System.Data/TypeDataSetGeneratorException.cs
-System.Data/UniqueConstraint.cs
-System.Data/UpdateRowSource.cs
-System.Data/UpdateStatus.cs
-System.Data/VersionNotFoundException.cs
-System.Data/XmlDataInferenceLoader.cs
-System.Data/XmlHelper.cs
-System.Data/XmlDataReader.cs
-System.Data/XmlReadMode.cs
-System.Data/XmlWriteMode.cs
-System.Data/XmlConstants.cs
-System.Data/XmlDiffLoader.cs
-System.Data.Common/CatalogLocation.cs
-System.Data.Common/ComparerFactory.cs
-System.Data.Common/DataAdapter.cs
-System.Data.Common/DataContainer.cs
-System.Data.Common/DbCommandBuilder.cs
-System.Data.Common/DbConnectionStringBuilderHelper.cs
-System.Data.Common/DbCommand.cs
-System.Data.Common/DbConnection.cs
-System.Data.Common/DbDataAdapter.cs
-System.Data.Common/DbDataReader.cs
-System.Data.Common/DbDataSourceEnumerator.cs
-System.Data.Common/DbException.cs
-System.Data.Common/DbMetaDataCollectionNames.cs
-System.Data.Common/DbMetaDataColumnNames.cs
-System.Data.Common/DbParameterCollection.cs
-System.Data.Common/DbParameter.cs
-System.Data.Common/DbProviderConfigurationHandler.cs
-System.Data.Common/DbProviderFactoriesConfigurationHandler.cs
-System.Data.Common/DbProviderFactories.cs
-System.Data.Common/DbProviderFactory.cs
-System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs
-System.Data.Common/DbTable.cs
-System.Data.Common/DbTransaction.cs
-System.Data.Common/DbTypes.cs
-System.Data.Common/ExceptionHelper.cs
-System.Data.Common/GroupByBehavior.cs
-System.Data.Common/IdentifierCase.cs
-System.Data.Common/Index.cs
-System.Data.Common/Key.cs
-System.Data.Common/PermissionHelper.cs
-System.Data.Common/RecordCache.cs
-System.Data.Common/RowUpdatedEventArgs.cs
-System.Data.Common/RowUpdatingEventArgs.cs
-System.Data.Common/SchemaTableColumn.cs
-System.Data.Common/SchemaTableOptionalColumn.cs
-System.Data.Common/SupportedJoinOperators.cs
-System.Data.Common/TaskHelper.cs
-System.Data.OleDb/libgda.cs
-System.Data.OleDb/OleDbParameterConverter.cs
-System.Data.OleDb/OleDbCommand.cs
-System.Data.OleDb/OleDbCommandBuilder.cs
-System.Data.OleDb/OleDbConnection.cs
-System.Data.OleDb/OleDbDataAdapter.cs
-System.Data.OleDb/OleDbDataReader.cs
-System.Data.OleDb/OleDbError.cs
-System.Data.OleDb/OleDbErrorCollection.cs
-System.Data.OleDb/OleDbException.cs
-System.Data.OleDb/OleDbFactory.cs
-System.Data.OleDb/OleDbInfoMessageEventArgs.cs
-System.Data.OleDb/OleDbInfoMessageEventHandler.cs
-System.Data.OleDb/OleDbLiteral.cs
-System.Data.OleDb/OleDbMetaDataCollectionNames.cs
-System.Data.OleDb/OleDbParameter.cs
-System.Data.OleDb/OleDbParameterCollection.cs
-System.Data.OleDb/OleDbPermission.cs
-System.Data.OleDb/OleDbPermissionAttribute.cs
-System.Data.OleDb/OleDbRowUpdatedEventArgs.cs
-System.Data.OleDb/OleDbRowUpdatedEventHandler.cs
-System.Data.OleDb/OleDbRowUpdatingEventArgs.cs
-System.Data.OleDb/OleDbRowUpdatingEventHandler.cs
-System.Data.OleDb/OleDbSchemaGuid.cs
-System.Data.OleDb/OleDbTransaction.cs
-System.Data.OleDb/OleDbType.cs
-System.Data.SqlTypes/SqlXml.cs
-System.Data.Odbc/NativeBuffer.cs
-System.Data.Odbc/OdbcFactory.cs
-System.Data.Odbc/OdbcParameterConverter.cs
-System.Data.Odbc/OdbcCategoryAttribute.cs
-System.Data.Odbc/OdbcDescriptionAttribute.cs
-System.Data.Odbc/OdbcColumn.cs
-System.Data.Odbc/OdbcCommand.cs
-System.Data.Odbc/OdbcConnection.cs
-System.Data.Odbc/OdbcDataReader.cs
-System.Data.Odbc/OdbcErrorCollection.cs
-System.Data.Odbc/OdbcException.cs
-System.Data.Odbc/OdbcMetaDataColumnNames.cs
-System.Data.Odbc/OdbcMetaDataCollectionNames.cs
-System.Data.Odbc/OdbcParameter.cs
-System.Data.Odbc/OdbcParameterCollection.cs
-System.Data.Odbc/OdbcTransaction.cs
-System.Data.Odbc/OdbcType.cs
-System.Data.Odbc/OdbcTypeMap.cs
-System.Data.Odbc/OdbcTypeConverter.cs
-System.Data.Odbc/libodbc.cs
-System.Data.Odbc/OdbcDataAdapter.cs
-System.Data.Odbc/OdbcRowUpdatedEventArgs.cs
-System.Data.Odbc/OdbcRowUpdatedEventHandler.cs
-System.Data.Odbc/OdbcRowUpdatingEventArgs.cs
-System.Data.Odbc/OdbcRowUpdatingEventHandler.cs
-System.Data.Odbc/OdbcInfoMessageEventArgs.cs 
-System.Data.Odbc/OdbcInfoMessageEventHandler.cs
-System.Data.Odbc/OdbcCommandBuilder.cs
-System.Data.Sql/SqlDataSourceEnumerator.cs
-System.Data.Sql/SqlNotificationRequest.cs
-Microsoft.SqlServer.Server/Format.cs
-Microsoft.SqlServer.Server/DataAccessKind.cs
-Microsoft.SqlServer.Server/IBinarySerialize.cs
-Microsoft.SqlServer.Server/InvalidUdtException.cs
-Microsoft.SqlServer.Server/SqlFunctionAttribute.cs
-Microsoft.SqlServer.Server/SqlMetaData.cs
-Microsoft.SqlServer.Server/SqlMethodAttribute.cs
-Microsoft.SqlServer.Server/SqlUserDefinedAggregateAttribute.cs
-Microsoft.SqlServer.Server/SqlUserDefinedTypeAttribute.cs
-Microsoft.SqlServer.Server/SystemDataAccessKind.cs
-Microsoft.SqlServer.Server/SqlFacetAttribute.cs
-Microsoft.SqlServer.Server/TriggerAction.cs
-Microsoft.SqlServer.Server/SqlTriggerContext.cs
-Microsoft.SqlServer.Server/SqlProcedureAttribute.cs
-Microsoft.SqlServer.Server/SqlTriggerAttribute.cs
-System.Data.SqlClient/SortOrder.cs
-System.Data.SqlClient/SqlNotificationType.cs
-System.Data.SqlClient/SqlNotificationInfo.cs
-System.Data.SqlClient/SqlNotificationSource.cs
-System.Data.SqlClient/SqlAsyncState.cs
-System.Data.SqlClient/SqlAsyncResult.cs
-System.Data.SqlClient/SqlClientMetaDataCollectionNames.cs
-System.Data.SqlClient/SqlClientPermission.cs
-System.Data.SqlClient/SqlClientPermissionAttribute.cs
-System.Data.SqlClient/SqlCommand.cs
-System.Data.SqlClient/SqlCommandBuilder.cs
-System.Data.SqlClient/SqlConnection.cs
-System.Data.SqlClient/SqlConnectionStringBuilder.cs
-System.Data.SqlClient/SqlCredential.cs
-System.Data.SqlClient/SqlDataAdapter.cs
-System.Data.SqlClient/SqlDataReader.cs
-System.Data.SqlClient/SqlDataSourceConverter.cs
-System.Data.SqlClient/SqlDependency.cs
-System.Data.SqlClient/SqlError.cs
-System.Data.SqlClient/SqlErrorCollection.cs
-System.Data.SqlClient/SqlException.cs
-System.Data.SqlClient/SqlInfoMessageEventArgs.cs
-System.Data.SqlClient/SqlInfoMessageEventHandler.cs
-System.Data.SqlClient/SqlInitialCatalogConverter.cs
-System.Data.SqlClient/NetworkLibraryConverter.cs
-System.Data.SqlClient/SqlParameter.cs
-System.Data.SqlClient/SqlParameterCollection.cs
-System.Data.SqlClient/SqlParameterConverter.cs
-System.Data.SqlClient/SqlRowUpdatedEventArgs.cs
-System.Data.SqlClient/SqlRowUpdatedEventHandler.cs
-System.Data.SqlClient/SqlRowUpdatingEventArgs.cs
-System.Data.SqlClient/SqlRowUpdatingEventHandler.cs
-System.Data.SqlClient/SqlTransaction.cs
-System.Data.SqlClient/SqlXmlTextReader.cs
-System.Data.SqlClient/SQLDebugging.cs
-System.Data.SqlClient/SqlClientFactory.cs
-System.Data.SqlClient/SqlBulkCopy.cs
-System.Data.SqlClient/SqlBulkCopyOptions.cs
-System.Data.SqlClient/SqlBulkCopyColumnMapping.cs
-System.Data.SqlClient/SqlBulkCopyColumnMappingCollection.cs
-System.Data.SqlClient/SqlRowsCopiedEventHandler.cs
-System.Data.SqlClient/SqlRowsCopiedEventArgs.cs
-System.Data.SqlClient/SqlNotificationEventArgs.cs
-System.Data.SqlClient/OnChangeEventHandler.cs
-System.Data.SqlClient/SqlDecimalExtensions.cs
-System.Data/XmlDataLoader.cs
-System.Data/XmlSchemaDataImporter.cs
-System.Data/XmlSchemaWriter.cs
-System.Data/XmlTableWriter.cs
-System.Xml/XmlDataDocument.cs
-Mono.Data.SqlExpressions/Tokenizer.cs
-Mono.Data.SqlExpressions/Numeric.cs
-Mono.Data.SqlExpressions/Expressions.cs
-Mono.Data.SqlExpressions/Literal.cs
-Mono.Data.SqlExpressions/ColumnReference.cs
-Mono.Data.SqlExpressions/ArithmeticExpressions.cs
-Mono.Data.SqlExpressions/BooleanExpressions.cs
-Mono.Data.SqlExpressions/Comparison.cs
-Mono.Data.SqlExpressions/StringFunctions.cs
-Mono.Data.SqlExpressions/Functions.cs
-Mono.Data.SqlExpressions/Like.cs
-Mono.Data.SqlExpressions/In.cs
-Mono.Data.SqlExpressions/Aggregation.cs
-
-ReferenceSources/Bid.cs
-ReferenceSources/BidArgumentTypeAttribute.cs
-ReferenceSources/BidMethodAttribute.cs
-ReferenceSources/DataStorage.cs
-ReferenceSources/InOutOfProcHelper.cs
-ReferenceSources/ODB.cs
-ReferenceSources/Res.cs
-ReferenceSources/ResCategoryAttribute.cs
-ReferenceSources/SafeNativeMethods.cs
-ReferenceSources/ThisAssembly.cs
-
-ReferenceSources/OdbcHandle.cs
-
-../../../external/referencesource/System.Data/Misc/HResults.cs
-../../../external/referencesource/System.Data/System/Data/Common/AdapterUtil.cs
-../../../external/referencesource/System.Data/System/Data/Common/DataColumnMapping.cs
-../../../external/referencesource/System.Data/System/Data/Common/DataColumnMappingCollection.cs
-../../../external/referencesource/System.Data/System/Data/Common/DataTableMapping.cs
-../../../external/referencesource/System.Data/System/Data/Common/DataTableMappingCollection.cs
-../../../external/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs
-../../../external/referencesource/System.Data/System/Data/Common/DbConnectionOptions.cs
-../../../external/referencesource/System.Data/System/Data/Common/DBConnectionString.cs
-../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringBuilder.cs
-../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringCommon.cs
-../../../external/referencesource/System.Data/System/Data/Common/DBDataPermission.cs
-../../../external/referencesource/System.Data/System/Data/Common/DBDataPermissionAttribute.cs
-../../../external/referencesource/System.Data/System/Data/Common/dbdatarecord.cs
-../../../external/referencesource/System.Data/System/Data/Common/dbenumerator.cs
-../../../external/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs
-../../../external/referencesource/System.Data/System/Data/Common/NameValuePair.cs
-../../../external/referencesource/System.Data/System/Data/Common/NameValuePermission.cs
-../../../external/referencesource/System.Data/System/Data/Odbc/Odbc32.cs
-../../../external/referencesource/System.Data/System/Data/Odbc/OdbcConnectionString.cs
-../../../external/referencesource/System.Data/System/Data/Odbc/OdbcConnectionStringbuilder.cs
-../../../external/referencesource/System.Data/System/Data/Odbc/OdbcError.cs
-../../../external/referencesource/System.Data/System/Data/Odbc/OdbcPermission.cs
-../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs
-../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBinary.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBoolean.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLByte.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBytes.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLChars.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SqlCharStream.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLDateTime.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLDecimal.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLDouble.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLGuid.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLInt16.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLInt32.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLInt64.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLMoney.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLResource.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLSingle.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLString.cs
-../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLUtility.cs
diff --git a/mcs/class/System.Data/System.Data/.gitattributes b/mcs/class/System.Data/System.Data/.gitattributes
deleted file mode 100644 (file)
index ee1ad93..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/DataColumn.cs -crlf
-/DataRelationPropertyDescriptor.cs -crlf
-/DataRowView.cs -crlf
-/DataSet.cs -crlf
-/DataTable.cs -crlf
-/DataView.cs -crlf
-/DataViewManager.cs -crlf
-/ExpressionElement.cs -crlf
-/RelatedDataView.cs -crlf
-/Res.cs -crlf
-/XmlDataInferenceLoader.cs -crlf
-/XmlDataReader.cs -crlf
diff --git a/mcs/class/System.Data/System.Data/AcceptRejectRule.cs b/mcs/class/System.Data/System.Data/AcceptRejectRule.cs
deleted file mode 100644 (file)
index 0b3bbfd..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.AcceptRejectRule.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       
-       /// <summary>
-       /// Determines the action that occurs when 
-       /// the AcceptChanges or RejectChanges method 
-       /// is invoked on a DataTable with a ForeignKeyConstraint.
-       /// </summary>
-       public enum AcceptRejectRule
-       {               
-               None = 0,
-               Cascade = 1
-       }
-
-}
diff --git a/mcs/class/System.Data/System.Data/ChangeLog b/mcs/class/System.Data/System.Data/ChangeLog
deleted file mode 100644 (file)
index bdb1a9d..0000000
+++ /dev/null
@@ -1,4191 +0,0 @@
-2011-05-02  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes 663914
-       * DataRow.cs (SetOriginalValue): Retain original version if available.
-       
-2011-03-15  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes 672113
-       * UniqueConstraint.cs (ctor): Make a copy of columns and columnnames array
-       * ForeignKeyConstraint.cs (ctor): Make a copy of parent and child columns array
-       
-2010-10-01  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes #582732 - Patch by Jeffrey Alvarez <kuritsu@gmail.com>
-       * DataColumn.cs (Clone): Deep copy the ExtendedProperties collection.
-       * XmlSchemaDataImporter.cs: Support import of extended properties.
-       * XmlSchemaWriter.cs: Fix exception by writing the extended properties 
-       before simpletype element.
-       
-2010-07-23  Veerapuram Varadhan  <v.varadhan@gmail.com>
-
-       ** Fixes #623451
-       * DataColumnCollection.cs (MoveColumn): Fix shifting of DataColumn  
-       according to the direction of movement.
-       
-2010-06-23  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #581679
-       * DataRelationCollection.cs (Add, Remove): Use DataRelation obj instead 
-       of this when raising OnCollectionChang(ing, ed) events.
-       
-2010-04-11  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #591443
-       * DataColumn.cs (Clone): Use propert to clone Expression as it builds 
-       compiled expression also, if any. 
-       
-2010-04-10  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       ** Fixes #589482
-       * DataColumn.cs (set_DataType): Preserve autoIncrement value 
-       for Decimal types as well.
-       
-2010-04-09  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #576520 - Based on a patch by Greg SIROU <gspam@secway.fr>
-       * DataSet.cs (WriteColumnAsElement): Handle system.object types sanely.
-
-2010-04-09  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #590232
-       * DataColumn.cs (Clone): Clone extended properties as well
-       
-2010-02-10  Marek Habersack  <mhabersack@novell.com>
-
-       * XmlSchemaDataImporter.cs: the <connections> element might be
-       empty - make sure FirstChild of the element is not null before
-       attempting to use it. Fixes bug #578587
-
-2009-10-30  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * DataTable.cs: Reuse old utility methods for raising DataTable 
-       clearing/cleared events.
-       * DataRowCollection.cs (Clear): Raise DataTable clearing/cleared 
-       events only for non 1.x profiles.  Fixes broken 1.x build.
-       
-2009-10-30  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes 448296
-       * DataTable.cs (Clear): Do not raise TableClearing/Cleared events as 
-       they will be raised from DataRowCollection.Clear().  New utility methods 
-       for raising TableClearing/TableCleared events from outside DataTable.  
-       Don't manually reset indexes as ResetIndexes is called from 
-       DataRowCollection.Clear
-       * DataRowCollection.cs (Clear): Raise TableClearing/Cleared events accordingly.
-       
-2009-10-29  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes 332875 - based on analysis by Ben Martin <ben@trustorm.com.au>
-       * XmlSchemaDataImporter.cs (AddParentKeyColumn): If a table already has a 
-       PrimaryKey column defined, when called again, fill the PKCol data into the 
-       passed DataColumn and return.
-       
-2009-10-29  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #550960 - Patch by Stefano <stefano.sapienti@apsystems.it>
-       * DataTable.cs (BinarySerialize): Use datatype from DataColumn 
-       instead of value of the column.
-       
-2009-10-14  Jonathan Pryor  <jpryor@novell.com>
-
-       * XmlSchemaDataImporter.cs: Remove DbProviderFactories dependency in
-         the MonoTouch profile.
-
-2009-10-13  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #537229
-       * XmlDiffLoader (LoadColumnAttributes/Children): Decode column names in 
-       case if they are encoded.
-       
-2009-09-26  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes part of #427769 - Patch by John Lenz <jlenz2@math.uiuc.edu>
-       * DataSet.cs: XML serialization improvements to be compatible with MS impl.
-       
-2009-09-15  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       ** Fixes #536194 - Patch by Andrew Kurochk <aaki.viper@gmail.com>
-       * MergeManager.cs (Merge*): Do nothing when source and target 
-       datasets are same.
-       
-2009-09-10  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #510176
-       * DataView.cs (OnRowChanged/OnRowDeleted): Raise appropriate events iff 
-       view is affected. This silence of the numerous Add/Change events that were
-       getting raised from DataView.
-       (ToTable): Use appropriate index to generated DataTable in case of 
-       RowFilter / Sort conditions.
-       
-       * DataRow.cs (AcceptChanges/RejectChanges): Raise appropriate Changing events
-       
-2009-09-03  Ivan N. Zlatev  <contact@i-nz.net>
-
-       * DataColumnPropertyDescriptor.cs, DataView.cs: Not browsable if Hidden.
-       [Fixes the second part of bug #536547]
-
-2009-08-25  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #521951
-       * DataViewManager.cs (CollectionToListChangeEventArgs) : Use a corresponding 
-       DataTable/DataRelation obj instead of only DataRelation.
-       
-2009-07-30  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * CustomDataClassGenerator.cs (MakeSafeName): Throw NRE instead of 
-       ArgumentNullException - fixes failing tests.
-       
-2009-07-23  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * XmlSchemaDataImporter.cs (HandleDataSourceAnnotation): Don't rely 
-       on the order of elements.
-       
-2009-07-23  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * XmlSchemaDataImporter.cs: String.IsNullOrEmpty changes
-       
-2009-07-23  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * XmlSchemaDataImporter.cs: Added null checks.
-       
-2009-07-22  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * XmlSchemaDataImporter.cs:
-       CustomDataClassGenerator.cs: Silence off CWLs.
-       
-2009-07-22  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       * CustomDataClassGenerator.cs (CreateCommandCollectionInitializeMethod):
-       Fix generation of DbCommand[] instead of DbCommand()[].  Fix IndexRef to 
-       ref proper index.
-       Avoid using SourceColumnNullMapping property in the constructor 
-       of DbParameter while creating the code.
-       
-2009-07-18  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * CustomDataClassGenerator.cs (CreateDbSourceMethods): Handle cases of Scalar 
-       and NoData QueryTypes.
-       
-2009-07-17  Veerapuram Varadhan  <vvaradhan@novell.com>
-       
-       * TableAdapterSchemaInfo.cs: Wrap DbCommand within DbCommandInfo and 
-       define MethodInfo to hold method properties common to both Get and Fill.
-       
-       * CustomDataClassGenerator.cs (CreateDbSourceMethods): Handle cases of Fill 
-       and Get appropriately.
-       
-2009-07-16  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * CustomDataClassGenerator.cs (CreateDbSourceMethods):  Handle 
-       methods of type "Fill".
-       
-       * XmlSchemaDataImporter.cs (ProcessDbParameters): Handle empty strings 
-       while setting parameter properties.
-       
-2009-07-15  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Part of fix for #325464
-       * CustomDataClassGenerator.cs: Add implementation to generate 
-       TableAdapter code.
-       
-       * DataSet.cs (TableAdapterSchemaData): New internal property that 
-       holds TableAdapter details to generate code from.
-       
-       * XmlConstants.cs: Add Msdatasource constant to handle 
-       <...:xml-msdatasource> elements.
-       
-       * XmlSchemaDataImporter.cs: Implement handling of <TableAdapter ...>
-       * TableAdapterSchemaInfo.cs: New 
-       
-2009-05-16  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       ** Fixes #325464 - ToolItems.xsd
-       * CustomDataClassGenerator.cs (CreateDataSetTableMembers): Prefix a "_" to 
-       member names when it is same as that of the dataset.  Fixes the CS0542 error
-       during compilation of the generated source.
-       
-2009-03-25  Ivan N. Zlatev  <contact@i-nz.net>
-
-       * DataView.cs: Fire ListChanged when the RowFilter changes.
-       [Fixes bug #479405]
-
-2009-02-24  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * *Fixes #377146 - in a better way
-       * XmlDataReader.cs (ReadElementElement): For reference types that
-       implement IXmlSerializable, call the corresponding ReadXml.
-       * DataSet.cs (WriteColumnAsElement): For reference types that implement 
-       IXmlSerializable, call the corresponding WriteXml.
-       
-2009-02-24  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       * Fixes #476523
-       * DbType.cs: Add DateTime2 and DateTimeOffset - 3.5 additions
-       Patch by Jay Wren <jrwren@xmtp.net>
-       
-2009-01-05  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataRelationCollection.cs (BinarySerialize): New.  Carved out of ...
-       * DataSet.cs (BinarySerialize): ... this.
-
-2009-01-04  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataRelationCollection.cs: Sequester NET_2_0 and NET_1_1
-       specific code into separate parts.
-
-       * DataTableCollection.cs (BinarySerialize_Schema): New.
-       (BinarySerialize_Data): Likewise.  Carved out of ...
-       * DataSet.cs (BinarySerialize): ... this.
-
-2009-01-04  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataTableCollection.cs: Sequester NET_2_0 and NET_1_1 specific
-       code into separate parts.
-
-2009-01-02  Ivan N. Zlatev  <contact@i-nz.net>
-
-       * DataViewManager.cs: Implement all MonoTODO. Fixes the WinForms 
-       DataBinding unit tests.
-
-2009-01-01  Ivan N. Zlatev  <contact@i-nz.net>
-
-       * DataViewManager.cs: Hookup to the table/relations changed events and 
-       raise ListChanged events accordingly.
-
-2008-12-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DBConcurrencyException.cs: Marked .ctor taking DataRow [] as
-       internal so we can use it on the 1.0 profile (internally). Implemented
-       RowCount.
-
-2008-12-29  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * SqlDbType: Added Date and Time (2.0 only).
-
-2008-11-18  Raja R Harinath  <harinath@hurrynot.org>
-
-       Fix #420862
-       * XmlConstants.cs (QnUnsignedShort): Rename from QnUsigned short
-       and fix the value too.
-       * XmlSchemaWriter.cs (XmlQualifiedName): Update to changes.
-
-2008-09-27  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataView.cs: Convert into a partial class and sequester
-       interface-implementations and NET_2_0 pieces into separate parts.
-
-2008-09-16  brandin claar  <brandin.claar@gmail.com>
-           Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataTable.cs (BinarySerialize): Handle empty DataTables.
-       (DeserializeRecords): Likewise.
-       (BinaryDeserializeTable): Allow DefaultValue to be set to any value.
-
-2008-09-12  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataTable.cs (NewRowAdded): Make into partial method.
-       (DataTableClearing, DataTableCleared): New partial methods.
-       (Clear): Use them.
-
-       * DataTable.cs: Sequester ISupportInitializationNotification
-       pieces into separate part.
-       (DataTableInitialized): Turn into a 'partial method' to avoid #ifs.
-
-       * DataTable.cs (AssertNotNullConstraints): Hoist out a more useful
-       loop-invariant by inverting loops.
-       (RowExists): Outdent.  Rewrite for slightly better clarity.
-       (BeginLoadData): Outdent.
-       (GetChanges): Outdent.  Replace GetEnumerator/while with foreach.
-
-       * DataTable.cs: Convert to a partial class, sequester NET_2_0
-       specific and IXmlSerializable specific pieces into separate parts.
-
-2008-09-07  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataSet.cs: Convert to a partial class and sequester NET_2_0
-       pieces into a separate part.
-
-       * DataRowView.cs: Convert to a partial class, and sequester
-       NET_2_0 parts into a separate part.  Use partial classes instead
-       of ugly #region directives.
-       (Item): Remove redundant attributes.  Cleanup slightly.
-
-2008-09-05  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataRowCollection.cs (RemoveInternal): Update RowIDs of rows
-       after the deleted row.
-       (IndexOf): Avoid loop to search for a row, since we already know
-       where a row is: its RowID.
-       (Remove): Use IndexOf rather than List.Contains.
-
-       * DataRowCollection.cs (InsertRow): Delegate setting of RowId
-       to the row itself.  Use 'row.AttachAt' instead of 'row.AttachRow'.
-       (AddInternal): Likewise.  Also delegate handling of
-       ChangeCurrentAndOriginal to AttachAt.
-       * DataRow.cs (AttachAt): Rename from AttachRow.  Set rowId from
-       passed-in id.  Handle ChangeCurrentAndOriginal and ChangeOriginal
-       actions.
-
-       * DataRow.cs (_hasParentCollection): Remove.  Implied by _rowId >= 0.
-       (HasParentCollection): Remove.
-       * DataRowCollection.cs (AddInternal, InsertAt): Update to changes.
-
-       * DataTable.cs (NewRowArray): Special case size == 0 to avoid
-       creating a lot of garbage.
-
-       * DataRow.cs (Detach): Rename from DetachRow.  Make private.
-       Simplify code to be more uniform.  Move common prefix code here ...
-       (AcceptChanges) [Deleted]: ... from here ...
-       (Delete) [Added]: ... and here ...
-       (RejectChanges) [Added]: ... and here.
-
-2008-09-04  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataRow.cs (CheckChildRows) <1-arg variant>: Remove excessive
-       indentation.
-       (CheckChildRows) <3-arg variant>: Likewise.  Move/split loop
-       inside a switch.
-       (EndEdit): Out-dent some code.
-       (IsNullColumns): Simplify slightly.
-
-       * DataRelationCollection.cs (CanRemove): Simplify slightly.
-
-       * DataRelation.cs (CheckStateForProperty): Use the childColumn to
-       get the child table.
-
-       * DataColumn.cs (AllowDBNull.set): Rearrange code to be more readable.
-       (AutoIncrement.set): Likewise.
-       (Caption): Likewise.
-       (SetDefaultValue): Likewise.
-
-2008-08-28  Raja R Harinath  <harinath@hurrynot.org>
-
-       * Constraint.cs (SetExtendedProperties): New internal method.
-       Move here from ...
-       (ExtendedProperties.set): ... here.  Kill a #ifdef.
-       * DataTable.cs (DeserializeConstraints): Update to changes.
-
-2008-08-27  Raja R Harinath  <harinath@hurrynot.org>
-
-       * ConstraintCollection.cs (Item) <string variant>: Don't incur
-       additional check for index that's returned by 'IndexOf'.
-       (_createNewConstraintName): Improve readability of code.
-       (_isDuplicateConstraintName): Perform cheaper test first.
-
-       * ConstraintCollection.cs: Reduce some #ifdef by using partial
-       classes.  Move 'sealed' and '[Serializable]' to appropriate
-       partial class declarations.
-       * DataRowCollection.cs: Likewise.
-
-2008-08-13  Marek Habersack  <mhabersack@novell.com>
-
-       * DataRow.cs: do not check whether a column is read-only when
-       importing a record.
-
-2008-08-08  Raja R Harinath  <harinath@hurrynot.org>
-
-       * DataColumn.cs: Update to changes in DataCollection.
-
-2008-07-29  Veerapuram Varadhan  <vvaradhan@novell.com>
-
-       Fixes ##377146
-       * XmlDataReader.cs (ReadElementElement): Handle custom reference types sanely.
-
-2008-07-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataColumnCollection.cs (IndexOf): Include name of column - for which
-       there are multiple matches in a different case - in the exception
-       message.
-       * DataRow.cs (this [int]): On 2.0 profile, throw ArgumentException if
-       value is null and datatype of column is a value type. On 1.0 profile,
-       only allow null value if datatype of column is string. Do not replace
-       value with DBNull.Value if value is null.
-
-2008-07-04  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataRow.cs: Use indexer of DataColumnCollection instead of IndexOf.
-       Cosmetic changes to exception message.
-       * DataColumnCollection.cs: Fixed off by one error in index check. Added
-       null check in name indexer. In Clear, also reset columnNameCount and
-       defaultColumnIndex.
-
-2008-07-03  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataRow.cs: Added missing null checks. Cosmetic changes to exception
-       messages.
-
-2008-07-03  Marek Habersack  <mhabersack@novell.com>
-
-       * DataRow.cs (this []): Use DBNull instead of throwing an exception
-       
-2008-07-01  Rodrigo Kumpera  <rkumpera@novell.com>
-
-       * DataTable.cs: Kill some foreach loops.
-       
-       * DataRow.cs: Same.
-
-2008-07-01  Marek Safar  <marek.safar@gmail.com>
-
-       * DataColumnCollection.cs: Made few simple optimizations.
-
-2008-06-28  Zoltan Varga  <vargaz@gmail.com>
-
-       * DataTable.cs (NewRowArray): Avoid using reflection if possible.
-
-2008-06-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRelation.cs : keep createConstraints flag for cloning in
-         DataSet.Merge(). Use different flag for initialization instead.
-       * MergeManager.cs : When cloning DataRelation, createConstraints
-         flag should depend on the source.
-       * XmlSchemaDataImporter.cs : create constraints when creating
-         DataRelation.
-
-2008-06-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : when InferSchema mode, ReadXml() should do "merging
-         inference".
-       * XmlDataInferenceLoader.cs : fixed primary key processing in
-         merging inference mode. Reuse existing one, instead of rejecting
-         such a table.
-
-2008-06-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaWriter.cs, DataSet.cs, XmlTableWriter.cs, DataTable.cs,
-         XmlDataInferenceLoader.cs, XmlSchemaDataImporter.cs:
-         fix xsd output on msdata:Locale and msdata.UseCurrentCulture.
-         Output explicit Locale only when it is explicitly specified.
-         On the other hand, ReadXml/ReadXmlSchema fills Locale as en-US
-         by default (on .NET).
-         Some code unification in DataTable.WriteXmlSchema() overloads.
-
-2008-06-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumn.cs : replaced Activator.CreateInstance() with
-         returning explicit Null member for each SqlXxx type.
-
-2008-06-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumn.cs
-         DefaultValue can be non-DBNull. For SqlXxx type, it becomes
-         SqlXxx.Null. Also, changing DataType may change DefaultValue
-         to be consistent with the new type (say, having int DefaultValue
-         for new string DataType is wrong).
-
-       * XmlSchemaWriter.cs
-         This should be fixed to take non-DBNull default value into
-         consideration.
-
-2008-06-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs, DataTable.cs, XmlSchemaDataImporter.cs : constraints
-         on missing tables are ignored when reading a DataTable schema.
-         Fixes part of DataTableTest.ReadXmlSchema() test.
-
-2008-05-30  Marek Habersack  <mhabersack@novell.com>
-
-       * Constraint.cs: do not use synthetized event accessors (to avoid
-       locks).
-
-2008-05-29  Marek Habersack  <mhabersack@novell.com>
-
-       * DataColumn.cs: do not use synthetic methods for events - this
-       avoids unnecessary locking, especially for internal events.
-
-2008-04-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataRowView.cs: Modified argument names to match MS. Use 
-       String.Empty instead of "". Code formatting.
-
-2008-04-16  Veerapuram Varadhan <vvaradhan@novell.com>
-
-       * XmlDataInferenceLoader.cs (ReadXml): Make sure the name of
-       reference key column(s) in child tables are unique.
-
-       * XmlSchemaWriter.cs (WriteSchema, WriteDataSetElement,
-       WriteTableType, WriteChildRelations): Handle the scenario wherein
-       we have a relation and only one table.  This can occur when we
-       have an XML with same parent/child table names. 
-       
-2008-03-31  Veerapuram Varadhan <vvaradhan@novell.com>
-
-       * DataView.cs: Reverting rev#98474 changes - as it broke quite a
-       few test profiles.
-       
-2008-03-23  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataSet.cs: Corcompare fix.
-       * IDataRecord.cs: Corcompare fix.
-
-2008-03-22  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataViewSettingCollection.cs: Corcompare fixes and code formatting.
-       * SyntaxErrorException.cs: Corcompare fixes and code formatting.
-       * EvaluateException.cs: Corcompare fixes and code formatting.
-       * StrongTypingException.cs: Coecompare fixes and code formatting.
-       * ReadOnlyException.cs: Corcompare fixes and code formatting.
-       * DataTableCollection.cs: Corcompare fixes and code formatting.
-       * MissingPrimaryKeyException.cs: Corcompare fixes and code formatting.
-       * DeletedRowInaccesibleException.cs: Corcompare fixes and code
-       formatting.
-       * DataSet.cs: Corcompare fixes and code formatting.
-       * DuplicateNameException.cs: Corcompare fixes and code formatting.
-       * DataView.cs: Corcompare fixes and code formatting.
-       * VersionNotFoundException.cs: Corcompare fixes and code formatting.
-       * MergeFailedEventArgs.cs: Corcomare fixes and code formatting.
-       * InvalidExpressionException.cs: Corcompare fixes and code formatting.
-       * DBConcurrencyException.cs: Corcompare fixes and code formatting.
-       * DataRowView.cs: Corcompare fixes and code formatting.
-       * DataViewManager.cs: Corcompare fixes and code formatting.
-       * ConstraintException.cs: Corcompare fixes and code formatting.
-       * InvalidConstraintException.cs: Corcompare fixes and code formatting.
-       * IDataRecord.cs: Corcompare fixes.
-       * RowNotInTableException.cs: Corcompare fixes and code formatting.
-       * TypeDataSetGeneratorException.cs: Corcompare fixes and code
-       formatting.
-       * InRowChangingEventException.cs: Corcompare fixes and code formatting.
-       * NoNullAllowedException.cs: Corcompare fixes and code formatting.
-       * DataException.cs: Corcompare fixes and code formatting.
-
-2008-03-17  Veerapuram Varadhan <vvaradhan@novell.com>
-       
-       ** Fixes part1 of #357947
-       * DataView.cs: (OnRowDeleted): Don't call update, instead delete the row 
-       directly from Index.  Peformance fix submitted by Hubert FONGARNAND 
-       <informatique.internet@fiducial.fr>.
-
-2008-02-04 Arina Itkes <arinai@mainsoft.com>
-       
-       * DataTable.cs: Fix for IXmlSerializable.ReadXml.
-
-2008-01-28 Arina Itkes <arinai@mainsoft.com>
-       
-       * DataTable.cs: Fix for IXmlSerializable.WriteXml.
-
-2007-10-21  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataColumn.cs: Fixed ParamName of ArgumentNullException. Modified
-       exception message for invalid DateTimeMode value to match MS. Code
-       formatting.
-
-2007-10-19  Nagappan <anagappan@novell.com> 
-
-       * DataRelation.cs: Removed bogus TODO.
-
-2007-09-27  Nagappan A <anagappan@novell.com> 
-
-       * DataRelationCollection.cs: Added LAME spec comment as there is no
-         relevant event. Removed MonoTODO too.
-
-2007-09-26  Nagappan A <anagappan@novell.com> 
-
-       * DataView.cs (ToTable): Added params keyword.
-       
-       * DataTable.cs: Added XmlSchemaProvider attribute.
-
-2007-09-25  Konstantin Triger <kostat@mainsoft.com>
-
-       * DataSet.cs: correct WriteAttributeString while writing xml with
-               XmlWriteMode.WriteSchema.
-
-2007-09-25  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs: Code alignment.
-
-2007-08-14  Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * DataColumnCollection.cs: refactoring, fixed columnNameCount comparer
-       to remove culture sensitive ToLower() calls
-
-2007-07-22  Nagappan A  <anagappan@novell.com>
-
-       * DataRow.cs: Added internal set property for Table in 2.0
-       profile.
-
-       * DataColumn.cs: Added internal set property for Table in 2.0
-       profile.
-
-2007-07-01  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataRowCollection.cs: Only override Count on 2.0 profile.
-       * RelatedDataView.cs: Fixed line endings.
-       * XmlDataInferenceLoader.cs: Fixed line endings.
-
-2007-06-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataTableCollection.cs: CopyTo is 2.0 only. Removed extra tabs,
-       and changed spaces to tabs.
-
-2007-06-06  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (Select): Removed ununsed variable.
-
-2007-05-30  Nagappan A  <anagappan@novell.com>
-
-       * DataColumnCollection.cs (CopyTo): Method specific to 2.0
-       profile.
-
-       * DataRowCollection.cs (Count): Property is overridden in 2.0
-       profile.
-
-       * TypedDataSetGenerator.cs: Class is obsolete in 2.0 profile.
-
-       * DataRelationCollection.cs (CopyTo): Method specific to 2.0
-       profile.
-
-2007-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
-
-       * CustomDataClassGenerator.cs: Misc fixes in order to emit correct VB code.
-       CreateDataSetDefaultCtor: we're creating a delegate, not an object, so use a DelegateCreateExpression.
-       CreateDataSetSchemaChanged: we're comparing value types, use the correct equality operator.
-       CreateTableGetEnumerator: explicity state that the method is an implementation of IEnumerable.GetEnumerator.
-       CreateTableEventStarter: we're invoking a delegate, so use a DelegateInvokeExpression.
-       Several changes to not generate members with names that only differ by case.
-
-2007-05-18  Chris Toshok  <toshok@ximian.com>
-
-       * DataColumnCollection.cs (Add ()): handle the default name case
-       in Add(DataColumn).
-       (Add (string)): same - let Add(DataColumn) handle the default name
-       setting.
-       (Add (DataColumn)): in the 1.1 case, we need to add the column's
-       PropertyChanged handler *before* possibly setting the column name
-       to the default so we emit the right events (Changed/Added).  In
-       the 2.0 case, we add the event handler after the name is set, and
-       therefore only emit the Added event.
-
-2007-05-07  Adar Wesley <adarw@mainsoft.com>
-
-       * ConstraintCollection.cs: added CopyTo method with strongly typed Constraint[] 
-       parameter.
-
-       * DataTable.cs: added implementation of IXmlSerializable. Added missing
-       method ReadXmlSerializable.
-
-2007-04-19  Chris Toshok  <toshok@ximian.com>
-
-       * DataColumnCollection.cs (Add): the Element in our
-       CollectionChangedEventArgs should be the column, not the
-       collection.  Also, add an event handler for the column's
-       PropertyChanged event so we can propagate metadata changes.
-       (Remove): Analogous change to the CollectionChangedEventArgs as in
-       Add.  Also, unhook the column's PropertyChanged event.
-       (OnCollectionmetaDataChanged): emit our new event.
-       (ColumnPropertyChanged): called when the column's ColumnName
-       property changes.  Emit the proper CollectionChangeEvent.
-
-       * DataView.cs (ColumnCollectionChanged): fix up the comment about
-       CollectionChangeAction.Refresh, and make explicit what generates
-       it.
-       (RegisterEventHandlers): hook up
-       DataColumnCollectoin.CollectionMetaDataChanged.
-       (RegisterEventHandlers): unhook
-       DataColumnCollectoin.CollectionMetaDataChanged.
-
-2007-02-23  Nagappan A  <anagappan@novell.com>
-
-       * DataRow.cs (Item): Checks whether this DataRow exist in the
-       DataRowCollection, then compute the expression. Fixes bug #
-       80505.
-
-       * DataRowCollection.cs (IndexOf): Modified as internal method for
-       1.0 profile.
-
-       * XmlDataReader.cs (StringToObject): DataTables containing
-       System.Type throw exception on deserializing. Fixes bug # 80596.
-
-       * XmlDataLoader.cs (StringToObject): DataTables containing
-       System.Type throw exception on deserializing. Fixes bug # 80596.
-
-2007-02-20  Konstantin Triger <kostat@mainsoft.com>
-
-       * XmlSchemaDataImporter.cs: ensure the tables are created in document order.
-
-2007-02-19  Konstantin Triger <kostat@mainsoft.com>
-
-       * XmlDataReader.cs, XmlDataInferenceLoader.cs, XmlDiffLoader.cs:
-               ignore attributes from "http://www.w3.org/XML/1998/namespace".
-       * XmlConstants.cs: add constant for "http://www.w3.org/XML/1998/namespace".
-       * XmlDataInferenceLoader.cs: track the added elements index to fix the
-               added column ordinal.
-
-2006-12-11  Chris Toshok  <toshok@ximian.com>
-
-       * DataView.cs: GetItemProperties should return an empty collection
-       if we have no data table.  Presently we NRE.
-
-2006-12-08  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (ReadXml): Removed if condition, as it should not
-       check the exception string.
-
-2006-12-07  Chris Toshok  <toshok@ximian.com>
-
-       * DataView.cs: add CollectionChangeEventHandler's on the
-       ChildRelations and ParentRelations collections, and emit
-       ListChanged events with PropertyDescriptor.Added/Deleted/Changed
-       in response.
-
-2006-12-07  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (ReadXml): Integrated the implementation of
-       ReadXml, patch provided by deepak_2603@yahoo.com.
-
-2006-12-05  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (WriteXmlSchema): Using XmlTextWriter instead of
-       XmlWriter, solved the File Sharing IO Exception.
-
-2006-11-28     Hubert FONGARNAND, FrAcdAcric Mestayer <informatique.internet@fiducial.fr>
-
-       * DataColumnCollection.cs : Improved Column searching when not
-       using exact column name (case sensitivity). Fixes bug # 80075.
-
-2006-11-28  Nagappan A  <anagappan@novell.com>
-
-       * XmlSchemaDataImporter.cs: Fixed 2.0 profile compilation
-       warnings. Using AttributeSchemaType instead of AttributeType and
-       ElementSchemaType instead of ElementType.
-
-       * TypedDataSetGenerator.cs: Modified the profile check from
-       !NET_1_1 to !NET_1_0, as this class is obsolete from 1.1 profile.
-
-       * DataRelationCollection.cs (Item): Modified the property Item as
-       abstract and implemented it in DataSetRelationCollection and
-       DataTableRelationCollection classes.
-
-       * DataRowView.cs: Remove bogus MonoTODOs.
-
-       * ForeignKeyConstraint.cs (ForeignKeyConstraint): Implemented
-       2.0 profile's missing constructor.
-
-       * XmlDataLoader.cs (StringToObject): Modify XmlConvert.ToDateTime
-       to use XmlDateTimeSerializationMode, as the default ToDataTime
-       method id obsolete.
-
-       * XmlDataReader.cs (StringToObject): Modify XmlConvert.ToDateTime
-       to use XmlDateTimeSerializationMode, as the default ToDataTime
-       method id obsolete.
-
-       * DataView.cs (IsInitialized): Added browsable attribute. 
-
-       * DataViewSettingCollection.cs (CopyTo): Implemented missing 2.0
-       API.
-
-       * DataRelation.cs (DataRelation): Added 2.0 profile constructor to
-       take parentTableNameSpace and childTableNameSpace as argument.
-       (FinishInit): Update parentTableNameSpace and childTableNameSpace,
-       when the string is not empty in 2.0 profile.
-
-       * DataRowCollection.cs: Implemented Count public property.
-       Added !NET_2_0 for List protected property, as it has been removed
-       in 2.0 prifle.
-       (IndexOf): Implemented new public method.
-       (CopyTo): Implemented new public override method.
-       (GetEnumerator): Implemented new public override method.
-
-       * DataTable.cs (Load): Throw ArgumentNullException, when reader
-       argument is null.
-       (WriteXmlSchema): Throw InvalidOperationException, when table name
-       is empty. When DataSet Namespace is set, append that with '_x003A_'
-       and table name.
-       (IsInitialized): Added browsable attribute.
-
-       * DataSet.cs (Load): Throw ArgumentNullException, when reader
-       argument is null.
-       (IsInitialized): Added browsable attribute.
-       (WriteObjectXml): Modify XmlConvert.ToDateTime to use
-       XmlDateTimeSerializationMode, as the default ToDataTime method id
-       obsolete.
-
-       * XmlSchemaWriter.cs (WriteSchema): Modified UseCurrentCulture to
-       UseCurrentLocale.
-       (WriteDataSetElement): Added minOccurs attribute.
-       (WriteConstraints): Check for tables length, if > 1 then add the
-       relations to XmlSchema.
-
-2006-11-21  Nagappan A  <anagappan@novell.com>
-
-       * DataView.cs: Added public event Initialized.
-       (IsInitialized): Implemented public function to check whether a
-       dataview is initialized or not.
-
-       * DataSet.cs: Added ISupportInitializeNotification for .NET 2.0
-       profile.
-       (RemotingFormat): Set the default value attribute as
-       SerializationFormat.Xml.
-       (IsInitialized): Implemented public function to check whether a
-       table is initialized or not.
-       (CreateDataReader): Added params keyword in argument.
-       (Load): Implemented all Load overloaded functions.
-       (GetObjectData): Modified to public for .NET 2.0 implementation.
-       (IsBinarySerialized): Implemented the public API to check whether
-       the given stream is binary serialized or not.
-       * DataTable.cs: Added ISupportInitializeNotification for .NET 2.0
-       profile.
-
-2006-11-15  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (RemotingFormat): Set the default value attribute
-       as SerializationFormat.Xml.
-       (OnTableNewRow, NewRowAdded): Implemented new function to raise an
-       event when a new row is added to the table.
-       (DataTableInitialized, OnTableInitialized): Implemented new
-       function to raise an event when a table is initialized.
-       (IsInitialized): Implemented public function to check whether a
-       table is initialized or not.
-       (OnTableClearing): Raise an event before the table is cleared.
-       (GetObjectData): Modified to public for .NET 2.0 implementation.
-       (Load): Implemented missing API to call the registered delegate
-       function on load exception.
-       (WriteXmlSchema): Implemented overloaded function to write the
-       hierarchy with XML Schema.
-
-2006-11-15  Konstantin Triger <kostat@mainsoft.com>
-
-       * DataTable.cs: Fixed LoadDataRow scenarios.
-       * DataRowCollection.cs: Added override for AddInternal taking DataRowAction parameter.
-
-2006-11-14  Konstantin Triger <kostat@mainsoft.com>
-
-       * DataColumn.cs: consider row version wen checking row.IsNull().
-
-2006-10-18  Nagappan A  <anagappan@novell.com>
-
-       * ForeignKeyConstraint.cs (_validateColumns): Parent and child
-       columns can't be the same column - Exception, bug # 79689
-
-2006-10-13  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (DeserializeConstraints): Fine tuned the
-       serialization and deserialization of constraints.
-
-       * DataRelationCollection.cs (Contains): Fixes bug
-       #79233. DuplicateNameException when two relations for different
-       DataTables in DataSet are defined
-
-2006-10-06  Patrick Earl <mono@patearl.net>
-
-       * DataTable.cs, XmlTableWriter.cs, XmlSchemaWriter.cs, DataSet.cs:
-       Implemented DataTable.WriteXml
-
-2006-09-26  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs, DataSet.cs, DataColumn.cs, Constraint.cs,
-       DataRow.cs: Implementation of Binary Serialization /
-       Deserialization.
-
-       * DataTable.cs (RowsExist): Check rows based on version.
-
-       * DataRow.cs: Raise exception same as MS.NET. Thanks to
-       Hubert FONGARNAND <informatique.internet@fiducial.fr> for
-       providing this patch.
-
-2006-09-07  Vladimir Krasnov <vladimirk@mainsoft.com>
-
-       * DataSet.cs: added 2.0 stubs to solve typed dataset porting issues
-
-2006-08-30  Nagappan A  <anagappan@novell.com>
-
-       * DataRow.cs (EndEdit): DataRow.EndEdit emits RowChanged too
-       often. Fixes bug # 78885.
-
-2006-08-14  Konstantin Triger <kostat@mainsoft.com>
-
-       * DataTableCollection.cs, DataRelationCollection.cs, DataRowCollection.cs,
-               DataColumnCollection.cs: implemented specialized CopyTo() method.
-
-2006-07-26  Nagappan A  <anagappan@novell.com>
-
-       * DataTable.cs (GetIndex): Fixes memory explode on
-       DataTable.Select - Bug # 77691.
-
-2006-07-25  Nagappan A  <anagappan@novell.com>
-
-       * DataView.cs (OnRowCollectionChanged): On DataTable.Clear,
-       setting rowCache to empty DataRowView. Fixes bug # 78610.
-
-       * DataTable.cs (AcceptChanges): Raises Reset event. Fixes bug #
-       78610.
-
-2006-07-20  Senganal T  <tsenganal@novell.com>
-
-       * MergeManager.cs :
-               - Merge : moved the columntypecheck to AdjustSchema,
-               Remove the unncessary calls to Table.ResetIndexes.
-               - AdjustSchema : check for columntypes
-       Thanks to Deepak Kr Valechha for the patch
-
-2006-07-17  Senganal T  <tsenganal@novell.com>
-
-       * DataView.cs :
-               - ToTable : Implemented all the overloads
-               - Equals : Implemented 
-               - IBindingListView : Implemented the interface
-
-2006-07-15  Senganal T  <tsenganal@novell.com>
-
-       * DataTableCollection.cs :
-               - Contain,IndexOf,Remove,Add,Indexer : support for table
-               namespace. Remove redundant checks in Remove/Add.
-
-2006-07-14  Senganal T  <tsenganal@novell.com>
-       
-       * DataColumn.cs :
-               - SetOrdinal : Implemented
-               - Ordinal : added internal set
-       * DataColumnCollection.cs : 
-               - Add : Set the column ordinals
-               - MoveColumn : Changes the position of column in the
-               collection
-
-2006-07-14  Senganal T  <tsenganal@novell.com>
-
-       * DataTable.cs :
-               - Merge - Implement the merge methods
-               - Clone - Ensure column's DateTimeMode property is also copied
-       * DataColumn.cs :
-               - DateTimeMode : Implemement
-               - DataTypeMatches : Added. In 2.0 profile, test DateTime
-               property when verifying column types.
-       * DataRelation.cs :
-               - ctr :  For DateTime columns, check DateTimeMode property
-       * ForeignKeyConstraint.cs :
-               - _validateColumns : For DateTime columns, check DateTimeMode
-               property
-       * MergeManager : 
-               - Merge : Added. Overload to merge two tables
-               - ResolveColumns : Change the method to use a table instead of
-               a DataSet
-               - Renamed AdjustSchema to AdjustSchemaRelations
-
-2006-07-13  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs :
-               - WriteTables : Remove some commented out code
-               - WriteTable : Fix the logic to skip the table data when the
-               table has a nested relation.
-               fixes bug #78842
-
-2006-07-12  Senganal T  <tsenganal@novell.com>
-
-       * ConstraintCollection.cs : 
-               - Remove (string): If constraint name is not found, throw exception
-               - Remove (Constraint): Set the ConstraintCollection of the removed
-               Constraint to null.
-       Thanks to Deepak Kr Velachha for reporting the bug.
-
-2006-07-12  Senganal T  <tsenganal@novell.com>
-
-       * XmlDiffLoader.cs : 
-               - LoadColumnChildren : If schema name is missing, skip the
-               element.
-       Thanks to Deepak Kr Velachha for identifying the bug.
-
-2006-07-11  Senganal T  <tsenganal@novell.com>
-       
-       * XmlSchemaWriter.cs :
-               - WriteTableType : If Relation.Nested is true, then nest the 
-               table schemas. Correct the xml to add the table element within
-               the <Sequence> element.
-               - WriteChildRelations : Correct the Xml element name and
-               attributes. Close the attribute correctly.
-
-       * XmlSchemaDataImporter.cs :
-               - GenerateRelationship : When creating the relations, if
-               ParentColumn exists but Corr ChildCol is null, create a child
-               Column with the same name and type as the parent column.
-               - Renamed DataSetDefinesPrimaryKey to DataSetDefinesKey
-               - DataSetDefinesKey : if either xsd:key or xsd:keyref is
-               defined for the dataset, do not manually create the relations.
-               - AddParentKeyColumn : if Columnname already exists, use
-               colname_0 instead of throwing an exception.
-               - FillDataColumnRepeatedSimpleElement : Do not set the Unique
-               value as it creates a constraint by default. The unique value
-               is automatically set when pk is set.
-               - CreateChildColumns : Added. Creates a ChildColumn duplicating 
-               ParentColumn properties.
-
-2006-06-30  Senganal T  <tsenganal@novell.com>
-
-       * DataRow.cs : 
-               - SetAdded, SetModified : new methods in 2.0
-
-2006-06-30  Senganal T  <tsenganal@novell.com>
-       * SerializationFormat.cs, DataSetDateTime.cs, DataTableNewRowEventArgs.cs,
-       DataTableNewRowEventHandler.cs : Added 
-       * SyntaxErrorException.cs EvaluateException.cs StrongTypingException.cs 
-       IsolationLevel.cs ReadOnlyException.cs DataTableCollection.cs 
-       DataRowState.cs MissingPrimaryKeyException.cs DeletedRowInaccessibleException.cs 
-       DuplicateNameException.cs PropertyAttributes.cs StatementType.cs 
-       VersionNotFoundException.cs FillErrorEventHandler.cs DataRowChangeEventHandler.cs 
-       XmlWriteMode.cs InvalidExpressionException.cs StateChangeEventHandler.cs 
-       DbType.cs DataColumnChangeEventHandler.cs KeyRestrictionBehavior.cs 
-       ConnectionState.cs SchemaType.cs MergeFailedEventHandler.cs SqlDbType.cs 
-       DataRowVersion.cs ForeignKeyConstraint.cs DBConcurrencyException.cs 
-       OperationAbortedException.cs MissingSchemaAction.cs DataTableClearEventHandler.cs 
-       DataRowView.cs DataRowAction.cs ConstraintCollection.cs DataTableReader.cs 
-       LoadOption.cs InvalidConstraintException.cs InternalDataCollectionBase.cs 
-       ParameterDirection.cs AcceptRejectRule.cs UpdateRowSource.cs XmlReadMode.cs 
-       TypedDataSetGenerator.cs RowNotInTableException.cs TypeDataSetGeneratorException.cs
-       InRowChangingEventException.cs  MissingMappingAction.cs NoNullAllowedException.cs 
-       CommandBehavior.cs PropertyCollection.cs CommandType.cs 
-       UpdateStatus.cs ConflictOption.cs DataViewRowState.cs  Rule.cs 
-       DataColumnCollection.cs :
-               2.0 api fixes.
-
-2006-06-27  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs, DataTable.cs : implement CreateDataReader methods 
-       * InternalDataCollectionBase.cs
-               - ToArray () : helper method
-       * DataTableReader.cs : 
-               - GetSchemaTable : set the schema info correctly
-               - GetProvider*, GetChars, GetBytes, GetValues :
-                       Implemented the methods
-               - GetName : return the name of corresponding schema.
-               - ValidateSchemaIntact, OnColumnCollectionChanged, 
-               OnColumnChanged :
-                       Listen and raise expception if schema changes
-
-2006-06-21  Chris Toshok  <toshok@ximian.com>
-
-       * DataView.cs: update the index after we successfully add the new
-       row.  This keeps the dataview's row view count in sync with the
-       table.
-
-2006-06-20  Chris Toshok  <toshok@ximian.com>
-
-       * DataView.cs: the PropertyDescriptorCollection returned by
-       ITyepdList.GetItemProperties should include the child relations of
-       our table, in order to match MS's behavior.
-
-       * DataViewManager.cs: ICollection.Count property is always 1.
-
-2006-06-15  Senganal T  <tsenganal@novell.com>
-
-       * DataTable.cs :
-               - Select : If Sort String is not provided, sort the result
-               DataRows in Ascending Order of the Columns used in the filter
-
-2006-06-15  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs :
-               - InternalEnforceConstraints : Check if any null constraints 
-               are violated. Throw ConstraintException only after all the errors
-               are filled.
-       * DataTable.cs :
-               - EnforceConstraints : Move away the logic to check for 
-               NullConstraintViolation.
-               - AssertNotNullConstraint : Checks for Null Constraint
-               Violation.
-               - EndLoadData : Do not throw any exceptions here. All the
-               errors have to be found and RowErrors set before throwing the
-               exception.
-       * DataRow.cs :
-               - ImportRecrod : Check the values of the row for any null
-               values.
-               - SetColumnError : If the error for column is already set,
-               do not add a new error but edit the existing error. 
-               - CheckValue : Set the NullConstraintViolation flag if either
-               table is being loaded or if EnforceConstraints is set to
-               false.
-       * Constraint.cs : Do not throw exception when EnforceConstraints is
-       set to false or table is being loaded.
-       * UniqueConstraint.cs : Correct the error message. Set ColumnErrors
-       along with the RowError.
-
-2006-05-31  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataTable.cs: Renamed initInProgress to fInitInProgress. BeginInit
-       and EndInit must only be virtual in 2.0 profile. Set eol-style to CRLF.
-
-2006-05-31  Senganal T  <tsenganal@novell.com>
-
-       * XmlDataInferenceLoader.cs :
-               - InferTableElement : Repeated element should result in a single
-               inferred table.
-       Patch from Deepak Kr Velachha 
-
-2006-04-21  Senganal T  <tsenganal@novell.com>
-
-       * DataRowCollection.cs :
-               - Find : If search on the table using PrimaryKey fails and if
-               index is not being maintained (during table load), search the 
-               entire table.
-               - Find (int) : Removed. Deadcode. 
-               - Clear :
-                       - Not necessary to delete each row from the Index.
-                       Just reset the Indexes after cleaning up the row
-                       collection.
-                       - Simplify dependency check for child tables
-       * DataTable.cs :
-               - LoadDataRow : 
-                       - Do not use DataRowCollection.Find to search for
-                       existing records as this wud check even newly loaded rows.
-                       Use Index.Find.
-                       - Do not add new records to Index. Update Index only
-                       if an existing record is modified. New records will be
-                       taken care by EndLoadData.
-
-2006-04-19  Senganal T  <tsenganal@novell.com>
-
-       * XmlHelper.cs : A helper class for encoding/decoding schema names.
-       Caches the Schema names to minimize encoding/decoding operations and
-       duplicate strings created.
-       * XmlSchemaWriter : 
-               - Use XmlHelper for encoding/decoding schema names.
-               - Encode ConstraintNames when writing as xml.
-       * DataSet.cs
-       * XmlDataReader.cs
-       * XmlDataInferenceLoader.cs
-       * XmlSchemaDataImporter.cs
-               - Use XmlHelper for encoding/decoding schema names.
-       * DataTableCollections : Minor code refactor.
-       * DataRow.cs : Create XmlElement only if required.
-
-2006-04-07  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs :
-               - InternalEnforceConstraints() : Reset Indexes of all tables
-               before validating constraints. Fixes #78010
-
-2006-03-04     Boris Kirzner <borisk@mainsoft.com>
-       * TypeDataSetGeneratorException.cs: fix .Net Soap serialization compatibility.
-
-2006-03-25  Senganal T  <tsenganal@novell.com>
-
-       * DataRow.cs : 
-               - RejectChanges : When row is in Deleted state, add the row back to
-               Indexes and Validate the row.
-
-
-2006-03-23  Senganal T  <tsenganal@novell.com>
-
-       * DataTable.cs : 
-               - LoadDataRow : Add the row to the indexes, when loading a new row.
-
-2006-03-22  Senganal T  <tsenganal@novell.com>
-
-       * DataTable.cs :
-               - PrimaryKey : Set the IsPrimaryKey attribute before Removing from collection.
-               - RemoveUniqueConstraints : Removed. dead code.
-       * DataColumn.cs :
-               - Unique : 
-                       - If adding/removing constraint fails, retain Unique value
-                       - Remove redundant code
-       * UniqueConstraint.cs :
-               - SetIsPrimaryKey : Added. Sets the value of IsPrimaryKey.
-               - RemoveFromConstraintCollectionCleanup : If constraint is on a single column, then
-               set Unique for that column to false.
-               - CanRemoveFromCollection : Do not remove constraint, if its a PrimaryKey
-
-2006-03-20  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs :
-               - CopyRelations () : When copying the relation, do not add constraints
-               automatically for the relation.
-               - OnMergeFailed () : If merge fails and no handler is set for the MergeFailedEvent,
-               then throw DataException 
-       * ConstraintCollection.cs :
-               - Add () : Check if a constraint already exists on the Columns that are being 
-               constrained.
-               - IndexOf () : Do not check for equivalent constraints, check for the exact instance.
-       * MergeManager.cs (): 
-               -  AdjustSchema () : 
-                       - Handle the MissingSchemaAction.Error case, 
-                       - Do not create constraints when mergin the DataRelation
-                       - Follow the semantics for schema merge/validation  when constraints are already present
-                       in the target DataSet.
-               - AdjustPrimaryKeys () :
-                       - Code cleanup
-                       - Verify Order of Columns in the PrimaryKey when merging.
-               - ResolveColumns : Changed the arument to DataSet. Simplifies code elsewhere.
-               - CompareColumnArrays, CompareColumnArrays : Helper funtions.
-               
-2006-03-09  Senganal T  <tsenganal@novell.com>
-
-       * DataRow.cs :
-               - RejectChanges () :  Add the row to index, if it was in deleted state and
-               Update the index if in Modified State.
-               - AcceptChanges () : Do not update the Indexes.
-               - EndEdit () : Update the indexes even if BeginLoadData has been called
-               on the table. Ideally, indexes should not be maintained during DataLoad,
-               but this needs to handled in multiple places correctly. For now, just maintain
-               the index to ensure correct operation.
-       
-2006-03-05  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs :
-               - BeginInit (), EndInit () : Implemented methods
-               - InitInProgress : Added.
-       * DataTable.cs
-               - EndInit () : Move the adding of columns and constraints
-               to FinishInit.
-               - FinishInit () : Added. Adds the Constraints and Columns
-               to the collection.
-               - InitInProgress : Added.
-       * Constraint.cs
-               - FinishInit () : Added. Virtual method
-               - InitInProgress : Added. Virtual property
-       * UniqueConstraint.cs
-       * ForeignKeyConstraint.cs
-               - FinishInit () : Added.
-               - InitInProgress : Added.
-               - DataColsNotValidated : Removed.
-       * ConstraintCollection.cs
-               - PostAddRange : Removed event
-               - PostEndEdit () : Renamed to PostAddRange
-               - Add () : Simplified the testing if constraint is initialized
-               - AddRange () : Simplified initializing the constraints
-       * DataTableCollection.cs
-               - PostAddRange () : Added. Adds the tables to the collection
-       * DataColumnColletion.cs
-               - PostEndInit () : Renamed to PostAddRange.Also, add column to
-               the collection only if not null.
-       Added/Implemented methods for design time support. Renamed some methods for consistency
-       in naming across classes for methods serving the same purpose. 
-
-2006-02-24  Senganal T  <tsenganal@novell.com>
-
-       * UniqueConstraint.cs :
-               - ChildConstraint : Added. Simplifies verifying if constraints are
-               related.
-               - CanRemoveFromCollection : Fixed the check to verify if constraints is
-               linked to a ForeignKeyConstraint. Fixes #77630
-       * ForeignKeyConstraint.cs :
-               - _validateRemoveParentConstraint : Removed. Not used anymore
-               - ParentConstraint : Added. Simplifies verifying if constraints are
-
-2006-02-22  Senganal T  <tsenganal@novell.com>
-
-       * DataRow.cs 
-               - RejectChanges : Do not remove Row from Indexes when state is Deleted.
-               - CheckChildRows : When checking for the ChildRows, use the current value
-               and not the original value.
-
-2006-02-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : Patch by Marek Habersack. xsd now
-         outputs AutoIncrement, AutoIncrementSeed, AutoIncrementStep and
-         ReadOnly properties. This fixes bug #77576.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * System.Data/DataSet.cs, System.Data/DataView.cs,
-       System.Data/ForeignKeyConstraint.cs,
-       System.Data/DataViewManager.cs, System.Data/DataRow.cs,
-       System.Data/DataSysDescriptionAttribute.cs,
-       System.Data/UniqueConstraint.cs, System.Data/DataTable.cs,
-       System.Data/DataRelation.cs: lots of attribute work, removing
-       DataSysDescription atributes (and marking the class obsolete) for
-       2.0.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DataAdapterException.cs: remove this file.
-       
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DataTableReader.cs: Switch to the (bool) form of Dispose to
-       override, as the no-arg form isn't virtual.
-
-       * Constraint.cs: #ifdef out more DataSysDescriptions.
-
-       * ConstraintException.cs: add ..ctor (string, Exception) for 2.0.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * DataColumn.cs: #ifdef all the DataSysDescriptions !NET_2_0.
-
-       * AdapterMappingException.cs: nuke this file.
-
-       * IDbAsyncConnection.cs, IDbAsyncCommand.cs, IGetTypedData.cs,
-       ISetTypedData.cs, IDataReader2.cs, IDataSources.cs,
-       IDbExecutionContext.cs, IDataRecord2.cs, IDataUpdatableRecord.cs:
-       remove these 2.0 files.
-
-2006-02-17  Chris Toshok  <toshok@ximian.com>
-
-       * ConstraintCollection.cs: in 2.0, class is not serializable and
-       is sealed.  make all the "virtuals" #if !NET_2_0 as well.
-
-       * Constraint.cs: not serializable in 2.0.
-
-       * DataColumnCollection.cs: in 2.0, class is not serializable and
-       is sealed.  make all the "virtuals" #if !NET_2_0 as well.
-
-       * DataRelationCollection.cs: not serializable in 2.0.
-
-       * DataRelation.cs: not serializable in 2.0.
-
-       * DataRowBuilder.cs: class is sealed in 2.0.
-
-       * DataRowCollection.cs: in 2.0, class is not serialized and is
-       sealed.  Also, Add isn't virtual in 2.0 (as the class is sealed).
-
-       * DataRow.cs: not serializable in 2.0.
-
-       * DataSet.cs: remove some DataSysDescriptions from the 2.0 build,
-       and s/GetDataReader/CreateDataReader.
-
-       * DataTableCollection.cs: in 2.0, class is not serializable and is
-       sealed.  make all the "virtuals" #if !NET_2_0 as well.
-
-       * DataTableReader.cs: remove VisibleFieldCount property.
-
-       * DataViewSettingCollection.cs: not serializable in 2.0.
-
-       * DataViewSetting.cs: not serializable in 2.0.
-
-       * ForeignKeyConstraint.cs: serializable in 2.0.
-
-       * OperationAbortedException.cs: class is sealed and serializable.
-
-       * PropertyCollection.cs: serializable in 2.0.
-
-       * StatementCompletedEventArgs.cs: class is sealed.
-
-       * UniqueConstraint.cs: not serializable in 2.0.
-
-2006-02-16  Senganal T  <tsenganal@novell.com>
-
-       * XmlSchemaWriter :
-               WriteDataSetElement : Add an annotation element if exists.
-               WriteDataRelationAnnotation : New. Write a DataRelation as an annotation.
-               WriteConstraints : Write ForeignKeyConstraint even when not associated with
-                       a DataRelation and add a "ConstraintOnly=true" attribute for such constraints.
-       * XmlConstants.cs : Add a new constant - ConstraintOnly
-       * XmlSchemaImporter.cs :
-               - ConstraintStructure : Add field ,IsConstraintOnly, to distinguish if a foreignkeyconstraint
-                       is related to relation or not.
-               - GenerateRelation : Handle the case when parentkey and childkey contain multiple columnnames.
-
-2006-02-11  Senganal T  <tsenganal@novell.com>
-       
-       * UniqueConstraint.cs :
-               - PostAddRange : Check PrimaryKey is not already set for the table
-       * DataTable.cs :
-               - PrimaryKey : follow ms.net behavior when BeginInit , EndInit is used.
-                       - Add new priamry key only when EndInit is called.
-                       - Incase of an error, retain old primarykey 
-               - EndInit :
-                       - Add Constraints after columns are added.
-                       - If both PrimaryKey Property and PrimaryKey Constraint are set,
-                       then the Constraint takes precedence.
-               fixes bug #77404
-
-2006-02-03  Senganal T  <tsenganal@novell.com>
-
-       * DataTableCollection.cs : 
-               - Remove () : Check for invalid TableName
-               - Add () : Verify the table doesn't belong to another dataset
-       * DataView.cs :
-               - CompleteLastAdded () : Do not raise ItemAdded Event as it is
-                       already raised in AddNew().
-       * DataColumn.cs :
-               - Expression : Verify that the Column names in the expression are valid 
-               - ResetCollectionInfo : Renamed to ResetColumnInfo
-       * DataRow.cs :
-               - RejectChanges () : Reorganized the code to do the Right thing.
-               - Item  : Dont check for detached and deleted rows as these are
-                       done elsewhere.
-       * DataRowCollection.cs :
-               - Add () : Check for null value
-       * DataTable.cs :
-               - PrimaryKey : Set AllowDBNull=false for all the key columns
-               - ImportRow : Import the row only if it is not in Detached state. if in Deleted
-                       state, perform the validation when AcceptChanges/RejectChanges is called.
-       * DataColumnCollection.cs :
-               - Add : Validate the column expression before adding it to the collection.
-               - GetColumnDependency () : New. Get the dependencies on the column 
-               - CanRemove : Move checks to GetColumnDependency
-               - Clear () : Simplified code. Remove unncessary checks.Also, dont check Expression col.
-               - IndexOf - Check argument.
-               Overall , appropriate error msg's are thrown if Remove/Clear fails. Removed a few
-               redundant checks performed and moved the common code to GetColumnDependency.
-
-2006-01-31  Senganal T  <tsenganal@novell.com>
-
-       * DataSet.cs : Modified CopyRelations ()
-               - Added code to copy ForeignKeyConstraints. Fixes #77411.
-       
-2006-01-18 Boris Kirzner <borisk@mainsoft.com>
-       * DataColumn.cs: added PropertyCchangedEvent handling.
-
-2006-01-17  Senganal T  <tsenganal@novell.com>
-       
-       * DataRow.cs:
-               ItemArray : Modified to raise RowInTableException only if
-               the concerned row has been removed from the table.Fixes 
-               bug #77267
-
-2006-01-16 Boris Kirzner <borisk@mainsoft.com>
-       * DataTable.cs: Drop dependend indexes on column removal.
-
-2006-01-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs :
-         When a DataRelation connects the same table as parent and child,
-         generate parent row property as BlahRowParent. Fixed bug #77248.
-
-2006-01-10  Senganal T <tsenganal@novell.com>
-       * DataRowCollection.cs
-               - Added ListChangedEvent to notify reset of the collection.
-       * DataView.cs
-               - Subscribes to the ListChangedEvent of DataRowCollection
-               Fixes bug #77188
-
-2006-01-09  Senganal T <tsenganal@novell.com>
-       * RelatedDataView.cs
-       * DataColumn.cs
-               - Resolving a name clash in IExpression
-
-2006-01-06  Senganal T <tsenganal@novell.com>
-       
-       * DataColumn.cs
-       * DataColumnCollection.cs
-               - Reset the Parameters of DataColumn to Default Values when 
-               column is removed from the Table's Collection
-
-2006-01-03  Senganal T <tsenganal@novell.com>
-
-       * DataTable.cs :
-               - ParseSortString() : Changed the way the sort string is parsed.
-               Using a regex to parse the string.Fixes bug #77104
-
-2005-12-12  Konstantin Triger <kostat@mainsoft.com>
-
-       * DataRow.cs: Added index Updates.
-               EndEdit() fixed to first update indices and then AssertConstraints
-               based on those indices.
-               Added Validate() and AssertConstraints() functions.
-       * DataRowCollection.cs: Removed ValidateDataRowInternal().
-       * DataTable: Fixed Clear().
-
-2005-12-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : (InitializeFields) handle AllowDBNull
-         and DefaultValue as well. Patch by Marek Habersack (bug #76709).
-
-2005-12-01  Miguel de Icaza  <miguel@novell.com>
-
-       * DataSet.cs: Apply patch from Robert Jordan, to fix #76817
-
-2005-11-26  Konstantin Triger <kostat@mainsoft.com>
-
-       * ConflictOption.cs: TARGET_JVM include.
-
-2005-11-11  Senganal T <tsenganal@novell.com>
-       
-       * ConflictOption.cs (new file)
-               - Added ConflictOption Enumeration 
-       * DataTableReader.cs
-       * IDataRecord2.cs 
-               - GetProviderSpecificFieldType : Corrected the method name
-
-2005-11-11  Senganal T <tsenganal@novell.com>
-
-       * DataSet.cs : Added the SchemaSerializationMode Property for NET_2_0
-       compatibility.
-       * SchemaSerializationMode.cs : Added SchemaSerializationMode Enumeration
-       for NET_2_0 compatibility.
-
-       Fixes bug #76517
-
-2005-10-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaWriter.cs : escape names in the schema with XmlConvert.
-         Fixed bug #76480.
-
-2005-10-14  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataView.cs: Correct multiple throwing of events. Patch from
-       Marc Haisenko.
-       (RowStateFilter): Fire ListChangedEvent.
-       (ApplyDefaultSort): Fire ListChangedEvent.
-       (CompleteLastAdded): call UpdateIndex to remove the row from rowCache.
-       (IBindingList.Find): Implemented.
-
-2005-10-11  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataView.cs (IBindingList): Implemented methods for IBindingList interface.
-
-2005-09-26  Lluis Sanchez Gual <lluis@novell.com>
-
-       * DataSet.cs: In IXmlSerializable.GetSchema, return null again for
-       untyped datasets. Fixes bug #76101.
-
-2005-09-21 Boris Kirzner <borisk@mainsoft.com>
-       * DataRow.cs: Fixes for index updating.
-       * DataTable.cs: 
-               - Reset case-sensitive indexes also if their filter contains columns 
-               of type string.
-               - Use GetIndex instead of FindIndex, so the indexes created in Select()
-               are reused. 
-       * RelatedDataView.cs: implement IExpression.Equals() and GetHashCode().
-       
-2005-09-20  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataView.cs (Sort): Apply default Sorting Order if Sort property
-       is reset to null. Sort property handles this. Patch from Marc.
-
-       * DataTable.cs (ParseSortString): Patch from  Marc Haisenko for
-       allowing [ & ] in DataView.Sort string.
-
-2005-09-01 Boris Kirzner <borisk@mainsoft.com>
-       * System.Data/DataRowCollection.cs: indexes should be updated even if 
-       EnforceConstraints is false. Check for EnforceConstraints in
-       ValidateDataRowInternal.
-
-2005-08-08  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * DataView.cs: Changed accessibility of dataTable, rowState and
-       rowCache field to internal to fix public API. Assigned TypeConverter
-       to Table property.
-       * ForeignKeyConstraint.cs: IsConstraintViolated is now internal.
-       * Constraint.cs: IsConstraintViolated is now internal.
-       * UniqueConstraint.cs: IsConstraintViolated is now internal.
-
-2005-08-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : When "dataset element" has identity
-         constraints, then first reserve constraints room for them and then
-         process elements, skipping pkey creation if there is already
-         reserved one. Fixed bug #75711.
-
-2005-08-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : in GetElementMappingType(), don't guess
-         the same (QNamed) element again when it was already evaluated as
-         not simple type. Fixed one part of bug #75711.
-
-2005-08-02 Boris Kirzner <borisk@mainsoft.com>
-       * XmlSchemaDataImporter.cs : Data relations should be processed after the
-       keys, so no redundant constraints created while relations processing.
-
-2005-07-25 Boris Kirzner <borisk@mainsoft.com>
-       * FillOptions.cs, ConflictOptions.cs, UpdateOptions.cs: 
-       added ifdef TARGET_JVM.
-
-2005-07-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataViewSettingCollection.cs, DataTableCollection.cs,
-       DataSet.cs, DataView.cs, DataColumn.cs, ForeignKeyConstraint.cs,
-       DataRelationCollection.cs, UniqueConstraint.cs, DataTable.cs,
-       DataColumnCollection.cs, DataRelation.cs, DataSet.cs:
-       - updated attributes & attribute descriptions to match with
-       masterinfos.
-
-       * DataView.cs: changed protected members
-       rowstate,rowcache,dataTable to protected internal.
-       * Constraint.cs, ForeignKeyConstraint.cs, UniqueConstraint.cs:
-       changed InConstraintViolated to protected internal.
-       * ConflictOptions.cs, UpdateOptions.cs, FillOptions.cs: enclosed
-       with NET_2_0 define.
-
-2005-07-21  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * ForeignKeyConstraint.cs: 
-       - IsConstraintViolated (): no matter what EnforceConstraints is,
-       this function now honestly validates. It is upto the caller to run
-       this or not.
-       - AddToConstraintCollectionSetup (): AssertConstraint according to
-       EnforceConstraints.
-       
-2005-07-21 Boris Kirzner <borisk@mainsoft.com>
-       * ForeignKeyConstraint.cs - IsConstraintViolated() should check also for Table.EnforceConstraints.
-       * DataTable.cs - EnforceConstraints becomes internal so it can be used by ForeignKeyConstraint.
-
-2005-07-19  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTable.cs - CopyConstraints (): copy constraints only if it
-       does not exist.
-
-       * DataSet.cs - Copy ():
-       - use activator.CreateInstance to create a typed dataset.
-       - copy tables if target does not exist, otherwise, just add rows.
-       - add relation only if it does not exists.
-
-       Typed datasets create the constraints & relations through
-       constructors. Fixes bug #75211.
-
-2005-07-14  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataView.cs: Patch from Marc Haisenko to throw descriptive error
-       message when accessing Item, with invalid index.
-
-2005-07-14  Sureshkumar T  <tsureshkumar@novell.com>
-
-       reapplied patch from Marc Haisenko.
-       * DataView.cs: Patch from Marc Haisenko that ensures that rowCache
-       is never null.
-
-2005-07-13  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRelationCollection.cs: adding a relation with same set of
-       parent columns & child columns, should not be allowed.
-
-2005-07-08  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTableReader.cs: GetSchemaTable: DataType column should be
-       passed a type of Type.
-
-       * DataRow.cs: Load : Fired necessary events.
-
-       * DataTable.cs: LoadDataRow (object [], LoadOption): Fired
-       necessary events.
-
-2005-06-28  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs: Delete (): if row is detached, do nothing.
-       fixes bug #75388.
-
-2005-06-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs: Added method MergeValuesToRow copy merge two rows
-       according to the merge rules.
-
-       * MergeManager.cs: (MergeRow): use MergeValuesToRow
-       API. CopyValuesToRow simply makes the target row same as source
-       row. Rather, MergeValuesToRow merges with the target row according
-       to the merge rules.
-
-2005-06-19  Konstantin Triger <kostat@mainsoft.com>
-
-       * DataSet.cs: Fixed ReadXml to work with IXmlSerializable
-
-2005-06-17  Jordi Mas i Hernandez <jordi@ximian.com>
-
-       * DataViewManager.cs: fixes exception and creates DataView
-
-2005-06-15  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs: CheckChildRows: cascade parent changes to child rows
-       only if there is a change in columns of the fk constraint.
-
-2005-06-14  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataSet.cs: GetChanges: if row is deleted, get parent rows based
-       on original version. fixes bug #75227.
-
-2005-06-13  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRowCollection.cs: Find (keys, version): Added an overload to
-       find keys matching given DataViewRowState filter. Used in
-       DataSet.Merge and DataTable.LoadDataRow.
-
-       * DataTable.cs: LoadDataRow (values, LoadOption): Use
-       DataRowCollection.Find (object [], DataViewRowState) overload.
-
-       * DataRow.cs:
-       - CopyValuesToRow: Create target "records" out of loop. Records
-       should be created once, not for each column. Dispose Unused target
-       records.
-
-       * MergeManager.cs:
-       - MergeRow: Find rows with matching original records. If not,
-       select with current values.
-       - MergeRow: While adding new row, use NewNotInitializedRow.
-
-       * ForeignKeyConstraint.cs: IsConstraintViolated: should not check
-       if EnforceConstraints is false.
-
-2005-06-10  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs: CopyValuesToRow: if orginal == current, don't create
-       a new current record.
-
-       * DataSet.cs: GetChanges :Temporarily disable EnforceConstraints.
-
-       * MergeManager.cs: Merge: Temporarily disable
-       EnforceConstraints. Patch from george.barbarosie@gmail.com (George
-       Barbarosie).
-
-2005-06-09  Jordi Mas i Hernandez <jordi@ximian.com>
-
-       * DataView.cs: fixes GetListName
-
-2005-06-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaConstants.cs,
-         XmlSchemaDataImporter.cs,
-         XmlSchemaWriter.cs : AutoIncrementStep support. Patch partly by
-         George Barbarosie. Fixed bug #75121.
-       * XmlSchemaMapper.cs : it is not used anymore, so just removed.
-
-2005-05-31 Boris Kirzner <borisk@mainsoft.com>
-       * DataRow.cs : SetParentRow on Detached row with no Default version throws an exception.
-       
-2005-05-29 Konstantin Triger <kostat@mainsoft.com>
-
-       * This patch fixes #74813
-       * DataView.cs: rework the CreateChildView to receive the index into the indexed row array, rowState became protected to be initialized from RelatedDataView
-       * DataRowView.cs: movo the logic of creating the child view to the DataView
-       * RelatedDataView.cs: perform correct init.
-
-2005-05-25  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTable.cs: Reworked DataTable.LoadDataRow method after
-       regressions caused by Index redesign.
-       * DataRow.cs: Load : reworked.
-
-2005-05-25 Konstantin Triger <kostat@mainsoft.com>
-
-       * ISafeDataRecord.cs: Added GetDateTimeSafe method, the interface was made derived from IDataRecord
-
-2005-05-22 Konstantin Triger <kostat@mainsoft.com>
-
-       * DataTable.cs, DataColumn.cs: in continuation to the previous fix - moving the common logic to 1 function and throwing the correct exception in any flow
-
-2005-05-20  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTable.cs: CreateRecord :value should be set to auto
-       increment value or default value if the given value is null.
-
-2005-05-16 Konstantin Triger <kostat@mainsoft.com>
-
-       * DataTable.cs: In DataTable.LoadDataRow with LoadOption - reverting the search order back to Original -> Current (by Suresh request)
-
-2005-05-16 Konstantin Triger <kostat@mainsoft.com>
-
-        * DataRow.cs, DataTable.cs: code under net_2_0 changed to use the new interface
-        * DataTable.cs: Added CompareRecords, which compares records in column order
-
-
-2005-05-16  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs:
-       * DataTable.cs: quick fix to make build 2.0 profile (follow up for
-       check in 2005-05-16). Merge with previous changes.
-
-2005-05-11  Sureshkumar T  <tsureshkumar@novell.com>
-
-       fix for "import row does not import deleted records"
-
-       * UniqueConstraint.cs: Make a way to access value even from a
-       deleted record. deleted records are added to the collection by
-       ImportRow method.
-
-       * DataRow.cs:
-       - Added restriction-less methods GetValue to fetch a
-       value even if it is in deleted state.
-       - If a row is detached, don't try to delete it from indexes.
-       - sanity check for record_index in CopyValuesToRow method
-
-2005-05-05  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTableReader.cs: Implemented Delete handler and move the
-       current pointer accordingly.
-
-2005-05-04  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTableReader.cs: Added event handlers to make reader stable
-       when the datasource is modified. Thanks to Umadevi for giving the
-       review comments for this implementation.
-
-       * DataTable.cs: Clear (): Raise TableCleared event.
-
-       * DataTableClearEventArgs.cs: Args for DataTableClearEventHandler.
-
-       * DataTableClearEventHandler.cs: Handler for DataTable.TableClear
-       event.
-
-       * DataRow.cs: AcceptChanges: raise row changing & row changed
-       events.
-
-       * DataRowCollection.cs: Clear : remove rows from indexes
-
-2005-05-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : XmlSchemaParicle might be XmlSchemaAny.
-         This fixes bug #74784.
-
-2005-04-29  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTableReader.cs: removed use of _first. throw if given index
-       is out of range of columns. Copy DataTable [] to local array so
-       that not to be disturbed.
-
-2005-04-27  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTableReader.cs: Implemented most of the TODO.
-
-2005-04-22  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * LoadOption.cs: Changed the enums. Keeping old values for
-       migration.
-
-       * DataTable.cs: Implemented methods Load and its overloads. Also
-       implemented LoadDataRow.
-
-       * DataRowCollection.cs: Added a variation of the Find method to
-       return a row even if it is of state Deleted. This is required for
-       DataTable.LoadDataRow method.
-
-       * DataRow.cs: Implemented internal helper method Load for loading
-       values from an object array and given an LoadOption (2.0 feature).
-
-       * DataRowAction.cs: Added few more enums for .net 2.0. Sorted
-       alphabetically.
-
-2005-05-16 Konstantin Triger <kostat@mainsoft.com>
-
-       * UniqueConstraint.cs : IsNull check is relevant for rows having default row version.
-       * DataTable.cs : The row should be validated when imported
-       * DataRowCollection.cs : if the row does not contain Proposed neither Current version, it's irrelevant for validation
-
-2005-04-26 Boris Kirzner <borisk@mainsoft.com>
-
-       * UniqueConstraint.cs :
-               - Add indication whenever the constraint belongs to collection. 
-               - Calculation of IsPrimaryKey simplified.
-               - If constraint is based on single column, the column becomes unique.
-               - Use boolean IsConstraintViolated() instead of AssertConstraint().
-               - Use Index.Duplicates to proper exception message formatting.
-               - AssertConstraint(DataRow) changed to suite new indexes interface.
-               - Added CanRemoveFromCollection method.
-               - Contains() method renamed to IsColumnContained().
-       * RelatedDataView.cs : added new class.
-       * MergeManager.cs :
-               - Reset indexes after merge.
-               - Add new tables when row array is merged into dataset.
-               - Clean proposed record in MergeRow.
-               - Inherit nesting on creating new relations in target data set.
-               - Avoid double loop on constraints collection.
-       * Locale.cs : added new class.
-       * ISafeDataRecord.cs : added new interface.
-       * Index.cs : commented out. Index implementation moved to System.Data.Common.
-       * ForeignKeyConstraint.cs : 
-               - No more use of childColumnsExtended since new indexes allow duplicate records.
-               - Constraints can not be created on expression columns.
-               - Removed unnecessary delegation.
-               - Use boolean IsConstraintViolated() instead of AssertConstraint(). 
-               - Use proper exception message formatting.
-               - Contains() method renamed to IsColumnContained().
-       * DataViewRowState.cs : use enum members to simplify notation.
-       * MergeManager.cs : implemented RelationCollectionChanged().
-       * DataView.cs :  new implementation.
-       * DataTableCollection.cs : 
-               - Added boundary check in indexer.
-               - More accurate handling in AddRange().
-               - Raise event in Remove().
-       * DataTable.cs :
-               - Hold primary key as constraint.
-               - Added accurate handling of DefaultView.
-               - Hold DataRowBuilder per table.
-               - Proper exception messages if enforce Constraints is violated.
-               - If there is no rows, Compute() returns DBNull.
-               - Use DataRow properties instead of private members.
-               - CopyProperties() fixed.
-               - Raise proper events in EndInit().
-               - Proper order of violation checks in EndLoadData().
-               - Create array of rows using NewRowArray().
-               - ImportRow handles rows according to their versions.
-               - LoadDataRow make use of records (instead of raw object array).
-               - Added and implemented LoadDataRow() that gets IDataRecord as a parameter (used in Fill)
-               - Select() uses indexes filtering and sorting ability (instead of "loop-throw-sort" approach).
-               - Removed redundant RowSorter and Sortable column classes.
-               - ParseSortString() fixed to threat bracketed column names.
-               - Table holds collection of property descriptors.
-       * DataSet.cs :
-               - Reset table case sensitive indexes on CaseSensitive change.
-               - EnforceConstraints update logic moved to internal method (used by DataTable).
-               - InAddChangedRow first add row and than copy values for proper handling of default values.
-       * DataRowView.cs :
-               - Changed private member names to suite name convention.
-               - CancelEdit() fixed.
-               - CreateChildView() delegates to DataView.
-               - IsNew fixed.
-               - Proper exception messages in indexers.
-               - RowVersion uses DataView.
-               - GetProperties() delegates to corresponding table if needed.
-       * DataRowCollection.cs :
-               - Common Add() logic moved to AddInternal() (used also by DataTable).
-               - Removed redundant check from Contains().
-               - Dalegate Find() calls when possible.
-               - Remove() fixed.
-               - RomoveAt() delegates to Remove().
-               - Optimized constraints check in row validation.
-       * DataRelationPropertyDescriptor.cs : added new class.
-       * DataRelationCollection.cs :
-               - Indexers fixed.
-               - Fixed order of actions in AddCore().
-               - RemoveCore() also delegates to base.
-               - Add relation to dataset also in AddCore().
-               - Remove relation from dataset also in RemoveCore().
-               - InTransition hold a data relation so we can properly identify the "in transition" state.
-               - Added threat of parent and child table s property descriptors in Add().
-               - Common Add() logic moved to AddCore().
-               - Clear() fixed.
-               - Remove() threats "in transition" state properly.
-               - Remove methods delegate to single implementation.
-       * DataColumnPropertyDescriptior.cs :
-               - Added new constructor.
-               - Commented out redundant method.
-       * DataColumnCollection.cs :
-               - Boundary check in indexer.
-               - RegisterName and UnregisterName become internal (used also by DataColumn).
-               - Fixed AddRange().
-               - Fixed CanRemove().
-               - Rethrow correct exception in Clear();
-               - Change in collection resets parent table property descriptors.
-               - Added PostEndEdit() helper method (used by DataTable).
-       * DataColumn.cs :
-               - Private member names changed to suite name convention.
-               - Created method for CanAutoIncrement() logic.
-               - Proper handling of column name update.
-               - Proper exception messages on expression update.
-               - Proper namespace handling (delegates to table when needed).
-               - Removed redundant check in Unique update.
-               - Implemented internal Clone().
-               - GetParentRalation() and GetChildRelation() become private.
-       * Constraint.cs :
-               - Added abstract methods (implemented in UniqueConstraint and ForeignKeyConstraint).
-               - Simplified index update.
-       * ConstraintCollection.cs :
-               - Use Locale instead of CaseSensitive in column names comparison.
-               - Removed #ifdef
-               - Rethrow correct exception type in Add().
-               - Proper update of table primary key in Add().
-               - Delegate CanRemove() to constraint.
-               - Remove table primary key in Clear();
-               - Delegate "can remove" check to constraint in Remove().
-               - Removed unnecessary methods and properties.
-       * DataRow.cs :
-               - RowSate becomes calculated property.
-               - Use properties instead of private members where possible.
-               - Fixed indexer.
-               - Fixed order of actions in ItemArray update.
-               - Fixed DetachRow().
-               - Added ImportRecord() method.
-               - Removed redundant SetValuesFromDataRecord().
-               - Fixed IndexFromVersion().
-               - Added VersionFromIndex() method. Returns row version the passed record index corresponds to.
-               - Fixed AcceptChanges().
-               - Fixed creating proposed version in BeginEdit();
-               - Added record disposal in Delete().
-               - Fixed CheckChildRows().
-               - EndEdit() fixed. Checks for readonly. Uses straight flow instead of "try and fix if fail" approach.
-               - GetChildRows() and GetPrarentRows() rewrited. Use records and indexes for rows lookup.
-               - GetColumnError() delegates to another implementation.
-               - HasVersion() fixed.
-               - RejectCahnges checks on child rows before passing through.
-               - SetParentRow() fixed. Create relation collection if needed. Use typed data container value copy.
-               - CopyErrors() logic moved to separate method (used also by DataTable).
-       * ExpressionElement.cs : added new class.
-       * Res.cs : added new class.
-
-2005-04-20  Jordi Mas i Hernandez <jordi@ximian.com>
-
-       * DataViewManager.cs: implements TypedList.GetListName used in SWF
-
-2005-04-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRowView.cs : indexer should access to DataRow with proper
-         DataRowVersion. Fixed bug #74650.
-
-2005-04-18  Sureshkumar T  <tsureshkumar@novell.com>
-
-        * DataRow.cs: if there are no mapping fields, fill with default
-         value.
-
-2005-04-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : Delete() should not try to remove row twice.
-         Fixed bug #74631.
-
-2005-04-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs : Use GetRowType() for the base of the returning array 
-         type of Select(). Fix by Gerhard Rittweger.
-       * CustomDataClassGenerator.cs : Fixed slightly harmless wrong code.
-
-2005-04-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : custom relation was not added to
-         Relations property. The second entry of bug #69276 was fixed.
-         Patch by Daniel Rodriguez.
-
-2005-04-07  Lluis Sanchez Gual <lluis@novell.com>
-
-       * DataRowCollection.cs: Fix the signature of the Add method
-       for NET_2_0.
-
-2005-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : on importing row, it was copying data from incorrect
-         DataRow. This fixes bug #73288.
-
-2005-03-07  Jackson Harper  <jackson@ximian.com>
-
-       * DataViewManagerListItemTypeDescriptor.cs: Implement missing
-       features. These are needed for System.Windows.Forms databinding.
-
-2005-02-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumn.cs : setting negative value on MaxLength of SimpleContent
-         column is still valid.
-
-2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaWriter.cs : new file for outputting XmlSchema.
-       * DataSet.cs : removed rewritten code in XmlSchemaWriter.
-       * XmlConstants.cs : added UseCurrentCulture constant.
-       * DataTable.cs :
-         Use new Xml Schema writer.
-         Use XmlSchemaDataImporter as we use in DataSet.
-
-2005-02-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs, DataRowView.cs : Fixed bug #72421. CreateChildView()
-         should target only child rows.
-
-2005-02-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataViewManager.cs: misuse of ReadStartElement(string).
-       * DataRowView.cs : removed some MonoTODO.
-
-2005-02-02  Sureshkumar T  <tsureshkumar@novell.com>
-           Ankit Jain     <radical@corewars.org>
-
-       * DataColumn.cs: throw exception if the column is part of a
-       relationship, when chaning the data type. Added methods
-       "GetParentRelation ()" and "GetChildRelation ()" get the relation
-       which contains the current column
-       * DataRelation.cs: Added method "Contains (DataColumn)" to check
-       whether the relation contains the given column.
-
-       fixes nunit failure: DataRelationTest.InvalidConstraintException2.
-
-2005-02-02  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataColumnCollection.cs: implemented todo item "check for
-       constraints" when removing columns from table.
-       * DataRowCollection.cs: Clear (): don't have to throw child key
-       constraint exception when the child table does not have any
-       rows. safe to remove parent rows.
-       * UniqueConstraint.cs: added method "Contains (DataColumn)" to
-       check whether a column is part of UniqueConstraint.
-       * ForeignKeyConstraint.cs: added method "Contains (DataColumn,
-       lookInParent)" to check whether a column is part of foreignkey.
-
-       fixes nunit failure: DataTableTest.ClearTest ()
-
-2005-02-02  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * ForeignKeyConstraint.cs: validating columns: move checking
-       "tables are of same dataset" before "checking column types".
-
-       fixes nunit failure: ForeignKeyConstraint.CtorExceptions.
-       
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataViewManager.cs : let's just use StringWriter instead of 
-         XmlTextWriter (to avoid empty tag string mismatch annoyance.)
-       * DataView.cs : implemented BeginInit() and EndInit(). Don't update
-         rows during init phase until EndInit() is invoked. During init phase,
-         just hold properties such as Sort that affects on rows.
-
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTableCollection.cs : (RemoveAt) just use IndexOutOfRangeException.
-
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : DataRowView.EndEdit() raises ItemMoved event.
-         set_Table clears Sort and RowFilter.
-
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs :
-         - Clear() should clear AddNew cache.
-         - Open() invokes Reset().
-         - ConstraintCollectionChanged() itself does not invoke OnListChanged().
-         - Reset() does not Open, Close and Update Index.
-         - UpdateIndex() can be invoked even if it has no table.
-         - Reset event is invoked always after actual query to table.
-         - set_Table should raise PropertyDescriptorChanged event.
-
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : ColumnCollectionChanged() is the event invoker (i.e.
-         when overriden, no column change events are fired).
-
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : CancelEditRowView() and DeleteRowView() was incorrectly
-         checking target tables. They also should raise events if required.
-
-2005-02-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : simplify code with UnsortedList.
-
-2005-02-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : Mostly reimplemented.
-         - UpdateIndex() is invoked only when it is required (results in 
-           significant performance improvement).
-         - Use SortedList and wrapper OptionalSortedList which switches
-           between SortedList (with Sort) and UnsortedList (without Sort).
-         - DataView itself now contains two collections for rowviews:
-           Table rows based pool and AddNew() based cache. Consider those
-           two collections in every members.
-         - Reset() does not clear rows. Just invokes UpdateIndex().
-         - Hook RowDeleting, ColumnChanging and ColumnChanged events in table
-           which is required to handle state changes.
-         - Reimplemented Find() and FindRows() because of internal changes.
-
-2005-02-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs : Fixed row comparer. Even if every of the sort target
-         columns are identical for two rows, they should not be regarded as
-         the same unless they are Object.ReferenceEquals.
-
-2005-02-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRowCollection.cs : on adding a row, should raise
-         ChangingDataRow() as well as ChangedDataRow().
-
-2005-01-31  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs: SetParentRow (): use relation.ParentColumns &
-       relation.ChildColumns instead of relation.ChildKeyConstraint.*
-       because createConstrains flag may be false when creating data
-       relations. Hack along with Ankit Jain.
-       
-2005-01-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs :some interface implementations.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : Add to table only when the row is not in the table.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : implemented FindRows() (btw we should not use
-         DataTable since there are detached rows by AddNew().)
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs :
-         Code cleanup: privatify some members, remove unused methods.
-         Some event-based invocation methods should not raise NotImplemented.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : ReadXml() became closer to MS behavior, being hacky.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : empty element is not regarded as a column.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * UniqueConstraint.cs : mostly reverted the previous patch + check
-         IsPrimaryKey before validation.
-
-2005-01-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : Fixed duplicate insertion to Hashtable.
-       * UniqueConstraint.cs : Unique constrained pair of columns could be
-         nullable.
-
-2005-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs :
-         Don't do anything for Sort/ApplyDefaultSort/RowFilter/RowStateFilter
-         when the same value is being set.
-         Examined UpdateIndex() and marked FIXME where MS does not invoke it.
-         Removed unused OnColumnChanged().
-         Now store rowViewPool and reuse DataRowView objects.
-         Optimized UpdateIndex() - avoid ArrayList. Avoid Haashtable.Rehash().
-
-2005-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataViewSettings.cs : no MonoTODO anymore.
-       * DataViewManager.cs : pass itself to new DataView() (new ctor).
-       * DataRowView.cs : GetHashCode() returns its Row's hash.
-       * DataTablePropertyDescriptor.cs : use new ctor().
-       * DataView.cs : added new ctor()s that accept DataViewManager.
-
-2005-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs, DataRowView.cs : AddNew() should not add the row to table
-         (it is still detached). So handle those rows differntly.
-         CancelEdit(), EndEdit() and Delete() propagates those events to
-         DataView (and handle row collection).
-         Eliminate "throw new Exception()".
-         Don't catch all the exception thrown in ListChanged event.
-       * DataTable.cs : made RowSorter as internal and use it in DataView.
-         no need to pass DataRow[] to .ctor().
-
-2005-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs : don't create DefaultView unless it is required. It
-         significantly improves performance. (i.e. DataView perf. is sick ;-)
-
-2005-01-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataViewSetting.cs,
-         DataViewSettingCollection.cs,
-         DataViewManager.cs : implemented basic members.
-
-2005-01-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Node.cs, DataColumnPropertyDescriptor.cs, DataTable.cs :
-         Eliminate "throw new Exception".
-
-2005-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : (set_Item) RowNotInTableExeption check should be done
-         regardless of index existence.
-
-2005-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs : use new IExpression.EvalBoolean() to avoid extraneous
-         boxing.
-
-2005-01-25  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataTable.cs: ImportRow :Do not add to rows collection if the
-       import row is in detached state.
-
-2005-01-25  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRow.cs: CopyValuesToRow : set the column value with the
-       default version of the given row.
-       * DataTable.cs: ImportRow: Copy values before adding row.
-       * DataSet.cs: AddChangedRow: Add the row to the table after
-       copying values.
-       
-       Fixes bug #67317. Patch by Ankit Jain.
-
-2005-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRowView.cs : Fixed IsEdit to reflect correct status of DataRow.
-       * DataRow.cs : Expose editing status internally.
-
-2005-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataView.cs : missing attributes.
-
-2005-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRowView.cs : implemented CreateChildView().
-
-2005-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs, DataView.cs :
-         Optimized DataView to compile only once RowFilter and Sort when 
-         those properties are set. To make it possible, extracted 
-         SortableColumn out of DataTable and added internal DataTable.Select()
-         that accepts precompiled IExpression and SortableColumns[].
-
-2005-01-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumn.cs : set_MaxLength is not allowed when it is mapped to
-         SimpleContent. (However, it is weird but it never fails when we set
-         ColumnMapping = MappingType.SimpleContent when we fhave MaxLength.)
-
-2005-01-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : more Current -> Default fixes. Check if it should throw
-         VersionNotFoundException. Patch by Ankit Jain.
-
-2005-01-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : Default selects the right version for the current
-         state of the row. Current is not always available. Also change
-         that for GetParentRow(). Patch by Ankit Jain.
-
-2005-01-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs : CopyColumn() should copy AutoIncrement after
-         DefaultValue, or it will raise an error in some cases.
-
-2005-01-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ConstraintCollection.cs : Add() should throw ArgumentException when
-         the argument constraint fails validation.
-         DataTable.cs : set_PrimaryKey should throw ArgumentException when
-         the argument contains constraints which fail validation.
-
-2005-01-19  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataRelationCollection.cs: 
-
-       Method Remove : Donot throw exception if DataRelation argument is
-       null in DataRelationCollection.Remove method.
-
-       Method RemoveAt : Exception should be IndexOutOfRangeException if
-       row index is not in list range.
-
-       Fixes nunit failures DataRelationCollection.Remove and
-       DataRelationCollection.RemoveAt.
-
-2005-01-19  Sureshkumar T  <tsureshkumar@novell.com>   
-
-       * ConstraintCollection.cs: Donot throw exception if constraints
-       are null in AddRange method. Check for null before using the
-       argument.
-
-       fixes bug #69381.
-
-2004-01-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs,
-         XmlDataReader.cs : Check if the XmlReader (node) represents DataSet
-         or a table, reusing code block in XmlDataInferenceLoader.
-         This fixes bug #60118.
-
-2004-01-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDiffLoader.cs : Ankit Jain <radical@imt.ac.in> has a conflicting
-         patches and some good catches. Some attributes should be skipped,
-         and loaded value must be typed.
-
-2004-01-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlConstants.cs,
-         XmlDataInferenceLoader.cs, 
-         XmlDataReader.cs : use common const for http://www.w3.org/2000/xmlns/.
-       * XmlDiffLoader.cs : It was not handling attributes. Fixed bug #70961.
-
-2005-01-18  Sureshkumar T  <tsureshkumar@novell.com>
-
-       Fix for bug #66838. This patch is submitted by "Ankit Jain"
-       <radical@corewars.org> and refactored.
-
-       * DataRow.cs: Allows to set a parent row even if the row is in
-       detached state.
-
-       * DataRelation.cs: method "UpdateConstraints" is added to check
-       and create missing keys when adding a relation. This is refactored
-       approach from DataRelationCollection.Add method.
-
-       * DataRelationCollection.cs: AddCore methods of all relation types
-       are synchronized. A Check for existing constraints is
-       done. Relation is added to the list only if all checks are passed.
-
-2004-01-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumnCollection.cs : Clear() throws ArgumentException that
-         wraps thrown innerException.
-       * XmlSchemaDataImporter.cs : removed FIXMEs.
-
-2004-01-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : When serializing DataTable, BuildSchema() is passed
-         null relation collections.
-         Quick fix for XmlSerializer deserialization. It does not require
-         XML Schema included.
-
-2004-01-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs,
-         CustomDataClassGenerator.cs :
-         In DataSet class, IXmlSerializable.GetSchema() returns null.
-         In strongly-typed class, it returns schema.
-
-2004-01-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : test driver class should be excluded.
-
-2004-12-01  Miguel de Icaza  <miguel@ximian.com>
-
-       * DataView.cs: Patch from Marc Haisenko that ensures that rowCache
-       is never null.
-
-2004-11-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : generated foreign key constraint
-         construction code was creating empty child columns and thus it
-         was invalid. This fixes bug #69276 (patch by Martin Voelkle).
-
-2004-11-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : custom DataTable ctor should call
-         InitializeFields(), and those DataColumns created by that method
-         should take data type. This should fix bug #68972.
-
-2004-10-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Also clear UnhandledAttributes ArrayList before 
-         generating next attribute column schema. This fixes bug #68432.
-
-2004-10-14 Umadevi S <sumadevi@novell.com>
-        * DataTable.cs : Corrected the Clone method to use  Activator.CreateInstance so that the
-        correct subclass is returned. This fixes bug #67631
-                                                                                        
-2004-10-14 Umadevi S <sumadevi@novell.com>
-       * DataSet.cs : Corrected the Clone method to use  Activator.CreateInstance so that the  
-       correct subclass is returned. This fixes bug #67627
-
-2004-10-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : clear UnhandledAttributes ArrayList before generating
-         next element column schema. This fixes bug #68256.
-
-2004-10-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : now xs:schema contains xmlns="".
-         This fixes bug #68008.
-
-2004-10-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : DBNull attribute column should not be written as
-         empty attribute. This fixes bug #68007.
-
-2004-10-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs, XmlConstant.cs, XmlSchemaDataImporter.cs:
-         DataColumn.ReadOnly was not handled. This fixes bug #68005.
-         Attribute defaultValue was not handled too.
-
-2004-10-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs :
-         - When AllowDBNull is false on attribute DataColumn, its schema
-           should contain use="required". This fixes bug #66792.
-         - If MaxLength is set on attribute DataColumn, the mapped schema
-           type should contain maxLength facet. This fixes bug #66793.
-
-2004-10-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : For a row, when a relation is not nested, then it is
-         still output target since it won't be written as a child of its
-         parent. It fixes bug #66379.
-
-2004-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Attribute constraint field XPath must be written as
-         @blah. This fixes bug #66366.
-
-2004-09-28 Umadevi S <sumadevi@novell.com>
-       * DataRow.cs - checked for Enforceconstraints, while using indices to search for related rows
-
-2004-09-24  Sureshkumar T  <tsureshkumar@novell.com>
-
-       * DataSet.cs : Don't check constraints for dataset clear
-       * DataRowCollection.cs : check for EnforceConstraints flag 
-       before checking foriegn key constraints in Clear method
-       * DataTable.cs : Redundant checking removed in Clear method as it is
-       checked in DataRowCollection.Clear method. 
-
-
-2004-09-19  Sureshkumar T <tsureshkumar@novell.com>
-       * DataRow.cs : while deserialization of dataset, adding a current row precedes the original row.
-                      hence, adding a row cache is necessary if the original row happens to be current.
-                      fixed bug #63097
-
-2004-08-23  Martin Baulig  <martin@ximian.com>
-
-       * XmlDataInferenceLoader.cs (Driver): Make this class internal,
-       not public.
-
-2004-08-18 Umadevi S <sumadevi@novell.com>
-       * DataView.cs - Completed most of the event handling. 
-       Thanks to Punit Todi <punit_todi@da-iict.org> for implementing most of it.
-       Thanks to Boris Kirzner <borisk@mainsoft.com> for commenting and suggesting changes to the implementation.
-       * DataTable.cs - Changed Access modifiers of class/methods since it was used by DataView.
-
-2004-08-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : DataSet's ExtendedProperties were not XmlConverted.
-
-2004-08-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlConstants.cs : Added constants for "msprop" support.
-       * DataSet.cs : ExtendedProperties should be written in the schema.
-         This fixes bug #61233.
-
-2004-07-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : on serialization to XmlWriter, XmlConvert should be
-         used. There were also some culture dependency problems to write int.
-
-2004-06-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : It was not always filling relation
-         child table information correctly. This fixes bug #60742.
-
-2004-06-23 Umadevi S <sumadevi@novell.com>
-       * UniqueConstraint.cs :changed a ifdef true to ifdef NET_1_1
-
-2004-06-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Fixed ReadXml(). When ReadMode is ReadSchema and the
-         schema is inside the document element (as created in XmlWriteMode
-         .WriteSchema), it should read schema from that non-document element.
-         This fixes one case reported in bug #60470.
-
-2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : Kindly reject xml schema document as a
-         inference target. For bug #60470. (MS does not support schema
-         document inference and results in unconsistent dataset structure.)
-
-2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTableCollection.cs : reset the table's DataSet to null when
-         removing a table from this collection.
-       * DataTable.cs : When Namespace is not specified explicitly, its
-         Namespace property reflects DataSet's Namespace if exist.
-         This fixes bug #60469.
-
-2004-06-18  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * DBConcurrentcyException.cs: CRLF to LF
-       * DataViewSetting.cs: CRLF to LF
-
-2004-06-18  Gert Driesen <drieseng@users.sourceforge.net>
-
-        * DataViewSetting.cs: renamed fields to match MS.NET
-
-2004-06-18  Gert Driesen <drieseng@users.sourceforge.net>
-
-        * DBConcurrencyException.cs: fixed serialization compatibility with
-        MS.NET
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-
-       * ChangeLog : Fix for misspelled words.
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataRowCollection.cs : Removed onColumnRemoved since it is not in use.
-       
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataTable.cs :
-         - Table stores default values for columns in special default values row. 
-         It is allocated once (in NewRow).
-         - DataTable.Copy rewrited. It works with uninitialized rows for better perfomance.
-         - OnRemoveColumn has nothing to perform by now.
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataRow.cs : 
-         - Changed access of original, current and proposed indexes to internal.
-         - ColumnErrors reviewed : now column errors stored in ArrayList and allocated on demand only.
-         - Added new DataRow constructor that creates uninitialized DataRow (used in DataTable.Copy).
-         - Use DataContainer.CopyValue and default values row for faster set of default values in row.
-         - SetColumnValue become CheckValue. Now it does not changes the value, but only checks for its correctness.
-         Care about Null and DBNull values is now in DataContainer.
-         - Use DataColumn.AutoIncrementValue and GetInt64 for faster set of autoincrement value.
-         - Use Datacontainer.CopyValue and default values row to speed up CheckChildRows.
-         - Fix in CopyState : clone column errors.
-         - Removed CollectionChanged and onColumnRemoved since we are not using both of them anymore.
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataColumnCollection.cs : 
-         - Fix : Add() now delegates to Add(DataColumn).
-         - autoIncrement list holds DataColumn objects, and not just column names.
-
-2004-06-17  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataColumn.cs : 
-         - AutoIncrementValue fixes. Now AutoIncrement uses DataContainer.GetInt64 to avoid boxing.
-         - DefaultValue fixes. Default value from now on is also stored in special record in 
-         DataTable, so we're able to set default value for the column faster (typed).
-       
-       
-2004-06-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : children of non-root rows were not properly written.
-         Fixed bug #53959.
-
-2004-06-10 Umadevi S <sumadevi@novell.com>
-       * DataRelation.cs - Constructor
-       - The datatypes of the parentcolumn(s) and the childcolumn(s) should match
-
-2004-06-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : We should fill Namespace for DataTable.
-
-2004-06-04  Gert Driesen <drieseng@users.sourceforge.net>
-
-       * Constraint.cs: marked methods internal to fix public API
-       * ConstraintCollection.cs: to fix public API, use 
-       DataTable.fInitInProgress to check whether initialization 
-       of DataTable is in progress
-       * DataColumn.cs: added stubs for missing methods
-       * DataRowBuilder.cs: marked Table property internal to
-       fix public API
-       * DataSet.cs: removed extra empty destructor, marked 
-       OnMergeFailed internal to fix public API
-       * DataTable.cs: use fInitInProgress field to hold init
-       status, to match MS.NET
-       * DataView.cs: added missing attributes on IsOpen
-
-2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Use NameTable.Get() before calling LookupNamespace()
-         in XmlNamespaceManager.
-
-2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : complex table content child was not properly added
-         when it is the only one child in the parent table. Fixed bug #53959.
-
-2004-06-02  Gert Driesen <drieseng@users.sourceforge.net>
-       * DataTableTypeConverter.cs: added
-       * DataView.cs: added missing attribute on Table property
-       * DataViewManager.cs: moved attribute to correct property
-       * UniqueConstraint.cs: removed extra ReadOnly attribute from
-        IsPrimaryKey property
-
-2004-06-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : ColumnsChanged event is not required in .ctor().
-
-2004-06-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataReader.cs : type change is required before setting value
-         string to row item.
-
-2004-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Loop-break of the last fix was incorrect.
-
-2004-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : When a row has no parent row but the table has parent
-         relation(s), that row had been always ignored.
-
-2004-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : Fixed GetMappedTable() that incorrectly
-         rejected same-named tables in different hierarchy. Thanks to Boris.
-
-2004-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDiffLoader.cs : Added some Skip() that is required not to go to
-         infinite loop. Thanks to Boris for this fix.
-
-2004-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : XmlSchema elements should not be infered.
-         Thanks to Boris for this fix.
-
-2004-05-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs : serialization .ctor() should use XmlReadMode.DiffGram
-         for ReadXml(). Thanks to Boris.
-
-2004-05-27  Boris Kirzner  <borisk@mainsoft.com>
-       * DataRow.cs : 
-               - CheckReadOnlyStatus : use typed (and faster comparing).
-               - EndEdit : bug fix - do not dispose record if it holds original version.
-               - SetValuesFromDataRecord : Take care about autoincrement columns.
-               
-
-2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * MergeManager.cs : don't output debug message to Console.
-
-2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : Namespace are not imported to the table
-         structure. Thanks to Boris Kirzner for the fix.
-
-2004-05-27  Umadevi S <sumadevi@novell.com>
-         * DataRelationCollection.cs - fixed nunit test errors
-
-2004-05-27  Umadevi S <sumadevi@novell.com>
-        * DataTableCollection.cs - fixed nunit test errors
-
-2004-05-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumnCollection.cs : NullReferenceException was thrown when
-         the table was not found.
-       * DataRowCollection.cs :
-         Find() just returns null for null value under MS.NET 1.1.
-         RemoveAt() should also avoid to call AcceptChanges() like Remove().
-       * UniqueConstraint.cs : in AssertConstraint() throw ConstraintException
-         directly under MS.NET (for nunit test).
-
-2004-05-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : Setting startindex in LastIndexOf() 
-         caused problem on qualified name to get schema Field name.
-
-2004-05-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataReader.cs : Now data reader is namespace aware in all places.
-         When table's namespace is different, it entered to infinite loop.
-
-2004-05-19  Boris Kirzner  <borisk@mainsoft.com>
-       * MergeManager.cs : AdjustSchema now updates by reference new created table,
-       so in Merge you do not need to lookup for it (were unable to do this for unnamed tables).
-       Code styling.
-       
-2004-05-19  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataColumn.cs : In set_Item[int] - if autoincrement, adjust next autoincrement value.
-       * DataColumnCollection.cs : fixed parantethes.
-       * DataRow.cs : 
-               - AcceptChanges : do nothing if row state is unchanged.
-               - GetChildRows, GetParentRows  : bug fix (use correct index).
-       * DataRowCollection.cs : bug fix (compare all row's values).
-       * DataTable.cs : bug fix (use correct row version).
-       
-2004-05-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : xs:positiveInteger is mapped to ulong.
-         When content type is Mixed, text column is not required (it is
-         required only when the complex type has no particle). 
-         "Repeated element" column is also created (considering maxOccurs=0 
-         and complex content extension).
-
-2004-05-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : XmlSchemaGroupBase was not handled 
-         properly.
-
-2004-05-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : Removed unused code and extra MonoTODO.
-         Fixed relation inference to consider attribute XPath.
-
-2004-05-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumn.cs : Fixed set_Item[int]. Convert.ToInt64(DBNull.Value)
-         always fails.
-
-2004-05-19  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataColumn.cs - removed default member attribute.
-
-2004-05-19  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataColumn.cs,
-         DataColumnChangeEventArgs.cs,
-         DataColumnCollection.cs,
-         DataRow.cs,
-         DataRowCollection.cs,
-         DataTable.cs,
-         Index.cs : Data storage in the row is redesigned. Now data is stored in 
-         typed containers inside DataColumn. Row holds its versions as indexes inside
-         each of data container, accessed through the row that holds it.
-
-2004-05-19  Boris Kirzner  <borisk@mainsoft.com>
-
-       * UniqueConstraint.cs - added comment.
-       
-2004-05-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs : Don't add already-existing DataTable to
-         DataSet.
-
-2004-05-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs,
-         XmlDataInferenceLoader.cs,
-         XmlDataReader.cs,
-         XmlSchemaDataImporter.cs : XmlDecode every local name to read and
-         XmlEncode every local name to write. This should fix bug #58268.
-
-2004-05-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Implemented ignored namespaces in InferXmlSchema().
-         Supported repeated elements. Removed MonoTODOs.
-       * XmlDataInferenceLoader.cs : Design change to support ignored
-         namespace and repeated elements.
-       * XmlSchemaDataImporter.cs : Added mapping support classes.
-
-2004-05-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs :
-         Added property parent "[foo]Row" and children "Get[foo]Row" support
-         for custom DataRow classes.
-         Fixed DataColumn property accessibility (public --> internal).
-
-2004-05-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs :
-         - Put classes inside custom DataSet class.
-         - Added automatic DataRelation creation support.
-         - Added Constraints creation support. That is done separate from
-           relations, since they might be independently created.
-         - Added non-MS public DataRelation fields.
-         - Removed extraneous "DataRelation type generation" code.
-         - Fixed custom_dataset.Initialize() not to create "c" field that
-           was created more than once.
-         - Implemented AddxxxRow() that takes parameters for every column.
-
-2004-05-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : When primary key is used more than once,
-         DataRelation borked because of empty parent column name.
-
-2004-05-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : When Creating constraints with related
-         to DataRelation creation, also set PrimaryKey to the parent table.
-
-2004-05-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : 
-         Design change to add indirect table and relation structures.
-         Support for "relation" annotation for local element.
-         Support for repeatable simple element column (maxOccurs > 1).
-         Fixed handling of Nested property on DataRelation (for globally
-         annotated relation, Nested is false).
-
-2004-05-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : Added DataElement property to avoid storing every row-
-         element mapping. It stored even for nodes that should be removed.
-
-2004-05-13  Umadevi S <sumadevi@novell.com>
-
-       * RelationshipConverter.cs - Stubbed this class
-       * DataRelation.cs - added TypeConveterAttribute
-
-2004-05-13  Umadevi S  <sumadevi@novell.com>
-
-       * DataColumnCollection.cs - Added ResDescriptionAttribute
-       * DataRelation.cs - Added TypeConverterAttribute
-       * DataRelationCollection.cs - Added DefaultPropertyAttribute
-       * DataRowView.cs - Added GetHashCode method with a TODO tag
-        * DataSet.cs - Added DesignerAttribute
-       * DataView.cs - Added DesignerAttribute
-        * DataViewManager.cs - Added DesignerAttribute
-       * DataViewSetting.cs - Added TypeConverterAttribute
-       
-2004-05-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : Added XmlDataElement initialization code.
-
-2004-05-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceLoader.cs :
-         It now requires XmlDocument as input.  Improved identification of
-         DataSet element.  Removed extra lines.
-         Moved boresome design notes to bottom of the source and
-         added standalone runnable driver (not included on build).
-       * DataSet.cs :
-         Update with related to the change above.
-         WriteXml() should call Flush() after writing. This fixes bug #58327.
-       * XmlSchemaDataImporter.cs :
-         Improved indentification of DataSet element.
-
-2004-05-11  Gert Driesen (drieseng@users.sourceforge.net)
-       * DataTable: marked initStatus enum internal
-
-2004-05-09  Gert Driesen (drieseng@users.sourceforge.net)
-       * DataTable.cs: removed TypeConverterAttribute, marked RowsExist
-       methods internal
-       * DataRowView.cs: removed extra Error property
-       * DataRow.cs: reduced accessibility of CollectionChanged method 
-       to private
-       * DataColumnPropertyDescriptor.cs: made class internal
-       * DataColumn.cs: removed extra TypeConvertorAttribute
-       * ConstrainCollection.cs: marked PostEndInit method internal
-
-2004-05-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : 
-         In WriteXmlSchema(), when complex type contains simple type content
-         attributes must not added to XmlSchemaComplexType directly. It
-         causes schema compilation error.
-         DataRelation should not be output when related columns are hidden.
-
-2004-05-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataInferenceReader.cs : Added. It does InferXmlSchema() (it is
-         also expected to do ReadXml(), but I will remove that feature and
-         support column reordering).
-       * XmlSchemaDataImporter.cs : Always initialize dataset name.
-         Always set Nested and primary key for parent table.
-       * XmlDataReader.cs : Now it is used.
-         Top level element might not match to dataset name nor any table 
-         name, but still possible to read content tables.
-         Handle empty element correctly in some places.
-         Handle Fragment mode (read up XmlReader to the end).
-       * DataSet.cs : Modified InferXmlSchema() and ReadXml() to use
-         XmlDataInferenceLoader and XmlDataReader.
-
-2004-05-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs :
-         Eliminated CRLF injection.
-         More clear message in Clear().
-         Updates reflecting XmlSchemaDataImporter change.
-         Added duplicate check for XmlSerializerNamespaces in BuildSchema().
-         Don't use xmlns attribute for UnhandledAttributes (its not mandatory
-         but that depends on different behavior from ms.net).
-         Set locale also for DataTable.
-         Add xs:element only when target namespace matches to the
-         element's namespace. Otherwise, add xs:import for external namespace.
-         Put xs:sequence for dataset element's particle _only when_ actual
-         contents exist.
-
-2004-05-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataReader.cs : Added. This class will work better when our
-         schema inference and schema read engine gets improved. (It contains
-         standalone testable Driver class.)
-
-2004-05-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ForeignKeyConstraint.cs : Check step change. Existence then column
-         validity. just for tests.
-       * XmlSchemaDataImporter.cs : code simplification. reduced extraneous
-         fields.
-
-2004-05-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Ignore empty content only when output type is diffgram.
-
-2004-05-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : Modified that DataSet contains each
-         DataTable field so that each table property can access them directly.
-         (plus, modified standalone code driver code: shouldn't affect)
-
-2004-05-05  Boris Kirzner  <borisk@mainsoft.com>
-
-       * DataView.cs , DataRowView.cs : Added implementation to basic methods and properties.
-         
-2004-05-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaDataImporter.cs : 
-         SimpleContent column support.
-         Annotated relation support.
-         Top-level element is counted only when its type is complex.
-         xs:anyType is no longer treated as complex type.
-         dataset existence is mandatory now. 
-         Improved DataType and DefaultValue support.
-         Attribute namespace is properly handled now.
-         Prohibited attribute is now treated as hidden column.
-         Reject list or union simple type.
-
-         Still incomplete 1) to read relationship in some cases, 2) to 
-         determine whether an element is dataset or table, 3) thus to
-         exclude extraneous column, 4) to remove extraneous *_Id column.
-
-2004-05-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataTable.cs :
-         We had better reuse DataSet's ReadXmlSchema() and ReadXml() in
-         serialization .ctor() (thus schema read/inference should be easier).
-         DataRowSorter should consider Table's Locale.
-
-2004-05-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumnCollection.cs : We already had AutoIncrementValue(), so
-         use it instead of duplicating logic.
-
-2004-05-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ConstraintCollection.cs :
-         Use Table.CaseSensitive and Table.Locale to compare strings.
-         Duplicate constraint name exception does not occur under .NET 1.1.
-
-2004-05-04  Lluis Sanchez Gual  <lluis@ximian.com>
-
-       * XmlSchemaDataImporter.cs: Added little type check.
-
-2004-05-04  Lluis Sanchez Gual  <lluis@ximian.com>
-
-       * DataSet.cs: Implemented support for runtime serialization. Fixed support
-         for xml serialization.
-       * XmlDiffLoader.cs: Skip diffgram element when it is empty.
-
-2004-04-30  Umadevi S  <sumadevi@novell.com>
-       * DataColumnCollection.cs : Fixed nunit test errors, removed TODOs
-       * DataTableCollection.cs  : Tested and removed TODO
-       * TypedDataSetGeneratorException.cs : Fixed a couple of TODOs   
-
-2004-04-29  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : My previous patch unintentionally reverted Boris patch.
-
-2004-04-29  Boris Kirzner <borisk@mainsoft.com>
-
-       * UniqueConstraint.cs : Constraint columns becaomes unique after adding constraint ifand only if 
-       constraint is defined on single column.
-
-2004-04-29  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRowCollection.cs : .NET 1.1 throws InvalidConstaintException,
-         not ArgumentException (maybe changed after 1.1).
-
-2004-04-29  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : When Column was added and it was AutoIncrement column,
-         it extended the item object array incorrectly.
-         (Plus tiny comment and incorrect indentation fix.)
-
-2004-04-29  Boris Kirzner <borisk@mainsoft.com>
-
-       * MergeManager.cs : added ( incomplete yet ) support for merging DataSet schema.
-
-2004-04-29  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataRow.cs : Bug fix in CopyValuesToRow().
-       
-2004-04-29  Boris Kirzner <borisk@mainsoft.com>
-
-       * UniqueConstraint.cs : There is no reason to mark constraint's columns as unique, because
-         each of the columns should not be unique, but only all the constraint's columns together.
-       
-2004-04-28  Boris Kirzner <borisk@mainsoft.com>
-       * DataRow.cs :
-         - Perfomance fixes: 
-               - Added using of list of autoIncrement columns
-               - SetColumnValue receives also DataColumn to avoid duplicate lookup in DatacolumnCollection
-         - Fix in CheckNullConstraints
-         - Fix in this[] and HasVersion() : when evaluating an expression deleted rows values can be accessed.
-         - Fix in SetColumnValue() , added CanAccess() method to avoid case of accessing internal array values berore it actually allocated.
-         - Added onColumnRemoved() method to threat column removal accurately.
-       
-       * DataRowCollection.cs :
-         - Added using of DataRow._nullConstraintViolation (for perfomance fix in EndLoadData())
-         - Added method onColumnRemoved() - calls each row's onColumnRemoved() (to ensure column removal is treated accurately)
-       
-       * DataTable.cs :
-         - Call DataRowCollection.onColumnRemoved() in OnRemoveColumn() (to ensure column removal is treated accurately)
-       
-       * DataColumnCollection.cs :
-         - Perfomance fixes :
-               - collection holds a list of its autoIncrement columns (avoids unnesessary lookup through whole collection)
-               - collection holds mapping from column names to DataColumn objects (avoids lookup through whole collection).
-               - automatic creation of column names rewrited (bug fixes + perfomance improvement)
-       
-       * DataColumn.cs :
-         - Uses autoincrement list of a table
-
-2004-04-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataLoader.cs : Even when it should ignore schema, it was 
-         infering schema.
-       * XmlSchemaDataImporter.cs : DataRelation creation support.
-         Improved "DataSet" element handing. When attributes are on the
-         element, it is not a "DataSet" element.
-         Fixed parent key column name.
-         Unique name creation is not required. Just raise an error.
-         Fill facet also for attribute types.
-
-2004-04-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataRow.cs : Null check for CheckReadOnlyStatus() and
-         CheckNullConstraints(), with some coding guideline fixes.
-         Type check should be done by Type instance comparison.
-
-2004-04-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataColumnCollection.cs : When add a column to the collection, fill
-         auto-increment column.
-
-2004-04-26  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataColumn.cs : Small perfomance fix (avoid unnesessary string concatenation).
-       
-2004-04-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CustomDataClassGenerator.cs : Added.
-       * TypedDataSetGenerator.cs : Implemented Generate().
-         Changed GenerateIdName() to call CustomDataClassGenerator.MakeSafeName
-       * XmlSchemaDataImporter.cs : Table Locale should be supplied.
-
-2004-04-25  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataTable.cs : Small perfomance fix (avoid unnesessary string concatenation).
-       
-2004-04-25  Boris Kirzner <borisk@mainsoft.com>
-
-       * Constraint.cs : Small perfomance fix (avoid unnesessary string concatenation).
-
-2004-04-23 Umadevi S (sumadevi@novell.com)
-       *  DataRow.cs: Checked BeginEdit,EndEdit,CancelEdit and Delete methods
-          - Added error handling to the above methods
-
-2004-04-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : Data should be read when mode is IgnoreSchema (well,
-         the support is incomplete yet).
-       * XmlDataLoader.cs : 
-         Reverted ReadModeSchema() argument change. XmlReadMode would be 
-         useful to handle IgnoreSchema.
-         Don't overwrite DataSetName when mode is not such kind.
-         Set Prefix and Namespace as well as DataSetName.
-         AllowDBNull looks set false by default for element column.
-         Set unique constraint as primary key when infering the table schema.
-
-2004-04-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs : 
-         Never set null string for Prefix and Namespace.
-         In InferXmlSchema() when null XmlReader is passed, just do nothing.
-         In WriteXmlSchema(string), earlier try block.
-         In BuildSchema(), try to add serialization namespaces for each
-         namespaces in DataSet/DataTable/DataColumn.
-         Removed namespace argument from WriteColumnAsElement() and don't
-         overwrite when namespace is "". This fixes bug #57330.
-       * DataColumn.cs : For Namespace and Prefix, never set null.
-
-2004-04-21  Boris Kirzner <borisk@mainsoft.com>
-
-       * XmlSchemaMapper.cs : Check for not null unique constraint in ReadXmlSchemaKeyref()
-         before creating and adding foreign key constraint and relation. 
-
-2004-04-21  Boris Kirzner <borisk@mainsoft.com>
-
-       * MergeManager.cs : In AdjustSchema() source table clone should be added
-         and not the table itself. 
-
-2004-04-21  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataSet.cs : 
-         - CaseSensitive : Additional fix (removed unnesessary assignment).
-         - CopyProperties : Do not try to copy ExtendedProperties if the collection is empty.
-
-2004-04-21  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataTable.cs : Ensure that DataSet property is not null before using it in Clear().
-         
-2004-04-20  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataTable.cs : 
-         - EndLoadData() : perfomance fix in case of null constraint violation
-           during data load (also in DataRow.cs).
-         - CaseSensitive : If DataTable belongs to DataSet it should always use
-           DataSet.CaseSensitive untill explicitly changed.
-         - CopyProperties() : do not try to copy ExtendedProperties if the collection is empty.
-         
-       * DataRow.cs :
-         - Pefromance fix in case of null constraint violation
-           during data load (also in DataTable.cs).
-         - CollectionChanged() : use correct column number after new DataColumn was added
-           (differs in case some DataColumn was previosly removed).
-         - EndEdit() - throw away  proposed values only after CheckChildRows() complete.
-
-2004-04-20  Boris Kirzner <borisk@mainsoft.com>
-
-       * DataColumnCollection.cs : Since unique constraint is added now
-         in DataColumn.SetTable() the additional creation of constraint in 
-         DataColumnCollection.Add() is redundant and causes exception - fixed.
-         
-2004-04-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataLoader.cs : Added "never add data rows" mode.
-         Removed unused code. However, it is temporary fixes to unify
-         ReadXml() and InferXmlSchema().
-       * DataSet.cs : Implemented InferXmlSchema(), though it is incomplete.
-
-         I'll create another XmlDataLoader since there are many problems
-         such that 1) it is too waste to read the entire xml into an
-         XmlDocument, 2) it does not handle attributes correctly, and 3) it
-         must handle "ignored namespaces".
-
-2004-04-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * Added XmlSchemaDataImporter.cs (new schema reader).
-       * DataSet.cs : Use XmlSchemaDataImporter (right now for DataSet only)
-         for ReadXmlSchema().
-         Let schema reading work to ReadXmlSchema().
-         Don't return ReadSchema when argument read mode was DiffGram.
-
-2004-04-15 Umadevi S (sumadevi@novell.com)
-       *  Updated Clone/Copy methods in DataSet along with Testcase
-       *  ForeignKeyConstraint.cs - special ctor implemented 
-           Logic : ParentTable in the ctor - Since only name is given (not the DataTable object), we cannot associate any DataTable or DataSet right now.  So, only possible way is to do it when AddRange() is called. The ParentTable is searched in the DataSet  to which the calling DataTable belongs. And make the calling DataTable as ChildTable. In the PostAddRange() method check is addedd to perform the assignment of parent and child data columns once the information becomes available (When AddRange is called).
-       * Changes in  ConstraintCollection.cs for the above
-        Add (Constraint) - A check is performed to see if the constraint is ForeignKeyConstraint and whether data columns  are validated.  If no, whether it is called with AddRange(), If no, an Exception is thrown. AddRange() - PostAddRange() is called on the ForeignKeyConstraint object with the "table" as argument. Thanks to Deepak for the patch.
-       
-
-2004-04-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSchemaMapper.cs : set parent key and foreign key info to 
-         DataRelation when reading refkey constraints.
-         Supply constraint name for fkey.
-
-2004-04-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDataLoader.cs : Don't overwrite existing DataSetName. When read
-         mode is Auto, just ignore the schema if there is already schema info.
-       * DataSet.cs : Similarly ignore schema info for XmlReadMode = Auto.
-
-2004-04-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs :
-         - In MS output, XML declaration looks to have standalone decl (yes).
-         - ReadXml(reader) just calls to ReadXml(reader, XmlReadMode.Auto)
-         - ReadXml(reader, mode)
-           1) return originally specified mode, instead of (always) Auto. 
-           2) Check empty reader.
-           3) Check diffgram schema and content separately.
-           4) When diffgram exists, remaining (the same-level) contents 
-              won't be consumed. 
-           5) Similar fact should be applied, but somewhat different. 
-              InferSchema and IgnoreSchema just skips, Fragment reads both
-              schema and content, others just reads schema.
-         - Removed unused code.
-       * XmlDataLoader.cs :
-         - Read() should skip in some ReadMode.
-         - Don't compare schema element name as case-insensitive (well,
-           should schemas be checked here?)
-         - Avoided BuildDocument() not to create confusing DataSet
-           document element.
-         - Don't add any tables when reader has single element.
-       * XmlDiffLoader.cs :
-         When target table was not found, MS.NET doesn't raise an error.
-       * XmlSchemaMapper.cs :
-         When XmlSchema.Read() left xml reader at </xs:schema>, read once.
-
-2004-04-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataSet.cs :
-         - InferXmlSchema(): Throw explicit NotImplementedException now.
-         - Don't put XML declaration everywhere. Write just for filename arg.
-         - xmlns="" should not be written. Maybe WebService problem is 
-           because default namespace is overwritten. This patch will keep
-           the WS problem away and actually fixes some unit tests (i.e. use
-           explicit String.Empty for null namespace in WriteStartElement()).
-         - MoveToContent() should always be called, not only when 
-           LocalName="xml". It will ignore prolog (DTD, PI, comment etc.).
-         - Even XmlReadMode is DiffGram, reader might not be "diffgram"
-           element. As to MSDN, diffgram does not contain schema.
-
-2004-04-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataTable.cs: made _initStatus private so that System.Data is CLS
-       compliant.
-
-2004-04-13 Umadevi S   <sumadevi@novell.com>
-       *  UniqueConstraint.cs:
-       *  ConstraintCollection.cs:
-       *  DataTable.cs:
-       - Implemented a Constructor for UniqueConstraint.cs
-       - Used  EndInit on DataTable  to call a delegate which adds the
-         constraints passed to the most recent call of AddRange().Used
-         AddRange() on ConstraintCollection to check whether
-         DataTable.BeginInit has occurred.  If yes, save the argument
-         constraint collection passed, then return.  If no, Check whether the
-         constraints are of type UniqueConstraint and initialized with the
-         special constructor  If yes Initialized the table property of this
-         UniqueConstraint object with table assosciated with the current
-         instance of ConstraintCollection class.
-
-2004-04-07  Marek Safar  <marek.safar@seznam.cz>
-
-       * Constraint.cs: changed ClsCompliant to CLSCompliant, build fix.
-
-2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * Constraint.cs:
-       * DataColumnCollection.cs:
-       * DataRelationCollection.cs:
-       * DataRowCollection.cs:
-       * DataTableCollection.cs:
-       * InternalDataCollectionBase.cs:
-       * Node.cs: CLS compliance for System.Data. Patch by Gert Driesen.
-       Fixes bug #56557.
-
-2004-04-05  Jackson Harper  <jackson@ximian.com>
-
-       * DataTable.cs: Add rows to the row list if there is no filter.
-       
-2004-03-31  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * DataColumn.cs : Setting Caption to null sets it to the empty string
-       (ms.net behaviour, testcase is in DataColumnTest).
-       
-       * DataRow.cs : Evaluate DataColumn.Expression when such a column's
-       value is requested.
-
-2004-03-30 Lluis Sanchez Gual <lluis@ximian.com>
-
-       * DataColumn.cs: In Expression setter, set the expression member even if 
-         it is an empty string.
-       * DataSet.cs: Support serialization of byte[] columns.
-       * XmlDataLoader.cs: Support deserialization  of Guid columns. 
-         Set MappingType.Attribute to columns infered from attributes.
-
-2004-03-29  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * ExpressionElements.cs : remove
-       * DataColumn.cs, DataRelationCollection.cs, DataTable.cs :
-       Integration of new Mono.Data.SqlExpressions classes used in
-       DataTable.{Select, Compute}.
-       Fixes bug #55503 and lots of failures in DataTableTest.cs.
-
-2004-03-28  Juraj Skripsky <juraj@hotfeet.ch>
-
-       * Index.cs: Simple fix in ComparePartialRowNonUnique.
-       This fixes bugs #56129 and #56014.
-
-2004-03-25 Lluis Sanchez Gual <lluis@ximian.com>
-
-       * DataSet.cs: In WriteXml (string filename, XmlWriteMode mode), close the
-         stream after writing the dataset. This fixes bug #52581.
-         Also added several writer.Close into finally blocks, so writers are properly
-         closed in case of an exception.
-
-2004-03-12  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
-
-       * Constraint.cs: DO NOT USE the consts scheme if types can be referenced directly!
-       * DataColumn.cs: DO NOT USE the consts scheme if types can be referenced directly!
-       * ColumnTypeConverter.cs: Added stub
-       * DefaultValueTypeConverter: Added stub
-       * ConstraintConverter.cs: Added stub
-
-2004-03-04 Eran Domb <erand@mainsoft.com>
-
-       * XmlDataLoader.cs : Xml reading reviewed. Added support for additional xml formats as described
-       in MS.NET documentation (missing DataSet element etc).
-
-2004-03-04 Eran Domb <erand@mainsoft.com>
-
-       * Node.cs : Added.
-       * Index.cs : Rollback last changes.
-       
-2004-03-03  Atsushi Enomoto <atsushi@ximian.com>
-
-       * Index.cs : justa build fix.
-
-2004-03-03 Eran Domb <erand@mainsoft.com>
-       
-       * Index.cs : Added.
-       * Constraint.cs, ForeignKeyConstraint.cs, UniqueConstraint, ConstraintCollection.cs, DataColumn.cs,
-       DataRow.cs, DataRowCollection.cs, DataSet.cs, DataTable.cs : Changes made for using indexes on tables.
-       This changes made for performance improvement.
-
-2004-02-08 Eran Domb <erand@mainsoft.com>
-
-       * XmlSchemaMapper.cs : Read columns is they were written as SimpleContent or as Attributes.
-
-2004-02-08 Eran Domb <erand@mainsoft.com>
-
-       * DataSet.cs: Fix some bugs in ReadXml().
-
-2004-02-04 Lluis Sanchez Gual <lluis@ximian.com>
-
-       * DataSet.cs: Added missing method that broke the build.
-
-2004-02-04 Eran Domb <erand@mainsoft.com>
-
-       * DataRowCollection.cs (InsertAt): Add a check for null row. Replace check of IndexOf with RowId for
-       better performance.
-       * DataSet.cs (GetTableSchema) : Add supprot for simple content columns. Change the condition for a case
-       when all column are attributes (elements count is 0), we still want to add the relations. No relations
-       can be on simple contents.
-       (AddUniqueConstraints) Check that the column of the constraint are not hidden.
-       (AddForeignKeys) Check that the relation has constraints attach to it.
-       * XmlConstants.cs : Added constant.
-
-2004-02-04 Eran Domb <erand@mainsoft.com>
-       
-       * DataSet.cs : GetSchemaSerializable() return null and not BuildSchema().
-       DoWriteXmlSchema calls BuildSchema ().
-
-2004-02-04 Lluis Sanchez Gual <lluis@ximian.com>
-
-       * DataRow.cs: Added SetOriginalValue(), which is used to set the original
-         value of a column.
-       * DataRowCollection.cs: In InsertAt(), perform the correct checks and
-         attach the row.
-       * DataSet.cs: Fixed method GetChanges(): Parent rows of modified rows must
-         also be added to the dataset.
-         In WriteTable(), do not write unchanged rows when writing the original
-         version of the table.
-         Added WriteIndividualTableContent(), for writing the contents of a single
-         table.
-         Changed BuildSchema and related methods, so it can generate a schema for
-         any set of tables, not just the tables of the dataset (needed for 
-         single datatable serialization).
-       * DataTable.cs: Implemented serialization constructor and GetObjectData method.
-         Also implemented some ReadXmlSchema methods.
-       * XmlDiffLoader.cs: Read and process the xml document directly from XmlReader,
-         instead of loading the full dataset in an XmlDocument. It is faster and
-         saves memory. Also fixed several problems when generating the changes.
-       * XmlSchemaMapper.cs: Support reading schemas for single tables (used by
-         table serialization).
-
-2004-02-02 Eran Domb <erand@mainsoft.com>
-
-       * DataSet.cs : Add indentation to the xml serialization only if we create the XmlWriter.
-       Add the namespace attribute even if namespace is an empty string for inteoperability with MS.NET.
-       * DataTable.cs (NewRow): Create only one DataRowBuilder.
-       Initiate new row with row id -1.
-       * DataRow.cs : Add RowId property.
-       * DataRowBuilder.cs : Add _rowId member.
-       * DataRowCollection.cs (Add) : Use the RowId property of the new row to check if it is already exists in the collection.
-
-2004-01-26 Eran Domb <erand@mainsoft.com>
-
-       * XmlConstants.cs : Added some constants.
-       * DataColumn.cs : Added a method to retrive AutoIncrement value.
-       * XmlDataLoader.cs : Set the value of the foriegn key column, according to the value of the
-       parent table column.
-       * XmlDiffLoader.cs : Convert the value comming from the xml.
-       * XmlSchemaMapper.cs (Read) : Set the DataSet namespace.
-        (ReadXmlSchemaSequence) : Change the logic that decides if this element is a column or a table.
-        (ReadXmlSchemaElement) : Set the locale of the dataset.
-        (ReadColumn) : Set the column type. Find if the column is AutoIncrement.
-        (GetColumnType) : New method to get the column type from the attribute value.
-        (ReadXmlSchemaUnique) : Improve parsing of XPath. Set the constraint as a PK if needed,
-        and add the constraint to the table.
-        (ReadXmlSchemaKeyref) : Improve parsing of XPath. Create the FK constraint and add it to
-        the table.
-       * DataSet.cs : Improving writing of unique constraints, and foriegn key constraint. Givving them the correct names.
-        Writing more information to the schema for interoperability with ms.net.
-        Improve diffgarm writing mode.
-        
-
-2004-01-21 Atsushi Enomoto <atsushi@ximian.com>
-
-       * TypedDataSetGenerator.cs : Implemented GenerateIdName().
-
-2004-01-21 Eran Domb <erand@mainsoft.com>
-
-       * XmlDataLoader.cs (AddRowToTable) : Give thre new relation correct name.
-       Do not set the child column to be AutoIncrement.
-       Create the new column for the relation as MappingType.Hidden so they will not be serialized
-       when writing the dataset to xml.
-
-2004-01-20 Atsushi Enomoto <atsushi@ximian.com>
-
-       * Added missing TypedDataSetGenerator.cs.
-
-2004-01-08 Eran Domb <erand@mainsoft.com>
-
-       * XmlSchemaMapper.cs : Fix a bug. Check if table already in DataSet before adding it.
-       * DataSet.cs (ReadXml) : Fix bugs. Read correctly the xml file with XmlReadMode of DiffGram, 
-       InferSchema, ReadSchema and IgnoreSchema.
-       * XmlDataLoader.cs : All modes use the same logic.
-       * XmlDiffLoader.cs : Adding BuildXmlDocument method to the class.
-
-2004-01-06 Eran Domb <erand@mainsoft.com>
-
-       * DataRelationCollection.cs : Use IndexOf in indexer.
-       * DataSet.cs : Adding support for WriteXml with diffgram. Code style changes.
-       * XmlDataLoader.cs : Set the DataSet.enforceConstraints to false before loading the tables.
-       * XmlDiffLoader.cs : Reading nested tables.
-       * XmlSchemaMapper.cs : Reading the relation.
-       * XmlConstants.cs : Adding some constants.
-
-2004-01-05  Jackson Harper <jackson@ximian.com>
-
-       * DataView.cs: Set readonly property of property descriptor. This
-       fixes bug #52598.
-       
-2004-01-01  Sanjay Gupta <gsanjay@novell.com>
-
-       * DataRelationCollection.cs : Fixed incorrect generation of default 
-         Relation name.
-       * DataSet.cs : Added missing functionality in WriteXml().
-        * XmlConstants.cs : Added new constants.
-2003-12-27  Atsushi Enomoto <atsushi@ximian.com>
-
-       * DataSet.cs : Fixed incorrect WriteXml() signature.
-
-2003-12-18  Jackson Harper <jackson@ximian.com>
-
-       * DataView.cs: Implement AddNew, Delete, and OnListChanged.
-       
-2003-12-17  Atsushi Enomoto <atsushi@ximian.com>
-
-       * DataSet.cs, XmlDataLoader.cs : Table name should be encoded before
-         they take shape of xml. This fixed bug #52240
-
-2003-12-16  Tim Coleman <tim@timcoleman.com>
-       * KeyRestrictionBehavior.cs:
-               New stubs added for .NET 1.2
-       * DataTable.cs:
-               Changes for 1.2
-
-2003-12-08 Eran Domb <erand@mainsoft.com>
-       * DataColumn.cs (Expression) : Validate the expression.
-       
-       * DataRelationCollection.cs (IndexOf) : Added new method sensetive to case differences in relation name.
-       (Contains, IndexOf, this[], Add) : Call new IndexOf when needed.
-       
-       * DataRow.cs (this[]) : Fix the condition for throwing RowNotInTableException.
-       (RejectChanges) : Detach row when state was Added.
-       (CollectionChanged) : Fix a bug.
-       
-       * ExpressionElement (ValidateExpression) : Fix a bug.
-       
-       * ForeignKeyConstraint.cs (AssertConstraint) : Added implementation. Check all rows from child table have
-       a parent row in the parent table.
-       (_validateColumns) : Fix bugs.
-       
-       * MergeManager.cs (AdjustSchema) : Fix a bug.
-       
-       * XmlDataLoader.cs (ReadModeInferSchema) : Change implementation. Now we can read nested xml, and we generate the relations
-       between the tables.
-
-2003-11-30 Eran Domb <erand@mainsoft.com>
-       * DataColumnCollection.cs (this[string name]) : Use IndexOf to find the column.
-       (Add) : Find if the new column name is the same as the one found in IndexOf.
-       (IndexOf) : New method.
-       (Contains) : Use new IndexOf.
-       (IndexOf) : Use new IndexOf.
-       
-       * DataRelationCollection.cs (DataRelationCollection.AddCore) : Add The Relation to the collection.
-       (DataSetRelationCollection.AddCore) : First add the UniqueConstraint.
-       
-       * DataRow.cs (this[int columnIndex, DataRowVersion version]) : Change exceptions.
-       (Delete) : Detach row if the RowState was Added.
-       (GetChildRows) : Get the array form the ChildTable.
-       (GetParentRows) : Get the array from the ParenTable.
-       
-       * DataRowCollection.cs (Remove) : Check if row state is Detached to avoid exception.
-       
-       * DataSet.cs (IXmlSerializable.ReadXml) : Do not call MoveToContent and ReadEndElement - the XmlSerializationReader does it.
-       
-       * DataTable.cs (PrimaryKey) : Fix bugs.
-       (Compute) : First call Select. Then create ExpressionAggregate to aggregate the Select result.
-       
-       * DataTableCollection.cs (Add) : Fix a bug.
-       
-       * ExpressionElement.cs (ValidateExpression) : Turning ValidateExpression to static.
-       (Result) : Added new interface to AggregateExpression that get DataRow[] as a param.
-       Some code style changes (tab instead of whit spaces, alignment, etc...).
-       
-       * ForeignKeyConstraint.cs (_validateColumns) : Throw correct exception.
-       
-       * MergeManager.cs (AdjustSchema) : Fix a bug.
-       
-       
-
-2003-11-26  Miguel de Icaza  <miguel@ximian.com>
-
-       * DataSet.cs: Add a few more missing methods, code style updated
-       to Mono style.
-
-2003-11-26  Tim Coleman <tim@timcoleman.com>
-       
-       * ConflictOptions.cs DataAdapterException.cs DataTableReader.cs
-       * DbMetaData.cs FillOptions.cs IDataReader2.cs IDataRecord2.cs
-       * IDataUpdatableRecord.cs IDbAsyncCommand.cs IDbAsyncConnection.cs
-       * IDbExecutionContext.cs IGetTypedData.cs ISetTypedData.cs
-       * LoadOption.cs OperationAbortedException.cs ResultSetOptions.cs
-       * ResultSetSensitivity.cs StatementCompletedEventArgs.cs 
-       * StatementCompletedEventHandler.cs UpdateOptions.cs:
-               New classes added for NET_2_0
-       * DBConcurrencyException.cs DataRelation.cs DataSet.cs DataTable.cs
-       * DataTableCollection.cs DataView.cs ForeignKeyConstraint.cs:
-               Modifications to add new NET_2_0 functions
-
-2003-11-25  Tim Coleman <tim@timcoleman.com>
-       * IDataSources.cs:
-               New 1.2 class added
-
-2003-11-21  Pedro Martinez Julia  <yoros@wanadoo.es>
-
-       * DataRow.cs: Detached row can be accesible (new rows from data
-       table are detached). Closes but #51263.
-
-2003-11-19  Eran Domb  <erand@mainsoft.com>
-       * DataRow.cs : Throw exceptions if Row is Detached. 
-       (EndEdit) : Check that we are not in middle of ChangeEvent.
-       (AcceptChanges) : Detach the row.
-       
-       * DataRelation.cs : throw correct exception.
-       *UniqueConstraint.cs : throw correct exception.
-       
-
-2003-11-09  Pedro Martinez Julia  <yoros@wanadoo.es>
-
-       * DataRow.cs: Use RemoveInternal instead of Remove because the last
-       one uses Delete and AcceptChanges.
-
-       * DataRowCollection.cs: When removing, Delete and AcceptChanges
-       method from the row are called. Added an internal method that will
-       be used by DataRow to "physically" remove the row from the list.
-
-2003-11-09  Pedro Martinez Julia  <yoros@wanadoo.es>
-
-       * DataRowCollection.cs: To follow the specification: Remove and
-       RemoveAt should remove the row. But needed to call DeletingDataRow
-       to prepare the deleting.
-
-       * DataRow.cs: Don't call DeletingDataRow when it is called by the
-       method Table.Rows.Remove.
-
-2003-11-09  Pedro Martinez Julia  <yoros@wanadoo.es>
-
-       * DataRowCollection.cs: Make the row be deleted by itself. If not,
-       it fails because we need to call OnRowDeleting and OnRowDeleted. It
-       is full implemented inside DataRow.
-
-2003-11-05  Eran Domb  <erand@mainsoft.com>
-       * DataView.cs (ctor) : Changing default RowStateFilter to CurrentRow.
-
-2003-11-04  Eran Domb  <erand@mainsoft.com>
-       * DataRow.cs (CheckChildRows) : Improving the implementation - checking child for all FK, and not
-       on all Relations.
-       (GetChildRows) : Adding some checks.
-       (GetParentRows) : Adding some checks. Fix a bug in implementation.
-       (SetParentRow) : Added implementation.
-       
-       * DataRowCollection.cs (Add) : Added more checks on the row added to the collection.
-       * DataTable.cs (Copy) : Set the During Loading flag to save unnecessary assertions.
-       * ForeignKeyConstraint.cs (AssertConstraint) : Fixing bugs in implementation. Checking for DBNull values in the row.
-       * MergeManager.cs : Check that the target table is not null.
-
-2003-10-27  Eran Domb  <erand@mainsoft.com>
-       * DataColumn.cs (DefaultValue) : Changing null value to DBNull. Checking that the type of the new default value 
-       can be converted to the column type.
-       
-       * DataRelationCollection.cs (AddCore) : Give the new FK the name of the relation.
-       
-       * DataRow.cs (EndEdit) : Check if we need to validate the constraints.
-       (GetParentRows, GetChildRows) : Checking that the row has the wanted version, before accessing the row's value.
-       
-       * DataRowCollection.cs (Add) : Fixing a bug. 
-       (Clear) : Before clearing the array check that there is no violation of FK constraint.
-       
-       * DataSet.cs (Prefix) : If value is null chage it to empty string.
-       (GetXml) : Removing the Processing Instructions from the xml string as in MS ADO.NET.
-       
-       * ExpressionElement : Adding support for IN expresion.
-       
-       * DataTable (CopyConstraints) : New method that copy the tables constraints to the copy table.
-       (Select) : Adding support for DataViewwRowState.
-       
-       * ForeignKeyConstraint.cs (AssertConstraint) : Adding implementation.
-       
-       * MergeManager.cs (MergeRow) : Fix bugs.
-       
-2003-10-27  Eran Domb  <erand@mainsoft.com>
-       * DataRow.cs (SetColumnValue): Donot check null value when in midle of loading data.
-       check null values when ending loading data.
-       
-       * DataSet.cs (RejectChanges) : Imlementation.
-       (Prefix) : If prefix was changed fire event. Check that the prefix is not null - if null, 
-       change it to empty string.
-       
-       * DataTable.cs (BeginLoadData, EndLoadData) : Impemantation.
-       
-2003-10-22  Eran Domb  <erand@mainsoft.com>
-       * MergeManager.cs : Fixing bugs. Adding check for PrimaryKey matching.
-       
-       * ConstraintCollection.cs (RamoveAt): Change implemntation.
-       
-       * DataTableCollection (CanRemove): Removing cast to Constraint.
-
-2003-10-22  Eran Domb  <erand@mainsoft.com>
-       * DataRelationCollection.cs (AddCore): The unique constraint was added even if the createConstraints flag was false.
-       (Clear): The collection was cleared without removing the relation from the parent and child tables.
-       
-       * DataSet.cs (Copy, Clone): The Relations of the DataSet were not copy.
-       (HasChanges, Reset): Imlementation.
-       
-       * DataTable.cs (HasErrors): There is no flag for errors, instead the table ask her row if they have any errors.
-       This is because the we do not no when to turn off the flag.
-       (Locale): Changing implementation to behave like ADO.NET.
-       (AcceptChanges): Fix bug.
-       (Clear): Check that this table is not referenced from a foreign key constraint.
-       (Copy): Do not try to access a deleted row.
-       (CopyProperties): Copy the PrimaryKey.
-       (GetChanges, ImportRow): Implementation.
-       (LoadDataRow): Adding implementation if the table has PrimaryKey.
-       (ToString): Changing implementation to behave like ADO.NET.
-       
-       * UniqueConstraint.cs (AssertConstraint): support for Multiple DataColumns in the constraint.
-       
-       * DataRow.cs (Ctor): In the constructor we initiate the current array, but we should initiate only the proposed array for new rows.
-       (HasErrors): Implementation.
-       (Delete): Added checking for child rows of the deleted row.
-       (EndEdit): Added checking for child row and firing events.
-       (GetColumnError): Added a check that the method will not return null, as in ADO.NET(an empty string is returned).
-       (GetColumnsInError): Added a check for null values in column error.
-       (HasVersion): Added special treatment for special RowState.
-       (CollectionChanged): More checks to avoid NullReferenceException.
-       
-       * DataRowCollection.cs (Remove): Fix a bug.
-
-
-2003-10-01  Duncan Mak  <duncan@ximian.com>
-
-       More patches from Eran Domb <erand@mainsoft.com>.
-
-       * MergeManager.cs: New file.
-
-       * DataRelationCollection.cs (AddCore): Check that a
-       UniqueConstraint is already exists. It loops over the Relations
-       instead of the Constraints.
-       (Add, AddCore): The relation was added twice.
-
-       * DataSet.cs (Merge, GetChanges, HasChanges): Implemented.      
-
-2003-09-30  Duncan Mak  <duncan@ximian.com>        
-
-       Patches from Eran Domb <erand@mainsoft.com>.
-
-       * DataRelation.cs (constructor): When the name of the relation is
-       null, it should return an empty, not "Relation".
-       
-       * DataRow.cs (AcceptChanges): Added special case for
-       RowState.Detached.
-       (CancelEdit): Set editing flag to false.
-       (IsNull): Check that the value is DBNull.
-
-       * DataRowCollection.cs (Add): There was no check that the table of
-       the collection is owned by a DataSet.
-
-       * DataSet.cs (OnMergeFailed): Added.    
-
-       * UniqueConstraint.cs (AssertConstraint): There was no check that
-       values in the row are not null, where it is a primary key
-       column. Also check that the row has a proposed version, if not,
-       get the current version when we compare the rows.
-
-2003-09-25  Duncan Mak  <duncan@ximian.com>
-
-        Patches from Eran Domb <erand@mainsoft.com>.
-
-       * DataColumn.cs (Unique): Implemented.
-       
-       * DataTable.cs:
-       * ConstraintCollection.cs:
-       * ForeignKeyConstraint.cs (_ensureUniqueConstraintExists): Fixes
-       an Exception thrown. Details:
-       http://lists.ximian.com/archives/public/mono-devel-list/2003-September/002130.html
-       
-       * DataRowCollection.cs (Add): There is no checking that there is
-       no violation of the unique constrains.
-
-       * UniqueConstraint.cs (AssertConstraint): There is no checking on
-       all columns in the constraint.
-
-       * DataTableCollection (Add): Correctly throw an Exception, more
-       details here:
-       http://lists.ximian.com/archives/public/mono-devel-list/2003-September/002117.html
-       (Remove, RemoveAt): Implemented.
-
-2003-07-31  Duncan Mak  <duncan@ximian.com>
-
-       * DBConcurrencyException.cs: Added new NET_1_1 no-param constructor.
-
-2003-07-25  Ravi Pratap  <ravi@ximian.com>
-
-       * DataRelation.cs (OnPropertyChanging): Calling the 'Invoke'
-       method on a delegate is disallowed - fix this.
-
-2003-07-22  Lluis Sanchez Gual  <lluis@ximian.com>
-
-       * DataSet.cs: Implemented IXmlSerializable interface. Added basic support for
-         xml serialization. Modified method of writing schema. Now it creates
-         a XmlSchema object and serializes it using XmlSerializer.
-       * XmlConstants.cs: Added constants for data type names.
-       * XmlDataLoader.cs: Fixed deserialization of data. Now converts data to the
-         type specified in the column.
-
-2003-04-20  Alan Tam <Tam@SiuLung.com>
-
-       * DataRelationCollection.cs: Fix a bug that prevent relations
-       from being added via DataSet.
-
-2003-04-12  Ville Palo <vi64pa@kolumbus.fi>
-
-       * UniqueConstraint.cs: one tiny fix.
-       
-2003-04-05  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataTable.cs: Remove UniqueConstraints when adding new ones
-       
-2003-04-04  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataColumnCollection.cs: Little 'case sensitive' fix
-       
-2003-04-04  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataRow.cs: AutoIncrement handling to Constructor
-       * DataRowCollection.cs: This doesnt need anymore AutoIncrements
-       
-2003-03-27  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataTable.cs: Some fixes to PrimaryKey etc...
-       * UniqueConstraint.cs: Little clean up
-       
-2003-03-27  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataTable.cs: Tiny fix to ToString () -method
-       
-2003-03-27  Ville Palo <vi64pa@kolumbus.fi>
-
-       * ConstraintCollection.cs: Little fix.
-       * DataColumn.cs: Added new internal method SetUnique()
-       * UniqueConstraint.cs: some little fixes
-       
-2003-03-26  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataRowCollection.cs: Bugfixes, implementation,...
-       
-2003-03-26  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataColumn.cs: If DataType if set to something else than short, int
-       or long and AutoIncrement is true, AutoIncrement is must set to false.
-       
-2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataRow.cs:
-       (BeginEdit): fixed array bound problem when a column has been added.
-       (EndEdit): just assign proposed to current as proposed is set to null.
-       This also fixes another array boudn problem.
-
-2003-03-21  Alan Tam <Tam@SiuLung.com>
-
-       * DataRow.cs: Fixed problems in accessers, BeginEdit, CancelEdit,
-       EndEdit and AcceptChanges to act correctly according to DataRowState
-       and DataRowVersion.
-       * DataRowCollection.cs: Call AttachRow and DetachRow when a row is
-       attached and detached from the collection.
-
-2003-03-20  Alan Tam <Tam@SiuLung.com>
-
-       * DataColumn.cs: Store empty string for Expression when null is passed in.
-       Classes generated by XSD.exe passes null by default.
-
-2003-03-16  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataColumnCollection.cs: Tiny clean up
-
-2003-03-16  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataColumn.cs: little fixes.
-       * DataColumnCollection.cs: Lots of little fixes and improvments.
-       
-2003-03-12  Alan Tam <Tam@SiuLung.com>
-
-       * DataSet.cs: Fixed a bug that the file written does not close correctly.
-
-2003-03-08  Alan Tam <Tam@SiuLung.com>
-
-       * DataRelationCollection.cs: Removed the mis-overridden methods
-       * DataRow.cs: Fixed an attribute
-       * DataSet.cs: Fixed the modifiers
-
-2003-03-06  Aleksey Demakov <avd@openlinksw.com>
-
-       * DataTableCollection.cs: The Contains (string name),
-       IndexOf (string name) methods, and item[string name] indexer
-       now behave more like .NET with respect to case-sensitivity.
-       That is if there is an exactly matching item then this one is used.
-       If there is only one item differing in case then it used.
-       If there are more than one item differing in case then
-       Contains returns false, IndexOf returns -1, and item[]
-       throws an ArgumentException.
-
-2003-02-28  Ville Palo <vi64pa@kolumbus.fi>
-
-       * ExpressionElement.cs: More implementation. 
-       
-2003-02-28  Alan Tam <Tam@SiuLung.com>
-       * DataSet.cs: Changed WriteTable so that it now calls the newly written
-       WriteObjectXml to direct the call to the respective XmlConvert method.
-       This fixes the wrong format written to XML files of bool, float,
-       double, DateTime and TimeSpan types.
-
-2003-02-25  Alan Tam <Tam@SiuLung.com>
-
-       * DataRelation.cs: Added SetDataSet for DataSetRelationCollection to use.
-       * DataRelationCollection.cs: Implemented AddRange and Contains.
-       Implemented AddRange, Clear, List and RemoveCore for DataSetRelationColletion.
-       Implemented AddCore, List and RemoveCore for DataTableRelationCollection.
-       Reimplemented most Add methods to eliminate duplicated checks.
-       Centralized RelationName generation procedure in GetNextDefaultRelationName.
-
-2003-02-25  Alan Tam <Tam@SiuLung.com>
-
-       * DataColumn.cs: Fixed wrong storage representation of Expression
-       (using empty string instead of null) so that ToString() returns nothing.
-       * DataColumnCollection.cs: Reimplemented GetNextDefaultColumnName so that
-       auto column naming now works as expected. Reimplemented some Add methods
-       to eliminate code duplication.
-
-2003-02-19  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataTable.cs: DataTable.CaseSensitive follows parent 
-       DataSet.CaseSensitive property if DataTable.CaseSensitive has never
-       been changed directly from DataTable
-       
-2003-02-19  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataSet.cs: When CaseSensitive property is changed all of the Tables
-       of DataSet have to change too
-       
-2003-02-19  Daniel Morgan <danmorg@sc.rr.com>
-
-       * InternalDataCollectionBase.cs: revert change to field
-       to fix build
-       
-       * DataViewManager.cs
-       * DataView.cs
-       * DataTable.cs
-       * DataSet.cs: commented use of DesignerAttribute
-       because it broke the build.  According to MSDN,
-       DesignerAttribute does not have a zero-argument constructor
-
-2003-02-18  Ville Palo <vi64pa@kolumbus.fi>
-
-       * DataColumnCollectin.cs: Little fix for indexer and case sensitivity
-       
-2003-02-18  Alan Tam <Tam@SiuLung.com>
-
-       * DataRow.cs: Implemented GetParentRow and GetParentRows.
-       * DataSet.cs: Added stub for HasChanges, InferXmlSchema,
-                     OnPropertyChanging, OnRemoveRelation, OnRemoveTable,
-                     RaisePropertyChanging.
-       * DataTable.cs: Implemented NewRowArray.
-       * DataTablePropertyDescriptor: Fixed a modifier.
-       * InternalDataCollectionBase.cs: Fixed modifiers. Implemented SyncRoot.
-       * PropertyCollection.cs: Minor fix.
-       * ConstraintCollection.cs DataColumn.cs DataColumnCollection.cs 
-       * DataRelation.cs DataRelationCollection.cs DataRow.cs
-       * DataRowCollection.cs DataRowState.cs DataSet.cs DataTable.cs
-       * DataTableCollection.cs DataTablePropertyDescriptor.cs DataView.cs
-       * DataViewManager.cs DataViewRowState.cs DataViewSettingCollection.cs
-       * ForeignKeyConstraint.cs InternalDataCollectionBase.cs
-       * PropertyCollection.cs UniqueConstraint.cs: Added missing attributes
-       
-2003-02-08  Ville Palo <vi64pa@koti.soon.fi>
-
-       * ExpressionElement.cs: More implementation
-       
-2003-02-05  Alan Tam <Tam@SiuLung.com>
-
-       * DataSet.cs: Added framework for DataSet.Update Implemented missing 
-       methods GetSchemaSerializable, GetSerializationData, 
-       ReadXmlSerializable, ShouldSerializeRelations and ShouldSerializeTables
-       for DataSet
-       * DataTable.cs: Implemented missing methods CreateInstance and 
-       GetRowType for DataTable
-       
-2003-02-03  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: Implemented private method MapType for 
-       mapping datatypes for XmlSchema
-       
-2003-02-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataView.cs: implemented Dispose.
-
-2003-01-30  Ville Palo <vi64pa@koti.soon.fi>
-
-       * ExpressionElement.cs: Added new file. This file is for parsing
-         and DataData.Select () -methods and DataColumn.Expression -property
-       * DataTable.cs: Implemented Select(string) -method      
-       
-2003-01-28  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: One little fix to writing xml
-       
-2003-01-27  Ville Palo <vi64pa@koti.soon.fi>
-
-       * XmlSchemaMapper.cs: Some fixes.
-       * DatSet.cs: Some XmlFixes and BeginInit ()/ EndInit () -fix
-
-               
-2003-01-24  Ville Palo <vi64pa@koti.soon.fi>
-
-       * UniqueConstraint.cs: Do not set columns Unique property true 
-       as a default.
-       * ForeignKeyConstraint.cs: Add UniqueConstraint to parent Table
-       
-2003-01-18  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataTableCollection.cs: Now names new DataTable if it doesn't 
-       already have a name.
-       
-2003-01-17  Ville Palo <vi64pa@koti.soon.fi>
-
-       * XmlSchemaMapper.cs: Improvments.
-       * XmlConstaints.cs: Added more constants.
-       * DataSet.cs: Improvments of reading and writing xml
-       * DataColumn.cs: Added default values of properties.
-               
-2003-01-14  Ville Palo <vi64pa@koti.soon.fi>
-
-       * XmlSchemaMapper.cs: Some improvments
-       
-2003-01-13  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataRowCollection.cs: Added IndexOutOfRangeException
-       * DataTableCollection.cs: Added OnCollectionChanging and 
-       OnCollectionChanged events.
-       * DataSet.cs: Many fixes. Implemented Clone () and Copy () -methods
-       * DataTable.cs: Implemented Copy () and Clone () methods.
-       * XmlDataLoader.cs: some fixes.
-       * XmlSchemaMapper.cs: comments.
-       
-2003-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataColumnPropertyDescriptor.cs: store columnIndex in the .ctor.
-
-2003-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataColumnPropertyDescriptor.cs: fixed typo.
-       * DataViewManagerListItemTypeDescriptor.cs: added new internal property
-       to get the DataViewManager and removed TablePD class.
-       * DataTablePropertyDescriptor.cs: TablePD class is now this one as
-       suggested by danmorg.
-
-2003-01-06  Ville Palo <vi64pa@koti.soon.fi>
-
-       * XmlDataLoader.cs: Moved diffgram stuff to new internal class
-       XmlDiffLoader.
-       * XmlDiffLoader.cs: new class for diffgrams. Added handling of 
-       diffgr:Errors and some fixes and changed XmlReader to XPathNavigator.
-       
-2003-01-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataView.cs: made dataViewManager internal.
-       * DataViewManager.cs: use ICustomTypeDescriptor. We don't want the
-       properties of the object, but the values of the columns present in a
-       row.
-       
-       * DataViewManagerListItemTypeDescriptor.cs: implemented GetProperties,
-       which returns a PropertyDescriptorCollection. Created a new class
-       derived from PropertyDescriptor that treats Table as an object whose
-       properties are DataRowView.
-
-2003-01-04  Ville Palo <vi64pa@koti.soon.fi>
-
-       * XmlSchemaMapper.cs: Added handling for Constraints, Attributes.
-       
-2003-01-04  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataColumn.cs: ExtendedProperties is by default !null-
-       
-2003-01-04  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataColumnCollection.cs: Add (DataColumn Column) -method didn't 
-       set column's ordinal.
-       
-2003-01-02  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: 
-       * XmlDataLoader.cs: XmlReader closing fixes.
-       * XmlSchemaReader.cs: Added support for ref=
-       
-2003-01-01  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: 
-         - Added XmlReader and XmlWriter Closing.
-         - Moved ReadXmlSchema stuff to new internal class XmlSchemaMapper.
-       * XmlSchemaMapper.cs
-         - Much better way IMHO  to map xmlschema than the old one in 
-           DataSet.cs. Its, more flexible, cleaner, ...
-                       
-2002-12-29  Ville Palo <vi64pa@koti.soon.fi>
-
-       * XmlDataLoader.cs: Reading diffgrams.
-       
-2002-12-29  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataRow.cs: Little fix to indexer and DataColumnCang* trigger fixes.
-       * DataTable.cs: Added ChanginDataColumn () for triggering 
-       DataColumnChanging event
-       
-2002-12-28  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: Indentations to WriteXmlSchema () and one little fix
-       
-2002-12-28  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: Indentations to WriteXml ()
-       
-2002-12-27  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs:
-       * XmlDataLoader.cs: Moved ReadXml -stuff from DataSet.cs to new
-       class XmlDataLoader.cs
-       
-2002-12-19  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs Implemented ReadXml with XmlReadMode.ReadSchema
-       
-2002-12-18  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: Started to implement ReadXml-methods.
-       
-2002-12-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * DataSet.cs: implemented DefaultViewManager and GetList.
-
-       * DataViewManager.cs: a bit of work on IList and ITypedList needed by
-       DataList in System.Web.
-
-       * DataViewManagerListItemTypeDescriptor.cs: custom type descriptor for
-       DataViewManager.
-
-2002-12-16  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataRow.cs
-       * DataTable.cs: Fixed NullException (rollback -event)
-       * DataSet.cs: WriteXml -method does not anymore write <?xml... row.
-       
-2002-12-15  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataRow.cs:
-       * DataRowCollection.cs: Moved event triggering from DataRow to
-       DataRowCollection.
-       
-2002-12-09  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: Little fix to WriteTable () -method 
-       and DoReadXmlSchema () -method.
-       
-2002-12-06  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSet.cs: Clean up to reading xmlschema. This looks much better 
-       now (work better too), but it not working correctly yet.
-       
-2002-12-04  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataRow.cs: 
-       * DataRowCollection.cs: Added some event handlins stuff.
-       * DataSet.cs: Some fixes.
-       * DataTable.cs: Added event handlers.
-       
-2002-11-30  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataRowChangeEventArgs.cs: Implemented Action and Row properties 
-       
-2002-11-30  Ville Palo <vi64pa@koti.soon.fi>
-
-       * System.Data/DataRow.cs: Added internal property XmlDataID
-       
-2002-11-29  Ville Palo <vi64pa@koti.soon.fi>
-
-       * DataSystem.Data.DataTableCollection.cs:
-       Removed HashTable. There could be situations where DataTable
-       is added to collection before it hava TableName. So using 
-       HashTable is impossible.
-       
-2002-11-19  Carlos Guzman Alvarez <carlosga@telefonica.net>
-
-       * DataRow.cs: an object that is equal to null 
-       should be allowed to be set in this indexer too
-       to be like .NET
-
-2002-11-06  Daniel Morgan <danmorg@sc.rr.com>
-
-       * DataColumnPropertyDescriptor.cs: added file
-       
-       * System.Data/DataRowView.cs: started implementation
-       
-       * DataTable.cs: stubbed more interfaces.  Implemented
-       IListSource.GetList()
-       
-       * DataView.cs: stubbed more interfaces.  Implemented
-       some properties and methods: GetEnumerator(), 
-       ITypedList.GetItemProperties, Item indexer, CopyTo()
-
-2002-05-18  Nick Drochak  <ndrochak@gol.com>
-
-       * DataRow.cs: Fix typo.
diff --git a/mcs/class/System.Data/System.Data/ColumnTypeConverter.cs b/mcs/class/System.Data/System.Data/ColumnTypeConverter.cs
deleted file mode 100644 (file)
index f6b564a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.ColumnTypeConverter.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2004 Andreas Nahr
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       internal sealed class ColumnTypeConverter : ExpandableObjectConverter
-       {
-               [MonoTODO]
-               public ColumnTypeConverter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/CommandBehavior.cs b/mcs/class/System.Data/System.Data/CommandBehavior.cs
deleted file mode 100644 (file)
index f445da5..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Data.CommandBehavior.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-
-       /// <summary>
-       /// Specifies a description of the results and the affect on the database of the query command.
-       /// This enumeration has a FlagsAttribute that allows a bitwise combination of its member values.
-       /// </summary>
-       [Flags]
-       public enum CommandBehavior
-       {
-               Default = 0,
-               SingleResult = 1,
-               SchemaOnly = 2,
-               KeyInfo = 4,
-               SingleRow = 8,
-               SequentialAccess = 16,
-               CloseConnection = 32            
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/CommandType.cs b/mcs/class/System.Data/System.Data/CommandType.cs
deleted file mode 100644 (file)
index 72fe96d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.CommandType.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies how a command string is interpreted.
-       /// </summary>
-       public enum CommandType
-       {
-               Text = 1,
-               StoredProcedure = 4,
-               TableDirect = 512
-               
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ConflictOption.cs b/mcs/class/System.Data/System.Data/ConflictOption.cs
deleted file mode 100644 (file)
index c52fc62..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Data.ConflictOption.cs
-//
-// Author:
-//   Senganal T
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum ConflictOption
-       {
-               CompareAllSearchableValues=1,
-               CompareRowVersion=2,
-               OverwriteChanges=3
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/ConflictOptions.cs b/mcs/class/System.Data/System.Data/ConflictOptions.cs
deleted file mode 100644 (file)
index aa4b7d1..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.Data.ConflictOptions.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum ConflictOptions 
-       {
-               Optimistic,
-               SetAllValues,
-               CompareRowVersion,
-               CompareRowVersionUpdate,
-               CompareRowVersionDelete,
-               CompareAllValues,
-               CompareAllValuesUpdate,
-               CompareAllValuesDelete,
-               CompareChangedValues,
-               CompareChangedValuesUpdate,
-               CompareChangedValuesDelete,
-               OverwriteChanges,
-               OverwriteChangesUpdate,
-               OverwriteChangesDelete
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/ConnectionState.cs b/mcs/class/System.Data/System.Data/ConnectionState.cs
deleted file mode 100644 (file)
index 33d25e9..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Data.ConnectionState.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-
-       /// <summary>
-       /// Returns the current state of the connection to a data source.
-       /// This enumeration has a FlagsAttribute that allows a bitwise combination of its member values.
-       /// </summary>
-       [Flags]
-       public enum ConnectionState
-       {
-               Closed = 0,
-               Open = 1,
-               Connecting = 2,
-               Executing = 4,
-               Fetching = 8,
-               Broken = 16
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/Constraint.cs b/mcs/class/System.Data/System.Data/Constraint.cs
deleted file mode 100644 (file)
index db3bf11..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-//
-// System.Data.Constraint.cs
-//
-// Author:
-//     Franklin Wise <gracenote@earthlink.net>
-//     Daniel Morgan
-//      Tim Coleman (tim@timcoleman.com)
-//
-//
-// (C) Ximian, Inc. 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Runtime.Serialization;
-using System.Data.Common;
-
-namespace System.Data {
-       [Serializable]
-       internal delegate void DelegateConstraintNameChange (object sender, string newName);
-
-       [DefaultProperty ("ConstraintName")]
-       [TypeConverterAttribute (typeof (ConstraintConverter))]
-       public abstract class Constraint {
-               static readonly object beforeConstraintNameChange = new object ();
-
-               EventHandlerList events = new EventHandlerList ();
-
-               internal event DelegateConstraintNameChange BeforeConstraintNameChange {
-                       add { events.AddHandler (beforeConstraintNameChange, value); }
-                       remove { events.RemoveHandler (beforeConstraintNameChange, value); }
-               }
-
-               //if constraintName is not set then a name is
-               //created when it is added to
-               //the ConstraintCollection
-               //it can not be set to null, empty or duplicate
-               //once it has been added to the collection
-               private string _constraintName;
-               private PropertyCollection _properties;
-
-               private Index _index;
-
-               //Used for membership checking
-               private ConstraintCollection _constraintCollection;
-
-               DataSet dataSet;
-
-               protected Constraint ()
-               {
-                       dataSet = null;
-                       _properties = new PropertyCollection ();
-               }
-
-               [CLSCompliant (false)]
-               protected internal virtual DataSet _DataSet {
-                       get { return dataSet; }
-               }
-
-               [DataCategory ("Data")]
-               [DefaultValue ("")]
-               public virtual string ConstraintName {
-                       get { return _constraintName == null ? "" : _constraintName; }
-                       set {
-                               //This should only throw an exception when it
-                               //is a member of a ConstraintCollection which
-                               //means we should let the ConstraintCollection
-                               //handle exceptions when this value changes
-                               _onConstraintNameChange (value);
-                               _constraintName = value;
-                       }
-               }
-
-               [Browsable (false)]
-               [DataCategory ("Data")]
-               public PropertyCollection ExtendedProperties {
-                       get { return _properties; }
-               }
-
-               public abstract DataTable Table {
-                       get;
-               }
-
-               internal ConstraintCollection ConstraintCollection {
-                       get { return _constraintCollection; }
-                       set { _constraintCollection = value; }
-               }
-
-               private void _onConstraintNameChange (string newName)
-               {
-                       DelegateConstraintNameChange eh = events [beforeConstraintNameChange] as DelegateConstraintNameChange;
-                       if (eh != null)
-                               eh (this, newName);
-               }
-
-               //call once before adding a constraint to a collection
-               //will throw an exception to prevent the add if a rule is broken
-               internal abstract void AddToConstraintCollectionSetup (ConstraintCollection collection);
-
-               internal abstract bool IsConstraintViolated ();
-
-               internal static void ThrowConstraintException ()
-               {
-                       throw new ConstraintException("Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.");
-               }
-
-               bool initInProgress = false;
-               internal virtual bool InitInProgress {
-                       get { return initInProgress; }
-                       set { initInProgress = value; }
-               }
-
-               internal virtual void FinishInit (DataTable table)
-               {
-               }
-
-               internal void AssertConstraint ()
-               {
-                       // The order is important.. IsConstraintViolated fills the RowErrors if it detects
-                       // a violation
-                       if (!IsConstraintViolated ())
-                               return;
-                       if (Table._duringDataLoad || (Table.DataSet != null && !Table.DataSet.EnforceConstraints))
-                               return;
-                       ThrowConstraintException ();
-               }
-
-               internal abstract void AssertConstraint (DataRow row);
-
-               internal virtual void RollbackAssert (DataRow row)
-               {
-               }
-
-               //call once before removing a constraint to a collection
-               //can throw an exception to prevent the removal
-               internal abstract void RemoveFromConstraintCollectionCleanup (ConstraintCollection collection);
-
-               [MonoTODO]
-               protected void CheckStateForProperty ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected internal void SetDataSet (DataSet dataSet)
-               {
-                       this.dataSet = dataSet;
-               }
-
-               internal void SetExtendedProperties (PropertyCollection properties)
-               {
-                       _properties = properties;
-               }
-
-               internal Index Index {
-                       get { return _index; }
-                       set {
-                               if (_index != null) {
-                                       _index.RemoveRef();
-                                       Table.DropIndex(_index);
-                               }
-
-                               _index = value;
-
-                               if (_index != null)
-                                       _index.AddRef();
-                       }
-               }
-
-               internal abstract bool IsColumnContained (DataColumn column);
-               internal abstract bool CanRemoveFromCollection (ConstraintCollection col, bool shouldThrow);
-
-               /// <summary>
-               /// Gets the ConstraintName, if there is one, as a string.
-               /// </summary>
-               public override string ToString ()
-               {
-                       return _constraintName == null ? "" : _constraintName;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ConstraintCollection.cs b/mcs/class/System.Data/System.Data/ConstraintCollection.cs
deleted file mode 100644 (file)
index f71de4e..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-//
-// System.Data.ConstraintCollection.cs
-//
-// Author:
-//   Franklin Wise <gracenote@earthlink.net>
-//   Daniel Morgan
-//
-// (C) Ximian, Inc. 2002
-// (C) 2002 Franklin Wise
-// (C) 2002 Daniel Morgan
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data {
-       [Editor]
-       [Serializable]
-       internal delegate void DelegateValidateRemoveConstraint (ConstraintCollection sender, Constraint constraintToRemove, ref bool fail,ref string failReason);
-
-       /// <summary>
-       /// hold collection of constraints for data table
-       /// </summary>
-       [DefaultEvent ("CollectionChanged")]
-       [Editor ("Microsoft.VSDesigner.Data.Design.ConstraintsCollectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       public partial class ConstraintCollection : InternalDataCollectionBase {
-               public event CollectionChangeEventHandler CollectionChanged;
-               private DataTable table;
-
-               // Keep reference to most recent constraints passed to AddRange()
-               // so that they can be added when EndInit() is called.
-               private Constraint [] _mostRecentConstraints;
-
-               //Don't allow public instantiation
-               //Will be instantianted from DataTable
-               internal ConstraintCollection(DataTable table)
-               {
-                       this.table = table;
-               }
-
-               internal DataTable Table {
-                       get { return this.table; }
-               }
-
-               public
-               Constraint this [string name] {
-                       get {
-                               int index = IndexOf (name);
-                               return -1 == index ? null : (Constraint) List [index];
-                       }
-               }
-
-               public
-               Constraint this [int index] {
-                       get {
-                               if (index < 0 || index >= List.Count)
-                                       throw new IndexOutOfRangeException ();
-                               return (Constraint) List [index];
-                       }
-               }
-
-               private void _handleBeforeConstraintNameChange (object sender, string newName)
-               {
-                       if (newName == null || newName == "")
-                               throw new ArgumentException (
-                                       "ConstraintName cannot be set to null or empty after adding it to a ConstraintCollection.");
-
-                       if (_isDuplicateConstraintName (newName, (Constraint) sender))
-                               throw new DuplicateNameException ("Constraint name already exists.");
-               }
-
-               private bool _isDuplicateConstraintName (string constraintName, Constraint excludeFromComparison)
-               {
-                       foreach (Constraint cst in List) {
-                               if (cst == excludeFromComparison)
-                                       continue;
-                               if (String.Compare (constraintName, cst.ConstraintName, false, Table.Locale) == 0)
-                                       return true;
-                       }
-
-                       return false;
-               }
-
-               //finds an open name slot of ConstraintXX
-               //where XX is a number
-               private string _createNewConstraintName ()
-               {
-                       // FIXME: Do constraint id's need to be reused?  This loop is horrendously slow.
-                       for (int i = 1; ; ++i) {
-                               string new_name = "Constraint" + i;
-                               if (IndexOf (new_name) == -1)
-                                       return new_name;
-                       }
-               }
-
-
-               // Overloaded Add method (5 of them)
-               // to add Constraint object to the collection
-
-               public void Add (Constraint constraint)
-               {
-                       //not null
-                       if (null == constraint)
-                               throw new ArgumentNullException ("Can not add null.");
-
-                       if (constraint.InitInProgress)
-                               throw new ArgumentException ("Hmm .. Failed to Add to collection");
-
-                       //check constraint membership
-                       //can't already exist in this collection or any other
-                       if (this == constraint.ConstraintCollection)
-                               throw new ArgumentException ("Constraint already belongs to this collection.");
-                       if (null != constraint.ConstraintCollection)
-                               throw new ArgumentException ("Constraint already belongs to another collection.");
-
-                       //check if a constraint already exists for the datacolums
-                       foreach (Constraint c in this) {
-                               if (c.Equals (constraint))
-                                       throw new DataException (
-                                               "Constraint matches contraint named '" + c.ConstraintName + "' already in collection");
-                       }
-
-                       //check for duplicate name
-                       if (_isDuplicateConstraintName (constraint.ConstraintName, null))
-                               throw new DuplicateNameException ("Constraint name already exists.");
-
-                       //Allow constraint to run validation rules and setup
-                       constraint.AddToConstraintCollectionSetup (this); //may throw if it can't setup
-
-                       //if name is null or empty give it a name
-                       if (constraint.ConstraintName == null || constraint.ConstraintName == "")
-                               constraint.ConstraintName = _createNewConstraintName ();
-
-                       //Add event handler for ConstraintName change
-                       constraint.BeforeConstraintNameChange += new DelegateConstraintNameChange (_handleBeforeConstraintNameChange);
-
-                       constraint.ConstraintCollection = this;
-                       List.Add (constraint);
-
-                       if (constraint is UniqueConstraint && ((UniqueConstraint) constraint).IsPrimaryKey)
-                               table.PrimaryKey = ((UniqueConstraint) constraint).Columns;
-
-                       OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Add, this));
-               }
-
-               public
-               Constraint Add (string name, DataColumn column, bool primaryKey)
-               {
-                       UniqueConstraint uc = new UniqueConstraint (name, column, primaryKey);
-                       Add (uc);
-                       return uc;
-               }
-
-               public
-               Constraint Add (string name, DataColumn primaryKeyColumn, DataColumn foreignKeyColumn)
-               {
-                       ForeignKeyConstraint fc = new ForeignKeyConstraint (name, primaryKeyColumn, foreignKeyColumn);
-                       Add (fc);
-                       return fc;
-               }
-
-               public
-               Constraint Add (string name, DataColumn[] columns, bool primaryKey)
-               {
-                       UniqueConstraint uc = new UniqueConstraint (name, columns, primaryKey);
-                       Add (uc);
-                       return uc;
-               }
-
-               public
-               Constraint Add (string name, DataColumn[] primaryKeyColumns, DataColumn[] foreignKeyColumns)
-               {
-                       ForeignKeyConstraint fc = new ForeignKeyConstraint (name, primaryKeyColumns, foreignKeyColumns);
-                       Add (fc);
-                       return fc;
-               }
-
-               public void AddRange (Constraint[] constraints)
-               {
-                       //When AddRange() occurs after BeginInit,
-                       //it does not add any elements to the collection until EndInit is called.
-                       if (Table.InitInProgress) {
-                               // Keep reference so that they can be added when EndInit() is called.
-                               _mostRecentConstraints = constraints;
-                               return;
-                       }
-
-                       if (constraints == null)
-                               return;
-
-                       for (int i = 0; i < constraints.Length; ++i) {
-                               if (constraints [i] != null)
-                                       Add (constraints [i]);
-                       }
-               }
-
-               // Helper AddRange() - Call this function when EndInit is called
-               // keeps track of the Constraints most recently added and adds them
-               // to the collection
-               internal void PostAddRange ()
-               {
-                       if (_mostRecentConstraints == null)
-                               return;
-
-                       // Check whether the constraint is Initialized
-                       // If not, initialize before adding to collection
-                       for (int i = 0; i < _mostRecentConstraints.Length; i++) {
-                               Constraint c = _mostRecentConstraints [i];
-                               if (c == null)
-                                       continue;
-                               if (c.InitInProgress)
-                                       c.FinishInit (Table);
-                               Add (c);
-                       }
-                       _mostRecentConstraints = null;
-               }
-
-               public bool CanRemove (Constraint constraint)
-               {
-                       return constraint.CanRemoveFromCollection (this, false);
-               }
-
-               public void Clear ()
-               {
-                       // Clear should also remove PrimaryKey
-                       Table.PrimaryKey = null;
-
-                       //CanRemove? See Lamespec below.
-                       //the Constraints have a reference to us
-                       //and we listen to name change events
-                       //we should remove these before clearing
-                       foreach (Constraint con in List) {
-                               con.ConstraintCollection = null;
-                               con.BeforeConstraintNameChange -= new DelegateConstraintNameChange (_handleBeforeConstraintNameChange);
-                       }
-
-                       //LAMESPEC: MSFT implementation allows this
-                       //even when a ForeignKeyConstraint exist for a UniqueConstraint
-                       //thus violating the CanRemove logic
-                       //CanRemove will throws Exception incase of the above
-                       List.Clear (); //Will violate CanRemove rule
-                       OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Refresh, this));
-               }
-
-               public bool Contains (string name)
-               {
-                       return -1 != IndexOf (name);
-               }
-
-               public int IndexOf (Constraint constraint)
-               {
-                       int index = 0;
-                       foreach (Constraint c in this) {
-                               if (c == constraint)
-                                       return index;
-                               index++;
-                       }
-                       return -1;
-               }
-
-               public
-               int IndexOf (string constraintName)
-               {
-                       //LAMESPEC: Spec doesn't say case insensitive
-                       //it should to be consistant with the other
-                       //case insensitive comparisons in this class
-
-                       int index = 0;
-                       foreach (Constraint con in List) {
-                               if (String.Compare (constraintName, con.ConstraintName, !Table.CaseSensitive, Table.Locale) == 0)
-                                       return index;
-                               index++;
-                       }
-                       return -1; //not found
-               }
-
-               public void Remove (Constraint constraint)
-               {
-                       //LAMESPEC: spec doesn't document the ArgumentException the
-                       //will be thrown if the CanRemove rule is violated
-
-                       //LAMESPEC: spec says an exception will be thrown
-                       //if the element is not in the collection. The implementation
-                       //doesn't throw an exception. ArrayList.Remove doesn't throw if the
-                       //element doesn't exist
-                       //ALSO the overloaded remove in the spec doesn't say it throws any exceptions
-
-                       //not null
-                       if (null == constraint)
-                               throw new ArgumentNullException();
-
-                       if (!constraint.CanRemoveFromCollection (this, true))
-                               return;
-
-                       constraint.RemoveFromConstraintCollectionCleanup (this);
-                       constraint.ConstraintCollection = null;
-                       List.Remove (constraint);
-                       OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Remove, this));
-               }
-
-               public void Remove (string name)
-               {
-                       int index = IndexOf (name);
-                       if (-1 == index)
-                               throw new ArgumentException ("Constraint '" + name + "' does not belong to this DataTable.");
-
-                       Remove (this [index]);
-               }
-
-               public void RemoveAt(int index)
-               {
-                       Remove (this [index]);
-               }
-
-               protected override ArrayList List {
-                       get { return base.List; }
-               }
-
-
-               internal
-               void OnCollectionChanged (CollectionChangeEventArgs ccevent)
-               {
-                       if (null != CollectionChanged)
-                               CollectionChanged(this, ccevent);
-               }
-       }
-
-       sealed partial class ConstraintCollection {
-               public void CopyTo (Constraint [] array, int index)
-               {
-                       base.CopyTo (array, index);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ConstraintConverter.cs b/mcs/class/System.Data/System.Data/ConstraintConverter.cs
deleted file mode 100644 (file)
index 22b6fac..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.ConstraintConverter.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2004 Andreas Nahr
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       internal sealed class ConstraintConverter : ExpandableObjectConverter
-       {
-               [MonoTODO]
-               public ConstraintConverter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ConstraintException.cs b/mcs/class/System.Data/System.Data/ConstraintException.cs
deleted file mode 100644 (file)
index 393e595..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.ConstraintException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class ConstraintException : DataException
-       {
-               public ConstraintException ()
-                       : base (Locale.GetText ("This operation violates a constraint"))
-               {
-               }
-
-               public ConstraintException (string s) : base (s)
-               {
-               }
-
-               public ConstraintException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected ConstraintException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/CustomDataClassGenerator.cs b/mcs/class/System.Data/System.Data/CustomDataClassGenerator.cs
deleted file mode 100644 (file)
index 23e0d00..0000000
+++ /dev/null
@@ -1,2584 +0,0 @@
-//
-// Mono.Data.CustomDataClassGenerator
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// (C)2004 Novell Inc.
-//
-// API notes are the bottom of the source.
-//
-// This class is standalone testable (even under MS.NET) when compiled with
-// -d:DATACLASS_GENERATOR_STANDALONE .
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Xml;
-using System.Data;
-using System.Data.Common;
-using System.Collections;
-using System.CodeDom;
-using System.Globalization;
-using System.Text;
-using System.CodeDom.Compiler;
-using System.ComponentModel;
-using System.Runtime.Serialization;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-using System.Reflection;
-
-// only for Driver
-using Microsoft.CSharp;
-using System.IO;
-
-namespace System.Data
-{
-
-#if DATACLASS_GENERATOR_STANDALONE
-       public class Driver
-       {
-               public static void Main (string [] args)
-               {
-                       try {
-                               if (args.Length < 1) {
-                                       Console.WriteLine ("mono dsgentest.exe filename");
-                                       return;
-                               }
-
-                               DataSet ds = new DataSet ();
-                               ds.ReadXml (args [0]);
-                               ICodeGenerator gen = new CSharpCodeProvider ().CreateGenerator ();
-
-                               CodeNamespace cns = new CodeNamespace ("MyNamespace");
-                               TextWriter tw = new StreamWriter (Path.ChangeExtension (args [0], ".ms.cs"), false, Encoding.Default);
-                               TypedDataSetGenerator.Generate (ds, cns, gen);
-                               gen.GenerateCodeFromNamespace (cns, tw, null);
-                               tw.Close ();
-
-                               cns = new CodeNamespace ("MyNamespace");
-                               tw = new StreamWriter (Path.ChangeExtension (args [0], ".mono.cs"), false, Encoding.Default);
-                               CustomDataClassGenerator.CreateDataSetClasses (ds, cns, gen, null);
-                               gen.GenerateCodeFromNamespace (cns, tw, null);
-                               tw.Close ();
-                       } catch (Exception ex) {
-                               Console.WriteLine (ex);
-                       }
-               }
-       }
-#endif
-
-#if DATACLASS_GENERATOR_STANDALONE
-       public class CustomDataClassGenerator
-#else
-       internal class CustomDataClassGenerator
-#endif
-       {
-               public static void CreateDataSetClasses (DataSet ds,
-                       CodeNamespace cns, ICodeGenerator gen,
-                       ClassGeneratorOptions options)
-               {
-                       new Generator (ds, cns, gen, options).Run ();
-               }
-
-               public static void CreateDataSetClasses (DataSet ds,
-                       CodeNamespace cns, CodeDomProvider codeProvider,
-                       ClassGeneratorOptions options)
-               {
-                       new Generator (ds, cns, codeProvider, options).Run ();
-               }
-
-               public static void CreateDataSetClasses (DataSet ds, 
-                                                        CodeCompileUnit cunit, 
-                                                        CodeNamespace cns, 
-                                                        CodeDomProvider codeProvider, 
-                                                        ClassGeneratorOptions options)
-               {
-                       new Generator (ds, cunit, cns, codeProvider, options).Run ();
-               }
-               public static string MakeSafeName (string name, ICodeGenerator codeGen)
-               {
-                       if (name == null || codeGen == null)
-                               throw new NullReferenceException ();
-
-                       name = codeGen.CreateValidIdentifier (name);
-
-                       return MakeSafeNameInternal (name);
-               }
-               
-               public static string MakeSafeName (string name, CodeDomProvider provider)
-               {
-                       if (name == null || provider == null)
-                               throw new NullReferenceException ();
-
-                       name = provider.CreateValidIdentifier (name);
-
-                       return MakeSafeNameInternal (name);
-               }
-               
-               public static string MakeSafeNameInternal (string name)
-               {
-                       if (name.Length == 0)
-                               return "_";
-
-                       StringBuilder sb = null;
-                       if (!Char.IsLetter (name, 0) && name [0] != '_') {
-                               sb = new StringBuilder ();
-                               sb.Append ('_');
-                       }
-
-                       int start = 0;
-                       for (int i = 0; i < name.Length; i++) {
-                               if (!Char.IsLetterOrDigit (name, i)) {
-                                       if (sb == null)
-                                               sb = new StringBuilder ();
-                                       sb.Append (name, start, i - start);
-                                       sb.Append ('_');
-                                       start = i + 1;
-                               }
-                       }
-
-                       if (sb != null) {
-                               sb.Append (name, start, name.Length - start);
-                               return sb.ToString ();
-                       }
-                       else
-                               return name;
-               }
-       }
-
-#if DATACLASS_GENERATOR_STANDALONE
-       public delegate string CodeNamingMethod (string source, ICodeGenerator gen);
-#else
-       internal delegate string CodeNamingMethod (string source, ICodeGenerator gen);
-#endif
-
-#if DATACLASS_GENERATOR_STANDALONE
-       public delegate string CodeDomNamingMethod (string source, CodeDomProvider provider);
-#else
-       internal delegate string CodeDomNamingMethod (string source, CodeDomProvider provider);
-#endif 
-       
-#if DATACLASS_GENERATOR_STANDALONE
-       public class ClassICodeGeneratorOptions : ClassGeneratorOptions
-#else
-       internal class ClassICodeGeneratorOptions : ClassGeneratorOptions
-#endif
-       {
-               ICodeGenerator gen;
-               
-               public CodeNamingMethod CreateDataSetName;
-               public CodeNamingMethod CreateTableTypeName;
-               public CodeNamingMethod CreateTableMemberName;
-               public CodeNamingMethod CreateTableColumnName;
-               public CodeNamingMethod CreateColumnName;
-               public CodeNamingMethod CreateRowName;
-               public CodeNamingMethod CreateRelationName;
-               public CodeNamingMethod CreateTableDelegateName;
-               public CodeNamingMethod CreateEventArgsName;
-               public CodeNamingMethod CreateTableAdapterNSName;
-               public CodeNamingMethod CreateTableAdapterName;
-
-               public ClassICodeGeneratorOptions (ICodeGenerator codeGen)
-               {
-                       this.gen = codeGen;
-               }
-               
-               internal override string DataSetName (string source)
-               {
-                       if (CreateDataSetName != null)
-                               return CreateDataSetName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen);
-               }
-
-               internal override string TableTypeName (string source)
-               {
-                       if (CreateTableTypeName != null)
-                               return CreateTableTypeName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen) + "DataTable";
-               }
-
-               internal override string TableMemberName (string source)
-               {
-                       if (CreateTableMemberName != null)
-                               return CreateTableMemberName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen);
-               }
-
-               internal override string TableColName (string source)
-               {
-                       if (CreateTableColumnName != null)
-                               return CreateTableColumnName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen);
-               }
-
-               internal override string TableDelegateName (string source)
-               {
-                       if (CreateTableDelegateName != null)
-                               return CreateTableDelegateName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen) + "RowChangedEventHandler";
-               }
-
-               internal override string EventArgsName (string source)
-               {
-                       if (CreateEventArgsName != null)
-                               return CreateEventArgsName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen) + "RowChangedEventArgs";
-               }
-
-               internal override string ColumnName (string source)
-               {
-                       if (CreateColumnName != null)
-                               return CreateColumnName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen);
-               }
-
-               internal override string RowName (string source)
-               {
-                       if (CreateRowName != null)
-                               return CreateRowName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen) + "Row";
-               }
-
-               internal override string RelationName (string source)
-               {
-                       if (CreateRelationName != null)
-                               return CreateRelationName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen) + "Relation";
-               }
-
-               internal override string TableAdapterNSName (string source)
-               {
-                       if (CreateTableAdapterNSName != null)
-                               return CreateTableAdapterNSName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen) + "TableAdapters";
-               }
-               
-               internal override string TableAdapterName (string source)
-               {
-                       if (CreateTableAdapterName != null)
-                               return CreateTableAdapterName (source, gen);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, gen);
-               }
-       }
-       
-#if DATACLASS_GENERATOR_STANDALONE
-       public class ClassCodeDomProviderOptions : ClassGeneratorOptions
-#else
-       internal class ClassCodeDomProviderOptions : ClassGeneratorOptions
-#endif
-       {
-               CodeDomProvider provider;
-               
-               public CodeDomNamingMethod CreateDataSetName;
-               public CodeDomNamingMethod CreateTableTypeName;
-               public CodeDomNamingMethod CreateTableMemberName;
-               public CodeDomNamingMethod CreateTableColumnName;
-               public CodeDomNamingMethod CreateColumnName;
-               public CodeDomNamingMethod CreateRowName;
-               public CodeDomNamingMethod CreateRelationName;
-               public CodeDomNamingMethod CreateTableDelegateName;
-               public CodeDomNamingMethod CreateEventArgsName;                 
-               public CodeDomNamingMethod CreateTableAdapterNSName;
-               public CodeDomNamingMethod CreateTableAdapterName;
-               
-               public ClassCodeDomProviderOptions (CodeDomProvider codeProvider)
-               {
-                       this.provider = codeProvider;
-               }
-               
-               internal override string DataSetName (string source)
-               {
-                       if (CreateDataSetName != null)
-                               return CreateDataSetName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider);
-               }
-
-               internal override string TableTypeName (string source)
-               {
-                       if (CreateTableTypeName != null)
-                               return CreateTableTypeName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider) + "DataTable";
-               }
-
-               internal override string TableMemberName (string source)
-               {
-                       if (CreateTableMemberName != null)
-                               return CreateTableMemberName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider);
-               }
-
-               internal override string TableColName (string source)
-               {
-                       if (CreateTableColumnName != null)
-                               return CreateTableColumnName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider);
-               }
-
-               internal override string TableDelegateName (string source)
-               {
-                       if (CreateTableDelegateName != null)
-                               return CreateTableDelegateName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider) + "RowChangedEventHandler";
-               }
-
-               internal override string EventArgsName (string source)
-               {
-                       if (CreateEventArgsName != null)
-                               return CreateEventArgsName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider) + "RowChangedEventArgs";
-               }
-
-               internal override string ColumnName (string source)
-               {
-                       if (CreateColumnName != null)
-                               return CreateColumnName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider);
-               }
-
-               internal override string RowName (string source)
-               {
-                       if (CreateRowName != null)
-                               return CreateRowName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider) + "Row";
-               }
-
-               internal override string RelationName (string source)
-               {
-                       if (CreateRelationName != null)
-                               return CreateRelationName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider) + "Relation";
-               }
-
-               internal override string TableAdapterNSName (string source)
-               {
-                       if (CreateTableAdapterNSName != null)
-                               return CreateTableAdapterNSName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider) + "TableAdapters";
-               }
-
-               internal override string TableAdapterName (string source)
-               {
-                       if (CreateTableAdapterName != null)
-                               return CreateTableAdapterName (source, provider);
-                       else
-                               return CustomDataClassGenerator.MakeSafeName (source, provider);
-               }               
-       }
-       
-#if DATACLASS_GENERATOR_STANDALONE
-       public abstract class ClassGeneratorOptions
-#else
-       internal abstract class ClassGeneratorOptions
-#endif
-       {
-               public bool MakeClassesInsideDataSet = true; // default = MS compatible
-               
-               internal abstract string DataSetName (string source);
-               internal abstract string TableTypeName (string source);
-               internal abstract string TableMemberName (string source);
-               internal abstract string TableColName (string source);
-               internal abstract string TableDelegateName (string source);
-               internal abstract string EventArgsName (string source);
-               internal abstract string ColumnName (string source);
-               internal abstract string RowName (string source);
-               internal abstract string RelationName (string source);
-               internal abstract string TableAdapterNSName (string source);
-               internal abstract string TableAdapterName (string source);
-       }
-
-       internal class Generator
-       {
-//             static ClassGeneratorOptions DefaultOptions = new ClassGeneratorOptions ();
-
-               DataSet ds;
-               CodeNamespace cns;
-               ClassGeneratorOptions opts;
-               CodeCompileUnit cunit;
-
-               CodeTypeDeclaration dsType;
-
-               public Generator (DataSet ds, CodeNamespace cns, ICodeGenerator codeGen, ClassGeneratorOptions options)
-               {
-                       this.ds = ds;
-                       this.cns = cns;
-                       this.opts = options;
-                       this.cunit = null;
-                       if (opts == null)
-                               opts = new ClassICodeGeneratorOptions (codeGen);
-               }
-               public Generator (DataSet ds, CodeNamespace cns, CodeDomProvider codeProvider, 
-                                 ClassGeneratorOptions options)
-               {
-                       this.ds = ds;
-                       this.cns = cns;
-                       this.opts = options;
-                       this.cunit = null;
-                       if (opts == null)
-                               opts = new ClassCodeDomProviderOptions (codeProvider);                  
-               }
-
-               public Generator (DataSet ds, CodeCompileUnit cunit, CodeNamespace cns, 
-                                 CodeDomProvider codeProvider, ClassGeneratorOptions options)
-               {
-                       this.ds = ds;
-                       this.cns = cns;
-                       this.opts = options;
-                       this.cunit = cunit;
-                       if (opts == null)
-                               opts = new ClassCodeDomProviderOptions (codeProvider);
-               }
-               public void Run ()
-               {
-                       // using decls
-                       cns.Imports.Add (new CodeNamespaceImport ("System"));
-                       cns.Imports.Add (new CodeNamespaceImport ("System.Collections"));
-                       cns.Imports.Add (new CodeNamespaceImport ("System.ComponentModel"));
-                       cns.Imports.Add (new CodeNamespaceImport ("System.Data"));
-                       cns.Imports.Add (new CodeNamespaceImport ("System.Runtime.Serialization"));
-                       cns.Imports.Add (new CodeNamespaceImport ("System.Xml"));
-
-
-                       CodeTypeDeclaration dsType = GenerateDataSetType ();
-                       cns.Types.Add (dsType);
-
-                       foreach (DataTable dt in ds.Tables) {
-                               // 1. table types ([foo]DataTable)
-                               // 2. row types ([foo]Row)
-                               // 3. delegates ([foo]RowChangedEventHandler)
-                               // 4. eventargs ([foo]RowChangeEventArgs)
-
-                               CodeTypeDeclaration dtType = GenerateDataTableType (dt);
-
-                               CodeTypeDeclaration dtRow = GenerateDataRowType (dt);
-
-                               CodeTypeDelegate dtDelegate = new CodeTypeDelegate (opts.TableDelegateName (dt.TableName));
-                               dtDelegate.Parameters.Add (Param (typeof (object), "o"));
-                               dtDelegate.Parameters.Add (Param (opts.EventArgsName (dt.TableName), "e"));
-
-                               CodeTypeDeclaration dtEventType = GenerateEventType (dt);
-
-                               // Add types to either DataSet or CodeNamespace
-                               if (opts.MakeClassesInsideDataSet) {
-                                       dsType.Members.Add (dtType);
-                                       dsType.Members.Add (dtRow);
-                                       dsType.Members.Add (dtDelegate);
-                                       dsType.Members.Add (dtEventType);
-                               }
-                               else {
-                                       cns.Types.Add (dtType);
-                                       cns.Types.Add (dtRow);
-                                       cns.Types.Add (dtDelegate);
-                                       cns.Types.Add (dtEventType);
-                               }
-                       }
-
-                       if (cunit == null)
-                               return;
-                       
-                       TableAdapterSchemaInfo adapterInfo = ds.TableAdapterSchemaData;
-                       if (adapterInfo != null) {
-                               // #325464 debugging
-                               //Console.WriteLine (opts.TableAdapterNSName(opts.DataSetName (ds.DataSetName)));
-                               CodeNamespace cnsTA = new CodeNamespace (opts.TableAdapterNSName(opts.DataSetName (ds.DataSetName)));
-                               CodeTypeDeclaration dtAdapter = GenerateTableAdapterType (adapterInfo);
-                               cnsTA.Types.Add (dtAdapter);
-                               cunit.Namespaces.Add (cnsTA);
-                       }
-               }
-               
-               private CodeThisReferenceExpression This ()
-               {
-                       return new CodeThisReferenceExpression ();
-               }
-
-               private CodeBaseReferenceExpression Base ()
-               {
-                       return new CodeBaseReferenceExpression ();
-               }
-
-               private CodePrimitiveExpression Const (object value)
-               {
-                       return new CodePrimitiveExpression (value);
-               }
-
-               private CodeTypeReference TypeRef (Type t)
-               {
-                       return new CodeTypeReference (t);
-               }
-
-               private CodeTypeReference TypeRef (string name)
-               {
-                       return new CodeTypeReference (name);
-               }
-
-               private CodeTypeReference TypeRefArray (Type t, int dimension)
-               {
-                       return new CodeTypeReference (TypeRef (t), dimension);
-               }
-
-               private CodeTypeReference TypeRefArray (string name, int dimension)
-               {
-                       return new CodeTypeReference (TypeRef (name), dimension);
-               }
-               
-               private CodeParameterDeclarationExpression Param (string t, string name)
-               {
-                       return new CodeParameterDeclarationExpression (t, name);
-               }
-
-               private CodeParameterDeclarationExpression Param (Type t, string name)
-               {
-                       return new CodeParameterDeclarationExpression (t, name);
-               }
-
-               private CodeParameterDeclarationExpression Param (CodeTypeReference t, string name)
-               {
-                       return new CodeParameterDeclarationExpression (t, name);
-               }
-
-               private CodeArgumentReferenceExpression ParamRef (string name)
-               {
-                       return new CodeArgumentReferenceExpression (name);
-               }
-
-               private CodeCastExpression Cast (string t, CodeExpression exp)
-               {
-                       return new CodeCastExpression (t, exp);
-               }
-
-               private CodeCastExpression Cast (Type t, CodeExpression exp)
-               {
-                       return new CodeCastExpression (t, exp);
-               }
-
-               private CodeCastExpression Cast (CodeTypeReference t, CodeExpression exp)
-               {
-                       return new CodeCastExpression (t, exp);
-               }
-
-               private CodeExpression New (Type t, params CodeExpression [] parameters)
-               {
-                       return new CodeObjectCreateExpression (t, parameters);
-               }
-
-               private CodeExpression New (string t, params CodeExpression [] parameters)
-               {
-                       return new CodeObjectCreateExpression (TypeRef (t), parameters);
-               }
-
-               private CodeExpression NewArray (Type t, params CodeExpression [] parameters)
-               {
-                       return new CodeArrayCreateExpression (t, parameters);
-               }
-
-               private CodeExpression NewArray (Type t, int size )
-               {
-                       return new CodeArrayCreateExpression (t, size);
-               }
-
-               private CodeVariableReferenceExpression Local (string name)
-               {
-                       return new CodeVariableReferenceExpression (name);
-               }
-
-               private CodeFieldReferenceExpression FieldRef (string name)
-               {
-                       return new CodeFieldReferenceExpression (new CodeThisReferenceExpression (), name);
-               }
-
-               private CodeFieldReferenceExpression FieldRef (CodeExpression exp, string name)
-               {
-                       return new CodeFieldReferenceExpression (exp, name);
-               }
-
-               private CodePropertyReferenceExpression PropRef (string name)
-               {
-                       return new CodePropertyReferenceExpression (new CodeThisReferenceExpression (), name);
-               }
-
-               private CodePropertyReferenceExpression PropRef (CodeExpression target, string name)
-               {
-                       return new CodePropertyReferenceExpression (target, name);
-               }
-
-               private CodeIndexerExpression IndexerRef (CodeExpression target, CodeExpression parameters)
-               {
-                       return new CodeIndexerExpression (target, parameters);
-               }
-
-               private CodeIndexerExpression IndexerRef (CodeExpression param)
-               {
-                       return new CodeIndexerExpression (new CodeThisReferenceExpression (), param);
-               }
-
-               private CodeEventReferenceExpression EventRef (string name)
-               {
-                       return new CodeEventReferenceExpression (new CodeThisReferenceExpression (), name);
-               }
-
-               private CodeEventReferenceExpression EventRef (CodeExpression target, string name)
-               {
-                       return new CodeEventReferenceExpression (target, name);
-               }
-
-               private CodeMethodInvokeExpression MethodInvoke (string name, params CodeExpression [] parameters)
-               {
-                       return new CodeMethodInvokeExpression (new CodeThisReferenceExpression (), name, parameters);
-               }
-
-               private CodeMethodInvokeExpression MethodInvoke (CodeExpression target, string name, params CodeExpression [] parameters)
-               {
-                       return new CodeMethodInvokeExpression (target, name, parameters);
-               }
-
-               private CodeBinaryOperatorExpression EqualsValue (CodeExpression exp1, CodeExpression exp2)
-               {
-                       return new CodeBinaryOperatorExpression (exp1, CodeBinaryOperatorType.ValueEquality, exp2);
-               }
-
-               // note that this is "Identity" equality comparison
-               private CodeBinaryOperatorExpression Equals (CodeExpression exp1, CodeExpression exp2)
-               {
-                       return new CodeBinaryOperatorExpression (exp1, CodeBinaryOperatorType.IdentityEquality, exp2);
-               }
-
-               private CodeBinaryOperatorExpression Inequals (CodeExpression exp1, CodeExpression exp2)
-               {
-                       return new CodeBinaryOperatorExpression (exp1, CodeBinaryOperatorType.IdentityInequality, exp2);
-               }
-
-               private CodeBinaryOperatorExpression GreaterThan (CodeExpression exp1, CodeExpression exp2)
-               {
-                       return new CodeBinaryOperatorExpression (exp1, CodeBinaryOperatorType.GreaterThan, exp2);
-               }
-
-               private CodeBinaryOperatorExpression LessThan (CodeExpression exp1, CodeExpression exp2)
-               {
-                       return new CodeBinaryOperatorExpression (exp1, CodeBinaryOperatorType.LessThan, exp2);
-               }
-
-               private CodeBinaryOperatorExpression Compute (CodeExpression exp1, CodeExpression exp2, CodeBinaryOperatorType ops)
-               {
-                       if (ops >= CodeBinaryOperatorType.Add && ops < CodeBinaryOperatorType.Assign)
-                               return new CodeBinaryOperatorExpression (exp1, ops, exp2);
-                       else
-                               return null;
-               }
-
-               private CodeBinaryOperatorExpression BitOps (CodeExpression exp1, CodeExpression exp2, CodeBinaryOperatorType ops)
-               {
-                       if (ops >= CodeBinaryOperatorType.BitwiseOr && ops <= CodeBinaryOperatorType.BitwiseAnd)
-                               return new CodeBinaryOperatorExpression (exp1, ops, exp2);
-                       else
-                               return null;
-               }
-               
-               private CodeBinaryOperatorExpression BooleanOps (CodeExpression exp1, CodeExpression exp2, CodeBinaryOperatorType ops)
-               {
-                       if (ops >= CodeBinaryOperatorType.BooleanOr && ops <= CodeBinaryOperatorType.BooleanAnd)
-                               return new CodeBinaryOperatorExpression (exp1, ops, exp2);
-                       else
-                               return null;
-               }
-
-               private CodeTypeReferenceExpression TypeRefExp (Type t)
-               {
-                       return new CodeTypeReferenceExpression (t);
-               }
-
-               private CodeTypeOfExpression TypeOfRef (string name)
-               {
-                       return new CodeTypeOfExpression (TypeRef (name));
-               }
-
-               private CodeExpressionStatement Eval (CodeExpression exp)
-               {
-                       return new CodeExpressionStatement (exp);
-               }
-
-               private CodeAssignStatement Let (CodeExpression exp, CodeExpression value)
-               {
-                       return new CodeAssignStatement (exp, value);
-               }
-
-               private CodeMethodReturnStatement Return (CodeExpression exp)
-               {
-                       return new CodeMethodReturnStatement (exp);
-               }
-
-               private CodeVariableDeclarationStatement VarDecl (Type t,
-                       string name, CodeExpression init)
-               {
-                       return new CodeVariableDeclarationStatement (t, name, init);
-               }
-
-               private CodeVariableDeclarationStatement VarDecl (string t,
-                       string name, CodeExpression init)
-               {
-                       return new CodeVariableDeclarationStatement (t, name, init);
-               }
-
-               private CodeCommentStatement Comment (string comment)
-               {
-                       return new CodeCommentStatement (comment);
-               }
-
-               private CodeThrowExceptionStatement Throw (CodeExpression exp)
-               {
-                       return new CodeThrowExceptionStatement (exp);
-               }
-
-#region DataSet class
-
-               private CodeTypeDeclaration GenerateDataSetType ()
-               {
-                       // Type
-                       dsType = new CodeTypeDeclaration (opts.DataSetName (ds.DataSetName));
-                       dsType.BaseTypes.Add (TypeRef (typeof (DataSet)));
-                       dsType.BaseTypes.Add (TypeRef (typeof (IXmlSerializable)));
-
-                       // .ctor()
-                       dsType.Members.Add (CreateDataSetDefaultCtor ());
-                       // runtime serialization .ctor()
-                       dsType.Members.Add (CreateDataSetSerializationCtor ());
-
-                       // Clone()
-                       dsType.Members.Add (CreateDataSetCloneMethod (dsType));
-
-// FIXME: I keep these methods out of the generated source right now.
-// It should be added after runtime serialization was implemented.
-/*
-                       // ShouldSerializeTables()
-                       dsType.Members.Add (CreateDataSetShouldSerializeTables ());
-
-                       // ShouldSerializeRelations()
-                       dsType.Members.Add (CreateDataSetShouldSerializeRelations ());
-
-                       // ReadXmlSerializable()
-                       dsType.Members.Add (CreateDataSetReadXmlSerializable ());
-*/
-
-                       // GetSchemaSerializable()
-                       dsType.Members.Add (CreateDataSetGetSchemaSerializable ());
-
-                       dsType.Members.Add (CreateDataSetGetSchema ());
-                       dsType.Members.Add (CreateDataSetInitializeClass ());
-                       dsType.Members.Add (CreateDataSetInitializeFields ());
-                       dsType.Members.Add (CreateDataSetSchemaChanged ());
-
-                       // table class and members
-                       foreach (DataTable table in ds.Tables)
-                               CreateDataSetTableMembers (dsType, table);
-                       // relation class and members
-                       foreach (DataRelation rel in ds.Relations)
-                               CreateDataSetRelationMembers (dsType, rel);
-
-                       return dsType;
-               }
-
-               // Code:
-               // public Foo ()
-               // {
-               //   InitializeClass();
-               //   CollectionChangeEventHandler handler = new CollectionChangeEventHandler (SchemaChanged);
-               //   Tables.CollectionChanged += handler;
-               //   Relations.CollectionChanged += handler;
-               // }
-               private CodeConstructor CreateDataSetDefaultCtor ()
-               {
-                       CodeConstructor ctor = new CodeConstructor ();
-                       ctor.Attributes = MemberAttributes.Public;
-                       // Code: InitializeClass().
-                       ctor.Statements.Add (Eval (MethodInvoke ("InitializeClass")));
-
-                       // Code: CollectionChangedEventHandler handler = new CollectionChangeEventHandler (SchemeChanged);
-                       CodeVariableDeclarationStatement stmt2 = 
-                               VarDecl (
-                                       typeof (CollectionChangeEventHandler), 
-                                       "handler", 
-                                       New (
-                                               typeof (CollectionChangeEventHandler), 
-                                               new CodeDelegateCreateExpression (
-                                                       new CodeTypeReference (typeof (CollectionChangeEventHandler)),
-                                                       new CodeThisReferenceExpression (), 
-                                                       "SchemaChanged")));
-
-                       ctor.Statements.Add (stmt2);
-
-                       // Code: Tables.CollectionChanged += handler;
-                       ctor.Statements.Add (
-                               new CodeAttachEventStatement (
-                                       EventRef (
-                                               PropRef ("Tables"), 
-                                               "CollectionChanged"),
-                                       Local ("handler")));
-
-                       // Code: Relations.CollectionChanged += handler;
-                       ctor.Statements.Add (
-                               new CodeAttachEventStatement (
-                                       EventRef (
-                                               PropRef ("Relations"), 
-                                               "CollectionChanged"), 
-                                       Local ("handler")));
-
-                       return ctor;
-               }
-
-               // TODO: implement
-
-               // Code:
-               // protected Foo (SerializationInfo info, StreamingContext ctx)
-               // {
-               //   throw new NotImplementedException ();
-               // }
-               private CodeConstructor CreateDataSetSerializationCtor ()
-               {
-                       CodeConstructor ctor = new CodeConstructor ();
-                       ctor.Attributes = MemberAttributes.Family;
-                       ctor.Parameters.Add (Param (typeof (SerializationInfo), "info"));
-                       ctor.Parameters.Add (Param (typeof (StreamingContext), "ctx"));
-
-                       // Code: 
-                       //  // TODO: implement
-                       //  throw new NotImplementedException ();
-                       ctor.Statements.Add (Comment ("TODO: implement"));
-                       ctor.Statements.Add (Throw (New (typeof (NotImplementedException))));
-
-                       return ctor;
-               }
-
-               // Code:
-               //  public override DataSet Clone()
-               //  {
-               //    [foo] set = ([foo]) base.Clone ();
-               //    set.InitializeFields ();
-               //    return set;
-               //  }
-               private CodeMemberMethod CreateDataSetCloneMethod (CodeTypeDeclaration dsType)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.ReturnType = TypeRef (typeof (DataSet));
-                       m.Attributes = MemberAttributes.Public | MemberAttributes.Override;
-                       m.Name = "Clone";
-                       // Code: [foo] set = ([foo]) base.Clone ();
-                       CodeVariableReferenceExpression set = Local ("set");
-                       m.Statements.Add (VarDecl (
-                                       dsType.Name,
-                                       "set", 
-                                       Cast (
-                                               dsType.Name,
-                                               MethodInvoke (Base (), "Clone"))));
-                       m.Statements.Add (Eval (MethodInvoke (set, "InitializeFields")));
-                       m.Statements.Add (Return (set));
-                       return m;
-               }
-
-               // Code:
-               // protected override bool ShouldSerializeTables ()
-               // {
-               //   return true; // it should be false
-               // }
-               /*
-               private CodeMemberMethod CreateDataSetShouldSerializeTables ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "ShouldSerializeTables";
-                       m.ReturnType = TypeRef (typeof (bool));
-                       m.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       // FIXME: set "false" after serialization .ctor() implementation
-                       m.Statements.Add (Return (Const (true)));
-                       return m;
-               }
-               */
-               // Code:
-               // protected override bool ShouldSerializeRelations ()
-               // {
-               //   return true; // it should be false
-               // }
-               
-               /*
-               private CodeMemberMethod CreateDataSetShouldSerializeRelations ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "ShouldSerializeRelations";
-                       m.ReturnType = TypeRef (typeof (bool));
-                       m.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       // FIXME: set "false" after serialization .ctor() implementation
-                       m.Statements.Add (Return (Const (true)));
-                       return m;
-               }
-               */
-
-               // Code:
-               // protected override void ReadXmlSerializable()
-               // {
-               //   // TODO: implement
-               //   throw new NotImplementedException ();
-               // }
-               /*
-               private CodeMemberMethod CreateDataSetReadXmlSerializable ()
-               {
-                       CodeMemberMethod method = new CodeMemberMethod ();
-                       method.Name = "ReadXmlSerializable";
-                       method.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       method.Parameters.Add (Param (TypeRef (typeof (XmlReader)), "reader"));
-                       // TODO: implemnet
-                       method.Statements.Add (Comment ("TODO: implement"));
-                       // Hey, how can I specify the constructor to invoke chained ctor with an empty parameter list!?
-                       method.Statements.Add (Throw (New (typeof (NotImplementedException))));
-                       return method;
-               }
-               */
-
-               private CodeMemberMethod CreateDataSetGetSchema ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.PrivateImplementationType = TypeRef (typeof (IXmlSerializable));
-                       m.Name = "GetSchema";
-                       m.ReturnType = TypeRef (typeof (XmlSchema));
-                       m.Statements.Add (Return (MethodInvoke ("GetSchemaSerializable")));
-
-                       return m;
-               }
-
-               private CodeMemberMethod CreateDataSetGetSchemaSerializable ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Attributes = MemberAttributes.Family | 
-                               MemberAttributes.Override;
-                       m.Name = "GetSchemaSerializable";
-                       m.ReturnType = TypeRef (typeof (XmlSchema));
-
-                       m.Statements.Add (VarDecl (typeof (StringWriter), "sw",
-                               New (typeof (StringWriter))));
-                       m.Statements.Add (Eval (MethodInvoke ("WriteXmlSchema", Local ("sw"))));
-                       m.Statements.Add (Return (MethodInvoke (
-                               TypeRefExp (typeof (XmlSchema)),
-                               "Read",
-                               New (typeof (XmlTextReader),
-                                       New (typeof (StringReader),
-                                               MethodInvoke (Local ("sw"),
-                                                       "ToString"))),
-                               Const (null))));
-
-                       return m;
-               }
-
-               private CodeMemberMethod CreateDataSetInitializeClass ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "InitializeClass";
-                       m.Attributes = MemberAttributes.Assembly;
-
-                       // dataset properties
-                       m.Statements.Add (Let (PropRef ("DataSetName"), Const (ds.DataSetName)));
-                       m.Statements.Add (Let (PropRef ("Prefix"), Const (ds.Prefix)));
-                       m.Statements.Add (Let (PropRef ("Namespace"), Const (ds.Namespace)));
-                       m.Statements.Add (Let (PropRef ("Locale"), New (typeof (CultureInfo), Const (ds.Locale.Name))));
-                       m.Statements.Add (Let (PropRef ("CaseSensitive"), Const (ds.CaseSensitive)));
-                       m.Statements.Add (Let (PropRef ("EnforceConstraints"), Const (ds.EnforceConstraints)));
-
-                       // table
-                       foreach (DataTable dt in ds.Tables) {
-                               string tableFieldName = "__table" + opts.TableMemberName (dt.TableName);
-                               string tableTypeName = opts.TableTypeName (dt.TableName);
-                               m.Statements.Add (Let (FieldRef (tableFieldName), New (tableTypeName)));
-                               m.Statements.Add (Eval (MethodInvoke (PropRef ("Tables"), "Add", FieldRef (tableFieldName))));
-                       }
-
-                       bool fkcExists = false;
-                       bool ucExists = false;
-                       // First the UniqueConstraints
-                       foreach (DataTable dt in ds.Tables) {
-                               string tname = "__table" + opts.TableMemberName (dt.TableName);
-                               foreach (Constraint c in dt.Constraints) {
-                                       UniqueConstraint uc = c as UniqueConstraint;
-                                       if (uc != null) {
-                                               if (!ucExists) {
-                                                       m.Statements.Add (VarDecl (typeof (UniqueConstraint), "uc", null));
-                                                       ucExists = true;
-                                               }
-                                               CreateUniqueKeyStatements (m, uc, tname);
-                                       }
-                               }
-                       }
-                       // Then the ForeignKeyConstraints
-                       foreach (DataTable dt in ds.Tables) {
-                               string tname = "__table" + opts.TableMemberName (dt.TableName);
-                               foreach (Constraint c in dt.Constraints) {
-                                       ForeignKeyConstraint fkc = c as ForeignKeyConstraint;
-                                       if (fkc != null) {
-                                               if (!fkcExists) {
-                                                       m.Statements.Add (VarDecl (typeof (ForeignKeyConstraint), "fkc", null));
-                                                       fkcExists = true;
-                                               }
-                                               string rtname = "__table" + opts.TableMemberName (fkc.RelatedTable.TableName);
-                                               CreateForeignKeyStatements (m, fkc, tname, rtname);
-                                       }
-                               }
-                       }
-                       // What if other cases? dunno. Just ignore ;-)
-                       foreach (DataRelation rel in ds.Relations) {
-                               string relName = opts.RelationName (rel.RelationName);
-                               ArrayList pcols = new ArrayList ();
-                               foreach (DataColumn pcol in rel.ParentColumns)
-                                       pcols.Add (IndexerRef (PropRef (FieldRef ("__table" + opts.TableMemberName (rel.ParentTable.TableName)), "Columns"), Const (pcol.ColumnName)));
-
-                               ArrayList ccols = new ArrayList ();
-                               foreach (DataColumn ccol in rel.ChildColumns)
-                                       ccols.Add (IndexerRef (PropRef (FieldRef ("__table" + opts.TableMemberName (rel.ChildTable.TableName)), "Columns"), Const (ccol.ColumnName)));
-
-                               // relation field
-                               string fieldName = "__relation" + relName;
-                               m.Statements.Add (Let (FieldRef (fieldName), New (typeof (DataRelation),
-                                       Const (rel.RelationName),
-                                       NewArray (typeof (DataColumn), pcols.ToArray (typeof (CodeExpression)) as CodeExpression []),
-                                       NewArray (typeof (DataColumn), ccols.ToArray (typeof (CodeExpression)) as CodeExpression []),
-                                       Const (false)
-                                       )));
-                               m.Statements.Add (Let (PropRef (FieldRef (fieldName), "Nested"), Const (rel.Nested)));
-                               m.Statements.Add (MethodInvoke (PropRef ("Relations"), "Add", FieldRef (fieldName)));
-                       }
-
-                       return m;
-               }
-
-               private void CreateUniqueKeyStatements (CodeMemberMethod m, UniqueConstraint uc, string tableField)
-               {
-                       ArrayList al = new ArrayList ();
-                       foreach (DataColumn col in uc.Columns)
-                               al.Add (IndexerRef (PropRef (FieldRef (tableField), "Columns"), Const (col.ColumnName)));
-
-                       m.Statements.Add (Let (Local ("uc"), New (
-                               typeof (UniqueConstraint),
-                               Const (uc.ConstraintName),
-                               NewArray (
-                                       typeof (DataColumn),
-                                       al.ToArray (typeof (CodeExpression)) as CodeExpression []),
-                               Const (uc.IsPrimaryKey))));
-                       m.Statements.Add (MethodInvoke (PropRef (FieldRef (tableField), "Constraints"), "Add", Local ("uc")));
-               }
-
-               private void CreateForeignKeyStatements (CodeMemberMethod m,ForeignKeyConstraint fkc, string tableField, string rtableField)
-               {
-                       ArrayList pcols = new ArrayList ();
-                       foreach (DataColumn col in fkc.RelatedColumns)
-                               pcols.Add (IndexerRef (PropRef (FieldRef (rtableField), "Columns"), Const (col.ColumnName)));
-
-                       ArrayList ccols = new ArrayList ();
-                       foreach (DataColumn col in fkc.Columns)
-                               ccols.Add (IndexerRef (PropRef (FieldRef (tableField), "Columns"), Const (col.ColumnName)));
-
-                       m.Statements.Add (Let (Local ("fkc"), New (
-                               typeof (ForeignKeyConstraint),
-                               Const (fkc.ConstraintName),
-                               NewArray (
-                                       typeof (DataColumn),
-                                       pcols.ToArray (typeof (CodeExpression)) as CodeExpression []),
-                               NewArray (
-                                       typeof (DataColumn),
-                                       ccols.ToArray (typeof (CodeExpression)) as CodeExpression []))));
-
-                       m.Statements.Add (Let (
-                               PropRef (Local ("fkc"), "AcceptRejectRule"),
-                               FieldRef (TypeRefExp (typeof (AcceptRejectRule)), Enum.GetName (typeof (AcceptRejectRule), fkc.AcceptRejectRule))));
-                       m.Statements.Add (Let (
-                               PropRef (Local ("fkc"), "DeleteRule"),
-                               FieldRef (TypeRefExp (typeof (Rule)), Enum.GetName (typeof (Rule), fkc.DeleteRule))));
-                       m.Statements.Add (Let (
-                               PropRef (Local ("fkc"), "UpdateRule"),
-                               FieldRef (TypeRefExp (typeof (Rule)), Enum.GetName (typeof (Rule), fkc.UpdateRule))));
-
-                       m.Statements.Add (MethodInvoke (PropRef (FieldRef (tableField), "Constraints"), "Add", Local ("fkc")));
-               }
-
-               private CodeMemberMethod CreateDataSetInitializeFields ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Attributes = MemberAttributes.Assembly;
-                       m.Name = "InitializeFields";
-
-                       foreach (DataTable dt in ds.Tables)
-                               m.Statements.Add (Eval (MethodInvoke (FieldRef ("__table" + opts.TableMemberName (dt.TableName)), "InitializeFields")));
-
-                       foreach (DataRelation rel in ds.Relations)
-                               m.Statements.Add (Let (FieldRef ("__relation" + opts.RelationName (rel.RelationName)), IndexerRef (PropRef ("Relations"), Const (rel.RelationName))));
-
-                       return m;
-               }
-
-               private CodeMemberMethod CreateDataSetSchemaChanged ()
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "SchemaChanged";
-                       m.Parameters.Add (Param (typeof (object), "sender"));
-                       m.Parameters.Add (Param (typeof (CollectionChangeEventArgs), "e"));
-
-                       m.Statements.Add (
-                               new CodeConditionStatement (
-                                       EqualsValue (
-                                               PropRef (ParamRef ("e"), "Action"),
-                                               FieldRef (TypeRefExp (typeof (CollectionChangeAction)), "Remove")),
-                                       new CodeStatement [] { Eval (MethodInvoke ("InitializeFields")) },
-                                       new CodeStatement [] {}));
-                       return m;
-               }
-
-               private void CreateDataSetTableMembers (CodeTypeDeclaration dsType, DataTable table)
-               {
-                       string tableTypeName = opts.TableTypeName (table.TableName);
-                       string tableVarName = opts.TableMemberName (table.TableName);
-
-                       CodeMemberField privTable = new CodeMemberField ();
-                       privTable.Type = TypeRef (tableTypeName);
-                       privTable.Name = "__table" + tableVarName;
-                       dsType.Members.Add (privTable);
-
-                       CodeMemberProperty pubTable = new CodeMemberProperty ();
-                       pubTable.Type = TypeRef (tableTypeName);
-                       pubTable.Attributes = MemberAttributes.Public;
-                       pubTable.Name = tableVarName == table.TableName ? "_"+tableVarName : tableVarName;
-                       pubTable.HasSet = false;
-                       // Code: return __table[foo];
-                       pubTable.GetStatements.Add (Return (FieldRef ("__table" + tableVarName)));
-
-                       dsType.Members.Add (pubTable);
-
-               }
-
-               private void CreateDataSetRelationMembers (CodeTypeDeclaration dsType, DataRelation relation)
-               {
-                       string relName = opts.RelationName (relation.RelationName);
-                       string fieldName = "__relation" + relName;
-
-                       CodeMemberField field = new CodeMemberField ();
-                       field.Type = TypeRef (typeof (DataRelation));
-                       field.Name = fieldName;
-                       dsType.Members.Add (field);
-
-                       // This is not supported in MS.NET
-                       CodeMemberProperty prop = new CodeMemberProperty ();
-                       prop.Type = TypeRef (typeof (DataRelation));
-                       prop.Attributes = MemberAttributes.Public;
-                       prop.Name = relName;
-                       prop.HasSet = false;
-                       // Code: return __relation[foo_bar];
-                       prop.GetStatements.Add (Return (FieldRef (fieldName)));
-                       dsType.Members.Add (prop);
-               }
-
-#endregion
-
-
-
-#region DataTable class
-
-               private CodeTypeDeclaration GenerateDataTableType (DataTable dt)
-               {
-                       CodeTypeDeclaration t = new CodeTypeDeclaration ();
-                       t.Name = opts.TableTypeName (dt.TableName);
-                       t.BaseTypes.Add (TypeRef (typeof (DataTable)));
-                       t.BaseTypes.Add (TypeRef (typeof (IEnumerable)));
-
-                       t.Members.Add (CreateTableCtor1 (dt));
-                       t.Members.Add (CreateTableCtor2 (dt));
-
-                       t.Members.Add (CreateTableCount (dt));
-                       t.Members.Add (CreateTableIndexer (dt));
-
-                       t.Members.Add (CreateTableInitializeClass (dt));
-                       t.Members.Add (CreateTableInitializeFields (dt));
-
-                       t.Members.Add (CreateTableGetEnumerator (dt));
-                       t.Members.Add (CreateTableClone (dt));
-                       t.Members.Add (CreateTableCreateInstance (dt));
-
-                       t.Members.Add (CreateTableAddRow1 (dt));
-                       t.Members.Add (CreateTableAddRow2 (dt));
-                       t.Members.Add (CreateTableNewRow (dt));
-                       t.Members.Add (CreateTableNewRowFromBuilder (dt));
-                       t.Members.Add (CreateTableRemoveRow (dt));
-                       t.Members.Add (CreateTableGetRowType (dt));
-
-                       t.Members.Add (CreateTableEventStarter (dt, "Changing"));
-                       t.Members.Add (CreateTableEventStarter (dt, "Changed"));
-                       t.Members.Add (CreateTableEventStarter (dt, "Deleting"));
-                       t.Members.Add (CreateTableEventStarter (dt, "Deleted"));
-
-                       // events
-                       t.Members.Add (CreateTableEvent (dt, "RowChanging"));
-                       t.Members.Add (CreateTableEvent (dt, "RowChanged"));
-                       t.Members.Add (CreateTableEvent (dt, "RowDeleting"));
-                       t.Members.Add (CreateTableEvent (dt, "RowDeleted"));
-
-                       // column members
-                       foreach (DataColumn col in dt.Columns) {
-                               t.Members.Add (CreateTableColumnField (dt, col));
-                               t.Members.Add (CreateTableColumnProperty (dt, col));
-                       }
-
-                       return t;
-               }
-
-               // Code:
-               //  internal [foo]DataTable () : base ("[foo]")
-               //  {
-               //    InitializeClass ();
-               //  }
-               private CodeConstructor CreateTableCtor1 (DataTable dt)
-               {
-                       CodeConstructor c = new CodeConstructor ();
-                       c.Attributes = MemberAttributes.Assembly;
-                       c.BaseConstructorArgs.Add (Const (dt.TableName));
-                       c.Statements.Add (Eval (MethodInvoke ("InitializeClass")));
-                       c.Statements.Add (Eval (MethodInvoke ("InitializeFields")));
-                       return c;
-               }
-
-               // Code:
-               //  internal [foo]DataTable (DataTable table) : base (table.TableName)
-               //  {
-               //    // TODO: implement
-               //    throw new NotImplementedException ();
-               //  }
-               private CodeConstructor CreateTableCtor2 (DataTable dt)
-               {
-                       CodeConstructor c = new CodeConstructor ();
-                       c.Attributes = MemberAttributes.Assembly;
-                       c.Parameters.Add (Param (typeof (DataTable), GetRowTableFieldName (dt)));
-                       c.BaseConstructorArgs.Add (PropRef (ParamRef (GetRowTableFieldName (dt)), "TableName"));
-                       // TODO: implement
-                       c.Statements.Add (Comment ("TODO: implement"));
-                       c.Statements.Add (Throw (New (typeof (NotImplementedException))));
-                       return c;
-               }
-
-               private CodeMemberMethod CreateTableInitializeClass (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "InitializeClass";
-                       foreach (DataColumn col in dt.Columns) {
-                               m.Statements.Add (Eval (MethodInvoke (
-                                       PropRef ("Columns"),
-                                       "Add",
-                                       New (typeof (DataColumn),
-                                               Const (col.ColumnName),
-                                               new CodeTypeOfExpression (col.DataType)
-                                               ))));
-                       }
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableInitializeFields (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "InitializeFields";
-                       m.Attributes = MemberAttributes.Assembly;
-
-                       string colRef;
-                       foreach (DataColumn col in dt.Columns) {
-                               colRef = String.Format("__column{0}", opts.TableColName (col.ColumnName));
-
-                               m.Statements.Add (Let (FieldRef (colRef), IndexerRef (PropRef ("Columns"), Const (col.ColumnName))));
-                               if (!col.AllowDBNull)
-                                       m.Statements.Add (Let (FieldRef (PropRef (colRef), "AllowDBNull"), Const (col.AllowDBNull)));
-                               if (col.DefaultValue != null && col.DefaultValue.GetType() != typeof(System.DBNull))
-                                       m.Statements.Add (Let (FieldRef (PropRef (colRef), "DefaultValue"), Const (col.DefaultValue)));
-                               if (col.AutoIncrement)
-                                       m.Statements.Add (Let (FieldRef (PropRef (colRef), "AutoIncrement"), Const (col.AutoIncrement)));
-                               if (col.AutoIncrementSeed != 0)
-                                       m.Statements.Add (Let (FieldRef (PropRef (colRef), "AutoIncrementSeed"), Const (col.AutoIncrementSeed)));
-                               if (col.AutoIncrementStep != 1)
-                                       m.Statements.Add (Let (FieldRef (PropRef (colRef), "AutoIncrementStep"), Const (col.AutoIncrementStep)));
-                               if (col.ReadOnly)
-                                       m.Statements.Add (Let (FieldRef (PropRef (colRef), "ReadOnly"), Const (col.ReadOnly)));
-                       }
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableClone (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "Clone";
-                       m.Attributes = MemberAttributes.Public | MemberAttributes.Override;
-                       m.ReturnType = TypeRef (typeof (DataTable));
-                       string typeName = opts.TableTypeName (dt.TableName);
-                       m.Statements.Add (
-                               VarDecl (typeName, "t", Cast (typeName, MethodInvoke (Base (), "Clone"))));
-                       m.Statements.Add (Eval (MethodInvoke (Local ("t"), "InitializeFields")));
-                       m.Statements.Add (Return (Local ("t")));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableGetEnumerator (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "GetEnumerator";
-                       m.Attributes = MemberAttributes.Public;
-                       m.ReturnType = TypeRef (typeof (IEnumerator));
-                       m.Statements.Add (Return (MethodInvoke (PropRef ("Rows"), "GetEnumerator")));
-                       m.ImplementationTypes.Add (TypeRef (typeof (IEnumerable)));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableCreateInstance (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "CreateInstance";
-                       m.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       m.ReturnType = TypeRef (typeof (DataTable));
-                       m.Statements.Add (Return (New (opts.TableTypeName (dt.TableName))));
-                       return m;
-               }
-
-               private CodeMemberField CreateTableColumnField (DataTable dt, DataColumn col)
-               {
-                       CodeMemberField f = new CodeMemberField ();
-                       f.Name = "__column" + opts.ColumnName (col.ColumnName);
-                       f.Type = TypeRef (typeof (DataColumn));
-                       return f;
-               }
-
-               private CodeMemberProperty CreateTableColumnProperty (DataTable dt, DataColumn col)
-               {
-                       string name = opts.ColumnName (col.ColumnName);
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = name + "Column";
-                       p.Attributes = MemberAttributes.Assembly;
-                       p.Type = TypeRef (typeof (DataColumn));
-                       p.HasSet = false;
-                       p.GetStatements.Add (Return (FieldRef ("__column" + name)));
-                       return p;
-               }
-
-               private CodeMemberProperty CreateTableCount (DataTable dt)
-               {
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "Count";
-                       p.Attributes = MemberAttributes.Public;
-                       p.Type = TypeRef (typeof (int));
-                       p.HasSet = false;
-                       p.GetStatements.Add (Return (PropRef (PropRef ("Rows"), "Count")));
-                       return p;
-               }
-
-               private CodeMemberProperty CreateTableIndexer (DataTable dt)
-               {
-                       string rowName = opts.RowName (dt.TableName);
-                       CodeMemberProperty ix = new CodeMemberProperty ();
-                       ix.Name = "Item"; // indexer
-                       ix.Attributes = MemberAttributes.Public;
-                       ix.Type = TypeRef (rowName);
-                       ix.Parameters.Add (Param (typeof (int), "i"));
-                       ix.HasSet = false;
-                       ix.GetStatements.Add (Return (Cast (rowName, IndexerRef (PropRef ("Rows"), ParamRef ("i")))));
-                       return ix;
-               }
-
-               private CodeMemberMethod CreateTableAddRow1 (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       string rowType = opts.RowName (dt.TableName);
-                       m.Name = "Add" + rowType;
-                       m.Attributes = MemberAttributes.Public;
-                       m.Parameters.Add (Param (TypeRef (rowType), "row"));
-                       m.Statements.Add (Eval (MethodInvoke (PropRef ("Rows"), "Add", ParamRef ("row"))));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableAddRow2 (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       string rowType = opts.RowName (dt.TableName);
-                       m.Name = "Add" + rowType;
-                       m.ReturnType = TypeRef (rowType);
-                       m.Attributes = MemberAttributes.Public;
-
-                       m.Statements.Add (VarDecl (rowType, "row", MethodInvoke ("New" + rowType)));
-
-                       foreach (DataColumn col in dt.Columns) {
-                               if (col.ColumnMapping == MappingType.Hidden) {
-                                       foreach (DataRelation r in dt.DataSet.Relations) {
-                                               if (r.ChildTable == dt) {
-                                                       // parameter
-                                                       string paramType = opts.RowName (r.ParentTable.TableName);
-                                                       string paramName = paramType;
-                                                       m.Parameters.Add (Param (paramType, paramName));
-                                                       // CODE: SetParentRow (fooRow, DataSet.Relations ["foo_bar"]);
-                                                       m.Statements.Add (Eval (MethodInvoke (Local ("row"), "SetParentRow", ParamRef (paramName), IndexerRef (PropRef (PropRef ("DataSet"), "Relations"), Const (r.RelationName)))));
-                                                       break;
-                                               }
-                                       }
-                               }
-                               else {
-                                       // parameter
-                                       string paramName = opts.ColumnName (col.ColumnName);
-                                       m.Parameters.Add (Param (col.DataType, paramName));
-                                       // row ["foo"] = foo;
-                                       m.Statements.Add (Let (IndexerRef (Local ("row"), Const (paramName)), ParamRef (paramName)));
-                               }
-                       }
-
-                       // Rows.Add (row);
-                       m.Statements.Add (MethodInvoke (PropRef ("Rows"), "Add", Local ("row")));
-                       m.Statements.Add (Return (Local ("row")));
-
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableNewRow (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       string rowType = opts.RowName (dt.TableName);
-                       m.Name = "New" + rowType;
-                       m.ReturnType = TypeRef (rowType);
-                       m.Attributes = MemberAttributes.Public;
-                       m.Statements.Add (Return (Cast (rowType, MethodInvoke ("NewRow"))));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableNewRowFromBuilder (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "NewRowFromBuilder";
-                       m.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       m.ReturnType = TypeRef (typeof (DataRow));
-                       m.Parameters.Add (Param (typeof (DataRowBuilder), "builder"));
-                       m.Statements.Add (Return (New (opts.RowName (dt.TableName), ParamRef ("builder"))));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableRemoveRow (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       string rowType = opts.RowName (dt.TableName);
-                       m.Name = "Remove" + rowType;
-                       m.Attributes = MemberAttributes.Public;
-                       m.Parameters.Add (Param (TypeRef (rowType), "row"));
-                       m.Statements.Add (Eval (MethodInvoke (PropRef ("Rows"), "Remove", ParamRef ("row"))));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableGetRowType (DataTable dt)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "GetRowType";
-                       m.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       m.ReturnType = TypeRef (typeof (Type));
-                       m.Statements.Add (Return (new CodeTypeOfExpression (opts.RowName (dt.TableName))));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateTableEventStarter (DataTable dt, string type)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "OnRow" + type;
-                       m.Attributes = MemberAttributes.Family | MemberAttributes.Override;
-                       m.Parameters.Add (Param (typeof (DataRowChangeEventArgs), "e"));
-
-                       m.Statements.Add (Eval (MethodInvoke (
-                                       Base (),
-                                       m.Name,
-                                       ParamRef ("e"))));
-                       string eventName = opts.TableMemberName (dt.TableName) + "Row" + type;
-                       CodeStatement trueStmt = Eval (
-                               new CodeDelegateInvokeExpression(
-                                       new CodeEventReferenceExpression (This (), eventName),
-                                       This (), 
-                                       New (
-                                               opts.EventArgsName (dt.TableName),
-                                               Cast (opts.RowName (dt.TableName), PropRef (ParamRef ("e"), "Row")),
-                                               PropRef (ParamRef ("e"), "Action"))));
-
-                       m.Statements.Add (
-                               new CodeConditionStatement (
-                                       Inequals (EventRef (eventName), Const (null)),
-                                       new CodeStatement [] {trueStmt},
-                                       new CodeStatement [] {}));
-
-                       return m;
-               }
-
-               private CodeMemberEvent CreateTableEvent (DataTable dt, string nameSuffix)
-               {
-                       CodeMemberEvent cme = new CodeMemberEvent ();
-                       cme.Attributes = MemberAttributes.Public;
-                       cme.Name = opts.TableMemberName (dt.TableName) + nameSuffix;
-                       cme.Type = TypeRef (opts.TableDelegateName (dt.TableName));
-                       return cme;
-               }
-
-#endregion
-
-
-
-#region Row class
-
-               public CodeTypeDeclaration GenerateDataRowType (DataTable dt)
-               {
-                       CodeTypeDeclaration t = new CodeTypeDeclaration ();
-                       t.Name = opts.RowName (dt.TableName);
-                       t.BaseTypes.Add (TypeRef (typeof (DataRow)));
-
-                       t.Members.Add (CreateRowCtor (dt));
-
-                       t.Members.Add (CreateRowTableField (dt));
-
-                       foreach (DataColumn col in dt.Columns) {
-                               if (col.ColumnMapping != MappingType.Hidden) {
-                                       t.Members.Add (CreateRowColumnProperty (dt, col));
-                                       t.Members.Add (CreateRowColumnIsNull (dt, col));
-                                       t.Members.Add (CreateRowColumnSetNull (dt, col));
-                               }
-                       }
-
-                       foreach (DataRelation rel in dt.ParentRelations)
-                               t.Members.Add (CreateRowParentRowProperty (dt, rel));
-                       foreach (DataRelation rel in dt.ChildRelations)
-                               t.Members.Add (CreateRowGetChildRows (dt, rel));
-
-                       return t;
-               }
-
-               private CodeConstructor CreateRowCtor (DataTable dt)
-               {
-                       CodeConstructor c = new CodeConstructor ();
-                       c.Attributes = MemberAttributes.Assembly;
-                       c.Parameters.Add (Param (typeof (DataRowBuilder), "builder"));
-                       c.BaseConstructorArgs.Add (ParamRef ("builder"));
-                       c.Statements.Add (Let (FieldRef (GetRowTableFieldName (dt)), Cast (
-                               opts.TableTypeName (dt.TableName),
-                               PropRef ("Table"))));
-                       return c;
-               }
-               
-               private string GetRowTableFieldName (DataTable dt)
-               {
-                       return "table" + dt.TableName;
-               }
-               private CodeMemberField CreateRowTableField (DataTable dt)
-               {
-                       CodeMemberField f = new CodeMemberField ();
-                       f.Name = GetRowTableFieldName (dt);
-                       f.Type = TypeRef (opts.TableTypeName (dt.TableName));
-                       return f;
-               }
-
-               private CodeMemberProperty CreateRowColumnProperty (DataTable dt, DataColumn col)
-               {
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = opts.ColumnName (col.ColumnName);
-                       p.Type = TypeRef (col.DataType);
-                       p.Attributes = MemberAttributes.Public;
-
-                       // This part should be better than MS code output.
-                       // Code:
-                       //  object ret = this [col];
-                       //  if (ret == DBNull.Value)
-                       //    throw new StrongTypingException ()
-                       //  else
-                       //    return (type) ret;
-                       p.GetStatements.Add (VarDecl (typeof (object), "ret",
-                               IndexerRef (PropRef 
-                                       (PropRef (GetRowTableFieldName (dt)), 
-                                       opts.TableColName (col.ColumnName) + "Column"))));
-                       p.GetStatements.Add (new CodeConditionStatement (
-                               Equals (
-                                       Local ("ret"),
-                                       PropRef (TypeRefExp (typeof (DBNull)), "Value")),
-                               new CodeStatement [] {
-                                       Throw (New (typeof (StrongTypingException), Const ("Cannot get strong typed value since it is DB null."), Const (null))) },
-                               new CodeStatement [] {
-                                       Return (Cast (col.DataType, Local ("ret"))) }));
-
-                       p.SetStatements.Add (Let (IndexerRef (PropRef (PropRef (GetRowTableFieldName (dt)), opts.TableColName (col.ColumnName) + "Column")), new CodePropertySetValueReferenceExpression ()));
-
-                       return p;
-               }
-
-               private CodeMemberMethod CreateRowColumnIsNull (DataTable dt, DataColumn col)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "Is" + opts.ColumnName (col.ColumnName) + "Null";
-                       m.Attributes = MemberAttributes.Public;
-                       m.ReturnType = TypeRef (typeof (bool));
-                       m.Statements.Add (Return (MethodInvoke (
-                               "IsNull",
-                               // table[foo].[bar]Column
-                               PropRef (
-                                       PropRef (GetRowTableFieldName (dt)), 
-                                       opts.TableColName (col.ColumnName) + "Column"))));
-                       return m;
-               }
-
-               private CodeMemberMethod CreateRowColumnSetNull (DataTable dt, DataColumn col)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "Set" + opts.ColumnName (col.ColumnName) + "Null";
-                       m.Attributes = MemberAttributes.Public;
-                       m.Statements.Add (Let (IndexerRef (
-                               PropRef (
-                                       PropRef (GetRowTableFieldName (dt)), 
-                                       opts.TableColName (col.ColumnName) + "Column")),
-                               PropRef (TypeRefExp (typeof (DBNull)), "Value")));
-
-                       return m;
-               }
-
-               private CodeMemberProperty CreateRowParentRowProperty (DataTable dt, DataRelation rel)
-               {
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = opts.TableMemberName (rel.ParentTable.TableName) + "Row" +
-                               (rel.ParentTable.TableName == rel.ChildTable.TableName ? "Parent" : String.Empty);
-                       p.Attributes = MemberAttributes.Public;
-                       p.Type = TypeRef (opts.RowName (rel.ParentTable.TableName));
-                       p.GetStatements.Add (Return (Cast (p.Type, MethodInvoke (
-                               "GetParentRow",
-                               IndexerRef (
-                                       PropRef (
-                                               PropRef (
-                                                       PropRef ("Table"),
-                                                       "DataSet"),
-                                               "Relations"),
-                                       Const (rel.RelationName))))));
-                       p.SetStatements.Add (Eval (MethodInvoke (
-                               "SetParentRow",
-                               new CodePropertySetValueReferenceExpression (),
-                               IndexerRef (
-                                       PropRef (
-                                               PropRef (
-                                                       PropRef ("Table"),
-                                                       "DataSet"),
-                                               "Relations"),
-                                       Const (rel.RelationName)))));
-
-                       return p;
-               }
-
-               private CodeMemberMethod CreateRowGetChildRows (DataTable dt, DataRelation rel)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "Get" + opts.TableMemberName (rel.ChildTable.TableName) + "Rows";
-                       m.Attributes = MemberAttributes.Public;
-                       m.ReturnType = new CodeTypeReference (opts.RowName (rel.ChildTable.TableName), 1);
-                       m.Statements.Add (Return (Cast (m.ReturnType, MethodInvoke (
-                               "GetChildRows",
-                               IndexerRef (
-                                       PropRef (
-                                               PropRef (
-                                                       PropRef ("Table"),
-                                                       "DataSet"),
-                                               "Relations"),
-                                       Const (rel.RelationName))))));
-                       return m;
-               }
-
-#endregion
-
-
-#region Event class
-
-               // Code:
-               //  public class [foo]ChangeEventArgs : EventArgs
-               //  {
-               //    private [foo]Row eventRow;
-               //    private DataRowAction eventAction;
-               //    (.ctor())
-               //    (Row)
-               //    (Action)
-               //  }
-               private CodeTypeDeclaration GenerateEventType (DataTable dt)
-               {
-                       CodeTypeDeclaration t = new CodeTypeDeclaration ();
-                       t.Name = opts.EventArgsName (dt.TableName);
-                       t.BaseTypes.Add (TypeRef (typeof (EventArgs)));
-                       t.Attributes = MemberAttributes.Public;
-
-                       t.Members.Add (
-                               new CodeMemberField (
-                                       TypeRef (opts.RowName (dt.TableName)),
-                                       "eventRow"));
-                       t.Members.Add (
-                               new CodeMemberField (
-                                       TypeRef (typeof (DataRowAction)), "eventAction"));
-                       t.Members.Add (CreateEventCtor (dt));
-
-                       t.Members.Add (CreateEventRow (dt));
-
-                       t.Members.Add (CreateEventAction (dt));
-
-                       return t;
-               }
-
-               // Code:
-               //  public [foo]RowChangeEventArgs ([foo]Row r, DataRowAction a)
-               //  {
-               //    eventRow = r;
-               //    eventAction = a;
-               //  }
-               private CodeConstructor CreateEventCtor (DataTable dt)
-               {
-                       CodeConstructor c = new CodeConstructor ();
-                       c.Attributes = MemberAttributes.Public;
-                       c.Parameters.Add (Param (TypeRef (opts.RowName (dt.TableName)), "r"));
-                       c.Parameters.Add (Param (TypeRef (typeof (DataRowAction)), "a"));
-                       c.Statements.Add (Let (FieldRef ("eventRow"), ParamRef ("r")));
-                       c.Statements.Add (Let (FieldRef ("eventAction"), ParamRef ("a")));
-
-                       return c;
-               }
-
-               // Code:
-               //  public [foo]Row Row {
-               //   get { return eventRow; }
-               // }
-               private CodeMemberProperty CreateEventRow (DataTable dt)
-               {
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "Row";
-                       p.Attributes = MemberAttributes.Public | MemberAttributes.Final;
-                       p.Type = TypeRef (opts.RowName (dt.TableName));
-                       p.HasSet = false;
-                       p.GetStatements.Add (Return (FieldRef ("eventRow")));
-                       return p;
-               }
-
-               // Code:
-               //  public DataRowAction Action {
-               //   get { return eventAction; }
-               // }
-               private CodeMemberProperty CreateEventAction (DataTable dt)
-               {
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "Action";
-                       p.Attributes = MemberAttributes.Public | MemberAttributes.Final;
-                       p.Type = TypeRef (typeof (DataRowAction));
-                       p.HasSet = false;
-                       p.GetStatements.Add (Return (FieldRef ("eventAction")));
-                       return p;
-               }
-
-#endregion
-
-#region Table Adapter class
-               
-               private CodeTypeDeclaration GenerateTableAdapterType (TableAdapterSchemaInfo taInfo)
-               {
-                       CodeTypeDeclaration t = new CodeTypeDeclaration ();
-                       t.Name = opts.TableAdapterName (taInfo.Name);
-                       t.BaseTypes.Add (TypeRef (taInfo.BaseClass));
-               
-                       t.Members.Add (CreateTableAdapterDefaultCtor ());
-
-                       // table adapter fields/properties
-                       CreateDBAdapterFieldAndProperty (t, taInfo.Adapter);
-                       CreateDBConnectionFieldAndProperty (t, taInfo.Connection);
-                       
-                       DbCommand cmd = null;
-                       if (taInfo.Commands.Count > 0)
-                               cmd = ((DbCommandInfo)taInfo.Commands[0]).Command;
-                       else
-                               cmd = taInfo.Provider.CreateCommand ();
-                       CreateDBCommandCollectionFieldAndProperty (t, cmd);
-                       CreateAdapterClearBeforeFillFieldAndProperty (t);
-
-                       CreateAdapterInitializeMethod (t, taInfo);
-                       CreateConnectionInitializeMethod (t, taInfo);
-                       CreateCommandCollectionInitializeMethod (t, taInfo);
-
-                       CreateDbSourceMethods (t, taInfo);
-                       if (taInfo.ShortCommands)
-                               CreateShortCommandMethods (t, taInfo);
-                       
-                       return t;
-               }
-               
-               private CodeConstructor CreateTableAdapterDefaultCtor ()
-               {
-                       CodeConstructor ctor = new CodeConstructor ();
-                       ctor.Attributes = MemberAttributes.Public;
-                       ctor.Statements.Add (Let (PropRef ("ClearBeforeFill"), Const (true)));
-                       
-                       return ctor;
-               }       
-
-               private void CreateDBAdapterFieldAndProperty (CodeTypeDeclaration t, DbDataAdapter adapter)
-               {
-                       CodeExpression expr;
-                       CodeStatement setStmt;
-                       CodeStatement stmt;
-                       CodeMemberField f = new CodeMemberField ();
-                       f.Name = "_adapter";
-                       f.Type = TypeRef (adapter.GetType ());
-                       t.Members.Add (f);
-                       
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "Adapter";
-                       p.Attributes = MemberAttributes.Private;
-                       p.Type = f.Type;
-                       p.HasSet = false;
-
-                       expr = FieldRef ("_adapter");
-                       setStmt = Eval (MethodInvoke ("InitAdapter"));
-                       stmt = new CodeConditionStatement (Equals (expr, Const (null)),
-                                                          new CodeStatement [] {setStmt},
-                                                          new CodeStatement [] {});
-                       p.GetStatements.Add (stmt);
-                       p.GetStatements.Add (Return (expr));
-                       t.Members.Add (p);
-               }
-               
-               private void CreateDBConnectionFieldAndProperty (CodeTypeDeclaration t, DbConnection conn)
-               {
-                       CodeExpression expr;
-                       CodeStatement setStmt;
-                       CodeStatement stmt;
-                       CodeMemberField f = new CodeMemberField ();
-                       f.Name = "_connection";
-                       f.Type = TypeRef (conn.GetType ());
-                       t.Members.Add (f);
-
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "Connection";
-                       p.Attributes = MemberAttributes.Assembly;
-                       p.Type = f.Type;
-
-                       expr = FieldRef ("_connection");
-                       setStmt = Eval (MethodInvoke ("InitConnection"));
-                       stmt = new CodeConditionStatement (Equals (expr, Const (null)),
-                                                          new CodeStatement [] {setStmt},
-                                                          new CodeStatement [] {});
-                       p.GetStatements.Add (stmt);
-                       p.GetStatements.Add (Return (expr));
-                       p.SetStatements.Add (Let (expr, new CodePropertySetValueReferenceExpression()));
-
-                       // update connection in Insert/Delete/Update commands of adapter
-                                               
-                       // insert command
-                       string cmdStr = "InsertCommand";
-                       string connStr = "Connection";
-                       setStmt = null;
-                       stmt = null;
-                       expr = null;
-
-                       expr = PropRef (PropRef ("Adapter"), cmdStr);
-                       setStmt = Let (PropRef (expr, connStr), new CodePropertySetValueReferenceExpression());
-                       stmt = new CodeConditionStatement (Inequals (expr, Const (null)),
-                                                          new CodeStatement [] {setStmt},
-                                                          new CodeStatement [] {});                    
-                       p.SetStatements.Add (stmt);
-
-                       // delete command
-                       setStmt = null;
-                       stmt = null;
-                       expr = null;
-                       
-                       cmdStr = "DeleteCommand";
-                       expr = PropRef (PropRef ("Adapter"), cmdStr);
-                       setStmt = Let (PropRef (expr, connStr), new CodePropertySetValueReferenceExpression());
-                       stmt = new CodeConditionStatement (Inequals (expr, Const (null)),
-                                                          new CodeStatement [] {setStmt}, new CodeStatement [] {});
-                       p.SetStatements.Add (stmt);
-
-                       // update command
-                       setStmt = null;
-                       stmt = null;
-
-                       cmdStr = "UpdateCommand";
-                       expr = PropRef (PropRef ("Adapter"), cmdStr);                   
-                       setStmt = Let (PropRef (expr, connStr), new CodePropertySetValueReferenceExpression());
-                       stmt = new CodeConditionStatement (Inequals (expr, Const (null)),
-                                                          new CodeStatement [] {setStmt}, new CodeStatement [] {});
-                       p.SetStatements.Add (stmt);
-
-                       // iterate through command collection and update it
-                       setStmt = null;
-                       expr = null;
-                       stmt = null;
-                       setStmt = VarDecl (typeof (int), "i", Const (0));
-                       expr = LessThan (Local ("i"), PropRef (PropRef ("CommandCollection"), "Length"));
-                       stmt = Let (Local ("i"), Compute (Local ("i"), Const (1), CodeBinaryOperatorType.Add));
-                       
-                       // statements to execute in the loop
-                       CodeExpression expr1 = IndexerRef (PropRef ("CommandCollection"), Local ("i"));
-                       CodeStatement setStmt1 = Let (PropRef (expr1, "Connection"), new CodePropertySetValueReferenceExpression());
-                       CodeStatement stmt1 = new CodeConditionStatement (Inequals (expr1, Const (null)),
-                                                          new CodeStatement [] {setStmt1}, new CodeStatement [] {});
-                       CodeIterationStatement forLoop = new CodeIterationStatement (setStmt, expr, stmt,
-                                                                                    new CodeStatement[] {stmt1});
-                       p.SetStatements.Add (forLoop);                                          
-                       t.Members.Add (p);
-               }
-
-               private void CreateDBCommandCollectionFieldAndProperty (CodeTypeDeclaration t, DbCommand cmd)
-               {
-                       CodeExpression expr;
-                       CodeStatement setStmt;
-                       CodeStatement stmt;
-                       CodeMemberField f = new CodeMemberField ();
-                       f.Name = "_commandCollection";
-                       f.Type = TypeRefArray (cmd.GetType (), 1);
-                       t.Members.Add (f);
-                       
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "CommandCollection";
-                       p.Attributes = MemberAttributes.Family;
-                       p.Type = f.Type;
-                       p.HasSet = false;
-
-                       expr = FieldRef ("_commandCollection");
-                       setStmt = Eval (MethodInvoke ("InitCommandCollection"));
-                       stmt = new CodeConditionStatement (Equals (expr, Const (null)),
-                                                          new CodeStatement [] {setStmt},
-                                                          new CodeStatement [] {});
-                       p.GetStatements.Add (stmt);
-                       p.GetStatements.Add (Return (expr));
-                       t.Members.Add (p);
-               }
-
-               private void CreateAdapterClearBeforeFillFieldAndProperty (CodeTypeDeclaration t)
-               {
-                       CodeMemberField f = new CodeMemberField ();
-                       f.Name = "_clearBeforeFill";
-                       f.Type = TypeRef (typeof (bool));
-                       t.Members.Add (f);
-                       
-                       CodeMemberProperty p = new CodeMemberProperty ();
-                       p.Name = "ClearBeforeFill";
-                       p.Attributes = MemberAttributes.Public;
-                       p.Type = f.Type;
-                       p.SetStatements.Add (Let (FieldRef ("_clearBeforeFill"), 
-                                                 new CodePropertySetValueReferenceExpression()));
-                       p.GetStatements.Add (Return (FieldRef ("_clearBeforeFill")));
-                       t.Members.Add (p);
-               }
-
-               private void CreateAdapterInitializeMethod (CodeTypeDeclaration t, TableAdapterSchemaInfo taInfo)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "InitAdapter";
-                       m.Attributes = MemberAttributes.Private;
-                       
-                       // code statements
-                       CodeExpression expr;
-                       CodeStatement stmt;
-                       
-                       // initialize adapter
-                       expr = FieldRef ("_adapter");
-                       stmt = Let (expr, New (taInfo.Adapter.GetType ()));
-                       m.Statements.Add (stmt);
-                       
-                       // populate tableMapping
-                       stmt = VarDecl (typeof (DataTableMapping), "tableMapping", null);
-                       m.Statements.Add (stmt);
-                       foreach (DataTableMapping tblMap in taInfo.Adapter.TableMappings) {
-                               expr = Local ("tableMapping");
-                               stmt = Let (expr, New (tblMap.GetType ()));
-                               m.Statements.Add (stmt);
-                               
-                               stmt = Let (PropRef (expr, "SourceTable"), Const (tblMap.SourceTable));
-                               m.Statements.Add (stmt);
-                               
-                               stmt = Let (PropRef (expr, "DataSetTable"), Const (tblMap.DataSetTable));
-                               m.Statements.Add (stmt);
-                               
-                               foreach (DataColumnMapping colMap in tblMap.ColumnMappings) { 
-                                       stmt = Eval (MethodInvoke (PropRef (expr, "ColumnMappings"), "Add", 
-                                                                  new CodeExpression [] {Const (colMap.SourceColumn), Const (colMap.DataSetColumn)}));
-                                       m.Statements.Add (stmt);
-                               }
-                               expr = PropRef (FieldRef ("_adapter"), "TableMappings");
-                               stmt = Eval (MethodInvoke (expr, "Add", Local ("tableMapping")));
-                               m.Statements.Add (stmt);
-                       }
-                       // Generate code for adapter's deletecommand
-                       expr = PropRef (FieldRef ("_adapter"), "DeleteCommand");
-                       DbCommand cmd = taInfo.Adapter.DeleteCommand;
-                       AddDbCommandStatements (m, expr, cmd);
-
-                       // Generate code for adapter's insertcommand
-                       expr = PropRef (FieldRef ("_adapter"), "InsertCommand");
-                       cmd = taInfo.Adapter.InsertCommand;
-                       AddDbCommandStatements (m, expr, cmd);
-
-                       // Generate code for adapter's updatecommand
-                       expr = PropRef (FieldRef ("_adapter"), "UpdateCommand");
-                       cmd = taInfo.Adapter.UpdateCommand;
-                       AddDbCommandStatements (m, expr, cmd);
-
-                       t.Members.Add (m);
-               }
-               
-               private void AddDbCommandStatements (CodeMemberMethod m, 
-                                                    CodeExpression expr, 
-                                                    DbCommand cmd)
-               {
-                       if (cmd == null)
-                               return;
-                       
-                       CodeExpression expr1;
-                       CodeStatement stmt = Let (expr, New (cmd.GetType ()));
-                       m.Statements.Add (stmt);
-                       
-                       stmt = Let (PropRef (expr,"Connection"), PropRef ("Connection"));
-                       m.Statements.Add (stmt);
-                       stmt = Let (PropRef (expr, "CommandText"), Const (cmd.CommandText));
-                       m.Statements.Add (stmt);
-                       expr1 = PropRef (Local(typeof (CommandType).FullName), cmd.CommandType.ToString ());
-                       stmt = Let (PropRef (expr, "CommandType"), expr1);
-                       m.Statements.Add (stmt);
-                       
-                       expr1 = PropRef (expr, "Parameters");
-                       foreach (DbParameter param in cmd.Parameters) {
-                               AddDbParameterStatements (m, expr1, param);
-                       }
-               }
-               
-               private void AddDbParameterStatements (CodeMemberMethod m, 
-                                                      CodeExpression expr, 
-                                                      DbParameter param)
-               {
-                       object dbType = param.FrameworkDbType;
-                       string srcColumn = null;
-                       
-                       if (param.SourceColumn != String.Empty)
-                               srcColumn = param.SourceColumn;
-                       
-                       CodeExpression[] args = new CodeExpression[] {
-                               Const (param.ParameterName),
-                               PropRef (Local(dbType.GetType().FullName), dbType.ToString ()), 
-                               Const (param.Size),
-                               PropRef(Local(typeof (ParameterDirection).FullName), param.Direction.ToString ()),
-                               Const (param.IsNullable),
-                               Const (((IDbDataParameter)param).Precision),
-                               Const (((IDbDataParameter)param).Scale),
-                               Const (srcColumn),
-                               PropRef (Local (typeof (DataRowVersion).FullName), param.SourceVersion.ToString ()),
-                               /* Const (param.SourceColumnNullMapping), */ // TODO: Investigate with other providers
-                               Const (param.Value)
-                       };
-                       m.Statements.Add (Eval (MethodInvoke (expr, "Add", New (param.GetType (), args))));
-               }
-               private void CreateConnectionInitializeMethod (CodeTypeDeclaration t, 
-                                                              TableAdapterSchemaInfo taInfo)
-               {
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "InitConnection";
-                       m.Attributes = MemberAttributes.Private;
-                       
-                       // code statements
-                       CodeExpression expr, expr1;
-                       CodeStatement stmt;
-                       
-                       // initialize connection
-                       expr = FieldRef ("_connection");
-                       stmt = Let (expr, New (taInfo.Connection.GetType ()));
-                       m.Statements.Add (stmt);
-                       
-                       // assign connection string
-                       expr = PropRef (FieldRef ("_connection"), "ConnectionString");
-                       expr1 = IndexerRef (PropRef (Local (typeof (System.Configuration.ConfigurationManager).ToString()), "ConnectionStrings"), 
-                                           Const (taInfo.ConnectionString));
-                       stmt = Let (expr, PropRef (expr1, "ConnectionString"));
-                       m.Statements.Add (stmt);
-                       
-                       t.Members.Add (m);
-               }
-               
-               private void CreateCommandCollectionInitializeMethod (CodeTypeDeclaration t, 
-                                                                     TableAdapterSchemaInfo taInfo)
-               {
-                       //string tmp = null;
-                       Type type;
-                       CodeMemberMethod m = new CodeMemberMethod ();
-                       m.Name = "InitCommandCollection";
-                       m.Attributes = MemberAttributes.Private;
-                       
-                       // code statements
-                       CodeExpression expr, expr1;
-                       CodeStatement stmt;
-                       
-                       type = ((DbCommandInfo)taInfo.Commands[0]).Command.GetType();
-                       
-                       // initialize connection
-                       expr = FieldRef ("_commandCollection");
-                       stmt = Let (expr, NewArray (type, taInfo.Commands.Count));
-                       m.Statements.Add (stmt);
-                       
-                       // loop through the collection and generate the code
-                       for (int idx = 0; idx < taInfo.Commands.Count; idx++) {
-                               DbCommand cmd = ((DbCommandInfo)taInfo.Commands[idx]).Command;
-                               // Allocate
-                               expr1 = IndexerRef (expr, Const (idx));
-                               stmt = Let (expr1, New (type));
-                               m.Statements.Add (stmt);
-                               
-                               // Initialize cmd members
-                               stmt = Let (PropRef (expr1, "Connection"), PropRef ("Connection"));
-                               m.Statements.Add (stmt);
-                               stmt = Let (PropRef (expr1, "CommandText"), Const (cmd.CommandText));
-                               m.Statements.Add (stmt);
-                               stmt = Let (PropRef (expr1, "CommandType"), 
-                                           PropRef (Local(typeof (CommandType).FullName), cmd.CommandType.ToString ()));
-                               m.Statements.Add (stmt);
-                               expr1 = PropRef (expr1, "Parameters");
-                               foreach (DbParameter param in cmd.Parameters) {
-                                       AddDbParameterStatements (m, expr1, param);
-                               }
-                       }               
-                       t.Members.Add (m);
-               }
-               
-               private void CreateDbSourceMethods (CodeTypeDeclaration t, 
-                                                   TableAdapterSchemaInfo taInfo)
-               {
-                       string tmp = null;
-                       CodeMemberMethod m = null;
-                       CodeExpression expr, expr1, expr2;
-                       CodeStatement stmt;
-                       string tmpScalarVal = null;
-                       
-                       expr = PropRef (PropRef ("Adapter"), "SelectCommand");
-                       // loop through the collection and generate the code
-                       for (int idx = 0; idx < taInfo.Commands.Count; idx++) {
-                               DbCommandInfo cmdInfo = (DbCommandInfo)taInfo.Commands[idx];
-                               
-                               foreach (DbSourceMethodInfo mInfo in cmdInfo.Methods) {
-                                       //Console.WriteLine ("Generating code for {0} method", mInfo.Name);
-                                       
-                                       // TODO: Add support for Fill methods
-                                       if (mInfo.MethodType == GenerateMethodsType.Fill)
-                                               continue;
-                                       
-                                       m = new CodeMemberMethod ();
-                                       m.Name = mInfo.Name;
-                                       
-                                       stmt = Let (expr, IndexerRef (PropRef ("CommandCollection"), Const (idx)));
-                                       m.Statements.Add (stmt);
-                                       
-                                       switch ((MemberAttributes) Enum.Parse (typeof (MemberAttributes), mInfo.Modifier)) {
-                                               case MemberAttributes.Public:
-                                                       m.Attributes = MemberAttributes.Public;
-                                                       break;
-
-                                               case MemberAttributes.Private:
-                                                       m.Attributes = MemberAttributes.Private;
-                                                       break;
-                                               
-                                               case MemberAttributes.Assembly:
-                                                       m.Attributes = MemberAttributes.Assembly;
-                                                       break;
-                                               
-                                               case MemberAttributes.Family:
-                                                       m.Attributes = MemberAttributes.Family;
-                                                       break;
-                                       }
-                                       //Console.WriteLine ("QueryType: {0}", mInfo.QueryType);
-                                       QueryType qType = (QueryType) Enum.Parse (typeof (QueryType), mInfo.QueryType);
-                                       switch (qType) {
-                                               case QueryType.Scalar:
-                                               case QueryType.NoData:
-                                                       // executes non query and returns status
-                                                       m.ReturnType = TypeRef (typeof (int));
-                                                       AddGeneratedMethodParametersAndStatements (m, expr, cmdInfo.Command);
-                                               
-                                                       // store connection state
-                                                       tmp = typeof (System.Data.ConnectionState).FullName;
-                                                       expr1 = PropRef (Local ("command"), "Connection");
-                                                       expr2 = PropRef (PropRef (Local ("System"), "Data"), "ConnectionState");
-                                                       stmt = VarDecl (tmp, "previousConnectionState", PropRef (expr1, "State"));
-                                                       m.Statements.Add (stmt);
-                                                       
-                                                       // Open connection, if its not already
-                                                       CodeExpression expr3 = BitOps (PropRef (expr1, "State"), PropRef (expr2, "Open"),
-                                                                                  CodeBinaryOperatorType.BitwiseAnd);
-                                                       stmt = new CodeConditionStatement (Inequals (expr3, PropRef (expr2, "Open")), 
-                                                                                                         new CodeStatement[] {Eval (MethodInvoke (expr1, "Open", 
-                                                                                                                                                                       new CodeExpression[] {}))},
-                                                                                                         new CodeStatement[] {});
-                                                       m.Statements.Add (stmt);
-                                               
-                                                       // declare return variable and execute query
-                                                       CodeTryCatchFinallyStatement try1 = new CodeTryCatchFinallyStatement ();
-                                               
-                                                       if (qType == QueryType.NoData) {
-                                                               m.Statements.Add (VarDecl (typeof (int), "returnValue", null));
-                                                               expr3 = MethodInvoke (Local ("command"), "ExecuteNonQuery", new CodeExpression[] {});
-                                                       } else {
-                                                               tmpScalarVal = mInfo.ScalarCallRetval.Substring (0, mInfo.ScalarCallRetval.IndexOf (','));
-                                                               m.Statements.Add (VarDecl (TypeRef (tmpScalarVal).BaseType, "returnValue", null));
-                                                               expr3 = MethodInvoke (Local ("command"), "ExecuteScalar", new CodeExpression[] {});
-                                                       }
-                                               
-                                                       // Execute query
-                                                       try1.TryStatements.Add (Let (Local ("returnValue"), expr3));
-                                                       
-                                                       // fill finally block
-                                                       stmt = new CodeConditionStatement (Equals (Local ("previousConnectionState"), PropRef (expr2, "Closed")), 
-                                                                                                                               new CodeStatement[] {Eval (MethodInvoke (expr1, "Close", 
-                                                                                                                                                                       new CodeExpression[] {}))},
-                                                                                                                               new CodeStatement[] {});
-                                                       try1.FinallyStatements.Add (stmt);
-                                                       m.Statements.Add (try1);
-                                               
-                                                       // return the value
-                                                       if (qType == QueryType.NoData) {
-                                                               m.Statements.Add (Return (Local ("returnValue")));
-                                                       } else {
-                                                               expr2 = Equals (Local ("returnValue"), Const (null));
-                                                               expr3 = Equals (MethodInvoke (Local ("returnValue"), "GetType", new CodeExpression[] {}), 
-                                                                               TypeOfRef ("System.DBNull"));
-                                                               stmt = new CodeConditionStatement (BooleanOps (expr2, expr3, CodeBinaryOperatorType.BooleanOr), 
-                                                                                                       new CodeStatement[] {Return (Const (null))},
-                                                                                                                                       new CodeStatement[] {Return (Cast (tmpScalarVal, Local ("returnValue")))});
-                                                               m.Statements.Add (stmt);
-                                                       }
-                                               
-                                                       break;
-
-                                               case QueryType.Rowset:
-                                                       // returns DataTable
-                                                       // TODO: Handle multiple DataTables
-                                                       tmp = opts.DataSetName (ds.DataSetName) + "." + opts.TableTypeName (ds.Tables[0].TableName);
-                                                       m.ReturnType = TypeRef (tmp);
-
-                                                       AddGeneratedMethodParametersAndStatements (m, expr, cmdInfo.Command);
-                                                       stmt = VarDecl (tmp, "dataTable", New (tmp));
-                                                       m.Statements.Add (stmt);
-
-                                                       // fill datatable
-                                                       expr = PropRef ("Adapter");
-                                                       stmt = Eval (MethodInvoke (expr, "Fill", Local ("dataTable")));
-                                                       m.Statements.Add (stmt);
-
-                                                       // return statement
-                                                       m.Statements.Add (Return (Local ("dataTable")));
-                                                       break;
-                                       }
-                                       t.Members.Add (m);
-                               }                       
-                       }
-               }
-               
-               private void AddGeneratedMethodParametersAndStatements (CodeMemberMethod m, 
-                                                                       CodeExpression expr,
-                                                                       DbCommand cmd)
-               {
-                       CodeStatement stmt;
-                       CodeExpression expr1;
-                       int idx = 0;
-                       string tmp;
-
-                       foreach (DbParameter param in cmd.Parameters) {
-                               if (param.Direction != ParameterDirection.ReturnValue) {
-                                       if (param.ParameterName[0] == '@')
-                                               tmp = param.ParameterName.Substring (1);
-                                       else
-                                               tmp = param.ParameterName;
-                                       if (param.SystemType != null)
-                                               m.Parameters.Add (Param (TypeRef(param.SystemType), tmp));
-                                       expr1 = IndexerRef (PropRef (expr, "Parameters"), Const (idx));
-                                       stmt = Let (expr1, ParamRef (tmp));
-                                       m.Statements.Add (stmt);
-                               }
-                               idx++;
-                       }
-               }
-               
-               private void CreateShortCommandMethods (CodeTypeDeclaration t, TableAdapterSchemaInfo taInfo)
-               {
-                       
-               }
-               
-#endregion
-
-       }
-       
-}
-
-
-/* =========================================================
-
-
-MonoDataSetGenerator API notes
-
-
-** generator API:
-       CreateDataSetClasses (
-               DataSet ds,
-               CodeNamespace cns,
-               ICodeGenerator gen,
-               GeneratorOptions options)
-
-** classes:
-
-*** Code naming method delegate
-
-       public delegate string CodeNamingMethod (string sourceName);
-
-       It is used in CodeGeneratorOptions (describled immediately below).
-
-
-
-*** Generator Options
-
-       public bool MakeClassesInsideDataSet
-               indicates whether classes and delegates other than DataSet
-               itself are "contained" in the DataSet class or not.
-
-       public CodeNamingMethod CreateDataSetName;
-       public CodeNamingMethod CreateTableTypeName;
-       public CodeNamingMethod CreateTableMemberName;
-       public CodeNamingMethod CreateColumnName;
-       public CodeNamingMethod CreateRowName;
-       public CodeNamingMethod CreateRelationName;
-       public CodeNamingMethod CreateTableDelegateName;
-       public CodeNamingMethod CreateEventArgsName;
-               Custom methods each of that returns type or member name.
-
-               By default, they are set as to useTypedDataSetGenerator.
-               CreateIdName() with modifications listed as below:
-
-               DataSetName: as is
-               TableTypeName: "DataTable" suffix
-               TableMemberName: as is
-               ColumnName: as is
-               RowName: "Row" suffix
-               RelationName: (TBD; maybe had better have another delegate type)
-               DelegateName: "RowChangedEventHandler" suffix
-               EventArgsName: "RowChangedEventArgs" suffix
-
-** Auto Generated classes
-
-1. Custom DataSet class 
-
-       class name = dataset name, encoded by options.CreateDataSetName().
-
-*** .ctor
-
-       public default .ctor()
-               "initialize" class.
-               set custom delegate on Tables.CollectionChanged
-               set custom delegate on Relations.CollectionChanged
-
-       runtime serialization .ctor()
-               TBD
-
-*** public members
-
-       data tables: [foo]DataTable foo { return this.table[foo]; }
-
-       Clone()
-               init variables on new dataset.
-
-*** protected members
-
-       ShouldSerializeTables()
-               returns false, while default DataSet returns true.
-       ShouldSerializeRelations()
-               returns false, while default DataSet returns true.
-
-       ReadXmlSerializable() ... similar to runtime serialization
-               TBD
-
-       GetSchemaSerializable()
-               Write its schema to temporary MemoryStream
-               Read XML schema from the stream
-
-*** internal members
-
-       "init variables"
-               set member fields (tables, relations)
-               call members' "init variables"
-
-       "init class"
-               set DataSetName, Prefix, Namespace, Locale, CaseSensitive, EnforceConstraints
-               for each table
-                       allocate table[foo] 
-                       Tables.Add() 
-                       create FKC: new FKC([rel], new DataColumn [] {table[foo].[keyColumnName]Column}, new DataColumn [] {table[child].[childColName]Column}
-               fill Rule properties.
-               allocate relation[rel] and fill Nested, then Relations.Add()
-
-*** private members
-
-       data tables: [foo]DataTable table[foo];
-
-       data relations: DataRelation relation[rel];
-
-       ShouldSerialize[foo]
-
-
-
-2. Custom DataTable classes for each DataTable
-
-       This class is created under the dataset.
-
-*** internal members
-
-       .ctor() : base("[foo]")
-               initialize class
-
-       .ctor(DataTable)
-               wtf?
-
-       DataColumn [bar]Column { return column[bar]; }
-
-       "init variables"()
-               fill each column fields
-
-*** public members
-
-       int Count { rowcount }
-
-       this [int index] { row [i]; }
-
-       event [foo]RowChangedEventHandler [foo]RowChanged
-       event [foo]RowChangedEventHandler [foo]RowChanging
-       event [foo]RowChangedEventHandler [foo]RowDeleted
-       event [foo]RowChangedEventHandler [foo]RowDeleting
-
-       void Add[foo]Row ([foo]Row row) { Rows.Add (row); }
-
-       [foo]Row Add[foo]Row ([columnType] [columnName])
-               create new [foo]row.
-               set members
-               Rows.Add ()
-               // where
-               //      non-relation-children are just created as column type
-               //      relation-children are typeof fooRow[]
-
-       GetEnumerator() { Rows.GetEnumerator (); }
-
-       override DataTable Clone()
-               "init variables"
-
-       [foo]Row New[foo]Row()
-
-       void Remove[foo]Row([foo]Row)
-
-       //for each ChildRelations
-       [bar]Row [] Get[foo_bar]Rows ()
-
-*** protected members
-
-       override DataTable CreateInstance() { return new }
-
-       override DataRow NewRowFromBuilder(DataRowBuilder)
-
-       override Type GetRowType()
-
-       override void OnRowChanged(DataRowChangedEventArgs)
-               base.()
-               check this event [foo]RowChanged.
-
-       override void OnRowChanging(DataRowChangedEventArgs)
-       override void OnRowDeleted(DataRowChangedEventArgs)
-       override void OnRowDeleting(DataRowChangedEventArgs)
-       ... as well
-
-*** private members
-
-       "initialize class"
-               for each columns {
-                       column[bar] = new DataColumn (...);
-                       Columns.Add()
-               }
-
-       DataColumn [bar]Column
-
-3. Custom DataRow classses
-
-*** public members
-
-       for simple members:
-
-               [bar_type] [bar] {
-                       get { try { } catch { throw StrongTypingException(); }
-                       set { this [[foo]Table.[bar]Column] = value; }
-
-               bool Is[bar]Null ()
-                       IsNull ([foo]Table.[bar]Column);
-
-               void Set[bar]Null ()
-
-       if the table is parent of some relations
-
-               public [child]Row [] Get[child]Rows()
-
-*** internal members
-
-       .ctor(DataRowBuilder) : base.()
-               table[foo] = Table;
-
-*** private members
-
-       [foo]DataTable table[foo]
-
-
-4. Custom DataRowChangeEvent classes
-
-*** private members
-
-       [foo]Row eventRow
-       DataRowAction eventAction
-
-*** public members
-
-       .ctor([foo]Row row, DataRowAction action)
-
-       [foo]Row Row
-
-       DataRowAction Action
-
-
-
-5. public Table RowChangedEventHandler delegates
-
-       [foo]RowChangedEventHandler(object, [foo]RowChangedEvent e)
-
-
-======================================================== */
diff --git a/mcs/class/System.Data/System.Data/DBConcurrencyException.cs b/mcs/class/System.Data/System.Data/DBConcurrencyException.cs
deleted file mode 100644 (file)
index 4c3b363..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// System.Data.DBConcurrencyException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public sealed class DBConcurrencyException : SystemException
-       {
-               DataRow [] rows;
-
-               #region Constructors
-
-               public DBConcurrencyException ()
-                       : base ("Concurrency violation.")
-               {
-               }
-
-               public DBConcurrencyException (string message)
-                       : base (message)
-               {
-               }
-
-               public DBConcurrencyException (string message, Exception inner)
-                       : base (message, inner)
-               {
-               }
-
-               public
-               DBConcurrencyException (string message, Exception inner, DataRow[] dataRows)
-                       : base (message, inner)
-               {
-                       rows = dataRows;
-               }
-
-               private DBConcurrencyException (SerializationInfo si, StreamingContext sc) : base(si, sc)
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public DataRow Row {
-                       get {
-                               if (rows != null)
-                                       return rows [0];
-                               return null;
-                       }
-                       set { rows = new DataRow [] { value };}
-               }
-
-               public int RowCount {
-                       get {
-                               if (rows != null)
-                                       return rows.Length;
-                               return 0;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               [MonoTODO]
-               public void CopyToRows (DataRow [] array)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public void CopyToRows (DataRow [] array, int arrayIndex)
-               {
-                       throw new NotImplementedException ();
-               }
-               public override void GetObjectData (SerializationInfo si, StreamingContext context)
-               {
-                       if (si == null)
-                               throw new ArgumentNullException ("si");
-
-                       base.GetObjectData (si, context);
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataCategoryAttribute.cs b/mcs/class/System.Data/System.Data/DataCategoryAttribute.cs
deleted file mode 100644 (file)
index 5b1b475..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-// 
-// System.Data/DataCategoryAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data {
-       [AttributeUsage (AttributeTargets.All)]
-       internal sealed class DataCategoryAttribute : CategoryAttribute
-       {
-               #region Fields
-
-//             string category;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public DataCategoryAttribute (string category)
-               {
-//                     this.category = category; 
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-
-               [MonoTODO]
-               protected override string GetLocalizedString (string value)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataColumn.cs b/mcs/class/System.Data/System.Data/DataColumn.cs
deleted file mode 100644 (file)
index 1631f10..0000000
+++ /dev/null
@@ -1,877 +0,0 @@
-//\r
-// System.Data.DataColumn.cs\r
-//\r
-// Author:\r
-//   Franklin Wise (gracenote@earthlink.net)\r
-//   Christopher Podurgiel (cpodurgiel@msn.com)\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Daniel Morgan (danmorg@sc.rr.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//\r
-// (C) Copyright 2002, Franklin Wise\r
-// (C) Chris Podurgiel\r
-// (C) Ximian, Inc 2002\r
-// Copyright (C) Tim Coleman, 2002\r
-// Copyright (C) Daniel Morgan, 2002, 2003\r
-//\r
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-// Copyright (C) 2011 Xamarin Inc (http://www.xamarin.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-//\r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-//\r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.ComponentModel;\r
-using System.Reflection;\r
-using System.Collections;\r
-using System.Data.Common;\r
-using System.Data.SqlTypes;\r
-using System.Globalization;\r
-using Mono.Data.SqlExpressions;\r
-\r
-namespace System.Data {\r
-       internal delegate void DelegateColumnValueChange (DataColumn column, DataRow row, object proposedValue);\r
-\r
-       /// <summary>\r
-       /// Summary description for DataColumn.\r
-       /// </summary>\r
-\r
-       [Editor ("Microsoft.VSDesigner.Data.Design.DataColumnEditor, " + Consts.AssemblyMicrosoft_VSDesigner,\r
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]\r
-       [ToolboxItem (false)]\r
-       [DefaultProperty ("ColumnName")]\r
-       [DesignTimeVisible (false)]\r
-       public class DataColumn : MarshalByValueComponent {\r
-#region Events\r
-               EventHandlerList _eventHandlers = new EventHandlerList ();\r
-\r
-               //used for constraint validation\r
-               //if an exception is fired during this event the change should be canceled\r
-               //[MonoTODO]\r
-               //internal event DelegateColumnValueChange ValidateColumnValueChange;\r
-\r
-               //used for FK Constraint Cascading rules\r
-               //[MonoTODO]\r
-               //internal event DelegateColumnValueChange ColumnValueChanging;\r
-\r
-               static readonly object _propertyChangedKey = new object ();\r
-               internal event PropertyChangedEventHandler PropertyChanged {\r
-                       add { _eventHandlers.AddHandler (_propertyChangedKey, value); }\r
-                       remove { _eventHandlers.RemoveHandler (_propertyChangedKey, value); }\r
-               }\r
-\r
-               #endregion //Events\r
-\r
-               #region Fields\r
-\r
-               private bool _allowDBNull = true;\r
-               private bool _autoIncrement;\r
-               private long _autoIncrementSeed;\r
-               private long _autoIncrementStep = 1;\r
-               private long _nextAutoIncrementValue;\r
-               private string _caption;\r
-               private MappingType _columnMapping;\r
-               private string _columnName = String.Empty;\r
-               private object _defaultValue = GetDefaultValueForType (null);\r
-               private string _expression;\r
-               private IExpression _compiledExpression;\r
-               private PropertyCollection _extendedProperties = new PropertyCollection ();\r
-               private int _maxLength = -1; //-1 represents no length limit\r
-               private string _nameSpace;\r
-               private int _ordinal = -1; //-1 represents not part of a collection\r
-               private string _prefix = String.Empty;\r
-               private bool _readOnly;\r
-               private DataTable _table;\r
-               private bool _unique;\r
-               private DataContainer _dataContainer;\r
-\r
-               #endregion // Fields\r
-\r
-               #region Constructors\r
-\r
-               public DataColumn ()\r
-                       : this (String.Empty, typeof (string), String.Empty, MappingType.Element)\r
-               {\r
-               }\r
-\r
-               //TODO: Ctor init vars directly\r
-               public DataColumn (string columnName)\r
-                       : this (columnName, typeof (string), String.Empty, MappingType.Element)\r
-               {\r
-               }\r
-\r
-               public DataColumn (string columnName, Type dataType)\r
-                       : this (columnName, dataType, String.Empty, MappingType.Element)\r
-               {\r
-               }\r
-\r
-               public DataColumn (string columnName, Type dataType, string expr)\r
-                       : this (columnName, dataType, expr, MappingType.Element)\r
-               {\r
-               }\r
-\r
-               public DataColumn (string columnName, Type dataType, string expr, MappingType type)\r
-               {\r
-                       ColumnName = columnName == null ? String.Empty : columnName;\r
-\r
-                       if (dataType == null)\r
-                               throw new ArgumentNullException ("dataType");\r
-\r
-                       DataType = dataType;\r
-                       Expression = expr == null ? String.Empty : expr;\r
-                       ColumnMapping = type;\r
-               }\r
-               #endregion\r
-\r
-               #region Properties\r
-\r
-               internal object this [int index] {\r
-                       get { return DataContainer [index]; }\r
-                       set {\r
-                               if (!(value == null && AutoIncrement)) {\r
-                                       try {\r
-                                               DataContainer [index] = value;\r
-                                       } catch(Exception e) {\r
-                                               throw new ArgumentException (\r
-                                                       String.Format (\r
-                                                               "{0}. Couldn't store <{1}> in Column named '{2}'. Expected type is {3}.",\r
-                                                               e.Message, value, ColumnName, DataType.Name),\r
-                                                       e);\r
-                                       }\r
-                               }\r
-\r
-                               if (AutoIncrement && !DataContainer.IsNull (index)) {\r
-                                       long value64 = Convert.ToInt64 (value);\r
-                                       UpdateAutoIncrementValue (value64);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               DataSetDateTime _datetimeMode = DataSetDateTime.UnspecifiedLocal;\r
-               [DefaultValue (DataSetDateTime.UnspecifiedLocal)]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               public DataSetDateTime DateTimeMode {\r
-                       get { return _datetimeMode; }\r
-                       set {\r
-                               if (DataType != typeof (DateTime))\r
-                                       throw new InvalidOperationException ("The DateTimeMode can be set only on DataColumns of type DateTime.");\r
-\r
-                               if (!Enum.IsDefined (typeof (DataSetDateTime), value))\r
-                                       throw new InvalidEnumArgumentException (\r
-                                               string.Format (\r
-                                                       CultureInfo.InvariantCulture, "The {0} enumeration value, {1}, is invalid",\r
-                                                       typeof (DataSetDateTime).Name, value));\r
-\r
-                               if (_datetimeMode == value)\r
-                                       return;\r
-                               if (_table == null || _table.Rows.Count == 0) {\r
-                                       _datetimeMode = value;\r
-                                       return;\r
-                               }\r
-                               if ((_datetimeMode == DataSetDateTime.Unspecified || _datetimeMode == DataSetDateTime.UnspecifiedLocal)\r
-                                       && (value == DataSetDateTime.Unspecified || value == DataSetDateTime.UnspecifiedLocal)) {\r
-                                       _datetimeMode = value;\r
-                                       return;\r
-                               }\r
-\r
-                               throw new InvalidOperationException (\r
-                                       String.Format ("Cannot change DateTimeMode from '{0}' to '{1}' once the table has data.",\r
-                                                      _datetimeMode, value));\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (true)]\r
-               public bool AllowDBNull {\r
-                       get { return _allowDBNull; }\r
-                       set {\r
-                               if (!value && null != _table) {\r
-                                       for (int r = 0; r < _table.Rows.Count; r++) {\r
-                                               DataRow row = _table.Rows [r];\r
-                                               DataRowVersion version = row.HasVersion (DataRowVersion.Default) ?\r
-                                                       DataRowVersion.Default : DataRowVersion.Original;\r
-                                               if (row.IsNull (this, version))\r
-                                                       throw new DataException ("Column '" + ColumnName + "' has null values in it.");\r
-                                               //TODO: do we also check different versions of the row??\r
-                                       }\r
-                               }\r
-\r
-                               _allowDBNull = value;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets a value indicating whether the column automatically increments the value of the column for new rows added to the table.\r
-               /// </summary>\r
-               /// <remarks>\r
-               ///             If the type of this column is not Int16, Int32, or Int64 when this property is set,\r
-               ///             the DataType property is coerced to Int32. An exception is generated if this is a computed column\r
-               ///             (that is, the Expression property is set.) The incremented value is used only if the row's value for this column,\r
-               ///             when added to the columns collection, is equal to the default value.\r
-               ///     </remarks>\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (false)]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               public bool AutoIncrement {\r
-                       get { return _autoIncrement; }\r
-                       set {\r
-                               if (value) {\r
-                                       //Can't be true if this is a computed column\r
-                                       if (Expression != string.Empty)\r
-                                               throw new ArgumentException ("Can not Auto Increment a computed column.");\r
-\r
-                                       if (DefaultValue != DBNull.Value)\r
-                                               throw new ArgumentException ("Can not set AutoIncrement while default value exists for this column.");\r
-\r
-                                       if (!CanAutoIncrement (DataType))\r
-                                               DataType = typeof (Int32);\r
-                               }\r
-\r
-                               if (_table != null)\r
-                                       _table.Columns.UpdateAutoIncrement (this, value);\r
-                               _autoIncrement = value;\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (0)]\r
-               public long AutoIncrementSeed {\r
-                       get { return _autoIncrementSeed; }\r
-                       set {\r
-                               _autoIncrementSeed = value;\r
-                               _nextAutoIncrementValue = _autoIncrementSeed;\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (1)]\r
-               public long AutoIncrementStep {\r
-                       get { return _autoIncrementStep; }\r
-                       set { _autoIncrementStep = value; }\r
-               }\r
-\r
-               internal void UpdateAutoIncrementValue (long value64)\r
-               {\r
-                       if (_autoIncrementStep > 0) {\r
-                               if (value64 >= _nextAutoIncrementValue) {\r
-                                       _nextAutoIncrementValue = value64;\r
-                                       AutoIncrementValue ();\r
-                               }\r
-                       } else if (value64 <= _nextAutoIncrementValue) {\r
-                               _nextAutoIncrementValue = value64;\r
-                               AutoIncrementValue ();\r
-                       }\r
-               }\r
-\r
-               internal long AutoIncrementValue ()\r
-               {\r
-                       long currentValue = _nextAutoIncrementValue;\r
-                       _nextAutoIncrementValue += AutoIncrementStep;\r
-                       return currentValue;\r
-               }\r
-\r
-               internal long GetAutoIncrementValue ()\r
-               {\r
-                       return _nextAutoIncrementValue;\r
-               }\r
-\r
-               internal void SetDefaultValue (int index)\r
-               {\r
-                       if (AutoIncrement)\r
-                               this [index] = _nextAutoIncrementValue;\r
-                       else\r
-                               DataContainer.CopyValue (Table.DefaultValuesRowIndex, index);\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               public string Caption {\r
-                       get { return _caption == null ? ColumnName : _caption; }\r
-                       set { _caption = value == null ? String.Empty : value; }\r
-               }\r
-\r
-               [DefaultValue (MappingType.Element)]\r
-               public virtual MappingType ColumnMapping {\r
-                       get { return _columnMapping; }\r
-                       set { _columnMapping = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               [DefaultValue ("")]\r
-               public string ColumnName {\r
-                       get { return _columnName; }\r
-                       set {\r
-                               if (value == null)\r
-                                       value = String.Empty;\r
-\r
-                               CultureInfo info = Table != null ? Table.Locale : CultureInfo.CurrentCulture;\r
-                               if (String.Compare (value, _columnName, true, info) != 0) {\r
-                                       if (Table != null) {\r
-                                               if (value.Length == 0)\r
-                                                       throw new ArgumentException ("ColumnName is required when it is part of a DataTable.");\r
-\r
-                                               Table.Columns.RegisterName (value, this);\r
-                                               if (_columnName.Length > 0)\r
-                                                       Table.Columns.UnregisterName (_columnName);\r
-                                       }\r
-\r
-                                       RaisePropertyChanging ("ColumnName");\r
-                                       _columnName = value;\r
-\r
-                                       if (Table != null)\r
-                                               Table.ResetPropertyDescriptorsCache ();\r
-                               } else if (String.Compare (value, _columnName, false, info) != 0) {\r
-                                       RaisePropertyChanging ("ColumnName");\r
-                                       _columnName = value;\r
-\r
-                                       if (Table != null)\r
-                                               Table.ResetPropertyDescriptorsCache ();\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (typeof (string))]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               [TypeConverterAttribute (typeof (ColumnTypeConverter))]\r
-               public Type DataType {\r
-                       get { return DataContainer.Type; }\r
-                       set {\r
-                               if (value == null)\r
-                                       return;\r
-\r
-                               if (_dataContainer != null) {\r
-                                       if (value == _dataContainer.Type)\r
-                                               return;\r
-\r
-                                       // check if data already exists can we change the datatype\r
-                                       if (_dataContainer.Capacity > 0)\r
-                                               throw new ArgumentException ("The column already has data stored.");\r
-                               }\r
-\r
-                               if (null != GetParentRelation () || null != GetChildRelation ())\r
-                                       throw new InvalidConstraintException ("Cannot change datatype when column is part of a relation");\r
-\r
-                               Type prevType = _dataContainer != null ? _dataContainer.Type : null; // current\r
-\r
-                               if (_dataContainer != null && _dataContainer.Type == typeof (DateTime))\r
-                                       _datetimeMode = DataSetDateTime.UnspecifiedLocal;\r
-                               _dataContainer = DataContainer.Create (value, this);\r
-\r
-                               //Check AutoIncrement status, make compatible datatype\r
-                               if(AutoIncrement == true) {\r
-                                       // we want to check that the datatype is supported?                                     \r
-                                       if (!CanAutoIncrement (value))\r
-                                               AutoIncrement = false;\r
-                               }\r
-\r
-                               if (DefaultValue != GetDefaultValueForType (prevType))\r
-                                       SetDefaultValue (DefaultValue, true);\r
-                               else\r
-                                       _defaultValue = GetDefaultValueForType (DataType);\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///\r
-               /// </summary>\r
-               /// <remarks>When AutoIncrement is set to true, there can be no default value.</remarks>\r
-               /// <exception cref="System.InvalidCastException"></exception>\r
-               /// <exception cref="System.ArgumentException"></exception>\r
-               [DataCategory ("Data")]\r
-               [TypeConverterAttribute (typeof (System.Data.DefaultValueTypeConverter))]\r
-               public object DefaultValue {\r
-                       get { return _defaultValue; }\r
-\r
-                       set {\r
-                               if (AutoIncrement)\r
-                                       throw new ArgumentException ("Can not set default value while AutoIncrement is true on this column.");\r
-                               SetDefaultValue (value, false);\r
-                       }\r
-               }\r
-\r
-               void SetDefaultValue (object value, bool forcedTypeCheck)\r
-               {\r
-                       if (forcedTypeCheck || !this._defaultValue.Equals (value)) {\r
-                               if (value == null || value == DBNull.Value)\r
-                                       _defaultValue = GetDefaultValueForType (DataType);\r
-                               else if (DataType.IsInstanceOfType (value))\r
-                                       _defaultValue = value;\r
-                               else\r
-                                       try {\r
-                                               _defaultValue = Convert.ChangeType (value, DataType);\r
-                                       } catch (InvalidCastException) {\r
-                                               string msg = String.Format ("Default Value of type '{0}' is not compatible with column type '{1}'", value.GetType (), DataType);\r
-                                               throw new DataException (msg);\r
-                                       }\r
-                       }\r
-\r
-                       // store default value in the table if already belongs to\r
-                       if (Table != null && Table.DefaultValuesRowIndex != -1)\r
-                               DataContainer [Table.DefaultValuesRowIndex] = _defaultValue;\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               public string Expression {\r
-                       get { return _expression; }\r
-                       set {\r
-                               if (value == null || value.Trim () == string.Empty)\r
-                                       value = String.Empty;\r
-\r
-                               CompileExpression (value);\r
-                               _expression = value;\r
-                       }\r
-               }\r
-\r
-               internal void CompileExpression ()\r
-               {\r
-                       CompileExpression (_expression);\r
-               }\r
-\r
-               internal void CompileExpression (string expression)\r
-               {\r
-                       if (expression != String.Empty) {\r
-                               if (AutoIncrement || Unique)\r
-                                       throw new ArgumentException ("Cannot create an expression on a column that has AutoIncrement or Unique.");\r
-\r
-                               if (Table != null) {\r
-                                       for (int i = 0; i < Table.Constraints.Count; i++) {\r
-                                               if (Table.Constraints [i].IsColumnContained (this))\r
-                                                       throw new ArgumentException (\r
-                                                               String.Format (\r
-                                                                       "Cannot set Expression property on column {0}, because it is a part of a constraint.",\r
-                                                                       ColumnName));\r
-                                       }\r
-                               }\r
-\r
-                               Parser parser = new Parser ();\r
-                               IExpression compiledExpression = parser.Compile (expression);\r
-\r
-                               if (Table != null) {\r
-                                       if (compiledExpression.DependsOn (this))\r
-                                               throw new ArgumentException ("Cannot set Expression property due to circular reference in the expression.");\r
-                                       // Check if expression is ok\r
-                                       if (Table.Rows.Count == 0)\r
-                                               compiledExpression.Eval (Table.NewRow ());\r
-                                       else\r
-                                               compiledExpression.Eval (Table.Rows [0]);\r
-                               }\r
-                               ReadOnly = true;\r
-                               _compiledExpression = compiledExpression;\r
-                       } else {\r
-                               _compiledExpression = null;\r
-                               if (Table != null) {\r
-                                       int defaultValuesRowIndex = Table.DefaultValuesRowIndex;\r
-                                       if (defaultValuesRowIndex != -1)\r
-                                               DataContainer.FillValues (defaultValuesRowIndex);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               internal IExpression CompiledExpression {\r
-                       get { return _compiledExpression; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               [DataCategory ("Data")]\r
-               public PropertyCollection ExtendedProperties {\r
-                       get { return _extendedProperties; }\r
-                       internal set { _extendedProperties = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (-1)] //Default == -1 no max length\r
-               public int MaxLength {\r
-                       get { return _maxLength; }\r
-                       set {\r
-                               if (value >= 0 && _columnMapping == MappingType.SimpleContent)\r
-                                       throw new ArgumentException (\r
-                                               String.Format (\r
-                                                       "Cannot set MaxLength property on '{0}' column which is mapped to SimpleContent.",\r
-                                                       ColumnName));\r
-                               //only applies to string columns\r
-                               _maxLength = value;\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               public string Namespace {\r
-                       get {\r
-                               if (_nameSpace != null)\r
-                                       return _nameSpace;\r
-                               if (Table != null && _columnMapping != MappingType.Attribute)\r
-                                       return Table.Namespace;\r
-                               return String.Empty;\r
-                       }\r
-                       set { _nameSpace = value; }\r
-               }\r
-\r
-               //Need a good way to set the Ordinal when the column is added to a columnCollection.\r
-               [Browsable (false)]\r
-               [DataCategory ("Data")]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public int Ordinal {\r
-                       get { return _ordinal; }\r
-                       internal set { _ordinal = value; }\r
-               }\r
-\r
-               public void SetOrdinal (int ordinal)\r
-               {\r
-                       if (_ordinal == -1)\r
-                               throw new ArgumentException ("Column must belong to a table.");\r
-                       _table.Columns.MoveColumn (_ordinal, ordinal);\r
-                       _ordinal = ordinal;\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string Prefix {\r
-                       get { return _prefix; }\r
-                       set { _prefix = value == null ? String.Empty : value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (false)]\r
-               public bool ReadOnly {\r
-                       get { return _readOnly; }\r
-                       set { _readOnly = value; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               [DataCategory ("Data")]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public DataTable Table {\r
-                       get { return _table; }\r
-                       internal set { _table = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (false)]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public bool Unique {\r
-                       get { return _unique; }\r
-                       set {\r
-                               if (_unique == value)\r
-                                       return;\r
-\r
-                               // Set the property value, so that when adding/removing the constraint\r
-                               // we dont run into recursive issues.\r
-                               _unique = value;\r
-\r
-                               if (_table == null)\r
-                                       return;\r
-\r
-                               try {\r
-                                       if (value) {\r
-                                               if (Expression != null && Expression != String.Empty)\r
-                                                       throw new ArgumentException ("Cannot change Unique property for the expression column.");\r
-\r
-                                               _table.Constraints.Add (null, this, false);\r
-                                       } else {\r
-\r
-                                               UniqueConstraint uc = UniqueConstraint.GetUniqueConstraintForColumnSet (\r
-                                                       _table.Constraints, new DataColumn[] {this});\r
-                                               _table.Constraints.Remove (uc);\r
-                                       }\r
-                               } catch (Exception e) {\r
-                                       _unique = !value;\r
-                                       throw e;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               internal DataContainer DataContainer {\r
-                       get { return _dataContainer; }\r
-               }\r
-\r
-               internal static bool CanAutoIncrement (Type type)\r
-               {\r
-                       switch (Type.GetTypeCode (type)) {\r
-                               case TypeCode.Int16:\r
-                               case TypeCode.Int32:\r
-                               case TypeCode.Int64:\r
-                               case TypeCode.Decimal:\r
-                                       return true;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               [MonoTODO]\r
-               internal DataColumn Clone ()\r
-               {\r
-                       DataColumn copy = new DataColumn ();\r
-\r
-                       // Copy all the properties of column\r
-                       copy._allowDBNull = _allowDBNull;\r
-                       copy._autoIncrement = _autoIncrement;\r
-                       copy._autoIncrementSeed = _autoIncrementSeed;\r
-                       copy._autoIncrementStep = _autoIncrementStep;\r
-                       copy._caption = _caption;\r
-                       copy._columnMapping = _columnMapping;\r
-                       copy._columnName = _columnName;\r
-                       //Copy.Container\r
-                       copy.DataType = DataType;\r
-                       copy._defaultValue = _defaultValue;\r
-                       // Do not use the Expression property to set the expression, the caller of Clone \r
-                       // must explicitly call CompileExpression on the returned DataColumn to update compiledExpression (if any).\r
-                       copy._expression = _expression;\r
-                       //Copy.ExtendedProperties\r
-                       foreach (object key in _extendedProperties.Keys)\r
-                               copy.ExtendedProperties.Add (key, ExtendedProperties[key]);\r
-                       copy._maxLength = _maxLength;\r
-                       copy._nameSpace = _nameSpace;\r
-                       copy._prefix = _prefix;\r
-                       copy._readOnly = _readOnly;\r
-                       //Copy.Site\r
-                       //we do not copy the unique value - it will be copyied when copying the constraints.\r
-                       //Copy.Unique = Column.Unique;\r
-                       if (DataType == typeof (DateTime))\r
-                               copy.DateTimeMode = _datetimeMode;\r
-\r
-                       return copy;\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Sets unique true whithout creating Constraint\r
-               /// </summary>\r
-               internal void SetUnique ()\r
-               {\r
-                       _unique = true;\r
-               }\r
-\r
-               [MonoTODO]\r
-               internal void AssertCanAddToCollection ()\r
-               {\r
-                       //Check if Default Value is set and AutoInc is set\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected internal void CheckNotAllowNull ()\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected void CheckUnique ()\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               protected internal virtual void\r
-               OnPropertyChanging (PropertyChangedEventArgs pcevent)\r
-               {\r
-                       PropertyChangedEventHandler eh = _eventHandlers [_propertyChangedKey] as PropertyChangedEventHandler;\r
-\r
-                       if (eh != null)\r
-                               eh (this, pcevent);\r
-               }\r
-\r
-               protected internal void RaisePropertyChanging (string name)\r
-               {\r
-                       PropertyChangedEventArgs e = new PropertyChangedEventArgs (name);\r
-                       OnPropertyChanging (e);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the Expression of the column, if one exists.\r
-               /// </summary>\r
-               /// <returns>The Expression value, if the property is set;\r
-               /// otherwise, the ColumnName property.</returns>\r
-               public override string ToString ()\r
-               {\r
-                       if (_expression != string.Empty)\r
-                               return ColumnName + " + " + _expression;\r
-\r
-                       return ColumnName;\r
-               }\r
-\r
-               internal void SetTable (DataTable table)\r
-               {\r
-                       if(_table != null)\r
-                               throw new ArgumentException ("The column already belongs to a different table");\r
-\r
-                       _table = table;\r
-                       // this will get called by DataTable\r
-                       // and DataColumnCollection\r
-                       if (_unique) {\r
-                               // if the DataColumn is marked as Unique and then\r
-                               // added to a DataTable , then a UniqueConstraint\r
-                               // should be created\r
-                               UniqueConstraint uc = new UniqueConstraint (this);\r
-                               _table.Constraints.Add (uc);\r
-                       }\r
-\r
-                       // allocate space in the column data container\r
-                       DataContainer.Capacity = _table.RecordCache.CurrentCapacity;\r
-\r
-                       int defaultValuesRowIndex = _table.DefaultValuesRowIndex;\r
-                       if (defaultValuesRowIndex != -1) {\r
-                               // store default value in the table\r
-                               DataContainer [defaultValuesRowIndex] = _defaultValue;\r
-                               // Set all the values in data container to default\r
-                               // it's cheaper that raise event on each row.\r
-                               DataContainer.FillValues (defaultValuesRowIndex);\r
-                       }\r
-               }\r
-\r
-               // Returns true if all the same collumns are in columnSet and compareSet\r
-               internal static bool AreColumnSetsTheSame (DataColumn [] columnSet, DataColumn [] compareSet)\r
-               {\r
-                       if (null == columnSet && null == compareSet)\r
-                               return true;\r
-\r
-                       if (null == columnSet || null == compareSet)\r
-                               return false;\r
-\r
-                       if (columnSet.Length != compareSet.Length)\r
-                               return false;\r
-\r
-                       foreach (DataColumn col in columnSet) {\r
-                               bool matchFound = false;\r
-                               foreach (DataColumn compare in compareSet) {\r
-                                       if (col == compare)\r
-                                               matchFound = true;\r
-                               }\r
-                               if (!matchFound)\r
-                                       return false;\r
-                       }\r
-                       return true;\r
-               }\r
-\r
-               internal int CompareValues (int index1, int index2)\r
-               {\r
-                       return DataContainer.CompareValues (index1, index2);\r
-               }\r
-\r
-               /// <summary>\r
-               ///     Returns the data relation, which contains this column.\r
-               ///     This searches in current table's parent relations.\r
-               /// <summary>\r
-               /// <returns>\r
-               ///     DataRelation if found otherwise null.\r
-               /// </returns>\r
-               private DataRelation GetParentRelation ()\r
-               {\r
-                       if (_table == null)\r
-                               return null;\r
-                       foreach (DataRelation rel in _table.ParentRelations)\r
-                               if (rel.Contains (this))\r
-                                       return rel;\r
-                       return null;\r
-               }\r
-\r
-\r
-               /// <summary>\r
-               ///     Returns the data relation, which contains this column.\r
-               ///     This searches in current table's child relations.\r
-               /// <summary>\r
-               /// <returns>\r
-               ///     DataRelation if found otherwise null.\r
-               /// </returns>\r
-               private DataRelation GetChildRelation ()\r
-               {\r
-                       if (_table == null)\r
-                               return null;\r
-                       foreach (DataRelation rel in _table.ChildRelations)\r
-                               if (rel.Contains (this))\r
-                                       return rel;\r
-                       return null;\r
-               }\r
-\r
-               internal void ResetColumnInfo ()\r
-               {\r
-                       _ordinal = -1;\r
-                       _table = null;\r
-                       if (_compiledExpression != null)\r
-                               _compiledExpression.ResetExpression ();\r
-               }\r
-\r
-               internal bool DataTypeMatches (DataColumn col)\r
-               {\r
-                       if (DataType != col.DataType)\r
-                               return false;\r
-                       if (DataType != typeof (DateTime))\r
-                               return true;\r
-\r
-                       if (DateTimeMode == col.DateTimeMode)\r
-                               return true;\r
-\r
-                       if (DateTimeMode == DataSetDateTime.Local || DateTimeMode == DataSetDateTime.Utc)\r
-                               return false;\r
-\r
-                       if (col.DateTimeMode == DataSetDateTime.Local || col.DateTimeMode == DataSetDateTime.Utc)\r
-                               return false;\r
-                       return true;\r
-               }\r
-\r
-               internal static object GetDefaultValueForType (Type type)\r
-               {\r
-                       if (type == null)\r
-                               return DBNull.Value;\r
-                       if (type.Namespace == "System.Data.SqlTypes" && type.Assembly == typeof (DataColumn).Assembly) {\r
-                               // For SqlXxx types, set SqlXxx.Null instead of DBNull.Value.\r
-                               if (type == typeof (SqlBinary))\r
-                                       return SqlBinary.Null;\r
-                               if (type == typeof (SqlBoolean))\r
-                                       return SqlBoolean.Null;\r
-                               if (type == typeof (SqlByte))\r
-                                       return SqlByte.Null;\r
-                               if (type == typeof (SqlBytes))\r
-                                       return SqlBytes.Null;\r
-                               if (type == typeof (SqlChars))\r
-                                       return SqlChars.Null;\r
-                               if (type == typeof (SqlDateTime))\r
-                                       return SqlDateTime.Null;\r
-                               if (type == typeof (SqlDecimal))\r
-                                       return SqlDecimal.Null;\r
-                               if (type == typeof (SqlDouble))\r
-                                       return SqlDouble.Null;\r
-                               if (type == typeof (SqlGuid))\r
-                                       return SqlGuid.Null;\r
-                               if (type == typeof (SqlInt16))\r
-                                       return SqlInt16.Null;\r
-                               if (type == typeof (SqlInt32))\r
-                                       return SqlInt32.Null;\r
-                               if (type == typeof (SqlInt64))\r
-                                       return SqlInt64.Null;\r
-                               if (type == typeof (SqlMoney))\r
-                                       return SqlMoney.Null;\r
-                               if (type == typeof (SqlSingle))\r
-                                       return SqlSingle.Null;\r
-                               if (type == typeof (SqlString))\r
-                                       return SqlString.Null;\r
-                               if (type == typeof (SqlXml))\r
-                                       return SqlXml.Null;\r
-                       }\r
-                       return DBNull.Value;\r
-               }\r
-\r
-               #endregion // Methods\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataColumnChangeEventArgs.cs b/mcs/class/System.Data/System.Data/DataColumnChangeEventArgs.cs
deleted file mode 100644 (file)
index ace6455..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// System.Data.DataColumnChangeEventArgs.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Provides data for the ColumnChanging event.
-       /// </summary>
-       public class DataColumnChangeEventArgs : EventArgs
-       {
-               #region Fields
-
-               private DataColumn _column = null;
-               private DataRow _row = null;
-               private object _proposedValue = null;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               /// <summary>
-               /// Initializes a new instance of the DataColumnChangeEventArgs class.
-               /// </summary>
-               /// <param name="row"></param>
-               /// <param name="column"></param>
-               /// <param name="value"></param>
-               public DataColumnChangeEventArgs(DataRow row, DataColumn column, object value)
-               {
-                       Initialize(row, column, value);
-               }
-
-               internal DataColumnChangeEventArgs()
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               /// <summary>
-               /// Gets the DataColumn with a changing value.
-               /// </summary>
-               public DataColumn Column 
-               {
-                       get
-                       {
-                               return _column;
-                       }
-               }
-
-
-               /// <summary>
-               /// Gets or sets the proposed new value for the column.
-               /// </summary>
-               public object ProposedValue 
-               {
-                       get
-                       {
-                               return _proposedValue;
-                       }
-                       set
-                       {
-                               _proposedValue = value;
-                       }
-               }
-
-
-               /// <summary>
-               /// Gets the DataRow of the column with a changing value.
-               /// </summary>
-               public DataRow Row 
-               {
-                       get
-                       {
-                               return _row;
-                       }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               internal void Initialize(DataRow row, DataColumn column, object value)
-               {
-                       _column = column;
-                       _row = row;
-                       _proposedValue = value;
-               }
-       
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataColumnChangeEventHandler.cs b/mcs/class/System.Data/System.Data/DataColumnChangeEventHandler.cs
deleted file mode 100644 (file)
index 3cb3c82..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Data.DataColumnChangeEventHandler.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the the ColumnChanging event.
-       /// </summary>
-       public delegate void DataColumnChangeEventHandler(object sender, DataColumnChangeEventArgs e);
-
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/DataColumnCollection.cs b/mcs/class/System.Data/System.Data/DataColumnCollection.cs
deleted file mode 100644 (file)
index f3e337a..0000000
+++ /dev/null
@@ -1,670 +0,0 @@
-//
-// System.Data.DataColumnCollection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//   Stuart Caborn     <stuart.caborn@virgin.net>
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Chris Podurgiel
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) Daniel Morgan, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Text;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data {
-
-       internal class Doublet
-       {
-               public Doublet (int count, string columnname)
-               {
-                       this.count = count;
-                       this.columnNames.Add (columnname);
-               }
-               // Number of case insensitive column name
-               public int count;
-               // Array of exact column names
-               public ArrayList columnNames = new ArrayList ();
-       }
-
-       [Editor ("Microsoft.VSDesigner.Data.Design.ColumnsCollectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       [DefaultEvent ("CollectionChanged")]
-       public
-       sealed
-       class DataColumnCollection : InternalDataCollectionBase {
-               //This hashtable maps between unique case insensetive column name to a doublet containing column ref and column count
-               private Hashtable columnNameCount = new Hashtable (StringComparer.OrdinalIgnoreCase);
-               //This hashtable maps between column name to DataColumn object.
-               private Hashtable columnFromName = new Hashtable ();
-               //This ArrayList contains the auto-increment columns names
-               private ArrayList autoIncrement = new ArrayList ();
-               //This holds the next index to use for default column name.
-               private int defaultColumnIndex = 1;
-               //table should be the DataTable this DataColumnCollection belongs to.
-               private DataTable parentTable = null;
-               // Keep reference to most recent columns passed to AddRange()
-               // so that they can be added when EndInit() is called.
-               DataColumn [] _mostRecentColumns = null;
-
-               static readonly string ColumnPrefix = "Column";
-
-               // Internal Constructor.  This Class can only be created from other classes in this assembly.
-               internal DataColumnCollection (DataTable table)
-               {
-                       parentTable = table;
-               }
-
-               /// <summary>
-               /// Gets the DataColumn from the collection at the specified index.
-               /// </summary>
-               public
-               DataColumn this [int index] {
-                       get {
-                               if (index < 0 || index >= base.List.Count)
-                                       throw new IndexOutOfRangeException ("Cannot find column " + index + ".");
-                               return (DataColumn) base.List [index];
-                       }
-               }
-
-               /// <summary>
-               /// Gets the DataColumn from the collection with the specified name.
-               /// </summary>
-               public
-               DataColumn this [string name] {
-                       get {
-                               if (name == null)
-                                       throw new ArgumentNullException ("name");
-
-                               DataColumn dc = columnFromName [name] as DataColumn;
-                               if (dc != null)
-                                       return dc;
-
-                               int tmp = IndexOf (name, true);
-                               return tmp == -1 ? null : (DataColumn) base.List [tmp];
-                       }
-               }
-
-               /// <summary>
-               /// Gets a list of the DataColumnCollection items.
-               /// </summary>
-               protected override ArrayList List {
-                       get { return base.List; }
-               }
-
-               internal ArrayList AutoIncrmentColumns {
-                       get { return autoIncrement; }
-               }
-
-               //Add Logic
-               //
-               //Changing Event
-               //DefaultValue set and AutoInc set check
-               //?Validate Expression??
-               //Name check and creation
-               //Set Table
-               //Check Unique if true then add a unique constraint
-               //?Notify Rows of new column ?
-               //Add to collection
-               //Changed Event
-
-               /// <summary>
-               /// Creates and adds a DataColumn object to the DataColumnCollection.
-               /// </summary>
-               /// <returns></returns>
-               public
-               DataColumn Add ()
-               {
-                       DataColumn column = new DataColumn (null);
-                       Add (column);
-                       return column;
-               }
-
-               public void CopyTo (DataColumn [] array, int index)
-               {
-                       CopyTo ((Array) array, index);
-               }
-
-               internal void RegisterName (string name, DataColumn column)
-               {
-                       try {
-                               columnFromName.Add (name, column);
-                       } catch (ArgumentException) {
-                               throw new DuplicateNameException ("A DataColumn named '" + name + "' already belongs to this DataTable.");
-                       }
-
-                       // Get existing doublet
-                       Doublet d = (Doublet) columnNameCount [name];
-                       if (d != null) {
-                               // Add reference count
-                               d.count++;
-                               // Add a new name
-                               d.columnNames.Add (name);
-                       } else {
-                               // no existing doublet
-                               // create one
-                               d = new Doublet (1, name);
-                               columnNameCount [name] = d;
-                       }
-
-                       if (name.Length <= ColumnPrefix.Length || !name.StartsWith (ColumnPrefix, StringComparison.Ordinal))
-                               return;
-
-                       if (name == MakeName (defaultColumnIndex + 1)) {
-                               do {
-                                       defaultColumnIndex++;
-                               } while (Contains (MakeName (defaultColumnIndex + 1)));
-                       }
-               }
-
-               internal void UnregisterName (string name)
-               {
-                       if (columnFromName.Contains (name))
-                               columnFromName.Remove (name);
-
-                       // Get the existing doublet
-                       Doublet d = (Doublet) columnNameCount [name];
-                       if (d != null) {
-                               // decrease reference count
-                               d.count--;
-                               d.columnNames.Remove (name);
-                               // remove doublet if no more references
-                               if (d.count == 0)
-                                       columnNameCount.Remove (name);
-                       }
-
-                       if (name.StartsWith(ColumnPrefix) && name == MakeName(defaultColumnIndex - 1)) {
-                               do {
-                                       defaultColumnIndex--;
-                               } while (!Contains (MakeName (defaultColumnIndex - 1)) && defaultColumnIndex > 1);
-                       }
-               }
-
-               private string GetNextDefaultColumnName ()
-               {
-                       string defColumnName = MakeName (defaultColumnIndex);
-                       for (int index = defaultColumnIndex + 1; Contains (defColumnName); ++index) {
-                               defColumnName = MakeName (index);
-                               defaultColumnIndex++;
-                       }
-                       defaultColumnIndex++;
-                       return defColumnName;
-               }
-
-               static readonly string[] TenColumns = { "Column0", "Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9" };
-
-               static string MakeName (int index)
-               {
-                       if (index < 10)
-                               return TenColumns [index];
-                       return String.Concat (ColumnPrefix, index.ToString());
-               }
-
-               /// <summary>
-               /// Creates and adds the specified DataColumn object to the DataColumnCollection.
-               /// </summary>
-               /// <param name="column">The DataColumn to add.</param>
-               public void Add (DataColumn column)
-               {
-                       if (column == null)
-                               throw new ArgumentNullException ("column", "'column' argument cannot be null.");
-
-
-                       if (column.ColumnName.Length == 0) {
-                               column.ColumnName = GetNextDefaultColumnName ();
-                       }
-
-//                     if (Contains(column.ColumnName))
-//                             throw new DuplicateNameException("A DataColumn named '" + column.ColumnName + "' already belongs to this DataTable.");
-
-                       if (column.Table != null)
-                               throw new ArgumentException ("Column '" + column.ColumnName + "' already belongs to this or another DataTable.");
-
-                       column.SetTable (parentTable);
-                       RegisterName (column.ColumnName, column);
-                       int ordinal = base.List.Add (column);
-
-                       column.Ordinal = ordinal;
-
-                       // Check if the Column Expression is ok
-                       if (column.CompiledExpression != null)
-                               if (parentTable.Rows.Count == 0)
-                                       column.CompiledExpression.Eval (parentTable.NewRow());
-                               else
-                                       column.CompiledExpression.Eval (parentTable.Rows[0]);
-
-                       // if table already has rows we need to allocate space
-                       // in the column data container
-                       if (parentTable.Rows.Count > 0)
-                               column.DataContainer.Capacity = parentTable.RecordCache.CurrentCapacity;
-
-                       if (column.AutoIncrement) {
-                               DataRowCollection rows = column.Table.Rows;
-                               for (int i = 0; i < rows.Count; i++)
-                                       rows [i] [ordinal] = column.AutoIncrementValue ();
-                       }
-
-                       if (column.AutoIncrement)
-                               autoIncrement.Add (column);
-
-                       column.PropertyChanged += new PropertyChangedEventHandler (ColumnPropertyChanged);
-
-                       OnCollectionChanged (new CollectionChangeEventArgs(CollectionChangeAction.Add, column));
-               }
-
-               /// <summary>
-               /// Creates and adds a DataColumn object with the specified name to the DataColumnCollection.
-               /// </summary>
-               /// <param name="columnName">The name of the column.</param>
-               /// <returns>The newly created DataColumn.</returns>
-               public
-               DataColumn Add (string columnName)
-               {
-                       DataColumn column = new DataColumn (columnName);
-                       Add (column);
-                       return column;
-               }
-
-               /// <summary>
-               /// Creates and adds a DataColumn object with the specified name and type to the DataColumnCollection.
-               /// </summary>
-               /// <param name="columnName">The ColumnName to use when cretaing the column.</param>
-               /// <param name="type">The DataType of the new column.</param>
-               /// <returns>The newly created DataColumn.</returns>
-               public
-               DataColumn Add (string columnName, Type type)
-               {
-                       if (columnName == null || columnName == "")
-                               columnName = GetNextDefaultColumnName ();
-
-                       DataColumn column = new DataColumn (columnName, type);
-                       Add (column);
-                       return column;
-               }
-
-               /// <summary>
-               /// Creates and adds a DataColumn object with the specified name, type, and expression to the DataColumnCollection.
-               /// </summary>
-               /// <param name="columnName">The name to use when creating the column.</param>
-               /// <param name="type">The DataType of the new column.</param>
-               /// <param name="expression">The expression to assign to the Expression property.</param>
-               /// <returns>The newly created DataColumn.</returns>
-               public
-               DataColumn Add (string columnName, Type type, string expression)
-               {
-                       if (columnName == null || columnName == "")
-                               columnName = GetNextDefaultColumnName ();
-
-                       DataColumn column = new DataColumn (columnName, type, expression);
-                       Add (column);
-                       return column;
-               }
-
-               /// <summary>
-               /// Copies the elements of the specified DataColumn array to the end of the collection.
-               /// </summary>
-               /// <param name="columns">The array of DataColumn objects to add to the collection.</param>
-               public void AddRange (DataColumn [] columns)
-               {
-                       if (parentTable.InitInProgress){
-                               _mostRecentColumns = columns;
-                               return;
-                       }
-
-                       if (columns == null)
-                               return;
-
-                       foreach (DataColumn column in columns){
-                               if (column == null)
-                                       continue;
-                               Add(column);
-                       }
-               }
-
-               private string GetColumnDependency (DataColumn column)
-               {
-
-                       foreach (DataRelation rel in parentTable.ParentRelations)
-                               if (Array.IndexOf (rel.ChildColumns, column) != -1)
-                                       return String.Format (" child key for relationship {0}.", rel.RelationName);
-                       foreach (DataRelation rel in parentTable.ChildRelations)
-                               if (Array.IndexOf (rel.ParentColumns, column) != -1)
-                                       return String.Format (" parent key for relationship {0}.", rel.RelationName);
-
-                       foreach (Constraint c in parentTable.Constraints)
-                               if (c.IsColumnContained (column))
-                                       return String.Format (" constraint {0} on the table {1}.",
-                                                       c.ConstraintName, parentTable);
-
-
-                       // check if the foreign-key constraint on any table in the dataset refers to this column.
-                       // though a forignkeyconstraint automatically creates a uniquecontrainton the parent
-                       // table and would fail above, but we still need to check, as it is legal to manually remove
-                       // the constraint on the parent table.
-                       if (parentTable.DataSet != null)
-                               foreach (DataTable table in parentTable.DataSet.Tables)
-                                       foreach (Constraint c in table.Constraints)
-                                               if (c is ForeignKeyConstraint && c.IsColumnContained(column))
-                                                       return String.Format (
-                                                               " constraint {0} on the table {1}.", c.ConstraintName, table.TableName);
-
-                       foreach (DataColumn col in this)
-                               if (col.CompiledExpression != null && col.CompiledExpression.DependsOn (column))
-                                       return  col.Expression;
-                       return String.Empty;
-               }
-
-               /// <summary>
-               /// Checks whether a given column can be removed from the collection.
-               /// </summary>
-               /// <param name="column">A DataColumn in the collection.</param>
-               /// <returns>true if the column can be removed; otherwise, false.</returns>
-               public bool CanRemove (DataColumn column)
-               {
-                       if (column == null || column.Table != parentTable || GetColumnDependency (column) != String.Empty)
-                               return false;
-                       return true;
-               }
-
-               /// <summary>
-               /// Clears the collection of any columns.
-               /// </summary>
-               public void Clear ()
-               {
-                       CollectionChangeEventArgs e = new CollectionChangeEventArgs(CollectionChangeAction.Refresh, this);
-
-                       // its not necessary to check if each column in the collection can removed.
-                       // Can simply check, if there are any constraints/relations related to the table,
-                       // in which case, throw an exception.
-                       // Also, shudnt check for expression columns since all the columns in the table
-                       // are being removed.
-                       if (parentTable.Constraints.Count != 0 ||
-                           parentTable.ParentRelations.Count != 0 ||
-                           parentTable.ChildRelations.Count != 0)
-                               foreach (DataColumn col in this) {
-                                       string s = GetColumnDependency (col);
-                                       if (s != String.Empty)
-                                               throw new ArgumentException ("Cannot remove this column, because it is part of the" + s);
-                               }
-
-                       if (parentTable.DataSet != null)
-                               foreach (DataTable table in parentTable.DataSet.Tables)
-                                       foreach (Constraint c in table.Constraints) {
-                                               if (!(c is ForeignKeyConstraint) ||
-                                                   ((ForeignKeyConstraint) c).RelatedTable != parentTable)
-                                                       continue;
-                                               throw new ArgumentException (
-                                                       String.Format (
-                                                               "Cannot remove this column, because it is part of the constraint {0} on the table {1}",
-                                                               c.ConstraintName, table.TableName));
-                                       }
-
-                       foreach (DataColumn col in this)
-                               col.ResetColumnInfo ();
-
-                       columnFromName.Clear ();
-                       autoIncrement.Clear ();
-                       columnNameCount.Clear ();
-                       base.List.Clear ();
-                       defaultColumnIndex = 1;
-                       OnCollectionChanged (e);
-               }
-
-               /// <summary>
-               /// Checks whether the collection contains a column with the specified name.
-               /// </summary>
-               /// <param name="name">The ColumnName of the column to check for.</param>
-               /// <returns>true if a column exists with this name; otherwise, false.</returns>
-               public bool Contains (string name)
-               {
-                       if (columnFromName.Contains (name))
-                               return true;
-
-                       return (IndexOf (name, false) != -1);
-               }
-
-               /// <summary>
-               /// Gets the index of a column specified by name.
-               /// </summary>
-               /// <param name="column">The name of the column to return.</param>
-               /// <returns>The index of the column specified by column if it is found; otherwise, -1.</returns>
-               public
-               int IndexOf (DataColumn column)
-               {
-                       if (column == null)
-                               return -1;
-                       return base.List.IndexOf (column);
-               }
-
-               /// <summary>
-               /// Gets the index of the column with the given name (the name is not case sensitive).
-               /// </summary>
-               /// <param name="columnName">The name of the column to find.</param>
-               /// <returns>The zero-based index of the column with the specified name, or -1 if the column doesn't exist in the collection.</returns>
-               public int IndexOf (string columnName)
-               {
-                       if (columnName == null)
-                               return -1;
-                       DataColumn dc = columnFromName [columnName] as DataColumn;
-
-                       if (dc != null)
-                               return IndexOf (dc);
-
-                       return IndexOf (columnName, false);
-               }
-
-               /// <summary>
-               /// Raises the OnCollectionChanged event.
-               /// </summary>
-               /// <param name="ccevent">A CollectionChangeEventArgs that contains the event data.</param>
-               internal
-               void OnCollectionChanged (CollectionChangeEventArgs ccevent)
-               {
-                       parentTable.ResetPropertyDescriptorsCache ();
-                       if (CollectionChanged != null)
-                               CollectionChanged (this, ccevent);
-               }
-
-               /// <summary>
-               /// Raises the OnCollectionChanging event.
-               /// </summary>
-               /// <param name="ccevent">A CollectionChangeEventArgs that contains the event data.</param>
-               internal
-               void OnCollectionChanging (CollectionChangeEventArgs ccevent)
-               {
-                       if (CollectionChanged != null) {
-                               //FIXME: this is not right
-                               //CollectionChanged(this, ccevent);
-                               throw new NotImplementedException();
-                       }
-               }
-
-               /// <summary>
-               /// Removes the specified DataColumn object from the collection.
-               /// </summary>
-               /// <param name="column">The DataColumn to remove.</param>
-               public void Remove (DataColumn column)
-               {
-                       if (column == null)
-                               throw new ArgumentNullException ("column", "'column' argument cannot be null.");
-
-                       if (!Contains (column.ColumnName))
-                               throw new ArgumentException ("Cannot remove a column that doesn't belong to this table.");
-
-                       string dependency = GetColumnDependency (column);
-                       if (dependency != String.Empty)
-                               throw new ArgumentException ("Cannot remove this column, because it is part of " + dependency);
-
-                       CollectionChangeEventArgs e = new CollectionChangeEventArgs (CollectionChangeAction.Remove, column);
-
-                       int ordinal = column.Ordinal;
-                       UnregisterName (column.ColumnName);
-                       base.List.Remove (column);
-
-                       // Reset column info
-                       column.ResetColumnInfo ();
-
-                       //Update the ordinals
-                       for( int i = ordinal ; i < this.Count ; i ++ )
-                               this[i].Ordinal = i;
-
-                       if (parentTable != null)
-                               parentTable.OnRemoveColumn (column);
-
-                       if (column.AutoIncrement)
-                               autoIncrement.Remove (column);
-
-                       column.PropertyChanged -= new PropertyChangedEventHandler (ColumnPropertyChanged);
-
-                       OnCollectionChanged (e);
-               }
-
-               /// <summary>
-               /// Removes the DataColumn object with the specified name from the collection.
-               /// </summary>
-               /// <param name="name">The name of the column to remove.</param>
-               public void Remove (string name)
-               {
-                       DataColumn column = this [name];
-
-                       if (column == null)
-                               throw new ArgumentException ("Column '" + name + "' does not belong to table " + ( parentTable == null ? "" : parentTable.TableName ) + ".");
-                       Remove (column);
-               }
-
-               /// <summary>
-               /// Removes the column at the specified index from the collection.
-               /// </summary>
-               /// <param name="index">The index of the column to remove.</param>
-               public void RemoveAt (int index)
-               {
-                       if (Count <= index)
-                               throw new IndexOutOfRangeException ("Cannot find column " + index + ".");
-
-                       DataColumn column = this [index];
-                       Remove (column);
-               }
-
-               // Helper AddRange() - Call this function when EndInit is called
-               internal void PostAddRange ()
-               {
-                       if (_mostRecentColumns == null)
-                               return;
-
-                       foreach (DataColumn column in _mostRecentColumns){
-                               if (column == null)
-                                       continue;
-                               Add (column);
-                       }
-                       _mostRecentColumns = null;
-               }
-
-               internal void UpdateAutoIncrement (DataColumn col,bool isAutoIncrement)
-               {
-                       if (isAutoIncrement) {
-                               if (!autoIncrement.Contains (col))
-                                       autoIncrement.Add (col);
-                       } else {
-                               if (autoIncrement.Contains (col))
-                                       autoIncrement.Remove (col);
-                       }
-               }
-
-               private int IndexOf (string name, bool error)
-               {
-                       // exact case matching has already be done by the caller
-                       // Get existing doublet
-                       Doublet d = (Doublet) columnNameCount [name];
-                       if (d != null) {
-                               if (d.count == 1) {
-                                       // There's only one
-                                       // return index of the column from the only column name of the doublet
-                                       return base.List.IndexOf (columnFromName [d.columnNames [0]]);
-                               } else if (d.count > 1 && error) {
-                                       // there's more than one, exception!
-                                       throw new ArgumentException ("There is no match for '" + name + "' in the same case and there are multiple matches in different case.");
-                               } else {
-                                       return -1;
-                               }
-                       }
-                       return -1;
-               }
-
-               #region Events
-
-               /// <summary>
-               /// Occurs when the columns collection changes, either by adding or removing a column.
-               /// </summary>
-               [ResDescriptionAttribute ("Occurs whenever this collection's membership changes.")]
-               public event CollectionChangeEventHandler CollectionChanged;
-
-               internal event CollectionChangeEventHandler CollectionMetaDataChanged;
-               #endregion
-
-               private void OnCollectionMetaDataChanged (CollectionChangeEventArgs ccevent)
-               {
-                       parentTable.ResetPropertyDescriptorsCache ();
-                       if (CollectionMetaDataChanged != null)
-                               CollectionMetaDataChanged (this, ccevent);
-               }
-
-               private void ColumnPropertyChanged (object sender, PropertyChangedEventArgs args)
-               {
-                       OnCollectionMetaDataChanged (new CollectionChangeEventArgs(CollectionChangeAction.Refresh, sender));
-               }
-
-               internal void MoveColumn (int oldOrdinal, int newOrdinal)
-               {
-                       if (newOrdinal == -1 || newOrdinal > this.Count)
-                               throw new ArgumentOutOfRangeException ("ordinal", "Ordinal '" + newOrdinal + "' exceeds the maximum number.");
-                       if (oldOrdinal == newOrdinal)
-                               return;
-
-                       int start = newOrdinal > oldOrdinal ? oldOrdinal : newOrdinal;
-                       int end = newOrdinal > oldOrdinal ?  newOrdinal : oldOrdinal;
-                       int direction = newOrdinal > oldOrdinal ? 1 : (-1);
-                       
-                       // swap ordinals as per direction of column movement
-                       if (direction < 0) {
-                               start = start + end;
-                               end = start - end;
-                               start -= end;
-                       }
-
-                       DataColumn currColumn = this [start];
-                       for (int i = start; (direction>0 ? i<end : i>end); i += direction) {
-                               List [i] = List [i+direction];
-                               ((DataColumn) List [i]).Ordinal = i;
-                       }
-                       List [end] = currColumn;
-                       currColumn.Ordinal = end;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataColumnPropertyDescriptor.cs b/mcs/class/System.Data/System.Data/DataColumnPropertyDescriptor.cs
deleted file mode 100644 (file)
index 50e2491..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-//
-// System.Data.DataColumnPropertyDescriptor.cs
-//
-// Author:
-//   Daniel Morgan <danmorg@sc.rr.com>
-//
-// (c) copyright 2002 Daniel Morgan
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Common;
-using System.ComponentModel;
-using System.Reflection;
-
-namespace System.Data 
-{
-       internal class DataColumnPropertyDescriptor : PropertyDescriptor 
-       {
-               private bool readOnly = true;
-               private Type componentType = null;
-               private Type propertyType = null;
-               private bool browsable = true;
-
-               //private PropertyInfo prop = null;
-               private int columnIndex = 0;
-
-               public DataColumnPropertyDescriptor (string name, int columnIndex, Attribute [] attrs)
-                       : base (name, attrs) 
-               {
-                       this.columnIndex = columnIndex;
-               }
-
-               public DataColumnPropertyDescriptor (DataColumn dc)
-                       : base (dc.ColumnName, null) 
-               {
-                       this.columnIndex = dc.Ordinal;
-                       this.componentType = typeof(DataRowView);
-                       this.propertyType = dc.DataType;
-                       this.readOnly = dc.ReadOnly;
-               }
-
-               public void SetReadOnly (bool value) 
-               {
-                       readOnly = value;
-               }
-               
-               public void SetComponentType (Type type) 
-               {
-                       componentType = type;
-               }
-
-               public void SetPropertyType (Type type) 
-               {
-                       propertyType = type;
-               }
-
-               public void SetBrowsable (bool browsable)
-               {
-                       this.browsable = browsable;
-               }
-
-               public override object GetValue (object component) 
-               {
-                       // FIXME: what is the correct way to Get a Value?
-                       if(componentType == typeof(DataRowView) && component is DataRowView) {
-                               DataRowView drv = (DataRowView) component;
-                               return drv[base.Name];
-                       }
-                       else if(componentType == typeof(DbDataRecord) && component is DbDataRecord) {
-                               DbDataRecord dr = (DbDataRecord) component;
-                               return dr[columnIndex];
-                       }
-                       throw new InvalidOperationException();
-
-                       /*
-                       if (prop == null)
-                               prop = GetPropertyInfo ();              
-                                                       
-                       // FIXME: should I allow multiple parameters?                                                                                   
-                       object[] parms = new object[1];
-                       parms[0] = base.Name;
-                       return prop.GetValue (component, parms);
-                       */
-               }
-
-               public override void SetValue(object component, object value) 
-               {
-                       DataRowView drv = (DataRowView) component;
-                       drv[base.Name] = value;
-                       /*
-                       if (prop == null)
-                               prop = GetPropertyInfo ();              
-
-                       if (readOnly == true) {
-                               // FIXME: what really happens if read only?
-                               throw new Exception("Property is ReadOnly");
-                       }
-                       
-                       // FIXME: should I allow multiple parameters?
-                       object[] parms = new Object[1];
-                       parms[0] = base.Name;
-                       prop.SetValue (component, value, parms);
-                       */
-               }
-
-               [MonoTODO]
-               public override void ResetValue(object component) 
-               {
-                       // FIXME:
-               }
-
-               [MonoTODO]
-               public override bool CanResetValue(object component) 
-               {
-                       return false; // FIXEME
-               }
-
-               [MonoTODO]
-               public override bool ShouldSerializeValue(object component) 
-               {
-                       return false;
-               }
-
-               public override Type ComponentType {
-                       get {
-                               return componentType;
-                       }
-               }
-
-               public override bool IsReadOnly {
-                       get {
-                               return readOnly;        
-                       }
-               }
-
-               public override bool IsBrowsable {
-                       get { return browsable && base.IsBrowsable; }
-               }
-
-               public override Type PropertyType {
-                       get {
-                               return propertyType;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataException.cs b/mcs/class/System.Data/System.Data/DataException.cs
deleted file mode 100644 (file)
index c56c06e..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.DataException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class DataException : SystemException
-       {
-               public DataException ()
-                       : base (Locale.GetText ("A Data exception has occurred"))
-               {
-               }
-
-               public DataException (string s) : base (s)
-               {
-               }
-
-               protected DataException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               public DataException (string s, Exception innerException)
-                       : base (s, innerException)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRelation.cs b/mcs/class/System.Data/System.Data/DataRelation.cs
deleted file mode 100644 (file)
index 8171565..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-//
-// System.Data.DataRelation.cs
-//
-// Author:
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Alan Tam Siu Lung <Tam@SiuLung.com>
-//   Tim Coleman <tim@timcoleman.com>
-//
-// (C) 2002 Daniel Morgan
-// (C) 2002 Ximian, Inc.
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       /// <summary>
-       /// DataRelation is used for a parent/child relationship
-       /// between two DataTable objects
-       /// </summary>
-       [Editor ("Microsoft.VSDesigner.Data.Design.DataRelationEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       [DefaultProperty ("RelationName")]
-       [TypeConverterAttribute (typeof (RelationshipConverter))]
-       public class DataRelation {
-               private DataSet dataSet;
-               private string relationName;
-               private UniqueConstraint parentKeyConstraint;
-               private ForeignKeyConstraint childKeyConstraint;
-               private DataColumn [] parentColumns;
-               private DataColumn [] childColumns;
-               private bool nested;
-               internal bool createConstraints = true;
-               private bool initFinished;
-               private PropertyCollection extendedProperties;
-               private PropertyChangedEventHandler onPropertyChangingDelegate;
-
-               string _relationName;
-               string _parentTableName;
-               string _childTableName;
-               string [] _parentColumnNames;
-               string [] _childColumnNames;
-               bool _nested;
-               bool initInProgress = false;
-               string _parentTableNameSpace = String.Empty;
-               string _childTableNameSpace = String.Empty;
-
-               #region Constructors
-
-               public DataRelation (string relationName, DataColumn parentColumn, DataColumn childColumn)
-                       : this (relationName, parentColumn, childColumn, true)
-               {
-               }
-
-               public DataRelation (string relationName, DataColumn [] parentColumns, DataColumn [] childColumns)
-                       : this (relationName, parentColumns, childColumns, true)
-               {
-               }
-
-               public DataRelation (string relationName, DataColumn parentColumn, DataColumn childColumn, bool createConstraints)
-                       : this (relationName, new DataColumn[] { parentColumn }, new DataColumn [] { childColumn }, createConstraints)
-               {
-               }
-
-               public DataRelation (string relationName, DataColumn [] parentColumns, DataColumn [] childColumns, bool createConstraints)
-               {
-                       this.extendedProperties = new PropertyCollection ();
-                       this.relationName = relationName == null ? string.Empty : relationName;
-                       if (parentColumns == null)
-                               throw new ArgumentNullException ("parentColumns");
-                       this.parentColumns = parentColumns;
-                       if (childColumns == null)
-                               throw new ArgumentNullException ("childColumns");
-                       this.childColumns = childColumns;
-                       this.createConstraints = createConstraints;
-                       if (parentColumns.Length != childColumns.Length)
-                               throw new ArgumentException ("ParentColumns and ChildColumns should be the same length");
-                       DataTable parentTable = parentColumns [0].Table;
-                       DataTable childTable = childColumns [0].Table;
-                       if (parentTable.DataSet != childTable.DataSet)
-                               throw new InvalidConstraintException ();
-                       foreach (DataColumn column in parentColumns)
-                               if (column.Table != parentTable)
-                                       throw new InvalidConstraintException ();
-                       foreach (DataColumn column in childColumns)
-                               if (column.Table != childTable)
-                                       throw new InvalidConstraintException ();
-
-                       for (int i = 0; i < ChildColumns.Length; i++)
-                               if (!parentColumns [i].DataTypeMatches (childColumns [i]))
-                                       throw new InvalidConstraintException (
-                                               "Parent Columns and Child Columns don't have matching column types");
-               }
-
-               [Browsable (false)]
-               public DataRelation (string relationName, string parentTableName, string childTableName, string [] parentColumnNames, string[] childColumnNames, bool nested)
-               {
-                       _relationName = relationName;
-                       _parentTableName = parentTableName;
-                       _childTableName = childTableName;
-                       _parentColumnNames = parentColumnNames;
-                       _childColumnNames = childColumnNames;
-                       _nested = nested;
-                       InitInProgress = true;
-               }
-
-               [Browsable (false)]
-               public DataRelation (string relationName, string parentTableName,
-                                    string parentTableNamespace, string childTableName,
-                                    string childTableNamespace, string[] parentColumnNames,
-                                    string[] childColumnNames, bool nested)
-               {
-                       _relationName = relationName;
-                       _parentTableName = parentTableName;
-                       _parentTableNameSpace = parentTableNamespace;
-                       _childTableName = childTableName;
-                       _childTableNameSpace = childTableNamespace;
-                       _parentColumnNames = parentColumnNames;
-                       _childColumnNames = childColumnNames;
-                       _nested = nested;
-                       InitInProgress = true;
-               }
-
-               internal bool InitInProgress {
-                       get { return initInProgress; }
-                       set { initInProgress = value; }
-               }
-
-               internal void FinishInit (DataSet ds)
-               {
-                       if (!ds.Tables.Contains (_parentTableName) || !ds.Tables.Contains (_childTableName))
-                               throw new InvalidOperationException ();
-
-                       if (_parentColumnNames.Length != _childColumnNames.Length)
-                               throw new InvalidOperationException ();
-
-                       DataTable parent = ds.Tables [_parentTableName];
-                       DataTable child = ds.Tables [_childTableName];
-
-                       parentColumns = new DataColumn [_parentColumnNames.Length];
-                       childColumns = new DataColumn [_childColumnNames.Length];
-
-                       for (int i = 0; i < _parentColumnNames.Length; ++i) {
-                               if (!parent.Columns.Contains (_parentColumnNames [i]))
-                                       throw new InvalidOperationException ();
-                               parentColumns [i] = parent.Columns [_parentColumnNames [i]];
-                               if (!child.Columns.Contains (_childColumnNames [i]))
-                                       throw new InvalidOperationException ();
-                               childColumns [i] = child.Columns [_childColumnNames [i]];
-                       }
-
-                       this.RelationName = _relationName;
-                       this.Nested = _nested;
-                       this.initFinished = true;
-                       this.extendedProperties = new PropertyCollection ();
-                       InitInProgress = false;
-                       if (_parentTableNameSpace != String.Empty)
-                               parent.Namespace = _parentTableNameSpace;
-                       if (_childTableNameSpace != String.Empty)
-                               child.Namespace = _childTableNameSpace;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               [DataCategory ("Data")]
-               public virtual DataColumn [] ChildColumns {
-                       get { return childColumns; }
-               }
-
-               public virtual ForeignKeyConstraint ChildKeyConstraint {
-                       get { return childKeyConstraint; }
-               }
-
-               internal void SetChildKeyConstraint (ForeignKeyConstraint foreignKeyConstraint)
-               {
-                       childKeyConstraint = foreignKeyConstraint;
-               }
-
-               public virtual DataTable ChildTable {
-                       get { return childColumns [0].Table; }
-               }
-
-               [Browsable (false)]
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-               public virtual DataSet DataSet {
-                       get { return childColumns [0].Table.DataSet; }
-               }
-
-               [Browsable (false)]
-               [DataCategory ("Data")]
-               public PropertyCollection ExtendedProperties {
-                       get {
-                               if (extendedProperties == null)
-                                       extendedProperties = new PropertyCollection();
-                               return extendedProperties;
-                       }
-               }
-
-               [DataCategory ("Data")]
-               [DefaultValue (false)]
-               public virtual bool Nested {
-                       get { return nested; }
-                       set { nested = value; }
-               }
-
-               [DataCategory ("Data")]
-               public virtual DataColumn[] ParentColumns {
-                       get { return parentColumns; }
-               }
-
-               public virtual UniqueConstraint ParentKeyConstraint {
-                       get { return parentKeyConstraint; }
-               }
-
-               internal void SetParentKeyConstraint (UniqueConstraint uniqueConstraint)
-               {
-                       parentKeyConstraint = uniqueConstraint;
-               }
-
-               internal void SetDataSet (DataSet ds)
-               {
-                       dataSet = ds;
-               }
-
-               public virtual DataTable ParentTable {
-                       get { return parentColumns [0].Table; }
-               }
-
-               [DataCategory ("Data")]
-               [DefaultValue ("")]
-               public virtual string RelationName {
-                       get { return relationName; }
-                       set { relationName = value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               protected void CheckStateForProperty ()
-               {
-                       // TODO: check consistency of constraints
-                       DataTable parentTable = parentColumns [0].Table;
-                       DataTable childTable = childColumns [0].Table;
-                       if (parentTable.DataSet != childTable.DataSet)
-                               throw new DataException ();
-                       bool allColumnsEqual = false;
-                       for (int colCnt = 0; colCnt < parentColumns.Length; ++colCnt) {
-                               if (!parentColumns [colCnt].DataType.Equals (childColumns [colCnt].DataType))
-                                       throw new DataException ();
-                               if (parentColumns [colCnt] != childColumns [colCnt])
-                                       allColumnsEqual = false;
-                       }
-                       if (allColumnsEqual)
-                               throw new DataException ();
-               }
-
-               protected internal void OnPropertyChanging (PropertyChangedEventArgs pcevent)
-               {
-                       if (onPropertyChangingDelegate != null)
-                               onPropertyChangingDelegate (this, pcevent);
-               }
-
-               protected internal void RaisePropertyChanging (string name)
-               {
-                       OnPropertyChanging(new PropertyChangedEventArgs(name));
-               }
-
-               public override string ToString ()
-               {
-                       return relationName;
-               }
-
-               internal void UpdateConstraints ()
-               {
-                       if (initFinished || ! createConstraints)
-                               return;
-
-                       ForeignKeyConstraint    foreignKeyConstraint    = null;
-                       UniqueConstraint        uniqueConstraint        = null;
-
-                       foreignKeyConstraint    = FindForeignKey (ChildTable.Constraints);
-                       uniqueConstraint        = FindUniqueConstraint (ParentTable.Constraints);
-
-                       // if we did not find the unique constraint in the parent table.
-                       // we generate new uniqueConstraint and add it to the parent table.
-                       if (uniqueConstraint == null) {
-                               uniqueConstraint = new UniqueConstraint (ParentColumns, false);
-                               ParentTable.Constraints.Add (uniqueConstraint);
-                       }
-
-                       // if we did not find the foreign key constraint in the parent table.
-                       // we generate new foreignKeyConstraint and add it to the parent table.
-                       if (foreignKeyConstraint == null) {
-                               foreignKeyConstraint = new ForeignKeyConstraint (RelationName,
-                                                                                ParentColumns,
-                                                                                ChildColumns);
-                               ChildTable.Constraints.Add (foreignKeyConstraint);
-                       }
-
-                       SetParentKeyConstraint (uniqueConstraint);
-                       SetChildKeyConstraint (foreignKeyConstraint);
-               }
-
-               private static bool CompareDataColumns (DataColumn [] dc1, DataColumn [] dc2)
-               {
-                       if (dc1.Length != dc2.Length)
-                               return false;
-
-                       for (int columnCnt = 0; columnCnt < dc1.Length; ++columnCnt){
-                               if (dc1 [columnCnt] != dc2 [columnCnt])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               private ForeignKeyConstraint FindForeignKey (ConstraintCollection cl)
-               {
-                       ForeignKeyConstraint fkc = null;
-                       foreach (Constraint o in cl) {
-                               if (! (o is ForeignKeyConstraint))
-                                       continue;
-                               fkc = (ForeignKeyConstraint) o;
-                               /* Check ChildColumns & ParentColumns */
-                               if (CompareDataColumns (ChildColumns, fkc.Columns) &&
-                                   CompareDataColumns (ParentColumns, fkc.RelatedColumns))
-                                       return fkc;
-                       }
-                       return null;
-               }
-
-               private UniqueConstraint FindUniqueConstraint (ConstraintCollection cl)
-               {
-                       UniqueConstraint uc = null;
-                       // find if the unique constraint already exists in the parent table.
-                       foreach (Constraint o in cl){
-                               if (! (o is UniqueConstraint))
-                                       continue;
-                               uc = (UniqueConstraint) o;
-                               //Check in ParentColumns
-                               if (CompareDataColumns (ParentColumns, uc.Columns))
-                                       return uc;
-                       }
-                       return null;
-               }
-
-               /// <summary>
-               ///     Check whether the given column is part of this relation.
-               /// <summary>
-               /// <returns>
-               ///     true if the column is part of this relation, otherwise false.
-               /// </returns>
-               internal bool Contains (DataColumn column)
-               {
-                       foreach (DataColumn col in ParentColumns)
-                               if (col == column)
-                                       return true;
-
-                       foreach (DataColumn col in ChildColumns)
-                               if (col == column)
-                                       return true;
-                       return false;
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRelationCollection.cs b/mcs/class/System.Data/System.Data/DataRelationCollection.cs
deleted file mode 100644 (file)
index 1b5d6ff..0000000
+++ /dev/null
@@ -1,667 +0,0 @@
-//
-// System.Data.DataRelationCollection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Tim Coleman (tim@timcoleman.com)
-//   Alan Tam Siu Lung <Tam@SiuLung.com>
-//
-// (C) Chris Podurgiel
-// (C) 2002 Daniel Morgan
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-
-using System.Runtime.Serialization;
-
-namespace System.Data {
-       /// <summary>
-       /// Represents the collection of DataRelation objects for this DataSet.
-       /// </summary>
-       [Editor ("Microsoft.VSDesigner.Data.Design.DataRelationCollectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       [DefaultEvent ("CollectionChanged")]
-       [DefaultProperty ("Table")]
-       public abstract partial class DataRelationCollection : InternalDataCollectionBase {
-               /// <summary>
-               /// Summary description for DataTableRelationCollection.
-               /// </summary>
-               internal partial class DataSetRelationCollection : DataRelationCollection {
-                       private DataSet dataSet;
-                       DataRelation [] mostRecentRelations;
-
-                       /// <summary>
-                       /// Initializes a new instance of the DataSetRelationCollection class.
-                       /// </summary>
-                       internal DataSetRelationCollection (DataSet dataSet)
-                       {
-                               this.dataSet = dataSet;
-                       }
-
-                       protected override DataSet GetDataSet ()
-                       {
-                               return dataSet;
-                       }
-
-                       /// <summary>
-                       /// Performs verification on the table.
-                       /// </summary>
-                       /// <param name="relation">The relation to check.</param>
-                       protected override void AddCore (DataRelation relation)
-                       {
-                               if (relation.ChildTable.DataSet != dataSet || relation.ParentTable.DataSet != dataSet)
-                                  throw new DataException ();
-
-                               base.AddCore (relation);
-                               relation.ParentTable.ChildRelations.Add (relation);
-                               relation.ChildTable.ParentRelations.Add (relation);
-                               relation.SetDataSet (dataSet);
-                               relation.UpdateConstraints ();
-                       }
-
-                       protected override void RemoveCore (DataRelation relation)
-                       {
-                               base.RemoveCore (relation);
-                               relation.SetDataSet (null);
-                               relation.ParentTable.ChildRelations.Remove (relation);
-                               relation.ChildTable.ParentRelations.Remove (relation);
-                               relation.SetParentKeyConstraint (null);
-                               relation.SetChildKeyConstraint (null);
-                       }
-
-                       public override void AddRange (DataRelation [] relations)
-                       {
-                               if (relations == null)
-                                       return;
-
-                               if (dataSet != null && dataSet.InitInProgress){
-                                       mostRecentRelations = relations;
-                                       return;
-                               }
-
-                               foreach (DataRelation rel in relations){
-                                       if (rel == null)
-                                               continue;
-                                       Add (rel);
-                               }
-                       }
-
-                       internal override void PostAddRange ()
-                       {
-                               if (mostRecentRelations == null)
-                                       return;
-
-                               foreach (DataRelation rel in mostRecentRelations){
-                                       if (rel == null)
-                                               continue;
-                                       if (rel.InitInProgress)
-                                               rel.FinishInit (dataSet);
-                                       Add (rel);
-                               }
-                               mostRecentRelations = null;
-                       }
-
-                       protected override ArrayList List {
-                               get { return base.List; }
-                       }
-
-                       public override DataRelation this [string name] {
-                               get {
-                                       int index = IndexOf (name, true);
-                                       return index < 0 ? null : (DataRelation) List [index];
-                               }
-                       }
-
-                       /// <summary>
-                       /// Gets the DataRelation object at the specified index.
-                       /// </summary>
-                       public override DataRelation this [int index] {
-                               get {
-                                       if (index < 0 || index >= List.Count)
-                                               throw new IndexOutOfRangeException (String.Format ("Cannot find relation {0}.", index));
-
-                                       return (DataRelation) List [index];
-                               }
-                       }
-               }
-
-               /// <summary>
-               /// Summary description for DataTableRelationCollection.
-               /// </summary>
-               internal class DataTableRelationCollection : DataRelationCollection {
-                       private DataTable dataTable;
-
-                       /// <summary>
-                       /// Initializes a new instance of the DataTableRelationCollection class.
-                       /// </summary>
-                       internal DataTableRelationCollection (DataTable dataTable)
-                       {
-                               this.dataTable = dataTable;
-                       }
-
-                       protected override DataSet GetDataSet ()
-                       {
-                               return dataTable.DataSet;
-                       }
-
-                       public override DataRelation this [string name] {
-                               get {
-                                       int index = IndexOf (name, true);
-                                       return index < 0 ? null : (DataRelation) List [index];
-                               }
-                       }
-
-                       /// <summary>
-                       /// Gets the DataRelation object at the specified index.
-                       /// </summary>
-                       public override DataRelation this [int index] {
-                               get {
-                                       if (index < 0 || index >= List.Count)
-                                               throw new IndexOutOfRangeException (String.Format ("Cannot find relation {0}.", index));
-
-                                       return (DataRelation) List [index];
-                               }
-                       }
-
-                       /// <summary>
-                       /// Performs verification on the table.
-                       /// </summary>
-                       /// <param name="relation">The relation to check.</param>
-                       protected override void AddCore (DataRelation relation)
-                       {
-                               if (dataTable.ParentRelations == this && relation.ChildTable != dataTable)
-                                       throw new ArgumentException ("Cannot add a relation to this table's " +
-                                                                    "ParentRelations where this table is not" +
-                                                                    " the Child table.");
-
-                               if (dataTable.ChildRelations == this && relation.ParentTable != dataTable)
-                                       throw new ArgumentException("Cannot add a relation to this table's " +
-                                                                   "ChildRelations where this table is not" +
-                                                                   " the Parent table.");
-
-                               dataTable.DataSet.Relations.Add (relation);
-                               base.AddCore (relation);
-                       }
-
-                       protected override void RemoveCore (DataRelation relation)
-                       {
-                               relation.DataSet.Relations.Remove(relation);
-                               base.RemoveCore (relation);
-                       }
-
-                       protected override ArrayList List {
-                               get { return base.List; }
-                       }
-               }
-
-               private DataRelation inTransition;
-               int index;
-
-
-               /// <summary>
-               /// Initializes a new instance of the DataRelationCollection class.
-               /// </summary>
-               protected DataRelationCollection ()
-               {
-                       inTransition = null;
-               }
-
-               /// <summary>
-               /// Gets the DataRelation object specified by name.
-               /// </summary>
-               public abstract DataRelation this [string name] {
-                       get;
-               }
-
-               /// <summary>
-               /// Gets the DataRelation object at the specified index.
-               /// </summary>
-               public abstract DataRelation this [int index] {
-                       get;
-               }
-
-
-               #region Add Methods
-               private string GetNextDefaultRelationName ()
-               {
-                       int index = 1;
-                       string defRelationName = "Relation" + index;
-                       for (; Contains (defRelationName); ++index)
-                               defRelationName = "Relation" + index;
-                       return defRelationName;
-               }
-
-               /// <summary>
-               /// Adds a DataRelation to the DataRelationCollection.
-               /// </summary>
-               /// <param name="relation">The DataRelation to add to the collection.</param>
-               public void Add (DataRelation relation)
-               {
-                       // To prevent endless recursion
-                       if (inTransition == relation)
-                               return;
-
-                       inTransition = relation;
-
-                       try {
-                               CollectionChangeEventArgs e = new CollectionChangeEventArgs (CollectionChangeAction.Add, relation);
-                               OnCollectionChanging (e);
-
-                               this.AddCore (relation);
-                               if (relation.RelationName == string.Empty)
-                                       relation.RelationName = GenerateRelationName ();
-
-                               relation.ParentTable.ResetPropertyDescriptorsCache ();
-                               relation.ChildTable.ResetPropertyDescriptorsCache ();
-
-                               e = new CollectionChangeEventArgs (CollectionChangeAction.Add, relation);
-                               OnCollectionChanged (e);
-                       } finally {
-                               inTransition = null;
-                       }
-               }
-
-               private string GenerateRelationName ()
-               {
-                       index++;
-                       return "Relation" + index;
-               }
-
-               /// <summary>
-               /// Creates a relation given the parameters and adds it to the collection. The name is defaulted.
-               /// An ArgumentException is generated if this relation already belongs to this collection or belongs to another collection.
-               /// An InvalidConstraintException is generated if the relation can't be created based on the parameters.
-               /// The CollectionChanged event is fired if it succeeds.
-               /// </summary>
-               /// <param name="parentColumn">parent column of relation.</param>
-               /// <param name="childColumn">child column of relation.</param>
-               /// <returns>The created DataRelation.</returns>
-               public virtual DataRelation Add (DataColumn parentColumn, DataColumn childColumn)
-               {
-                       DataRelation dataRelation = new DataRelation (GetNextDefaultRelationName (), parentColumn, childColumn);
-                       Add (dataRelation);
-                       return dataRelation;
-               }
-
-               /// <summary>
-               /// Creates a relation given the parameters and adds it to the collection. The name is defaulted.
-               /// An ArgumentException is generated if this relation already belongs to this collection or belongs to another collection.
-               /// An InvalidConstraintException is generated if the relation can't be created based on the parameters.
-               /// The CollectionChanged event is raised if it succeeds.
-               /// </summary>
-               /// <param name="parentColumns">An array of parent DataColumn objects.</param>
-               /// <param name="childColumns">An array of child DataColumn objects.</param>
-               /// <returns>The created DataRelation.</returns>
-               public virtual DataRelation Add (DataColumn [] parentColumns, DataColumn [] childColumns)
-               {
-                       DataRelation dataRelation = new DataRelation (GetNextDefaultRelationName (), parentColumns, childColumns);
-                       Add (dataRelation);
-                       return dataRelation;
-               }
-
-               /// <summary>
-               /// Creates a relation given the parameters and adds it to the collection.
-               /// An ArgumentException is generated if this relation already belongs to this collection or belongs to another collection.
-               /// A DuplicateNameException is generated if this collection already has a relation with the same name (case insensitive).
-               /// An InvalidConstraintException is generated if the relation can't be created based on the parameters.
-               /// The CollectionChanged event is raised if it succeeds.
-               /// </summary>
-               /// <param name="name">The name of the relation.</param>
-               /// <param name="parentColumn">parent column of relation.</param>
-               /// <returns>The created DataRelation.</returns>
-               /// <returns></returns>
-               public virtual DataRelation Add (string name, DataColumn parentColumn, DataColumn childColumn)
-               {
-                       //If no name was supplied, give it a default name.
-                       if (name == null || name == "")
-                               name = GetNextDefaultRelationName ();
-
-                       DataRelation dataRelation = new DataRelation (name, parentColumn, childColumn);
-                       Add (dataRelation);
-                       return dataRelation;
-               }
-
-               /// <summary>
-               /// Creates a DataRelation with the specified name, and arrays of parent and child columns, and adds it to the collection.
-               /// </summary>
-               /// <param name="name">The name of the DataRelation to create.</param>
-               /// <param name="parentColumns">An array of parent DataColumn objects.</param>
-               /// <param name="childColumns">An array of child DataColumn objects.</param>
-               /// <returns>The created DataRelation.</returns>
-               public virtual DataRelation Add (string name, DataColumn [] parentColumns, DataColumn [] childColumns)
-               {
-                       //If no name was supplied, give it a default name.
-                       if (name == null || name == "")
-                               name = GetNextDefaultRelationName ();
-
-                       DataRelation dataRelation = new DataRelation (name, parentColumns, childColumns);
-                       Add (dataRelation);
-                       return dataRelation;
-               }
-
-               /// <summary>
-               /// Creates a relation given the parameters and adds it to the collection.
-               /// An ArgumentException is generated if this relation already belongs to this collection or belongs to another collection.
-               /// A DuplicateNameException is generated if this collection already has a relation with the same name (case insensitive).
-               /// An InvalidConstraintException is generated if the relation can't be created based on the parameters.
-               /// The CollectionChanged event is raised if it succeeds.
-               /// </summary>
-               /// <param name="name">The name of the relation.</param>
-               /// <param name="parentColumn">parent column of relation.</param>
-               /// <param name="childColumn">child column of relation.</param>
-               /// <param name="createConstraints">true to create constraints; otherwise false. (default is true)</param>
-               /// <returns>The created DataRelation.</returns>
-               public virtual DataRelation Add(string name, DataColumn parentColumn, DataColumn childColumn, bool createConstraints)
-               {
-                       //If no name was supplied, give it a default name.
-                       if (name == null || name == "")
-                               name = GetNextDefaultRelationName ();
-
-                       DataRelation dataRelation = new DataRelation (name, parentColumn, childColumn, createConstraints);
-                       Add (dataRelation);
-                       return dataRelation;
-               }
-
-               /// <summary>
-               /// Creates a DataRelation with the specified name, arrays of parent and child columns,
-               /// and value specifying whether to create a constraint, and adds it to the collection.
-               /// </summary>
-               /// <param name="name">The name of the DataRelation to create.</param>
-               /// <param name="parentColumns">An array of parent DataColumn objects.</param>
-               /// <param name="childColumns">An array of child DataColumn objects.</param>
-               /// <param name="createConstraints">true to create a constraint; otherwise false.</param>
-               /// <returns>The created DataRelation.</returns>
-               public virtual DataRelation Add (string name, DataColumn [] parentColumns, DataColumn [] childColumns, bool createConstraints)
-               {
-                       //If no name was supplied, give it a default name.
-                       if (name == null || name == "")
-                               name = GetNextDefaultRelationName ();
-
-                       DataRelation dataRelation = new DataRelation (name, parentColumns, childColumns, createConstraints);
-                       Add (dataRelation);
-                       return dataRelation;
-               }
-               #endregion
-
-               /// <summary>
-               /// Adds to the list
-               /// </summary>
-               /// <param name="relation">The relation to check.</param>
-               protected virtual void AddCore (DataRelation relation)
-               {
-                       if (relation == null)
-                               //TODO: Issue a good exception message.
-                               throw new ArgumentNullException();
-
-                       if(List.IndexOf (relation) != -1)
-                               //TODO: Issue a good exception message.
-                               throw new ArgumentException();
-
-                       // check if the collection has a relation with the same name.
-                       int tmp = IndexOf (relation.RelationName);
-                       // if we found a relation with same name we have to check
-                       // that it is the same case.
-                       // indexof can return a table with different case letters.
-                       if (tmp != -1 && relation.RelationName == this [tmp].RelationName)
-                               throw new DuplicateNameException("A DataRelation named '" + relation.RelationName + "' already belongs to this DataSet.");
-
-                       // check whether the relation exists between the columns already
-                       foreach (DataRelation rel in this) {
-                               // compare child columns
-                               bool differs = false;
-                               foreach (DataColumn current in relation.ChildColumns) {
-                                       bool exists = false;
-                                       foreach (DataColumn col in rel.ChildColumns) {
-                                               if (col == current) {
-                                                       exists = true;
-                                                       break;
-                                               }
-                                       }
-                                       if (!exists) {
-                                               differs = true;
-                                               break;
-                                       }
-                               }
-
-                               if (! differs) {
-                                       // compare parent columns
-                                       differs = false;
-                                       foreach (DataColumn current in relation.ParentColumns) {
-                                               bool exists = false;
-                                               foreach (DataColumn col in rel.ParentColumns) {
-                                                       if (col == current) {
-                                                               exists = true;
-                                                               break;
-                                                       }
-                                               }
-                                               if (!exists) {
-                                                       differs = true;
-                                                       break;
-                                               }
-                                       }
-
-                                       if (! differs)
-                                               throw new ArgumentException ("A relation already exists for these child columns");
-                               }
-                       }
-
-                       // Add to collection
-                       List.Add (relation);
-               }
-
-               /// <summary>
-               /// Copies the elements of the specified DataRelation array to the end of the collection.
-               /// </summary>
-               /// <param name="relations">The array of DataRelation objects to add to the collection.</param>
-               public virtual void AddRange (DataRelation[] relations)
-               {
-                       if (relations == null)
-                               return;
-
-                       foreach (DataRelation relation in relations)
-                               Add (relation);
-               }
-
-               internal virtual void PostAddRange ()
-               {
-               }
-
-               public virtual bool CanRemove (DataRelation relation)
-               {
-                       if (relation == null || !GetDataSet ().Equals (relation.DataSet))
-                               return false;
-
-                       // check if the relation doesnot belong to this collection
-                       int tmp = IndexOf (relation.RelationName);
-                       return tmp != -1 && relation.RelationName == this [tmp].RelationName;
-               }
-
-               public virtual void Clear ()
-               {
-                       for (int i = 0; i < Count; i++)
-                               Remove (this [i]);
-
-                       List.Clear ();
-               }
-
-               public virtual bool Contains (string name)
-               {
-                       DataSet tmpDataSet = GetDataSet ();
-                       if (tmpDataSet != null) {
-                               DataRelation tmpRelation = tmpDataSet.Relations [name];
-                               if (tmpRelation != null)
-                                       return true;
-                       }
-                       return (-1 != IndexOf (name, false));
-               }
-
-               private CollectionChangeEventArgs CreateCollectionChangeEvent (CollectionChangeAction action)
-               {
-                       return new CollectionChangeEventArgs (action, this);
-               }
-
-               protected abstract DataSet GetDataSet ();
-
-               public virtual int IndexOf (DataRelation relation)
-               {
-                       return List.IndexOf (relation);
-               }
-
-               public virtual int IndexOf (string relationName)
-               {
-                       return IndexOf (relationName, false);
-               }
-
-               private int IndexOf (string name, bool error)
-               {
-                       int count = 0, match = -1;
-                       for (int i = 0; i < List.Count; i++) {
-                               String name2 = ((DataRelation) List[i]).RelationName;
-                               if (String.Compare (name, name2, true) == 0) {
-                                       if (String.Compare (name, name2, false) == 0)
-                                               return i;
-                                       match = i;
-                                       count++;
-                               }
-                       }
-                       if (count == 1)
-                               return match;
-                       if (count > 1 && error)
-                               throw new ArgumentException ("There is no match for the name in the same case and there are multiple matches in different case.");
-                       return -1;
-               }
-
-               protected virtual void OnCollectionChanged (CollectionChangeEventArgs ccevent)
-               {
-                       if (CollectionChanged != null)
-                               CollectionChanged (this, ccevent);
-               }
-
-               protected virtual void OnCollectionChanging (CollectionChangeEventArgs ccevent)
-               {
-                       // LAME Spec: No associated events and it doesn't update CollectionChanged
-                       // event too as specified in MSDN
-                       // throw new NotImplementedException ();
-               }
-
-               public void Remove (DataRelation relation)
-               {
-                       // To prevent endless recursion
-                       if (inTransition == relation)
-                               return;
-
-                       inTransition = relation;
-
-                       if (relation == null)
-                               return;
-
-                       try {
-                               // check if the list doesnot contains this relation.
-                               if (!(List.Contains (relation)))
-                                       throw new ArgumentException ("Relation doesnot belong to this Collection.");
-
-                               CollectionChangeEventArgs e = new CollectionChangeEventArgs (CollectionChangeAction.Remove, relation);
-                               OnCollectionChanging (e);
-
-                               RemoveCore (relation);
-                               string name = "Relation" + index;
-                               if (relation.RelationName == name)
-                                       index--;
-
-                               e = new CollectionChangeEventArgs (CollectionChangeAction.Remove, relation);
-                               OnCollectionChanged (e);
-                       } finally {
-                               inTransition = null;
-                       }
-               }
-
-               public void Remove (string name)
-               {
-                       DataRelation relation = this [name];
-                       if (relation == null)
-                               throw new ArgumentException ("Relation doesnot belong to this Collection.");
-                       Remove (relation);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       DataRelation relation = this [index];
-                       if (relation == null)
-                               throw new IndexOutOfRangeException (String.Format ("Cannot find relation {0}", index));
-                       Remove (relation);
-               }
-
-               protected virtual void RemoveCore (DataRelation relation)
-               {
-                       // Remove from collection
-                       List.Remove (relation);
-               }
-
-               #region Events
-
-               [ResDescriptionAttribute ("Occurs whenever this collection's membership changes.")]
-               public event CollectionChangeEventHandler CollectionChanged;
-
-               #endregion
-       }
-
-       partial class DataRelationCollection {
-               public void CopyTo (DataRelation [] array, int index)
-               {
-                       CopyTo ((Array) array, index);
-               }
-
-               internal void BinarySerialize (SerializationInfo si)
-               {
-                       ArrayList l = new ArrayList ();
-                       for (int j = 0; j < Count; j++) {
-                               DataRelation dr = (DataRelation) List [j];
-                               ArrayList tmp = new ArrayList ();
-                               tmp.Add (dr.RelationName);
-
-                               // FIXME: Handle multi-column relations
-                               int [] rep = new int [2];
-                               DataTable dt = dr.ParentTable;
-                               rep [0] = dt.DataSet.Tables.IndexOf (dt);
-                               rep [1] = dt.Columns.IndexOf (dr.ParentColumns [0]);
-                               tmp.Add (rep);
-                               rep = new int [2];
-                               dt = dr.ChildTable;
-                               rep [0] = dt.DataSet.Tables.IndexOf (dt);
-                               rep [1] = dt.Columns.IndexOf (dr.ChildColumns [0]);
-                               tmp.Add (rep);
-                               tmp.Add (false); // FIXME
-                               tmp.Add (null); // FIXME
-                               l.Add (tmp);
-                       }
-                       si.AddValue ("DataSet.Relations", l, typeof (ArrayList));
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRelationPropertyDescriptor.cs b/mcs/class/System.Data/System.Data/DataRelationPropertyDescriptor.cs
deleted file mode 100644 (file)
index 0daa973..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-using System;\r
-using System.ComponentModel;\r
-\r
-namespace System.Data\r
-{\r
-       internal class DataRelationPropertyDescriptor : PropertyDescriptor\r
-       {\r
-               #region Fields\r
-\r
-               DataRelation _relation;\r
-\r
-               #endregion // Fields\r
-\r
-               #region Constructors\r
-\r
-               internal DataRelationPropertyDescriptor(DataRelation relation) : base(relation.RelationName,null)\r
-               {\r
-                       _relation = relation;\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Properties\r
-\r
-               public override Type ComponentType \r
-               { \r
-                       get {\r
-                               return typeof(DataRowView);\r
-                       }\r
-               }\r
-\r
-               public override bool IsReadOnly \r
-               { \r
-                       get {\r
-                               return false;\r
-                       }\r
-               }\r
-\r
-               public override Type PropertyType \r
-               { \r
-                       get {\r
-                               return typeof(IBindingList);\r
-                       }\r
-               }\r
-\r
-               public DataRelation Relation \r
-               { \r
-                       get {\r
-                               return _relation;\r
-                       }\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               public override bool CanResetValue(object obj)\r
-               {\r
-                       return false;\r
-               }\r
-\r
-               public override bool Equals(object obj)\r
-               {\r
-                       DataRelationPropertyDescriptor descriptor = obj as DataRelationPropertyDescriptor;\r
-\r
-                       if (descriptor == null) {\r
-                               return false;\r
-                       }\r
-\r
-                       return (Relation == descriptor.Relation);\r
-               }\r
-\r
-               public override int GetHashCode()\r
-               {\r
-                       return _relation.GetHashCode();\r
-               }\r
-\r
-        public override object GetValue(object obj)\r
-               {\r
-                       DataRowView dr = (DataRowView)obj;\r
-                       return dr.CreateChildView(Relation);\r
-               }\r
-\r
-               public override void ResetValue(object obj)\r
-               {\r
-               }\r
-\r
-               public override void SetValue(object obj, object val)\r
-               {\r
-               }\r
-\r
-               public override bool ShouldSerializeValue(object obj)\r
-               {\r
-                       return false;\r
-               }\r
-\r
-               #endregion // Methods\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataRow.cs b/mcs/class/System.Data/System.Data/DataRow.cs
deleted file mode 100644 (file)
index 70aeaf1..0000000
+++ /dev/null
@@ -1,1687 +0,0 @@
-//
-// System.Data.DataRow.cs
-//
-// Author:
-//   Rodrigo Moya <rodrigo@ximian.com>
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Tim Coleman <tim@timcoleman.com>
-//   Ville Palo <vi64pa@koti.soon.fi>
-//   Alan Tam Siu Lung <Tam@SiuLung.com>
-//   Sureshkumar T <tsureshkumar@novell.com>
-//   Veerapuram Varadhan <vvaradhan@novell.com>
-//
-// (C) Ximian, Inc 2002
-// (C) Daniel Morgan 2002, 2003
-// Copyright (C) 2002 Tim Coleman
-//
-
-//
-// Copyright (C) 2004-2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Common;
-using System.Collections;
-using System.Globalization;
-using System.Xml;
-using System.ComponentModel;
-
-namespace System.Data {
-       /// <summary>
-       /// Represents a row of data in a DataTable.
-       /// </summary>
-       public class DataRow {
-               #region Fields
-
-               private DataTable _table;
-
-               internal int _original = -1;
-               internal int _current = -1;
-               internal int _proposed = -1;
-
-               private ArrayList _columnErrors;
-               private string rowError;
-               internal int xmlRowID = 0;
-               internal bool _nullConstraintViolation;
-               private string _nullConstraintMessage;
-               private bool _inChangingEvent;
-               private int _rowId;
-               internal bool _rowChanged = false;
-
-               private XmlDataDocument.XmlDataElement mappedElement;
-               internal bool _inExpressionEvaluation = false;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               /// <summary>
-               /// This member supports the .NET Framework infrastructure and is not intended to be
-               /// used directly from your code.
-               /// </summary>
-               protected internal DataRow (DataRowBuilder builder)
-               {
-                       _table = builder.Table;
-                       // Get the row id from the builder.
-                       _rowId = builder._rowId;
-
-                       rowError = String.Empty;
-               }
-
-               internal DataRow (DataTable table, int rowId)
-               {
-                       _table = table;
-                       _rowId = rowId;
-                       rowError = String.Empty;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               private ArrayList ColumnErrors {
-                       get {
-                               if (_columnErrors == null)
-                                       _columnErrors = new ArrayList ();
-                               return _columnErrors;
-                       }
-
-                       set { _columnErrors = value; }
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether there are errors in a row.
-               /// </summary>
-               public bool HasErrors {
-                       get {
-                               if (!string.IsNullOrEmpty (RowError))
-                                       return true;
-
-                               foreach (String columnError in ColumnErrors) {
-                                       if (!string.IsNullOrEmpty (columnError))
-                                               return true;
-                               }
-                               return false;
-                       }
-               }
-
-               /// <summary>
-               /// Gets or sets the data stored in the column specified by name.
-               /// </summary>
-               public object this [string columnName] {
-                       get { return this [columnName, DataRowVersion.Default]; }
-                       set {
-                               DataColumn column = GetColumn (columnName);
-                               this [column.Ordinal] = value;
-                       }
-               }
-
-               /// <summary>
-               /// Gets or sets the data stored in specified DataColumn
-               /// </summary>
-               public object this [DataColumn column] {
-                       get { return this [column, DataRowVersion.Default]; }
-                       set {
-                               if (column == null)
-                                       throw new ArgumentNullException ("column");
-                               int columnIndex = _table.Columns.IndexOf (column);
-                               if (columnIndex == -1)
-                                       throw new ArgumentException (string.Format (CultureInfo.InvariantCulture,
-                                               "The column '{0}' does not belong to the table : {1}.",
-                                               column.ColumnName, _table.TableName));
-                               this [columnIndex] = value;
-                       }
-               }
-
-               /// <summary>
-               /// Gets or sets the data stored in column specified by index.
-               /// </summary>
-               public object this [int columnIndex] {
-                       get { return this [columnIndex, DataRowVersion.Default]; }
-                       set {
-                               if (columnIndex < 0 || columnIndex > _table.Columns.Count)
-                                       throw new IndexOutOfRangeException ();
-                               if (RowState == DataRowState.Deleted)
-                                       throw new DeletedRowInaccessibleException ();
-
-                               DataColumn column = _table.Columns [columnIndex];
-                               _table.ChangingDataColumn (this, column, value);
-
-                               if (value == null && column.DataType.IsValueType)
-                                       throw new ArgumentException ("Canot set column '"
-                                               + column.ColumnName + "' to be null."
-                                               + " Please use DBNull instead.");
-
-                               _rowChanged = true;
-
-                               CheckValue (value, column);
-                               bool already_editing = Proposed >= 0;
-                               if (!already_editing)
-                                       BeginEdit ();
-
-                               column [Proposed] = value;
-                               _table.ChangedDataColumn (this, column, value);
-
-                               if (!already_editing)
-                                       EndEdit ();
-                       }
-               }
-
-               /// <summary>
-               /// Gets the specified version of data stored in the named column.
-               /// </summary>
-               public object this [string columnName, DataRowVersion version] {
-                       get {
-                               DataColumn column = GetColumn (columnName);
-                               return this [column.Ordinal, version];
-                       }
-               }
-
-               /// <summary>
-               /// Gets the specified version of data stored in the specified DataColumn.
-               /// </summary>
-               public object this [DataColumn column, DataRowVersion version] {
-                       get {
-                               if (column == null)
-                                       throw new ArgumentNullException ("column");
-                               if (column.Table != Table)
-                                       throw new ArgumentException (string.Format (CultureInfo.InvariantCulture,
-                                               "The column '{0}' does not belong to the table : {1}.",
-                                               column.ColumnName, _table.TableName));
-                               return this [column.Ordinal, version];
-                       }
-               }
-
-               /// <summary>
-               /// Set a value for the column into the offset specified by the version.<br>
-               /// If the value is auto increment or null, necessary auto increment value
-               /// or the default value will be used.
-               /// </summary>
-               internal void SetValue (int column, object value, int version)
-               {
-                       DataColumn dc = Table.Columns [column];
-
-                       if (value == null && !dc.AutoIncrement) // set default value / auto increment
-                               value = dc.DefaultValue;
-
-                       Table.ChangingDataColumn (this, dc, value);
-                       CheckValue (value, dc);
-                       if (!dc.AutoIncrement)
-                               dc [version] = value;
-                       else if (_proposed >= 0 && _proposed != version) // proposed holds the AI
-                               dc [version] = dc [_proposed];
-               }
-
-               /// <summary>
-               /// Gets the data stored in the column, specified by index and version of the data to
-               /// retrieve.
-               /// </summary>
-               public object this [int columnIndex, DataRowVersion version] {
-                       get {
-                               if (columnIndex < 0 || columnIndex > _table.Columns.Count)
-                                       throw new IndexOutOfRangeException ();
-
-                               DataColumn column = _table.Columns [columnIndex];
-                               int recordIndex = IndexFromVersion (version);
-
-                               if (column.Expression != String.Empty && _table.Rows.IndexOf (this) != -1) {
-                                       // FIXME: how does this handle 'version'?
-                                       // TODO: Can we avoid the Eval each time by using the cached value?
-                                       object o = column.CompiledExpression.Eval (this);
-                                       if (o != null && o != DBNull.Value)
-                                               o = Convert.ChangeType (o, column.DataType);
-                                       column [recordIndex] = o;
-                                       return column [recordIndex];
-                               }
-
-                               return column [recordIndex];
-                       }
-               }
-
-               /// <summary>
-               /// Gets or sets all of the values for this row through an array.
-               /// </summary>
-               public object [] ItemArray {
-                       get {
-                               // Accessing deleted rows
-                               if (RowState == DataRowState.Deleted)
-                                       throw new DeletedRowInaccessibleException ("Deleted row information cannot be accessed through the row.");
-
-                               int index = Current;
-                               if (RowState == DataRowState.Detached) {
-                                       // Check if datarow is removed from the table.
-                                       if (Proposed < 0)
-                                               throw new RowNotInTableException (
-                                                       "This row has been removed from a table and does not have any data."
-                                                       + "  BeginEdit() will allow creation of new data in this row.");
-                                       index = Proposed;
-                               }
-
-                               object[] items = new object [_table.Columns.Count];
-
-                               foreach(DataColumn column in _table.Columns)
-                                       items [column.Ordinal] = column [index];
-                               return items;
-                       }
-                       set {
-                               if (value.Length > _table.Columns.Count)
-                                       throw new ArgumentException ();
-
-                               if (RowState == DataRowState.Deleted)
-                                       throw new DeletedRowInaccessibleException ();
-
-                               BeginEdit ();
-
-                               DataColumnChangeEventArgs e = new DataColumnChangeEventArgs ();
-                               foreach (DataColumn column in _table.Columns) {
-                                       int i = column.Ordinal;
-                                       object newVal = i < value.Length ? value [i] : null;
-
-                                       if (newVal == null)
-                                               continue;
-
-                                       e.Initialize (this, column, newVal);
-                                       CheckValue (e.ProposedValue, column);
-                                       _table.RaiseOnColumnChanging (e);
-                                       column [Proposed] = e.ProposedValue;
-                                       _table.RaiseOnColumnChanged (e);
-                               }
-
-                               EndEdit ();
-                       }
-               }
-
-               /// <summary>
-               /// Gets the current state of the row in regards to its relationship to the
-               /// DataRowCollection.
-               /// </summary>
-               public DataRowState RowState {
-                       get {
-                               //return rowState;
-                               if (Original == -1 && Current == -1)
-                                       return DataRowState.Detached;
-                               if (Original == Current)
-                                       return DataRowState.Unchanged;
-                               if (Original == -1)
-                                       return DataRowState.Added;
-                               if (Current == -1)
-                                       return DataRowState.Deleted;
-                               return DataRowState.Modified;
-                       }
-                       internal set {
-                               if (DataRowState.Detached == value) {
-                                       Original = -1;
-                                       Current = -1;
-                               }
-                               if (DataRowState.Unchanged == value)
-                                       Original = Current;
-                               if (DataRowState.Added == value)
-                                       Original = -1;
-                               if (DataRowState.Deleted == value)
-                                       Current = -1;
-                       }
-               }
-
-               public void SetAdded ()
-               {
-                       if (RowState != DataRowState.Unchanged)
-                               throw new InvalidOperationException ("SetAdded and SetModified can only be called on DataRows with Unchanged DataRowState.");
-                       Original = -1;
-               }
-
-               public void SetModified ()
-               {
-                       if (RowState != DataRowState.Unchanged)
-                               throw new InvalidOperationException ("SetAdded and SetModified can only be called on DataRows with Unchanged DataRowState.");
-                       Current = _table.RecordCache.NewRecord ();
-                       _table.RecordCache.CopyRecord (_table, Original, Current);
-               }
-
-               /// <summary>
-               /// Gets the DataTable for which this row has a schema.
-               /// </summary>
-               public DataTable Table {
-                       get { return _table; }
-                       internal set { _table = value; }
-               }
-
-               /// <summary>
-               /// Gets and sets index of row. This is used from
-               /// XmlDataDocument.
-               // </summary>
-               internal int XmlRowID {
-                       get { return xmlRowID; }
-                       set { xmlRowID = value; }
-               }
-
-               /// <summary>
-               /// Gets and sets index of row.
-               // </summary>
-               internal int RowID {
-                       get { return _rowId; }
-                       set { _rowId = value; }
-               }
-
-               internal int Original {
-                       get { return _original; }
-                       set {
-                               if (Table != null) {
-                                       //Table.RecordCache[_original] = null;
-                                       Table.RecordCache [value] = this;
-                               }
-                               _original = value;
-                       }
-               }
-
-               internal int Current {
-                       get { return _current; }
-                       set {
-                               if (Table != null) {
-                                       //Table.RecordCache[_current] = null;
-                                       Table.RecordCache [value] = this;
-                               }
-                               _current = value;
-                       }
-               }
-
-               internal int Proposed {
-                       get { return _proposed; }
-                       set {
-                               if (Table != null) {
-                                       //Table.RecordCache[_proposed] = null;
-                                       Table.RecordCache [value] = this;
-                               }
-                               _proposed = value;
-                       }
-               }
-
-               #endregion
-
-               #region Methods
-               // Called by DataRowCollection.Add/InsertAt
-               internal void AttachAt (int row_id, DataRowAction action)
-               {
-                       _rowId = row_id;
-                       if (Proposed != -1) {
-                               if (Current >= 0)
-                                       Table.RecordCache.DisposeRecord (Current);
-                               Current = Proposed;
-                               Proposed = -1;
-                       }
-                       if ((action & (DataRowAction.ChangeCurrentAndOriginal | DataRowAction.ChangeOriginal)) != 0)
-                               Original = Current;
-               }
-
-               void Detach ()
-               {
-                       Table.DeleteRowFromIndexes (this);
-                       _table.Rows.RemoveInternal (this);
-
-                       if (Proposed >= 0 && Proposed != Current && Proposed != Original)
-                               _table.RecordCache.DisposeRecord (Proposed);
-                       Proposed = -1;
-
-                       if (Current >= 0 && Current != Original)
-                               _table.RecordCache.DisposeRecord (Current);
-                       Current = -1;
-
-                       if (Original >= 0)
-                               _table.RecordCache.DisposeRecord (Original);
-                       Original = -1;
-
-                       _rowId = -1;
-               }
-
-               internal void ImportRecord (int record)
-               {
-                       if (HasVersion (DataRowVersion.Proposed))
-                               Table.RecordCache.DisposeRecord (Proposed);
-
-                       Proposed = record;
-
-                       foreach (DataColumn column in Table.Columns.AutoIncrmentColumns)
-                               column.UpdateAutoIncrementValue (column.DataContainer.GetInt64 (Proposed));
-
-                       foreach (DataColumn col in Table.Columns)
-                               CheckValue (this [col], col, false);
-               }
-
-               private void CheckValue (object v, DataColumn col)
-               {
-                       CheckValue (v, col, true);
-               }
-
-               private void CheckValue (object v, DataColumn col, bool doROCheck)
-               {
-                       if (doROCheck && _rowId != -1 && col.ReadOnly)
-                               throw new ReadOnlyException ();
-
-                       if (v == null || v == DBNull.Value) {
-                               if (col.AllowDBNull || col.AutoIncrement || col.DefaultValue != DBNull.Value)
-                                       return;
-
-                               //Constraint violations during data load is raise in DataTable EndLoad
-                               this._nullConstraintViolation = true;
-                               if (this.Table._duringDataLoad || (Table.DataSet != null && !Table.DataSet.EnforceConstraints))
-                                       this.Table._nullConstraintViolationDuringDataLoad = true;
-                               _nullConstraintMessage = "Column '" + col.ColumnName + "' does not allow nulls.";
-                       }
-               }
-
-               /// <summary>
-               /// Gets or sets the custom error description for a row.
-               /// </summary>
-               public string RowError {
-                       get { return rowError; }
-                       set { rowError = value ?? string.Empty; }
-               }
-
-               internal int IndexFromVersion (DataRowVersion version)
-               {
-                       switch (version) {
-                       case DataRowVersion.Default:
-                               if (Proposed >= 0)
-                                       return Proposed;
-
-                               if (Current >= 0)
-                                       return Current;
-
-                               if (Original < 0)
-                                       throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
-
-                               throw new DeletedRowInaccessibleException ("Deleted row information cannot be accessed through the row.");
-
-                       case DataRowVersion.Proposed:
-                               return AssertValidVersionIndex (version, Proposed);
-                       case DataRowVersion.Current:
-                               return AssertValidVersionIndex (version, Current);
-                       case DataRowVersion.Original:
-                               return AssertValidVersionIndex (version, Original);
-                       default:
-                               throw new DataException ("Version must be Original, Current, or Proposed.");
-                       }
-               }
-
-               private int AssertValidVersionIndex (DataRowVersion version, int index)
-               {
-                       if (index >= 0)
-                               return index;
-
-                       throw new VersionNotFoundException (String.Format ("There is no {0} data to access.", version));
-               }
-
-               internal DataRowVersion VersionFromIndex (int index)
-               {
-                       if (index < 0)
-                               throw new ArgumentException ("Index must not be negative.");
-
-                       // the order of ifs matters
-                       if (index == Current)
-                               return DataRowVersion.Current;
-                       if (index == Original)
-                               return DataRowVersion.Original;
-                       if (index == Proposed)
-                               return DataRowVersion.Proposed;
-
-                       throw new ArgumentException (String.Format ("The index {0} does not belong to this row.", index));
-               }
-
-               internal XmlDataDocument.XmlDataElement DataElement {
-                       get {
-                               if (mappedElement != null || _table.DataSet == null || _table.DataSet._xmlDataDocument == null)
-                                       return mappedElement;
-
-                               // create mapped XmlDataElement
-                               mappedElement = new XmlDataDocument.XmlDataElement (
-                                       this, _table.Prefix, XmlHelper.Encode (_table.TableName),
-                                       _table.Namespace, _table.DataSet._xmlDataDocument);
-                               return mappedElement;
-                       }
-                       set { mappedElement = value; }
-               }
-
-               internal void SetOriginalValue (string columnName, object val)
-               {
-                       DataColumn column = _table.Columns [columnName];
-                       _table.ChangingDataColumn (this, column, val);
-
-                       if (Original < 0 || Original == Current) {
-                               Original = Table.RecordCache.NewRecord ();
-                               
-                               foreach (DataColumn col in _table.Columns)
-                                       col.DataContainer.CopyValue (Table.DefaultValuesRowIndex, Original);
-                       }
-
-                       CheckValue (val, column);
-                       column [Original] = val;
-               }
-
-               /// <summary>
-               /// Commits all the changes made to this row since the last time AcceptChanges was
-               /// called.
-               /// </summary>
-               public void AcceptChanges ()
-               {
-                       EndEdit (); // in case it hasn't been called
-
-                       _table.ChangingDataRow (this, DataRowAction.Commit);
-                       CheckChildRows (DataRowAction.Commit);
-                       switch (RowState) {
-                       case DataRowState.Added:
-                       case DataRowState.Modified:
-                               if (Original >= 0)
-                                       Table.RecordCache.DisposeRecord (Original);
-                               Original = Current;
-                               break;
-                       case DataRowState.Deleted:
-                               Detach ();
-                               break;
-                       case DataRowState.Detached:
-                               throw new RowNotInTableException("Cannot perform this operation on a row not in the table.");
-                       }
-
-                       _table.ChangedDataRow (this, DataRowAction.Commit);
-               }
-
-               /// <summary>
-               /// Begins an edit operation on a DataRow object.
-               /// </summary>
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public void BeginEdit ()
-               {
-                       if (_inChangingEvent)
-                               throw new InRowChangingEventException ("Cannot call BeginEdit inside an OnRowChanging event.");
-                       if (RowState == DataRowState.Deleted)
-                               throw new DeletedRowInaccessibleException ();
-
-                       if (!HasVersion (DataRowVersion.Proposed)) {
-                               Proposed = Table.RecordCache.NewRecord ();
-                               int from = HasVersion (DataRowVersion.Current) ? Current : Table.DefaultValuesRowIndex;
-                               for (int i = 0; i < Table.Columns.Count; i++){
-                                       DataColumn column = Table.Columns [i];
-                                       column.DataContainer.CopyValue (from, Proposed);
-                               }
-                       }
-               }
-
-               /// <summary>
-               /// Cancels the current edit on the row.
-               /// </summary>
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public void CancelEdit ()
-               {
-                        if (_inChangingEvent)
-                               throw new InRowChangingEventException ("Cannot call CancelEdit inside an OnRowChanging event.");
-
-                       if (HasVersion (DataRowVersion.Proposed)) {
-                               int oldRecord = Proposed;
-                               DataRowState oldState = RowState;
-                               Table.RecordCache.DisposeRecord(Proposed);
-                               Proposed = -1;
-
-                               foreach (Index index in Table.Indexes)
-                                       index.Update (this, oldRecord, DataRowVersion.Proposed, oldState);
-                       }
-               }
-
-               /// <summary>
-               /// Clears the errors for the row, including the RowError and errors set with
-               /// SetColumnError.
-               /// </summary>
-               public void ClearErrors ()
-               {
-                       rowError = String.Empty;
-                       ColumnErrors.Clear();
-               }
-
-               /// <summary>
-               /// Deletes the DataRow.
-               /// </summary>
-               public void Delete ()
-               {
-                       _table.DeletingDataRow (this, DataRowAction.Delete);
-                       switch (RowState) {
-                       case DataRowState.Added:
-                               CheckChildRows (DataRowAction.Delete);
-                               Detach ();
-                               break;
-                       case DataRowState.Deleted:
-                       case DataRowState.Detached:
-                               break;
-                       default:
-                               // check what to do with child rows
-                               CheckChildRows (DataRowAction.Delete);
-                               break;
-                       }
-                       if (Current >= 0) {
-                               int current = Current;
-                               DataRowState oldState = RowState;
-                               if (Current != Original)
-                                       _table.RecordCache.DisposeRecord (Current);
-                               Current = -1;
-                               foreach (Index index in Table.Indexes)
-                                       index.Update (this, current, DataRowVersion.Current, oldState);
-                       }
-                       _table.DeletedDataRow (this, DataRowAction.Delete);
-               }
-
-               // check the child rows of this row before deleting the row.
-               private void CheckChildRows (DataRowAction action)
-               {
-                       DataSet ds = _table.DataSet;
-
-                       if (ds == null || !ds.EnforceConstraints)
-                               return;
-
-                       // if the table we're attached-to doesn't have an constraints, no foreign keys are pointing to us ...
-                       if (_table.Constraints.Count == 0)
-                               return;
-
-                       foreach (DataTable table in ds.Tables) {
-                               // loop on all ForeignKeyConstrain of the table.
-                               foreach (Constraint constraint in table.Constraints) {
-                                       ForeignKeyConstraint fk = constraint as ForeignKeyConstraint;
-                                       if (fk == null || fk.RelatedTable != _table)
-                                               continue;
-
-                                       switch (action) {
-                                       case DataRowAction.Delete:
-                                               CheckChildRows (fk, action, fk.DeleteRule);
-                                               break;
-                                       case DataRowAction.Commit:
-                                       case DataRowAction.Rollback:
-                                               if (fk.AcceptRejectRule != AcceptRejectRule.None)
-                                                       CheckChildRows (fk, action, Rule.Cascade);
-                                               break;
-                                       default:
-                                               CheckChildRows (fk, action, fk.UpdateRule);
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               private void CheckChildRows (ForeignKeyConstraint fkc, DataRowAction action, Rule rule)
-               {
-                       DataRow [] childRows = GetChildRows (fkc, DataRowVersion.Current);
-                       if (childRows == null)
-                               return;
-
-                       switch (rule) {
-                       case Rule.Cascade:  // delete or change all relted rows.
-                               switch (action) {
-                               case DataRowAction.Delete:
-                                       for (int j = 0; j < childRows.Length; j++) {
-                                               if (childRows [j].RowState != DataRowState.Deleted)
-                                                       childRows [j].Delete ();
-                                       }
-                                       break;
-                               case DataRowAction.Change:
-                                       for (int j = 0; j < childRows.Length; j++) {
-                                               // if action is change we change the values in the child row
-                                               // change only the values in the key columns
-                                               // set the childcolumn value to the new parent row value
-                                               for (int k = 0; k < fkc.Columns.Length; k++)
-                                                       if (!fkc.RelatedColumns [k].DataContainer [Current].Equals (fkc.RelatedColumns [k].DataContainer [Proposed]))
-                                                               childRows [j][fkc.Columns [k]] = this [fkc.RelatedColumns [k], DataRowVersion.Proposed];
-                                       }
-                                       break;
-                               case DataRowAction.Rollback:
-                                       for (int j = 0; j < childRows.Length; j++) {
-                                               if (childRows [j].RowState != DataRowState.Unchanged)
-                                                       childRows [j].RejectChanges ();
-                                       }
-                                       break;
-                               }
-                               break;
-                       case Rule.None: // throw an exception if there are any child rows.
-                               for (int j = 0; j < childRows.Length; j++) {
-                                       if (childRows[j].RowState != DataRowState.Deleted) {
-                                               string changeStr = "Cannot change this row because constraints are enforced on relation " + fkc.ConstraintName +", and changing this row will strand child rows.";
-                                               string delStr = "Cannot delete this row because constraints are enforced on relation " + fkc.ConstraintName +", and deleting this row will strand child rows.";
-                                               string message = action == DataRowAction.Delete ? delStr : changeStr;
-                                               throw new InvalidConstraintException (message);
-                                       }
-                               }
-                               break;
-                       case Rule.SetDefault: // set the values in the child rows to the default value of the columns.
-                               if (childRows.Length > 0) {
-                                       int defaultValuesRowIndex = childRows [0].Table.DefaultValuesRowIndex;
-                                       foreach (DataRow childRow in childRows) {
-                                               if (childRow.RowState != DataRowState.Deleted) {
-                                                       int defaultIdx = childRow.IndexFromVersion (DataRowVersion.Default);
-                                                       foreach (DataColumn column in fkc.Columns)
-                                                               column.DataContainer.CopyValue (defaultValuesRowIndex, defaultIdx);
-                                               }
-                                       }
-                               }
-                               break;
-                       case Rule.SetNull: // set the values in the child row to null.
-                               for (int j = 0; j < childRows.Length; j++) {
-                                       DataRow child = childRows [j];
-                                       if (childRows[j].RowState != DataRowState.Deleted) {
-                                               // set only the key columns to DBNull
-                                               for (int k = 0; k < fkc.Columns.Length; k++)
-                                                       child.SetNull (fkc.Columns[k]);
-                                       }
-                               }
-                               break;
-                       }
-               }
-
-               /// <summary>
-               /// Ends the edit occurring on the row.
-               /// </summary>
-               [EditorBrowsable (EditorBrowsableState.Advanced)]
-               public void EndEdit ()
-               {
-                       if (_inChangingEvent)
-                               throw new InRowChangingEventException ("Cannot call EndEdit inside an OnRowChanging event.");
-
-                       if (RowState == DataRowState.Detached || !HasVersion (DataRowVersion.Proposed))
-                               return;
-
-                       CheckReadOnlyStatus ();
-
-                       _inChangingEvent = true;
-                       try {
-                               _table.ChangingDataRow (this, DataRowAction.Change);
-                       } finally {
-                               _inChangingEvent = false;
-                       }
-
-                       DataRowState oldState = RowState;
-
-                       int oldRecord = Current;
-                       Current = Proposed;
-                       Proposed = -1;
-
-
-                       //FIXME : ideally  indexes shouldnt be maintained during dataload.But this needs to
-                       //be implemented at multiple places.For now, just maintain the index.
-                       //if (!Table._duringDataLoad) {
-                       foreach (Index index in Table.Indexes)
-                               index.Update (this, oldRecord, DataRowVersion.Current, oldState);
-                       //}
-
-                       try {
-                               AssertConstraints ();
-                               
-                               // restore previous state to let the cascade update to find the rows 
-                               Proposed = Current;
-                               Current = oldRecord; 
-                               
-                               CheckChildRows (DataRowAction.Change);
-                               
-                               // apply new state
-                               Current = Proposed;
-                               Proposed = -1;
-                       } catch {
-                               int proposed = Proposed >= 0 ? Proposed : Current;
-                               Current = oldRecord;
-                               //if (!Table._duringDataLoad) {
-                               foreach (Index index in Table.Indexes)
-                                       index.Update (this, proposed, DataRowVersion.Current, RowState);
-                               //}
-                               throw;
-                       }
-
-                       if (Original != oldRecord)
-                               Table.RecordCache.DisposeRecord (oldRecord);
-
-                       // Note : row state must not be changed before all the job on indexes finished,
-                       // since the indexes works with recods rather than with rows and the decision
-                       // which of row records to choose depends on row state.
-                       if (_rowChanged == true) {
-                               _table.ChangedDataRow (this, DataRowAction.Change);
-                               _rowChanged = false;
-                       }
-               }
-
-               /// <summary>
-               /// Gets the child rows of this DataRow using the specified DataRelation.
-               /// </summary>
-               public DataRow [] GetChildRows (DataRelation relation)
-               {
-                       return GetChildRows (relation, DataRowVersion.Default);
-               }
-
-               /// <summary>
-               /// Gets the child rows of a DataRow using the specified RelationName of a
-               /// DataRelation.
-               /// </summary>
-               public DataRow [] GetChildRows (string relationName)
-               {
-                       return GetChildRows (Table.DataSet.Relations [relationName]);
-               }
-
-               /// <summary>
-               /// Gets the child rows of a DataRow using the specified DataRelation, and
-               /// DataRowVersion.
-               /// </summary>
-               public DataRow[] GetChildRows (DataRelation relation, DataRowVersion version)
-               {
-                       if (relation == null)
-                               return Table.NewRowArray (0);
-
-                       if (this.Table == null)
-                               throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
-
-                       if (relation.DataSet != this.Table.DataSet)
-                               throw new ArgumentException ();
-
-                       if (_table != relation.ParentTable)
-                               throw new InvalidConstraintException ("GetChildRow requires a row whose Table is " + relation.ParentTable + ", but the specified row's table is " + _table);
-
-                       if (relation.ChildKeyConstraint != null)
-                               return GetChildRows (relation.ChildKeyConstraint, version);
-
-                       ArrayList rows = new ArrayList ();
-                       DataColumn[] parentColumns = relation.ParentColumns;
-                       DataColumn[] childColumns = relation.ChildColumns;
-                       int numColumn = parentColumns.Length;
-                       DataRow[] result = null;
-
-                       int versionIndex = IndexFromVersion (version);
-                       int tmpRecord = relation.ChildTable.RecordCache.NewRecord ();
-
-                       try {
-                               for (int i = 0; i < numColumn; i++)
-                                       // according to MSDN: the DataType value for both columns must be identical.
-                                       childColumns [i].DataContainer.CopyValue (parentColumns [i].DataContainer, versionIndex, tmpRecord);
-
-                               Index index = relation.ChildTable.FindIndex (childColumns);
-
-                               if (index != null) {
-                                       int [] records = index.FindAll (tmpRecord);
-                                       result = relation.ChildTable.NewRowArray (records.Length);
-                                       for(int i = 0; i < records.Length; i++)
-                                               result [i] = relation.ChildTable.RecordCache [records [i]];
-                               } else {
-                                       foreach (DataRow row in relation.ChildTable.Rows) {
-                                               bool allColumnsMatch = false;
-                                               if (row.HasVersion (DataRowVersion.Default)) {
-                                                       allColumnsMatch = true;
-                                                       int childIndex = row.IndexFromVersion (DataRowVersion.Default);
-                                                       for (int columnCnt = 0; columnCnt < numColumn; ++columnCnt) {
-                                                               if (childColumns[columnCnt].DataContainer.CompareValues (childIndex, tmpRecord) != 0) {
-                                                                       allColumnsMatch = false;
-                                                                       break;
-                                                               }
-                                                       }
-                                               }
-                                               if (allColumnsMatch)
-                                                       rows.Add (row);
-                                       }
-                                       result = relation.ChildTable.NewRowArray (rows.Count);
-                                       rows.CopyTo (result, 0);
-                               }
-                       }
-                       finally {
-                               relation.ChildTable.RecordCache.DisposeRecord (tmpRecord);
-                       }
-
-                       return result;
-               }
-
-               /// <summary>
-               /// Gets the child rows of a DataRow using the specified RelationName of a
-               /// DataRelation, and DataRowVersion.
-               /// </summary>
-               public DataRow [] GetChildRows (string relationName, DataRowVersion version)
-               {
-                       return GetChildRows (Table.DataSet.Relations [relationName], version);
-               }
-
-               private DataRow [] GetChildRows (ForeignKeyConstraint fkc, DataRowVersion version)
-               {
-                       ArrayList rows = new ArrayList ();
-                       DataColumn [] parentColumns = fkc.RelatedColumns;
-                       DataColumn [] childColumns = fkc.Columns;
-                       int numColumn = parentColumns.Length;
-
-                       Index index = fkc.Index;
-
-                       int curIndex = IndexFromVersion (version);
-                       int tmpRecord = fkc.Table.RecordCache.NewRecord ();
-                       for (int i = 0; i < numColumn; i++)
-                               // according to MSDN: the DataType value for both columns must be identical.
-                               childColumns [i].DataContainer.CopyValue (parentColumns [i].DataContainer, curIndex, tmpRecord);
-
-                       try {
-                               if (index != null) {
-                                       // get the child rows from the index
-                                       int[] childRecords = index.FindAll (tmpRecord);
-                                       for (int i = 0; i < childRecords.Length; i++)
-                                               rows.Add (childColumns [i].Table.RecordCache [childRecords [i]]);
-                               } else { // if there is no index we search manualy.
-                                       foreach (DataRow row in fkc.Table.Rows) {
-                                               bool allColumnsMatch = false;
-                                               if (row.HasVersion (DataRowVersion.Default)) {
-                                                       allColumnsMatch = true;
-                                                       int childIndex = row.IndexFromVersion (DataRowVersion.Default);
-                                                       for (int columnCnt = 0; columnCnt < numColumn; ++columnCnt) {
-                                                               if (childColumns [columnCnt].DataContainer.CompareValues (childIndex, tmpRecord) != 0) {
-                                                                       allColumnsMatch = false;
-                                                                       break;
-                                                               }
-                                                       }
-                                               }
-                                               if (allColumnsMatch)
-                                                       rows.Add (row);
-                                       }
-                               }
-                       } finally {
-                               fkc.Table.RecordCache.DisposeRecord(tmpRecord);
-                       }
-
-                       DataRow[] result = fkc.Table.NewRowArray (rows.Count);
-                       rows.CopyTo (result, 0);
-                       return result;
-               }
-
-               /// <summary>
-               /// Gets the error description of the specified DataColumn.
-               /// </summary>
-               public string GetColumnError (DataColumn column)
-               {
-                       if (column == null)
-                               throw new ArgumentNullException ("column");
-
-                       int index = _table.Columns.IndexOf (column);
-                       if (index < 0)
-                               throw new ArgumentException (String.Format ("Column '{0}' does not belong to table {1}.", column.ColumnName, Table.TableName));
-
-                       return GetColumnError (index);
-               }
-
-               /// <summary>
-               /// Gets the error description for the column specified by index.
-               /// </summary>
-               public string GetColumnError (int columnIndex)
-               {
-                       if (columnIndex < 0 || columnIndex >= Table.Columns.Count)
-                               throw new IndexOutOfRangeException ();
-
-                       string retVal = null;
-                       if (columnIndex < ColumnErrors.Count)
-                               retVal = (String) ColumnErrors [columnIndex];
-                       return (retVal != null) ? retVal : String.Empty;
-               }
-
-               /// <summary>
-               /// Gets the error description for the column, specified by name.
-               /// </summary>
-               public string GetColumnError (string columnName)
-               {
-                       return GetColumnError (_table.Columns.IndexOf (columnName));
-               }
-
-               /// <summary>
-               /// Gets an array of columns that have errors.
-               /// </summary>
-               public DataColumn [] GetColumnsInError ()
-               {
-                       ArrayList dataColumns = new ArrayList ();
-
-                       int columnOrdinal = 0;
-                       foreach (String columnError in ColumnErrors) {
-                               if (columnError != null && columnError != String.Empty)
-                                       dataColumns.Add (_table.Columns [columnOrdinal]);
-                               columnOrdinal++;
-                       }
-
-                       return (DataColumn [])(dataColumns.ToArray (typeof (DataColumn)));
-               }
-
-               /// <summary>
-               /// Gets the parent row of a DataRow using the specified DataRelation.
-               /// </summary>
-               public DataRow GetParentRow (DataRelation relation)
-               {
-                       return GetParentRow (relation, DataRowVersion.Default);
-               }
-
-               /// <summary>
-               /// Gets the parent row of a DataRow using the specified RelationName of a
-               /// DataRelation.
-               /// </summary>
-               public DataRow GetParentRow (string relationName)
-               {
-                       return GetParentRow (relationName, DataRowVersion.Default);
-               }
-
-               /// <summary>
-               /// Gets the parent row of a DataRow using the specified DataRelation, and
-               /// DataRowVersion.
-               /// </summary>
-               public DataRow GetParentRow (DataRelation relation, DataRowVersion version)
-               {
-                       DataRow[] rows = GetParentRows (relation, version);
-                       if (rows.Length == 0)
-                               return null;
-                       return rows [0];
-               }
-
-               /// <summary>
-               /// Gets the parent row of a DataRow using the specified RelationName of a
-               /// DataRelation, and DataRowVersion.
-               /// </summary>
-               public DataRow GetParentRow (string relationName, DataRowVersion version)
-               {
-                       return GetParentRow (Table.DataSet.Relations [relationName], version);
-               }
-
-               /// <summary>
-               /// Gets the parent rows of a DataRow using the specified DataRelation.
-               /// </summary>
-               public DataRow [] GetParentRows (DataRelation relation)
-               {
-                       return GetParentRows (relation, DataRowVersion.Default);
-               }
-
-               /// <summary>
-               /// Gets the parent rows of a DataRow using the specified RelationName of a
-               /// DataRelation.
-               /// </summary>
-               public DataRow [] GetParentRows (string relationName)
-               {
-                       return GetParentRows (relationName, DataRowVersion.Default);
-               }
-
-               /// <summary>
-               /// Gets the parent rows of a DataRow using the specified DataRelation, and
-               /// DataRowVersion.
-               /// </summary>
-               public DataRow [] GetParentRows (DataRelation relation, DataRowVersion version)
-               {
-                       // TODO: Caching for better preformance
-                       if (relation == null)
-                               return Table.NewRowArray (0);
-
-                       if (this.Table == null)
-                               throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
-
-                       if (relation.DataSet != this.Table.DataSet)
-                               throw new ArgumentException ();
-
-                       if (_table != relation.ChildTable)
-                               throw new InvalidConstraintException ("GetParentRows requires a row whose Table is " + relation.ChildTable + ", but the specified row's table is " + _table);
-
-                       ArrayList rows = new ArrayList ();
-                       DataColumn[] parentColumns = relation.ParentColumns;
-                       DataColumn[] childColumns = relation.ChildColumns;
-                       int numColumn = parentColumns.Length;
-
-                       int curIndex = IndexFromVersion (version);
-                       int tmpRecord = relation.ParentTable.RecordCache.NewRecord ();
-                       for (int i = 0; i < numColumn; i++)
-                               // according to MSDN: the DataType value for both columns must be identical.
-                               parentColumns [i].DataContainer.CopyValue(childColumns [i].DataContainer, curIndex, tmpRecord);
-
-                       try {
-                               Index index = relation.ParentTable.FindIndex(parentColumns);
-                               if (index != null) { // get the parent rows from the index
-                                       int [] parentRecords = index.FindAll (tmpRecord);
-                                       for (int i = 0; i < parentRecords.Length; i++)
-                                               rows.Add (parentColumns [i].Table.RecordCache [parentRecords [i]]);
-                               } else { // no index so we have to search manualy.
-                                       foreach (DataRow row in relation.ParentTable.Rows) {
-                                               bool allColumnsMatch = false;
-                                               if (row.HasVersion (DataRowVersion.Default)) {
-                                                       allColumnsMatch = true;
-                                                       int parentIndex = row.IndexFromVersion (DataRowVersion.Default);
-                                                       for (int columnCnt = 0; columnCnt < numColumn; columnCnt++) {
-                                                               if (parentColumns [columnCnt].DataContainer.CompareValues (parentIndex, tmpRecord) != 0) {
-                                                                       allColumnsMatch = false;
-                                                                       break;
-                                                               }
-                                                       }
-                                               }
-                                               if (allColumnsMatch)
-                                                       rows.Add(row);
-                                       }
-                               }
-                       } finally {
-                               relation.ParentTable.RecordCache.DisposeRecord (tmpRecord);
-                       }
-
-                       DataRow [] result = relation.ParentTable.NewRowArray (rows.Count);
-                       rows.CopyTo (result, 0);
-                       return result;
-               }
-
-               /// <summary>
-               /// Gets the parent rows of a DataRow using the specified RelationName of a
-               /// DataRelation, and DataRowVersion.
-               /// </summary>
-               public DataRow [] GetParentRows (string relationName, DataRowVersion version)
-               {
-                       return GetParentRows (Table.DataSet.Relations [relationName], version);
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether a specified version exists.
-               /// </summary>
-               public bool HasVersion (DataRowVersion version)
-               {
-                       switch (version) {
-                       case DataRowVersion.Default:
-                               return (Proposed >= 0 || Current >= 0);
-                       case DataRowVersion.Proposed:
-                               return Proposed >= 0;
-                       case DataRowVersion.Current:
-                               return Current >= 0;
-                       case DataRowVersion.Original:
-                               return Original >= 0;
-                       default:
-                               return IndexFromVersion (version) >= 0;
-                       }
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the specified DataColumn contains a null value.
-               /// </summary>
-               public bool IsNull (DataColumn column)
-               {
-                       return IsNull (column, DataRowVersion.Default);
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the column at the specified index contains a null
-               /// value.
-               /// </summary>
-               public bool IsNull (int columnIndex)
-               {
-                       return IsNull (Table.Columns [columnIndex]);
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the named column contains a null value.
-               /// </summary>
-               public bool IsNull (string columnName)
-               {
-                       return IsNull (GetColumn (columnName));
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the specified DataColumn and DataRowVersion
-               /// contains a null value.
-               /// </summary>
-               public bool IsNull (DataColumn column, DataRowVersion version)
-               {
-                       if (column == null)
-                               throw new ArgumentNullException ("column");
-
-                       // use the expresion if there is one
-                       if (column.Expression != String.Empty) {
-                               // FIXME: how does this handle 'version'?
-                               // TODO: Can we avoid the Eval each time by using the cached value?
-                               object o = column.CompiledExpression.Eval (this);
-                               return o == null && o == DBNull.Value;
-                       }
-
-                       return column.DataContainer.IsNull (IndexFromVersion (version));
-               }
-
-               /// <summary>
-               /// Returns a value indicating whether all of the row columns specified contain a null value.
-               /// </summary>
-               internal bool IsNullColumns (DataColumn [] columns)
-               {
-                       int i;
-                       for (i = 0; i < columns.Length; i++) {
-                               if (!IsNull (columns [i]))
-                                       break;
-                       }
-                       return i == columns.Length;
-               }
-
-               /// <summary>
-               /// Rejects all changes made to the row since AcceptChanges was last called.
-               /// </summary>
-               public void RejectChanges ()
-               {
-                       if (RowState == DataRowState.Detached)
-                               throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
-                       // If original is null, then nothing has happened since AcceptChanges
-                       // was last called.  We have no "original" to go back to.
-
-                       // Varadhan: Following if may be un-necessary
-                       /*if (_inChangingEvent) {
-                               _table.ChangedDataRow (this, DataRowAction.Rollback);
-                               CancelEdit ();
-                       }*/
-
-                       Table.ChangingDataRow (this, DataRowAction.Rollback);
-                       //TODO : Need to Verify the constraints..
-                       switch (RowState) {
-                       case DataRowState.Added:
-                               Detach ();
-                               break;
-                       case DataRowState.Modified:
-                               int current = Current;
-                               Table.RecordCache.DisposeRecord (Current);
-                               CheckChildRows (DataRowAction.Rollback);
-                               Current = Original;
-                               foreach (Index index in Table.Indexes)
-                                       index.Update (this, current, DataRowVersion.Current, DataRowState.Modified);
-                               break;
-                       case DataRowState.Deleted:
-                               CheckChildRows (DataRowAction.Rollback);
-                               Current = Original;
-                               // Add row to index and validate if the constraints are satisfied
-                               this.Validate ();
-                               break;
-                       }
-                       Table.ChangedDataRow (this, DataRowAction.Rollback);
-               }
-
-               /// <summary>
-               /// Sets the error description for a column specified as a DataColumn.
-               /// </summary>
-               public void SetColumnError (DataColumn column, string error)
-               {
-                       SetColumnError (_table.Columns.IndexOf (column), error);
-               }
-
-               /// <summary>
-               /// Sets the error description for a column specified by index.
-               /// </summary>
-               public void SetColumnError (int columnIndex, string error)
-               {
-                       if (columnIndex < 0 || columnIndex >= Table.Columns.Count)
-                               throw new IndexOutOfRangeException ();
-
-                       while (columnIndex >= ColumnErrors.Count)
-                               ColumnErrors.Add (null);
-
-                       ColumnErrors [columnIndex] = error;
-               }
-
-               /// <summary>
-               /// Sets the error description for a column specified by name.
-               /// </summary>
-               public void SetColumnError (string columnName, string error)
-               {
-                       SetColumnError (_table.Columns.IndexOf (columnName), error);
-               }
-
-               /// <summary>
-               /// Sets the value of the specified DataColumn to a null value.
-               /// </summary>
-               protected void SetNull (DataColumn column)
-               {
-                       this [column] = DBNull.Value;
-               }
-
-               /// <summary>
-               /// Sets the parent row of a DataRow with specified new parent DataRow.
-               /// </summary>
-               public void SetParentRow (DataRow parentRow)
-               {
-                       SetParentRow (parentRow, null);
-               }
-
-               /// <summary>
-               /// Sets the parent row of a DataRow with specified new parent DataRow and
-               /// DataRelation.
-               /// </summary>
-               public void SetParentRow (DataRow parentRow, DataRelation relation)
-               {
-                       if (_table == null || (parentRow != null && parentRow.Table == null))
-                               throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
-
-                       if (parentRow != null && _table.DataSet != parentRow.Table.DataSet)
-                               throw new ArgumentException ();
-
-                       if (RowState == DataRowState.Detached && !HasVersion (DataRowVersion.Default))
-                               // the row should have default data to access, i.e. we can do this for the newly created row, but not for the row once deleted from the table
-                               throw new RowNotInTableException ("This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.");
-
-                       BeginEdit();
-
-                       IEnumerable relations;
-                       if (relation != null) {
-                               if (parentRow != null && relation.ParentColumns [0].Table != parentRow.Table)
-                                       throw new InvalidConstraintException (string.Format ("Parent belongs to table {0} but relation is for table {1}", parentRow.Table, relation.ParentColumns [0].Table));
-                               relations = new DataRelation [] { relation };
-                       } else {
-                               relations = _table.ParentRelations;
-                       }
-
-                       foreach (DataRelation rel in relations) {
-                               DataColumn [] childCols = rel.ChildColumns;
-                               DataColumn [] parentCols = rel.ParentColumns;
-
-                               for (int i = 0; i < parentCols.Length; i++) {
-                                       if (parentRow == null) {
-                                               childCols [i].DataContainer [Proposed] = DBNull.Value;
-                                       } else if (parentCols [i].Table == parentRow.Table) {
-                                               int defaultIdx = parentRow.IndexFromVersion (DataRowVersion.Default);
-                                               childCols [i].DataContainer.CopyValue(parentCols [i].DataContainer, defaultIdx, Proposed);
-                                       }
-                               }
-                       }
-
-                       EndEdit();
-               }
-
-               //Copy all values of this DataRow to the row parameter.
-               internal void CopyValuesToRow (DataRow row)
-               {
-                       CopyValuesToRow(row, true);
-               }
-               
-               internal void CopyValuesToRow (DataRow row, bool doROCheck)
-               {
-                       if (row == null)
-                               throw new ArgumentNullException("row");
-                       if (row == this)
-                               throw new ArgumentException("'row' is the same as this object");
-
-                       // create target records if missing.
-                       if (HasVersion (DataRowVersion.Original)) {
-                               if (row.Original < 0)
-                                       row.Original = row.Table.RecordCache.NewRecord ();
-                               else if (row.Original == row.Current) {
-                                       row.Original = row.Table.RecordCache.NewRecord ();
-                                       row.Table.RecordCache.CopyRecord (row.Table, row.Current, row.Original);
-                               }
-                       } else {
-                               if (row.Original > 0) {
-                                       if (row.Original != row.Current)
-                                               row.Table.RecordCache.DisposeRecord (row.Original);
-                                       row.Original = -1;
-                               }
-                       }
-
-                       if (HasVersion (DataRowVersion.Current)) {
-                               if (Current == Original) {
-                                       if (row.Current >= 0)
-                                               row.Table.RecordCache.DisposeRecord (row.Current);
-                                       row.Current = row.Original;
-                               } else {
-                                       if (row.Current < 0)
-                                               row.Current = row.Table.RecordCache.NewRecord ();
-                               }
-                       } else {
-                               if (row.Current > 0) {
-                                       row.Table.RecordCache.DisposeRecord (row.Current);
-                                       row.Current = -1;
-                               }
-                       }
-
-                       if (HasVersion (DataRowVersion.Proposed)) {
-                               if (row.Proposed < 0)
-                                       row.Proposed = row.Table.RecordCache.NewRecord ();
-                       } else {
-                               if (row.Proposed > 0) {
-                                       row.Table.RecordCache.DisposeRecord (row.Proposed);
-                                       row.Proposed = -1;
-                               }
-                       }
-
-                       // copy source record values to target records
-                       foreach (DataColumn column in Table.Columns) {
-                               DataColumn targetColumn = row.Table.Columns [column.ColumnName];
-                               //if a column with the same name exists in both rows copy the values
-                               if (targetColumn != null) {
-                                       if (HasVersion (DataRowVersion.Original)) {
-                                               object val = column[Original];
-                                               row.CheckValue (val, targetColumn, doROCheck);
-                                               targetColumn [row.Original] = val;
-                                       }
-
-                                       if (HasVersion (DataRowVersion.Current) && Current != Original) {
-                                               object val = column[Current];
-                                               row.CheckValue (val, targetColumn, doROCheck);
-                                               targetColumn [row.Current] = val;
-                                       }
-
-                                       if (HasVersion (DataRowVersion.Proposed)) {
-                                               object val = column[row.Proposed];
-                                               row.CheckValue (val, targetColumn, doROCheck);
-                                               targetColumn [row.Proposed] = val;
-                                       }
-                               }
-                       }
-                       if (HasErrors)
-                               CopyErrors (row);
-               }
-
-               //Merge all values of this DataRow to the row parameter according to merge rules.
-               internal void MergeValuesToRow (DataRow row, bool preserveChanges)
-               {
-                       if (row == null)
-                               throw new ArgumentNullException ("row");
-                       if (row == this)
-                               throw new ArgumentException ("'row' is the same as this object");
-
-                       // Original values are anyway copied
-                       if (HasVersion (DataRowVersion.Original)) {
-                               if (row.Original < 0)
-                                       row.Original = row.Table.RecordCache.NewRecord ();
-                               else if (row.Original == row.Current && !(Original == Current && !preserveChanges)) {
-                                       row.Original = row.Table.RecordCache.NewRecord ();
-                                       row.Table.RecordCache.CopyRecord (row.Table, row.Current, row.Original);
-                               }
-                       } else {
-                               if (row.Original == row.Current) { // if target has same current, better create new original
-                                       row.Original = row.Table.RecordCache.NewRecord ();
-                                       row.Table.RecordCache.CopyRecord (row.Table, row.Current, row.Original);
-                               }
-                       }
-
-                       // if i have current, push all
-                       if (HasVersion (DataRowVersion.Current)) {
-                               if (! preserveChanges && row.Current < 0)
-                                       row.Current = row.Table.RecordCache.NewRecord ();
-                       } else {
-                               if (row.Current > 0 && ! preserveChanges) {
-                                       row.Table.RecordCache.DisposeRecord (row.Current);
-                                       row.Current = -1;
-                               }
-                       }
-
-                       // copy source record values to target records
-                       foreach (DataColumn column in Table.Columns) {
-                               DataColumn targetColumn = row.Table.Columns[column.ColumnName];
-                               //if a column with the same name exists in both rows copy the values
-                               if (targetColumn != null) {
-                                       if (HasVersion (DataRowVersion.Original)) {
-                                               object val = column [Original];
-                                               row.CheckValue (val, targetColumn);
-                                               targetColumn [row.Original] = val;
-                                       }
-
-                                       if (HasVersion (DataRowVersion.Current) && !preserveChanges) {
-                                               object val = column [Current];
-                                               row.CheckValue (val, targetColumn);
-                                               targetColumn [row.Current] = val;
-                                       }
-                               }
-                       }
-
-                       if (HasErrors)
-                               CopyErrors(row);
-               }
-
-               internal void CopyErrors (DataRow row)
-               {
-                       row.RowError = RowError;
-                       DataColumn[] errorColumns = GetColumnsInError();
-                       foreach (DataColumn col in errorColumns) {
-                               DataColumn targetColumn = row.Table.Columns [col.ColumnName];
-                               row.SetColumnError (targetColumn, GetColumnError (col));
-                       }
-               }
-
-               internal bool IsRowChanged (DataRowState rowState)
-               {
-                       if((RowState & rowState) != 0)
-                               return true;
-
-                       //we need to find if child rows of this row changed.
-                       //if yes - we should return true
-
-                       // if the rowState is deleted we should get the original version of the row
-                       // else - we should get the current version of the row.
-                       DataRowVersion version = (rowState == DataRowState.Deleted) ? DataRowVersion.Original : DataRowVersion.Current;
-                       int count = Table.ChildRelations.Count;
-                       for (int i = 0; i < count; i++){
-                               DataRelation rel = Table.ChildRelations [i];
-                               DataRow [] childRows = GetChildRows (rel, version);
-                               for (int j = 0; j < childRows.Length; j++){
-                                       if (childRows [j].IsRowChanged (rowState))
-                                               return true;
-                               }
-                       }
-
-                       return false;
-               }
-
-               internal void Validate ()
-               {
-                       Table.AddRowToIndexes (this);
-                       AssertConstraints ();
-               }
-
-               void AssertConstraints ()
-               {
-                       if (Table == null || Table._duringDataLoad)
-                               return;
-
-                       if (Table.DataSet != null && !Table.DataSet.EnforceConstraints)
-                               return;
-                       for (int i = 0; i < Table.Columns.Count; ++i) {
-                               DataColumn column = Table.Columns [i];
-                               if (!column.AllowDBNull && IsNull (column))
-                                       throw new NoNullAllowedException (_nullConstraintMessage);
-                       }
-
-                       foreach (Constraint constraint in Table.Constraints) {
-                               try {
-                                       constraint.AssertConstraint (this);
-                               } catch (Exception e) {
-                                       Table.DeleteRowFromIndexes (this);
-                                       throw e;
-                               }
-                       }
-               }
-
-               internal void CheckNullConstraints ()
-               {
-                       if (_nullConstraintViolation) {
-                               if (HasVersion (DataRowVersion.Proposed)) {
-                                       foreach (DataColumn column in Table.Columns) {
-                                               if (IsNull (column) && !column.AllowDBNull)
-                                                       throw new NoNullAllowedException (_nullConstraintMessage);
-                                       }
-                               }
-                               _nullConstraintViolation = false;
-                       }
-               }
-
-               internal void CheckReadOnlyStatus()
-               {
-                       int defaultIdx = IndexFromVersion (DataRowVersion.Default);
-                       foreach(DataColumn column in Table.Columns) {
-                               if ((column.DataContainer.CompareValues (defaultIdx,Proposed) != 0) && column.ReadOnly)
-                                       throw new ReadOnlyException ();
-                       }
-               }
-
-               #endregion // Methods
-
-               /// <summary>
-               ///    This method loads a given value into the existing row affecting versions,
-               ///    state based on the LoadOption.  The matrix of changes for this method are as
-               ///    mentioned in the DataTable.Load (IDataReader, LoadOption) method.
-               /// </summary>
-               internal void Load (object [] values, LoadOption loadOption)
-               {
-                       int temp = -1;
-
-                       if (loadOption == LoadOption.OverwriteChanges ||
-                           (loadOption == LoadOption.PreserveChanges && RowState == DataRowState.Unchanged)) {
-                               Table.ChangingDataRow (this, DataRowAction.ChangeCurrentAndOriginal);
-                               temp = Table.CreateRecord (values);
-                               Table.DeleteRowFromIndexes(this);
-                               if (HasVersion (DataRowVersion.Original) && Current != Original)
-                                       Table.RecordCache.DisposeRecord (Original);
-                               Original = temp;
-
-                               if (HasVersion (DataRowVersion.Current))
-                                       Table.RecordCache.DisposeRecord (Current);
-                               Current = temp;
-                               Table.AddRowToIndexes(this);
-                               Table.ChangedDataRow (this, DataRowAction.ChangeCurrentAndOriginal);
-                               return;
-                       }
-
-                       if (loadOption == LoadOption.PreserveChanges) {
-                               Table.ChangingDataRow (this, DataRowAction.ChangeOriginal);
-                               temp = Table.CreateRecord (values);
-                               if (HasVersion (DataRowVersion.Original) && Current != Original)
-                                       Table.RecordCache.DisposeRecord (Original);
-                               Original = temp;
-                               Table.ChangedDataRow (this, DataRowAction.ChangeOriginal);
-                               return;
-                       }
-
-                       // Upsert
-                       if (RowState != DataRowState.Deleted) {
-                               int rindex = HasVersion (DataRowVersion.Proposed) ? Proposed : Current;
-                               temp = Table.CreateRecord (values);
-                               if (RowState == DataRowState.Added || Table.CompareRecords (rindex, temp) != 0) {
-                                       Table.ChangingDataRow (this, DataRowAction.Change);
-                                       Table.DeleteRowFromIndexes(this);
-                                       if (HasVersion (DataRowVersion.Proposed)) {
-                                               Table.RecordCache.DisposeRecord (Proposed);
-                                               Proposed = -1;
-                                       }
-
-                                       if (Original != Current)
-                                               Table.RecordCache.DisposeRecord (Current);
-                                       Current = temp;
-                                       Table.AddRowToIndexes(this);
-                                       Table.ChangedDataRow (this, DataRowAction.Change);
-                               } else {
-                                       Table.ChangingDataRow (this, DataRowAction.Nothing);
-                                       Table.RecordCache.DisposeRecord (temp);
-                                       Table.ChangedDataRow (this, DataRowAction.Nothing);
-                               }
-                       }
-               }
-
-               DataColumn GetColumn (string columnName)
-               {
-                       DataColumn column = _table.Columns [columnName];
-
-                       if (column == null)
-                               throw new ArgumentException ("The column '" + columnName + "' does not belong to the table " + _table.TableName);
-
-                       return column;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRowAction.cs b/mcs/class/System.Data/System.Data/DataRowAction.cs
deleted file mode 100644 (file)
index 76c06cf..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Data.DataRowAction.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Describes the action taken on a DataRow.
-       /// This enumeration has a FlagsAttribute that allows a bitwise combination of its member values.
-       /// </summary>
-       [Flags]
-       public enum DataRowAction
-       {
-                Add                             = 16,
-                Change                          = 2,
-                ChangeCurrentAndOriginal        = 64,
-                ChangeOriginal                  = 32,
-                Commit                          = 8,
-                Delete                          = 1,
-                Nothing                         = 0,
-                Rollback                        = 4
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRowBuilder.cs b/mcs/class/System.Data/System.Data/DataRowBuilder.cs
deleted file mode 100644 (file)
index 30bd047..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// System.Data.DataRowBuilder
-//
-// Author:
-//   Tim Coleman <tim@timcoleman.com>
-//
-// Copyright (C) 2002 Tim Coleman
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// A supporting class that exists solely to support
-       /// DataRow and DataTable
-       /// Implementation of something meaningful will follow.
-       /// Presumably, what that is will become apparent when
-       /// constructing DataTable and DataRow.
-       /// </summary>
-
-       public
-       sealed
-       class DataRowBuilder 
-       {
-               #region Fields
-               
-               private DataTable table;
-               internal int _rowId;
-
-               #endregion
-
-               #region Constructors
-
-               // DataRowBuilder on .NET takes 3 arguments, a
-               // DataTable and two Int32.  For consistency, this
-               // class will also take those arguments.
-
-               internal DataRowBuilder (DataTable table, Int32 rowID, Int32 y)
-               {
-                       this.table = table;
-                       this._rowId = rowID;
-               }
-
-               #endregion
-
-               #region Properties
-
-               internal DataTable Table {
-                       get { return table; }
-               }
-
-               #endregion
-
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRowChangeEventArgs.cs b/mcs/class/System.Data/System.Data/DataRowChangeEventArgs.cs
deleted file mode 100644 (file)
index a1e4345..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// System.Data.DataRowChangeEventArgs.cs
-//
-// Author:
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Ville Palo <vi64pa@koti.soon.fi>
-//
-// (C) Ximian, Inc 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// argument data for events RowChanged, RowChanging, 
-       /// OnRowDeleting, and OnRowDeleted
-       /// </summary>
-       public class DataRowChangeEventArgs : EventArgs {
-
-               private DataRow row;
-               private DataRowAction action; 
-       
-               public DataRowChangeEventArgs(DataRow row,
-                       DataRowAction action) {
-                       
-                       this.row = row;
-                       this.action = action;
-               }
-
-               public DataRowAction Action {
-                       get {
-                               return action;
-                       }
-               }
-
-               public DataRow Row {
-                       get {
-                               return row;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRowChangeEventHandler.cs b/mcs/class/System.Data/System.Data/DataRowChangeEventHandler.cs
deleted file mode 100644 (file)
index 0ae010c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Data.DataRowChangeEventHandler.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the RowChanging, RowChanged, RowDeleting, and RowDeleted events of a DataTable.
-       /// </summary>
-       public delegate void DataRowChangeEventHandler(object sender, DataRowChangeEventArgs e);
-
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/DataRowCollection.cs b/mcs/class/System.Data/System.Data/DataRowCollection.cs
deleted file mode 100644 (file)
index 2d80ce5..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-//
-// System.Data.DataRowCollection.cs
-//
-// Author:
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Tim Coleman <tim@timcoleman.com>
-//
-// (C) Ximian, Inc 2002
-// (C) Copyright 2002 Tim Coleman
-// (C) Copyright 2002 Daniel Morgan
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Data.Common;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Collection of DataRows in a DataTable
-       /// </summary>
-       public partial class DataRowCollection : InternalDataCollectionBase {
-               private DataTable table;
-
-               internal event ListChangedEventHandler ListChanged;
-
-               /// <summary>
-               /// Internal constructor used to build a DataRowCollection.
-               /// </summary>
-               internal DataRowCollection (DataTable table)
-               {
-                       this.table = table;
-               }
-
-               /// <summary>
-               /// Gets the row at the specified index.
-               /// </summary>
-               public DataRow this [int index] {
-                       get {
-                               if (index < 0 || index >= Count)
-                                       throw new IndexOutOfRangeException ("There is no row at position " + index + ".");
-
-                               return (DataRow) List [index];
-                       }
-               }
-
-               /// <summary>
-               /// Adds the specified DataRow to the DataRowCollection object.
-               /// </summary>
-               public void Add (DataRow row)
-               {
-                       //TODO: validation
-                       if (row == null)
-                               throw new ArgumentNullException ("row", "'row' argument cannot be null.");
-
-                       if (row.Table != this.table)
-                               throw new ArgumentException ("This row already belongs to another table.");
-
-                       // If row id is not -1, we know that it is in the collection.
-                       if (row.RowID != -1)
-                               throw new ArgumentException ("This row already belongs to this table.");
-
-                       row.BeginEdit ();
-
-                       row.Validate ();
-
-                       AddInternal (row);
-               }
-
-               public
-               int IndexOf (DataRow row)
-               {
-                       if (row == null || row.Table != table)
-                               return -1;
-
-                       int id = row.RowID;
-                       return (id >= 0 && id < List.Count && row == List [id]) ? id : -1;
-               }
-
-               internal void AddInternal (DataRow row)
-               {
-                       AddInternal (row, DataRowAction.Add);
-               }
-
-               internal void AddInternal (DataRow row, DataRowAction action)
-               {
-                       row.Table.ChangingDataRow (row, action);
-                       List.Add (row);
-                       row.AttachAt (List.Count - 1, action);
-                       row.Table.ChangedDataRow (row, action);
-                       if (row._rowChanged)
-                               row._rowChanged = false;
-               }
-
-               /// <summary>
-               /// Creates a row using specified values and adds it to the DataRowCollection.
-               /// </summary>
-               public DataRow Add (params object[] values)
-               {
-                       if (values == null)
-                               throw new NullReferenceException ();
-                       DataRow row = table.NewNotInitializedRow ();
-                       int newRecord = table.CreateRecord (values);
-                       row.ImportRecord (newRecord);
-
-                       row.Validate ();
-                       AddInternal (row);
-                       return row;
-               }
-
-               /// <summary>
-               /// Clears the collection of all rows.
-               /// </summary>
-               public void Clear ()
-               {
-                       if (this.table.DataSet != null && this.table.DataSet.EnforceConstraints) {
-                               foreach (Constraint c in table.Constraints) {
-                                       UniqueConstraint uc = c as UniqueConstraint;
-                                       if (uc == null)
-                                               continue;
-                                       if (uc.ChildConstraint == null || uc.ChildConstraint.Table.Rows.Count == 0)
-                                               continue;
-
-                                       string err = String.Format ("Cannot clear table Parent because " +
-                                                               "ForeignKeyConstraint {0} enforces Child.", uc.ConstraintName);
-                                       throw new InvalidConstraintException (err);
-                               }
-                       }
-
-                       table.DataTableClearing ();
-                       List.Clear ();
-
-                       // Remove from indexes
-                       table.ResetIndexes ();
-                       table.DataTableCleared ();
-                       OnListChanged (this, new ListChangedEventArgs (ListChangedType.Reset, -1, -1));
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the primary key of any row in the collection contains
-               /// the specified value.
-               /// </summary>
-               public bool Contains (object key)
-               {
-                       return Find (key) != null;
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the primary key column(s) of any row in the
-               /// collection contains the values specified in the object array.
-               /// </summary>
-               public bool Contains (object [] keys)
-               {
-                       return Find (keys) != null;
-               }
-
-               /// <summary>
-               /// Gets the row specified by the primary key value.
-               /// </summary>
-               public DataRow Find (object key)
-               {
-                       return Find (new object []{key}, DataViewRowState.CurrentRows);
-               }
-
-               /// <summary>
-               /// Gets the row containing the specified primary key values.
-               /// </summary>
-               public DataRow Find (object[] keys)
-               {
-                       return Find (keys, DataViewRowState.CurrentRows);
-               }
-
-               /// <summary>
-               /// Gets the row containing the specified primary key values by searching the rows
-               /// filtered by the state.
-               /// </summary>
-               internal DataRow Find (object [] keys, DataViewRowState rowStateFilter)
-               {
-                       if (table.PrimaryKey.Length == 0)
-                               throw new MissingPrimaryKeyException ("Table doesn't have a primary key.");
-
-                       if (keys == null)
-                               throw new ArgumentException ("Expecting " + table.PrimaryKey.Length +" value(s) for the key being indexed, but received 0 value(s).");
-
-                       Index index = table.GetIndex (table.PrimaryKey, null, rowStateFilter, null, false);
-                       int record = index.Find (keys);
-
-                       if (record != -1 || !table._duringDataLoad)
-                               return (record != -1 ? table.RecordCache [record] : null);
-
-                       // If the key is not found using Index *and* if DataTable is under BeginLoadData
-                       // then, check all the DataRows for the key
-                       record = table.RecordCache.NewRecord ();
-                       try {
-                               for (int i=0; i < table.PrimaryKey.Length; ++i)
-                                       table.PrimaryKey [i].DataContainer [record] = keys [i];
-
-                               bool found;
-                               foreach (DataRow row in this) {
-                                       int rowIndex = Key.GetRecord (row, rowStateFilter);
-                                       if (rowIndex == -1)
-                                               continue;
-
-                                       found = true;
-                                       for (int columnCnt = 0; columnCnt < table.PrimaryKey.Length; ++columnCnt) {
-                                               if (table.PrimaryKey [columnCnt].CompareValues (rowIndex, record) == 0)
-                                                       continue;
-                                               found = false;
-                                               break;
-                                       }
-                                       if (found)
-                                               return row;
-                               }
-                               return null;
-                       } finally {
-                               table.RecordCache.DisposeRecord (record);
-                       }
-               }
-
-               /// <summary>
-               /// Inserts a new row into the collection at the specified location.
-               /// </summary>
-               public void InsertAt (DataRow row, int pos)
-               {
-                       if (pos < 0)
-                               throw new IndexOutOfRangeException ("The row insert position " + pos + " is invalid.");
-
-                       if (row == null)
-                               throw new ArgumentNullException ("row", "'row' argument cannot be null.");
-
-                       if (row.Table != this.table)
-                               throw new ArgumentException ("This row already belongs to another table.");
-
-                       // If row id is not -1, we know that it is in the collection.
-                       if (row.RowID != -1)
-                               throw new ArgumentException ("This row already belongs to this table.");
-
-                       row.Validate ();
-
-                       row.Table.ChangingDataRow (row, DataRowAction.Add);
-
-                       if (pos >= List.Count) {
-                               pos = List.Count;
-                               List.Add (row);
-                       } else {
-                               List.Insert (pos, row);
-                               for (int i = pos+1; i < List.Count; i++)
-                                       ((DataRow) List [i]).RowID = i;
-                       }
-
-                       row.AttachAt (pos, DataRowAction.Add);
-                       row.Table.ChangedDataRow (row, DataRowAction.Add);
-               }
-
-               /// <summary>
-               /// Removes the specified DataRow from the internal list. Used by DataRow to commit the removing.
-               /// </summary>
-               internal void RemoveInternal (DataRow row)
-               {
-                       if (row == null)
-                               throw new IndexOutOfRangeException ("The given datarow is not in the current DataRowCollection.");
-                       int index = this.IndexOf (row);
-                       if (index < 0)
-                               throw new IndexOutOfRangeException ("The given datarow is not in the current DataRowCollection.");
-                       List.RemoveAt (index);
-                       for (; index < List.Count; ++index)
-                               ((DataRow) List [index]).RowID = index;
-               }
-
-               /// <summary>
-               /// Removes the specified DataRow from the collection.
-               /// </summary>
-               public void Remove (DataRow row)
-               {
-                       if (IndexOf (row) < 0)
-                               throw new IndexOutOfRangeException ("The given datarow is not in the current DataRowCollection.");
-
-                       DataRowState state = row.RowState;
-                       if (state != DataRowState.Deleted && state != DataRowState.Detached) {
-                               row.Delete ();
-                               // if the row was in added state it will be in Detached state after the
-                               // delete operation, so we have to check it.
-                               if (row.RowState != DataRowState.Detached)
-                                       row.AcceptChanges ();
-                       }
-               }
-
-               /// <summary>
-               /// Removes the row at the specified index from the collection.
-               /// </summary>
-               public void RemoveAt (int index)
-               {
-                       Remove (this [index]);
-               }
-
-               internal void OnListChanged (object sender, ListChangedEventArgs args)
-               {
-                       if (ListChanged != null)
-                               ListChanged (sender, args);
-               }
-       }
-
-       sealed partial class DataRowCollection {
-               public override int Count {
-                       get { return List.Count; }
-               }
-
-               public void CopyTo (DataRow [] array, int index)
-               {
-                       CopyTo ((Array) array, index);
-               }
-
-               public override void CopyTo (Array ar, int index)
-               {
-                       base.CopyTo (ar, index);
-               }
-
-               public override IEnumerator GetEnumerator ()
-               {
-                       return base.GetEnumerator ();
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataRowState.cs b/mcs/class/System.Data/System.Data/DataRowState.cs
deleted file mode 100644 (file)
index 5990783..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Data.DataRowState.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Gets the state of a DataRow object.
-       /// </summary>
-       [Flags]
-       public enum DataRowState
-       {
-               Detached = 1,
-               Unchanged = 2,
-               Added = 4,
-               Deleted = 8,
-               Modified = 16
-       }
-
-}
diff --git a/mcs/class/System.Data/System.Data/DataRowVersion.cs b/mcs/class/System.Data/System.Data/DataRowVersion.cs
deleted file mode 100644 (file)
index a34d82a..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.Data.DataRowVersion.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Describes the version of a DataRow.
-       /// </summary>
-       public enum DataRowVersion
-       {
-               Original = 256,
-               Current = 512,
-               Proposed = 1024,
-               Default = 1536
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/DataRowView.cs b/mcs/class/System.Data/System.Data/DataRowView.cs
deleted file mode 100644 (file)
index bb865b9..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-//\r
-// System.Data.DataRowView.cs\r
-//\r
-// Author:\r
-//    Rodrigo Moya <rodrigo@ximian.com>\r
-//    Miguel de Icaza <miguel@ximian.com>\r
-//    Daniel Morgan <danmorg@sc.rr.com>\r
-//\r
-// (C) Ximian, Inc 2002\r
-// (C) Daniel Morgan 2002\r
-//\r
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-//\r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-//\r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.Collections;\r
-using System.ComponentModel;\r
-using System.Reflection;\r
-\r
-namespace System.Data\r
-{\r
-       /// <summary>\r
-       /// Represents a customized view of a DataRow exposed as a fully featured Windows Forms control.\r
-       /// </summary>\r
-       // FIXME: correct exceptions in this[] methods\r
-       public partial class DataRowView : IEditableObject {\r
-               DataView _dataView;\r
-               DataRow _dataRow;\r
-               int _index = -1;\r
-\r
-               internal DataRowView (DataView dataView, DataRow row, int index)\r
-               {\r
-                       _dataView = dataView;\r
-                       _dataRow = row;\r
-                       _index = index;\r
-               }\r
-\r
-               public override bool Equals (object other)\r
-               {\r
-                       return other != null &&\r
-                               other is DataRowView &&\r
-                               ((DataRowView) other)._dataRow != null &&\r
-                               ((DataRowView) other)._dataRow.Equals (_dataRow);\r
-               }\r
-\r
-               public void BeginEdit ()\r
-               {\r
-                       _dataRow.BeginEdit ();\r
-               }\r
-\r
-               public void CancelEdit ()\r
-               {\r
-                       // FIXME:\r
-                       if (this.Row == DataView._lastAdded)\r
-                               DataView.CompleteLastAdded (false);\r
-                       else\r
-                               _dataRow.CancelEdit();\r
-               }\r
-\r
-               public DataView CreateChildView (DataRelation relation)\r
-               {\r
-                       return DataView.CreateChildView (relation, _index);\r
-               }\r
-\r
-               public DataView CreateChildView (string relationName)\r
-               {\r
-                       return CreateChildView (Row.Table.ChildRelations [relationName]);\r
-               }\r
-\r
-               public void Delete ()\r
-               {\r
-                       DataView.Delete (_index);\r
-               }\r
-\r
-               public void EndEdit ()\r
-               {\r
-                       // FIXME:\r
-                       if (this.Row == DataView._lastAdded)\r
-                               DataView.CompleteLastAdded(true);\r
-                       else\r
-                               _dataRow.EndEdit();\r
-               }\r
-\r
-               private void CheckAllowEdit ()\r
-               {\r
-                       if (!DataView.AllowEdit && (Row != DataView._lastAdded))\r
-                               throw new DataException ("Cannot edit on a DataSource where AllowEdit is false.");\r
-               }\r
-\r
-               public DataView DataView {\r
-                       get { return _dataView; }\r
-               }\r
-\r
-               public bool IsEdit {\r
-                       get { return _dataRow.HasVersion (DataRowVersion.Proposed); }\r
-               }\r
-\r
-               // It becomes true when this instance is created by\r
-               // DataView.AddNew(). If it is true, then the DataRow is\r
-               // "Detached", and when this.EndEdit() is invoked, the row\r
-               // will be added to the table.\r
-               public bool IsNew {\r
-                       get { return Row == DataView._lastAdded; }\r
-               }\r
-\r
-               public object this [string property] {\r
-                       get {\r
-                               DataColumn dc = _dataView.Table.Columns [property];\r
-                               if (dc == null)\r
-                                       throw new ArgumentException (\r
-                                               property + " is neither a DataColumn nor a DataRelation for table " + _dataView.Table.TableName);\r
-                               return _dataRow [dc, GetActualRowVersion ()];\r
-                       }\r
-                       set {\r
-                               CheckAllowEdit ();\r
-                               DataColumn dc = _dataView.Table.Columns [property];\r
-                               if (dc == null)\r
-                                       throw new ArgumentException (\r
-                                               property + " is neither a DataColumn nor a DataRelation for table " + _dataView.Table.TableName);\r
-                               _dataRow [dc] = value;\r
-                       }\r
-               }\r
-\r
-               public object this [int ndx] {\r
-                       get {\r
-                               DataColumn dc = _dataView.Table.Columns [ndx];\r
-                               if (dc == null)\r
-                                       throw new ArgumentException (\r
-                                               ndx + " is neither a DataColumn nor a DataRelation for table " + _dataView.Table.TableName);\r
-                               return _dataRow [dc, GetActualRowVersion ()];\r
-                       }\r
-                       set {\r
-                               CheckAllowEdit ();\r
-                               DataColumn dc = _dataView.Table.Columns [ndx];\r
-                               if (dc == null)\r
-                                       throw new ArgumentException (\r
-                                               ndx + " is neither a DataColumn nor a DataRelation for table " + _dataView.Table.TableName);\r
-                               _dataRow [dc] = value;\r
-                       }\r
-               }\r
-\r
-               private DataRowVersion GetActualRowVersion ()\r
-               {\r
-                       switch (_dataView.RowStateFilter) {\r
-                       case DataViewRowState.Added:\r
-                               if (IsNew) //"last added" was not completed on this row\r
-                                       return DataRowVersion.Proposed;\r
-                               else\r
-                                       return DataRowVersion.Current;\r
-                               \r
-                       case DataViewRowState.ModifiedOriginal:\r
-                       case DataViewRowState.Deleted:\r
-                       case DataViewRowState.Unchanged:\r
-                       case DataViewRowState.OriginalRows:\r
-                               return DataRowVersion.Original;\r
-                       case DataViewRowState.ModifiedCurrent:\r
-                               return DataRowVersion.Current;\r
-                       }\r
-                       return DataRowVersion.Default;\r
-               }\r
-\r
-               public DataRow Row {\r
-                       get { return _dataRow; }\r
-               }\r
-\r
-               public DataRowVersion RowVersion {\r
-                       get {\r
-                               DataRowVersion version = DataView.GetRowVersion(_index);\r
-                               if (version != DataRowVersion.Original)\r
-                                       version = DataRowVersion.Current;\r
-\r
-                               return version;\r
-                       }\r
-               }\r
-\r
-               public override int GetHashCode ()\r
-               {\r
-                       return _dataRow.GetHashCode();\r
-               }\r
-\r
-               internal int Index {\r
-                       get { return _index; }\r
-               }\r
-       }\r
-\r
-       partial class DataRowView : ICustomTypeDescriptor {\r
-               AttributeCollection ICustomTypeDescriptor.GetAttributes ()\r
-               {\r
-                       System.ComponentModel.AttributeCollection attributes;\r
-                       attributes = AttributeCollection.Empty;\r
-                       return attributes;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns String.Empty")]\r
-               string ICustomTypeDescriptor.GetClassName ()\r
-               {\r
-                       return string.Empty;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns null")]\r
-               string ICustomTypeDescriptor.GetComponentName ()\r
-               {\r
-                       return null;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns null")]\r
-               TypeConverter ICustomTypeDescriptor.GetConverter ()\r
-               {\r
-                       return null;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns null")]\r
-               EventDescriptor ICustomTypeDescriptor.GetDefaultEvent ()\r
-               {\r
-                       return null;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns null")]\r
-               PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty ()\r
-               {\r
-                       return null;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns null")]\r
-               object ICustomTypeDescriptor.GetEditor (Type editorBaseType)\r
-               {\r
-                       return null;\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns an empty collection")]\r
-               EventDescriptorCollection ICustomTypeDescriptor.GetEvents ()\r
-               {\r
-                       return new EventDescriptorCollection (null);\r
-               }\r
-\r
-               [MonoTODO ("Not implemented.   Always returns an empty collection")]\r
-               EventDescriptorCollection ICustomTypeDescriptor.GetEvents (Attribute [] attributes)\r
-               {\r
-                       return new EventDescriptorCollection (null);\r
-               }\r
-\r
-               PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties ()\r
-               {\r
-                       if (DataView == null) {\r
-                               ITypedList typedList = (ITypedList) _dataView;\r
-                               return typedList.GetItemProperties (new PropertyDescriptor [0]);\r
-                       }\r
-                       return DataView.Table.GetPropertyDescriptorCollection ();\r
-               }\r
-\r
-               [MonoTODO ("It currently reports more descriptors than necessary")]\r
-               PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties (Attribute [] attributes)\r
-               {\r
-                       PropertyDescriptorCollection descriptors;\r
-                       descriptors = ((ICustomTypeDescriptor) this).GetProperties ();\r
-                       // TODO: filter out descriptors which do not contain\r
-                       //       any of those attributes\r
-                       //       except, those descriptors\r
-                       //       that contain DefaultMemeberAttribute\r
-                       return descriptors;\r
-               }\r
-\r
-               [MonoTODO]\r
-               object ICustomTypeDescriptor.GetPropertyOwner (PropertyDescriptor pd)\r
-               {\r
-                       return this;\r
-               }\r
-       }\r
-\r
-       partial class DataRowView : IDataErrorInfo {\r
-               string IDataErrorInfo.Error {\r
-                       [MonoTODO ("Not implemented, always returns String.Empty")]\r
-                       get { return string.Empty; }\r
-               }\r
-\r
-               string IDataErrorInfo.this [string colName] {\r
-                       [MonoTODO ("Not implemented, always returns String.Empty")]\r
-                       get { return string.Empty; }\r
-               }\r
-       }\r
-\r
-       partial class DataRowView : INotifyPropertyChanged {\r
-               public event PropertyChangedEventHandler PropertyChanged;\r
-\r
-               void OnPropertyChanged (string propertyName)\r
-               {\r
-                       if (PropertyChanged != null) {\r
-                               PropertyChangedEventArgs args = new PropertyChangedEventArgs (propertyName);\r
-                               PropertyChanged (this, args);\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataSet.cs b/mcs/class/System.Data/System.Data/DataSet.cs
deleted file mode 100644 (file)
index 5e98f20..0000000
+++ /dev/null
@@ -1,1744 +0,0 @@
-//\r
-// System.Data/DataSet.cs\r
-//\r
-// Author:\r
-//   Christopher Podurgiel <cpodurgiel@msn.com>\r
-//   Daniel Morgan <danmorg@sc.rr.com>\r
-//   Rodrigo Moya <rodrigo@ximian.com>\r
-//   Stuart Caborn <stuart.caborn@virgin.net>\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//   Ville Palo <vi64pa@koti.soon.fi>\r
-//   Atsushi Enomoto <atsushi@ximian.com>\r
-//   Konstantin Triger <kostat@mainsoft.com>\r
-//\r
-// (C) Ximian, Inc. 2002\r
-// Copyright (C) Tim Coleman, 2002, 2003\r
-//\r
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-//\r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-//\r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.Collections;\r
-using System.ComponentModel;\r
-using System.Globalization;\r
-using System.Threading;\r
-using System.IO;\r
-using System.Runtime.Serialization;\r
-using System.Runtime.Serialization.Formatters.Binary;\r
-using System.Xml;\r
-using System.Xml.Schema;\r
-using System.Xml.Serialization;\r
-using System.Data.Common;\r
-\r
-namespace System.Data\r
-{\r
-       [ToolboxItem ("Microsoft.VSDesigner.Data.VS.DataSetToolboxItem, " + Consts.AssemblyMicrosoft_VSDesigner)]\r
-       [DefaultProperty ("DataSetName")]\r
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.DataSetDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]\r
-       [Serializable]\r
-       public partial class DataSet : MarshalByValueComponent, IListSource, ISupportInitialize,\r
-                              ISerializable, IXmlSerializable {\r
-               private string dataSetName;\r
-               private string _namespace = string.Empty;\r
-               private string prefix;\r
-               private bool caseSensitive;\r
-               private bool enforceConstraints = true;\r
-               private DataTableCollection tableCollection;\r
-               private DataRelationCollection relationCollection;\r
-               private PropertyCollection properties;\r
-               private DataViewManager defaultView;\r
-               private CultureInfo locale;\r
-               internal XmlDataDocument _xmlDataDocument;\r
-\r
-               internal TableAdapterSchemaInfo tableAdapterSchemaInfo;\r
-               bool initInProgress;\r
-\r
-               #region Constructors\r
-\r
-               public DataSet ()\r
-                       : this ("NewDataSet")\r
-               {\r
-               }\r
-\r
-               public DataSet (string dataSetName)\r
-               {\r
-                       this.dataSetName = dataSetName;\r
-                       tableCollection = new DataTableCollection (this);\r
-                       relationCollection = new DataRelationCollection.DataSetRelationCollection (this);\r
-                       properties = new PropertyCollection ();\r
-                       prefix = String.Empty;\r
-               }\r
-\r
-               protected DataSet (SerializationInfo info, StreamingContext context)\r
-                       : this ()\r
-               {\r
-                       if (IsBinarySerialized (info, context)) {\r
-                               BinaryDeserialize (info);\r
-                               return;\r
-                       }\r
-                       string s = info.GetValue ("XmlSchema", typeof (String)) as String;\r
-                       XmlTextReader reader = new XmlTextReader (new StringReader (s));\r
-                       ReadXmlSchema (reader);\r
-                       reader.Close ();\r
-\r
-                       GetSerializationData (info, context);\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Public Properties\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (false)]\r
-               public bool CaseSensitive {\r
-                       get { return caseSensitive; }\r
-                       set {\r
-                               caseSensitive = value;\r
-                               if (!caseSensitive) {\r
-                                       foreach (DataTable table in Tables) {\r
-                                               table.ResetCaseSensitiveIndexes ();\r
-                                               foreach (Constraint c in table.Constraints)\r
-                                                       c.AssertConstraint ();\r
-                                       }\r
-                               } else {\r
-                                       foreach (DataTable table in Tables) {\r
-                                               table.ResetCaseSensitiveIndexes ();\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string DataSetName {\r
-                       get { return dataSetName; }\r
-                       set { dataSetName = value; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               public DataViewManager DefaultViewManager {\r
-                       get {\r
-                               if (defaultView == null)\r
-                                       defaultView = new DataViewManager (this);\r
-                               return defaultView;\r
-                       }\r
-               }\r
-\r
-               [DefaultValue (true)]\r
-               public bool EnforceConstraints {\r
-                       get { return enforceConstraints; }\r
-                       set { InternalEnforceConstraints (value, true); }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               [DataCategory ("Data")]\r
-               public PropertyCollection ExtendedProperties {\r
-                       get { return properties; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               public bool HasErrors {\r
-                       get {\r
-                               for (int i = 0; i < Tables.Count; i++) {\r
-                                       if (Tables[i].HasErrors)\r
-                                               return true;\r
-                               }\r
-                               return false;\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               public CultureInfo Locale {\r
-                       get { return locale != null ? locale : Thread.CurrentThread.CurrentCulture; }\r
-                       set {\r
-                               if (locale == null || !locale.Equals (value)) {\r
-                                       // TODO: check if the new locale is valid\r
-                                       // TODO: update locale of all tables\r
-                                       locale = value;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               internal bool LocaleSpecified {\r
-                       get { return locale != null; }\r
-               }\r
-\r
-               \r
-               internal TableAdapterSchemaInfo TableAdapterSchemaData {\r
-                       get { return tableAdapterSchemaInfo; }\r
-               }\r
-               \r
-               internal void InternalEnforceConstraints (bool value,bool resetIndexes)\r
-               {\r
-                       if (value == enforceConstraints)\r
-                               return;\r
-\r
-                       if (value) {\r
-                               if (resetIndexes) {\r
-                                       // FIXME : is that correct?\r
-                                       // By design the indexes should be updated at this point.\r
-                                       // In Fill from BeginLoadData till EndLoadData indexes are not updated (reset in EndLoadData)\r
-                                       // In DataRow.EndEdit indexes are always updated.\r
-                                       foreach (DataTable table in Tables)\r
-                                               table.ResetIndexes ();\r
-                               }\r
-\r
-                               // TODO : Need to take care of Error handling and settting of RowErrors\r
-                               bool constraintViolated = false;\r
-                               foreach (DataTable table in Tables) {\r
-                                       foreach (Constraint constraint in table.Constraints)\r
-                                               constraint.AssertConstraint();\r
-                                       table.AssertNotNullConstraints ();\r
-                                       if (!constraintViolated && table.HasErrors)\r
-                                               constraintViolated = true;\r
-                               }\r
-\r
-                               if (constraintViolated)\r
-                                       Constraint.ThrowConstraintException ();\r
-                       }\r
-                       enforceConstraints = value;\r
-               }\r
-\r
-               public void Merge (DataRow[] rows)\r
-               {\r
-                       Merge (rows, false, MissingSchemaAction.Add);\r
-               }\r
-\r
-               public void Merge (DataSet dataSet)\r
-               {\r
-                       Merge (dataSet, false, MissingSchemaAction.Add);\r
-               }\r
-\r
-               public void Merge (DataTable table)\r
-               {\r
-                       Merge (table, false, MissingSchemaAction.Add);\r
-               }\r
-\r
-               public void Merge (DataSet dataSet, bool preserveChanges)\r
-               {\r
-                       Merge (dataSet, preserveChanges, MissingSchemaAction.Add);\r
-               }\r
-\r
-               public void Merge (DataRow[] rows, bool preserveChanges, MissingSchemaAction missingSchemaAction)\r
-               {\r
-                       if (rows == null)\r
-                               throw new ArgumentNullException ("rows");\r
-                       if (!IsLegalSchemaAction (missingSchemaAction))\r
-                               throw new ArgumentOutOfRangeException ("missingSchemaAction");\r
-\r
-                       MergeManager.Merge (this, rows, preserveChanges, missingSchemaAction);\r
-               }\r
-\r
-               public void Merge (DataSet dataSet, bool preserveChanges, MissingSchemaAction missingSchemaAction)\r
-               {\r
-                       if (dataSet == null)\r
-                               throw new ArgumentNullException ("dataSet");\r
-                       if (!IsLegalSchemaAction (missingSchemaAction))\r
-                               throw new ArgumentOutOfRangeException ("missingSchemaAction");\r
-\r
-                       MergeManager.Merge (this, dataSet, preserveChanges, missingSchemaAction);\r
-               }\r
-\r
-               public void Merge (DataTable table, bool preserveChanges, MissingSchemaAction missingSchemaAction)\r
-               {\r
-                       if (table == null)\r
-                               throw new ArgumentNullException ("table");\r
-                       if (!IsLegalSchemaAction (missingSchemaAction))\r
-                               throw new ArgumentOutOfRangeException ("missingSchemaAction");\r
-\r
-                       MergeManager.Merge (this, table, preserveChanges, missingSchemaAction);\r
-               }\r
-\r
-               private static bool IsLegalSchemaAction (MissingSchemaAction missingSchemaAction)\r
-               {\r
-                       if (missingSchemaAction == MissingSchemaAction.Add || missingSchemaAction == MissingSchemaAction.AddWithKey\r
-                               || missingSchemaAction == MissingSchemaAction.Error || missingSchemaAction == MissingSchemaAction.Ignore)\r
-                               return true;\r
-                       return false;\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string Namespace {\r
-                       get { return _namespace; }\r
-                       set {\r
-                               //TODO - trigger an event if this happens?\r
-                               if (value == null)\r
-                                       value = String.Empty;\r
-                                if (value != this._namespace)\r
-                                       RaisePropertyChanging ("Namespace");\r
-                               _namespace = value;\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string Prefix {\r
-                       get { return prefix; }\r
-                       set {\r
-                               if (value == null)\r
-                                       value = String.Empty;\r
-                               // Prefix cannot contain any special characters other than '_' and ':'\r
-                               for (int i = 0; i < value.Length; i++) {\r
-                                       if (!(Char.IsLetterOrDigit (value [i])) && (value [i] != '_') && (value [i] != ':'))\r
-                                               throw new DataException ("Prefix '" + value + "' is not valid, because it contains special characters.");\r
-                               }\r
-\r
-                               if (value != this.prefix)\r
-                                       RaisePropertyChanging ("Prefix");\r
-                               prefix = value;\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]\r
-               public DataRelationCollection Relations {\r
-                       get { return relationCollection; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public override ISite Site {\r
-                       get { return base.Site; }\r
-                       set { base.Site = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]\r
-               public DataTableCollection Tables {\r
-                       get { return tableCollection; }\r
-               }\r
-\r
-               #endregion // Public Properties\r
-\r
-               #region Public Methods\r
-\r
-               public void AcceptChanges ()\r
-               {\r
-                       foreach (DataTable tempTable in tableCollection)\r
-                               tempTable.AcceptChanges ();\r
-               }\r
-\r
-               /// <summary>\r
-               /// Clears all the tables\r
-               /// </summary>\r
-               public void Clear ()\r
-               {\r
-                       if (_xmlDataDocument != null)\r
-                               throw new NotSupportedException ("Clear function on dataset and datatable is not supported when XmlDataDocument is bound to the DataSet.");\r
-                       bool enforceConstraints = this.EnforceConstraints;\r
-                       this.EnforceConstraints = false;\r
-                       for (int t = 0; t < tableCollection.Count; t++)\r
-                               tableCollection[t].Clear ();\r
-                       this.EnforceConstraints = enforceConstraints;\r
-               }\r
-\r
-               public virtual DataSet Clone ()\r
-               {\r
-                       // need to return the same type as this...\r
-                       DataSet Copy = (DataSet) Activator.CreateInstance (GetType (), true);\r
-\r
-                       CopyProperties (Copy);\r
-\r
-                       foreach (DataTable Table in Tables) {\r
-                               // tables are often added in no-args constructor, don't add them\r
-                               // twice.\r
-                               if (!Copy.Tables.Contains (Table.TableName))\r
-                                       Copy.Tables.Add (Table.Clone ());\r
-                       }\r
-\r
-                       //Copy Relationships between tables after existance of tables\r
-                       //and setting properties correctly\r
-                       CopyRelations (Copy);\r
-\r
-                       return Copy;\r
-               }\r
-\r
-               // Copies both the structure and data for this DataSet.\r
-               public DataSet Copy ()\r
-               {\r
-                       // need to return the same type as this...\r
-                       DataSet Copy = (DataSet) Activator.CreateInstance (GetType (), true);\r
-\r
-                       CopyProperties (Copy);\r
-\r
-                       // Copy DatSet's tables\r
-                       foreach (DataTable Table in Tables) {\r
-                               if (! Copy.Tables.Contains (Table.TableName)) {\r
-                                       Copy.Tables.Add (Table.Copy ());\r
-                                       continue;\r
-                               }\r
-                               foreach (DataRow row in Table.Rows)\r
-                                       Copy.Tables [Table.TableName].ImportRow (row);\r
-                       }\r
-\r
-                       //Copy Relationships between tables after existance of tables\r
-                       //and setting properties correctly\r
-                       CopyRelations (Copy);\r
-\r
-                       return Copy;\r
-               }\r
-\r
-               private void CopyProperties (DataSet Copy)\r
-               {\r
-                       Copy.CaseSensitive = CaseSensitive;\r
-                       //Copy.Container = Container\r
-                       Copy.DataSetName = DataSetName;\r
-                       //Copy.DefaultViewManager\r
-                       //Copy.DesignMode\r
-                       Copy.EnforceConstraints = EnforceConstraints;\r
-                       if(ExtendedProperties.Count > 0) {\r
-                               // Cannot copy extended properties directly as the property does not have a set accessor\r
-                               Array tgtArray = Array.CreateInstance( typeof (object), ExtendedProperties.Count);\r
-                               ExtendedProperties.Keys.CopyTo (tgtArray, 0);\r
-                               for (int i = 0; i < ExtendedProperties.Count; i++)\r
-                                       Copy.ExtendedProperties.Add (tgtArray.GetValue (i), ExtendedProperties[tgtArray.GetValue (i)]);\r
-                       }\r
-                       Copy.locale = locale;\r
-                       Copy.Namespace = Namespace;\r
-                       Copy.Prefix = Prefix;\r
-                       //Copy.Site = Site; // FIXME : Not sure of this.\r
-               }\r
-\r
-\r
-               private void CopyRelations (DataSet Copy)\r
-               {\r
-\r
-                       //Creation of the relation contains some of the properties, and the constructor\r
-                       //demands these values. instead changing the DataRelation constructor and behaviour the\r
-                       //parameters are pre-configured and sent to the most general constructor\r
-\r
-                       foreach (DataRelation MyRelation in this.Relations) {\r
-\r
-                               // typed datasets create relations through ctor.\r
-                               if (Copy.Relations.Contains (MyRelation.RelationName))\r
-                                       continue;\r
-\r
-                               string pTable = MyRelation.ParentTable.TableName;\r
-                               string cTable = MyRelation.ChildTable.TableName;\r
-                               DataColumn[] P_DC = new DataColumn[MyRelation.ParentColumns.Length];\r
-                               DataColumn[] C_DC = new DataColumn[MyRelation.ChildColumns.Length];\r
-                               int i = 0;\r
-\r
-                               foreach (DataColumn DC in MyRelation.ParentColumns) {\r
-                                       P_DC[i]=Copy.Tables[pTable].Columns[DC.ColumnName];\r
-                                       i++;\r
-                               }\r
-\r
-                               i = 0;\r
-\r
-                               foreach (DataColumn DC in MyRelation.ChildColumns) {\r
-                                       C_DC[i]=Copy.Tables[cTable].Columns[DC.ColumnName];\r
-                                       i++;\r
-                               }\r
-\r
-                               DataRelation cRel = new DataRelation (MyRelation.RelationName, P_DC, C_DC, false);\r
-                               Copy.Relations.Add (cRel);\r
-                       }\r
-\r
-                       // Foreign Key constraints are not cloned in DataTable.Clone\r
-                       // so, these constraints should be cloned when copying the relations.\r
-                       foreach (DataTable table in this.Tables) {\r
-                               foreach (Constraint c in table.Constraints) {\r
-                                       if (!(c is ForeignKeyConstraint)\r
-                                               || Copy.Tables[table.TableName].Constraints.Contains (c.ConstraintName))\r
-                                               continue;\r
-                                       ForeignKeyConstraint fc = (ForeignKeyConstraint)c;\r
-                                       DataTable parentTable = Copy.Tables [fc.RelatedTable.TableName];\r
-                                       DataTable currTable = Copy.Tables [table.TableName];\r
-                                       DataColumn[] parentCols = new DataColumn [fc.RelatedColumns.Length];\r
-                                       DataColumn[] childCols = new DataColumn [fc.Columns.Length];\r
-                                       for (int j=0; j < parentCols.Length; ++j)\r
-                                               parentCols [j] = parentTable.Columns[fc.RelatedColumns[j].ColumnName];\r
-                                       for (int j=0; j < childCols.Length; ++j)\r
-                                               childCols [j] = currTable.Columns[fc.Columns[j].ColumnName];\r
-                                       currTable.Constraints.Add (fc.ConstraintName, parentCols, childCols);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               public DataSet GetChanges ()\r
-               {\r
-                       return GetChanges (DataRowState.Added | DataRowState.Deleted | DataRowState.Modified);\r
-               }\r
-\r
-\r
-               public DataSet GetChanges (DataRowState rowStates)\r
-               {\r
-                       if (!HasChanges (rowStates))\r
-                               return null;\r
-\r
-                       DataSet copySet = Clone ();\r
-                       bool prev = copySet.EnforceConstraints;\r
-                       copySet.EnforceConstraints = false;\r
-\r
-                       Hashtable addedRows = new Hashtable ();\r
-\r
-                       for (int i = 0; i < Tables.Count; i++) {\r
-                               DataTable origTable = Tables [i];\r
-                               DataTable copyTable = copySet.Tables[origTable.TableName];\r
-                               for (int j = 0; j < origTable.Rows.Count; j++) {\r
-                                       DataRow row = origTable.Rows [j];\r
-                                       if (!row.IsRowChanged (rowStates) || addedRows.Contains (row))\r
-                                               continue;\r
-                                       AddChangedRow (addedRows, copyTable, row);\r
-                               }\r
-                       }\r
-                       copySet.EnforceConstraints = prev;\r
-                       return copySet;\r
-               }\r
-\r
-               private void AddChangedRow (Hashtable addedRows, DataTable copyTable, DataRow row)\r
-               {\r
-                       if (addedRows.ContainsKey (row))\r
-                               return;\r
-\r
-                       foreach (DataRelation relation in row.Table.ParentRelations) {\r
-                               DataRow parent = ( row.RowState != DataRowState.Deleted ?\r
-                                                  row.GetParentRow (relation) :\r
-                                                  row.GetParentRow (relation, DataRowVersion.Original)\r
-                                                  );\r
-                               if (parent == null)\r
-                                       continue;\r
-                               // add the parent row\r
-                               DataTable parentCopyTable = copyTable.DataSet.Tables [parent.Table.TableName];\r
-                               AddChangedRow (addedRows, parentCopyTable, parent);\r
-                       }\r
-\r
-                       // add the current row\r
-                       DataRow newRow = copyTable.NewNotInitializedRow ();\r
-                       copyTable.Rows.AddInternal (newRow);\r
-                       // Don't check for ReadOnly, when cloning data to new uninitialized row.\r
-                       row.CopyValuesToRow (newRow, false);\r
-                       newRow.XmlRowID = row.XmlRowID;\r
-                       addedRows.Add (row, row);\r
-               }\r
-\r
-               public string GetXml ()\r
-               {\r
-                       StringWriter Writer = new StringWriter ();\r
-                       WriteXml (Writer, XmlWriteMode.IgnoreSchema);\r
-                       return Writer.ToString ();\r
-               }\r
-\r
-               public string GetXmlSchema ()\r
-               {\r
-                       StringWriter Writer = new StringWriter ();\r
-                       WriteXmlSchema (Writer);\r
-                       return Writer.ToString ();\r
-               }\r
-\r
-               public bool HasChanges ()\r
-               {\r
-                       return HasChanges (DataRowState.Added | DataRowState.Deleted | DataRowState.Modified);\r
-               }\r
-\r
-               public bool HasChanges (DataRowState rowStates)\r
-               {\r
-                       if (((int) rowStates & 0xffffffe0) != 0)\r
-                               throw new ArgumentOutOfRangeException ("rowStates");\r
-\r
-                       DataTableCollection tableCollection = Tables;\r
-                       DataTable table;\r
-                       DataRowCollection rowCollection;\r
-                       DataRow row;\r
-\r
-                       for (int i = 0; i < tableCollection.Count; i++) {\r
-                               table = tableCollection [i];\r
-                               rowCollection = table.Rows;\r
-                               for (int j = 0; j < rowCollection.Count; j++) {\r
-                                       row = rowCollection [j];\r
-                                       if ((row.RowState & rowStates) != 0)\r
-                                               return true;\r
-                               }\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               public void InferXmlSchema (XmlReader reader, string[] nsArray)\r
-               {\r
-                       if (reader == null)\r
-                               return;\r
-                       XmlDocument doc = new XmlDocument ();\r
-                       doc.Load (reader);\r
-                       InferXmlSchema (doc, nsArray);\r
-               }\r
-\r
-               private void InferXmlSchema (XmlDocument doc, string [] nsArray)\r
-               {\r
-                       XmlDataInferenceLoader.Infer (this, doc, XmlReadMode.InferSchema, nsArray);\r
-               }\r
-\r
-               public void InferXmlSchema (Stream stream, string[] nsArray)\r
-               {\r
-                       InferXmlSchema (new XmlTextReader (stream), nsArray);\r
-               }\r
-\r
-               public void InferXmlSchema (TextReader reader, string[] nsArray)\r
-               {\r
-                       InferXmlSchema (new XmlTextReader (reader), nsArray);\r
-               }\r
-\r
-               public void InferXmlSchema (string fileName, string[] nsArray)\r
-               {\r
-                       XmlTextReader reader = new XmlTextReader (fileName);\r
-                       try {\r
-                               InferXmlSchema (reader, nsArray);\r
-                       } finally {\r
-                               reader.Close ();\r
-                       }\r
-               }\r
-\r
-               public virtual void RejectChanges ()\r
-               {\r
-                       int i;\r
-                       bool oldEnforceConstraints = this.EnforceConstraints;\r
-                       this.EnforceConstraints = false;\r
-\r
-                       for (i = 0; i < this.Tables.Count;i++)\r
-                               this.Tables[i].RejectChanges ();\r
-\r
-                       this.EnforceConstraints = oldEnforceConstraints;\r
-               }\r
-\r
-               public virtual void Reset ()\r
-               {\r
-                       // first we remove all ForeignKeyConstraints (if we will not do that\r
-                       // we will get an exception when clearing the tables).\r
-                       for (int i = 0; i < Tables.Count; i++) {\r
-                               ConstraintCollection cc = Tables[i].Constraints;\r
-                               for (int j = 0; j < cc.Count; j++) {\r
-                                       if (cc[j] is ForeignKeyConstraint)\r
-                                               cc.Remove (cc[j]);\r
-                               }\r
-                       }\r
-\r
-                       Clear ();\r
-                       Relations.Clear ();\r
-                       Tables.Clear ();\r
-               }\r
-\r
-               public void WriteXml (Stream stream)\r
-               {\r
-                       XmlTextWriter writer = new XmlTextWriter (stream, null);\r
-                       writer.Formatting = Formatting.Indented;\r
-                       WriteXml (writer);\r
-               }\r
-\r
-               ///<summary>\r
-               /// Writes the current data for the DataSet to the specified file.\r
-               /// </summary>\r
-               /// <param name="filename">Fully qualified filename to write to</param>\r
-               public void WriteXml (string fileName)\r
-               {\r
-                       XmlTextWriter writer = new XmlTextWriter (fileName, null);\r
-                       writer.Formatting = Formatting.Indented;\r
-                       writer.WriteStartDocument (true);\r
-                       try {\r
-                               WriteXml (writer);\r
-                       } finally {\r
-                               writer.WriteEndDocument ();\r
-                               writer.Close ();\r
-                       }\r
-               }\r
-\r
-               public void WriteXml (TextWriter writer)\r
-               {\r
-                       XmlTextWriter xwriter = new XmlTextWriter (writer);\r
-                       xwriter.Formatting = Formatting.Indented;\r
-                       WriteXml (xwriter);\r
-               }\r
-\r
-               public void WriteXml (XmlWriter writer)\r
-               {\r
-                       WriteXml (writer, XmlWriteMode.IgnoreSchema);\r
-               }\r
-\r
-               public void WriteXml (string fileName, XmlWriteMode mode)\r
-               {\r
-                       XmlTextWriter writer = new XmlTextWriter (fileName, null);\r
-                       writer.Formatting = Formatting.Indented;\r
-                       writer.WriteStartDocument (true);\r
-\r
-                       try {\r
-                               WriteXml (writer, mode);\r
-                       } finally {\r
-                               writer.WriteEndDocument ();\r
-                               writer.Close ();\r
-                       }\r
-               }\r
-\r
-               public void WriteXml (Stream stream, XmlWriteMode mode)\r
-               {\r
-                       XmlTextWriter writer = new XmlTextWriter (stream, null);\r
-                       writer.Formatting = Formatting.Indented;\r
-                       WriteXml (writer, mode);\r
-               }\r
-\r
-               public void WriteXml (TextWriter writer, XmlWriteMode mode)\r
-               {\r
-                       XmlTextWriter xwriter = new XmlTextWriter (writer);\r
-                       xwriter.Formatting = Formatting.Indented;\r
-                       WriteXml (xwriter, mode);\r
-               }\r
-\r
-               public void WriteXml (XmlWriter writer, XmlWriteMode mode)\r
-               {\r
-                       if (mode == XmlWriteMode.DiffGram) {\r
-                               SetRowsID();\r
-                               WriteDiffGramElement(writer);\r
-                       }\r
-\r
-                       // It should not write when there is no content to be written\r
-                       bool shouldOutputContent = (mode != XmlWriteMode.DiffGram);\r
-                       for (int n = 0; n < tableCollection.Count && !shouldOutputContent; n++)\r
-                               shouldOutputContent = tableCollection [n].Rows.Count > 0;\r
-\r
-                       if (shouldOutputContent) {\r
-                               WriteStartElement (writer, mode, Namespace, Prefix, XmlHelper.Encode (DataSetName));\r
-\r
-                               if (mode == XmlWriteMode.WriteSchema)\r
-                                       DoWriteXmlSchema (writer);\r
-\r
-                               WriteTables (writer, mode, Tables, DataRowVersion.Default);\r
-                               writer.WriteEndElement ();\r
-                       }\r
-\r
-                       if (mode == XmlWriteMode.DiffGram) {\r
-                               if (HasChanges(DataRowState.Modified | DataRowState.Deleted)) {\r
-                                       DataSet beforeDS = GetChanges (DataRowState.Modified | DataRowState.Deleted);\r
-                                       WriteStartElement (writer, XmlWriteMode.DiffGram, XmlConstants.DiffgrNamespace, XmlConstants.DiffgrPrefix, "before");\r
-                                       WriteTables (writer, mode, beforeDS.Tables, DataRowVersion.Original);\r
-                                       writer.WriteEndElement ();\r
-                               }\r
-                       }\r
-\r
-                       if (mode == XmlWriteMode.DiffGram)\r
-                               writer.WriteEndElement (); // diffgr:diffgram\r
-\r
-                       writer.Flush ();\r
-               }\r
-\r
-               public void WriteXmlSchema (Stream stream)\r
-               {\r
-                       XmlTextWriter writer = new XmlTextWriter (stream, null );\r
-                       writer.Formatting = Formatting.Indented;\r
-                       WriteXmlSchema (writer);\r
-               }\r
-\r
-               public void WriteXmlSchema (string fileName)\r
-               {\r
-                       XmlTextWriter writer = new XmlTextWriter (fileName, null);\r
-                       try {\r
-                               writer.Formatting = Formatting.Indented;\r
-                               writer.WriteStartDocument (true);\r
-                               WriteXmlSchema (writer);\r
-                       } finally {\r
-                               writer.WriteEndDocument ();\r
-                               writer.Close ();\r
-                       }\r
-               }\r
-\r
-               public void WriteXmlSchema (TextWriter writer)\r
-               {\r
-                       XmlTextWriter xwriter = new XmlTextWriter (writer);\r
-                       try {\r
-                               xwriter.Formatting = Formatting.Indented;\r
-                               WriteXmlSchema (xwriter);\r
-                       } finally {\r
-                               xwriter.Close ();\r
-                       }\r
-               }\r
-\r
-               public void WriteXmlSchema (XmlWriter writer)\r
-               {\r
-                       //Create a skeleton doc and then write the schema\r
-                       //proper which is common to the WriteXml method in schema mode\r
-                       DoWriteXmlSchema (writer);\r
-               }\r
-\r
-               public void ReadXmlSchema (Stream stream)\r
-               {\r
-                       XmlReader reader = new XmlTextReader (stream, new NameTable ());\r
-                       ReadXmlSchema (reader);\r
-               }\r
-\r
-               public void ReadXmlSchema (string fileName)\r
-               {\r
-                       XmlReader reader = new XmlTextReader (fileName);\r
-                       try {\r
-                               ReadXmlSchema (reader);\r
-                       } finally {\r
-                               reader.Close ();\r
-                       }\r
-               }\r
-\r
-               public void ReadXmlSchema (TextReader reader)\r
-               {\r
-                       XmlReader xr = new XmlTextReader (reader);\r
-                       ReadXmlSchema (xr);\r
-               }\r
-\r
-               public void ReadXmlSchema (XmlReader reader)\r
-               {\r
-#if true\r
-                       XmlSchemaDataImporter xsdImporter = new XmlSchemaDataImporter (this, reader, true);\r
-                       xsdImporter.Process ();\r
-                       tableAdapterSchemaInfo = xsdImporter.CurrentAdapter;\r
-#else\r
-                       XmlSchemaMapper SchemaMapper = new XmlSchemaMapper (this);\r
-                       SchemaMapper.Read (reader);\r
-#endif\r
-               }\r
-\r
-               public XmlReadMode ReadXml (Stream stream)\r
-               {\r
-                       return ReadXml (new XmlTextReader (stream));\r
-               }\r
-\r
-               public XmlReadMode ReadXml (string fileName)\r
-               {\r
-                       XmlTextReader reader = new XmlTextReader (fileName);\r
-                       try {\r
-                               return ReadXml (reader);\r
-                       } finally {\r
-                               reader.Close ();\r
-                       }\r
-               }\r
-\r
-               public XmlReadMode ReadXml (TextReader reader)\r
-               {\r
-                       return ReadXml (new XmlTextReader (reader));\r
-               }\r
-\r
-               public XmlReadMode ReadXml (XmlReader reader)\r
-               {\r
-                       return ReadXml (reader, XmlReadMode.Auto);\r
-               }\r
-\r
-               public XmlReadMode ReadXml (Stream stream, XmlReadMode mode)\r
-               {\r
-                       return ReadXml (new XmlTextReader (stream), mode);\r
-               }\r
-\r
-               public XmlReadMode ReadXml (string fileName, XmlReadMode mode)\r
-               {\r
-                       XmlTextReader reader = new XmlTextReader (fileName);\r
-                       try {\r
-                               return ReadXml (reader, mode);\r
-                       } finally {\r
-                               reader.Close ();\r
-                       }\r
-               }\r
-\r
-               public XmlReadMode ReadXml (TextReader reader, XmlReadMode mode)\r
-               {\r
-                       return ReadXml (new XmlTextReader (reader), mode);\r
-               }\r
-\r
-               // LAMESPEC: XmlReadMode.Fragment is far from presisely\r
-               // documented. MS.NET infers schema against this mode.\r
-               public XmlReadMode ReadXml (XmlReader reader, XmlReadMode mode)\r
-               {\r
-                       if (reader == null)\r
-                               return mode;\r
-\r
-                       switch (reader.ReadState) {\r
-                       case ReadState.EndOfFile:\r
-                       case ReadState.Error:\r
-                       case ReadState.Closed:\r
-                               return mode;\r
-                       }\r
-                       // Skip XML declaration and prolog\r
-                       reader.MoveToContent ();\r
-                       if (reader.EOF)\r
-                               return mode;\r
-\r
-                       if (reader is XmlTextReader) {\r
-                               // we dont need whitespace\r
-                               ((XmlTextReader) reader).WhitespaceHandling = WhitespaceHandling.None;\r
-                       }\r
-\r
-                       XmlDiffLoader DiffLoader = null;\r
-\r
-                       // If diffgram, then read the first element as diffgram\r
-                       if (reader.LocalName == "diffgram" && reader.NamespaceURI == XmlConstants.DiffgrNamespace) {\r
-                               switch (mode) {\r
-                                       case XmlReadMode.Auto:\r
-                                       case XmlReadMode.DiffGram:\r
-                                               if (DiffLoader == null)\r
-                                                       DiffLoader = new XmlDiffLoader (this);\r
-                                               DiffLoader.Load (reader);\r
-                                               // (and leave rest of the reader as is)\r
-                                               return XmlReadMode.DiffGram;\r
-                                       case XmlReadMode.Fragment:\r
-                                               reader.Skip ();\r
-                                               // (and continue to read)\r
-                                               break;\r
-                                       default:\r
-                                               reader.Skip ();\r
-                                               // (and leave rest of the reader as is)\r
-                                               return mode;\r
-                               }\r
-                       }\r
-\r
-                       // If schema, then read the first element as schema\r
-                       if (reader.LocalName == "schema" && reader.NamespaceURI == XmlSchema.Namespace) {\r
-                               switch (mode) {\r
-                                       case XmlReadMode.IgnoreSchema:\r
-                                       case XmlReadMode.InferSchema:\r
-                                               reader.Skip ();\r
-                                               // (and break up read)\r
-                                               return mode;\r
-                                       case XmlReadMode.Fragment:\r
-                                               ReadXmlSchema (reader);\r
-                                               // (and continue to read)\r
-                                               break;\r
-                                       case XmlReadMode.Auto:\r
-                                               if (Tables.Count == 0) {\r
-                                                       ReadXmlSchema (reader);\r
-                                                       return XmlReadMode.ReadSchema;\r
-                                               } else {\r
-                                                       // otherwise just ignore and return IgnoreSchema\r
-                                                       reader.Skip ();\r
-                                                       return XmlReadMode.IgnoreSchema;\r
-                                               }\r
-                                       default:\r
-                                               ReadXmlSchema (reader);\r
-                                               // (and leave rest of the reader as is)\r
-                                               return mode; // When DiffGram, return DiffGram\r
-                               }\r
-                       }\r
-\r
-                       if (reader.EOF)\r
-                               return mode;\r
-\r
-                       int depth = (reader.NodeType == XmlNodeType.Element) ? reader.Depth : -1;\r
-\r
-                       XmlDocument doc = new XmlDocument ();\r
-                       XmlElement root = doc.CreateElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);\r
-                       if (reader.HasAttributes) {\r
-                               for (int i = 0; i < reader.AttributeCount; i++) {\r
-                                       reader.MoveToAttribute(i);\r
-                                       if (reader.NamespaceURI == XmlConstants.XmlnsNS)\r
-                                               root.SetAttribute(reader.Name, reader.GetAttribute(i));\r
-                                       else {\r
-                                               XmlAttribute attr = root.SetAttributeNode(reader.LocalName, reader.NamespaceURI);\r
-                                               attr.Prefix = reader.Prefix;\r
-                                               attr.Value = reader.GetAttribute(i);\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       reader.Read();\r
-                       XmlReadMode retMode = mode;\r
-                       bool schemaLoaded = false;\r
-\r
-                       for (;;) {\r
-                               if( reader.Depth == depth ||\r
-                                       reader.NodeType == XmlNodeType.EndElement)\r
-                                       break;\r
-\r
-                               if (reader.NodeType != XmlNodeType.Element) {\r
-                                       if (!reader.Read())\r
-                                               break;\r
-                                       continue;\r
-                               }\r
-\r
-                               if (reader.LocalName == "schema" && reader.NamespaceURI == XmlSchema.Namespace) {\r
-                                       switch (mode) {\r
-                                               case XmlReadMode.IgnoreSchema:\r
-                                               case XmlReadMode.InferSchema:\r
-                                                       reader.Skip ();\r
-                                                       break;\r
-\r
-                                               default:\r
-                                                       ReadXmlSchema (reader);\r
-                                                       retMode = XmlReadMode.ReadSchema;\r
-                                                       schemaLoaded = true;\r
-                                                       // (and leave rest of the reader as is)\r
-                                                       break;\r
-                                       }\r
-\r
-                                       continue;\r
-                               }\r
-\r
-                               if ((reader.LocalName == "diffgram") && (reader.NamespaceURI == XmlConstants.DiffgrNamespace)) {\r
-                                       if ((mode == XmlReadMode.DiffGram) || (mode == XmlReadMode.IgnoreSchema)\r
-                                               || mode == XmlReadMode.Auto) {\r
-                                               if (DiffLoader == null)\r
-                                                       DiffLoader = new XmlDiffLoader (this);\r
-                                               DiffLoader.Load (reader);\r
-                                               // (and leave rest of the reader as is)\r
-                                               retMode = XmlReadMode.DiffGram;\r
-                                       }\r
-                                       else\r
-                                               reader.Skip();\r
-\r
-                                       continue;\r
-                               }\r
-\r
-                               //collect data\r
-                               XmlNode n = doc.ReadNode(reader);\r
-                               root.AppendChild(n);\r
-                       }\r
-\r
-                       if (reader.NodeType == XmlNodeType.EndElement)\r
-                               reader.Read ();\r
-                       reader.MoveToContent();\r
-\r
-                       if (mode == XmlReadMode.DiffGram) {\r
-                               return retMode;\r
-                       }\r
-\r
-                       doc.AppendChild(root);\r
-\r
-                       if (!schemaLoaded &&\r
-                               retMode != XmlReadMode.ReadSchema &&\r
-                               mode != XmlReadMode.IgnoreSchema &&\r
-                               mode != XmlReadMode.Fragment &&\r
-                               (Tables.Count == 0 || mode == XmlReadMode.InferSchema)) {\r
-                               InferXmlSchema(doc, null);\r
-                               if (mode == XmlReadMode.Auto)\r
-                                       retMode = XmlReadMode.InferSchema;\r
-                       }\r
-\r
-                       reader = new XmlNodeReader (doc);\r
-                       XmlDataReader.ReadXml (this, reader, mode);\r
-\r
-                       return retMode == XmlReadMode.Auto ?\r
-                               XmlReadMode.IgnoreSchema : retMode;\r
-               }\r
-               #endregion // Public Methods\r
-\r
-               #region Public Events\r
-\r
-               [DataCategory ("Action")]\r
-               public event MergeFailedEventHandler MergeFailed;\r
-\r
-               #endregion // Public Events\r
-\r
-               #region IListSource methods\r
-               IList IListSource.GetList ()\r
-               {\r
-                       return DefaultViewManager;\r
-               }\r
-\r
-               bool IListSource.ContainsListCollection {\r
-                       get {\r
-                               return true;\r
-                       }\r
-               }\r
-               #endregion IListSource methods\r
-\r
-               #region ISupportInitialize methods\r
-\r
-               internal bool InitInProgress {\r
-                       get { return initInProgress; }\r
-                       set { initInProgress = value; }\r
-               }\r
-\r
-               public void BeginInit ()\r
-               {\r
-                       InitInProgress = true;\r
-                       dataSetInitialized = false;\r
-               }\r
-\r
-               public void EndInit ()\r
-               {\r
-                       // Finsh the init'ing the tables only after adding all the\r
-                       // tables to the collection.\r
-                       Tables.PostAddRange ();\r
-                       for (int i=0; i < Tables.Count; ++i) {\r
-                               if (!Tables [i].InitInProgress)\r
-                                       continue;\r
-                               Tables [i].FinishInit ();\r
-                       }\r
-\r
-                       Relations.PostAddRange ();\r
-                       InitInProgress = false;\r
-                       dataSetInitialized = true;\r
-                       DataSetInitialized ();\r
-               }\r
-               #endregion\r
-\r
-               #region ISerializable\r
-               public virtual\r
-               void\r
-               GetObjectData (SerializationInfo info, StreamingContext context)\r
-               {\r
-                       if (RemotingFormat == SerializationFormat.Xml) {\r
-                               info.AddValue ("SchemaSerializationMode.DataSet", this.SchemaSerializationMode);\r
-                               StringWriter sw = new StringWriter ();\r
-                               XmlTextWriter writer = new XmlTextWriter (sw);\r
-                               DoWriteXmlSchema (writer);\r
-                               writer.Flush ();\r
-                               info.AddValue ("XmlSchema", sw.ToString ());\r
-\r
-                               sw = new StringWriter ();\r
-                               writer = new XmlTextWriter (sw);\r
-                               WriteXml (writer, XmlWriteMode.DiffGram);\r
-                               writer.Flush ();\r
-                               info.AddValue ("XmlDiffGram", sw.ToString ());\r
-                       } else /*if (DataSet.RemotingFormat == SerializationFormat.Binary)*/ {\r
-                               BinarySerialize (info);\r
-                       }\r
-               }\r
-               #endregion\r
-\r
-               #region Protected Methods\r
-               protected void GetSerializationData (SerializationInfo info, StreamingContext context)\r
-               {\r
-                       string s = info.GetValue ("XmlDiffGram", typeof (String)) as String;\r
-                       XmlTextReader reader = new XmlTextReader (new StringReader (s));\r
-                       ReadXml (reader, XmlReadMode.DiffGram);\r
-                       reader.Close ();\r
-               }\r
-\r
-\r
-               protected virtual System.Xml.Schema.XmlSchema GetSchemaSerializable ()\r
-               {\r
-                       return null;\r
-               }\r
-\r
-               protected virtual void ReadXmlSerializable (XmlReader reader)\r
-               {\r
-                       ReadXml (reader, XmlReadMode.DiffGram);\r
-               }\r
-\r
-               void IXmlSerializable.ReadXml (XmlReader reader)\r
-               {\r
-                       ReadXmlSerializable(reader);\r
-               }\r
-\r
-               void IXmlSerializable.WriteXml (XmlWriter writer)\r
-               {\r
-                       DoWriteXmlSchema (writer);\r
-                       WriteXml (writer, XmlWriteMode.DiffGram);\r
-               }\r
-\r
-               XmlSchema IXmlSerializable.GetSchema ()\r
-               {\r
-                       if (GetType() == typeof(DataSet))\r
-                               return null;\r
-                       MemoryStream stream = new MemoryStream();\r
-                       XmlTextWriter writer = new XmlTextWriter(stream, null);\r
-                       WriteXmlSchema(writer);\r
-                       stream.Position = 0;\r
-                       return XmlSchema.Read(new XmlTextReader(stream), (ValidationEventHandler)null);\r
-               }\r
-\r
-               protected virtual bool ShouldSerializeRelations ()\r
-               {\r
-                       return true;\r
-               }\r
-\r
-               protected virtual bool ShouldSerializeTables ()\r
-               {\r
-                       return true;\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected internal virtual void OnPropertyChanging (PropertyChangedEventArgs pcevent)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected virtual void OnRemoveRelation (DataRelation relation)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected virtual void OnRemoveTable (DataTable table)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               internal virtual void OnMergeFailed (MergeFailedEventArgs e)\r
-               {\r
-                       if (MergeFailed != null)\r
-                               MergeFailed (this, e);\r
-                       else\r
-                               throw new DataException (e.Conflict);\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected internal void RaisePropertyChanging (string name)\r
-               {\r
-               }\r
-\r
-               #endregion\r
-\r
-               #region Private Methods\r
-\r
-               internal static string WriteObjectXml (object o)\r
-               {\r
-                       switch (Type.GetTypeCode (o.GetType ())) {\r
-                               case TypeCode.Boolean:\r
-                                       return XmlConvert.ToString ((Boolean) o);\r
-                               case TypeCode.Byte:\r
-                                       return XmlConvert.ToString ((Byte) o);\r
-                               case TypeCode.Char:\r
-                                       return XmlConvert.ToString ((Char) o);\r
-                               case TypeCode.DateTime:\r
-                                       return XmlConvert.ToString ((DateTime) o, XmlDateTimeSerializationMode.Unspecified);\r
-                               case TypeCode.Decimal:\r
-                                       return XmlConvert.ToString ((Decimal) o);\r
-                               case TypeCode.Double:\r
-                                       return XmlConvert.ToString ((Double) o);\r
-                               case TypeCode.Int16:\r
-                                       return XmlConvert.ToString ((Int16) o);\r
-                               case TypeCode.Int32:\r
-                                       return XmlConvert.ToString ((Int32) o);\r
-                               case TypeCode.Int64:\r
-                                       return XmlConvert.ToString ((Int64) o);\r
-                               case TypeCode.SByte:\r
-                                       return XmlConvert.ToString ((SByte) o);\r
-                               case TypeCode.Single:\r
-                                       return XmlConvert.ToString ((Single) o);\r
-                               case TypeCode.UInt16:\r
-                                       return XmlConvert.ToString ((UInt16) o);\r
-                               case TypeCode.UInt32:\r
-                                       return XmlConvert.ToString ((UInt32) o);\r
-                               case TypeCode.UInt64:\r
-                                       return XmlConvert.ToString ((UInt64) o);\r
-                       }\r
-                       if (o is TimeSpan) return XmlConvert.ToString ((TimeSpan) o);\r
-                       if (o is Guid) return XmlConvert.ToString ((Guid) o);\r
-                       if (o is byte[]) return Convert.ToBase64String ((byte[])o);\r
-\r
-                       return o.ToString ();\r
-               }\r
-\r
-               private void WriteTables (XmlWriter writer, XmlWriteMode mode, DataTableCollection tableCollection, DataRowVersion version)\r
-               {\r
-                       //WriteTable takes care of skipping a table if it has a\r
-                       //Nested Parent Relationship\r
-                       foreach (DataTable table in tableCollection)\r
-                               WriteTable ( writer, table, mode, version);\r
-               }\r
-\r
-               internal static void WriteTable (XmlWriter writer, DataTable table, XmlWriteMode mode, DataRowVersion version)\r
-               {\r
-                       DataRow[] rows = table.NewRowArray(table.Rows.Count);\r
-                       table.Rows.CopyTo (rows, 0);\r
-                       WriteTable (writer, rows, mode, version, true);\r
-               }\r
-\r
-               internal static void WriteTable (XmlWriter writer,\r
-                       DataRow [] rows,\r
-                       XmlWriteMode mode,\r
-                       DataRowVersion version, bool skipIfNested)\r
-               {\r
-                       if (rows.Length == 0) return;\r
-                       DataTable table = rows[0].Table;\r
-\r
-                       if (table.TableName == null || table.TableName == "")\r
-                               throw new InvalidOperationException("Cannot serialize the DataTable. DataTable name is not set.");\r
-\r
-                       //The columns can be attributes, hidden, elements, or simple content\r
-                       //There can be 0-1 simple content cols or 0-* elements\r
-                       System.Collections.ArrayList atts;\r
-                       System.Collections.ArrayList elements;\r
-                       DataColumn simple = null;\r
-\r
-                       SplitColumns (table, out atts, out elements, out simple);\r
-                       //sort out the namespacing\r
-\r
-                       foreach (DataRow row in rows) {\r
-                               if (skipIfNested) {\r
-                                       // Skip rows that is a child of any tables.\r
-                                       bool skip = false;\r
-                                       for (int i = 0; i < table.ParentRelations.Count; i++) {\r
-                                               DataRelation prel = table.ParentRelations [i];\r
-                                               if (!prel.Nested)\r
-                                                       continue;\r
-                                               if (row.GetParentRow (prel) != null) {\r
-                                                       skip = true;\r
-                                                       continue;\r
-                                               }\r
-                                       }\r
-                                       if (skip)\r
-                                               continue;\r
-                               }\r
-\r
-                               if (!row.HasVersion(version) ||\r
-                                  (mode == XmlWriteMode.DiffGram && row.RowState == DataRowState.Unchanged\r
-                                     && version == DataRowVersion.Original))\r
-                                       continue;\r
-\r
-                               // First check are all the rows null. If they are we just write empty element\r
-                               bool AllNulls = true;\r
-                               foreach (DataColumn dc in table.Columns) {\r
-                                       if (row [dc.ColumnName, version] != DBNull.Value) {\r
-                                               AllNulls = false;\r
-                                               break;\r
-                                       }\r
-                               }\r
-\r
-                               // If all of the columns were null, we have to write empty element\r
-                               if (AllNulls) {\r
-                                       writer.WriteElementString (XmlHelper.Encode (table.TableName), "");\r
-                                       continue;\r
-                               }\r
-\r
-                               WriteTableElement (writer, mode, table, row, version);\r
-\r
-                               foreach (DataColumn col in atts)\r
-                                       WriteColumnAsAttribute (writer, mode, col, row, version);\r
-\r
-                               if (simple != null) {\r
-                                       writer.WriteString (WriteObjectXml (row[simple, version]));\r
-                               } else {\r
-                                       foreach (DataColumn col in elements)\r
-                                               WriteColumnAsElement (writer, mode, col, row, version);\r
-                               }\r
-\r
-                               foreach (DataRelation relation in table.ChildRelations) {\r
-                                       if (relation.Nested)\r
-                                               WriteTable (writer, row.GetChildRows (relation), mode, version, false);\r
-                               }\r
-\r
-                               writer.WriteEndElement ();\r
-                       }\r
-\r
-               }\r
-\r
-               internal static void WriteColumnAsElement (XmlWriter writer, XmlWriteMode mode, DataColumn col, DataRow row, DataRowVersion version)\r
-               {\r
-                       string colnspc = null;\r
-                       object rowObject = row [col, version];\r
-\r
-                       if (rowObject == null || rowObject == DBNull.Value)\r
-                               return;\r
-\r
-                       if (col.Namespace != String.Empty)\r
-                               colnspc = col.Namespace;\r
-\r
-                       //TODO check if I can get away with write element string\r
-                       WriteStartElement (writer, mode, colnspc, col.Prefix, XmlHelper.Encode (col.ColumnName));       \r
-                       if (typeof (IXmlSerializable).IsAssignableFrom (col.DataType) \r
-                           || col.DataType == typeof (object)) {\r
-                               IXmlSerializable serializableObj = rowObject as IXmlSerializable;\r
-                               if (serializableObj == null)\r
-                                       throw new InvalidOperationException ();\r
-                               ((IXmlSerializable)rowObject).WriteXml (writer);                                \r
-                       } else {\r
-                               writer.WriteString (WriteObjectXml (rowObject));\r
-                       }\r
-\r
-                       writer.WriteEndElement ();\r
-               }\r
-\r
-               internal static void WriteColumnAsAttribute (XmlWriter writer, XmlWriteMode mode, DataColumn col, DataRow row, DataRowVersion version)\r
-               {\r
-                       if (!row.IsNull (col))\r
-                               WriteAttributeString (writer, mode, col.Namespace, col.Prefix, XmlHelper.Encode (col.ColumnName), WriteObjectXml (row[col, version]));\r
-               }\r
-\r
-               internal static void WriteTableElement (XmlWriter writer, XmlWriteMode mode, DataTable table, DataRow row, DataRowVersion version)\r
-               {\r
-                       //sort out the namespacing\r
-                       string nspc = (table.Namespace.Length > 0 || table.DataSet == null) ? table.Namespace : table.DataSet.Namespace;\r
-\r
-                       WriteStartElement (writer, mode, nspc, table.Prefix, XmlHelper.Encode (table.TableName));\r
-\r
-                       if (mode == XmlWriteMode.DiffGram) {\r
-                               WriteAttributeString (writer, mode, XmlConstants.DiffgrNamespace, XmlConstants.DiffgrPrefix, "id", table.TableName + (row.XmlRowID + 1));\r
-                               WriteAttributeString (writer, mode, XmlConstants.MsdataNamespace, XmlConstants.MsdataPrefix, "rowOrder", XmlConvert.ToString (row.XmlRowID));\r
-                               string modeName = null;\r
-                               if (row.RowState == DataRowState.Modified)\r
-                                       modeName = "modified";\r
-                               else if (row.RowState == DataRowState.Added)\r
-                                       modeName = "inserted";\r
-\r
-                               if (version != DataRowVersion.Original && modeName != null)\r
-                                       WriteAttributeString (writer, mode, XmlConstants.DiffgrNamespace, XmlConstants.DiffgrPrefix, "hasChanges", modeName);\r
-                       }\r
-               }\r
-\r
-               internal static void WriteStartElement (XmlWriter writer, XmlWriteMode mode, string nspc, string prefix, string name)\r
-               {\r
-                       writer.WriteStartElement (prefix, name, nspc);\r
-               }\r
-\r
-               internal static void WriteAttributeString (XmlWriter writer, XmlWriteMode mode, string nspc, string prefix, string name, string stringValue)\r
-               {\r
-                       switch ( mode) {\r
-                       //      case XmlWriteMode.WriteSchema:\r
-                       //              writer.WriteAttributeString (prefix, name, nspc);\r
-                       //              break;\r
-                               case XmlWriteMode.DiffGram:\r
-                                       writer.WriteAttributeString (prefix, name, nspc,stringValue);\r
-                                       break;\r
-                               default:\r
-                                       writer.WriteAttributeString (name, stringValue);\r
-                                       break;\r
-                       };\r
-               }\r
-\r
-               internal void WriteIndividualTableContent (XmlWriter writer, DataTable table, XmlWriteMode mode)\r
-               {\r
-                       if (mode == XmlWriteMode.DiffGram) {\r
-                               table.SetRowsID ();\r
-                               WriteDiffGramElement (writer);\r
-                       }\r
-\r
-                       WriteStartElement (writer, mode, Namespace, Prefix, XmlHelper.Encode (DataSetName));\r
-\r
-                       WriteTable (writer, table, mode, DataRowVersion.Default);\r
-\r
-                       if (mode == XmlWriteMode.DiffGram) {\r
-                               writer.WriteEndElement (); //DataSet name\r
-                               if (HasChanges (DataRowState.Modified | DataRowState.Deleted)) {\r
-\r
-                                       DataSet beforeDS = GetChanges (DataRowState.Modified | DataRowState.Deleted);\r
-                                       WriteStartElement (writer, XmlWriteMode.DiffGram, XmlConstants.DiffgrNamespace, XmlConstants.DiffgrPrefix, "before");\r
-                                       WriteTable (writer, beforeDS.Tables [table.TableName], mode, DataRowVersion.Original);\r
-                                       writer.WriteEndElement ();\r
-                               }\r
-                       }\r
-                       writer.WriteEndElement (); // DataSet name or diffgr:diffgram\r
-               }\r
-\r
-               private void DoWriteXmlSchema (XmlWriter writer)\r
-               {\r
-                       if (writer.WriteState == WriteState.Start)\r
-                               writer.WriteStartDocument ();\r
-                       XmlSchemaWriter.WriteXmlSchema (this, writer);\r
-               }\r
-\r
-               ///<summary>\r
-               /// Helper function to split columns into attributes elements and simple\r
-               /// content\r
-               /// </summary>\r
-               internal static void SplitColumns (DataTable table,\r
-                       out ArrayList atts,\r
-                       out ArrayList elements,\r
-                       out DataColumn simple)\r
-               {\r
-                       //The columns can be attributes, hidden, elements, or simple content\r
-                       //There can be 0-1 simple content cols or 0-* elements\r
-                       atts = new System.Collections.ArrayList ();\r
-                       elements = new System.Collections.ArrayList ();\r
-                       simple = null;\r
-\r
-                       //Sort out the columns\r
-                       foreach (DataColumn col in table.Columns) {\r
-                               switch (col.ColumnMapping) {\r
-                                       case MappingType.Attribute:\r
-                                               atts.Add (col);\r
-                                               break;\r
-                                       case MappingType.Element:\r
-                                               elements.Add (col);\r
-                                               break;\r
-                                       case MappingType.SimpleContent:\r
-                                               if (simple != null) {\r
-                                                       throw new System.InvalidOperationException ("There may only be one simple content element");\r
-                                               }\r
-                                               simple = col;\r
-                                               break;\r
-                                       default:\r
-                                               //ignore Hidden elements\r
-                                               break;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               internal static void WriteDiffGramElement (XmlWriter writer)\r
-               {\r
-                       WriteStartElement (writer, XmlWriteMode.DiffGram, XmlConstants.DiffgrNamespace, XmlConstants.DiffgrPrefix, "diffgram");\r
-                       WriteAttributeString (writer, XmlWriteMode.DiffGram, null, "xmlns", XmlConstants.MsdataPrefix, XmlConstants.MsdataNamespace);\r
-               }\r
-\r
-               private void SetRowsID ()\r
-               {\r
-                       foreach (DataTable table in Tables)\r
-                               table.SetRowsID ();\r
-               }\r
-\r
-               #endregion //Private Xml Serialisation\r
-       }\r
-\r
-       [XmlSchemaProvider ("GetDataSetSchema")]\r
-       [XmlRoot ("DataSet")]\r
-       partial class DataSet : ISupportInitializeNotification {\r
-               private bool dataSetInitialized = true;\r
-               public event EventHandler Initialized;\r
-\r
-               protected DataSet (SerializationInfo info, StreamingContext context, bool ConstructSchema)\r
-                       : this ()\r
-               {\r
-                       if (DetermineSchemaSerializationMode (info, context) == SchemaSerializationMode.ExcludeSchema) {\r
-                               InitializeDerivedDataSet ();\r
-                       }\r
-                       \r
-                       if (IsBinarySerialized (info, context)) {\r
-                               BinaryDeserialize (info);\r
-                               return;\r
-                       }\r
-                       \r
-                       if (ConstructSchema) {\r
-                               string s = info.GetValue ("XmlSchema", typeof (String)) as String;\r
-                               XmlTextReader reader = new XmlTextReader (new StringReader (s));\r
-                               ReadXmlSchema (reader);\r
-                               reader.Close ();\r
-                               \r
-                               GetSerializationData (info, context);\r
-                       }\r
-               }\r
-\r
-               SerializationFormat remotingFormat = SerializationFormat.Xml;\r
-               [DefaultValue (SerializationFormat.Xml)]\r
-               public SerializationFormat RemotingFormat {\r
-                       get { return remotingFormat; }\r
-                       set { remotingFormat = value; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               public bool IsInitialized {\r
-                       get { return dataSetInitialized; }\r
-               }\r
-\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               [Browsable (false)]\r
-               public virtual SchemaSerializationMode SchemaSerializationMode {\r
-                       get { return SchemaSerializationMode.IncludeSchema; }\r
-                       set {\r
-                               if (value != SchemaSerializationMode.IncludeSchema)\r
-                                       throw new InvalidOperationException (\r
-                                                       "Only IncludeSchema Mode can be set for Untyped DataSet");\r
-                       }\r
-               }\r
-\r
-               public DataTableReader CreateDataReader (params DataTable[] dataTables)\r
-               {\r
-                       return new DataTableReader (dataTables);\r
-               }\r
-\r
-               public DataTableReader CreateDataReader ()\r
-               {\r
-                       return new DataTableReader ((DataTable[])Tables.ToArray (typeof (DataTable)));\r
-               }\r
-\r
-               public static XmlSchemaComplexType GetDataSetSchema (XmlSchemaSet schemaSet)\r
-               {\r
-                       return new XmlSchemaComplexType ();\r
-               }\r
-\r
-               public void Load (IDataReader reader, LoadOption loadOption, params DataTable[] tables)\r
-               {\r
-                       if (reader == null)\r
-                               throw new ArgumentNullException ("Value cannot be null. Parameter name: reader");\r
-\r
-                       foreach (DataTable dt in tables) {\r
-                               if (dt.DataSet == null || dt.DataSet != this)\r
-                                       throw new ArgumentException ("Table " + dt.TableName + " does not belong to this DataSet.");\r
-                               dt.Load (reader, loadOption);\r
-                               reader.NextResult ();\r
-                       }\r
-               }\r
-\r
-               public void Load (IDataReader reader, LoadOption loadOption, params string[] tables)\r
-               {\r
-                       if (reader == null)\r
-                               throw new ArgumentNullException ("Value cannot be null. Parameter name: reader");\r
-\r
-                       foreach (string tableName in tables) {\r
-                               DataTable dt = Tables [tableName];\r
-\r
-                               if (dt == null) {\r
-                                       dt = new DataTable (tableName);\r
-                                       Tables.Add (dt);\r
-                               }\r
-                               dt.Load (reader, loadOption);\r
-                               reader.NextResult ();\r
-                       }\r
-               }\r
-\r
-               public virtual void Load (IDataReader reader, LoadOption loadOption,\r
-                                         FillErrorEventHandler errorHandler, params DataTable[] tables)\r
-               {\r
-                       if (reader == null)\r
-                               throw new ArgumentNullException ("Value cannot be null. Parameter name: reader");\r
-\r
-                       foreach (DataTable dt in tables) {\r
-                               if (dt.DataSet == null || dt.DataSet != this)\r
-                                       throw new ArgumentException ("Table " + dt.TableName + " does not belong to this DataSet.");\r
-                               dt.Load (reader, loadOption, errorHandler);\r
-                               reader.NextResult ();\r
-                       }\r
-               }\r
-\r
-               void BinarySerialize (SerializationInfo si)\r
-               {\r
-                       Version vr = new Version(2, 0);\r
-                       si.AddValue ("DataSet.RemotingVersion", vr, typeof (Version));\r
-                       si.AddValue ("DataSet.RemotingFormat", RemotingFormat, typeof (SerializationFormat));\r
-                       si.AddValue ("DataSet.DataSetName", DataSetName);\r
-                       si.AddValue ("DataSet.Namespace", Namespace);\r
-                       si.AddValue ("DataSet.Prefix", Prefix);\r
-                       si.AddValue ("DataSet.CaseSensitive", CaseSensitive);\r
-                       si.AddValue ("DataSet.LocaleLCID", Locale.LCID);\r
-                       si.AddValue ("DataSet.EnforceConstraints", EnforceConstraints);\r
-                       si.AddValue ("DataSet.ExtendedProperties", properties, typeof (PropertyCollection));\r
-\r
-                       Tables.BinarySerialize_Schema (si);\r
-                       Tables.BinarySerialize_Data (si);\r
-\r
-                       Relations.BinarySerialize (si);\r
-               }\r
-\r
-               void BinaryDeserialize (SerializationInfo info)\r
-               {\r
-                       ArrayList arrayList = null;\r
-\r
-                       DataSetName = info.GetString ("DataSet.DataSetName");\r
-                       Namespace = info.GetString ("DataSet.Namespace");\r
-                       CaseSensitive = info.GetBoolean ("DataSet.CaseSensitive");\r
-                       Locale = new CultureInfo (info.GetInt32 ("DataSet.LocaleLCID"));\r
-                       EnforceConstraints = info.GetBoolean ("DataSet.EnforceConstraints");\r
-                       Prefix = info.GetString ("DataSet.Prefix");\r
-                       /*\r
-                         FIXME: Private variable available in SerializationInfo\r
-                         this.RemotingVersion = (System.Version) info.GetValue("DataSet.RemotingVersion",\r
-                         typeof(System.Version));\r
-                       */\r
-                       properties = (PropertyCollection) info.GetValue ("DataSet.ExtendedProperties",\r
-                                                                        typeof (PropertyCollection));\r
-                       int tableCount = info.GetInt32 ("DataSet.Tables.Count");\r
-\r
-                       Byte [] bytes;\r
-                       DataTable dt = null;\r
-                       for (int i = 0; i < tableCount; i++) {\r
-                               bytes = (Byte []) info.GetValue ("DataSet.Tables_" + i,\r
-                                                                typeof (Byte[]));\r
-                               MemoryStream ms = new MemoryStream (bytes);\r
-                               BinaryFormatter bf = new BinaryFormatter ();\r
-                               dt = (DataTable) bf.Deserialize (ms);\r
-                               ms.Close ();\r
-                               for (int j = 0; j < dt.Columns.Count; j++) {\r
-                                       dt.Columns[j].Expression = info.GetString ("DataTable_" + i +\r
-                                                                                  ".DataColumn_" + j +\r
-                                                                                  ".Expression");\r
-                               }\r
-                               /*\r
-                                 Not using\r
-                                 int rowsCount = info.GetInt32 ("DataTable_" + i + ".Rows.Count");\r
-                                 int recordsCount = info.GetInt32 ("DataTable_" + i + ".Records.Count");\r
-                               */\r
-                               ArrayList nullBits = (ArrayList) info.GetValue ("DataTable_" + i + ".NullBits",\r
-                                                                               typeof (ArrayList));\r
-                               arrayList = (ArrayList) info.GetValue ("DataTable_" + i + ".Records",\r
-                                                                      typeof (ArrayList));\r
-                               BitArray rowStateBitArray = (BitArray) info.GetValue ("DataTable_" + i + ".RowStates",\r
-                                                                                     typeof (BitArray));\r
-                               dt.DeserializeRecords (arrayList, nullBits, rowStateBitArray);\r
-                               Tables.Add (dt);\r
-                       }\r
-                       for (int i = 0; i < tableCount; i++) {\r
-                               dt = Tables [i];\r
-                               dt.dataSet = this;\r
-                               arrayList = (ArrayList) info.GetValue ("DataTable_" + i + ".Constraints",\r
-                                                                      typeof (ArrayList));\r
-                               if (dt.Constraints == null)\r
-                                       dt.Constraints = new ConstraintCollection (dt);\r
-                               dt.DeserializeConstraints (arrayList);\r
-                       }\r
-                       arrayList = (ArrayList) info.GetValue ("DataSet.Relations",\r
-                                                              typeof (ArrayList));\r
-                       bool bParentColumn = true;\r
-                       for (int l = 0; l < arrayList.Count; l++) {\r
-                               ArrayList tmpArrayList = (ArrayList) arrayList[l];\r
-                               ArrayList childColumns = new ArrayList ();\r
-                               ArrayList parentColumns = new ArrayList ();\r
-                               for (int k = 0; k < tmpArrayList.Count; k++) {\r
-                                       if (tmpArrayList[k] != null && typeof (int) == tmpArrayList[k].GetType().GetElementType()) {\r
-                                               Array dataColumnArray = (Array)tmpArrayList[k];\r
-                                               if (bParentColumn) {\r
-                                                       parentColumns.Add (Tables [(int) dataColumnArray.GetValue (0)].\r
-                                                                          Columns [(int) dataColumnArray.GetValue (1)]);\r
-                                                       bParentColumn = false;\r
-                                               }\r
-                                               else {\r
-                                                       childColumns.Add (Tables [(int) dataColumnArray.GetValue (0)].\r
-                                                                         Columns [(int) dataColumnArray.GetValue (1)]);\r
-                                                       bParentColumn = true;\r
-                                               }\r
-                                       }\r
-                               }\r
-                               Relations.Add ((string) tmpArrayList [0],\r
-                                              (DataColumn []) parentColumns.ToArray (typeof (DataColumn)),\r
-                                              (DataColumn []) childColumns.ToArray (typeof (DataColumn)),\r
-                                              false);\r
-                       }\r
-               }\r
-\r
-               private void OnDataSetInitialized (EventArgs e)\r
-               {\r
-                       if (null != Initialized)\r
-                               Initialized (this, e);\r
-               }\r
-\r
-               private void DataSetInitialized ()\r
-               {\r
-                       EventArgs e = new EventArgs ();\r
-                       OnDataSetInitialized (e);\r
-               }\r
-\r
-               protected virtual void InitializeDerivedDataSet ()\r
-               {\r
-               }\r
-\r
-               protected SchemaSerializationMode DetermineSchemaSerializationMode (XmlReader reader)\r
-               {\r
-                       return SchemaSerializationMode.IncludeSchema;\r
-               }\r
-\r
-               protected SchemaSerializationMode DetermineSchemaSerializationMode (SerializationInfo info, StreamingContext context)\r
-               {\r
-                       SerializationInfoEnumerator e = info.GetEnumerator ();\r
-                       while (e.MoveNext ()) {\r
-                               if (e.Name == "SchemaSerializationMode.DataSet") {\r
-                                       return (SchemaSerializationMode) e.Value;\r
-                               }\r
-                       }\r
-                       \r
-                       return SchemaSerializationMode.IncludeSchema;\r
-               }\r
-\r
-               protected bool IsBinarySerialized (SerializationInfo info, StreamingContext context)\r
-               {\r
-                       SerializationInfoEnumerator e = info.GetEnumerator ();\r
-                       while (e.MoveNext ()) {\r
-                               if (e.ObjectType == typeof (System.Data.SerializationFormat))\r
-                                       return true;\r
-                       }\r
-                       return false;\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataSetDateTime.cs b/mcs/class/System.Data/System.Data/DataSetDateTime.cs
deleted file mode 100644 (file)
index 7e33554..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-// System.Data.DataColumnChangeEventHandler.cs
-//
-// Author:
-//   Senganal T <tsenganal@novell.com>
-//
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) Authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       public enum DataSetDateTime 
-       {
-               Local = 1,
-               Unspecified = 2,
-               UnspecifiedLocal = 3,
-               Utc = 4
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataSysDescriptionAttribute.cs b/mcs/class/System.Data/System.Data/DataSysDescriptionAttribute.cs
deleted file mode 100644 (file)
index f3a3c15..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// 
-// System.Data/DataSysDescriptionAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data {
-       [Obsolete ("DataSysDescriptionAttribute has been deprecated")]
-       [AttributeUsage (AttributeTargets.All)]
-       public class DataSysDescriptionAttribute : DescriptionAttribute
-       {
-               #region Fields
-
-               string description;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               [Obsolete ("DataSysDescriptionAttribute has been deprecated")]
-               public DataSysDescriptionAttribute (string description)
-                       : base (description)
-               {
-                       this.description = description; 
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override string Description {
-                       get { return description; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataTable.cs b/mcs/class/System.Data/System.Data/DataTable.cs
deleted file mode 100644 (file)
index ca2d999..0000000
+++ /dev/null
@@ -1,2942 +0,0 @@
-//\r
-// System.Data.DataTable.cs\r
-//\r
-// Author:\r
-//   Franklin Wise <gracenote@earthlink.net>\r
-//   Christopher Podurgiel (cpodurgiel@msn.com)\r
-//   Daniel Morgan <danmorg@sc.rr.com>\r
-//   Rodrigo Moya <rodrigo@ximian.com>\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//   Ville Palo <vi64pa@koti.soon.fi>\r
-//   Sureshkumar T <tsureshkumar@novell.com>\r
-//   Konstantin Triger <kostat@mainsoft.com>\r
-//\r
-// (C) Chris Podurgiel\r
-// (C) Ximian, Inc 2002\r
-// Copyright (C) Tim Coleman, 2002-2003\r
-// Copyright (C) Daniel Morgan, 2002-2003\r
-//\r
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-//\r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-//\r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.Data.Common;\r
-using System.Collections;\r
-using System.Collections.Generic;\r
-using System.ComponentModel;\r
-using System.Globalization;\r
-using System.IO;\r
-using System.Runtime.Serialization;\r
-using System.Xml;\r
-using System.Xml.Schema;\r
-using System.Xml.Serialization;\r
-using System.Text.RegularExpressions;\r
-using Mono.Data.SqlExpressions;\r
-\r
-namespace System.Data {\r
-       //[Designer]\r
-       [ToolboxItem (false)]\r
-       [DefaultEvent ("RowChanging")]\r
-       [DefaultProperty ("TableName")]\r
-       [DesignTimeVisible (false)]\r
-       [EditorAttribute ("Microsoft.VSDesigner.Data.Design.DataTableEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]\r
-       [Serializable]\r
-       public partial class DataTable : MarshalByValueComponent, IListSource, ISupportInitialize, ISerializable {\r
-               #region Fields\r
-\r
-               internal DataSet dataSet;\r
-\r
-               private bool _caseSensitive;\r
-               private DataColumnCollection _columnCollection;\r
-               private ConstraintCollection _constraintCollection;\r
-               // never access it. Use DefaultView.\r
-               private DataView _defaultView = null;\r
-\r
-               private string _displayExpression;\r
-               private PropertyCollection _extendedProperties;\r
-               private CultureInfo _locale;\r
-               private int _minimumCapacity;\r
-               private string _nameSpace;\r
-               private DataRelationCollection _childRelations;\r
-               private DataRelationCollection _parentRelations;\r
-               private string _prefix;\r
-               private UniqueConstraint _primaryKeyConstraint;\r
-               private DataRowCollection _rows;\r
-               private ISite _site;\r
-               private string _tableName;\r
-               internal bool _duringDataLoad;\r
-               internal bool _nullConstraintViolationDuringDataLoad;\r
-               private bool dataSetPrevEnforceConstraints;\r
-               private bool enforceConstraints = true;\r
-               private DataRowBuilder _rowBuilder;\r
-               private ArrayList _indexes;\r
-               private RecordCache _recordCache;\r
-               private int _defaultValuesRowIndex = -1;\r
-               protected internal bool fInitInProgress;\r
-\r
-               // If CaseSensitive property is changed once it does not anymore follow owner DataSet's\r
-               // CaseSensitive property. So when you lost you virginity it's gone for ever\r
-               private bool _virginCaseSensitive = true;\r
-\r
-               private PropertyDescriptorCollection _propertyDescriptorsCache;\r
-               static DataColumn[] _emptyColumnArray = new DataColumn[0];\r
-\r
-               // Regex to parse the Sort string.\r
-               static Regex SortRegex = new Regex ( @"^((\[(?<ColName>.+)\])|(?<ColName>\S+))([ ]+(?<Order>ASC|DESC))?$",\r
-                                                       RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);\r
-\r
-\r
-               DataColumn [] _latestPrimaryKeyCols;\r
-               #endregion //Fields\r
-\r
-               /// <summary>\r
-               /// Initializes a new instance of the DataTable class with no arguments.\r
-               /// </summary>\r
-               public DataTable ()\r
-               {\r
-                       dataSet = null;\r
-                       _columnCollection = new DataColumnCollection(this);\r
-                       _constraintCollection = new ConstraintCollection(this);\r
-                       _extendedProperties = new PropertyCollection();\r
-                       _tableName = "";\r
-                       _nameSpace = null;\r
-                       _caseSensitive = false;         //default value\r
-                       _displayExpression = null;\r
-                       _primaryKeyConstraint = null;\r
-                       _site = null;\r
-                       _rows = new DataRowCollection (this);\r
-                       _indexes = new ArrayList();\r
-                       _recordCache = new RecordCache(this);\r
-\r
-                       //LAMESPEC: spec says 25 impl does 50\r
-                       _minimumCapacity = 50;\r
-\r
-                       _childRelations = new DataRelationCollection.DataTableRelationCollection (this);\r
-                       _parentRelations = new DataRelationCollection.DataTableRelationCollection (this);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Intitalizes a new instance of the DataTable class with the specified table name.\r
-               /// </summary>\r
-               public DataTable (string tableName)\r
-                       : this ()\r
-               {\r
-                       _tableName = tableName;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Initializes a new instance of the DataTable class with the SerializationInfo and the StreamingContext.\r
-               /// </summary>\r
-               protected DataTable (SerializationInfo info, StreamingContext context)\r
-                       : this ()\r
-               {\r
-                       SerializationInfoEnumerator e = info.GetEnumerator ();\r
-                       SerializationFormat serializationFormat = SerializationFormat.Xml;\r
-\r
-                       while (e.MoveNext()) {\r
-                               if (e.ObjectType == typeof(System.Data.SerializationFormat)) {\r
-                                       serializationFormat = (SerializationFormat) e.Value;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       if (serializationFormat == SerializationFormat.Xml) {\r
-                               string schema = info.GetString ("XmlSchema");\r
-                               string data = info.GetString ("XmlDiffGram");\r
-\r
-                               DataSet ds = new DataSet ();\r
-                               ds.ReadXmlSchema (new StringReader (schema));\r
-                               ds.Tables [0].CopyProperties (this);\r
-                               ds = new DataSet ();\r
-                               ds.Tables.Add (this);\r
-                               ds.ReadXml (new StringReader (data), XmlReadMode.DiffGram);\r
-                               ds.Tables.Remove (this);\r
-                               /* keeping for a while. With the change above, we shouldn't have to consider\r
-                                * DataTable mode in schema inference/read.\r
-                                XmlSchemaMapper mapper = new XmlSchemaMapper (this);\r
-                                XmlTextReader xtr = new XmlTextReader(new StringReader (schema));\r
-                                mapper.Read (xtr);\r
-\r
-                                XmlDiffLoader loader = new XmlDiffLoader (this);\r
-                                xtr = new XmlTextReader(new StringReader (data));\r
-                                loader.Load (xtr);\r
-                               */\r
-                       } else /*if (Tables.RemotingFormat == SerializationFormat.Binary)*/ {\r
-                               BinaryDeserializeTable (info);\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Indicates whether string comparisons within the table are case-sensitive.\r
-               /// </summary>\r
-               public bool CaseSensitive {\r
-                       get {\r
-                               if (_virginCaseSensitive && dataSet != null)\r
-                                       return dataSet.CaseSensitive;\r
-                               else\r
-                                       return _caseSensitive;\r
-                               }\r
-                       set {\r
-                               if (_childRelations.Count > 0 || _parentRelations.Count > 0) {\r
-                                       throw new ArgumentException ("Cannot change CaseSensitive or Locale property. This change would lead to at least one DataRelation or Constraint to have different Locale or CaseSensitive settings between its related tables.");\r
-                               }\r
-                               _virginCaseSensitive = false;\r
-                               _caseSensitive = value;\r
-                               ResetCaseSensitiveIndexes();\r
-                       }\r
-               }\r
-\r
-               internal ArrayList Indexes {\r
-                       get { return _indexes; }\r
-               }\r
-\r
-               internal void ChangedDataColumn (DataRow dr, DataColumn dc, object pv)\r
-               {\r
-                       DataColumnChangeEventArgs e = new DataColumnChangeEventArgs (dr, dc, pv);\r
-                       OnColumnChanged (e);\r
-               }\r
-\r
-               internal void ChangingDataColumn (DataRow dr, DataColumn dc, object pv)\r
-               {\r
-                       DataColumnChangeEventArgs e = new DataColumnChangeEventArgs (dr, dc, pv);\r
-                       OnColumnChanging (e);\r
-               }\r
-\r
-               internal void DeletedDataRow (DataRow dr, DataRowAction action)\r
-               {\r
-                       DataRowChangeEventArgs e = new DataRowChangeEventArgs (dr, action);\r
-                       OnRowDeleted (e);\r
-               }\r
-\r
-               internal void DeletingDataRow (DataRow dr, DataRowAction action)\r
-               {\r
-                       DataRowChangeEventArgs e = new DataRowChangeEventArgs (dr, action);\r
-                       OnRowDeleting (e);\r
-               }\r
-\r
-               internal void ChangedDataRow (DataRow dr, DataRowAction action)\r
-               {\r
-                       DataRowChangeEventArgs e = new DataRowChangeEventArgs (dr, action);\r
-                       OnRowChanged (e);\r
-               }\r
-\r
-               internal void ChangingDataRow (DataRow dr, DataRowAction action)\r
-               {\r
-                       DataRowChangeEventArgs e = new DataRowChangeEventArgs (dr, action);\r
-                       OnRowChanging (e);\r
-               }\r
-               \r
-               /// <summary>\r
-               /// Gets the collection of child relations for this DataTable.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public DataRelationCollection ChildRelations {\r
-                       get { return _childRelations; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the collection of columns that belong to this table.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]\r
-               public DataColumnCollection Columns {\r
-                       get { return _columnCollection; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the collection of constraints maintained by this table.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]\r
-               public ConstraintCollection Constraints {\r
-                       get { return _constraintCollection; }\r
-                       internal set { _constraintCollection = value; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the DataSet that this table belongs to.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public DataSet DataSet {\r
-                       get { return dataSet; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets a customized view of the table which may\r
-               /// include a filtered view, or a cursor position.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               public DataView DefaultView {\r
-                       get {\r
-                               if (_defaultView == null) {\r
-                                       lock(this){\r
-                                               if (_defaultView == null){\r
-                                                       if (dataSet != null)\r
-                                                               _defaultView = dataSet.DefaultViewManager.CreateDataView(this);\r
-                                                       else\r
-                                                               _defaultView = new DataView(this);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               return _defaultView;\r
-                       }\r
-               }\r
-\r
-\r
-               /// <summary>\r
-               /// Gets or sets the expression that will return\r
-               /// a value used to represent this table in the user interface.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string DisplayExpression {\r
-                       get { return _displayExpression == null ? "" : _displayExpression; }\r
-                       set { _displayExpression = value; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the collection of customized user information.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               [DataCategory ("Data")]\r
-               public PropertyCollection ExtendedProperties {\r
-                       get { return _extendedProperties; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets a value indicating whether there are errors in\r
-               /// any of the_rows in any of the tables of the DataSet to\r
-               /// which the table belongs.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               public bool HasErrors {\r
-                       get {\r
-                               // we can not use the _hasError flag because we do not know when to turn it off!\r
-                               for (int i = 0; i < _rows.Count; i++) {\r
-                                       if (_rows[i].HasErrors)\r
-                                               return true;\r
-                               }\r
-                               return false;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets the locale information used to\r
-               /// compare strings within the table.\r
-               /// </summary>\r
-               public CultureInfo Locale {\r
-                       get {\r
-                               // if the locale is null, we check for the DataSet locale\r
-                               // and if the DataSet is null we return the current culture.\r
-                               // this way if DataSet locale is changed, only if there is no locale for\r
-                               // the DataTable it influece the Locale get;\r
-                               if (_locale != null)\r
-                                       return _locale;\r
-                               if (DataSet != null)\r
-                                       return DataSet.Locale;\r
-                               return CultureInfo.CurrentCulture;\r
-                       }\r
-                       set {\r
-                               if (_childRelations.Count > 0 || _parentRelations.Count > 0) {\r
-                                       throw new ArgumentException ("Cannot change CaseSensitive or Locale property. This change would lead to at least one DataRelation or Constraint to have different Locale or CaseSensitive settings between its related tables.");\r
-                               }\r
-                               if (_locale == null || !_locale.Equals(value))\r
-                                       _locale = value;\r
-                       }\r
-               }\r
-\r
-               internal bool LocaleSpecified {\r
-                       get { return _locale != null; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets the initial starting size for this table.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (50)]\r
-               public int MinimumCapacity {\r
-                       get { return _minimumCapacity; }\r
-                       set { _minimumCapacity = value; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets the namespace for the XML represenation\r
-               /// of the data stored in the DataTable.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public string Namespace {\r
-                       get {\r
-                               if (_nameSpace != null)\r
-                                       return _nameSpace;\r
-                               if (DataSet != null)\r
-                                       return DataSet.Namespace;\r
-                               return String.Empty;\r
-                       }\r
-                       set { _nameSpace = value; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the collection of parent relations for\r
-               /// this DataTable.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public DataRelationCollection ParentRelations {\r
-                       get { return _parentRelations; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets the namespace for the XML represenation\r
-               ///  of the data stored in the DataTable.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string Prefix {\r
-                       get { return _prefix == null ? "" : _prefix; }\r
-                       set {\r
-                               // Prefix cannot contain any special characters other than '_' and ':'\r
-                               for (int i = 0; i < value.Length; i++) {\r
-                                       if (!(Char.IsLetterOrDigit (value [i])) && (value [i] != '_') && (value [i] != ':'))\r
-                                               throw new DataException ("Prefix '" + value + "' is not valid, because it contains special characters.");\r
-                               }\r
-                               _prefix = value;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets an array of columns that function as\r
-               /// primary keys for the data table.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [EditorAttribute ("Microsoft.VSDesigner.Data.Design.PrimaryKeyEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]\r
-               [TypeConverterAttribute ("System.Data.PrimaryKeyTypeConverter, " + Consts.AssemblySystem_Data)]\r
-               public DataColumn[] PrimaryKey {\r
-                       get {\r
-                               if (_primaryKeyConstraint == null)\r
-                                       return new DataColumn[] {};\r
-                               return _primaryKeyConstraint.Columns;\r
-                       }\r
-                       set {\r
-                               if (value == null || value.Length == 0) {\r
-                                       if (_primaryKeyConstraint != null) {\r
-                                               _primaryKeyConstraint.SetIsPrimaryKey (false);\r
-                                               Constraints.Remove(_primaryKeyConstraint);\r
-                                               _primaryKeyConstraint = null;\r
-                                       }\r
-                                       return;\r
-                               }\r
-\r
-                               if (InitInProgress) {\r
-                                       _latestPrimaryKeyCols = value;\r
-                                       return;\r
-                               }\r
-\r
-                               // first check if value is the same as current PK.\r
-                               if (_primaryKeyConstraint != null &&\r
-                                   DataColumn.AreColumnSetsTheSame (value, _primaryKeyConstraint.Columns))\r
-                                       return;\r
-\r
-                               //Does constraint exist for these columns\r
-                               UniqueConstraint uc = UniqueConstraint.GetUniqueConstraintForColumnSet (this.Constraints, (DataColumn[]) value);\r
-\r
-                               //if constraint doesn't exist for columns\r
-                               //create new unique primary key constraint\r
-                               if (null == uc) {\r
-                                       foreach (DataColumn Col in (DataColumn []) value) {\r
-                                               if (Col.Table == null)\r
-                                                       break;\r
-\r
-                                               if (Columns.IndexOf (Col) < 0)\r
-                                                       throw new ArgumentException ("PrimaryKey columns do not belong to this table.");\r
-                                       }\r
-                                       // create constraint with primary key indication set to false\r
-                                       // to avoid recursion\r
-                                       uc = new UniqueConstraint ((DataColumn []) value, false);\r
-                                       Constraints.Add (uc);\r
-                               }\r
-\r
-                               //Remove the existing primary key\r
-                               if (_primaryKeyConstraint != null) {\r
-                                       _primaryKeyConstraint.SetIsPrimaryKey (false);\r
-                                       Constraints.Remove (_primaryKeyConstraint);\r
-                                       _primaryKeyConstraint = null;\r
-                               }\r
-\r
-                               //set the constraint as the new primary key\r
-                               UniqueConstraint.SetAsPrimaryKey (Constraints, uc);\r
-                               _primaryKeyConstraint = uc;\r
-\r
-                               for (int j = 0; j < uc.Columns.Length; ++j)\r
-                                       uc.Columns [j].AllowDBNull = false;\r
-                       }\r
-               }\r
-\r
-               internal UniqueConstraint PrimaryKeyConstraint {\r
-                       get { return _primaryKeyConstraint; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the collection of_rows that belong to this table.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               public DataRowCollection Rows {\r
-                       get { return _rows; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets an System.ComponentModel.ISite\r
-               /// for the DataTable.\r
-               /// </summary>\r
-               [Browsable (false)]\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
-               public override ISite Site {\r
-                       get { return _site; }\r
-                       set { _site = value; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets or sets the name of the the DataTable.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               public string TableName {\r
-                       get { return _tableName == null ? "" : _tableName; }\r
-                       set { _tableName = value; }\r
-               }\r
-\r
-               bool IListSource.ContainsListCollection {\r
-                       // the collection is a DataView\r
-                       get { return false; }\r
-               }\r
-\r
-               internal RecordCache RecordCache {\r
-                       get { return _recordCache; }\r
-               }\r
-\r
-               private DataRowBuilder RowBuilder {\r
-                       get {\r
-                               // initiate only one row builder.\r
-                               if (_rowBuilder == null)\r
-                                       _rowBuilder = new DataRowBuilder (this, -1, 0);\r
-                               else\r
-                                       // new row get id -1.\r
-                                       _rowBuilder._rowId = -1;\r
-\r
-                               return _rowBuilder;\r
-                       }\r
-               }\r
-\r
-               internal bool EnforceConstraints {\r
-                       get { return enforceConstraints; }\r
-                       set {\r
-                               if (value == enforceConstraints)\r
-                                       return;\r
-\r
-                               if (value) {\r
-                                       // reset indexes since they may be outdated\r
-                                       ResetIndexes();\r
-\r
-                                       // assert all constraints\r
-                                       foreach (Constraint constraint in Constraints)\r
-                                               constraint.AssertConstraint ();\r
-\r
-                                       AssertNotNullConstraints ();\r
-\r
-                                       if (HasErrors)\r
-                                               Constraint.ThrowConstraintException ();\r
-                               }\r
-                               enforceConstraints = value;\r
-                       }\r
-               }\r
-\r
-               internal void AssertNotNullConstraints ()\r
-               {\r
-                       if (_duringDataLoad && !_nullConstraintViolationDuringDataLoad)\r
-                               return;\r
-\r
-                       bool seen = false;\r
-                       for (int i = 0; i < Columns.Count; i++) {\r
-                               DataColumn column = Columns [i];\r
-                               if (column.AllowDBNull)\r
-                                       continue;\r
-                               for (int j = 0; j < Rows.Count; j++) {\r
-                                       if (Rows [j].HasVersion (DataRowVersion.Default) && Rows[j].IsNull (column)) {\r
-                                               seen = true;\r
-                                               string errMsg = String.Format ("Column '{0}' does not allow DBNull.Value.",\r
-                                                                              column.ColumnName);\r
-                                               Rows [j].SetColumnError (i, errMsg);\r
-                                               Rows [j].RowError = errMsg;\r
-                                       }\r
-                               }\r
-                       }\r
-                       _nullConstraintViolationDuringDataLoad = seen;\r
-               }\r
-\r
-               internal bool RowsExist (DataColumn [] columns, DataColumn [] relatedColumns, DataRow row)\r
-               {\r
-                       int curIndex = row.IndexFromVersion (DataRowVersion.Default);\r
-                       int tmpRecord = RecordCache.NewRecord ();\r
-\r
-                       try {\r
-                               for (int i = 0; i < relatedColumns.Length; i++)\r
-                                       // according to MSDN: the DataType value for both columns must be identical.\r
-                                       columns [i].DataContainer.CopyValue (relatedColumns [i].DataContainer, curIndex, tmpRecord);\r
-                               return RowsExist (columns, tmpRecord);\r
-                       } finally {\r
-                               RecordCache.DisposeRecord (tmpRecord);\r
-                       }\r
-               }\r
-\r
-               bool RowsExist (DataColumn [] columns, int index)\r
-               {\r
-                       Index indx = this.FindIndex (columns);\r
-\r
-                       if (indx != null)\r
-                               return indx.Find (index) != -1;\r
-\r
-                       // we have to perform full-table scan\r
-                       // check that there is a parent for this row.\r
-                       foreach (DataRow thisRow in this.Rows) {\r
-                               if (thisRow.RowState == DataRowState.Deleted)\r
-                                       continue;\r
-                               // check if the values in the columns are equal\r
-                               int thisIndex = thisRow.IndexFromVersion (\r
-                                       thisRow.RowState == DataRowState.Modified ? DataRowVersion.Original : DataRowVersion.Current);\r
-                               bool match = true;\r
-                               foreach (DataColumn column in columns) {\r
-                                       if (column.DataContainer.CompareValues (thisIndex, index) != 0) {\r
-                                               match = false;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               if (match)\r
-                                       return true;\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Commits all the changes made to this table since the\r
-               /// last time AcceptChanges was called.\r
-               /// </summary>\r
-               public void AcceptChanges ()\r
-               {\r
-                       //FIXME: Do we need to validate anything here or\r
-                       //try to catch any errors to deal with them?\r
-\r
-                       // we do not use foreach because if one of the rows is in Delete state\r
-                       // it will be romeved from Rows and we get an exception.\r
-                       DataRow myRow;\r
-                       for (int i = 0; i < Rows.Count; ) {\r
-                               myRow = Rows [i];\r
-                               myRow.AcceptChanges ();\r
-\r
-                               // if the row state is Detached it meens that it was removed from row list (Rows)\r
-                               // so we should not increase 'i'.\r
-                               if (myRow.RowState != DataRowState.Detached)\r
-                                       i++;\r
-                       }\r
-                       _rows.OnListChanged (this, new ListChangedEventArgs (ListChangedType.Reset, -1, -1));\r
-               }\r
-\r
-               /// <summary>\r
-               /// Begins the initialization of a DataTable that is used\r
-               /// on a form or used by another component. The initialization\r
-               /// occurs at runtime.\r
-               /// </summary>\r
-               public\r
-               virtual\r
-               void BeginInit ()\r
-               {\r
-                       InitInProgress = true;\r
-                       tableInitialized = false;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Turns off notifications, index maintenance, and\r
-               /// constraints while loading data.\r
-               /// </summary>\r
-               public void BeginLoadData ()\r
-               {\r
-                       if (this._duringDataLoad)\r
-                               return;\r
-\r
-                       //duringDataLoad is important to EndLoadData and\r
-                       //for not throwing unexpected exceptions.\r
-                       this._duringDataLoad = true;\r
-                       this._nullConstraintViolationDuringDataLoad = false;\r
-\r
-                       if (this.dataSet != null) {\r
-                               //Saving old Enforce constraints state for later\r
-                               //use in the EndLoadData.\r
-                               this.dataSetPrevEnforceConstraints = this.dataSet.EnforceConstraints;\r
-                               this.dataSet.EnforceConstraints = false;\r
-                       } else {\r
-                               //if table does not belong to any data set use EnforceConstraints of the table\r
-                               this.EnforceConstraints = false;\r
-                       }\r
-                       return;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Clears the DataTable of all data.\r
-               /// </summary>\r
-               public void Clear ()\r
-               {\r
-                       // Foriegn key constraints are checked in _rows.Clear method\r
-                       _rows.Clear ();\r
-               }\r
-\r
-               /// <summary>\r
-               /// Clones the structure of the DataTable, including\r
-               ///  all DataTable schemas and constraints.\r
-               /// </summary>\r
-               public virtual DataTable Clone ()\r
-               {\r
-                        // Use Activator so we can use non-public constructors.\r
-                       DataTable Copy = (DataTable) Activator.CreateInstance (GetType (), true);\r
-                       CopyProperties (Copy);\r
-                       return Copy;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Computes the given expression on the current_rows that\r
-               /// pass the filter criteria.\r
-               /// </summary>\r
-               public object Compute (string expression, string filter)\r
-               {\r
-                       // expression is an aggregate function\r
-                       // filter is an expression used to limit rows\r
-\r
-                       DataRow [] rows = Select (filter);\r
-\r
-                       if (rows == null || rows.Length == 0)\r
-                               return DBNull.Value;\r
-\r
-                       Parser parser = new Parser (rows);\r
-                       IExpression expr = parser.Compile (expression);\r
-                       object obj = expr.Eval (rows [0]);\r
-\r
-                       return obj;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Copies both the structure and data for this DataTable.\r
-               /// </summary>\r
-               public DataTable Copy ()\r
-               {\r
-                       DataTable copy = Clone ();\r
-\r
-                       copy._duringDataLoad = true;\r
-                       foreach (DataRow row in Rows) {\r
-                               DataRow newRow = copy.NewNotInitializedRow ();\r
-                               copy.Rows.AddInternal (newRow);\r
-                               CopyRow (row, newRow);\r
-                       }\r
-                       copy._duringDataLoad = false;\r
-\r
-                       // rebuild copy indexes after loading all rows\r
-                       copy.ResetIndexes ();\r
-                       return copy;\r
-               }\r
-\r
-               internal void CopyRow (DataRow fromRow, DataRow toRow)\r
-               {\r
-                       if (fromRow.HasErrors)\r
-                               fromRow.CopyErrors (toRow);\r
-\r
-                       if (fromRow.HasVersion (DataRowVersion.Original))\r
-                               toRow.Original = toRow.Table.RecordCache.CopyRecord (this, fromRow.Original, -1);\r
-\r
-                       if (fromRow.HasVersion (DataRowVersion.Current)) {\r
-                               if (fromRow.Original != fromRow.Current)\r
-                                       toRow.Current = toRow.Table.RecordCache.CopyRecord (this, fromRow.Current, -1);\r
-                               else\r
-                                       toRow.Current = toRow.Original;\r
-                       }\r
-               }\r
-\r
-               private void CopyProperties (DataTable Copy)\r
-               {\r
-                       Copy.CaseSensitive = CaseSensitive;\r
-                       Copy._virginCaseSensitive = _virginCaseSensitive;\r
-\r
-                       // Copy.ChildRelations\r
-                       // Copy.Constraints\r
-                       // Copy.Container\r
-                       // Copy.DefaultView\r
-                       // Copy.DesignMode\r
-                       Copy.DisplayExpression = DisplayExpression;\r
-                       if (ExtendedProperties.Count > 0) {\r
-                               //  Cannot copy extended properties directly as the property does not have a set accessor\r
-                               Array tgtArray = Array.CreateInstance (typeof (object), ExtendedProperties.Count);\r
-                               ExtendedProperties.Keys.CopyTo (tgtArray, 0);\r
-                               for (int i=0; i < ExtendedProperties.Count; i++)\r
-                                       Copy.ExtendedProperties.Add (tgtArray.GetValue (i), ExtendedProperties[tgtArray.GetValue (i)]);\r
-                       }\r
-                       Copy._locale = _locale;\r
-                       Copy.MinimumCapacity = MinimumCapacity;\r
-                       Copy.Namespace = Namespace;\r
-                       // Copy.ParentRelations\r
-                       Copy.Prefix = Prefix;\r
-                       Copy.Site = Site;\r
-                       Copy.TableName = TableName;\r
-\r
-                       bool isEmpty = Copy.Columns.Count == 0;\r
-\r
-                       // Copy columns\r
-                       foreach (DataColumn column in Columns) {\r
-                               // When cloning a table, the columns may be added in the default constructor.\r
-                               if (isEmpty || !Copy.Columns.Contains (column.ColumnName))\r
-                                       Copy.Columns.Add (column.Clone ());\r
-                       }\r
-                       foreach (DataColumn column in Copy.Columns)\r
-                               column.CompileExpression ();\r
-\r
-                       CopyConstraints (Copy);\r
-                       // add primary key to the copy\r
-                       if (PrimaryKey.Length > 0) {\r
-                               DataColumn[] pColumns = new DataColumn[PrimaryKey.Length];\r
-                               for (int i = 0; i < pColumns.Length; i++)\r
-                                       pColumns[i] = Copy.Columns[PrimaryKey[i].ColumnName];\r
-\r
-                               Copy.PrimaryKey = pColumns;\r
-                       }\r
-               }\r
-\r
-               private void CopyConstraints (DataTable copy)\r
-               {\r
-                       UniqueConstraint origUc;\r
-                       UniqueConstraint copyUc;\r
-                       for (int i = 0; i < this.Constraints.Count; i++) {\r
-                               if (this.Constraints[i] is UniqueConstraint) {\r
-                                       // typed ds can already contain the constraints\r
-                                       if (copy.Constraints.Contains (this.Constraints [i].ConstraintName))\r
-                                               continue;\r
-\r
-                                       origUc = (UniqueConstraint) this.Constraints [i];\r
-                                       DataColumn [] columns = new DataColumn [origUc.Columns.Length];\r
-                                       for (int j = 0; j < columns.Length; j++)\r
-                                               columns[j] = copy.Columns [origUc.Columns [j].ColumnName];\r
-\r
-                                       copyUc = new UniqueConstraint (origUc.ConstraintName, columns, origUc.IsPrimaryKey);\r
-                                       copy.Constraints.Add (copyUc);\r
-                               }\r
-                       }\r
-               }\r
-               /// <summary>\r
-               /// Ends the initialization of a DataTable that is used\r
-               /// on a form or used by another component. The\r
-               /// initialization occurs at runtime.\r
-               /// </summary>\r
-               public\r
-               virtual\r
-               void EndInit ()\r
-               {\r
-                       InitInProgress = false;\r
-                       DataTableInitialized ();\r
-                       FinishInit ();\r
-               }\r
-\r
-               // defined in NET_2_0 profile\r
-               partial void DataTableInitialized ();\r
-\r
-               internal bool InitInProgress {\r
-                       get { return fInitInProgress; }\r
-                       set { fInitInProgress = value; }\r
-               }\r
-\r
-               internal void FinishInit ()\r
-               {\r
-                       UniqueConstraint oldPK = _primaryKeyConstraint;\r
-\r
-                       // Columns shud be added 'before' the constraints\r
-                       Columns.PostAddRange ();\r
-\r
-                       // Add the constraints\r
-                       _constraintCollection.PostAddRange ();\r
-\r
-                       // ms.net behavior : If a PrimaryKey (UniqueConstraint) is added thru AddRange,\r
-                       // then it takes precedence over an direct assignment of PrimaryKey\r
-                       if (_primaryKeyConstraint == oldPK)\r
-                               PrimaryKey = _latestPrimaryKeyCols;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Turns on notifications, index maintenance, and\r
-               /// constraints after loading data.\r
-               /// </summary>\r
-               public void EndLoadData ()\r
-               {\r
-                       if (this._duringDataLoad) {\r
-                               //Getting back to previous EnforceConstraint state\r
-                               if (this.dataSet != null)\r
-                                       this.dataSet.InternalEnforceConstraints (this.dataSetPrevEnforceConstraints, true);\r
-                               else\r
-                                       this.EnforceConstraints = true;\r
-\r
-                               this._duringDataLoad = false;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets a copy of the DataTable that contains all\r
-               ///  changes made to it since it was loaded or\r
-               ///  AcceptChanges was last called.\r
-               /// </summary>\r
-               public DataTable GetChanges ()\r
-               {\r
-                       return GetChanges (DataRowState.Added | DataRowState.Deleted | DataRowState.Modified);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets a copy of the DataTable containing all\r
-               /// changes made to it since it was last loaded, or\r
-               /// since AcceptChanges was called, filtered by DataRowState.\r
-               /// </summary>\r
-               public DataTable GetChanges (DataRowState rowStates)\r
-               {\r
-                       DataTable copyTable = null;\r
-\r
-                       foreach (DataRow row in Rows) {\r
-                               // The spec says relationship constraints may cause Unchanged parent rows to be included but\r
-                               // MS .NET 1.1 does not include Unchanged rows even if their child rows are changed.\r
-                               if (!row.IsRowChanged (rowStates))\r
-                                       continue;\r
-                               if (copyTable == null)\r
-                                       copyTable = Clone ();\r
-                               DataRow newRow = copyTable.NewNotInitializedRow ();\r
-                               // Don't check for ReadOnly, when cloning data to new uninitialized row.\r
-                               row.CopyValuesToRow (newRow, false);\r
-                               newRow.XmlRowID = row.XmlRowID;\r
-                               copyTable.Rows.AddInternal (newRow);\r
-                       }\r
-\r
-                       return copyTable;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets an array of DataRow objects that contain errors.\r
-               /// </summary>\r
-               public DataRow [] GetErrors ()\r
-               {\r
-                       ArrayList errors = new ArrayList();\r
-                       for (int i = 0; i < _rows.Count; i++) {\r
-                               if (_rows[i].HasErrors)\r
-                                       errors.Add (_rows[i]);\r
-                       }\r
-\r
-                       DataRow[] ret = NewRowArray (errors.Count);\r
-                       errors.CopyTo (ret, 0);\r
-                       return ret;\r
-               }\r
-\r
-               /// <summary>\r
-               /// This member is only meant to support Mono's infrastructure\r
-               /// </summary>\r
-               protected virtual DataTable CreateInstance ()\r
-               {\r
-                       return Activator.CreateInstance (this.GetType (), true) as DataTable;\r
-               }\r
-\r
-               /// <summary>\r
-               /// This member is only meant to support Mono's infrastructure\r
-               /// </summary>\r
-               protected virtual Type GetRowType ()\r
-               {\r
-                       return typeof (DataRow);\r
-               }\r
-\r
-               /// <summary>\r
-               /// This member is only meant to support Mono's infrastructure\r
-               ///\r
-               /// Used for Data Binding between System.Web.UI. controls\r
-               /// like a DataGrid\r
-               /// or\r
-               /// System.Windows.Forms controls like a DataGrid\r
-               /// </summary>\r
-               IList IListSource.GetList ()\r
-               {\r
-                       IList list = (IList) DefaultView;\r
-                       return list;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Copies a DataRow into a DataTable, preserving any\r
-               /// property settings, as well as original and current values.\r
-               /// </summary>\r
-               public void ImportRow (DataRow row)\r
-               {\r
-                       if (row.RowState == DataRowState.Detached)\r
-                               return;\r
-\r
-                       DataRow newRow = NewNotInitializedRow ();\r
-\r
-                       int original = -1;\r
-                       if (row.HasVersion (DataRowVersion.Original)) {\r
-                               original = row.IndexFromVersion (DataRowVersion.Original);\r
-                               newRow.Original = RecordCache.NewRecord ();\r
-                               RecordCache.CopyRecord (row.Table, original, newRow.Original);\r
-                       }\r
-\r
-                       if (row.HasVersion (DataRowVersion.Current)) {\r
-                               int current = row.IndexFromVersion (DataRowVersion.Current);\r
-                               if (current == original) {\r
-                                       newRow.Current = newRow.Original;\r
-                               } else {\r
-                                       newRow.Current = RecordCache.NewRecord ();\r
-                                       RecordCache.CopyRecord (row.Table, current, newRow.Current);\r
-                               }\r
-                       }\r
-\r
-                       //Import the row only if RowState is not detached\r
-                       //Validation for Deleted Rows happens during Accept/RejectChanges\r
-                       if (row.RowState != DataRowState.Deleted)\r
-                               newRow.Validate ();\r
-                       else\r
-                               AddRowToIndexes (newRow);\r
-                       Rows.AddInternal(newRow);\r
-\r
-                       if (row.HasErrors)\r
-                               row.CopyErrors (newRow);\r
-               }\r
-\r
-               internal int DefaultValuesRowIndex {\r
-                       get { return _defaultValuesRowIndex; }\r
-               }\r
-\r
-               /// <summary>\r
-               /// This member is only meant to support Mono's infrastructure\r
-               /// </summary>\r
-               public virtual\r
-               void\r
-               GetObjectData (SerializationInfo info, StreamingContext context)\r
-               {\r
-                       if (RemotingFormat == SerializationFormat.Xml) {\r
-                               DataSet dset;\r
-                               if (dataSet != null)\r
-                                       dset = dataSet;\r
-                               else {\r
-                                       dset = new DataSet ("tmpDataSet");\r
-                                       dset.Tables.Add (this);\r
-                               }\r
-\r
-                               StringWriter sw = new StringWriter ();\r
-                               XmlTextWriter tw = new XmlTextWriter (sw);\r
-                               tw.Formatting = Formatting.Indented;\r
-                               dset.WriteIndividualTableContent (tw, this, XmlWriteMode.DiffGram);\r
-                               tw.Close ();\r
-\r
-                               StringWriter sw2 = new StringWriter ();\r
-                               DataTableCollection tables = new DataTableCollection (dset);\r
-                               tables.Add (this);\r
-                               XmlSchemaWriter.WriteXmlSchema (dset, new XmlTextWriter (sw2), tables, null);\r
-                               sw2.Close ();\r
-\r
-                               info.AddValue ("XmlSchema", sw2.ToString(), typeof(string));\r
-                               info.AddValue ("XmlDiffGram", sw.ToString(), typeof(string));\r
-                       } else /*if (RemotingFormat == SerializationFormat.Binary)*/ {\r
-                               BinarySerializeProperty (info);\r
-                               if (dataSet == null) {\r
-                                       for (int i = 0; i < Columns.Count; i++) {\r
-                                               info.AddValue ("DataTable.DataColumn_" + i + ".Expression",\r
-                                                              Columns[i].Expression);\r
-                                       }\r
-                                       BinarySerialize (info, "DataTable_0.");\r
-                               }\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Finds and updates a specific row. If no matching row\r
-               ///  is found, a new row is created using the given values.\r
-               /// </summary>\r
-               public DataRow LoadDataRow (object [] values, bool fAcceptChanges)\r
-               {\r
-                       DataRow row = null;\r
-                       if (PrimaryKey.Length == 0) {\r
-                               row = Rows.Add (values);\r
-                       } else {\r
-                               EnsureDefaultValueRowIndex ();\r
-                               int newRecord = CreateRecord (values);\r
-                               int existingRecord = _primaryKeyConstraint.Index.Find (newRecord);\r
-\r
-                               if (existingRecord < 0) {\r
-                                       row = NewRowFromBuilder (RowBuilder);\r
-                                       row.Proposed = newRecord;\r
-                                       Rows.AddInternal(row);\r
-                                       if (!_duringDataLoad)\r
-                                               AddRowToIndexes (row);\r
-                               } else {\r
-                                       row = RecordCache [existingRecord];\r
-                                       row.BeginEdit ();\r
-                                       row.ImportRecord (newRecord);\r
-                                       row.EndEdit ();\r
-                               }\r
-                       }\r
-\r
-                       if (fAcceptChanges)\r
-                               row.AcceptChanges ();\r
-\r
-                       return row;\r
-               }\r
-\r
-               internal DataRow LoadDataRow (IDataRecord record, int[] mapping, int length, bool fAcceptChanges)\r
-               {\r
-                       DataRow row = null;\r
-                       int tmpRecord = this.RecordCache.NewRecord ();\r
-                       try {\r
-                               RecordCache.ReadIDataRecord (tmpRecord,record,mapping,length);\r
-                               if (PrimaryKey.Length != 0) {\r
-                                       bool hasPrimaryValues = true;\r
-                                       foreach(DataColumn col in PrimaryKey) {\r
-                                               if(!(col.Ordinal < mapping.Length)) {\r
-                                                       hasPrimaryValues = false;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-\r
-                                       if (hasPrimaryValues) {\r
-                                               int existingRecord = _primaryKeyConstraint.Index.Find (tmpRecord);\r
-                                               if (existingRecord != -1)\r
-                                                       row  = RecordCache [existingRecord];\r
-                                       }\r
-                               }\r
-\r
-                               if (row == null) {\r
-                                       row = NewNotInitializedRow ();\r
-                                       row.Proposed = tmpRecord;\r
-                                       Rows.AddInternal (row);\r
-                               } else {\r
-                                       row.BeginEdit ();\r
-                                       row.ImportRecord (tmpRecord);\r
-                                       row.EndEdit ();\r
-                               }\r
-\r
-                               if (fAcceptChanges)\r
-                                       row.AcceptChanges ();\r
-\r
-                       } catch {\r
-                               this.RecordCache.DisposeRecord (tmpRecord);\r
-                               throw;\r
-                       }\r
-                       return row;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Creates a new DataRow with the same schema as the table.\r
-               /// </summary>\r
-               public DataRow NewRow ()\r
-               {\r
-                       EnsureDefaultValueRowIndex();\r
-\r
-                       DataRow newRow = NewRowFromBuilder (RowBuilder);\r
-                       newRow.Proposed = CreateRecord (null);\r
-                       NewRowAdded (newRow);\r
-                       return newRow;\r
-               }\r
-\r
-               // defined in the NET_2_0 profile\r
-               partial void NewRowAdded (DataRow dr);\r
-\r
-               internal int CreateRecord (object [] values)\r
-               {\r
-                       int valCount = values != null ? values.Length : 0;\r
-                       if (valCount > Columns.Count)\r
-                               throw new ArgumentException ("Input array is longer than the number of columns in this table.");\r
-\r
-                       int index = RecordCache.NewRecord ();\r
-\r
-                       try {\r
-                               for (int i = 0; i < valCount; i++) {\r
-                                       object value = values[i];\r
-                                       if (value == null)\r
-                                               Columns [i].SetDefaultValue (index);\r
-                                       else\r
-                                               Columns [i][index] = values [i];\r
-                               }\r
-\r
-                               for(int i = valCount; i < Columns.Count; i++)\r
-                                       Columns [i].SetDefaultValue (index);\r
-\r
-                               return index;\r
-                       } catch {\r
-                               RecordCache.DisposeRecord (index);\r
-                               throw;\r
-                       }\r
-               }\r
-\r
-               private void EnsureDefaultValueRowIndex ()\r
-               {\r
-                       // initialize default values row for the first time\r
-                       if (_defaultValuesRowIndex == -1) {\r
-                               _defaultValuesRowIndex = RecordCache.NewRecord();\r
-                               for (int i = 0; i < Columns.Count; ++i) {\r
-                                       DataColumn column = Columns [i];\r
-                                       column.DataContainer [_defaultValuesRowIndex] = column.DefaultValue;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// This member supports the .NET Framework infrastructure\r
-               ///  and is not intended to be used directly from your code.\r
-               /// </summary>\r
-               DataRow [] empty_rows;\r
-               protected internal DataRow [] NewRowArray (int size)\r
-               {\r
-                       if (size == 0 && empty_rows != null)\r
-                               return empty_rows;\r
-                       Type t = GetRowType ();\r
-                       /* Avoid reflection if possible */\r
-                       DataRow [] rows = t == typeof (DataRow) ? new DataRow [size] : (DataRow []) Array.CreateInstance (t, size);\r
-                       if (size == 0)\r
-                               empty_rows = rows;\r
-                       return rows;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Creates a new row from an existing row.\r
-               /// </summary>\r
-               protected virtual DataRow NewRowFromBuilder (DataRowBuilder builder)\r
-               {\r
-                       return new DataRow (builder);\r
-               }\r
-\r
-               internal DataRow NewNotInitializedRow ()\r
-               {\r
-                       EnsureDefaultValueRowIndex ();\r
-\r
-                       return NewRowFromBuilder (RowBuilder);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Rolls back all changes that have been made to the\r
-               /// table since it was loaded, or the last time AcceptChanges\r
-               ///  was called.\r
-               /// </summary>\r
-               public void RejectChanges ()\r
-               {\r
-                       for (int i = _rows.Count - 1; i >= 0; i--) {\r
-                               DataRow row = _rows [i];\r
-                               if (row.RowState != DataRowState.Unchanged)\r
-                                       _rows [i].RejectChanges ();\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Resets the DataTable to its original state.\r
-               /// </summary>\r
-               public virtual void Reset ()\r
-               {\r
-                       Clear ();\r
-                       while (ParentRelations.Count > 0) {\r
-                               if (dataSet.Relations.Contains (ParentRelations [ParentRelations.Count - 1].RelationName))\r
-                                       dataSet.Relations.Remove (ParentRelations [ParentRelations.Count - 1]);\r
-                       }\r
-\r
-                       while (ChildRelations.Count > 0) {\r
-                               if (dataSet.Relations.Contains (ChildRelations [ChildRelations.Count - 1].RelationName))\r
-                                       dataSet.Relations.Remove (ChildRelations [ChildRelations.Count - 1]);\r
-                       }\r
-                       Constraints.Clear ();\r
-                       Columns.Clear ();\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets an array of all DataRow objects.\r
-               /// </summary>\r
-               public DataRow[] Select ()\r
-               {\r
-                       return Select (String.Empty, String.Empty, DataViewRowState.CurrentRows);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets an array of all DataRow objects that match\r
-               /// the filter criteria in order of primary key (or\r
-               /// lacking one, order of addition.)\r
-               /// </summary>\r
-               public DataRow[] Select (string filterExpression)\r
-               {\r
-                       return Select (filterExpression, String.Empty, DataViewRowState.CurrentRows);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets an array of all DataRow objects that\r
-               /// match the filter criteria, in the the\r
-               /// specified sort order.\r
-               /// </summary>\r
-               public DataRow[] Select (string filterExpression, string sort)\r
-               {\r
-                       return Select (filterExpression, sort, DataViewRowState.CurrentRows);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets an array of all DataRow objects that match\r
-               /// the filter in the order of the sort, that match\r
-               /// the specified state.\r
-               /// </summary>\r
-               public DataRow [] Select (string filterExpression, string sort, DataViewRowState recordStates)\r
-               {\r
-                       if (filterExpression == null)\r
-                               filterExpression = String.Empty;\r
-\r
-                       IExpression filter = null;\r
-                       if (filterExpression != String.Empty) {\r
-                               Parser parser = new Parser ();\r
-                               filter = parser.Compile (filterExpression);\r
-                       }\r
-\r
-                       DataColumn [] columns = _emptyColumnArray;\r
-                       ListSortDirection [] sorts = null;\r
-\r
-                       if (sort != null && !sort.Equals(String.Empty))\r
-                               columns = ParseSortString (this, sort, out sorts, false);\r
-\r
-                       if (Rows.Count == 0)\r
-                               return NewRowArray (0);\r
-\r
-                       //if sort order is not given, sort it in Ascending order of the\r
-                       //columns involved in the filter\r
-                       if (columns.Length == 0 && filter != null) {\r
-                               ArrayList list = new ArrayList ();\r
-                               for (int i = 0; i < Columns.Count; ++i) {\r
-                                       if (!filter.DependsOn (Columns [i]))\r
-                                               continue;\r
-                                       list.Add (Columns [i]);\r
-                               }\r
-                               columns = (DataColumn []) list.ToArray (typeof (DataColumn));\r
-                       }\r
-\r
-                       bool addIndex = true;\r
-                       if (filterExpression != String.Empty)\r
-                               addIndex = false;\r
-                       Index index = GetIndex (columns, sorts, recordStates, filter, false, addIndex);\r
-\r
-                       int [] records = index.GetAll ();\r
-                       DataRow [] dataRows = NewRowArray (index.Size);\r
-                       for (int i = 0; i < dataRows.Length; i++)\r
-                               dataRows [i] = RecordCache [records [i]];\r
-\r
-                       return dataRows;\r
-               }\r
-\r
-               private void AddIndex (Index index)\r
-               {\r
-                       if (_indexes == null)\r
-                               _indexes = new ArrayList();\r
-                       _indexes.Add (index);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Returns index corresponding to columns,sort,row state filter and unique values given.\r
-               /// If such an index not exists, creates a new one.\r
-               /// </summary>\r
-               /// <param name="columns">Columns set of the index to look for.</param>\r
-               /// <param name="sort">Columns sort order of the index to look for.</param>\r
-               /// <param name="rowState">Rpw state filter of the index to look for.</param>\r
-               /// <param name="unique">Uniqueness of the index to look for.</param>\r
-               /// <param name="strict">Indicates whenever the index found should correspond in its uniquness to the value of unique parameter specified.</param>\r
-               /// <param name="reset">Indicates whenever the already existing index should be forced to reset.</param>\r
-               /// <returns></returns>\r
-               internal Index GetIndex (DataColumn[] columns, ListSortDirection[] sort, DataViewRowState rowState, IExpression filter, bool reset)\r
-               {\r
-                       return GetIndex (columns, sort, rowState, filter, reset, true);\r
-               }\r
-\r
-               internal Index GetIndex (DataColumn[] columns, ListSortDirection[] sort,\r
-                                        DataViewRowState rowState, IExpression filter,\r
-                                        bool reset, bool addIndex)\r
-               {\r
-                       Index index = FindIndex(columns, sort, rowState, filter);\r
-                       if (index == null) {\r
-                               index = new Index(new Key (this, columns, sort, rowState, filter));\r
-\r
-                               if (addIndex)\r
-                                       AddIndex (index);\r
-                       } else if (reset) {\r
-                               // reset existing index only if asked for this\r
-                               index.Reset ();\r
-                       }\r
-                       return index;\r
-               }\r
-\r
-               internal Index FindIndex (DataColumn[] columns)\r
-               {\r
-                       return FindIndex (columns, null, DataViewRowState.None, null);\r
-               }\r
-\r
-               internal Index FindIndex (DataColumn[] columns, ListSortDirection[] sort, DataViewRowState rowState, IExpression filter)\r
-               {\r
-                       if (Indexes != null) {\r
-                               foreach (Index index in Indexes) {\r
-                                       if (index.Key.Equals (columns,sort,rowState, filter))\r
-                                               return index;\r
-                               }\r
-                       }\r
-                       return null;\r
-               }\r
-\r
-               internal void ResetIndexes ()\r
-               {\r
-                       foreach(Index index in Indexes)\r
-                               index.Reset ();\r
-               }\r
-\r
-               internal void ResetCaseSensitiveIndexes ()\r
-               {\r
-                       foreach (Index index in Indexes) {\r
-                               bool containsStringcolumns = false;\r
-                               foreach(DataColumn column in index.Key.Columns) {\r
-                                       if (column.DataType == typeof(string)) {\r
-                                               containsStringcolumns = true;\r
-                                               break;\r
-                                       }\r
-                               }\r
-\r
-                               if (!containsStringcolumns && index.Key.HasFilter) {\r
-                                       foreach (DataColumn column in Columns) {\r
-                                               if ((column.DataType == DbTypes.TypeOfString) && (index.Key.DependsOn (column))) {\r
-                                                       containsStringcolumns = true;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               if (containsStringcolumns)\r
-                                       index.Reset ();\r
-                       }\r
-               }\r
-\r
-               internal void DropIndex (Index index)\r
-               {\r
-                       if (index != null && index.RefCount == 0) {\r
-                               _indexes.Remove (index);\r
-                       }\r
-               }\r
-\r
-               internal void DropReferencedIndexes (DataColumn column)\r
-               {\r
-                       if (_indexes != null)\r
-                               for (int i = _indexes.Count - 1; i >= 0; i--) {\r
-                                       Index indx = (Index)_indexes [i];\r
-                                       if (indx.Key.DependsOn (column))\r
-                                               _indexes.Remove (indx);\r
-                               }\r
-               }\r
-\r
-               internal void AddRowToIndexes (DataRow row)\r
-               {\r
-                       if (_indexes != null) {\r
-                               for (int i = 0; i < _indexes.Count; ++i)\r
-                                       ((Index)_indexes [i]).Add (row);\r
-                       }\r
-               }\r
-\r
-               internal void DeleteRowFromIndexes (DataRow row)\r
-               {\r
-                       if (_indexes != null) {\r
-                               foreach (Index indx in _indexes)\r
-                                       indx.Delete (row);\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Gets the TableName and DisplayExpression, if\r
-               /// there is one as a concatenated string.\r
-               /// </summary>\r
-               public override string ToString ()\r
-               {\r
-                       //LAMESPEC: spec says concat the two. impl puts a\r
-                       //plus sign infront of DisplayExpression\r
-                       string retVal = TableName;\r
-                       if(DisplayExpression != null && DisplayExpression != "")\r
-                               retVal += " + " + DisplayExpression;\r
-                       return retVal;\r
-               }\r
-\r
-               #region Events\r
-\r
-               /// <summary>\r
-               /// Raises the ColumnChanged event.\r
-               /// </summary>\r
-               protected virtual void OnColumnChanged (DataColumnChangeEventArgs e)\r
-               {\r
-                       if (null != ColumnChanged)\r
-                               ColumnChanged (this, e);\r
-               }\r
-\r
-               internal void RaiseOnColumnChanged (DataColumnChangeEventArgs e)\r
-               {\r
-                       OnColumnChanged (e);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Raises the ColumnChanging event.\r
-               /// </summary>\r
-               protected virtual void OnColumnChanging (DataColumnChangeEventArgs e)\r
-               {\r
-                       if (null != ColumnChanging)\r
-                               ColumnChanging (this, e);\r
-               }\r
-\r
-               internal void RaiseOnColumnChanging (DataColumnChangeEventArgs e)\r
-               {\r
-                       OnColumnChanging(e);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Raises the PropertyChanging event.\r
-               /// </summary>\r
-               [MonoTODO]\r
-               protected internal virtual void OnPropertyChanging (PropertyChangedEventArgs pcevent)\r
-               {\r
-                       //if (null != PropertyChanging)\r
-                       //{\r
-                       //      PropertyChanging (this, pcevent);\r
-                       //}\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               /// <summary>\r
-               /// Notifies the DataTable that a DataColumn is being removed.\r
-               /// </summary>\r
-               protected internal virtual void OnRemoveColumn (DataColumn column)\r
-               {\r
-                       DropReferencedIndexes (column);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Raises the RowChanged event.\r
-               /// </summary>\r
-               protected virtual void OnRowChanged (DataRowChangeEventArgs e)\r
-               {\r
-                       if (null != RowChanged)\r
-                               RowChanged (this, e);\r
-               }\r
-\r
-\r
-               /// <summary>\r
-               /// Raises the RowChanging event.\r
-               /// </summary>\r
-               protected virtual void OnRowChanging (DataRowChangeEventArgs e)\r
-               {\r
-                       if (null != RowChanging)\r
-                               RowChanging (this, e);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Raises the RowDeleted event.\r
-               /// </summary>\r
-               protected virtual void OnRowDeleted (DataRowChangeEventArgs e)\r
-               {\r
-                       if (null != RowDeleted)\r
-                               RowDeleted (this, e);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Raises the RowDeleting event.\r
-               /// </summary>\r
-               protected virtual void OnRowDeleting (DataRowChangeEventArgs e)\r
-               {\r
-                       if (null != RowDeleting)\r
-                               RowDeleting (this, e);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Occurs when after a value has been changed for\r
-               /// the specified DataColumn in a DataRow.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataColumnChangeEventHandler ColumnChanged;\r
-\r
-               /// <summary>\r
-               /// Occurs when a value is being changed for the specified\r
-               /// DataColumn in a DataRow.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataColumnChangeEventHandler ColumnChanging;\r
-\r
-               /// <summary>\r
-               /// Occurs after a DataRow has been changed successfully.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataRowChangeEventHandler RowChanged;\r
-\r
-               /// <summary>\r
-               /// Occurs when a DataRow is changing.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataRowChangeEventHandler RowChanging;\r
-\r
-               /// <summary>\r
-               /// Occurs after a row in the table has been deleted.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataRowChangeEventHandler RowDeleted;\r
-\r
-               /// <summary>\r
-               /// Occurs before a row in the table is about to be deleted.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataRowChangeEventHandler RowDeleting;\r
-\r
-               #endregion // Events\r
-\r
-               internal static DataColumn[] ParseSortString (DataTable table, string sort, out ListSortDirection[] sortDirections, bool rejectNoResult)\r
-               {\r
-                       DataColumn[] sortColumns = _emptyColumnArray;\r
-                       sortDirections = null;\r
-\r
-                       ArrayList columns = null;\r
-                       ArrayList sorts = null;\r
-\r
-                       if (sort != null && !sort.Equals ("")) {\r
-                               columns = new ArrayList ();\r
-                               sorts = new ArrayList();\r
-                               string[] columnExpression = sort.Trim ().Split (new char[1] {','});\r
-\r
-                               for (int c = 0; c < columnExpression.Length; c++) {\r
-                                       string rawColumnName = columnExpression[c].Trim ();\r
-\r
-                                       Match match = SortRegex.Match (rawColumnName);\r
-                                       Group g = match.Groups["ColName"] ;\r
-                                       if (!g.Success)\r
-                                               throw new IndexOutOfRangeException ("Could not find column: " + rawColumnName);\r
-\r
-                                       string columnName = g.Value;\r
-                                       DataColumn dc = table.Columns[columnName];\r
-                                       if (dc == null){\r
-                                               try {\r
-                                                       dc = table.Columns[Int32.Parse (columnName)];\r
-                                               } catch (FormatException) {\r
-                                                       throw new IndexOutOfRangeException("Cannot find column " + columnName);\r
-                                               }\r
-                                       }\r
-                                       columns.Add (dc);\r
-\r
-                                       g = match.Groups["Order"];\r
-                                       if (!g.Success || String.Compare (g.Value, "ASC", true, CultureInfo.InvariantCulture) == 0)\r
-                                               sorts.Add(ListSortDirection.Ascending);\r
-                                       else\r
-                                               sorts.Add (ListSortDirection.Descending);\r
-                               }\r
-\r
-                               sortColumns = (DataColumn[]) columns.ToArray (typeof (DataColumn));\r
-                               sortDirections = new ListSortDirection[sorts.Count];\r
-                               for (int i = 0; i < sortDirections.Length; i++)\r
-                                       sortDirections[i] = (ListSortDirection)sorts[i];\r
-                       }\r
-\r
-                       if (rejectNoResult) {\r
-                               if (sortColumns == null)\r
-                                       throw new SystemException ("sort expression result is null");\r
-                               if (sortColumns.Length == 0)\r
-                                       throw new SystemException("sort expression result is 0");\r
-                       }\r
-\r
-                       return sortColumns;\r
-               }\r
-\r
-               private void UpdatePropertyDescriptorsCache ()\r
-               {\r
-                       PropertyDescriptor[] descriptors = new PropertyDescriptor[Columns.Count + ChildRelations.Count];\r
-                       int index = 0;\r
-                       foreach (DataColumn col in Columns)\r
-                               descriptors [index++] = new DataColumnPropertyDescriptor (col);\r
-\r
-                       foreach (DataRelation rel in ChildRelations)\r
-                               descriptors [index++] = new DataRelationPropertyDescriptor (rel);\r
-\r
-                       _propertyDescriptorsCache = new PropertyDescriptorCollection (descriptors);\r
-               }\r
-\r
-               internal PropertyDescriptorCollection GetPropertyDescriptorCollection()\r
-               {\r
-                       if (_propertyDescriptorsCache == null)\r
-                               UpdatePropertyDescriptorsCache ();\r
-                       return _propertyDescriptorsCache;\r
-               }\r
-\r
-               internal void ResetPropertyDescriptorsCache ()\r
-               {\r
-                       _propertyDescriptorsCache = null;\r
-               }\r
-\r
-               internal void SetRowsID()\r
-               {\r
-                       int dataRowID = 0;\r
-                       foreach (DataRow row in Rows) {\r
-                               row.XmlRowID = dataRowID;\r
-                               dataRowID++;\r
-                       }\r
-               }\r
-       }\r
-\r
-       [XmlSchemaProvider ("GetDataTableSchema")]\r
-       partial class DataTable : IXmlSerializable {\r
-               [MonoNotSupported ("")]\r
-               XmlSchema IXmlSerializable.GetSchema ()\r
-               {\r
-                       return GetSchema ();\r
-               }\r
-\r
-               void IXmlSerializable.ReadXml (XmlReader reader)\r
-               {\r
-                       ReadXml_internal (reader, true);\r
-               }\r
-\r
-               void IXmlSerializable.WriteXml (XmlWriter writer)\r
-               {\r
-                       DataSet dset = dataSet;\r
-                       bool isPartOfDataSet = true;\r
-\r
-                       if (dataSet == null) {\r
-                               dset = new DataSet ();\r
-                               dset.Tables.Add (this);\r
-                               isPartOfDataSet = false;\r
-                       }\r
-\r
-                       XmlSchemaWriter.WriteXmlSchema (writer, new DataTable [] { this },\r
-                                                                                       null, TableName, dset.DataSetName, LocaleSpecified ? Locale : dset.LocaleSpecified ? dset.Locale : null);\r
-                       dset.WriteIndividualTableContent (writer, this, XmlWriteMode.DiffGram);\r
-                       writer.Flush ();\r
-\r
-                       if (!isPartOfDataSet)\r
-                               dataSet.Tables.Remove(this);\r
-               }\r
-\r
-               [MonoTODO]\r
-               protected virtual XmlSchema GetSchema ()\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               public static XmlSchemaComplexType GetDataTableSchema (XmlSchemaSet schemaSet)\r
-               {\r
-                       return new XmlSchemaComplexType ();\r
-               }\r
-\r
-               public XmlReadMode ReadXml (Stream stream)\r
-               {\r
-                       return ReadXml (new XmlTextReader(stream, new NameTable ()));\r
-               }\r
-\r
-               public XmlReadMode ReadXml (string fileName)\r
-               {\r
-                       XmlReader reader = new XmlTextReader (fileName);\r
-                       try {\r
-                               return ReadXml (reader);\r
-                       } finally {\r
-                               reader.Close();\r
-                       }\r
-               }\r
-\r
-               public XmlReadMode ReadXml (TextReader reader)\r
-               {\r
-                       return ReadXml (new XmlTextReader (reader));\r
-               }\r
-\r
-               public XmlReadMode ReadXml (XmlReader reader)\r
-               {\r
-                       return ReadXml_internal (reader, false);\r
-               }\r
-\r
-               public XmlReadMode ReadXml_internal (XmlReader reader, bool serializable)\r
-               {\r
-                       // The documentation from MS for this method is rather\r
-                       // poor.  The following cases have been observed\r
-                       // during testing:\r
-                       //\r
-                       //     Reading a table from XML may create a DataSet to\r
-                       //     store child tables.\r
-                       //\r
-                       //     If the table has at least one column present,\r
-                       //     we do not require the schema to be present in\r
-                       //     the xml.  If the table has no columns, neither\r
-                       //     regular data nor diffgrams will be read, but\r
-                       //     will throw an error indicating that schema\r
-                       //     will not be inferred.\r
-                       //\r
-                       //     We will likely need to take advantage of the\r
-                       //     msdata:MainDataTable attribute added to the\r
-                       //     schema info to load into the appropriate\r
-                       //     locations.\r
-                       bool isPartOfDataSet = true;\r
-                       bool isTableNameBlank = false;\r
-                       XmlReadMode mode = XmlReadMode.ReadSchema;\r
-                       DataSet dataSet = null;\r
-                       DataSet ds = new DataSet ();\r
-\r
-                       reader.MoveToContent ();\r
-                       if (Columns.Count > 0 && reader.LocalName != "diffgram" || serializable)\r
-                               mode = ds.ReadXml (reader);\r
-                       else if (Columns.Count > 0 && reader.LocalName == "diffgram") {\r
-                                 try {\r
-                                       if (TableName == String.Empty)\r
-                                               isTableNameBlank = true;\r
-                                       if (DataSet == null) {\r
-                                               isPartOfDataSet = false;\r
-                                               ds.Tables.Add (this);\r
-                                               mode = ds.ReadXml (reader);\r
-                                       } else\r
-                                               mode = DataSet.ReadXml (reader);\r
-                                 } catch (DataException) {\r
-                                       mode = XmlReadMode.DiffGram;\r
-                                       if (isTableNameBlank)\r
-                                               TableName = String.Empty;\r
-                                 } finally {\r
-                                       if (!isPartOfDataSet)\r
-                                               ds.Tables.Remove (this);\r
-                                 }\r
-                                 return mode;\r
-                       } else {\r
-                               mode = ds.ReadXml (reader, XmlReadMode.ReadSchema);\r
-                       }\r
-                       if (mode == XmlReadMode.InferSchema)\r
-                               mode = XmlReadMode.IgnoreSchema;\r
-                       if (DataSet == null) {\r
-                                 isPartOfDataSet = false;\r
-                                 dataSet = new DataSet ();\r
-                                 if (TableName == String.Empty)\r
-                                       isTableNameBlank = true;\r
-                                 dataSet.Tables.Add (this);\r
-                       }\r
-\r
-                       DenyXmlResolving (this, ds, mode, isTableNameBlank, isPartOfDataSet);\r
-                       if (Columns.Count > 0 && TableName != ds.Tables [0].TableName) {\r
-                               if (isPartOfDataSet == false)\r
-                                       dataSet.Tables.Remove (this);\r
-\r
-                               if (isTableNameBlank && isPartOfDataSet == false)\r
-                                       TableName = String.Empty;\r
-                               return mode;\r
-                       }\r
-                       else {\r
-                               TableName = ds.Tables [0].TableName;\r
-                       }\r
-\r
-                       if (!isPartOfDataSet) {\r
-                               if (Columns.Count > 0) {\r
-                                       dataSet.Merge (ds, true, MissingSchemaAction.Ignore);\r
-                               } else {\r
-                                       dataSet.Merge (ds, true, MissingSchemaAction.AddWithKey);\r
-                               }\r
-                               if (ChildRelations.Count == 0) {\r
-                                       dataSet.Tables.Remove (this);\r
-                               } else {\r
-                                       dataSet.DataSetName = ds.DataSetName;\r
-                               }\r
-                       } else {\r
-                               if (Columns.Count > 0) {\r
-                                       DataSet.Merge (ds, true, MissingSchemaAction.Ignore);\r
-                               } else {\r
-                                       DataSet.Merge (ds, true, MissingSchemaAction.AddWithKey);\r
-                               }\r
-                       }\r
-                       return mode;\r
-               }\r
-\r
-               private void DenyXmlResolving (DataTable table, DataSet ds, XmlReadMode mode, bool isTableNameBlank, bool isPartOfDataSet)\r
-               {\r
-                       if (ds.Tables.Count == 0 && table.Columns.Count == 0)\r
-                               throw new InvalidOperationException ("DataTable does not support schema inference from XML");\r
-\r
-                       if (table.Columns.Count == 0 && ds.Tables [0].TableName != table.TableName && isTableNameBlank == false)\r
-                               throw new ArgumentException (String.Format ("DataTable '{0}' does not match to any DataTable in source",\r
-                                                                           table.TableName));\r
-\r
-                       if (table.Columns.Count > 0 && ds.Tables [0].TableName != table.TableName &&\r
-                           isTableNameBlank == false && mode == XmlReadMode.ReadSchema &&\r
-                           isPartOfDataSet == false)\r
-                               throw new ArgumentException (String.Format ("DataTable '{0}' does not match to any DataTable in source",\r
-                                                                           table.TableName));\r
-\r
-                       if (isPartOfDataSet == true && table.Columns.Count > 0 &&\r
-                           mode == XmlReadMode.ReadSchema && table.TableName != ds.Tables [0].TableName)\r
-                               throw new ArgumentException (String.Format ("DataTable '{0}' does not match to any DataTable in source",\r
-                                                                           table.TableName));\r
-               }\r
-\r
-               public void ReadXmlSchema (Stream stream)\r
-               {\r
-                       ReadXmlSchema (new XmlTextReader (stream));\r
-               }\r
-\r
-               public void ReadXmlSchema (TextReader reader)\r
-               {\r
-                       ReadXmlSchema (new XmlTextReader (reader));\r
-               }\r
-\r
-               public void ReadXmlSchema (string fileName)\r
-               {\r
-                       XmlTextReader reader = null;\r
-                       try {\r
-                               reader = new XmlTextReader (fileName);\r
-                               ReadXmlSchema (reader);\r
-                       } finally {\r
-                               if (reader != null)\r
-                                       reader.Close ();\r
-                       }\r
-               }\r
-\r
-               private bool ReadSchemaElement (XmlReader reader)\r
-               {\r
-                       var insideElement = false;\r
-                       reader.MoveToElement ();\r
-                       while (reader.Read ())\r
-                       {\r
-                               if (reader.NodeType == XmlNodeType.Element || reader.NodeType == XmlNodeType.EndElement)\r
-                               {\r
-                                       if (reader.NamespaceURI != XmlSchema.Namespace)\r
-                                       {\r
-                                               if (reader.LocalName == "schema" || insideElement)\r
-                                                       throw new ArgumentException ("The schema namespace is invalid. Please use this one instead: " + XmlSchema.Namespace);\r
-\r
-                                               insideElement = true;\r
-                                               reader.MoveToElement ();\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               return true;\r
-                                       }\r
-                               }\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               public void ReadXmlSchema (XmlReader reader)\r
-               {\r
-                       if (this.Columns.Count > 0)\r
-                               return;\r
-\r
-                       DataSet ds = new DataSet ();\r
-\r
-                       if (reader.ReadState == ReadState.Initial && !ReadSchemaElement (reader))\r
-                               return;\r
-\r
-                       new XmlSchemaDataImporter (ds, reader, false).Process ();\r
-                       DataTable target = null;\r
-                       if (TableName == String.Empty) {\r
-                               if (ds.Tables.Count > 0)\r
-                                       target = ds.Tables [0];\r
-                       }\r
-                       else {\r
-                               target = ds.Tables [TableName];\r
-                               if (target == null)\r
-                                       throw new ArgumentException (String.Format ("DataTable '{0}' does not match to any DataTable in source.", TableName));\r
-                       }\r
-                       if (target != null)\r
-                               target.CopyProperties (this);\r
-               }\r
-\r
-               [MonoNotSupported ("")]\r
-               protected virtual void ReadXmlSerializable (XmlReader reader)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               private XmlWriterSettings GetWriterSettings ()\r
-               {\r
-                       XmlWriterSettings s = new XmlWriterSettings ();\r
-                       s.Indent = true;\r
-                       s.OmitXmlDeclaration = true;\r
-                       return s;\r
-               }\r
-\r
-               public void WriteXml (Stream stream)\r
-               {\r
-                       WriteXml (stream, XmlWriteMode.IgnoreSchema, false);\r
-               }\r
-\r
-               public void WriteXml (TextWriter writer)\r
-               {\r
-                       WriteXml (writer, XmlWriteMode.IgnoreSchema, false);\r
-               }\r
-\r
-               public void WriteXml (XmlWriter writer)\r
-               {\r
-                       WriteXml (writer, XmlWriteMode.IgnoreSchema, false);\r
-               }\r
-\r
-               public void WriteXml (string fileName)\r
-               {\r
-                       WriteXml (fileName, XmlWriteMode.IgnoreSchema, false);\r
-               }\r
-\r
-               public void WriteXml (Stream stream, XmlWriteMode mode)\r
-               {\r
-                       WriteXml (stream, mode, false);\r
-               }\r
-\r
-               public void WriteXml (TextWriter writer, XmlWriteMode mode)\r
-               {\r
-                       WriteXml (writer, mode, false);\r
-               }\r
-\r
-               public void WriteXml (XmlWriter writer, XmlWriteMode mode)\r
-               {\r
-                       WriteXml (writer, mode, false);\r
-               }\r
-\r
-               public void WriteXml (string fileName, XmlWriteMode mode)\r
-               {\r
-                       WriteXml (fileName, mode, false);\r
-               }\r
-\r
-               public void WriteXml (Stream stream, bool writeHierarchy)\r
-               {\r
-                       WriteXml (stream, XmlWriteMode.IgnoreSchema, writeHierarchy);\r
-               }\r
-\r
-               public void WriteXml (string fileName, bool writeHierarchy)\r
-               {\r
-                       WriteXml (fileName, XmlWriteMode.IgnoreSchema, writeHierarchy);\r
-               }\r
-\r
-               public void WriteXml (TextWriter writer, bool writeHierarchy)\r
-               {\r
-                       WriteXml (writer, XmlWriteMode.IgnoreSchema, writeHierarchy);\r
-               }\r
-\r
-               public void WriteXml (XmlWriter writer, bool writeHierarchy)\r
-               {\r
-                       WriteXml (writer, XmlWriteMode.IgnoreSchema, writeHierarchy);\r
-               }\r
-\r
-               public void WriteXml (Stream stream, XmlWriteMode mode, bool writeHierarchy)\r
-               {\r
-                       WriteXml (XmlWriter.Create (stream, GetWriterSettings ()), mode, writeHierarchy);\r
-               }\r
-\r
-               public void WriteXml (string fileName, XmlWriteMode mode, bool writeHierarchy)\r
-               {\r
-                       XmlWriter xw = null;\r
-                       try {\r
-                               xw = XmlWriter.Create (fileName, GetWriterSettings ());\r
-                               WriteXml (xw, mode, writeHierarchy);\r
-                       } finally {\r
-                               if (xw != null)\r
-                                       xw.Close ();\r
-                       }\r
-               }\r
-\r
-               public void WriteXml (TextWriter writer, XmlWriteMode mode, bool writeHierarchy)\r
-               {\r
-                       WriteXml (XmlWriter.Create (writer, GetWriterSettings ()), mode, writeHierarchy);\r
-               }\r
-\r
-               public void WriteXml (XmlWriter writer, XmlWriteMode mode, bool writeHierarchy)\r
-               {\r
-                       // If we're in mode XmlWriteMode.WriteSchema, we need to output an extra\r
-                       // msdata:MainDataTable attribute that wouldn't normally be part of the\r
-                       // DataSet WriteXml output.\r
-                       //\r
-                       // For the writeHierarchy == true case, we write what would be output by\r
-                       // a DataSet write, but we limit ourselves to our table and its descendants.\r
-                       //\r
-                       // For the writeHierarchy == false case, we write what would be output by\r
-                       // a DataSet write, but we limit ourselves to this table.\r
-                       //\r
-                       // If the table is not in a DataSet, we follow the following behaviour:\r
-                       //   For WriteSchema cases, we do a write as if there is a wrapper\r
-                       //   dataset called NewDataSet.\r
-                       //   For IgnoreSchema or DiffGram cases, we do a write as if there\r
-                       //   is a wrapper dataset called DocumentElement.\r
-\r
-                       // Generate a list of tables to write.\r
-                       List <DataTable> tables = new List <DataTable> ();\r
-                       if (writeHierarchy == false)\r
-                               tables.Add (this);\r
-                       else\r
-                               FindAllChildren (tables, this);\r
-\r
-                       // If we're in a DataSet, generate a list of relations to write.\r
-                       List <DataRelation> relations = new List <DataRelation> ();\r
-                       if (DataSet != null) {\r
-                               foreach (DataRelation relation in DataSet.Relations) {\r
-                                       if (tables.Contains (relation.ParentTable) &&\r
-                                          tables.Contains (relation.ChildTable))\r
-                                               relations.Add (relation);\r
-                               }\r
-                       }\r
-\r
-                       // Add the msdata:MainDataTable info if we're writing schema data.\r
-                       string mainDataTable = null;\r
-                       if (mode == XmlWriteMode.WriteSchema)\r
-                               mainDataTable = this.TableName;\r
-\r
-                       // Figure out the DataSet name.\r
-                       string dataSetName = null;\r
-                       if (DataSet != null)\r
-                               dataSetName = DataSet.DataSetName;\r
-                       else if (DataSet == null && mode == XmlWriteMode.WriteSchema)\r
-                               dataSetName = "NewDataSet";\r
-                       else\r
-                               dataSetName = "DocumentElement";\r
-\r
-                       XmlTableWriter.WriteTables(writer, mode, tables, relations, mainDataTable, dataSetName);\r
-               }\r
-\r
-               private void FindAllChildren(List<DataTable> list, DataTable root)\r
-               {\r
-                       if (!list.Contains(root))\r
-                       {\r
-                               list.Add(root);\r
-                               foreach (DataRelation relation in root.ChildRelations)\r
-                               {\r
-                                       FindAllChildren(list, relation.ChildTable);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               public void WriteXmlSchema (Stream stream)\r
-               {\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       XmlWriterSettings s = GetWriterSettings ();\r
-                       s.OmitXmlDeclaration = false;\r
-                       WriteXmlSchema (XmlWriter.Create (stream, s));\r
-               }\r
-\r
-               public void WriteXmlSchema (TextWriter writer)\r
-               {\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       XmlWriterSettings s = GetWriterSettings ();\r
-                       s.OmitXmlDeclaration = false;\r
-                       WriteXmlSchema (XmlWriter.Create (writer, s));\r
-               }\r
-\r
-               public void WriteXmlSchema (XmlWriter writer)\r
-               {\r
-                       WriteXmlSchema (writer, false);\r
-/*\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       DataSet ds = DataSet;\r
-                       DataSet tmp = null;\r
-                       try {\r
-                               if (ds == null) {\r
-                                       tmp = ds = new DataSet ();\r
-                                       ds.Tables.Add (this);\r
-                               }\r
-                               writer.WriteStartDocument ();\r
-                               DataTableCollection col = new DataTableCollection (ds);\r
-                               col.Add (this);\r
-                               DataTable [] tables = new DataTable [col.Count];\r
-                               for (int i = 0; i < col.Count; i++) tables[i] = col[i];\r
-                               string tableName;\r
-                               if (ds.Namespace == "")\r
-                                       tableName = TableName;\r
-                               else\r
-                                       tableName = ds.Namespace + "_x003A_" + TableName;\r
-                               XmlSchemaWriter.WriteXmlSchema (writer, tables, null, tableName, ds.DataSetName);\r
-                       } finally {\r
-                               if (tmp != null)\r
-                                       ds.Tables.Remove (this);\r
-                       }\r
-*/\r
-               }\r
-\r
-               public void WriteXmlSchema (string fileName)\r
-               {\r
-                       if (fileName == "") {\r
-                               throw new ArgumentException ("Empty path name is not legal.");\r
-                       }\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       XmlTextWriter writer = null;\r
-                       try {\r
-                               XmlWriterSettings s = GetWriterSettings ();\r
-                               s.OmitXmlDeclaration = false;\r
-                               writer = new XmlTextWriter (fileName, null);\r
-                               WriteXmlSchema (writer);\r
-                       } finally {\r
-                               if (writer != null) {\r
-                                       writer.Close ();\r
-                               }\r
-                       }\r
-               }\r
-\r
-               public void WriteXmlSchema (Stream stream, bool writeHierarchy)\r
-               {\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       XmlWriterSettings s = GetWriterSettings ();\r
-                       s.OmitXmlDeclaration = false;\r
-                       WriteXmlSchema (XmlWriter.Create (stream, s), writeHierarchy);\r
-               }\r
-\r
-               public void WriteXmlSchema (TextWriter writer, bool writeHierarchy)\r
-               {\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       XmlWriterSettings s = GetWriterSettings ();\r
-                       s.OmitXmlDeclaration = false;\r
-                       WriteXmlSchema (XmlWriter.Create (writer, s), writeHierarchy);\r
-               }\r
-\r
-               public void WriteXmlSchema (XmlWriter writer, bool writeHierarchy)\r
-               {\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-//                     if (writeHierarchy == false) {\r
-//                             WriteXmlSchema (writer);\r
-//                     }\r
-//                     else {\r
-                               DataSet ds = DataSet;\r
-                               DataSet tmp = null;\r
-                               try {\r
-                                       if (ds == null) {\r
-                                               tmp = ds = new DataSet ();\r
-                                               ds.Tables.Add (this);\r
-                                       }\r
-                                       writer.WriteStartDocument ();\r
-                                       //XmlSchemaWriter.WriteXmlSchema (ds, writer);\r
-                                       //DataTable [] tables = new DataTable [ds.Tables.Count];\r
-                                       DataTable [] tables = null;\r
-                                       //DataRelation [] relations =  new DataRelation [ds.Relations.Count];\r
-                                       //for (int i = 0; i < ds.Relations.Count; i++) {\r
-                                       //      relations[i] = ds.Relations[i];\r
-                                       //}\r
-                                       DataRelation [] relations = null;\r
-                                       if (writeHierarchy && ChildRelations.Count > 0) {\r
-                                               relations = new DataRelation [ChildRelations.Count];\r
-                                               for (int i = 0; i < ChildRelations.Count; i++) {\r
-                                                       relations [i] = ChildRelations [i];\r
-                                               }\r
-                                               tables = new DataTable [ds.Tables.Count];\r
-                                               for (int i = 0; i < ds.Tables.Count; i++) tables [i] = ds.Tables [i];\r
-                                       } else {\r
-                                               tables = new DataTable [1];\r
-                                               tables [0] = this;\r
-                                       }\r
-\r
-                                       string tableName;\r
-                                       if (ds.Namespace == "")\r
-                                               tableName = TableName;\r
-                                       else\r
-                                               tableName = ds.Namespace + "_x003A_" + TableName;\r
-                                       XmlSchemaWriter.WriteXmlSchema (writer, tables, relations, tableName, ds.DataSetName, LocaleSpecified ? Locale : ds.LocaleSpecified ? ds.Locale : null);\r
-                               } finally {\r
-                                       if (tmp != null)\r
-                                               ds.Tables.Remove (this);\r
-                               }\r
-//                     }\r
-               }\r
-\r
-               public void WriteXmlSchema (string fileName, bool writeHierarchy)\r
-               {\r
-                       if (fileName == "") {\r
-                               throw new ArgumentException ("Empty path name is not legal.");\r
-                       }\r
-                       if (TableName == "") {\r
-                               throw new InvalidOperationException ("Cannot serialize the DataTable. DataTable name is not set.");\r
-                       }\r
-                       XmlTextWriter writer = null;\r
-                       try {\r
-                               XmlWriterSettings s = GetWriterSettings ();\r
-                               s.OmitXmlDeclaration = false;\r
-                               writer = new XmlTextWriter (fileName, null);\r
-                               WriteXmlSchema (writer, writeHierarchy);\r
-                       } finally {\r
-                               if (writer != null) {\r
-                                       writer.Close ();\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
-       partial class DataTable : ISupportInitializeNotification {\r
-               private bool tableInitialized = true;\r
-\r
-               [Browsable (false)]\r
-               public bool IsInitialized {\r
-                       get { return tableInitialized; }\r
-               }\r
-\r
-               public event EventHandler Initialized;\r
-\r
-               private void OnTableInitialized (EventArgs e)\r
-               {\r
-                       if (null != Initialized)\r
-                               Initialized (this, e);\r
-               }\r
-\r
-               partial void DataTableInitialized ()\r
-               {\r
-                       tableInitialized = true;\r
-                       OnTableInitialized (new EventArgs ());\r
-               }\r
-       }\r
-\r
-       partial class DataTable {\r
-               public DataTable (string tableName, string tableNamespace)\r
-                       : this (tableName)\r
-               {\r
-                       _nameSpace = tableNamespace;\r
-               }\r
-\r
-               SerializationFormat remotingFormat = SerializationFormat.Xml;\r
-               [DefaultValue (SerializationFormat.Xml)]\r
-               public SerializationFormat RemotingFormat {\r
-                       get {\r
-                               if (dataSet != null)\r
-                                       remotingFormat = dataSet.RemotingFormat;\r
-                               return remotingFormat;\r
-                       }\r
-                       set {\r
-                               if (dataSet != null)\r
-                                       throw new ArgumentException ("Cannot have different remoting format property value for DataSet and DataTable");\r
-                               remotingFormat = value;\r
-                       }\r
-               }\r
-\r
-               internal void DeserializeConstraints (ArrayList arrayList)\r
-               {\r
-                       bool fKeyNavigate = false;\r
-                       for (int i = 0; i < arrayList.Count; i++) {\r
-                               ArrayList tmpArrayList = arrayList [i] as ArrayList;\r
-                               if (tmpArrayList == null)\r
-                                       continue;\r
-                               if ((string) tmpArrayList [0] == "F") {\r
-                                       int [] constraintsArray = tmpArrayList [2] as int [];\r
-\r
-                                       if (constraintsArray == null)\r
-                                               continue;\r
-                                       ArrayList parentColumns = new ArrayList ();\r
-                                       DataTable dt = dataSet.Tables [constraintsArray [0]];\r
-                                       for (int j = 0; j < constraintsArray.Length - 1; j++) {\r
-                                               parentColumns.Add (dt.Columns [constraintsArray [j + 1]]);\r
-                                       }\r
-\r
-                                       constraintsArray = tmpArrayList [3] as int [];\r
-\r
-                                       if (constraintsArray == null)\r
-                                               continue;\r
-                                       ArrayList childColumns  = new ArrayList ();\r
-                                       dt = dataSet.Tables [constraintsArray [0]];\r
-                                       for (int j = 0; j < constraintsArray.Length - 1; j++) {\r
-                                               childColumns.Add (dt.Columns [constraintsArray [j + 1]]);\r
-                                       }\r
-\r
-                                       ForeignKeyConstraint fKeyConstraint = new\r
-                                         ForeignKeyConstraint ((string) tmpArrayList [1],\r
-                                                               (DataColumn []) parentColumns.ToArray (typeof (DataColumn)),\r
-                                                               (DataColumn []) childColumns.ToArray (typeof (DataColumn)));\r
-                                       Array ruleArray = (Array) tmpArrayList [4];\r
-                                       fKeyConstraint.AcceptRejectRule = (AcceptRejectRule) ruleArray.GetValue (0);\r
-                                       fKeyConstraint.UpdateRule = (Rule) ruleArray.GetValue (1);\r
-                                       fKeyConstraint.DeleteRule = (Rule) ruleArray.GetValue (2);\r
-                                       // FIXME: refactor this deserialization code out to ForeighKeyConstraint\r
-                                       fKeyConstraint.SetExtendedProperties ((PropertyCollection) tmpArrayList [5]);\r
-                                       Constraints.Add (fKeyConstraint);\r
-                                       fKeyNavigate = true;\r
-                               } else if (fKeyNavigate == false &&\r
-                                          (string) tmpArrayList [0] == "U") {\r
-                                       UniqueConstraint unique = null;\r
-                                       ArrayList uniqueDataColumns = new ArrayList ();\r
-                                       int [] constraintsArray = tmpArrayList [2] as int [];\r
-\r
-                                       if (constraintsArray == null)\r
-                                               continue;\r
-\r
-                                       for (int j = 0; j < constraintsArray.Length; j++) {\r
-                                               uniqueDataColumns.Add (Columns [constraintsArray [j]]);\r
-                                       }\r
-                                       unique = new UniqueConstraint ((string) tmpArrayList[1],\r
-                                                                      (DataColumn[]) uniqueDataColumns.\r
-                                                                      ToArray (typeof (DataColumn)),\r
-                                                                      (bool) tmpArrayList [3]);\r
-                                       /*\r
-                                         If UniqueConstraint already exist, don't add them\r
-                                       */\r
-                                       if (Constraints.IndexOf (unique) != -1 ||\r
-                                           Constraints.IndexOf ((string) tmpArrayList[1]) != -1) {\r
-                                               continue;\r
-                                       }\r
-                                       // FIXME: refactor this deserialization code out to UniqueConstraint\r
-                                       unique.SetExtendedProperties ((PropertyCollection) tmpArrayList [4]);\r
-                                       Constraints.Add (unique);\r
-                               } else {\r
-                                       fKeyNavigate = false;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               DataRowState GetCurrentRowState (BitArray rowStateBitArray, int i)\r
-               {\r
-                       DataRowState currentRowState;\r
-                       if (rowStateBitArray[i] == false &&\r
-                           rowStateBitArray[i+1] == false &&\r
-                           rowStateBitArray[i+2] == true)\r
-                               currentRowState = DataRowState.Detached;\r
-                       else if (rowStateBitArray[i] == false &&\r
-                                rowStateBitArray[i+1] == false &&\r
-                                rowStateBitArray[i+2] == false)\r
-                               currentRowState = DataRowState.Unchanged;\r
-                       else if (rowStateBitArray[i] == false &&\r
-                                rowStateBitArray[i+1] == true &&\r
-                                rowStateBitArray[i+2] == false)\r
-                               currentRowState = DataRowState.Added;\r
-                       else if (rowStateBitArray[i] == true &&\r
-                                rowStateBitArray[i+1] == true &&\r
-                                rowStateBitArray[i+2] == false)\r
-                               currentRowState = DataRowState.Deleted;\r
-                       else\r
-                               currentRowState = DataRowState.Modified;\r
-                       return currentRowState;\r
-               }\r
-\r
-               internal void DeserializeRecords (ArrayList arrayList, ArrayList nullBits, BitArray rowStateBitArray)\r
-               {\r
-                       BitArray  nullBit = null;\r
-                       if (arrayList == null || arrayList.Count < 1)\r
-                               return;\r
-                       int len = ((Array) arrayList [0]).Length;\r
-                       object [] tmpArray = new object [arrayList.Count];\r
-                       int k = 0;\r
-                       DataRowState currentRowState;\r
-                       for (int l = 0; l < len; l++) { // Columns\r
-                               currentRowState = GetCurrentRowState (rowStateBitArray, k *3);\r
-                               for (int j = 0; j < arrayList.Count; j++) { // Rows\r
-                                       Array array = (Array) arrayList [j];\r
-                                       nullBit = (BitArray) nullBits [j];\r
-                                       if (nullBit [l] == false) {\r
-                                               tmpArray [j] = array.GetValue (l);\r
-                                       } else {\r
-                                               tmpArray [j] = null;\r
-                                       }\r
-                               }\r
-                               LoadDataRow (tmpArray, false);\r
-                               if (currentRowState == DataRowState.Modified) {\r
-                                       Rows[k].AcceptChanges ();\r
-                                       l++;\r
-                                       for (int j = 0; j < arrayList.Count; j++) {\r
-                                               Array array = (Array) arrayList [j];\r
-                                               nullBit = (BitArray) nullBits[j];\r
-                                               if (nullBit [l] == false) {\r
-                                                       Rows [k][j] = array.GetValue (l);\r
-                                               } else {\r
-                                                       Rows [k][j] = null;\r
-                                               }\r
-                                       }\r
-                               } else if (currentRowState == DataRowState.Unchanged) {\r
-                                       Rows[k].AcceptChanges ();\r
-                               } else if (currentRowState == DataRowState.Deleted) {\r
-                                       Rows[k].AcceptChanges ();\r
-                                       Rows[k].Delete ();\r
-                               }\r
-                               k++;\r
-                       }\r
-               }\r
-\r
-               void BinaryDeserializeTable (SerializationInfo info)\r
-               {\r
-                       ArrayList arrayList = null;\r
-\r
-                       TableName = info.GetString ("DataTable.TableName");\r
-                       Namespace = info.GetString ("DataTable.Namespace");\r
-                       Prefix = info.GetString ("DataTable.Prefix");\r
-                       CaseSensitive = info.GetBoolean ("DataTable.CaseSensitive");\r
-                       /*\r
-                         FIXME: Private variable available in SerializationInfo\r
-                         this.caseSensitiveAmbientCaseSensitive = info.GetBoolean("DataTable.caseSensitiveAmbientCaseSensitive");\r
-                         this.NestedInDataSet = info.GetBoolean("DataTable.NestedInDataSet");\r
-                         this.RepeatableElement = info.GetBoolean("DataTable.RepeatableElement");\r
-                         this.RemotingVersion = (System.Version) info.GetValue("DataTable.RemotingVersion",\r
-                         typeof(System.Version));\r
-                       */\r
-                       Locale = new CultureInfo (info.GetInt32 ("DataTable.LocaleLCID"));\r
-                       _extendedProperties = (PropertyCollection) info.GetValue ("DataTable.ExtendedProperties",\r
-                                                                                typeof (PropertyCollection));\r
-                       MinimumCapacity = info.GetInt32 ("DataTable.MinimumCapacity");\r
-                       int columnsCount = info.GetInt32 ("DataTable.Columns.Count");\r
-\r
-                       for (int i = 0; i < columnsCount; i++) {\r
-                               Columns.Add ();\r
-                               string prefix = "DataTable.DataColumn_" + i + ".";\r
-                               Columns[i].ColumnName = info.GetString (prefix + "ColumnName");\r
-                               Columns[i].Namespace = info.GetString (prefix + "Namespace");\r
-                               Columns[i].Caption = info.GetString (prefix + "Caption");\r
-                               Columns[i].Prefix = info.GetString (prefix + "Prefix");\r
-                               Columns[i].DataType = (Type) info.GetValue (prefix + "DataType",\r
-                                                                           typeof (Type));\r
-                               Columns[i].DefaultValue = info.GetValue (prefix + "DefaultValue",\r
-                                                                                 typeof (Object));\r
-                               Columns[i].AllowDBNull = info.GetBoolean (prefix + "AllowDBNull");\r
-                               Columns[i].AutoIncrement = info.GetBoolean (prefix + "AutoIncrement");\r
-                               Columns[i].AutoIncrementStep = info.GetInt64 (prefix + "AutoIncrementStep");\r
-                               Columns[i].AutoIncrementSeed = info.GetInt64(prefix + "AutoIncrementSeed");\r
-                               Columns[i].ReadOnly = info.GetBoolean (prefix + "ReadOnly");\r
-                               Columns[i].MaxLength = info.GetInt32 (prefix + "MaxLength");\r
-                               /*\r
-                                 FIXME: Private variable available in SerializationInfo\r
-                                 this.Columns[i].SimpleType = info.GetString("DataTable.DataColumn_" +\r
-                                 i + ".SimpleType");\r
-                                 this.Columns[i].AutoIncrementCurrent = info.GetInt64("DataTable.DataColumn_" +\r
-                                 i + ".AutoIncrementCurrent");\r
-                                 this.Columns[i].XmlDataType = info.GetString("DataTable.DataColumn_" +\r
-                                 i + ".XmlDataType");\r
-                               */\r
-                               Columns[i].ExtendedProperties = (PropertyCollection) info.GetValue (prefix + "ExtendedProperties",\r
-                                                                                                   typeof (PropertyCollection));\r
-                               if (Columns[i].DataType == typeof (DataSetDateTime)) {\r
-                                       Columns[i].DateTimeMode = (DataSetDateTime) info.GetValue (prefix + "DateTimeMode",\r
-                                                                                                  typeof (DataSetDateTime));\r
-                               }\r
-                               Columns[i].ColumnMapping = (MappingType) info.GetValue (prefix + "ColumnMapping",\r
-                                                                                       typeof (MappingType));\r
-                               try {\r
-                                       Columns[i].Expression = info.GetString (prefix + "Expression");\r
-\r
-                                       prefix = "DataTable_0.";\r
-\r
-                                       arrayList = (ArrayList) info.GetValue (prefix + "Constraints",\r
-                                                                              typeof (ArrayList));\r
-                                       if (Constraints == null)\r
-                                               Constraints = new ConstraintCollection (this);\r
-                                       DeserializeConstraints (arrayList);\r
-                               } catch (SerializationException) {\r
-                               }\r
-                       }\r
-                       try {\r
-                               String prefix = "DataTable_0.";\r
-                               ArrayList nullBits = (ArrayList) info.GetValue (prefix + "NullBits",\r
-                                                                               typeof (ArrayList));\r
-                               arrayList = (ArrayList) info.GetValue (prefix + "Records",\r
-                                                                      typeof (ArrayList));\r
-                               BitArray rowStateBitArray = (BitArray) info.GetValue (prefix + "RowStates",\r
-                                                                                     typeof (BitArray));\r
-                               Hashtable htRowErrors = (Hashtable) info.GetValue (prefix + "RowErrors",\r
-                                                                                 typeof (Hashtable));\r
-                               DeserializeRecords (arrayList, nullBits, rowStateBitArray);\r
-                       } catch (SerializationException) {\r
-                       }\r
-               }\r
-\r
-               internal void BinarySerializeProperty (SerializationInfo info)\r
-               {\r
-                       Version vr = new Version (2, 0);\r
-                       info.AddValue ("DataTable.RemotingVersion", vr);\r
-                       info.AddValue ("DataTable.RemotingFormat", RemotingFormat);\r
-                       info.AddValue ("DataTable.TableName", TableName);\r
-                       info.AddValue ("DataTable.Namespace", Namespace);\r
-                       info.AddValue ("DataTable.Prefix", Prefix);\r
-                       info.AddValue ("DataTable.CaseSensitive", CaseSensitive);\r
-                       /*\r
-                         FIXME: Required by MS.NET\r
-                         caseSensitiveAmbient, NestedInDataSet, RepeatableElement\r
-                       */\r
-                       info.AddValue ("DataTable.caseSensitiveAmbient", true);\r
-                       info.AddValue ("DataTable.NestedInDataSet", true);\r
-                       info.AddValue ("DataTable.RepeatableElement", false);\r
-                       info.AddValue ("DataTable.LocaleLCID", Locale.LCID);\r
-                       info.AddValue ("DataTable.MinimumCapacity", MinimumCapacity);\r
-                       info.AddValue ("DataTable.Columns.Count", Columns.Count);\r
-                       info.AddValue ("DataTable.ExtendedProperties", _extendedProperties);\r
-                       for (int i = 0; i < Columns.Count; i++) {\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".ColumnName",\r
-                                              Columns[i].ColumnName);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".Namespace",\r
-                                              Columns[i].Namespace);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".Caption",\r
-                                              Columns[i].Caption);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".Prefix",\r
-                                              Columns[i].Prefix);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".DataType",\r
-                                              Columns[i].DataType, typeof (Type));\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".DefaultValue",\r
-                                              Columns[i].DefaultValue);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".AllowDBNull",\r
-                                              Columns[i].AllowDBNull);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".AutoIncrement",\r
-                                              Columns[i].AutoIncrement);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".AutoIncrementStep",\r
-                                              Columns[i].AutoIncrementStep);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".AutoIncrementSeed",\r
-                                              Columns[i].AutoIncrementSeed);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".ReadOnly",\r
-                                              Columns[i].ReadOnly);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".MaxLength",\r
-                                              Columns[i].MaxLength);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".ExtendedProperties",\r
-                                              Columns[i].ExtendedProperties);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".DateTimeMode",\r
-                                              Columns[i].DateTimeMode);\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".ColumnMapping",\r
-                                              Columns[i].ColumnMapping, typeof (MappingType));\r
-                               /*\r
-                                 FIXME: Required by MS.NET\r
-                                 SimpleType, AutoIncrementCurrent, XmlDataType\r
-                               */\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".SimpleType",\r
-                                              null, typeof (string));\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".AutoIncrementCurrent",\r
-                                              Columns[i].AutoIncrementValue());\r
-                               info.AddValue ("DataTable.DataColumn_" + i + ".XmlDataType",\r
-                                              null, typeof (string));\r
-                       }\r
-                       /*\r
-                         FIXME: Required by MS.NET\r
-                         TypeName\r
-                       */\r
-                       info.AddValue ("DataTable.TypeName", null, typeof (string));\r
-               }\r
-\r
-               internal void SerializeConstraints (SerializationInfo info, string prefix)\r
-               {\r
-                       ArrayList constraintArrayList = new ArrayList ();\r
-                       for (int j = 0; j < Constraints.Count; j++) {\r
-                               ArrayList constraintList = new ArrayList ();\r
-                               if (Constraints[j] is UniqueConstraint) {\r
-                                       constraintList.Add ("U");\r
-                                       UniqueConstraint unique = (UniqueConstraint) Constraints [j];\r
-                                       constraintList.Add (unique.ConstraintName);\r
-                                       DataColumn [] columns = unique.Columns;\r
-                                       int [] tmpArray = new int [columns.Length];\r
-                                       for (int k = 0; k < columns.Length; k++)\r
-                                               tmpArray [k] = unique.Table.Columns.IndexOf (unique.Columns [k]);\r
-                                       constraintList.Add (tmpArray);\r
-                                       constraintList.Add (unique.IsPrimaryKey);\r
-                                       constraintList.Add (unique.ExtendedProperties);\r
-                               } else if (Constraints[j] is ForeignKeyConstraint) {\r
-                                       constraintList.Add ("F");\r
-                                       ForeignKeyConstraint fKey = (ForeignKeyConstraint) Constraints [j];\r
-                                       constraintList.Add (fKey.ConstraintName);\r
-\r
-                                       int [] tmpArray = new int [fKey.RelatedColumns.Length + 1];\r
-                                       tmpArray [0] = DataSet.Tables.IndexOf (fKey.RelatedTable);\r
-                                       for (int i = 0; i < fKey.Columns.Length; i++) {\r
-                                               tmpArray [i + 1] = fKey.RelatedColumns [i].Ordinal;\r
-                                       }\r
-                                       constraintList.Add (tmpArray);\r
-\r
-                                       tmpArray = new int [fKey.Columns.Length + 1];\r
-                                       tmpArray [0] = DataSet.Tables.IndexOf (fKey.Table);\r
-                                       for (int i = 0; i < fKey.Columns.Length; i++) {\r
-                                               tmpArray [i + 1] = fKey.Columns [i].Ordinal;\r
-                                       }\r
-                                       constraintList.Add (tmpArray);\r
-\r
-                                       tmpArray = new int [3];\r
-                                       tmpArray [0] = (int) fKey.AcceptRejectRule;\r
-                                       tmpArray [1] = (int) fKey.UpdateRule;\r
-                                       tmpArray [2] = (int) fKey.DeleteRule;\r
-                                       constraintList.Add (tmpArray);\r
-\r
-                                       constraintList.Add (fKey.ExtendedProperties);\r
-                               }\r
-                               else\r
-                                       continue;\r
-                               constraintArrayList.Add (constraintList);\r
-                       }\r
-                       info.AddValue (prefix, constraintArrayList, typeof (ArrayList));\r
-               }\r
-\r
-               internal void BinarySerialize (SerializationInfo info, string prefix)\r
-               {\r
-                       int columnsCount = Columns.Count;\r
-                       int rowsCount = Rows.Count;\r
-                       int recordsCount = Rows.Count;\r
-                       ArrayList recordList = new ArrayList ();\r
-                       ArrayList bitArrayList = new ArrayList ();\r
-                       BitArray rowStateBitArray = new BitArray (rowsCount * 3);\r
-                       for (int k = 0; k < Rows.Count; k++) {\r
-                               if (Rows[k].RowState == DataRowState.Modified)\r
-                                       recordsCount++;\r
-                       }\r
-                       SerializeConstraints (info, prefix + "Constraints");\r
-                       for (int j = 0; j < columnsCount; j++) {\r
-                               if (rowsCount == 0)\r
-                                       continue;\r
-                               BitArray nullBits = new BitArray (rowsCount);\r
-                               DataColumn column = Columns [j];\r
-                               Array recordArray = Array.CreateInstance (column.DataType, recordsCount);\r
-                               for (int k = 0, l = 0; k < Rows.Count; k++, l++) {\r
-                                       DataRowVersion version;\r
-                                       DataRow dr = Rows[k];\r
-                                       if (dr.RowState == DataRowState.Modified) {\r
-                                               version = DataRowVersion.Default;\r
-                                               nullBits.Length = nullBits.Length + 1;\r
-                                               if (dr.IsNull (column, version) == false) {\r
-                                                       nullBits [l] = false;\r
-                                                       recordArray.SetValue (dr [j, version], l);\r
-                                               } else {\r
-                                                       nullBits [l] = true;\r
-                                               }\r
-                                               l++;\r
-                                               version = DataRowVersion.Current;\r
-                                       } else if (dr.RowState == DataRowState.Deleted) {\r
-                                               version = DataRowVersion.Original;\r
-                                       } else {\r
-                                               version = DataRowVersion.Default;\r
-                                       }\r
-                                       if (dr.IsNull (column, version) == false) {\r
-                                               nullBits [l] = false;\r
-                                               recordArray.SetValue (dr [j, version], l);\r
-                                       } else {\r
-                                               nullBits [l] = true;\r
-                                       }\r
-                               }\r
-                               recordList.Add (recordArray);\r
-                               bitArrayList.Add (nullBits);\r
-                       }\r
-                       for (int j = 0; j < Rows.Count; j++) {\r
-                               int l = j * 3;\r
-                               DataRowState rowState = Rows [j].RowState;\r
-                               if (rowState == DataRowState.Detached) {\r
-                                       rowStateBitArray [l] = false;\r
-                                       rowStateBitArray [l + 1] = false;\r
-                                       rowStateBitArray [l + 2] = true;\r
-                               } else if (rowState == DataRowState.Unchanged) {\r
-                                       rowStateBitArray [l] = false;\r
-                                       rowStateBitArray [l + 1] = false;\r
-                                       rowStateBitArray [l + 2] = false;\r
-                               } else if (rowState == DataRowState.Added) {\r
-                                       rowStateBitArray [l] = false;\r
-                                       rowStateBitArray [l + 1] = true;\r
-                                       rowStateBitArray [l + 2] = false;\r
-                               } else if (rowState == DataRowState.Deleted) {\r
-                                       rowStateBitArray [l] = true;\r
-                                       rowStateBitArray [l + 1] = true;\r
-                                       rowStateBitArray [l + 2] = false;\r
-                               } else {\r
-                                       rowStateBitArray [l] = true;\r
-                                       rowStateBitArray [l + 1] = false;\r
-                                       rowStateBitArray [l + 2] = false;\r
-                               }\r
-                       }\r
-                       info.AddValue (prefix + "Rows.Count", Rows.Count);\r
-                       info.AddValue (prefix + "Records.Count", recordsCount);\r
-                       info.AddValue (prefix + "Records", recordList, typeof (ArrayList));\r
-                       info.AddValue (prefix + "NullBits", bitArrayList, typeof (ArrayList));\r
-                       info.AddValue (prefix + "RowStates",\r
-                                      rowStateBitArray, typeof (BitArray));\r
-                       // FIXME: To get row errors\r
-                       Hashtable htRowErrors = new Hashtable ();\r
-                       info.AddValue (prefix + "RowErrors",\r
-                                      htRowErrors, typeof (Hashtable));\r
-                       // FIXME: To get column errors\r
-                       Hashtable htColumnErrors = new Hashtable ();\r
-                       info.AddValue (prefix + "ColumnErrors",\r
-                                      htColumnErrors, typeof (Hashtable));\r
-               }\r
-\r
-               public DataTableReader CreateDataReader ()\r
-               {\r
-                       return new DataTableReader (this);\r
-               }\r
-\r
-               /// <summary>\r
-               ///     Loads the table with the values from the reader\r
-               /// </summary>\r
-               public void Load (IDataReader reader)\r
-               {\r
-                       if (reader == null)\r
-                               throw new ArgumentNullException ("Value cannot be null. Parameter name: reader");\r
-                       Load (reader, LoadOption.PreserveChanges);\r
-               }\r
-\r
-               /// <summary>\r
-               ///     Loads the table with the values from the reader and the pattern\r
-               ///     of the changes to the existing rows or the new rows are based on\r
-               ///     the LoadOption passed.\r
-               /// </summary>\r
-               public void Load (IDataReader reader, LoadOption loadOption)\r
-               {\r
-                       if (reader == null)\r
-                               throw new ArgumentNullException ("Value cannot be null. Parameter name: reader");\r
-                       bool prevEnforceConstr = this.EnforceConstraints;\r
-                       try {\r
-                               this.EnforceConstraints = false;\r
-                               int [] mapping = DbDataAdapter.BuildSchema (reader, this, SchemaType.Mapped,\r
-                                                                           MissingSchemaAction.AddWithKey,\r
-                                                                           MissingMappingAction.Passthrough,\r
-                                                                           new DataTableMappingCollection ());\r
-                               DbDataAdapter.FillFromReader (this,\r
-                                                             reader,\r
-                                                             0, // start from\r
-                                                             0, // all records\r
-                                                             mapping,\r
-                                                             loadOption);\r
-                       } finally {\r
-                               this.EnforceConstraints = prevEnforceConstr;\r
-                       }\r
-               }\r
-\r
-               public virtual void Load (IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler)\r
-               {\r
-                       if (reader == null)\r
-                               throw new ArgumentNullException ("Value cannot be null. Parameter name: reader");\r
-\r
-                       bool prevEnforceConstr = this.EnforceConstraints;\r
-                       try {\r
-                               this.EnforceConstraints = false;\r
-\r
-                               int [] mapping = DbDataAdapter.BuildSchema (reader, this, SchemaType.Mapped,\r
-                                                                           MissingSchemaAction.AddWithKey,\r
-                                                                           MissingMappingAction.Passthrough,\r
-                                                                           new DataTableMappingCollection ());\r
-                               DbDataAdapter.FillFromReader (this,\r
-                                                             reader,\r
-                                                             0, // start from\r
-                                                             0, // all records\r
-                                                             mapping,\r
-                                                             loadOption,\r
-                                                             errorHandler);\r
-                       } finally {\r
-                               this.EnforceConstraints = prevEnforceConstr;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///     Loads the given values into an existing row if matches or creates\r
-               ///     the new row popluated with the values.\r
-               /// </summary>\r
-               /// <remarks>\r
-               ///     This method searches for the values using primary keys and it first\r
-               ///     searches using the original values of the rows and if not found, it\r
-               ///     searches using the current version of the row.\r
-               /// </remarks>\r
-               public DataRow LoadDataRow (object [] values, LoadOption loadOption)\r
-               {\r
-                       DataRow row = null;\r
-\r
-                       // Find Data DataRow\r
-                       if (this.PrimaryKey.Length > 0) {\r
-                               object [] keys = new object [PrimaryKey.Length];\r
-                               for (int i = 0; i < PrimaryKey.Length; i++)\r
-                                       keys [i] = values [PrimaryKey [i].Ordinal];\r
-\r
-                               row = Rows.Find (keys, DataViewRowState.OriginalRows);\r
-                               if (row == null)\r
-                                       row = Rows.Find (keys);\r
-                       }\r
-\r
-                       // If not found, add new row\r
-                       if (row == null ||\r
-                           (row.RowState == DataRowState.Deleted && loadOption == LoadOption.Upsert)) {\r
-                               row = NewNotInitializedRow ();\r
-                               row.ImportRecord (CreateRecord (values));\r
-\r
-                               row.Validate (); // this adds to index ;-)\r
-\r
-                               if (loadOption == LoadOption.OverwriteChanges ||\r
-                                   loadOption == LoadOption.PreserveChanges)\r
-                                       Rows.AddInternal (row, DataRowAction.ChangeCurrentAndOriginal);\r
-                               else\r
-                                       Rows.AddInternal(row);\r
-                               return row;\r
-                       }\r
-\r
-                       row.Load (values, loadOption);\r
-\r
-                       return row;\r
-               }\r
-\r
-               public void Merge (DataTable table)\r
-               {\r
-                       Merge (table, false, MissingSchemaAction.Add);\r
-               }\r
-\r
-               public void Merge (DataTable table, bool preserveChanges)\r
-               {\r
-                       Merge (table, preserveChanges, MissingSchemaAction.Add);\r
-               }\r
-\r
-               public void Merge (DataTable table, bool preserveChanges, MissingSchemaAction missingSchemaAction)\r
-               {\r
-                       MergeManager.Merge (this, table, preserveChanges, missingSchemaAction);\r
-               }\r
-\r
-               internal int CompareRecords (int x, int y)\r
-               {\r
-                       for (int col = 0; col < Columns.Count; col++) {\r
-                               int res = Columns[col].DataContainer.CompareValues (x, y);\r
-                               if (res != 0)\r
-                                       return res;\r
-                       }\r
-\r
-                       return 0;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Occurs after the Clear method is called on the datatable.\r
-               /// </summary>\r
-               [DataCategory ("Data")]\r
-               public event DataTableClearEventHandler TableCleared;\r
-\r
-               [DataCategory ("Data")]\r
-               public event DataTableClearEventHandler TableClearing;\r
-\r
-               public event DataTableNewRowEventHandler TableNewRow;\r
-\r
-               /// <summary>\r
-               /// Raises TableCleared Event and delegates to subscribers\r
-               /// </summary>\r
-               protected virtual void OnTableCleared (DataTableClearEventArgs e)\r
-               {\r
-                       if (TableCleared != null)\r
-                               TableCleared (this, e);\r
-               }\r
-\r
-               internal void DataTableCleared ()\r
-               {\r
-                       OnTableCleared (new DataTableClearEventArgs (this));\r
-               }\r
-\r
-               protected virtual void OnTableClearing (DataTableClearEventArgs e)\r
-               {\r
-                       if (TableClearing != null)\r
-                               TableClearing (this, e);\r
-               }\r
-\r
-               internal void DataTableClearing ()\r
-               {\r
-                       OnTableClearing (new DataTableClearEventArgs (this));\r
-               }\r
-\r
-               protected virtual void OnTableNewRow (DataTableNewRowEventArgs e)\r
-               {\r
-                       if (null != TableNewRow)\r
-                               TableNewRow (this, e);\r
-               }\r
-\r
-               partial void NewRowAdded (DataRow dr)\r
-               {\r
-                       OnTableNewRow (new DataTableNewRowEventArgs (dr));\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataTableClearEventArgs.cs b/mcs/class/System.Data/System.Data/DataTableClearEventArgs.cs
deleted file mode 100644 (file)
index 30df811..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// System.Data.DataTableClearEventArgs.cs
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) Authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data 
-{
-        public sealed class DataTableClearEventArgs : EventArgs
-        {
-                #region Fields
-                private readonly DataTable _table;
-                #endregion //Fields
-
-                #region Constructors
-                public DataTableClearEventArgs(DataTable dataTable) 
-                {
-                        _table = dataTable;
-                }
-                #endregion // Constructors
-
-
-                #region Properties
-                public DataTable Table { get { return _table; } }
-                public string TableName { get { return _table.TableName ; } }
-                public string TableNamespace { get { return _table.Namespace; } }
-                #endregion // Properties
-        }
-}
diff --git a/mcs/class/System.Data/System.Data/DataTableClearEventHandler.cs b/mcs/class/System.Data/System.Data/DataTableClearEventHandler.cs
deleted file mode 100644 (file)
index d82c3ff..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Data.DataColumnChangeEventHandler.cs
-//
-// Author:
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) Authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the the TableCleared event.
-       /// </summary>
-       public delegate void DataTableClearEventHandler(object sender, DataTableClearEventArgs e);
-
-}
diff --git a/mcs/class/System.Data/System.Data/DataTableCollection.cs b/mcs/class/System.Data/System.Data/DataTableCollection.cs
deleted file mode 100644 (file)
index 9439598..0000000
+++ /dev/null
@@ -1,452 +0,0 @@
-//
-// System.Data.DataTableCollection.cs
-//
-// Authors:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//   Tim Coleman <tim@timcoleman.com>
-//
-// (C) Chris Podurgiel
-// (C) Copyright 2002 Tim Coleman
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Globalization;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters.Binary;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the collection of tables for the DataSet.
-       /// </summary>
-       [Editor ("Microsoft.VSDesigner.Data.Design.TablesCollectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       [DefaultEvent ("CollectionChanged")]
-       [ListBindable (false)]
-       public partial class DataTableCollection : InternalDataCollectionBase {
-               DataSet dataSet;
-               DataTable[] mostRecentTables;
-
-               #region Constructors
-
-               internal DataTableCollection (DataSet dataSet)
-                       : base ()
-               {
-                       this.dataSet = dataSet;
-               }
-
-               #endregion
-
-               #region Properties
-
-               public DataTable this [int index] {
-                       get {
-                               if (index < 0 || index >= List.Count)
-                                       throw new IndexOutOfRangeException (String.Format ("Cannot find table {0}", index));
-                               return (DataTable)(List [index]);
-                       }
-               }
-
-               public DataTable this [string name] {
-                       get {
-                               int index = IndexOf (name, true);
-                               return index < 0 ? null : (DataTable) List [index];
-                       }
-               }
-
-               protected override ArrayList List {
-                       get { return base.List; }
-               }
-
-               #endregion
-
-               #region Methods
-
-               public
-               DataTable Add ()
-               {
-                       DataTable Table = new DataTable ();
-                       Add (Table);
-                       return Table;
-               }
-
-               public
-               void Add (DataTable table)
-               {
-                       OnCollectionChanging (new CollectionChangeEventArgs (CollectionChangeAction.Add, table));
-                       // check if the reference is a null reference
-                       if (table == null)
-                               throw new ArgumentNullException ("table");
-
-                       // check if the list already contains this tabe.
-                       if (List.Contains (table))
-                               throw new ArgumentException ("DataTable already belongs to this DataSet.");
-
-                       // check if table is part of another DataSet
-                       if (table.DataSet != null && table.DataSet != this.dataSet)
-                               throw new ArgumentException ("DataTable already belongs to another DataSet");
-
-                       // if the table name is null or empty string.
-                       // give her a name.
-                       if (table.TableName == null || table.TableName == string.Empty)
-                               NameTable (table);
-
-                       // check if the collection has a table with the same name.
-                       int tmp = IndexOf (table.TableName, table.Namespace);
-                       // if we found a table with same name we have to check
-                       // that it is the same case.
-                       // indexof can return a table with different case letters.
-                       if (tmp != -1 &&
-                           table.TableName == this [tmp].TableName)
-                               throw new DuplicateNameException ("A DataTable named '" + table.TableName + "' already belongs to this DataSet.");
-
-                       List.Add (table);
-                       table.dataSet = dataSet;
-                       OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Add, table));
-               }
-
-               public
-               DataTable Add (string name)
-               {
-                       DataTable table = new DataTable (name);
-                       this.Add (table);
-                       return table;
-               }
-
-               public void AddRange (DataTable [] tables)
-               {
-                       if (dataSet != null && dataSet.InitInProgress) {
-                               mostRecentTables = tables;
-                               return;
-                       }
-
-                       if (tables == null)
-                               return;
-
-                       foreach (DataTable table in tables) {
-                               if (table == null)
-                                       continue;
-                               Add (table);
-                       }
-               }
-
-               internal void PostAddRange ()
-               {
-                       if (mostRecentTables == null)
-                               return;
-
-                       foreach (DataTable table in mostRecentTables){
-                               if (table == null)
-                                       continue;
-                               Add (table);
-                       }
-                       mostRecentTables = null;
-               }
-
-               public bool CanRemove (DataTable table)
-               {
-                       return CanRemove (table, false);
-               }
-
-               public void Clear ()
-               {
-                       List.Clear ();
-               }
-
-               public bool Contains (string name)
-               {
-                       return (-1 != IndexOf (name, false));
-               }
-
-               public
-               int IndexOf (DataTable table)
-               {
-                       return List.IndexOf (table);
-               }
-
-               public
-               int IndexOf (string tableName)
-               {
-                       return IndexOf (tableName, false);
-               }
-
-               public void Remove (DataTable table)
-               {
-                       OnCollectionChanging (new CollectionChangeEventArgs (CollectionChangeAction.Remove, table));
-                       if (CanRemove (table, true))
-                               table.dataSet = null;
-
-                       List.Remove (table);
-                       table.dataSet = null;
-                       OnCollectionChanged (new CollectionChangeEventArgs (CollectionChangeAction.Remove, table));
-               }
-
-               public void Remove (string name)
-               {
-                       int index = IndexOf (name, false);
-                       if (index == -1)
-                               throw new ArgumentException ("Table " + name + " does not belong to this DataSet");
-                       RemoveAt (index);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       Remove (this [index]);
-               }
-
-               #endregion
-
-               #region Protected methods
-
-               internal
-               void OnCollectionChanging (CollectionChangeEventArgs ccevent)
-               {
-                       if (CollectionChanging != null)
-                               CollectionChanging (this, ccevent);
-               }
-
-               internal
-               void OnCollectionChanged (CollectionChangeEventArgs ccevent)
-               {
-                       if (CollectionChanged != null)
-                               CollectionChanged (this, ccevent);
-               }
-
-               #endregion
-
-               #region Private methods
-
-               private int IndexOf (string name, bool error, int start)
-               {
-                       int count = 0, match = -1;
-                       for (int i = start; i < List.Count; i++) {
-                               String name2 = ((DataTable) List[i]).TableName;
-                               if (String.Compare (name, name2, false, dataSet.Locale) == 0)
-                                       return i;
-                               if (String.Compare (name, name2, true, dataSet.Locale) == 0) {
-                                       match = i;
-                                       count++;
-                               }
-                       }
-                       if (count == 1)
-                               return match;
-                       if (count > 1 && error)
-                               throw new ArgumentException ("There is no match for the name in the same case and there are multiple matches in different case.");
-                       return -1;
-               }
-
-               /// <summary>
-               /// gives name to Table (Table1, Table2, Table3,...)
-               /// </summary>
-               private void NameTable (DataTable Table)
-               {
-                       string Name = "Table";
-                       int i = 1;
-                       while (Contains (Name + i))
-                               i++;
-
-                       Table.TableName = Name + i;
-               }
-
-               // check if a table can be removed from this collectiuon.
-               // if the table can not be remved act according to throwException parameter.
-               // if it is true throws an Exception, else return false.
-               private bool CanRemove (DataTable table, bool throwException)
-               {
-                       // check if table is null reference
-                       if (table == null) {
-                               if (throwException)
-                                       throw new ArgumentNullException ("table");
-                               return false;
-                       }
-
-                       // check if the table has the same DataSet as this collection.
-                       if (table.DataSet != this.dataSet) {
-                               if (!throwException)
-                                       return false;
-                               throw new ArgumentException ("Table " + table.TableName + " does not belong to this DataSet.");
-                       }
-
-                       // check the table has a relation attached to it.
-                       if (table.ParentRelations.Count > 0 || table.ChildRelations.Count > 0) {
-                               if (!throwException)
-                                       return false;
-                               throw new ArgumentException ("Cannot remove a table that has existing relations. Remove relations first.");
-                       }
-
-                       // now we check if any ForeignKeyConstraint is referncing 'table'.
-                       foreach (Constraint c in table.Constraints) {
-                               UniqueConstraint uc = c as UniqueConstraint;
-                               if (uc != null) {
-                                       if (uc.ChildConstraint == null)
-                                               continue;
-
-                                       if (!throwException)
-                                               return false;
-                                       RaiseForeignKeyReferenceException (table.TableName, uc.ChildConstraint.ConstraintName);
-                               }
-
-                               ForeignKeyConstraint fc = c as ForeignKeyConstraint;
-                               if (fc == null)
-                                       continue;
-
-                               if (!throwException)
-                                       return false;
-                               RaiseForeignKeyReferenceException (table.TableName, fc.ConstraintName);
-                       }
-
-                       return true;
-               }
-
-               private void RaiseForeignKeyReferenceException (string table, string constraint)
-               {
-                       throw new ArgumentException (String.Format ("Cannot remove table {0}, because it is referenced" +
-                                                               " in ForeignKeyConstraint {1}. Remove the constraint first.",
-                                                               table, constraint));
-               }
-
-               #endregion // Private methods
-
-               #region Events
-
-               [ResDescriptionAttribute ("Occurs whenever this collection's membership changes.")]
-               public event CollectionChangeEventHandler CollectionChanged;
-
-               public event CollectionChangeEventHandler CollectionChanging;
-
-               #endregion
-       }
-
-       sealed partial class DataTableCollection {
-               public DataTable this [string name, string tableNamespace] {
-                       get {
-                               int index = IndexOf (name, tableNamespace, true);
-                               return index < 0 ? null : (DataTable) List [index];
-                       }
-               }
-
-               public DataTable Add (string name, string tableNamespace)
-               {
-                       DataTable table = new DataTable (name, tableNamespace);
-                       this.Add (table);
-                       return table;
-               }
-
-               public bool Contains (string name, string tableNamespace)
-               {
-                       return (IndexOf (name, tableNamespace) != -1);
-               }
-
-               public int IndexOf (string tableName, string tableNamespace)
-               {
-                       if (tableNamespace == null)
-                               throw new ArgumentNullException ("'tableNamespace' argument cannot be null.",
-                                               "tableNamespace");
-                       return IndexOf (tableName, tableNamespace, false);
-               }
-
-               public void Remove (string name, string tableNamespace)
-               {
-                       int index = IndexOf (name, tableNamespace, true);
-                       if (index == -1)
-                                throw new ArgumentException ("Table " + name + " does not belong to this DataSet");
-
-                       RemoveAt (index);
-               }
-
-               private int IndexOf (string name, string ns, bool error)
-               {
-                       int index = -1, count = 0, match = -1;
-                       do {
-                               index = IndexOf (name, error, index+1);
-
-                               if (index == -1)
-                                       break;
-
-                               if (ns == null) {
-                                       if (count > 1)
-                                               break;
-                                       count++;
-                                       match = index;
-                               } else if (this [index].Namespace.Equals (ns))
-                                       return index;
-
-                       } while (index != -1 && index < Count);
-
-                       if (count == 1)
-                               return match;
-
-                       if (count == 0 || !error)
-                               return -1;
-
-                       throw new ArgumentException ("The given name '" + name + "' matches atleast two names" +
-                                       "in the collection object with different namespaces");
-               }
-
-               private int IndexOf (string name, bool error)
-               {
-                       return IndexOf (name, null, error);
-               }
-
-               public void CopyTo (DataTable [] array, int index)
-               {
-                       CopyTo ((Array) array, index);
-               }
-
-               internal void BinarySerialize_Schema (SerializationInfo si)
-               {
-                       si.AddValue ("DataSet.Tables.Count", Count);
-                       for (int i = 0; i < Count; i++) {
-                               DataTable dt = (DataTable) List [i];
-
-                               if (dt.dataSet != dataSet)
-                                       throw new SystemException ("Internal Error: inconsistent DataTable");
-
-                               MemoryStream ms = new MemoryStream ();
-                               BinaryFormatter bf = new BinaryFormatter ();
-                               bf.Serialize (ms, dt);
-                               byte [] serializedStream = ms.ToArray ();
-                               ms.Close ();
-                               si.AddValue ("DataSet.Tables_" + i, serializedStream, typeof (Byte []));
-                       }
-               }
-
-               internal void BinarySerialize_Data (SerializationInfo si)
-               {
-                       for (int i = 0; i < Count; i++) {
-                               DataTable dt = (DataTable) List [i];
-                               for (int j = 0; j < dt.Columns.Count; j++) {
-                                       si.AddValue ("DataTable_" + i + ".DataColumn_" + j + ".Expression",
-                                                    dt.Columns[j].Expression);
-                               }
-                               dt.BinarySerialize (si, "DataTable_" + i + ".");
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataTableNewRowEventArgs.cs b/mcs/class/System.Data/System.Data/DataTableNewRowEventArgs.cs
deleted file mode 100644 (file)
index 2a6b59d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Data.DataTableClearEventArgs.cs
-//
-// Author:
-//   Senganal T <tsenganal@novell.com>
-//
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) Authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-        public sealed class DataTableNewRowEventArgs : EventArgs
-        {
-                #region Fields
-               private readonly DataRow _row;
-               #endregion //Fields
-
-                #region Constructors
-                public DataTableNewRowEventArgs(DataRow dataRow)
-                {
-                        _row = dataRow;
-               }
-               #endregion // Constructors
-
-                #region Properties
-               public DataRow Row {
-                       get { return _row; }
-               }
-                #endregion // Properties
-        }
-}
diff --git a/mcs/class/System.Data/System.Data/DataTableNewRowEventHandler.cs b/mcs/class/System.Data/System.Data/DataTableNewRowEventHandler.cs
deleted file mode 100644 (file)
index b096c85..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Data.DataColumnChangeEventHandler.cs
-//
-// Author:
-//   Senganal T <tsenganal@novell.com>
-//
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) Authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the the TableCleared event.
-       /// </summary>
-       public delegate void DataTableNewRowEventHandler(object sender, DataTableNewRowEventArgs e);
-}
diff --git a/mcs/class/System.Data/System.Data/DataTablePropertyDescriptor.cs b/mcs/class/System.Data/System.Data/DataTablePropertyDescriptor.cs
deleted file mode 100644 (file)
index 2015d26..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// System.Data.DataTablePropertyDescriptor
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2003 Ximian, Inc (http://www.ximian.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       internal class DataTablePropertyDescriptor : PropertyDescriptor
-       {
-               DataTable table;
-
-               internal DataTablePropertyDescriptor (DataTable table) : base (table.TableName, null)
-               {
-                       this.table = table;
-               }
-
-               public DataTable Table {
-                       get { return table; }
-               }
-
-               public override object GetValue (object component)
-               {
-                       DataViewManagerListItemTypeDescriptor desc = component as DataViewManagerListItemTypeDescriptor;
-                       if (desc == null)
-                               return null;
-
-                       return new DataView (table, desc.DataViewManager);
-               }
-
-               public override bool CanResetValue (object component)
-               {
-                       return false;
-               }
-
-               public override bool Equals (object other)
-               {
-                       return (other is DataTablePropertyDescriptor && 
-                               ((DataTablePropertyDescriptor) other).table == table);
-               }
-
-               public override int GetHashCode ()
-               {
-                       return table.GetHashCode ();
-               }
-
-               public override bool ShouldSerializeValue (object component)
-               {
-                       return false;
-               }
-
-               public override void ResetValue (object component)
-               {
-               }
-
-               public override void SetValue (object component, object value)
-               {
-               }
-
-               public override bool IsReadOnly
-               {
-                       get { return false; }
-               }
-
-               public override Type ComponentType
-               {
-                       get { return typeof (DataRowView); }
-               }
-
-               public override Type PropertyType
-               {
-                       get { return typeof (IBindingList); }
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/DataTableReader.cs b/mcs/class/System.Data/System.Data/DataTableReader.cs
deleted file mode 100644 (file)
index 8323b6b..0000000
+++ /dev/null
@@ -1,543 +0,0 @@
-//
-// System.Data.DataTableReader.cs
-//
-// Author:
-//   Sureshkumar T      <tsureshkumar@novell.com>
-//   Tim Coleman        (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Collections;
-using System.Data.Common;
-using System.ComponentModel;
-using System.Text.RegularExpressions;
-
-namespace System.Data {
-       public sealed class DataTableReader : DbDataReader {
-               bool            _closed;
-               DataTable []    _tables;
-               int             _current = -1;
-               int             _index;
-               DataTable       _schemaTable;
-               bool            _tableCleared = false;
-               bool            _subscribed = false;
-               DataRow         _rowRef;
-               bool            _schemaChanged = false;
-
-               #region Constructors
-
-               public DataTableReader (DataTable dataTable)
-                       : this (new DataTable[] {dataTable})
-               {
-               }
-
-               public DataTableReader (DataTable[] dataTables)
-               {
-                       if (dataTables == null || dataTables.Length <= 0)
-                               throw new ArgumentException ("Cannot Create DataTable. Argument Empty!");
-
-                       this._tables = new DataTable [dataTables.Length];
-
-                       for (int i = 0; i < dataTables.Length; i++)
-                               this._tables [i] = dataTables [i];
-
-                       _closed = false;
-                       _index = 0;
-                       _current = -1;
-                       _rowRef = null;
-                       _tableCleared = false;
-
-                       SubscribeEvents ();
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override int Depth {
-                       get { return 0; }
-               }
-
-               public override int FieldCount {
-                       get { return CurrentTable.Columns.Count; }
-               }
-
-               public override bool HasRows {
-                       get { return CurrentTable.Rows.Count > 0; }
-               }
-
-               public override bool IsClosed {
-                       get { return _closed; }
-               }
-
-               public override object this [int ordinal] {
-                       get {
-                               Validate ();
-                               if (ordinal < 0 || ordinal >= FieldCount)
-                                       throw new ArgumentOutOfRangeException ("index " + ordinal + " is not in the range");
-                               DataRow row = CurrentRow;
-                               if (row.RowState == DataRowState.Deleted)
-                                       throw new InvalidOperationException ("Deleted Row's information cannot be accessed!");
-                               return row [ordinal];
-                       }
-               }
-
-               private DataTable CurrentTable {
-                       get { return _tables [_index]; }
-               }
-
-               private DataRow CurrentRow {
-                       get { return (DataRow) CurrentTable.Rows [_current]; }
-               }
-
-
-               public override object this [string name] {
-                       get {
-                               Validate ();
-                               DataRow row = CurrentRow;
-                               if (row.RowState == DataRowState.Deleted)
-                                       throw new InvalidOperationException ("Deleted Row's information cannot be accessed!");
-                               return row [name];
-                       }
-               }
-
-               public override int RecordsAffected {
-                       get { return 0; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               private void SubscribeEvents ()
-               {
-                       if (_subscribed)        // avoid subscribing multiple times
-                               return;
-                       CurrentTable.TableCleared += new DataTableClearEventHandler (OnTableCleared);
-                       CurrentTable.RowChanged += new DataRowChangeEventHandler (OnRowChanged);
-                       CurrentTable.Columns.CollectionChanged += new CollectionChangeEventHandler (OnColumnCollectionChanged);
-                       for (int i=0; i < CurrentTable.Columns.Count; ++i)
-                               CurrentTable.Columns [i].PropertyChanged += new PropertyChangedEventHandler (OnColumnChanged);
-                       _subscribed = true;
-                       _schemaChanged = false;
-               }
-
-               private void UnsubscribeEvents ()
-               {
-                       if (!_subscribed)       // avoid un-subscribing multiple times
-                               return;
-                       CurrentTable.TableCleared -= new DataTableClearEventHandler (OnTableCleared);
-                       CurrentTable.RowChanged -= new DataRowChangeEventHandler (OnRowChanged);
-                       CurrentTable.Columns.CollectionChanged -= new CollectionChangeEventHandler (OnColumnCollectionChanged);
-                       for (int i=0; i < CurrentTable.Columns.Count; ++i)
-                               CurrentTable.Columns [i].PropertyChanged -= new PropertyChangedEventHandler (OnColumnChanged);
-                       _subscribed = false;
-                       _schemaChanged = false;
-               }
-
-               public override void Close ()
-               {
-                       if (IsClosed)
-                               return;
-
-                       UnsubscribeEvents ();
-                       _closed = true;
-               }
-
-               public override bool GetBoolean (int ordinal)
-               {
-                       return (bool) GetValue (ordinal);
-               }
-
-               public override byte GetByte (int ordinal)
-               {
-                       return (byte) GetValue (ordinal);
-               }
-
-               public override long GetBytes (int ordinal, long dataIndex, byte[] buffer, int bufferIndex, int length)
-               {
-                       byte[] value = this [ordinal] as byte[];
-                       if (value == null)
-                               ThrowInvalidCastException (this [ordinal].GetType (), typeof (byte[]));
-                       if (buffer == null)
-                               return value.Length;
-                       int copylen = length > value.Length ? value.Length : length;
-                       Array.Copy (value, dataIndex, buffer, bufferIndex, copylen);
-                       return copylen;
-               }
-
-               public override char GetChar (int ordinal)
-               {
-                       return (char) GetValue (ordinal);
-               }
-
-               public override long GetChars (int ordinal, long dataIndex, char[] buffer, int bufferIndex, int length)
-               {
-                       char[] value = this [ordinal] as char[];
-                       if (value == null)
-                               ThrowInvalidCastException (this [ordinal].GetType (), typeof (char[]));
-                       if (buffer == null)
-                               return value.Length;
-                       int copylen = length > value.Length ? value.Length : length;
-                       Array.Copy (value, dataIndex, buffer, bufferIndex, copylen);
-                       return copylen;
-               }
-
-               public override string GetDataTypeName (int ordinal)
-               {
-                       return GetFieldType (ordinal).ToString ();
-               }
-
-               public override DateTime GetDateTime (int ordinal)
-               {
-                       return (DateTime) GetValue (ordinal);
-               }
-
-               public override decimal GetDecimal (int ordinal)
-               {
-                       return (decimal) GetValue (ordinal);
-               }
-
-               public override double GetDouble (int ordinal)
-               {
-                       return (double) GetValue (ordinal);
-               }
-
-               public override IEnumerator GetEnumerator ()
-               {
-                       return new DbEnumerator (this);
-               }
-
-               public override Type GetProviderSpecificFieldType (int ordinal)
-               {
-                       return GetFieldType (ordinal);
-               }
-
-               public override Type GetFieldType (int ordinal)
-               {
-                       ValidateClosed ();
-                       return CurrentTable.Columns [ordinal].DataType;
-               }
-
-               public override float GetFloat (int ordinal)
-               {
-                       return (float) GetValue (ordinal);
-               }
-
-               public override Guid GetGuid (int ordinal)
-               {
-                       return (Guid) GetValue (ordinal);
-               }
-
-               public override short GetInt16 (int ordinal)
-               {
-                       return (short) GetValue (ordinal);
-               }
-
-               public override int GetInt32 (int ordinal)
-               {
-                       return (int) GetValue (ordinal);
-               }
-
-               public override long GetInt64 (int ordinal)
-               {
-                       return (long) GetValue (ordinal);
-               }
-
-               public override string GetName (int ordinal)
-               {
-                       ValidateClosed ();
-                       return CurrentTable.Columns [ordinal].ColumnName;
-               }
-
-               public override int GetOrdinal (string name)
-               {
-                       ValidateClosed ();
-                       int index = CurrentTable.Columns.IndexOf (name);
-                       if (index == -1)
-                               throw new ArgumentException (String.Format ("Column {0} is not found in the schema", name));
-                       return index;
-               }
-
-               public override object GetProviderSpecificValue (int ordinal)
-               {
-                       return GetValue (ordinal);
-               }
-
-               public override int GetProviderSpecificValues (object[] values)
-               {
-                       return GetValues (values);
-               }
-
-               public override string GetString (int ordinal)
-               {
-                       return (string) GetValue (ordinal);
-               }
-
-               public override object GetValue (int ordinal)
-               {
-                       return this [ordinal];
-               }
-
-               public override int GetValues (object[] values)
-               {
-                       Validate ();
-                       if (CurrentRow.RowState == DataRowState.Deleted)
-                               throw new DeletedRowInaccessibleException ("");
-
-                       int count = (FieldCount < values.Length ? FieldCount : values.Length);
-                       for (int i=0; i < count; ++i)
-                               values [i] = CurrentRow [i];
-                       return count;
-               }
-
-               public override bool IsDBNull (int ordinal)
-               {
-                       return GetValue (ordinal) is DBNull;
-               }
-
-               public override DataTable GetSchemaTable ()
-               {
-                       ValidateClosed ();
-                       ValidateSchemaIntact ();
-
-                       if (_schemaTable != null)
-                               return _schemaTable;
-
-                       DataTable dt = new DataTable ();
-                       dt.Columns.Add ("ColumnName", typeof (string));
-                       dt.Columns.Add ("ColumnOrdinal", typeof (int));
-                       dt.Columns.Add ("ColumnSize", typeof (int));
-                       dt.Columns.Add ("NumericPrecision", typeof (short));
-                       dt.Columns.Add ("NumericScale", typeof (short));
-                       dt.Columns.Add ("DataType", typeof (Type));
-                       dt.Columns.Add ("ProviderType", typeof (int));
-                       dt.Columns.Add ("IsLong", typeof (bool));
-                       dt.Columns.Add ("AllowDBNull", typeof (bool));
-                       dt.Columns.Add ("IsReadOnly", typeof (bool));
-                       dt.Columns.Add ("IsRowVersion", typeof (bool));
-                       dt.Columns.Add ("IsUnique", typeof (bool));
-                       dt.Columns.Add ("IsKey", typeof (bool));
-                       dt.Columns.Add ("IsAutoIncrement", typeof (bool));
-                       dt.Columns.Add ("BaseCatalogName", typeof (string));
-                       dt.Columns.Add ("BaseSchemaName", typeof (string));
-                       dt.Columns.Add ("BaseTableName", typeof (string));
-                       dt.Columns.Add ("BaseColumnName", typeof (string));
-                       dt.Columns.Add ("AutoIncrementSeed", typeof (Int64));
-                       dt.Columns.Add ("AutoIncrementStep", typeof (Int64));
-                       dt.Columns.Add ("DefaultValue", typeof (object));
-                       dt.Columns.Add ("Expression", typeof (string));
-                       dt.Columns.Add ("ColumnMapping", typeof (MappingType));
-                       dt.Columns.Add ("BaseTableNamespace", typeof (string));
-                       dt.Columns.Add ("BaseColumnNamespace", typeof (string));
-
-                       DataRow row;
-                       DataColumn col;
-                       for (int i=0; i < CurrentTable.Columns.Count; ++i) {
-                               row = dt.NewRow ();
-                               col = CurrentTable.Columns [i];
-                               row ["ColumnName"] = col.ColumnName;
-                               row ["BaseColumnName"] = col.ColumnName;
-                               row ["ColumnOrdinal"] = col.Ordinal;
-                               row ["ColumnSize"] = col.MaxLength;
-                               // ms.net doesent set precision and scale even for Decimal values
-                               // when are these set ?
-                               row ["NumericPrecision"] = DBNull.Value;
-                               row ["NumericScale"] = DBNull.Value;
-                               row ["DataType"] = col.DataType;
-                               row ["ProviderType"] = DBNull.Value; //col.ProviderType;
-                               // ms.net doesent set this when datatype is string and maxlength = -1
-                               // when is this set ?
-                               row ["IsLong"] = false;
-                               row ["AllowDBNull"] = col.AllowDBNull;
-                               row ["IsReadOnly"] = col.ReadOnly;
-                               row ["IsRowVersion"] = false; //this is always false
-                               row ["IsUnique"] = col.Unique;
-                               row ["IsKey"] = (Array.IndexOf (CurrentTable.PrimaryKey, col) != -1) ;
-                               row ["IsAutoIncrement"]= col.AutoIncrement;
-                               row ["AutoIncrementSeed"] = col.AutoIncrementSeed;
-                               row ["AutoIncrementStep"] = col.AutoIncrementStep;
-                               row ["BaseCatalogName"] = (CurrentTable.DataSet != null ? CurrentTable.DataSet.DataSetName : null);
-                               row ["BaseSchemaName"] = DBNull.Value; // this is always null
-                               row ["BaseTableName"] = CurrentTable.TableName;
-                               row ["DefaultValue"] = col.DefaultValue;
-                               // If col expression depends on any external table , then the
-                               // Expression value is set to empty string in the schematable.
-                               if (col.Expression == "")
-                                       row ["Expression"] = col.Expression;
-                               else {
-                                       Regex reg = new Regex ("((Parent|Child)( )*[.(])", RegexOptions.IgnoreCase);
-                                       if (reg.IsMatch (col.Expression, 0))
-                                               row ["Expression"] = DBNull.Value;
-                                       else
-                                               row ["Expression"] = col.Expression;
-                               }
-
-                               row ["ColumnMapping"] = col.ColumnMapping;
-                               row ["BaseTableNamespace"] = CurrentTable.Namespace;
-                               row ["BaseColumnNamespace"] = col.Namespace;
-                               dt.Rows.Add (row);
-                       }
-
-                       return _schemaTable = dt;
-               }
-
-               private void Validate ()
-               {
-                       ValidateClosed ();
-
-                       if (_index >= _tables.Length)
-                               throw new InvalidOperationException ("Invalid attempt to read when no data is present");
-                       if (_tableCleared)
-                               throw new RowNotInTableException ("The table is cleared, no rows are accessible");
-                       if (_current == -1)
-                               throw new InvalidOperationException ("DataReader is invalid for the DataTable");
-                       ValidateSchemaIntact ();
-               }
-
-               private void ValidateClosed ()
-               {
-                       if (IsClosed)
-                               throw new InvalidOperationException ("Invalid attempt to read when the reader is closed");
-               }
-
-               private void ValidateSchemaIntact ()
-               {
-                       if (_schemaChanged)
-                               throw new InvalidOperationException ("Schema of current DataTable '" + CurrentTable.TableName +
-                                               "' in DataTableReader has changed, DataTableReader is invalid.");
-               }
-
-               void ThrowInvalidCastException (Type sourceType, Type destType)
-               {
-                       throw new InvalidCastException (
-                               String.Format ("Unable to cast object of type '{0}' to type '{1}'.", sourceType, destType));
-               }
-
-               private bool MoveNext ()
-               {
-                       if (_index >= _tables.Length || _tableCleared)
-                               return false;
-
-                       do {
-                               _current++;
-                       } while (_current < CurrentTable.Rows.Count && CurrentRow.RowState == DataRowState.Deleted);
-
-                       _rowRef = _current < CurrentTable.Rows.Count ? CurrentRow : null;
-
-                       return _current < CurrentTable.Rows.Count;
-
-               }
-
-               public override bool NextResult ()
-               {
-                       if ((_index + 1) >= _tables.Length) {
-                               UnsubscribeEvents ();
-                               _index = _tables.Length;     // to make any attempt invalid
-                               return false; // end of tables.
-                       }
-
-                       UnsubscribeEvents ();
-                       _index++;
-                       _current = -1;
-                       _rowRef = null;
-                       _schemaTable = null;            // force to create fresh
-                       _tableCleared = false;
-                       SubscribeEvents ();
-                       return true;
-               }
-
-               public override bool Read ()
-               {
-                       ValidateClosed ();
-                       return MoveNext ();
-               }
-
-               #endregion // Methods
-
-               #region // Event Handlers
-
-               private void OnColumnChanged (object sender, PropertyChangedEventArgs args)
-               {
-                       _schemaChanged = true;
-               }
-
-               private void OnColumnCollectionChanged (object sender, CollectionChangeEventArgs args)
-               {
-                       _schemaChanged = true;
-               }
-
-               private void OnRowChanged (object src, DataRowChangeEventArgs args)
-               {
-                       DataRowAction action = args.Action;
-                       DataRow row = args.Row;
-                       if (action == DataRowAction.Add) {
-                               if (_tableCleared && _current != -1)
-                                       return;
-
-                               if (_current == -1 || (_current >= 0 && row.RowID > CurrentRow.RowID)) {
-                                       _tableCleared = false;
-                                       return; // no. movement required, if row added after current.
-                               }
-
-                               _current++;
-                               _rowRef = CurrentRow;
-                       }
-
-                       if (action == DataRowAction.Commit && row.RowState == DataRowState.Detached) {
-                               // if i am the row deleted, move one down
-                               if (_rowRef == row) {
-                                       _current --;
-                                       _rowRef = _current >= 0 ? CurrentRow : null;
-                               }
-
-                               // if the row deleted is the last row, move down
-                               if (_current >= CurrentTable.Rows.Count) {
-                                       _current--;
-                                       _rowRef = _current >= 0 ? CurrentRow : null;
-                                       return;
-                               }
-
-                               // deleting a row below _current moves the row one down
-                               if (_current > 0 && _rowRef == CurrentTable.Rows [_current-1]) {
-                                       _current--;
-                                       _rowRef = CurrentRow;
-                                       return;
-                               }
-                       }
-               }
-
-               private void OnTableCleared (object src, DataTableClearEventArgs args)
-               {
-                       _tableCleared = true;
-               }
-
-               #endregion // Event Handlers
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/DataTableTypeConverter.cs b/mcs/class/System.Data/System.Data/DataTableTypeConverter.cs
deleted file mode 100644 (file)
index 6ca71fc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Data.DataTableTypeConverter.cs
-//
-// Author:
-//   Gert Driesen <drieseng@users.sourceforge.net>
-//
-// Copyright (C) Novell, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-
-namespace System.Data
-{
-       internal class DataTableTypeConverter : ReferenceConverter
-       {
-               public DataTableTypeConverter () : base(typeof(DataTable))
-               {
-               }
-
-               public override bool GetPropertiesSupported (ITypeDescriptorContext context)
-               {
-                       return false;
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/DataView.cs b/mcs/class/System.Data/System.Data/DataView.cs
deleted file mode 100644 (file)
index 6016f32..0000000
+++ /dev/null
@@ -1,1213 +0,0 @@
-//\r
-// System.Data.DataView.cs\r
-//\r
-// Author:\r
-//    Daniel Morgan <danmorg@sc.rr.com>\r
-//    Tim Coleman (tim@timcoleman.com)\r
-//    Punit Todi (punits_mailbox@yahoo.com)\r
-//    Atsushi Enomoto <atsushi@ximian.com>\r
-//    Konstantin Triger (kostat@mainsoft.com)\r
-//\r
-// Copyright (C) Daniel Morgan, 2002, 2003\r
-// (C) Ximian, Inc 2002\r
-// Copyright (C) Tim Coleman, 2002-2003\r
-\r
-using System;\r
-using System.Collections;\r
-using System.Collections.Generic;\r
-using System.ComponentModel;\r
-using System.Reflection;\r
-using System.Data.Common;\r
-using System.Globalization;\r
-using Mono.Data.SqlExpressions;\r
-using System.Text;\r
-\r
-namespace System.Data\r
-{\r
-       /// <summary>\r
-       /// A DataView is used in the binding of data between\r
-       /// a DataTable and Windows Forms or Web Forms allowing\r
-       /// a view of a DataTable for editing, filtering,\r
-       /// navigation, searching, and sorting.\r
-       /// </summary>\r
-       //[Designer]\r
-       [Editor ("Microsoft.VSDesigner.Data.Design.DataSourceEditor, " + Consts.AssemblyMicrosoft_VSDesigner,\r
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]\r
-       [DefaultEvent ("PositionChanged")]\r
-       [DefaultProperty ("Table")]\r
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.DataViewDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]\r
-       public partial class DataView : MarshalByValueComponent, IEnumerable, ISupportInitialize {\r
-               internal DataTable dataTable;\r
-               string rowFilter = String.Empty;\r
-               IExpression rowFilterExpr;\r
-               string sort = String.Empty;\r
-               ListSortDirection [] sortOrder;\r
-               PropertyDescriptor sortProperty;\r
-               DataColumn [] sortColumns;\r
-               internal DataViewRowState rowState;\r
-               internal DataRowView[] rowCache = new DataRowView [0];\r
-\r
-               // BeginInit() support\r
-               bool isInitPhase;\r
-               bool inEndInit;\r
-               DataTable initTable;\r
-               bool initApplyDefaultSort;\r
-               string initSort;\r
-               string initRowFilter;\r
-               DataViewRowState initRowState;\r
-\r
-               // FIXME: what are the default values?\r
-               bool allowNew = true;\r
-               bool allowEdit = true;\r
-               bool allowDelete = true;\r
-               bool applyDefaultSort;\r
-               //bool isSorted = false;\r
-\r
-               bool isOpen;\r
-\r
-               bool useDefaultSort = true;\r
-\r
-               Index _index;\r
-               internal DataRow _lastAdded;\r
-\r
-               private DataViewManager dataViewManager;\r
-               internal static ListChangedEventArgs ListResetEventArgs = new ListChangedEventArgs (ListChangedType.Reset,-1,-1);\r
-\r
-               public DataView ()\r
-               {\r
-                       rowState = DataViewRowState.CurrentRows;\r
-                       Open ();\r
-               }\r
-\r
-               public DataView (DataTable table)\r
-                       : this (table, (DataViewManager) null)\r
-               {\r
-               }\r
-\r
-               internal DataView (DataTable table, DataViewManager manager)\r
-               {\r
-                       dataTable = table;\r
-                       rowState = DataViewRowState.CurrentRows;\r
-                       dataViewManager = manager;\r
-                       Open ();\r
-               }\r
-\r
-               public DataView (DataTable table, string RowFilter,\r
-                       string Sort, DataViewRowState RowState)\r
-                       : this (table, null, RowFilter, Sort, RowState)\r
-               {\r
-               }\r
-\r
-               internal DataView (DataTable table, DataViewManager manager,\r
-                       string RowFilter, string Sort, DataViewRowState RowState)\r
-               {\r
-                       dataTable = table;\r
-                       dataViewManager = manager;\r
-                       rowState = DataViewRowState.CurrentRows;\r
-                       this.RowFilter = RowFilter;\r
-                       this.Sort = Sort;\r
-                       rowState = RowState;\r
-                       Open ();\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (true)]\r
-               public bool AllowDelete {\r
-                       get { return allowDelete; }\r
-                       set { allowDelete = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (true)]\r
-               public bool AllowEdit {\r
-                       get { return allowEdit; }\r
-                       set { allowEdit = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (true)]\r
-               public bool AllowNew {\r
-                       get { return allowNew; }\r
-                       set { allowNew = value; }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (false)]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               public bool ApplyDefaultSort {\r
-                       get { return applyDefaultSort; }\r
-                       set {\r
-                               if (isInitPhase) {\r
-                                       initApplyDefaultSort = value;\r
-                                       return;\r
-                               }\r
-                               if (applyDefaultSort == value)\r
-                                       return;\r
-\r
-                               applyDefaultSort = value;\r
-                               if (applyDefaultSort == true && (sort == null || sort == string.Empty))\r
-                                       PopulateDefaultSort ();\r
-                               if (!inEndInit) {\r
-                                       UpdateIndex (true);\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1));\r
-                               }\r
-                       }\r
-               }\r
-               // get the count of rows in the DataView after RowFilter\r
-               // and RowStateFilter have been applied\r
-               [Browsable (false)]\r
-               public int Count {\r
-                       get { return rowCache.Length; }\r
-               }\r
-\r
-               [Browsable (false)]\r
-               public DataViewManager DataViewManager {\r
-                       get { return dataViewManager; }\r
-               }\r
-\r
-               // Item indexer\r
-               // the compiler creates a DefaultMemeberAttribute from\r
-               // this IndexerNameAttribute\r
-               [System.Runtime.CompilerServices.IndexerName("Item")]\r
-               public DataRowView this [int recordIndex] {\r
-                       get {\r
-                               if (recordIndex > rowCache.Length)\r
-                                       throw new IndexOutOfRangeException ("There is no row at position: " + recordIndex + ".");\r
-                               return rowCache [recordIndex];\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public virtual string RowFilter {\r
-                       get { return rowFilter; }\r
-                       set {\r
-                               if (value == null)\r
-                                       value = String.Empty;\r
-                               if (isInitPhase) {\r
-                                       initRowFilter = value;\r
-                                       return;\r
-                               }\r
-\r
-                               CultureInfo info = (Table != null) ? Table.Locale : CultureInfo.CurrentCulture;\r
-                               if (String.Compare (rowFilter, value, false, info) == 0)\r
-                                       return;\r
-\r
-                               if (value.Length == 0) {\r
-                                       rowFilterExpr = null;\r
-                               } else {\r
-                                       Parser parser = new Parser ();\r
-                                       rowFilterExpr = parser.Compile (value);\r
-                               }\r
-                               rowFilter = value;\r
-                               if (!inEndInit) {\r
-                                       UpdateIndex (true);\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1));\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (DataViewRowState.CurrentRows)]\r
-               public DataViewRowState RowStateFilter {\r
-                       get { return rowState; }\r
-                       set {\r
-                               if (isInitPhase) {\r
-                                       initRowState = value;\r
-                                       return;\r
-                               }\r
-\r
-                               if (value == rowState)\r
-                                       return;\r
-\r
-                               rowState = value;\r
-                               if (!inEndInit) {\r
-                                       UpdateIndex (true);\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1));\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               [DefaultValue ("")]\r
-               public string Sort {\r
-                       get {\r
-                               if (useDefaultSort)\r
-                                       return String.Empty;\r
-                               else\r
-                                       return sort;\r
-                       }\r
-                       set {\r
-                               if (isInitPhase) {\r
-                                       initSort = value;\r
-                                       return;\r
-                               }\r
-                               if (value == Sort)\r
-                                       return;\r
-\r
-                               if (value == null || value.Length == 0) {\r
-                               /* if given value is null useDefaultSort */\r
-                                       useDefaultSort = true;\r
-                                       /* if ApplyDefault sort is true try appling it */\r
-                                       if (ApplyDefaultSort)\r
-                                               PopulateDefaultSort ();\r
-                               } else {\r
-                                       /* else donot useDefaultSort. set it as false */\r
-                                       /* sort is set to value specified */\r
-                                       useDefaultSort = false;\r
-                                       sort = value;\r
-                                       //sortedColumns = SortableColumn.ParseSortString (dataTable, value, true);\r
-                               }\r
-\r
-                               if (!inEndInit) {\r
-                                       UpdateIndex (true);\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1));\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [TypeConverter (typeof (DataTableTypeConverter))]\r
-               [DataCategory ("Data")]\r
-               [DefaultValue (null)]\r
-               [RefreshProperties (RefreshProperties.All)]\r
-               public DataTable Table {\r
-                       get { return dataTable; }\r
-                       set {\r
-                               if (value == dataTable)\r
-                                       return;\r
-\r
-                               if (isInitPhase) {\r
-                                       initTable = value;\r
-                                       return;\r
-                               }\r
-\r
-                               if (value != null && value.TableName.Equals(string.Empty)) {\r
-                                       throw new DataException("Cannot bind to DataTable with no name.");\r
-                               }\r
-\r
-                               if (dataTable != null)\r
-                                       UnregisterEventHandlers ();\r
-\r
-                               dataTable = value;\r
-\r
-                               if (dataTable != null) {\r
-                                       RegisterEventHandlers ();\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorChanged, 0, 0));\r
-                                       sort = string.Empty;\r
-                                       rowFilter = string.Empty;\r
-                                       if (!inEndInit) {\r
-                                               UpdateIndex (true);\r
-                                               OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1));\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               public virtual DataRowView AddNew ()\r
-               {\r
-                       if (!IsOpen)\r
-                               throw new DataException ("DataView is not open.");\r
-                       if (!AllowNew)\r
-                               throw new DataException ("Cannot call AddNew on a DataView where AllowNew is false.");\r
-\r
-                       if (_lastAdded != null)\r
-                               // FIXME : finish last added\r
-                               CompleteLastAdded (true);\r
-\r
-                       _lastAdded = dataTable.NewRow ();\r
-                       UpdateIndex (true);\r
-                       OnListChanged (new ListChangedEventArgs (ListChangedType.ItemAdded, Count - 1, -1));\r
-\r
-                       return this [Count - 1];\r
-               }\r
-\r
-               internal void CompleteLastAdded (bool add)\r
-               {\r
-                       DataRow dr = _lastAdded;\r
-\r
-                       if (add) {\r
-                               try {\r
-                                       dataTable.Rows.Add (_lastAdded);\r
-                                       //OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, Count - 1, -1));\r
-                                       _lastAdded = null;\r
-                                       UpdateIndex ();\r
-                               } catch (Exception) {\r
-                                       _lastAdded = dr;\r
-                                       throw;\r
-                               }\r
-                       } else {\r
-                               _lastAdded.CancelEdit ();\r
-                               _lastAdded = null;\r
-                               UpdateIndex ();\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemDeleted, Count, -1));\r
-                       }\r
-               }\r
-\r
-               public void BeginInit ()\r
-               {\r
-                       initTable = Table;\r
-                       initApplyDefaultSort = ApplyDefaultSort;\r
-                       initSort = Sort;\r
-                       initRowFilter = RowFilter;\r
-                       initRowState = RowStateFilter;\r
-\r
-                       isInitPhase = true;\r
-                       DataViewInitialized (false);\r
-               }\r
-\r
-               partial void DataViewInitialized (bool value);\r
-\r
-               public void CopyTo (Array array, int index)\r
-               {\r
-                       if (index + rowCache.Length > array.Length)\r
-                               throw new IndexOutOfRangeException ();\r
-\r
-                       int row = 0;\r
-                       for (; row < rowCache.Length && row < array.Length; row++)\r
-                               array.SetValue (rowCache [row], index + row);\r
-               }\r
-\r
-               public void Delete (int index)\r
-               {\r
-                       if (!IsOpen)\r
-                               throw new DataException ("DataView is not open.");\r
-\r
-                       if (_lastAdded != null && index == Count) {\r
-                               CompleteLastAdded (false);\r
-                               return;\r
-                       }\r
-\r
-                       if (!AllowDelete)\r
-                               throw new DataException ("Cannot delete on a DataSource where AllowDelete is false.");\r
-\r
-                       if (index > rowCache.Length)\r
-                               throw new IndexOutOfRangeException ("There is no row at position: " + index + ".");\r
-                       DataRowView row = rowCache [index];\r
-                       row.Row.Delete ();\r
-               }\r
-\r
-               public void EndInit ()\r
-               {\r
-                       isInitPhase = false;\r
-\r
-                       inEndInit = true;\r
-\r
-                       Table = initTable;\r
-                       ApplyDefaultSort = initApplyDefaultSort;\r
-                       Sort = initSort;\r
-                       RowFilter = initRowFilter;\r
-                       RowStateFilter = initRowState;\r
-\r
-                       inEndInit = false;\r
-\r
-                       UpdateIndex (true);\r
-\r
-                       DataViewInitialized (true);\r
-               }\r
-\r
-               public int Find (object key)\r
-               {\r
-                       object [] keys = new object[] { key };\r
-                       return Find (keys);\r
-               }\r
-\r
-               public int Find (object [] key)\r
-               {\r
-                       if (sort == null || sort.Length == 0)\r
-                               throw new ArgumentException ("Find finds a row based on a Sort order, and no Sort order is specified");\r
-\r
-                       if (Index == null)\r
-                               UpdateIndex (true);\r
-\r
-                       int index = -1;\r
-                       try {\r
-                               index = Index.FindIndex (key);\r
-                       } catch (FormatException) {\r
-                               // suppress exception\r
-                       } catch (InvalidCastException) {\r
-                               // suppress exception\r
-                       }\r
-                       return index;\r
-               }\r
-\r
-               public DataRowView [] FindRows (object key)\r
-               {\r
-                       return FindRows (new object[] {key});\r
-               }\r
-\r
-               public DataRowView [] FindRows (object [] key)\r
-               {\r
-                       if (sort == null || sort.Length == 0)\r
-                               throw new ArgumentException ("Find finds a row based on a Sort order, and no Sort order is specified");\r
-\r
-                       if (Index == null)\r
-                               UpdateIndex (true);\r
-\r
-                       int [] indexes = Index.FindAllIndexes (key);\r
-\r
-                       DataRowView[] rowViewArr = new DataRowView [indexes.Length];\r
-                       for (int r = 0; r < indexes.Length; r++)\r
-                               rowViewArr [r] = rowCache [indexes[r]];\r
-                       return rowViewArr;\r
-               }\r
-\r
-               public IEnumerator GetEnumerator ()\r
-               {\r
-                       DataRowView[] dataRowViews = new DataRowView [Count];\r
-                       CopyTo (dataRowViews, 0);\r
-                       return dataRowViews.GetEnumerator ();\r
-               }\r
-\r
-               [DataCategory ("Data")]\r
-               public event ListChangedEventHandler ListChanged;\r
-\r
-               [Browsable (false)]\r
-               protected bool IsOpen {\r
-                       get { return isOpen; }\r
-               }\r
-\r
-               internal Index Index {\r
-                       get { return _index; }\r
-                       set {\r
-                               if (_index != null) {\r
-                                       _index.RemoveRef ();\r
-                                       Table.DropIndex (_index);\r
-                               }\r
-\r
-                               _index = value;\r
-\r
-                               if (_index != null)\r
-                                       _index.AddRef ();\r
-                       }\r
-               }\r
-\r
-               protected void Close ()\r
-               {\r
-                       if (dataTable != null)\r
-                               UnregisterEventHandlers ();\r
-                       Index = null;\r
-                       rowCache = new DataRowView [0];\r
-                       isOpen = false;\r
-               }\r
-\r
-               protected override void Dispose (bool disposing)\r
-               {\r
-                       if (disposing)\r
-                               Close ();\r
-\r
-                       base.Dispose (disposing);\r
-               }\r
-\r
-               protected virtual void IndexListChanged (object sender, ListChangedEventArgs e)\r
-               {\r
-               }\r
-\r
-               protected virtual void OnListChanged (ListChangedEventArgs e)\r
-               {\r
-                       // Yes, under MS.NET, when it is overriden, the\r
-                       // events are not fired (even if it is essential\r
-                       // to internal processing).\r
-                       try {\r
-                               if (ListChanged != null)\r
-                                       ListChanged (this, e);\r
-                       } catch {\r
-                       }\r
-               }\r
-\r
-               internal void ChangedList (ListChangedType listChangedType, int newIndex,int oldIndex)\r
-               {\r
-                       ListChangedEventArgs e = new ListChangedEventArgs (listChangedType,newIndex,oldIndex);\r
-                       OnListChanged (e);\r
-               }\r
-\r
-               protected void Open ()\r
-               {\r
-                       // I wonder if this comment is still valid, but keep\r
-                       // in the meantime.\r
-\r
-                       // FIXME: create the initial index cache to the DataTable, and\r
-                       //        only refresh the index when the DataTable\r
-                       //        has changes via column, row, or constraint\r
-                       //        changed events. the index cache is generally\r
-                       //        a DataViewRow array that points to the actual\r
-                       //        DataRows in the this DataTable's DataRowCollection;\r
-                       //        this index is really a cache that gets\r
-                       //        created during Open(), gets Updated\r
-                       //        when various properties of this view\r
-                       //        changes, gets Updated when this DataTable's\r
-                       //        row, column, or constraint collections have changed.\r
-                       //        I'm not sure what else.\r
-                       //        The data view will know one of the DataTable's\r
-                       //        collections have changed via one of\r
-                       //        its changed events.\r
-                       //        Otherwise, if getting a/the DataRowView(s),\r
-                       //        Count, or other properties, then just use the\r
-                       //        index cache.\r
-                       //              dataTable.ColumnChanged  += new DataColumnChangeEventHandler(OnColumnChanged);\r
-\r
-                       UpdateIndex (true);\r
-                       if (dataTable != null)\r
-                               RegisterEventHandlers ();\r
-                       isOpen = true;\r
-               }\r
-\r
-               private void RegisterEventHandlers ()\r
-               {\r
-                       //dataTable.ColumnChanging += new DataColumnChangeEventHandler(OnColumnChanging);\r
-                       dataTable.ColumnChanged  += new DataColumnChangeEventHandler(OnColumnChanged);\r
-                       dataTable.RowChanged     += new DataRowChangeEventHandler(OnRowChanged);\r
-                       //dataTable.RowDeleting    += new DataRowChangeEventHandler(OnRowDeleting);\r
-                       dataTable.RowDeleted     += new DataRowChangeEventHandler(OnRowDeleted);\r
-                       dataTable.Columns.CollectionChanged += new CollectionChangeEventHandler(ColumnCollectionChanged);\r
-                       dataTable.Columns.CollectionMetaDataChanged += new CollectionChangeEventHandler(ColumnCollectionChanged);\r
-                       dataTable.Constraints.CollectionChanged += new CollectionChangeEventHandler(OnConstraintCollectionChanged);\r
-                       dataTable.ChildRelations.CollectionChanged += new CollectionChangeEventHandler(OnRelationCollectionChanged);\r
-                       dataTable.ParentRelations.CollectionChanged += new CollectionChangeEventHandler(OnRelationCollectionChanged);\r
-\r
-                       dataTable.Rows.ListChanged += new ListChangedEventHandler (OnRowCollectionChanged);\r
-               }\r
-\r
-               private void OnRowCollectionChanged (object sender, ListChangedEventArgs args)\r
-               {\r
-                       if (args.ListChangedType == ListChangedType.Reset) {\r
-                               rowCache = new DataRowView [0];\r
-                               UpdateIndex (true);\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1 ));\r
-                       }\r
-               }\r
-\r
-               private void UnregisterEventHandlers ()\r
-               {\r
-//                     dataTable.ColumnChanging -= new DataColumnChangeEventHandler(OnColumnChanging);\r
-                       dataTable.ColumnChanged  -= new DataColumnChangeEventHandler(OnColumnChanged);\r
-                       dataTable.RowChanged     -= new DataRowChangeEventHandler(OnRowChanged);\r
-//                     dataTable.RowDeleting    -= new DataRowChangeEventHandler(OnRowDeleting);\r
-                       dataTable.RowDeleted     -= new DataRowChangeEventHandler(OnRowDeleted);\r
-                       dataTable.Columns.CollectionChanged -= new CollectionChangeEventHandler(ColumnCollectionChanged);\r
-                       dataTable.Columns.CollectionMetaDataChanged -= new CollectionChangeEventHandler(ColumnCollectionChanged);\r
-                       dataTable.Constraints.CollectionChanged -= new CollectionChangeEventHandler(OnConstraintCollectionChanged);\r
-                       dataTable.ChildRelations.CollectionChanged -= new CollectionChangeEventHandler(OnRelationCollectionChanged);\r
-                       dataTable.ParentRelations.CollectionChanged -= new CollectionChangeEventHandler(OnRelationCollectionChanged);\r
-\r
-                       dataTable.Rows.ListChanged -= new ListChangedEventHandler (OnRowCollectionChanged);\r
-               }\r
-\r
-               // These index storing and rowView preservation must be done\r
-               // before the actual row value is changed; thus we can't use\r
-               // RowChanging which accepts "already modified" DataRow.\r
-\r
-               private void OnColumnChanged (object sender, DataColumnChangeEventArgs args)\r
-               {       /* not used */\r
-                       //UpdateIndex(true);\r
-               }\r
-\r
-               private void OnRowChanged (object sender, DataRowChangeEventArgs args)\r
-               {\r
-                       int oldIndex,newIndex;\r
-                       oldIndex = newIndex = -1;\r
-                       oldIndex = IndexOf (args.Row);\r
-                       UpdateIndex (true);\r
-                       newIndex = IndexOf (args.Row);\r
-\r
-                       /* ItemAdded */\r
-                       if (args.Action == DataRowAction.Add && oldIndex != newIndex)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemAdded, newIndex, -1));\r
-\r
-                       /* ItemChanged or ItemDeleted */\r
-                       if (args.Action == DataRowAction.Change) {\r
-                               if (oldIndex != -1 && oldIndex == newIndex)\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, newIndex, -1));\r
-                               else if (oldIndex != newIndex) {\r
-                                       if (newIndex < 0)\r
-                                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemDeleted, newIndex, oldIndex));\r
-                                       else\r
-                                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemMoved, newIndex, oldIndex));\r
-                               }\r
-                       }\r
-                       \r
-                       /* Rollback - ItemAdded or ItemDeleted */\r
-                       if (args.Action == DataRowAction.Rollback) {\r
-                               if (oldIndex < 0 && newIndex > -1)\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.ItemAdded, newIndex, -1));\r
-                               else if (oldIndex > -1 && newIndex < 0)\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.ItemDeleted, newIndex, oldIndex));\r
-                               else if (oldIndex != -1 && oldIndex == newIndex)\r
-                                       OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, newIndex, -1));\r
-                       }\r
-               }\r
-\r
-               private void OnRowDeleted (object sender, DataRowChangeEventArgs args)\r
-               {\r
-                       /* ItemDeleted */\r
-                       int newIndex, oldCount;\r
-                       oldCount = Count;\r
-                       newIndex = IndexOf (args.Row);\r
-                       UpdateIndex (true);\r
-                       /* Fire ListChanged only when the RowFilter is affected */\r
-                       if (oldCount != Count)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.ItemDeleted, newIndex, -1));\r
-               }\r
-\r
-               protected virtual void ColumnCollectionChanged (object sender, CollectionChangeEventArgs e)\r
-               {\r
-                       // UpdateIndex() is not invoked here (even if the sort\r
-                       // column is being removed).\r
-\r
-                       // PropertyDescriptor Add\r
-                       if (e.Action == CollectionChangeAction.Add)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorAdded, 0, 0));\r
-\r
-                       // PropertyDescriptor Removed\r
-                       if (e.Action == CollectionChangeAction.Remove)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorDeleted, 0, 0));\r
-\r
-                       // PropertyDescriptor Changed\r
-                       if (e.Action == CollectionChangeAction.Refresh)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorChanged, 0, 0));\r
-               }\r
-\r
-               private void OnConstraintCollectionChanged (object sender, CollectionChangeEventArgs args)\r
-               {\r
-                       //      The Sort variable is set to the UniqueConstraint column.\r
-                       //  if ApplyDefault Sort is true and Sort is null or is not set Explicitly\r
-\r
-                       // FIXME: The interal cache may change as result of change in Constraint collection\r
-                       // one such scenerio is taken care.\r
-                       // There may be more. I dont know what else can be done.\r
-                       /* useDefaultSort is set to false when Sort is set explicitly */\r
-                       if (args.Action == CollectionChangeAction.Add && args.Element is UniqueConstraint) {\r
-                               if (ApplyDefaultSort && useDefaultSort)\r
-                                       PopulateDefaultSort ((UniqueConstraint) args.Element);\r
-                       }\r
-                       // UpdateIndex() is not invoked here.\r
-               }\r
-\r
-               private void OnRelationCollectionChanged (object sender, CollectionChangeEventArgs args)\r
-               {\r
-                       /* PropertyDescriptor Add */\r
-                       if (args.Action == CollectionChangeAction.Add)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorAdded,0,0));\r
-\r
-                       /* PropertyDescriptor Removed */\r
-                       if (args.Action == CollectionChangeAction.Remove)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorDeleted,0,0));\r
-\r
-                       /* FIXME: PropertyDescriptor Changed ???*/\r
-                       if (args.Action == CollectionChangeAction.Refresh)\r
-                               OnListChanged (new ListChangedEventArgs (ListChangedType.PropertyDescriptorChanged,0,0));\r
-               }\r
-\r
-               // internal use by Mono\r
-               protected void Reset ()\r
-               {\r
-                       // TODO: what really happens?\r
-                       Close ();\r
-                       rowCache = new DataRowView [0];\r
-                       Open ();\r
-                       OnListChanged (new ListChangedEventArgs (ListChangedType.Reset, -1, -1 ));\r
-               }\r
-\r
-               protected void UpdateIndex ()\r
-               {\r
-                       UpdateIndex (false);\r
-               }\r
-\r
-               // This is method is internal to\r
-               // the Mono implementation of DataView; it\r
-               // is not to be used from your code.\r
-               //\r
-               // Update the DataRowView array which is an index cache\r
-               // into the DataTable's DataRowCollection.\r
-               //\r
-               // I assume this is what UpdateIndex is used for\r
-               protected virtual void UpdateIndex (bool force)\r
-               {\r
-                       if (Table == null)\r
-                               // FIXME\r
-                               return;\r
-\r
-                       if (Index == null || force) {\r
-                               sortColumns = DataTable.ParseSortString(Table, Sort, out sortOrder, false);\r
-                               Index = dataTable.GetIndex(sortColumns,sortOrder,RowStateFilter,FilterExpression,true);\r
-                       } else {\r
-                               Index.Key.RowStateFilter = RowStateFilter;\r
-                               Index.Reset();\r
-                       }\r
-\r
-                       int[] records = Index.GetAll ();\r
-\r
-                       if (records != null)\r
-                               InitDataRowViewArray (records,Index.Size);\r
-                       else\r
-                               rowCache = new DataRowView [0];\r
-               }\r
-\r
-               internal virtual IExpression FilterExpression {\r
-                       get { return rowFilterExpr; }\r
-               }\r
-\r
-               private void InitDataRowViewArray (int [] records, int size)\r
-               {\r
-                       if (_lastAdded != null)\r
-                               rowCache = new DataRowView [size + 1];\r
-                       else\r
-                               rowCache = new DataRowView [size];\r
-\r
-                       for (int r = 0; r < size; r++)\r
-                               rowCache [r] = new DataRowView (this, Table.RecordCache [records [r]],r);\r
-\r
-                       if (_lastAdded != null)\r
-                               rowCache [size] = new DataRowView (this, _lastAdded, size);\r
-               }\r
-\r
-               PropertyDescriptorCollection ITypedList.GetItemProperties (PropertyDescriptor [] listAccessors)\r
-               {\r
-                       if (dataTable == null)\r
-                               return new PropertyDescriptorCollection (new PropertyDescriptor [0]);\r
-\r
-                       // FIXME: use listAccessors somehow\r
-                       PropertyDescriptor [] descriptors =\r
-                               new PropertyDescriptor [dataTable.Columns.Count + dataTable.ChildRelations.Count];\r
-\r
-                       int d = 0;\r
-                       for (int col = 0; col < dataTable.Columns.Count; col ++) {\r
-                               DataColumn dataColumn = dataTable.Columns[col];\r
-                               DataColumnPropertyDescriptor descriptor;\r
-\r
-                               descriptor = new DataColumnPropertyDescriptor (dataColumn.ColumnName, col, null);\r
-                               descriptor.SetComponentType (typeof (System.Data.DataRowView));\r
-                               descriptor.SetPropertyType (dataColumn.DataType);\r
-                               descriptor.SetReadOnly (dataColumn.ReadOnly);\r
-                               descriptor.SetBrowsable (dataColumn.ColumnMapping != MappingType.Hidden);\r
-                               descriptors [d++] = descriptor;\r
-                       }\r
-                       for (int rel = 0; rel < dataTable.ChildRelations.Count; rel ++) {\r
-                               DataRelation dataRelation = dataTable.ChildRelations [rel];\r
-                               DataRelationPropertyDescriptor descriptor;\r
-\r
-                               descriptor = new DataRelationPropertyDescriptor (dataRelation);\r
-                               descriptors [d++] = descriptor;\r
-                       }\r
-\r
-                       return new PropertyDescriptorCollection (descriptors);\r
-               }\r
-\r
-\r
-               private int IndexOf (DataRow dr)\r
-               {\r
-                       for (int i=0; i < rowCache.Length; i++)\r
-                               if (dr.Equals (rowCache [i].Row))\r
-                               return i;\r
-                       return -1;\r
-               }\r
-\r
-               private void PopulateDefaultSort ()\r
-               {\r
-                       sort = string.Empty;\r
-                       foreach (Constraint c in dataTable.Constraints) {\r
-                               if (c is UniqueConstraint) {\r
-                                       PopulateDefaultSort ((UniqueConstraint) c);\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void PopulateDefaultSort (UniqueConstraint uc)\r
-               {\r
-                       if (isInitPhase)\r
-                               return;\r
-\r
-                       DataColumn [] columns = uc.Columns;\r
-                       if (columns.Length == 0) {\r
-                               sort = String.Empty;\r
-                               return;\r
-                       }\r
-\r
-                       StringBuilder builder = new StringBuilder ();\r
-                       builder.Append (columns[0].ColumnName);\r
-                       for (int i = 1; i < columns.Length; i++) {\r
-                               builder.Append (", ");\r
-                               builder.Append (columns [i].ColumnName);\r
-                       }\r
-                       sort = builder.ToString ();\r
-               }\r
-\r
-               internal DataView CreateChildView (DataRelation relation, int index)\r
-               {\r
-                       if (relation == null || relation.ParentTable != Table)\r
-                               throw new ArgumentException("The relation is not parented to the table to which this DataView points.");\r
-\r
-                       int record = GetRecord (index);\r
-                       object[] keyValues = new object [relation.ParentColumns.Length];\r
-                       for (int i = 0; i < relation.ParentColumns.Length; i++)\r
-                               keyValues [i] = relation.ParentColumns [i] [record];\r
-\r
-                       return new RelatedDataView (relation.ChildColumns, keyValues);\r
-               }\r
-\r
-               private int GetRecord (int index)\r
-               {\r
-                       if (index < 0 || index >= Count)\r
-                               throw new IndexOutOfRangeException(String.Format("There is no row at position {0}.", index));\r
-\r
-                       return (index == Index.Size) ?\r
-                               _lastAdded.IndexFromVersion (DataRowVersion.Default) :\r
-                               Index.IndexToRecord (index);\r
-               }\r
-\r
-               internal DataRowVersion GetRowVersion (int index)\r
-               {\r
-                       int record = GetRecord (index);\r
-                       return Table.RecordCache [record].VersionFromIndex (record);\r
-               }\r
-       }\r
-\r
-       partial class DataView : ITypedList {\r
-               string ITypedList.GetListName (PropertyDescriptor [] listAccessors)\r
-               {\r
-                       if (dataTable != null)\r
-                               return dataTable.TableName;\r
-                       return string.Empty;\r
-               }\r
-       }\r
-\r
-       partial class DataView : ICollection {\r
-               bool ICollection.IsSynchronized {\r
-                       get { return false; }\r
-               }\r
-\r
-               object ICollection.SyncRoot {\r
-                       get { return this; }\r
-               }\r
-       }\r
-\r
-       partial class DataView : IList {\r
-               bool IList.IsFixedSize {\r
-                       get { return false; }\r
-               }\r
-\r
-               bool IList.IsReadOnly {\r
-                       get { return false; }\r
-               }\r
-\r
-               object IList.this [int recordIndex] {\r
-                       get { return this [recordIndex]; }\r
-                       [MonoTODO]\r
-                       set { throw new InvalidOperationException (); }\r
-               }\r
-\r
-               int IList.Add (object value)\r
-               {\r
-                       throw new ArgumentException ("Cannot add external objects to this list.");\r
-               }\r
-\r
-               void IList.Clear ()\r
-               {\r
-                       throw new ArgumentException ("Cannot clear this list.");\r
-               }\r
-\r
-               bool IList.Contains (object value)\r
-               {\r
-                       DataRowView drv = value as DataRowView;\r
-                       if (drv == null)\r
-                               return false;\r
-\r
-                       return drv.DataView == this;\r
-               }\r
-\r
-               int IList.IndexOf (object value)\r
-               {\r
-                       DataRowView drv = value as DataRowView;\r
-                       if (drv != null && drv.DataView == this)\r
-                               return drv.Index;\r
-                       return -1;\r
-               }\r
-\r
-               void IList.Insert (int index,object value)\r
-               {\r
-                       throw new ArgumentException ("Cannot insert external objects to this list.");\r
-               }\r
-\r
-               void IList.Remove (object value)\r
-               {\r
-                       DataRowView drv = value as DataRowView;\r
-                       if (drv != null && drv.DataView == this)\r
-                               ((IList) this).RemoveAt (drv.Index);\r
-\r
-                       throw new ArgumentException ("Cannot remove external objects to this list.");\r
-               }\r
-\r
-               void IList.RemoveAt (int index)\r
-               {\r
-                       Delete (index);\r
-               }\r
-       }\r
-\r
-       partial class DataView : IBindingList {\r
-               [MonoTODO]\r
-               void IBindingList.AddIndex (PropertyDescriptor property)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               object IBindingList.AddNew ()\r
-               {\r
-                       return this.AddNew ();\r
-               }\r
-\r
-               void IBindingList.ApplySort (PropertyDescriptor property, ListSortDirection direction)\r
-               {\r
-                       if (!(property is DataColumnPropertyDescriptor))\r
-                               throw new ArgumentException ("Dataview accepts only DataColumnPropertyDescriptors", "property");\r
-                       sortProperty = property;\r
-                       string sort = String.Format ("[{0}]" , property.Name);\r
-                       if (direction == ListSortDirection.Descending)\r
-                               sort += " DESC";\r
-                       this.Sort = sort;\r
-               }\r
-\r
-               int IBindingList.Find (PropertyDescriptor property, object key)\r
-               {\r
-                       DataColumn dc = Table.Columns [property.Name];\r
-                       Index index = Table.FindIndex (new DataColumn [] {dc}, sortOrder, RowStateFilter, FilterExpression);\r
-                       if (index == null)\r
-                               index = new Index (new Key (Table, new DataColumn [] {dc}, sortOrder, RowStateFilter, FilterExpression));\r
-\r
-                       return index.FindIndex (new object [] {key});\r
-               }\r
-\r
-               [MonoTODO]\r
-               void IBindingList.RemoveIndex (PropertyDescriptor property)\r
-               {\r
-                       throw new NotImplementedException ();\r
-               }\r
-\r
-               void IBindingList.RemoveSort ()\r
-               {\r
-                       sortProperty = null;\r
-                       this.Sort = String.Empty;\r
-               }\r
-\r
-               bool IBindingList.AllowEdit {\r
-                       get { return AllowEdit; }\r
-               }\r
-\r
-               bool IBindingList.AllowNew {\r
-                       get { return AllowNew; }\r
-               }\r
-\r
-               bool IBindingList.AllowRemove {\r
-                       [MonoTODO]\r
-                       get { return AllowDelete; }\r
-               }\r
-\r
-               bool IBindingList.IsSorted {\r
-                       get { return (Sort != null && Sort.Length != 0); }\r
-               }\r
-\r
-               ListSortDirection IBindingList.SortDirection {\r
-                       get {\r
-                               if (sortOrder != null && sortOrder.Length > 0)\r
-                                       return sortOrder [0];\r
-                               return ListSortDirection.Ascending;\r
-                       }\r
-               }\r
-\r
-               PropertyDescriptor IBindingList.SortProperty {\r
-                       get {\r
-                               if (sortProperty == null && sortColumns != null && sortColumns.Length > 0) {\r
-                                       // return property from Sort String\r
-                                       PropertyDescriptorCollection properties = ((ITypedList)this).GetItemProperties (null);\r
-                                       return properties.Find (sortColumns [0].ColumnName, false);\r
-                               }\r
-                               return sortProperty;\r
-                       }\r
-               }\r
-\r
-               bool IBindingList.SupportsChangeNotification {\r
-                       get { return true; }\r
-               }\r
-\r
-               bool IBindingList.SupportsSearching {\r
-                       get { return true; }\r
-               }\r
-\r
-               bool IBindingList.SupportsSorting {\r
-                       get { return true; }\r
-               }\r
-       }\r
-\r
-       partial class DataView : IBindingListView {\r
-               string IBindingListView.Filter {\r
-                       get { return ((DataView) this).RowFilter; }\r
-                       set { ((DataView) this).RowFilter = value; }\r
-               }\r
-\r
-               ListSortDescriptionCollection IBindingListView.SortDescriptions {\r
-                       get {\r
-                               var l = new List<ListSortDescription> ();\r
-                               for (int i = 0; i < sortColumns.Length; ++i) {\r
-                                       ListSortDescription ldesc = new ListSortDescription (\r
-                                                                               new DataColumnPropertyDescriptor (sortColumns [i]),\r
-                                                                               sortOrder [i]);\r
-                                       l.Add (ldesc);\r
-                               }\r
-                               return new ListSortDescriptionCollection (l.ToArray ());\r
-                       }\r
-               }\r
-\r
-               bool IBindingListView.SupportsAdvancedSorting {\r
-                       get { return true; }\r
-               }\r
-\r
-               bool IBindingListView.SupportsFiltering {\r
-                       get { return true; }\r
-               }\r
-\r
-               [MonoTODO]\r
-               void IBindingListView.ApplySort (ListSortDescriptionCollection sorts)\r
-               {\r
-                       StringBuilder sb = new StringBuilder ();\r
-                       foreach (ListSortDescription ldesc in sorts)\r
-                               sb.AppendFormat ("[{0}]{1},", ldesc.PropertyDescriptor.Name,\r
-                                       (ldesc.SortDirection == ListSortDirection.Descending ? " DESC" : string.Empty));\r
-                       this.Sort = sb.ToString (0, sb.Length-1);\r
-               }\r
-\r
-               void IBindingListView.RemoveFilter ()\r
-               {\r
-                       ((IBindingListView) this).Filter = string.Empty;\r
-               }\r
-       }\r
-\r
-       partial class DataView : ISupportInitializeNotification {\r
-               private bool dataViewInitialized = true;\r
-\r
-               [Browsable (false)]\r
-               public bool IsInitialized {\r
-                       get { return dataViewInitialized; }\r
-               }\r
-\r
-               public event EventHandler Initialized;\r
-\r
-               partial void DataViewInitialized (bool value)\r
-               {\r
-                       dataViewInitialized = value;\r
-                       if (value)\r
-                               OnDataViewInitialized (new EventArgs ());\r
-               }\r
-\r
-               private void OnDataViewInitialized (EventArgs e)\r
-               {\r
-                       if (null != Initialized)\r
-                               Initialized (this, e);\r
-               }\r
-       }\r
-\r
-       partial class DataView {\r
-               public virtual bool Equals (DataView view)\r
-               {\r
-                       if (this == view)\r
-                               return true;\r
-                       if (!(this.Table == view.Table && this.Sort == view.Sort &&\r
-                               this.RowFilter == view.RowFilter &&\r
-                               this.RowStateFilter == view.RowStateFilter &&\r
-                               this.AllowEdit == view.AllowEdit &&\r
-                               this.AllowNew == view.AllowNew &&\r
-                               this.AllowDelete == view.AllowDelete &&\r
-                               this.Count == view.Count))\r
-                               return false;\r
-\r
-                       for (int i = 0; i < Count; ++i)\r
-                               if (!this [i].Equals (view [i]))\r
-                                       return false;\r
-                       return true;\r
-               }\r
-               public DataTable ToTable ()\r
-               {\r
-                       return this.ToTable (Table.TableName, false, new string[] {});\r
-               }\r
-\r
-               public DataTable ToTable (string tableName)\r
-               {\r
-                       return this.ToTable (tableName, false, new string[] {});\r
-               }\r
-\r
-               public DataTable ToTable (bool distinct, params string[] columnNames)\r
-               {\r
-                       return this.ToTable (Table.TableName, distinct, columnNames);\r
-               }\r
-\r
-               public DataTable ToTable (string tableName, bool distinct, params string[] columnNames)\r
-               {\r
-                       if (columnNames == null)\r
-                               throw new ArgumentNullException ("columnNames", "'columnNames' argument cannot be null.");\r
-\r
-                       DataTable newTable = new DataTable (tableName);\r
-\r
-                       DataColumn[] columns;\r
-                       ListSortDirection[] sortDirection = null;\r
-                       if (columnNames.Length > 0) {\r
-                               columns = new DataColumn [columnNames.Length];\r
-                               for (int i=0; i < columnNames.Length; ++i)\r
-                                       columns [i] = Table.Columns [columnNames [i]];\r
-\r
-                               if (sortColumns != null) {\r
-                                       sortDirection = new ListSortDirection [columnNames.Length];\r
-                                       for (int i=0; i < columnNames.Length; ++i) {\r
-                                               sortDirection [i] = ListSortDirection.Ascending;\r
-                                               for (int j = 0; j < sortColumns.Length; ++j) {\r
-                                                       if (sortColumns [j] != columns [i])\r
-                                                               continue;\r
-                                                       sortDirection [i] = sortOrder [j];\r
-                                               }\r
-                                       }\r
-                               }\r
-                       } else {\r
-                               columns = (DataColumn[]) Table.Columns.ToArray (typeof (DataColumn));\r
-                               sortDirection = sortOrder;\r
-                       }\r
-\r
-                       ArrayList expressionCols = new ArrayList ();\r
-                       for (int i = 0; i < columns.Length; ++i) {\r
-                               DataColumn col = columns [i].Clone ();\r
-                               if (col.Expression != String.Empty) {\r
-                                       col.Expression = string.Empty;\r
-                                       expressionCols.Add (col);\r
-                               }\r
-                               if (col.ReadOnly)\r
-                                       col.ReadOnly = false;\r
-                               newTable.Columns.Add (col);\r
-                       }\r
-\r
-                       DataRow [] rows;\r
-\r
-                       // Get the index from index collection of the data table.\r
-                       Index index = null;\r
-                       if (sort != string.Empty)\r
-                               index = Table.GetIndex(sortColumns,sortOrder,RowStateFilter,FilterExpression,true);\r
-                       else\r
-                               index = new Index (new Key(Table, columns, sortDirection, RowStateFilter, rowFilterExpr));\r
-                       \r
-                       if (distinct)\r
-                               rows = index.GetDistinctRows ();\r
-                       else\r
-                               rows = index.GetAllRows ();\r
-\r
-                       foreach (DataRow row in rows) {\r
-                               DataRow newRow = newTable.NewNotInitializedRow ();\r
-                               newTable.Rows.AddInternal (newRow);\r
-                               newRow.Original = -1;\r
-                               if (row.HasVersion (DataRowVersion.Current))\r
-                                       newRow.Current = newTable.RecordCache.CopyRecord (Table, row.Current, -1);\r
-                               else if (row.HasVersion (DataRowVersion.Original))\r
-                                       newRow.Current = newTable.RecordCache.CopyRecord (Table, row.Original, -1);\r
-\r
-                               foreach (DataColumn col in expressionCols)\r
-                                       newRow [col] = row [col.ColumnName];\r
-                               newRow.Original = -1;\r
-                       }\r
-                       return newTable;\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataViewManager.cs b/mcs/class/System.Data/System.Data/DataViewManager.cs
deleted file mode 100644 (file)
index 6417e41..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-//\r
-// System.Data.DataViewManager\r
-//\r
-// Author:\r
-//   Rodrigo Moya (rodrigo@ximian.com)\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//   Atsushi Enomoto (atsushi@ximian.com)\r
-//   Ivan N. Zlatev (contact@i-nz.net)\r
-//\r
-// (C) Ximian, Inc. 2002\r
-// Copyright (C) Tim Coleman, 2002\r
-// Copyright (C) 2005 Novell Inc,\r
-//\r
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.Collections;\r
-using System.ComponentModel;\r
-using System.IO;\r
-using System.Xml;\r
-\r
-namespace System.Data\r
-{\r
-       /// <summary>\r
-       /// Contains a default DataViewSettingCollection for each DataTable in a DataSet.\r
-       /// </summary>\r
-       //[Designer]\r
-       [DesignerAttribute ("Microsoft.VSDesigner.Data.VS.DataViewManagerDesigner, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.IDesigner")]\r
-       public class DataViewManager : MarshalByValueComponent, IBindingList, ICollection, IList, ITypedList, IEnumerable\r
-       {\r
-               #region Fields\r
-\r
-               DataSet dataSet;\r
-               DataViewManagerListItemTypeDescriptor descriptor;\r
-               DataViewSettingCollection settings;\r
-               string xml;\r
-\r
-               #endregion // Fields\r
-\r
-               #region Constructors\r
-\r
-               public DataViewManager ()\r
-                       : this (null)\r
-               {\r
-               }\r
-\r
-               public DataViewManager (DataSet dataSet)\r
-               {\r
-                       // Null argument is allowed here.\r
-                       SetDataSet (dataSet);\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Properties\r
-\r
-               [DefaultValue (null)]\r
-               public DataSet DataSet {\r
-                       get { return dataSet; }\r
-                       set {\r
-                               if (value == null)\r
-                                       throw new DataException ("Cannot set null DataSet.");\r
-                               SetDataSet (value);\r
-                       }\r
-               }\r
-\r
-               public string DataViewSettingCollectionString {\r
-                       get { return xml; }\r
-                       set {\r
-                               try {\r
-                                       ParseSettingString (value);\r
-                                       xml = BuildSettingString ();\r
-                               } catch (XmlException ex) {\r
-                                       throw new DataException ("Cannot set DataViewSettingCollectionString.", ex);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]\r
-               public DataViewSettingCollection DataViewSettings {\r
-                       get { return settings; }\r
-               }\r
-\r
-               int ICollection.Count {\r
-                       get { return 1; }\r
-               }\r
-\r
-               bool ICollection.IsSynchronized {\r
-                       get { return false; }\r
-               }\r
-\r
-               object ICollection.SyncRoot {\r
-                       get { return this; }\r
-               }\r
-\r
-               bool IList.IsFixedSize {\r
-                       get { return true; }\r
-               }\r
-\r
-               bool IList.IsReadOnly {\r
-                       get { return true; }\r
-               }\r
-\r
-               object IList.this [int index] {\r
-                       get { \r
-                               if (descriptor == null)\r
-                                       descriptor = new DataViewManagerListItemTypeDescriptor (this);\r
-\r
-                               return descriptor;\r
-                       }\r
-\r
-                       set { throw new ArgumentException ("Not modifiable"); }\r
-               }\r
-\r
-               bool IBindingList.AllowEdit {\r
-                       get { return false; }\r
-               }\r
-\r
-               bool IBindingList.AllowNew {\r
-                       get { return false; }\r
-               }\r
-\r
-               bool IBindingList.AllowRemove {\r
-                       get { return false; }\r
-               }\r
-\r
-               bool IBindingList.IsSorted {\r
-                       get { throw new NotSupportedException (); }\r
-               }\r
-\r
-               ListSortDirection IBindingList.SortDirection {\r
-                       get { throw new NotSupportedException (); }\r
-               }\r
-\r
-               PropertyDescriptor IBindingList.SortProperty {\r
-                       get { throw new NotSupportedException (); }\r
-               }\r
-\r
-               bool IBindingList.SupportsChangeNotification {\r
-                       get { return true; }\r
-               }\r
-\r
-               bool IBindingList.SupportsSearching {\r
-                       get { return false; }\r
-               }\r
-\r
-               bool IBindingList.SupportsSorting {\r
-                       get { return false; }\r
-               }\r
-\r
-               #endregion // Properties\r
-\r
-               #region Methods\r
-\r
-               private void SetDataSet (DataSet ds)\r
-               {\r
-                       if (dataSet != null) {\r
-                               dataSet.Tables.CollectionChanged -= new CollectionChangeEventHandler (TableCollectionChanged);\r
-                               dataSet.Relations.CollectionChanged -= new CollectionChangeEventHandler (RelationCollectionChanged);\r
-                       }\r
-\r
-                       dataSet = ds;\r
-                       settings = new DataViewSettingCollection (this);\r
-                       xml = BuildSettingString ();\r
-\r
-                       if (dataSet != null) {\r
-                               dataSet.Tables.CollectionChanged += new CollectionChangeEventHandler (TableCollectionChanged);\r
-                               dataSet.Relations.CollectionChanged += new CollectionChangeEventHandler (RelationCollectionChanged);\r
-                       }\r
-               }\r
-\r
-               private void ParseSettingString (string source)\r
-               {\r
-                       XmlTextReader xtr = new XmlTextReader (source,\r
-                               XmlNodeType.Element, null);\r
-\r
-                       xtr.Read ();\r
-                       if (xtr.Name != "DataViewSettingCollectionString")\r
-                               // easy way to throw the expected exception ;-)\r
-                       xtr.ReadStartElement ("DataViewSettingCollectionString");\r
-                       if (xtr.IsEmptyElement)\r
-                               return; // MS does not change the value.\r
-\r
-                       xtr.Read ();\r
-                       do {\r
-                               xtr.MoveToContent ();\r
-                               if (xtr.NodeType == XmlNodeType.EndElement)\r
-                                       break;\r
-                               if (xtr.NodeType == XmlNodeType.Element)\r
-                                       ReadTableSetting (xtr);\r
-                               else\r
-                                       xtr.Skip ();\r
-                       } while (!xtr.EOF);\r
-                       if (xtr.NodeType == XmlNodeType.EndElement)\r
-                               xtr.ReadEndElement ();\r
-               }\r
-\r
-               private void ReadTableSetting (XmlReader reader)\r
-               {\r
-                       // Namespace is ignored BTW.\r
-                       DataTable dt = DataSet.Tables [XmlConvert.DecodeName (\r
-                               reader.LocalName)];\r
-                       // The code below might result in NullReference error.\r
-                       DataViewSetting s = settings [dt];\r
-                       string sort = reader.GetAttribute ("Sort");\r
-                       if (sort != null)\r
-                               s.Sort = sort.Trim ();\r
-                       string ads = reader.GetAttribute ("ApplyDefaultSort");\r
-                       if (ads != null && ads.Trim () == "true")\r
-                               s.ApplyDefaultSort = true;\r
-                       string rowFilter = reader.GetAttribute ("RowFilter");\r
-                       if (rowFilter != null)\r
-                               s.RowFilter = rowFilter.Trim ();\r
-                       string rsf = reader.GetAttribute ("RowStateFilter");\r
-                       if (rsf != null)\r
-                               s.RowStateFilter = (DataViewRowState)\r
-                                       Enum.Parse (typeof (DataViewRowState), \r
-                                       rsf.Trim ());\r
-                       reader.Skip ();\r
-               }\r
-\r
-               private string BuildSettingString ()\r
-               {\r
-                       if (dataSet == null)\r
-                               return String.Empty;\r
-\r
-                       StringWriter sw = new StringWriter ();\r
-                       sw.Write ('<');\r
-                       sw.Write ("DataViewSettingCollectionString>");\r
-                       foreach (DataViewSetting s in DataViewSettings) {\r
-                               sw.Write ('<');\r
-                               sw.Write (XmlConvert.EncodeName (\r
-                                               s.Table.TableName));\r
-                               sw.Write (" Sort=\"");\r
-                               sw.Write (Escape (s.Sort));\r
-                               sw.Write ('"');\r
-                               // LAMESPEC: MS.NET does not seem to handle this property as expected.\r
-                               if (s.ApplyDefaultSort)\r
-                                       sw.Write (" ApplyDefaultSort=\"true\"");\r
-                               sw.Write (" RowFilter=\"");\r
-                               sw.Write (Escape (s.RowFilter));\r
-                               sw.Write ("\" RowStateFilter=\"");\r
-                               sw.Write (s.RowStateFilter.ToString ());\r
-                               sw.Write ("\"/>");\r
-                       }\r
-                       sw.Write ("</DataViewSettingCollectionString>");\r
-                       return sw.ToString ();\r
-               }\r
-\r
-               private string Escape (string s)\r
-               {\r
-                       return s.Replace ("&", "&amp;")\r
-                               .Replace ("\"", "&quot;")\r
-                               .Replace ("\'", "&apos;")\r
-                               .Replace ("<", "&lt;")\r
-                               .Replace (">", "&gt;");\r
-               }\r
-\r
-               public DataView CreateDataView (DataTable table)\r
-               {\r
-                       if (settings [table] != null) {\r
-                               DataViewSetting s = settings [table];\r
-                               return new DataView (table, this, s.Sort, s.RowFilter, s.RowStateFilter);\r
-                       } else {\r
-                               return new DataView (table);\r
-                       }\r
-               }\r
-\r
-               void IBindingList.AddIndex (PropertyDescriptor property)\r
-               {\r
-               }\r
-       \r
-               object IBindingList.AddNew ()\r
-               {\r
-                       throw new NotSupportedException ();\r
-               }\r
-       \r
-               void IBindingList.ApplySort (PropertyDescriptor property, ListSortDirection direction)\r
-               {\r
-                       throw new NotSupportedException ();\r
-               }\r
-       \r
-               int IBindingList.Find (PropertyDescriptor property, object key)\r
-               {\r
-                       throw new NotSupportedException ();\r
-               }\r
-       \r
-               void IBindingList.RemoveIndex (PropertyDescriptor property)\r
-               {\r
-               }\r
-       \r
-               void IBindingList.RemoveSort ()\r
-               {\r
-                       throw new NotSupportedException ();\r
-               }\r
-       \r
-               void ICollection.CopyTo (Array array, int index)\r
-               {\r
-                       array.SetValue (descriptor, index);\r
-               }\r
-       \r
-               IEnumerator IEnumerable.GetEnumerator ()\r
-               {\r
-                       DataViewManagerListItemTypeDescriptor[] array = new DataViewManagerListItemTypeDescriptor[((ICollection)this).Count];\r
-                       ((ICollection)this).CopyTo (array, 0);\r
-                       return array.GetEnumerator ();\r
-               }\r
-       \r
-               int IList.Add (object value)\r
-               {\r
-                       throw new ArgumentException ("Not modifiable");\r
-               }\r
-       \r
-               void IList.Clear ()\r
-               {\r
-                       throw new ArgumentException ("Not modifiable");\r
-               }\r
-       \r
-               bool IList.Contains (object value)\r
-               {\r
-                       return value == descriptor;\r
-               }\r
-       \r
-               int IList.IndexOf (object value)\r
-               {\r
-                       if (value == descriptor)\r
-                               return 0;\r
-                       return -1;\r
-               }\r
-       \r
-               void IList.Insert (int index, object value)\r
-               {\r
-                       throw new ArgumentException ("Not modifiable");\r
-               }\r
-       \r
-               void IList.Remove (object value)\r
-               {\r
-                       throw new ArgumentException ("Not modifiable");\r
-               }\r
-       \r
-               void IList.RemoveAt (int index)\r
-               {\r
-                       throw new ArgumentException ("Not modifiable");\r
-               }\r
-       \r
-               [MonoLimitation("Supported only empty list of listAccessors")]\r
-               PropertyDescriptorCollection ITypedList.GetItemProperties (PropertyDescriptor[] listAccessors)\r
-               {\r
-                       if (dataSet == null)\r
-                               throw new DataException ("dataset is null");\r
-\r
-                       if (listAccessors == null || listAccessors.Length == 0) {\r
-                               ICustomTypeDescriptor desc = new DataViewManagerListItemTypeDescriptor (this);\r
-                               return desc.GetProperties ();\r
-                       }\r
-                               \r
-                       throw new NotImplementedException ();\r
-               }\r
-       \r
-               string ITypedList.GetListName (PropertyDescriptor[] listAccessors)\r
-               {\r
-                       if (dataSet != null) {\r
-                               if (listAccessors == null || listAccessors.Length == 0)\r
-                                       return  dataSet.DataSetName;\r
-                       }\r
-                       \r
-                       return string.Empty;\r
-               }\r
-       \r
-               protected virtual void OnListChanged (ListChangedEventArgs e)\r
-               {\r
-                       if (ListChanged != null)\r
-                               ListChanged (this, e);\r
-               }\r
-\r
-               protected virtual void RelationCollectionChanged (object sender, CollectionChangeEventArgs e)\r
-               {\r
-                       this.OnListChanged (CollectionToListChangeEventArgs (e));\r
-               }\r
-\r
-               protected virtual void TableCollectionChanged (object sender, CollectionChangeEventArgs e)\r
-               {\r
-                       this.OnListChanged (CollectionToListChangeEventArgs (e));\r
-               }\r
-\r
-               private ListChangedEventArgs CollectionToListChangeEventArgs (CollectionChangeEventArgs e)\r
-               {\r
-                       ListChangedEventArgs args;\r
-\r
-                       if (e.Action == CollectionChangeAction.Remove)\r
-                               args = null;\r
-                       else if (e.Action == CollectionChangeAction.Refresh)\r
-                               args = new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, null);\r
-                       else { \r
-                              object obj;\r
-                              \r
-                              if (typeof (DataTable).IsAssignableFrom (e.Element.GetType()))\r
-                                      obj = new DataTablePropertyDescriptor ((DataTable) e.Element);\r
-                              else // Assume a DataRelation\r
-                                      obj = new DataRelationPropertyDescriptor((DataRelation) e.Element);\r
-                              \r
-                              if (e.Action == CollectionChangeAction.Add)\r
-                                      args = new ListChangedEventArgs(ListChangedType.PropertyDescriptorAdded, (PropertyDescriptor) obj);\r
-                              else\r
-                                      args = new ListChangedEventArgs(ListChangedType.PropertyDescriptorDeleted, (PropertyDescriptor) obj);\r
-                       }\r
-                       \r
-                       return args;\r
-               }\r
-\r
-               #endregion // Methods\r
-\r
-               #region Events\r
-\r
-               public event ListChangedEventHandler ListChanged;\r
-\r
-               #endregion // Events\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/DataViewManagerListItemTypeDescriptor.cs b/mcs/class/System.Data/System.Data/DataViewManagerListItemTypeDescriptor.cs
deleted file mode 100644 (file)
index b82e0be..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// System.Data.DataViewManagerListItemTypeDscriptor
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//      Jackson Harper  (jackson@ximian.com)
-//
-// (C) 2002 Ximian, Inc (http://www.ximian.com)
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       class DataViewManagerListItemTypeDescriptor : ICustomTypeDescriptor
-       {
-               DataViewManager dvm;
-               //PropertyDescriptorCollection propsCollection;
-
-               internal DataViewManagerListItemTypeDescriptor (DataViewManager dvm)
-               {
-                       this.dvm = dvm;
-               }
-
-               internal DataViewManager DataViewManager {
-                       get { return dvm; }
-               }
-
-               AttributeCollection ICustomTypeDescriptor.GetAttributes ()
-               {
-                       return new AttributeCollection (null);
-               }
-
-               string ICustomTypeDescriptor.GetClassName ()
-               {
-                       return null;
-               }
-
-               string ICustomTypeDescriptor.GetComponentName ()
-               {
-                       return null;
-               }
-
-               TypeConverter ICustomTypeDescriptor.GetConverter ()
-               {
-                       return null;
-               }
-
-               EventDescriptor ICustomTypeDescriptor.GetDefaultEvent ()
-               {
-                       return null;
-               }
-
-               PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty ()
-               {
-                       return null;
-               }
-
-               object ICustomTypeDescriptor.GetEditor (Type editorBaseType)
-               {
-                       return null;
-               }
-
-               EventDescriptorCollection ICustomTypeDescriptor.GetEvents ()
-               {
-                       return new EventDescriptorCollection (null);
-               }
-
-               EventDescriptorCollection ICustomTypeDescriptor.GetEvents (System.Attribute[] attributes)
-               {
-                       return new EventDescriptorCollection (null);
-               }
-
-               public PropertyDescriptorCollection GetProperties ()
-               {
-                       DataSet ds = dvm.DataSet;
-                       if (ds == null)
-                               return null;
-
-                       DataTableCollection tables = ds.Tables;
-                       int index = 0;
-                       PropertyDescriptor [] descriptors  = new PropertyDescriptor [tables.Count];
-                       foreach (DataTable table in tables)
-                               descriptors [index++] = new DataTablePropertyDescriptor (table);
-
-                       return new PropertyDescriptorCollection (descriptors);
-               }
-
-               PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties (System.Attribute[] attributes)
-               {
-                       return this.GetProperties ();
-               }
-
-               object ICustomTypeDescriptor.GetPropertyOwner (PropertyDescriptor pd)
-               {
-                       return this;
-               }
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/DataViewRowState.cs b/mcs/class/System.Data/System.Data/DataViewRowState.cs
deleted file mode 100644 (file)
index 5f24c90..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Data.DataViewRowState.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Describes the version of data in a DataRow.
-       /// This enumeration has a FlagsAttribute that allows a bitwise combination of its member values.
-       /// </summary>
-       [Flags]
-       [EditorAttribute("Microsoft.VSDesigner.Data.Design.DataViewRowStateEditor, "+Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+Consts.AssemblySystem_Drawing )]
-       public enum DataViewRowState
-       {
-               None = 0,
-               Unchanged = 2,
-               Added = 4,
-               Deleted = 8,
-               ModifiedCurrent = 16,
-               CurrentRows = Unchanged | Added | ModifiedCurrent,
-               ModifiedOriginal = 32,
-               OriginalRows = Unchanged | Deleted | ModifiedOriginal
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataViewSetting.cs b/mcs/class/System.Data/System.Data/DataViewSetting.cs
deleted file mode 100644 (file)
index 7ebe2ed..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// System.Data.DataViewSetting
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Tim Coleman (tim@timcoleman.com)
-//   Atsushi Enomoto (atsushi@ximian.com)
-//
-// (C) Ximian, Inc. 2002
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2005 Novell Inc,
-//
-
-//
-// Copyright (C) 2004-05 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ComponentModel;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the default settings for ApplyDefaultSort, DataViewManager, RowFilter, RowStateFilter, Sort, and Table for DataViews created from the DataViewManager.
-       /// </summary>
-       [TypeConverterAttribute (typeof (ExpandableObjectConverter))]
-       public class DataViewSetting
-       {
-               #region Fields
-
-               bool applyDefaultSort;
-               DataViewManager dataViewManager;
-               string rowFilter = String.Empty;
-               DataViewRowState rowStateFilter = DataViewRowState.CurrentRows;
-               string sort = String.Empty;
-               DataTable dataTable;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal DataViewSetting (DataViewManager manager, DataTable table)
-               {
-                       dataViewManager = manager;
-                       dataTable = table;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-               
-               public bool ApplyDefaultSort {
-                       get { return applyDefaultSort; }
-                       set { applyDefaultSort = value; }
-               }
-
-               [Browsable (false)]
-               public DataViewManager DataViewManager {
-                       get { return dataViewManager; }
-               }
-
-               public string RowFilter {
-                       get { return rowFilter; }
-                       set { rowFilter = value; }
-               }
-
-               public DataViewRowState RowStateFilter {
-                       get { return rowStateFilter; }
-                       set { rowStateFilter = value; }
-               }
-
-               public string Sort {
-                       get { return sort; }
-                       set { sort = value; }
-               }
-
-               [Browsable (false)]
-               public DataTable Table {
-                       get { return dataTable; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DataViewSettingCollection.cs b/mcs/class/System.Data/System.Data/DataViewSettingCollection.cs
deleted file mode 100644 (file)
index 2d771cc..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-//
-// System.Data.DataViewSettingCollection.cs
-//
-// Authors:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Miguel de Icaza (miguel@gnome.org)
-//   Tim Coleman (tim@timcoleman.com)
-//   Atsushi Enomoto (atsushi@ximian.com)
-//
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
-// Copyright (C) Tim Coleman, 2002
-// Copyright (C) 2005 Novell Inc,
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Contains a read-only collection of DataViewSetting objects for each DataTable in a DataSet.
-       /// </summary>
-       [Editor ("Microsoft.VSDesigner.Data.Design.DataViewSettingsCollectionEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       public class DataViewSettingCollection : ICollection, IEnumerable 
-       {
-               #region Fields
-
-               readonly ArrayList settingList;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               internal DataViewSettingCollection (DataViewManager manager)
-               {
-                       settingList = new ArrayList ();
-                       if (manager.DataSet != null)
-                               foreach (DataTable dt in manager.DataSet.Tables)
-                                       settingList.Add (new DataViewSetting (
-                                               manager, dt));
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-       
-               [Browsable (false)]
-               public virtual int Count {
-                       get { return settingList.Count; }
-               }
-
-               [Browsable (false)]
-               public bool IsReadOnly {
-                       get { return settingList.IsReadOnly; }
-               }
-
-               [Browsable (false)]
-               public bool IsSynchronized {
-                       get { return settingList.IsSynchronized; }
-               }
-
-               public virtual DataViewSetting this [DataTable table] {
-                       get {
-                               for (int i = 0; i < settingList.Count; i++) {
-                                       DataViewSetting dvs = (DataViewSetting) settingList [i];
-                                       if (dvs.Table == table)
-                                               return dvs;
-                               }
-                               return null;
-                       }
-                       set {
-                               this [table] = value;
-                       }
-               }
-
-               public virtual DataViewSetting this [string tableName] {
-                       get {
-                               for (int i = 0; i < settingList.Count; i++) {
-                                       DataViewSetting dvs = (DataViewSetting) settingList [i];
-                                       if (dvs.Table.TableName == tableName)
-                                               return dvs;
-                               }
-                               return null;
-                       }
-               }
-
-               public virtual DataViewSetting this [int index] {
-                       get { return (DataViewSetting) settingList [index]; }
-                       set { settingList [index] = value; }
-               }
-
-               [Browsable (false)]
-               public object SyncRoot {
-                       get { return settingList.SyncRoot; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public void CopyTo (Array ar, int index)
-               {
-                       settingList.CopyTo (ar, index);
-               }
-
-               public void CopyTo (DataViewSetting [] ar, int index)
-               {
-                       settingList.CopyTo (ar, index);
-               }
-
-               public IEnumerator GetEnumerator ()
-               {
-                       return settingList.GetEnumerator ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DbMetaData.cs b/mcs/class/System.Data/System.Data/DbMetaData.cs
deleted file mode 100644 (file)
index 5eae894..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// System.Data.DbMetaData.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public class DbMetaData 
-       {
-               #region Fields
-
-               DbType dbType;
-               bool isNullable;
-               long maxLength;
-               string name;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               [MonoTODO]
-               public DbMetaData ()
-               {
-               }
-
-               [MonoTODO]
-               public DbMetaData (DbMetaData source)
-               {
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public virtual DbType DbType {
-                       get { return dbType; }
-                       set { dbType = value; }
-               }
-
-               public virtual bool IsNullable {
-                       get { return isNullable; }
-                       set { isNullable = value; }
-               }
-
-               public virtual long MaxLength {
-                       get { return maxLength; }
-                       set { maxLength = value; }
-               }
-
-               public string Name {
-                       get { return name; } 
-                       set { name = value; }
-               }
-
-               #endregion // Properties
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/DbType.cs b/mcs/class/System.Data/System.Data/DbType.cs
deleted file mode 100644 (file)
index 71ee9e3..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.Data.DbType.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Gets the data type of a field, a property, or a Parameter object of a .NET data provider.
-       /// </summary>
-       public enum DbType
-       {
-               AnsiString = 0,
-               Binary = 1,
-               Byte = 2,
-               Boolean = 3,
-               Currency = 4,
-               Date = 5,
-               DateTime = 6,
-               Decimal = 7,
-               Double = 8,
-               Guid = 9,
-               Int16 = 10,
-               Int32 = 11,
-               Int64 = 12,
-               Object = 13,
-               SByte = 14,
-               Single = 15,
-               String = 16,
-               Time = 17,
-               UInt16 = 18,
-               UInt32 = 19,
-               UInt64 = 20,
-               VarNumeric = 21,
-               AnsiStringFixedLength = 22,
-               Xml = 25,
-               DateTime2 = 26,
-               DateTimeOffset = 27,
-               StringFixedLength = 23
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DefaultValueTypeConverter.cs b/mcs/class/System.Data/System.Data/DefaultValueTypeConverter.cs
deleted file mode 100644 (file)
index 29e8a5a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.DefaultValueTypeConverter.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2004 Andreas Nahr
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       internal sealed class DefaultValueTypeConverter : ExpandableObjectConverter
-       {
-               [MonoTODO]
-               public DefaultValueTypeConverter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DeletedRowInaccessibleException.cs b/mcs/class/System.Data/System.Data/DeletedRowInaccessibleException.cs
deleted file mode 100644 (file)
index 661d485..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.DeletedRowInaccessibleException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class DeletedRowInaccessibleException : DataException
-       {
-               public DeletedRowInaccessibleException ()
-                       : base (Locale.GetText ("This DataRow has been deleted"))
-               {
-               }
-
-               public DeletedRowInaccessibleException (string s)
-                       : base (s)
-               {
-               }
-
-               public DeletedRowInaccessibleException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected DeletedRowInaccessibleException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/DuplicateNameException.cs b/mcs/class/System.Data/System.Data/DuplicateNameException.cs
deleted file mode 100644 (file)
index fa0eefe..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.DuplicateNameException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class DuplicateNameException : DataException
-       {
-               public DuplicateNameException ()
-                       : base (Locale.GetText ("There is a database object with the same name"))
-               {
-               }
-
-               public DuplicateNameException (string s)
-                       : base (s)
-               {
-               }
-
-               public DuplicateNameException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected DuplicateNameException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/EvaluateException.cs b/mcs/class/System.Data/System.Data/EvaluateException.cs
deleted file mode 100644 (file)
index 3b0a404..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.EvaluateException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class EvaluateException : InvalidExpressionException
-       {
-               public EvaluateException ()
-                       : base (Locale.GetText ("This expression cannot be evaluated"))
-               {
-               }
-
-               public EvaluateException (string s)
-                       : base (s)
-               {
-               }
-
-               public EvaluateException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected EvaluateException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ExpressionElement.cs b/mcs/class/System.Data/System.Data/ExpressionElement.cs
deleted file mode 100644 (file)
index 3b79735..0000000
+++ /dev/null
@@ -1,3404 +0,0 @@
-//\r
-// System.Data.ExpressionElement \r
-//\r
-// Author:\r
-//   Ville Palo <vi64pa@kolumbus.fi>\r
-//\r
-// Copyright (C) Ville Palo, 2003\r
-//\r
-// TODO: - Some functionelements and aggregates.\r
-//       - New parsing style.\r
-//       - Exceptions\r
-//\r
-\r
-using System;\r
-using System.Data;\r
-using System.Reflection;\r
-\r
-using System.Collections;\r
-using System.Text;\r
-\r
-namespace System.Data\r
-{\r
-#if false\r
-       /// <summary>\r
-       /// The main element which includes whole expression\r
-       /// </summary>\r
-       internal class ExpressionMainElement : ExpressionElement\r
-       {\r
-               \r
-               \r
-\r
-               public ExpressionMainElement (string s)\r
-               {\r
-                       s = ExpressionElement.ValidateExpression (s);\r
-                       ParseExpression (s);\r
-               }\r
-               \r
-               public override bool Test (DataRow Row) \r
-               {\r
-\r
-                       foreach (ExpressionElement El in Elements) \r
-                       {\r
-                               if (!El.Test (Row))\r
-                                       return false;\r
-                       }\r
-                       \r
-                       return true;\r
-               }\r
-\r
-               \r
-       }\r
-\r
-       //\r
-       // O_P_E_R_A_T_O_R_S\r
-       //\r
-\r
-       /// <summary>\r
-       ///  Class for =\r
-       /// </summary>\r
-       internal class ExpressionEquals : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionEquals (string exp1, string exp2) \r
-               {       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-                       \r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-\r
-                       return ExpressionElement.Compare (E1, E2, Row) == 0;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for <\r
-       /// </summary>\r
-       internal class ExpressionLessThan : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionLessThan (string exp1, string exp2) \r
-               {       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-                                                               \r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-                                          \r
-                       return ExpressionElement.Compare (E1, E2, Row) < 0;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for <=\r
-       /// </summary>\r
-       internal class ExpressionLessThanOrEqual : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionLessThanOrEqual (string exp1, string exp2) \r
-               {       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-\r
-                       return ExpressionElement.Compare (E1, E2, Row) <= 0;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for >\r
-       /// </summary>\r
-       internal class ExpressionGreaterThan : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionGreaterThan (string exp1, string exp2) \r
-               {       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-                       \r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-\r
-                       return ExpressionElement.Compare (E1, E2, Row) > 0;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for >=\r
-       /// </summary>\r
-       internal class ExpressionGreaterThanOrEqual : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionGreaterThanOrEqual (string exp1, string exp2) \r
-               {       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-\r
-                       return ExpressionElement.Compare (E1, E2, Row) >= 0;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for <>\r
-       /// </summary>\r
-       internal class ExpressionUnequals : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionUnequals (string exp1, string exp2) \r
-               {       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-                       \r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-\r
-                       return ExpressionElement.Compare (E1, E2, Row) != 0;\r
-               }\r
-       }\r
-\r
-\r
-       /// <summary>\r
-       ///  Class for LIKE-operator\r
-       /// </summary>\r
-       internal class ExpressionLike : ExpressionElement\r
-       {       \r
-\r
-               public ExpressionLike (string exp1, string exp2) \r
-               {\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-                       object value1 = E1.Result (Row);\r
-                       object value2 = E2.Result (Row);\r
-                       \r
-                       if (value1.GetType () != typeof (string) || value2.GetType () != typeof (string))\r
-                               throw new Exception (); // TODO: what exception\r
-                       \r
-                       string operand1 = value1.ToString ();\r
-                       string operand2 = value2.ToString ();\r
-\r
-                       // find out is there wildcards like * or %.\r
-                       while (operand2.EndsWith ("*") || operand2.EndsWith ("%"))                             \r
-                               operand2 = operand2.Remove (operand2.Length - 1, 1);\r
-                       while (operand2.StartsWith ("*") || operand2.StartsWith ("%"))\r
-                               operand2 = operand2.Remove (0, 1);\r
-\r
-                       int oldIndex = 0;\r
-                       int indexOf = -1;\r
-\r
-                       indexOf = operand2.IndexOf ("*");\r
-                       while (indexOf != -1) \r
-                       {\r
-\r
-                               oldIndex = indexOf + 1;\r
-                               if (operand2 [indexOf + 1] != ']' || operand2 [indexOf - 1] != '[')\r
-                                       throw new EvaluateException ("Error in Like operator: ther string pattern " + operand1 + " is invalid");\r
-                               else \r
-                               {\r
-                                       operand2 = operand2.Remove (indexOf + 1, 1);\r
-                                       operand2 = operand2.Remove (indexOf -1, 1);\r
-                                       oldIndex--;\r
-                               }\r
-                                       \r
-                               indexOf = operand2.IndexOf ("*", oldIndex);\r
-                       }\r
-\r
-                       oldIndex = 0;\r
-                       indexOf = operand2.IndexOf ("%");\r
-                       while (indexOf != -1) \r
-                       {\r
-\r
-                               oldIndex = indexOf + 1;\r
-                               \r
-                               if (operand2 [indexOf + 1] != ']' || operand2 [indexOf - 1] != '[')\r
-                                       throw new EvaluateException ("Error in Like operator: ther string pattern " + operand2 + " is invalid");\r
-                               else \r
-                               {\r
-                                       operand2 = operand2.Remove (indexOf + 1, 1);\r
-                                       operand2 = operand2.Remove (indexOf -1, 1);                                     \r
-                                       oldIndex--;\r
-                               }\r
-\r
-                               indexOf = operand2.IndexOf ("%", oldIndex);\r
-                       }\r
-\r
-                       int len2 = operand2.Length;\r
-                       int startIndex = 0;\r
-                       while ((startIndex + len2) <= operand1.Length) \r
-                       {\r
-                               if (String.Compare (operand1.Substring (startIndex, len2), operand2, !Row.Table.CaseSensitive) == 0)\r
-                                       return true;\r
-                               startIndex++;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-       }\r
-\r
-\r
-       /// <summary>\r
-       ///  Class for OR\r
-       /// </summary>\r
-       internal class ExpressionOr : ExpressionElement\r
-       {                               \r
-               public ExpressionOr (string exp1, string exp2)\r
-               {\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {                       \r
-                       foreach (ExpressionElement El in Elements) \r
-                       {\r
-                               if (El.Test (Row))\r
-                                       return true;\r
-                       }\r
-                       \r
-                       return false;\r
-               }                               \r
-       }\r
-               \r
-       /// <summary>\r
-       ///  Class for AND\r
-       /// </summary>\r
-       internal class ExpressionAnd : ExpressionElement\r
-       {                               \r
-               public ExpressionAnd (string exp1, string exp2)\r
-               {\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-              \r
-               public override object Result (DataRow Row) \r
-               {\r
-                       \r
-                       return Test(Row);\r
-               }\r
-\r
-               public override bool Test (DataRow Row) \r
-               {\r
-                       foreach (ExpressionElement El in Elements) \r
-                       {\r
-                               if (!El.Test (Row))\r
-                                       return false;\r
-                       }\r
-                       \r
-                       return true;\r
-               }                               \r
-       }\r
-\r
-\r
-       //\r
-       // A_R_I_T_H_M_E_T_I_C  O_P_E_R_A_T_O_R_S\r
-       //\r
-\r
-       /// <summary>\r
-       ///  Class for +\r
-       /// </summary>\r
-       internal class ExpressionAddition : ExpressionElement\r
-       {\r
-               public ExpressionAddition (string exp1, string exp2)\r
-               {                       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-               \r
-               public override Type ResultType (DataRow Row)\r
-               {\r
-                       Type ResultType = typeof (string);\r
-                       ExpressionElement exp1Temp = ((ExpressionElement)Elements [0]);\r
-                       ExpressionElement exp2Temp = ((ExpressionElement)Elements [1]);\r
-\r
-                       if (exp1Temp.ResultType (Row) == typeof (string) || exp2Temp.ResultType (Row) == typeof (string))\r
-                               ResultType = typeof (string);\r
-\r
-                       else if (exp1Temp.ResultType (Row) == typeof (long) || exp2Temp.ResultType (Row) == typeof (long))\r
-                               ResultType = typeof (long);\r
-\r
-                       else if (exp1Temp.ResultType (Row) == typeof (int) || exp2Temp.ResultType (Row) == typeof (int))\r
-                               ResultType = typeof (int);\r
-\r
-                       return ResultType;\r
-               }\r
-\r
-               public override object Result (DataRow Row) \r
-               {\r
-                       return CalculateResult (Row);\r
-               }\r
-               \r
-               protected override object Calculate (object value1, object value2, Type TempType) \r
-               {\r
-                       object Result = null;                   \r
-\r
-                       if (TempType == typeof (string))\r
-                               Result = (string)value1 + (string)value2;\r
-                       else if (TempType == typeof (long))\r
-                               Result = (long)value1 + (long)value2;\r
-                       else if (TempType == typeof (int))\r
-                               Result = (int)value1 + (int)value2;\r
-                       else if (TempType == typeof (short))\r
-                               Result = (short)value1 + (short)value2;\r
-                       else if (TempType == typeof (ulong))\r
-                               Result = (ulong)value1 + (ulong)value2;\r
-                       else if (TempType == typeof (uint))\r
-                               Result = (uint)value1 + (uint)value2;\r
-                       else if (TempType == typeof (ushort))\r
-                               Result = (ushort)value1 + (ushort)value2;\r
-                       else if (TempType == typeof (byte))\r
-                               Result = (byte)value1 + (byte)value2;\r
-                       else if (TempType == typeof (sbyte))\r
-                               Result = (sbyte)value1 + (sbyte)value2;\r
-                               // FIXME:\r
-                               //else if (TempType == typeof (bool))\r
-                               //      Result = (bool)value1 + (bool)value2;\r
-                       else if (TempType == typeof (float))\r
-                               Result = (float)value1 + (float)value2;\r
-                       else if (TempType == typeof (double))\r
-                               Result = (double)value1 + (double)value2;\r
-                       else if (TempType == typeof (decimal))\r
-                               Result = (decimal)value1 + (decimal)value2;\r
-                       // FIXME:\r
-                       //else if (TempType == typeof (DateTime))\r
-                       //      Result = (DateTime)value1 + (DateTime)value2;\r
-                       \r
-                       return Result;\r
-               }\r
-\r
-\r
-               // This method is shouldnt never invoked\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for -\r
-       /// </summary>\r
-       internal class ExpressionSubtraction : ExpressionElement\r
-       {\r
-               public ExpressionSubtraction (string exp1, string exp2)\r
-               {                       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-               \r
-               public override object Result (DataRow Row) \r
-               {                       \r
-                       return CalculateResult (Row);\r
-               }\r
-               \r
-               // This method is shouldnt never invoked\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               protected override object Calculate (object value1, object value2, Type TempType) \r
-               {\r
-                       object Result = null;                   \r
-\r
-                       // FIXME:\r
-                       //if (TempType == typeof (string))\r
-                       //      Result = (string)value1 - (string)value2;\r
-                       if (TempType == typeof (long))\r
-                               Result = (long)value1 - (long)value2;\r
-                       else if (TempType == typeof (int))\r
-                               Result = (int)value1 - (int)value2;\r
-                       else if (TempType == typeof (short))\r
-                               Result = (short)value1 - (short)value2;\r
-                       else if (TempType == typeof (ulong))\r
-                               Result = (ulong)value1 + (ulong)value2;\r
-                       else if (TempType == typeof (uint))\r
-                               Result = (uint)value1 - (uint)value2;\r
-                       else if (TempType == typeof (ushort))\r
-                               Result = (ushort)value1 - (ushort)value2;\r
-                       else if (TempType == typeof (byte))\r
-                               Result = (byte)value1 - (byte)value2;\r
-                       else if (TempType == typeof (sbyte))\r
-                               Result = (sbyte)value1 - (sbyte)value2;\r
-                               // FIXME:\r
-                               //else if (TempType == typeof (bool))\r
-                               //      Result = (bool)value1 - (bool)value2;\r
-                       else if (TempType == typeof (float))\r
-                               Result = (float)value1 - (float)value2;\r
-                       else if (TempType == typeof (double))\r
-                               Result = (double)value1 - (double)value2;\r
-                       else if (TempType == typeof (decimal))\r
-                               Result = (decimal)value1 - (decimal)value2;\r
-                       // FIXME:\r
-                       //else if (TempType == typeof (DateTime))\r
-                       //      Result = (DateTime)value1 - (DateTime)value2;\r
-                       \r
-                       return Result;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for *\r
-       /// </summary>\r
-       internal class ExpressionMultiply : ExpressionElement\r
-       {\r
-               public ExpressionMultiply (string exp1, string exp2)\r
-               {                       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-               \r
-               public override Type ResultType (DataRow Row)\r
-               {\r
-                       Type ResultType = null;\r
-                       ExpressionElement E1 = ((ExpressionElement)Elements [0]);\r
-                       ExpressionElement E2 = ((ExpressionElement)Elements [1]);\r
-                       Type t1 = E1.ResultType (Row);\r
-                       Type t2 = E2.ResultType (Row);\r
-                               \r
-                       if (t1 == typeof (string) || t2 == typeof (string))\r
-                               throw new EvaluateException ("Cannon perform '*' operation on " + t1.ToString () + \r
-                                       " and " + t2.ToString ());\r
-\r
-                       else if (t1 == typeof (long) || t2 == typeof (long))\r
-                               ResultType = typeof (long);\r
-\r
-                       else if (t1 == typeof (int) || t2 == typeof (int))\r
-                               ResultType = typeof (int);\r
-\r
-                       return ResultType;\r
-               }\r
-\r
-               public override object Result (DataRow Row) \r
-               {\r
-                       return CalculateResult (Row);\r
-               }\r
-               \r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               protected override object Calculate (object value1, object value2, Type TempType) \r
-               {\r
-                       object Result = null;                   \r
-\r
-                       if (TempType == typeof (long))\r
-                               Result = (long)value1 * (long)value2;\r
-                       else if (TempType == typeof (int))\r
-                               Result = (int)value1 * (int)value2;\r
-                       else if (TempType == typeof (short))\r
-                               Result = (short)value1 * (short)value2;\r
-                       else if (TempType == typeof (ulong))\r
-                               Result = (ulong)value1 * (ulong)value2;\r
-                       else if (TempType == typeof (uint))\r
-                               Result = (uint)value1 * (uint)value2;\r
-                       else if (TempType == typeof (ushort))\r
-                               Result = (ushort)value1 * (ushort)value2;\r
-                       else if (TempType == typeof (byte))\r
-                               Result = (byte)value1 * (byte)value2;\r
-                       else if (TempType == typeof (sbyte))\r
-                               Result = (sbyte)value1 * (sbyte)value2;\r
-                               // FIXME:\r
-                               //else if (TempType == typeof (bool))\r
-                               //      Result = (bool)value1 * (bool)value2;\r
-                       else if (TempType == typeof (float))\r
-                               Result = (float)value1 * (float)value2;\r
-                       else if (TempType == typeof (double))\r
-                               Result = (double)value1 * (double)value2;\r
-                       else if (TempType == typeof (decimal))\r
-                               Result = (decimal)value1 * (decimal)value2;\r
-                       // FIXME:\r
-                       //else if (TempType == typeof (DateTime))\r
-                       //      Result = (DateTime)value1 * (DateTime)value2;\r
-                       \r
-                       return Result;\r
-               }\r
-\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for *\r
-       /// </summary>\r
-       internal class ExpressionDivide : ExpressionElement\r
-       {\r
-               public ExpressionDivide (string exp1, string exp2)\r
-               {                       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-               \r
-               public override object Result (DataRow Row) \r
-               {\r
-                       return CalculateResult (Row);\r
-               }\r
-               \r
-               // This method is shouldnt never invoked\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               protected  override object Calculate (object value1, object value2, Type TempType) \r
-               {\r
-                       object Result = null;                   \r
-\r
-                       if (TempType == typeof (long))\r
-                               Result = (long)value1 / (long)value2;\r
-                               // FIXME: \r
-                               //else if (TempType == typeof (int))\r
-                               //      Result = (string)value1 / (string)value2;\r
-                       else if (TempType == typeof (int))\r
-                               Result = (int)value1 / (int)value2;\r
-                       else if (TempType == typeof (short))\r
-                               Result = (short)value1 / (short)value2;\r
-                       else if (TempType == typeof (ulong))\r
-                               Result = (ulong)value1 / (ulong)value2;\r
-                       else if (TempType == typeof (uint))\r
-                               Result = (uint)value1 / (uint)value2;\r
-                       else if (TempType == typeof (ushort))\r
-                               Result = (ushort)value1 / (ushort)value2;\r
-                       else if (TempType == typeof (byte))\r
-                               Result = (byte)value1 / (byte)value2;\r
-                       else if (TempType == typeof (sbyte))\r
-                               Result = (sbyte)value1 / (sbyte)value2;\r
-                               // FIXME:\r
-                               //else if (TempType == typeof (bool))\r
-                               //      Result = (bool)value1 // (bool)value2;\r
-                       else if (TempType == typeof (float))\r
-                               Result = (float)value1 / (float)value2;\r
-                       else if (TempType == typeof (double))\r
-                               Result = (double)value1 / (double)value2;\r
-                       else if (TempType == typeof (decimal))\r
-                               Result = (decimal)value1 / (decimal)value2;\r
-                       // FIXME:\r
-                       //else if (TempType == typeof (DateTime))\r
-                       //      Result = (DateTime)value1 / (DateTime)value2;\r
-                       \r
-                       return Result;\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for *\r
-       /// </summary>\r
-       internal class ExpressionModulus : ExpressionElement\r
-       {\r
-               public ExpressionModulus (string exp1, string exp2)\r
-               {                       \r
-                       this.exp1 = exp1;\r
-                       this.exp2 = exp2;\r
-                       ParseExpression (exp1);\r
-                       ParseExpression (exp2);\r
-               }\r
-               \r
-               public override object Result (DataRow Row) \r
-               {\r
-                       return CalculateResult (Row);\r
-               }\r
-               \r
-               // This method is shouldnt never invoked\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               protected  override object Calculate (object value1, object value2, Type TempType) \r
-               {\r
-                       object Result = null;                   \r
-\r
-                       if (TempType == typeof (long))\r
-                               Result = (long)value1 % (long)value2;\r
-                               // FIXME: \r
-                               //else if (TempType == typeof (int))\r
-                               //      Result = (string)value1 % (string)value2;\r
-                       else if (TempType == typeof (int))\r
-                               Result = (int)value1 % (int)value2;\r
-                       else if (TempType == typeof (short))\r
-                               Result = (short)value1 % (short)value2;\r
-                       else if (TempType == typeof (ulong))\r
-                               Result = (ulong)value1 % (ulong)value2;\r
-                       else if (TempType == typeof (uint))\r
-                               Result = (uint)value1 % (uint)value2;\r
-                       else if (TempType == typeof (ushort))\r
-                               Result = (ushort)value1 % (ushort)value2;\r
-                       else if (TempType == typeof (byte))\r
-                               Result = (byte)value1 % (byte)value2;\r
-                       else if (TempType == typeof (sbyte))\r
-                               Result = (sbyte)value1 % (sbyte)value2;\r
-                               // FIXME:\r
-                               //else if (TempType == typeof (bool))\r
-                               //      Result = (bool)value1 // (bool)value2;\r
-                       else if (TempType == typeof (float))\r
-                               Result = (float)value1 % (float)value2;\r
-                       else if (TempType == typeof (double))\r
-                               Result = (double)value1 % (double)value2;\r
-                       else if (TempType == typeof (decimal))\r
-                               Result = (decimal)value1 % (decimal)value2;\r
-                       // FIXME:\r
-                       //else if (TempType == typeof (DateTime))\r
-                       //      Result = (DateTime)value1 / (DateTime)value2;\r
-                       \r
-                       return Result;\r
-               }\r
-       }\r
-\r
-       //\r
-       // _____A_G_G_R_E_G_A_T_E_S_____\r
-       //\r
-\r
-       internal class ExpressionAggregate : ExpressionElement\r
-       {\r
-               \r
-               public ExpressionAggregate()\r
-               {\r
-               }\r
-\r
-               public ExpressionAggregate(string s)\r
-               {\r
-                       s = ExpressionElement.ValidateExpression (s);\r
-                       ParseExpression (s);\r
-               }\r
-\r
-               \r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               public override object Result(DataRow Row)\r
-               {\r
-                       DataRow[] rows = new DataRow[Row.Table.Rows.Count];\r
-                       Row.Table.Rows.CopyTo(rows, 0);\r
-                       return ((ExpressionAggregate)Elements[0]).Result(rows);\r
-               }\r
-\r
-               public virtual object Result(DataRow[] rows)\r
-               {\r
-                       return ((ExpressionAggregate)Elements[0]).Result(rows);\r
-               }\r
-\r
-\r
-               protected virtual void ParseParameters (string s)\r
-               {\r
-                       string stemp = s.ToLower ();\r
-                       bool inString = false;\r
-                       string p1 = null;\r
-\r
-                       // find (\r
-                       while (!s.StartsWith ("("))\r
-                               s = s.Remove (0, 1);\r
-                       \r
-                       // remove (\r
-                       s = s.Remove (0, 1);\r
-\r
-                       int parentheses = 0;\r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               if (s [i] == '\'')\r
-                                       inString = !inString;\r
-                               else if (s [i] == '(')\r
-                                       parentheses++;\r
-                               else if (s [i] == ')')\r
-                                       parentheses--;\r
-\r
-                               if ((s [i] == ',' ||  s [i] == ')') && !inString && parentheses == -1) \r
-                               { // Parameter changed\r
-\r
-                                       if (p1 == null) \r
-                                       {\r
-                                               p1 = s.Substring (0, i);\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       if (p1 == null)\r
-                               throw new Exception ();\r
-\r
-                       ParseExpression (p1);           \r
-               }\r
-               \r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for Sum (column_Name)\r
-       /// </summary\r
-       internal class ExpressionSum : ExpressionAggregate\r
-       {\r
-               public ExpressionSum (string exp1)\r
-               {\r
-                       ParseParameters (exp1);\r
-               }\r
-\r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       object value1 = E1.Result (rows[0]);\r
-                       Type t1 = value1.GetType ();\r
-                       object result = 0;\r
-                       \r
-                       // This could be optimized. If E1 is single element (Not child or parent) the\r
-                       // result of Sum() aggregate is allways same\r
-\r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-                               \r
-                               // This should be optimized somehow\r
-                               for (int i = 0; i < rows.Length; i++) \r
-                               {\r
-\r
-                                       // TODO: other types and exceptions\r
-                                       object v = E1.Result (rows[i]);\r
-                                       t1 = v.GetType ();\r
-\r
-                                       if (v == null || v == DBNull.Value)\r
-                                               continue;\r
-\r
-                                       if (t1 == typeof (long)) \r
-                                       {\r
-                                               result = (long)result + (long)v;\r
-                                       }\r
-                                       else if (t1 == typeof (int)) \r
-                                       {\r
-                                               result = (int)result + (int)v;\r
-                                       }\r
-                                       else if (t1 == typeof (short)) \r
-                                       {\r
-                                               result = (short)result + (short)v;\r
-                                       }\r
-                                       else if (t1 == typeof (double)) \r
-                                       {\r
-                                               result = (double)result + (double)v;\r
-                                       }\r
-                                       else if (t1 == typeof (float)) \r
-                                       {\r
-                                               result = (float)result + (float)v;\r
-                                       }\r
-                                       else\r
-                                               throw new NotImplementedException ();\r
-                               }\r
-                       }\r
-                       \r
-                       return result;\r
-               }\r
-\r
-               \r
-               //\r
-               // Copy: This method is copy-paste in every Aggregate class.\r
-               //\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for Avg (column_Name)\r
-       /// </summary\r
-       internal class ExpressionAvg : ExpressionAggregate\r
-       {\r
-               public ExpressionAvg (string exp1)\r
-               {\r
-                       ParseParameters (exp1);\r
-               }\r
-\r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       object value1 = E1.Result (rows[0]);\r
-                       Type original = value1.GetType ();\r
-                       object result = null;\r
-                       \r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-                               \r
-                               Type t1 = null;\r
-                               // This should be optimized somehow\r
-                               for (int i = 0; i < rows.Length; i++) \r
-                               {\r
-                                      \r
-                                       // TODO: other types and exceptions\r
-                                       object v = E1.Result (rows[i]);\r
-\r
-                                       if (v == null || v == DBNull.Value)\r
-                                               continue;\r
-\r
-                                       t1 = v.GetType ();\r
-\r
-                                       if (result == null)\r
-                                               result = 0;\r
-                                       \r
-                                       if (t1 == typeof (long)) \r
-                                       {\r
-                                               result = (long)result + (long)v;\r
-                                       }\r
-                                       else if (t1 == typeof (int)) \r
-                                       {\r
-                                               result = (int)result + (int)v;\r
-                                       }\r
-                                       else if (t1 == typeof (short)) \r
-                                       {\r
-                                               result = (short)result + (short)v;\r
-                                       }\r
-                                       else if (t1 == typeof (double)) \r
-                                       {\r
-                                               result = (double)result + (double)v;\r
-                                       }\r
-                                       else if (t1 == typeof (float)) \r
-                                       {\r
-                                               result = (float)result + (float)v;\r
-                                       }\r
-                                       else\r
-                                               throw new NotImplementedException ();\r
-                               }\r
-\r
-                               // TODO: types\r
-\r
-                               if (t1 == typeof (long))\r
-                                       result = (long)result / rows.Length;\r
-                               else if (t1 == typeof (int))\r
-                                       result = (int)result / rows.Length;\r
-                               else if (t1 == typeof (short))\r
-                                       result = (short)result / rows.Length;\r
-                               else if (t1 == typeof (double))\r
-                                       result = (double)result / rows.Length;\r
-                       }\r
-                       \r
-                       return result;\r
-               }\r
-\r
-               /// <summary>\r
-               ///  This is used from ExpressionStdDev for evaluating avg.\r
-               /// </summary>\r
-               public ExpressionAvg (ExpressionElement E)\r
-               {\r
-                       Elements.Add (E);\r
-               }\r
-       \r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for Min (column_Name)\r
-       /// </summary\r
-       internal class ExpressionMin : ExpressionAggregate\r
-       {\r
-               public ExpressionMin (string exp1)\r
-               {\r
-                       ParseParameters (exp1);\r
-               }\r
-\r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       object value1 = E1.Result (rows[0]);\r
-                       Type original = value1.GetType ();\r
-                       object result = null;\r
-                       \r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-                               \r
-                               Type t1 = null;\r
-                               // This should be optimized somehow\r
-                               for (int i = 0; i < rows.Length; i++)\r
-                               {\r
-                                      \r
-                                       // TODO: other types and exceptions\r
-                                       object v = E1.Result (rows[i]);\r
-\r
-                                       if (v == null || v == DBNull.Value)\r
-                                               continue;\r
-\r
-                                       t1 = v.GetType ();\r
-\r
-                                       if (result == null)\r
-                                               result = 0;\r
-\r
-                                       object CompResult = t1.InvokeMember ("CompareTo", BindingFlags.Default | \r
-                                               BindingFlags.InvokeMethod, null, \r
-                                               v, \r
-                                               new object [] {result});\r
-\r
-                                       if ((int)CompResult < 0)\r
-                                               result = v;\r
-\r
-                               }\r
-                       }\r
-                       \r
-                       return result;\r
-               }\r
-\r
-               \r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for Max (column_Name)\r
-       /// </summary\r
-       internal class ExpressionMax : ExpressionAggregate\r
-       {\r
-               public ExpressionMax (string exp1)\r
-               {\r
-                       ParseParameters (exp1);\r
-               }\r
-\r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       object value1 = E1.Result (rows[0]);\r
-                       Type original = value1.GetType ();\r
-                       object result = null;\r
-                       \r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-                               \r
-                               Type t1 = null;\r
-                               // This should be optimized somehow\r
-                               for (int i = 0; i < rows.Length; i++) \r
-                               {\r
-                                      \r
-                                       // TODO: other types and exceptions\r
-                                       object v = E1.Result (rows[i]);\r
-\r
-                                       if (v == null || v == DBNull.Value)\r
-                                               continue;\r
-\r
-                                       t1 = v.GetType ();\r
-\r
-                                       if (result == null)\r
-                                               result = 0;\r
-\r
-                                       object CompResult = t1.InvokeMember ("CompareTo", BindingFlags.Default | \r
-                                               BindingFlags.InvokeMethod, null, \r
-                                               v, \r
-                                               new object [] {result});\r
-\r
-                                       if ((int)CompResult > 0)\r
-                                               result = v;\r
-\r
-                               }\r
-                       }\r
-                       \r
-                       return result;\r
-               }\r
-\r
-               \r
-       }\r
-\r
-\r
-       /// <summary>\r
-       ///  Class for count (column)\r
-       /// </summary>\r
-       internal class ExpressionCount : ExpressionAggregate\r
-       {\r
-               public ExpressionCount (string exp1)\r
-               {\r
-                       ParseParameters (exp1);\r
-               }\r
-               \r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       int count = 0;\r
-\r
-                       if (E1 is ExpressionSingleElement) \r
-                               count = rows.Length;\r
-                       \r
-                       return count;\r
-               }\r
-\r
-               public override object Result (DataRow Row) \r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       int count = 0;\r
-\r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-                               \r
-                               count = Row.Table.Rows.Count;\r
-                       }\r
-                       \r
-                       return count;\r
-               }\r
-       }\r
-\r
-\r
-       /// <summary>\r
-       ///  Class for StdDev (column)\r
-       /// </summary>\r
-       internal class ExpressionStdev : ExpressionAggregate\r
-       {\r
-               public ExpressionStdev (string exp1)\r
-               {               \r
-                       ParseParameters (exp1);\r
-               }\r
-\r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionAvg Avg = new ExpressionAvg (E1);\r
-\r
-                       object tempAvg = Avg.Result (rows[0]);\r
-                       double avg = 0;\r
-                       double sum = 0;\r
-                       double result = 0;\r
-\r
-                       if (tempAvg.GetType () == typeof (int))\r
-                               avg = (double)(int)tempAvg;\r
-                       \r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-\r
-                               for (int i = 0; i <rows.Length; i++)\r
-                               {\r
-                                       // (value - avg)²\r
-                                       object v = E1.Result (rows[i]);\r
-\r
-                                       if (v == null || v == DBNull.Value)\r
-                                               continue;\r
-\r
-                                       if (v.GetType () == typeof (long))\r
-                                               sum = avg - (long)v;\r
-                                       else if (v.GetType () == typeof (int))\r
-                                               sum = avg - (int)v;\r
-                                       else if (v.GetType () == typeof (short))\r
-                                               sum = avg - (short)v;\r
-                                       else\r
-                                               throw new NotImplementedException ();\r
-\r
-                                       result += Math.Pow (sum, 2);\r
-                               }\r
-                               \r
-                               result = result / (rows.Length - 1);\r
-                               result = Math.Sqrt (result);\r
-                       }\r
-\r
-                       return result;\r
-               }\r
-               \r
-               \r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for Var (column)\r
-       /// </summary>\r
-       internal class ExpressionVar : ExpressionAggregate\r
-       {\r
-               public ExpressionVar (string exp1)\r
-               {\r
-                       ParseParameters (exp1);\r
-               }\r
-\r
-               public override object Result(DataRow[] rows)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionAvg Avg = new ExpressionAvg (E1);\r
-\r
-                       object tempAvg = Avg.Result (rows[0]);\r
-                       double avg = 0;\r
-                       double sum = 0;\r
-                       double result = 0;\r
-\r
-                       if (tempAvg.GetType () == typeof (int))\r
-                               avg = (double)(int)tempAvg;\r
-                       \r
-                       if (E1 is ExpressionSingleElement) \r
-                       {\r
-\r
-                               for (int i = 0; i < rows.Length; i++)\r
-                               {\r
-\r
-                                      \r
-                                       // (value - avg)²\r
-                                       object v = E1.Result (rows[i]);\r
-\r
-                                       if (v == null || v == DBNull.Value)\r
-                                               continue;\r
-\r
-                                       if (v.GetType () == typeof (long))\r
-                                               sum = avg - (long)v;\r
-                                       else if (v.GetType () == typeof (int))\r
-                                               sum = avg - (int)v;\r
-                                       else if (v.GetType () == typeof (short))\r
-                                               sum = avg - (short)v;\r
-                                       else\r
-                                               throw new NotImplementedException ();\r
-\r
-                                       result += Math.Pow (sum, 2);\r
-                               }\r
-                               \r
-                               result = result / (rows.Length - 1);\r
-                       }\r
-\r
-                       return result;\r
-               }\r
-               \r
-               \r
-       }\r
-\r
-       // \r
-       // _____F_U_ N_C_T_I_O_N_S_______\r
-       //\r
-\r
-       /// <summary>\r
-       ///  Class for len (string) function\r
-       /// </summary>\r
-       internal class ExpressionLen : ExpressionElement\r
-       {\r
-               public ExpressionLen (string exp1)\r
-               {                       \r
-                       _ResultType = typeof (int);\r
-                       ParseParameters (exp1);\r
-               }\r
-               \r
-               public override object Result (DataRow Row) \r
-               {\r
-                       ExpressionElement E1 = ((ExpressionElement)Elements [0]);\r
-                       object value1 = E1.Result (Row);\r
-                       \r
-                       return value1.ToString ().Length;\r
-               }\r
-               \r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               public void ParseParameters (string s)\r
-               {\r
-                       string stemp = s.ToLower ();\r
-                       bool inString = false;\r
-                       string p1 = null;\r
-\r
-                       // find (\r
-                       while (!s.StartsWith ("("))\r
-                               s = s.Remove (0, 1);\r
-\r
-                       // remove (\r
-                       s = s.Remove (0, 1);\r
-                       int parentheses = 0;\r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               if (s [i] == '\'')\r
-                                       inString = !inString;\r
-                               else if (s [i] == '(')\r
-                                       parentheses++;\r
-                               else if (s [i] == ')')\r
-                                       parentheses--;\r
-\r
-                               if ((s [i] == ',' ||  s [i] == ')') && !inString && parentheses == -1) \r
-                               { // Parameter changed\r
-\r
-                                       if (p1 == null) \r
-                                       {\r
-                                               p1 = s.Substring (0, i);\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       if (p1 == null)\r
-                               throw new Exception ();\r
-\r
-                       ParseExpression (p1);           \r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for iif (exp1, truepart, falsepart) function\r
-       /// </summary>\r
-       internal class ExpressionIif : ExpressionElement\r
-       {\r
-               public ExpressionIif (string exp)\r
-               {       \r
-                       ParseParameters (exp);\r
-               }\r
-\r
-               public override object Result (DataRow Row) \r
-               {\r
-                       ExpressionElement E1 = ((ExpressionElement)Elements [0]);\r
-                       ExpressionElement E2 = ((ExpressionElement)Elements [1]);\r
-                       ExpressionElement E3 = ((ExpressionElement)Elements [2]);\r
-\r
-                       if (E1.Test (Row)) // expression\r
-                               return E2.Result (Row); // truepart\r
-                       else\r
-                               return E3.Result (Row); // false part                   \r
-               }\r
-               \r
-               // This method is shouldnt never invoked\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               public override Type ResultType (DataRow Row)\r
-               {                                               \r
-                       ExpressionElement E1 = ((ExpressionElement)Elements [0]);\r
-                       ExpressionElement E2 = ((ExpressionElement)Elements [1]);\r
-                       ExpressionElement E3 = ((ExpressionElement)Elements [2]);\r
-                       \r
-                       if (E1.Test (Row)) // expression\r
-                               return E2.Result (Row).GetType (); // truepart\r
-                       else\r
-                               return E3.Result (Row).GetType (); // false part                        \r
-               }\r
-\r
-               /// <summary>\r
-               ///  Parses expressions in parameters (exp, truepart, falsepart)\r
-               /// </summary>\r
-               private void ParseParameters (string s)\r
-               {\r
-                       bool inString = false;\r
-                       string stemp = s.ToLower ();\r
-                       string p1 = null;\r
-                       string p2 = null;\r
-                       string p3 = null;\r
-                       s = s.Substring (stemp.IndexOf ("iif") + 3);\r
-\r
-                       // find (\r
-                       while (!s.StartsWith ("("))\r
-                               s = s.Remove (0, 1);\r
-\r
-                       // remove (\r
-                       s = s.Remove (0, 1);\r
-                       int parentheses = 0;\r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               if (s [i] == '\'')\r
-                                       inString = !inString;\r
-                               else if (s [i] == '(')\r
-                                       parentheses++;\r
-                               else if (s [i] == ')')\r
-                                       parentheses--;\r
-\r
-                               if ((s [i] == ',' && !inString && parentheses == 0) || \r
-                                       (s [i] == ')' && i == (s.Length -1))) \r
-                               { // Parameter changed\r
-\r
-                                       if (p1 == null) \r
-                                       {\r
-                                               p1 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else if (p2 == null) \r
-                                       {\r
-                                               p2 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else if (p3 == null) \r
-                                       {\r
-                                               p3 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else\r
-                                               throw new Exception (); // FIXME: What exception\r
-                               }\r
-                       }\r
-\r
-                       if (p1 == null || p2 == null || p3 == null)\r
-                               throw new Exception ();\r
-\r
-                       ParseExpression (p1);\r
-                       ParseExpression (p2);\r
-                       ParseExpression (p3);\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for isnull (expression, returnvalue) function\r
-       /// </summary>\r
-       internal class ExpressionIsNull : ExpressionElement\r
-       {\r
-               public ExpressionIsNull (string exp)\r
-               {                       \r
-                       ParseParameters (exp);\r
-               }\r
-               \r
-               public override object Result (DataRow Row) \r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-                       \r
-                       object R1 = E1.Result (Row);\r
-                       object value1 = null;\r
-                       if (R1 == null || R1 == DBNull.Value)\r
-                               return E2.Result (Row);\r
-                       else\r
-                               return R1;\r
-               }\r
-\r
-               public override Type ResultType (DataRow Row)\r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-                       \r
-                       object R1 = E1.Result (Row);\r
-                       object value1 = null;\r
-                       if (R1 == null || R1 == DBNull.Value)\r
-                               return E2.Result (Row).GetType ();\r
-                       else\r
-                               return R1.GetType ();\r
-               }\r
-               \r
-               /// <summary>\r
-               ///  IsNull function does not return boolean value, so throw exception\r
-               /// </summary>\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Parses parameters of function and invoke ParseExpression methods\r
-               /// </summary>\r
-               private void ParseParameters (string s)\r
-               {\r
-                       bool inString = false;\r
-                       string stemp = s.ToLower ();\r
-                       string p1 = null;\r
-                       string p2 = null;\r
-\r
-                       s = s.Substring (stemp.IndexOf ("isnull") + 6);\r
-\r
-                       // find (\r
-                       while (!s.StartsWith ("("))\r
-                               s = s.Remove (0, 1);\r
-\r
-                       // remove (\r
-                       s = s.Remove (0, 1);\r
-                       int parentheses = 0;\r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               if (s [i] == '\'')\r
-                                       inString = !inString;\r
-                               else if (s [i] == '(')\r
-                                       parentheses++;\r
-                               else if (s [i] == ')')\r
-                                       parentheses--;\r
-\r
-                               if ((s [i] == ',' && !inString && parentheses == 0) || \r
-                                       (s [i] == ')' && i == (s.Length -1))) \r
-                               { // Parameter changed\r
-\r
-                                       if (p1 == null) \r
-                                       {\r
-                                               p1 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else if (p2 == null) \r
-                                       {\r
-                                               p2 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else\r
-                                               throw new Exception (); // FIXME: What exception\r
-                               }\r
-                       }\r
-\r
-                       if (p1 == null || p2 == null)\r
-                               throw new Exception ();\r
-\r
-                       ParseExpression (p1);\r
-                       ParseExpression (p2);\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for Substring (expression, start, length) function\r
-       /// </summary>\r
-       internal class ExpressionSubstring : ExpressionElement\r
-       {\r
-               public ExpressionSubstring (string exp)\r
-               {                       \r
-                       ParseParameters (exp);\r
-                       _ResultType = typeof (string);\r
-               }\r
-               \r
-               public override object Result (DataRow Row) \r
-               {\r
-                       ExpressionElement E1 = (ExpressionElement)Elements [0];\r
-                       ExpressionElement E2 = (ExpressionElement)Elements [1];\r
-                       ExpressionElement E3 = (ExpressionElement)Elements [2];\r
-                       \r
-                       object value1 = E1.Result (Row);\r
-                       object value2 = E2.Result (Row);\r
-                       object value3 = E3.Result (Row);\r
-                       Type t1 = value1.GetType ();\r
-                       Type t2 = value2.GetType ();\r
-                       Type t3 = value3.GetType ();\r
-\r
-                       if (value1 == null || value2 == null || value3 == null \r
-                               || value1 == DBNull.Value || value2 == DBNull.Value || value3 == DBNull.Value)\r
-                               return string.Empty;\r
-\r
-                       if (t1 != typeof (string))\r
-                               throw new Exception (); // FIXME: what exception\r
-                       else if (t2 != typeof (int))\r
-                               throw new EvaluateException ("Type mismatch is function argument: Substring (), argument 2, excepted System.Int32");\r
-                       else if (t3 != typeof (int))\r
-                               throw new EvaluateException ("Type mismatch is function argument: Substring (), argument 3, excepted System.Int32");\r
-\r
-                       string str = value1.ToString ();\r
-                       int start = (int)value2;\r
-                       int length = (int)value3;\r
-\r
-                       if (str.Length < start)\r
-                               str =  string.Empty;\r
-                       else \r
-                       {\r
-                               if ((start + length - 1) > str.Length)\r
-                                       str = str.Substring (start - 1);\r
-                               else\r
-                                       str = str.Substring (start - 1, length);\r
-                       }\r
-\r
-                       return str;\r
-               }\r
-\r
-               /// <summary>\r
-               ///  IsNull function does not return boolean value, so throw exception\r
-               /// </summary>\r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Parses parameters of function and invoke ParseExpression methods\r
-               /// </summary>\r
-               private void ParseParameters (string s)\r
-               {\r
-                       bool inString = false;\r
-                       string stemp = s.ToLower ();\r
-                       string p1 = null;\r
-                       string p2 = null;\r
-                       string p3 = null;\r
-\r
-                       s = s.Substring (stemp.IndexOf ("substring") + 9);\r
-\r
-                       // find (\r
-                       while (!s.StartsWith ("("))\r
-                               s = s.Remove (0, 1);\r
-\r
-                       // remove (\r
-                       s = s.Remove (0, 1);\r
-                       int parentheses = 0;\r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               if (s [i] == '\'')\r
-                                       inString = !inString;\r
-                               else if (s [i] == '(')\r
-                                       parentheses++;\r
-                               else if (s [i] == ')')\r
-                                       parentheses--;\r
-\r
-\r
-                               if ((s [i] == ',' && !inString && parentheses == 0) || \r
-                                       (s [i] == ')' && i == (s.Length -1))) \r
-                               { // Parameter changed\r
-\r
-                                       if (p1 == null) \r
-                                       {\r
-                                               p1 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else if (p2 == null) \r
-                                       {\r
-                                               p2 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else if (p3 == null) \r
-                                       {\r
-                                               p3 = s.Substring (0, i);\r
-                                               s = s.Substring (i + 1);\r
-                                               i = 0;\r
-                                       }\r
-\r
-                                       else\r
-                                               throw new Exception (); // FIXME: What exception\r
-                               }\r
-                       }\r
-\r
-                       if (p1 == null || p2 == null)\r
-                               throw new Exception ();\r
-\r
-                       ParseExpression (p1);\r
-                       ParseExpression (p2);\r
-                       ParseExpression (p3);                   \r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for In (exp, exp, exp, ...) function\r
-       /// </summary>\r
-       internal class ExpressionIn : ExpressionElement\r
-       {\r
-               public ExpressionIn (string exp1, string exp2)\r
-               {       \r
-                       ParseExpression(exp1);\r
-                       ParseParameters (exp2);\r
-               }\r
-\r
-               /// <summary>\r
-               ///  IsNull function does not return boolean value, so throw exception\r
-               /// </summary>\r
-               public override bool Test (DataRow Row) \r
-               {\r
-                       ExpressionElement E;\r
-                       ExpressionElement columnElement = (ExpressionElement)Elements [0];\r
-\r
-                       ExpressionElementComparer comparer = new ExpressionElementComparer(columnElement, Row);\r
-\r
-                       for (int i = 1; i < Elements.Count; i++)\r
-                       {\r
-                               E = (ExpressionElement)Elements [i];\r
-                               if(comparer.CompareTo(E) == 0)\r
-                                       return true;\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Parses parameters of function and invoke ParseExpression methods\r
-               /// </summary>\r
-               private void ParseParameters (string s)\r
-               {\r
-                       bool inString = false;\r
-                       ArrayList parameters = new ArrayList();\r
-                       \r
-                       // find (\r
-                       while (!s.StartsWith ("("))\r
-                               s = s.Remove (0, 1);\r
-\r
-                       // remove (\r
-                       s = s.Remove (0, 1);\r
-                       int parentheses = 0;\r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               if (s [i] == '\'')\r
-                                       inString = !inString;\r
-                               else if (s [i] == '(')\r
-                                       parentheses++;\r
-                               else if (s [i] == ')')\r
-                                       parentheses--;\r
-\r
-\r
-                               if ((s [i] == ',' && !inString && parentheses == 0) || \r
-                                       (s [i] == ')' && i == (s.Length -1))) \r
-                               {\r
-                                       parameters.Add(s.Substring (0, i));\r
-                                       s = s.Substring (i + 1);\r
-                                       i = 0;\r
-                               }\r
-                       }\r
-                       \r
-                       for (int i = 0; i < parameters.Count; i++)\r
-                               ParseExpression((string)parameters[i]);\r
-               }\r
-       }\r
-\r
-       /// <summary>\r
-       ///  Class for just one element for example string, int, ...\r
-       /// </summary>\r
-       internal class ExpressionSingleElement : ExpressionElement\r
-       {               \r
-               private object Element = null;\r
-               \r
-               public ExpressionSingleElement (string s)\r
-               {\r
-                       // TODO: Every type should be checked\r
-                       if (s.StartsWith ("'") && s.EndsWith ("'")) \r
-                       {\r
-                               Element = s.Substring (1, s.Length - 2);\r
-                               _ResultType = typeof (string);\r
-                       }\r
-                       else if (!Char.IsDigit (s [0]) && s [0] != '-' && s [0] != '+') \r
-                       {\r
-                               Element = s;\r
-                               _ResultType = typeof (DataColumn);\r
-                       }\r
-                       else if (s.StartsWith ("#") && s.EndsWith ("#")) \r
-                       {\r
-                               Element = DateTime.Parse (s.Substring (1, s.Length - 2));\r
-                               _ResultType = typeof (DateTime);\r
-                       }\r
-                       else \r
-                       {\r
-                               try \r
-                               {\r
-                                       Element = int.Parse (s);\r
-                                       _ResultType = typeof (int);\r
-                               } \r
-                               catch \r
-                               {\r
-                                       Element = Decimal.Parse (s);\r
-                                       _ResultType = typeof (Decimal);\r
-                               }\r
-                       }                               \r
-               }\r
-\r
-               public override object Result (DataRow Row)\r
-               {\r
-                       object Result = null;\r
-                       if (ResultType (Row) == typeof (DataColumn)) \r
-                       {\r
-                               \r
-                               if (!Row.Table.Columns.Contains (Element.ToString ()))\r
-                                       throw new EvaluateException ("Column name '" + Element.ToString () + "' not found.");\r
-                               else\r
-                               {\r
-                                       DataRowVersion rowVersion = DataRowVersion.Default;\r
-                                       // if this row is deleted we get the original version, or else we get an exception.\r
-                                       if (Row.RowState == DataRowState.Deleted)\r
-                                               rowVersion = DataRowVersion.Original;\r
-                                       Result = Row [Element.ToString (), rowVersion];\r
-                               }\r
-                       }\r
-                       else\r
-                               Result = Element;\r
-                               \r
-                       return Result;\r
-               }\r
-               \r
-               public override bool Test (DataRow Row)\r
-               {\r
-                       throw new EvaluateException ();\r
-               }               \r
-       }\r
-\r
-       /// <summary>\r
-       ///  Parent class of all the elements of expression\r
-       /// </summary>\r
-       internal abstract class ExpressionElement\r
-       {        \r
-               enum OP {OPERATOR, OPERAND};\r
-               enum OPERATOR_TYPE {SYMBOLIC, LITERAL, UNDEFINED};\r
-               enum OPERAND_TYPE {NUMERIC, STRING, UNDEFINED};\r
-\r
-               // \r
-               // TODO/FIXME: This class should be inherited more than once. I mean own subclass for operators, functions,...\r
-               //\r
-\r
-               protected string exp1;\r
-               protected string exp2;\r
-               protected  Type _ResultType;\r
-\r
-               protected ArrayList Elements = new ArrayList ();\r
-\r
-               enum AGGREGATE {SUM, AVG, MIN, MAX, COUNT, STDEV, VAR}\r
-               //protected ArrayList Singles = new ArrayList ();\r
-               \r
-               /// <summary>\r
-               /// Tells does the current expressions match to current DataRow\r
-               /// </summary>\r
-               abstract public bool Test (DataRow Row);\r
-\r
-               public virtual object Result (DataRow Row) {return null;}\r
-                \r
-               public virtual Type ResultType (DataRow Row)\r
-               {\r
-                       return _ResultType;\r
-               }\r
-\r
-               protected object CalculateResult (DataRow Row)\r
-               {\r
-                       ExpressionElement E1 = ((ExpressionElement)Elements [0]);\r
-                       ExpressionElement E2 = ((ExpressionElement)Elements [1]);\r
-                       object Result = null;\r
-                       object value1 = E1.Result (Row);\r
-                       object value2 = E2.Result (Row);\r
-                       Type t1 = value1.GetType ();\r
-                       Type t2 = value2.GetType ();\r
-                       \r
-                       // Check nulls\r
-                       if (value1 ==  DBNull.Value && value2 == DBNull.Value)\r
-                               return null;\r
-                       \r
-                       // TODO: More types\r
-                       \r
-                       if (t1 == typeof (string) || t2 == typeof (string)) \r
-                       {\r
-                               \r
-                               if (t1 != typeof (string))\r
-                                       value1 = Convert.ChangeType (value1, Type.GetTypeCode (t2));\r
-                               else if (t2 != typeof (string))\r
-                                       value2 = Convert.ChangeType (value2, Type.GetTypeCode (t1));\r
-                       }\r
-                       \r
-                       if (t1 != t2)\r
-                               value2 = Convert.ChangeType (value2, Type.GetTypeCode (t1));\r
-                       \r
-                       Result = Calculate (value1, value2, t1);\r
-                       \r
-                       return Result; \r
-               }\r
-               protected virtual object Calculate (object value1, object value2, Type TempType)\r
-               {\r
-                       return null;\r
-               }\r
-               \r
-               /// <summary>\r
-               ///  static method for comparing two ExpressionElement. This is used in =, <, >, <>, <=, >= elements.\r
-               ///  If elements are equal returns 0, if E1 is less that E2, return -1 else if E1 is greater 1 \r
-               /// </summary>\r
-               protected static int Compare (ExpressionElement E1, ExpressionElement E2, DataRow Row)\r
-               { \r
-                       ExpressionElementComparer comparer = new ExpressionElementComparer(E1, Row);\r
-\r
-                       return comparer.CompareTo(E2);\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Checks syntax of expression and throws exception if needed.\r
-               ///  Also removes whitespaces between operator elements for example: age < = 64 --> age <= 64\r
-               /// </summary>\r
-               internal static string ValidateExpression (string s)\r
-               {                       \r
-                       //\r
-                       // TODO: find out nice way to do this. This is NOT nice way :-P\r
-                       //\r
-                       //string temp = "";\r
-                       OP op = OP.OPERAND;\r
-                       OPERATOR_TYPE operatorType = OPERATOR_TYPE.UNDEFINED;\r
-\r
-                       StringBuilder strOperator = new StringBuilder();\r
-                       StringBuilder strOperand = new StringBuilder();\r
-                       int quotes = 0;\r
-                       int parentheses = 0;\r
-                       StringBuilder newExp = new StringBuilder();\r
-                       bool isDigit = false;\r
-                       //bool litOperator = false;\r
-                       s = s.Trim();\r
-                       \r
-                       for (int i = 0; i < s.Length; i++) \r
-                       {\r
-\r
-                               char c = s [i];\r
-                               \r
-                               if (c == '\'')\r
-                                       quotes++;\r
-\r
-                               if ((c == '\n' || c == '\t') && quotes == 0)\r
-                                       c = ' ';\r
-\r
-                               if (op == OP.OPERAND && c == '(')\r
-                                       parentheses++;\r
-                               else if (op == OP.OPERAND && c == ')')\r
-                                       parentheses--;\r
-\r
-                               if (c == ' ' && op ==  OP.OPERAND && (quotes % 2) == 0 && parentheses == 0) \r
-                               {\r
-                                       \r
-                                       op = OP.OPERATOR;\r
-                                       int max = strOperand.Length;\r
-                                       for (int it = 0; it < max; it++)\r
-                                               newExp.Append(strOperand[it]);\r
-                                       strOperand.Remove(0, max);\r
-                                       strOperator.Append(' ');\r
-                               }\r
-\r
-                               if (op == OP.OPERAND) \r
-                               {\r
-\r
-                                       if (!Char.IsDigit (c) && isDigit && (quotes % 2) == 0) \r
-                                       {\r
-                                               int max = strOperand.Length;\r
-                                               for (int it = 0; it < max; it++)\r
-                                                       newExp.Append(strOperand[it]);\r
-                                               strOperand.Remove(0, max);\r
-                                               op = OP.OPERATOR;\r
-                                               operatorType = OPERATOR_TYPE.UNDEFINED;\r
-                                       }\r
-                                       else\r
-                                               strOperand.Append(c);\r
-                               }\r
-\r
-                               if (op == OP.OPERATOR) \r
-                               {\r
-\r
-                                       isDigit = false;\r
-                                       if (operatorType == OPERATOR_TYPE.UNDEFINED) \r
-                                       {\r
-\r
-                                               if (c == '<' || c == '=' || c == '>' || c == '*' || c == '/' || c == '%' \r
-                                                       || c == '-' || c == '+')\r
-\r
-                                                       operatorType = OPERATOR_TYPE.SYMBOLIC;\r
-                                               else if (c != ' ')\r
-                                                       operatorType = OPERATOR_TYPE.LITERAL;\r
-                                       }\r
-                                       else if (operatorType == OPERATOR_TYPE.SYMBOLIC) \r
-                                       {\r
-                                               \r
-                                               //Checking for operators following one another\r
-                                               if ((c == '=' || c== '<' || c== '>') &&\r
-                                                       (strOperator.Length == 2) &&\r
-                                                       (strOperator[0] == ' '))\r
-                                               {\r
-                                                       char chSecond = strOperator[1];\r
-                                                       if (chSecond == '+' ||\r
-                                                               chSecond == '-' ||\r
-                                                               chSecond == '%' ||\r
-                                                               chSecond == '*')\r
-                                                       throw new SyntaxErrorException (\r
-                                                               "The operator " + strOperator.ToString() + c + " is not valid");\r
-                                               }\r
-\r
-                                               // this is COPY-PASTE\r
-                                               op = OP.OPERAND;\r
-                                               if (newExp[newExp.Length - 1] != ' '  && \r
-                                                       strOperator[0] != ' ')\r
-                                                       newExp.Append(' ');\r
-\r
-                                               int max = strOperator.Length;\r
-                                               for (int it = 0; it < max; it++)\r
-                                                       newExp.Append(strOperator[it]);\r
-                                               strOperator.Remove(0, max);\r
-\r
-                                               if (Char.IsDigit (c))\r
-                                                       isDigit = true;\r
-                                                       \r
-                                               strOperand.Remove(0, strOperand.Length);\r
-                                               strOperand.Append(c);\r
-                                               \r
-                                               continue;\r
-\r
-                                       }\r
-\r
-                                       if (operatorType == OPERATOR_TYPE.LITERAL && c == ' ') \r
-                                       {\r
-                                               op = OP.OPERAND;\r
-                                               int max = strOperator.Length;\r
-                                               for (int it = 0; it < max; it++)\r
-                                                       newExp.Append(strOperator[it]);\r
-                                               strOperator.Remove(0, max);\r
-\r
-                                               strOperand.Append(' ');\r
-                                       }\r
-\r
-\r
-                                       if (Char.IsDigit (c) && operatorType != OPERATOR_TYPE.LITERAL) \r
-                                       {\r
-\r
-                                               op = OP.OPERAND;\r
-                                               if (newExp[newExp.Length - 1] != ' '  && \r
-                                                       strOperator[0] != ' ')\r
-                                                       newExp.Append(' ');\r
-\r
-                                               int max = strOperator.Length;\r
-                                               for (int it = 0; it < max; it++)\r
-                                                       newExp.Append(strOperator[it]);\r
-                                               strOperator.Remove(0, max);\r
-\r
-                                               if (Char.IsDigit (c))\r
-                                                       isDigit = true;\r
-                                                       \r
-                                               strOperand.Remove(0, strOperand.Length);\r
-                                               strOperand.Append(c);\r
-                                       }\r
-\r
-                                       else if (c != ' ')\r
-                                               strOperator.Append(c);                                  \r
-                               }\r
-                       }\r
-\r
-                       if (op == OP.OPERATOR)\r
-                               throw new SyntaxErrorException (\r
-                                       "Missing operand after '" + strOperator.ToString() + "' operator");\r
-                       else\r
-                       {\r
-                               int max = strOperand.Length;\r
-                               for (int it = 0; it < max; it++)\r
-                                       newExp.Append(strOperand[it]);\r
-                       }\r
-\r
-                       return newExp.ToString();\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Finds and creates Expression elements.\r
-               ///  This presumes that expression is valid.\r
-               /// </summary>\r
-               protected void ParseExpression (string s)\r
-               {       \r
-                       //\r
-                       // TODO/FIXME: IMHO, this should be done with different kind of parsing:\r
-                       // char by char not operand by operand. \r
-                       // fixed the easy places, should consider better parsing\r
-                       //\r
-\r
-                       string inside = String.Empty; // stores string betwee parentheses like a = 12 and (b = 1 or b = 2)\r
-                       string lower = s.ToLower();\r
-                       //string function = ""; // stores fuction paramters like substring (this, are, paramters)\r
-                       //string s1 = "";\r
-                       //string s2 = "";\r
-                       int startIndex = lower.IndexOf ('(');\r
-                       \r
-                       // Find parenthesis\r
-                       if (startIndex != -1) \r
-                       {\r
-                               string functionName = String.Empty;\r
-                               if (startIndex > 0)\r
-                               {\r
-                                       int functionStart = lower.LastIndexOf('=', startIndex-1, startIndex);\r
-                                       if (functionStart < 0)\r
-                                               functionStart++;\r
-                                       functionName = lower.Substring(functionStart, startIndex);\r
-\r
-                                       functionName = functionName.Trim ();\r
-                               }\r
-\r
-                               // check if previous element is a function\r
-                               if (functionName.Length == 0 || (!functionName.EndsWith ("convert") && !functionName.EndsWith ("len") &&\r
-                                       !functionName.EndsWith ("isnull") && !functionName.EndsWith ("iif") &&\r
-                                       !functionName.EndsWith ("trim") && !functionName.EndsWith ("substring") &&\r
-                                       !functionName.EndsWith ("sum") && !functionName.EndsWith ("avg") &&\r
-                                       !functionName.EndsWith ("min") && !functionName.EndsWith ("max") &&\r
-                                       !functionName.EndsWith ("count") && !functionName.EndsWith ("stdev") &&\r
-                                       !functionName.EndsWith ("var")&& !functionName.EndsWith ("in"))) \r
-                               {\r
-                                       \r
-                                       \r
-                                       int i = startIndex + 1;\r
-                                       int max = lower.Length;\r
-                       \r
-                                       for (int par = 1; par > 0 && i < max; i++) \r
-                                       {\r
-\r
-                                               char c = s [i];\r
-                                               if (c == '(')\r
-                                                       par++;\r
-                                               else\r
-                                               if (c == ')')\r
-                                                       par--;\r
-                                       }\r
-                                       \r
-                                       inside = s.Substring(startIndex + 1, i - startIndex - 2); \r
-                                       lower = lower.Remove (startIndex, i - startIndex);\r
-                                       s = s.Remove (startIndex, i - startIndex);\r
-                               }               \r
-                                            \r
-                       }\r
-                       \r
-                       string string1 = null;\r
-                       string string2 = null;\r
-                       if (FindOrElement (s, lower, ref string1, ref string2))         \r
-                               CreateOrElement (string1, string2, inside);\r
-\r
-                       else if (FindAndElement (s, lower, ref string1, ref string2))\r
-                               CreateAndElement (string1, string2, inside);\r
-\r
-                               // find LIKE\r
-                       else if (FindLikeElement (s, lower, ref string1, ref string2))\r
-                               CreateLikeElement (string1, string2, inside);\r
-                       \r
-                               // find IN\r
-                       else if (FindInElement (s, lower, ref string1, ref string2))\r
-                               CreateInElement (string1, string2, inside);\r
-\r
-                               // find =\r
-                       else if (FindEqualElement (s, lower, ref string1, ref string2))\r
-                               CreateEqualsElement (string1, string2, inside);\r
-\r
-                               // find <>\r
-                       else if (FindUnequalElement (s, lower, ref string1, ref string2))\r
-                               CreateUnequalsElement (string1, string2, inside);\r
-\r
-                               // find <=\r
-                       else if (FindLessThanOrEqualElement (s, lower, ref string1, ref string2))\r
-                               CreateLessThanOrEqualElement (string1, string2, inside);\r
-\r
-                               // find <\r
-                       else if (FindLessThanElement (s, lower, ref string1, ref string2))\r
-                               CreateLessThanElement (string1, string2, inside);\r
-\r
-                               // find >=\r
-                       else if (FindGreaterThanOrEqualElement (s, lower, ref string1, ref string2))\r
-                               CreateGreaterThanOrEqualElement (string1, string2, inside);\r
-\r
-                               // find >\r
-                       else if (FindGreaterThanElement (s, lower, ref string1, ref string2))\r
-                               CreateGreaterThanElement (string1, string2,  inside);\r
-\r
-                               // if there wasn't any operators like 'and' or 'not' there still could be\r
-                               // arithmetic operators like '+' or '-' or functions like 'iif' or 'substring'\r
-\r
-                               // find *\r
-                       else if (FindMultiplyElement (s, lower, ref string1, ref string2))\r
-                               CreateMultiplyElement (string1, string2, inside);\r
-                       \r
-                               // find /\r
-                       else if (FindDivideElement (s, lower, ref string1, ref string2))\r
-                               CreateDivideElement (string1, string2, inside);\r
-\r
-\r
-                               // find +\r
-                       else if (FindAdditionElement (s, lower, ref string1, ref string2))\r
-                               CreateAdditionElement (string1, string2, inside);\r
-\r
-                               // find -\r
-                       else if (FindSubtractElement (s, lower, ref string1, ref string2))\r
-                               CreateSubtractionElement (string1, string2, inside);\r
-\r
-                               // find %\r
-                       else if (FindModulusElement (s, lower, ref string1, ref string2))\r
-                               CreateModulusElement (string1, string2, inside);\r
-\r
-                               // find sum ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.SUM))\r
-                               Elements.Add (new ExpressionSum (s.Trim ()));\r
-\r
-                               // find avg ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.AVG))\r
-                               Elements.Add (new ExpressionAvg (s.Trim ()));\r
-\r
-                               // find min ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.MIN))\r
-                               Elements.Add (new ExpressionMin (s.Trim ()));\r
-\r
-                               // find max ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.MAX))\r
-                               Elements.Add (new ExpressionMax (s.Trim ()));\r
-\r
-                               // find count ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.COUNT))\r
-                               Elements.Add (new ExpressionCount (s.Trim ()));                            \r
-\r
-                               // find stdev ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.STDEV))\r
-                               Elements.Add (new ExpressionStdev (s.Trim ()));\r
-\r
-                               // find var ()\r
-                       else if (FindAggregateElement (s, lower, AGGREGATE.VAR))\r
-                               Elements.Add (new ExpressionVar (s.Trim ()));\r
-\r
-                               // find len\r
-                       else if (FindLenElement (s, lower))\r
-                               Elements.Add (new ExpressionLen (s.Trim ()));\r
-\r
-                               // find iif\r
-                       else if (FindIifElement (s, lower))\r
-                               Elements.Add (new ExpressionIif (s.Trim ()));\r
-\r
-                               // find isnull\r
-                       else if (FindIsNullElement (s, lower))\r
-                               Elements.Add (new ExpressionIsNull (s.Trim ()));\r
-\r
-                               // find substring\r
-                       else if (FindSubstringElement (s, lower))\r
-                               Elements.Add (new ExpressionSubstring (s.Trim ()));\r
-\r
-                               // if expression is like '(something someoperator something)'\r
-                       else if (inside.Trim () != string.Empty)\r
-                               ParseExpression (inside);\r
-\r
-                               // At least, if it wasnt any of the above it is just normat string or int\r
-                               // or....                       \r
-                       else\r
-                               Elements.Add (new ExpressionSingleElement (s.Trim ()));                 \r
-               }\r
-\r
-               #region CheckElement methods\r
-\r
-               //\r
-               // These methods are temporary for now\r
-               //\r
-\r
-               private bool FindOrElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf("or");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       // Test if or is between ''\r
-                       int oldIndex = -1;                      \r
-                       while ((indexOf = stemp.IndexOf ("or", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-                               \r
-                               oldIndex = indexOf;\r
-\r
-                               // check is the 'or' element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-                               \r
-                               // Check is or part of something else for example column name\r
-                               if (indexOf != 0) \r
-                               {\r
-                                       \r
-                                       if (stemp [indexOf - 1] != ' ' && stemp [indexOf - 1] != '\'')\r
-                                               continue;\r
-                               }\r
-                               \r
-                               if (indexOf < s.Length + 2) \r
-                               {\r
-                                       \r
-                                       if (stemp [indexOf + 2] != ' ' && stemp [indexOf + 2] != '\'')\r
-                                               continue;\r
-                               }\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 2).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-               \r
-               private bool FindAndElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf("and");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       // Test if or is between ''\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("and", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-                               \r
-                               oldIndex = indexOf;\r
-                               \r
-                               // check is the 'and' element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               // Check is or part of something else for example column name\r
-                               if (indexOf != 0) \r
-                               {\r
-                                       \r
-                                       if (stemp [indexOf - 1] != ' ' && stemp [indexOf - 1] != '\'')\r
-                                               continue;\r
-                               }\r
-                               \r
-                               if (indexOf < stemp.Length + 3) \r
-                               {\r
-                                       \r
-                                       if (stemp [indexOf + 3] != ' ' && stemp [indexOf + 3] != '\'')\r
-                                               continue;\r
-                               }\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 3).Trim ();\r
-                               return true;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               private bool FindLikeElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf("like");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       // Test if or is between ''\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("like", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-                               \r
-                               oldIndex = indexOf;\r
-                               \r
-                               // check is the 'and' element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               // Check is or part of something else for example column name\r
-                               if (indexOf != 0) \r
-                               {\r
-                                       \r
-                                       if (stemp [indexOf - 1] != ' ' && stemp [indexOf - 1] != '\'')\r
-                                               continue;\r
-                               }\r
-                               \r
-                               if (indexOf < stemp.Length + 4) \r
-                               {\r
-                                       \r
-                                       if (stemp [indexOf + 4] != ' ' && stemp [indexOf + 4] != '\'')\r
-                                               continue;\r
-                               }\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 4).Trim ();\r
-                               return true;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               private bool FindEqualElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("=");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-                       \r
-                       int oldIndex = -1;\r
-\r
-                       while ((indexOf = stemp.IndexOf ("=", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-\r
-                               // Check is the = part of <= or >=\r
-                               if (stemp [indexOf - 1] == '<' || stemp [indexOf - 1] == '>')\r
-                                       continue;\r
-\r
-                               // Check is the = element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-                                       \r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-                               \r
-                               return true;\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               private bool FindUnequalElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("<>");\r
-\r
-                       if (stemp.IndexOf ("<>") == -1)\r
-                               return false;\r
-                      \r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("<>", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-\r
-                               // test if next charachter is something else than ' '\r
-                               bool failed = false;\r
-\r
-                               // Check is the <> element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-                                       \r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 2).Trim ();\r
-                               \r
-                               return true;\r
-                       }\r
-\r
-                       return false;\r
-                       \r
-               }\r
-\r
-\r
-               private bool FindLessThanElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("<");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("<", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-\r
-                               // if < is part of <> or <=\r
-                               if (stemp [indexOf + 1] == '>' || stemp [indexOf + 1] == '=')\r
-                                       continue;\r
-\r
-                               // Test is < element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindLessThanOrEqualElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("<=");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("<=", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               // Test is <= element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 2).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindGreaterThanElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf (">");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf (">", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-\r
-                               // if < is part of <> or <=\r
-                               if (stemp [indexOf - 1] == '<' || stemp [indexOf + 1] == '=')\r
-                                       continue;\r
-\r
-                               // Test is < element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindGreaterThanOrEqualElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf (">=");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf (">=", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-                               // Test is <= element part of string element\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 2).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindAdditionElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("+");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("+", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               // FIXME: if '+' represents sign of integer\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindSubtractElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("-");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("-", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // check is this lonely element         \r
-                               failed = true;\r
-                               for (int i = indexOf - 1; i >= 0; i--) \r
-                               {\r
-                                       if (stemp [i] != ' ') \r
-                                       {\r
-                                               failed = false;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                                       \r
-                               if (failed)\r
-                                       continue;\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindMultiplyElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("*");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("*", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // FIXME: If there is a divide operator before multiply operator.\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindDivideElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("/");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("/", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // FIXME: If there is a multiply operator before divide operator.\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-                                   \r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindModulusElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("%");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("%", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // FIXME: If there is a multiply operator before divide operator.\r
-\r
-                               // Check is or part of column name\r
-                               if (IsPartOfColumnName (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 1).Trim ();\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindAggregateElement (string s, string lower, AGGREGATE aggregate)\r
-               {\r
-                       string agg = null;\r
-\r
-                       switch (aggregate) \r
-                       {\r
-\r
-                               case AGGREGATE.SUM:\r
-                                       agg = "sum";\r
-                                       break;\r
-                               case AGGREGATE.AVG:\r
-                                       agg = "avg";\r
-                                       break;\r
-                               case AGGREGATE.MIN:\r
-                                       agg = "min";\r
-                                       break;\r
-                               case AGGREGATE.MAX:\r
-                                       agg = "max";\r
-                                       break;\r
-                               case AGGREGATE.COUNT:\r
-                                       agg = "count";\r
-                                       break;\r
-                               case AGGREGATE.STDEV:\r
-                                       agg = "stdev";\r
-                                       break;\r
-                               case AGGREGATE.VAR:\r
-                                       agg = "var";\r
-                                       break;\r
-                               default:\r
-                                       throw new NotImplementedException ();\r
-                       }\r
-                              \r
-                               \r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf (agg);\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf (agg, oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-\r
-               }\r
-               \r
-               private bool FindSumElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("sum");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("sum", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindAvgElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("avg");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("avg", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindMinElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("min");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("min", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindMaxElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("max");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("max", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindCountElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("count");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("count", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindStdevElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("stdev");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("stdev", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindVarElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("var");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("var", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindLenElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("len");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("len", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindIifElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("iif");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("iif", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindIsNullElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("isnull");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("isnull", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-                               \r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindSubstringElement (string s, string lower)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("substring");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("substring", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-\r
-                               oldIndex = indexOf;\r
-                               bool failed = false;\r
-\r
-                               // Check is or part of column name\r
-                               if (indexOf != 0 && stemp [indexOf - 1] != ' ')\r
-                                       continue;\r
-\r
-                               // is the element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               private bool FindInElement (string s, string lower, ref string s1, ref string s2)\r
-               {\r
-                       string stemp = lower;\r
-                       int indexOf = stemp.IndexOf ("in");\r
-\r
-                       if (indexOf == -1)\r
-                               return false;\r
-\r
-                       int oldIndex = -1;\r
-                       while ((indexOf = stemp.IndexOf ("in", oldIndex + 1)) != -1 && indexOf > oldIndex) \r
-                       {\r
-                               oldIndex = indexOf;\r
-                               \r
-                               // check is the 'and' element part of string element\r
-                               if (IsPartOfStringElement (stemp, indexOf))\r
-                                       continue;\r
-\r
-\r
-                               // Check is or part of something else for example column name\r
-                               if (indexOf != 0) \r
-                               {       \r
-                                       if (stemp [indexOf - 1] != ' ' && stemp [indexOf - 1] != '\'')\r
-                                               continue;\r
-                               }\r
-                               \r
-                               if (indexOf < stemp.Length + 2) \r
-                               {\r
-                                       if (stemp [indexOf + 2] != ' ' && stemp [indexOf + 2] != '\'')\r
-                                               continue;\r
-                               }\r
-\r
-                               if (IsPartOfFunction (stemp, indexOf))\r
-                                       continue;\r
-\r
-                               s1 = s.Substring (0, indexOf).Trim ();\r
-                               s2 = s.Substring (indexOf + 2).Trim ();\r
-                               return true;\r
-                       }\r
-               \r
-                       return false;                   \r
-               }\r
-\r
-               \r
-               #endregion // CheckElement methods\r
-\r
-               #region CreateElement methods\r
-\r
-               // \r
-               // These methods are going to be removed when way of parsing is changed\r
-               //\r
-\r
-               private void CreateOrElement (string s1, string s2, string inside) \r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionOr (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateAndElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionAnd (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateLikeElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionLike (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateInElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionIn (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateEqualsElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionEquals (s1.Trim (), s2.Trim ()));                   \r
-               }\r
-\r
-               private void CreateUnequalsElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionUnequals (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateLessThanElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionLessThan (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateLessThanOrEqualElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionLessThanOrEqual (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateGreaterThanElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionGreaterThan (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-\r
-               private void CreateGreaterThanOrEqualElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionGreaterThanOrEqual (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateAdditionElement (string s1, string s2,  string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);                      \r
-                       Elements.Add (new ExpressionAddition (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateSubtractionElement (string s1, string s2,  string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);                      \r
-                       Elements.Add (new ExpressionSubtraction (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateMultiplyElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionMultiply (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateDivideElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionDivide (s1.Trim (), s2.Trim ()));\r
-               }\r
-\r
-               private void CreateModulusElement (string s1, string s2, string inside)\r
-               {\r
-                       CheckParenthesis (inside, ref s1, ref s2);\r
-                       Elements.Add (new ExpressionModulus (s1.Trim (), s2.Trim ()));\r
-               }                       \r
-\r
-               #endregion // CreateElemnt methods\r
-\r
-               #region Little helppers\r
-\r
-               private void CheckParenthesis (string inside, ref string s1, ref string s2)\r
-               {\r
-                       if (s1 == string.Empty && inside != string.Empty)\r
-                               s1 = inside;\r
-                       else if (s2 == string.Empty && inside != string.Empty)\r
-                               s2 = inside;    \r
-               }\r
-\r
-\r
-               /// <summary>\r
-               ///  Checks is the element part of stringelement\r
-               /// </summary>\r
-               private bool IsPartOfStringElement (string s, int indexOf)\r
-               {\r
-                       // count how many '-charachters are before or. If count is odd it means or IS between quotes\r
-                       int quotes = 0;\r
-                       for (int i = indexOf - 1; i >= 0; i--) \r
-                       {\r
-                               if (s [i] == '\'')\r
-                                       quotes++;\r
-                       }\r
-                       \r
-                       if ((quotes & 1) != 0)\r
-                               return true;\r
-                       else \r
-                               return false;\r
-               }\r
-\r
-               /// <summary>\r
-               ///  Checks is the element part of column table\r
-               /// </summary>\r
-               private bool IsPartOfColumnName (string s, int indexOf)\r
-               {\r
-                       for (int i = indexOf; i >= 0; i--) \r
-                       {\r
-                               \r
-                               // If the element is between [] it is part of columnname\r
-                               if (s [i] == '\'' || s [i] == ']') \r
-                               {\r
-                                       break;\r
-                               }\r
-                               else if (s [i] == '[') \r
-                               {\r
-                                       return true;\r
-                               }\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-\r
-               /// <summary>\r
-               ///  Checks are element part of function\r
-               /// </summary>\r
-               private bool IsPartOfFunction (string s, int indexOf)\r
-               {\r
-\r
-                       // \r
-                       // If ',' or '\''  comes before '(' this element is not part of function's parameters\r
-                       //\r
-                       \r
-                       for (int i = indexOf; i >= 0; i--) \r
-                       {\r
-                               \r
-                               if (s [i] == '(' || s [i] == ',') \r
-                               {\r
-                                       return true;\r
-                               }\r
-                               else if (s [i] == ')') \r
-                               {\r
-                                       break;\r
-                               }\r
-                       }\r
-\r
-                       return false;\r
-               }\r
-\r
-               #endregion // Little helppers\r
-\r
-               #region ExpressionElementComparer\r
-               protected sealed class ExpressionElementComparer\r
-               {\r
-                       object _value1 = null;\r
-                       Type _t1 = null;\r
-                       Type _RT1 = null;\r
-                       DataRow _row = null;\r
-\r
-                       public ExpressionElementComparer(ExpressionElement E1, DataRow Row)\r
-                       {\r
-                               _value1 = E1.Result (Row);\r
-\r
-                               _row = Row;\r
-\r
-                               if (_value1 == null || _value1 == DBNull.Value)\r
-                                       return;\r
-\r
-                               _t1 = _value1.GetType ();\r
-                               _RT1 = E1.ResultType (Row);\r
-                       }\r
-\r
-                       public int CompareTo (ExpressionElement E2)\r
-                       {\r
-                               object value1 = _value1;\r
-                               object value2 = E2.Result (_row);\r
-\r
-                               if ((value1 == null || value1 == DBNull.Value) && (value2 == null || value2 == DBNull.Value))\r
-                                       return 0;\r
-                               else if (value2 == null || value2 == DBNull.Value)\r
-                                       return 1;\r
-                               else if (value1 == null || value1 == DBNull.Value)\r
-                                       return -1;\r
-\r
-                               Type t2 = value2.GetType ();\r
-                       \r
-                               Type RT2 = E2.ResultType (_row);\r
-\r
-                               if (_t1 == typeof (string) || t2 == typeof (string)) \r
-                               {\r
-                                       // FIXME: If one of elements are string they both should be???\r
-                                       return String.Compare(value1.ToString(), value2.ToString(), !_row.Table.CaseSensitive);\r
-                               }\r
-\r
-                               if (_t1 != t2) \r
-                               {\r
-                                       value2 = Convert.ChangeType (value2, Type.GetTypeCode (_t1));\r
-                               }\r
-\r
-                               if (value1 is IComparable)\r
-                                       return ((IComparable)value1).CompareTo(value2);\r
-\r
-                               return (int) _t1.InvokeMember ("CompareTo", BindingFlags.Default | \r
-                                       BindingFlags.InvokeMethod, null, \r
-                                       value1, \r
-                                       new object [] {value2});\r
-                       }\r
-               }\r
-               #endregion\r
-       }    \r
-       #endif    \r
-}\r
diff --git a/mcs/class/System.Data/System.Data/FillErrorEventArgs.cs b/mcs/class/System.Data/System.Data/FillErrorEventArgs.cs
deleted file mode 100644 (file)
index 559a30e..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// System.Data.FillErrorEventArgs.cs
-//
-// Author:
-//   Miguel de Icaza <miguel@ximian.com>
-//
-// (C) Ximian, Inc 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       public class FillErrorEventArgs : EventArgs {
-               DataTable data_table;
-               object [] values;
-               Exception errors;
-               bool f_continue;
-
-               public FillErrorEventArgs (DataTable dataTable, object [] values)
-               {
-                       this.data_table = dataTable;
-                       this.values = values;
-               }
-
-               public bool Continue {
-                       get {
-                               return f_continue;
-                       }
-
-                       set {
-                               f_continue = value;
-                       }
-               }
-
-               public DataTable DataTable {
-                       get {
-                               return data_table;
-                       }
-               }
-
-               public Exception Errors {
-                       get {
-                               return errors;
-                       }
-
-                       set {
-                               errors = value;
-                       }
-               }
-
-               public object [] Values {
-                       get {
-                               return values;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/FillErrorEventHandler.cs b/mcs/class/System.Data/System.Data/FillErrorEventHandler.cs
deleted file mode 100644 (file)
index 6e44835..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Data.FillErrorEventHandler.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the FillError event.
-       /// </summary>
-       public delegate void FillErrorEventHandler(object sender, FillErrorEventArgs e);
-
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/FillOptions.cs b/mcs/class/System.Data/System.Data/FillOptions.cs
deleted file mode 100644 (file)
index 497b97f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Data.FillOptions.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum FillOptions 
-       {
-               None,
-               FillChildren,
-               FillExtendedSchema,
-               FillWithoutExtendedMetaData
-       }
-}
-
-
diff --git a/mcs/class/System.Data/System.Data/ForeignKeyConstraint.cs b/mcs/class/System.Data/System.Data/ForeignKeyConstraint.cs
deleted file mode 100644 (file)
index 122200e..0000000
+++ /dev/null
@@ -1,559 +0,0 @@
-//
-// System.Data.ForeignKeyConstraint.cs
-//
-// Author:
-//   Franklin Wise <gracenote@earthlink.net>
-//   Daniel Morgan <danmorg@sc.rr.com>
-//
-// (C) 2002 Franklin Wise
-// (C) 2002 Daniel Morgan
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Data.Common;
-
-namespace System.Data {
-       [Editor ("Microsoft.VSDesigner.Data.Design.ForeignKeyConstraintEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       [DefaultProperty ("ConstraintName")]
-       public class ForeignKeyConstraint : Constraint 
-       {
-               private UniqueConstraint _parentUniqueConstraint;
-               //FIXME: create a class which will wrap this collection
-               private DataColumn [] _parentColumns;
-               //FIXME: create a class which will wrap this collection
-               private DataColumn [] _childColumns;
-               private Rule _deleteRule = Rule.Cascade;
-               private Rule _updateRule = Rule.Cascade;
-               private AcceptRejectRule _acceptRejectRule = AcceptRejectRule.None;
-               private string _parentTableName;
-               private string _parentTableNamespace;
-               private string _childTableName;
-
-               //FIXME: remove those; and use only DataColumns[]
-               private string [] _parentColumnNames;
-               private string [] _childColumnNames;
-                       
-               #region Constructors
-
-               public ForeignKeyConstraint(DataColumn parentColumn, DataColumn childColumn) 
-               {
-                       if (null == parentColumn || null == childColumn) {
-                               throw new NullReferenceException("Neither parentColumn or" +
-                                       " childColumn can be null.");
-                       }
-                       _foreignKeyConstraint(null, new DataColumn[] {parentColumn},
-                                       new DataColumn[] {childColumn});
-               }
-
-               public ForeignKeyConstraint(DataColumn[] parentColumns, DataColumn[] childColumns) 
-               {
-                       _foreignKeyConstraint(null, parentColumns, childColumns);
-               }
-
-               public ForeignKeyConstraint(string constraintName, DataColumn parentColumn, DataColumn childColumn) 
-               {
-                       if (null == parentColumn || null == childColumn) {
-                               throw new NullReferenceException("Neither parentColumn or" +
-                                       " childColumn can be null.");
-                       }
-
-                       _foreignKeyConstraint(constraintName, new DataColumn[] {parentColumn},
-                                       new DataColumn[] {childColumn});
-               }
-
-               public ForeignKeyConstraint(string constraintName, DataColumn[] parentColumns, DataColumn[] childColumns) 
-               {
-                       _foreignKeyConstraint(constraintName, parentColumns, childColumns);
-               }
-
-               //special case
-               [Browsable (false)]
-               public ForeignKeyConstraint(string constraintName, string parentTableName, string[] parentColumnNames, string[] childColumnNames, AcceptRejectRule acceptRejectRule, Rule deleteRule, Rule updateRule) 
-               {
-                       int i;
-                       InitInProgress = true;
-                       base.ConstraintName = constraintName;
-
-                       // "parentTableName" is searched in the "DataSet" to which the "DataTable"
-                       // from which AddRange() is called
-                       // childTable is the "DataTable" which calls AddRange()
-
-                       // Keep reference to parentTableName to resolve later
-                       _parentTableName = parentTableName;
-
-                       // Keep a copy of parentColumnNames to resolve later
-                       _parentColumnNames = new string [parentColumnNames.Length];
-                       for (i = 0; i < parentColumnNames.Length; i++)
-                              _parentColumnNames[i] = parentColumnNames[i];
-                       
-                       // Keep a copy of childColumnNames to resolve later
-                       _childColumnNames = new string [childColumnNames.Length];
-                       for (i = 0; i < childColumnNames.Length; i++)
-                              _childColumnNames[i] = childColumnNames[i];
-                       
-
-                       _acceptRejectRule = acceptRejectRule;
-                       _deleteRule = deleteRule;
-                       _updateRule = updateRule;
-               }
-
-               internal override void FinishInit (DataTable childTable)
-               {
-                       if (childTable.DataSet == null)
-                               throw new InvalidConstraintException ("ChildTable : " + childTable.TableName + " does not belong to any DataSet");
-
-                       DataSet dataSet = childTable.DataSet;
-                       _childTableName = childTable.TableName;
-
-                       if (!dataSet.Tables.Contains (_parentTableName))
-                               throw new InvalidConstraintException ("Table : " + _parentTableName + "does not exist in DataSet : " + dataSet);
-
-                       DataTable parentTable = dataSet.Tables [_parentTableName];
-
-                       int i = 0, j = 0;
-
-                       if (_parentColumnNames.Length < 0 || _childColumnNames.Length < 0)
-                               throw new InvalidConstraintException ("Neither parent nor child columns can be zero length");
-
-                       if (_parentColumnNames.Length != _childColumnNames.Length)
-                               throw new InvalidConstraintException ("Both parent and child columns must be of same length");                                                                                                    
-                       DataColumn[] parentColumns = new DataColumn [_parentColumnNames.Length];
-                       DataColumn[] childColumns = new DataColumn [_childColumnNames.Length];
-
-                       foreach (string parentCol in _parentColumnNames){
-                               if (!parentTable.Columns.Contains (parentCol))
-                                       throw new InvalidConstraintException ("Table : " + _parentTableName + "does not contain the column :" + parentCol);
-                               parentColumns [i++] = parentTable. Columns [parentCol];
-                       }
-
-                       foreach (string childCol in _childColumnNames){
-                               if (!childTable.Columns.Contains (childCol))
-                                       throw new InvalidConstraintException ("Table : " + _childTableName + "does not contain the column : " + childCol);
-                               childColumns [j++] = childTable.Columns [childCol];
-                       }
-                       _validateColumns (parentColumns, childColumns);
-                       _parentColumns = parentColumns;
-                       _childColumns = childColumns;
-                       parentTable.Namespace = _parentTableNamespace;
-                       InitInProgress = false;
-               }
-
-               [Browsable (false)]
-               public ForeignKeyConstraint (string constraintName, string parentTableName, string parentTableNamespace, string[] parentColumnNames, string[] childColumnNames, AcceptRejectRule acceptRejectRule, Rule deleteRule, Rule updateRule)
-               {
-                       InitInProgress = true;
-                       base.ConstraintName = constraintName;
-
-                       // "parentTableName" is searched in the "DataSet" to which the "DataTable"
-                       // from which AddRange() is called
-                       // childTable is the "DataTable" which calls AddRange()
-
-                       // Keep reference to parentTableName to resolve later
-                       _parentTableName = parentTableName;
-                       _parentTableNamespace = parentTableNamespace;
-
-                       // Keep reference to parentColumnNames to resolve later
-                       _parentColumnNames = parentColumnNames;
-
-                       // Keep reference to childColumnNames to resolve later
-                       _childColumnNames = childColumnNames;
-
-                       _acceptRejectRule = acceptRejectRule;
-                       _deleteRule = deleteRule;
-                       _updateRule = updateRule;
-               }
-
-               private void _foreignKeyConstraint(string constraintName, DataColumn[] parentColumns,
-                               DataColumn[] childColumns)
-               {
-                       int i;
-                       //Validate 
-                       _validateColumns(parentColumns, childColumns);
-
-                       //Set Constraint Name
-                       base.ConstraintName = constraintName;   
-
-                       //copy the columns - Do not keep reference #672113
-                       _parentColumns = new DataColumn [parentColumns.Length];
-                       for (i = 0; i < parentColumns.Length; i++)
-                              _parentColumns[i] = parentColumns[i];
-                       
-                       _childColumns = new DataColumn [childColumns.Length];                   
-                       for (i = 0; i < childColumns.Length; i++)
-                              _childColumns[i] = childColumns[i];
-               }
-
-#endregion // Constructors
-
-#region Helpers
-
-               private void _validateColumns(DataColumn[] parentColumns, DataColumn[] childColumns)
-               {
-                       //not null
-                       if (null == parentColumns || null == childColumns) 
-                               throw new ArgumentNullException();
-
-                       //at least one element in each array
-                       if (parentColumns.Length < 1 || childColumns.Length < 1)
-                               throw new ArgumentException("Neither ParentColumns or ChildColumns can't be" +
-                                               " zero length.");
-                               
-                       //same size arrays
-                       if (parentColumns.Length != childColumns.Length)
-                               throw new ArgumentException("Parent columns and child columns must be the same length.");
-                       
-
-                       DataTable ptable = parentColumns[0].Table;
-                       DataTable ctable = childColumns[0].Table;
-
-                       for (int i = 0; i < parentColumns.Length; i++) {
-                               DataColumn pc = parentColumns[i];
-                               DataColumn cc = childColumns[i];
-
-                               //not null check
-                               if (null == pc.Table) 
-                                       throw new ArgumentException("All columns must belong to a table." + 
-                                               " ColumnName: " + pc.ColumnName + " does not belong to a table.");
-                               
-                               //All columns must belong to the same table
-                               if (ptable != pc.Table)
-                                       throw new InvalidConstraintException("Parent columns must all belong to the same table.");
-
-                               //not null check
-                               if (null == cc.Table) 
-                                       throw new ArgumentException("All columns must belong to a table." + 
-                                               " ColumnName: " + pc.ColumnName + " does not belong to a table.");
-
-                               //All columns must belong to the same table.
-                               if (ctable != cc.Table)
-                                       throw new InvalidConstraintException("Child columns must all belong to the same table.");
-
-                               if (pc.CompiledExpression != null)
-                                       throw new ArgumentException(String.Format("Cannot create a constraint based on Expression column {0}.", pc.ColumnName));
-
-                               if (cc.CompiledExpression != null)
-                                       throw new ArgumentException(String.Format("Cannot create a constraint based on Expression column {0}.", cc.ColumnName));
-                               
-                       }
-
-                        //Same dataset.  If both are null it's ok
-                       if (ptable.DataSet != ctable.DataSet)
-                       {
-                               //LAMESPEC: spec says InvalidConstraintExceptoin
-                               //      impl does InvalidOperationException
-                               throw new InvalidOperationException("Parent column and child column must belong to" + 
-                                               " tables that belong to the same DataSet.");
-                                               
-                       }       
-
-
-                       int identicalCols = 0;
-                       for (int i = 0; i < parentColumns.Length; i++)
-                       {
-                               DataColumn pc = parentColumns[i];
-                               DataColumn cc = childColumns[i];
-                               
-                               if (pc == cc) {
-                                       identicalCols++;
-                                       continue;
-                               }
-
-                               if (!pc.DataTypeMatches (cc)) {
-                                       //LAMESPEC: spec says throw InvalidConstraintException
-                                       //              implementation throws InvalidOperationException
-                                       throw new InvalidOperationException ("Parent column is not type compatible with it's child"
-                                               + " column.");
-                               }
-                       }
-                       if (identicalCols == parentColumns.Length)
-                               throw new InvalidOperationException ("Property not accessible because 'ParentKey and ChildKey are identical.'.");
-                       
-               }
-               
-               //Checks to see if a related unique constraint exists
-               //if it doesn't then a unique constraint is created.
-               //if a unique constraint can't be created an exception will be thrown
-               private void _ensureUniqueConstraintExists(ConstraintCollection collection,
-                               DataColumn [] parentColumns)
-               {
-                       //not null
-                       if (null == parentColumns) throw new ArgumentNullException(
-                                       "ParentColumns can't be null");
-
-                       UniqueConstraint uc = null;
-                       
-                       //see if unique constraint already exists
-                       //if not create unique constraint
-                       if(parentColumns[0] != null)
-                               uc = UniqueConstraint.GetUniqueConstraintForColumnSet(parentColumns[0].Table.Constraints, parentColumns);
-
-                       if (null == uc) {
-                               uc = new UniqueConstraint(parentColumns, false); //could throw
-                               parentColumns [0].Table.Constraints.Add (uc);
-                       }
-
-                       //keep reference
-                       _parentUniqueConstraint = uc;
-                       _parentUniqueConstraint.ChildConstraint = this;
-               }
-               
-               
-               #endregion //Helpers
-               
-               #region Properties
-
-               [DataCategory ("Data")]
-               [DefaultValue (AcceptRejectRule.None)]
-               public virtual AcceptRejectRule AcceptRejectRule {
-                       get { return _acceptRejectRule; }
-                       set { _acceptRejectRule = value; }
-               }
-
-               [DataCategory ("Data")]
-               [ReadOnly (true)]
-               public virtual DataColumn[] Columns {
-                       get { return _childColumns; }
-               }
-
-               [DataCategory ("Data")]
-               [DefaultValue (Rule.Cascade)]
-               public virtual Rule DeleteRule {
-                       get { return _deleteRule; }
-                       set { _deleteRule = value; }
-               }
-
-               [DataCategory ("Data")]
-               [DefaultValue (Rule.Cascade)]
-               public virtual Rule UpdateRule {
-                       get { return _updateRule; }
-                       set { _updateRule = value; }
-               }
-
-               [DataCategory ("Data")] 
-               [ReadOnly (true)]
-               public virtual DataColumn[] RelatedColumns {
-                       get { return _parentColumns; }
-               }
-
-               [DataCategory ("Data")] 
-               [ReadOnly (true)]
-               public virtual DataTable RelatedTable {
-                       get {
-                               if (_parentColumns != null)
-                                       if (_parentColumns.Length > 0)
-                                               return _parentColumns[0].Table;
-
-                               throw new InvalidOperationException ("Property not accessible because 'Object reference not set to an instance of an object'");
-                       }
-               }
-
-               [DataCategory ("Data")]
-               [ReadOnly (true)]
-               public override DataTable Table {
-                       get {
-                               if (_childColumns != null)
-                                       if (_childColumns.Length > 0)
-                                               return _childColumns[0].Table;
-
-                               throw new InvalidOperationException ("Property not accessible because 'Object reference not set to an instance of an object'");
-                       }
-               }
-
-               internal UniqueConstraint ParentConstraint {
-                       get { return _parentUniqueConstraint; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public override bool Equals(object key) 
-               {
-                       ForeignKeyConstraint fkc = key as ForeignKeyConstraint;
-                       if (null == fkc) return false;
-
-                       //if the fk constrains the same columns then they are equal
-                       if (! DataColumn.AreColumnSetsTheSame( this.RelatedColumns, fkc.RelatedColumns))
-                               return false;
-                       if (! DataColumn.AreColumnSetsTheSame( this.Columns, fkc.Columns) )
-                               return false;
-
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       //initialize hash1 and hash2 with default hashes
-                       //any two DIFFERENT numbers will do here
-                       int hash1 = 32, hash2 = 88;
-                       int i;
-
-                       //derive the hash code from the columns that way
-                       //Equals and GetHashCode return Equal objects to be the
-                       //same
-
-                       //Get the first parent column hash
-                       if (this.Columns.Length > 0)
-                               hash1 ^= this.Columns[0].GetHashCode();
-                       
-                       //get the rest of the parent column hashes if there any
-                       for (i = 1; i < this.Columns.Length; i++)
-                       {
-                               hash1 ^= this.Columns[1].GetHashCode();
-                               
-                       }
-                       
-                       //Get the child column hash
-                       if (this.RelatedColumns.Length > 0)
-                               hash2 ^= this.Columns[0].GetHashCode();
-                       
-                       for (i = 1; i < this.RelatedColumns.Length; i++)
-                       {
-                               hash2 ^= this.RelatedColumns[1].GetHashCode();
-                       }
-
-                       //combine the two hashes
-                       return hash1 ^ hash2;
-               }
-
-               internal override void AddToConstraintCollectionSetup(
-                               ConstraintCollection collection)
-               {                       
-                       if (collection.Table != Table)
-                               throw new InvalidConstraintException("This constraint cannot be added since ForeignKey doesn't belong to table " + RelatedTable.TableName + ".");
-
-                       //run Ctor rules again
-                       _validateColumns(_parentColumns, _childColumns);
-                       
-                       //we must have a unique constraint on the parent
-                       _ensureUniqueConstraintExists(collection, _parentColumns);
-                       
-                       if ( (Table.DataSet != null && Table.DataSet.EnforceConstraints)
-                            || (Table.DataSet == null && Table.EnforceConstraints)) {
-                               if (IsConstraintViolated())
-                                       throw new ArgumentException("This constraint cannot be enabled as not all values have corresponding parent values.");
-                       }
-                       //FIXME : if this fails and we created a unique constraint
-                       //we should probably roll it back
-                       // and remove index form Table                  
-               }
-                                       
-               internal override void RemoveFromConstraintCollectionCleanup( 
-                               ConstraintCollection collection)
-               {
-                       _parentUniqueConstraint.ChildConstraint = null;
-                       Index = null;
-               }
-               
-               internal override bool IsConstraintViolated()
-               {
-                       if (Table.DataSet == null || RelatedTable.DataSet == null) 
-                               return false;
-                       
-                       bool hasErrors = false;
-                       foreach (DataRow row in Table.Rows) {
-                               if (row.RowState == DataRowState.Deleted)
-                                       continue;
-                               
-                               // we check if all values in _childColumns place are nulls.
-                               // if yes we return.
-                               if (row.IsNullColumns(_childColumns))
-                                       continue;
-
-                               // check whenever there is (at least one) parent row  in RelatedTable
-                               if(!RelatedTable.RowsExist(_parentColumns,_childColumns,row)) { 
-                                       // if no parent row exists - constraint is violated
-                                       hasErrors = true;
-                                       string[] values = new string[_childColumns.Length];
-                                       for (int i = 0; i < _childColumns.Length; i++){
-                                               DataColumn col = _childColumns[i];
-                                               values[i] = row[col].ToString();
-                                       }
-
-                                       row.RowError = String.Format("ForeignKeyConstraint {0} requires the child key values ({1}) to exist in the parent table.",
-                                               ConstraintName, String.Join(",", values));
-                               }
-                       }
-
-                       if (hasErrors)
-                               //throw new ConstraintException("Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.");
-                               return true;
-
-                       return false;
-               }
-               
-               internal override void AssertConstraint(DataRow row)
-               {
-                       // first we check if all values in _childColumns place are nulls.
-                       // if yes we return.
-                       if (row.IsNullColumns(_childColumns))
-                               return;
-
-                       // check whenever there is (at least one) parent row  in RelatedTable
-                       if(!RelatedTable.RowsExist(_parentColumns,_childColumns,row)) { 
-                               // if no parent row exists - constraint is violated
-                               throw new InvalidConstraintException(GetErrorMessage(row));
-                       }
-               }
-
-               internal override bool IsColumnContained(DataColumn column)
-               {
-                       for (int i = 0; i < _parentColumns.Length; i++)
-                               if (column == _parentColumns[i])
-                                       return true;
-
-                       for (int i = 0; i < _childColumns.Length; i++)
-                               if (column == _childColumns[i])
-                                       return true;
-
-                       return false;
-               }
-
-               internal override bool CanRemoveFromCollection(ConstraintCollection col, bool shouldThrow){
-                       return true;
-               }
-
-               private string GetErrorMessage(DataRow row)
-               {
-                       System.Text.StringBuilder sb = new System.Text.StringBuilder();
-                       for (int i = 0; i < _childColumns.Length; i++) {
-                               sb.Append(row[_childColumns[0]].ToString());
-                               if (i != _childColumns.Length - 1) {
-                                       sb.Append(',');
-                               }
-                       }
-                       string valStr = sb.ToString();
-                       return "ForeignKeyConstraint " + ConstraintName + " requires the child key values (" + valStr + ") to exist in the parent table.";
-               }               
-                
-               #endregion // Methods
-       }
-
-}
diff --git a/mcs/class/System.Data/System.Data/IColumnMapping.cs b/mcs/class/System.Data/System.Data/IColumnMapping.cs
deleted file mode 100644 (file)
index 3841853..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Data.IColumnMapping.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Associates a data source column with a DataSet column, and is implemented by the DataColumnMapping class, which is used in common by .NET data providers.
-       /// </summary>
-       public interface IColumnMapping
-       {
-               /// <summary>
-               /// Gets or sets the name of the column within the DataSet to map to.
-               /// </summary>
-               string DataSetColumn
-               {
-                       get;
-                       set;
-               }
-
-               /// <summary>
-               /// Gets or sets the name of the column within the data source to map from. The name is case-sensitive.
-               /// </summary>
-               string SourceColumn
-               {
-                       get;
-                       set;
-               }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/IColumnMappingCollection.cs b/mcs/class/System.Data/System.Data/IColumnMappingCollection.cs
deleted file mode 100644 (file)
index 780fd1e..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Data.IColumnMappingCollection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Contains a collection of ColumnMapping objects, and is implemented by the DataColumnMappingCollection, which is used in common by .NET data providers.
-       /// </summary>
-       public interface IColumnMappingCollection : IList, ICollection, IEnumerable
-       {
-               IColumnMapping Add(string sourceColumnName, string dataSetColumnName);
-
-               bool Contains(string sourceColumnName);
-
-               IColumnMapping GetByDataSetColumn(string dataSetColumnName);
-
-               int IndexOf(string sourceColumnName);
-
-               void RemoveAt(string sourceColumnName);
-               
-               object this[string index]
-               {
-                       get;
-                       set;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/IDataAdapter.cs b/mcs/class/System.Data/System.Data/IDataAdapter.cs
deleted file mode 100644 (file)
index dde7af0..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// System.Data.IDataAdapter.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Allows an object to implement a DataAdapter, and represents a set of methods and mapping action-related properties used to fill and refresh a DataSet and update a data source.
-       /// </summary>
-       public interface IDataAdapter
-       {
-               int Fill(DataSet dataSet);
-
-               DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType);
-
-               IDataParameter[] GetFillParameters();
-
-               int Update(DataSet dataSet);
-               
-               MissingMappingAction MissingMappingAction{get;set;}
-
-               MissingSchemaAction MissingSchemaAction{get;set;}
-
-               ITableMappingCollection TableMappings{get;}
-
-
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/IDataParameter.cs b/mcs/class/System.Data/System.Data/IDataParameter.cs
deleted file mode 100644 (file)
index 82941b0..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.IDataParameter.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents a parameter to a Command object, and optionally, its mapping to DataSet columns; and is implemented by .NET data providers that access data sources.
-       /// </summary>
-       public interface IDataParameter
-       {
-               
-               DbType DbType{get;set;}
-
-               ParameterDirection Direction{get;set;}
-
-               bool IsNullable{get;}
-
-               string ParameterName{get;set;}
-
-               string SourceColumn{get;set;}
-
-               DataRowVersion SourceVersion {get;set;}
-
-               object Value {get;set;}
-
-
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/IDataParameterCollection.cs b/mcs/class/System.Data/System.Data/IDataParameterCollection.cs
deleted file mode 100644 (file)
index 8cf0ce1..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Data.IDataParameterCollection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Collects all parameters relevant to a Command object and their mappings to DataSet columns, and is implemented by .NET data providers that access data sources.
-       /// </summary>
-       public interface IDataParameterCollection : IList, ICollection, IEnumerable
-       {
-               void RemoveAt(string parameterName);
-               
-               int IndexOf(string parameterName);
-               
-               bool Contains(string parameterName);
-
-               object this[string parameterName]{get; set;}
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/IDataReader.cs b/mcs/class/System.Data/System.Data/IDataReader.cs
deleted file mode 100644 (file)
index 22f60b3..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// System.Data.IDataReader.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Provides a means of reading one or more forward-only streams of result sets obtained by executing a command at a data source, and is implemented by .NET data providers that access relational databases.
-       /// </summary>
-       public interface IDataReader  : IDisposable, IDataRecord
-       {
-               void Close();
-               
-               DataTable GetSchemaTable();
-               
-               bool NextResult();
-
-               bool Read();
-
-               int Depth{get;}
-
-               bool IsClosed{get;}
-
-               int RecordsAffected{get;}
-
-
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/IDataRecord.cs b/mcs/class/System.Data/System.Data/IDataRecord.cs
deleted file mode 100644 (file)
index c8e8725..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// System.Data.IDataRecord.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Provides access to the column values within 
-       /// each row for a DataReader, and is implemented by .NET data 
-       /// providers that access relational databases.
-       /// </summary>
-       public interface IDataRecord
-       {
-               bool GetBoolean(int i);
-
-               byte GetByte(int i);
-
-               long GetBytes(int i, long fieldOffset, byte[] buffer,
-                       int bufferoffset, int length);
-
-               char GetChar(int i);
-
-               long GetChars (int i, long fieldoffset, char [] buffer,
-                       int bufferoffset, int length);
-
-               IDataReader GetData(int i);
-
-               string GetDataTypeName(int i);
-
-               DateTime GetDateTime(int i);
-
-               decimal GetDecimal(int i);
-
-               double GetDouble(int i);
-
-               Type GetFieldType(int i);
-
-               float GetFloat(int i);
-
-               Guid GetGuid(int i);
-
-               short GetInt16(int i);
-
-               int GetInt32(int i);
-
-               long GetInt64(int i);
-
-               string GetName(int i);
-
-               int GetOrdinal(string name);
-
-               string GetString(int i);
-
-               object GetValue(int i);
-
-               int GetValues(object[] values);
-
-               bool IsDBNull(int i);
-
-               int FieldCount{get;}
-
-               object this[string name]{get;}
-               
-               object this[int i]{get;}
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/IDbCommand.cs b/mcs/class/System.Data/System.Data/IDbCommand.cs
deleted file mode 100644 (file)
index 16bdb6e..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// System.Data.IDBCommand.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents a SQL statement that is executed while connected to a data source, and is implemented by .NET data providers that access relational databases.
-       /// </summary>
-       public interface IDbCommand : IDisposable
-       {
-               void Cancel();
-               
-               IDbDataParameter CreateParameter();
-               
-               int ExecuteNonQuery();
-
-               IDataReader ExecuteReader();
-
-               IDataReader ExecuteReader(CommandBehavior behavior);
-
-               object ExecuteScalar();
-
-               void Prepare();
-
-               string CommandText{get; set;}
-
-               int CommandTimeout{get; set;}
-
-               CommandType CommandType{get; set;}
-
-               IDbConnection Connection{get; set;}
-
-               IDataParameterCollection Parameters{get;}
-
-               IDbTransaction Transaction{get; set;}
-
-               UpdateRowSource UpdatedRowSource{get; set;}
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/IDbConnection.cs b/mcs/class/System.Data/System.Data/IDbConnection.cs
deleted file mode 100644 (file)
index 7d26729..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// System.Data.IDBConnection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents an open connection to a data source, and is implemented by .NET data providers that access relational databases.
-       /// </summary>
-       public interface IDbConnection : IDisposable
-       {
-               IDbTransaction BeginTransaction();
-
-               IDbTransaction BeginTransaction(IsolationLevel il);
-
-               void ChangeDatabase(string databaseName);
-
-               void Close();
-
-               IDbCommand CreateCommand();
-
-               void Open();
-
-
-               string ConnectionString{get; set;}
-
-               int ConnectionTimeout{get;}
-
-               string Database{get;}
-
-               ConnectionState State{get;}
-
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/IDbDataAdapter.cs b/mcs/class/System.Data/System.Data/IDbDataAdapter.cs
deleted file mode 100644 (file)
index 6bbcddc..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Data.IDbDataAdapter.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents a set of command-related properties that are used to fill the DataSet and update a data source, and is implemented by .NET data providers that access relational databases.
-       /// </summary>
-       public interface IDbDataAdapter : IDataAdapter
-       {
-               IDbCommand DeleteCommand{get; set;}
-
-               IDbCommand InsertCommand{get; set;}
-
-               IDbCommand SelectCommand{get; set;}
-
-               IDbCommand UpdateCommand{get; set;}
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/IDbDataParameter.cs b/mcs/class/System.Data/System.Data/IDbDataParameter.cs
deleted file mode 100644 (file)
index c6f2717..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Data.IDbDataParameter.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Used by the Visual Basic .NET Data Designers to represent a parameter to a Command object, and optionally, its mapping to DataSet columns.
-       /// </summary>
-       public interface IDbDataParameter : IDataParameter
-       {
-               byte Precision{get; set;}
-
-               byte Scale{get; set;}
-
-               int Size{get; set;}
-       }       
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/IDbTransaction.cs b/mcs/class/System.Data/System.Data/IDbTransaction.cs
deleted file mode 100644 (file)
index d8c0751..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Data.IDbTransaction.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents a transaction to be performed at a data source, and is implemented by .NET data providers that access relational databases.
-       /// </summary>
-       public interface IDbTransaction : IDisposable
-       {
-               void Commit();
-
-               void Rollback();
-               
-               IDbConnection Connection{get;}
-
-               IsolationLevel IsolationLevel{get;}
-       }       
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/ISafeDataRecord.cs b/mcs/class/System.Data/System.Data/ISafeDataRecord.cs
deleted file mode 100644 (file)
index a76969b..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// System.Data.ISafeDataRecord
-//
-// Author:
-//   Boris Kirzner (borisk@mainsoft.com)
-//
-using System;
-
-namespace System.Data
-{
-       internal interface ISafeDataRecord : IDataRecord
-       {
-               bool GetBooleanSafe(int i);
-
-               byte GetByteSafe(int i);
-
-               //long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferOffset, int length);
-
-               char GetCharSafe(int i);
-
-               //long GetChars(int i, long fieldOffset, char[] buffer, int bufferOffset, int length);
-
-               //IDataReader GetData(int i);
-
-               //string GetDataTypeName(int i);
-
-               DateTime GetDateTimeSafe(int i);
-
-               decimal GetDecimalSafe(int i);
-
-               double GetDoubleSafe(int i);
-
-               //Type GetFieldType(int i);
-
-               float GetFloatSafe(int i);
-
-               //Guid GetGuid(int i);
-
-               short GetInt16Safe(int i);
-
-               int GetInt32Safe(int i);
-
-               long GetInt64Safe(int i);
-
-               //string GetName(int i);
-
-               //int GetOrdinal(string name);
-
-               string GetStringSafe(int i);
-
-               //object GetValue(int i);
-
-               //int GetValues(object[] values);
-
-               //bool IsDBNull(int i);
-
-               //int FieldCount{get;}
-
-               //object this[string name]{get;}
-               
-               //object this[int i]{get;}
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ITableMapping.cs b/mcs/class/System.Data/System.Data/ITableMapping.cs
deleted file mode 100644 (file)
index 85dd4b0..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Data.ITableMapping.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Associates a source table with a table in a DataSet, and is implemented by the DataTableMapping class, which is used in common by .NET data providers.
-       /// </summary>
-       public interface ITableMapping
-       {
-               IColumnMappingCollection ColumnMappings{get;}
-
-               string DataSetTable{get; set;}
-
-               string SourceTable{get; set;}
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/ITableMappingCollection.cs b/mcs/class/System.Data/System.Data/ITableMappingCollection.cs
deleted file mode 100644 (file)
index 243edae..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Data.ITableMappingCollection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Contains a collection of TableMapping objects, and is implemented by the DataTableMappingCollection, which is used in common by .NET data providers.
-       /// </summary>
-       public interface ITableMappingCollection : IList, ICollection, IEnumerable
-       {
-               ITableMapping Add(string sourceTableName, string dataSetTableName);
-               
-               bool Contains(string sourceTableName);
-               
-               ITableMapping GetByDataSetTable(string dataSetTableName);
-               
-               int IndexOf(string sourceTableName);
-               
-               void RemoveAt(string sourceTableName);
-               
-               object this[string index]{get; set;}
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/InRowChangingEventException.cs b/mcs/class/System.Data/System.Data/InRowChangingEventException.cs
deleted file mode 100644 (file)
index 505aa72..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.InRowChangingEventException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class InRowChangingEventException : DataException
-       {
-               public InRowChangingEventException ()
-                       : base (Locale.GetText ("Cannot EndEdit within a RowChanging event"))
-               {
-               }
-
-               public InRowChangingEventException (string s)
-                       : base (s)
-               {
-               }
-
-               public InRowChangingEventException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected InRowChangingEventException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/InternalDataCollectionBase.cs b/mcs/class/System.Data/System.Data/InternalDataCollectionBase.cs
deleted file mode 100644 (file)
index 7cfe50e..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-// System.Data.InternalDataCollectionBase.cs
-//
-// Base class for:
-//     DataRowCollection
-//     DataColumnCollection
-//     DataTableCollection
-//     DataRelationCollection
-//     DataConstraintCollection
-//
-// Author:
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Tim Coleman <tim@timcoleman.com>
-//
-// (C) Copyright 2002 Daniel Morgan
-// (C) Copyright 2002 Tim Coleman
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Base class for System.Data collection classes
-       /// that are used within a DataTable object
-       /// to represent a collection of
-       /// relations, tables, rows, columns, and constraints
-       /// </summary>
-
-       public class InternalDataCollectionBase : ICollection, IEnumerable {
-               #region Fields
-
-               private ArrayList list = null;
-               private bool readOnly = false;
-               private bool synchronized = false;
-
-               #endregion
-
-               #region Constructors
-
-               public InternalDataCollectionBase ()
-               {
-                       list = new ArrayList();
-               }
-
-               #endregion
-
-               #region Properties
-
-               /// <summary>
-               /// Gets the total number of elements in a collection.
-               /// </summary>
-               [Browsable (false)]
-               public virtual int Count {
-                       get { return list.Count; }
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the InternalDataCollectionBase is read-only.
-               /// </summary>
-               [Browsable (false)]
-               public bool IsReadOnly {
-                       get { return readOnly; }
-               }
-
-               /// <summary>
-               /// Gets a value indicating whether the InternalDataCollectionBase is synchronized.
-               /// </summary>
-               [Browsable (false)]
-               public bool IsSynchronized {
-                       get { return synchronized; }
-               }
-
-               /// <summary>
-               /// Gets the items of the collection as a list.
-               /// </summary>
-               protected virtual ArrayList List {
-                       get { return list; }
-               }
-
-               /// <summary>
-               /// Gets an object that can be used to synchronize the collection.
-               /// </summary>
-               [Browsable (false)]
-               public object SyncRoot {
-                       get { return this; }
-               }
-
-
-               #endregion
-
-               #region Methods
-
-               /// <summary>
-               /// Copies all the elements in the current InternalDataCollectionBase to a one-
-               /// dimensional Array, starting at the specified InternalDataCollectionBase index.
-               /// </summary>
-               public
-               virtual
-               void CopyTo (Array ar, int index)
-               {
-                       list.CopyTo (ar, index);
-               }
-
-               /// <summary>
-               /// Gets an IEnumerator for the collection.
-               /// </summary>
-               public
-               virtual
-               IEnumerator GetEnumerator ()
-               {
-                       return list.GetEnumerator ();
-               }
-
-               internal Array ToArray (Type type)
-               {
-                       return list.ToArray (type);
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/InvalidConstraintException.cs b/mcs/class/System.Data/System.Data/InvalidConstraintException.cs
deleted file mode 100644 (file)
index dab06ac..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.InvalidConstraintException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class InvalidConstraintException : DataException
-       {
-               public InvalidConstraintException ()
-                       : base (Locale.GetText ("Cannot access or create this relation"))
-               {
-               }
-
-               public InvalidConstraintException (string s)
-                       : base (s)
-               {
-               }
-
-               public InvalidConstraintException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-               protected InvalidConstraintException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/InvalidExpressionException.cs b/mcs/class/System.Data/System.Data/InvalidExpressionException.cs
deleted file mode 100644 (file)
index 187cdd0..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.InvalidExpressionException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class InvalidExpressionException : DataException
-       {
-               public InvalidExpressionException ()
-                       : base (Locale.GetText ("This Expression is invalid"))
-               {
-               }
-
-               public InvalidExpressionException (string s)
-                       : base (s)
-               {
-               }
-
-               public InvalidExpressionException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected InvalidExpressionException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/IsolationLevel.cs b/mcs/class/System.Data/System.Data/IsolationLevel.cs
deleted file mode 100644 (file)
index e36660d..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Data.IsolationLevel.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies the transaction locking behavior for the connection.
-       /// This enumeration has a FlagsAttribute that allows a bitwise combination of its member values.
-       /// </summary>
-       public enum IsolationLevel
-       {
-               Chaos = 16,
-               ReadUncommitted = 256,
-               ReadCommitted = 4096,           
-               RepeatableRead = 65536,
-               Serializable = 1048576,
-               Snapshot = 16777216,
-               Unspecified = -1
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/LoadOption.cs b/mcs/class/System.Data/System.Data/LoadOption.cs
deleted file mode 100644 (file)
index 825dab5..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Data.LoadOption.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//   Sureshkumar T <tsureshkumar@novell.com>
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum LoadOption 
-       {
-                OverwriteChanges        = 1,
-                PreserveChanges         = 2,
-                Upsert                  = 3
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/MappingType.cs b/mcs/class/System.Data/System.Data/MappingType.cs
deleted file mode 100644 (file)
index 9d6219f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Data.MappingType.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies how a DataColumn is mapped.
-       /// </summary>
-       [Serializable]
-       public enum MappingType
-       {
-               Element = 1,
-               Attribute = 2,
-               SimpleContent = 3,
-               Hidden = 4
-               
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/MergeFailedEventArgs.cs b/mcs/class/System.Data/System.Data/MergeFailedEventArgs.cs
deleted file mode 100644 (file)
index e7b2a2b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// System.Data.MergeFailedEventArgs.cs
-//
-// Author:
-//   Miguel de Icaza <miguel@ximian.com>
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       public class MergeFailedEventArgs : EventArgs
-       {
-               #region Fields
-
-               readonly DataTable data_table;
-               readonly string conflict;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public MergeFailedEventArgs (DataTable table, string conflict)
-               {
-                       this.data_table = table;
-                       this.conflict = conflict;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public DataTable Table {
-                       get { return data_table; }
-               }
-
-               public string Conflict {
-                       get { return conflict; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/MergeFailedEventHandler.cs b/mcs/class/System.Data/System.Data/MergeFailedEventHandler.cs
deleted file mode 100644 (file)
index b62b7dc..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Data.MergeFailedEventHandler.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the MergeFailed event.
-       /// </summary>
-       public delegate void MergeFailedEventHandler(object sender, MergeFailedEventArgs e);
-
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/MergeManager.cs b/mcs/class/System.Data/System.Data/MergeManager.cs
deleted file mode 100644 (file)
index 911ca37..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Summary description for MergeManager.
-       /// </summary>
-       internal class MergeManager
-       {
-               internal static void Merge(DataSet targetSet, DataSet sourceSet, bool preserveChanges, MissingSchemaAction missingSchemaAction)
-               {
-                       if(targetSet == null)
-                               throw new ArgumentNullException("targetSet");
-                       if(sourceSet == null)
-                               throw new ArgumentNullException("sourceSet");
-                       if (sourceSet == targetSet)
-                               return;
-
-                       bool prevEC = targetSet.EnforceConstraints;
-                       targetSet.EnforceConstraints = false;
-
-                       foreach (DataTable t in sourceSet.Tables)
-                               MergeManager.Merge(targetSet, t, preserveChanges, missingSchemaAction);
-
-                       AdjustSchemaRelations (targetSet, sourceSet, missingSchemaAction);
-                       targetSet.EnforceConstraints = prevEC;
-               }
-
-               internal static void Merge(DataSet targetSet, DataTable sourceTable, bool preserveChanges, MissingSchemaAction missingSchemaAction)
-               {
-                       if(targetSet == null)
-                               throw new ArgumentNullException("targetSet");
-                       if(sourceTable == null)
-                               throw new ArgumentNullException("sourceTable");
-                       if (sourceTable.DataSet == targetSet)
-                               return;
-
-                       bool savedEnfoceConstraints = targetSet.EnforceConstraints;
-                       targetSet.EnforceConstraints = false;
-
-                       DataTable targetTable = null;
-                       if (!AdjustSchema(targetSet, sourceTable, missingSchemaAction,ref targetTable))
-                               return;
-                       if (targetTable != null)
-                               fillData(targetTable, sourceTable, preserveChanges);
-                       targetSet.EnforceConstraints = savedEnfoceConstraints;
-               }
-
-               internal static void Merge (DataTable targetTable, 
-                                           DataTable sourceTable, 
-                                           bool preserveChanges, 
-                                           MissingSchemaAction missingSchemaAction)
-               {
-                       if(targetTable== null)
-                               throw new ArgumentNullException("targetTable");
-                       if(sourceTable == null)
-                               throw new ArgumentNullException("sourceTable");
-                       if (sourceTable == targetTable)
-                               return;
-
-                       bool savedEnforceConstraints = targetTable.EnforceConstraints;
-                       targetTable.EnforceConstraints = false;
-
-                       if (!AdjustSchema(targetTable, sourceTable, missingSchemaAction))
-                               return;
-
-                       fillData(targetTable, sourceTable, preserveChanges);
-                       targetTable.EnforceConstraints = savedEnforceConstraints;
-               }
-
-               internal static void Merge(DataSet targetSet, DataRow[] sourceRows, bool preserveChanges, MissingSchemaAction missingSchemaAction)
-               {
-                       if(targetSet == null)
-                               throw new ArgumentNullException("targetSet");
-                       if(sourceRows == null)
-                               throw new ArgumentNullException("sourceRows");
-
-                       bool savedEnfoceConstraints = targetSet.EnforceConstraints;
-                       targetSet.EnforceConstraints = false;
-
-                       ArrayList targetTables = new ArrayList();
-                       for (int i = 0; i < sourceRows.Length; i++) {
-                               DataRow row = sourceRows[i];
-                               DataTable sourceTable = row.Table;
-                               DataTable targetTable = null;
-                               if (!AdjustSchema(targetSet, sourceTable, missingSchemaAction,ref targetTable))
-                                       return;
-                               if (targetTable != null) {
-                                       MergeRow(targetTable, row, preserveChanges);
-                                       if (!(targetTables.IndexOf(targetTable) >= 0))
-                                               targetTables.Add(targetTable);
-                               }
-                       }
-
-                       targetSet.EnforceConstraints = savedEnfoceConstraints;
-               }
-
-               // merge a row into a target table.
-               private static void MergeRow(DataTable targetTable, DataRow row, bool preserveChanges)
-               {
-                       DataColumn[] primaryKeys = targetTable.PrimaryKey;
-                       DataRow targetRow = null;
-                       DataRowVersion version = DataRowVersion.Default;
-                       if (row.RowState == DataRowState.Deleted)
-                               version = DataRowVersion.Original;
-
-                       if (primaryKeys != null && primaryKeys.Length > 0) // if there are any primary key.
-                       {
-                               // initiate an array that has the values of the primary keys.
-                               object[] keyValues = new object[primaryKeys.Length];
-                               
-                               for (int j = 0; j < keyValues.Length; j++)
-                               {
-                                       keyValues[j] = row[primaryKeys[j].ColumnName, version];
-                               }
-                       
-                               // find the row in the target table.
-                               targetRow = targetTable.Rows.Find(keyValues, DataViewRowState.OriginalRows);
-                               if (targetRow == null)
-                                       targetRow = targetTable.Rows.Find(keyValues);
-                       }
-                       // row doesn't exist in target table, or there are no primary keys.
-                       // create new row and copy values from source row to the new row.
-                       if (targetRow == null)
-                       { 
-                               DataRow newRow = targetTable.NewNotInitializedRow();
-                               // Don't check for ReadOnly, when cloning data to new uninitialized row.
-                               row.CopyValuesToRow(newRow, false);
-                               targetTable.Rows.AddInternal (newRow);
-                       }
-                       // row exists in target table, and presere changes is false - 
-                       // change the values of the target row to the values of the source row.
-                       else
-                       {
-                               row.MergeValuesToRow(targetRow, preserveChanges);
-                       }
-               }
-                       
-               private static bool AdjustSchemaRelations (DataSet targetSet, DataSet sourceSet, MissingSchemaAction missingSchemaAction)
-               {
-                       if (missingSchemaAction == MissingSchemaAction.Ignore)
-                               return true;
-
-                       foreach(DataTable sourceTable in sourceSet.Tables) {
-
-                               DataTable targetTable = targetSet.Tables[sourceTable.TableName];
-                               if (targetTable == null)
-                                       continue;
-
-                               foreach (Constraint constraint in sourceTable.Constraints) {
-
-                                       Constraint targetConstraint = null;
-
-                                       string constraintName = constraint.ConstraintName;
-                                       if (targetTable.Constraints.Contains (constraintName))
-                                               constraintName = "";
-
-                                       UniqueConstraint uc = constraint as UniqueConstraint;
-                                       // PrimaryKey is already taken care of while merging the table
-                                       // ForeignKey constraint takes care of Parent Unique Constraints
-                                       if (uc != null) {
-                                               if (uc.IsPrimaryKey || uc.ChildConstraint != null)
-                                                       continue;
-                                               DataColumn[] columns = ResolveColumns (targetTable, uc.Columns);
-                                               targetConstraint = new UniqueConstraint (constraintName, columns, false);
-                                       }
-
-                                       ForeignKeyConstraint fc = constraint as ForeignKeyConstraint;
-                                       if (fc != null) {
-                                               DataColumn[] columns = ResolveColumns (targetTable, fc.Columns);
-                                               DataColumn[] relatedColumns = ResolveColumns (targetSet.Tables [fc.RelatedTable.TableName],
-                                                                                       fc.RelatedColumns);
-                                               targetConstraint = new ForeignKeyConstraint (constraintName, relatedColumns, columns);
-                                       }
-
-                                       bool dupConstraintFound = false;
-                                       foreach (Constraint cons in targetTable.Constraints) {
-                                       if (!targetConstraint.Equals (cons))
-                                               continue;
-                                       dupConstraintFound = true;
-                                       break;
-                                       }
-
-                                       // If equivalent-constraint already exists, then just do nothing
-                                       if (dupConstraintFound)
-                                               continue;
-
-                                       if (missingSchemaAction == MissingSchemaAction.Error)
-                                               throw new DataException ("Target DataSet missing " + targetConstraint.GetType () +
-                                                               targetConstraint.ConstraintName);
-                                       else
-                                               targetTable.Constraints.Add (targetConstraint);
-                               }
-                       }
-
-                       foreach (DataRelation relation in sourceSet.Relations) {
-                               DataRelation targetRelation = targetSet.Relations [relation.RelationName];
-                               if (targetRelation == null) {
-                                       if (missingSchemaAction == MissingSchemaAction.Error)
-                                               throw new ArgumentException ("Target DataSet mising definition for " +
-                                                               relation.RelationName);
-
-                                       DataColumn[] parentColumns = ResolveColumns (targetSet.Tables [relation.ParentTable.TableName],
-                                                       relation.ParentColumns);
-                                       DataColumn[] childColumns = ResolveColumns (targetSet.Tables [relation.ChildTable.TableName],
-                                                       relation.ChildColumns);
-                                       targetRelation = targetSet.Relations.Add (relation.RelationName, parentColumns,
-                                                       childColumns, relation.createConstraints);
-                                       targetRelation.Nested = relation.Nested;
-                               } else if (!CompareColumnArrays (relation.ParentColumns, targetRelation.ParentColumns) ||
-                                               !CompareColumnArrays (relation.ChildColumns, targetRelation.ChildColumns)) {
-                                       RaiseMergeFailedEvent (null, "Relation " + relation.RelationName +
-                                               " cannot be merged, because keys have mismatch columns.");
-                               }
-                       }
-
-                       return true;
-               }
-
-               private static DataColumn[] ResolveColumns(DataTable targetTable, DataColumn[] sourceColumns)
-               {
-                       if (sourceColumns != null && sourceColumns.Length > 0) {
-                               // lets just assume that all columns are from the Same table
-                               if (targetTable != null) {
-                                       int i=0;
-                                       DataColumn[] targetColumns = new DataColumn[sourceColumns.Length];
-
-                                       DataColumn tmpCol ;
-                                       foreach(DataColumn sourceColumn in sourceColumns) {
-                                               tmpCol = targetTable.Columns[sourceColumn.ColumnName];
-                                               if (tmpCol == null)
-                                                       throw new DataException ("Column " + sourceColumn.ColumnName  + 
-                                                                       " does not belong to table " + targetTable.TableName);
-                                               targetColumns [i++] = tmpCol;
-                                       }
-                                       return targetColumns;
-                               }
-                       }
-                       return null;
-               }
-
-
-               // adjust the table schema according to the missingschemaaction param.
-               // return false if adjusting fails.
-               private static bool AdjustSchema(DataSet targetSet, DataTable sourceTable, MissingSchemaAction missingSchemaAction, ref DataTable newTable)
-               {
-                       // if the source table not exists in the target dataset
-                       // we act according to the missingschemaaction param.
-                       DataTable targetTable = targetSet.Tables [sourceTable.TableName];
-                       if (targetTable == null) {
-                               if (missingSchemaAction == MissingSchemaAction.Ignore)
-                                       return true;
-
-                               if (missingSchemaAction == MissingSchemaAction.Error)
-                                       throw new ArgumentException ("Target DataSet missing definition for " +
-                                                       sourceTable.TableName + ".");
-
-                               targetTable = (DataTable)sourceTable.Clone();
-                               targetSet.Tables.Add(targetTable);
-                       }
-
-                       AdjustSchema (targetTable, sourceTable, missingSchemaAction);
-
-                       newTable = targetTable;
-                       return true;
-               }
-
-
-               private static bool AdjustSchema(DataTable targetTable, DataTable sourceTable, MissingSchemaAction missingSchemaAction)
-               {
-                       if (missingSchemaAction == MissingSchemaAction.Ignore)
-                               return true;
-
-                       for (int i = 0; i < sourceTable.Columns.Count; i++) {
-                               DataColumn sourceColumn = sourceTable.Columns[i];
-                               // if a column from the source table doesn't exists in the target table
-                               // we act according to the missingschemaaction param.
-                               DataColumn targetColumn = targetTable.Columns [sourceColumn.ColumnName];
-                               if(targetColumn == null) {
-                                       if (missingSchemaAction == MissingSchemaAction.Error)
-                                               throw new DataException ("Target table " + targetTable.TableName +
-                                                               " missing definition for column " + sourceColumn.ColumnName);
-                                       
-                                       targetColumn = new DataColumn(sourceColumn.ColumnName, sourceColumn.DataType, 
-                                                               sourceColumn.Expression, sourceColumn.ColumnMapping);
-                                       targetTable.Columns.Add(targetColumn);
-                               }
-
-                               if(sourceColumn.AutoIncrement) {
-                                       targetColumn.AutoIncrement = sourceColumn.AutoIncrement;
-                                       targetColumn.AutoIncrementSeed = sourceColumn.AutoIncrementSeed;
-                                       targetColumn.AutoIncrementStep = sourceColumn.AutoIncrementStep;
-                               }
-                       }
-
-                       if (!AdjustPrimaryKeys(targetTable, sourceTable))
-                               return false;
-
-                       checkColumnTypes (targetTable, sourceTable);
-
-                       return true;
-               }
-       
-       
-               // find if there is a valid matching between the targetTable PrimaryKey and the
-               // sourceTable primatyKey.
-               // return true if there is a match, else return false and raise a MergeFailedEvent.
-               private static bool AdjustPrimaryKeys(DataTable targetTable, DataTable sourceTable)
-               {
-                       if (sourceTable.PrimaryKey.Length == 0)
-                               return true;
-
-                       // If targetTable does not have a PrimaryKey, just import the sourceTable PrimaryKey
-                       if (targetTable.PrimaryKey.Length == 0) {
-                               DataColumn[] targetColumns = ResolveColumns (targetTable, sourceTable.PrimaryKey);
-                               targetTable.PrimaryKey = targetColumns;
-                               return true;
-                       }
-                       
-                       // If both the tables have a primary key, verify that they are equivalent.
-                       // raise a MergeFailedEvent if the keys are not equivalent
-                       if (targetTable.PrimaryKey.Length != sourceTable.PrimaryKey.Length) {
-                               RaiseMergeFailedEvent (targetTable, "<target>.PrimaryKey and <source>.PrimaryKey have different Length.");
-                               return false;
-                       }
-
-                       for (int i=0; i < targetTable.PrimaryKey.Length; ++i) {
-                               if (targetTable.PrimaryKey [i].ColumnName.Equals (sourceTable.PrimaryKey [i].ColumnName))
-                                       continue;
-                               RaiseMergeFailedEvent (targetTable, "Mismatch columns in the PrimaryKey : <target>." + 
-                                       targetTable.PrimaryKey [i].ColumnName + " versus <source>." + sourceTable.PrimaryKey [i].ColumnName);
-                               return false;
-                       }
-                       return true;
-               }
-
-               // fill the data from the source table to the target table
-               private static void fillData(DataTable targetTable, DataTable sourceTable, bool preserveChanges)
-               {
-                       for (int i = 0; i < sourceTable.Rows.Count; i++)
-                       {
-                               DataRow row = sourceTable.Rows[i];
-                               MergeRow(targetTable, row, preserveChanges);
-                       }
-               }
-
-               // check tha column from 2 tables that has the same name also has the same datatype.
-               private static void checkColumnTypes(DataTable targetTable, DataTable sourceTable)
-               {
-                       for (int i = 0; i < sourceTable.Columns.Count; i++)
-                       {
-                               DataColumn fromCol = sourceTable.Columns[i];
-                               DataColumn toCol = targetTable.Columns[fromCol.ColumnName];
-                               if (toCol == null)
-                                       continue;
-                               if (toCol.DataTypeMatches (fromCol))
-                                       continue;
-                               throw new DataException("<target>." + fromCol.ColumnName + " and <source>." + 
-                                               fromCol.ColumnName + " have conflicting properties: DataType " + 
-                                               " property mismatch.");
-                       }
-               }
-
-               private static bool CompareColumnArrays (DataColumn[] arr1, DataColumn[] arr2)
-               {
-                       if (arr1.Length != arr2.Length)
-                               return false;
-
-                       for (int i=0; i < arr1.Length; ++i)
-                               if (!arr1 [i].ColumnName.Equals (arr2 [i].ColumnName))
-                                       return false;
-                       return true;
-               }
-
-               private static void RaiseMergeFailedEvent (DataTable targetTable, string errMsg)
-               {
-                       MergeFailedEventArgs args = new MergeFailedEventArgs (targetTable, errMsg);
-                       if (targetTable.DataSet != null)
-                               targetTable.DataSet.OnMergeFailed (args);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/MissingMappingAction.cs b/mcs/class/System.Data/System.Data/MissingMappingAction.cs
deleted file mode 100644 (file)
index 2fbb73c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Data.MissingMappingAction.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Determines the action that occurs when a mapping is missing from a source table or a source column.
-       /// </summary>
-       public enum MissingMappingAction
-       {
-               Passthrough = 1,
-               Ignore = 2,
-               Error = 3
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/MissingPrimaryKeyException.cs b/mcs/class/System.Data/System.Data/MissingPrimaryKeyException.cs
deleted file mode 100644 (file)
index 517c01d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.MissingPrimaryKeyException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class MissingPrimaryKeyException : DataException
-       {
-               public MissingPrimaryKeyException ()
-                       : base (Locale.GetText ("This table has no primary key"))
-               {
-               }
-
-               public MissingPrimaryKeyException (string s)
-                       : base (s)
-               {
-               }
-
-               public MissingPrimaryKeyException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected MissingPrimaryKeyException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/MissingSchemaAction.cs b/mcs/class/System.Data/System.Data/MissingSchemaAction.cs
deleted file mode 100644 (file)
index cb06e0e..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.MissingSchemaAction.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies the action to take when adding data to the DataSet and the required DataTable or DataColumn is missing.
-       /// </summary>
-       public enum MissingSchemaAction
-       {
-               Add = 1,
-               Ignore = 2,
-               Error = 3,
-               AddWithKey = 4
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/NoNullAllowedException.cs b/mcs/class/System.Data/System.Data/NoNullAllowedException.cs
deleted file mode 100644 (file)
index 28940be..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.NoNullAllowedException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class NoNullAllowedException : DataException
-       {
-               public NoNullAllowedException ()
-                       : base (Locale.GetText ("Cannot insert a NULL value"))
-               {
-               }
-
-               public NoNullAllowedException (string s)
-                       : base (s)
-               {
-               }
-
-               public NoNullAllowedException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected NoNullAllowedException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/Node.cs b/mcs/class/System.Data/System.Data/Node.cs
deleted file mode 100644 (file)
index 4bcbffe..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Summary description for Node.
-       /// </summary>
-       internal class Node
-       {
-               protected int _iBalance;    // currently, -2 means 'deleted'
-               internal Node _nNext;       // node of next index (nNext==null || nNext.iId=iId+1)
-               protected Node _nLeft;
-               protected Node _nRight;
-               protected Node _nParent;
-
-               protected DataRow _row;
-               
-               public Node(DataRow row)
-               {
-                       _row = row;
-               }
-
-               internal int GetBalance()
-               {
-                       if (_iBalance == -2)
-                               throw new SystemException ("Node is deleted.");
-
-                       return _iBalance;
-               }
-
-               internal void Delete()
-               {
-                       _iBalance = -2;
-                       _nLeft = null;
-                       _nRight = null;
-                       _nParent = null;
-               }
-
-
-               internal DataRow Row
-               {
-                       get {
-                               return _row;
-                       }
-               }
-
-               internal Node Left
-               {
-                       get {
-                               if (_iBalance == -2)
-                                       throw new SystemException ("Node is deleted.");
-
-                               return _nLeft;
-                       }
-
-                       set {
-                               if (_iBalance == -2)
-                                       throw new SystemException ("Node is deleted.");
-
-                               _nLeft = value;
-                       }
-               }
-
-               internal Node Right
-               {
-                       get {
-                               if (_iBalance == -2)
-                                       throw new SystemException ("Node is deleted.");
-                               return _nRight;
-                       }
-
-                       set {
-                               if (_iBalance == -2)
-                                       throw new SystemException ("Node is deleted.");
-
-                               _nRight = value;
-                       }
-               }
-
-
-               internal Node Parent
-               {
-                       get {
-                               if (_iBalance == -2)
-                                       throw new SystemException ("Node is deleted.");
-
-                               return _nParent;
-                       }
-
-                       set {
-                               if (_iBalance == -2)
-                                       throw new SystemException ("Node is deleted.");
-                               _nParent = value;
-                       }
-               }
-
-               internal bool IsRoot()
-               {
-                       return _nParent == null;
-               }
-
-
-               internal void SetBalance(int b)
-               {
-
-                       if (_iBalance == -2)
-                               throw new SystemException ("Node is deleted.");
-
-                       _iBalance = b;
-               }
-
-               internal bool From()
-               {
-
-                       if (this.IsRoot()){
-                               return true;
-                       }
-
-                       if (_iBalance == -2)
-                               throw new SystemException ("Node is deleted.");
-                       Node parent = Parent;
-
-                       return Equals(parent.Left);
-               }
-
-               internal Object[] GetData()
-               {
-
-                       if (_iBalance == -2)
-                               throw new SystemException ("Node is deleted.");
-                       return _row.ItemArray;
-               }
-
-               internal bool Equals(Node n)
-               {
-
-                       if (_iBalance == -2)
-                               throw new SystemException ("Node is deleted.");
-
-                       return n == this;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/OperationAbortedException.cs b/mcs/class/System.Data/System.Data/OperationAbortedException.cs
deleted file mode 100644 (file)
index 1ed8104..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// System.Data.OperationAbortedException.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data {
-       [Serializable]
-       public sealed class OperationAbortedException : SystemException
-       {
-               #region Constructors
-
-               internal OperationAbortedException ()
-                       : base (Locale.GetText ("An OperationAbortedException has occurred."))
-               {
-               }
-
-               internal OperationAbortedException (string s)
-                       : base (s)
-               {
-               }
-
-               internal OperationAbortedException (string s, Exception innerException)
-                       : base (s, innerException)
-               {
-               }
-
-               internal OperationAbortedException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               #endregion // Constructors
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/ParameterDirection.cs b/mcs/class/System.Data/System.Data/ParameterDirection.cs
deleted file mode 100644 (file)
index 36410f1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.ParameterDirection.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies the type of a parameter within a query relative to the DataSet.
-       /// </summary>
-       public enum ParameterDirection
-       {
-               Input = 1,
-               Output = 2,
-               InputOutput = 3,
-               ReturnValue = 6
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/PropertyAttributes.cs b/mcs/class/System.Data/System.Data/PropertyAttributes.cs
deleted file mode 100644 (file)
index df03689..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Data.PropertyAttributes.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies the attributes of a property.
-       /// This enumeration has a FlagsAttribute that allows a bitwise combination of its member values
-       /// </summary>
-       [Flags]
-       [Obsolete]
-       [ComponentModel.EditorBrowsable (ComponentModel.EditorBrowsableState.Never)]
-       public enum PropertyAttributes
-       {
-               NotSupported = 0,
-               Required = 1,
-               Optional = 2,
-               Read = 512,
-               Write = 1024
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/PropertyCollection.cs b/mcs/class/System.Data/System.Data/PropertyCollection.cs
deleted file mode 100644 (file)
index d70040d..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// System.Data.PropertyCollection.cs
-//
-// Author:
-//    Daniel Morgan <danmorg@sc.rr.com>
-//
-// (c) Ximian, Inc. 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-
-namespace System.Data
-{
-       /// <summary>
-       /// a collection of properties that can be added to 
-       /// DataColumn, DataSet, or DataTable.
-       /// The ExtendedProperties property of a 
-       /// DataColumn, DataSet, or DataTable class can
-       /// retrieve a PropertyCollection.
-       /// </summary>
-       [Serializable]
-       public class PropertyCollection : Hashtable {
-               public PropertyCollection() 
-               {
-               }
-
-               protected PropertyCollection(System.Runtime.Serialization.SerializationInfo info,
-                                            System.Runtime.Serialization.StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               // the only public methods and properties 
-               // are all inherited from Hashtable
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ReadOnlyException.cs b/mcs/class/System.Data/System.Data/ReadOnlyException.cs
deleted file mode 100644 (file)
index 17bd57b..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.ReadOnlyException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class ReadOnlyException : DataException
-       {
-               public ReadOnlyException ()
-                       : base (Locale.GetText ("Cannot change a value in a read-only column"))
-               {
-               }
-
-               public ReadOnlyException (string s)
-                       : base (s)
-               {
-               }
-
-               public ReadOnlyException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected ReadOnlyException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/RelatedDataView.cs b/mcs/class/System.Data/System.Data/RelatedDataView.cs
deleted file mode 100644 (file)
index f96243b..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-//\r
-// System.Data.RelatedDataView\r
-//\r
-// Author:\r
-//   Konstantin Triger (kostat@mainsoft.com)\r
-//\r
-\r
-using System;\r
-using System.Collections;\r
-using Mono.Data.SqlExpressions;\r
-using System.Data.Common;\r
-\r
-namespace System.Data\r
-{\r
-       /// <summary>\r
-       /// Summary description for RelatedDataView.\r
-       /// </summary>\r
-       internal class RelatedDataView : DataView, IExpression\r
-       {\r
-               #region Fields\r
-               \r
-               object[] _keyValues;\r
-               DataColumn[] _columns;\r
-\r
-               #endregion // Fields\r
-\r
-               #region Constructors\r
-               internal RelatedDataView(DataColumn[] relatedColumns,object[] keyValues)\r
-               {\r
-                       dataTable = relatedColumns[0].Table;\r
-                       rowState = DataViewRowState.CurrentRows;\r
-                       _columns = relatedColumns;\r
-                       _keyValues = keyValues;\r
-\r
-                       Open();\r
-               }\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Methods\r
-\r
-               internal override IExpression FilterExpression {\r
-                       get {\r
-                               return this;\r
-                       }\r
-               }\r
-\r
-\r
-               #endregion // Methods\r
-\r
-               public override bool Equals(object obj)\r
-               {\r
-                       if (!(obj is RelatedDataView)) {\r
-                               if (base.FilterExpression == null)\r
-                                       return false;\r
-                               return base.FilterExpression.Equals (obj);\r
-                       }\r
-\r
-                       RelatedDataView other = (RelatedDataView) obj;\r
-                       if (_columns.Length != other._columns.Length)\r
-                               return false;\r
-            \r
-                       for (int i = 0; i < _columns.Length; i++)\r
-                               if (!_columns[i].Equals(other._columns [i]) ||\r
-                    !_keyValues[i].Equals(other._keyValues [i]))\r
-                                       return false;\r
-                       \r
-                       if (!other.FilterExpression.Equals (base.FilterExpression))\r
-                               return false;\r
-\r
-                       return true;\r
-               }\r
-\r
-               public override int GetHashCode()\r
-               {\r
-                       int hashCode = 0;\r
-                       for (int i = 0; i < _columns.Length; i++) {\r
-                               hashCode ^= _columns [i].GetHashCode ();\r
-                               hashCode ^= _keyValues [i].GetHashCode ();\r
-                       }\r
-\r
-                       if (base.FilterExpression != null)\r
-                               hashCode ^= base.FilterExpression.GetHashCode ();\r
-\r
-                       return hashCode;\r
-               }\r
-\r
-               #region IExpression Members\r
-\r
-               public object Eval(DataRow row) {\r
-                       return EvalBoolean(row);\r
-               }\r
-\r
-               public bool EvalBoolean(DataRow row) {\r
-                       for (int i = 0; i < _columns.Length; i++)\r
-                               if (!row[_columns[i]].Equals(_keyValues[i]))\r
-                                       return false;\r
-\r
-                       IExpression filter = base.FilterExpression;\r
-                       return filter != null ? filter.EvalBoolean(row) : true;\r
-               }\r
-\r
-               public bool DependsOn(DataColumn other) {\r
-                       for (int i = 0; i < _columns.Length; i++)\r
-                               if (_columns[i] == other)\r
-                                       return true;\r
-\r
-                       IExpression filter = base.FilterExpression;\r
-                       return filter != null ? filter.DependsOn(other) : false;\r
-               }\r
-               \r
-               void IExpression.ResetExpression()\r
-               {\r
-               }\r
-\r
-               #endregion\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/RelationshipConverter.cs b/mcs/class/System.Data/System.Data/RelationshipConverter.cs
deleted file mode 100644 (file)
index e9e8a4d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// System.Data.RelationshipConverter.cs
-//
-// Author:
-//   Umadevi S (sumadevi@novell.com)
-//
-// Copyright (C) Novell Inc, 2004
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-
-namespace System.Data {
-       internal sealed class RelationshipConverter : ExpandableObjectConverter
-       {
-               #region Constructors
-
-               [MonoTODO]
-               public RelationshipConverter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Constructors
-
-               #region Methods
-       
-               [MonoTODO]
-               public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ResDescriptionAttribute.cs b/mcs/class/System.Data/System.Data/ResDescriptionAttribute.cs
deleted file mode 100644 (file)
index f25ce5c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// 
-// System.Data/ResDescriptionAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-
-namespace System.Data {
-       [AttributeUsage (AttributeTargets.All)]
-       internal sealed class ResDescriptionAttribute : DescriptionAttribute
-       {
-               #region Fields
-
-               string description;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public ResDescriptionAttribute (string description)
-                       : base (description)
-               {
-                       this.description = description; 
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public override string Description {
-                       get { return description; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/ResultSetOptions.cs b/mcs/class/System.Data/System.Data/ResultSetOptions.cs
deleted file mode 100644 (file)
index 543322f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Data.ResultSetOptions.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum ResultSetOptions 
-       {
-               None,
-               Updatable,
-               Scrollable,
-               Sensitive,
-               Insensitive
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/ResultSetSensitivity.cs b/mcs/class/System.Data/System.Data/ResultSetSensitivity.cs
deleted file mode 100644 (file)
index 37323ef..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Data.ResultSetSensitivity.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum ResultSetSensitivity 
-       {
-               Asensitive,
-               Insensitive,
-               Sensitive
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/RowNotInTableException.cs b/mcs/class/System.Data/System.Data/RowNotInTableException.cs
deleted file mode 100644 (file)
index 7902a4d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.RowNotInTableException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class RowNotInTableException : DataException
-       {
-               public RowNotInTableException ()
-                       : base (Locale.GetText ("This DataRow is not in this DataTable"))
-               {
-               }
-
-               public RowNotInTableException (string s)
-                       : base (s)
-               {
-               }
-
-               public RowNotInTableException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected RowNotInTableException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/Rule.cs b/mcs/class/System.Data/System.Data/Rule.cs
deleted file mode 100644 (file)
index 4fd6f7d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.Rule.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Indicates the action that occurs when a ForeignKeyConstraint is enforced.
-       /// </summary>
-       public enum Rule
-       {
-               None = 0,
-               Cascade = 1,
-               SetNull = 2,
-               SetDefault = 3
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/SchemaSerializationMode.cs b/mcs/class/System.Data/System.Data/SchemaSerializationMode.cs
deleted file mode 100644 (file)
index fb48a8b..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.Data.SchemaSerializationMode.cs
-//
-// Author:
-//   Senganal T (tsenganal@novell.com)
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data {
-
-       public enum SchemaSerializationMode 
-       {
-               IncludeSchema = 1,
-               ExcludeSchema = 2
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/SchemaType.cs b/mcs/class/System.Data/System.Data/SchemaType.cs
deleted file mode 100644 (file)
index e787a52..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.Data.SchemaType.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies how to handle existing schema mappings when performing a FillSchema operation.
-       /// </summary>
-       public enum SchemaType
-       {
-               Source = 1,
-               Mapped = 2
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/SerializationFormat.cs b/mcs/class/System.Data/System.Data/SerializationFormat.cs
deleted file mode 100644 (file)
index 40ce830..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// System.Data.DataColumnChangeEventHandler.cs
-//
-// Author:
-//   Senganal T <tsenganal@novell.com>
-//
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) Authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data {
-       public enum SerializationFormat 
-       {
-               Xml,
-               Binary
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/SqlDbType.cs b/mcs/class/System.Data/System.Data/SqlDbType.cs
deleted file mode 100644 (file)
index ce6069e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// System.Data.SqlDbType.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies SQL Server data types.
-       /// </summary>
-       public enum SqlDbType
-       {
-               BigInt = 0,
-               Binary = 1,
-               Bit = 2,
-               Char = 3,
-               DateTime = 4,
-               Decimal = 5,
-               Float = 6,
-               Image = 7,
-               Int = 8,
-               Money = 9,
-               NChar = 10,
-               NText = 11,
-               NVarChar = 12,
-               Real = 13,
-               UniqueIdentifier = 14,
-               SmallDateTime = 15,
-               SmallInt = 16,
-               SmallMoney = 17,
-               Text = 18,
-               Timestamp = 19,
-               TinyInt = 20,
-               VarBinary = 21,
-               VarChar = 22,
-               Variant = 23,
-               Xml = 25,
-               Udt = 29,
-               Structured = 30,
-               Date = 31,
-               Time = 32,
-               DateTime2 = 33,
-               DateTimeOffset = 34
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/StateChangeEventArgs.cs b/mcs/class/System.Data/System.Data/StateChangeEventArgs.cs
deleted file mode 100644 (file)
index 6fb1ddb..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// System.Data.StateChangeEventArgs.cs
-//
-// Author:
-//   Rodrigo Moya (rodrigo@ximian.com)
-//   Daniel Morgan (danmorg@sc.rr.com)
-//   Tim Coleman (tim@timcoleman.com)
-//
-// (C) Ximian, Inc 2002
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data {
-       public sealed class StateChangeEventArgs : EventArgs 
-       {
-               #region Fields
-
-               ConnectionState originalState;
-               ConnectionState currentState;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public StateChangeEventArgs (ConnectionState originalState, ConnectionState currentState)
-               {
-                       this.originalState = originalState;
-                       this.currentState = currentState;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public ConnectionState CurrentState {
-                       get { return currentState; }
-               }
-
-               public ConnectionState OriginalState {
-                       get { return originalState; }
-               }
-
-               #endregion // Properties
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/StateChangeEventHandler.cs b/mcs/class/System.Data/System.Data/StateChangeEventHandler.cs
deleted file mode 100644 (file)
index 958030b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Data.StateChangeEventHandler.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data
-{
-       /// <summary>
-       /// Represents the method that will handle the StateChange event.
-       /// </summary>
-       public delegate void StateChangeEventHandler(object sender, StateChangeEventArgs e);
-
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/StatementCompletedEventArgs.cs b/mcs/class/System.Data/System.Data/StatementCompletedEventArgs.cs
deleted file mode 100644 (file)
index 95809b4..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// System.Data.StatementCompletedEventArgs.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public sealed class StatementCompletedEventArgs : EventArgs
-       {
-               #region Fields
-
-               int recordCount;
-
-               #endregion // Fields
-
-               #region Constructors
-
-               public StatementCompletedEventArgs (int recordCount)
-               {
-                       this.recordCount = recordCount;
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public int RecordCount {
-                       get { return recordCount; }
-               }
-
-               #endregion // Properties
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/StatementCompletedEventHandler.cs b/mcs/class/System.Data/System.Data/StatementCompletedEventHandler.cs
deleted file mode 100644 (file)
index 0f2f298..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.Data.StatementCompletedEventHandler.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public delegate void StatementCompletedEventHandler (object sender, StatementCompletedEventArgs e);
-}
-
diff --git a/mcs/class/System.Data/System.Data/StatementType.cs b/mcs/class/System.Data/System.Data/StatementType.cs
deleted file mode 100644 (file)
index 0c67d82..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Data.StatementType.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies the type of SQL query to be used by the OleDbRowUpdatedEventArgs, OleDbRowUpdatingEventArgs, SqlRowUpdatedEventArgs, or SqlRowUpdatingEventArgs class.
-       /// </summary>
-       public enum StatementType
-       {
-               Select = 0,
-               Insert = 1,
-               Update = 2,
-               Batch = 4,
-               Delete = 3
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/StrongTypingException.cs b/mcs/class/System.Data/System.Data/StrongTypingException.cs
deleted file mode 100644 (file)
index 2544f38..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Data.StrongTypingException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class StrongTypingException : DataException
-       {
-               public StrongTypingException ()
-                       : base (Locale.GetText ("Trying to access a DBNull value in a strongly-typed DataSet"))
-               {
-               }
-
-               public StrongTypingException (string message) : base (message)
-               {
-               }
-
-               public StrongTypingException (string s, Exception innerException)
-                       : base (s, innerException)
-               {
-               }
-
-               protected StrongTypingException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/SyntaxErrorException.cs b/mcs/class/System.Data/System.Data/SyntaxErrorException.cs
deleted file mode 100644 (file)
index 3d7b623..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.SyntaxErrorException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class SyntaxErrorException : InvalidExpressionException
-       {
-               public SyntaxErrorException ()
-                       : base (Locale.GetText ("There is a syntax error in this Expression"))
-               {
-               }
-
-               public SyntaxErrorException (string s)
-                       : base (s)
-               {
-               }
-
-               protected SyntaxErrorException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               public SyntaxErrorException (String message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/TableAdapterSchemaInfo.cs b/mcs/class/System.Data/System.Data/TableAdapterSchemaInfo.cs
deleted file mode 100644 (file)
index 611a436..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// TableAdapterSchemaInfo.cs
-//
-// Author:
-//     Veerapuram Varadhan (vvaradhan@novell.com)
-//
-// Copyright (C) 2009 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-using System.Data.Common;
-
-namespace System.Data
-{
-       internal enum GenerateMethodsType {
-               None,
-               Get,
-               Fill,
-               Both
-       }
-       
-       internal enum QueryType {
-               NoData,
-               Rowset,
-               Scalar
-       }
-       
-       internal class DbSourceMethodInfo
-       {
-               public GenerateMethodsType MethodType;
-               public string Name;
-               public string Modifier;
-               public string QueryType;
-               public string ScalarCallRetval;
-       }
-       
-       internal class DbCommandInfo
-       {
-               public DbCommand Command;
-               public DbSourceMethodInfo[] Methods;
-       }
-       
-       internal class TableAdapterSchemaInfo
-       {
-               public TableAdapterSchemaInfo (DbProviderFactory provider) {
-                       this.Provider = provider;
-                       this.Adapter = provider.CreateDataAdapter ();
-                       this.Connection = provider.CreateConnection ();
-                       this.Commands = new ArrayList ();
-                       this.ShortCommands = false;
-               }
-               
-               public TableAdapterSchemaInfo ()
-               {
-                       this.Commands = new ArrayList ();
-                       this.ShortCommands = false;
-               }
-
-               public DbProviderFactory Provider;
-               public DbDataAdapter Adapter;
-               public DbConnection Connection;
-               public string ConnectionString;
-               public string BaseClass;
-               public string Name;
-               public bool ShortCommands;
-               // List of DbCommandInfo objects
-               public ArrayList Commands;
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/TypeDataSetGeneratorException.cs b/mcs/class/System.Data/System.Data/TypeDataSetGeneratorException.cs
deleted file mode 100644 (file)
index 67ce390..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// System.Data.TypedDataSetGeneratorException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class TypedDataSetGeneratorException : DataException
-       {
-               readonly ArrayList errorList;
-
-               #region Constructors
-
-               public TypedDataSetGeneratorException ()
-                       : base (Locale.GetText ("System error."))
-               {
-               }
-
-               public TypedDataSetGeneratorException (ArrayList list)
-                       : base (Locale.GetText ("System error."))
-               {
-                       errorList = list;
-               }
-
-               protected TypedDataSetGeneratorException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-                       int count = info.GetInt32 ("KEY_ARRAYCOUNT");
-                       errorList = new ArrayList (count);
-
-                       for (int i=0; i < count; i++)
-                               errorList.Add (info.GetString("KEY_ARRAYVALUES" + i));
-               }
-
-               public TypedDataSetGeneratorException (String message) : base (message)
-               {
-               }
-               
-               public TypedDataSetGeneratorException (String message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-               #endregion //Constructors
-
-               public ArrayList ErrorList {
-                       get { return errorList; }
-               }
-
-               #region Methods
-
-               public override void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       base.GetObjectData (info, context);
-
-                       int count = (errorList != null) ? ErrorList.Count : 0;
-                       info.AddValue ("KEY_ARRAYCOUNT", count);
-
-                       for (int i=0; i < count; i++)
-                               info.AddValue ("KEY_ARRAYVALUES" + i, ErrorList [i]);
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/TypedDataSetGenerator.cs b/mcs/class/System.Data/System.Data/TypedDataSetGenerator.cs
deleted file mode 100644 (file)
index 39c9951..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// TypedDataSetGenerator.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// (C)2004 Novell Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections;
-using System.Data;
-using System.Text;
-
-namespace System.Data
-{
-       [Obsolete ("TypedDataSetGenerator class will be removed in a future release. Please use System.Data.Design.TypedDataSetGenerator in System.Design.dll.")]
-       public class TypedDataSetGenerator
-       {
-               public TypedDataSetGenerator ()
-               {
-               }
-
-               public static void Generate (DataSet dataSet,
-                       CodeNamespace codeNamespace,
-                       ICodeGenerator codeGen)
-               {
-                       // See CustomDataclassGenerator.cs
-                       CustomDataClassGenerator.CreateDataSetClasses (
-                               dataSet, codeNamespace, codeGen, null);
-               }
-
-               public static string GenerateIdName (string name, ICodeGenerator codeGen)
-               {
-                       return CustomDataClassGenerator.MakeSafeName (name, codeGen);
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/UniqueConstraint.cs b/mcs/class/System.Data/System.Data/UniqueConstraint.cs
deleted file mode 100644 (file)
index f1c2c0a..0000000
+++ /dev/null
@@ -1,514 +0,0 @@
-//
-// System.Data.UniqueConstraint.cs
-//
-// Author:
-//   Franklin Wise <gracenote@earthlink.net>
-//   Daniel Morgan <danmorg@sc.rr.com>
-//   Tim Coleman (tim@timcoleman.com)
-//   
-// (C) 2002 Franklin Wise
-// (C) 2002 Daniel Morgan
-// Copyright (C) Tim Coleman, 2002
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Data.Common;
-
-namespace System.Data {
-       [Editor ("Microsoft.VSDesigner.Data.Design.UniqueConstraintEditor, " + Consts.AssemblyMicrosoft_VSDesigner,
-                "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-       [DefaultProperty ("ConstraintName")]
-       public class UniqueConstraint : Constraint 
-       {
-               private bool _isPrimaryKey = false;
-               private bool _belongsToCollection = false;
-               private DataTable _dataTable; //set by ctor except when unique case
-               
-               //FIXME: create a class which will wrap this collection
-               private DataColumn [] _dataColumns;
-
-               //TODO:provide helpers for this case
-               private string [] _dataColumnNames; //unique case
-               private ForeignKeyConstraint _childConstraint = null;
-
-               #region Constructors
-
-               public UniqueConstraint (DataColumn column) 
-               {
-                       _uniqueConstraint ("", column, false);
-               }
-
-               public UniqueConstraint (DataColumn[] columns) 
-               {
-                       _uniqueConstraint ("", columns, false);
-               }
-
-               public UniqueConstraint (DataColumn column, bool isPrimaryKey) 
-               {
-                       _uniqueConstraint ("", column, isPrimaryKey);
-               }
-
-               public UniqueConstraint (DataColumn[] columns, bool isPrimaryKey) 
-               {
-                       _uniqueConstraint ("", columns, isPrimaryKey);
-               }
-
-               public UniqueConstraint (string name, DataColumn column) 
-               {
-                       _uniqueConstraint (name, column, false);
-               }
-
-               public UniqueConstraint (string name, DataColumn[] columns) 
-               {
-                       _uniqueConstraint (name, columns, false);
-               }
-
-               public UniqueConstraint (string name, DataColumn column, bool isPrimaryKey) 
-               {
-                       _uniqueConstraint (name, column, isPrimaryKey);
-               }
-
-               public UniqueConstraint (string name, DataColumn[] columns, bool isPrimaryKey) 
-               {
-                       _uniqueConstraint (name, columns, isPrimaryKey);
-               }
-
-               //Special case.  Can only be added to the Collection with AddRange
-               [Browsable (false)]
-               public UniqueConstraint (string name, string[] columnNames, bool isPrimaryKey) 
-               {
-                       InitInProgress = true;
-                   
-                       _dataColumnNames = new string [columnNames.Length];
-                       for (int i = 0; i < columnNames.Length; i++)
-                               _dataColumnNames[i] = columnNames[i];
-                       
-                       base.ConstraintName = name;
-                       _isPrimaryKey = isPrimaryKey;
-               }
-
-               //helper ctor
-               private void _uniqueConstraint(string name, DataColumn column, bool isPrimaryKey) 
-               {
-                       //validate
-                       _validateColumn (column);
-
-                       //Set Constraint Name
-                       base.ConstraintName = name;
-
-                       _isPrimaryKey = isPrimaryKey;
-
-                       //keep reference 
-                       _dataColumns = new DataColumn [] {column};
-                       
-                       //Get table reference
-                       _dataTable = column.Table;                      
-               }
-
-               //helpter ctor  
-               private void _uniqueConstraint(string name, DataColumn[] columns, bool isPrimaryKey) 
-               {
-                       //validate
-                       _validateColumns (columns, out _dataTable);
-
-                       //Set Constraint Name
-                       base.ConstraintName = name;
-
-                       //copy the columns - Do not keep reference #672113
-                       //_dataColumns = columns;
-                       Columns = columns;
-
-                       //PK?
-                       _isPrimaryKey = isPrimaryKey;                   
-               }
-               
-               #endregion // Constructors
-
-               #region Helpers
-               
-               private void _validateColumns(DataColumn [] columns)
-               {
-                       DataTable table;
-                       _validateColumns(columns, out table);
-               }
-               
-               //Validates a collection of columns with the ctor rules
-               private void _validateColumns(DataColumn [] columns, out DataTable table) {
-                       table = null;
-
-                       //not null
-                       if (null == columns) throw new ArgumentNullException();
-                       
-                       //check that there is at least one column
-                       //LAMESPEC: not in spec
-                       if (columns.Length < 1)
-                               throw new InvalidConstraintException("Must be at least one column.");
-                       
-                       DataTable compareTable = columns[0].Table;
-                       //foreach
-                       foreach (DataColumn col in columns){
-                               
-                               //check individual column rules
-                               _validateColumn (col);
-                               
-                               
-                               //check that columns are all from the same table??
-                               //LAMESPEC: not in spec
-                               if (compareTable != col.Table)
-                                       throw new InvalidConstraintException("Columns must be from the same table.");
-                               
-                       }
-
-                       table = compareTable;
-               }
-               
-               //validates a column with the ctor rules
-               private void _validateColumn(DataColumn column) {
-       
-                       //not null
-                       if (null == column)  // FIXME: This is little weird, but here it goes...
-                               throw new NullReferenceException("Object reference not set to an instance of an object.");
-
-                       
-                       //column must belong to a table
-                       //LAMESPEC: not in spec
-                       if (null == column.Table)
-                               throw new ArgumentException ("Column must belong to a table.");                 
-               }
-
-               internal static void SetAsPrimaryKey(ConstraintCollection collection, UniqueConstraint newPrimaryKey)
-               {
-                       //not null
-                       if (null == collection) throw new ArgumentNullException("ConstraintCollection can't be null.");
-                       
-                       //make sure newPrimaryKey belongs to the collection parm unless it is null
-                       if (  collection.IndexOf(newPrimaryKey) < 0 && (null != newPrimaryKey) ) 
-                               throw new ArgumentException("newPrimaryKey must belong to collection.");
-                       
-                       //Get existing pk
-                       UniqueConstraint uc = GetPrimaryKeyConstraint(collection);
-                       
-                       //clear existing
-                       if (null != uc) uc._isPrimaryKey = false;
-
-                       //set new key
-                       if (null != newPrimaryKey) newPrimaryKey._isPrimaryKey = true;
-                       
-                       
-               }
-
-               internal static UniqueConstraint GetPrimaryKeyConstraint(ConstraintCollection collection)
-               {
-                       if (null == collection) throw new ArgumentNullException("Collection can't be null.");
-
-                       UniqueConstraint uc;
-                       IEnumerator enumer = collection.GetEnumerator();
-                       while (enumer.MoveNext())
-                       {
-                               uc = enumer.Current as UniqueConstraint;
-                               if (null == uc) continue;
-                               
-                               if (uc.IsPrimaryKey) return uc; 
-                       }
-
-                       //if we got here there was no pk
-                       return null;
-                       
-               }
-
-               internal static UniqueConstraint GetUniqueConstraintForColumnSet(ConstraintCollection collection,
-                               DataColumn[] columns)
-               {
-                       if (null == collection) throw new ArgumentNullException("Collection can't be null.");
-                       if (null == columns ) return null;
-                       
-                       foreach(Constraint constraint in collection) {
-                               if (constraint is UniqueConstraint) {
-                                       UniqueConstraint uc = constraint as UniqueConstraint;
-                                       if ( DataColumn.AreColumnSetsTheSame(uc.Columns, columns) ) {
-                                               return uc;
-                                       }
-                               }
-                       }
-                       return null;
-               }
-
-               internal ForeignKeyConstraint ChildConstraint {
-                       get { return _childConstraint; }
-                       set { _childConstraint = value; }
-               }
-
-               // Helper Special Ctor
-               // Set the _dataTable property to the table to which this instance is bound when AddRange()
-               // is called with the special constructor.
-               // Validate whether the named columns exist in the _dataTable
-               internal override void FinishInit (DataTable _setTable) 
-               {                
-                       _dataTable = _setTable;
-                       if (_isPrimaryKey == true && _setTable.PrimaryKey.Length != 0)
-                               throw new ArgumentException ("Cannot add primary key constraint since primary key" +
-                                               "is already set for the table");
-
-                       DataColumn[] cols = new DataColumn [_dataColumnNames.Length];
-                       int i = 0;
-
-                       foreach (string _columnName in _dataColumnNames) {
-                               if (_setTable.Columns.Contains (_columnName)) {
-                                       cols [i] = _setTable.Columns [_columnName];
-                                       i++;
-                                       continue;
-                               }
-                               throw(new InvalidConstraintException ("The named columns must exist in the table"));
-                       }
-                       _dataColumns = cols;
-                       _validateColumns (cols);
-                       InitInProgress = false;
-               }
-
-
-               #endregion //Helpers
-
-               #region Properties
-
-               [DataCategory ("Data")]
-               [ReadOnly (true)]
-               public virtual DataColumn[] Columns {
-                       get { return _dataColumns; }
-                       internal set {
-                              _dataColumns = new DataColumn [value.Length];
-                              for (int i = 0; i < value.Length; i++)
-                                      _dataColumns[i] = value[i];                             
-                       }
-               }
-
-               [DataCategory ("Data")]
-               public bool IsPrimaryKey {
-                       get { 
-                               if (Table == null || (!_belongsToCollection)) {
-                                       return false;
-                               }
-                               return _isPrimaryKey; 
-                       }
-               }
-
-               [DataCategory ("Data")]
-               [ReadOnly (true)]
-               public override DataTable Table {
-                       get { return _dataTable; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               internal void SetIsPrimaryKey (bool value)
-               {
-                       _isPrimaryKey = value;
-               }
-
-               public override bool Equals(object key2) {
-
-                       UniqueConstraint cst = key2 as UniqueConstraint;
-                       if (null == cst) return false;
-
-                       //according to spec if the cols are equal
-                       //then two UniqueConstraints are equal
-                       return DataColumn.AreColumnSetsTheSame(cst.Columns, this.Columns);      
-
-               }
-
-               public override int GetHashCode() 
-               {
-                       //initialize hash with default value 
-                       int hash = 42;
-                       int i;
-
-                       //derive the hash code from the columns that way
-                       //Equals and GetHashCode return Equal objects to be the
-                       //same
-
-                       //Get the first column hash
-                       if (this.Columns.Length > 0)
-                               hash ^= this.Columns[0].GetHashCode();
-                       
-                       //get the rest of the column hashes if there any
-                       for (i = 1; i < this.Columns.Length; i++)
-                       {
-                               hash ^= this.Columns[1].GetHashCode();
-                               
-                       }
-                       
-                       return hash ;
-               }
-               
-               internal override void AddToConstraintCollectionSetup(
-                               ConstraintCollection collection)
-               {
-                       for (int i = 0; i < Columns.Length; i++)
-                               if (Columns[i].Table != collection.Table)
-                                       throw new ArgumentException("These columns don't point to this table.");
-                       //run Ctor rules again
-                       _validateColumns(_dataColumns);
-                       
-                       //make sure a unique constraint doesn't already exists for these columns
-                       UniqueConstraint uc = UniqueConstraint.GetUniqueConstraintForColumnSet(collection, this.Columns);       
-                       if (null != uc) throw new ArgumentException("Unique constraint already exists for these" +
-                                       " columns. Existing ConstraintName is " + uc.ConstraintName);
-
-                       //Allow only one primary key
-                       if (this.IsPrimaryKey) {
-                               uc = GetPrimaryKeyConstraint(collection);
-                               if (null != uc) uc._isPrimaryKey = false;
-                       }
-
-                       // if constraint is based on one column only
-                       // this column becomes unique
-                       if (_dataColumns.Length == 1) {
-                               _dataColumns[0].SetUnique();
-                       }
-                                       
-                       if (IsConstraintViolated())
-                               throw new ArgumentException("These columns don't currently have unique values.");
-
-                       _belongsToCollection = true;
-               }
-                                       
-               
-               internal override void RemoveFromConstraintCollectionCleanup( 
-                               ConstraintCollection collection)
-               {
-                       if (Columns.Length == 1)
-                               Columns [0].Unique = false;
-
-                       _belongsToCollection = false;
-                       Index = null;
-               }
-
-               internal override bool IsConstraintViolated()
-               {       
-                       if (Index == null) {
-                               Index = Table.GetIndex(Columns,null,DataViewRowState.None,null,false);
-                       }
-
-                       if (Index.HasDuplicates) {
-                               int[] dups = Index.Duplicates;
-                               for (int i = 0; i < dups.Length; i++){
-                                       DataRow row = Table.RecordCache[dups[i]];
-                                       ArrayList columns = new ArrayList();
-                                       ArrayList values = new ArrayList();
-                                       foreach (DataColumn col in Columns){
-                                               columns.Add(col.ColumnName);
-                                               values.Add(row[col].ToString());
-                                       }
-
-                                       string columnNames = String.Join(", ", (string[])columns.ToArray(typeof(string)));
-                                       string columnValues = String.Join(", ", (string[])values.ToArray(typeof(string)));
-
-                                       row.RowError = String.Format("Column '{0}' is constrained to be unique.  Value '{1}' is already present.", columnNames, columnValues);
-                                       for (int j=0; j < Columns.Length; ++j)
-                                               row.SetColumnError (Columns [j], row.RowError);
-                               }
-                               return true;
-                       }
-                       return false;
-               }
-
-               internal override void AssertConstraint(DataRow row)
-               {       
-                       if (IsPrimaryKey && row.HasVersion(DataRowVersion.Default)) {
-                               for (int i = 0; i < Columns.Length; i++) {
-                                       if (row.IsNull(Columns[i])) {
-                                               throw new NoNullAllowedException("Column '" + Columns[i].ColumnName + "' does not allow nulls.");
-                                       }
-                               }
-                       }
-                       
-                       if (Index == null) {
-                               Index = Table.GetIndex(Columns,null,DataViewRowState.None,null,false);
-                       }
-
-                       if (Index.HasDuplicates) {
-                               throw new ConstraintException(GetErrorMessage(row));
-                       }
-               }
-
-               internal override bool IsColumnContained(DataColumn column)
-               {
-                       for (int i = 0; i < _dataColumns.Length; i++)
-                               if (column == _dataColumns[i])
-                                       return true;
-
-                       return false;
-               }
-
-               internal override bool CanRemoveFromCollection(ConstraintCollection col, bool shouldThrow){
-                       if (IsPrimaryKey) {
-                               if (shouldThrow)
-                                       throw new ArgumentException("Cannot remove unique constraint since it's the primary key of a table.");
-
-                               return false;
-                       }
-                       
-                       if (Table.DataSet == null)
-                               return true;
-
-                       if (ChildConstraint != null) {
-                               if (!shouldThrow)
-                                       return false;
-                               throw new ArgumentException (String.Format (
-                                                               "Cannot remove unique constraint '{0}'." +
-                                                               "Remove foreign key constraint '{1}' first.",
-                                                               ConstraintName,ChildConstraint.ConstraintName));
-                       }
-                       return true;
-               }
-
-               private string GetErrorMessage(DataRow row)
-               {
-                       int i;
-                        
-                       System.Text.StringBuilder sb = new System.Text.StringBuilder(row[_dataColumns[0]].ToString());
-                       for (i = 1; i < _dataColumns.Length; i++) {
-                               sb = sb.Append(", ").Append(row[_dataColumns[i].ColumnName]);
-                       }
-                       string valStr = sb.ToString();
-                       sb = new System.Text.StringBuilder(_dataColumns[0].ColumnName);
-                       for (i = 1; i < _dataColumns.Length; i++) {
-                               sb = sb.Append(", ").Append(_dataColumns[i].ColumnName);
-                       }
-                       string colStr = sb.ToString();
-                       return "Column '" + colStr + "' is constrained to be unique.  Value '" + valStr + "' is already present.";
-               }
-                                      
-               
-               #endregion // Methods
-
-       }
-
-       
-}
diff --git a/mcs/class/System.Data/System.Data/UpdateOptions.cs b/mcs/class/System.Data/System.Data/UpdateOptions.cs
deleted file mode 100644 (file)
index 16967d2..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Data.UpdateOptions.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2003
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Data {
-       public enum UpdateOptions 
-       {
-               None,
-               DoNotAcceptChanges,
-               NotTransacted,
-               UpdateChildren
-       }
-}
-
diff --git a/mcs/class/System.Data/System.Data/UpdateRowSource.cs b/mcs/class/System.Data/System.Data/UpdateRowSource.cs
deleted file mode 100644 (file)
index 45d1af9..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.UpdateRowSource.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies how query command results are applied to the row being updated.
-       /// </summary>
-       public enum UpdateRowSource
-       {
-               None = 0,
-               OutputParameters = 1,
-               FirstReturnedRecord = 2,
-               Both = 3
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/UpdateStatus.cs b/mcs/class/System.Data/System.Data/UpdateStatus.cs
deleted file mode 100644 (file)
index a2c75be..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Data.UpdateStatus.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies the action to take with regard to the current and remaining rows during an Update.
-       /// </summary>
-       public enum UpdateStatus
-       {
-               Continue = 0,
-               ErrorsOccurred = 1,
-               SkipCurrentRow = 2,
-               SkipAllRemainingRows = 3
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Data/VersionNotFoundException.cs b/mcs/class/System.Data/System.Data/VersionNotFoundException.cs
deleted file mode 100644 (file)
index c158638..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Data.VersionNotFoundException.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Data
-{
-       [Serializable]
-       public class VersionNotFoundException : DataException
-       {
-               public VersionNotFoundException ()
-                       : base (Locale.GetText ("This DataRow has been deleted"))
-               {
-               }
-
-               public VersionNotFoundException (string s)
-                       : base (s)
-               {
-               }
-
-               protected VersionNotFoundException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               public VersionNotFoundException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlConstants.cs b/mcs/class/System.Data/System.Data/XmlConstants.cs
deleted file mode 100644 (file)
index e713b01..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-// 
-// System.Data/XmlConstants.cs
-//
-// Author:
-//   Stuart Caborn <stuart.caborn@virgin.net>
-//
-// (C) Stuart Caborn 2002
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Xml;
-using System.Xml.Schema;
-
-namespace System.Data 
-{
-///<summary>
-///Constants class to hold XmlSerialisation
-///strings
-///</summary>
-internal class XmlConstants
-{
-       ///<summary>The namespace prefix for the xml schema namespace</summary>
-       public const string SchemaPrefix = "xs";
-       
-       ///<summary>
-       /// The w3 XmlSchema namespace
-       /// </summary>
-       public const string SchemaNamespace = "http://www.w3.org/2001/XMLSchema";
-       
-       public const string XmlnsNS = "http://www.w3.org/2000/xmlns/";
-       public const string XmlNS = "http://www.w3.org/XML/1998/namespace";
-       
-       //xs elements and values 
-       //TODO - these must exist somwhere else???
-       public const string SchemaElement = "schema";
-       public const string AttributeFormDefault = "attributeFormDefault";
-       public const string ElementFormDefault = "elementFormDefault";
-       public const string Qualified = "qualified";
-       public const string Unqualified = "unqualified";
-       public const string Element = "element";
-       public const string Choice = "choice";
-       public const string ComplexType = "complexType";
-       public const string SimpleType = "simpleType";
-       public const string Restriction = "restriction";
-       public const string MaxLength = "maxLength";
-       public const string Sequence = "sequence";
-       public const string MaxOccurs = "maxOccurs";
-       public const string MinOccurs = "minOccurs";
-       public const string Unbounded = "unbounded";
-       public const string Name = "name";
-       public const string Type = "type";
-       public const string Id = "id";
-       public const string TargetNamespace = "targetNamespace";
-       public const string Form = "form";
-       public const string Attribute = "attribute";
-       public const string Default = "default";
-       public const string Caption = "Caption";
-       public const string Base = "base";
-       public const string Value = "value";
-       public const string DataType = "DataType";
-       public const string AutoIncrement = "AutoIncrement";
-       public const string AutoIncrementSeed = "AutoIncrementSeed";
-       public const string AutoIncrementStep = "AutoIncrementStep";
-
-       //ms schema objects     
-       public const string MsdataPrefix = "msdata";    
-       public const string MsdataNamespace = "urn:schemas-microsoft-com:xml-msdata";
-       public const string MsdatasourceNamespace = "urn:schemas-microsoft-com:xml-msdatasource";
-       public const string MspropPrefix = "msprop";    
-       public const string MspropNamespace = "urn:schemas-microsoft-com:xml-msprop";
-       public const string DiffgrPrefix = "diffgr";
-       public const string DiffgrNamespace = "urn:schemas-microsoft-com:xml-diffgram-v1";
-       public const string TnsPrefix = "mstns";
-       public const string IsDataSet = "IsDataSet";
-       public const string Locale = "Locale";
-       public const string Ordinal = "Ordinal";
-       public const string IsNested = "IsNested";
-       public const string ConstraintOnly = "ConstraintOnly";
-       public const string RelationName = "RelationName";
-       public const string ConstraintName = "ConstraintName";
-       public const string PrimaryKey = "PrimaryKey";
-       public const string ColumnName = "ColumnName";
-       public const string ReadOnly = "ReadOnly";
-       public const string UseCurrentCulture = "UseCurrentCulture";
-
-       public static XmlQualifiedName QnString = new XmlQualifiedName ("string", XmlSchema.Namespace);
-       public static XmlQualifiedName QnShort = new XmlQualifiedName ("short", XmlSchema.Namespace);
-       public static XmlQualifiedName QnInt = new XmlQualifiedName ("int", XmlSchema.Namespace);
-       public static XmlQualifiedName QnLong = new XmlQualifiedName ("long", XmlSchema.Namespace);
-       public static XmlQualifiedName QnBoolean = new XmlQualifiedName ("boolean", XmlSchema.Namespace);
-       public static XmlQualifiedName QnUnsignedByte = new XmlQualifiedName ("unsignedByte", XmlSchema.Namespace);
-       public static XmlQualifiedName QnChar = new XmlQualifiedName ("char", XmlSchema.Namespace);
-       public static XmlQualifiedName QnDateTime = new XmlQualifiedName ("dateTime", XmlSchema.Namespace);
-       public static XmlQualifiedName QnDecimal = new XmlQualifiedName ("decimal", XmlSchema.Namespace);
-       public static XmlQualifiedName QnDouble = new XmlQualifiedName ("double", XmlSchema.Namespace);
-       public static XmlQualifiedName QnSbyte = new XmlQualifiedName ("byte", XmlSchema.Namespace);
-       public static XmlQualifiedName QnFloat = new XmlQualifiedName ("float", XmlSchema.Namespace);
-       public static XmlQualifiedName QnDuration = new XmlQualifiedName ("duration", XmlSchema.Namespace);
-       public static XmlQualifiedName QnUnsignedShort = new XmlQualifiedName ("unsignedShort", XmlSchema.Namespace);
-       public static XmlQualifiedName QnUnsignedInt = new XmlQualifiedName ("unsignedInt", XmlSchema.Namespace);
-       public static XmlQualifiedName QnUnsignedLong = new XmlQualifiedName ("unsignedLong", XmlSchema.Namespace);
-       public static XmlQualifiedName QnUri = new XmlQualifiedName ("anyURI", XmlSchema.Namespace);
-       public static XmlQualifiedName QnBase64Binary = new XmlQualifiedName ("base64Binary", XmlSchema.Namespace);
-       public static XmlQualifiedName QnXmlQualifiedName = new XmlQualifiedName ("QName", XmlSchema.Namespace);
-}
-
-}
diff --git a/mcs/class/System.Data/System.Data/XmlDataInferenceLoader.cs b/mcs/class/System.Data/System.Data/XmlDataInferenceLoader.cs
deleted file mode 100644 (file)
index 03e2737..0000000
+++ /dev/null
@@ -1,864 +0,0 @@
-//\r
-// XmlDataInferenceLoader.cs\r
-//\r
-// Author:\r
-//\r
-//     Atsushi Enomoto <atsushi@ximian.com>\r
-//\r
-// (C)2004 Novell Inc.\r
-//\r
-// Design notes are the bottom of the source.\r
-//\r
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.Collections;\r
-using System.Data;\r
-using System.Globalization;\r
-using System.IO; // for Driver\r
-using System.Text; // for Driver\r
-using System.Xml;\r
-using System.Xml.Schema;\r
-using System.Xml.Serialization;\r
-\r
-namespace System.Data\r
-{\r
-       internal enum ElementMappingType {\r
-               Simple,\r
-               Repeated,\r
-               Complex\r
-       }\r
-\r
-       internal class TableMappingCollection : CollectionBase\r
-       {\r
-               public void Add (TableMapping map)\r
-               {\r
-                       this.List.Add (map);\r
-               }\r
-\r
-               public TableMapping this [string name] {\r
-                       get {\r
-                               foreach (TableMapping map in List)\r
-                                       if (map.Table.TableName == name)\r
-                                               return map;\r
-                               return null;\r
-                       }\r
-               }\r
-       }\r
-\r
-       internal class TableMapping\r
-       {\r
-               private bool existsInDataSet;\r
-\r
-               public DataTable Table;\r
-               public ArrayList Elements = new ArrayList ();\r
-               public ArrayList Attributes = new ArrayList ();\r
-               public DataColumn SimpleContent;\r
-               public DataColumn PrimaryKey;\r
-               public DataColumn ReferenceKey;\r
-               public int lastElementIndex = -1;\r
-\r
-               // Parent TableMapping\r
-               public TableMapping ParentTable;\r
-\r
-               // decoded LocalName -> TableMapping\r
-               public TableMappingCollection ChildTables = new TableMappingCollection ();\r
-\r
-               public TableMapping (string name, string ns)\r
-               {\r
-                       Table = new DataTable (name);\r
-                       Table.Namespace = ns;\r
-               }\r
-\r
-               public TableMapping (DataTable dt)\r
-               {\r
-                       existsInDataSet = true;\r
-                       Table = dt;\r
-                       foreach (DataColumn col in dt.Columns) {\r
-                               switch (col.ColumnMapping) {\r
-                               case MappingType.Element:\r
-                                       Elements.Add (col);\r
-                                       break;\r
-                               case MappingType.Attribute:\r
-                                       Attributes.Add (col);\r
-                                       break;\r
-                               case MappingType.SimpleContent:\r
-                                       SimpleContent = col;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       PrimaryKey = dt.PrimaryKey.Length > 0 ? dt.PrimaryKey [0] : null;\r
-               }\r
-\r
-               public bool ExistsInDataSet {\r
-                       get { return existsInDataSet; }\r
-               }\r
-\r
-               public bool ContainsColumn (string name)\r
-               {\r
-                       return GetColumn (name) != null;\r
-               }\r
-\r
-               public DataColumn GetColumn (string name)\r
-               {\r
-                       foreach (DataColumn col in Elements)\r
-                               if (col.ColumnName == name)\r
-                                       return col;\r
-                       foreach (DataColumn col in Attributes)\r
-                               if (col.ColumnName == name)\r
-                                       return col;\r
-                       if (SimpleContent != null && name == SimpleContent.ColumnName)\r
-                               return SimpleContent;\r
-                       if (PrimaryKey != null && name == PrimaryKey.ColumnName)\r
-                               return PrimaryKey;\r
-                       return null;\r
-               }\r
-\r
-               public void RemoveElementColumn (string name)\r
-               {\r
-                       foreach (DataColumn col in Elements) {\r
-                               if (col.ColumnName == name) {\r
-                                       Elements.Remove (col);\r
-                                       return;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
-       internal class XmlDataInferenceLoader\r
-       {\r
-               public static void Infer (DataSet dataset, XmlDocument document, XmlReadMode mode, string [] ignoredNamespaces)\r
-               {\r
-                       new XmlDataInferenceLoader (dataset, document, mode, ignoredNamespaces).ReadXml ();\r
-               }\r
-\r
-               private XmlDataInferenceLoader (DataSet ds, XmlDocument doc, XmlReadMode mode, string [] ignoredNamespaces)\r
-               {\r
-                       dataset = ds;\r
-                       document = doc;\r
-                       this.mode = mode;\r
-                       this.ignoredNamespaces = ignoredNamespaces != null ? new ArrayList (ignoredNamespaces) : new ArrayList ();\r
-\r
-                       // Fill existing table info\r
-                       foreach (DataTable dt in dataset.Tables)\r
-                               tables.Add (new TableMapping (dt));\r
-               }\r
-\r
-               DataSet dataset;\r
-               XmlDocument document;\r
-               XmlReadMode mode;\r
-               ArrayList ignoredNamespaces;\r
-               TableMappingCollection tables = new TableMappingCollection ();\r
-               RelationStructureCollection relations = new RelationStructureCollection ();\r
-\r
-               private void ReadXml ()\r
-               {\r
-                       if (document.DocumentElement == null)\r
-                               return;\r
-\r
-                       dataset.Locale = new CultureInfo ("en-US"); // default(!)\r
-\r
-                       // If the root element is not a data table, treat \r
-                       // this element as DataSet.\r
-                       // Read one element. It might be DataSet element.\r
-                       XmlElement el = document.DocumentElement;\r
-\r
-                       if (el.NamespaceURI == XmlSchema.Namespace)\r
-                               throw new InvalidOperationException ("DataSet is not designed to handle XML Schema as data content. Please use ReadXmlSchema method instead of InferXmlSchema method.");\r
-\r
-                       if (IsDocumentElementTable ())\r
-                               InferTopLevelTable (el);\r
-                       else {\r
-                               string localName = XmlHelper.Decode (el.LocalName);\r
-                               dataset.DataSetName = localName;\r
-                               dataset.Namespace = el.NamespaceURI;\r
-                               dataset.Prefix = el.Prefix;\r
-                               foreach (XmlNode n in el.ChildNodes) {\r
-                                       if (n.NamespaceURI == XmlSchema.Namespace)\r
-                                               continue;\r
-                                       if (n.NodeType == XmlNodeType.Element)\r
-                                               InferTopLevelTable (n as XmlElement);\r
-                               }\r
-                       }\r
-\r
-                       int count = 0;                  \r
-                       foreach (TableMapping map in tables) {\r
-                               string baseName = map.PrimaryKey != null ? map.PrimaryKey.ColumnName : map.Table.TableName + "_Id";\r
-                               \r
-                               // Make sure name of RK column is unique\r
-                               string rkName = baseName;\r
-                               if (map.ChildTables [map.Table.TableName] != null) {\r
-                                       rkName = baseName + '_' + count;\r
-                                       while (map.GetColumn (rkName) != null) {\r
-                                               count++;\r
-                                               rkName = baseName + '_' + count;\r
-                                       }\r
-                               }\r
-                               \r
-                               foreach (TableMapping ct in map.ChildTables) {\r
-                                       ct.ReferenceKey = GetMappedColumn (ct, rkName, map.Table.Prefix, map.Table.Namespace, MappingType.Hidden, map.PrimaryKey != null ? map.PrimaryKey.DataType : typeof (int));\r
-                               }\r
-                       }\r
-\r
-                       foreach (TableMapping map in tables) {\r
-                               if (map.ExistsInDataSet)\r
-                                       continue;\r
-                               if (map.PrimaryKey != null)\r
-                                       map.Table.Columns.Add (map.PrimaryKey);\r
-\r
-                               foreach (DataColumn col in map.Elements) \r
-                                       map.Table.Columns.Add (col);\r
-\r
-                               foreach (DataColumn col in map.Attributes)\r
-                                       map.Table.Columns.Add (col);\r
-                               \r
-                               if (map.SimpleContent != null) \r
-                                       map.Table.Columns.Add (map.SimpleContent);\r
-                               \r
-                               if (map.ReferenceKey != null) \r
-                                       map.Table.Columns.Add (map.ReferenceKey);\r
-                               dataset.Tables.Add (map.Table);\r
-                       }\r
-\r
-                       foreach (RelationStructure rs in relations) {\r
-                               string relName = rs.ExplicitName != null ? rs.ExplicitName : rs.ParentTableName + "_" + rs.ChildTableName;\r
-                               DataTable pt = dataset.Tables [rs.ParentTableName];\r
-                               DataTable ct = dataset.Tables [rs.ChildTableName];\r
-                               DataColumn pc = pt.Columns [rs.ParentColumnName];\r
-                               DataColumn cc = null;\r
-                               \r
-                               // If both parent and child tables have same name, it is quite\r
-                               // possible to have column names suffixed with some numbers.\r
-                               if (rs.ParentTableName == rs.ChildTableName) {\r
-                                       cc = ct.Columns [rs.ChildColumnName + "_" + count];\r
-                               }\r
-                               if (cc == null)\r
-                                       cc = ct.Columns [rs.ChildColumnName];\r
-                               \r
-                               if (pt == null)\r
-                                       throw new DataException ("Parent table was not found : " + rs.ParentTableName);\r
-                               else if (ct == null)\r
-                                       throw new DataException ("Child table was not found : " + rs.ChildTableName);\r
-                               else if (pc == null)\r
-                                       throw new DataException ("Parent column was not found :" + rs.ParentColumnName);\r
-                               else if (cc == null)\r
-                                       throw new DataException ("Child column was not found :" + rs.ChildColumnName);\r
-                               DataRelation rel = new DataRelation (relName, pc, cc, rs.CreateConstraint);\r
-                               if (rs.IsNested) {\r
-                                       rel.Nested = true;\r
-                                       rel.ParentTable.PrimaryKey = rel.ParentColumns;\r
-                               }\r
-                               dataset.Relations.Add (rel);\r
-                       }\r
-               }\r
-\r
-               private void InferTopLevelTable (XmlElement el)\r
-               {\r
-                       InferTableElement (null, el);\r
-               }\r
-\r
-               private void InferColumnElement (TableMapping table, XmlElement el)\r
-               {\r
-                       string localName = XmlHelper.Decode (el.LocalName);\r
-                       DataColumn col = table.GetColumn (localName);\r
-                       if (col != null) {\r
-                               if (col.ColumnMapping != MappingType.Element)\r
-                                       throw new DataException (String.Format ("Column {0} is already mapped to {1}.", localName, col.ColumnMapping));\r
-                               table.lastElementIndex = table.Elements.IndexOf (col);\r
-                               return;\r
-                       }\r
-                       if (table.ChildTables [localName] != null)\r
-                               // Child is already mapped, or inferred as a table\r
-                               // (in that case, that takes precedence than\r
-                               // this simple column inference.)\r
-                               return;\r
-\r
-                       col = new DataColumn (localName, typeof (string));\r
-                       col.Namespace = el.NamespaceURI;\r
-                       col.Prefix = el.Prefix;\r
-                       table.Elements.Insert (++table.lastElementIndex, col);\r
-               }\r
-\r
-               private void CheckExtraneousElementColumn (TableMapping parentTable, XmlElement el)\r
-               {\r
-                       if (parentTable == null)\r
-                               return;\r
-                       string localName = XmlHelper.Decode (el.LocalName);\r
-                       DataColumn elc = parentTable.GetColumn (localName);\r
-                       if (elc != null)\r
-                               parentTable.RemoveElementColumn (localName);\r
-               }\r
-\r
-               private void PopulatePrimaryKey (TableMapping table)\r
-               {\r
-                       DataColumn col = new DataColumn (table.Table.TableName + "_Id");\r
-                       col.ColumnMapping = MappingType.Hidden;\r
-                       col.DataType = typeof (int);\r
-                       col.AllowDBNull = false;\r
-                       col.AutoIncrement = true;\r
-                       col.Namespace = table.Table.Namespace;\r
-                       col.Prefix = table.Table.Prefix;\r
-                       table.PrimaryKey = col;\r
-               }\r
-\r
-               private void PopulateRelationStructure (string parent, string child, string pkeyColumn)\r
-               {\r
-                       if (relations [parent, child] != null)\r
-                               return;\r
-                       RelationStructure rs = new RelationStructure ();\r
-                       rs.ParentTableName = parent;\r
-                       rs.ChildTableName = child;\r
-                       rs.ParentColumnName = pkeyColumn;\r
-                       rs.ChildColumnName = pkeyColumn;\r
-                       rs.CreateConstraint = true;\r
-                       rs.IsNested = true;\r
-                       relations.Add (rs);\r
-               }\r
-\r
-               private void InferRepeatedElement (TableMapping parentTable, XmlElement el)\r
-               {\r
-                       string localName = XmlHelper.Decode (el.LocalName);\r
-                       // FIXME: can be checked later\r
-                       CheckExtraneousElementColumn (parentTable, el);\r
-                       TableMapping table = GetMappedTable (parentTable, localName, el.NamespaceURI);\r
-\r
-                       // If the mapping is actually complex type (not simple\r
-                       // repeatable), then ignore it.\r
-                       if (table.Elements.Count > 0)\r
-                               return;\r
-\r
-                       // If simple column already exists, do nothing\r
-                       if (table.SimpleContent != null)\r
-                               return;\r
-\r
-                       GetMappedColumn (table, localName + "_Column", el.Prefix, el.NamespaceURI, MappingType.SimpleContent, null);\r
-               }\r
-\r
-               private void InferTableElement (TableMapping parentTable, XmlElement el)\r
-               {\r
-                       // If parent table already has the same name column but\r
-                       // mapped as Element, that must be removed.\r
-                       // FIXME: This can be done later (doing it here is\r
-                       // loss of performance.\r
-                       CheckExtraneousElementColumn (parentTable, el);\r
-\r
-                       string localName = XmlHelper.Decode (el.LocalName);\r
-                       TableMapping table = GetMappedTable (parentTable, localName, el.NamespaceURI);\r
-\r
-                       bool hasChildElements = false;\r
-                       bool hasAttributes = false;\r
-                       bool hasText = false;\r
-                       bool isElementRepeated = false;\r
-\r
-                       foreach (XmlAttribute attr in el.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS\r
-                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
-                                       )\r
-                                       continue;\r
-                               if (ignoredNamespaces != null &&\r
-                                       ignoredNamespaces.Contains (attr.NamespaceURI))\r
-                                       continue;\r
-\r
-                               hasAttributes = true;\r
-                               GetMappedColumn (table,\r
-                                       XmlHelper.Decode (attr.LocalName),\r
-                                       attr.Prefix,\r
-                                       attr.NamespaceURI,\r
-                                       MappingType.Attribute,\r
-                                       null); \r
-                       }\r
-\r
-                       foreach (XmlNode n in el.ChildNodes) {\r
-                               switch (n.NodeType) {\r
-                               case XmlNodeType.Comment:\r
-                               case XmlNodeType.ProcessingInstruction: // ignore\r
-                                       continue;\r
-                               default: // text content\r
-                                       hasText = true;\r
-                                       if (GetElementMappingType (el, ignoredNamespaces, null) == ElementMappingType.Repeated)\r
-                                               isElementRepeated = true;\r
-                                       break;\r
-                               case XmlNodeType.Element: // child\r
-                                       hasChildElements = true;\r
-                                       XmlElement cel = n as XmlElement;\r
-                                       string childLocalName = XmlHelper.Decode (cel.LocalName);\r
-\r
-                                       switch (GetElementMappingType (cel, ignoredNamespaces, null)) {\r
-                                       case ElementMappingType.Simple:\r
-                                               InferColumnElement (table, cel);\r
-                                               break;\r
-                                       case ElementMappingType.Repeated:\r
-                                               if (table.PrimaryKey == null)\r
-                                                       PopulatePrimaryKey (table);\r
-                                               PopulateRelationStructure (table.Table.TableName, childLocalName, table.PrimaryKey.ColumnName);\r
-                                               InferRepeatedElement (table, cel);\r
-                                               break;\r
-                                       case ElementMappingType.Complex:\r
-                                               if (table.PrimaryKey == null)\r
-                                                       PopulatePrimaryKey (table);\r
-                                               PopulateRelationStructure (table.Table.TableName, childLocalName, table.PrimaryKey.ColumnName);\r
-                                               InferTableElement (table, cel);\r
-                                               break;\r
-                                       }\r
-                                       break;\r
-                               }\r
-                       }\r
-\r
-                       // Attributes + !Children + Text = SimpleContent\r
-                       if (table.SimpleContent == null // no need to create\r
-                               && !hasChildElements && hasText && (hasAttributes || isElementRepeated)) {\r
-                               GetMappedColumn (table, table.Table.TableName + "_Text", String.Empty, String.Empty, MappingType.SimpleContent, null);\r
-                       }\r
-               }\r
-\r
-               private TableMapping GetMappedTable (TableMapping parent, string tableName, string ns)\r
-               {\r
-                       TableMapping map = tables [tableName];\r
-                       if (map != null) {\r
-                               if (parent != null && map.ParentTable != null && map.ParentTable != parent)\r
-                                       throw new DataException (String.Format ("The table '{0}' is already allocated as a child of another table '{1}'. Cannot set table '{2}' as parent table.", tableName, map.ParentTable.Table.TableName, parent.Table.TableName));\r
-                       } else {\r
-                               map = new TableMapping (tableName, ns);\r
-                               map.ParentTable = parent;\r
-                               tables.Add (map);\r
-                       }\r
-                       if (parent != null) {\r
-                               bool shouldAdd = true;\r
-                               foreach (TableMapping child in parent.ChildTables) {\r
-                                       if (child.Table.TableName == tableName) {\r
-                                               shouldAdd = false;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               if (shouldAdd)\r
-                                       parent.ChildTables.Add (map);\r
-                       }\r
-                       return map;\r
-               }\r
-\r
-               private DataColumn GetMappedColumn (TableMapping table, string name, string prefix, string ns, MappingType type, Type optColType)\r
-               {\r
-                       DataColumn col = table.GetColumn (name);\r
-                       // Infer schema\r
-                       if (col == null) {\r
-                               col = new DataColumn (name);\r
-                               col.Prefix = prefix;\r
-                               col.Namespace = ns;\r
-                               col.ColumnMapping = type;\r
-                               switch (type) {\r
-                               case MappingType.Element:\r
-                                       table.Elements.Add (col);\r
-                                       break;\r
-                               case MappingType.Attribute:\r
-                                       table.Attributes.Add (col);\r
-                                       break;\r
-                               case MappingType.SimpleContent:\r
-                                       table.SimpleContent = col;\r
-                                       break;\r
-                               case MappingType.Hidden:\r
-                                       // To generate parent key\r
-                                       col.DataType = optColType;\r
-                                       table.ReferenceKey = col;\r
-                                       break;\r
-                               }\r
-                       }\r
-                       else if (col.ColumnMapping != type) // Check mapping type\r
-                               throw new DataException (String.Format ("There are already another column that has different mapping type. Column is {0}, existing mapping type is {1}", col.ColumnName, col.ColumnMapping));\r
-\r
-                       return col;\r
-               }\r
-\r
-               private static void SetAsExistingTable (XmlElement el, Hashtable existingTables)\r
-               {\r
-                       if (existingTables == null)\r
-                               return;\r
-                       ArrayList al = existingTables [el.NamespaceURI] as ArrayList;\r
-                       if (al == null) {\r
-                               al = new ArrayList ();\r
-                               existingTables [el.NamespaceURI] = al;\r
-                       }\r
-                       if (al.Contains (el.LocalName))\r
-                               return;\r
-                       al.Add (el.LocalName);\r
-               }\r
-\r
-               private static ElementMappingType GetElementMappingType (\r
-                       XmlElement el, ArrayList ignoredNamespaces, Hashtable existingTables)\r
-               {\r
-                       if (existingTables != null) {\r
-                               ArrayList al = existingTables [el.NamespaceURI] as ArrayList;\r
-                               if (al != null && al.Contains (el.LocalName))\r
-                                       // this is not precise, but it is enough\r
-                                       // for IsDocumentElementTable().\r
-                                       return ElementMappingType.Complex;\r
-                       }\r
-\r
-                       foreach (XmlAttribute attr in el.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS \r
-                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
-                                       )\r
-                                       continue;\r
-                               if (ignoredNamespaces != null && ignoredNamespaces.Contains (attr.NamespaceURI))\r
-                                       continue;\r
-                               SetAsExistingTable (el, existingTables);\r
-                               return ElementMappingType.Complex;\r
-                       }\r
-                       foreach (XmlNode n in el.ChildNodes) {\r
-                               if (n.NodeType == XmlNodeType.Element) {\r
-                                       SetAsExistingTable (el, existingTables);\r
-                                       return ElementMappingType.Complex;\r
-                               }\r
-                       }\r
-\r
-                       for (XmlNode n = el.NextSibling; n != null; n = n.NextSibling) {\r
-                               if (n.NodeType == XmlNodeType.Element && n.LocalName == el.LocalName) {\r
-                                       SetAsExistingTable (el, existingTables);\r
-                                       return GetElementMappingType (n as XmlElement,\r
-                                               ignoredNamespaces, null)\r
-                                               == ElementMappingType.Complex ?\r
-                                               ElementMappingType.Complex :\r
-                                               ElementMappingType.Repeated;\r
-                               }\r
-                       }\r
-\r
-                       return ElementMappingType.Simple;\r
-               }\r
-\r
-               private bool IsDocumentElementTable ()\r
-               {\r
-                       return IsDocumentElementTable (\r
-                               document.DocumentElement,\r
-                               ignoredNamespaces);\r
-               }\r
-\r
-               internal static bool IsDocumentElementTable (XmlElement top,\r
-                       ArrayList ignoredNamespaces)\r
-               {\r
-                       foreach (XmlAttribute attr in top.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS\r
-                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
-                                       )\r
-                                       continue;\r
-                               if (ignoredNamespaces != null &&\r
-                                       ignoredNamespaces.Contains (attr.NamespaceURI))\r
-                                       continue;\r
-                               // document element has attributes other than xmlns\r
-                               return true;\r
-                       }\r
-                       Hashtable existingTables = new Hashtable ();\r
-                       foreach (XmlNode n in top.ChildNodes) {\r
-                               XmlElement el = n as XmlElement;\r
-                               if (el == null)\r
-                                       continue;\r
-                               if (GetElementMappingType (el, ignoredNamespaces,\r
-                                       existingTables)\r
-                                       == ElementMappingType.Simple)\r
-                                       return true;\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               // Returns if it "might" be a column element (this method is\r
-               // called per child element, thus it might still consist of\r
-               // table, since it might be repeated).\r
-               /*\r
-               private bool IsPossibleColumnElement (XmlElement el)\r
-               {\r
-                       foreach (XmlAttribute attr in el.Attributes) {\r
-                               if (attr.NamespaceURI == XmlConstants.XmlnsNS\r
-                                       || attr.NamespaceURI == XmlConstants.XmlNS\r
-                                       )\r
-                                       continue;\r
-                               return false;\r
-                       }\r
-                       foreach (XmlNode n in el.ChildNodes)\r
-                               if (n.NodeType == XmlNodeType.Element)\r
-                                       return false;\r
-                       return true;\r
-               }\r
-               */\r
-       }\r
-}\r
-\r
-\r
-#if TEST_STANDALONE_INFERENCE\r
-internal class Driver\r
-{\r
-       private static void DumpDataTable (DataTable dt)\r
-       {\r
-               Console.WriteLine ("<Table>");\r
-               Console.WriteLine (dt.TableName);\r
-               Console.WriteLine ("ChildRelationCount: " + dt.ChildRelations.Count);\r
-               Console.WriteLine ("ConstraintsCount: " + dt.Constraints.Count);\r
-               Console.WriteLine ("ParentRelationCount: " + dt.ParentRelations.Count);\r
-               Console.WriteLine ("Prefix: " + dt.Prefix);\r
-               Console.WriteLine ("Namespace: " + dt.Namespace);\r
-               Console.WriteLine ("Site: " + dt.Site);\r
-               Console.WriteLine ("RowCount: " + dt.Rows.Count);\r
-               Console.WriteLine ("<Columns count='" + dt.Columns.Count + "'>");\r
-               foreach (DataColumn col in dt.Columns)\r
-                       DumpDataColumn (col);\r
-               Console.WriteLine ("</Columns>");\r
-               Console.WriteLine ("</Table>");\r
-       }\r
-\r
-       private static void DumpDataRelation (DataRelation rel)\r
-       {\r
-               Console.WriteLine ("<Relation>");\r
-               Console.WriteLine (rel.RelationName);\r
-               Console.WriteLine (rel.Nested);\r
-               Console.Write ("  <ParentColumns>");\r
-               foreach (DataColumn col in rel.ParentColumns)\r
-                       Console.Write (col.ColumnName + " ");\r
-               Console.WriteLine ("</ParentColumns>");\r
-               Console.Write ("  <ChildColumns>");\r
-               foreach (DataColumn col in rel.ChildColumns)\r
-                       Console.Write (col.ColumnName + " ");\r
-               Console.WriteLine ("</ChildColumns>");\r
-               if (rel.ParentKeyConstraint != null) {\r
-                       Console.WriteLine ("  <ParentKeyConstraint>");\r
-                       DumpUniqueConstraint (rel.ParentKeyConstraint);\r
-                       Console.WriteLine ("  </ParentKeyConstraint>");\r
-               }\r
-               if (rel.ChildKeyConstraint != null) {\r
-                       Console.WriteLine ("  <ChildKeyConstraint>");\r
-                       DumpForeignKeyConstraint (rel.ChildKeyConstraint);\r
-                       Console.WriteLine ("  </ChildKeyConstraint>");\r
-               }\r
-               Console.WriteLine ("</Relation>");\r
-       }\r
-\r
-       public static void DumpUniqueConstraint (UniqueConstraint uc)\r
-       {\r
-               Console.WriteLine ("Name " + uc.ConstraintName);\r
-               Console.WriteLine ("PK? " + uc.IsPrimaryKey);\r
-               Console.Write ("  <Columns>");\r
-               foreach (DataColumn col in uc.Columns)\r
-                       Console.Write (col.ColumnName + " ");\r
-               Console.WriteLine ("</Columns>");\r
-       }\r
-\r
-       public static void DumpForeignKeyConstraint (ForeignKeyConstraint fk)\r
-       {\r
-               Console.WriteLine ("Name " + fk.ConstraintName);\r
-               Console.WriteLine ("  <Rules>" + fk.AcceptRejectRule + ", " +\r
-                       fk.DeleteRule + ", " + fk.UpdateRule + "</Rules>");\r
-               Console.Write ("  <Columns>");\r
-               foreach (DataColumn col in fk.Columns)\r
-                       Console.Write (col.ColumnName + " ");\r
-               Console.WriteLine ("</Columns>");\r
-               Console.Write ("  <RelatedColumns>");\r
-               foreach (DataColumn col in fk.RelatedColumns)\r
-                       Console.Write (col.ColumnName + " ");\r
-               Console.WriteLine ("</RelatedColumns>");\r
-       }\r
-\r
-       private static void DumpDataSet (DataSet ds)\r
-       {\r
-               Console.WriteLine ("-----------------------");\r
-               Console.WriteLine ("name: " + ds.DataSetName);\r
-               Console.WriteLine ("ns: " + ds.Namespace);\r
-               Console.WriteLine ("prefix: " + ds.Prefix);\r
-               Console.WriteLine ("extprop: " + ds.ExtendedProperties.Count);\r
-               Console.WriteLine ("<Tables count='" + ds.Tables.Count + "'>");\r
-               foreach (DataTable dt in ds.Tables)\r
-                       DumpDataTable (dt);\r
-               Console.WriteLine ("</Tables>");\r
-               Console.WriteLine ("<Relations count='" + ds.Relations.Count + "'>");\r
-               foreach (DataRelation rel in ds.Relations)\r
-                       DumpDataRelation (rel);\r
-               Console.WriteLine ("</Relations>");\r
-       }\r
-\r
-       public static void DumpDataColumn (DataColumn col)\r
-       {\r
-               Console.WriteLine ("<Column>");\r
-               Console.WriteLine ("  ColumnName: " + col.ColumnName);\r
-               Console.WriteLine ("  AllowDBNull? " + col.AllowDBNull);\r
-               Console.WriteLine ("  AutoIncrement? " + col.AutoIncrement);\r
-               Console.WriteLine ("    Seed: " + col.AutoIncrementSeed);\r
-               Console.WriteLine ("    Step: " + col.AutoIncrementStep);\r
-               Console.WriteLine ("  Caption " + col.Caption);\r
-               Console.WriteLine ("  Mapping: " + col.ColumnMapping);\r
-               Console.WriteLine ("  Type: " + col.DataType);\r
-               Console.WriteLine ("  DefaultValue: " + (col.DefaultValue == DBNull.Value ? "(DBNull)" : col.DefaultValue));\r
-               Console.WriteLine ("  Expression: " + (col.Expression == "" ? "(empty)" : col.Expression));\r
-               Console.WriteLine ("  MaxLength: " + col.MaxLength);\r
-               Console.WriteLine ("  Namespace: " + (col.Namespace == null ? "(null)" : col.Namespace));\r
-               Console.WriteLine ("  Ordinal: " + col.Ordinal);\r
-               Console.WriteLine ("  Prefix: " + (col.Prefix == null ? "(null)" : col.Prefix));\r
-               Console.WriteLine ("  ReadOnly: " + col.ReadOnly);\r
-               Console.WriteLine ("  Unique: " + col.Unique);\r
-               Console.WriteLine ("</Column>");\r
-       }\r
-\r
-       public static void Main (string [] args)\r
-       {\r
-               if (args.Length < 1) {\r
-                       Console.WriteLine ("reader.exe xmlfilename");\r
-                       return;\r
-               }\r
-               try {\r
-                       XmlSerializer ser = new XmlSerializer (typeof (DataSet));\r
-\r
-                       DataSet ds = new DataSet ();\r
-                       XmlTextReader xtr = new XmlTextReader (args [0]);\r
-                       ds.ReadXml (xtr, XmlReadMode.Auto);\r
-DumpDataSet (ds);\r
-                       TextWriter sw = new StringWriter ();\r
-                       ser.Serialize (sw, ds);\r
-                       using (TextWriter w = new StreamWriter (Path.ChangeExtension (args [0], "ms.txt"), false, Encoding.ASCII)) {\r
-                               w.WriteLine (sw.ToString ());\r
-                       }\r
-\r
-                       ds = new DataSet ();\r
-                       xtr = new XmlTextReader (args [0]);\r
-                       XmlDocument doc = new XmlDocument ();\r
-                       doc.Load (xtr);\r
-                       XmlDataInferenceLoader.Infer (ds, doc, XmlReadMode.Auto, null);\r
-DumpDataSet (ds);\r
-                       sw = new StringWriter ();\r
-sw = Console.Out;\r
-                       ser.Serialize (sw, ds);\r
-                       using (TextWriter w = new StreamWriter (Path.ChangeExtension (args [0], "my.txt"), false, Encoding.ASCII)) {\r
-                               w.WriteLine (sw.ToString ());\r
-                       }\r
-\r
-               } catch (Exception ex) {\r
-                       Console.WriteLine (ex);\r
-               }\r
-       }\r
-}\r
-\r
-#endif\r
-\r
-//\r
-// * Design Notes\r
-//\r
-//     This class is used to implement DataSet's ReadXml() and \r
-//     InferXmlSchema() methods. That is, 1) to infer dataset schema \r
-//     structure and 2) to read data rows.\r
-//\r
-//     It is instantiated from DataSet, XmlReader and XmlReadMode.\r
-//\r
-//\r
-// ** General Design\r
-//\r
-// *** Read mode\r
-//\r
-//     Data rows are not read when XmlReadMode is ReadSchema or InferSchema\r
-//     (well, actually ReadSchema should not be passed).\r
-//\r
-//     Schema inference is done only when XmlReadMode is Auto or InferSchema.\r
-//\r
-// *** Information Set\r
-//\r
-//     Only elements, "attributes", and "text" are considered. Here "text" \r
-//     includes text node and CDATA section, but does not include whitespace\r
-//     and even significant whitespace (as MS does). Also, here "attributes"\r
-//     does not include "namespace" nodes.\r
-//\r
-//\r
-// ** Inference Design\r
-//\r
-// *** MappingType\r
-//\r
-//     There are four type of mapping in MappingType enumeration:\r
-//\r
-//     Element : Mapped to a simple type element.\r
-//     Attribute : Mapped to an attribute\r
-//     SimpleContent : Mapped to the text content of complex type element.\r
-//                     (i.e. xs:element/xs:complexType/xs:simpleContent)\r
-//     Hidden : Used for both key and reference, for auto-generated columns.\r
-//\r
-// *** Mapping strategy\r
-//\r
-//     Attributes are always (except for namespace nodes) inferred as \r
-//     DataColumn (of MappingType.Attribute).\r
-//\r
-//     When an element has attributes, it always becomes a DataTable.\r
-//     Otherwise if there is a child element, it becomes DataTable as well.\r
-//\r
-//     When there is a text content, 1) if the container element has \r
-//     attribute(s), the text content becomes a SimpleContent DataColumn\r
-//     in the container "table" element (yes, it becomes a DataTable).\r
-//     2) if the container has no attribute, the element becomes DataColumn.\r
-//\r
-//     If there are both text content and child element(s), the text content\r
-//     is ignored (thus, it always become DataTable).\r
-//\r
-// *** Mapping conflicts\r
-//\r
-//     If there has been already a different MappingType of DataColumn,\r
-//     it is DataException. For example, it is an error if there are an\r
-//     attribute and an element child those names are the same.\r
-//\r
-//     Name remapping will never be done. It introduces complicated rules.\r
-//\r
-// *** Upgrading from DataColumn to DataTable\r
-//\r
-//     If there has been the same Element type of mapping (that is, when\r
-//     the same-name child elements appeared in the element), then the\r
-//     child elements become a DataTable (so here must be a conversion\r
-//     from DataColumn/value_DataRow to DataTable/value_DataRow in the new\r
-//     table and reference_to_new_table in the old DataColumn.\r
-//\r
-//\r
-// ** Implementation\r
-//\r
-// *** XmlReader based implementation\r
-//\r
-//     This class uses XmlReader to avoid having the entire XML document\r
-//     object. The basic stategy is\r
-//\r
-//             1) handle attributes at startElement\r
-//             2) store text content (if it "stores" in data rows) while\r
-//                EndElement\r
-//             3) dispose of elements at endElement\r
-//             4) Empty element without attributes is equal to a column \r
-//                that holds "".\r
-//\r
-//     In XmlSchemaMapper.cs (by Ville Palo) there is an enumeration type\r
-//     ElementType (undefined, table, column). This concept is nice to reuse.\r
-//\r
-// *** Top level inference\r
-//\r
-//     The process starts with ReadElement() for the top-level element.\r
-//     (considering Fragment mode, it might not be the document element.\r
-//     However, no inference is done in that mode.)\r
-//\r
-//     If the top level element was not a DataTable and there is\r
-//     no more content, the element is regarded as DataSet with no tables.\r
-//\r
-// *** First child of the DataSet element\r
-//\r
-//     There are some special cases.\r
-//\r
-// *** ReadElement()\r
-//\r
-//     The main inference process is ReadElement(). This method consumes\r
-//     (should consume) exactly one element and interpret it as either\r
-//     DataTable or DataColumn.\r
-//\r
diff --git a/mcs/class/System.Data/System.Data/XmlDataLoader.cs b/mcs/class/System.Data/System.Data/XmlDataLoader.cs
deleted file mode 100644 (file)
index 825e7e2..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-//
-// mcs/class/System.Data/System.Data/XmlDataLoader.cs
-//
-// Purpose: Loads XmlDocument to DataSet 
-//
-// class: XmlDataLoader
-// assembly: System.Data.dll
-// namespace: System.Data
-//
-// Author:
-//     Ville Palo <vi64pa@koti.soon.fi>
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// (c)copyright 2002 Ville Palo
-// (C)2004 Novell Inc.
-//
-// XmlDataLoader is included within the Mono Class Library.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Xml;
-using System.Collections;
-using System.Globalization;
-
-namespace System.Data 
-{
-
-       internal class XmlDataLoader
-       {
-       
-               private DataSet DSet;
-
-               public XmlDataLoader (DataSet set) 
-               {
-                       DSet = set;
-               }
-
-               public XmlReadMode LoadData (XmlReader reader, XmlReadMode mode)
-               {
-                       XmlReadMode Result = mode;
-
-                       switch (mode) {
-                       case XmlReadMode.Auto:
-                               Result = DSet.Tables.Count == 0 ? XmlReadMode.InferSchema : XmlReadMode.IgnoreSchema;
-                               ReadModeSchema (reader, DSet.Tables.Count == 0 ? XmlReadMode.Auto : XmlReadMode.IgnoreSchema);
-                               break;
-                       case XmlReadMode.InferSchema:
-                               Result = XmlReadMode.InferSchema;
-                               ReadModeSchema (reader, mode);
-                               break;
-                       case XmlReadMode.IgnoreSchema:
-                               Result = XmlReadMode.IgnoreSchema;
-                               ReadModeSchema (reader, mode);
-                               break;
-                       default:
-                               reader.Skip ();
-                               break;
-                       }
-
-                       return Result;
-               }
-
-               #region reading
-
-               // Read information from the reader.
-               private void ReadModeSchema (XmlReader reader, XmlReadMode mode)
-               {
-                       bool inferSchema = mode == XmlReadMode.InferSchema || mode == XmlReadMode.Auto;
-                       bool fillRows = mode != XmlReadMode.InferSchema;
-                       // This check is required for full DiffGram.
-                       // It is not described in MSDN and it is impossible
-                       // with WriteXml(), but when writing XML using
-                       // XmlSerializer, the output is like this:
-                       // <dataset>
-                       //  <schema>...</schema>
-                       //  <diffgram>...</diffgram>
-                       // </dataset>
-                       //
-                       // FIXME: This, this check should (also) be done
-                       // after reading the top-level element.
-
-                       //check if the current element is schema.
-                       if (reader.LocalName == "schema") {
-                               if (mode != XmlReadMode.Auto)
-                                       reader.Skip(); // skip the schema node.
-                               else
-                                       DSet.ReadXmlSchema(reader);
-                               
-                               reader.MoveToContent();
-                       }
-
-                       // load an XmlDocument from the reader.
-                       XmlDocument doc = new XmlDocument ();
-                       doc.Load (reader);
-                       if (doc.DocumentElement == null)
-                               return;
-
-                       // treatment for .net compliancy :
-                       // if xml representing dataset has exactly depth of 2 elements,
-                       // than the root element actually represents datatable and not dataset
-                       // so we add new root element to doc 
-                       // in order to create an element representing dataset.
-                       //
-                       // FIXME: Consider attributes. 
-                       // <root a='1' b='2' /> is regarded as a valid DataTable.
-                       int rootNodeDepth = XmlNodeElementsDepth(doc.DocumentElement);
-                       switch (rootNodeDepth) {
-                       case 1:
-                               if (inferSchema) {
-                                       DSet.DataSetName = doc.DocumentElement.LocalName;
-                                       DSet.Prefix = doc.DocumentElement.Prefix;
-                                       DSet.Namespace = doc.DocumentElement.NamespaceURI;
-                               }
-                               return;
-                       case 2:
-                               // create new document
-                               XmlDocument newDoc = new XmlDocument();
-                               // create element for dataset
-                               XmlElement datasetElement = newDoc.CreateElement("dummy");
-                               // make the new created element to be the new doc root
-                               newDoc.AppendChild(datasetElement);
-                               // import all the elements from doc and insert them into new doc
-                               XmlNode root = newDoc.ImportNode(doc.DocumentElement,true);
-                               datasetElement.AppendChild(root);
-                               doc = newDoc;
-                               break;
-                       default:
-                               if (inferSchema) {
-                                       DSet.DataSetName = doc.DocumentElement.LocalName;
-                                       DSet.Prefix = doc.DocumentElement.Prefix;
-                                       DSet.Namespace = doc.DocumentElement.NamespaceURI;
-                               }
-                               break;
-                       }
-
-                       // set EnforceConstraint to false - we do not want any validation during 
-                       // load time.
-                       bool origEnforceConstraint = DSet.EnforceConstraints;
-                       DSet.EnforceConstraints = false;
-
-                       // The childs are tables.
-                       XmlNodeList nList = doc.DocumentElement.ChildNodes;
-
-                       // FIXME: When reading DataTable (not DataSet), 
-                       // the nodes are column items, not rows.
-                       for (int i = 0; i < nList.Count; i++) {
-                               XmlNode node = nList[i];
-                               // node represents a table onky if it is of type XmlNodeType.Element
-                               if (node.NodeType == XmlNodeType.Element) {
-                                       AddRowToTable(node, null, inferSchema, fillRows);
-                               }
-                       }
-                       // set the EnforceConstraints to original value;
-                       DSet.EnforceConstraints = origEnforceConstraint;
-               }
-
-               #endregion // reading
-
-               #region Private helper methods
-/*             
-               private void ReadColumns (XmlReader reader, DataRow row, DataTable table, string TableName)
-               {
-                       do {
-                               if (reader.NodeType == XmlNodeType.Element) {
-                                       DataColumn col = table.Columns [reader.LocalName];
-                                       if (col != null) {
-                                               row [col] = StringToObject (col.DataType, reader.Value);
-                                       }
-                                       reader.Read ();
-                               }
-                               else {
-                                       reader.Read ();
-                               }
-                               
-                       } while (table.TableName != reader.LocalName 
-                               || reader.NodeType != XmlNodeType.EndElement);
-               }
-*/
-               internal static object StringToObject (Type type, string value)
-               {
-                       if (type == null) return value;
-
-                       switch (Type.GetTypeCode (type)) {
-                               case TypeCode.Boolean: return XmlConvert.ToBoolean (value);
-                               case TypeCode.Byte: return XmlConvert.ToByte (value);
-                               case TypeCode.Char: return (char)XmlConvert.ToInt32 (value);
-                               case TypeCode.DateTime: return XmlConvert.ToDateTime (value, XmlDateTimeSerializationMode.Unspecified);
-                               case TypeCode.Decimal: return XmlConvert.ToDecimal (value);
-                               case TypeCode.Double: return XmlConvert.ToDouble (value);
-                               case TypeCode.Int16: return XmlConvert.ToInt16 (value);
-                               case TypeCode.Int32: return XmlConvert.ToInt32 (value);
-                               case TypeCode.Int64: return XmlConvert.ToInt64 (value);
-                               case TypeCode.SByte: return XmlConvert.ToSByte (value);
-                               case TypeCode.Single: return XmlConvert.ToSingle (value);
-                               case TypeCode.UInt16: return XmlConvert.ToUInt16 (value);
-                               case TypeCode.UInt32: return XmlConvert.ToUInt32 (value);
-                               case TypeCode.UInt64: return XmlConvert.ToUInt64 (value);
-                       }
-
-                       if (type == typeof (TimeSpan)) return XmlConvert.ToTimeSpan (value);
-                       if (type == typeof (Guid)) return XmlConvert.ToGuid (value);
-                       if (type == typeof (byte[])) return Convert.FromBase64String (value);
-                       if (type == typeof (System.Type)) return System.Type.GetType (value);
-
-                       return Convert.ChangeType (value, type);
-               }
-
-               private void AddRowToTable(XmlNode tableNode, DataColumn relationColumn, bool inferSchema, bool fillRows)
-               {
-                       Hashtable rowValue = new Hashtable();
-                       DataTable table;
-
-                       // Check if the table exists in the DataSet. If not create one.
-                       if (DSet.Tables.Contains(tableNode.LocalName))
-                               table = DSet.Tables[tableNode.LocalName];
-                       else if (inferSchema) {
-                               table = new DataTable(tableNode.LocalName);
-                               DSet.Tables.Add(table);
-                       }
-                       else
-                               return;
-
-                       // For elements that are inferred as tables and that contain text 
-                       // but have no child elements, a new column named "TableName_Text" 
-                       // is created for the text of each of the elements. 
-                       // If an element is inferred as a table and has text, but also has child elements,
-                       // the text is ignored.
-                       // Note : if an element is inferred as a table and has text 
-                       // and has no child elements, 
-                       // but the repeated ements of this table have child elements, 
-                       // then the text is ignored.
-                       if(!HaveChildElements(tableNode) && HaveText(tableNode) &&
-                               !IsRepeatedHaveChildNodes(tableNode)) {
-                               string columnName = tableNode.Name + "_Text";
-                               if (!table.Columns.Contains(columnName)) {
-                                       table.Columns.Add(columnName);
-                               }
-                               rowValue.Add(columnName, tableNode.InnerText);
-                       }
-                       
-                       // Get the child nodes of the table. Any child can be one of the following tow:
-                       // 1. DataTable - if there was a relation with another table..
-                       // 2. DataColumn - column of the current table.
-                       XmlNodeList childList = tableNode.ChildNodes;
-                       for (int i = 0; i < childList.Count; i++) {
-                               XmlNode childNode = childList[i];
-
-                               // we are looping through elements only
-                               // Note : if an element is inferred as a table and has text, but also has child elements,
-                               // the text is ignored.
-                               if (childNode.NodeType != XmlNodeType.Element)
-                                       continue;
-                               
-                               // Elements that have attributes are inferred as tables. 
-                               // Elements that have child elements are inferred as tables. 
-                               // Elements that repeat are inferred as a single table. 
-                               if (IsInferredAsTable(childNode)) {
-                                       // child node inferred as table
-                                       if (inferSchema) {
-                                               // We need to create new column for the relation between the current
-                                               // table and the new table we found (the child table).
-                                               string newRelationColumnName = table.TableName + "_Id";
-                                               if (!table.Columns.Contains(newRelationColumnName)) {
-                                                       DataColumn newRelationColumn = new DataColumn(newRelationColumnName, typeof(int));
-                                                       newRelationColumn.AllowDBNull = false;
-                                                       newRelationColumn.AutoIncrement = true;
-                                                       // we do not want to serialize this column so MappingType is Hidden.
-                                                       newRelationColumn.ColumnMapping = MappingType.Hidden;
-                                                       table.Columns.Add(newRelationColumn);
-                                               }
-                                               // Add a row to the new table we found.
-                                               AddRowToTable(childNode, table.Columns[newRelationColumnName], inferSchema, fillRows);
-                                       }
-                                       else
-                                               AddRowToTable(childNode, null, inferSchema, fillRows);
-                                       
-                               }
-                               else {
-                                       // Elements that have no attributes or child elements, and do not repeat, 
-                                       // are inferred as columns.
-                                       object val = null;
-                                       if (childNode.FirstChild != null)
-                                               val = childNode.FirstChild.Value;
-                                       else
-                                               val = "";
-                                       if (table.Columns.Contains(childNode.LocalName))
-                                               rowValue.Add(childNode.LocalName, val);
-                                       else if (inferSchema) {
-                                               table.Columns.Add(childNode.LocalName);
-                                               rowValue.Add(childNode.LocalName, val);
-                                       }
-                               }
-                                               
-                       }
-
-                       // Column can be attribute of the table element.
-                       XmlAttributeCollection aCollection = tableNode.Attributes;
-                       for (int i = 0; i < aCollection.Count; i++) {
-                               XmlAttribute attr = aCollection[i];
-                               //the atrribute can be the namespace.
-                               if (attr.Prefix.Equals("xmlns"))
-                                       table.Namespace = attr.Value;
-                               else { // the attribute is a column.
-                                       if (!table.Columns.Contains(attr.LocalName)) {
-                                               DataColumn col = table.Columns.Add(attr.LocalName);
-                                               col.ColumnMapping = MappingType.Attribute;
-                                       }
-                                       table.Columns[attr.LocalName].Namespace = table.Namespace;
-
-                                       rowValue.Add(attr.LocalName, attr.Value);
-                               }
-                       }
-
-                       // If the current table is a child table we need to add a new column for the relation
-                       // and add a new relation to the DataSet.
-                       if (relationColumn != null) {
-                               if (!table.Columns.Contains(relationColumn.ColumnName)) {
-                                       DataColumn dc = new DataColumn(relationColumn.ColumnName, typeof(int));
-                                       // we do not want to serialize this column so MappingType is Hidden.
-                                       dc.ColumnMapping = MappingType.Hidden;
-                                       table.Columns.Add(dc);
-                                       // Convention of relation name is: ParentTableName_ChildTableName
-                                       DataRelation dr = new DataRelation(relationColumn.Table.TableName + "_" + dc.Table.TableName, relationColumn, dc);
-                                       dr.Nested = true;
-                                       DSet.Relations.Add(dr);
-                                       UniqueConstraint.SetAsPrimaryKey (dr.ParentTable.Constraints, dr.ParentKeyConstraint);
-                               }
-                               rowValue.Add (relationColumn.ColumnName, relationColumn.GetAutoIncrementValue());
-                       }
-
-                       // Create new row and add all values to the row.
-                       // then add it to the table.
-                       DataRow row = table.NewRow ();
-                                       
-                       IDictionaryEnumerator enumerator = rowValue.GetEnumerator ();
-                       while (enumerator.MoveNext ()) {
-                               row [enumerator.Key.ToString ()] = StringToObject (table.Columns[enumerator.Key.ToString ()].DataType, enumerator.Value.ToString ());
-                       }
-
-                       if (fillRows)
-                               table.Rows.Add (row);
-                       
-               }
-
-               // this method calculates the depth of child nodes tree
-               // and it counts nodes of type XmlNodeType.Element only
-               private static int XmlNodeElementsDepth(XmlNode node)
-               {
-                       int maxDepth = -1;
-            if ((node != null)) {
-                               if  ((node.HasChildNodes) && (node.FirstChild.NodeType == XmlNodeType.Element)) {
-                                       for (int i=0; i<node.ChildNodes.Count; i++) {
-                                               if (node.ChildNodes[i].NodeType == XmlNodeType.Element) {
-                                                       int childDepth = XmlNodeElementsDepth(node.ChildNodes[i]);
-                                                       maxDepth = (maxDepth < childDepth) ? childDepth : maxDepth;
-                                               }
-                                       }
-                               }
-                               else {
-                                       return 1;
-                               }
-                       }
-                       else {
-                               return -1;
-                       }
-
-                       return (maxDepth + 1);
-               }
-
-               private bool HaveChildElements(XmlNode node)
-               {
-                       bool haveChildElements = true;
-                       if(node.ChildNodes.Count > 0) {
-                               foreach(XmlNode childNode in node.ChildNodes) {
-                                       if (childNode.NodeType != XmlNodeType.Element) {
-                                               haveChildElements = false;
-                                               break;
-                                       }
-                               }
-                       }
-                       else {
-                               haveChildElements = false;
-                       }
-                       return haveChildElements;
-               }
-
-               private bool HaveText(XmlNode node)
-               {
-                       bool haveText = true;
-                       if(node.ChildNodes.Count > 0) {
-                               foreach(XmlNode childNode in node.ChildNodes) {
-                                       if (childNode.NodeType != XmlNodeType.Text) {
-                                               haveText = false;
-                                               break;
-                                       }
-                               }
-                       }
-                       else {
-                               haveText = false;
-                       }
-                       return haveText;
-               }
-
-               private bool IsRepeat(XmlNode node)
-               {
-                       bool isRepeat = false;
-                       if(node.ParentNode != null) {
-                               foreach(XmlNode childNode in node.ParentNode.ChildNodes) {
-                                       if(childNode != node && childNode.Name == node.Name) {
-                                               isRepeat = true;
-                                               break;
-                                       }
-                               }
-                       }
-                       return isRepeat;
-               }
-
-               private bool HaveAttributes(XmlNode node)
-               {
-                       return (node.Attributes != null && node.Attributes.Count > 0);
-               }
-
-               private bool IsInferredAsTable(XmlNode node)
-               {
-                       // Elements that have attributes are inferred as tables. 
-                       // Elements that have child elements are inferred as tables. 
-                       // Elements that repeat are inferred as a single table. 
-                       return (HaveChildElements(node) || HaveAttributes(node) ||
-                                       IsRepeat(node));
-               }
-
-               /// <summary>
-               /// Returns true is any node that is repeated node for the node supplied
-               /// (i.e. is child node of node's parent, have the same name and is not the node itself)
-               /// have child elements
-               /// </summary>
-               private bool IsRepeatedHaveChildNodes(XmlNode node)
-               {
-                       bool isRepeatedHaveChildElements = false;
-                       if(node.ParentNode != null) {
-                               foreach(XmlNode childNode in node.ParentNode.ChildNodes) {
-                                       if(childNode != node && childNode.Name == node.Name) {
-                                               if (HaveChildElements(childNode)) {
-                                                       isRepeatedHaveChildElements = true;
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-                       return isRepeatedHaveChildElements;
-               }
-
-               #endregion // Private helper methods
-
-               
-       }
-
-}
diff --git a/mcs/class/System.Data/System.Data/XmlDataReader.cs b/mcs/class/System.Data/System.Data/XmlDataReader.cs
deleted file mode 100644 (file)
index f4d4b8f..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-\r
-//\r
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.IO;\r
-using System.Data;\r
-using System.Xml;\r
-using System.Xml.Serialization;\r
-\r
-\r
-namespace System.Data\r
-{\r
-#if STANDALONE_DRIVER_TEST\r
-       public class Driver\r
-       {\r
-               public static void Main (string [] args)\r
-               {\r
-                       if (args.Length == 0) {\r
-                               Console.WriteLine ("usage: mono xmldatareader.exe filename");\r
-                               return;\r
-                       }\r
-\r
-                       Console.WriteLine ("Target file: " + args [0]);\r
-\r
-                       DataSet ds = new DataSet ();\r
-//                     ds.InferXmlSchema (args [0], null);\r
-\r
-                       try {\r
-                               ds.ReadXml (args [0]);\r
-                       } catch (Exception ex) {\r
-                               Console.WriteLine ("ReadXml() borked: " + ex.Message);\r
-                               return;\r
-                       }\r
-                       Console.WriteLine ("---- DataSet ----------------");\r
-                       StringWriter sw = new StringWriter ();\r
-                       PrintDataSet (ds, sw);\r
-                       PrintDataSet (ds, Console.Out);\r
-\r
-                       ds = new DataSet ();\r
-                       ds.InferXmlSchema (args [0], null);\r
-                       XmlDataReader.ReadXml (ds, new XmlTextReader (args [0]));\r
-                       Console.WriteLine ("---- XmlDataReader ----------------");\r
-                       StringWriter sw2 = new StringWriter ();\r
-                       PrintDataSet (ds, sw2);\r
-\r
-                       if (sw.ToString () == sw2.ToString ())\r
-                               Console.WriteLine ("Successful.");\r
-                       else\r
-                               Console.WriteLine ("Different *************************************************\n" + sw2);\r
-               }\r
-\r
-               private static void PrintDataSet (DataSet ds, TextWriter tw)\r
-               {\r
-                       tw.WriteLine ("DS::" + ds.DataSetName + ", " + ds.Tables.Count + ", " + ds.Relations.Count);\r
-                       foreach (DataTable dt in ds.Tables)\r
-                               tw.WriteLine ("DT:" + dt.TableName + ", " + dt.Columns.Count + ", " + dt.Rows.Count);\r
-\r
-                       ds.WriteXml (tw);\r
-                       tw.WriteLine ();\r
-               }\r
-       }\r
-#endif\r
-\r
-       internal class XmlDataReader\r
-       {\r
-               const string xmlnsNS = "http://www.w3.org/2000/xmlns/";\r
-\r
-               public static void ReadXml (\r
-                       DataSet dataset, XmlReader reader, XmlReadMode mode)\r
-               {\r
-                       new XmlDataReader (dataset, reader, mode).Process ();\r
-               }\r
-\r
-               DataSet dataset;\r
-               XmlReader reader;\r
-               XmlReadMode mode;\r
-\r
-               public XmlDataReader (DataSet ds, XmlReader xr, XmlReadMode m)\r
-               {\r
-                       dataset = ds;\r
-                       reader =xr;\r
-                       mode = m;\r
-               }\r
-\r
-               private void Process ()\r
-               {\r
-                       bool savedEnforceConstraints =\r
-                               dataset.EnforceConstraints;\r
-                       try {\r
-                       dataset.EnforceConstraints = false;\r
-                       reader.MoveToContent ();\r
-\r
-                       if (mode == XmlReadMode.Fragment) {\r
-                                       while (reader.NodeType == XmlNodeType.Element && !reader.EOF) {\r
-                                               ReadTopLevelElement ();\r
-                                       }\r
-                               }\r
-                               else\r
-                                       ReadTopLevelElement ();\r
-                       } finally {\r
-                               dataset.EnforceConstraints = \r
-                                       savedEnforceConstraints;\r
-                       }\r
-               }\r
-\r
-               private bool IsTopLevelDataSet ()\r
-               {\r
-                       string local = XmlHelper.Decode (reader.LocalName);\r
-\r
-                       // No need to check DataSetName. In fact, it is ignored.\r
-\r
-                       DataTable dt = dataset.Tables [local];\r
-                       if (dt == null)\r
-                               return true;\r
-\r
-                       XmlDocument doc = new XmlDocument ();\r
-                       XmlElement el = (XmlElement) doc.ReadNode (reader);\r
-                       doc.AppendChild (el);\r
-                       reader = new XmlNodeReader (el);\r
-                       reader.MoveToContent ();\r
-\r
-                       return !XmlDataInferenceLoader.IsDocumentElementTable (\r
-                               el, null);\r
-               }\r
-\r
-               private void ReadTopLevelElement ()\r
-               {\r
-                       if (mode == XmlReadMode.Fragment &&\r
-                               (XmlHelper.Decode (reader.LocalName) !=\r
-                               dataset.DataSetName ||\r
-                               reader.NamespaceURI != dataset.Namespace))\r
-                               reader.Skip ();\r
-                       else if (mode == XmlReadMode.Fragment ||\r
-                               IsTopLevelDataSet ()) {\r
-                       int depth = reader.Depth;\r
-                       reader.Read ();\r
-                       reader.MoveToContent ();\r
-                       do {\r
-                               ReadDataSetContent ();\r
-                       } while (reader.Depth > depth && !reader.EOF);\r
-                       if (reader.NodeType == XmlNodeType.EndElement)\r
-                               reader.ReadEndElement ();\r
-                       reader.MoveToContent ();\r
-               }\r
-                       else\r
-                               ReadDataSetContent ();\r
-               }\r
-\r
-               private void ReadDataSetContent ()\r
-               {\r
-                       DataTable table = dataset.Tables [XmlHelper.Decode (reader.LocalName)];\r
-                       if (table == null || table.Namespace != reader.NamespaceURI) {\r
-                               reader.Skip ();\r
-                               reader.MoveToContent ();\r
-                               return; // skip if there is no matching table\r
-                       }\r
-\r
-                       // skip if namespace does not match.\r
-                       if (table.Namespace != reader.NamespaceURI) {\r
-                               reader.Skip ();\r
-                               reader.MoveToContent ();\r
-                               return; // skip if there is no matching table\r
-                       }\r
-\r
-                       DataRow row = table.NewRow ();\r
-                       ReadElement (row);\r
-                       table.Rows.Add (row);\r
-               }\r
-\r
-               private void ReadElement (DataRow row)\r
-               {\r
-                       // Consume attributes\r
-                       if (reader.MoveToFirstAttribute ()) {\r
-                               do {\r
-                                       if (reader.NamespaceURI == XmlConstants.XmlnsNS\r
-                                       || reader.NamespaceURI == XmlConstants.XmlNS\r
-                                               )\r
-                                               continue;\r
-                                       ReadElementAttribute (row);\r
-                               } while (reader.MoveToNextAttribute ());\r
-                               reader.MoveToElement ();\r
-                       }\r
-\r
-                       // If not empty element, read content.\r
-                       if (reader.IsEmptyElement) {\r
-                               reader.Skip ();\r
-                               reader.MoveToContent ();\r
-                       } else {\r
-                               int depth = reader.Depth;\r
-                               reader.Read ();\r
-                               reader.MoveToContent ();\r
-                               do {\r
-                                       ReadElementContent (row);\r
-                               } while (reader.Depth > depth && !reader.EOF);\r
-                               if (reader.IsEmptyElement)\r
-                                       reader.Read ();\r
-                               if (reader.NodeType == XmlNodeType.EndElement)\r
-                                       reader.ReadEndElement ();\r
-                               reader.MoveToContent ();\r
-                       }\r
-               }\r
-\r
-               private void ReadElementAttribute (DataRow row)\r
-               {\r
-                       DataColumn col = row.Table.Columns [XmlHelper.Decode (reader.LocalName)];\r
-                       if (col == null || col.Namespace != reader.NamespaceURI)\r
-                               return;\r
-                       row [col] = StringToObject (col.DataType, reader.Value);\r
-               }\r
-\r
-               private void ReadElementContent (DataRow row)\r
-               {\r
-                       switch (reader.NodeType) {\r
-\r
-                       case XmlNodeType.EndElement:\r
-                               // This happens when the content was only whitespace (and skipped by MoveToContent()).\r
-                               return;\r
-\r
-                       case XmlNodeType.Element:\r
-                               ReadElementElement (row);\r
-                               break;\r
-\r
-                       case XmlNodeType.Text:\r
-                       case XmlNodeType.CDATA:\r
-                       case XmlNodeType.SignificantWhitespace:\r
-                               DataColumn simple = null;\r
-                               DataColumnCollection cols = row.Table.Columns;\r
-                               for (int i = 0; i < cols.Count; i++) {\r
-                                       DataColumn col = cols [i];\r
-                                       if (col.ColumnMapping ==\r
-                                               MappingType.SimpleContent) {\r
-                                               simple = col;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               string s = reader.ReadString ();\r
-                               reader.MoveToContent ();\r
-#if SILLY_MS_COMPATIBLE\r
-// As to MS, "test string" and "test <!-- comment -->string" are different :P\r
-                               if (simple != null && row.IsNull (simple))\r
-                                       row [simple] = StringToObject (simple.DataType, s);\r
-#else\r
-// But it does not mean we support "123<!-- comment -->456". just allowed for string\r
-                               if (simple != null)\r
-                                       row [simple] += s;\r
-#endif\r
-                               break;\r
-                       case XmlNodeType.Whitespace:\r
-                               reader.ReadString ();\r
-                               break;\r
-                       }\r
-               }\r
-\r
-               private void ReadElementElement (DataRow row)\r
-               {\r
-                       // This child element (for row) might be either simple\r
-                       // content element, or child element\r
-\r
-                       // MS.NET crashes here... but it seems just a bug.\r
-                       DataColumn col = row.Table.Columns [XmlHelper.Decode (reader.LocalName)];\r
-                       if (col == null ||  col.Namespace != reader.NamespaceURI)\r
-                               col = null;\r
-\r
-                       // if col exists, then it should be MappingType.Element\r
-                       if (col != null\r
-                               && col.ColumnMapping == MappingType.Element) {\r
-\r
-                               // TODO: This part is suspicious for\r
-                               // MS compatibility (test required)\r
-                               if (col.Namespace != reader.NamespaceURI) {\r
-                                       reader.Skip ();\r
-                                       return;\r
-                               }\r
-\r
-                               bool wasEmpty = reader.IsEmptyElement;\r
-                               int depth = reader.Depth;\r
-\r
-                               if (typeof (IXmlSerializable).IsAssignableFrom (col.DataType)) {\r
-                                       try {\r
-                                               // NOTE: ReadElementString works fine with proper XML with CDATA etc,\r
-                                               // however doesn't behave well with XMLs like the one in \r
-                                               // https://bugzilla.novell.com/show_bug.cgi?id=377146 which is \r
-                                               // apparently supported by MS.NET - to maintain compatibility,\r
-                                               // If the obj implements IXmlSerializable, let obj's ReadXml do the reading\r
-                                               IXmlSerializable obj = (IXmlSerializable) Activator.CreateInstance (col.DataType, new object [0]);\r
-                                               if (!reader.IsEmptyElement) {\r
-                                                       obj.ReadXml (reader);\r
-                                                       reader.ReadEndElement ();\r
-                                               } else {\r
-                                                       reader.Skip ();\r
-                                               }                                               \r
-                                               row [col] = obj;\r
-                                       } catch (XmlException) {\r
-                                               // XML is not in accordance to expected standards, try reading the content as an xml doc\r
-                                               row [col] = reader.ReadInnerXml ();\r
-                                       } catch (InvalidOperationException) {\r
-\r
-                                               row [col] = reader.ReadInnerXml ();\r
-                                       }\r
-                               } else {\r
-                                       row [col] = StringToObject (col.DataType, reader.ReadElementString ());\r
-                               }\r
-                                       \r
-                               if (!wasEmpty && reader.Depth > depth) {\r
-                               // This means, instance does not match with\r
-                               // the schema (because the instance element\r
-                               // contains complex content, while specified as\r
-                               // simple), so just skip to the end of the\r
-                               // element.\r
-                                       while (reader.Depth > depth)\r
-                                               reader.Read ();\r
-                                       reader.Read ();\r
-                               }\r
-                               reader.MoveToContent ();\r
-                               return;\r
-                       } else if (col != null) {\r
-                               // Mismatch column type. Just skip\r
-                               reader.Skip ();\r
-                               reader.MoveToContent ();\r
-                               return;\r
-                       }\r
-\r
-                       // Otherwise, it might be child table element\r
-                       DataRelationCollection rels = row.Table.ChildRelations;\r
-                       for (int i = 0; i < rels.Count; i++) {\r
-                               DataRelation rel = rels [i];\r
-                               if (!rel.Nested)\r
-                                       continue;\r
-                               DataTable ct = rel.ChildTable;\r
-                               if (ct.TableName != XmlHelper.Decode (reader.LocalName) || ct.Namespace != reader.NamespaceURI)\r
-                                       continue;\r
-\r
-                               DataRow childRow = rel.ChildTable.NewRow ();\r
-                               ReadElement (childRow);\r
-\r
-                               for (int c = 0; c < rel.ChildColumns.Length; c++) {\r
-                                       childRow [rel.ChildColumns [c]]\r
-                                               = row [rel.ParentColumns [c]];\r
-                               }\r
-                               rel.ChildTable.Rows.Add (childRow);\r
-                               return;\r
-                       }\r
-\r
-                       // Matched neither of the above: just skip\r
-                       reader.Skip ();\r
-                       reader.MoveToContent ();\r
-               }\r
-\r
-               internal static object StringToObject (Type type, string value)\r
-               {\r
-                       if (type == null) return value;\r
-\r
-                       switch (Type.GetTypeCode (type)) {\r
-                               case TypeCode.Boolean: return XmlConvert.ToBoolean (value);\r
-                               case TypeCode.Byte: return XmlConvert.ToByte (value);\r
-                               case TypeCode.Char: return (char)XmlConvert.ToInt32 (value);\r
-                               case TypeCode.DateTime: return XmlConvert.ToDateTime (value, XmlDateTimeSerializationMode.Unspecified);\r
-                               case TypeCode.Decimal: return XmlConvert.ToDecimal (value);\r
-                               case TypeCode.Double: return XmlConvert.ToDouble (value);\r
-                               case TypeCode.Int16: return XmlConvert.ToInt16 (value);\r
-                               case TypeCode.Int32: return XmlConvert.ToInt32 (value);\r
-                               case TypeCode.Int64: return XmlConvert.ToInt64 (value);\r
-                               case TypeCode.SByte: return XmlConvert.ToSByte (value);\r
-                               case TypeCode.Single: return XmlConvert.ToSingle (value);\r
-                               case TypeCode.UInt16: return XmlConvert.ToUInt16 (value);\r
-                               case TypeCode.UInt32: return XmlConvert.ToUInt32 (value);\r
-                               case TypeCode.UInt64: return XmlConvert.ToUInt64 (value);\r
-                       }\r
-\r
-                       if (type == typeof (TimeSpan)) return XmlConvert.ToTimeSpan (value);\r
-                       if (type == typeof (Guid)) return XmlConvert.ToGuid (value);\r
-                       if (type == typeof (byte[])) return Convert.FromBase64String (value);\r
-                       if (type == typeof (System.Type)) return System.Type.GetType (value);\r
-\r
-                       return Convert.ChangeType (value, type);\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/System.Data/System.Data/XmlDiffLoader.cs b/mcs/class/System.Data/System.Data/XmlDiffLoader.cs
deleted file mode 100644 (file)
index 1f09303..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-//
-// mcs/class/System.Data/System.Data/XmlDiffLoader.cs
-//
-// Purpose: Loads XmlDiffGrams to DataSet 
-//
-// class: XmlDiffLoader
-// assembly: System.Data.dll
-// namespace: System.Data
-//
-// Author:
-//     Ville Palo <vi64pa@koti.soon.fi>
-//     Lluis Sanchez Gual (lluis@ximian.com)
-//
-// (c)copyright 2003 Ville Palo
-// Copyright 2011 Xamarin Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Data;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.XPath;
-using System.Collections;
-using System.Globalization;
-
-namespace System.Data {
-
-       internal class XmlDiffLoader 
-       {
-
-               #region Fields
-               private DataSet DSet;
-               private DataTable table;
-               private Hashtable DiffGrRows = new Hashtable ();
-               private Hashtable ErrorRows = new Hashtable ();
-
-               #endregion // Fields
-
-               #region ctors
-
-               public XmlDiffLoader (DataSet DSet) 
-               {
-                       this.DSet = DSet;
-               }
-
-               public XmlDiffLoader (DataTable table) 
-               {
-                       this.table = table;
-               }
-
-               #endregion //ctors
-
-               #region Public methods
-
-               public void Load (XmlReader reader) 
-               {
-                       bool origEnforceConstraint = false;
-                       if (DSet != null) {
-                               origEnforceConstraint = DSet.EnforceConstraints;
-                               DSet.EnforceConstraints = false;
-                       }
-                       
-                       reader.MoveToContent ();
-                       if (reader.IsEmptyElement) {
-                               reader.Skip ();
-                               return;
-                       }
-                       
-                       reader.ReadStartElement ("diffgram", XmlConstants.DiffgrNamespace);
-                       reader.MoveToContent ();
-                       
-                       while (reader.NodeType != XmlNodeType.EndElement)
-                       {
-                               if (reader.NodeType == XmlNodeType.Element)
-                               {
-                                       if (reader.LocalName == "before" && reader.NamespaceURI == XmlConstants.DiffgrNamespace)
-                                               LoadBefore (reader);
-                                       else if (reader.LocalName == "errors" && reader.NamespaceURI == XmlConstants.DiffgrNamespace)
-                                               LoadErrors (reader);
-                                       else
-                                               LoadCurrent (reader);
-                               }
-                               else
-                                       reader.Skip ();
-                       }
-                       
-                       reader.ReadEndElement ();
-                       
-                       if (DSet != null)
-                               DSet.EnforceConstraints = origEnforceConstraint;
-               }
-
-               #endregion // Public methods
-
-               #region Private methods
-
-               private void LoadCurrent (XmlReader reader) 
-               {
-                       if (reader.IsEmptyElement) {
-                               reader.Skip();
-                               return;
-                       }
-                       reader.ReadStartElement ();             // Dataset root
-                       reader.MoveToContent ();
-
-                       while (reader.NodeType != XmlNodeType.EndElement)
-                       {
-                               if (reader.NodeType == XmlNodeType.Element)
-                               {
-                                       DataTable t = GetTable (reader.LocalName);
-                                       if (t != null)
-                                               LoadCurrentTable (t, reader);
-#if true
-                                       else
-                                               reader.Skip ();
-#else
-                                       else 
-                                               throw new DataException (Locale.GetText ("Cannot load diffGram. Table '" + reader.LocalName + "' is missing in the destination dataset"));      
-#endif
-                               }
-                               else
-                                       reader.Skip ();
-                       }
-                       
-                       reader.ReadEndElement ();
-               }
-
-               private void LoadBefore (XmlReader reader) 
-               {
-                       if (reader.IsEmptyElement) {
-                               reader.Skip ();
-                               return;
-                       }
-                       reader.ReadStartElement ();
-                       reader.MoveToContent ();
-
-                       while (reader.NodeType != XmlNodeType.EndElement)
-                       {
-                               if (reader.NodeType == XmlNodeType.Element)
-                               {
-                                       DataTable t = GetTable (reader.LocalName);
-                                       if (t != null)
-                                               LoadBeforeTable(t, reader);
-                                       else
-                                               throw new DataException (Locale.GetText ("Cannot load diffGram. Table '" + reader.LocalName + "' is missing in the destination dataset"));
-                               }
-                               else
-                                       reader.Skip ();
-                       }
-                       
-                       reader.ReadEndElement ();
-               }                                
-                               
-                                          
-               private void LoadErrors (XmlReader reader) 
-               {
-                       if (reader.IsEmptyElement) {
-                               reader.Skip ();
-                               return;
-                       }
-                       reader.ReadStartElement ();
-                       reader.MoveToContent ();
-
-                       while (reader.NodeType != XmlNodeType.EndElement)
-                       {
-                               if (reader.NodeType == XmlNodeType.Element)
-                               {
-                                       DataRow Row = null;
-               
-                                       // find the row in 'current' section
-                                       
-                                       string id = reader.GetAttribute ("id", XmlConstants.DiffgrNamespace);
-                                       
-                                       if (id != null)
-                                               Row = (DataRow) ErrorRows [id];
-               
-                                       if (reader.IsEmptyElement) continue;
-                                       reader.ReadStartElement ();
-                                       while (reader.NodeType != XmlNodeType.EndElement)
-                                       {
-                                               if (reader.NodeType == XmlNodeType.Element) {
-                                                       string error = reader.GetAttribute ("Error", XmlConstants.DiffgrNamespace);
-                                                       Row.SetColumnError (reader.LocalName, error);
-                                               }
-                                               reader.Read ();
-                                       }
-                               }
-                               else
-                                       reader.Skip ();
-                       }
-                       reader.ReadEndElement ();
-               }
-
-               private void LoadColumns (DataTable Table, DataRow Row, 
-                       XmlReader reader, DataRowVersion loadType)
-               {
-                       // attributes
-                       LoadColumnAttributes (Table, Row, reader, loadType);
-                       LoadColumnChildren (Table, Row, reader, loadType);
-               }
-
-               private void LoadColumnAttributes (DataTable Table, DataRow Row,
-                       XmlReader reader, DataRowVersion loadType)
-               {
-                       if (!reader.HasAttributes // this check will be faster
-                               || !reader.MoveToFirstAttribute ())
-                               return;
-                       do {
-                               switch (reader.NamespaceURI) {
-                               case XmlConstants.XmlnsNS:
-                               case XmlConstants.XmlNS:
-                               case XmlConstants.DiffgrNamespace:
-                               case XmlConstants.MsdataNamespace:
-                               case XmlConstants.MspropNamespace:
-                               case XmlSchema.Namespace:
-                                       continue;
-                               }
-                               DataColumn c = Table.Columns [XmlHelper.Decode (reader.LocalName)];
-                               if (c == null ||
-                                       c.ColumnMapping != MappingType.Attribute)                                       continue;
-                               if (c.Namespace == null && reader.NamespaceURI == String.Empty ||
-                                       c.Namespace == reader.NamespaceURI) {
-                                       object data = XmlDataLoader.StringToObject (c.DataType, reader.Value);
-                                       if (loadType == DataRowVersion.Current)
-                                               Row [c] = data;
-                                       else
-                                               Row.SetOriginalValue (c.ColumnName, data);
-                               } // otherwise just ignore as well as unknown elements.
-                       } while (reader.MoveToNextAttribute ());
-                       reader.MoveToElement ();
-               }
-
-               private void LoadColumnChildren (DataTable Table, DataRow Row,
-                       XmlReader reader, DataRowVersion loadType) 
-               {
-                       // children
-                       if (reader.IsEmptyElement) {
-                               reader.Skip ();
-                               return;
-                       }
-                       reader.ReadStartElement ();
-                       reader.MoveToContent ();
-                       
-                       while (reader.NodeType != XmlNodeType.EndElement)
-                       {
-                               if (reader.NodeType != XmlNodeType.Element) { reader.Read (); continue; }
-                               
-                               string colName = XmlHelper.Decode (reader.LocalName);
-                               if (Table.Columns.Contains (colName)) 
-                               {
-                                       object data = XmlDataLoader.StringToObject (Table.Columns[colName].DataType, reader.ReadString ());
-                                       
-                                       if (loadType == DataRowVersion.Current) Row [colName] = data;
-                                       else Row.SetOriginalValue (colName, data);
-                                       reader.Read ();
-                               }
-                               else 
-                               {
-                                       DataTable t = GetTable (reader.LocalName);
-                                       if (t != null) {
-                                               if (loadType == DataRowVersion.Original)
-                                                       LoadBeforeTable (t, reader);
-                                               else if (loadType == DataRowVersion.Current)
-                                                       LoadCurrentTable (t, reader);
-                                       } else
-                                               reader.Skip ();
-                               }
-                       }
-                       
-                       reader.ReadEndElement ();
-               }
-
-               private void LoadBeforeTable (DataTable Table, XmlReader reader) 
-               {
-                       string id = reader.GetAttribute ("id", XmlConstants.DiffgrNamespace);
-                       string rowOrder = reader.GetAttribute ("rowOrder", XmlConstants.MsdataNamespace);
-                       DataRow Row = (DataRow) DiffGrRows [id];
-                       
-                       if (Row == null)
-                       {
-                               // Deleted row
-                               Row = Table.NewRow ();
-                               LoadColumns (Table, Row, reader, DataRowVersion.Current);
-                               Table.Rows.InsertAt (Row, int.Parse (rowOrder));
-                               Row.AcceptChanges ();
-                               Row.Delete ();
-                       }
-                       else
-                       {
-                               LoadColumns (Table, Row, reader, DataRowVersion.Original);
-                       }
-               }
-
-               private void LoadCurrentTable (DataTable Table, XmlReader reader) 
-               {
-                       DataRowState state;
-                       DataRow Row = Table.NewRow ();
-
-                       string id = reader.GetAttribute  ("id", XmlConstants.DiffgrNamespace);
-                       string error = reader.GetAttribute ("hasErrors");
-                       string changes = reader.GetAttribute ("hasChanges", XmlConstants.DiffgrNamespace);
-                       
-                       if (changes != null)
-                       {
-                               if (string.Compare (changes, "modified", true, CultureInfo.InvariantCulture) == 0) {
-                                       DiffGrRows.Add (id, Row); // for later use
-                                       state = DataRowState.Modified;
-                               }
-                               else if (string.Compare (changes, "inserted", true, CultureInfo.InvariantCulture) == 0) {
-                                       state = DataRowState.Added;
-                               }
-                               else
-                                       throw new InvalidOperationException ("Invalid row change state");
-                       }
-                       else
-                               state = DataRowState.Unchanged;
-                       
-                       // If row had errors add row to hashtable for later use
-                       if (error != null && string.Compare (error, "true", true, CultureInfo.InvariantCulture) == 0)
-                               ErrorRows.Add (id, Row);
-               
-                       LoadColumns (Table, Row, reader, DataRowVersion.Current);
-                       Table.Rows.Add (Row);
-                       
-                       if (state != DataRowState.Added)
-                               Row.AcceptChanges ();
-               }
-
-               DataTable GetTable (string name)
-               {
-                       name = XmlConvert.DecodeName (name);
-                       if (DSet != null) 
-                               return DSet.Tables [name];
-                       else if (name == table.TableName) 
-                               return table;
-                       else
-                               return null;
-               }
-
-
-               #endregion // Private methods
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlHelper.cs b/mcs/class/System.Data/System.Data/XmlHelper.cs
deleted file mode 100644 (file)
index d55a651..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-// 
-// System.Data/XmlHelper.cs
-//
-// Author:
-//   Senganal T <tsenganal@novell.com>
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-using System;
-using System.Xml;
-using System.Collections;
-
-internal class XmlHelper {
-
-       static Hashtable localSchemaNameCache = new Hashtable ();
-       static Hashtable localXmlNameCache = new Hashtable ();
-
-       internal static string Decode (string xmlName)
-       {
-               string s = (string) localSchemaNameCache [xmlName];
-               if (s == null) {
-                       s = XmlConvert.DecodeName (xmlName);
-                       localSchemaNameCache [xmlName] = s;
-               }
-               return s;
-       }
-
-       internal static string Encode (string schemaName)
-       {
-               string s = (string) localXmlNameCache [schemaName];
-               if (s == null) {
-                       s = XmlConvert.EncodeLocalName (schemaName);
-                       localXmlNameCache [schemaName] = s;
-               }
-               return s;
-       }
-
-       internal static void ClearCache ()
-       {
-               localSchemaNameCache.Clear ();
-               localXmlNameCache.Clear ();
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlReadMode.cs b/mcs/class/System.Data/System.Data/XmlReadMode.cs
deleted file mode 100644 (file)
index 0047f87..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Data.XmlReadMode.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Specifies how to read XML data and a relational schema into a DataSet.
-       /// </summary>
-       public enum XmlReadMode
-       {
-               Auto = 0,
-               ReadSchema = 1,
-               IgnoreSchema = 2,
-               InferSchema = 3,
-               DiffGram = 4,
-               InferTypedSchema=6,
-               Fragment =5
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs b/mcs/class/System.Data/System.Data/XmlSchemaDataImporter.cs
deleted file mode 100644 (file)
index 141ac9e..0000000
+++ /dev/null
@@ -1,1560 +0,0 @@
-//
-// XmlSchemaDataImporter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// (C)2004 Novell Inc.
-//
-//
-// ***** The design note became somewhat obsolete. Should be rewritten. *****
-//
-// * Design Notes
-//
-// ** Abstract
-//
-//     This class is used to import an XML Schema into a DataSet schema.
-//
-//     Only XmlReader is acceptable as the input to the class.
-//     This class is not expected to read XML Schema multi time.
-//
-// ** Targetable Schema Components
-//
-//     Only global global elements that hold complex type are converted 
-//     into a table. 
-//     <del>
-//     The components of the type of the element are subsequently converted
-//     into a table, BUT there is an exception. As for "DataSet elements",
-//     the type is just ignored (see "DataSet Element definition" below).
-//     </del><ins>
-//     The components of the type of the element are subsequently converted
-//     into a table. As for "DataSet elements", its complex type is also 
-//     handled.
-//     </ins>
-//
-//     Unused complex types are never be converted.
-//
-//     Global simple types and global attributes are never converted.
-//     They cannot be a table.
-//     Local complex types are also converted into a table.
-//
-//     Local elements are converted into either a table or a column in
-//     the "context DataTable". Simple-typed element is not always converted
-//     into a DataColumn; if maxOccurs > 1, it will be converted as a table.
-//
-// ** Name Convention
-//
-//     Ignore this section. Microsoft.NET was buggy enough to confuse
-//     against these name conflicts.
-//
-//     Since local complex types are anonymous, we have to name for each
-//     component. Thus, and since complex types and elements can have the 
-//     same name each other, we have to manage a table for mappings from 
-//     a name to a component. The names must be also used in DataRelation
-//     definitions correctly.
-//
-// ** DataSet element definition
-//
-//     "DataSet element" is 1) such element that has an attribute 
-//     msdata:IsDataSet (where prefix "msdata" is bound to 
-//     urn:schemas-microsoft-com:xml-msdata), or 2) the only one
-//     element definition in the schema.
-//
-//     There is another complicated rule. 1) If there is only one element EL 
-//     in the schema, and 2) if the type of EL is complex named CT, and 3)
-//     the content of the CT is a group base, and 4) the group base contains 
-//     an element EL2, and finally 5) if EL2 is complex, THEN the element is
-//     the DataSet element.
-//
-//     Only the first global element that matches the condition above is
-//     regarded as DataSet element (by necessary design or just a bug?) 
-//     instead of handling as an error.
-//
-//     All global elements are considered as an alternative in the dataset
-//     element.
-//
-//     For local elements, msdata:IsDataSet are just ignored.
-//
-// ** Importing Complex Types as Columns
-//
-//     When an xs:element is going to be mapped, its complex type (remember
-//     that only complex-typed elements are targettable) are expanded to
-//     DataColumn.
-//
-//     DataColumn has a property MappingType that shows whether this column
-//      came from attribute or element.
-//
-//     [Question: How about MappingType.Simple? How is it used?]
-//
-//     Additionally, for particle elements, it might also create another
-//     DataTable (but for the particle elements in context DataTable, it
-//     will create an index to the new table).
-//
-//     For group base particles (XmlSchemaGroupBase; sequence, choice, all)
-//     each component in those groups are mapped to a column. Even if you
-//     import "choice" or "all" components, DataSet.WriteXmlSchema() will
-//     output them just as a "sequence".
-//
-//     Columns cannot be added directly to current context DataTable; they
-//     need to be added after processing all the columns, because they may
-//     have msdata:Ordinal attribute that specifies the order of the columns
-//     in the DataTable.
-//
-//     "Nested elements" are not allowed. (Clarification required?)
-//
-// ** Identity Constraints and DataRelations
-//
-// *** DataRelations from element identity constraints
-//
-//     Only constraints on "DataSet element" is considered. All other
-//     constraint definitions are ignored. Note that it is DataSet that has
-//     the property Relations (of type DataRelationCollection).
-//
-//     xs:key and xs:unique are handled as the same (then both will be
-//     serialized as xs:unique).
-//
-//     The XPath expressions in the constraints are strictly limited; they
-//     are expected to be expandable enough to be mappable for each
-//
-//             * selector to "any_valid_XPath/is/OK/blah" 
-//               where "blah" is one of the DataTable name. It looks that
-//               only the last QName section is significant and any heading
-//               XPath step is OK (even if the mapped node does not exist).
-//             * field to QName that is mapped to DataColumn in the DataTable
-//               (even ./QName is not allowed)
-//
-// *** DataRelations from annotations
-//
-//     See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/_mapping_relationship_specified_for_nested_elements.asp and http://msdn.microsoft.com/library/en-us/cpguide/html/_specifying_relationship_between_elements_with_no_nesting.asp
-//
-// ** Informative References
-//
-// Generating DataSet Relational Structure from XML Schema (XSD)
-// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/_generating_dataset_relational_structure_from_xsd.asp
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Data;
-using System.Data.Common;
-using System.Globalization;
-using System.Xml;
-using System.Xml.Schema;
-
-
-namespace System.Data
-{
-       internal class TableStructureCollection : CollectionBase
-       {
-               public void Add (TableStructure table)
-               {
-                       List.Add (table);
-               }
-
-               public TableStructure this [int i] {
-                       get { return List [i] as TableStructure; }
-               }
-
-               public TableStructure this [string name] {
-                       get {
-                               foreach (TableStructure ts in List)
-                                       if (ts.Table.TableName == name)
-                                               return ts;
-                               return null;
-                       }
-               }
-       }
-
-       internal class RelationStructureCollection : CollectionBase
-       {
-               public void Add (RelationStructure rel)
-               {
-                       List.Add (rel);
-               }
-
-               public RelationStructure this [int i] {
-                       get { return List [i] as RelationStructure; }
-               }
-
-               public RelationStructure this [string parent, string child] {
-                       get {
-                               foreach (RelationStructure rel in List)
-                                       if (rel.ParentTableName == parent && rel.ChildTableName == child)
-                                               return rel;
-                               return null;
-                       }
-               }
-       }
-       
-       internal class TableStructure
-       {
-               public TableStructure (DataTable table)
-               {
-                       this.Table = table;
-               }
-
-               // The columns and orders which will be added to the context
-               // table (See design notes; Because of the ordinal problem)
-               public DataTable Table;
-               public Hashtable OrdinalColumns = new Hashtable ();
-               public ArrayList NonOrdinalColumns = new ArrayList ();
-               public DataColumn PrimaryKey;
-
-               public bool ContainsColumn (string name)
-               {
-                       foreach (DataColumn col in NonOrdinalColumns)
-                               if (col.ColumnName == name)
-                                       return true;
-                       foreach (DataColumn col in OrdinalColumns.Keys)
-                               if (col.ColumnName == name)
-                                       return true;
-                       return false;
-               }
-       }
-
-       internal class RelationStructure
-       {
-               public string ExplicitName;
-               public string ParentTableName;
-               public string ChildTableName;
-               public string ParentColumnName;
-               public string ChildColumnName;
-               public bool IsNested;
-               public bool CreateConstraint;
-       }
-
-       internal class ConstraintStructure
-       {
-               public readonly string TableName;
-               public readonly string [] Columns;
-               public readonly bool [] IsAttribute;
-               public readonly string ConstraintName;
-               public readonly bool IsPrimaryKey;
-               public readonly string ReferName;
-               public readonly bool IsNested;
-               public readonly bool IsConstraintOnly;
-
-               public ConstraintStructure (string tname, string [] cols, bool [] isAttr, string cname, bool isPK, string refName, bool isNested, bool isConstraintOnly)
-               {
-                       TableName = tname;
-                       Columns = cols;
-                       IsAttribute = isAttr;
-                       ConstraintName = XmlHelper.Decode (cname);
-                       IsPrimaryKey = isPK;
-                       ReferName = refName;
-                       IsNested = isNested;
-                       IsConstraintOnly = isConstraintOnly;
-               }
-       }
-
-       internal class XmlSchemaDataImporter
-       {
-               static readonly XmlSchemaDatatype schemaIntegerType;
-               static readonly XmlSchemaDatatype schemaDecimalType;
-               static readonly XmlSchemaComplexType schemaAnyType;
-
-               static XmlSchemaDataImporter ()
-               {
-                       XmlSchema s = new XmlSchema ();
-                       XmlSchemaAttribute a = new XmlSchemaAttribute ();
-                       a.Name = "foo";
-                       a.SchemaTypeName = new XmlQualifiedName ("integer", XmlSchema.Namespace);
-                       s.Items.Add (a);
-                       XmlSchemaAttribute b = new XmlSchemaAttribute ();
-                       b.Name = "bar";
-                       b.SchemaTypeName = new XmlQualifiedName ("decimal", XmlSchema.Namespace);
-                       s.Items.Add (b);
-                       XmlSchemaElement e = new XmlSchemaElement ();
-                       e.Name = "bar";
-                       s.Items.Add (e);
-                       s.Compile (null);
-                       schemaIntegerType = ((XmlSchemaSimpleType) a.AttributeSchemaType).Datatype;
-                       schemaDecimalType = ((XmlSchemaSimpleType) b.AttributeSchemaType).Datatype;
-                       schemaAnyType = e.ElementSchemaType as XmlSchemaComplexType;
-               }
-
-               #region Fields
-
-               DataSet dataset;
-               bool forDataSet;
-               XmlSchema schema;
-
-               ArrayList relations = new ArrayList ();
-               Hashtable reservedConstraints = new Hashtable ();
-
-               // such element that has an attribute msdata:IsDataSet="true"
-               XmlSchemaElement datasetElement;
-
-               // choice alternatives in the "dataset element"
-               ArrayList topLevelElements = new ArrayList ();
-
-               // import target elements
-               ArrayList targetElements = new ArrayList ();
-
-               TableStructure currentTable;
-       
-               // TODO: Do we need a collection here?
-               TableAdapterSchemaInfo currentAdapter;
-               #endregion
-
-               // .ctor()
-
-               public XmlSchemaDataImporter (DataSet dataset, XmlReader reader, bool forDataSet)
-               {
-                       this.dataset = dataset;
-                       this.forDataSet = forDataSet;
-                       dataset.DataSetName = "NewDataSet"; // Initialize always
-                       schema = XmlSchema.Read (reader, null);
-                       if (reader.NodeType == XmlNodeType.EndElement && reader.LocalName == "schema" && reader.NamespaceURI == XmlSchema.Namespace)
-                               reader.ReadEndElement ();
-                       schema.Compile (null);
-               }
-
-               // properties
-               internal TableAdapterSchemaInfo CurrentAdapter {
-                       get { return currentAdapter; }
-               }
-               
-               // methods
-
-               public void Process ()
-               {
-                       if (schema.Id != null)
-                               dataset.DataSetName = schema.Id; // default. Overridable by "DataSet element"
-                       dataset.Namespace = schema.TargetNamespace;
-
-                       // Find dataset element
-                       foreach (XmlSchemaObject obj in schema.Items) {
-                               XmlSchemaElement el = obj as XmlSchemaElement;
-                               if (el != null) {
-                                       if (datasetElement == null &&
-                                               IsDataSetElement (el))
-                                               datasetElement = el;
-                                       if (el.ElementSchemaType is XmlSchemaComplexType &&
-                                           el.ElementSchemaType != schemaAnyType)
-                                               targetElements.Add (obj);
-                               }
-                       }
-
-                       // make reservation of identity constraints
-                       if (datasetElement != null) {
-                               // keys/uniques.
-                               foreach (XmlSchemaObject obj in datasetElement.Constraints)
-                                       if (! (obj is XmlSchemaKeyref))
-                                               ReserveSelfIdentity ((XmlSchemaIdentityConstraint) obj);
-                               // keyrefs.
-                               foreach (XmlSchemaObject obj in datasetElement.Constraints)
-                                       if (obj is XmlSchemaKeyref)
-                                               ReserveRelationIdentity (datasetElement, (XmlSchemaKeyref) obj);
-                       }
-
-                       foreach (XmlSchemaObject obj in schema.Items) {
-                               if (obj is XmlSchemaElement) {
-                                       XmlSchemaElement el = obj as XmlSchemaElement;
-                                       if (el.ElementSchemaType is XmlSchemaComplexType &&
-                                           el.ElementSchemaType != schemaAnyType)
-                                               targetElements.Add (obj);
-                               }
-                       }
-
-                       // This collection will grow up while processing elements.
-                       int globalElementCount = targetElements.Count;
-
-                       for (int i = 0; i < globalElementCount; i++)
-                               ProcessGlobalElement ((XmlSchemaElement) targetElements [i]);
-
-                       // Rest are local elements.
-                       for (int i = globalElementCount; i < targetElements.Count; i++)
-                               ProcessDataTableElement ((XmlSchemaElement) targetElements [i]);
-
-                       // Handle relation definitions written as xs:annotation.
-                       // See detail: http://msdn.microsoft.com/library/shared/happyUrl/fnf_msdn.asp?Redirect=%22http://msdn.microsoft.com/404/default.asp%22
-                       foreach (XmlSchemaObject obj in schema.Items)
-                               if (obj is XmlSchemaAnnotation)
-                                       HandleAnnotations ((XmlSchemaAnnotation) obj, false);
-
-                       if (datasetElement != null) {
-                               // Handle constraints in the DataSet element. First keys.
-                               foreach (XmlSchemaObject obj in datasetElement.Constraints)
-                                       if (! (obj is XmlSchemaKeyref))
-                                               ProcessSelfIdentity (reservedConstraints [obj] as ConstraintStructure);
-                               // Then keyrefs.
-                               foreach (XmlSchemaObject obj in datasetElement.Constraints)
-                                       if (obj is XmlSchemaKeyref)
-                                               ProcessRelationIdentity (datasetElement, reservedConstraints [obj] as ConstraintStructure);
-                       }
-
-                       foreach (RelationStructure rs in this.relations)
-                               dataset.Relations.Add (GenerateRelationship (rs));
-               }
-
-               private bool IsDataSetElement (XmlSchemaElement el)
-               {
-                       if (el.UnhandledAttributes != null) {
-                               foreach (XmlAttribute attr in el.UnhandledAttributes) {
-                                       if (attr.LocalName == "IsDataSet" &&
-                                               attr.NamespaceURI == XmlConstants.MsdataNamespace) {
-                                               switch (attr.Value) {
-                                               case "true": // case sensitive
-                                                       return true;
-                                               case "false":
-                                                       break;
-                                               default:
-                                                       throw new DataException (String.Format ("Value {0} is invalid for attribute 'IsDataSet'.", attr.Value));
-                                               }
-                                       }
-                               }
-                       }
-
-                       if (schema.Elements.Count != 1)
-                               return false;
-                       if (!(el.SchemaType is XmlSchemaComplexType))
-                               return false;
-                       XmlSchemaComplexType ct = (XmlSchemaComplexType) el.SchemaType;
-                       if (ct.AttributeUses.Count > 0)
-                               return false;
-                       XmlSchemaGroupBase gb = ct.ContentTypeParticle as XmlSchemaGroupBase;
-                       if (gb == null || gb.Items.Count == 0)
-                               return false;
-                       foreach (XmlSchemaParticle p in gb.Items) {
-                               if (ContainsColumn (p))
-                                       return false;
-                       }
-                       return true;
-               }
-
-               private bool ContainsColumn (XmlSchemaParticle p)
-               {
-                       XmlSchemaElement el = p as XmlSchemaElement;
-                       if (el != null) {
-                               XmlSchemaComplexType ct = null;
-                               ct = el.ElementSchemaType as XmlSchemaComplexType;
-                               if (ct == null || ct == schemaAnyType)
-                                       return true; // column element
-                               if (ct.AttributeUses.Count > 0)
-                                       return false; // table element
-                               if (ct.ContentType == XmlSchemaContentType.TextOnly)
-                                       return true; // column element
-                               else
-                                       return false; // table element
-                       }
-                       XmlSchemaGroupBase gb = p as XmlSchemaGroupBase;
-                       for (int i = 0; i < gb.Items.Count; i++) {
-                               if (ContainsColumn ((XmlSchemaParticle) gb.Items [i]))
-                                       return true;
-                       }
-                       return false;
-               }
-
-               private void ProcessGlobalElement (XmlSchemaElement el)
-               {
-                       // If it is already registered (by resolving reference
-                       // in previously-imported elements), just ignore.
-                       if (dataset.Tables.Contains (el.QualifiedName.Name))
-                               return;
-
-                       // If type is not complex, just skip this element
-                       if (! (el.ElementSchemaType is XmlSchemaComplexType && el.ElementSchemaType != schemaAnyType))
-                               return;
-
-                       if (IsDataSetElement (el)) {
-                               ProcessDataSetElement (el);
-                               return;
-                       }
-                       else
-                               dataset.Locale = CultureInfo.CurrentCulture;
-
-                       // Register as a top-level element
-                       topLevelElements.Add (el);
-                       // Create DataTable for this element
-                       ProcessDataTableElement (el);
-               }
-
-               private void ProcessDataSetElement (XmlSchemaElement el)
-               {
-                       dataset.DataSetName = el.Name;
-                       this.datasetElement = el;
-
-                       // Search for locale attributes
-                       bool useCurrent = false;
-                       if (el.UnhandledAttributes != null) {
-                               foreach (XmlAttribute attr in el.UnhandledAttributes) {
-                                       if (attr.LocalName == "UseCurrentLocale" &&
-                                               attr.NamespaceURI == XmlConstants.MsdataNamespace)
-                                               useCurrent = true;
-
-                                       if (attr.NamespaceURI == XmlConstants.MspropNamespace && 
-                                           !dataset.ExtendedProperties.ContainsKey(attr.LocalName))
-                                       {
-                                               dataset.ExtendedProperties.Add (attr.LocalName, attr.Value);
-                                               continue;
-                                       }
-                                       
-                                       if (attr.LocalName == "Locale" &&
-                                               attr.NamespaceURI == XmlConstants.MsdataNamespace) {
-                                               CultureInfo ci = new CultureInfo (attr.Value);
-                                               dataset.Locale = ci;
-                                       }
-                               }
-                       }
-                       if (!useCurrent && !dataset.LocaleSpecified) // then set current culture instance _explicitly_
-                               dataset.Locale = CultureInfo.CurrentCulture;
-
-                       // Process content type particle (and create DataTable)
-                       XmlSchemaComplexType ct = null;
-                       ct = el.ElementSchemaType as XmlSchemaComplexType;
-                       XmlSchemaParticle p = ct != null ? ct.ContentTypeParticle : null;
-                       if (p != null)
-                               HandleDataSetContentTypeParticle (p);
-               }
-
-               private void HandleDataSetContentTypeParticle (XmlSchemaParticle p)
-               {
-                       XmlSchemaElement el = p as XmlSchemaElement;
-                       if (el != null) {
-                               if (el.ElementSchemaType is XmlSchemaComplexType && el.RefName != el.QualifiedName)
-                                       ProcessDataTableElement (el);
-                       }
-                       else if (p is XmlSchemaGroupBase) {
-                               foreach (XmlSchemaParticle pc in ((XmlSchemaGroupBase) p).Items)
-                                       HandleDataSetContentTypeParticle (pc);
-                       }
-               }
-
-               private void ProcessDataTableElement (XmlSchemaElement el)
-               {
-                       string tableName = XmlHelper.Decode (el.QualifiedName.Name);
-                       // If it is already registered, just ignore.
-                       if (dataset.Tables.Contains (tableName))
-                               return;
-
-                       DataTable table = new DataTable (tableName);
-                       table.Namespace = el.QualifiedName.Namespace;
-                       TableStructure oldTable = currentTable;
-                       currentTable = new TableStructure (table);
-
-                       dataset.Tables.Add (table);
-
-                       // Find Locale
-                       if (el.UnhandledAttributes != null) {
-                               foreach (XmlAttribute attr in el.UnhandledAttributes) {
-
-                                       if (attr.NamespaceURI == XmlConstants.MspropNamespace)
-                                       {
-                                               table.ExtendedProperties.Add (attr.LocalName, attr.Value);
-                                               continue;
-                                       }
-
-                                       if (attr.LocalName == "Locale" &&
-                                               attr.NamespaceURI == XmlConstants.MsdataNamespace)
-                                               table.Locale = new CultureInfo (attr.Value);
-                               }
-                       }
-
-                       // Handle complex type (NOTE: It is (or should be)
-                       // impossible the type is other than complex type).
-                       XmlSchemaComplexType ct = null;
-                       ct = (XmlSchemaComplexType) el.ElementSchemaType;
-
-                       // Handle attributes
-                       foreach (DictionaryEntry de in ct.AttributeUses)
-                               ImportColumnAttribute ((XmlSchemaAttribute) de.Value);
-
-                       // Handle content type particle
-                       if (ct.ContentTypeParticle is XmlSchemaElement)
-                               ImportColumnElement (el, (XmlSchemaElement) ct.ContentTypeParticle);
-                       else if (ct.ContentTypeParticle is XmlSchemaGroupBase)
-                               ImportColumnGroupBase (el, (XmlSchemaGroupBase) ct.ContentTypeParticle);
-                       // else if null then do nothing.
-
-                       // Handle simple content
-                       switch (ct.ContentType) {
-                       case XmlSchemaContentType.TextOnly:
-//                     case XmlSchemaContentType.Mixed:
-                               // LAMESPEC: When reading from XML Schema, it maps to "_text", while on the data inference, it is mapped to "_Text" (case ignorant).
-                               string simpleName = el.QualifiedName.Name + "_text";
-                               DataColumn simple = new DataColumn (simpleName);
-                               simple.Namespace = el.QualifiedName.Namespace;
-                               simple.AllowDBNull = (el.MinOccurs == 0);
-                               simple.ColumnMapping = MappingType.SimpleContent;
-                               simple.DataType = ConvertDatatype (ct.Datatype);
-                               currentTable.NonOrdinalColumns.Add (simple);
-                               break;
-                       }
-
-                       // add columns to the table in specified order 
-                       // (by msdata:Ordinal attributes)
-                       SortedList sd = new SortedList ();
-                       foreach (DictionaryEntry de in currentTable.OrdinalColumns)
-                               sd.Add (de.Value, de.Key);
-                       foreach (DictionaryEntry de in sd)
-                               table.Columns.Add ((DataColumn) de.Value);
-                       foreach (DataColumn dc in currentTable.NonOrdinalColumns)
-                               table.Columns.Add (dc);
-
-                       currentTable = oldTable;
-               }
-
-               private DataRelation GenerateRelationship (RelationStructure rs)
-               {
-                       DataTable ptab = dataset.Tables [rs.ParentTableName];
-                       DataTable ctab = dataset.Tables [rs.ChildTableName];
-
-                       DataRelation rel ;
-                       string name = rs.ExplicitName != null ? rs.ExplicitName : XmlHelper.Decode (ptab.TableName) + '_' + XmlHelper.Decode (ctab.TableName);
-
-                       // Annotation Relations belonging to a DataSet can contain multiple colnames
-                       // in parentkey and childkey.
-                       if (datasetElement != null) {
-                               String[] pcolnames = rs.ParentColumnName.Split (null);
-                               String[] ccolnames = rs.ChildColumnName.Split (null);
-
-                               DataColumn[] pcol = new DataColumn [pcolnames.Length];
-                               for (int i=0; i<pcol.Length; ++i)
-                                       pcol [i] = ptab.Columns [XmlHelper.Decode (pcolnames [i])];
-
-                               DataColumn[] ccol = new DataColumn [ccolnames.Length];
-                               for (int i=0; i < ccol.Length; ++i) {
-                                       ccol [i] = ctab.Columns [XmlHelper.Decode (ccolnames [i])];
-                                       if (ccol [i] == null)
-                                               ccol [i] = CreateChildColumn (pcol [i], ctab);
-                               }
-                               rel = new DataRelation (name, pcol, ccol, rs.CreateConstraint);
-                       } else {
-                               DataColumn pcol = ptab.Columns [XmlHelper.Decode (rs.ParentColumnName)];
-                               DataColumn ccol = ctab.Columns [XmlHelper.Decode (rs.ChildColumnName)];
-                               if (ccol == null) 
-                                       ccol = CreateChildColumn (pcol, ctab);
-                               rel = new DataRelation (name, pcol, ccol, rs.CreateConstraint);
-                       }
-                       rel.Nested = rs.IsNested;
-                       if (rs.CreateConstraint)
-                               rel.ParentTable.PrimaryKey = rel.ParentColumns;
-                       return rel;
-               }
-
-               private DataColumn CreateChildColumn (DataColumn parentColumn, DataTable childTable)
-               {
-                       DataColumn col = childTable.Columns.Add (parentColumn.ColumnName, 
-                                                               parentColumn.DataType);
-                       col.Namespace = String.Empty;
-                       col.ColumnMapping = MappingType.Hidden;
-                       return col;
-               }
-
-               private void ImportColumnGroupBase (XmlSchemaElement parent, XmlSchemaGroupBase gb)
-               {
-                       foreach (XmlSchemaParticle p in gb.Items) {
-                               XmlSchemaElement el = p as XmlSchemaElement;
-                               if (el != null)
-                                       ImportColumnElement (parent, el);
-                               else if (p is XmlSchemaGroupBase)
-                                       ImportColumnGroupBase (parent, (XmlSchemaGroupBase) p);
-                               // otherwise p is xs:any
-                       }
-               }
-
-               private XmlSchemaDatatype GetSchemaPrimitiveType (object type)
-               {
-                       if (type is XmlSchemaComplexType)
-                               return null; // It came here, so that maybe it is xs:anyType
-                       XmlSchemaDatatype dt = type as XmlSchemaDatatype;
-                       if (dt == null && type != null)
-                               dt = ((XmlSchemaSimpleType) type).Datatype;
-                       return dt;
-               }
-
-               // Note that this column might be Hidden
-               private void ImportColumnAttribute (XmlSchemaAttribute attr)
-               {
-                       DataColumn col = new DataColumn ();
-                       col.ColumnName = attr.QualifiedName.Name;
-                       col.Namespace = attr.QualifiedName.Namespace;
-                       XmlSchemaDatatype dt = null;
-                       dt = GetSchemaPrimitiveType (((XmlSchemaSimpleType) attr.AttributeSchemaType).Datatype);
-                       // This complicated check comes from the fact that
-                       // MS.NET fails to map System.Object to anyType (that
-                       // will cause ReadTypedObject() fail on XmlValidatingReader).
-                       // ONLY In DataSet context, we set System.String for
-                       // simple ur-type.
-                       col.DataType = ConvertDatatype (dt);
-                       if (col.DataType == typeof (object))
-                               col.DataType = typeof (string);
-                       // When attribute use="prohibited", then it is regarded as 
-                       // Hidden column.
-                       if (attr.Use == XmlSchemaUse.Prohibited)
-                               col.ColumnMapping = MappingType.Hidden;
-                       else {
-                               col.ColumnMapping = MappingType.Attribute;
-                               col.DefaultValue = GetAttributeDefaultValue (attr);
-                       }
-                       if (attr.Use == XmlSchemaUse.Required)
-                               col.AllowDBNull = false;
-
-                       FillFacet (col, attr.AttributeSchemaType as XmlSchemaSimpleType);
-
-                       // Call this method after filling the name
-                       ImportColumnMetaInfo (attr, attr.QualifiedName, col);
-                       AddColumn (col);
-               }
-
-               private void ImportColumnElement (XmlSchemaElement parent, XmlSchemaElement el)
-               {
-                       // FIXME: element nest check
-
-                       DataColumn col = new DataColumn ();
-                       col.DefaultValue = GetElementDefaultValue (el);
-                       col.AllowDBNull = (el.MinOccurs == 0);
-
-                       if (el.ElementSchemaType is XmlSchemaComplexType && el.ElementSchemaType != schemaAnyType)
-                               FillDataColumnComplexElement (parent, el, col);
-                       else if (el.MaxOccurs != 1)
-                               FillDataColumnRepeatedSimpleElement (parent, el, col);
-                       else
-                               FillDataColumnSimpleElement (el, col);
-               }
-
-               // common process for element and attribute
-               private void ImportColumnMetaInfo (XmlSchemaAnnotated obj, XmlQualifiedName name, DataColumn col)
-               {
-                       if (obj.UnhandledAttributes != null) {
-                               foreach (XmlAttribute attr in obj.UnhandledAttributes) {
-                                       if (attr.NamespaceURI == XmlConstants.MspropNamespace)
-                                       {
-                                               col.ExtendedProperties.Add (attr.LocalName, attr.Value);
-                                               continue;
-                                       }
-
-                                       if (attr.NamespaceURI != XmlConstants.MsdataNamespace)
-                                               continue;
-                                       switch (attr.LocalName) {
-                                       case XmlConstants.Caption:
-                                               col.Caption = attr.Value;
-                                               break;
-                                       case XmlConstants.DataType:
-                                               col.DataType = Type.GetType (attr.Value);
-                                               break;
-                                       case XmlConstants.AutoIncrement:
-                                               col.AutoIncrement = bool.Parse (attr.Value);
-                                               break;
-                                       case XmlConstants.AutoIncrementSeed:
-                                               col.AutoIncrementSeed = int.Parse (attr.Value);
-                                               break;
-                                       case XmlConstants.AutoIncrementStep:
-                                               col.AutoIncrementStep = int.Parse (attr.Value);
-                                               break;
-                                       case XmlConstants.ReadOnly:
-                                               col.ReadOnly = XmlConvert.ToBoolean (attr.Value);
-                                               break;
-                                       case XmlConstants.Ordinal:
-                                               int ordinal = int.Parse (attr.Value);
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               private void FillDataColumnComplexElement (XmlSchemaElement parent, XmlSchemaElement el, DataColumn col)
-               {
-                       if (targetElements.Contains (el))
-                               return; // do nothing
-
-                       string elName = XmlHelper.Decode (el.QualifiedName.Name);
-                       if (elName == dataset.DataSetName)
-                               // Well, why it is ArgumentException :-?
-                               throw new ArgumentException ("Nested element must not have the same name as DataSet's name.");
-
-                       if (el.Annotation != null)
-                               HandleAnnotations (el.Annotation, true);
-                       // If xsd:keyref xsd:key for this table exists, then don't add
-                       // relation here manually.
-                       else if (!DataSetDefinesKey (elName)) {
-                               AddParentKeyColumn (parent, el, col);
-
-                               RelationStructure rel = new RelationStructure ();
-                               rel.ParentTableName = XmlHelper.Decode (parent.QualifiedName.Name);
-                               rel.ChildTableName = elName;
-                               rel.ParentColumnName = col.ColumnName;
-                               rel.ChildColumnName = col.ColumnName;
-                               rel.CreateConstraint = true;
-                               rel.IsNested = true;
-                               relations.Add (rel);
-                       }
-
-                       // If the element is not referenced one, the element will be handled later.
-                       if (el.RefName == XmlQualifiedName.Empty)
-                               ProcessDataTableElement (el);
-
-               }
-
-               private bool DataSetDefinesKey (string name)
-               {
-                       foreach (ConstraintStructure c in reservedConstraints.Values)
-                               if (c.TableName == name && (c.IsPrimaryKey || c.IsNested))
-                                       return true;
-                       return false;
-               }
-
-               private void AddParentKeyColumn (XmlSchemaElement parent, XmlSchemaElement el, DataColumn col)
-               {
-                       // check existing primary key
-                       if (currentTable.Table.PrimaryKey.Length > 0)
-                               throw new DataException (String.Format ("There is already primary key columns in the table \"{0}\".", currentTable.Table.TableName));
-
-                       if (currentTable.PrimaryKey != null) {
-                               // fill pk column info and return
-                               col.ColumnName = currentTable.PrimaryKey.ColumnName;
-                               col.ColumnMapping = currentTable.PrimaryKey.ColumnMapping;
-                               col.Namespace = currentTable.PrimaryKey.Namespace;
-                               col.DataType = currentTable.PrimaryKey.DataType;
-                               col.AutoIncrement = currentTable.PrimaryKey.AutoIncrement;
-                               col.AllowDBNull = currentTable.PrimaryKey.AllowDBNull;
-                               
-                               ImportColumnMetaInfo (el, el.QualifiedName, col);
-                               return;
-                       }
-
-                       // check name identity
-                       string name = XmlHelper.Decode (parent.QualifiedName.Name) + "_Id";
-                       int count = 0;
-                       while (currentTable.ContainsColumn (name))
-                               name = String.Format ("{0}_{1}", name, count++);
-
-                       col.ColumnName = name;
-                       col.ColumnMapping = MappingType.Hidden;
-                       col.Namespace = parent.QualifiedName.Namespace;
-                       col.DataType = typeof (int);
-                       col.AutoIncrement = true;
-                       col.AllowDBNull = false;
-                       ImportColumnMetaInfo (el, el.QualifiedName, col);
-                       
-                       AddColumn (col);
-                       currentTable.PrimaryKey = col;
-               }
-
-               private void FillDataColumnRepeatedSimpleElement (XmlSchemaElement parent, XmlSchemaElement el, DataColumn col)
-               {
-                       if (targetElements.Contains (el))
-                               return; // do nothing
-
-                       AddParentKeyColumn (parent, el, col);
-                       DataColumn pkey = currentTable.PrimaryKey;
-
-                       string elName = XmlHelper.Decode (el.QualifiedName.Name);
-                       string parentName = XmlHelper.Decode (parent.QualifiedName.Name);
-
-                       DataTable dt = new DataTable ();
-                       dt.TableName = elName;
-                       dt.Namespace = el.QualifiedName.Namespace;
-                       // reference key column to parent
-                       DataColumn cc = new DataColumn ();
-                       cc.ColumnName = parentName + "_Id";
-                       cc.Namespace = parent.QualifiedName.Namespace;
-                       cc.ColumnMapping = MappingType.Hidden;
-                       cc.DataType = typeof (int);
-
-                       // repeatable content simple element
-                       DataColumn cc2 = new DataColumn ();
-                       cc2.ColumnName = elName + "_Column";
-                       cc2.Namespace = el.QualifiedName.Namespace;
-                       cc2.ColumnMapping = MappingType.SimpleContent;
-                       cc2.AllowDBNull = false;
-                       cc2.DataType = ConvertDatatype (GetSchemaPrimitiveType (el.ElementSchemaType));
-
-                       dt.Columns.Add (cc2);
-                       dt.Columns.Add (cc);
-                       dataset.Tables.Add (dt);
-
-                       RelationStructure rel = new RelationStructure ();
-                       rel.ParentTableName = parentName;
-                       rel.ChildTableName = dt.TableName;
-                       rel.ParentColumnName = pkey.ColumnName;
-                       rel.ChildColumnName = cc.ColumnName;
-                       rel.IsNested = true;
-                       rel.CreateConstraint = true;
-                       relations.Add (rel);
-               }
-
-               private void FillDataColumnSimpleElement (XmlSchemaElement el, DataColumn col)
-               {
-                       col.ColumnName = XmlHelper.Decode (el.QualifiedName.Name);
-                       col.Namespace = el.QualifiedName.Namespace;
-                       col.ColumnMapping = MappingType.Element;
-                       col.DataType = ConvertDatatype (GetSchemaPrimitiveType (el.ElementSchemaType));
-                       FillFacet (col, el.ElementSchemaType as XmlSchemaSimpleType);
-
-                       ImportColumnMetaInfo (el, el.QualifiedName, col);
-
-                       AddColumn (col);
-               }
-
-               private void AddColumn (DataColumn col)
-               {
-                       if (col.Ordinal < 0)
-                               currentTable.NonOrdinalColumns.Add (col);
-                       else
-                               currentTable.OrdinalColumns.Add (col, col.Ordinal);
-               }
-
-               private void FillFacet (DataColumn col, XmlSchemaSimpleType st)
-               {
-                       if (st == null || st.Content == null)
-                               return;
-
-                       // Handle restriction facets
-
-                       XmlSchemaSimpleTypeRestriction restriction = st == null ? null : st.Content as XmlSchemaSimpleTypeRestriction;
-                       if (restriction == null)
-                               throw new DataException ("DataSet does not suport 'list' nor 'union' simple type.");
-
-                       foreach (XmlSchemaFacet f in restriction.Facets) {
-                               if (f is XmlSchemaMaxLengthFacet)
-                                       // There is no reason why MaxLength is limited to int, except for the fact that DataColumn.MaxLength property is int.
-                                       col.MaxLength = int.Parse (f.Value);
-                       }
-               }
-
-               private Type ConvertDatatype (XmlSchemaDatatype dt)
-               {
-                       if (dt == null)
-                               return typeof (string);
-                       else if (dt.ValueType == typeof (decimal)) {
-                               // LAMESPEC: MSDN documentation says it is based 
-                               // on ValueType. However, in the System.Xml.Schema
-                               // context, xs:integer is mapped to Decimal, while
-                               // in DataSet context it is mapped to Int64.
-                               if (dt == schemaDecimalType)
-                                       return typeof (decimal);
-                               else if (dt == schemaIntegerType)
-                                       return typeof (long);
-                               else
-                                       return typeof (ulong);
-                       }
-                       else
-                               return dt.ValueType;
-               }
-
-               // This method cuts out the local name of the last step from XPath.
-               // It is nothing more than hack. However, MS looks to do similar.
-               private string GetSelectorTarget (string xpath)
-               {
-                       string tableName = xpath;
-                       int index = tableName.LastIndexOf ('/');
-                       // '>' is enough. If XPath [0] = '/', it is invalid. 
-                       // Selector can specify only element axes.
-                       if (index > 0)
-                               tableName = tableName.Substring (index + 1);
-
-                       // Round QName to NSName
-                       index = tableName.LastIndexOf (':');
-                       if (index > 0)
-                               tableName = tableName.Substring (index + 1);
-
-                       return XmlHelper.Decode (tableName);
-               }
-
-               private void ReserveSelfIdentity (XmlSchemaIdentityConstraint ic)
-               {
-                       string tableName = GetSelectorTarget (ic.Selector.XPath);
-
-                       string [] cols = new string [ic.Fields.Count];
-                       bool [] isAttrSpec = new bool [cols.Length];
-
-                       int i = 0;
-                       foreach (XmlSchemaXPath Field in ic.Fields) {
-                               string colName = Field.XPath;
-                               bool isAttr = colName.Length > 0 && colName [0] == '@';
-                               int index = colName.LastIndexOf (':');
-                               if (index > 0)
-                                       colName = colName.Substring (index + 1);
-                               else if (isAttr)
-                                       colName = colName.Substring (1);
-
-                               colName = XmlHelper.Decode (colName);
-                               cols [i] = colName;
-                               isAttrSpec [i] = isAttr;
-                               i++;
-                       }
-                       
-                       bool isPK = false;
-                       // find if there is an attribute with the constraint name
-                       // if not use the XmlSchemaConstraint's name.
-                       string constraintName = ic.Name;
-                       if (ic.UnhandledAttributes != null) {
-                               foreach (XmlAttribute attr in ic.UnhandledAttributes) {
-                                       if (attr.NamespaceURI != XmlConstants.MsdataNamespace)
-                                               continue;
-                                       switch (attr.LocalName) {
-                                       case XmlConstants.ConstraintName:
-                                               constraintName = attr.Value;
-                                               break;
-                                       case XmlConstants.PrimaryKey:
-                                               isPK = bool.Parse(attr.Value);
-                                               break;
-                                       }
-                               }
-                       }
-                       reservedConstraints.Add (ic,
-                               new ConstraintStructure (tableName, cols,
-                                       isAttrSpec, constraintName, isPK, null, false, false));
-               }
-
-               private void ProcessSelfIdentity (ConstraintStructure c)
-               {
-                       // Basic concept came from XmlSchemaMapper.cs
-
-                       string tableName = c.TableName;
-                       
-                       DataTable dt = dataset.Tables [tableName];
-                       if (dt == null) {
-                               if (forDataSet)
-                                       throw new DataException (String.Format ("Invalid XPath selection inside selector. Cannot find: {0}", tableName));
-                               else
-                                       // nonexistent table name. .NET ignores it for DataTable.ReadXmlSchema().
-                                       return;
-                       }
-
-                       DataColumn [] cols = new DataColumn [c.Columns.Length];
-                       for (int i = 0; i < cols.Length; i++) {
-                               string colName = c.Columns [i];
-                               bool isAttr = c.IsAttribute [i];
-                               DataColumn col = dt.Columns [colName];
-                               if (col == null)
-                                       throw new DataException (String.Format ("Invalid XPath selection inside field. Cannot find: {0}", tableName));
-                               if (isAttr && col.ColumnMapping != MappingType.Attribute)
-                                       throw new DataException ("The XPath specified attribute field, but mapping type is not attribute.");
-                               if (!isAttr && col.ColumnMapping != MappingType.Element)
-                                       throw new DataException ("The XPath specified simple element field, but mapping type is not simple element.");
-
-                               cols [i] = dt.Columns [colName];
-                       }
-                       
-                       bool isPK = c.IsPrimaryKey;
-                       string constraintName = c.ConstraintName;
-                       dt.Constraints.Add (new UniqueConstraint (
-                               constraintName, cols, isPK));
-               }
-
-               private void ReserveRelationIdentity (XmlSchemaElement element, XmlSchemaKeyref keyref)
-               {
-                       // Basic concept came from XmlSchemaMapper.cs
-
-                       string tableName = GetSelectorTarget (keyref.Selector.XPath);
-
-                       string [] cols = new string [keyref.Fields.Count];
-                       bool [] isAttrSpec = new bool [cols.Length];
-                       int i = 0;
-                       foreach (XmlSchemaXPath Field in keyref.Fields) {
-                               string colName = Field.XPath;
-                               bool isAttr = colName.Length > 0 && colName [0] == '@';
-                               int index = colName.LastIndexOf (':');
-                               if (index > 0)
-                                       colName = colName.Substring (index + 1);
-                               else if (isAttr)
-                                       colName = colName.Substring (1);
-
-                               colName = XmlHelper.Decode (colName);
-                               cols [i] = colName;
-                               isAttrSpec [i] = isAttr;
-                               i++;
-                       }
-                       string constraintName = keyref.Name;
-                       bool isNested = false;
-                       bool isConstraintOnly = false;
-                       if (keyref.UnhandledAttributes != null) {
-                               foreach (XmlAttribute attr in keyref.UnhandledAttributes) {
-                                       if (attr.NamespaceURI != XmlConstants.MsdataNamespace)
-                                               continue;
-                                       switch (attr.LocalName) {
-                                       case XmlConstants.ConstraintName:
-                                               constraintName = attr.Value;
-                                               break;
-                                       case XmlConstants.IsNested:
-                                               if (attr.Value == "true")
-                                                       isNested = true;
-                                               break;
-                                       case XmlConstants.ConstraintOnly:
-                                               if (attr.Value == "true")
-                                                       isConstraintOnly = true;
-                                               break;
-                                       }
-                               }
-                       }
-
-                       reservedConstraints.Add (keyref, new ConstraintStructure (
-                               tableName, cols, isAttrSpec, constraintName,
-                               false, keyref.Refer.Name, isNested, isConstraintOnly));
-               }
-
-               private void ProcessRelationIdentity (XmlSchemaElement element, ConstraintStructure c)
-               {
-                       // Basic concept came from XmlSchemaMapper.cs
-
-                       string tableName = c.TableName;
-
-                       DataColumn [] cols;
-                       DataTable dt = dataset.Tables [tableName];
-                       if (dt == null)
-                               throw new DataException (String.Format ("Invalid XPath selection inside selector. Cannot find: {0}", tableName));
-
-                       cols = new DataColumn [c.Columns.Length];
-                       for (int i = 0; i < cols.Length; i++) {
-                               string colName = c.Columns [i];
-                               bool isAttr = c.IsAttribute [i];
-                               DataColumn col = dt.Columns [colName];
-                               if (isAttr && col.ColumnMapping != MappingType.Attribute)
-                                       throw new DataException ("The XPath specified attribute field, but mapping type is not attribute.");
-                               if (!isAttr && col.ColumnMapping != MappingType.Element)
-                                       throw new DataException ("The XPath specified simple element field, but mapping type is not simple element.");
-                               cols [i] = col;
-                       }
-                       string name = c.ReferName;
-                       // get the unique constraint for the releation
-                       UniqueConstraint uniq = FindConstraint (name, element);
-                       // generate the FK.
-                       ForeignKeyConstraint fkc = new ForeignKeyConstraint(c.ConstraintName, uniq.Columns, cols);
-                       dt.Constraints.Add (fkc);
-
-                       if (!c.IsConstraintOnly) {
-                               // generate the relation.
-                               DataRelation rel = new DataRelation (c.ConstraintName, uniq.Columns, cols, true);
-                               rel.Nested = c.IsNested;
-                               rel.SetParentKeyConstraint (uniq);
-                               rel.SetChildKeyConstraint (fkc);
-
-                               dataset.Relations.Add (rel);
-                       }
-               }
-
-               // get the unique constraint for the relation.
-               // name - the name of the XmlSchemaUnique element
-               private UniqueConstraint FindConstraint (string name, XmlSchemaElement element)
-               {
-                       // Copied from XmlSchemaMapper.cs
-
-                       // find the element in the constraint collection.
-                       foreach (XmlSchemaIdentityConstraint c in element.Constraints) {
-                               if (c is XmlSchemaKeyref)
-                                       continue;
-
-                               if (c.Name == name) {
-                                       string tableName = GetSelectorTarget (c.Selector.XPath);
-
-                                       // find the table in the dataset.
-                                       DataTable dt = dataset.Tables [tableName];
-
-                                       string constraintName = c.Name;
-                                       // find if there is an attribute with the constraint name
-                                       // if not use the XmlSchemaUnique name.
-                                       if (c.UnhandledAttributes != null)
-                                               foreach (XmlAttribute attr in c.UnhandledAttributes)
-                                                       if (attr.LocalName == "ConstraintName" && attr.NamespaceURI == XmlConstants.MsdataNamespace)
-                                                               constraintName = attr.Value;
-                                       return (UniqueConstraint) dt.Constraints [constraintName];
-                               }
-                       }
-                       throw new DataException ("Target identity constraint was not found: " + name);
-               }
-
-               private void HandleAnnotations (XmlSchemaAnnotation an, bool nested)
-               {
-                       foreach (XmlSchemaObject content in an.Items) {
-                               XmlSchemaAppInfo ai = content as XmlSchemaAppInfo;
-                               if (ai != null) {
-                                       foreach (XmlNode n in ai.Markup) {
-                                               XmlElement el = n as XmlElement;
-                                               
-                                               // #325464 debugging
-                                               //Console.WriteLine ("Name: " + el.LocalName + " NS: " + el.NamespaceURI + " Const: " + XmlConstants.MsdataNamespace);
-                                               if (el != null && el.LocalName == "Relationship" && el.NamespaceURI == XmlConstants.MsdataNamespace)
-                                                       HandleRelationshipAnnotation (el, nested);
-                                               if (el != null && el.LocalName == "DataSource" && el.NamespaceURI == XmlConstants.MsdatasourceNamespace)
-                                                       HandleDataSourceAnnotation (el, nested);
-                                       }
-                               }
-                       }
-               }
-
-               private void HandleDataSourceAnnotation (XmlElement el, bool nested)
-               {
-                       // Handle: Connections and Tables
-                       // For Tables: extract the provider information from connection and use
-                       // the corresponding providerfactory to create the adapter and et al objects 
-                       // and populate them
-                       
-                       // #325464 debugging
-                       //Console.WriteLine ("In HandleDataSourceAnnotation... ");
-                       string providerName = null;
-                       string connString = null;
-                       DbProviderFactory provider = null;
-                       XmlElement e, tablesElement = null, firstChild;
-                       
-                       foreach (XmlNode n in el.ChildNodes) {
-                               e = n as XmlElement;
-                               
-                               if (e == null)
-                                       continue;
-                               
-#if !MOBILE
-                               if (e.LocalName == "Connections" && (firstChild = e.FirstChild as XmlElement) != null) {
-                                       providerName = firstChild.GetAttribute ("Provider");
-                                       connString = firstChild.GetAttribute ("AppSettingsPropertyName");
-                                       provider = DbProviderFactories.GetFactory (providerName);
-                                       continue;
-                               }
-#endif
-                               // #325464 debugging
-                               //Console.WriteLine ("ProviderName: " + providerName + "Connstr: " + connString);
-                               
-                               if (e.LocalName == "Tables")
-                                       tablesElement = e;
-                       }
-                               
-                       if (tablesElement != null && provider != null) {
-                               foreach (XmlNode node in tablesElement.ChildNodes) {
-                                       ProcessTableAdapter (node as XmlElement, provider, connString);
-                               }
-                       }
-               }
-               
-               private void ProcessTableAdapter (XmlElement el, DbProviderFactory provider, string connStr)
-               {
-                       XmlElement e;
-                       string datasetTableName = null;
-                       
-                       if (el == null)
-                               return;
-                       
-                       // #325464 debugging
-                       //Console.WriteLine ("in ProcessTableAdapters...");
-                       currentAdapter = new TableAdapterSchemaInfo (provider); 
-                       currentAdapter.ConnectionString = connStr;
-                       
-                       //Console.WriteLine ("Provider: {0}, connection: {1}, adapter: {2}", 
-                       //                   provider, currentAdapter.Connection, currentAdapter.Adapter);
-                       currentAdapter.BaseClass = el.GetAttribute ("BaseClass");
-                       datasetTableName = el.GetAttribute ("Name");
-                       currentAdapter.Name = el.GetAttribute ("GeneratorDataComponentClassName");
-                       
-                       if (String.IsNullOrEmpty (currentAdapter.Name))
-                               currentAdapter.Name = el.GetAttribute ("DataAccessorName");
-
-                       //Console.WriteLine ("Name: "+currentAdapter.Name);
-                       foreach (XmlNode n in el.ChildNodes) {
-                               e = n as XmlElement;
-                               
-                               //Console.WriteLine ("Children of Tables: "+e.LocalName);
-                               if (e == null)
-                                       continue;
-                               
-                               switch (e.LocalName) {
-                                       case "MainSource": 
-                                       case "Sources": 
-                                               foreach (XmlNode msn in e.ChildNodes)
-                                                       ProcessDbSource (msn as XmlElement);
-                                               break;
-                                       
-                                       case "Mappings":
-                                               DataTableMapping tableMapping = new DataTableMapping ();
-                                               tableMapping.SourceTable = "Table";
-                                               tableMapping.DataSetTable = datasetTableName;
-                                               
-                                               foreach (XmlNode mps in e.ChildNodes)
-                                                       ProcessColumnMapping (mps as XmlElement, tableMapping);
-                                               
-                                               currentAdapter.Adapter.TableMappings.Add (tableMapping);
-                                               break;                                          
-                               }
-                       }
-               }
-               
-               private void ProcessDbSource (XmlElement el)
-               {
-                       string tmp = null;
-                       XmlElement e;
-                       
-                       if (el == null)
-                               return;
-                       
-                       //Console.WriteLine ("ProcessDbSources: "+el.LocalName);
-
-                       tmp = el.GetAttribute ("GenerateShortCommands");
-                       //Console.WriteLine ("GenerateShortCommands: {0}", tmp);
-                       if (!String.IsNullOrEmpty (tmp))
-                               currentAdapter.ShortCommands = Convert.ToBoolean (tmp);
-               
-                       DbCommandInfo cmdInfo = new DbCommandInfo ();
-                       tmp = el.GetAttribute ("GenerateMethods");
-                       if (!String.IsNullOrEmpty (tmp)) {
-                               DbSourceMethodInfo mthdInfo = null;
-                               
-                               switch ((GenerateMethodsType) Enum.Parse (typeof (GenerateMethodsType), tmp)) {
-                               case GenerateMethodsType.Get:
-                                       mthdInfo = new DbSourceMethodInfo ();
-                                       mthdInfo.Name = el.GetAttribute ("GetMethodName");
-                                       mthdInfo.Modifier = el.GetAttribute ("GetMethodModifier");
-                                       if (String.IsNullOrEmpty (mthdInfo.Modifier))
-                                               mthdInfo.Modifier = "Public";
-                                       mthdInfo.ScalarCallRetval = el.GetAttribute ("ScalarCallRetval");
-                                       mthdInfo.QueryType = el.GetAttribute ("QueryType");
-                                       mthdInfo.MethodType = GenerateMethodsType.Get;
-                                       cmdInfo.Methods = new DbSourceMethodInfo [1];
-                                       cmdInfo.Methods[0] = mthdInfo;
-                                       break;
-                                       
-                               case GenerateMethodsType.Fill:
-                                       mthdInfo = new DbSourceMethodInfo ();
-                                       mthdInfo.Name = el.GetAttribute ("FillMethodName");
-                                       mthdInfo.Modifier = el.GetAttribute ("FillMethodModifier");
-                                       if (String.IsNullOrEmpty (mthdInfo.Modifier))
-                                               mthdInfo.Modifier = "Public";
-                                       mthdInfo.ScalarCallRetval = null;
-                                       mthdInfo.QueryType = null;
-                                       mthdInfo.MethodType = GenerateMethodsType.Fill;
-                                       cmdInfo.Methods = new DbSourceMethodInfo [1];
-                                       cmdInfo.Methods[0] = mthdInfo;
-                                       break;
-                                       
-                               case GenerateMethodsType.Both:
-                                       mthdInfo = new DbSourceMethodInfo ();
-                                       // Get
-                                       mthdInfo.Name = el.GetAttribute ("GetMethodName");
-                                       mthdInfo.Modifier = el.GetAttribute ("GetMethodModifier");
-                                       if (String.IsNullOrEmpty (mthdInfo.Modifier))
-                                               mthdInfo.Modifier = "Public";
-                                       mthdInfo.ScalarCallRetval = el.GetAttribute ("ScalarCallRetval");
-                                       mthdInfo.QueryType = el.GetAttribute ("QueryType");
-                                       mthdInfo.MethodType = GenerateMethodsType.Get;
-                                       cmdInfo.Methods = new DbSourceMethodInfo [2];
-                                       cmdInfo.Methods[0] = mthdInfo;
-                                       
-                                       // Fill
-                                       mthdInfo = new DbSourceMethodInfo ();
-                                       mthdInfo.Name = el.GetAttribute ("FillMethodName");
-                                       mthdInfo.Modifier = el.GetAttribute ("FillMethodModifier");
-                                       if (String.IsNullOrEmpty (mthdInfo.Modifier))
-                                               mthdInfo.Modifier = "Public";
-                                       mthdInfo.ScalarCallRetval = null;
-                                       mthdInfo.QueryType = null;
-                                       mthdInfo.MethodType = GenerateMethodsType.Fill;
-                                       cmdInfo.Methods[1] = mthdInfo;
-                                       break;
-                               }
-                       } else {
-                               // no Get or Fill methods - non <MainSource> sources
-                               DbSourceMethodInfo mthdInfo = new DbSourceMethodInfo ();
-                               mthdInfo.Name = el.GetAttribute ("Name");
-                               mthdInfo.Modifier = el.GetAttribute ("Modifier");
-                               if (String.IsNullOrEmpty (mthdInfo.Modifier))
-                                       mthdInfo.Modifier = "Public";
-                               mthdInfo.ScalarCallRetval = el.GetAttribute ("ScalarCallRetval");
-                               mthdInfo.QueryType = el.GetAttribute ("QueryType");
-                               mthdInfo.MethodType = GenerateMethodsType.None;
-                               // Add MethodInfo to DbCommandInfo
-                               cmdInfo.Methods = new DbSourceMethodInfo [1];
-                               cmdInfo.Methods[0] = mthdInfo;
-                       }
-                       
-                       foreach (XmlNode n in el.ChildNodes) {
-                               e = n as XmlElement;
-                               
-                               if (e == null) 
-                                       continue;
-                               
-                               switch (e.LocalName) {
-                                       case "SelectCommand": 
-                                               cmdInfo.Command = ProcessDbCommand (e.FirstChild as XmlElement);
-                                               currentAdapter.Commands.Add (cmdInfo);
-                                               break;
-                                       case "InsertCommand": 
-                                               currentAdapter.Adapter.InsertCommand = ProcessDbCommand (e.FirstChild as XmlElement);
-                                               break;
-                                       case "UpdateCommand": 
-                                               currentAdapter.Adapter.UpdateCommand = ProcessDbCommand (e.FirstChild as XmlElement);
-                                               break;
-                                       case "DeleteCommand": 
-                                               currentAdapter.Adapter.DeleteCommand = ProcessDbCommand (e.FirstChild as XmlElement);
-                                               break;
-                               }
-                       }
-               }
-               
-               private DbCommand ProcessDbCommand (XmlElement el)
-               {
-                       XmlElement e;
-                       //Console.WriteLine (el.LocalName);
-                       string cmdText = null;
-                       string cmdType = null;
-                       ArrayList parameters = null;
-                       
-                       if (el == null)
-                               return null;
-                       
-                       cmdType = el.GetAttribute ("CommandType");
-                       foreach (XmlNode n in el.ChildNodes) {
-                               e = n as XmlElement;
-                               if (e != null && e.LocalName == "CommandText")
-                                       cmdText = e.InnerText;
-                               else if (e != null && e.LocalName == "Parameters" && !e.IsEmpty)
-                                       parameters = ProcessDbParameters (e);
-                       }
-                       
-                       DbCommand cmd = currentAdapter.Provider.CreateCommand ();
-                       cmd.CommandText = cmdText;
-                       if (cmdType == "StoredProcedure")
-                               cmd.CommandType = CommandType.StoredProcedure;
-                       else
-                               cmd.CommandType = CommandType.Text;
-
-                       if (parameters != null)
-                               cmd.Parameters.AddRange (parameters.ToArray ());
-                       
-                       //Console.WriteLine ("Parameters count: {0}", cmd.Parameters.Count);
-                       return cmd;
-               }
-               
-               private ArrayList ProcessDbParameters (XmlElement el)
-               {
-                       //Console.WriteLine ("ProcessDbParameters: "+el.LocalName);
-                       string tmp = null;
-                       XmlElement e;
-                       DbParameter param = null;
-                       ArrayList parameters = new ArrayList ();
-                       
-                       if (el == null)
-                               return parameters;
-                       
-                       foreach (XmlNode n in el.ChildNodes) {
-                               e = n as XmlElement;
-                               
-                               if (e == null)
-                                       continue;
-                               param = currentAdapter.Provider.CreateParameter ();
-
-                               tmp = e.GetAttribute ("AllowDbNull");
-                               if (!String.IsNullOrEmpty (tmp))
-                                       param.IsNullable = Convert.ToBoolean (tmp);
-                               
-                               param.ParameterName = e.GetAttribute ("ParameterName");
-                               tmp = e.GetAttribute ("ProviderType");
-                               if (!String.IsNullOrEmpty (tmp))
-                                       tmp = e.GetAttribute ("DbType");
-                               param.FrameworkDbType = tmp;
-                               
-                               tmp = e.GetAttribute ("Direction");
-                               param.Direction = (ParameterDirection) Enum.Parse (typeof (ParameterDirection), tmp);
-                               
-                               ((IDbDataParameter)param).Precision = Convert.ToByte (e.GetAttribute ("Precision"));
-                               ((IDbDataParameter)param).Scale = Convert.ToByte (e.GetAttribute ("Scale"));
-                               param.Size = Convert.ToInt32 (e.GetAttribute ("Size"));
-                               param.SourceColumn = e.GetAttribute ("SourceColumn");
-                               
-                               tmp = e.GetAttribute ("SourceColumnNullMapping");
-                               if (!String.IsNullOrEmpty (tmp))
-                                       param.SourceColumnNullMapping = Convert.ToBoolean (tmp);
-                               
-                               tmp = e.GetAttribute ("SourceVersion");
-                               param.SourceVersion = (DataRowVersion) Enum.Parse (typeof (DataRowVersion), tmp);                               
-                               parameters.Add (param);
-                       }
-                       
-                       return parameters;
-               }
-
-               private void ProcessColumnMapping (XmlElement el, DataTableMapping tableMapping)
-               {
-                       if (el == null)
-                               return;
-                       
-                       tableMapping.ColumnMappings.Add (el.GetAttribute ("SourceColumn"), 
-                                                        el.GetAttribute ("DataSetColumn"));
-               }
-               
-               
-               private void HandleRelationshipAnnotation (XmlElement el, bool nested)
-               {
-                       string name = el.GetAttribute ("name");
-                       string ptn = el.GetAttribute ("parent", XmlConstants.MsdataNamespace);
-                       string ctn = el.GetAttribute ("child", XmlConstants.MsdataNamespace);
-                       string pkn = el.GetAttribute ("parentkey", XmlConstants.MsdataNamespace);
-                       string fkn = el.GetAttribute ("childkey", XmlConstants.MsdataNamespace);
-
-                       RelationStructure rel = new RelationStructure ();
-                       rel.ExplicitName = XmlHelper.Decode (name);
-                       rel.ParentTableName = XmlHelper.Decode (ptn);
-                       rel.ChildTableName = XmlHelper.Decode (ctn);
-                       // ColumnNames will be decoded wherever they are used as they can
-                       // contain 'space' separated list of column-names.
-                       rel.ParentColumnName = pkn;
-                       rel.ChildColumnName = fkn;
-                       rel.IsNested = nested;
-                       rel.CreateConstraint = false; // by default?
-                       relations.Add (rel);
-               }
-
-               private object GetElementDefaultValue (XmlSchemaElement elem)
-               {
-                       // Unlike attribute, element cannot have a default value.
-                       if (elem.RefName == XmlQualifiedName.Empty)
-                               return elem.DefaultValue;
-                       XmlSchemaElement referenced = schema.Elements [elem.RefName] as XmlSchemaElement;
-                       if (referenced == null) // considering missing sub components
-                               return null;
-                       return referenced.DefaultValue;
-               }
-
-               private object GetAttributeDefaultValue (XmlSchemaAttribute attr)
-               {
-#if BUGGY_MS_COMPATIBLE
-                       if (attr == null)
-                               return null;
-                       else if (attr.RefName != XmlQualifiedName.Empty) {
-                               XmlSchemaAttribute referenced = schema.Attributes [attr.RefName] as XmlSchemaAttribute;
-                               if (referenced != null)
-                                       return referenced.DefaultValue;
-                               else
-                                       return null;
-                       }
-                       if (attr.DefaultValue != null)
-                               return attr.DefaultValue;
-                       return attr.FixedValue;
-#else
-                       if (attr.DefaultValue != null)
-                               return attr.DefaultValue;
-                       else if (attr.FixedValue != null)
-                               return attr.FixedValue;
-                       else if (attr.RefName == XmlQualifiedName.Empty)
-                               return null;
-                       XmlSchemaAttribute referenced = schema.Attributes [attr.RefName] as XmlSchemaAttribute;
-                       if (referenced == null) // considering missing sub components
-                               return null;
-                       if (referenced.DefaultValue != null)
-                               return referenced.DefaultValue;
-                       return referenced.FixedValue;
-#endif
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlSchemaWriter.cs b/mcs/class/System.Data/System.Data/XmlSchemaWriter.cs
deleted file mode 100644 (file)
index 4a0e463..0000000
+++ /dev/null
@@ -1,887 +0,0 @@
-//
-// XmlSchemaWriter.cs - DataSet.WriteXmlSchema() support
-//
-// Author:
-//
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Original WriteXml/WriteXmlSchema authors are:
-//     Ville Palo, Alan Tam, Lluis Sanchez and Eran Domb.
-//
-
-//
-// Copyright (C) 2004-05 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Globalization;
-using System.Data;
-using System.Xml;
-
-namespace System.Data
-{
-       internal class XmlSchemaWriter
-       {
-               const string xmlnsxs = System.Xml.Schema.XmlSchema.Namespace;
-
-               public static void WriteXmlSchema (DataSet dataset,
-                       XmlWriter writer)
-               {
-                       WriteXmlSchema (dataset, writer, dataset.Tables,
-                               dataset.Relations);
-               }
-
-               public static void WriteXmlSchema (DataSet dataset,
-                       XmlWriter writer, DataTableCollection tables,
-                       DataRelationCollection relations)
-               {
-                       new XmlSchemaWriter (dataset, writer,
-                               tables, relations).WriteSchema ();
-               }
-
-               internal static void WriteXmlSchema (XmlWriter writer, DataTable[] tables,
-                                                    DataRelation[] relations,
-                                                    string mainDataTable,
-                                                    string dataSetName,
-                                                    CultureInfo locale)
-               {
-                       new XmlSchemaWriter (writer, tables, relations, mainDataTable, dataSetName, locale).WriteSchema ();
-               }
-
-               public XmlSchemaWriter (DataSet dataset,
-                       XmlWriter writer, DataTableCollection tables,
-                       DataRelationCollection relations)
-               {
-                       dataSetName = dataset.DataSetName;
-                       dataSetNamespace = dataset.Namespace;
-                       dataSetLocale = dataset.LocaleSpecified ? dataset.Locale : null;
-                       dataSetProperties = dataset.ExtendedProperties;
-                       w = writer;
-                       if (tables != null) {
-                               this.tables = new DataTable[tables.Count];
-                               for(int i=0;i<tables.Count;i++) this.tables[i] = tables[i];
-                       }
-                       if (relations != null) {
-                               this.relations = new DataRelation[relations.Count];
-                               for(int i=0;i<relations.Count;i++) this.relations[i] = relations[i];
-                       }
-               }
-
-               public XmlSchemaWriter (XmlWriter writer,
-                       DataTable[] tables,
-                       DataRelation[] relations,
-                       string mainDataTable,
-                       string dataSetName,
-                       CultureInfo locale)
-               {
-                       w = writer;
-                       this.tables = tables;
-                       this.relations = relations;
-                       this.mainDataTable = mainDataTable;
-                       this.dataSetName = dataSetName;
-                       this.dataSetLocale = locale;
-                       this.dataSetProperties = new PropertyCollection();
-                       if (tables[0].DataSet != null) {
-                               dataSetNamespace = tables[0].DataSet.Namespace;
-                       } else {
-                               dataSetNamespace = tables[0].Namespace;
-                       }
-               }
-
-               XmlWriter w;
-               DataTable[] tables;
-               DataRelation[] relations;
-               string mainDataTable;
-               string dataSetName;
-               string dataSetNamespace;
-               PropertyCollection dataSetProperties;
-               CultureInfo dataSetLocale;
-
-               ArrayList globalTypeTables = new ArrayList ();
-               Hashtable additionalNamespaces = new Hashtable ();
-
-               ArrayList annotation = new ArrayList ();
-
-               public string ConstraintPrefix {
-                       get { return dataSetNamespace != String.Empty ? XmlConstants.TnsPrefix + ':' : String.Empty; }
-               }
-
-               // the whole DataSet
-
-               public void WriteSchema ()
-               {
-                       ListDictionary names = new ListDictionary ();
-                       ListDictionary includes = new ListDictionary ();
-
-                       // Add namespaces used in DataSet components (tables, columns, ...)
-                       foreach (DataTable dt in tables) {
-                               foreach (DataColumn col in dt.Columns)
-                                       CheckNamespace (col.Prefix, col.Namespace, names, includes);
-                               CheckNamespace (dt.Prefix, dt.Namespace, names, includes);
-                       }
-
-                       w.WriteStartElement ("xs", "schema", xmlnsxs);
-                       w.WriteAttributeString ("id", XmlHelper.Encode (dataSetName));
-
-                       if (dataSetNamespace != String.Empty) {
-                               w.WriteAttributeString ("targetNamespace",
-                                       dataSetNamespace);
-                               w.WriteAttributeString (
-                                       "xmlns",
-                                       XmlConstants.TnsPrefix,
-                                       XmlConstants.XmlnsNS,
-                                       dataSetNamespace);
-                       }
-                       w.WriteAttributeString ("xmlns", dataSetNamespace);
-
-                       w.WriteAttributeString ("xmlns", "xs",
-                               XmlConstants.XmlnsNS, xmlnsxs);
-                       w.WriteAttributeString ("xmlns",
-                               XmlConstants.MsdataPrefix,
-                               XmlConstants.XmlnsNS,
-                               XmlConstants.MsdataNamespace);
-
-                       if (CheckExtendedPropertyExists (tables, relations))
-                               w.WriteAttributeString ("xmlns",
-                                       XmlConstants.MspropPrefix,
-                                       XmlConstants.XmlnsNS,
-                                       XmlConstants.MspropNamespace);
-
-                       if (dataSetNamespace != String.Empty) {
-                               w.WriteAttributeString ("attributeFormDefault", "qualified");
-                               w.WriteAttributeString ("elementFormDefault", "qualified");
-                       }
-
-                       foreach (string prefix in names.Keys)
-                               w.WriteAttributeString ("xmlns", prefix,
-                                       XmlConstants.XmlnsNS,
-                                       names [prefix] as string);
-
-                       if (includes.Count > 0)
-                               w.WriteComment ("ATTENTION: This schema contains references to other imported schemas");
-                       foreach (string ns in includes.Keys) {
-                               w.WriteStartElement ("xs", "import", xmlnsxs);
-                               w.WriteAttributeString ("namespace", ns);
-                               w.WriteAttributeString ("schemaLocation", includes [ns] as string);
-                               w.WriteEndElement ();
-                       }
-                       
-                       foreach (DataTable table in tables) {
-                               bool isTopLevel = true;
-                               foreach (DataRelation rel in table.ParentRelations) {
-                                       if (rel.Nested) {
-                                               isTopLevel = false;
-                                               break;
-                                       }
-                               }
-                               // LAMESPEC: You have a nested relationship but only one table, 
-                               // write table element first
-                               if (!isTopLevel && tables.Length < 2)
-                                               WriteTableElement (table);
-                       }
-       
-                       WriteDataSetElement ();
-
-                       w.WriteEndElement (); // xs:schema
-
-                       w.Flush ();
-               }
-
-               // FIXME: actually there are some cases that this method(ology)
-               // does not apply.
-               private void WriteDataSetElement ()
-               {
-                       w.WriteStartElement ("xs", "element", xmlnsxs);
-                       w.WriteAttributeString ("name", XmlHelper.Encode (dataSetName));
-                       w.WriteAttributeString (XmlConstants.MsdataPrefix,
-                               "IsDataSet", XmlConstants.MsdataNamespace,
-                               "true");
-
-                       bool useCurrentLocale = (dataSetLocale == null);
-
-                       if (!useCurrentLocale)
-                       {
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "Locale",
-                                       XmlConstants.MsdataNamespace,
-                                       dataSetLocale.Name);
-                       }
-
-                       if(mainDataTable != null && mainDataTable != "")
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "MainDataTable",
-                                       XmlConstants.MsdataNamespace,
-                                       mainDataTable);
-
-                       if (useCurrentLocale) {
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "UseCurrentLocale",
-                                       XmlConstants.MsdataNamespace,
-                                       "true");
-                       }
-
-                       AddExtendedPropertyAttributes (dataSetProperties);
-
-                       w.WriteStartElement ("xs", "complexType", xmlnsxs);
-                       w.WriteStartElement ("xs", "choice", xmlnsxs);
-                       w.WriteAttributeString ("minOccurs", "0");
-                       w.WriteAttributeString ("maxOccurs", "unbounded");
-
-                       foreach (DataTable table in tables) {
-                               bool isTopLevel = true;
-                               foreach (DataRelation rel in table.ParentRelations) {
-                                       if (rel.Nested) {
-                                               isTopLevel = false;
-                                               break;
-                                       }
-                               }
-
-                               // If there is a relation but only one table, could be that
-                               // we have to add a ref attribute
-                               bool addref = false;
-                               if (!isTopLevel && tables.Length < 2) {
-                                       isTopLevel = true;
-                                       addref = true;
-                               }
-                               
-                               if (isTopLevel) {
-                                       if (dataSetNamespace != table.Namespace ||
-                                           addref) {
-                                               // <xs:element ref="X:y" />
-                                               w.WriteStartElement ("xs",
-                                                       "element",
-                                                       xmlnsxs);
-                                               w.WriteStartAttribute ("ref", String.Empty);
-                                               w.WriteQualifiedName (XmlHelper.Encode (table.TableName), table.Namespace);
-                                               w.WriteEndAttribute ();
-                                               w.WriteEndElement ();
-                                       }
-                                       else
-                                               WriteTableElement (table);
-                               }
-                       }
-
-                       w.WriteEndElement (); // choice
-                       w.WriteEndElement (); // complexType
-
-                       WriteConstraints (); // DataSet constraints
-
-                       w.WriteEndElement (); // element
-
-                       if (annotation.Count > 0) {
-                               w.WriteStartElement ("xs", "annotation", xmlnsxs);
-                               w.WriteStartElement ("xs", "appinfo", xmlnsxs);
-
-                               foreach (object o in annotation) {
-                                       if (!(o is DataRelation))
-                                               continue;
-                                       WriteDataRelationAnnotation ((DataRelation)o);  
-                               }
-                               w.WriteEndElement ();
-                               w.WriteEndElement ();
-                       }
-               }
-
-               private void WriteDataRelationAnnotation (DataRelation rel) 
-               {
-                       String colnames = String.Empty;
-                       w.WriteStartElement (XmlConstants.MsdataPrefix, "Relationship",
-                                XmlConstants.MsdataNamespace);
-
-                       w.WriteAttributeString ("name", XmlHelper.Encode (rel.RelationName));
-
-                       w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "parent",
-                                       XmlConstants.MsdataNamespace,
-                                       XmlHelper.Encode (rel.ParentTable.TableName));
-
-                       w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "child",
-                                       XmlConstants.MsdataNamespace,
-                                       XmlHelper.Encode (rel.ChildTable.TableName));
-
-                       colnames = String.Empty;
-                       foreach (DataColumn col in rel.ParentColumns)
-                               colnames += XmlHelper.Encode (col.ColumnName) + " ";
-                       w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "parentkey",
-                                       XmlConstants.MsdataNamespace,
-                                       colnames.TrimEnd ());
-
-                       colnames = String.Empty;
-                       foreach (DataColumn col in rel.ChildColumns)
-                               colnames += XmlHelper.Encode (col.ColumnName) + " ";
-                       w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       "childkey",
-                                       XmlConstants.MsdataNamespace,
-                                       colnames.TrimEnd ());
-
-                       w.WriteEndElement ();
-               }
-
-               private void WriteConstraints ()
-               {
-                       ArrayList names = new ArrayList ();
-
-                       // add all unique constraints.
-                       foreach (DataTable table in tables) {
-                               foreach (Constraint c in table.Constraints) {
-                                       UniqueConstraint u =
-                                               c as UniqueConstraint;
-                                       if (u != null) {
-                                               AddUniqueConstraints (u, names);
-                                               continue;
-                                       }
-
-                                       ForeignKeyConstraint fk = c as ForeignKeyConstraint;
-                                       bool haveConstraint = false;
-                                       if (relations != null) {
-                                               foreach (DataRelation r in relations)
-                                                       if (r.RelationName == fk.ConstraintName)
-                                                               haveConstraint = true;
-                                       }
-                                       if (tables.Length > 1 && fk != null && !haveConstraint) {
-                                               DataRelation rel = new DataRelation (fk.ConstraintName,
-                                                                               fk.RelatedColumns, fk.Columns);
-                                               AddForeignKeys (rel, names, true);
-                                               continue;
-                                       }
-                               }
-                       }
-
-                       // Add all foriegn key constraints.
-                       if (relations != null)
-                               foreach (DataRelation rel in relations) {
-                                       if (rel.ParentKeyConstraint == null || rel.ChildKeyConstraint == null) {
-                                               annotation.Add (rel);
-                                               continue;
-                                       }
-                                       AddForeignKeys (rel, names,false);
-                               }
-               }
-
-               // Add unique constaraints to the schema.
-               // return hashtable with the names of all XmlSchemaUnique elements we created.
-               private void AddUniqueConstraints (UniqueConstraint uniq,
-                       ArrayList names)
-               {
-                       // if column of the constraint is hidden do not write the constraint.
-                       foreach (DataColumn column in uniq.Columns)
-                               if (column.ColumnMapping == MappingType.Hidden)
-                                       return; // do nothing
-
-                       w.WriteStartElement ("xs", "unique", xmlnsxs);
-                       // if constaraint name do not exist in the hashtable we can use it.
-                       string name;
-                       if (!names.Contains (uniq.ConstraintName)) {
-                               name = XmlHelper.Encode (uniq.ConstraintName);
-                               w.WriteAttributeString ("name", name);
-                       }
-                       // otherwise generate new constraint name for the
-                       // XmlSchemaUnique element.
-                       else {
-                               name = XmlHelper.Encode (uniq.Table.TableName) + "_" + XmlHelper.Encode (uniq.ConstraintName);
-                               w.WriteAttributeString ("name", name);
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.ConstraintName,
-                                       XmlConstants.MsdataNamespace,
-                                       XmlHelper.Encode (uniq.ConstraintName));
-                       }
-                       names.Add (name);
-
-                       if (uniq.IsPrimaryKey) {
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.PrimaryKey,
-                                       XmlConstants.MsdataNamespace,
-                                       "true");
-                       }
-
-                       AddExtendedPropertyAttributes (uniq.ExtendedProperties);
-
-                       w.WriteStartElement ("xs", "selector",
-                               xmlnsxs);
-                       w.WriteAttributeString ("xpath", ".//" +
-                               ConstraintPrefix + XmlHelper.Encode (uniq.Table.TableName));
-                       w.WriteEndElement (); // selector
-                       foreach (DataColumn c in uniq.Columns) {
-                               w.WriteStartElement ("xs", "field",
-                                       xmlnsxs);
-                               w.WriteStartAttribute ("xpath", String.Empty);
-                               if (c.ColumnMapping == MappingType.Attribute)
-                                       w.WriteString ("@");
-                               w.WriteString (ConstraintPrefix);
-                               w.WriteString (XmlHelper.Encode (c.ColumnName));
-                               w.WriteEndAttribute (); // xpath
-                               w.WriteEndElement (); // field
-                       }
-
-                       w.WriteEndElement (); // unique
-               }
-
-               // Add the foriegn keys to the schema.
-               private void AddForeignKeys (DataRelation rel, ArrayList names, bool isConstraintOnly)
-               {
-                       // Do nothing if it contains hidden relation
-                       foreach (DataColumn col in rel.ParentColumns)
-                               if (col.ColumnMapping == MappingType.Hidden)
-                                       return;
-                       foreach (DataColumn col in rel.ChildColumns)
-                               if (col.ColumnMapping == MappingType.Hidden)
-                                       return;
-
-                       w.WriteStartElement ("xs", "keyref", xmlnsxs);
-                       w.WriteAttributeString ("name", XmlHelper.Encode (rel.RelationName));
-
-                       //ForeignKeyConstraint fkConst = rel.ChildKeyConstraint;
-                       UniqueConstraint uqConst = null; 
-
-                       if (isConstraintOnly) {
-                               foreach (Constraint c in rel.ParentTable.Constraints) {
-                                       uqConst = c as UniqueConstraint;
-                                       if (uqConst == null)
-                                               continue;
-                                       if (uqConst.Columns == rel.ParentColumns)
-                                               break;
-                               }
-                       } 
-                       else
-                               uqConst = rel.ParentKeyConstraint;
-
-                       string concatName = XmlHelper.Encode (rel.ParentTable.TableName) + "_" + XmlHelper.Encode (uqConst.ConstraintName);
-                       // first try to find the concatenated name. If we didn't find it - use constraint name.
-                       if (names.Contains (concatName)) {
-                               w.WriteStartAttribute ("refer", String.Empty);
-                               w.WriteQualifiedName (concatName, dataSetNamespace);
-                               w.WriteEndAttribute ();
-                       }
-                       else {
-                               w.WriteStartAttribute ("refer", String.Empty);
-                               w.WriteQualifiedName (XmlHelper.Encode (uqConst.ConstraintName), dataSetNamespace);
-                               w.WriteEndAttribute ();
-                       }
-
-                       if (isConstraintOnly)
-                               w.WriteAttributeString ( XmlConstants.MsdataPrefix,
-                                       XmlConstants.ConstraintOnly,
-                                       XmlConstants.MsdataNamespace,
-                                       "true");
-                       else if (rel.Nested)
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.IsNested,
-                                       XmlConstants.MsdataNamespace,
-                                       "true");
-
-                       AddExtendedPropertyAttributes (uqConst.ExtendedProperties);
-
-                       w.WriteStartElement ("xs", "selector", xmlnsxs);
-                       w.WriteAttributeString ("xpath", ".//" + 
-                               ConstraintPrefix + XmlHelper.Encode (rel.ChildTable.TableName));
-                       w.WriteEndElement ();
-
-                       foreach (DataColumn c in rel.ChildColumns) {
-                               w.WriteStartElement ("xs", "field",
-                                       xmlnsxs);
-                               w.WriteStartAttribute ("xpath", String.Empty);
-                               if (c.ColumnMapping == MappingType.Attribute)
-                                       w.WriteString ("@");
-                               w.WriteString (ConstraintPrefix);
-                               w.WriteString (XmlHelper.Encode (c.ColumnName));
-                               w.WriteEndAttribute ();
-                               w.WriteEndElement (); // field
-                       }
-
-                       w.WriteEndElement (); // keyref
-               }
-
-               // ExtendedProperties
-
-               private bool CheckExtendedPropertyExists (
-                       DataTable[] tables,
-                       DataRelation[] relations)
-               {
-                       if (dataSetProperties.Count > 0)
-                               return true;
-                       foreach (DataTable dt in tables) {
-                               if (dt.ExtendedProperties.Count > 0)
-                                       return true;
-                               foreach (DataColumn col in dt.Columns)
-                                       if (col.ExtendedProperties.Count > 0)
-                                               return true;
-                               foreach (Constraint c in dt.Constraints)
-                                       if (c.ExtendedProperties.Count > 0)
-                                               return true;
-                       }
-                       if (relations == null)
-                               return false;
-                       foreach (DataRelation rel in relations)
-                               if (rel.ExtendedProperties.Count > 0)
-                                       return true;
-                       return false;
-               }
-
-               private void AddExtendedPropertyAttributes (PropertyCollection props)
-               {
-                       // add extended properties to xs:element
-                       foreach (DictionaryEntry de in props) {
-                               w.WriteStartAttribute (
-                                       XmlConstants.MspropPrefix,
-                                       XmlConvert.EncodeName (de.Key.ToString ()),
-                                       XmlConstants.MspropNamespace);
-                               if (de.Value != null)
-                                       w.WriteString (
-                                               DataSet.WriteObjectXml (de.Value));
-                               w.WriteEndAttribute ();
-                       }
-               }
-
-               // Table
-
-               private void WriteTableElement (DataTable table)
-               {
-                       w.WriteStartElement ("xs", "element", xmlnsxs);
-                       w.WriteAttributeString ("name", XmlHelper.Encode (table.TableName));
-
-                       AddExtendedPropertyAttributes (table.ExtendedProperties);
-
-                       WriteTableType (table);
-
-                       w.WriteEndElement ();
-               }
-
-               private void WriteTableType (DataTable table)
-               {
-                       ArrayList elements;
-                       ArrayList atts;
-                       DataColumn simple;
-
-                       DataSet.SplitColumns (table, out atts, out elements, out simple);
-
-                       w.WriteStartElement ("xs", "complexType", xmlnsxs);
-
-                       if (simple != null) {
-                               w.WriteStartElement ("xs", "simpleContent", xmlnsxs);
-                               // add column name attribute
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.ColumnName,
-                                       XmlConstants.MsdataNamespace,
-                                       XmlHelper.Encode (simple.ColumnName));
-
-                               // add ordinal attribute
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.Ordinal,
-                                       XmlConstants.MsdataNamespace,
-                                       XmlConvert.ToString (simple.Ordinal));
-
-                               // add extension
-                               w.WriteStartElement ("xs", "extension",
-                                       xmlnsxs);
-                               w.WriteStartAttribute ("base", String.Empty);
-                               WriteQName (MapType (simple.DataType));
-                               w.WriteEndAttribute ();
-
-                               WriteTableAttributes (atts);
-
-                               w.WriteEndElement ();
-                       } else {
-                               WriteTableAttributes (atts);
-                               bool isNested = false;
-                               foreach (DataRelation rel in table.ParentRelations) {
-                                       if (rel.Nested) {
-                                               isNested = true;
-                                               break;
-                                       }
-                               }
-                               
-                               // When we have a nested relationship and only one table,
-                               // could be that we have a reference attribute
-                               if (elements.Count > 0 || (isNested && tables.Length < 2)) {
-                                       w.WriteStartElement ("xs", "sequence",
-                                               xmlnsxs);
-
-                                       foreach (DataColumn col in elements)
-                                               WriteTableTypeParticles (col);
-
-                                       foreach (DataRelation rel in table.ChildRelations)
-                                               if (rel.Nested)
-                                                       WriteChildRelations (rel);
-                                       w.WriteEndElement ();
-                               }
-                       }
-
-                       w.WriteFullEndElement (); // complexType
-               }
-
-               private void WriteTableTypeParticles (DataColumn col)
-               {
-                       w.WriteStartElement ("xs", "element", xmlnsxs);
-                       w.WriteAttributeString ("name", XmlHelper.Encode (col.ColumnName));
-
-                       if (col.ColumnName != col.Caption && col.Caption != String.Empty)
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.Caption, 
-                                       XmlConstants.MsdataNamespace,
-                                       col.Caption);
-
-                       if (col.AutoIncrement == true)
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.AutoIncrement,
-                                       XmlConstants.MsdataNamespace,
-                                       "true");
-
-                       if (col.AutoIncrementSeed != 0) {
-                               w.WriteAttributeString (
-
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.AutoIncrementSeed,
-                                       XmlConstants.MsdataNamespace,
-                                       XmlConvert.ToString (col.AutoIncrementSeed));
-                       }
-
-                       if (col.AutoIncrementStep != 1) {
-                               w.WriteAttributeString (
-
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.AutoIncrementStep,
-                                       XmlConstants.MsdataNamespace,
-                                       XmlConvert.ToString (col.AutoIncrementStep));
-                       }
-
-                       if (!DataColumn.GetDefaultValueForType (col.DataType).Equals (col.DefaultValue))
-                               w.WriteAttributeString ("default",
-                                       DataSet.WriteObjectXml (col.DefaultValue));
-
-                       if (col.ReadOnly)
-                               w.WriteAttributeString (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.ReadOnly,
-                                       XmlConstants.MsdataNamespace,
-                                       "true");
-
-                       XmlQualifiedName typeQName = null;
-                       if (col.MaxLength < 0) {
-                               w.WriteStartAttribute ("type", String.Empty);
-                               typeQName = MapType (col.DataType);
-                               WriteQName (typeQName);
-                               w.WriteEndAttribute ();
-                       }
-
-                       if (typeQName == XmlConstants.QnString
-                               && col.DataType != typeof (string)
-                               && col.DataType != typeof (char)) {
-                               w.WriteStartAttribute (
-                                       XmlConstants.MsdataPrefix,
-                                       XmlConstants.DataType,
-                                       XmlConstants.MsdataNamespace);
-                               string runtimeName = col.DataType.AssemblyQualifiedName;
-                               w.WriteString (runtimeName);
-                               w.WriteEndAttribute ();
-                       }
-
-                       if (col.AllowDBNull)
-                               w.WriteAttributeString ("minOccurs", "0");
-
-                       //writer.WriteAttributeString (XmlConstants.MsdataPrefix, 
-                       //                            XmlConstants.Ordinal, 
-                       //                            XmlConstants.MsdataNamespace, 
-                       //                            col.Ordinal.ToString ());
-
-                       AddExtendedPropertyAttributes (col.ExtendedProperties);
-
-                       // Write SimpleType if column have MaxLength
-                       if (col.MaxLength > -1)
-                               WriteSimpleType (col);
-
-                       w.WriteEndElement (); // sequence
-               }
-
-               private void WriteChildRelations (DataRelation rel)
-               {
-                       // If there is a parent/child relation and only one table,
-                       // it would just be a ref element.
-                       if (rel.ChildTable.Namespace != dataSetNamespace ||
-                           tables.Length < 2) {
-                               w.WriteStartElement ("xs", "element", xmlnsxs);
-                               w.WriteStartAttribute ("ref", String.Empty);
-                               w.WriteQualifiedName (
-                                       XmlHelper.Encode (rel.ChildTable.TableName),
-                                       rel.ChildTable.Namespace);
-                               w.WriteEndAttribute ();
-                       } else {
-                               w.WriteStartElement ("xs", "element", xmlnsxs);
-                               w.WriteStartAttribute ("name", String.Empty);
-                               w.WriteQualifiedName (
-                                       XmlHelper.Encode (rel.ChildTable.TableName),
-                                       rel.ChildTable.Namespace);
-                               w.WriteEndAttribute ();
-                               w.WriteAttributeString ("minOccurs", "0");
-                               w.WriteAttributeString ("maxOccurs", "unbounded");
-
-                               globalTypeTables.Add (rel.ChildTable);
-                       }
-                       
-                       // Iff there is a genuine ChildTable and not just a ref, call WriteTableType
-                       if (tables.Length > 1)
-                               WriteTableType (rel.ChildTable);
-                       w.WriteEndElement ();
-               }
-
-               private void WriteTableAttributes (ArrayList atts)
-               {
-                       //Then a list of attributes
-                       foreach (DataColumn col in atts) {
-                               w.WriteStartElement ("xs", "attribute", xmlnsxs);
-
-                               string name = XmlHelper.Encode (col.ColumnName);
-                               if (col.Namespace != String.Empty) {
-                                       w.WriteAttributeString ("form", "qualified");
-                                       string prefix = col.Prefix == String.Empty ? "app" + additionalNamespaces.Count : col.Prefix;
-                                       name = prefix + ":" + name;
-                                       // FIXME: Handle prefix mapping correctly.
-                                       additionalNamespaces [prefix] = col.Namespace;
-                               }
-                               w.WriteAttributeString ("name", name);
-
-                               AddExtendedPropertyAttributes (
-                                       col.ExtendedProperties);
-
-                               if (col.ReadOnly)
-                                       w.WriteAttributeString (
-                                               XmlConstants.MsdataPrefix,
-                                               XmlConstants.ReadOnly,
-                                               XmlConstants.MsdataNamespace,
-                                               "true");
-
-                               if (col.MaxLength < 0) {
-                                       // otherwise simpleType is written later
-                                       w.WriteStartAttribute ("type", String.Empty);
-                                       WriteQName (MapType (col.DataType));
-                                       w.WriteEndAttribute ();
-                               }
-
-                               if (!col.AllowDBNull)
-                                       w.WriteAttributeString ("use", "required");
-                               if (col.DefaultValue != DataColumn.GetDefaultValueForType (col.DataType))
-                                       w.WriteAttributeString ("default",
-                                               DataSet.WriteObjectXml (col.DefaultValue));
-
-                               if (col.MaxLength > -1)
-                                       WriteSimpleType (col);
-
-                               w.WriteEndElement (); // attribute
-                       }
-               }
-
-               private void WriteSimpleType (DataColumn col)
-               {
-                       w.WriteStartElement ("xs", "simpleType", xmlnsxs);
-                       w.WriteStartElement ("xs", "restriction", xmlnsxs);
-                       w.WriteStartAttribute ("base", String.Empty);
-                       WriteQName (MapType (col.DataType));
-                       w.WriteEndAttribute ();
-
-                       w.WriteStartElement ("xs", "maxLength", xmlnsxs);
-                       w.WriteAttributeString ("value",
-                               XmlConvert.ToString (col.MaxLength));
-                       w.WriteEndElement (); // maxLength
-                       w.WriteEndElement (); // restriction
-                       w.WriteEndElement (); // simpleType
-               }
-
-               private void WriteQName (XmlQualifiedName name)
-               {
-                       w.WriteQualifiedName (name.Name, name.Namespace);
-               }
-
-               private void CheckNamespace (string prefix, string ns, ListDictionary names, ListDictionary includes)
-               {
-                       if (ns == String.Empty)
-                               return;
-                       if (dataSetNamespace != ns) {
-                               if ((string)names [prefix] != ns) {
-                                       for (int i = 1; i < int.MaxValue; i++) {
-                                               string p = "app" + i;
-                                               if (names [p] == null) {
-                                                       names.Add (p, ns);
-                                                       HandleExternalNamespace (p, ns, includes);
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               private void HandleExternalNamespace (string prefix, string ns, ListDictionary includes)
-               {
-                       if (includes.Contains (ns))
-                               return; // nothing to do
-                       includes.Add (ns, "_" + prefix + ".xsd");
-               }
-
-               private /*static*/ XmlQualifiedName MapType (Type type)
-               {
-                       switch (Type.GetTypeCode (type)) {
-                               case TypeCode.String: return XmlConstants.QnString;
-                               case TypeCode.Int16: return XmlConstants.QnShort;
-                               case TypeCode.Int32: return XmlConstants.QnInt;
-                               case TypeCode.Int64: return XmlConstants.QnLong;
-                               case TypeCode.Boolean: return XmlConstants.QnBoolean;
-                               case TypeCode.Byte: return XmlConstants.QnUnsignedByte;
-                               //case TypeCode.Char: return XmlConstants.QnChar;
-                               case TypeCode.DateTime: return XmlConstants.QnDateTime;
-                               case TypeCode.Decimal: return XmlConstants.QnDecimal;
-                               case TypeCode.Double: return XmlConstants.QnDouble;
-                               case TypeCode.SByte: return XmlConstants.QnSbyte;
-                               case TypeCode.Single: return XmlConstants.QnFloat;
-                               case TypeCode.UInt16: return XmlConstants.QnUnsignedShort;
-                               case TypeCode.UInt32: return XmlConstants.QnUnsignedInt;
-                               case TypeCode.UInt64: return XmlConstants.QnUnsignedLong;
-                       }
-                       
-                       if (typeof (TimeSpan) == type)
-                               return XmlConstants.QnDuration;
-                       else if (typeof (System.Uri) == type)
-                               return XmlConstants.QnUri;
-                       else if (typeof (byte[]) == type)
-                               return XmlConstants.QnBase64Binary;
-                       else if (typeof (XmlQualifiedName) == type)
-                               return XmlConstants.QnXmlQualifiedName;
-                       else
-                               return XmlConstants.QnString;
-               }
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlTableWriter.cs b/mcs/class/System.Data/System.Data/XmlTableWriter.cs
deleted file mode 100644 (file)
index 9806e76..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-// 
-// System.Data/XmlTableWriter.cs
-//
-// Author:
-//   Patrick Earl <mono@patearl.net>
-//
-// Copyright (c) 2006, Patrick Earl
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Xml;
-
-internal class XmlTableWriter {
-       // This method is modelled after the DataSet's WriteXml functionality.
-       internal static void WriteTables(XmlWriter writer,
-                                XmlWriteMode mode,
-                                List<DataTable> tables,
-                                List<DataRelation> relations,
-                                string mainDataTable,
-                                string dataSetName)
-       {
-               if (mode == XmlWriteMode.DiffGram) {
-                       foreach (DataTable table in tables)
-                               table.SetRowsID();
-                       DataSet.WriteDiffGramElement(writer);
-               }
-
-               bool shouldOutputContent = (mode != XmlWriteMode.DiffGram);
-               for (int n = 0; n < tables.Count && !shouldOutputContent; n++)
-                       shouldOutputContent = tables[n].Rows.Count > 0;
-
-               if (shouldOutputContent) {
-                       // We assume that tables[0] is the main table being written.
-                       // We happen to know that the code above us does things that way.
-                       DataSet.WriteStartElement(writer, mode, tables[0].Namespace, tables[0].Prefix, XmlHelper.Encode(dataSetName));
-
-                       if (mode == XmlWriteMode.WriteSchema) {
-                               DataTable [] _tables = new DataTable[tables.Count];
-                               tables.CopyTo(_tables);
-                               DataRelation[] _relations = new DataRelation[relations.Count];
-                               relations.CopyTo(_relations);
-                               DataTable dt = _tables [0];
-                               new XmlSchemaWriter(writer,
-                                       _tables,
-                                       _relations,
-                                       mainDataTable,
-                                       dataSetName,
-                                       dt.LocaleSpecified ? dt.Locale : null
-                               ).WriteSchema();
-                       }
-
-                       WriteTableList (writer, mode, tables, DataRowVersion.Default);
-
-                       writer.WriteEndElement();
-               }
-
-               if (mode == XmlWriteMode.DiffGram) {
-                       List<DataTable> changedTables = new List<DataTable>();
-                       foreach (DataTable table in tables) {
-                               DataTable changed = table.GetChanges(DataRowState.Modified | DataRowState.Deleted);
-                               if (changed != null && changed.Rows.Count > 0) {
-                                       changedTables.Add(changed);
-                               }
-                       }
-                       if (changedTables.Count > 0) {
-                               DataSet.WriteStartElement(writer, XmlWriteMode.DiffGram, XmlConstants.DiffgrNamespace, XmlConstants.DiffgrPrefix, "before");
-                               WriteTableList (writer, mode, changedTables, DataRowVersion.Original);
-                               writer.WriteEndElement();
-                       }
-               
-                       writer.WriteEndElement(); // diffgr:diffgram
-               }
-
-               writer.Flush();
-       }
-
-       internal static void WriteTableList(XmlWriter writer, XmlWriteMode mode, List<DataTable> tables, DataRowVersion version)
-       {
-               foreach (DataTable table in tables)
-                       DataSet.WriteTable(writer, table, mode, version);
-       }
-}
diff --git a/mcs/class/System.Data/System.Data/XmlWriteMode.cs b/mcs/class/System.Data/System.Data/XmlWriteMode.cs
deleted file mode 100644 (file)
index 85add2f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Data.XmlWriteMode.cs
-//
-// Author:
-//   Christopher Podurgiel (cpodurgiel@msn.com)
-//
-// (C) Chris Podurgiel
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Data
-{
-       /// <summary>
-       /// Use the members of this enumeration when setting the WriteMode parameter of the WriteXml method.
-       /// </summary>
-       public enum XmlWriteMode
-       {
-               WriteSchema = 0,
-               IgnoreSchema = 1,
-               DiffGram = 2
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/System.Data/System.Xml/ChangeLog b/mcs/class/System.Data/System.Xml/ChangeLog
deleted file mode 100644 (file)
index 899caa8..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-2006-11-28  Nagappan A  <anagappan@novell.com>
-
-       * XmlDataDocument.cs (StringToObject): Modify
-       XmlConvert.ToDateTime to use XmlDateTimeSerializationMode, as the
-       default ToDataTime method id obsolete.
-
-2006-04-19  Senganal T <tsenganal@novell.com>
-
-       * XmlDataDocument.cs : 
-               - Use encoded names for DataSet schema.
-               - StringToElement : Return 'null' if the value is empty string
-               or null.
-               - OnDataTableRowAdded : Add the row elements to the tablenode if
-               they are not already added.
-
-2004-06-06  Atsushi Enomoto <atsushi@ximian.com>
-
-       * XmlDataDocument.cs :
-         - It was not handling SimpleContent. This fixes bug #56951.
-         - It was not converting values into DataType of the DataColumn.
-
-2004-05-17  Atsushi Enomoto <atsushi@ximian.com>
-
-       * XmlDataDocument.cs :
-         Removed MonoTODO from implemented members and private members.
-         Updated OnNodeRemoved(), OnDataRowDeleted() and OnDataTableRollback()
-         to match with current implementation.
-
-2004-05-13  Atsushi Enomoto <atsushi@ximian.com>
-
-       * XmlDataDocument.cs : Removed row-element mapping. Just use new
-         DataRow.DataElement property. Added/removed some comments.
-
-2004-05-12  Atsushi Enomoto <atsushi@ximian.com>
-
-       * XmlDataDocument.cs : Radical design change.
-         - GetElementFromRow() must return "detached" element, even if it is
-           not added to table's Rows.
-         - Introduced XmlDataElement class to map element (this class itself)
-           and DataRow _always_ . It is impossible to map *all* DataRows 
-           to/from elements only in XmlDataDocument API, since DataRow can 
-           be created separate from it (i.e. by table.NewRow()).
-         - Removed unreliable GetElementsByTagName() dependency from most
-           of the code, since users might create elements that has the same
-           name of any tables (that is possible especially unmapped elements).
-         - Adding/Removing delegates on every event action is unnecessary.
-           Use just flags.
-         - For Load(), just using base.Load() will do most of the job.
-         - Attributes and SimpleContents are not handled properly.
-
-         "Removed" and "Rollback" events are still TODO.
-
-2004-04-13  Atsushi Enomoto <atsushi@ximian.com>
-
-       * XmlDataDocument.cs:
-         Load() should not read xml multiple time nor expect BaseURI (and it
-         indicates the resource location is readable).
-         Simplified event handling logic, and fixed missing event removal.
-         Quick hack to avoid new XmlDataDocument(DataSet ds).Load ().
-         Enabled CreateNavigator() that was commented out.
-
-2004-03-18  Atsushi Enomoto <atsushi@ximian.com>
-
-       * XmlDataDocument.cs : Fixed incorrect cast in OnDataTableRowAdded().
-         This fixes bug #54505.
-
-2003-07-31  Duncan Mak  <duncan@ximian.com>
-
-       * XmlDataDocument.cs (BaseURI):
-       (InnerXml):
-       (IsReadOnly):
-       (this):
-       (LocalName):
-       (Name):
-       (OwnerDocument):
-       (WriteContentTo):
-       (WriteTo): Removed, these do not need to be redefined, as
-       they are inherited from XmlDocument already.
-
-       (CreateElement): simplifed the
-       implementation. XmlDocument.CreateElement can handle String.Empty
-       and null just fine.
-
-2003-03-12  Alan Tam <Tam@SiuLung.com>
-
-       * XmlDataDocument.cs: Still need to print tag for the DataSet if there
-       is no data at all.
-       
-2003-01-27  Ville Palo <vi64pa@koti.soon.fi>
-
-       * ChangeLog: Added this file.
-       * XmlDataDocument.cs: Some little fixes.
diff --git a/mcs/class/System.Data/System.Xml/XmlDataDocument.cs b/mcs/class/System.Data/System.Xml/XmlDataDocument.cs
deleted file mode 100644 (file)
index 3cd7367..0000000
+++ /dev/null
@@ -1,819 +0,0 @@
-//
-// mcs/class/System.Data/System.Xml/XmlDataDocument.cs
-//
-// Purpose: Provides a W3C XML DOM Document to interact with
-//          relational data in a DataSet
-//
-// class: XmlDataDocument
-// assembly: System.Data.dll
-// namespace: System.Xml
-//
-// Author:
-//     Daniel Morgan <danmorg@sc.rr.com>
-//     Ville Palo <vi64pa@koti.soon.fi>
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// (c)copyright 2002 Daniel Morgan
-// (c)copyright 2003 Ville Palo
-// (c)2004 Novell Inc.
-//
-// XmlDataDocument is included within the Mono Class Library.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.IO;
-using System.Text;
-using System.Xml.XPath;
-using System.Collections;
-using System.Globalization;
-using System.ComponentModel;
-
-namespace System.Xml 
-{
-
-       public class XmlDataDocument : XmlDocument 
-       {
-               // Should we consider overriding CloneNode() ? By default
-               // base CloneNode() will be invoked and thus no DataRow conflict
-               // would happen, that sounds the best (that means, no mapped
-               // DataRow will be provided).
-               internal class XmlDataElement : XmlElement
-               {
-                       DataRow row;
-
-                       internal XmlDataElement (DataRow row, string prefix, string localName, string ns, XmlDataDocument doc)
-                               : base (prefix, localName, ns, doc)
-                       {
-                               this.row = row;
-                               // Embed row ID only when the element is mapped to
-                               // certain DataRow.
-                               if (row != null) {
-                                       row.DataElement = this;
-                                       row.XmlRowID = doc.dataRowID;
-                                       doc.dataRowIDList.Add (row.XmlRowID);
-                                       doc.dataRowID++;
-                               }
-                       }
-
-                       internal DataRow DataRow {
-                               get { return row; }
-                       }
-               }
-
-               #region Fields
-
-               private DataSet dataSet;
-
-               private int dataRowID = 1;
-               private ArrayList dataRowIDList = new ArrayList ();
-
-               // this keeps whether table change events should be handles
-               private bool raiseDataSetEvents = true;
-               private bool raiseDocumentEvents = true;
-
-               DataColumnChangeEventHandler columnChanged;
-               DataRowChangeEventHandler rowDeleted;
-               DataRowChangeEventHandler rowChanged;
-               CollectionChangeEventHandler tablesChanged;
-               #endregion // Fields
-
-               #region Constructors
-
-               public XmlDataDocument ()
-               {
-                       InitDelegateFields ();
-
-                       dataSet = new DataSet();
-                       dataSet._xmlDataDocument = this;
-                       dataSet.Tables.CollectionChanged += tablesChanged;
-
-                       AddXmlDocumentListeners ();
-                       DataSet.EnforceConstraints = false;
-               }
-
-               public XmlDataDocument (DataSet dataset) 
-               {
-                       if (dataset == null)
-                               throw new ArgumentException ("Parameter dataset cannot be null.");
-                       if (dataset._xmlDataDocument != null)
-                               throw new ArgumentException ("DataSet cannot be associated with two or more XmlDataDocument.");
-
-                       InitDelegateFields ();
-
-                       this.dataSet = dataset;
-                       this.dataSet._xmlDataDocument = this;
-
-                       XmlElement docElem = CreateElement (dataSet.Prefix, XmlHelper.Encode (dataSet.DataSetName), dataSet.Namespace);
-                       foreach (DataTable dt in dataSet.Tables) {
-                               if (dt.ParentRelations.Count > 0)
-                                       continue; // don't add them here
-                               FillNodeRows (docElem, dt, dt.Rows);
-                       }
-
-                       // This seems required to avoid Load() error when for
-                       // example empty DataSet will be filled on Load().
-                       if (docElem.ChildNodes.Count > 0)
-                               AppendChild (docElem);
-
-                       foreach (DataTable dt in dataSet.Tables) {
-                               dt.ColumnChanged += columnChanged;
-                               dt.RowDeleted += rowDeleted;
-                               dt.RowChanged += rowChanged;
-                       }
-
-                       AddXmlDocumentListeners ();
-               }
-
-               // bool clone. If we are cloning XmlDataDocument then clone should be true.
-               // FIXME: shouldn't DataSet be mapped to at most one document??
-               private XmlDataDocument (DataSet dataset, bool clone)
-               {
-                       InitDelegateFields ();
-
-                       this.dataSet = dataset;
-                       this.dataSet._xmlDataDocument = this;
-
-                       foreach (DataTable Table in DataSet.Tables) {
-                               
-                               foreach (DataRow Row in Table.Rows) {
-                                       Row.XmlRowID = dataRowID;
-                                       dataRowIDList.Add (dataRowID);
-                                       dataRowID++;
-                               }
-                       }
-
-                       AddXmlDocumentListeners ();
-
-                       foreach (DataTable Table in dataSet.Tables) {
-                               Table.ColumnChanged += columnChanged;
-                               Table.RowDeleted += rowDeleted;
-                               Table.RowChanged += rowChanged;
-                       }
-               }
-
-               #endregion // Constructors
-
-               #region Public Properties
-
-               public DataSet DataSet {
-                       get {
-                               return dataSet;
-                       }
-               }
-
-               #endregion // Public Properties
-
-               #region Public Methods
-
-               private void FillNodeRows (XmlElement parent, DataTable dt, ICollection rows)
-               {
-                       foreach (DataRow dr in dt.Rows) {
-                               XmlDataElement el = dr.DataElement;
-                               FillNodeChildrenFromRow (dr, el);
-
-                               foreach (DataRelation rel in dt.ChildRelations)
-                                       FillNodeRows (el, rel.ChildTable, dr.GetChildRows (rel));
-                               parent.AppendChild (el);
-                       }
-               }
-
-               public override XmlNode CloneNode (bool deep) 
-               {
-                       XmlDataDocument Document;
-                       if (deep)
-                               Document = new XmlDataDocument (DataSet.Copy (), true);
-                       else
-                               Document = new XmlDataDocument (DataSet.Clone (), true);
-
-                       Document.RemoveXmlDocumentListeners ();
-
-                       Document.PreserveWhitespace = PreserveWhitespace;
-                       if (deep) {
-                               foreach(XmlNode n in ChildNodes)
-                                       Document.AppendChild (Document.ImportNode (n, deep));
-                       }
-
-                       Document.AddXmlDocumentListeners ();
-
-                       return Document;                        
-               }
-
-               #region overloaded CreateElement methods
-
-               public override XmlElement CreateElement(
-                        string prefix, string localName, string namespaceURI) 
-               {
-                       DataTable dt = DataSet.Tables [XmlHelper.Decode (localName)];
-                       DataRow row = dt != null ? dt.NewRow () : null;
-                       if (row != null)
-                               return GetElementFromRow (row);
-                       else
-                               return base.CreateElement (prefix, localName, namespaceURI);
-               }
-
-               #endregion // overloaded CreateElement Methods
-                       
-               // It is not supported in XmlDataDocument
-               public override XmlEntityReference CreateEntityReference(string name) 
-               {
-                       throw new NotSupportedException ();
-               }
-               
-               // It is not supported in XmlDataDocument
-               public override XmlElement GetElementById (string elemId) 
-               {
-                       throw new NotSupportedException ();
-               }
-
-               // get the XmlElement associated with the DataRow
-               public XmlElement GetElementFromRow (DataRow r) 
-               {
-                       return r.DataElement;
-               }
-
-               // get the DataRow associated with the XmlElement
-               public DataRow GetRowFromElement (XmlElement e)
-               {
-                       XmlDataElement el = e as XmlDataElement;
-                       if (el == null)
-                               return null;
-                       return el.DataRow;
-               }
-
-               #region overload Load methods
-
-               public override void Load(Stream inStream) {
-                       Load (new XmlTextReader (inStream));
-               }
-
-               public override void Load(string filename) {
-                       Load (new XmlTextReader (filename));
-               }
-
-               public override void Load(TextReader txtReader) {
-                       Load (new XmlTextReader (txtReader));
-               }
-
-               public override void Load (XmlReader reader) 
-               {
-                       if (DocumentElement != null)
-                               throw new InvalidOperationException ("XmlDataDocument does not support multi-time loading. New XmlDadaDocument is always required.");
-
-                       bool OldEC = DataSet.EnforceConstraints;
-                       DataSet.EnforceConstraints = false;
-                       dataSet.Tables.CollectionChanged -= tablesChanged;
-
-                       base.Load (reader);
-
-                       DataSet.EnforceConstraints = OldEC;
-                       dataSet.Tables.CollectionChanged += tablesChanged;
-               }
-               
-               #endregion // overloaded Load methods
-               #endregion // Public Methods
-
-               #region Protected Methods
-
-               [MonoTODO ("Create optimized XPathNavigator")]
-               protected override XPathNavigator CreateNavigator(XmlNode node) {
-                       return base.CreateNavigator (node);
-               }
-
-               #endregion // Protected Methods
-               
-               #region XmlDocument event handlers
-
-               private void OnNodeChanging (object sender, XmlNodeChangedEventArgs args)
-               {
-                       if (!this.raiseDocumentEvents)
-                               return;
-                       if (DataSet.EnforceConstraints) 
-                               throw new InvalidOperationException (Locale.GetText ("Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations."));
-               }
-
-               // Invoked when XmlNode is changed colum is changed
-               private void OnNodeChanged (object sender, XmlNodeChangedEventArgs args)
-               {
-                       if (!raiseDocumentEvents)
-                               return;
-                       bool escapedRaiseDataSetEvents = raiseDataSetEvents;
-                       raiseDataSetEvents = false;
-                       try {
-
-                               if (args.Node == null)
-                                       return;
-
-                               DataRow row = GetRowFromElement ((XmlElement)args.Node.ParentNode.ParentNode);
-
-                               if (row == null)
-                                       return;
-
-                               if (!row.Table.Columns.Contains (args.Node.ParentNode.Name))
-                                       return;
-
-                               if (row [args.Node.ParentNode.Name].ToString () != args.Node.InnerText) {
-                                       DataColumn col = row.Table.Columns [args.Node.ParentNode.Name];
-                                       row [col] = StringToObject (col.DataType, args.Node.InnerText);
-                               }
-
-                       } finally {
-                               raiseDataSetEvents = escapedRaiseDataSetEvents;
-                       }
-               }
-
-               private void OnNodeRemoving (object sender, XmlNodeChangedEventArgs args) 
-               {
-                       if (!this.raiseDocumentEvents)
-                               return;
-                       if (DataSet.EnforceConstraints) 
-                               throw new InvalidOperationException (Locale.GetText ("Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations."));
-                       
-               }
-               
-               // Invoked when XmlNode is removed
-               private void OnNodeRemoved (object sender, XmlNodeChangedEventArgs args)
-               {
-                       if (!raiseDocumentEvents)
-                               return;
-                       bool escapedRaiseDataSetEvents = raiseDataSetEvents;
-                       raiseDataSetEvents = false;
-
-                       try {
-                               if (args.OldParent == null)
-                                       return;
-
-                               XmlElement oldParentElem = args.OldParent as XmlElement;
-                               if (oldParentElem == null)
-                                       return;
-                               
-                               // detach child row (if exists)
-                               XmlElement childElem = args.Node as XmlElement;
-                               if (childElem != null) {
-                                       DataRow childRow = GetRowFromElement (childElem);
-                                       if (childRow != null)
-                                               childRow.Table.Rows.Remove (childRow);
-                               }
-
-                               DataRow row = GetRowFromElement (oldParentElem);
-                               
-                               if (row == null)
-                                       return ;
-
-                               row [args.Node.Name] = null;
-
-                       } finally {
-                               raiseDataSetEvents = escapedRaiseDataSetEvents;
-                       }
-               }
-
-               private void OnNodeInserting (object sender, XmlNodeChangedEventArgs args) 
-               {
-                       if (!this.raiseDocumentEvents)
-                               return;
-                       if (DataSet.EnforceConstraints) 
-                               throw new InvalidOperationException (Locale.GetText ("Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations."));
-               }
-               
-               private void OnNodeInserted (object sender, XmlNodeChangedEventArgs args)
-               {
-                       if (!raiseDocumentEvents)
-                               return;
-                       bool escapedRaiseDataSetEvents = raiseDataSetEvents;
-                       raiseDataSetEvents = false;
-
-                       // If the parent node is mapped to a DataTable, then
-                       // add a DataRow and map the parent element to it.
-                       //
-                       // AND If the child node is mapped to a DataTable, then
-                       // 1. if it is mapped to a DataTable and relation, add
-                       // a new DataRow and map the child element to it.
-                       // 2. if it is mapped to a DataColumn, set the column
-                       // value of the parent DataRow as the child
-
-                       try {
-                               if (! (args.NewParent is XmlElement)) {
-                                       // i.e. adding document element
-                                       foreach (XmlNode table in args.Node.ChildNodes)
-                                               CheckDescendantRelationship (table);
-                                       return;
-                               }
-
-                               DataRow row = GetRowFromElement (args.NewParent as XmlElement);
-                               if (row == null && args.Node is XmlCharacterData)
-                                       // check if grandparent is a new row and this node is one of its column values.
-                                       row = GetRowFromElement (args.NewParent.ParentNode as XmlElement);
-                               if (row == null) {
-                                       // That happens only when adding table to existing DocumentElement (aka DataSet element)
-                                       if (args.NewParent == DocumentElement)
-                                               CheckDescendantRelationship (args.Node);
-                                       return;
-                               }
-
-                               XmlAttribute attr = args.Node as XmlAttribute;
-                               if (attr != null) { // fill attribute value
-                                       DataColumn col = row.Table.Columns [XmlHelper.Decode (attr.LocalName)];
-                                       if (col != null)
-                                               row [col] = StringToObject (col.DataType, args.Node.Value);
-                               } else {
-                                       DataRow childRow = GetRowFromElement (args.Node as XmlElement);
-                                       if (childRow != null) {
-                                               // child might be a table row.
-                                               // I might be impossible to set parent
-                                               // since either of them might be detached
-                                               if (childRow.RowState != DataRowState.Detached && row.RowState != DataRowState.Detached) {
-                                                       FillRelationship (row, childRow, args.NewParent, args.Node);
-                                               }
-                                       } else if (args.Node.NodeType == XmlNodeType.Element) {
-                                               // child element might be a column
-                                               DataColumn col = row.Table.Columns [XmlHelper.Decode (args.Node.LocalName)];
-                                               if (col != null)
-                                                       row [col] = StringToObject (col.DataType, args.Node.InnerText);
-                                       } else if (args.Node is XmlCharacterData) {
-                                               if (args.Node.NodeType != XmlNodeType.Comment) {
-                                                       for (int i = 0; i < row.Table.Columns.Count; i++) {
-                                                               DataColumn col = row.Table.Columns [i];
-                                                               if (col.ColumnMapping == MappingType.SimpleContent || col.ColumnName == XmlHelper.Decode (args.NewParent.LocalName))
-                                                                       row [col] = StringToObject (col.DataType, args.Node.Value);
-                                                       }
-                                               }
-                                       }
-                               }
-                       } finally {
-                               raiseDataSetEvents = escapedRaiseDataSetEvents;
-                       }
-               }
-
-               private void CheckDescendantRelationship (XmlNode n)
-               {
-                       XmlElement el = n as XmlElement;
-                       DataRow row = GetRowFromElement (el);
-                       if (row == null)
-                               return;
-                       row.Table.Rows.Add (row); // attach
-                       CheckDescendantRelationship (n, row);
-               }
-
-               private void CheckDescendantRelationship (XmlNode p, DataRow row)
-               {
-                       foreach (XmlNode n in p.ChildNodes) {
-                               XmlElement el = n as XmlElement;
-                               if (el == null)
-                                       continue;
-                               DataRow childRow = GetRowFromElement (el);
-                               if (childRow == null)
-                                       continue;
-                               childRow.Table.Rows.Add (childRow);
-                               FillRelationship (row, childRow, p, el);
-                       }
-               }
-
-               private void FillRelationship (DataRow row, DataRow childRow, XmlNode parentNode, XmlNode childNode)
-               {
-                       for (int i = 0; i < childRow.Table.ParentRelations.Count; i++) {
-                               DataRelation rel = childRow.Table.ParentRelations [i];
-                               if (rel.ParentTable == row.Table) {
-                                       childRow.SetParentRow (row);
-                                       break;
-                               }
-                       }
-                       CheckDescendantRelationship (childNode, childRow);
-               }
-               #endregion // DataSet event handlers
-
-               #region DataSet event handlers
-
-               // If DataTable is added or removed from DataSet
-               private void OnDataTableChanged (object sender, CollectionChangeEventArgs eventArgs)
-               {
-                       if (!raiseDataSetEvents)
-                               return;
-                       bool escapedRaiseDocumentEvents = raiseDocumentEvents;
-                       raiseDocumentEvents = false;
-
-                       try {
-                               DataTable Table = (DataTable)eventArgs.Element;
-                               switch (eventArgs.Action) {
-                               case CollectionChangeAction.Add:
-                                       Table.ColumnChanged += columnChanged;
-                                       Table.RowDeleted += rowDeleted;
-                                       Table.RowChanged += rowChanged;
-                                       break;
-                               case CollectionChangeAction.Remove:
-                                       Table.ColumnChanged -= columnChanged;
-                                       Table.RowDeleted -= rowDeleted;
-                                       Table.RowChanged -= rowChanged;
-                                       break;
-                               }
-                       } finally {
-                               raiseDocumentEvents = escapedRaiseDocumentEvents;
-                       }
-               }
-
-               // If column has changed 
-               private void OnDataTableColumnChanged (object sender, 
-                                                            DataColumnChangeEventArgs eventArgs)
-               {
-                       if (!raiseDataSetEvents)
-                               return;
-                       bool escapedRaiseDocumentEvents = raiseDocumentEvents;
-                       raiseDocumentEvents = false;
-
-                       try {
-                               DataRow row = eventArgs.Row;
-                               XmlElement el = GetElementFromRow (row);
-                               if (el == null)
-                                       return;
-                               DataColumn col = eventArgs.Column;
-                               string value = row.IsNull (col) ? String.Empty : row [col].ToString ();
-                               switch (col.ColumnMapping) {
-                               case MappingType.Attribute:
-                                       el.SetAttribute (XmlHelper.Encode (col.ColumnName), col.Namespace, value);
-                                       break;
-                               case MappingType.SimpleContent:
-                                       el.InnerText = value;
-                                       break;
-                               case MappingType.Element:
-                                       bool exists = false;
-                                       for (int i = 0; i < el.ChildNodes.Count; i++) {
-                                               XmlElement c = el.ChildNodes [i] as XmlElement;
-                                               if (c != null && c.LocalName == XmlHelper.Encode (col.ColumnName) && c.NamespaceURI == col.Namespace) {
-                                                       exists = true;
-                                                       c.InnerText = value;
-                                                       break;
-                                               }
-                                       }
-                                       if (!exists) {
-                                               XmlElement cel = CreateElement (col.Prefix, XmlHelper.Encode (col.ColumnName), col.Namespace); 
-                                               cel.InnerText = value;
-                                               el.AppendChild (cel);
-                                       }
-                                       break;
-                               // FIXME: how to handle hidden?
-                               }
-                       } finally {
-                               raiseDocumentEvents = escapedRaiseDocumentEvents;
-                       }
-               }
-       
-               private void OnDataTableRowDeleted (object sender,
-                                                         DataRowChangeEventArgs eventArgs)
-               {
-                       if (!raiseDataSetEvents)
-                               return;
-                       bool escapedRaiseDocumentEvents = raiseDocumentEvents;
-                       raiseDocumentEvents = false;
-
-                       try {
-                               // This code is obsolete XmlDataDocument one
-
-                               XmlElement el = GetElementFromRow (eventArgs.Row);
-                               if (el == null)
-                                       return;
-
-                               el.ParentNode.RemoveChild (el);
-                       } finally {
-                               raiseDocumentEvents = escapedRaiseDocumentEvents;
-                       }
-               }
-               
-               [MonoTODO ("Need to handle hidden columns? - see comments on each private method")]
-               private void OnDataTableRowChanged (object sender, DataRowChangeEventArgs eventArgs)
-               {
-                       if (!raiseDataSetEvents)
-                               return;
-                       bool escapedRaiseDocumentEvents = raiseDocumentEvents;
-                       raiseDocumentEvents = false;
-                       try {
-
-                               switch (eventArgs.Action) {
-
-                               case DataRowAction.Delete:
-                                       OnDataTableRowDeleted (sender, eventArgs);
-                                       break;
-
-                               case DataRowAction.Add:
-                                       OnDataTableRowAdded (eventArgs);
-                                       break;
-
-                               case DataRowAction.Rollback:
-                                       OnDataTableRowRollback (eventArgs);
-                                       break;
-                               default:
-                                       break;
-                               } 
-                       } finally {
-                               raiseDocumentEvents = escapedRaiseDocumentEvents;
-                       }
-               }
-
-               // Added - see FillNodeChildrenFromRow comment
-               private void OnDataTableRowAdded (DataRowChangeEventArgs args)
-               {
-                       if (!raiseDataSetEvents)
-                               return;
-
-                       bool escapedRaiseDocumentEvents = raiseDocumentEvents;
-                       raiseDocumentEvents = false;
-
-                       try {
-                               // Create row element. Row's name same as TableName                                     
-                               DataRow row = args.Row;
-
-                               // create document element if it does not exist
-                               if (DocumentElement == null)
-                                       this.AppendChild (CreateElement (XmlHelper.Encode (DataSet.DataSetName)));
-
-                               DataTable table= args.Row.Table;
-                               XmlElement element = GetElementFromRow (row);
-                               if (element == null)
-                                       element = CreateElement (table.Prefix, XmlHelper.Encode (table.TableName), table.Namespace);
-
-                               if (element.ChildNodes.Count == 0)
-                                       FillNodeChildrenFromRow (row, element);
-
-                               if (element.ParentNode == null) {
-                                       // parent is not always DocumentElement.
-                                       XmlElement parent = null;
-
-                                       if (table.ParentRelations.Count > 0) {
-                                               for (int i = 0; i < table.ParentRelations.Count; i++) {
-                                                       DataRelation rel = table.ParentRelations [i];
-                                                       DataRow parentRow = row.GetParentRow (rel);
-                                                       if (parentRow == null)
-                                                               continue;
-                                                       parent = GetElementFromRow (parentRow);
-                                               }
-                                       }
-
-                                       // The row might be orphan. In such case, the 
-                                       // element is appended to DocumentElement.
-                                       if (parent == null)
-                                               parent = DocumentElement;
-                                       parent.AppendChild (element);
-                               }
-                       } finally {                     
-                               raiseDocumentEvents = escapedRaiseDocumentEvents;
-                       }
-               }
-
-               private void FillNodeChildrenFromRow (DataRow row, XmlElement element)
-               {
-                       DataTable table = row.Table;
-                       // fill columns for the row
-                       for (int i = 0; i < table.Columns.Count; i++) {
-                               DataColumn col = table.Columns [i];
-                               string value = row.IsNull (col) ? String.Empty : row [col].ToString ();
-                               switch (col.ColumnMapping) {
-                               case MappingType.Element:
-                                       XmlElement el = CreateElement (col.Prefix, XmlHelper.Encode (col.ColumnName), col.Namespace);
-                                       el.InnerText = value;
-                                       element.AppendChild (el);
-                                       break;
-                               case MappingType.Attribute:
-                                       XmlAttribute attr = CreateAttribute (col.Prefix, XmlHelper.Encode (col.ColumnName), col.Namespace);
-                                       attr.Value = value;
-                                       element.SetAttributeNode (attr);
-                                       break;
-                               case MappingType.SimpleContent:
-                                       XmlText text = CreateTextNode (value);
-                                       element.AppendChild (text);
-                                       break;
-                               // FIXME: how to handle hidden?
-                               }
-                       }
-               }
-
-               // Rollback
-               [MonoTODO ("It does not look complete.")]
-               private void OnDataTableRowRollback (DataRowChangeEventArgs args)
-               {
-                       if (!raiseDataSetEvents)
-                               return;
-                       bool escapedRaiseDocumentEvents = raiseDocumentEvents;
-                       raiseDocumentEvents = false;
-
-                       try {
-                               DataRow r = args.Row;
-                               XmlElement el = GetElementFromRow (r);
-                               if (el == null)
-                                       return;
-                               DataTable tab = r.Table;
-                               ArrayList al = new ArrayList ();
-                               foreach (XmlAttribute attr in el.Attributes) {
-                                       DataColumn col = tab.Columns [XmlHelper.Decode (attr.LocalName)];
-                                       if (col != null) {
-                                               if (r.IsNull (col))
-                                                       // should be removed
-                                                       al.Add (attr);
-                                               else
-                                                       attr.Value = r [col].ToString ();
-                                       }
-                               }
-                               foreach (XmlAttribute attr in al)
-                                       el.RemoveAttributeNode (attr);
-                               al.Clear ();
-                               foreach (XmlNode child in el.ChildNodes) {
-                                       if (child.NodeType == XmlNodeType.Element) {
-                                               DataColumn col = tab.Columns [XmlHelper.Decode (child.LocalName)];
-                                               if (col != null) {
-                                                       if (r.IsNull (col))
-                                                               al.Add (child);
-                                                       else
-                                                               child.InnerText = r [col].ToString ();
-                                               }
-                                       }
-                               }
-                               foreach (XmlNode n in al)
-                                       el.RemoveChild (n);
-                       } finally {
-                               raiseDocumentEvents = escapedRaiseDocumentEvents;
-                       }
-               }
-
-               #endregion // DataSet event handlers
-
-               #region Private methods
-               private void InitDelegateFields ()
-               {
-                       columnChanged = new DataColumnChangeEventHandler (OnDataTableColumnChanged);
-                       rowDeleted = new DataRowChangeEventHandler (OnDataTableRowDeleted);
-                       rowChanged = new DataRowChangeEventHandler (OnDataTableRowChanged);
-                       tablesChanged = new CollectionChangeEventHandler (OnDataTableChanged);
-               }
-               
-               private void RemoveXmlDocumentListeners ()
-               {
-                       this.NodeInserting -= new XmlNodeChangedEventHandler (OnNodeInserting);
-                       this.NodeInserted -= new XmlNodeChangedEventHandler (OnNodeInserted);
-                       this.NodeChanging -= new XmlNodeChangedEventHandler (OnNodeChanging);
-                       this.NodeChanged -= new XmlNodeChangedEventHandler (OnNodeChanged);
-                       this.NodeRemoving -= new XmlNodeChangedEventHandler (OnNodeRemoving);
-                       this.NodeRemoved -= new XmlNodeChangedEventHandler (OnNodeRemoved);
-               }
-
-               private void AddXmlDocumentListeners ()
-               {
-                       this.NodeInserting += new XmlNodeChangedEventHandler (OnNodeInserting);
-                       this.NodeInserted += new XmlNodeChangedEventHandler (OnNodeInserted);
-                       this.NodeChanging += new XmlNodeChangedEventHandler (OnNodeChanging);
-                       this.NodeChanged += new XmlNodeChangedEventHandler (OnNodeChanged);
-                       this.NodeRemoving += new XmlNodeChangedEventHandler (OnNodeRemoving);
-                       this.NodeRemoved += new XmlNodeChangedEventHandler (OnNodeRemoved);
-               }
-
-               internal static object StringToObject (Type type, string value)
-               {
-                       if (value == null || value == String.Empty)
-                               return DBNull.Value;
-
-                       switch (Type.GetTypeCode (type)) {
-                               case TypeCode.Boolean: return XmlConvert.ToBoolean (value);
-                               case TypeCode.Byte: return XmlConvert.ToByte (value);
-                               case TypeCode.Char: return (char)XmlConvert.ToInt32 (value);
-                               case TypeCode.DateTime: return XmlConvert.ToDateTime (value, XmlDateTimeSerializationMode.Unspecified);
-                               case TypeCode.Decimal: return XmlConvert.ToDecimal (value);
-                               case TypeCode.Double: return XmlConvert.ToDouble (value);
-                               case TypeCode.Int16: return XmlConvert.ToInt16 (value);
-                               case TypeCode.Int32: return XmlConvert.ToInt32 (value);
-                               case TypeCode.Int64: return XmlConvert.ToInt64 (value);
-                               case TypeCode.SByte: return XmlConvert.ToSByte (value);
-                               case TypeCode.Single: return XmlConvert.ToSingle (value);
-                               case TypeCode.UInt16: return XmlConvert.ToUInt16 (value);
-                               case TypeCode.UInt32: return XmlConvert.ToUInt32 (value);
-                               case TypeCode.UInt64: return XmlConvert.ToUInt64 (value);
-                       }
-
-                       if (type == typeof (TimeSpan)) return XmlConvert.ToTimeSpan (value);
-                       if (type == typeof (Guid)) return XmlConvert.ToGuid (value);
-                       if (type == typeof (byte[])) return Convert.FromBase64String (value);
-
-                       return Convert.ChangeType (value, type);
-               }
-               #endregion // Private methods
-       }
-}
-
index 217a30dce28d876cfcf56466daee4d61c5486fc8..84d958a752fcd55813680e894224727d155c1dc1 100644 (file)
@@ -120,18 +120,24 @@ namespace Monotests_Mono.Data.SqlExpressions
        [TestFixture]
        public class DataColumnCharTest
        {
-               private static DataTable _dt = new DataTable();
+               DataTable _dt;
 
-               [Test]
-               public void Test1 ()
+               [SetUp]
+               public void Setup ()
                {
+                       _dt = new DataTable();
+
                        _dt.Columns.Add(new DataColumn("a", typeof(char)));
 
                        AddData('1');
                        AddData('2');
                        AddData('3');
                        AddData('A');
+               }
 
+               [Test]
+               public void Test1 ()
+               {
                        Assert.AreEqual (true, FindRow("'A'"), "Test1-1 failed");
                        Assert.AreEqual (true, FindRow("65"), "Test1-2 failed");
                        Assert.AreEqual (true, FindRow("'1'"), "Test1-3 failed");
@@ -143,13 +149,14 @@ namespace Monotests_Mono.Data.SqlExpressions
                {
                        FindRow("'65'");
                }
+
                [Test]
                public void Test3 ()
                {
                        Assert.AreEqual (false, FindRow ("1"), "Test3-1 failed");
                }
 
-               private static bool FindRow(string f)
+               private bool FindRow(string f)
                {
                        string filter = string.Format("a = {0}", f);
 
@@ -161,7 +168,7 @@ namespace Monotests_Mono.Data.SqlExpressions
                                return true;
                }
 
-               private static void AddData(char a)
+               private void AddData(char a)
                {
                        DataRow row = _dt.NewRow();
                        row["a"] = a;
index 3fbebc38fe2161a31094cda68499bd2854ee450c..560620c3c2a145b950445cc2976533cf251b9134 100644 (file)
@@ -58,6 +58,7 @@ namespace MonoTests.System.Data
                public void Setup () {
                        currentCultureBackup = Thread.CurrentThread.CurrentCulture;
                        Thread.CurrentThread.CurrentCulture = new CultureInfo ("fi-FI");
+                       MyDataSet.count = 0;
                }
 
                //[SetUp]
@@ -2565,7 +2566,7 @@ namespace MonoTests.System.Data
 
         public  class MyDataSet:DataSet {
 
-            public static int count = 0;
+            public static int count;
                                                                                                     
              public MyDataSet() {
 
index 0f2d40ad39a66bceda31268280f56e33d6bd6227..982552769968b64b80de2b4238701ac20d10f0ce 100644 (file)
@@ -54,6 +54,12 @@ namespace MonoTests.System.Data
        [TestFixture]
        public class DataTableTest :  DataSetAssertion
        {
+               [SetUp]
+               public void Setup ()
+               {
+                       MyDataTable.count = 0;
+               }
+
                string EOL = Environment.NewLine;
 
                [Test]
@@ -816,6 +822,7 @@ namespace MonoTests.System.Data
                }
                
                [Test]
+               [SetCulture("en-US")]
                public void PropertyExceptions ()
                {
                        DataSet set = new DataSet ();
@@ -3220,6 +3227,7 @@ namespace MonoTests.System.Data
                }
 
                [Test]
+               [SetCulture ("en-GB")]
                public void WriteXmlSchema ()
                {
                        DataSet ds = new DataSet ();
@@ -3242,7 +3250,7 @@ namespace MonoTests.System.Data
                        substring = TextString.Substring (0, TextString.IndexOf (EOL));
                        TextString = TextString.Substring (TextString.IndexOf (EOL) + EOL.Length);
                        // Looks like whoever added this test depended on English culture, which is wrong.
-                       Assert.AreEqual ("  <xs:element msdata:IsDataSet=\"true\" msdata:MainDataTable=\"Region\" msdata:UseCurrentLocale=\"true\" name=\"Root\">", substring, "test#03");
+                       Assert.AreEqual ("  <xs:element msdata:IsDataSet=\"true\" msdata:Locale=\"en-US\" msdata:MainDataTable=\"Region\" name=\"Root\">", substring, "test#03");
 
                        substring = TextString.Substring (0, TextString.IndexOf (EOL));
                        TextString = TextString.Substring (TextString.IndexOf (EOL) + EOL.Length);
@@ -4173,7 +4181,7 @@ namespace MonoTests.System.Data
 
        public  class MyDataTable : DataTable
        {
-               public static int count = 0;
+               public static int count;
 
                public MyDataTable()
                {
@@ -4205,6 +4213,7 @@ namespace MonoTests.System.Data
 #endif
 
                [Test]
+               [SetCulture ("en-US")]
                public void Bug55978 ()
                {
                        DataTable dt = new DataTable ();
index 1e79f7e3ff12d56af5f1172e5b737c9d3c9f8697..49d876e35fe76846ec68ffd03aad17acde43aacc 100644 (file)
@@ -10,10 +10,10 @@ ReferenceSources/ResCategoryAttribute.cs
 ReferenceSources/ResDescriptionAttribute.cs
 ReferenceSources/ThisAssembly.cs
 ReferenceSources/Win32NativeMethods.cs
+ReferenceSources/SqlInternalConnectionTds.cs
 
 ReferenceSources/mobile_DbConnectionPoolCounters.cs
 
-System.Data.Sql/SqlDataSourceEnumerator.cs
 System.Data.Sql/SqlNotificationRequest.cs
 Microsoft.SqlServer.Server/Format.cs
 Microsoft.SqlServer.Server/DataAccessKind.cs
@@ -37,21 +37,15 @@ System.Data.SqlClient/SqlNotificationSource.cs
 System.Data.SqlClient/SqlAsyncState.cs
 System.Data.SqlClient/SqlAsyncResult.cs
 System.Data.SqlClient/SqlClientMetaDataCollectionNames.cs
-System.Data.SqlClient/SqlClientPermission.cs
-System.Data.SqlClient/SqlClientPermissionAttribute.cs
 System.Data.SqlClient/SqlCommand.cs
 System.Data.SqlClient/SqlCommandBuilder.cs
 System.Data.SqlClient/SqlConnection.cs
-System.Data.SqlClient/SqlConnectionStringBuilder.cs
 System.Data.SqlClient/SqlCredential.cs
 System.Data.SqlClient/SqlDataAdapter.cs
 System.Data.SqlClient/SqlDataReader.cs
 System.Data.SqlClient/SqlDataSourceConverter.cs
 System.Data.SqlClient/SqlDependency.cs
-System.Data.SqlClient/SqlError.cs
-System.Data.SqlClient/SqlErrorCollection.cs
 System.Data.SqlClient/SqlException.cs
-System.Data.SqlClient/SqlInfoMessageEventArgs.cs
 System.Data.SqlClient/SqlInfoMessageEventHandler.cs
 System.Data.SqlClient/SqlInitialCatalogConverter.cs
 System.Data.SqlClient/NetworkLibraryConverter.cs
index cf6c782316c92fa7ef62cb0f5bb9d63bdfe67a28..b1b921bbb8c9c185280ba0f5baa737c7f6852478 100644 (file)
@@ -9,6 +9,7 @@
 ../../../external/referencesource/System.Data/System/Data/AggregateType.cs
 ../../../external/referencesource/System.Data/System/Data/BaseCollection.cs
 ../../../external/referencesource/System.Data/System/Data/CatalogLocation.cs
+../../../external/referencesource/System.Data/System/Data/CodeGen/StrongTypingException.cs
 ../../../external/referencesource/System.Data/System/Data/ColumnTypeConverter.cs
 ../../../external/referencesource/System.Data/System/Data/CommandBehavior.cs
 ../../../external/referencesource/System.Data/System/Data/CommandType.cs
@@ -63,7 +64,6 @@
 ../../../external/referencesource/System.Data/System/Data/Common/MultipartIdentifier.cs
 ../../../external/referencesource/System.Data/System/Data/Common/NameValuePair.cs
 ../../../external/referencesource/System.Data/System/Data/Common/NameValuePermission.cs
-../../../external/referencesource/System.Data/System/Data/Common/NativeMethods.cs
 ../../../external/referencesource/System.Data/System/Data/Common/ObjectStorage.cs
 ../../../external/referencesource/System.Data/System/Data/Common/RowUpdatedEventArgs.cs
 ../../../external/referencesource/System.Data/System/Data/Common/RowUpdatingEventArgs.cs
 ../../../external/referencesource/System.Data/System/Data/Merger.cs
 ../../../external/referencesource/System.Data/System/Data/MissingMappingAction.cs
 ../../../external/referencesource/System.Data/System/Data/MissingSchemaAction.cs
+../../../external/referencesource/System.Data/System/Data/OleDb/OleDbType.cs
+../../../external/referencesource/System.Data/System/Data/OleDb/PropertyAttributes.cs
 ../../../external/referencesource/System.Data/System/Data/OperationAbortedException.cs
 ../../../external/referencesource/System.Data/System/Data/ParameterDirection.cs
 ../../../external/referencesource/System.Data/System/Data/PrimaryKeyTypeConverter.cs
 ../../../external/referencesource/System.Data/System/NewXml/XmlDataDocument.cs
 ../../../external/referencesource/System.Data/System/NewXml/XmlDataImplementation.cs
 ../../../external/referencesource/System.Data/System/NewXml/XPathNodePointer.cs
-../../../external/referencesource/System.Data/System/Data/OleDb/OleDbType.cs
+
+../../../external/referencesource/System.Data/System/Data/Sql/SqlDataSourceEnumerator.cs
 
 ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/LocalDBAPI.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlClientPermission.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionString.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionStringBuilder.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlError.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlErrorCollection.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlInfoMessageEvent.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlUtil.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/TdsEnums.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/TdsParserStaticMethods.cs
+
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBinary.cs
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBoolean.cs
index 04f7f47cb21bb958ea4b2fb7e16b86c9316d7703..59c3b8483883ba8d0b3b56d345afee2a861a696a 100644 (file)
@@ -10,8 +10,8 @@ ReferenceSources/ResCategoryAttribute.cs
 ReferenceSources/ResDescriptionAttribute.cs
 ReferenceSources/ThisAssembly.cs
 ReferenceSources/Win32NativeMethods.cs
+ReferenceSources/SqlInternalConnectionTds.cs
 
-System.Data.Sql/SqlDataSourceEnumerator.cs
 System.Data.Sql/SqlNotificationRequest.cs
 Microsoft.SqlServer.Server/Format.cs
 Microsoft.SqlServer.Server/DataAccessKind.cs
@@ -35,21 +35,15 @@ System.Data.SqlClient/SqlNotificationSource.cs
 System.Data.SqlClient/SqlAsyncState.cs
 System.Data.SqlClient/SqlAsyncResult.cs
 System.Data.SqlClient/SqlClientMetaDataCollectionNames.cs
-System.Data.SqlClient/SqlClientPermission.cs
-System.Data.SqlClient/SqlClientPermissionAttribute.cs
 System.Data.SqlClient/SqlCommand.cs
 System.Data.SqlClient/SqlCommandBuilder.cs
 System.Data.SqlClient/SqlConnection.cs
-System.Data.SqlClient/SqlConnectionStringBuilder.cs
 System.Data.SqlClient/SqlCredential.cs
 System.Data.SqlClient/SqlDataAdapter.cs
 System.Data.SqlClient/SqlDataReader.cs
 System.Data.SqlClient/SqlDataSourceConverter.cs
 System.Data.SqlClient/SqlDependency.cs
-System.Data.SqlClient/SqlError.cs
-System.Data.SqlClient/SqlErrorCollection.cs
 System.Data.SqlClient/SqlException.cs
-System.Data.SqlClient/SqlInfoMessageEventArgs.cs
 System.Data.SqlClient/SqlInfoMessageEventHandler.cs
 System.Data.SqlClient/SqlInitialCatalogConverter.cs
 System.Data.SqlClient/NetworkLibraryConverter.cs
index f787d709695ef041902b0d05143303afae5bc968..04985c2d9bf173f0c6e559d84f547384601c6ee4 100644 (file)
 ../../../external/referencesource/System.Data/System/NewXml/XmlDataImplementation.cs
 ../../../external/referencesource/System.Data/System/NewXml/XPathNodePointer.cs
 
+../../../external/referencesource/System.Data/System/Data/Sql/SqlDataSourceEnumerator.cs
+
 ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/LocalDBAPI.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlClientPermission.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionString.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlConnectionStringBuilder.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlError.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlErrorCollection.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlInfoMessageEvent.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/SqlUtil.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/TdsEnums.cs
+../../../external/referencesource/System.Data/System/Data/SqlClient/TdsParserStaticMethods.cs
+
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBinary.cs
 ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLBoolean.cs
index 526514d25cb49198568280c9352682eeb4dfc33c..7bfc9b32567ffd64e1adc1850f38002f4a28b461 100644 (file)
@@ -66,6 +66,9 @@ namespace SharpCompress.Common.Zip.Headers
 
         protected void LoadExtra(byte[] extra)
         {
+            if (extra.Length % 2 != 0)
+                return;
+                       
             for (int i = 0; i < extra.Length;)
             {
                 ExtraDataType type = (ExtraDataType) BitConverter.ToUInt16(extra, i);
index f93ecfbb496c1eae60e4f63c8952e0d426ad6bc8..8a42eff58b061c3f4502527c73ba6b1dbc5119bd 100644 (file)
@@ -4,7 +4,7 @@ include ../../build/rules.make
 
 LIBRARY = System.Runtime.Caching.dll
 LIB_REFS = System System.Data System.Configuration System.Core
-LIB_MCS_FLAGS =
+LIB_MCS_FLAGS = -nowarn:414
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
index 9c887fb0c0977e022678d9c68522e0745f8907c6..60f89fd8ad690af6215024715cf921206434c2d8 100644 (file)
@@ -50,12 +50,16 @@ namespace System.Runtime.Caching
 
                protected void Add (MemoryCacheEntry entry)
                {
-                       entries.Add (entry);
+                       lock (entries) {
+                               entries.Add (entry);
+                       }
                }
 
                protected void Remove (MemoryCacheEntry entry)
                {
-                       entries.Remove (entry);
+                       lock (entries) {
+                               entries.Remove (entry);
+                       }
                }
 
                protected int FlushItems (DateTime limit, CacheEntryRemovedReason reason, bool blockInsert, int count = int.MaxValue)
index 07b39eeab02e15be0c561ab2fea1bff4f798b3fa..0a040329bd6bd56902d0a82d2090a70361bfae14 100644 (file)
@@ -40,13 +40,13 @@ namespace System.Runtime.Caching
                {
                }
 
-               public void Add (MemoryCacheEntry entry)
+               public new void Add (MemoryCacheEntry entry)
                {
                        entry.ExpiresEntryRef = new ExpiresEntryRef ();
                        base.Add (entry);
                }
 
-               public void Remove (MemoryCacheEntry entry)
+               public new void Remove (MemoryCacheEntry entry)
                {
                        base.Remove (entry);
                        entry.ExpiresEntryRef = ExpiresEntryRef.INVALID;
index cd5ecf6c0442642b1a281a4c093965c46e790e3f..82b6014a978f51eb6b11dca2a4c70cac102eeb1a 100644 (file)
@@ -45,7 +45,7 @@ namespace System.Runtime.Caching {
                {
                }
 
-               public void Add (MemoryCacheEntry entry)
+               public new void Add (MemoryCacheEntry entry)
                {
                        var now = DateTime.UtcNow;
                        if (now == prevDateTime)
@@ -61,7 +61,7 @@ namespace System.Runtime.Caching {
                        base.Add (entry);
                }
 
-               public void Remove (MemoryCacheEntry entry)
+               public new void Remove (MemoryCacheEntry entry)
                {
                        base.Remove (entry);
                        entry.UsageEntryRef = UsageEntryRef.INVALID;
index ce0812bcc1c8db847ab8a1f13bb5bb72f890f63e..644a2fc0b22572a63a86ae74a053e1377c6b5fcc 100644 (file)
@@ -11,14 +11,17 @@ namespace System.Runtime.Caching {
      */
     internal class SRef {
 
-        private Object _sizedRef;
+//        private Object _sizedRef;
 
         internal SRef (Object target) {
-            _sizedRef = target;
+//            _sizedRef = target;
         }
 
         internal long ApproximateSize {
-            get { return (long) Marshal.SizeOf (_sizedRef.GetType ()); }
+            get {
+                // TODO: .net uses System.SizedReference which contains approximate size after Gen 2 collection
+                return 16;
+            }
         }
 
         internal void Dispose() {
index 567d257f08b4a147ee42d871ba8b8c43f71de6bb..72f0502653ff20a5fbdbc762065705a8df2670fc 100644 (file)
@@ -2,7 +2,9 @@
 // AssemblyInfo.cs
 //
 // Author:
-//   Joel W. Reed (joelwreed@gmail.com)
+//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//
+// (C) 2003 Ximian, Inc.  http://www.ximian.com
 //
 
 //
@@ -30,32 +32,45 @@ using System;
 using System.Reflection;
 using System.Resources;
 using System.Security;
+using System.Security.Permissions;
+using System.Diagnostics;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
-// General Information about the System.ServiceModel assembly
-
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: SatelliteContractVersion (Consts.FxVersion)]
+// General Information about the System.Runtime.DurableInstancing assembly
+// v3.0 Assembly
 
 [assembly: AssemblyTitle ("System.Runtime.DurableInstancing.dll")]
 [assembly: AssemblyDescription ("System.Runtime.DurableInstancing.dll")]
-[assembly: AssemblyConfiguration ("Development version")]
-[assembly: AssemblyCompany ("MONO development team")]
-[assembly: AssemblyProduct ("MONO CLI")]
-[assembly: AssemblyCopyright ("(c) 2003 Various Authors")]
-[assembly: AssemblyTrademark ("")]
-
-[assembly: CLSCompliant (true)]
 [assembly: AssemblyDefaultAlias ("System.Runtime.DurableInstancing.dll")]
-[assembly: AssemblyInformationalVersion ("3.5.594.0")]
-[assembly: NeutralResourcesLanguage ("en-US")]
 
-[assembly: ComVisible (false)]
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: SatelliteContractVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
 
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: CLSCompliant (true)]
 [assembly: AssemblyDelaySign (true)]
 #if NET_2_1
 [assembly: AssemblyKeyFile ("../silverlight.pub")]
 #else
-[assembly: AssemblyKeyFile("../winfx.pub")]
+[assembly: AssemblyKeyFile ("../winfx.pub")]
+[assembly: AllowPartiallyTrustedCallers]
+[assembly: ComCompatibleVersion (1, 0, 3300, 0)]
+[assembly: SecurityCritical (SecurityCriticalScope.Explicit)]
 #endif
+
+[assembly: InternalsVisibleTo ("System.Activities, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.Runtime.Serialization, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.IdentityModel, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.IdentityModel.Selectors, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.ServiceModel.Activities, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.ServiceModel.Activation, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+[assembly: InternalsVisibleTo ("System.ServiceModel.Routing, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
+
+[assembly: ComVisible (false)]
index bb0c8b4220750526557b37554f2ab4d44e3163b9..3db6eeb9c154442353bc23bbada7950be1cbbfb2 100644 (file)
@@ -3,7 +3,7 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.Runtime.DurableInstancing.dll
-LIB_REFS = System System.Xml System.Runtime.Serialization System.Core System.Xml.Linq
+LIB_REFS = System System.Xml System.Core System.Xml.Linq System.Transactions System.ServiceModel.Internals System.Runtime.Serialization
 LIB_MCS_FLAGS =
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
diff --git a/mcs/class/System.Runtime.DurableInstancing/SRCore.cs b/mcs/class/System.Runtime.DurableInstancing/SRCore.cs
new file mode 100644 (file)
index 0000000..ced21d7
--- /dev/null
@@ -0,0 +1,93 @@
+using System;
+using System.Xml.Linq;
+
+       public static class SRCore
+       {
+               // external/referencesource/System.Runtime.DurableInstancing$ grep -R SRCore. | sed -e "s/.*SRCore.\([a-zA-Z0-9_]*\).*/\\1/" | sort | uniq | sed -e "s/\(.*\)/public const string \1 = \"\1\";/"
+public const string AsyncTransactionException = "AsyncTransactionException";
+public const string BindLockRequiresCommandFlag = "BindLockRequiresCommandFlag";
+public const string BindReclaimedLockException = "BindReclaimedLockException";
+public const string BindReclaimSucceeded = "BindReclaimSucceeded";
+public const string CannotAcquireLockDefault = "CannotAcquireLockDefault";
+public static string CannotAcquireLockSpecific (object arg1) { return "CannotAcquireLockSpecific"; }
+public static string CannotAcquireLockSpecificWithOwner (object arg1, object arg2) { return "CannotAcquireLockSpecificWithOwner"; }
+public const string CannotCompleteWithKeys = "CannotCompleteWithKeys";
+public const string CannotCreateContextWithNullId = "CannotCreateContextWithNullId";
+public const string CannotInvokeBindingFromNonBinding = "CannotInvokeBindingFromNonBinding";
+public const string CannotInvokeTransactionalFromNonTransactional = "CannotInvokeTransactionalFromNonTransactional";
+public const string CannotReplaceTransaction = "CannotReplaceTransaction";
+public const string CommandExecutionCannotOverlap = "CommandExecutionCannotOverlap";
+public const string CompletedMustNotHaveAssociatedKeys = "CompletedMustNotHaveAssociatedKeys";
+public const string ContextAlreadyBoundToInstance = "ContextAlreadyBoundToInstance";
+public const string ContextAlreadyBoundToLock = "ContextAlreadyBoundToLock";
+public const string ContextAlreadyBoundToOwner = "ContextAlreadyBoundToOwner";
+public const string ContextMustBeBoundToInstance = "ContextMustBeBoundToInstance";
+public const string ContextMustBeBoundToOwner = "ContextMustBeBoundToOwner";
+public const string ContextNotFromThisStore = "ContextNotFromThisStore";
+public const string DoNotCompleteTryCommandWithPendingReclaim = "DoNotCompleteTryCommandWithPendingReclaim";
+public const string ExecuteMustBeNested = "ExecuteMustBeNested";
+public static string GenericInstanceCommand (object arg1) { return "GenericInstanceCommand"; }
+public const string GenericInstanceCommandNull = "GenericInstanceCommandNull";
+public const string GuidCannotBeEmpty = "GuidCannotBeEmpty";
+public const string HandleFreed = "HandleFreed";
+public const string HandleFreedBeforeInitialized = "HandleFreedBeforeInitialized";
+public static string InitialMetadataCannotBeDeleted (object arg1) { return "InitialMetadataCannotBeDeleted"; }
+public const string InstanceCollisionDefault = "InstanceCollisionDefault";
+public static string InstanceCollisionSpecific (Guid arg1) { return "InstanceCollisionSpecific"; }
+public const string InstanceCompleteDefault = "InstanceCompleteDefault";
+public static string InstanceCompleteSpecific (Guid arg1) { return "InstanceCompleteSpecific"; }
+public const string InstanceHandleConflictDefault = "InstanceHandleConflictDefault";
+public static string InstanceHandleConflictSpecific (Guid arg1) { return "InstanceHandleConflictSpecific"; }
+public const string InstanceKeyRequiresValidGuid = "InstanceKeyRequiresValidGuid";
+public const string InstanceLockLostDefault = "InstanceLockLostDefault";
+public static string InstanceLockLostSpecific (Guid arg1) { return "InstanceLockLostSpecific"; }
+public const string InstanceNotReadyDefault = "InstanceNotReadyDefault";
+public static string InstanceNotReadySpecific (Guid arg1) { return "InstanceNotReadySpecific"; }
+public const string InstanceOperationRequiresInstance = "InstanceOperationRequiresInstance";
+public const string InstanceOperationRequiresLock = "InstanceOperationRequiresLock";
+public const string InstanceOperationRequiresNotCompleted = "InstanceOperationRequiresNotCompleted";
+public const string InstanceOperationRequiresNotUninitialized = "InstanceOperationRequiresNotUninitialized";
+public const string InstanceOperationRequiresOwner = "InstanceOperationRequiresOwner";
+public const string InstanceOwnerDefault = "InstanceOwnerDefault";
+public static string InstanceOwnerSpecific (Guid arg1) { return "InstanceOwnerSpecific"; }
+public const string InstanceStoreBoundSameVersionTwice = "InstanceStoreBoundSameVersionTwice";
+public const string InvalidInstanceState = "InvalidInstanceState";
+public const string InvalidKeyArgument = "InvalidKeyArgument";
+public const string InvalidLockToken = "InvalidLockToken";
+public const string KeyAlreadyAssociated = "KeyAlreadyAssociated";
+public const string KeyAlreadyCompleted = "KeyAlreadyCompleted";
+public const string KeyAlreadyUnassociated = "KeyAlreadyUnassociated";
+public const string KeyCollisionDefault = "KeyCollisionDefault";
+public static string KeyCollisionSpecific (object arg1) { return "KeyCollisionSpecific"; }
+public static string KeyCollisionSpecific (object arg1, object arg2, object arg3) { return "KeyCollisionSpecific"; }
+public static string KeyCollisionSpecificKeyOnly (object arg1) { return "KeyCollisionSpecificKeyOnly"; }
+public const string KeyCompleteDefault = "KeyCompleteDefault";
+public static string KeyCompleteSpecific (object arg1) { return "KeyCompleteSpecific"; }
+public const string KeyNotAssociated = "KeyNotAssociated";
+public const string KeyNotCompleted = "KeyNotCompleted";
+public const string KeyNotReadyDefault = "KeyNotReadyDefault";
+public static string KeyNotReadySpecific (object arg1) { return "KeyNotReadySpecific"; }
+public const string LoadedWriteOnlyValue = "LoadedWriteOnlyValue";
+public const string MayBindLockCommandShouldValidateOwner = "MayBindLockCommandShouldValidateOwner";
+public const string MetadataCannotContainNullKey =  "MetadataCannotContainNullKey";
+public static string MetadataCannotContainNullValue (object arg1) { return "MetadataCannotContainNullValue"; }
+public const string MustSetTransactionOnFirstCall = "MustSetTransactionOnFirstCall";
+public static string NameCollisionOnCollect (XName arg1, object arg2) { return "NameCollisionOnCollect"; }
+public static string NameCollisionOnMap (XName arg1, object arg2) { return "NameCollisionOnMap"; }
+public const string OnCancelRequestedThrew = "OnCancelRequestedThrew";
+public const string OnFreeInstanceHandleThrew = "OnFreeInstanceHandleThrew";
+public static string OutsideInstanceExecutionScope (object arg1) { return "OutsideInstanceExecutionScope"; }
+public static string OutsideTransactionalCommand (object arg1) { return "OutsideTransactionalCommand"; }
+public const string OwnerBelongsToWrongStore = "OwnerBelongsToWrongStore";
+public static string PersistencePipelineAbortThrew (object arg1) { return "PersistencePipelineAbortThrew"; }
+public static string ProviderDoesNotSupportCommand (object arg1) { return  "ProviderDoesNotSupportCommand"; }
+public const string StoreReportedConflictingLockTokens = "StoreReportedConflictingLockTokens";
+public const string TimedOutWaitingForLockResolution = "TimedOutWaitingForLockResolution";
+public const string TransactionInDoubtNonHost = "TransactionInDoubtNonHost";
+public const string TransactionRolledBackNonHost = "TransactionRolledBackNonHost";
+public const string TryCommandCannotExecuteSubCommandsAndReduce = "TryCommandCannotExecuteSubCommandsAndReduce";
+public const string UninitializedCannotHaveData = "UninitializedCannotHaveData";
+public const string WaitAlreadyInProgress = "WaitAlreadyInProgress";
+public static string WaitForEventsTimedOut (TimeSpan arg1) { return "WaitForEventsTimedOut"; }
+       }
+
index a0f79b7e1b75f61f7aacb7d0a5fdcefbef820b50..d31328ff2651723242b88776b57e31215496307b 100644 (file)
@@ -1,19 +1,53 @@
 ../../build/common/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
+../../build/common/SR.cs
+
+SRCore.cs
+
 Assembly/AssemblyInfo.cs
-System.Runtime.DurableInstancing/AllEnums.cs
-System.Runtime.DurableInstancing/AllExceptions.cs
-System.Runtime.DurableInstancing/InstanceHandle.cs
-System.Runtime.DurableInstancing/InstanceKey.cs
-System.Runtime.DurableInstancing/InstanceKeyView.cs
-System.Runtime.DurableInstancing/InstanceLockQueryResult.cs
-System.Runtime.DurableInstancing/InstanceOwner.cs
-System.Runtime.DurableInstancing/InstanceOwnerQueryResult.cs
-System.Runtime.DurableInstancing/InstancePersistenceCommand.cs
-System.Runtime.DurableInstancing/InstancePersistenceContext.cs
-System.Runtime.DurableInstancing/InstancePersistenceEvent.cs
-System.Runtime.DurableInstancing/InstanceStore.cs
-System.Runtime.DurableInstancing/InstanceStoreQueryResult.cs
-System.Runtime.DurableInstancing/InstanceValue.cs
-System.Runtime.DurableInstancing/InstanceView.cs
+
+../../../external/referencesource/System.Runtime.DurableInstancing/AssemblyInfo.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/DisassociateInstanceKeysExtension.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/IDurableInstancingOptions.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceCollisionException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceCompleteException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceHandleConflictException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceHandle.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceHandleReference.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceKeyCollisionException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceKeyCompleteException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceKey.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceKeyNotReadyException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceKeyState.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceKeyView.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceLockedException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceLockLostException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceLockQueryResult.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceNormalEvent.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceNotReadyException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceOwner.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceOwnerException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceOwnerQueryResult.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistenceCommand.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistenceCommandException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistenceContext.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistence.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistenceEvent.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistenceException.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceState.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceStore.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceStoreQueryResult.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceValueConsistency.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceValue.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceValueOptions.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceView.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/ICancelable.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/IPersistencePipelineModule.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/PersistenceMetadataNamespace.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/PersistencePipeline.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/TransactedAsyncResult.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/TransactionHelper.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/Workflow45Namespace.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/WorkflowNamespace.cs
+../../../external/referencesource/System.Runtime.DurableInstancing/System/Runtime/WorkflowServiceNamespace.cs
diff --git a/mcs/class/System.Runtime.Serialization.Json/Assembly/AssemblyInfo.cs b/mcs/class/System.Runtime.Serialization.Json/Assembly/AssemblyInfo.cs
deleted file mode 100644 (file)
index 9ef66ef..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2003 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Reflection;
-using System.Resources;
-using System.Security;
-using System.Diagnostics;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about the System.Runtime.Serialization.Json assembly
-// v2.1 Assembly
-
-[assembly: AssemblyTitle ("System.Runtime.Serialization.Json.dll")]
-[assembly: AssemblyDescription ("System.Runtime.Serialization.Json.dll")]
-[assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Json.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: SatelliteContractVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-
-[assembly: NeutralResourcesLanguage ("en-US")]
-[assembly: CLSCompliant (true)]
-[assembly: AssemblyDelaySign (true)]
-#if NET_2_1
-[assembly: AssemblyKeyFile ("../silverlight.pub")]
-#else
-[assembly: AssemblyKeyFile ("../ecma.pub")]
-#endif
-
-[assembly: ComVisible (false)]
-[assembly: AllowPartiallyTrustedCallers]
-
-[assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
diff --git a/mcs/class/System.Runtime.Serialization.Json/Makefile b/mcs/class/System.Runtime.Serialization.Json/Makefile
deleted file mode 100644 (file)
index cf3d387..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-thisdir = class/System.Runtime.Serialization.Json
-SUBDIRS = 
-include ../../build/rules.make
-
-LIBRARY = System.Runtime.Serialization.Json.dll
-LIB_REFS = System System.Xml System.Runtime.Serialization System.Core
-LIB_MCS_FLAGS =
-
-TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
-
-EXTRA_DISTFILES = $(RESOURCE_FILES)
-
-VALID_PROFILE := $(filter 2.1, $(FRAMEWORK_VERSION))
-ifndef VALID_PROFILE
-LIBRARY_NAME = dummy-System.Runtime.Serialization.Json.dll
-NO_INSTALL = yes
-NO_SIGN_ASSEMBLY = yes
-endif
-
-include ../../build/library.make
diff --git a/mcs/class/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources b/mcs/class/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources
deleted file mode 100644 (file)
index 74425b6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-Assembly/AssemblyInfo.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
index fd73dc6f690275316ad53ae6e08f92d0efd7228d..140a936dbdb077ab0879e5655011e51eb1fb141c 100644 (file)
@@ -57,8 +57,6 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyDelaySign (true)]
 #if NET_2_1
 [assembly: AssemblyKeyFile ("../silverlight.pub")]
-[assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9")]
-[assembly: InternalsVisibleTo ("System.ServiceModel.Web, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
 #else
 [assembly: AssemblyKeyFile ("../ecma.pub")]
 [assembly: AllowPartiallyTrustedCallers]
@@ -68,5 +66,7 @@ using System.Runtime.InteropServices;
 // FIXME: mcs in 2-10 branch breaks System.ServiceModel build on resolving this. So, disabling it so far.
 // [assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=00000000000000000400000000000000")]
 #endif
+[assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull)]
+[assembly: InternalsVisibleTo ("System.ServiceModel.Web, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull)]
 
 [assembly: ComVisible (false)]
index 88da7618a64f7487fa837b6d2003fc4bf790c560..11daea6117999fa69cce146e6a3074c046019067 100644 (file)
@@ -2,21 +2,21 @@ thisdir = class/System.Runtime.Serialization
 SUBDIRS = 
 include ../../build/rules.make
 
-RESOURCE_FILES = \
-       resources/mstypes.schema
+RESOURCE_FILES =
 
 LIBRARY = System.Runtime.Serialization.dll
-LIB_REFS = System System.Xml System.Core
+LIB_REFS = System System.Xml System.Core System.ServiceModel.Internals SMDiagnostics
 LIB_MCS_FLAGS = \
                -unsafe \
+               -d:NO_DYNAMIC_CODEGEN \
                /nowarn:168,169,219,414 \
                $(RESOURCE_FILES:%=/resource:%)
 
-RESOURCE_STRINGS = ../../../external/referencesource/System.Runtime.Serialization/System.Runtime.Serialization.txt
-
 ifneq (2.1, $(FRAMEWORK_VERSION))
 LIB_REFS += System.Data System.Configuration
 LIB_MCS_FLAGS += /d:NET_3_0
+else
+LIB_MCS_FLAGS += /d:NO_CONFIGURATION /d:NO_SECURITY_ATTRIBUTES /d:NO_CODEDOM /d:NO_DESKTOP_SECURITY
 endif
 
 TEST_RESOURCE_FILES = \
@@ -29,6 +29,8 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) /r:System.ServiceModel.dll /r:System.Web.Servi
 EXTRA_DISTFILES = $(RESOURCE_FILES) $(TEST_RESOURCE_FILES) \
        Test/Resources/FrameworkTypes/* \
        Test/Resources/Schemas/*.xsd \
-       Test/System.Runtime.Serialization/one.xml
+       Test/System.Runtime.Serialization/one.xml \
+       ReferenceSource.common.sources \
+       ReferenceSource.desktop.sources
 
 include ../../build/library.make
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSource.common.sources b/mcs/class/System.Runtime.Serialization/ReferenceSource.common.sources
new file mode 100644 (file)
index 0000000..8f8e792
--- /dev/null
@@ -0,0 +1,131 @@
+
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/AppSettings.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Attributes.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ClassDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/CollectionDataContractAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/CollectionDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ContractNamespaceAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractResolver.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractSerializer.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractSerializerSettings.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractSet.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataMemberAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataMember.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DateTimeFormat.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DateTimeOffsetAdapter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Diagnostics/TraceCode.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Diagnostics/TraceUtility.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DictionaryGlobals.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/EmitTypeInformation.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/EnumDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/EnumMemberAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ExportOptions.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ExtensionDataObject.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ExtensionDataReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/GenericParameterDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Globals.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/HybridObjectCache.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/IDataContractSurrogate.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/IExtensibleDataObject.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/IgnoreDataMemberAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/InvalidDataContractException.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/ByteArrayHelperWithString.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/DataContractJsonSerializer.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/DataContractJsonSerializerSettings.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/IXmlJsonReaderInitializer.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/IXmlJsonWriterInitializer.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonByteArrayDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonClassDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonCollectionDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonEncodingStreamWrapper.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonEnumDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonFormatGeneratorStatics.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonFormatReaderGenerator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonFormatWriterGenerator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonGlobals.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonNodeType.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonObjectDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonQNameDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonReaderDelegator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonReaderWriterFactory.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonStringDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonUriDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonWriterDelegator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonXmlDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/XmlJsonReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/XmlJsonWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/XmlObjectSerializerReadContextComplexJson.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/XmlObjectSerializerWriteContextComplexJson.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/KnownTypeAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/KnownTypeDataContractResolver.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/NetDataContractSerializer.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ObjectReferenceStack.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ObjectToIdCache.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/PrimitiveDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ScopedKnownTypes.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SerializationMode.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SerializationPermissionNotRequiredAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SerializationTrace.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SpecialTypeDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SurrogateDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/TypeInformation.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlDataContract.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlFormatGeneratorStatics.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlFormatReaderGenerator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlFormatWriterGenerator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerContext.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializer.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerReadContextComplex.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerReadContext.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerWriteContextComplex.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerWriteContext.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlReaderDelegator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlSerializableReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlSerializableServices.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlSerializableWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlWriterDelegator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XPathQueryGenerator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Text/Base64Encoding.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Text/BinHexEncoding.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Text/SurrogateChar.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/ArrayHelper.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/EncodingStreamWrapper.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/IFragmentCapableXmlDictionaryWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/IStreamProvider.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/IXmlDictionary.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/PrefixHandle.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/StringHandle.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/UniqueID.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/ValueHandle.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBaseReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBaseWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBinaryNodeType.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBinaryReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBinaryReaderSession.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBinaryWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBinaryWriterSession.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlBufferReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlC14NWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlConverter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDelegatedReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDelegatedWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDictionary.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDictionaryReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDictionaryReaderQuotas.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDictionaryString.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlDictionaryWriter.cs
+# ../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlExceptionHelper.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlMtomReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlMtomWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlNodeWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlNodeWriterWriteBase64TextArgs.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlSigningNodeWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlStreamNodeWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlUTF8TextReader.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlUTF8TextWriter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Xml/XmlWriteBase64AsyncArgs.cs
+../../../external/referencesource/System.Runtime.Serialization/TD.Designer.cs
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSource.desktop.sources b/mcs/class/System.Runtime.Serialization/ReferenceSource.desktop.sources
new file mode 100644 (file)
index 0000000..8cc95f1
--- /dev/null
@@ -0,0 +1,29 @@
+
+#include ReferenceSource.common.sources
+
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/ConfigurationStrings.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/DataContractSerializerSection.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/DeclaredTypeElementCollection.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/DeclaredTypeElement.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/DeclaredTypeValidatorAttribute.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/DeclaredTypeValidator.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/NetDataContractSerializerSection.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/ParameterElementCollection.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/ParameterElement.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/Properties.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/SerializationSectionGroup.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/TypeElementCollection.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/TypeElement.cs
+
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/CodeExporter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ContractCodeDomInfo.cs
+
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ExportOptions.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ImportOptions.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SchemaExporter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SchemaHelper.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/SchemaImporter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XsdDataContractExporter.cs
+../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XsdDataContractImporter.cs
+
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/BitFlagsGenerator.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/BitFlagsGenerator.cs
new file mode 100644 (file)
index 0000000..73a2f1e
--- /dev/null
@@ -0,0 +1,76 @@
+using System;
+
+namespace System.Runtime.Serialization
+{
+       public class BitFlagsGenerator
+       {
+               int bitCount;
+               byte [] locals;
+               
+               public BitFlagsGenerator (int bitCount)
+               {
+                       this.bitCount = bitCount;
+                       int localCount = (bitCount+7)/8;
+                       locals = new byte [localCount];
+               }
+               
+               public void Store (int bitIndex, bool value)
+               {
+                       if (value)
+                               locals [GetByteIndex (bitIndex)] |= GetBitValue(bitIndex);
+                       else
+                               locals [GetByteIndex (bitIndex)] &= (byte) ~GetBitValue(bitIndex);
+               }
+               
+               public bool Load (int bitIndex)
+               {
+                       var local = locals[GetByteIndex(bitIndex)];
+                       byte bitValue = GetBitValue(bitIndex);
+                       return (local & bitValue) == bitValue;
+               }
+               
+               public byte [] LoadArray ()
+               {
+                       return (byte []) locals.Clone ();
+               }
+               
+               public int GetLocalCount ()
+               {
+                       return locals.Length;
+               }
+               
+               public int GetBitCount ()
+               {
+                       return bitCount;
+               }
+               
+               public byte GetLocal (int i)
+               {
+                       return locals [i];
+               }
+               
+               public static bool IsBitSet (byte[] bytes, int bitIndex)
+               {
+                       int byteIndex = GetByteIndex (bitIndex);
+                       byte bitValue = GetBitValue (bitIndex);
+                       return (bytes[byteIndex] & bitValue) == bitValue;
+               }
+
+               public static void SetBit (byte[] bytes, int bitIndex)
+               {
+                       int byteIndex = GetByteIndex (bitIndex);
+                       byte bitValue = GetBitValue (bitIndex);
+                       bytes[byteIndex] |= bitValue;
+               }
+
+               static int GetByteIndex (int bitIndex)
+               {
+                       return bitIndex >> 3;
+               }
+               
+               static byte GetBitValue (int bitIndex)
+               {
+                       return (byte)(1 << (bitIndex & 7));
+               }
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/CodeInterpreter.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/CodeInterpreter.cs
new file mode 100644 (file)
index 0000000..4de29bb
--- /dev/null
@@ -0,0 +1,84 @@
+using System;
+using System.Reflection;
+
+namespace System.Runtime.Serialization
+{
+       public class CodeInterpreter
+       {
+
+               internal static object ConvertValue(object arg, Type source, Type target)
+               {
+                       return InternalConvert(arg, source, target, false);
+               }
+
+
+        static bool CanConvert (TypeCode typeCode)
+        {
+            switch (typeCode)
+            {
+                case TypeCode.Boolean:
+                case TypeCode.Char:
+                case TypeCode.SByte:
+                case TypeCode.Byte:
+                case TypeCode.Int16:
+                case TypeCode.UInt16:
+                case TypeCode.Int32:
+                case TypeCode.UInt32:
+                case TypeCode.Int64:
+                case TypeCode.UInt64:
+                case TypeCode.Single:
+                case TypeCode.Double:
+                                       return true;
+            }
+            return false;
+        }
+
+               static object InternalConvert(object arg, Type source, Type target, bool isAddress)
+               {
+
+            if (target == source)
+                return arg;
+            if (target.IsValueType)
+            {
+                if (source.IsValueType)
+                {
+                    if (!CanConvert (Type.GetTypeCode (target)))
+                        throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.NoConversionPossibleTo, DataContract.GetClrTypeFullName(target))));
+                    else
+                                               return target;
+                }
+                else if (source.IsAssignableFrom(target))
+                                       return arg;
+                else
+                    throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.IsNotAssignableFrom, DataContract.GetClrTypeFullName(target), DataContract.GetClrTypeFullName(source))));
+            }
+            else if (target.IsAssignableFrom(source))
+                               return arg;
+            else if (source.IsAssignableFrom(target))
+                               return arg;
+            else if (target.IsInterface || source.IsInterface)
+                               return arg;
+            else
+                throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.IsNotAssignableFrom, DataContract.GetClrTypeFullName(target), DataContract.GetClrTypeFullName(source))));
+               }
+
+               public static object GetMember (MemberInfo memberInfo, object instance)
+               {
+                       var pi = memberInfo as PropertyInfo;
+                       if (pi != null)
+                               return pi.GetValue (instance);
+                       else
+                               return ((FieldInfo) memberInfo).GetValue (instance);
+               }
+
+               public static void SetMember (MemberInfo memberInfo, object instance, object value)
+               {
+                       var pi = memberInfo as PropertyInfo;
+                       if (pi != null)
+                               pi.SetValue (instance, value);
+                       else
+                               ((FieldInfo) memberInfo).SetValue (instance, value);
+               }
+       }
+}
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/DiagnosticUtility.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/DiagnosticUtility.cs
new file mode 100644 (file)
index 0000000..bcde2c4
--- /dev/null
@@ -0,0 +1,61 @@
+using System.Diagnostics;
+
+namespace System.Runtime.Serialization {
+
+       internal static class DiagnosticUtility {
+               internal static bool ShouldTraceError = true;
+               internal static bool ShouldTraceWarning;
+               internal static bool ShouldTraceInformation;
+               internal static bool ShouldTraceVerbose = true;
+
+               internal static class DiagnosticTrace {
+                       internal static void TraceEvent (params object [] args)
+                       {
+                       }
+                       
+               }
+               
+               internal static class ExceptionUtility {
+                       internal static Exception ThrowHelperError (Exception e)
+                       {
+                               return ThrowHelper (e, TraceEventType.Error);
+                       }
+
+                       internal static Exception ThrowHelperCallback (string msg, Exception e)
+                       {
+                               return new CallbackException (msg, e);
+                       }
+
+                       internal static Exception ThrowHelperCallback (Exception e)
+                       {
+                               return new CallbackException ("Callback exception", e);
+                       }
+
+                       internal static Exception ThrowHelper (Exception e, TraceEventType type)
+                       {
+                               return e;
+                       }
+
+                       internal static Exception ThrowHelperArgument (string arg)
+                       {
+                               return new ArgumentException (arg);
+                       }
+
+                       internal static Exception ThrowHelperArgument (string arg, string message)
+                       {
+                               return new ArgumentException (message, arg);
+                       }
+
+                       internal static Exception ThrowHelperArgumentNull (string arg)
+                       {
+                               return new ArgumentNullException (arg);
+                       }
+
+                       internal static Exception ThrowHelperFatal (string msg, Exception e)
+                       {
+                               return new FatalException (msg, e);
+                       }
+               }
+       }
+}
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/FxTrace.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/FxTrace.cs
new file mode 100644 (file)
index 0000000..72e7f97
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// bare-bones based implementation based on the references
+// from the Microsoft reference source code to get things to build
+//
+using System.Runtime;
+using System.Runtime.Diagnostics;
+
+namespace System.Runtime.Serialization {
+       internal static class FxTrace {
+               public static EtwDiagnosticTrace Trace {
+                       get {
+                               return Fx.Trace;
+                       }
+               }
+
+               public static bool ShouldTraceError = true;
+               public static bool ShouldTraceVerbose = true;
+
+               static ExceptionTrace exception;
+               public static ExceptionTrace Exception {
+                       get {
+                               if (exception == null)
+                                       return new ExceptionTrace ("System.Runtime.Serialization", Trace);
+                               return exception;
+                       }
+               }
+
+               public static bool IsEventEnabled (int index)
+               {
+                       return false;
+               }
+
+               public static void UpdateEventDefinitions (EventDescriptor [] ed, ushort [] events) {}
+       }
+}
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/JsonFormatReaderGenerator_static.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/JsonFormatReaderGenerator_static.cs
new file mode 100644 (file)
index 0000000..53ad58d
--- /dev/null
@@ -0,0 +1,707 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime;
+using System.Xml;
+
+namespace System.Runtime.Serialization.Json
+{
+       internal partial class JsonFormatReaderGenerator
+       {
+               partial class CriticalHelper
+               {
+                       internal JsonFormatClassReaderDelegate GenerateClassReader(ClassDataContract classContract)
+                       {
+                               return (XmlReaderDelegator xr, XmlObjectSerializerReadContextComplexJson ctx, XmlDictionaryString emptyDictionaryString, XmlDictionaryString [] memberNames) => new JsonFormatReaderInterpreter (classContract).ReadFromJson (xr, ctx, emptyDictionaryString, memberNames);
+                       }
+
+                       internal JsonFormatCollectionReaderDelegate GenerateCollectionReader(CollectionDataContract collectionContract)
+                       {
+                               return (XmlReaderDelegator xr, XmlObjectSerializerReadContextComplexJson ctx, XmlDictionaryString emptyDS, XmlDictionaryString inm, CollectionDataContract cc) => new JsonFormatReaderInterpreter (collectionContract, false).ReadCollectionFromJson (xr, ctx, emptyDS, inm, cc);
+                       }
+                       
+                       internal JsonFormatGetOnlyCollectionReaderDelegate GenerateGetOnlyCollectionReader(CollectionDataContract collectionContract)
+                       {
+                               return (XmlReaderDelegator xr, XmlObjectSerializerReadContextComplexJson ctx, XmlDictionaryString emptyDS, XmlDictionaryString inm, CollectionDataContract cc) => new JsonFormatReaderInterpreter (collectionContract, true).ReadGetOnlyCollectionFromJson (xr, ctx, emptyDS, inm, cc);
+                       }
+               }
+       }
+
+       class JsonFormatReaderInterpreter
+       {
+               public JsonFormatReaderInterpreter (ClassDataContract classContract)
+               {
+                       this.classContract = classContract;
+               }
+
+               public JsonFormatReaderInterpreter (CollectionDataContract collectionContract, bool isGetOnly)
+               {
+                       this.collectionContract = collectionContract;
+                       this.is_get_only_collection = isGetOnly;
+               }
+
+               bool is_get_only_collection;
+
+               ClassDataContract classContract;
+
+               CollectionDataContract collectionContract;
+
+               object objectLocal;
+               Type objectType;
+               XmlReaderDelegator xmlReader;
+               XmlObjectSerializerReadContextComplexJson context;
+
+               XmlDictionaryString [] memberNames = null;
+               XmlDictionaryString emptyDictionaryString = null;
+               XmlDictionaryString itemName = null;
+               XmlDictionaryString itemNamespace = null;
+
+               public object ReadFromJson (XmlReaderDelegator xmlReader, XmlObjectSerializerReadContextComplexJson context, XmlDictionaryString emptyDictionaryString, XmlDictionaryString[] memberNames)
+               {
+                       // InitArgs()
+                       this.xmlReader = xmlReader;
+                       this.context = context;
+                       this.emptyDictionaryString = emptyDictionaryString;
+                       this.memberNames = memberNames;
+                       
+                       //DemandSerializationFormatterPermission(classContract);
+                       //DemandMemberAccessPermission(memberAccessFlag);
+                       CreateObject (classContract);
+                       
+                       context.AddNewObject (objectLocal);
+                       InvokeOnDeserializing (classContract);
+            
+            string objectId = null;
+            
+                       if (classContract.IsISerializable)
+                               ReadISerializable (classContract);
+                       else
+                               ReadClass (classContract);
+                       if (Globals.TypeOfIDeserializationCallback.IsAssignableFrom (classContract.UnderlyingType))
+                               ((IDeserializationCallback) objectLocal).OnDeserialization (null);
+                       InvokeOnDeserialized(classContract);
+                       if (!InvokeFactoryMethod (classContract)) {
+
+                               // Do a conversion back from DateTimeOffsetAdapter to DateTimeOffset after deserialization.
+                               // DateTimeOffsetAdapter is used here for deserialization purposes to bypass the ISerializable implementation
+                               // on DateTimeOffset; which does not work in partial trust.
+
+                               if (classContract.UnderlyingType == Globals.TypeOfDateTimeOffsetAdapter)
+                                       objectLocal = DateTimeOffsetAdapter.GetDateTimeOffset ((DateTimeOffsetAdapter) objectLocal);
+                               // else - do we have to call CodeInterpreter.ConvertValue()? I guess not...
+                       }
+                       return objectLocal;
+               }
+               
+               public object ReadCollectionFromJson (XmlReaderDelegator xmlReader, XmlObjectSerializerReadContextComplexJson context, XmlDictionaryString emptyDictionaryString, XmlDictionaryString itemName, CollectionDataContract collectionContract)
+               {
+                       #region GenerateCollectionReaderHelper
+                       // InitArgs()
+                       this.xmlReader = xmlReader;
+                       this.context = context;
+                       this.emptyDictionaryString = emptyDictionaryString;
+                       this.itemName = itemName;
+
+                       this.collectionContract = collectionContract;
+
+                       #endregion
+
+                       ReadCollection (collectionContract);
+
+                       return objectLocal;
+               }
+               
+               public void ReadGetOnlyCollectionFromJson (XmlReaderDelegator xmlReader, XmlObjectSerializerReadContextComplexJson context, XmlDictionaryString emptyDictionaryString, XmlDictionaryString itemName, CollectionDataContract collectionContract)
+               {
+                       #region GenerateCollectionReaderHelper
+                       // InitArgs()
+                       this.xmlReader = xmlReader;
+                       this.context = context;
+                       this.emptyDictionaryString = emptyDictionaryString;
+                       this.itemName = itemName;
+
+                       this.collectionContract = collectionContract;
+
+                       #endregion
+
+                       ReadGetOnlyCollection (collectionContract);
+               }
+
+               void CreateObject (ClassDataContract classContract)
+               {
+                       Type type = objectType = classContract.UnderlyingType;
+                       if (type.IsValueType && !classContract.IsNonAttributedType)
+                               type = Globals.TypeOfValueType;
+
+                       if (classContract.UnderlyingType == Globals.TypeOfDBNull)
+                               objectLocal = DBNull.Value;
+                       else if (classContract.IsNonAttributedType) {
+                               if (type.IsValueType)
+                                       objectLocal = FormatterServices.GetUninitializedObject (type);
+                               else
+                                       objectLocal = classContract.GetNonAttributedTypeConstructor ().Invoke (new object [0]);
+                       }
+                       else
+                               objectLocal = CodeInterpreter.ConvertValue (XmlFormatReaderGenerator.UnsafeGetUninitializedObject (DataContract.GetIdForInitialization (classContract)), Globals.TypeOfObject, type);
+               }
+
+               void InvokeOnDeserializing (ClassDataContract classContract)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnDeserializing (classContract.BaseContract);
+                       if (classContract.OnDeserializing != null)
+                               classContract.OnDeserializing.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+               }
+
+               void InvokeOnDeserialized (ClassDataContract classContract)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnDeserialized (classContract.BaseContract);
+                       if (classContract.OnDeserialized != null)
+                               classContract.OnDeserialized.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+               }
+
+               bool HasFactoryMethod (ClassDataContract classContract)
+               {
+                       return Globals.TypeOfIObjectReference.IsAssignableFrom (classContract.UnderlyingType);
+               }
+
+               bool InvokeFactoryMethod (ClassDataContract classContract)
+               {
+                       if (HasFactoryMethod (classContract)) {
+                               objectLocal = CodeInterpreter.ConvertValue (context.GetRealObject ((IObjectReference) objectLocal, Globals.NewObjectId), Globals.TypeOfObject, classContract.UnderlyingType);
+                               return true;
+                       }
+                       return false;
+               }
+
+               void ReadISerializable (ClassDataContract classContract)
+               {
+                       ConstructorInfo ctor = classContract.UnderlyingType.GetConstructor (Globals.ScanAllMembers, null, JsonFormatGeneratorStatics.SerInfoCtorArgs, null);
+                       if (ctor == null)
+                               throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError (XmlObjectSerializer.CreateSerializationException (SR.GetString (SR.SerializationInfo_ConstructorNotFound, DataContract.GetClrTypeFullName (classContract.UnderlyingType))));
+                       context.ReadSerializationInfo (xmlReader, classContract.UnderlyingType);
+                       ctor.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+               }
+
+               void ReadClass (ClassDataContract classContract)
+               {
+                       if (classContract.HasExtensionData) {
+                               ExtensionDataObject extensionData = new ExtensionDataObject ();
+                               ReadMembers (classContract, extensionData);
+                               ClassDataContract currentContract = classContract;
+                               while (currentContract != null) {
+                                       MethodInfo extensionDataSetMethod = currentContract.ExtensionDataSetMethod;
+                                       if (extensionDataSetMethod != null)
+                                               extensionDataSetMethod.Invoke (objectLocal, new object [] {extensionData});
+                                       currentContract = currentContract.BaseContract;
+                               }
+                       }
+                       else
+                               ReadMembers (classContract, null);
+               }
+
+               void ReadMembers (ClassDataContract classContract, ExtensionDataObject  extensionData)
+               {
+                       int memberCount = classContract.MemberNames.Length;
+                       context.IncrementItemCount (memberCount);
+
+                       int memberIndex = -1;
+                       
+                       // JSON intrinsic part.
+                       BitFlagsGenerator expectedElements = new BitFlagsGenerator (memberCount);
+                       byte [] requiredElements = new byte [expectedElements.GetLocalCount ()];
+                       SetRequiredElements (classContract, requiredElements);
+                       SetExpectedElements (expectedElements, 0 /*startIndex*/);
+
+                       while (XmlObjectSerializerReadContext.MoveToNextElement (xmlReader)) {
+                               int idx; // used as in "switch (idx)" in the original source.
+                               idx = context.GetJsonMemberIndex (xmlReader, memberNames, memberIndex, extensionData);
+
+                               if (memberCount > 0)
+                                       ReadMembers (idx, classContract, expectedElements, ref memberIndex);
+                       }
+
+                       if (!CheckRequiredElements (expectedElements, requiredElements))
+                               XmlObjectSerializerReadContextComplexJson.ThrowMissingRequiredMembers (objectLocal, memberNames, expectedElements.LoadArray (), requiredElements);
+               }
+
+               int ReadMembers (int index, ClassDataContract classContract, BitFlagsGenerator expectedElements, ref int memberIndex)
+               {
+                       int memberCount = (classContract.BaseContract == null) ? 0 : ReadMembers (index, classContract.BaseContract, expectedElements,
+                       ref memberIndex);
+                       
+                       if (memberCount <= index && index < memberCount + classContract.Members.Count) {
+                               DataMember dataMember = classContract.Members [index - memberCount];
+                               Type memberType = dataMember.MemberType;
+                               
+                               memberIndex = memberCount;
+                               if (!expectedElements.Load (index))
+                                       XmlObjectSerializerReadContextComplexJson.ThrowDuplicateMemberException (objectLocal, memberNames, memberIndex);
+
+                               if (dataMember.IsGetOnlyCollection) {
+                                       var value = CodeInterpreter.GetMember (dataMember.MemberInfo, objectLocal);
+                                       context.StoreCollectionMemberInfo (value);
+                                       ReadValue (memberType, dataMember.Name);
+                               } else {
+                                       var value = ReadValue (memberType, dataMember.Name);
+                                       CodeInterpreter.SetMember (dataMember.MemberInfo, objectLocal, value);
+                               }
+                               memberIndex = index;
+                               ResetExpectedElements (expectedElements, index);
+                       }
+                       return memberCount + classContract.Members.Count;
+               }
+
+               bool CheckRequiredElements (BitFlagsGenerator expectedElements, byte [] requiredElements)
+               {
+                       for (int i = 0; i < requiredElements.Length; i++)
+                               if ((expectedElements.GetLocal(i) & requiredElements[i]) != 0)
+                                       return false;
+                       return true;
+               }
+
+               int SetRequiredElements (ClassDataContract contract, byte [] requiredElements)
+               {
+                       int memberCount = (contract.BaseContract == null) ? 0 :
+                       SetRequiredElements (contract.BaseContract, requiredElements);
+                       List<DataMember> members = contract.Members;
+                       for (int i = 0; i < members.Count; i++, memberCount++) {
+                               if (members[i].IsRequired)
+                                       BitFlagsGenerator.SetBit (requiredElements, memberCount);
+                       }
+                       return memberCount;
+               }
+
+               void SetExpectedElements (BitFlagsGenerator expectedElements, int startIndex)
+               {
+                       int memberCount = expectedElements.GetBitCount ();
+                       for (int i = startIndex; i < memberCount; i++)
+                               expectedElements.Store (i, true);
+               }
+
+               void ResetExpectedElements (BitFlagsGenerator expectedElements, int index)
+               {
+                       expectedElements.Store (index, false);
+               }
+
+               object ReadValue (Type type, string name)
+               {
+                       var valueType = type;
+                       object value = null;
+                       bool shouldAssignNullableValue = false;
+                       int nullables = 0;
+                       while (type.IsGenericType && type.GetGenericTypeDefinition () == Globals.TypeOfNullable) {
+                               nullables++;
+                               type = type.GetGenericArguments () [0];
+                       }
+                       
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract (type);
+                       if ((primitiveContract != null && primitiveContract.UnderlyingType != Globals.TypeOfObject) || nullables != 0 || type.IsValueType) {
+                               context.ReadAttributes (xmlReader);
+                               string objectId = context.ReadIfNullOrRef (xmlReader, type, DataContract.IsTypeSerializable (type));
+                               // Deserialize null
+                if (objectId == Globals.NullObjectId) {
+                                       
+                                       if (nullables != 0)
+                                               value = Activator.CreateInstance (valueType);
+                                       else if (type.IsValueType)
+                                               throw new SerializationException (SR.GetString (SR.ValueTypeCannotBeNull, DataContract.GetClrTypeFullName (type)));
+                                       else
+                                               value = null;
+                               } else if (objectId == string.Empty) {
+                                       // Deserialize value
+
+                                       // Compare against Globals.NewObjectId, which is set to string.Empty
+                                       
+                                       objectId = context.GetObjectId ();
+                                       
+                                       if (type.IsValueType) {
+                                               if (!string.IsNullOrEmpty (objectId))
+                                                       throw new SerializationException (SR.GetString (SR.ValueTypeCannotHaveId, DataContract.GetClrTypeFullName(type)));
+                                       }
+                                       object innerValueRead = null;
+                                       if (nullables != 0)
+                                               shouldAssignNullableValue = true;
+
+                                       if (primitiveContract != null && primitiveContract.UnderlyingType != Globals.TypeOfObject) {
+                                               value = primitiveContract.XmlFormatReaderMethod.Invoke (xmlReader, new object [0]);
+                                               if (!type.IsValueType)
+                                                       context.AddNewObject (value);
+                                       }
+                                       else
+                                                       value = InternalDeserialize (type, name);
+                               } else {
+                                       // Deserialize ref
+                                       if (type.IsValueType)
+                                               throw new SerializationException (SR.GetString (SR.ValueTypeCannotHaveRef, DataContract.GetClrTypeFullName (type)));
+                                       else
+                                               value = CodeInterpreter.ConvertValue (context.GetExistingObject (objectId, type, name, string.Empty), Globals.TypeOfObject, type);
+                               }
+
+                               if (shouldAssignNullableValue) {
+                                       if (objectId != Globals.NullObjectId)
+                                               value = WrapNullableObject (type, value, valueType, nullables);
+                               }
+                       }
+                       else
+                               value = InternalDeserialize (type, name);
+
+                       return value;
+               }
+
+               object InternalDeserialize (Type type, string name)
+               {
+                       Type declaredType = type.IsPointer ? Globals.TypeOfReflectionPointer : type;
+                       var obj = context.InternalDeserialize (xmlReader, DataContract.GetId (declaredType.TypeHandle), declaredType.TypeHandle, name, string.Empty);
+
+                       if (type.IsPointer)
+                               // wow, there is no way to convert void* to object in strongly typed way...
+                               return JsonFormatGeneratorStatics.UnboxPointer.Invoke (null, new object [] {obj});
+                       else
+                               return CodeInterpreter.ConvertValue (obj, Globals.TypeOfObject, type);
+               }
+
+               object WrapNullableObject (Type innerType, object innerValue, Type outerType, int nullables)
+               {
+                       var outerValue = innerValue;
+                       for (int i = 1; i < nullables; i++) {
+                               Type type = Globals.TypeOfNullable.MakeGenericType (innerType);
+                               outerValue = Activator.CreateInstance (type, new object[] { outerValue });
+                               innerType = type;
+                       }
+                       return Activator.CreateInstance (outerType, new object[] { outerValue });
+               }
+
+
+               void ReadCollection (CollectionDataContract collectionContract)
+               {
+                       Type type = collectionContract.UnderlyingType;
+                       Type itemType = collectionContract.ItemType;
+                       bool isArray = (collectionContract.Kind == CollectionKind.Array);
+
+                       ConstructorInfo constructor = collectionContract.Constructor;
+
+                       if (type.IsInterface) {
+                               switch (collectionContract.Kind) {
+                               case CollectionKind.GenericDictionary:
+                                       type = Globals.TypeOfDictionaryGeneric.MakeGenericType (itemType.GetGenericArguments ());
+                                       constructor = type.GetConstructor (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Globals.EmptyTypeArray, null);
+                                       break;
+                               case CollectionKind.Dictionary:
+                                       type = Globals.TypeOfHashtable;
+                                       constructor = type.GetConstructor (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Globals.EmptyTypeArray, null);
+                                       break;
+                               case CollectionKind.Collection:
+                               case CollectionKind.GenericCollection:
+                               case CollectionKind.Enumerable:
+                               case CollectionKind.GenericEnumerable:
+                               case CollectionKind.List:
+                               case CollectionKind.GenericList:
+                                       type = itemType.MakeArrayType ();
+                                       isArray = true;
+                                       break;
+                               }
+                       }
+
+                       if (!isArray) {
+                               if (type.IsValueType)
+                                       // FIXME: this is not what the original code does.
+                                       objectLocal = FormatterServices.GetUninitializedObject (type);
+                               else {
+                                       objectLocal = constructor.Invoke (new object [0]);
+                                       context.AddNewObject (objectLocal);
+                               }
+                       }
+
+                       bool canReadSimpleDictionary = collectionContract.Kind == CollectionKind.Dictionary ||
+                       collectionContract.Kind == CollectionKind.GenericDictionary;
+
+                       bool readSimpleDictionary = canReadSimpleDictionary & context.UseSimpleDictionaryFormat;
+                       if (readSimpleDictionary)
+                               ReadSimpleDictionary (collectionContract, itemType);
+                       else {   
+                               string objectId = context.GetObjectId ();
+
+                               bool canReadPrimitiveArray = false, readResult = false;
+                               if (isArray && TryReadPrimitiveArray (itemType, out readResult))
+                                       canReadPrimitiveArray = true;
+
+                               if (!canReadPrimitiveArray) {
+                                       object growingCollection = null;
+                                       if (isArray)
+                                               growingCollection = Array.CreateInstance (itemType, 32);
+
+                                       int i = 0;
+                                       // FIXME: I cannot find i++ part, but without that it won't work as expected.
+                                       for (; i < int.MaxValue; i++) {
+                                               if (IsStartElement (this.itemName, this.emptyDictionaryString)) {
+                                                       context.IncrementItemCount (1);
+                                                       object value = ReadCollectionItem (collectionContract, itemType);
+                                                       if (isArray) {
+                                                               MethodInfo ensureArraySizeMethod = XmlFormatGeneratorStatics.EnsureArraySizeMethod.MakeGenericMethod (itemType);
+                                                               growingCollection = ensureArraySizeMethod.Invoke (null, new object [] {growingCollection, i});
+                                                               ((Array) growingCollection).SetValue (value, i);
+                                                       } else {
+                                                               StoreCollectionValue (objectLocal, itemType, value, collectionContract);
+                                                       }
+                                               }
+                                               else if (IsEndElement ())
+                                                       break;
+                                               else
+                                                       HandleUnexpectedItemInCollection (ref i);
+                                       }
+
+                                       if (isArray) {
+                                               MethodInfo trimArraySizeMethod = XmlFormatGeneratorStatics.TrimArraySizeMethod.MakeGenericMethod (itemType);
+                                               objectLocal = trimArraySizeMethod.Invoke (null, new object [] {growingCollection, i});
+                                               context.AddNewObjectWithId (objectId, objectLocal);
+                                       }
+                               }
+                               else
+                                       context.AddNewObjectWithId (objectId, objectLocal);
+                       }
+               }
+
+               void ReadSimpleDictionary (CollectionDataContract collectionContract, Type keyValueType)
+               {
+                       Type[] keyValueTypes = keyValueType.GetGenericArguments ();
+                       Type keyType = keyValueTypes [0];
+                       Type valueType = keyValueTypes [1];
+
+                       int keyTypeNullableDepth = 0;
+                       Type keyTypeOriginal = keyType;
+                       while (keyType.IsGenericType && keyType.GetGenericTypeDefinition () == Globals.TypeOfNullable) {
+                               keyTypeNullableDepth++;
+                               keyType = keyType.GetGenericArguments () [0];
+                       }
+
+                       ClassDataContract keyValueDataContract = (ClassDataContract)collectionContract.ItemContract;
+                       DataContract keyDataContract = keyValueDataContract.Members [0].MemberTypeContract;
+
+                       KeyParseMode keyParseMode = KeyParseMode.Fail;
+
+                       if (keyType == Globals.TypeOfString || keyType == Globals.TypeOfObject) {
+                               keyParseMode = KeyParseMode.AsString;
+                       } else if (keyType.IsEnum) {
+                               keyParseMode = KeyParseMode.UsingParseEnum;
+                       } else if (keyDataContract.ParseMethod != null) {
+                               keyParseMode = KeyParseMode.UsingCustomParse;
+                       }
+
+                       if (keyParseMode == KeyParseMode.Fail) {
+                               ThrowSerializationException (
+                               SR.GetString (
+                               SR.KeyTypeCannotBeParsedInSimpleDictionary,
+                               DataContract.GetClrTypeFullName (collectionContract.UnderlyingType),
+                               DataContract.GetClrTypeFullName (keyType)));
+                       } else {
+                               XmlNodeType nodeType;
+
+                               while ((nodeType = xmlReader.MoveToContent ()) != XmlNodeType.EndElement) {
+                                       if (nodeType != XmlNodeType.Element)
+                                               ThrowUnexpectedStateException (XmlNodeType.Element);
+
+                                       context.IncrementItemCount (1);
+
+                                       var jsonMemberName = XmlObjectSerializerReadContextComplexJson.GetJsonMemberName (xmlReader);
+                                       object key = null;
+
+                                       if (keyParseMode == KeyParseMode.UsingParseEnum)
+                                               key = Enum.Parse (keyType, jsonMemberName);
+                                       else if (keyParseMode == KeyParseMode.UsingCustomParse)
+                                               key = keyDataContract.ParseMethod.Invoke (null, new object [] {jsonMemberName});
+
+                                       if (keyTypeNullableDepth > 0) {
+                                               var keyOriginal = WrapNullableObject (keyType, key, valueType, keyTypeNullableDepth);
+                                               key = keyOriginal;
+                                       }
+
+                                       var value = ReadValue (valueType, String.Empty);
+                                       collectionContract.AddMethod.Invoke (objectLocal, new object[] {key, value});
+                               }
+                       }
+               }
+
+               void ReadGetOnlyCollection (CollectionDataContract collectionContract)
+               {
+                       Type type = collectionContract.UnderlyingType;
+                       Type itemType = collectionContract.ItemType;
+                       bool isArray = (collectionContract.Kind == CollectionKind.Array);
+                       int size = 0;
+
+                       objectLocal = context.GetCollectionMember ();
+                       bool canReadSimpleDictionary = 
+                               collectionContract.Kind == CollectionKind.Dictionary ||
+                               collectionContract.Kind == CollectionKind.GenericDictionary;
+
+                       bool readSimple = canReadSimpleDictionary && context.UseSimpleDictionaryFormat;
+                       if (readSimple) {
+                               if (objectLocal == null)
+                                       XmlObjectSerializerReadContext.ThrowNullValueReturnedForGetOnlyCollectionException (type);
+                               else {
+                                       ReadSimpleDictionary(collectionContract, itemType);
+                                       context.CheckEndOfArray (xmlReader, size, this.itemName, emptyDictionaryString);
+                               }
+                       } else {
+
+                               //check that items are actually going to be deserialized into the collection
+                               if (IsStartElement (this.itemName, this.emptyDictionaryString)) {
+                                       if (objectLocal == null)
+                                               XmlObjectSerializerReadContext.ThrowNullValueReturnedForGetOnlyCollectionException (type);
+                                       else {
+                                               size = 0;
+                                               if (isArray)
+                                                       size = ((Array) objectLocal).Length;
+                                               for (int i = 0; i < int.MaxValue;) {
+                                                       if (IsStartElement (this.itemName, this.emptyDictionaryString)) {
+                                                               context.IncrementItemCount (1);
+                                                               var value = ReadCollectionItem (collectionContract, itemType);
+                                                               if (isArray) {
+                                                                       if (size == i)
+                                                                               XmlObjectSerializerReadContext.ThrowArrayExceededSizeException (size, type);
+                                                                       else
+                                                                               ((Array) objectLocal).SetValue (value, i);
+                                                               } else {
+                                                                       StoreCollectionValue (objectLocal, itemType, value, collectionContract);
+                                                               }
+                                                       }
+                                                       else if (IsEndElement())
+                                                               break;
+                                                       else
+                                                               HandleUnexpectedItemInCollection (ref i);
+                                               }
+                                               context.CheckEndOfArray (xmlReader, size, this.itemName, this.emptyDictionaryString);
+                                       }
+                               }
+                       }
+               }
+
+               bool TryReadPrimitiveArray (Type itemType, out bool readResult)
+               {
+                       readResult = false;
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract (itemType);
+                       if (primitiveContract == null)
+                               return false;
+
+                       string readArrayMethod = null;
+                       switch (Type.GetTypeCode (itemType))
+                       {
+                       case TypeCode.Boolean:
+                               readArrayMethod = "TryReadBooleanArray";
+                       break;
+                       case TypeCode.Decimal:
+                               readArrayMethod = "TryReadDecimalArray";
+                       break;
+                       case TypeCode.Int32:
+                               readArrayMethod = "TryReadInt32Array";
+                       break;
+                       case TypeCode.Int64:
+                               readArrayMethod = "TryReadInt64Array";
+                       break;
+                       case TypeCode.Single:
+                               readArrayMethod = "TryReadSingleArray";
+                       break;
+                       case TypeCode.Double:
+                               readArrayMethod = "TryReadDoubleArray";
+                               break;
+                       case TypeCode.DateTime:
+                               readArrayMethod = "TryReadJsonDateTimeArray";
+                       break;
+                       default:
+                               break;
+                       }
+                       if (readArrayMethod != null) {
+                               var mi = typeof (JsonReaderDelegator).GetMethod (readArrayMethod, Globals.ScanAllMembers);
+                               var args = new object [] {context, itemName, emptyDictionaryString, -1, objectLocal};
+                               readResult = (bool) mi.Invoke ((JsonReaderDelegator) xmlReader, args);
+                               objectLocal = args.Last ();
+                               return true;
+                       }
+                       return false;
+               }
+
+               object ReadCollectionItem (CollectionDataContract collectionContract, Type itemType)
+               {
+                       if (collectionContract.Kind == CollectionKind.Dictionary || collectionContract.Kind == CollectionKind.GenericDictionary) {
+                               context.ResetAttributes ();
+                               var revisedContract = XmlObjectSerializerWriteContextComplexJson.GetRevisedItemContract (collectionContract.ItemContract);
+                               var v = DataContractJsonSerializer.ReadJsonValue (revisedContract, xmlReader, context);
+                               return CodeInterpreter.ConvertValue (v, Globals.TypeOfObject, itemType);
+                       }
+                       else
+                               return ReadValue (itemType, JsonGlobals.itemString);
+               }
+
+               void StoreCollectionValue (object collection, Type valueType, object value, CollectionDataContract collectionContract)
+               {
+                       if (collectionContract.Kind == CollectionKind.GenericDictionary || collectionContract.Kind == CollectionKind.Dictionary) {
+                               ClassDataContract keyValuePairContract = DataContract.GetDataContract (valueType) as ClassDataContract;
+                               if (keyValuePairContract == null)
+                                       Fx.Assert ("Failed to create contract for KeyValuePair type");
+                               DataMember keyMember = keyValuePairContract.Members [0];
+                               DataMember valueMember = keyValuePairContract.Members [1];
+                               object pkey = CodeInterpreter.GetMember (keyMember.MemberInfo, value);
+                               object pvalue = CodeInterpreter.GetMember (valueMember.MemberInfo, value);
+                               
+                               try {
+                                       collectionContract.AddMethod.Invoke (collection, new object [] {pkey, pvalue});
+                               } catch (TargetInvocationException ex) {
+                                       if (ex.InnerException != null)
+                                               throw ex.InnerException;
+                                       else
+                                               throw;
+                               }
+                       }
+                       else
+                               collectionContract.AddMethod.Invoke (collection, new object [] {value});
+               }
+
+               void HandleUnexpectedItemInCollection (ref int iterator)
+               {
+                       if (IsStartElement ()) {
+                               context.SkipUnknownElement (xmlReader);
+                               iterator--;
+                       }
+                       else 
+                               throw XmlObjectSerializerReadContext.CreateUnexpectedStateException (XmlNodeType.Element, xmlReader);
+               }
+
+               bool IsStartElement(XmlDictionaryString name, XmlDictionaryString ns)
+               {
+                       return xmlReader.IsStartElement (name, ns);
+               }
+
+               bool IsStartElement()
+               {
+                       return xmlReader.IsStartElement ();
+               }
+
+               bool IsEndElement ()
+               {
+                       return xmlReader.NodeType == XmlNodeType.EndElement;
+               }
+
+               void ThrowUnexpectedStateException (XmlNodeType expectedState)
+               {
+                       throw XmlObjectSerializerReadContext.CreateUnexpectedStateException (expectedState, xmlReader);
+               }
+
+               void ThrowSerializationException (string msg, params object [] values)
+               {
+                       if (values != null && values.Length > 0)
+                               msg = string.Format (msg, values);
+                       throw new SerializationException (msg);
+               }
+
+               enum KeyParseMode
+               {
+                       Fail,
+                       AsString,
+                       UsingParseEnum,
+                       UsingCustomParse
+               }
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/JsonFormatWriterGenerator_static.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/JsonFormatWriterGenerator_static.cs
new file mode 100644 (file)
index 0000000..1e595b7
--- /dev/null
@@ -0,0 +1,619 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+
+namespace System.Runtime.Serialization.Json
+{
+       internal partial class JsonFormatWriterGenerator
+       {
+               partial class CriticalHelper
+               {
+                       internal JsonFormatClassWriterDelegate GenerateClassWriter(ClassDataContract classContract)
+                       {
+                               return (XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, ClassDataContract dataContract, XmlDictionaryString [] memberNames) => new JsonFormatWriterInterpreter (classContract).WriteToJson (xmlWriter, obj, context, dataContract, memberNames);
+                       }
+                       internal JsonFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract)
+                       {
+                               return (XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, CollectionDataContract dataContract) => new JsonFormatWriterInterpreter (collectionContract).WriteCollectionToJson (xmlWriter, obj, context, dataContract);
+                       }
+               }
+       }
+
+       class JsonFormatWriterInterpreter
+       {
+               public JsonFormatWriterInterpreter (ClassDataContract classContract)
+               {
+                       this.classContract = classContract;
+               }
+
+               public JsonFormatWriterInterpreter (CollectionDataContract collectionContract)
+               {
+                       this.collectionContract = collectionContract;
+               }
+
+               ClassDataContract classContract;
+
+               CollectionDataContract collectionContract;
+
+               XmlWriterDelegator writer = null;
+               object obj = null;
+               XmlObjectSerializerWriteContextComplexJson context = null;
+               DataContract dataContract = null;
+               object objLocal = null;
+
+               ClassDataContract classDataContract {
+                       get { return (ClassDataContract) dataContract; }
+               }
+               CollectionDataContract collectionDataContract {
+                       get {return (CollectionDataContract) dataContract; }
+               }
+
+               XmlDictionaryString [] memberNames = null;
+               int typeIndex = 1;
+               int childElementIndex = 0;
+
+               public void WriteToJson (XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, ClassDataContract dataContract, XmlDictionaryString [] memberNames)
+               {
+                       this.writer = xmlWriter;
+                       this.obj = obj;
+                       this.context = context;
+                       this.dataContract = dataContract;
+                       this.memberNames = memberNames;
+
+                       InitArgs (classContract.UnderlyingType);
+
+                       // DemandSerializationFormatterPermission (classContract) - irrelevant
+                       // DemandMemberAccessPermission (memberAccessFlag) - irrelevant
+
+                       if (classContract.IsReadOnlyContract)
+                       {
+                               DataContract.ThrowInvalidDataContractException (classContract.SerializationExceptionMessage, null);
+                       }
+
+                       WriteClass (classContract);
+               }
+
+               public void WriteCollectionToJson (XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, CollectionDataContract dataContract)
+               {
+                       this.writer = xmlWriter;
+                       this.obj = obj;
+                       this.context = context;
+                       this.dataContract = dataContract;
+
+                       InitArgs (collectionContract.UnderlyingType);                   
+
+                       // DemandMemberAccessPermission(memberAccessFlag);
+                       if (collectionContract.IsReadOnlyContract)
+                       {
+                               DataContract.ThrowInvalidDataContractException (collectionContract.SerializationExceptionMessage, null);
+                       }
+
+                       WriteCollection (collectionContract);
+               }
+
+               void InitArgs (Type objType)
+               {
+                       if (objType == Globals.TypeOfDateTimeOffsetAdapter) {
+                               objLocal = DateTimeOffsetAdapter.GetDateTimeOffsetAdapter ((DateTimeOffset) obj);
+                       }
+                       else
+                               objLocal = CodeInterpreter.ConvertValue (obj, typeof (object), objType);
+               }
+
+               void InvokeOnSerializing (ClassDataContract classContract, object objSerialized, XmlObjectSerializerWriteContext context)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnSerializing (classContract.BaseContract, objSerialized, context);
+                       if (classContract.OnSerializing != null) {
+                               classContract.OnSerializing.Invoke (objSerialized, new object [] {context.GetStreamingContext ()});
+                       }
+               }
+
+               void InvokeOnSerialized (ClassDataContract classContract, object objSerialized, XmlObjectSerializerWriteContext context)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnSerialized (classContract.BaseContract, objSerialized, context);
+                       if (classContract.OnSerialized != null) {
+                               classContract.OnSerialized.Invoke (objSerialized, new object [] {context.GetStreamingContext ()});
+                       }
+               }
+
+               void WriteClass (ClassDataContract classContract)
+               {
+                       InvokeOnSerializing (classContract, objLocal, context);
+
+                       if (classContract.IsISerializable)
+                               context.WriteJsonISerializable (writer, (ISerializable) objLocal);
+                       else
+                       {
+                               if (classContract.HasExtensionData)
+                               {
+                                       ExtensionDataObject extensionData = ((IExtensibleDataObject) objLocal).ExtensionData;
+                                       context.WriteExtensionData (writer, extensionData, -1);
+
+                                       WriteMembers (classContract, extensionData, classContract);
+                               }
+                               else
+                                       WriteMembers (classContract, null, classContract);
+                       }
+                       InvokeOnSerialized (classContract, objLocal, context);
+               }
+
+               void WriteCollection(CollectionDataContract collectionContract)
+               {
+                       XmlDictionaryString itemName = context.CollectionItemName;
+
+                       if (collectionContract.Kind == CollectionKind.Array)
+                       {
+                               Type itemType = collectionContract.ItemType;
+                               int i;
+
+                               // This check does not exist in the original dynamic code,
+                               // but there is no other way to check type mismatch.
+                               // CollectionSerialization.ArrayContract() shows that it is required.
+                               if (objLocal.GetType ().GetElementType () != itemType)
+                                       throw new InvalidCastException (string.Format ("Cannot cast array of {0} to array of {1}", objLocal.GetType ().GetElementType (), itemType));
+
+                               context.IncrementArrayCount (writer, (Array) objLocal);
+
+                               if (!TryWritePrimitiveArray(collectionContract.UnderlyingType, itemType, () => objLocal, itemName))
+                               {
+                                       WriteArrayAttribute ();
+                                       var arr = (Array) objLocal;
+                                       var idx = new int [1];
+                                       for (i = 0; i < arr.Length; i++) {
+                                               if (!TryWritePrimitive(itemType, null, null, i, itemName, 0)) {
+                                                       WriteStartElement (itemName, 0);
+                                                       idx [0] = i;
+                                                       var mbrVal = arr.GetValue (idx);
+                                                       WriteValue (itemType, mbrVal);
+                                                       WriteEndElement ();
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               // This check does not exist in the original dynamic code,
+                               // but there is no other way to check type mismatch.
+                               // CollectionSerialization.ArrayContract() shows that it is required.
+                               if (!collectionContract.UnderlyingType.IsAssignableFrom (objLocal.GetType ()))
+                                       throw new InvalidCastException (string.Format ("Cannot cast {0} to {1}", objLocal.GetType (), collectionContract.UnderlyingType));
+                               
+                               MethodInfo incrementCollectionCountMethod = null;
+                               switch (collectionContract.Kind)
+                               {
+                               case CollectionKind.Collection:
+                               case CollectionKind.List:
+                               case CollectionKind.Dictionary:
+                                       incrementCollectionCountMethod = XmlFormatGeneratorStatics.IncrementCollectionCountMethod;
+                                       break;
+                               case CollectionKind.GenericCollection:
+                               case CollectionKind.GenericList:
+                                       incrementCollectionCountMethod = XmlFormatGeneratorStatics.IncrementCollectionCountGenericMethod.MakeGenericMethod(collectionContract.ItemType);
+                                       break;
+                               case CollectionKind.GenericDictionary:
+                                       incrementCollectionCountMethod = XmlFormatGeneratorStatics.IncrementCollectionCountGenericMethod.MakeGenericMethod(Globals.TypeOfKeyValuePair.MakeGenericType(collectionContract.ItemType.GetGenericArguments()));
+                                       break;
+                               }
+                               if (incrementCollectionCountMethod != null)
+                                       incrementCollectionCountMethod.Invoke (context, new object [] {writer, objLocal});
+
+                               bool isDictionary = false, isGenericDictionary = false;
+                               Type enumeratorType = null;
+                               Type [] keyValueTypes = null;
+                               if (collectionContract.Kind == CollectionKind.GenericDictionary)
+                               {
+                                       isGenericDictionary = true;
+                                       keyValueTypes = collectionContract.ItemType.GetGenericArguments ();
+                                       enumeratorType = Globals.TypeOfGenericDictionaryEnumerator.MakeGenericType (keyValueTypes);
+                               }
+                               else if (collectionContract.Kind == CollectionKind.Dictionary)
+                               {
+                                       isDictionary = true;
+                                       keyValueTypes = new Type[] { Globals.TypeOfObject, Globals.TypeOfObject };
+                                       enumeratorType = Globals.TypeOfDictionaryEnumerator;
+                               }
+                               else
+                               {
+                                       enumeratorType = collectionContract.GetEnumeratorMethod.ReturnType;
+                               }
+                               MethodInfo moveNextMethod = enumeratorType.GetMethod (Globals.MoveNextMethodName, BindingFlags.Instance | BindingFlags.Public, null, Globals.EmptyTypeArray, null);
+                               MethodInfo getCurrentMethod = enumeratorType.GetMethod (Globals.GetCurrentMethodName, BindingFlags.Instance | BindingFlags.Public, null, Globals.EmptyTypeArray, null);
+                               if (moveNextMethod == null || getCurrentMethod == null)
+                               {
+                                       if (enumeratorType.IsInterface)
+                                       {
+                                               if (moveNextMethod == null)
+                                                       moveNextMethod = JsonFormatGeneratorStatics.MoveNextMethod;
+                                               if (getCurrentMethod == null)
+                                                       getCurrentMethod = JsonFormatGeneratorStatics.GetCurrentMethod;
+                                       }
+                                       else
+                                       {
+                                               Type ienumeratorInterface = Globals.TypeOfIEnumerator;
+                                               CollectionKind kind = collectionContract.Kind;
+                                               if (kind == CollectionKind.GenericDictionary || kind == CollectionKind.GenericCollection || kind == CollectionKind.GenericEnumerable)
+                                               {
+                                                       Type[] interfaceTypes = enumeratorType.GetInterfaces();
+                                                       foreach (Type interfaceType in interfaceTypes)
+                                                       {
+                                                               if (interfaceType.IsGenericType
+                                                                       && interfaceType.GetGenericTypeDefinition() == Globals.TypeOfIEnumeratorGeneric
+                                                                       && interfaceType.GetGenericArguments()[0] == collectionContract.ItemType)
+                                                               {
+                                                                       ienumeratorInterface = interfaceType;
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+                                               if (moveNextMethod == null)
+                                                       moveNextMethod = CollectionDataContract.GetTargetMethodWithName(Globals.MoveNextMethodName, enumeratorType, ienumeratorInterface);
+                                               if (getCurrentMethod == null)
+                                                       getCurrentMethod = CollectionDataContract.GetTargetMethodWithName(Globals.GetCurrentMethodName, enumeratorType, ienumeratorInterface);
+                                       }
+                               }
+                               Type elementType = getCurrentMethod.ReturnType;
+                               object currentValue = null; // of elementType
+
+                               var enumerator = (IEnumerator) collectionContract.GetEnumeratorMethod.Invoke (objLocal, new object [0]);
+                               if (isDictionary)
+                               {
+                                       ConstructorInfo dictEnumCtor = enumeratorType.GetConstructor (Globals.ScanAllMembers, null, new Type[] { Globals.TypeOfIDictionaryEnumerator }, null);
+                                       enumerator = (IEnumerator) dictEnumCtor.Invoke (new object [] {enumerator});
+                               }
+                               else if (isGenericDictionary)
+                               {
+                                       Type ctorParam = Globals.TypeOfIEnumeratorGeneric.MakeGenericType(Globals.TypeOfKeyValuePair.MakeGenericType(keyValueTypes));
+                                       ConstructorInfo dictEnumCtor = enumeratorType.GetConstructor(Globals.ScanAllMembers, null, new Type[] { ctorParam }, null);
+                                       enumerator = (IEnumerator) Activator.CreateInstance (enumeratorType, new object [] {enumerator});
+                               }
+
+                               bool canWriteSimpleDictionary = isDictionary || isGenericDictionary;
+                               
+                               bool writeSimpleDictionary = canWriteSimpleDictionary && context.UseSimpleDictionaryFormat;
+                               PropertyInfo genericDictionaryKeyProperty = null, genericDictionaryValueProperty = null;
+                               
+                               if (canWriteSimpleDictionary)
+                               {
+                                       Type genericDictionaryKeyValueType = Globals.TypeOfKeyValue.MakeGenericType (keyValueTypes);
+                                       genericDictionaryKeyProperty = genericDictionaryKeyValueType.GetProperty (JsonGlobals.KeyString);
+                                       genericDictionaryValueProperty = genericDictionaryKeyValueType.GetProperty (JsonGlobals.ValueString);
+                               }
+
+                               if (writeSimpleDictionary) {
+                                       WriteObjectAttribute ();
+                                       object key, value;
+                                       var empty_args = new object [0];
+                                       while ((bool) moveNextMethod.Invoke (enumerator, empty_args)) {
+                                               currentValue = getCurrentMethod.Invoke (enumerator, empty_args);
+                                               key = CodeInterpreter.GetMember (genericDictionaryKeyProperty, currentValue);
+                                               value = CodeInterpreter.GetMember (genericDictionaryValueProperty, currentValue);
+
+                                               WriteStartElement (key, 0 /*nameIndex*/);
+                                               WriteValue (genericDictionaryValueProperty.PropertyType, value);
+                                               WriteEndElement ();
+                                       }
+                               } else {
+                                       WriteArrayAttribute ();
+
+                                       var emptyArray = new object [0];
+                                       while (enumerator != null && enumerator.MoveNext ()) {
+                                               currentValue = getCurrentMethod.Invoke (enumerator, emptyArray);
+
+                                               if (incrementCollectionCountMethod == null)
+                                                       XmlFormatGeneratorStatics.IncrementItemCountMethod.Invoke (context, new object [] {1});
+
+                                               if (!TryWritePrimitive (elementType, () => currentValue, null, null, itemName, 0))
+                                               {
+                                                       WriteStartElement (itemName, 0);
+                                                       if (isGenericDictionary || isDictionary) {
+                                                               var jc = JsonDataContract.GetJsonDataContract (XmlObjectSerializerWriteContextComplexJson.GetRevisedItemContract (
+                                                               collectionDataContract.ItemContract));
+                                                               // FIXME: this TypeHandle might be wrong; there is no easy way to get Type for currentValue though.
+                                                               DataContractJsonSerializer.WriteJsonValue (jc, writer, currentValue, context, currentValue.GetType ().TypeHandle);
+                                                       }
+                                                       else
+                                                               WriteValue (elementType, currentValue);
+                                                       WriteEndElement ();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               int WriteMembers (ClassDataContract classContract, ExtensionDataObject extensionData, ClassDataContract derivedMostClassContract)
+               {
+                       int memberCount = (classContract.BaseContract == null) ? 0 : WriteMembers (classContract.BaseContract, extensionData, derivedMostClassContract);
+
+                       context.IncrementItemCount (classContract.Members.Count);
+
+                       for (int i = 0; i < classContract.Members.Count; i++, memberCount++) {
+
+                               DataMember member = classContract.Members[i];
+                               Type memberType = member.MemberType;
+                               object memberValue = null;
+                               if (member.IsGetOnlyCollection)
+                                       context.StoreIsGetOnlyCollection ();
+                               bool doWrite = true, hasMemberValue = false;
+                               if (!member.EmitDefaultValue)
+                               {
+                                       hasMemberValue = true;
+                                       memberValue = LoadMemberValue (member);
+                                       doWrite = !IsDefaultValue (memberType, memberValue);
+                               }
+
+                               if (doWrite) {
+
+                                       bool requiresNameAttribute = DataContractJsonSerializer.CheckIfXmlNameRequiresMapping (classContract.MemberNames [i]);
+                                       
+                                       if (requiresNameAttribute || !TryWritePrimitive(memberType, hasMemberValue ? () => memberValue : (Func<object>) null, member.MemberInfo, null /*arrayItemIndex*/, null /*nameLocal*/, i + childElementIndex)) {
+
+                                               // Note: DataContractSerializer has member-conflict logic here to deal with the schema export
+                                               //       requirement that the same member can't be of two different types.
+                                               if (requiresNameAttribute)
+                                                       XmlObjectSerializerWriteContextComplexJson.WriteJsonNameWithMapping (writer, memberNames, i + childElementIndex);
+                                               else
+                                                       WriteStartElement (null /*nameLocal*/, i + childElementIndex);
+
+                                               if (memberValue == null)
+                                                       memberValue = LoadMemberValue (member);
+                                               WriteValue (memberType, memberValue);
+                                               WriteEndElement ();
+                                       }
+
+                                       if (classContract.HasExtensionData)
+                                               context.WriteExtensionData (writer, extensionData, memberCount);
+                               } else if (!member.EmitDefaultValue) {
+                                       if (member.IsRequired)
+                                               XmlObjectSerializerWriteContext.ThrowRequiredMemberMustBeEmitted (member.Name, classContract.UnderlyingType);
+                               }
+                       }
+
+                       typeIndex++;
+                       childElementIndex += classContract.Members.Count;
+                       return memberCount;
+               }
+
+
+               internal bool IsDefaultValue (Type type, object value)
+               {
+                       return GetDefaultValue (type).Equals (value);
+               }
+
+               internal object GetDefaultValue(Type type)
+               {
+                       if (type.IsValueType)
+                       {
+                               switch (Type.GetTypeCode(type))
+                               {
+                               case TypeCode.Boolean:
+                                       return false;
+                               case TypeCode.Char:
+                               case TypeCode.SByte:
+                               case TypeCode.Byte:
+                               case TypeCode.Int16:
+                               case TypeCode.UInt16:
+                               case TypeCode.Int32:
+                               case TypeCode.UInt32:
+                                       return 0;
+                               case TypeCode.Int64:
+                               case TypeCode.UInt64:
+                                       return 0L;
+                               case TypeCode.Single:
+                                       return 0.0F;
+                               case TypeCode.Double:
+                                       return 0.0;
+                               case TypeCode.Decimal:
+                                       return default (decimal);
+                               case TypeCode.DateTime:
+                                       return default (DateTime);
+                               }
+                       }
+                       return null;
+               }
+
+               void WriteStartElement (object nameLocal, int nameIndex)
+               {
+                       var name = nameLocal ?? memberNames [nameIndex];
+                       XmlDictionaryString namespaceLocal = null;
+                       if (nameLocal != null && nameLocal is string)
+                               writer.WriteStartElement ((string) name, null);
+                       else
+                               writer.WriteStartElement ((XmlDictionaryString) name, null);
+               }
+
+               void WriteEndElement ()
+               {
+                       writer.WriteEndElement ();
+               }
+
+               void WriteArrayAttribute ()
+               {
+                       writer.WriteAttributeString (
+                               null /* prefix */,
+                               JsonGlobals.typeString /* local name */,
+                               string.Empty /* namespace */,
+                               JsonGlobals.arrayString /* value */);
+               }
+
+               void WriteObjectAttribute ()
+               {
+                       writer.WriteAttributeString (
+                               null /* prefix */,
+                               JsonGlobals.typeString /* local name */,
+                               null /* namespace */,
+                               JsonGlobals.objectString /* value */);
+               }
+
+               void WriteValue (Type memberType, object memberValue)
+               {
+                       Pointer memberValueRefPointer = null;
+                       if (memberType.IsPointer)
+                               memberValueRefPointer = (Pointer) JsonFormatGeneratorStatics.BoxPointer.Invoke (null, new object [] {memberValue, memberType});
+                       bool isNullableOfT = (memberType.IsGenericType &&
+                               memberType.GetGenericTypeDefinition() == Globals.TypeOfNullable);
+                       if (memberType.IsValueType && !isNullableOfT)
+                       {
+                               PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(memberType);
+                               if (primitiveContract != null)
+                                       primitiveContract.XmlFormatContentWriterMethod.Invoke (writer, new object [] {memberValue});
+                               else
+                                       InternalSerialize (XmlFormatGeneratorStatics.InternalSerializeMethod, () => memberValue, memberType, false);
+                       }
+                       else
+                       {
+                               bool isNull;
+                               if (isNullableOfT)
+                                       memberValue = UnwrapNullableObject(() => memberValue, ref memberType, out isNull); //Leaves !HasValue on stack
+                               else
+                                       isNull = memberValue == null;
+                               if (isNull)
+                                       XmlFormatGeneratorStatics.WriteNullMethod.Invoke (context, new object [] {writer, memberType, DataContract.IsTypeSerializable(memberType)});
+                               else {
+                                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(memberType);
+                                       if (primitiveContract != null && primitiveContract.UnderlyingType != Globals.TypeOfObject) {
+                                               if (isNullableOfT)
+                                                       primitiveContract.XmlFormatContentWriterMethod.Invoke (writer, new object [] {memberValue});
+                                               else                                                    
+                                                       primitiveContract.XmlFormatContentWriterMethod.Invoke (context, new object [] {writer, memberValue});
+                                       } else {
+                                               bool isNull2 = false;
+                                               if (memberType == Globals.TypeOfObject || //boxed Nullable<T>
+                                                       memberType == Globals.TypeOfValueType ||
+                                                       ((IList)Globals.TypeOfNullable.GetInterfaces()).Contains(memberType)) {
+                                                       var unwrappedMemberValue = CodeInterpreter.ConvertValue (memberValue, memberType.GetType (), Globals.TypeOfObject);
+                                                       memberValue = unwrappedMemberValue;
+                                                       isNull2 = memberValue == null;
+                                               }
+                                               if (isNull2) {
+                                                       XmlFormatGeneratorStatics.WriteNullMethod.Invoke (context, new object [] {writer, memberType, DataContract.IsTypeSerializable(memberType)});
+                                               } else {
+                                                       InternalSerialize((isNullableOfT ? XmlFormatGeneratorStatics.InternalSerializeMethod : XmlFormatGeneratorStatics.InternalSerializeReferenceMethod),
+                                                               () => memberValue, memberType, false);
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               void InternalSerialize (MethodInfo methodInfo, Func<object> memberValue, Type memberType, bool writeXsiType)
+               {
+                       var v = memberValue ();
+                       var typeHandleValue = Type.GetTypeHandle (v);
+                       var isDeclaredType = typeHandleValue.Equals (CodeInterpreter.ConvertValue (v, memberType, Globals.TypeOfObject));
+                       try {
+                               methodInfo.Invoke (context, new object [] {writer, memberValue != null ? v : null, isDeclaredType, writeXsiType, DataContract.GetId (memberType.TypeHandle), memberType.TypeHandle});
+                       } catch (TargetInvocationException ex) {
+                               if (ex.InnerException != null)
+                                       throw ex.InnerException;
+                               else
+                                       throw;
+                       }
+               }
+
+               object UnwrapNullableObject(Func<object> memberValue, ref Type memberType, out bool isNull)// Leaves !HasValue on stack
+               {
+                       object v = memberValue ();
+                       isNull = false;
+                       while (memberType.IsGenericType && memberType.GetGenericTypeDefinition () == Globals.TypeOfNullable) {
+                               Type innerType = memberType.GetGenericArguments () [0];
+                               if ((bool) XmlFormatGeneratorStatics.GetHasValueMethod.MakeGenericMethod (innerType).Invoke (null, new object [] {v}))
+                                       v = XmlFormatGeneratorStatics.GetNullableValueMethod.MakeGenericMethod (innerType).Invoke (null, new object [] {v});
+                               else {
+                                       isNull = true;
+                                       v = XmlFormatGeneratorStatics.GetDefaultValueMethod.MakeGenericMethod (memberType).Invoke (null, new object [0]);
+                               }
+                               memberType = innerType;
+                       }
+                       
+                       return v;
+               }
+
+               bool TryWritePrimitive(Type type, Func<object> value, MemberInfo memberInfo, int? arrayItemIndex, XmlDictionaryString name, int nameIndex)
+               {
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(type);
+                       if (primitiveContract == null || primitiveContract.UnderlyingType == Globals.TypeOfObject)
+                               return false;
+
+                       object callee = null;
+                       var args = new List<object> ();
+
+                       // load writer
+                       if (type.IsValueType)
+                               callee = writer;
+                       else {
+                               callee = context;
+                               args.Add (writer);
+                       }
+                       // load primitive value 
+                       if (value != null)
+                               args.Add (value ());
+                       else if (memberInfo != null)
+                               args.Add (CodeInterpreter.GetMember (memberInfo, objLocal));
+                       else
+                               args.Add (((Array) objLocal).GetValue (new int [] {(int) arrayItemIndex}));
+                       // load name
+                       if (name != null)
+                               args.Add (name);
+                       else
+                               args.Add (memberNames [nameIndex]);
+                       // load namespace
+                       args.Add (null);
+                       // call method to write primitive
+                       primitiveContract.XmlFormatWriterMethod.Invoke (callee, args.ToArray ());
+                       return true;
+               }
+
+               bool TryWritePrimitiveArray (Type type, Type itemType, Func<object> value, XmlDictionaryString itemName)
+               {
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(itemType);
+                       if (primitiveContract == null)
+                               return false;
+
+                       string writeArrayMethod = null;
+                       switch (Type.GetTypeCode(itemType))
+                       {
+                       case TypeCode.Boolean:
+                               writeArrayMethod = "WriteJsonBooleanArray";
+                               break;
+                       case TypeCode.DateTime:
+                               writeArrayMethod = "WriteJsonDateTimeArray";
+                               break;
+                       case TypeCode.Decimal:
+                               writeArrayMethod = "WriteJsonDecimalArray";
+                               break;
+                       case TypeCode.Int32:
+                               writeArrayMethod = "WriteJsonInt32Array";
+                               break;
+                       case TypeCode.Int64:
+                               writeArrayMethod = "WriteJsonInt64Array";
+                               break;
+                       case TypeCode.Single:
+                               writeArrayMethod = "WriteJsonSingleArray";
+                               break;
+                       case TypeCode.Double:
+                               writeArrayMethod = "WriteJsonDoubleArray";
+                               break;
+                       default:
+                               break;
+                       }
+                       if (writeArrayMethod != null)
+                       {
+                               WriteArrayAttribute ();
+                               typeof(JsonWriterDelegator).GetMethod(writeArrayMethod, Globals.ScanAllMembers, null, new Type[] { type, typeof(XmlDictionaryString), typeof(XmlDictionaryString) }, null).Invoke (writer, new object [] {value (), itemName, null});
+                               return true;
+                       }
+                       return false;
+               }
+
+               object LoadMemberValue (DataMember member)
+               {
+                       return CodeInterpreter.GetMember (member.MemberInfo, objLocal);
+               }
+       }
+}
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/SR.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/SR.cs
new file mode 100644 (file)
index 0000000..ae10d9f
--- /dev/null
@@ -0,0 +1,371 @@
+using System.Globalization;
+
+#region "copy of ../../build/common/SR.cs"
+
+namespace System.Runtime.Serialization
+{
+       static partial class SR 
+       {
+
+        internal static string GetString(string name, params object[] args)
+        {
+                return GetString (CultureInfo.InvariantCulture, name, args);
+        }
+
+        internal static string GetString(CultureInfo culture, string name, params object[] args) {
+                return string.Format (culture, name, args);
+        }
+
+        internal static string GetString(string name)
+        {
+                return name;
+        }
+
+        internal static string GetString(CultureInfo culture, string name)
+        {
+                return name;
+        }
+}
+}
+
+/*
+namespace System.Text
+{
+       static partial class SR
+       {
+        internal static string GetString(string name, params object[] args)
+        {
+                return GetString (CultureInfo.InvariantCulture, name, args);
+        }
+
+        internal static string GetString(CultureInfo culture, string name, params object[] args) {
+                return string.Format (culture, name, args);
+        }
+
+        internal static string GetString(string name)
+        {
+                return name;
+        }
+
+        internal static string GetString(CultureInfo culture, string name)
+        {
+                return name;
+        }
+}
+}
+
+namespace System.Xml
+{
+       static partial class SR
+       {
+        internal static string GetString(string name, params object[] args)
+        {
+                return GetString (CultureInfo.InvariantCulture, name, args);
+        }
+
+        internal static string GetString(CultureInfo culture, string name, params object[] args) {
+                return string.Format (culture, name, args);
+        }
+
+        internal static string GetString(string name)
+        {
+                return name;
+        }
+
+        internal static string GetString(CultureInfo culture, string name)
+        {
+                return name;
+        }
+}
+}
+*/
+#endregion
+
+
+#region "retrieved string resources"
+
+namespace System.Runtime.Serialization
+{
+       static partial class SR {
+
+
+public const string ArrayExceededSize = @"Array length '{0}' provided by the get-only collection of type '{1}' is less than the number of array elements found in the input stream.  Consider increasing the length of the array.";
+public const string ArrayExceededSizeAttribute = @"Array length '{0}' provided by Size attribute is not equal to the number of array elements '{1}' from namespace '{2}' found.";
+public const string ArrayTypeIsNotSupported = @"An internal error has occurred. '{0}[]' is not supported when generating code for serialization.";
+public const string CannotDeserializeRefAtTopLevel = @"Cannot deserialize since root element references unrecognized object with id '{0}'.";
+public const string CannotLoadMemberType = @"Cannot load member type '{0}'.";
+public const string CannotSerializeObjectWithCycles = @"Object graph for type '{0}' contains cycles and cannot be serialized if references are not tracked. Consider using the DataContractAttribute with the IsReference property set to true.";
+public const string CanOnlyStoreIntoArgOrLocGot0 = @"An internal error has occurred. Data can only be stored into ArgBuilder or LocalBuilder. Got: {0}.";
+public const string CharIsInvalidPrimitive = @"An internal error has occurred. Char is not a valid schema primitive and should be treated as int in DataContract.";
+public const string CallbackMustReturnVoid = @"Serialization Callback '{1}' in type '{0}' must return void. ";
+public const string CallbackParameterInvalid = @"Serialization Callback '{1}' in type '{0}' must have a single parameter of type '{2}'. ";
+public const string CallbacksCannotBeVirtualMethods = @"Virtual Method '{0}' of type '{1}' cannot be marked with '{2}' attribute. ";
+public const string CollectionMustHaveAddMethod = @"Collection type '{0}' does not have a valid Add method.";
+public const string CollectionMustHaveGetEnumeratorMethod = @"Collection type '{0}' does not have a valid GetEnumerator method.";
+public const string CollectionMustHaveItemType = @"Collection type '{0}' must have a non-null item type.";
+public const string CollectionTypeCannotBeBuiltIn = @"{0} is a built-in type and cannot be a collection.";
+public const string CollectionTypeCannotHaveDataContract = @"{0} has DataContractAttribute attribute.";
+public const string CollectionTypeDoesNotHaveAddMethod = @"{0} does not have a valid Add method with parameter of type '{1}'.";
+public const string CollectionTypeDoesNotHaveDefaultCtor = @"{0} does not have a default constructor.";
+public const string CollectionTypeHasMultipleDefinitionsOfInterface = @"{0} has multiple definitions of interface '{1}'.";
+public const string CollectionTypeIsNotIEnumerable = @"{0} does not implement IEnumerable interface.";
+public const string DataContractCacheOverflow = @"An internal error has occurred. DataContract cache overflow.";
+public const string DataContractNamespaceAlreadySet = @"ContractNamespaceAttribute attribute maps CLR namespace '{2}' to multiple data contract namespaces '{0}' and '{1}'. You can map a CLR namespace to only one data contract namespace.";
+public const string DataContractNamespaceIsNotValid = @"DataContract namespace '{0}' is not a valid URI.";
+public const string DataContractNamespaceReserved = @"DataContract namespace '{0}' cannot be specified since it is reserved.";
+public const string DataMemberOnEnumField = @"Member '{0}.{1}' has DataMemberAttribute attribute. Use EnumMemberAttribute attribute instead.";
+public const string DcTypeNotFoundOnDeserialize = @"Element '{2}:{3}' contains data of the '{0}:{1}' data contract. The deserializer has no knowledge of any type that maps to this contract. Add the type corresponding to '{1}' to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding it to the list of known types passed to DataContractSerializer.";
+public const string DcTypeNotFoundOnSerialize = @"Type '{0}' with data contract name '{1}:{2}' is not expected. Add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.";
+public const string DcTypeNotResolvedOnDeserialize = @"Element '{2}:{3}' contains data from a type that maps to the name '{0}:{1}'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name '{1}' and namespace '{0}'.";
+public const string DeserializedObjectWithIdNotFound = @"Deserialized object with reference id '{0}' not found in stream.";
+public const string DupContractInKnownTypes = @"Type '{0}' cannot be added to list of known types since another type '{1}' with the same data contract name '{2}:{3}' is already present.";
+public const string DupKeyValueName = @"The collection data contract type '{0}' specifies the same value '{1}' for both the KeyName and the ValueName properties. This is not allowed. Consider changing either the KeyName or the ValueName property.";
+public const string DupEnumMemberValue = @"Type '{2}' contains two members '{0}' 'and '{1}' with the same name '{3}'. Multiple members with the same name in one type are not supported. Consider changing one of the member names using EnumMemberAttribute attribute.";
+public const string DupMemberName = @"Type '{2}' contains two members '{0}' 'and '{1}' with the same data member name '{3}'. Multiple members with the same name in one type are not supported. Consider changing one of the member names using DataMemberAttribute attribute.";
+public const string DuplicateAttribute = @"Invalid Callback. Method '{3}' in type '{2}' has both '{0}' and '{1}'. ";
+public const string DuplicateCallback = @"Invalid attribute. Both '{0}' and '{1}' in type '{2}' have '{3}'. ";
+public const string EncounteredWithNameNamespace = @"{0}. Encountered '{1}'  with name '{2}', namespace '{3}'.";
+public const string EnumTypeCannotHaveIsReference = @"Enum type '{0}' cannot have the IsReference setting of '{1}'. Either change the setting to '{2}', or remove it completely.";
+public const string ErrorDeserializing = @"There was an error deserializing the object {0}. {1}";
+public const string ErrorInLine = @"Error in line {0} position {1}.";
+public const string ErrorIsStartObject = @"There was an error checking start element of object {0}. {1}";
+public const string ErrorSerializing = @"There was an error serializing the object {0}. {1}";
+public const string ErrorTypeInfo = @"of type {0}";
+public const string ErrorWriteEndObject = @"There was an error writing end element of object {0}. {1}";
+public const string ErrorWriteStartObject = @"There was an error writing start element of object {0}. {1}";
+public const string ExceededMaxItemsQuota = @"Maximum number of items that can be serialized or deserialized in an object graph is '{0}'.";
+public const string ExpectingElement = @"Expecting element '{1}' from namespace '{0}'.";
+public const string ExpectingElementAtDeserialize = @"Expecting state '{0}' when ReadObject is called.";
+public const string ExpectingEnd = @"Expecting End'{0}'.";
+public const string ExpectingState = @"Expecting state '{0}'.";
+public const string GenericNameBraceMismatch = @"The data contract name '{0}' for type '{1}' has a curly brace '{{' that is not matched with a closing curly brace. Curly braces have special meaning in data contract names - they are used to customize the naming of data contracts for generic types.";
+public const string GenericParameterNotValid = @"In the data contract name for type '{1}', there are curly braces with '{0}' inside, which is an invalid value. Curly braces have special meaning in data contract names - they are used to customize the naming of data contracts for generic types. Based on the number of generic parameters this type has, the contents of the curly braces must either be a number between 0 and '{2}' to insert the name of the generic parameter at that index or the '#' symbol to insert a digest of the generic parameter namespaces.";
+public const string InconsistentIsReference = @"The IsReference setting for type '{0}' is '{1}', but the same setting for its parent class '{2}' is '{3}'. Derived types must have the same value for IsReference as the base type. Change the setting on type '{0}' to '{3}', or on type '{2}' to '{1}', or do not set IsReference explicitly.";
+public const string IndexedPropertyCannotBeSerialized = @"Property '{1}' in type '{0}' cannot be serialized because serialization of indexed properties is not supported.";
+public const string InterfaceTypeCannotBeCreated = @"Interface type '{0}' cannot be created. Consider replacing with a non-interface serializable type.";
+public const string InvalidCollectionContractItemName = @"Type '{0}' cannot have CollectionDataContractAttribute attribute ItemName set to null or empty string.";
+public const string InvalidCollectionContractKeyName = @"Type '{0}' cannot have CollectionDataContractAttribute attribute KeyName set to null or empty string.";
+public const string InvalidCollectionContractKeyNoDictionary = @"The collection data contract type '{0}' specifies '{1}' for the KeyName property. This is not allowed since the type is not IDictionary. Remove the setting for the KeyName property.";
+public const string InvalidCollectionContractName = @"Type '{0}' cannot have CollectionDataContractAttribute attribute Name set to null or empty string.";
+public const string InvalidCollectionContractNamespace = @"Type '{0}' cannot have CollectionDataContractAttribute attribute Namespace set to null.";
+public const string InvalidCollectionContractValueName = @"Type '{0}' cannot have CollectionDataContractAttribute attribute ValueName set to null or empty string.";
+public const string InvalidCollectionContractValueNoDictionary = @"The collection data contract type '{0}' specifies '{1}' for the ValueName property. This is not allowed since the type is not IDictionary. Remove the setting for the ValueName property.";
+public const string InvalidCollectionDataContract = @"Type '{0}' with CollectionDataContractAttribute attribute is an invalid collection type since it";
+public const string InvalidCollectionType = @"Type '{0}' is an invalid collection type since it";
+public const string InvalidDataContractName = @"Type '{0}' cannot have DataContractAttribute attribute Name set to null or empty string.";
+public const string InvalidDataContractNamespace = @"Type '{0}' cannot have DataContractAttribute attribute Namespace set to null.";
+public const string InvalidDataMemberName = @"Member '{0}' in type '{1}' cannot have DataMemberAttribute attribute Name set to null or empty string.";
+public const string InvalidEnumMemberValue = @"'{0}' in type '{1}' cannot have EnumMemberAttribute attribute Value set to null or empty string.";
+public const string InvalidEnumValueOnRead = @"Invalid enum value '{0}' cannot be deserialized into type '{1}'. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.";
+public const string InvalidEnumValueOnWrite = @"Enum value '{0}' is invalid for type '{1}' and cannot be serialized. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.";
+public const string InvalidGetSchemaMethod = @"Type '{0}' cannot have MethodName on XmlSchemaProviderAttribute attribute set to null or empty string. ";
+public const string InvalidGlobalDataContractNamespace = @"CLR namespace '{0}' cannot have ContractNamespace set to null.";
+public const string InvalidMember = @"Member '{0}.{1}' cannot be serialized since it is neither a field nor a property, and therefore cannot be marked with the DataMemberAttribute attribute. Remove the DataMemberAttribute attribute from the '{1}' member.";
+public const string InvalidNonNullReturnValueByIsAny = @"Method '{0}.{1}()' returns a non-null value. The return value must be null since IsAny=true.";
+public const string InvalidPrimitiveType = @"Type '{0}' is not a valid serializable type.";
+public const string InvalidReturnTypeOnGetSchemaMethod = @"Method '{0}.{1}()' returns '{2}'. The return type must be compatible with '{3}'.";
+public const string InvalidSizeDefinition = @"Invalid Size '{0}'. Must be non-negative integer.";
+public const string InvalidXmlDataContractName = @"XML data contract Name for type '{0}' cannot be set to null or empty string.";
+public const string InvalidXsIdDefinition = @"Invalid Id '{0}'. Must not be null or empty.";
+public const string InvalidXsRefDefinition = @"Invalid Ref '{0}'. Must not be null or empty.";
+public const string IsAnyCannotBeNull = @"A null value cannot be serialized at the top level for IXmlSerializable root type '{0}' since its IsAny setting is 'true'. This type must write all its contents including the root element. Verify that the IXmlSerializable implementation is correct.";
+public const string IsAnyCannotBeSerializedAsDerivedType = @"An object of type '{0}' cannot be serialized at the top level for IXmlSerializable root type '{1}' since its IsAny setting is 'true'. This type must write all its contents including the root element. Verify that the IXmlSerializable implementation is correct.";
+public const string IsAnyCannotHaveXmlRoot = @"Type '{0}' cannot specify an XmlRootAttribute attribute because its IsAny setting is 'true'. This type must write all its contents including the root element. Verify that the IXmlSerializable implementation is correct.";
+public const string IsNotAssignableFrom = @"An internal error has occurred. '{0}' is not assignable from '{1}' - error generating code for serialization.";
+public const string IsRequiredDataMemberOnIsReferenceDataContractType = @"'{0}.{1}' has the IsRequired setting of '{2}. However, '{0}' has the IsReference setting of '{2}', because either it is set explicitly, or it is derived from a base class. Set IsRequired on '{0}.{1}' to false, or disable IsReference on '{0}'.";
+public const string IXmlSerializableCannotHaveCollectionDataContract = @"Type '{0}' cannot be IXmlSerializable and have CollectionDataContractAttribute attribute.";
+public const string IXmlSerializableCannotHaveDataContract = @"Type '{0}' cannot be IXmlSerializable and have DataContractAttribute attribute.";
+public const string IXmlSerializableIllegalOperation = @"This method cannot be called from IXmlSerializable implementations.";
+public const string IXmlSerializableMissingEndElements = @"IXmlSerializable.WriteXml method of type '{0}' did not close all open tags. Verify that the IXmlSerializable implementation is correct.";
+public const string IXmlSerializableMustHaveDefaultConstructor = @"IXmlSerializable Type '{0}' must have default constructor.";
+public const string IXmlSerializableWritePastSubTree = @"IXmlSerializable.WriteXml method of type '{0}' attempted to close too many tags.  Verify that the IXmlSerializable implementation is correct.";
+public const string KnownTypeAttributeEmptyString = @"Method name specified by KnownTypeAttribute attribute on type '{0}' cannot be the empty string.";
+public const string KnownTypeAttributeUnknownMethod = @"KnownTypeAttribute attribute on type '{1}' specifies a method named '{0}' to provide known types. Static method '{0}()' was not found on this type. Ensure that the method exists and is marked as static.";
+public const string KnownTypeAttributeReturnType = @"KnownTypeAttribute attribute on type '{0}' specifies a method named '{1}' to provide known types. The return type of this method is invalid because it is not assignable to IEnumerable<Type>. Ensure that the method exists and has a valid signature.";
+public const string KnownTypeAttributeOneScheme = @"Type '{0}': If a KnownTypeAttribute attribute specifies a method it must be the only KnownTypeAttribute attribute on that type.";
+public const string KnownTypeAttributeNoType = @"KnownTypeAttribute attribute on type '{0}' contains no Type.";
+public const string KnownTypeConfigClosedGenericDeclared = @"Declared type '{0}' in config cannot be a closed or partial generic type.";
+public const string KnownTypeAttributeValidMethodTypes = @"Method specified by KnownTypeAttribute attribute on type '{0}' does not expose valid types.";
+public const string KnownTypeAttributeNoData = @"KnownTypeAttribute attribute on type '{0}' contains no data.";
+public const string KnownTypeAttributeMethodNull = @"Method specified by KnownTypeAttribute attribute on type '{0}' returned null.";
+public const string MaxArrayLengthExceeded = @"The maximum array length ({0}) has been exceeded while reading XML data for array of type '{1}'.";
+public const string MissingGetSchemaMethod = @"Type '{0}' does not have a static method '{1}' that takes a parameter of type 'System.Xml.Schema.XmlSchemaSet' as specified by the XmlSchemaProviderAttribute attribute.";
+public const string MultipleIdDefinition = @"Invalid XML encountered. The same Id value '{0}' is defined more than once. Multiple objects cannot be deserialized using the same Id.";
+public const string NoConversionPossibleTo = @"An internal error has occurred. No conversion is possible to '{0}' - error generating code for serialization.";
+public const string NoGetMethodForProperty = @"No get method for property '{1}' in type '{0}'.";
+public const string NoSetMethodForProperty = @"No set method for property '{1}' in type '{0}'.";
+public const string NullKnownType = @"One of the known types provided to the serializer via '{0}' argument was invalid because it was null. All known types specified must be non-null values.";
+public const string NullValueReturnedForGetOnlyCollection = @"The get-only collection of type '{0}' returned a null value.  The input stream contains collection items which cannot be added if the instance is null.  Consider initializing the collection either in the constructor of the the object or in the getter.";
+public const string ObjectTableOverflow = @"An internal error has occurred. Object table overflow. This could be caused by serializing or deserializing extremely large object graphs.";
+public const string OrderCannotBeNegative = @"Property 'Order' in DataMemberAttribute attribute cannot be a negative number.";
+public const string ParameterCountMismatch = @"Invalid number of parameters to call method '{0}'. Expected '{1}' parameters, but '{2}' were provided.";
+public const string PartialTrustCollectionContractAddMethodNotPublic = @"The collection data contract type '{0}' cannot be deserialized because the method '{1}' is not public. Making the method public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustCollectionContractNoPublicConstructor = @"The collection data contract type '{0}' cannot be deserialized because it does not have a public parameterless constructor. Adding a public parameterless constructor will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustCollectionContractTypeNotPublic = @"The collection data contract type '{0}' cannot be deserialized because it does not have a public parameterless constructor. Adding a public parameterless constructor will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractOnSerializingNotPublic = @"The data contract type '{0}' cannot be serialized because the OnSerializing method '{1}' is not public. Making the method public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractOnSerializedNotPublic = @"The data contract type '{0}' cannot be serialized because the OnSerialized method '{1}' is not public. Making the method public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractOnDeserializingNotPublic = @"The data contract type '{0}' cannot be deserialized because the OnDeserializing method '{1}' is not public. Making the method public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractOnDeserializedNotPublic = @"The data contract type '{0}' cannot be deserialized because the OnDeserialized method '{1}' is not public. Making the method public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractFieldGetNotPublic = @"The data contract type '{0}' cannot be serialized because the member '{1}' is not public. Making the member public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractFieldSetNotPublic = @"The data contract type '{0}' cannot be deserialized because the member '{1}' is not public. Making the member public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractPropertyGetNotPublic = @"The data contract type '{0}' cannot be serialized because the property '{1}' does not have a public getter. Adding a public getter will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractPropertySetNotPublic = @"The data contract type '{0}' cannot be deserialized because the property '{1}' does not have a public setter. Adding a public setter will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustDataContractTypeNotPublic = @"The data contract type '{0}' is not serializable because it is not public. Making the type public will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustNonAttributedSerializableTypeNoPublicConstructor = @"The type '{0}' cannot be deserialized because it does not have a public parameterless constructor. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustIXmlSerializableTypeNotPublic = @"The IXmlSerializable type '{0}' is not serializable in partial trust because it is not public. Adding a public parameterless constructor will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string PartialTrustIXmlSerialzableNoPublicConstructor = @"The IXmlSerializable type '{0}' cannot be deserialized because it does not have a public parameterless constructor. Adding a public parameterless constructor will fix this error. Alternatively, you can make it internal, and use the InternalsVisibleToAttribute attribute on your assembly in order to enable serialization of internal members - see documentation for more details. Be aware that doing so has certain security implications.";
+public const string NonAttributedSerializableTypesMustHaveDefaultConstructor = @"The Type '{0}' must have a parameterless constructor.";
+public const string AttributedTypesCannotInheritFromNonAttributedSerializableTypes = @"Type '{0}' cannot inherit from a type that is not marked with DataContractAttribute or SerializableAttribute.  Consider marking the base type '{1}' with DataContractAttribute or SerializableAttribute, or removing them from the derived type.";
+public const string GetOnlyCollectionsNotSupported = @"Get-only collection properties are not supported.  Consider adding a public setter to property '{0}.{1}' or marking the it with the IgnoreDataMemberAttribute. ";
+public const string QuotaMustBePositive = @"Quota must be a positive value.";
+public const string QuotaIsReadOnly = @"The '{0}' quota is readonly.";
+public const string QuotaCopyReadOnly = @"Cannot copy XmlDictionaryReaderQuotas. Target is readonly.";
+public const string RequiredMemberMustBeEmitted = @"Member {0} in type {1} cannot be serialized. This exception is usually caused by trying to use a null value where a null value is not allowed. The '{0}' member is set to its default value (usually null or zero). The member's EmitDefault setting is 'false', indicating that the member should not be serialized. However, the member's IsRequired setting is 'true', indicating that it must be serialized. This conflict cannot be resolved.  Consider setting '{0}' to a non-default value. Alternatively, you can change the EmitDefaultValue property on the DataMemberAttribute attribute to true, or changing the IsRequired property to false.";
+public const string ResolveTypeReturnedFalse = @"An object of type '{0}' which derives from DataContractResolver returned false from its TryResolveType method when attempting to resolve the name for an object of type '{1}', indicating that the resolution failed. Change the TryResolveType implementation to return true.";
+public const string ResolveTypeReturnedNull = @"An object of type '{0}' which derives from DataContractResolver returned a null typeName or typeNamespace but not both from its TryResolveType method when attempting to resolve the name for an object of type '{1}'. Change the TryResolveType implementation to return non-null values, or to return null values for both typeName and typeNamespace in order to serialize as the declared type.";
+public const string SupportForMultidimensionalArraysNotPresent = @"Multi-dimensional arrays are not supported.";
+public const string TooManyCollectionContracts = @"Type '{0}' has more than one CollectionDataContractAttribute attribute.";
+public const string TooManyDataContracts = @"Type '{0}' has more than one DataContractAttribute attribute.";
+public const string TooManyDataMembers = @"Member '{0}.{1}' has more than one DataMemberAttribute attribute.";
+public const string TooManyEnumMembers = @"Member '{0}.{1}' has more than one EnumMemberAttribute attribute.";
+public const string TooManyIgnoreDataMemberAttributes = @"Member '{0}.{1}' has more than one IgnoreDataMemberAttribute attribute.";
+public const string TypeMustBeConcrete = @"Error while getting known types for Type '{0}'. The type must not be an open or partial generic class.";
+public const string TypeNotSerializable = @"Type '{0}' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. Alternatively, you can ensure that the type is public and has a parameterless constructor - all public members of the type will then be serialized, and no attributes will be required.";
+public const string UnexpectedContractType = @"An internal error has occurred. Unexpected contract type '{0}' for type '{1}' encountered.";
+public const string UnexpectedElementExpectingElements = @"'{0}' '{1}' from namespace '{2}' is not expected. Expecting element '{3}'.";
+public const string UnexpectedEndOfFile = @"Unexpected end of file.";
+public const string UnknownConstantType = @"Unrecognized constant type '{0}'.";
+public const string UnsupportedIDictionaryAsDataMemberType = @"Cannot deserialize one of the DataMember because it is an IDictionary. Use IDictionary<K,V> instead.";
+public const string ValueMustBeNonNegative = @"The value of this argument must be non-negative.";
+public const string ValueTypeCannotBeNull = @"ValueType '{0}' cannot be null.";
+public const string ValueTypeCannotHaveBaseType = @"Data contract '{0}' from namespace '{1}' is a value type and cannot have base contract '{2}' from namespace '{3}'.";
+public const string ValueTypeCannotHaveId = @"ValueType '{0}' cannot have id.";
+public const string ValueTypeCannotHaveIsReference = @"Value type '{0}' cannot have the IsReference setting of '{1}'. Either change the setting to '{2}', or remove it completely. ";
+public const string ValueTypeCannotHaveRef = @"ValueType '{0}' cannot have ref to another object.";
+public const string XmlElementAttributes = @"Only Element nodes have attributes.";
+public const string XmlForObjectCannotHaveContent = @"Element {0} from namespace {1} cannot have child contents to be deserialized as an object. Please use XElement to deserialize this pattern of XML.";
+public const string XmlInvalidConversion = @"The value '{0}' cannot be parsed as the type '{1}'.";
+public const string XmlInvalidConversionWithoutValue = @"The value cannot be parsed as the type '{0}'.";
+public const string XmlStartElementExpected = @"Start element expected. Found {0}.";
+public const string XmlWriterMustBeInElement = @"WriteState '{0}' not valid. Caller must write start element before serializing in contentOnly mode.";
+
+       }
+}
+
+namespace System.Runtime.Serialization
+{
+       static partial class SR {
+
+public const string OffsetExceedsBufferSize = @"The specified offset exceeds the buffer size ({0} bytes).";
+public const string SizeExceedsRemainingBufferSpace = @"The specified size exceeds the remaining buffer space ({0} bytes).";
+public const string ValueMustBeInRange = @"The value of this argument must fall within the range {0} to {1}.";
+public const string XmlArrayTooSmallOutput = @"Array too small.  Must be able to hold at least {0}.";
+public const string XmlInvalidBase64Length = @"Base64 sequence length ({0}) not valid. Must be a multiple of 4.";
+public const string XmlInvalidBase64Sequence = @"The characters '{0}' at offset {1} are not a valid Base64 sequence.";
+public const string XmlInvalidBinHexLength = @"BinHex sequence length ({0}) not valid. Must be a multiple of 2.";
+public const string XmlInvalidBinHexSequence = @"The characters '{0}' at offset {1} are not a valid BinHex sequence.";
+public const string XmlInvalidHighSurrogate = @"High surrogate char '0x{0}' not valid. High surrogate chars range from 0xD800 to 0xDBFF.";
+public const string XmlInvalidLowSurrogate = @"Low surrogate char '0x{0}' not valid. Low surrogate chars range from 0xDC00 to 0xDFFF.";
+public const string XmlInvalidSurrogate = @"Surrogate char '0x{0}' not valid. Surrogate chars range from 0x10000 to 0x10FFFF.";
+
+       }
+}
+
+namespace System.Runtime.Serialization
+{
+       static partial class SR {
+
+public const string CombinedPrefixNSLength = @"The combined length of the prefix and namespace must not be greater than {0}.";
+public const string InvalidInclusivePrefixListCollection = @"The inclusive namespace prefix collection cannot contain null as one of the items.";
+public const string InvalidLocalNameEmpty = @"The empty string is not a valid local name.";
+public const string XmlArrayTooSmall = @"Array too small.";
+public const string XmlArrayTooSmallInput = @"Array too small.  Length of available data must be at least {0}.";
+public const string XmlBadBOM = @"Unrecognized Byte Order Mark.";
+public const string XmlBase64DataExpected = @"Base64 encoded data expected. Found {0}.";
+public const string XmlCDATAInvalidAtTopLevel = @"CData elements not valid at top level of an XML document.";
+public const string XmlCloseCData = @"']]>' not valid in text node content.";
+public const string XmlConversionOverflow = @"The value '{0}' cannot be represented with the type '{1}'.";
+public const string XmlDeclarationRequired = @"An XML declaration with an encoding is required for all non-UTF8 documents.";
+public const string XmlDeclMissingVersion = @"Version not found in XML declaration.";
+public const string XmlDeclMissing = @"An XML declaration is required for all non-UTF8 documents.";
+public const string XmlDeclNotFirst = @"No characters can appear before the XML declaration.";
+public const string XmlDictionaryStringIDRange = @"XmlDictionaryString IDs must be in the range from {0} to {1}.";
+public const string XmlDictionaryStringIDUndefinedSession = @"XmlDictionaryString ID {0} not defined in the XmlBinaryReaderSession.";
+public const string XmlDictionaryStringIDUndefinedStatic = @"XmlDictionaryString ID {0} not defined in the static dictionary.";
+public const string XmlDuplicateAttribute = @"Duplicate attribute found. Both '{0}' and '{1}' are from the namespace '{2}'.";
+public const string XmlEmptyNamespaceRequiresNullPrefix = @"The empty namespace requires a null or empty prefix.";
+public const string XmlEncodingMismatch = @"The encoding in the declaration '{0}' does not match the encoding of the document '{1}'.";
+public const string XmlEncodingNotSupported = @"XML encoding not supported.";
+public const string XmlEndElementExpected = @"End element '{0}' from namespace '{1}' expected. Found {2}.";
+public const string XmlEndElementNoOpenNodes = @"No corresponding start element is open.";
+public const string XmlExpectedEncoding = @"The expected encoding '{0}' does not match the actual encoding '{1}'.";
+public const string XmlFoundCData = @"cdata '{0}'";
+public const string XmlFoundComment = @"comment '{0}'";
+public const string XmlFoundElement = @"element '{0}' from namespace '{1}'";
+public const string XmlFoundEndElement = @"end element '{0}' from namespace '{1}'";
+public const string XmlFoundEndOfFile = @"end of file";
+public const string XmlFoundNodeType = @"node {0}";
+public const string XmlFoundText = @"text '{0}'";
+public const string XmlFullStartElementExpected = @"Non-empty start element expected. Found {0}.";
+public const string XmlFullStartElementLocalNameNsExpected = @"Non-empty start element '{0}' from namespace '{1}' expected. Found {2}.";
+public const string XmlFullStartElementNameExpected = @"Non-empty start element '{0}' expected. Found {1}.";
+public const string XmlIDDefined = @"ID already defined.";
+public const string XmlKeyAlreadyExists = @"The specified key already exists in the dictionary.";
+public const string XmlIllegalOutsideRoot = @"Text cannot be written outside the root element.";
+public const string XmlInvalidBytes = @"Invalid byte encoding.";
+public const string XmlInvalidCharRef = @"Character reference not valid.";
+public const string XmlInvalidCommentChars = @"XML comments cannot contain '--' or end with '-'.";
+public const string XmlInvalidDeclaration = @"XML declaration can only be written at the beginning of the document.";
+public const string XmlInvalidDepth = @"Cannot call '{0}' while Depth is '{1}'.";
+public const string XmlInvalidEncoding = @"XML encoding must be 'UTF-8'.";
+public const string XmlInvalidFFFE = @"Characters with hexadecimal values 0xFFFE and 0xFFFF are not valid.";
+public const string XmlInvalidFormat = @"The input source is not correctly formatted.";
+public const string XmlInvalidID = @"ID must be >= 0.";
+public const string XmlInvalidOperation = @"The reader cannot be advanced.";
+public const string XmlInvalidPrefixState = @"A prefix cannot be defined while WriteState is '{0}'.";
+public const string XmlInvalidQualifiedName = @"Expected XML qualified name. Found '{0}'.";
+public const string XmlInvalidRootData = @"The data at the root level is invalid.";
+public const string XmlInvalidStandalone = @"'standalone' value in declaration must be 'yes' or 'no'.";
+public const string XmlInvalidStream = @"Stream returned by IStreamProvider cannot be null.";
+public const string XmlInvalidUniqueId = @"UniqueId cannot be zero length.";
+public const string XmlInvalidUTF8Bytes = @"'{0}' contains invalid UTF8 bytes.";
+public const string XmlInvalidVersion = @"XML version must be '1.0'.";
+public const string XmlInvalidWriteState = @"'{0}' cannot be called while WriteState is '{1}'.";
+public const string XmlInvalidXmlByte = @"The byte 0x{0} is not valid at this location.";
+public const string XmlInvalidXmlSpace = @"'{0}' is not a valid xml:space value. Valid values are 'default' and 'preserve'.";
+public const string XmlLineInfo = @"Line {0}, position {1}.";
+public const string XmlMalformedDecl = @"Malformed XML declaration.";
+public const string XmlMaxArrayLengthExceeded = @"The maximum array length quota ({0}) has been exceeded while reading XML data. This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.";
+
+
+public const string XmlMaxNameTableCharCountExceeded = @"The maximum nametable character count quota ({0}) has been exceeded while reading XML data. The nametable is a data structure used to store strings encountered during XML processing - long XML documents with non-repeating element names, attribute names and attribute values may trigger this quota. This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.";
+
+public const string XmlMethodNotSupported = @"This XmlWriter implementation does not support the '{0}' method.";
+public const string XmlMissingLowSurrogate = @"The surrogate pair is invalid. Missing a low surrogate character.";
+public const string XmlMultipleRootElements = @"There are multiple root elements.";
+public const string XmlNamespaceNotFound = @"The namespace '{0}' is not defined.";
+public const string XmlNestedArraysNotSupported = @"Nested arrays are not supported.";
+public const string XmlNoRootElement = @"The document does not have a root element.";
+public const string XmlOnlyOneRoot = @"Only one root element is permitted per document.";
+public const string XmlOnlyWhitespace = @"Only white space characters can be written with this method.";
+public const string XmlOnlySingleValue = @"Only a single typed value may be written inside an attribute or content.";
+public const string XmlPrefixBoundToNamespace = @"The prefix '{0}' is bound to the namespace '{1}' and cannot be changed to '{2}'.";
+public const string XmlProcessingInstructionNotSupported = @"Processing instructions (other than the XML declaration) and DTDs are not supported.";
+public const string XmlReservedPrefix = @"Prefixes beginning with ""xml"" (regardless of casing) are reserved for use by XML.";
+public const string XmlSpaceBetweenAttributes = @"Whitespace must appear between attributes.";
+public const string XmlSpecificBindingNamespace = @"The namespace '{1}' can only be bound to the prefix '{0}'.";
+public const string XmlSpecificBindingPrefix = @"The prefix '{0}' can only be bound to the namespace '{1}'.";
+public const string XmlStartElementLocalNameNsExpected = @"Start element '{0}' from namespace '{1}' expected. Found {2}.";
+public const string XmlStartElementNameExpected = @"Start element '{0}' expected. Found {1}.";
+public const string XmlTagMismatch = @"Start element '{0}' does not match end element '{1}'.";
+public const string XmlTokenExpected = @"The token '{0}' was expected but found '{1}'.";
+public const string XmlUndefinedPrefix = @"The prefix '{0}' is not defined.";
+public const string XmlUnexpectedEndElement = @"No matching start tag for end element.";
+public const string XmlUnexpectedEndOfFile = @"Unexpected end of file. Following elements are not closed: {0}.";
+public const string XmlWriterClosed = @"The XmlWriter is closed.";
+public const string Xml_InvalidNmToken = @"Invalid NmToken value '{0}'.";
+
+       }
+}
+
+#endregion
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/SR_missing.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/SR_missing.cs
new file mode 100644 (file)
index 0000000..972c50a
--- /dev/null
@@ -0,0 +1,291 @@
+namespace System.Runtime.Serialization
+{
+       static partial class SR
+       {
+
+#region MissingInStrings.txt
+
+//
+// This was retrieved as follows:
+//
+// 1. mcs ReferenceSources/SR.cs -t:library -out:existing.dll
+// 2. mcs {https://raw.githubusercontent.com/mono/mono/wip-serialization-halfway/mcs/class/System.Runtime.Serialization/ReferenceSource/SR.cs} -t:library -out:full.dll
+// 3. csharp -e "System.IO.File.WriteAllLines ("existing.txt", System.Reflection.Assembly.ReflectionOnlyLoadFrom ("existing.dll").GetTypes ().SelectMany (t => t.GetFields ()).Select (f => f.Name).ToArray ())"
+// 4. csharp -e "System.IO.File.WriteAllLines ("full.txt", System.Reflection.Assembly.ReflectionOnlyLoadFrom ("full.dll").GetTypes ().SelectMany (t => t.GetFields ()).Select (f => f.Name).ToArray ())"
+// 5. csharp
+//     var existing = System.IO.File.ReadAllLines ("existing.txt");
+//     var full = System.IO.File.ReadAllLines ("full.txt");
+//  var missing = full.Where (f => !existing.Contains (f));
+//  System.IO.File.WriteAllLines ("missing.cs", missing.Select (m => "public const string " + m + " = @\"" + m + "\";").ToArray ())
+// 6. copy missing.cs contents here.
+//
+
+public const string AbstractElementNotSupported = @"Abstract element '{0}' is not supported.";
+public const string AbstractTypeNotSupported = @"Abstract type is not supported";
+public const string AmbiguousReferencedCollectionTypes1 = @"Ambiguous collection types were referenced: {0}";
+public const string AmbiguousReferencedCollectionTypes3 = @"In '{0}' element in '{1}' namespace, ambiguous collection types were referenced: {2}";
+public const string AmbiguousReferencedTypes1 = @"Ambiguous types were referenced: {0}";
+public const string AmbiguousReferencedTypes3 = @"In '{0}' element in '{1}' namespace, ambiguous types were referenced: {2}";
+public const string AnnotationAttributeNotFound = @"Annotation attribute was not found: default value annotation is '{0}', type is '{1}' in '{2}' namespace, emit default value is {3}.";
+public const string AnonymousTypeNotSupported = @"Anonymous type is not supported. Type is '{0}' in '{1}' namespace.";
+public const string AnyAttributeNotSupported = @"XML Schema 'any' attribute is not supported";
+public const string ArrayItemFormMustBe = @"For array item, element 'form' must be {0}.";
+public const string ArraySizeAttributeIncorrect = @"Array size attribute is incorrect; must be between {0} and {1}.";
+
+public const string ArrayTypeCannotBeImported = @"Array type cannot be imported for '{0}' in '{1}' namespace: {2}.";
+public const string AssemblyNotFound = @"Assembly '{0}' was not found.";
+public const string AttributeNotFound = @"Attribute was not found for CLR type '{1}' in namespace '{0}'. XML reader node is on {2}, '{4}' node in '{3}' namespace.";
+public const string BaseTypeNotISerializable = @"Base type '{0}' in '{1}' namespace is not ISerializable.";
+public const string CannotComputeUniqueName = @"Cannot compute unique name for '{0}'.";
+public const string CannotDeriveFromSealedReferenceType = @"Cannod drive from sealed reference type '{2}', for '{0}' element in '{1}' namespace.";
+public const string CannotDeserializeForwardedType = @"Cannot deserialize forwarded type '{0}'.";
+public const string CannotExportNullAssembly = @"Cannot export null assembly.";
+public const string CannotExportNullKnownType = @"Cannot export null known type.";
+public const string CannotExportNullType = @"Cannot export null type.";
+public const string CannotHaveDuplicateAttributeNames = @"Cannot have duplicate attribute names '{0}'.";
+public const string CannotHaveDuplicateElementNames = @"Cannot have duplicate element names '{0}'.";
+public const string CannotImportInvalidSchemas = @"Cannot import invalid schemas.";
+public const string CannotImportNullDataContractName = @"Cannot import data contract with null name.";
+public const string CannotImportNullSchema = @"Cannot import from schema list that contains null.";
+public const string CannotSetMembersForReferencedType = @"Cannot set members for already referenced type. Base type is '{0}'.";
+public const string CannotSetNamespaceForReferencedType = @"Cannot set namespace for already referenced type. Base type is '{0}'.";
+public const string CannotUseGenericTypeAsBase = @"For '{0}' in '{1}' namespace, generic type cannot be referenced as the base type.";
+public const string ChangingFullTypeNameNotSupported = @"Changing full type name is not supported. Serialization type name: '{0}', data contract type name: '{1}'.";
+public const string CircularTypeReference = @"Circular type reference was found for '{0}' in '{1}' namespace.";
+public const string ClassDataContractReturnedForGetOnlyCollection = @"For '{0}' type, class data contract was returned for get-only collection.";
+public const string CLRNamespaceMappedMultipleTimes = @"CLR namespace is mapped multiple times. Current data contract namespace is '{0}', found '{1}' for CLR namespace '{2}'.";
+public const string ClrTypeNotFound = @"CLR type '{1}' in assembly '{0}' is not found.";
+public const string CollectionAssignedToIncompatibleInterface = @"Collection of type '{0}' is assigned to an incompatible interface '{1}'";
+public const string ComplexTypeRestrictionNotSupported = @"XML schema complexType restriction is not supported.";
+public const string ConfigDataContractSerializerSectionLoadError = @"Failed to load configuration section for dataContractSerializer.";
+public const string ConfigIndexOutOfRange = @"For type '{0}', configuration index is out of range.";
+public const string ConfigMustOnlyAddParamsWithType = @"Configuration parameter element must only add params with type."; // huh? the code doesn't make a lot of sense to me...
+public const string ConfigMustOnlySetTypeOrIndex = @"Configuration parameter element can set only one of either type or index.";
+public const string ConfigMustSetTypeOrIndex = @"Configuration parameter element must set either type or index.";
+public const string CouldNotReadSerializationSchema = @"Could not read serialization schema for '{0}' namespace.";
+public const string DefaultOnElementNotSupported = @"On element '{0}', default value is not supported.";
+public const string DerivedTypeNotISerializable = @"On type '{0}' in '{1}' namespace, derived type is not ISerializable.";
+public const string DupContractInDataContractSet = @"Duplicate contract in data contract set was found, for '{0}' in '{1}' namespace.";
+public const string DuplicateExtensionDataSetMethod = @"Duplicate extension data set method was found, for method '{0}', existing method is '{1}', on data contract type '{2}'.";
+public const string DupTypeContractInDataContractSet = @"Duplicate type contract in data contract set. Type name '{0}', for data contract '{1}' in '{2}' namespace.";
+public const string ElementMaxOccursMustBe = @"On element '{0}', schema element maxOccurs must be 1.";
+public const string ElementMinOccursMustBe = @"On element '{0}', schema element minOccurs must be less or equal to 1.";
+public const string ElementRefOnLocalElementNotSupported = @"For local element, ref is not supported. The referenced name is '{0}' in '{1}' namespace.";
+public const string EnumEnumerationFacetsMustHaveValue = @"Schema enumeration facet must have values.";
+public const string EnumListInAnonymousTypeNotSupported = @"Enum list in anonymous type is not supported.";
+public const string EnumListMustContainAnonymousType = @"Enum list must contain an anonymous type.";
+public const string EnumOnlyEnumerationFacetsSupported = @"For schema facets, only enumeration is supported.";
+public const string EnumRestrictionInvalid = @"For simpleType restriction, only enum is supported and this type could not be convert to enum.";
+public const string EnumTypeCannotBeImported = @"For '{0}' in '{1}' namespace, enum type cannot be imported: {2}";
+public const string EnumTypeNotSupportedByDataContractJsonSerializer = @"Enum type is not supported by DataContractJsonSerializer. The underlying type is '{0}'.";
+public const string EnumUnionInAnonymousTypeNotSupported = @"Enum union in anonymous type is not supported.";
+public const string ExtensionDataSetMustReturnVoid = @"For type '{0}' method '{1}', extension data set method must return void.";
+public const string ExtensionDataSetParameterInvalid = @"For type '{0}' method '{1}', extension data set method has invalid type of parameter '{2}'.";
+public const string FactoryObjectContainsSelfReference = @"Factory object contains a reference to self. Old object is '{0}', new object is '{1}'.";
+public const string FactoryTypeNotISerializable = @"For data contract '{1}', factory type '{0}' is not ISerializable.";
+public const string FixedOnElementNotSupported = @"On schema element '{0}', fixed value is not supported.";
+public const string FlushBufferAlreadyInUse = @"Flush buffer is already in use.";
+public const string FormMustBeQualified = @"On schema element '{0}', form must be qualified.";
+public const string GenericAnnotationAttributeNotFound = @"On type '{0}' Generic annotation attribute '{1}' was not found.";
+public const string GenericAnnotationForNestedLevelMustBeIncreasing = @"On type '{2}', generic annotation for nested level must be increasing. Argument element is '{0}' in '{1}' namespace.";
+public const string GenericAnnotationHasInvalidAttributeValue = @"On type '{2}', generic annotation has invalid attribute value '{3}'. Argument element is '{0}' in '{1}' namespace. Nested level attribute attribute name is '{4}'. Type is '{5}'."; // dunno if this makes sense...
+public const string GenericAnnotationHasInvalidElement = @"On type '{2}', generic annotation has invalid element. Argument element is '{0}' in '{1}' namespace.";
+public const string GenericTypeNameMismatch = @"Generic type name mismatch. Expected '{0}' in '{1}' namespace, got '{2}' in '{3}' namespace instead.";
+public const string GenericTypeNotExportable = @"Generic type '{0}' is not exportable.";
+public const string GetOnlyCollectionMustHaveAddMethod = @"On type '{0}', get-only collection must have an Add method.";
+public const string GetRealObjectReturnedNull = @"On the surrogate data contract for '{0}', GetRealObject method returned null.";
+public const string InvalidAnnotationExpectingText = @"For annotation element '{0}' in namespace '{1}', expected text but got element '{2}' in '{3}' namespace.";
+public const string InvalidAssemblyFormat = @"'{0}': invalid assembly format.";
+public const string InvalidCharacterEncountered = @"Encountered an invalid character '{0}'.";
+public const string InvalidClassDerivation = @"Invalid class derivation from '{0}' in '{1}' namespace.";
+public const string InvalidClrNameGeneratedForISerializable = @"Invalid CLR name '{2}' is generated for ISerializable type '{0}' in '{1}' namespace.";
+public const string InvalidClrNamespaceGeneratedForISerializable = @"Invalid CLR namespace '{3}' is generated for ISerializable type '{0}' in '{1}' namespace. Data contract namespace from the URI would be generated as '{2}'.";
+public const string InvalidDataNode = @"Invalid data node for '{0}' type.";
+public const string InvalidEmitDefaultAnnotation = @"Invalid EmilDefault annotation for '{0}' in type '{1}' in '{2}' namespace.";
+public const string InvalidEnumBaseType = @"Invalid enum base type is specified for type '{0}' in '{1}' namespace, element name is '{2}' in '{3}' namespace.";
+public const string InvalidISerializableDerivation = @"Invalid ISerializable derivation from '{0}' in '{1}' namespace.";
+public const string InvalidKeyValueType = @"'{0}' is an invalid key value type.";
+public const string InvalidKeyValueTypeNamespace = @"'{0}' in '{1}' namespace is an invalid key value type.";
+public const string InvalidReturnSchemaOnGetSchemaMethod = @"On type '{0}', the return value from GetSchema method was invalid.";
+public const string InvalidStateInExtensionDataReader = @"Invalid state in extension data reader.";
+public const string InvalidXmlDeserializingExtensionData = @"Invalid XML while deserializing extension data.";
+public const string IsAnyNotSupportedByNetDataContractSerializer = @"For type '{0}', IsAny is not supported by NetDataContractSerializer.";
+public const string IsDictionaryFormattedIncorrectly = @"IsDictionary formatted value '{0}' is incorrect: {1}";
+public const string ISerializableAssemblyNameSetToZero = @"ISerializable AssemblyName is set to ""0"" for type '{0}'.";
+public const string ISerializableCannotHaveDataContract = @"ISerializable type '{0}' cannot have DataContract.";
+public const string ISerializableContainsMoreThanOneItems = @"ISerializable cannot contain more than one item.";
+public const string ISerializableDerivedContainsOneOrMoreItems = @"Type derived from ISerializable cannot contain more than one item.";
+public const string ISerializableDoesNotContainAny = @"ISerializable does not contain any element.";
+public const string ISerializableMustRefFactoryTypeAttribute = @"ISerializable must have ref attribute that points to its factory type.";
+public const string ISerializableTypeCannotBeImported = @"ISerializable type '{0}' in '{1}' namespace cannot be imported: {2}";
+public const string ISerializableWildcardMaxOccursMustBe = @"ISerializable wildcard maxOccurs must be '{0}'.";
+public const string ISerializableWildcardMinOccursMustBe = @"ISerializable wildcard maxOccurs must be '{0}'.";
+public const string ISerializableWildcardNamespaceInvalid = @"ISerializable wildcard namespace is invalid: '{0}'.";
+public const string ISerializableWildcardProcessContentsInvalid = @"ISerializable wildcard processContents is invalid: '{0}'.";
+public const string IsReferenceGetOnlyCollectionsNotSupported = @"On type '{1}', attribute '{0}' points to get-only collection, which is not supported.";
+public const string IsValueTypeFormattedIncorrectly = @"IsValueType is formatted incorrectly as '{0}': {1}";
+public const string JsonAttributeAlreadyWritten = @"JSON attribute '{0}' is already written.";
+public const string JsonAttributeMustHaveElement = @"JSON attribute must have an owner element.";
+public const string JsonCannotWriteStandaloneTextAfterQuotedText = @"JSON writer cannot write standalone text after quoted text.";
+public const string JsonCannotWriteTextAfterNonTextAttribute = @"JSON writer cannot write text after non-text attribute. Data type is '{0}'.";
+public const string JsonDateTimeOutOfRange = @"JSON DateTime is out of range.";
+public const string JsonDuplicateMemberInInput = @"Duplicate member '{0}' is found in JSON input.";
+public const string JsonDuplicateMemberNames = @"Duplicate member, including '{1}', is found in JSON input, in type '{0}'.";
+public const string JsonEncodingNotSupported = @"JSON Encoding is not supported.";
+public const string JsonEncounteredUnexpectedCharacter = @"Encountered an unexpected character '{0}' in JSON.";
+public const string JsonEndElementNoOpenNodes = @"Encountered an end element while there was no open element in JSON writer.";
+public const string JsonExpectedEncoding = @"Expected encoding '{0}', got '{1}' instead.";
+public const string JsonInvalidBytes = @"Invalid bytes in JSON.";
+public const string JsonInvalidDataTypeSpecifiedForServerType = @"The specified data type is invalid for server type. Type: '{0}', specified data type: '{1}', server type: '{2}', object '{3}'."; // I wonder if this makes sense...
+public const string JsonInvalidDateTimeString = @"Invalid JSON dateTime string is specified: original value '{0}', start guide writer: {1}, end guard writer: {2}.";
+public const string JsonInvalidFFFE = @"FFFE in JSON is invalid.";
+public const string JsonInvalidItemNameForArrayElement = @"Invalid JSON item name '{0}' for array element (item element is '{1}' in JSON).";
+public const string JsonInvalidLocalNameEmpty = @"Empty string is invalid as a local name.";
+public const string JsonInvalidMethodBetweenStartEndAttribute = @"Invalid method call state between start and end attribute.";
+public const string JsonInvalidRootElementName = @"Invalid root element name '{0}' (root element is '{1}' in JSON).";
+public const string JsonInvalidStartElementCall = @"Invalid call to JSON WriteStartElement method.";
+public const string JsonInvalidWriteState = @"Invalid write state {1} for '{0}' method.";
+public const string JsonMethodNotSupported = @"Method {0} is not supported in JSON.";
+public const string JsonMultipleRootElementsNotAllowedOnWriter = @"Multiple root element is not allowed on JSON writer.";
+public const string JsonMustSpecifyDataType = @"On JSON writer data type '{0}' must be specified. Object string is '{1}', server type string is '{2}'.";
+public const string JsonMustUseWriteStringForWritingAttributeValues = @"On JSON writer WriteString must be used for writing attribute values.";
+public const string JsonNamespaceMustBeEmpty = @"JSON namespace is specified as '{0}' but it must be empty.";
+public const string JsonNestedArraysNotSupported = @"Nested array is not supported in JSON: '{0}'";
+public const string JsonNodeTypeArrayOrObjectNotSpecified = @"Either Object or Array of JSON node type must be specified.";
+public const string JsonNoMatchingStartAttribute = @"WriteEndAttribute was called while there is no open attribute.";
+public const string JsonOffsetExceedsBufferSize = @"On JSON writer, offset exceeded buffer size {0}.";
+public const string JsonOneRequiredMemberNotFound = @"Required member {1} in type '{0}' is not found.";
+public const string JsonOnlyWhitespace = @"Only whitespace characters are allowed for {1} method. The specified value is '{0}'";
+public const string JsonOpenAttributeMustBeClosedFirst = @"JSON attribute must be closed first before calling {0} method.";
+public const string JsonPrefixMustBeNullOrEmpty = @"JSON prefix must be null or empty. '{0}' is specified instead.";
+public const string JsonRequiredMembersNotFound = @"Required members {0} in type '{1}' are not found.";
+public const string JsonServerTypeSpecifiedForInvalidDataType = @"Server type is specified for invalid data type in JSON. Server type: '{0}', type: '{1}', dataType: '{2}', object: '{3}'.";
+public const string JsonSizeExceedsRemainingBufferSpace = @"JSON size exceeded remaining buffer space, by {0} byte(s).";
+public const string JsonTypeNotSupportedByDataContractJsonSerializer = @"Type '{0}' is not suppotred by DataContractJsonSerializer.";
+public const string JsonUnexpectedAttributeLocalName = @"Unexpected attribute local name '{0}'.";
+public const string JsonUnexpectedAttributeValue = @"Unexpected attribute value '{0}'.";
+public const string JsonUnexpectedEndOfFile = @"Unexpected end of file in JSON.";
+public const string JsonUnsupportedForIsReference = @"Unsupported value for IsReference for type '{0}', IsReference value is {1}.";
+public const string JsonWriteArrayNotSupported = @"JSON WriteArray is not supported.";
+public const string JsonWriterClosed = @"JSON writer is already closed.";
+public const string JsonXmlInvalidDeclaration = @"Attempt to write invalid XML declration.";
+public const string JsonXmlProcessingInstructionNotSupported = @"processing instruction is not supported in JSON writer.";
+public const string KeyTypeCannotBeParsedInSimpleDictionary = @"Key type '{1}' for collection type '{0}' cannot be parsed in simple dictionary.";
+public const string KnownTypeConfigGenericParamMismatch = @"Generic parameter count do not match between known type and configuration. Type is '{0}', known type has {1} parameters, configuration has {2} parameters.";
+public const string KnownTypeConfigIndexOutOfBounds = @"For known type configuration, index is out of bound. Root type: '{0}' has {1} type arguments, and index was {2}.";
+public const string KnownTypeConfigIndexOutOfBoundsZero = @"For known type configuration, index is out of bound. Root type: '{0}' has {1} type arguments, and index was {2}.";
+public const string KnownTypeConfigObject = @"Known type configuration specifies System.Object.";
+public const string MaxMimePartsExceeded = @"MIME parts number exceeded the maximum settings. Must be less than {0}. Specified as '{1}'.";
+public const string MimeContentTypeHeaderInvalid = @"MIME content type header is invalid.";
+public const string MimeHeaderInvalidCharacter = @"MIME header has an invalid character ('{0}', {1} in hexadecimal value).";
+public const string MimeMessageGetContentStreamCalledAlready = @"On MimeMessage, GetContentStream method is already called.";
+public const string MimeReaderHeaderAlreadyExists = @"MIME header '{0}' already exists.";
+public const string MimeReaderMalformedHeader = @"Malformed MIME header.";
+public const string MimeReaderResetCalledBeforeEOF = @"On MimeReader, Reset method is called before EOF.";
+public const string MimeReaderTruncated = @"MIME parts are truncated.";
+public const string MimeVersionHeaderInvalid = @"MIME version header is invalid.";
+public const string MimeWriterInvalidStateForClose = @"MIME writer is at invalid state for closing.";
+public const string MimeWriterInvalidStateForContent = @"MIME writer is at invalid state for content.";
+public const string MimeWriterInvalidStateForHeader = @"MIME writer is at invalid state for header.";
+public const string MimeWriterInvalidStateForStartPart = @"MIME writer is at invalid state for starting a part.";
+public const string MimeWriterInvalidStateForStartPreface = @"MIME writer is at invalid state for starting preface.";
+public const string MissingSchemaType = @"Schema type '{0}' is missing and required for '{1}' type.";
+public const string MixedContentNotSupported = @"Mixed content is not supported.";
+public const string MtomBoundaryInvalid = @"MIME boundary is invalid: '{0}'.";
+public const string MtomBufferQuotaExceeded = @"MTOM buffer quota exceeded. The maximum size is {0}.";
+public const string MtomContentTransferEncodingNotPresent = @"MTOM content transfer encoding is not present. ContentTransferEncoding header is '{0}'.";
+public const string MtomContentTransferEncodingNotSupported = @"MTOM content transfer encoding value is not supported. Raw value is '{0}', '{1}' in 7bit encoding, '{2}' in 8bit encoding, and '{3}' in binary.";
+public const string MtomContentTypeInvalid = @"MTOM content type is invalid.";
+public const string MtomDataMustNotContainXopInclude = @"MTOM data must not contain xop:Include element. '{0}' element in '{1}' namespace.";
+public const string MtomExceededMaxSizeInBytes = @"MTOM exceeded max size in bytes. The maximum size is {0}.";
+public const string MtomInvalidCIDUri = @"Invalid MTOM CID URI: '{0}'.";
+public const string MtomInvalidEmptyURI = @"empty URI is invalid for MTOM MIME part.";
+public const string MtomInvalidStartUri = @"Invalid MTOM start URI: '{0}'.";
+public const string MtomInvalidTransferEncodingForMimePart = @"Invalid transfer encoding for MIME part: '{0}', in binary: '{1}'.";
+public const string MtomMessageContentTypeNotFound = @"MTOM message content type was not found.";
+public const string MtomMessageInvalidContent = @"MTOM message content is invalid.";
+public const string MtomMessageInvalidContentInMimePart = @"MTOM message content in MIME part is invalid.";
+public const string MtomMessageInvalidMimeVersion = @"MTOM message has invalid MIME version. Expected '{1}', got '{0}' instead.";
+public const string MtomMessageNotApplicationXopXml = @"MTOM msssage type is not '{0}'.";
+public const string MtomMessageNotMultipart = @"MTOM message is not multipart: media type should be '{0}', media subtype should be '{1}'.";
+public const string MtomMessageRequiredParamNotSpecified = @"Required MTOM parameter '{0}' is not specified.";
+public const string MtomMimePartReferencedMoreThanOnce = @"Specified MIME part '{0}' is referenced more than once.";
+public const string MtomPartNotFound = @"MTOM part with URI '{0}' is not found.";
+public const string MtomRootContentTypeNotFound = @"MTOM root content type is not found.";
+public const string MtomRootNotApplicationXopXml = @"MTOM root should have media type '{0}' and subtype '{1}'.";
+public const string MtomRootPartNotFound = @"MTOM root part is not found.";
+public const string MtomRootRequiredParamNotSpecified = @"Required MTOM root parameter '{0}' is not specified.";
+public const string MtomRootUnexpectedCharset = @"Unexpected charset on MTOM root. Expected '{1}', got '{0}' instead.";
+public const string MtomRootUnexpectedType = @"Unexpected type on MTOM root. Expected '{1}', got '{0}' instead.";
+public const string MtomXopIncludeHrefNotSpecified = @"xop Include element did not specify '{0}' attribute.";
+public const string MtomXopIncludeInvalidXopAttributes = @"xop Include element has invalid attribute: '{0}' in '{1}' namespace.";
+public const string MtomXopIncludeInvalidXopElement = @"xop Include element has invalid element: '{0}' in '{1}' namespace.";
+public const string MustContainOnlyLocalElements = @"Only local elements can be imported.";
+public const string NoAsyncWritePending = @"No async write operation is pending.";
+public const string NonOptionalFieldMemberOnIsReferenceSerializableType = @"For type '{0}', non-optional field member '{1}' is on the Serializable type that has IsReference as {2}.";
+public const string OnlyDataContractTypesCanHaveExtensionData = @"On '{0}' type, only DataContract types can have extension data.";
+public const string PartialTrustISerializableNoPublicConstructor = @"Partial trust access required for the constructor on the ISerializable type '{0}'";
+public const string QueryGeneratorPathToMemberNotFound = @"The path to member was not found for XPath query generator.";
+public const string ReadNotSupportedOnStream = @"Read operation is not supported on the Stream.";
+public const string ReadOnlyClassDeserialization = @"Error on deserializing read-only members in the class: {0}";
+public const string ReadOnlyCollectionDeserialization = @"Error on deserializing read-only collection: {0}";
+public const string RecursiveCollectionType = @"Type '{0}' involves recursive collection.";
+public const string RedefineNotSupported = @"XML Schema 'redefine' is not supported.";
+public const string ReferencedBaseTypeDoesNotExist = @"Referenced base type does not exist. Data contract name: '{0}' in '{1}' namespace, expected type: '{2}' in '{3}' namespace. Collection can be '{4}' or '{5}'."; // is it the expected message? I'm quite unsure.
+public const string ReferencedCollectionTypesCannotContainNull = @"Referenced collection types cannot contain null.";
+public const string ReferencedTypeDoesNotMatch = @"Referenced type '{0}' does not match the expected type '{1}' in '{2}' namespace.";
+public const string ReferencedTypeMatchingMessage = @"Reference type matches.";
+public const string ReferencedTypeNotMatchingMessage = @"Reference type does not match.";
+public const string ReferencedTypesCannotContainNull = @"Referenced types cannot contain null.";
+public const string RequiresClassDataContractToSetIsISerializable = @"To set IsISerializable, class data cotnract is required.";
+public const string RootParticleMustBeSequence = @"Root particle must be sequence to be imported.";
+public const string RootSequenceMaxOccursMustBe = @"On root sequence, maxOccurs must be 1.";
+public const string RootSequenceMustBeRequired = @"Root sequence must have an item and minOccurs must be 1.";
+public const string SeekNotSupportedOnStream = @"Seek operation is not supported on this Stream.";
+public const string SerializationInfo_ConstructorNotFound = @"Constructor that takes SerializationInfo and StreamingContext is not found for '{0}'.";
+public const string SimpleContentNotSupported = @"Simple content is not supported.";
+public const string SimpleTypeRestrictionDoesNotSpecifyBase = @"This simpleType restriction does not specify the base type.";
+public const string SimpleTypeUnionNotSupported = @"simpleType union is not supported.";
+public const string SpecifiedTypeNotFoundInSchema = @"Specified type '{0}' in '{1}' namespace is not found in the schemas.";
+public const string SubstitutionGroupOnElementNotSupported = @"substitutionGroups on elements are not supported.";
+public const string SurrogatesWithGetOnlyCollectionsNotSupported = @"Surrogates with get-only collections are not supported. Type '{1}' contains '{2}' which is of '{0}' type.";
+public const string SurrogatesWithGetOnlyCollectionsNotSupportedSerDeser = @"Surrogates with get-only collections are not supported. Found on type '{0}'.";
+public const string TopLevelElementRepresentsDifferentType = @"Top-level element represents a different type. Expected '{0}' type in '{1}' namespace.";
+public const string TraceCodeElementIgnored = @"Element ignored";
+public const string TraceCodeFactoryTypeNotFound = @"Factory type not found";
+public const string TraceCodeObjectWithLargeDepth = @"Object with large depth";
+public const string TraceCodeReadObjectBegin = @"ReadObject begins";
+public const string TraceCodeReadObjectEnd = @"ReadObject ends";
+public const string TraceCodeWriteObjectBegin = @"WriteObject begins";
+public const string TraceCodeWriteObjectContentBegin = @"WriteObjectContent begins";
+public const string TraceCodeWriteObjectContentEnd = @"WriteObjectContent ends";
+public const string TraceCodeWriteObjectEnd = @"WriteObject ends";
+public const string TraceCodeXsdExportAnnotationFailed = @"XSD export annotation failed";
+public const string TraceCodeXsdExportBegin = @"XSD export begins";
+public const string TraceCodeXsdExportDupItems = @"XSD export duplicate items";
+public const string TraceCodeXsdExportEnd = @"XSD export ends";
+public const string TraceCodeXsdExportError = @"XSD export error";
+public const string TraceCodeXsdImportAnnotationFailed = @"XSD import annotation failed";
+public const string TraceCodeXsdImportBegin = @"XSD import begins";
+public const string TraceCodeXsdImportEnd = @"XSD import ends";
+public const string TraceCodeXsdImportError = @"XSD import error";
+public const string TypeCannotBeForwardedFrom = @"Type '{0}' in assembly '{1}' cannot be forwarded from assembly '{2}'.";
+public const string TypeCannotBeImported = @"Type '{0}' in '{1}' namespace cannot be imported: {2}";
+public const string TypeCannotBeImportedHowToFix = @"Type cannot be imported: {0}"; // I cannot see where HowToFix is given from...
+public const string TypeHasNotBeenImported = @"Type '{0}' in '{1}' namespace has not been imported.";
+public const string TypeMustBeIXmlSerializable = @"Type '{0}' must be IXmlSerializable. Contract type: '{1}', contract name: '{2}' in '{3}' namespace.";
+public const string TypeShouldNotContainAttributes = @"Type should not contain attributes. Serialization namespace: '{0}'.";
+public const string UnknownXmlType = @"Unknown XML type: '{0}'.";
+public const string WriteBufferOverflow = @"Write buffer overflow.";
+public const string WriteNotSupportedOnStream = @"Write operation is not supported on this '{0}' Stream.";
+public const string XmlCanonicalizationNotStarted = @"XML canonicalization was not started.";
+public const string XmlCanonicalizationStarted = @"XML canonicalization started";
+public const string XmlMaxArrayLengthOrMaxItemsQuotaExceeded = @"XML max array length or max items quota exceeded. It must be less than {0}.";
+public const string XmlMaxBytesPerReadExceeded = @"XML max bytes per read exceeded. It must be less than {0}.";
+public const string XmlMaxDepthExceeded = @"XML max depth exceeded. It must be less than {0}.";
+public const string XmlMaxStringContentLengthExceeded = @"XML max string content length exceeded. It must be less than {0}.";
+public const string XmlObjectAssignedToIncompatibleInterface = @"Object of type '{0}' is assigned to an incompatible interface '{1}'.";
+
+#endregion
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/SchemaExporter_mobile.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/SchemaExporter_mobile.cs
new file mode 100644 (file)
index 0000000..aa55440
--- /dev/null
@@ -0,0 +1,223 @@
+
+namespace System.Runtime.Serialization
+{
+       using System;
+       using System.Collections;
+       using System.Collections.Generic;
+       using System.Collections.ObjectModel;
+       using System.Diagnostics;
+       using System.Globalization;
+       using System.IO;
+       using System.Reflection;
+       using System.Runtime.Diagnostics;
+       using System.ServiceModel.Diagnostics;
+       using System.Security;
+       using System.Xml;
+       using System.Xml.Schema;
+       using System.Xml.Serialization;
+       using System.Runtime.Serialization.Diagnostics;
+
+       class SchemaExporter
+       {
+        internal static void GetXmlTypeInfo(Type type, out XmlQualifiedName stableName, out XmlSchemaType xsdType, out bool hasRoot)
+        {
+            if (IsSpecialXmlType(type, out stableName, out xsdType, out hasRoot))
+                return;
+            XmlSchemaSet schemas = new XmlSchemaSet();
+            schemas.XmlResolver = null;
+            InvokeSchemaProviderMethod(type, schemas, out stableName, out xsdType, out hasRoot);
+            if (stableName.Name == null || stableName.Name.Length == 0)
+                throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.InvalidXmlDataContractName, DataContract.GetClrTypeFullName(type))));
+        }
+
+        internal static bool IsSpecialXmlType(Type type, out XmlQualifiedName typeName, out XmlSchemaType xsdType, out bool hasRoot)
+        {
+            xsdType = null;
+            hasRoot = true;
+            if (type == Globals.TypeOfXmlElement || type == Globals.TypeOfXmlNodeArray)
+            {
+                string name = null;
+                if (type == Globals.TypeOfXmlElement)
+                {
+                    xsdType = CreateAnyElementType();
+                    name = "XmlElement";
+                    hasRoot = false;
+                }
+                else
+                {
+                    xsdType = CreateAnyType();
+                    name = "ArrayOfXmlNode";
+                    hasRoot = true;
+                }
+                typeName = new XmlQualifiedName(name, DataContract.GetDefaultStableNamespace(type));
+                return true;
+            }
+            typeName = null;
+            return false;
+        }
+
+        static bool InvokeSchemaProviderMethod(Type clrType, XmlSchemaSet schemas, out XmlQualifiedName stableName, out XmlSchemaType xsdType, out bool hasRoot)
+        {
+            xsdType = null;
+            hasRoot = true;
+            object[] attrs = clrType.GetCustomAttributes(Globals.TypeOfXmlSchemaProviderAttribute, false);
+            if (attrs == null || attrs.Length == 0)
+            {
+                stableName = DataContract.GetDefaultStableName(clrType);
+                return false;
+            }
+
+            XmlSchemaProviderAttribute provider = (XmlSchemaProviderAttribute)attrs[0];
+            if (provider.IsAny)
+            {
+                xsdType = CreateAnyElementType();
+                hasRoot = false;
+            }
+            string methodName = provider.MethodName;
+            if (methodName == null || methodName.Length == 0)
+            {
+                if (!provider.IsAny)
+                    throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.InvalidGetSchemaMethod, DataContract.GetClrTypeFullName(clrType))));
+                stableName = DataContract.GetDefaultStableName(clrType);
+            }
+            else
+            {
+                MethodInfo getMethod = clrType.GetMethod(methodName,  /*BindingFlags.DeclaredOnly |*/ BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, null, new Type[] { typeof(XmlSchemaSet) }, null);
+                if (getMethod == null)
+                    throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.MissingGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName)));
+
+                if (!(Globals.TypeOfXmlQualifiedName.IsAssignableFrom(getMethod.ReturnType)) && !(Globals.TypeOfXmlSchemaType.IsAssignableFrom(getMethod.ReturnType)))
+                    throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.InvalidReturnTypeOnGetSchemaMethod, DataContract.GetClrTypeFullName(clrType), methodName, DataContract.GetClrTypeFullName(getMethod.ReturnType), DataContract.GetClrTypeFullName(Globals.TypeOfXmlQualifiedName), typeof(XmlSchemaType))));
+
+                object typeInfo = getMethod.Invoke(null, new object[] { schemas });
+
+                if (provider.IsAny)
+                {
+                    if (typeInfo != null)
+                        throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.InvalidNonNullReturnValueByIsAny, DataContract.GetClrTypeFullName(clrType), methodName)));
+                    stableName = DataContract.GetDefaultStableName(clrType);
+                }
+                else if (typeInfo == null)
+                {
+                    xsdType = CreateAnyElementType();
+                    hasRoot = false;
+                    stableName = DataContract.GetDefaultStableName(clrType);
+                }
+                else
+                {
+                    XmlSchemaType providerXsdType = typeInfo as XmlSchemaType;
+                    if (providerXsdType != null)
+                    {
+                        string typeName = providerXsdType.Name;
+                        string typeNs = null;
+                        if (typeName == null || typeName.Length == 0)
+                        {
+                            DataContract.GetDefaultStableName(DataContract.GetClrTypeFullName(clrType), out typeName, out typeNs);
+                            stableName = new XmlQualifiedName(typeName, typeNs);
+                            providerXsdType.Annotation = GetSchemaAnnotation(ExportActualType(stableName, new XmlDocument()));
+                            xsdType = providerXsdType;
+                        }
+                        else
+                        {
+                            foreach (XmlSchema schema in schemas.Schemas())
+                            {
+                                foreach (XmlSchemaObject schemaItem in schema.Items)
+                                {
+                                    if ((object)schemaItem == (object)providerXsdType)
+                                    {
+                                        typeNs = schema.TargetNamespace;
+                                        if (typeNs == null)
+                                            typeNs = String.Empty;
+                                        break;
+                                    }
+                                }
+                                if (typeNs != null)
+                                    break;
+                            }
+                            if (typeNs == null)
+                                throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.MissingSchemaType, typeName, DataContract.GetClrTypeFullName(clrType))));
+                            stableName = new XmlQualifiedName(typeName, typeNs);
+                        }
+                    }
+                    else
+                        stableName = (XmlQualifiedName)typeInfo;
+                }
+            }
+            return true;
+        }
+
+        static XmlSchemaComplexType CreateAnyElementType()
+        {
+            XmlSchemaComplexType anyElementType = new XmlSchemaComplexType();
+            anyElementType.IsMixed = false;
+            anyElementType.Particle = new XmlSchemaSequence();
+            XmlSchemaAny any = new XmlSchemaAny();
+            any.MinOccurs = 0;
+            any.ProcessContents = XmlSchemaContentProcessing.Lax;
+            ((XmlSchemaSequence)anyElementType.Particle).Items.Add(any);
+            return anyElementType;
+        }
+
+        static XmlSchemaAnnotation GetSchemaAnnotation(params XmlNode[] nodes)
+        {
+            if (nodes == null || nodes.Length == 0)
+                return null;
+            bool hasAnnotation = false;
+            for (int i = 0; i < nodes.Length; i++)
+                if (nodes[i] != null)
+                {
+                    hasAnnotation = true;
+                    break;
+                }
+            if (!hasAnnotation)
+                return null;
+
+            XmlSchemaAnnotation annotation = new XmlSchemaAnnotation();
+            XmlSchemaAppInfo appInfo = new XmlSchemaAppInfo();
+            annotation.Items.Add(appInfo);
+            appInfo.Markup = nodes;
+            return annotation;
+        }
+
+        static XmlSchemaComplexType CreateAnyType()
+        {
+            XmlSchemaComplexType anyType = new XmlSchemaComplexType();
+            anyType.IsMixed = true;
+            anyType.Particle = new XmlSchemaSequence();
+            XmlSchemaAny any = new XmlSchemaAny();
+            any.MinOccurs = 0;
+            any.MaxOccurs = Decimal.MaxValue;
+            any.ProcessContents = XmlSchemaContentProcessing.Lax;
+            ((XmlSchemaSequence)anyType.Particle).Items.Add(any);
+            anyType.AnyAttribute = new XmlSchemaAnyAttribute();
+            return anyType;
+        }
+
+        static XmlElement ExportActualType(XmlQualifiedName typeName, XmlDocument xmlDoc)
+        {
+            XmlElement actualTypeElement = xmlDoc.CreateElement(ActualTypeAnnotationName.Name, ActualTypeAnnotationName.Namespace);
+
+            XmlAttribute nameAttribute = xmlDoc.CreateAttribute(Globals.ActualTypeNameAttribute);
+            nameAttribute.Value = typeName.Name;
+            actualTypeElement.Attributes.Append(nameAttribute);
+
+            XmlAttribute nsAttribute = xmlDoc.CreateAttribute(Globals.ActualTypeNamespaceAttribute);
+            nsAttribute.Value = typeName.Namespace;
+            actualTypeElement.Attributes.Append(nsAttribute);
+
+            return actualTypeElement;
+        }
+
+        static XmlQualifiedName actualTypeAnnotationName;
+        internal static XmlQualifiedName ActualTypeAnnotationName
+        {
+            get
+            {
+                if (actualTypeAnnotationName == null)
+                    actualTypeAnnotationName = new XmlQualifiedName(Globals.ActualTypeLocalName, Globals.SerializationNamespace);
+                return actualTypeAnnotationName;
+            }
+        }
+       }
+}
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/SimplifiedCodeTypeReference.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/SimplifiedCodeTypeReference.cs
new file mode 100644 (file)
index 0000000..6fdb45d
--- /dev/null
@@ -0,0 +1,398 @@
+// This is a revised source code from CodeDom.
+
+//------------------------------------------------------------------------------
+// <copyright file="CodeTypeReference.cs" company="Microsoft">
+// 
+// <OWNER>[....]</OWNER>
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>                                                                
+//------------------------------------------------------------------------------
+
+namespace System.Runtime.Serialization {
+
+    using System.Diagnostics;
+    using System;
+    using Microsoft.Win32;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Runtime.InteropServices;
+    using System.Runtime.Serialization;
+    using System.Globalization;
+    
+    enum CodeTypeReferenceOptions {
+        GlobalReference =  0x00000001,
+        GenericTypeParameter = 0x00000002
+    }
+
+    class CodeTypeReference {
+        private string baseType;
+        [OptionalField] 
+        private bool isInterface;
+        private int arrayRank;
+        private CodeTypeReference arrayElementType;
+        [OptionalField] 
+        private List<CodeTypeReference> typeArguments;
+        [OptionalField]
+        private CodeTypeReferenceOptions referenceOptions;
+        [OptionalField]
+        private bool needsFixup = false;
+        
+        public CodeTypeReference() {
+            baseType = string.Empty;
+            this.arrayRank = 0;
+            this.arrayElementType = null;            
+        }
+
+        public CodeTypeReference(Type type) {
+            if (type == null)
+                throw new ArgumentNullException("type");
+            
+            if (type.IsArray) {
+                this.arrayRank = type.GetArrayRank();
+                this.arrayElementType = new CodeTypeReference(type.GetElementType());
+                this.baseType = null;
+            } else {
+                InitializeFromType(type);
+                this.arrayRank = 0;
+                this.arrayElementType = null;
+            }
+
+            this.isInterface = type.IsInterface;
+        }
+
+        public CodeTypeReference (Type type, CodeTypeReferenceOptions codeTypeReferenceOption) : this(type) {
+            referenceOptions = codeTypeReferenceOption;
+        }
+        
+        public CodeTypeReference (String typeName, CodeTypeReferenceOptions codeTypeReferenceOption) {
+            Initialize(typeName, codeTypeReferenceOption);
+        }
+
+        /// <devdoc>
+        ///    <para>[To be supplied.]</para>
+        /// </devdoc>
+
+        // We support the reflection format for generice type name.
+        // The format is like:
+        //
+        public CodeTypeReference(string typeName) {
+            Initialize(typeName);
+        }
+
+        private void InitializeFromType(Type type) {
+            baseType = type.Name;
+            if (!type.IsGenericParameter) {
+                Type currentType = type;
+                while (currentType.IsNested) {
+                    currentType = currentType.DeclaringType;
+                    baseType = currentType.Name + "+" + baseType;
+                }
+                if (!String.IsNullOrEmpty(type.Namespace))
+                    baseType = type.Namespace + "." + baseType;
+            }
+
+            // pick up the type arguments from an instantiated generic type but not an open one    
+            if (type.IsGenericType && !type.ContainsGenericParameters) {
+                Type[] genericArgs = type.GetGenericArguments();
+                for (int i = 0; i < genericArgs.Length; i++) {
+                    TypeArguments.Add(new CodeTypeReference(genericArgs[i]));
+                }
+            }
+            else if (!type.IsGenericTypeDefinition) 
+            {
+                // if the user handed us a non-generic type, but later
+                // appends generic type arguments, we'll pretend
+                // it's a generic type for their sake - this is good for
+                // them if they pass in System.Nullable class when they
+                // meant the System.Nullable<T> value type.
+                needsFixup = true;
+            }
+        }
+
+        private void Initialize(string typeName) {
+            Initialize(typeName, this.referenceOptions);
+        }
+
+        private void Initialize(string typeName, CodeTypeReferenceOptions options)
+        {
+            Options = options;
+            if (typeName == null || typeName.Length == 0) {
+                typeName = typeof(void).FullName;            
+                this.baseType = typeName;
+                this.arrayRank = 0;
+                this.arrayElementType = null;
+                return;                
+            }
+
+            typeName = RipOffAssemblyInformationFromTypeName(typeName);
+            
+            int end = typeName.Length -1;
+            int current = end;
+            needsFixup = true;      // default to true, and if we find arity or generic type args, we'll clear the flag.
+            
+            // Scan the entire string for valid array tails and store ranks for array tails
+            // we found in a queue.
+            Queue q = new Queue();
+            while(current >= 0) {
+                int rank = 1;
+                if( typeName[current--] == ']') {
+                    while(current >=0 && typeName[current] == ',') {
+                        rank++;
+                        current--;
+                    }
+
+                    if( current>=0 && typeName[current] == '[') { // found a valid array tail
+                        q.Enqueue(rank); 
+                        current--;   
+                        end = current; 
+                        continue;
+                    }
+                }
+                break;
+            }
+            
+            // Try find generic type arguments
+            current = end;
+            ArrayList typeArgumentList = new ArrayList();
+            Stack subTypeNames = new Stack();
+            if( current > 0 && typeName[current--] == ']') {
+                needsFixup = false;
+                int unmatchedRightBrackets = 1;
+                int subTypeNameEndIndex = end;
+                
+                // Try find the matching '[', if we can't find it, we will not try to parse the string
+                while(current >= 0) {
+                    if( typeName[current] == '[' ) {      
+                        // break if we found matched brackets
+                        if( --unmatchedRightBrackets == 0) break;
+                    }
+                    else if( typeName[current] == ']' ) {                   
+                        ++unmatchedRightBrackets;
+                    }
+                    else if( typeName[current] == ',' && unmatchedRightBrackets == 1) {
+                        //
+                        // Type name can contain nested generic types. Following is an example:
+                        // System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089], 
+                        //          [System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], 
+                        //           mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
+                        // 
+                        // Spliltting by ',' won't work. We need to do first-level split by ','. 
+                        //
+                        if( current + 1 < subTypeNameEndIndex) {
+                            subTypeNames.Push(typeName.Substring(current+1 , subTypeNameEndIndex - current - 1));                            
+                        }
+
+                        subTypeNameEndIndex = current;
+                        
+                    }    
+                    --current;
+                }
+            
+                if( current > 0 && (end - current - 1) > 0) { 
+                    // push the last generic type argument name if there is any
+                    if( current + 1 < subTypeNameEndIndex) {
+                        subTypeNames.Push(typeName.Substring(current+1 , subTypeNameEndIndex - current - 1));                                                    
+                    }
+                        
+                    // we found matched brackets and the brackets contains some characters.                    
+                    while( subTypeNames.Count > 0) {
+                        String name = RipOffAssemblyInformationFromTypeName((string)subTypeNames.Pop());                         
+                        typeArgumentList.Add(new CodeTypeReference(name));
+                    }
+                    end = current - 1;
+                }
+            }
+
+            if( end < 0) {  // this can happen if we have some string like "[...]"
+                this.baseType = typeName;
+                return;
+            }
+
+            if (q.Count > 0 ) {             
+                
+                CodeTypeReference type = new CodeTypeReference(typeName.Substring(0, end + 1), Options);
+
+                for(int i = 0; i < typeArgumentList.Count; i++) {
+                    type.TypeArguments.Add((CodeTypeReference)typeArgumentList[i]);
+                }
+
+                while( q.Count > 1) {
+                    type = new CodeTypeReference( type, (int)q.Dequeue());  
+                } 
+                
+                // we don't need to create a new CodeTypeReference for the last one.
+                Debug.Assert(q.Count == 1 , "We should have one and only one in the rank queue.");                                
+                this.baseType = null;
+                this.arrayRank = (int)q.Dequeue();
+                this.arrayElementType = type;
+            }
+            else if( typeArgumentList.Count > 0 ) {
+                for( int i = 0; i < typeArgumentList.Count; i++) {
+                    TypeArguments.Add((CodeTypeReference)typeArgumentList[i]);
+                }
+
+                this.baseType = typeName.Substring(0, end + 1);
+            }
+            else{
+                this.baseType = typeName;
+            }
+
+            // Now see if we have some arity.  baseType could be null if this is an array type. 
+            if (baseType != null && baseType.IndexOf('`') != -1)
+                needsFixup = false;
+            
+        }
+
+        public CodeTypeReference(string typeName, params CodeTypeReference[] typeArguments) : this(typeName){
+            if( typeArguments != null && typeArguments.Length > 0) {
+                TypeArguments.AddRange(typeArguments);
+            }
+        }
+
+        /// <devdoc>
+        ///    <para>[To be supplied.]</para>
+        /// </devdoc>
+        public CodeTypeReference(string baseType, int rank) {
+            this.baseType = null;
+            this.arrayRank = rank;
+            this.arrayElementType = new CodeTypeReference(baseType);
+        }
+
+        /// <devdoc>
+        ///    <para>[To be supplied.]</para>
+        /// </devdoc>
+        public CodeTypeReference(CodeTypeReference arrayType, int rank) {
+            this.baseType = null;
+            this.arrayRank = rank;
+            this.arrayElementType = arrayType;
+        }
+        /// <devdoc>
+        ///    <para>[To be supplied.]</para>
+        /// </devdoc>
+        public CodeTypeReference ArrayElementType {
+            get {
+                return arrayElementType;
+            }
+            set {
+                arrayElementType = value;
+            }
+        }
+
+        /// <devdoc>
+        ///    <para>[To be supplied.]</para>
+        /// </devdoc>
+        public int ArrayRank {
+            get {
+                return arrayRank;
+            }
+            set {
+                arrayRank = value;
+            }
+        }
+
+        internal int NestedArrayDepth {
+            get {
+                
+                if (arrayElementType == null)
+                    return 0;
+
+                return 1 + arrayElementType.NestedArrayDepth;
+            }
+        }
+
+        /// <devdoc>
+        ///    <para>[To be supplied.]</para>
+        /// </devdoc>
+        public string BaseType {
+            get {
+                if (arrayRank > 0 && arrayElementType != null) {
+                    return arrayElementType.BaseType;
+                }
+                if (String.IsNullOrEmpty(baseType)) 
+                    return string.Empty;
+                
+                string returnType = baseType;
+                if (needsFixup && TypeArguments.Count > 0)
+                    returnType = returnType + '`' + TypeArguments.Count.ToString(CultureInfo.InvariantCulture);
+
+                return returnType;
+                
+            }
+            set {
+                baseType = value;
+                Initialize(baseType);
+            }
+        }
+
+        [System.Runtime.InteropServices.ComVisible(false)]
+        public CodeTypeReferenceOptions Options {
+            get { return referenceOptions;}
+            set { referenceOptions = value;}            
+        }
+
+        [System.Runtime.InteropServices.ComVisible(false)]        
+        public List<CodeTypeReference> TypeArguments{ 
+            get {
+                if (arrayRank > 0 && arrayElementType != null) {
+                    return arrayElementType.TypeArguments;
+                }
+
+                if( typeArguments == null) {
+                    typeArguments = new List<CodeTypeReference>();
+                }
+                return typeArguments;
+            }
+        }
+
+        internal bool IsInterface {
+            get {
+                // Note that this only works correctly if the Type ctor was used. Otherwise, it's always false.
+                return this.isInterface;
+            }
+        }
+
+        //
+        // The string for generic type argument might contain assembly information and square bracket pair.
+        // There might be leading spaces in front the type name.
+        // Following function will rip off assembly information and brackets 
+        // Following is an example:
+        // " [System.Collections.Generic.List[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral,
+        //   PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]"
+        //
+        private string RipOffAssemblyInformationFromTypeName(string typeName) {
+            int start = 0;
+            int end = typeName.Length - 1;
+            string result = typeName;
+            
+            // skip white space in the beginning
+            while( start < typeName.Length && Char.IsWhiteSpace(typeName[start])) start++;
+            while( end >= 0 && Char.IsWhiteSpace(typeName[end])) end--;
+                    
+            if(start < end) {
+                if (typeName[start] =='[' && typeName[end] == ']') {  
+                    start++;
+                    end--;
+                }
+
+                // if we still have a ] at the end, there's no assembly info. 
+                if (typeName[end] != ']') {
+                    int commaCount = 0;                            
+                    for(int index = end; index >= start; index--) {
+                        if( typeName[index] == ',') {
+                            commaCount++;
+                            if( commaCount == 4) {
+                                result = typeName.Substring( start, index - start); 
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+
+            return result;
+        }
+    }
+}
+    
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlDataContract_static.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlDataContract_static.cs
new file mode 100644 (file)
index 0000000..c8829ad
--- /dev/null
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Serialization;
+
+namespace System.Runtime.Serialization
+{
+       internal partial class XmlDataContract
+       {
+        internal CreateXmlSerializableDelegate GenerateCreateXmlSerializableDelegate()
+        {
+                               return () => new XmlDataContractInterpreter (this).CreateXmlSerializable ();
+               }
+       }
+       
+       internal class XmlDataContractInterpreter
+       {
+               XmlDataContract contract;
+               
+               public XmlDataContractInterpreter (XmlDataContract contract)
+               {
+                       this.contract = contract;
+               }
+               
+               public IXmlSerializable CreateXmlSerializable ()
+               {
+                       Type type = contract.UnderlyingType;
+                       object value = null;
+                       if (type.IsValueType)
+                               value = FormatterServices.GetUninitializedObject (type);
+                       else
+                               value = GetConstructor ().Invoke (new object [0]);
+                       return (IXmlSerializable) value;
+               }
+
+               ConstructorInfo GetConstructor ()
+               {
+                       Type type = contract.UnderlyingType;
+
+                       if (type.IsValueType)
+                               return null;
+
+                       ConstructorInfo ctor = type.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, Globals.EmptyTypeArray, null);
+                       if (ctor == null)
+                               throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidDataContractException(SR.GetString(SR.IXmlSerializableMustHaveDefaultConstructor, DataContract.GetClrTypeFullName(type))));
+
+                       return ctor;
+               }
+       }
+}
+
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlExceptionHelper.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlExceptionHelper.cs
new file mode 100644 (file)
index 0000000..f088bf5
--- /dev/null
@@ -0,0 +1,288 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+using System.Runtime.Serialization;
+////using System.ServiceModel.Channels;
+using System.Globalization;
+using System.Runtime.Serialization.Diagnostics.Application;
+
+using SR_ = System.Runtime.Serialization.SR;
+
+namespace System.Xml
+{
+    static class XmlExceptionHelper
+    {
+        static void ThrowXmlException(XmlDictionaryReader reader, string res)
+        {
+            ThrowXmlException(reader, res, null);
+        }
+
+        static void ThrowXmlException(XmlDictionaryReader reader, string res, string arg1)
+        {
+            ThrowXmlException(reader, res, arg1, null);
+        }
+
+        static void ThrowXmlException(XmlDictionaryReader reader, string res, string arg1, string arg2)
+        {
+            ThrowXmlException(reader, res, arg1, arg2, null);
+        }
+
+        static void ThrowXmlException(XmlDictionaryReader reader, string res, string arg1, string arg2, string arg3)
+        {
+            string s = SR_.GetString(res, arg1, arg2, arg3);
+            IXmlLineInfo lineInfo = reader as IXmlLineInfo;
+            if (lineInfo != null && lineInfo.HasLineInfo())
+            {
+                s += " " + SR_.GetString(SR_.XmlLineInfo, lineInfo.LineNumber, lineInfo.LinePosition);
+            }
+
+            if (TD.ReaderQuotaExceededIsEnabled())
+            {
+                TD.ReaderQuotaExceeded(s);
+            }
+
+            throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(s));
+        }
+
+        static public void ThrowXmlException(XmlDictionaryReader reader, XmlException exception)
+        {
+            string s = exception.Message;
+            IXmlLineInfo lineInfo = reader as IXmlLineInfo;
+            if (lineInfo != null && lineInfo.HasLineInfo())
+            {
+                s += " " + SR_.GetString(SR_.XmlLineInfo, lineInfo.LineNumber, lineInfo.LinePosition);
+            }
+            throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(s));
+        }
+
+        static string GetName(string prefix, string localName)
+        {
+            if (prefix.Length == 0)
+                return localName;
+            else
+                return string.Concat(prefix, ":", localName);
+        }
+
+        static string GetWhatWasFound(XmlDictionaryReader reader)
+        {
+            if (reader.EOF)
+                return SR_.GetString(SR_.XmlFoundEndOfFile);
+            switch (reader.NodeType)
+            {
+                case XmlNodeType.Element:
+                    return SR_.GetString(SR_.XmlFoundElement, GetName(reader.Prefix, reader.LocalName), reader.NamespaceURI);
+                case XmlNodeType.EndElement:
+                    return SR_.GetString(SR_.XmlFoundEndElement, GetName(reader.Prefix, reader.LocalName), reader.NamespaceURI);
+                case XmlNodeType.Text:
+                case XmlNodeType.Whitespace:
+                case XmlNodeType.SignificantWhitespace:
+                    return SR_.GetString(SR_.XmlFoundText, reader.Value);
+                case XmlNodeType.Comment:
+                    return SR_.GetString(SR_.XmlFoundComment, reader.Value);
+                case XmlNodeType.CDATA:
+                    return SR_.GetString(SR_.XmlFoundCData, reader.Value);
+            }
+            return SR_.GetString(SR_.XmlFoundNodeType, reader.NodeType);
+        }
+
+        static public void ThrowStartElementExpected(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlStartElementExpected, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowStartElementExpected(XmlDictionaryReader reader, string name)
+        {
+            ThrowXmlException(reader, SR_.XmlStartElementNameExpected, name, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowStartElementExpected(XmlDictionaryReader reader, string localName, string ns)
+        {
+            ThrowXmlException(reader, SR_.XmlStartElementLocalNameNsExpected, localName, ns, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowStartElementExpected(XmlDictionaryReader reader, XmlDictionaryString localName, XmlDictionaryString ns)
+        {
+            ThrowStartElementExpected(reader, XmlDictionaryString.GetString(localName), XmlDictionaryString.GetString(ns));
+        }
+
+        static public void ThrowFullStartElementExpected(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlFullStartElementExpected, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowFullStartElementExpected(XmlDictionaryReader reader, string name)
+        {
+            ThrowXmlException(reader, SR_.XmlFullStartElementNameExpected, name, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowFullStartElementExpected(XmlDictionaryReader reader, string localName, string ns)
+        {
+            ThrowXmlException(reader, SR_.XmlFullStartElementLocalNameNsExpected, localName, ns, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowFullStartElementExpected(XmlDictionaryReader reader, XmlDictionaryString localName, XmlDictionaryString ns)
+        {
+            ThrowFullStartElementExpected(reader, XmlDictionaryString.GetString(localName), XmlDictionaryString.GetString(ns));
+        }
+
+        static public void ThrowEndElementExpected(XmlDictionaryReader reader, string localName, string ns)
+        {
+            ThrowXmlException(reader, SR_.XmlEndElementExpected, localName, ns, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowMaxStringContentLengthExceeded(XmlDictionaryReader reader, int maxStringContentLength)
+        {
+            ThrowXmlException(reader, SR_.XmlMaxStringContentLengthExceeded, maxStringContentLength.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowMaxArrayLengthExceeded(XmlDictionaryReader reader, int maxArrayLength)
+        {
+            ThrowXmlException(reader, SR_.XmlMaxArrayLengthExceeded, maxArrayLength.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowMaxArrayLengthOrMaxItemsQuotaExceeded(XmlDictionaryReader reader, int maxQuota)
+        {
+            ThrowXmlException(reader, SR_.XmlMaxArrayLengthOrMaxItemsQuotaExceeded, maxQuota.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowMaxDepthExceeded(XmlDictionaryReader reader, int maxDepth)
+        {
+            ThrowXmlException(reader, SR_.XmlMaxDepthExceeded, maxDepth.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowMaxBytesPerReadExceeded(XmlDictionaryReader reader, int maxBytesPerRead)
+        {
+            ThrowXmlException(reader, SR_.XmlMaxBytesPerReadExceeded, maxBytesPerRead.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowMaxNameTableCharCountExceeded(XmlDictionaryReader reader, int maxNameTableCharCount)
+        {
+            ThrowXmlException(reader, SR_.XmlMaxNameTableCharCountExceeded, maxNameTableCharCount.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowBase64DataExpected(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlBase64DataExpected, GetWhatWasFound(reader));
+        }
+
+        static public void ThrowUndefinedPrefix(XmlDictionaryReader reader, string prefix)
+        {
+            ThrowXmlException(reader, SR_.XmlUndefinedPrefix, prefix);
+        }
+
+        static public void ThrowProcessingInstructionNotSupported(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlProcessingInstructionNotSupported);
+        }
+
+        static public void ThrowInvalidXml(XmlDictionaryReader reader, byte b)
+        {
+            ThrowXmlException(reader, SR_.XmlInvalidXmlByte, b.ToString("X2", CultureInfo.InvariantCulture));
+        }
+
+        static public void ThrowUnexpectedEndOfFile(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlUnexpectedEndOfFile, ((XmlBaseReader)reader).GetOpenElements());
+        }
+
+        static public void ThrowUnexpectedEndElement(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlUnexpectedEndElement);
+        }
+
+        static public void ThrowTokenExpected(XmlDictionaryReader reader, string expected, char found)
+        {
+            ThrowXmlException(reader, SR_.XmlTokenExpected, expected, found.ToString());
+        }
+
+        static public void ThrowTokenExpected(XmlDictionaryReader reader, string expected, string found)
+        {
+            ThrowXmlException(reader, SR_.XmlTokenExpected, expected, found);
+        }
+
+        static public void ThrowInvalidCharRef(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlInvalidCharRef);
+        }
+
+        static public void ThrowTagMismatch(XmlDictionaryReader reader, string expectedPrefix, string expectedLocalName, string foundPrefix, string foundLocalName)
+        {
+            ThrowXmlException(reader, SR_.XmlTagMismatch, GetName(expectedPrefix, expectedLocalName), GetName(foundPrefix, foundLocalName));
+        }
+
+        static public void ThrowDuplicateXmlnsAttribute(XmlDictionaryReader reader, string localName, string ns)
+        {
+            string name;
+            if (localName.Length == 0)
+                name = "xmlns";
+            else
+                name = "xmlns:" + localName;
+            ThrowXmlException(reader, SR_.XmlDuplicateAttribute, name, name, ns);
+        }
+
+        static public void ThrowDuplicateAttribute(XmlDictionaryReader reader, string prefix1, string prefix2, string localName, string ns)
+        {
+            ThrowXmlException(reader, SR_.XmlDuplicateAttribute, GetName(prefix1, localName), GetName(prefix2, localName), ns);
+        }
+
+        static public void ThrowInvalidBinaryFormat(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlInvalidFormat);
+        }
+
+        static public void ThrowInvalidRootData(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlInvalidRootData);
+        }
+
+        static public void ThrowMultipleRootElements(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlMultipleRootElements);
+        }
+
+        static public void ThrowDeclarationNotFirst(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlDeclNotFirst);
+        }
+
+        static public void ThrowConversionOverflow(XmlDictionaryReader reader, string value, string type)
+        {
+            ThrowXmlException(reader, SR_.XmlConversionOverflow, value, type);
+        }
+
+        static public void ThrowXmlDictionaryStringIDOutOfRange(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlDictionaryStringIDRange, XmlDictionaryString.MinKey.ToString(NumberFormatInfo.CurrentInfo), XmlDictionaryString.MaxKey.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowXmlDictionaryStringIDUndefinedStatic(XmlDictionaryReader reader, int key)
+        {
+            ThrowXmlException(reader, SR_.XmlDictionaryStringIDUndefinedStatic, key.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowXmlDictionaryStringIDUndefinedSession(XmlDictionaryReader reader, int key)
+        {
+            ThrowXmlException(reader, SR_.XmlDictionaryStringIDUndefinedSession, key.ToString(NumberFormatInfo.CurrentInfo));
+        }
+
+        static public void ThrowEmptyNamespace(XmlDictionaryReader reader)
+        {
+            ThrowXmlException(reader, SR_.XmlEmptyNamespaceRequiresNullPrefix);
+        }
+
+        static public XmlException CreateConversionException(string value, string type, Exception exception)
+        {
+            return new XmlException(SR_.GetString(SR_.XmlInvalidConversion, value, type), exception);
+        }
+
+        static public XmlException CreateEncodingException(byte[] buffer, int offset, int count, Exception exception)
+        {
+            return CreateEncodingException(new System.Text.UTF8Encoding(false, false).GetString(buffer, offset, count), exception);
+        }
+
+        static public XmlException CreateEncodingException(string value, Exception exception)
+        {
+            return new XmlException(SR_.GetString(SR_.XmlInvalidUTF8Bytes, value), exception);
+        }
+    }
+}
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatReaderGenerator_static.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatReaderGenerator_static.cs
new file mode 100644 (file)
index 0000000..8b81bec
--- /dev/null
@@ -0,0 +1,618 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+
+namespace System.Runtime.Serialization
+{
+       internal partial class XmlFormatReaderGenerator
+       {
+               partial class CriticalHelper
+               {
+                       internal XmlFormatClassReaderDelegate GenerateClassReader(ClassDataContract classContract)
+                       {
+                               return (XmlReaderDelegator xr, XmlObjectSerializerReadContext ctx, XmlDictionaryString [] memberNames, XmlDictionaryString [] memberNamespaces) => new XmlFormatReaderInterpreter (classContract).ReadFromXml (xr, ctx, memberNames, memberNamespaces);
+                       }
+
+                       internal XmlFormatCollectionReaderDelegate GenerateCollectionReader(CollectionDataContract collectionContract)
+                       {
+                               return (XmlReaderDelegator xr, XmlObjectSerializerReadContext ctx, XmlDictionaryString inm, XmlDictionaryString ins, CollectionDataContract cc) => new XmlFormatReaderInterpreter (collectionContract, false).ReadCollectionFromXml (xr, ctx, inm, ins, cc);
+                       }
+                       
+                       internal XmlFormatGetOnlyCollectionReaderDelegate GenerateGetOnlyCollectionReader(CollectionDataContract collectionContract)
+                       {
+                               return (XmlReaderDelegator xr, XmlObjectSerializerReadContext ctx, XmlDictionaryString inm, XmlDictionaryString ins, CollectionDataContract cc) => new XmlFormatReaderInterpreter (collectionContract, true).ReadGetOnlyCollectionFromXml (xr, ctx, inm, ins, cc);
+                       }
+               }
+       }
+
+       class XmlFormatReaderInterpreter
+       {
+               public XmlFormatReaderInterpreter (ClassDataContract classContract)
+               {
+                       this.classContract = classContract;
+               }
+
+               public XmlFormatReaderInterpreter (CollectionDataContract collectionContract, bool isGetOnly)
+               {
+                       this.collectionContract = collectionContract;
+                       this.is_get_only_collection = isGetOnly;
+               }
+
+               bool is_get_only_collection;
+
+               ClassDataContract classContract;
+
+               CollectionDataContract collectionContract;
+
+               object objectLocal;
+               Type objectType;
+               XmlReaderDelegator xmlReader;
+               XmlObjectSerializerReadContext context;
+
+               XmlDictionaryString [] memberNames = null;
+               XmlDictionaryString [] memberNamespaces = null;
+               XmlDictionaryString itemName = null;
+               XmlDictionaryString itemNamespace = null;
+
+               public object ReadFromXml (XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString[] memberNames, XmlDictionaryString[] memberNamespaces)
+               {
+                       // InitArgs()
+                       this.xmlReader = xmlReader;
+                       this.context = context;
+                       this.memberNames = memberNames;
+                       this.memberNamespaces = memberNamespaces;
+                       
+                       //DemandSerializationFormatterPermission(classContract);
+                       //DemandMemberAccessPermission(memberAccessFlag);
+                       CreateObject (classContract);
+                       
+                       context.AddNewObject (objectLocal);
+                       InvokeOnDeserializing (classContract);
+            
+            string objectId = null;
+            
+                       if (HasFactoryMethod (classContract))
+                               objectId = context.GetObjectId ();
+                       if (classContract.IsISerializable)
+                               ReadISerializable (classContract);
+                       else
+                               ReadClass (classContract);
+                       bool isFactoryType = InvokeFactoryMethod (classContract, objectId);
+                       if (Globals.TypeOfIDeserializationCallback.IsAssignableFrom (classContract.UnderlyingType))
+                               ((IDeserializationCallback) objectLocal).OnDeserialization (null);
+                       InvokeOnDeserialized(classContract);
+                       if (objectId == null || !isFactoryType) {
+
+                               // Do a conversion back from DateTimeOffsetAdapter to DateTimeOffset after deserialization.
+                               // DateTimeOffsetAdapter is used here for deserialization purposes to bypass the ISerializable implementation
+                               // on DateTimeOffset; which does not work in partial trust.
+
+                               if (classContract.UnderlyingType == Globals.TypeOfDateTimeOffsetAdapter)
+                                       objectLocal = DateTimeOffsetAdapter.GetDateTimeOffset ((DateTimeOffsetAdapter) objectLocal);
+                               // else - do we have to call CodeInterpreter.ConvertValue()? I guess not...
+                       }
+                       return objectLocal;
+               }
+               
+               public object ReadCollectionFromXml (XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString itemName, XmlDictionaryString itemNamespace, CollectionDataContract collectionContract)
+               {
+                       #region GenerateCollectionReaderHelper
+                       // InitArgs()
+                       this.xmlReader = xmlReader;
+                       this.context = context;
+                       this.itemName = itemName;
+                       this.itemNamespace = itemNamespace;
+
+                       this.collectionContract = collectionContract;
+
+                       #endregion
+
+                       ReadCollection (collectionContract);
+
+                       return objectLocal;
+               }
+               
+               public void ReadGetOnlyCollectionFromXml (XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context, XmlDictionaryString itemName, XmlDictionaryString itemNamespace, CollectionDataContract collectionContract)
+               {
+                       #region GenerateCollectionReaderHelper
+                       // InitArgs()
+                       this.xmlReader = xmlReader;
+                       this.context = context;
+                       this.itemName = itemName;
+                       this.itemNamespace = itemNamespace;
+
+                       this.collectionContract = collectionContract;
+
+                       #endregion
+
+                       ReadGetOnlyCollection (collectionContract);
+               }
+
+               void CreateObject (ClassDataContract classContract)
+               {
+                       Type type = objectType = classContract.UnderlyingType;
+                       if (type.IsValueType && !classContract.IsNonAttributedType)
+                               type = Globals.TypeOfValueType;
+
+                       if (classContract.UnderlyingType == Globals.TypeOfDBNull)
+                               objectLocal = DBNull.Value;
+                       else if (classContract.IsNonAttributedType) {
+                               if (type.IsValueType)
+                                       objectLocal = FormatterServices.GetUninitializedObject (type);
+                               else
+                                       objectLocal = classContract.GetNonAttributedTypeConstructor ().Invoke (new object [0]);
+                       }
+                       else
+                               objectLocal = CodeInterpreter.ConvertValue (XmlFormatReaderGenerator.UnsafeGetUninitializedObject (DataContract.GetIdForInitialization (classContract)), Globals.TypeOfObject, type);
+               }
+
+               void InvokeOnDeserializing (ClassDataContract classContract)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnDeserializing (classContract.BaseContract);
+                       if (classContract.OnDeserializing != null)
+                               classContract.OnDeserializing.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+               }
+
+               void InvokeOnDeserialized (ClassDataContract classContract)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnDeserialized (classContract.BaseContract);
+                       if (classContract.OnDeserialized != null)
+                               classContract.OnDeserialized.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+               }
+
+               bool HasFactoryMethod (ClassDataContract classContract)
+               {
+                       return Globals.TypeOfIObjectReference.IsAssignableFrom (classContract.UnderlyingType);
+               }
+
+               bool InvokeFactoryMethod (ClassDataContract classContract, string objectId)
+               {
+                       if (HasFactoryMethod (classContract)) {
+                               objectLocal = CodeInterpreter.ConvertValue (context.GetRealObject ((IObjectReference) objectLocal, objectId), Globals.TypeOfObject, classContract.UnderlyingType);
+                               return true;
+                       }
+                       return false;
+               }
+
+               void ReadISerializable (ClassDataContract classContract)
+               {
+                       ConstructorInfo ctor = classContract.GetISerializableConstructor ();
+                       context.ReadSerializationInfo (xmlReader, classContract.UnderlyingType);
+                       ctor.Invoke (objectLocal, new object [] {context.GetStreamingContext ()});
+               }
+
+               void ReadClass (ClassDataContract classContract)
+               {
+                       if (classContract.HasExtensionData) {
+                               ExtensionDataObject extensionData = new ExtensionDataObject ();
+                               ReadMembers (classContract, extensionData);
+                               ClassDataContract currentContract = classContract;
+                               while (currentContract != null) {
+                                       MethodInfo extensionDataSetMethod = currentContract.ExtensionDataSetMethod;
+                                       if (extensionDataSetMethod != null)
+                                               extensionDataSetMethod.Invoke (objectLocal, new object [] {extensionData});
+                                       currentContract = currentContract.BaseContract;
+                               }
+                       }
+                       else
+                               ReadMembers (classContract, null);
+               }
+
+               void ReadMembers (ClassDataContract classContract, ExtensionDataObject  extensionData)
+               {
+                       int memberCount = classContract.MemberNames.Length;
+                       context.IncrementItemCount (memberCount);
+
+                       int memberIndex = -1;
+                       
+                       int firstRequiredMember;
+                       bool[] requiredMembers = GetRequiredMembers (classContract, out firstRequiredMember);
+                       bool hasRequiredMembers = (firstRequiredMember < memberCount);
+                       int requiredIndex = hasRequiredMembers ? firstRequiredMember : memberCount;
+
+                       while (XmlObjectSerializerReadContext.MoveToNextElement (xmlReader)) {
+                               int idx; // used as in "switch (idx)" in the original source.
+                               if (hasRequiredMembers)
+                                       idx = context.GetMemberIndexWithRequiredMembers (xmlReader, memberNames, memberNamespaces, memberIndex, (int) requiredIndex, extensionData);
+                               else
+                                       idx = context.GetMemberIndex (xmlReader, memberNames, memberNamespaces, memberIndex, extensionData);
+
+                               if (memberCount > 0)
+                                       ReadMembers (idx, classContract, requiredMembers, ref memberIndex, ref requiredIndex);
+                       }
+
+                       if (hasRequiredMembers)
+                       {
+                               if (requiredIndex < memberCount)
+                                       XmlObjectSerializerReadContext.ThrowRequiredMemberMissingException (xmlReader, memberIndex, requiredIndex, memberNames);
+                       }
+               }
+
+               int ReadMembers (int index, ClassDataContract classContract, bool [] requiredMembers, ref int memberIndex, ref int requiredIndex)
+               {
+                       int memberCount = (classContract.BaseContract == null) ? 0 : ReadMembers (index, classContract.BaseContract, requiredMembers,
+                       ref memberIndex, ref requiredIndex);
+                       
+                       if (memberCount <= index && index < memberCount + classContract.Members.Count) {
+                               DataMember dataMember = classContract.Members [index - memberCount];
+                               Type memberType = dataMember.MemberType;
+                               if (dataMember.IsRequired) {
+                                       int nextRequiredIndex = index + 1;
+                                       for (; nextRequiredIndex < requiredMembers.Length; nextRequiredIndex++)
+                                               if (requiredMembers [nextRequiredIndex])
+                                                       break;
+                                       requiredIndex = nextRequiredIndex;
+                               }
+
+                               if (dataMember.IsGetOnlyCollection) {
+                                       var value = CodeInterpreter.GetMember (dataMember.MemberInfo, objectLocal);
+                                       context.StoreCollectionMemberInfo (value);
+                                       ReadValue (memberType, dataMember.Name, classContract.StableName.Namespace);
+                               } else {
+                                       var value = ReadValue (memberType, dataMember.Name, classContract.StableName.Namespace);
+                                       CodeInterpreter.SetMember (dataMember.MemberInfo, objectLocal, value);
+                               }
+                               memberIndex = index;
+                       }
+                       return memberCount + classContract.Members.Count;
+               }
+
+               bool[] GetRequiredMembers (ClassDataContract contract, out int firstRequiredMember)
+               {
+                       int memberCount = contract.MemberNames.Length;
+                       bool [] requiredMembers = new bool [memberCount];
+                       GetRequiredMembers (contract, requiredMembers);
+                       for (firstRequiredMember = 0; firstRequiredMember < memberCount; firstRequiredMember++)
+                               if (requiredMembers [firstRequiredMember])
+                                       break;
+                       return requiredMembers;
+               }
+
+               int GetRequiredMembers (ClassDataContract contract, bool[] requiredMembers)
+               {
+                       int memberCount = (contract.BaseContract == null) ? 0 : GetRequiredMembers (contract.BaseContract, requiredMembers);
+                       List<DataMember> members = contract.Members;
+                       for (int i = 0; i < members.Count; i++, memberCount++)
+                               requiredMembers [memberCount] = members [i].IsRequired;
+                       return memberCount;
+               }
+
+               object ReadValue (Type type, string name, string ns)
+               {
+                       var valueType = type;
+                       object value = null;
+                       bool shouldAssignNullableValue = false;
+                       int nullables = 0;
+                       while (type.IsGenericType && type.GetGenericTypeDefinition () == Globals.TypeOfNullable) {
+                               nullables++;
+                               type = type.GetGenericArguments () [0];
+                       }
+                       
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract (type);
+                       if ((primitiveContract != null && primitiveContract.UnderlyingType != Globals.TypeOfObject) || nullables != 0 || type.IsValueType) {
+                               context.ReadAttributes (xmlReader);
+                               string objectId = context.ReadIfNullOrRef (xmlReader, type, DataContract.IsTypeSerializable (type));
+                               // Deserialize null
+                if (objectId == Globals.NullObjectId) {
+                                       
+                                       if (nullables != 0)
+                                               value = Activator.CreateInstance (valueType);
+                                       else if (type.IsValueType)
+                                               throw new SerializationException (SR.GetString (SR.ValueTypeCannotBeNull, DataContract.GetClrTypeFullName (type)));
+                                       else
+                                               value = null;
+                               } else if (objectId == string.Empty) {
+                                       // Deserialize value
+
+                                       // Compare against Globals.NewObjectId, which is set to string.Empty
+                                       
+                                       objectId = context.GetObjectId ();
+                                       
+                                       if (type.IsValueType) {
+                                               if (!string.IsNullOrEmpty (objectId))
+                                                       throw new SerializationException (SR.GetString (SR.ValueTypeCannotHaveId, DataContract.GetClrTypeFullName(type)));
+                                       }
+                                       object innerValueRead = null;
+                                       if (nullables != 0)
+                                               shouldAssignNullableValue = true;
+
+                                       if (primitiveContract != null && primitiveContract.UnderlyingType != Globals.TypeOfObject) {
+                                               value = primitiveContract.XmlFormatReaderMethod.Invoke (xmlReader, new object [0]);
+                                               if (!type.IsValueType)
+                                                       context.AddNewObject (value);
+                                       }
+                                       else
+                                                       value = InternalDeserialize (type, name, ns);
+                               } else {
+                                       // Deserialize ref
+                                       if (type.IsValueType)
+                                               throw new SerializationException (SR.GetString (SR.ValueTypeCannotHaveRef, DataContract.GetClrTypeFullName (type)));
+                                       else
+                                               value = CodeInterpreter.ConvertValue (context.GetExistingObject (objectId, type, name, ns), Globals.TypeOfObject, type);
+                               }
+
+                               if (shouldAssignNullableValue) {
+                                       if (objectId != Globals.NullObjectId)
+                                               value = WrapNullableObject (type, value, valueType, nullables);
+                               }
+                       }
+                       else
+                               value = InternalDeserialize (type, name, ns);
+
+                       return value;
+               }
+
+               object InternalDeserialize (Type type, string name, string ns)
+               {
+                       Type declaredType = type.IsPointer ? Globals.TypeOfReflectionPointer : type;
+                       var obj = context.InternalDeserialize (xmlReader, DataContract.GetId (declaredType.TypeHandle), declaredType.TypeHandle, name, ns);
+
+                       if (type.IsPointer)
+                               // wow, there is no way to convert void* to object in strongly typed way...
+                               return XmlFormatGeneratorStatics.UnboxPointer.Invoke (null, new object [] {obj});
+                       else
+                               return CodeInterpreter.ConvertValue (obj, Globals.TypeOfObject, type);
+               }
+
+               object WrapNullableObject (Type innerType, object innerValue, Type outerType, int nullables)
+               {
+                       var outerValue = innerValue;
+                       for (int i = 1; i < nullables; i++) {
+                               Type type = Globals.TypeOfNullable.MakeGenericType (innerType);
+                               outerValue = Activator.CreateInstance (type, new object[] { outerValue });
+                               innerType = type;
+                       }
+                       return Activator.CreateInstance (outerType, new object[] { outerValue });
+               }
+
+
+               void ReadCollection (CollectionDataContract collectionContract)
+               {
+                       Type type = collectionContract.UnderlyingType;
+                       Type itemType = collectionContract.ItemType;
+                       bool isArray = (collectionContract.Kind == CollectionKind.Array);
+
+                       ConstructorInfo constructor = collectionContract.Constructor;
+
+                       if (type.IsInterface) {
+                               switch (collectionContract.Kind) {
+                               case CollectionKind.GenericDictionary:
+                                       type = Globals.TypeOfDictionaryGeneric.MakeGenericType (itemType.GetGenericArguments ());
+                                       constructor = type.GetConstructor (BindingFlags.Instance | BindingFlags.Public, null, Globals.EmptyTypeArray, null);
+                                       break;
+                               case CollectionKind.Dictionary:
+                                       type = Globals.TypeOfHashtable;
+                                       constructor = XmlFormatGeneratorStatics.HashtableCtor;
+                                       break;
+                               case CollectionKind.Collection:
+                               case CollectionKind.GenericCollection:
+                               case CollectionKind.Enumerable:
+                               case CollectionKind.GenericEnumerable:
+                               case CollectionKind.List:
+                               case CollectionKind.GenericList:
+                                       type = itemType.MakeArrayType ();
+                                       isArray = true;
+                                       break;
+                               }
+                       }
+                       string itemName = collectionContract.ItemName;
+                       string itemNs = collectionContract.StableName.Namespace;
+
+                       if (!isArray) {
+                               if (type.IsValueType)
+                                       // FIXME: this is not what the original code does.
+                                       objectLocal = FormatterServices.GetUninitializedObject (type);
+                               else {
+                                       objectLocal = constructor.Invoke (new object [0]);
+                                       context.AddNewObject (objectLocal);
+                               }
+                       }
+
+                       int size = context.GetArraySize ();
+
+                       string objectId = context.GetObjectId ();
+
+                       bool canReadPrimitiveArray = false, readResult = false;
+                       if (isArray && TryReadPrimitiveArray (type, itemType, size, out readResult))
+                               canReadPrimitiveArray = true;
+
+                       if (!readResult) {
+                               if (size == -1) {
+
+                                       object growingCollection = null;
+                                       if (isArray)
+                                               growingCollection = Array.CreateInstance (itemType, 32);
+
+                                       int i = 0;
+                                       // FIXME: I cannot find i++ part, but without that it won't work as expected.
+                                       for (; i < int.MaxValue; i++) {
+                                               if (IsStartElement (this.itemName, this.itemNamespace)) {
+                                                       context.IncrementItemCount (1);
+                                                       object value = ReadCollectionItem (collectionContract, itemType, itemName, itemNs);
+                                                       if (isArray) {
+                                                               MethodInfo ensureArraySizeMethod = XmlFormatGeneratorStatics.EnsureArraySizeMethod.MakeGenericMethod (itemType);
+                                                               growingCollection = ensureArraySizeMethod.Invoke (null, new object [] {growingCollection, i});
+                                                               ((Array) growingCollection).SetValue (value, i);
+                                                       } else {
+                                                               StoreCollectionValue (objectLocal, itemType, value, collectionContract);
+                                                       }
+                                               }
+                                               else if (IsEndElement ())
+                                                       break;
+                                               else
+                                                       HandleUnexpectedItemInCollection (ref i);
+                                       }
+
+                                       if (isArray) {
+                                               MethodInfo trimArraySizeMethod = XmlFormatGeneratorStatics.TrimArraySizeMethod.MakeGenericMethod (itemType);
+                                               objectLocal = trimArraySizeMethod.Invoke (null, new object [] {growingCollection, i});
+                                               context.AddNewObjectWithId (objectId, objectLocal);
+                                       }
+                               } else {
+                                       context.IncrementItemCount (size);
+                                       if (isArray) {
+                                               objectLocal = Array.CreateInstance (itemType, size);
+                                               context.AddNewObject (objectLocal);
+                                       }
+                                       // FIXME: I cannot find j++ part, but without that it won't work as expected.
+                                       for (int j = 0; j < size; j++) {
+                                               if (IsStartElement (this.itemName, this.itemNamespace)) {
+                                                       var itemValue = ReadCollectionItem (collectionContract, itemType, itemName, itemNs);
+                                                       if (isArray)
+                                                               ((Array) objectLocal).SetValue (itemValue, j);
+                                                       else
+                                                               StoreCollectionValue (objectLocal, itemType, itemValue, collectionContract);
+                                               }
+                                               else
+                                                       HandleUnexpectedItemInCollection (ref j);
+                                       }
+                                       context.CheckEndOfArray (xmlReader, size, this.itemName, this.itemNamespace);
+                               }
+                       }
+                       if (canReadPrimitiveArray)
+                               context.AddNewObjectWithId (objectId, objectLocal);
+               }
+
+               void ReadGetOnlyCollection (CollectionDataContract collectionContract)
+               {
+                       Type type = collectionContract.UnderlyingType;
+                       Type itemType = collectionContract.ItemType;
+                       bool isArray = (collectionContract.Kind == CollectionKind.Array);
+                       string itemName = collectionContract.ItemName;
+                       string itemNs = collectionContract.StableName.Namespace;
+
+                       objectLocal = context.GetCollectionMember ();
+
+                       //check that items are actually going to be deserialized into the collection
+                       if (IsStartElement (this.itemName, this.itemNamespace)) {
+                               if (objectLocal == null)
+                                       XmlObjectSerializerReadContext.ThrowNullValueReturnedForGetOnlyCollectionException (type);
+                               else {
+                                       int size = 0;
+                                       if (isArray)
+                                               size = ((Array) objectLocal).Length;
+                                       context.AddNewObject (objectLocal);
+                                       for (int i = 0; i < int.MaxValue;) {
+                                               if (IsStartElement (this.itemName, this.itemNamespace)) {
+                                                       context.IncrementItemCount (1);
+                                                       var value = ReadCollectionItem (collectionContract, itemType, itemName, itemNs);
+                                                       if (isArray) {
+                                                               if (size == i)
+                                                                       XmlObjectSerializerReadContext.ThrowArrayExceededSizeException (size, type);
+                                                               else
+                                                                       ((Array) objectLocal).SetValue (value, i);
+                                                       } else {
+                                                               StoreCollectionValue (objectLocal, itemType, value, collectionContract);
+                                                       }
+                                               }
+                                               else if (IsEndElement())
+                                                       break;
+                                               else
+                                                       HandleUnexpectedItemInCollection (ref i);
+                                       }
+                                       context.CheckEndOfArray (xmlReader, size, this.itemName, this.itemNamespace);
+                               }
+                       }
+               }
+
+               bool TryReadPrimitiveArray (Type type, Type itemType, int size, out bool readResult)
+               {
+                       readResult = false;
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract (itemType);
+                       if (primitiveContract == null)
+                               return false;
+
+                       string readArrayMethod = null;
+                       switch (Type.GetTypeCode (itemType))
+                       {
+                       case TypeCode.Boolean:
+                               readArrayMethod = "TryReadBooleanArray";
+                       break;
+                       case TypeCode.DateTime:
+                               readArrayMethod = "TryReadDateTimeArray";
+                       break;
+                       case TypeCode.Decimal:
+                               readArrayMethod = "TryReadDecimalArray";
+                       break;
+                       case TypeCode.Int32:
+                               readArrayMethod = "TryReadInt32Array";
+                       break;
+                       case TypeCode.Int64:
+                               readArrayMethod = "TryReadInt64Array";
+                       break;
+                       case TypeCode.Single:
+                               readArrayMethod = "TryReadSingleArray";
+                       break;
+                       case TypeCode.Double:
+                               readArrayMethod = "TryReadDoubleArray";
+                               break;
+                       default:
+                               break;
+                       }
+                       if (readArrayMethod != null) {
+                               var mi = typeof (XmlReaderDelegator).GetMethod (readArrayMethod, Globals.ScanAllMembers);
+                               var args = new object [] {context, itemName, itemNamespace, size, objectLocal};
+                               readResult = (bool) mi.Invoke (xmlReader, args);
+                               objectLocal = args.Last ();
+                               return true;
+                       }
+                       return false;
+               }
+
+               object ReadCollectionItem (CollectionDataContract collectionContract, Type itemType, string itemName, string itemNs)
+               {
+                       if (collectionContract.Kind == CollectionKind.Dictionary || collectionContract.Kind == CollectionKind.GenericDictionary) {
+                               context.ResetAttributes ();
+                               return CodeInterpreter.ConvertValue (collectionContract.ItemContract.ReadXmlValue (xmlReader, context), Globals.TypeOfObject, itemType);
+                       }
+                       else
+                               return ReadValue (itemType, itemName, itemNs);
+               }
+
+               void StoreCollectionValue (object collection, Type valueType, object value, CollectionDataContract collectionContract)
+               {
+                       if (collectionContract.Kind == CollectionKind.GenericDictionary || collectionContract.Kind == CollectionKind.Dictionary) {
+                               ClassDataContract keyValuePairContract = DataContract.GetDataContract (valueType) as ClassDataContract;
+                               if (keyValuePairContract == null)
+                                       Fx.Assert ("Failed to create contract for KeyValuePair type");
+                               DataMember keyMember = keyValuePairContract.Members [0];
+                               DataMember valueMember = keyValuePairContract.Members [1];
+                               object pkey = CodeInterpreter.GetMember (keyMember.MemberInfo, value);
+                               object pvalue = CodeInterpreter.GetMember (valueMember.MemberInfo, value);
+                               
+                               collectionContract.AddMethod.Invoke (collection, new object [] {pkey, pvalue});
+                       }
+                       else
+                               collectionContract.AddMethod.Invoke (collection, new object [] {value});
+               }
+
+               void HandleUnexpectedItemInCollection (ref int iterator)
+               {
+                       if (IsStartElement ()) {
+                               context.SkipUnknownElement (xmlReader);
+                               iterator--;
+                       }
+                       else 
+                               throw XmlObjectSerializerReadContext.CreateUnexpectedStateException (XmlNodeType.Element, xmlReader);
+               }
+
+               bool IsStartElement(XmlDictionaryString name, XmlDictionaryString ns)
+               {
+                       return xmlReader.IsStartElement (name, ns);
+               }
+
+               bool IsStartElement()
+               {
+                       return xmlReader.IsStartElement ();
+               }
+
+               bool IsEndElement ()
+               {
+                       return xmlReader.NodeType == XmlNodeType.EndElement;
+               }
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatWriterGenerator_static.cs b/mcs/class/System.Runtime.Serialization/ReferenceSources/XmlFormatWriterGenerator_static.cs
new file mode 100644 (file)
index 0000000..4399a0c
--- /dev/null
@@ -0,0 +1,617 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+
+namespace System.Runtime.Serialization
+{
+       internal partial class XmlFormatWriterGenerator
+       {
+               partial class CriticalHelper
+               {
+                       internal XmlFormatClassWriterDelegate GenerateClassWriter(ClassDataContract classContract)
+                       {
+                               return (XmlWriterDelegator xw, object obj, XmlObjectSerializerWriteContext ctx, ClassDataContract ctr) => new XmlFormatWriterInterpreter (classContract).WriteToXml (xw, obj, ctx, ctr);
+                       }
+
+                       internal XmlFormatCollectionWriterDelegate GenerateCollectionWriter(CollectionDataContract collectionContract)
+                       {
+                               return (XmlWriterDelegator xw, object obj, XmlObjectSerializerWriteContext ctx, CollectionDataContract ctr) => new XmlFormatWriterInterpreter (collectionContract).WriteCollectionToXml (xw, obj, ctx, ctr);
+                       }
+               }
+       }
+
+       class XmlFormatWriterInterpreter
+       {
+               public XmlFormatWriterInterpreter (ClassDataContract classContract)
+               {
+                       this.classContract = classContract;
+               }
+
+               public XmlFormatWriterInterpreter (CollectionDataContract collectionContract)
+               {
+                       this.collectionContract = collectionContract;
+               }
+
+               ClassDataContract classContract;
+
+               CollectionDataContract collectionContract;
+
+               XmlWriterDelegator writer = null;
+               object obj = null;
+               XmlObjectSerializerWriteContext ctx = null;
+               DataContract dataContract = null;
+               object objLocal = null;
+
+               ClassDataContract classDataContract {
+                       get { return (ClassDataContract) dataContract; }
+               }
+               CollectionDataContract collectionDataContract {
+                       get {return (CollectionDataContract) dataContract; }
+               }
+
+               XmlDictionaryString [] contractNamespaces = null;
+               XmlDictionaryString [] memberNames = null;
+               XmlDictionaryString [] childElementNamespaces = null;
+               int typeIndex = 1;
+               int childElementIndex = 0;
+
+               public void WriteToXml (XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContext context, ClassDataContract dataContract)
+               {
+                       this.writer = xmlWriter;
+                       this.obj = obj;
+                       this.ctx = context;
+                       this.dataContract = dataContract;
+
+                       InitArgs (classContract.UnderlyingType);
+
+                       // DemandSerializationFormatterPermission (classContract) - irrelevant
+                       // DemandMemberAccessPermission (memberAccessFlag) - irrelevant
+
+                       if (classContract.IsReadOnlyContract)
+                       {
+                               DataContract.ThrowInvalidDataContractException (classContract.SerializationExceptionMessage, null);
+                       }
+
+                       WriteClass (classContract);
+               }
+
+               public void WriteCollectionToXml (XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContext context, CollectionDataContract collectionContract)
+               {
+                       this.writer = xmlWriter;
+                       this.obj = obj;
+                       this.ctx = context;
+                       this.dataContract = collectionContract;
+
+                       InitArgs (collectionContract.UnderlyingType);                   
+
+                       // DemandMemberAccessPermission(memberAccessFlag);
+                       if (collectionContract.IsReadOnlyContract)
+                       {
+                               DataContract.ThrowInvalidDataContractException (collectionContract.SerializationExceptionMessage, null);
+                       }
+
+                       WriteCollection (collectionContract);
+               }
+
+               void InitArgs (Type objType)
+               {
+                       if (objType == Globals.TypeOfDateTimeOffsetAdapter) {
+                               objLocal = DateTimeOffsetAdapter.GetDateTimeOffsetAdapter ((DateTimeOffset) obj);
+                       }
+                       else
+                               objLocal = CodeInterpreter.ConvertValue (obj, typeof (object), objType);
+               }
+
+               void InvokeOnSerializing (ClassDataContract classContract, object objSerialized, XmlObjectSerializerWriteContext ctx)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnSerializing (classContract.BaseContract, objSerialized, ctx);
+                       if (classContract.OnSerializing != null) {
+                               classContract.OnSerializing.Invoke (objSerialized, new object [] {ctx.GetStreamingContext ()});
+                       }
+               }
+
+               void InvokeOnSerialized (ClassDataContract classContract, object objSerialized, XmlObjectSerializerWriteContext ctx)
+               {
+                       if (classContract.BaseContract != null)
+                               InvokeOnSerialized (classContract.BaseContract, objSerialized, ctx);
+                       if (classContract.OnSerialized != null) {
+                               classContract.OnSerialized.Invoke (objSerialized, new object [] {ctx.GetStreamingContext ()});
+                       }
+               }
+
+               void WriteClass (ClassDataContract classContract)
+               {
+                       InvokeOnSerializing (classContract, objLocal, ctx);
+
+                       if (classContract.IsISerializable)
+                               ctx.WriteISerializable (writer, (ISerializable) objLocal);
+                       else
+                       {
+                               if (classContract.ContractNamespaces.Length > 1)
+                                       contractNamespaces = classDataContract.ContractNamespaces;
+                               memberNames = classDataContract.MemberNames;
+
+                               for (int i = 0; i < classContract.ChildElementNamespaces.Length; i++)
+                               {
+                                       if (classContract.ChildElementNamespaces[i] != null)
+                                       {
+                                               childElementNamespaces = classDataContract.ChildElementNamespaces;
+                                       }
+                               }
+
+                               if (classContract.HasExtensionData)
+                               {
+                                       ExtensionDataObject extensionData = ((IExtensibleDataObject) objLocal).ExtensionData;
+                                       ctx.WriteExtensionData (writer, extensionData, -1);
+
+                                       WriteMembers (classContract, extensionData, classContract);
+                               }
+                               else
+                                       WriteMembers (classContract, null, classContract);
+                       }
+                       InvokeOnSerialized (classContract, objLocal, ctx);
+               }
+
+               void WriteCollection(CollectionDataContract collectionContract)
+               {
+                       XmlDictionaryString itemNamespace = dataContract.Namespace;
+
+                       XmlDictionaryString itemName = collectionDataContract.CollectionItemName;
+
+                       if (collectionContract.ChildElementNamespace != null)
+                               writer.WriteNamespaceDecl (collectionDataContract.ChildElementNamespace);
+
+                       if (collectionContract.Kind == CollectionKind.Array)
+                       {
+                               Type itemType = collectionContract.ItemType;
+                               int i;
+
+                               // This check does not exist in the original dynamic code,
+                               // but there is no other way to check type mismatch.
+                               // CollectionSerialization.ArrayContract() shows that it is required.
+                               if (objLocal.GetType ().GetElementType () != itemType)
+                                       throw new InvalidCastException (string.Format ("Cannot cast array of {0} to array of {1}", objLocal.GetType ().GetElementType (), itemType));
+
+                               ctx.IncrementArrayCount (writer, (Array) objLocal);
+
+                               if (!TryWritePrimitiveArray(collectionContract.UnderlyingType, itemType, () => objLocal, itemName, itemNamespace))
+                               {
+                                       var arr = (Array) objLocal;
+                                       var idx = new int [1];
+                                       for (i = 0; i < arr.Length; i++) {
+                                               if (!TryWritePrimitive(itemType, null, null, i, itemNamespace, itemName, 0)) {
+                                                       WriteStartElement (itemType, collectionContract.Namespace, itemNamespace, itemName, 0);
+                                                       idx [0] = i;
+                                                       var mbrVal = arr.GetValue (idx);
+                                                       WriteValue (itemType, mbrVal, false);
+                                                       WriteEndElement ();
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               // This check does not exist in the original dynamic code,
+                               // but there is no other way to check type mismatch.
+                               // CollectionSerialization.ArrayContract() shows that it is required.
+                               if (!collectionContract.UnderlyingType.IsAssignableFrom (objLocal.GetType ()))
+                                       throw new InvalidCastException (string.Format ("Cannot cast {0} to {1}", objLocal.GetType (), collectionContract.UnderlyingType));
+                               
+                               MethodInfo incrementCollectionCountMethod = null;
+                               switch (collectionContract.Kind)
+                               {
+                               case CollectionKind.Collection:
+                               case CollectionKind.List:
+                               case CollectionKind.Dictionary:
+                                       incrementCollectionCountMethod = XmlFormatGeneratorStatics.IncrementCollectionCountMethod;
+                                       break;
+                               case CollectionKind.GenericCollection:
+                               case CollectionKind.GenericList:
+                                       incrementCollectionCountMethod = XmlFormatGeneratorStatics.IncrementCollectionCountGenericMethod.MakeGenericMethod(collectionContract.ItemType);
+                                       break;
+                               case CollectionKind.GenericDictionary:
+                                       incrementCollectionCountMethod = XmlFormatGeneratorStatics.IncrementCollectionCountGenericMethod.MakeGenericMethod(Globals.TypeOfKeyValuePair.MakeGenericType(collectionContract.ItemType.GetGenericArguments()));
+                                       break;
+                               }
+                               if (incrementCollectionCountMethod != null)
+                                       incrementCollectionCountMethod.Invoke (ctx, new object [] {writer, objLocal});
+
+                               bool isDictionary = false, isGenericDictionary = false;
+                               Type enumeratorType = null;
+                               Type [] keyValueTypes = null;
+                               if (collectionContract.Kind == CollectionKind.GenericDictionary)
+                               {
+                                       isGenericDictionary = true;
+                                       keyValueTypes = collectionContract.ItemType.GetGenericArguments ();
+                                       enumeratorType = Globals.TypeOfGenericDictionaryEnumerator.MakeGenericType (keyValueTypes);
+                               }
+                               else if (collectionContract.Kind == CollectionKind.Dictionary)
+                               {
+                                       isDictionary = true;
+                                       keyValueTypes = new Type[] { Globals.TypeOfObject, Globals.TypeOfObject };
+                                       enumeratorType = Globals.TypeOfDictionaryEnumerator;
+                               }
+                               else
+                               {
+                                       enumeratorType = collectionContract.GetEnumeratorMethod.ReturnType;
+                               }
+                               MethodInfo moveNextMethod = enumeratorType.GetMethod (Globals.MoveNextMethodName, BindingFlags.Instance | BindingFlags.Public, null, Globals.EmptyTypeArray, null);
+                               MethodInfo getCurrentMethod = enumeratorType.GetMethod (Globals.GetCurrentMethodName, BindingFlags.Instance | BindingFlags.Public, null, Globals.EmptyTypeArray, null);
+                               if (moveNextMethod == null || getCurrentMethod == null)
+                               {
+                                       if (enumeratorType.IsInterface)
+                                       {
+                                               if (moveNextMethod == null)
+                                                       moveNextMethod = XmlFormatGeneratorStatics.MoveNextMethod;
+                                               if (getCurrentMethod == null)
+                                                       getCurrentMethod = XmlFormatGeneratorStatics.GetCurrentMethod;
+                                       }
+                                       else
+                                       {
+                                               Type ienumeratorInterface = Globals.TypeOfIEnumerator;
+                                               CollectionKind kind = collectionContract.Kind;
+                                               if (kind == CollectionKind.GenericDictionary || kind == CollectionKind.GenericCollection || kind == CollectionKind.GenericEnumerable)
+                                               {
+                                                       Type[] interfaceTypes = enumeratorType.GetInterfaces();
+                                                       foreach (Type interfaceType in interfaceTypes)
+                                                       {
+                                                               if (interfaceType.IsGenericType
+                                                                       && interfaceType.GetGenericTypeDefinition() == Globals.TypeOfIEnumeratorGeneric
+                                                                       && interfaceType.GetGenericArguments()[0] == collectionContract.ItemType)
+                                                               {
+                                                                       ienumeratorInterface = interfaceType;
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+                                               if (moveNextMethod == null)
+                                                       moveNextMethod = CollectionDataContract.GetTargetMethodWithName(Globals.MoveNextMethodName, enumeratorType, ienumeratorInterface);
+                                               if (getCurrentMethod == null)
+                                                       getCurrentMethod = CollectionDataContract.GetTargetMethodWithName(Globals.GetCurrentMethodName, enumeratorType, ienumeratorInterface);
+                                       }
+                               }
+                               Type elementType = getCurrentMethod.ReturnType;
+                               object currentValue = null; // of elementType
+
+                               var enumerator = (IEnumerator) collectionContract.GetEnumeratorMethod.Invoke (objLocal, new object [0]);
+                               if (isDictionary)
+                               {
+                                       enumerator = new CollectionDataContract.DictionaryEnumerator ((IDictionaryEnumerator) enumerator);
+                               }
+                               else if (isGenericDictionary)
+                               {
+                                       Type ctorParam = Globals.TypeOfIEnumeratorGeneric.MakeGenericType(Globals.TypeOfKeyValuePair.MakeGenericType(keyValueTypes));
+                                       ConstructorInfo dictEnumCtor = enumeratorType.GetConstructor(Globals.ScanAllMembers, null, new Type[] { ctorParam }, null);
+                                       enumerator = (IEnumerator) Activator.CreateInstance (enumeratorType, new object [] {enumerator});
+                               }
+
+                               var emptyArray = new object [0];
+                               while (enumerator != null && enumerator.MoveNext ()) {
+                                       currentValue = getCurrentMethod.Invoke (enumerator, emptyArray);
+
+                                       if (incrementCollectionCountMethod == null)
+                                               XmlFormatGeneratorStatics.IncrementItemCountMethod.Invoke (ctx, new object [] {1});
+
+                                       if (!TryWritePrimitive (elementType, () => currentValue, null, null, itemNamespace, itemName, 0))
+                                       {
+                                               WriteStartElement (elementType, collectionContract.Namespace, itemNamespace, itemName, 0);
+                                               if (isGenericDictionary || isDictionary)
+                                                       collectionDataContract.ItemContract.WriteXmlValue (writer, currentValue, ctx);
+                                               else
+                                                       WriteValue (elementType, currentValue, false);
+                                               WriteEndElement();
+                                       }
+                               }
+                       }
+               }
+
+               int WriteMembers (ClassDataContract classContract, ExtensionDataObject extensionData, ClassDataContract derivedMostClassContract)
+               {
+                       int memberCount = (classContract.BaseContract == null) ? 0 : WriteMembers (classContract.BaseContract, extensionData, derivedMostClassContract);
+
+                       XmlDictionaryString ns = 
+                               (contractNamespaces == null) ? dataContract.Namespace :
+                               contractNamespaces [typeIndex - 1];
+
+                       ctx.IncrementItemCount (classContract.Members.Count);
+
+                       for (int i = 0; i < classContract.Members.Count; i++, memberCount++) {
+
+                               DataMember member = classContract.Members[i];
+                               Type memberType = member.MemberType;
+                               object memberValue = null;
+                               if (member.IsGetOnlyCollection)
+                                       ctx.StoreIsGetOnlyCollection ();
+                               bool doWrite = true, hasMemberValue = false;
+                               if (!member.EmitDefaultValue)
+                               {
+                                       hasMemberValue = true;
+                                       memberValue = LoadMemberValue (member);
+                                       doWrite = !IsDefaultValue (memberType, memberValue);
+                               }
+
+                               if (doWrite) {
+
+                                       bool writeXsiType = CheckIfMemberHasConflict (member, classContract, derivedMostClassContract);
+                                       if (writeXsiType || !TryWritePrimitive (memberType, hasMemberValue ? () => memberValue : (Func<object>) null, member.MemberInfo, null /*arrayItemIndex*/, ns, null /*nameLocal*/, i + childElementIndex)) {
+                                               WriteStartElement (memberType, classContract.Namespace, ns, null /*nameLocal*/, i + childElementIndex);
+                                               if (classContract.ChildElementNamespaces [i + childElementIndex] != null)
+                                                       writer.WriteNamespaceDecl (childElementNamespaces [i + childElementIndex]);
+                                               if (memberValue == null)
+                                                       memberValue = LoadMemberValue (member);
+                                               WriteValue (memberType, memberValue, writeXsiType);
+                                               WriteEndElement ();
+                                       }
+
+                                       if (classContract.HasExtensionData)
+                                               ctx.WriteExtensionData (writer, extensionData, memberCount);
+                               } else if (!member.EmitDefaultValue) {
+                                       if (member.IsRequired)
+                                               XmlObjectSerializerWriteContext.ThrowRequiredMemberMustBeEmitted (member.Name, classContract.UnderlyingType);
+                               }
+                       }
+
+                       typeIndex++;
+                       childElementIndex += classContract.Members.Count;
+                       return memberCount;
+               }
+
+
+               internal bool IsDefaultValue (Type type, object value)
+               {
+                       return GetDefaultValue (type).Equals (value);
+               }
+
+               internal object GetDefaultValue(Type type)
+               {
+                       if (type.IsValueType)
+                       {
+                               switch (Type.GetTypeCode(type))
+                               {
+                               case TypeCode.Boolean:
+                                       return false;
+                               case TypeCode.Char:
+                               case TypeCode.SByte:
+                               case TypeCode.Byte:
+                               case TypeCode.Int16:
+                               case TypeCode.UInt16:
+                               case TypeCode.Int32:
+                               case TypeCode.UInt32:
+                                       return 0;
+                               case TypeCode.Int64:
+                               case TypeCode.UInt64:
+                                       return 0L;
+                               case TypeCode.Single:
+                                       return 0.0F;
+                               case TypeCode.Double:
+                                       return 0.0;
+                               case TypeCode.Decimal:
+                                       return default (decimal);
+                               case TypeCode.DateTime:
+                                       return default (DateTime);
+                               }
+                       }
+                       return null;
+               }
+
+               bool CheckIfMemberHasConflict(DataMember member, ClassDataContract classContract, ClassDataContract derivedMostClassContract)
+               {
+                       // Check for conflict with base type members
+                       if (CheckIfConflictingMembersHaveDifferentTypes(member))
+                               return true;
+
+                       // Check for conflict with derived type members
+                       string name = member.Name;
+                       string ns = classContract.StableName.Namespace;
+                       ClassDataContract currentContract = derivedMostClassContract;
+                       while (currentContract != null && currentContract != classContract)
+                       {
+                               if (ns == currentContract.StableName.Namespace)
+                               {
+                                       List<DataMember> members = currentContract.Members;
+                                       for (int j = 0; j < members.Count; j++)
+                                       {
+                                               if (name == members[j].Name)
+                                                       return CheckIfConflictingMembersHaveDifferentTypes(members[j]);
+                                       }
+                               }
+                               currentContract = currentContract.BaseContract;
+                       }
+
+                       return false;
+               }
+
+               bool CheckIfConflictingMembersHaveDifferentTypes(DataMember member)
+               {
+                       while (member.ConflictingMember != null)
+                       {
+                               if (member.MemberType != member.ConflictingMember.MemberType)
+                                       return true;
+                               member = member.ConflictingMember;
+                       }
+                       return false;
+               }
+
+               bool NeedsPrefix(Type type, XmlDictionaryString ns)
+               {
+                       return type == Globals.TypeOfXmlQualifiedName && (ns != null && ns.Value != null && ns.Value.Length > 0);
+               }
+
+               void WriteStartElement (Type type, XmlDictionaryString ns, XmlDictionaryString namespaceLocal, XmlDictionaryString nameLocal, int nameIndex)
+               {
+                       bool needsPrefix = NeedsPrefix(type, ns);
+                       nameLocal = nameLocal ?? memberNames [nameIndex];
+                       if (needsPrefix)
+                               writer.WriteStartElement (Globals.ElementPrefix, nameLocal, namespaceLocal);
+                       else
+                               writer.WriteStartElement (nameLocal, namespaceLocal);
+               }
+
+               void WriteEndElement ()
+               {
+                       writer.WriteEndElement ();
+               }
+
+               void WriteValue (Type memberType, object memberValue, bool writeXsiType)
+               {
+                       Pointer memberValueRefPointer = null;
+                       if (memberType.IsPointer)
+                               memberValueRefPointer = (Pointer) XmlFormatGeneratorStatics.BoxPointer.Invoke (null, new object [] {memberValue, memberType});
+                       bool isNullableOfT = (memberType.IsGenericType &&
+                               memberType.GetGenericTypeDefinition() == Globals.TypeOfNullable);
+                       if (memberType.IsValueType && !isNullableOfT)
+                       {
+                               PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(memberType);
+                               if (primitiveContract != null && !writeXsiType)
+                                       primitiveContract.XmlFormatContentWriterMethod.Invoke (writer, new object [] {memberValue});
+                               else
+                                       InternalSerialize(XmlFormatGeneratorStatics.InternalSerializeMethod, () => memberValue, memberType, writeXsiType);
+                       }
+                       else
+                       {
+                               bool isNull;
+                               if (isNullableOfT)
+                                       memberValue = UnwrapNullableObject(() => memberValue, ref memberType, out isNull); //Leaves !HasValue on stack
+                               else
+                                       isNull = memberValue == null;
+                               if (isNull)
+                                       XmlFormatGeneratorStatics.WriteNullMethod.Invoke (ctx, new object [] {writer, memberType, DataContract.IsTypeSerializable(memberType)});
+                               else {
+                                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(memberType);
+                                       if (primitiveContract != null && primitiveContract.UnderlyingType != Globals.TypeOfObject && !writeXsiType) {
+                                               if (isNullableOfT)
+                                                       primitiveContract.XmlFormatContentWriterMethod.Invoke (writer, new object [] {memberValue});
+                                               else                                                    
+                                                       primitiveContract.XmlFormatContentWriterMethod.Invoke (ctx, new object [] {writer, memberValue});
+                                       } else {
+                                               bool isNull2 = false;
+                                               if (memberType == Globals.TypeOfObject || //boxed Nullable<T>
+                                                       memberType == Globals.TypeOfValueType ||
+                                                       ((IList)Globals.TypeOfNullable.GetInterfaces()).Contains(memberType)) {
+                                                       var unwrappedMemberValue = CodeInterpreter.ConvertValue (memberValue, memberType.GetType (), Globals.TypeOfObject);
+                                                       memberValue = unwrappedMemberValue;
+                                                       isNull2 = memberValue == null;
+                                               }
+                                               if (isNull2) {
+                                                       XmlFormatGeneratorStatics.WriteNullMethod.Invoke (ctx, new object [] {writer, memberType, DataContract.IsTypeSerializable(memberType)});
+                                               } else {
+                                                       InternalSerialize((isNullableOfT ? XmlFormatGeneratorStatics.InternalSerializeMethod : XmlFormatGeneratorStatics.InternalSerializeReferenceMethod),
+                                                               () => memberValue, memberType, writeXsiType);
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               void InternalSerialize (MethodInfo methodInfo, Func<object> memberValue, Type memberType, bool writeXsiType)
+               {
+                       var v = memberValue ();
+                       var typeHandleValue = Type.GetTypeHandle (v);
+                       var isDeclaredType = typeHandleValue.Equals (CodeInterpreter.ConvertValue (v, memberType, Globals.TypeOfObject));
+                       methodInfo.Invoke (ctx, new object [] {writer, memberValue != null ? v : null, isDeclaredType, writeXsiType, DataContract.GetId (memberType.TypeHandle), memberType.TypeHandle});
+               }
+
+               object UnwrapNullableObject(Func<object> memberValue, ref Type memberType, out bool isNull)// Leaves !HasValue on stack
+               {
+                       object v = memberValue ();
+                       isNull = false;
+                       while (memberType.IsGenericType && memberType.GetGenericTypeDefinition () == Globals.TypeOfNullable) {
+                               Type innerType = memberType.GetGenericArguments () [0];
+                               if ((bool) XmlFormatGeneratorStatics.GetHasValueMethod.MakeGenericMethod (innerType).Invoke (null, new object [] {v}))
+                                       v = XmlFormatGeneratorStatics.GetNullableValueMethod.MakeGenericMethod (innerType).Invoke (null, new object [] {v});
+                               else {
+                                       isNull = true;
+                                       v = XmlFormatGeneratorStatics.GetDefaultValueMethod.MakeGenericMethod (memberType).Invoke (null, new object [0]);
+                               }
+                               memberType = innerType;
+                       }
+                       
+                       return v;
+               }
+
+               bool TryWritePrimitive(Type type, Func<object> value, MemberInfo memberInfo, int? arrayItemIndex, XmlDictionaryString ns, XmlDictionaryString name, int nameIndex)
+               {
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(type);
+                       if (primitiveContract == null || primitiveContract.UnderlyingType == Globals.TypeOfObject)
+                               return false;
+
+                       object callee = null;
+                       var args = new List<object> ();
+
+                       // load xmlwriter
+                       if (type.IsValueType)
+                               callee = writer;
+                       else {
+                               callee = ctx;
+                               args.Add (writer);
+                       }
+                       // load primitive value 
+                       if (value != null)
+                               args.Add (value ());
+                       else if (memberInfo != null)
+                               args.Add (CodeInterpreter.GetMember (memberInfo, objLocal));
+                       else
+                               args.Add (((Array) objLocal).GetValue (new int [] {(int) arrayItemIndex}));
+                       // load name
+                       if (name != null)
+                               args.Add (name);
+                       else
+                               args.Add (memberNames [nameIndex]);
+                       // load namespace
+                       args.Add (ns);
+                       // call method to write primitive
+                       primitiveContract.XmlFormatWriterMethod.Invoke (callee, args.ToArray ());
+                       return true;
+               }
+
+               bool TryWritePrimitiveArray (Type type, Type itemType, Func<object> value, XmlDictionaryString itemName, XmlDictionaryString itemNamespace)
+               {
+                       PrimitiveDataContract primitiveContract = PrimitiveDataContract.GetPrimitiveDataContract(itemType);
+                       if (primitiveContract == null)
+                               return false;
+
+                       string writeArrayMethod = null;
+                       switch (Type.GetTypeCode(itemType))
+                       {
+                       case TypeCode.Boolean:
+                               writeArrayMethod = "WriteBooleanArray";
+                               break;
+                       case TypeCode.DateTime:
+                               writeArrayMethod = "WriteDateTimeArray";
+                               break;
+                       case TypeCode.Decimal:
+                               writeArrayMethod = "WriteDecimalArray";
+                               break;
+                       case TypeCode.Int32:
+                               writeArrayMethod = "WriteInt32Array";
+                               break;
+                       case TypeCode.Int64:
+                               writeArrayMethod = "WriteInt64Array";
+                               break;
+                       case TypeCode.Single:
+                               writeArrayMethod = "WriteSingleArray";
+                               break;
+                       case TypeCode.Double:
+                               writeArrayMethod = "WriteDoubleArray";
+                               break;
+                       default:
+                               break;
+                       }
+                       if (writeArrayMethod != null)
+                       {
+                               typeof (XmlWriterDelegator).GetMethod (writeArrayMethod, Globals.ScanAllMembers, null, new Type[] { type, typeof (XmlDictionaryString), typeof (XmlDictionaryString) }, null).Invoke (writer, new object [] {value (), itemName, itemNamespace});
+                               return true;
+                       }
+                       return false;
+               }
+
+               object LoadMemberValue (DataMember member)
+               {
+                       return CodeInterpreter.GetMember (member.MemberInfo, objLocal);
+               }
+       }
+}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ChangeLog b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ChangeLog
deleted file mode 100644 (file)
index 5d445cd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-2010-03-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeElementCollection.cs : more corcompare fixes.
-
-2010-03-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * TypeElement.cs, DeclaredTypeElement.cs,
-         ParameterElementCollection.cs, DataContractSerializerSection.cs,
-         ParameterElement.cs :
-         Looks like MSDN pages are quite incorrect. updated to match what
-         status page tells.
-
-2010-03-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializerSection.cs : new.
-       * XmlFormatterSection.cs : remove.
-       * DeclaredTypeElementCollection.cs
-         TypeElement.cs
-         DeclaredTypeElement.cs
-         SerializationSectionGroup.cs
-         ParameterElementCollection.cs
-         TypeElementCollection.cs
-         ParameterElement.cs : implement.
-
-2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DeclaredTypeElementCollection.cs, TypeElement.cs,
-         DeclaredTypeElement.cs, SerializationSectionGroup.cs,
-         ParameterElementCollection.cs, TypeElementCollection.cs,
-         XmlFormatterSection.cs, ParameterElement.cs : new files.
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DataContractSerializerSection.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DataContractSerializerSection.cs
deleted file mode 100644 (file)
index 617894f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// DataContractSerializerSection.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       public sealed class DataContractSerializerSection : ConfigurationSection
-       {
-               // Static Fields
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty declared_types;
-
-               static DataContractSerializerSection ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       declared_types = new ConfigurationProperty ("declaredTypes",
-                               typeof (DeclaredTypeElementCollection), null, null, null,
-                               ConfigurationPropertyOptions.None);
-
-                       properties.Add (declared_types);
-               }
-
-               public DataContractSerializerSection ()
-               {
-               }
-
-               [ConfigurationPropertyAttribute ("declaredTypes", DefaultValue = null)]
-               public DeclaredTypeElementCollection DeclaredTypes {
-                       get { return (DeclaredTypeElementCollection) base [declared_types]; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DeclaredTypeElement.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DeclaredTypeElement.cs
deleted file mode 100644 (file)
index d4b9054..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// DeclaredTypeElement.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005,2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       [MonoTODO]
-       public sealed class DeclaredTypeElement : ConfigurationElement
-       {
-               // Static Fields
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty known_types;
-               static ConfigurationProperty type;
-
-               static DeclaredTypeElement ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       known_types = new ConfigurationProperty ("",
-                               typeof (TypeElementCollection), null, null, null,
-                               ConfigurationPropertyOptions.IsDefaultCollection);
-                       type = new ConfigurationProperty ("type",
-                               typeof (string), "", null, null,
-                               ConfigurationPropertyOptions.None);
-
-                       properties.Add (known_types);
-                       properties.Add (type);
-               }
-
-               public DeclaredTypeElement ()
-               {
-               }
-
-               public DeclaredTypeElement (string typeName)
-               {
-                       Type = typeName;
-               }
-
-               [ConfigurationProperty ("", DefaultValue = null, Options = ConfigurationPropertyOptions.IsDefaultCollection)]
-               public TypeElementCollection KnownTypes {
-                       get { return (TypeElementCollection) base [known_types]; }
-               }
-
-               [ConfigurationProperty ("type", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
-               public string Type {
-                       get { return (string) base [type]; }
-                       set { base [type] = value; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-
-               protected override void PostDeserialize ()
-               {
-                       // what to do here?
-                       base.PostDeserialize ();
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DeclaredTypeElementCollection.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/DeclaredTypeElementCollection.cs
deleted file mode 100644 (file)
index d902478..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// DeclaredTypeElementCollection.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       [ConfigurationCollection (typeof (DeclaredTypeElement))]
-       public sealed class DeclaredTypeElementCollection : ConfigurationElementCollection
-       {
-               public DeclaredTypeElementCollection ()
-               {
-               }
-
-               public DeclaredTypeElement this [int index] {
-                       get { return (DeclaredTypeElement) BaseGet (index); }
-                       set {
-                               RemoveAt (index);
-                               Add (value);
-                       }
-               }
-
-               public new DeclaredTypeElement this [string typeName] {
-                       get { return (DeclaredTypeElement) BaseGet (typeName); }
-                       set {
-                               Remove (typeName);
-                               Add (value);
-                       }
-               }
-
-               public void Add (DeclaredTypeElement element)
-               {
-                       BaseAdd (element);
-               }
-
-               public void Clear ()
-               {
-                       BaseClear ();
-               }
-
-               public bool Contains (string typeName)
-               {
-                       return BaseGet (typeName) != null;
-               }
-
-               public int IndexOf (DeclaredTypeElement element)
-               {
-                       return BaseIndexOf (element);
-               }
-
-               public void Remove (DeclaredTypeElement element)
-               {
-                       Remove ((string) GetElementKey (element));
-               }
-
-               public void Remove (string typeName)
-               {
-                       BaseRemove (typeName);
-               }
-
-               public void RemoveAt (int index)
-               {
-                       BaseRemoveAt (index);
-               }
-
-               protected override ConfigurationElement CreateNewElement ()
-               {
-                       return new DeclaredTypeElement ();
-               }
-
-               protected override Object GetElementKey (
-                       ConfigurationElement element)
-               {
-                       return ((DeclaredTypeElement) element).Type;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ParameterElement.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ParameterElement.cs
deleted file mode 100644 (file)
index fcfaf5f..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// ParameterElement.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005,2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-using System.Xml;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       public sealed class ParameterElement : ConfigurationElement
-       {
-               // Static Fields
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty index;
-               static ConfigurationProperty parameters;
-               static ConfigurationProperty type;
-
-               static ParameterElement ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       index = new ConfigurationProperty ("index",
-                               typeof (int), "", null, null,
-                               ConfigurationPropertyOptions.None);
-                       parameters = new ConfigurationProperty ("",
-                               typeof (ParameterElementCollection), null, null, null,
-                               ConfigurationPropertyOptions.IsDefaultCollection);
-                       type = new ConfigurationProperty ("type",
-                               typeof (string), "", null, null,
-                               ConfigurationPropertyOptions.None);
-
-                       properties.Add (index);
-                       properties.Add (parameters);
-                       properties.Add (type);
-               }
-
-               public ParameterElement ()
-               {
-               }
-
-               public ParameterElement (int index)
-               {
-                       Index = index;
-               }
-
-               public ParameterElement (string typeName)
-               {
-                       Type = typeName;
-               }
-
-               [IntegerValidator (MinValue = 0)]
-               [ConfigurationProperty ("index", DefaultValue = 0)]
-               public int Index {
-                       get { return (int) base [index]; }
-                       set { base [index] = value; }
-               }
-
-               [ConfigurationProperty ("", DefaultValue = null, Options = ConfigurationPropertyOptions.IsDefaultCollection)]
-               public ParameterElementCollection Parameters {
-                       get { return (ParameterElementCollection) base [parameters]; }
-               }
-
-               [StringValidator (MinLength = 0)]
-               [ConfigurationProperty ("type", DefaultValue = "")]
-               public string Type {
-                       get { return (string) base [type]; }
-                       set { base [type] = value; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-
-               protected override void PreSerialize (XmlWriter writer)
-               {
-                       // what to do here?
-                       base.PreSerialize (writer);
-               }
-
-               protected override void PostDeserialize ()
-               {
-                       // what to do here?
-                       base.PostDeserialize ();
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ParameterElementCollection.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/ParameterElementCollection.cs
deleted file mode 100644 (file)
index ef44ceb..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// ParameterElementCollection.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005,2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       [ConfigurationCollection (typeof (ParameterElement), AddItemName = "parameter", CollectionType = ConfigurationElementCollectionType.BasicMap)]
-       public sealed class ParameterElementCollection : ConfigurationElementCollection
-       {
-               public ParameterElementCollection ()
-               {
-               }
-
-               public override ConfigurationElementCollectionType CollectionType {
-                       get { return ConfigurationElementCollectionType.BasicMap; }
-               }
-
-               // FIXME: not very sure, just had a look at http://msdn.microsoft.com/en-us/library/ms731806.aspx
-               protected override string ElementName {
-                       get { return String.Empty; }
-               }
-
-               public ParameterElement this [int index] {
-                       get { return (ParameterElement) BaseGet (index); }
-                       set {
-                               BaseRemoveAt (index);
-                               Add (value);
-                       }
-               }
-
-               public void Add (ParameterElement element)
-               {
-                       BaseAdd (element);
-               }
-
-               public void Clear ()
-               {
-                       BaseClear ();
-               }
-
-               public bool Contains (string typeName)
-               {
-                       return BaseGet (typeName) != null;
-               }
-
-               public int IndexOf (ParameterElement element)
-               {
-                       return BaseIndexOf (element);
-               }
-
-               public void Remove (ParameterElement element)
-               {
-                       BaseRemove ((string) GetElementKey (element));
-               }
-
-               public void RemoveAt (int index)
-               {
-                       BaseRemoveAt (index);
-               }
-
-               protected override ConfigurationElement CreateNewElement ()
-               {
-                       return new ParameterElement ();
-               }
-
-               protected override object GetElementKey (
-                       ConfigurationElement element)
-               {
-                       return ((ParameterElement) element).Type;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/SerializationSectionGroup.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/SerializationSectionGroup.cs
deleted file mode 100644 (file)
index b2101cf..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// SerializationSectionGroup.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005,2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-using ConfigurationType = System.Configuration.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       public sealed class SerializationSectionGroup : ConfigurationSectionGroup
-       {
-               public static SerializationSectionGroup GetSectionGroup (ConfigurationType config)
-               {
-                       var ret = (SerializationSectionGroup) config.GetSectionGroup ("system.runtime.serialization");
-                       if (ret == null)
-                               throw new SystemException ("Internal configuration error: section 'system.runtime.serialization' was not found.");
-                       return ret;
-               }
-
-               public SerializationSectionGroup ()
-               {
-               }
-
-               public DataContractSerializerSection DataContractSerializer {
-                       get { return (DataContractSerializerSection) Sections ["dataContractSerializer"]; }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/TypeElement.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/TypeElement.cs
deleted file mode 100644 (file)
index 4057b04..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// TypeElement.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005,2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       public sealed class TypeElement : ConfigurationElement
-       {
-               // Static Fields
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty index;
-               static ConfigurationProperty parameters;
-               static ConfigurationProperty type;
-
-               static TypeElement ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       index = new ConfigurationProperty ("index",
-                               typeof (int), "", null, null,
-                               ConfigurationPropertyOptions.None);
-                       parameters = new ConfigurationProperty ("",
-                               typeof (ParameterElementCollection), null, null, null,
-                               ConfigurationPropertyOptions.IsDefaultCollection);
-                       type = new ConfigurationProperty ("type",
-                               typeof (string), "", null, null,
-                               ConfigurationPropertyOptions.None);
-
-                       properties.Add (index);
-                       properties.Add (parameters);
-                       properties.Add (type);
-               }
-
-               public TypeElement ()
-               {
-               }
-               
-               public TypeElement (string typeName)
-               {
-               }
-
-               [ConfigurationProperty ("index", DefaultValue = 0)]
-               [IntegerValidator (MinValue = 0)]
-               public int Index {
-                       get { return (int) base [index]; }
-                       set { base [index] = value; }
-               }
-
-               [ConfigurationProperty ("", DefaultValue = null, Options = ConfigurationPropertyOptions.IsDefaultCollection)]
-               public ParameterElementCollection Parameters {
-                       get { return (ParameterElementCollection) base [parameters]; }
-               }
-
-               [ConfigurationProperty ("type", DefaultValue = "")]
-               [StringValidator (MinLength = 0)]
-               public string Type {
-                       get { return (string) base [type]; }
-                       set { base [type] = value; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-
-               protected override void Reset (ConfigurationElement parentElement)
-               {
-                       base.Reset (parentElement);
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/TypeElementCollection.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization.Configuration/TypeElementCollection.cs
deleted file mode 100644 (file)
index 3055c6e..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// TypeElementCollection.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Configuration;
-
-namespace System.Runtime.Serialization.Configuration
-{
-       [ConfigurationCollection (typeof (TypeElement), CollectionType = ConfigurationElementCollectionType.BasicMap)]
-       public sealed class TypeElementCollection : ConfigurationElementCollection
-       {
-               public TypeElementCollection ()
-               {
-               }
-
-               public override ConfigurationElementCollectionType CollectionType {
-                       get { return ConfigurationElementCollectionType.BasicMap; }
-               }
-
-               // It is undocumented.
-               protected override string ElementName {
-                       get { return "knownType"; }
-               }
-
-               public TypeElement this [int index] {
-                       get { return (TypeElement) BaseGet (index); }
-                       set {
-                               BaseRemoveAt (index);
-                               Add (value);
-                       }
-               }
-
-               public void Add (TypeElement element)
-               {
-                       BaseAdd (element);
-               }
-
-               public void Clear ()
-               {
-                       BaseClear ();
-               }
-
-               public int IndexOf (TypeElement element)
-               {
-                       return BaseIndexOf (element);
-               }
-
-               public void Remove (TypeElement element)
-               {
-                       BaseRemove ((string) GetElementKey (element));
-               }
-
-               public void RemoveAt (int index)
-               {
-                       BaseRemoveAt (index);
-               }
-
-               protected override ConfigurationElement CreateNewElement ()
-               {
-                       return new TypeElement ();
-               }
-
-               protected override Object GetElementKey (
-                       ConfigurationElement element)
-               {
-                       return ((TypeElement) element).Type;
-               }
-       }
-}
index 580a0bb94822a89956f89accac7352ed969b4394..c447ff0234c31f26948c037bd358474a33cd96bb 100644 (file)
@@ -1,67 +1,20 @@
 ../../build/common/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
+../../build/common/SR.cs
 Assembly/AssemblyInfo.cs
-System.Runtime.Serialization.Configuration/DataContractSerializerSection.cs
-System.Runtime.Serialization.Configuration/DeclaredTypeElement.cs
-System.Runtime.Serialization.Configuration/DeclaredTypeElementCollection.cs
-System.Runtime.Serialization.Configuration/ParameterElement.cs
-System.Runtime.Serialization.Configuration/ParameterElementCollection.cs
-System.Runtime.Serialization.Configuration/SerializationSectionGroup.cs
-System.Runtime.Serialization.Configuration/TypeElement.cs
-System.Runtime.Serialization.Configuration/TypeElementCollection.cs
-../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/CollectionDataContractAttribute.cs
-../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ContractNamespaceAttribute.cs
-../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractAttribute.cs
-System.Runtime.Serialization/DataContractResolver.cs
-System.Runtime.Serialization/DataContractSerializer.cs
-System.Runtime.Serialization/DataMemberAttribute.cs
-System.Runtime.Serialization/EnumMemberAttribute.cs
-System.Runtime.Serialization/ExportOptions.cs
-System.Runtime.Serialization/ExtensionDataObject.cs
-System.Runtime.Serialization/IDataContractSurrogate.cs
-System.Runtime.Serialization/IExtensibleDataObject.cs
-System.Runtime.Serialization/IgnoreDataMemberAttribute.cs
-System.Runtime.Serialization/ImportOptions.cs
-System.Runtime.Serialization/InvalidDataContractException.cs
-System.Runtime.Serialization/KnownTypeAttribute.cs
-System.Runtime.Serialization/KnownTypeCollection.cs
-System.Runtime.Serialization/NetDataContractSerializer.cs
-System.Runtime.Serialization/SerializationMap.cs
-System.Runtime.Serialization/SerializationMap.XsdExporter.cs
-System.Runtime.Serialization/XmlFormatterDeserializer.cs
-System.Runtime.Serialization/XmlFormatterSerializer.cs
-System.Runtime.Serialization/XmlObjectSerializer.cs
-System.Runtime.Serialization/XmlSerializableServices.cs
-System.Runtime.Serialization/XsdDataContractExporter.cs
-System.Runtime.Serialization/XsdDataContractImporter.cs
-System.Xml/IFragmentCapableXmlDictionaryWriter.cs
-System.Xml/IStreamProvider.cs
-System.Xml/IXmlBinaryReaderInitializer.cs
-System.Xml/IXmlBinaryWriterInitializer.cs
-System.Xml/IXmlDictionary.cs
-System.Xml/IXmlMtomReaderInitializer.cs
-System.Xml/IXmlMtomWriterInitializer.cs
-System.Xml/IXmlUTF8ReaderInitializer.cs
-System.Xml/IXmlUTF8WriterInitializer.cs
-System.Xml/OnXmlDictionaryReaderClose.cs
-System.Xml/UniqueId.cs
-System.Xml/XmlBinaryDictionaryReader.cs
-System.Xml/XmlBinaryDictionaryWriter.cs
-System.Xml/XmlBinaryDictionaryWriterAutoGen.cs
-System.Xml/XmlBinaryFormat.cs
-System.Xml/XmlBinaryReaderSession.cs
-System.Xml/XmlBinaryWriterSession.cs
-System.Xml/XmlC14NWriter.cs
-System.Xml/XmlCanonicalWriter.cs
-System.Xml/XmlDictionary.cs
-System.Xml/XmlDictionaryReader.cs
-System.Xml/XmlDictionaryReaderAutoGen.cs
-System.Xml/XmlDictionaryReaderQuotas.cs
-System.Xml/XmlDictionaryString.cs
-System.Xml/XmlDictionaryWriter.cs
-System.Xml/XmlDictionaryWriterAutoGen.cs
-System.Xml/XmlMtomDictionaryReader.cs
-System.Xml/XmlMtomDictionaryWriter.cs
-System.Xml/XmlSimpleDictionaryReader.cs
-System.Xml/XmlSimpleDictionaryWriter.cs
+
+ReferenceSources/DiagnosticUtility.cs
+ReferenceSources/FxTrace.cs
+ReferenceSources/SR.cs
+ReferenceSources/SR_missing.cs
+ReferenceSources/XmlExceptionHelper.cs
+
+ReferenceSources/BitFlagsGenerator.cs
+ReferenceSources/CodeInterpreter.cs
+ReferenceSources/JsonFormatReaderGenerator_static.cs
+ReferenceSources/JsonFormatWriterGenerator_static.cs
+ReferenceSources/XmlDataContract_static.cs
+ReferenceSources/XmlFormatReaderGenerator_static.cs
+ReferenceSources/XmlFormatWriterGenerator_static.cs
+
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog
deleted file mode 100755 (executable)
index 5efe584..0000000
+++ /dev/null
@@ -1,856 +0,0 @@
-2010-07-06  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : add OnDeserializing/OnDeserialized support.
-
-2010-06-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * XmlFormatterDeserializer.cs: Fix some issues in Moonlight when 
-       some referenced assemblies cannot be found or loaded
-
-2010-06-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SerializationMap.cs: NET_2_1 needs cast too
-
-2010-06-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : fix PeerNodeAddress serialization regression.
-
-2010-06-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : for IXmlSerializable it uses CreateInstance()
-         instead of GetUninitializedObject(). Fixed bug #601785.
-
-2010-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, XmlFormatterSerializer.cs,
-         DataContractSerializer.cs :
-         support DataContractSerializer.PreserveObjectReferences. z:Ref
-         attributes are used not only for objects with IsReference=true.
-         Fixed bug #610036.
-
-2010-05-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs : contract namespace
-         should be still considered even if contract (local) name is null.
-         Fix crash for generic derived type of dictionary. Fixed the
-         primary (crasher) part of bug #610036.
-
-2010-05-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs : Array of something with non-default
-         namespace should be deserialized as well. Required for fixing
-         PeerResolvers ResolveResponseInfo serialization test case.
-
-2010-05-19  Andreia Gaita  <avidigal@novell.com>
-
-       * SerializationMap.cs: when deserializing, it is possible that the
-       DataMemberInfo objects being matched against the xml don't have
-       a set namespace because they were created from
-       DefaultTypeMap.GetDataMembers(), so only use the namespace for
-       comparison if it's not null (fixes part of #599667)
-
-2010-04-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : support DataContractNamespaceAttribute.
-         Fixed bug #599889.
-
-2010-04-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractExporter-new.cs : do not expect contract attribute on
-         dictionary map. Non-contract type also uses this.
-
-2010-04-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.XsdExporter.cs, DataContractExporter-new.cs :
-         handle schema export for SharedTypeMap.
-
-2010-04-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs, SerializationMap.cs : split SharedTypeMap
-         .ctor() and initialization. Fixed infinite loop for some
-         [Serializable] types (such as Assembly).
-
-2010-04-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer : implement IsStartObject().
-
-2010-03-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs, SerializationMap.cs :
-         some refactoring to implement MessageDescription.XmlName.
-
-2010-03-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : return array instance if the runtime type is
-         an array (it used to return ArrayList without conveting to array).
-
-2010-03-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.XsdExporter.cs, XsdDataContractExporter-new.cs:
-         refresh implementation to reflect the latest WCF impl.
-       * SerializationMap.cs : make types partial.
-
-2010-02-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter.cs : fix extension type name (and comment).
-
-2010-02-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter.cs : added dictionary support.
-
-2010-02-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter-new.cs, XsdDataContractImporter.cs :
-         replaced implementation.
-       * ImportOptions.cs : add correct MonoTODOs.
-
-2010-02-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter-new.cs : output [KnownType] to expose
-         base/derived type relationship.
-
-2010-02-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter-new.cs : fix GenerateInternal.
-
-2010-02-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter-new.cs : refresh implementation that is
-         not based on xml serialization. Not enabled yet.
-       * KnownTypeCollection.cs : add cosmetic comment.
-
-2010-02-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter.cs : add appropriate code namespaces
-         imported from xsd namespace.
-
-2010-02-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter.cs : do not add primitive ArrayOfxxx types.
-
-2010-02-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractImporter.cs : some generated attributes are put
-         on enums too.
-
-2010-01-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : allow readonly field as data member.
-         Fixed bug #560155.
-
-2010-01-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs : differentiate
-         [DataContract(Namespace=null)] and [DataContract(Namespace="")].
-         Fixed bug #568763.
-
-2009-12-01  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * DataContractSerializer.cs: Add two missing methods for FX3.0 
-       and SL2/SL3.
-
-2009-10-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : partly revert previous sorting fix in
-         Sep.28th. Do not sort and mix members in base and derived types.
-         Fixed bug #546238.
-
-2009-10-21  Jb Evain  <jbevain@novell.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs: avoid using LINQ
-       on arrays as MonoTouch has issues with them.
-
-2009-09-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs :
-         There were some places that ignored possible whitespace nodes.
-         Fixed sorting of ordered members so that it does not give
-         incomplete sorting among base/derived types. (should fix #539563.)
-         Give xml error details in some places.
-
-2009-09-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : (the previous one didn't fix #539563.)
-         Consider attempts to register the same collection type as it did
-         before.
-
-2009-09-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs : nested use of type
-         in its members resulted in infinite loop. This hopefully fixes
-         bug #539563.
-
-2009-09-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * IgnoreDataMemberAttribute.cs : add missing type.
-       * SerializationMap.cs : support above.
-
-2009-07-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SerializationMap.cs : Ensure Dictionary is still deserialized
-       correctly (wrt previous change). Fix moonlight isolated storage
-       settings.
-
-2009-07-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : for empty element, do not try to consume
-         children. Fixed bug #524086.
-         For enum, it is always error when the enum is not flags, and
-         is always default value for flags.
-
-2009-07-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs : when reading empty primitive value,
-         make sure to consume the reader. Fixed bug #524083.
-
-2009-07-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : call MoveToContent() before examining
-         the reader node type.
-
-2009-07-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : Find KnownTypeAttributes in base types
-         too. Patch by Rolf Bjarne Kvinge. Fixed bug #524088.
-
-2009-07-21  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : it does not write dictionary string
-         when it was not created with it.
-
-2009-07-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs, SerializationMap.cs : IXmlSerializable
-         were not deserialized correctly as it has mismatch on wrapper
-         element. This fixes PeerNodeAddress.EndpointAddress deserialization.
-
-2009-06-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs : verifyObjectName rather blocked
-         correct names provided as the root names.
-
-2009-06-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterSerializer.cs, KnownTypeCollection.cs : collection
-         types does not emit xsi:type when the actual type is different
-         from the nominal serilaization type. To achieve this, introduced
-         the idea of the actual serialization type.
-
-2009-05-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : for default / shared type map, members are
-         serialized in alphabetical order.
-
-2009-05-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : generic interface search has to be more
-         complicated. Give kind error message on setting deserialized value.
-
-2009-05-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs: collection interface cannot be instantiated,
-         so create List<T> (generic) or ArrayList (non-generic) instead.
-
-2009-05-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, XmlFormatterSerializer.cs :
-         collection types should not output xsi:type e.g. IList<T> should
-         not exposed xsi:type as xsi:type=List`1.
-
-2009-05-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, XmlFormatterDeserializer.cs,
-         KnownTypeCollection.cs : Support for array of some primitive types
-         in the deserializer was missing, which resulted in peer resolver
-         RegisterInfo deserialization failure.
-
-2009-05-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs : remove type lookup optimization
-         (since .NET 3.5 introduced system types with DC) and fix
-         serialization of system types (ISerializable types were not
-         resolved in previous code).
-
-2009-05-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : it was only about 2.1. Fix build.
-
-2009-05-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : It is not possible to get schema without
-         IXmlSerializable instance.
-
-2009-05-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : write dictionary string directly for
-         root name/ns (root only, so far).
-
-2009-05-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs: interface collection failed to serialize as
-         it was calling inappropriate GetInterfaceMap().
-
-2009-04-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs : more hack to handle empty
-         element nicely.
-
-2009-03-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, XmlFormatterDeserializer.cs:
-         empty collection deserialization resulted in extra
-         consumption of the next xml node.
-
-2009-03-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs, XmlFormatterDeserializer.cs :
-         to infer type from xml qname, consider DataContractAttribute
-         names.
-
-2009-03-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : make generic type parsing sloppy.
-         because we don't know some cryptic hash algorithm:
-         http://jeffbarnes.net/portal/blogs/jeff_barnes/archive/2007/05/10/wcf-serialization-and-generics.aspx
-
-2009-03-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs :
-         support CollectionDataContract-based dictionary too.
-
-2009-03-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs :
-         added support for dictionary serialization (not for
-         CollectionDataContract-attributed dictionary yet).
-
-2009-03-12  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : cosmetic !NET_2_1 fix (no effect).
-       * KnownTypeCollection.cs : use ICollection<> and IList instead of
-         IEnumerable. This causes confusion for dictionary.
-
-2009-03-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterSerializer.cs, XmlObjectSerializer.cs,
-         XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
-         add more xsi:type to cover collection items.
-
-2009-03-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : fix generic argument names in xml.
-         They should use xmlized names instead of raw type name.
-       * XmlFormatterDeserializer.cs : remove extra Console.WriteLine.
-
-2009-03-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : eliminate whitespace misuses.
-
-2009-03-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : actually it could just be ICollection<T>.
-
-2009-03-11  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : implemented generic IList deserialization.
-
-2009-03-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : fix for generic serialization.
-
-2009-02-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : look for unordered members first, in
-         different iteration. Got SL OpenStreetMap working.
-
-2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : remove use of non-2.1 CreateInstance().
-       * XmlFormatterDeserializer.cs : allow empty element.
-
-2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, DataContractSerializer.cs,
-         KnownTypeCollection.cs : now .NET 3.5/SP1 supports non-contract
-         type serialization.
-
-2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, KnownTypeCollection.cs : couple of refactoring
-         to simplify code base and handle CollectionDataContract namespace.
-
-2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : oops, remove debug lines.
-
-2009-02-13  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : remove extra writexmlns.
-       * SerializationMap.cs : allow DataMember of collection contract type
-         as read-only.
-       * KnownTypeCollection.cs : it was not iterating interfaces to find
-         IEnumerable<T> correctly.
-
-2009-02-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : a bit more detailed error message.
-
-2009-01-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : similar fix to the previous one,
-         on uint16.
-
-2009-01-22  Alan McGovern  <amcgovern@novell.com>
-
-       * KnownTypeCollection.cs : The byte overload doesn't exist in
-       Silverlight, so cast the byte to an int instead.
-
-2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractAttribute.cs : remove MonoTODO.
-
-2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, XmlFormatterSerializer.cs,
-         XmlFormatterDeserializer.cs, DataContractAttribute.cs,
-         CollectionDataContractAttribute.cs, KnownTypeCollection.cs :
-         support IsReference (new in 3.5 SP1).
-
-2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : remove extra type validity check.
-
-2008-11-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterSerializer.cs : one object could not be serialized
-         twice in non-circular situation.
-
-2008-09-09  Atsushi Enomoto  <atsushi@ximian.com>
-                       Jb Evain  <jbevain@novell.com>
-
-       * IDataContractSurrogater.cs, SerializationMap.cs:
-       add support to build on the net_2_1 profile.
-
-2008-06-19  Noam Lampert <noaml@mainsoft.com>
-       
-       * KnownTypeCollection.cs: Support anyUri type
-
-2008-06-05  Noam Lampert <noaml@mainsoft.com>
-       
-       * KnownTypeCollection.cs: Support XmlRoot attribute
-
-2008-06-01  Noam Lampert <noaml@mainsoft.com>
-       
-       * KnownTypeCollection.cs: Implement byte[] serialization.
-
-2008-05-19  Noam Lampert <noaml@mainsoft.com>
-       
-       * KnownTypeCollection.cs: Implement char serialization.
-          
-2008-05-19  Noam Lampert <noaml@mainsoft.com>
-       
-       * KnownTypeCollection.cs, XmlFormatterDeserializer.cs: Imporve support for 
-          Nullable types in contracts.
-          
-2008-04-29  Eyal Alaluf <eyala@mainsoft.com>
-
-       * KnownTypeCollection.cs: Fixed a typo in long conversion.
-
-2008-04-17  Eyal Alaluf <eyala@mainsoft.com>
-
-       * SerializationMap.cs: Implement partially collections deserialization.
-         Supports arrays and types derived from IList. Needs support for calling
-         'Add' method and for dictionaries.
-       * SerializationMap.cs XmlFormatterSerializer.cs DataContractSerializer.cs:
-         Serialize namespaces for base members according to base class namespace.
-
-2008-04-14  Eyal Alaluf <eyala@mainsoft.com>
-
-       * SerializationMap.cs: Use FormatterServices.GetUninitializedObject instead
-         of Activator.CreateInstance.
-
-2008-04-10  Eyal Alaluf <eyala@mainsoft.com>
-
-       * DataContractSerializer.cs: Write and register the current type namespace
-         within the writer.
-       * XmlObjectSerializer.cs: ReadObject verifies by default.
-       * XmlFormatterSerializer.cs: Write and register XML namespaces.
-       * XmlFormatterDeserializer.cs: Refactored so Deserialize instance method can
-         be used from SerializationMap deserialization logic recursively.
-       * SerializationMap.cs: Reimplemented main deserialization logic. Now it
-         handles better missing entries, consumes the XmlReader until the end
-         element and handles XML namespaces correctly.
-         Enabled checks for required fields.
-
-2008-02-27  Eyal Alaluf <eyala@mainsoft.com>
-
-       * SerializationMap.cs: Fix namespace logic at least in simple case where
-         there are several unknown elements before the current element.
-       * ContractNamespaceAttribute.cs: The ClrNamespace is not set by the ctor.
-       * XmlObjectSerializer.cs: Dispose the XmlWriter created in WriteObject
-         to a stream.
-       * DataMemberAttribute.cs: Added the EmitDefaultValue property.
-       * XsdDataContractImporter.cs: Handle null arguments in Import methods.
-       * KnownTypeCollection.cs: Use XmlConvert.ToDateTime with roundtrip style.
-
-2007-12-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlObjectSerializer.cs : some methods became virtual (in Redbits).
-       * DataContractSerializer.cs : added some overriden methods in Redbits.
-         knownTypes can be null in .ctor().
-
-2007-08-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs : for void it cannot be instantiated. Return
-         null instead.
-
-2007-08-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs DataContractSerializer.cs :
-         uhoh, the semantic of bool parameter in ReadObject() has
-         changed in the RTM. Implemented it as verifyObjectName.
-
-2007-03-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs
-         XmlFormatterSerializer.cs
-         DataContractSerializer.cs :
-         now it needs some mess to handle serialization namespaces.
-         Collection items are serialized in its own xml namespace. Others,
-         (including the collection member itself) is serialized in its
-         parent xml namespace. Collection items are serialized with its
-         wrapping element.
-       * XsdDataContractImporter.cs : use constant.
-
-2007-03-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : added support for Guid serialization.
-
-2006-10-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : (RemoveItem) don't remove items while 
-         iterating.
-
-2006-09-06  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.GetSequence): Set minOccurs = 0
-
-2006-09-05  Ankit Jain  <jankit@novell.com>
-
-       * XsdDataContractExporter.cs (XsdDataContractExporter.MSTypesSchema):
-       Load resource mstypes.schema
-       (XsdDataContractExporter.Schemas): Add MSTypesSchema by default.
-
-2006-09-05  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.AddImport): New.
-       (SerializationMap.GetSequence): Use AddImport.
-
-2006-09-04  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.GetSchemaSet): Remove.
-       (SerializationMap.GetSchemaType):
-       (SerializationMap.GetSequence):
-       (SerializationMap.GetSchema): Change XmlSchemas param to XmlSchemaSet.
-       Call XmlSchemaSet.Reprocess whenever an existing schema is modified.
-       * XsdDataContractExporter.cs (XsdDataContractExporter.Export): Update to
-       changes in SerializationMap.
-       (XsdDataContractExporter.CanExport): Implement.
-       (XsdDataContractExporter.GetSchemaType): Implement.
-       (XsdDataContractExporter.GetSchemaTypeName): Implement.
-       (XsdDataContractExporter.KnownTypes): New.
-       (XsdDataContractExporter.GeneratedTypes): New.
-
-2006-09-01  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.GetSchemaSet): New.
-       (SerializationMap.IsPrimitive): New.
-       (SerializationMap.GetSchemaType): New.
-       (SerializationMap.GetSequence): New.
-       (SerializationMap.GetMembers): New.
-       (SerializationMap.GetSchemaElement): New.
-       (SerializationMap.GetSchema): New.
-       (SerializationMap.GetQualifiedName): New.
-       New methods for exporting schema for the type.
-
-       (SharedContractMap.ctor): Move code for building Members list to ..
-       (SharedContractMap.GetMembers): .. here.
-
-       (CollectionTypeMap.Serialize): Mark 'override'.
-       (CollectionTypeMap.GetMembers): 'override' and throw
-       NotImplementedException.
-       (CollectionTypeMap.GetSchemaType): Implement.
-
-       (SharedTypeMap..ctor): Move code to ..
-       (SharedTypeMap.GetMembers): .. here.
-       (EnumMap.GetSchemaType): Implement.
-
-       * XsdDataContractExporter.cs (XsdDataContractExporter.Export):
-       Implement.
-       * KnownTypeCollection.cs (KnownTypeCollection.GetCollectionQName): Use
-       GetQName instead of GetXmlName. Set Namespace for collections of
-       primitive types to MSArraysNamespace
-
-2006-08-31  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (EnumMap): New. For de/serializing enums.
-       (EnumMemberInfo): New.
-       (SerializationMap.DeserializeContent): Made protected virtual from private.
-       * DataContractSerializer.cs (WriteStartObject):
-       Ensure that "i:type" is not emitted for enums.
-       * KnownTypeCollection.cs (GetPrimitiveTypeName): Don't treat enum as a
-       primitive type.
-       (GetQName): Likewise. Use GetEnumQName for enums.
-       (GetEnumQName): New.
-       (IsPrimitiveNotEnum): New.
-       (TryRegister): Add support for enums.
-       (RegisterEnum): New.
-
-2006-08-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterSerializer.cs : (contd from my previous change)
-         ... and don't complain at WriteObject(). It is somehow required
-         in S.SM.D.WSTrustContract (soon to be committed).
-
-2006-07-27  Ankit Jain  <jankit@novell.com>
-
-       * XsdDataContractImporter.cs (Compile): Remove, thanks to eno
-       XmlSchemaSet.Compile () works now.
-       Update to directly use XmlSchemaSet.Compile ()
-
-2006-07-27  Ankit Jain  <jankit@novell.com>
-
-       * XsdDataContractImporter.cs (ImportInternal): New.
-       Update various overloads of Import to use this.
-       (ImportFromTypeMapping): New. Emits code for a DataContract from a
-       XmlTypeMapping. Code is duplicate of
-       ServiceContractGenerator.ExportDataContract .
-       (GetNamespace): New. Duplicate like above.
-       (Compile): New. Temporary hack, will XmlSchemaSet.Compile is not
-       working.
-
-2006-07-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterSerializer.cs, KnownTypeCollection.cs :
-         don't raise an error at DataContractSerializer..ctor(). Raise
-         InvalidDataContractException on WriteObject().
-
-2006-07-12  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (XmlSerializableMap): New. Map for classes which
-       implement IXmlSerializable interface.
-       * KnownTypeCollection.cs (KnownTypeCollection.GetQName): Add support for
-       types which implement IXmlSerializable interface. Change the order in
-       which DataContractAttribute/IXmlSerializable/SerializableAttribute get
-       selected.
-       (KnownTypeCollection.TryRegister): Change the order like above.
-       (KnownTypeCollection.RegisterIXmlSerializable): New.
-
-2006-07-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XsdDataContractExporter.cs, XmlObjectSerializer.cs,
-         InvalidDataContractException.cs : some June CTP updates.
-
-2006-07-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * IDataContractSurrogate.cs, ExportOptions.cs,
-         DataContractSerializer.cs, KnownTypeCollection.cs :
-         June CTP updates.
-
-2006-05-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : null knownTypes argument is allowed.
-       * KnownTypeCollection.cs : Type.Namespace could be null.
-
-2006-05-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : for nested classes, treat localName of
-         the QName as "Parent.Child", not "Child".
-         Don't encode name here (to pass ".").
-
-2006-05-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs :
-         Added maxObjectsInGraph range check.
-         interface type has BaseType as null, so end base type check when
-         it is null (I don't think this check is required btw).
-
-2006-04-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : xmlns:xsi is not written when the
-         target type is string.
-
-2006-03-22  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (CheckDataContractEqual): Remove.
-       (Deserialize): Allows expected type to be a derived one from actual
-       type.
-       (DeserializeInternal): Handle DataMember of type 'object'.
-       * XmlFormatterSerializer.cs (SerializeNonPrimitive): Serialize types not
-       already known.
-       * DataContractSerializer.cs (.ctor): Use KnownTypeCollection.GetQName
-       instead of doing it manually.
-       (PopulateTypes): Change return type from KnownTypeCollection to void.
-       Scan the base types to ensure that all have DataContract or Serializable
-       attributes.
-       Add all (including inherited) KnownTypeAttribute values to the
-       collection.
-
-2006-03-18  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.GetEmptyInstance): Rename to ..
-       (SerializationMap.GetInstance): .. this. Gets the instance or null if nil=true.
-       (SerializationMap.DeserializeInternal): New. Renamed from .. 
-       (SerializationMap.Deserialize): .. this. Check DataContract equivalence, and use new
-       DeserializeInternal for rest of the work.
-       (DeserializeContent): Cleanup and handle various "null" cases.
-       * XmlFormatterSerializer.cs (Write_i_type): New. Write i:type=".."
-       (SerializeNonPrimitive): Update to use Write_i_type.
-       * DataContractSerializer.cs (WriteStartObject): Add rootType to known_types.
-
-2006-03-16  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.Deserialize): Use NameTable.Get
-       before reader.LookupNamespace.
-       (DataMemberInfo.Compare): Use String.CompareOrdinal instead of
-       String.Compare.
-
-2006-03-16  Ankit Jain  <jankit@novell.com>
-
-       * SerializationMap.cs (SerializationMap.GetEmptyInstance): New.
-       (SerializationMap.Deserialize): Refactor, handle primitive types and nils.
-       (SerializationMap.DeserializeContent): Handle nils and nested DataContracts.
-       (SharedContractMap.ctor): Include inherited properties and fields, in
-       the correct order.
-
-2006-03-15  Ankit Jain  <jankit@novell.com>
-
-       * KnownTypeCollection.cs (IsPrimitiveType): New.
-       * SerializationMap.cs (Deserialize): Handle primitive types.
-
-2006-03-15  Ankit Jain  <jankit@novell.com>
-
-       * DataContractSerializer.cs (WriteObjectContent): Handle null.
-       (WriteStartObject): Rewritten.
-       * KnownTypeCollection.cs (GetQName): New. Return QName for a given type.        
-       (GetContractQName):
-       (GetSerializableQName):
-       (GetCollectionQName): New.
-       (RegisterContract):
-       (RegisterSerializable):
-       (RegisterCollection): Update to use new Get* methods.
-       * SerializationMap.cs (CheckDataContractEqual): New.
-       (Deserialize): Split into this and ..
-       (DeserializeContent): .. this.
-       * XmlDictionaryWriter.cs (CreateTextWriter): Use UTF8Encoding.
-
-2006-03-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : xmlns output should be done at
-         WriteStartObject().
-
-2006-03-08  Ankit Jain  <jankit@novell.com>
-
-       * DataContractSerializer.cs (.ctor): Use name & namespace specified (if any) 
-       with the DataContractAttribute for non-primitive types.
-       (DataContractSerializer.WriteStartObject): DataContractAttribute.Name
-       cannot be "".
-
-2006-03-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DataContractSerializer.cs : Handle primitive type name rather than
-         raw type name in constructors that don't receive root QName.
-         In case the actual graph is not of root type, write xsi:type.
-
-2006-03-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : default namespace contains common MS base
-         URI fragment.
-       * XmlObjectSerializer.cs : added internal common utility field.
-       * DataContractSerializer.cs : Fixed constructors to fill fields and
-         make it work.
-       * NetDataContractSerializer.cs : just leave it unimplemented until
-         we find how it works. It looks different from what
-         DataContractSerializer does.
-
-2006-01-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatter.cs : extra namespaces are not written in Dec.CTP.
-
-2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeCollection.cs : override.
-
-2005-11-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SerializationMap.cs, XmlFormatterSerializer.cs, XmlFormatter.cs
-         XmlFormatterDeserializer.cs, KnownTypeCollection.cs :
-         several changes. Partial support for collection serialization.
-         SerializationMap now contains its own Deserialize()/Serialize()
-         methods.
-
-2005-10-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatterDeserializer.cs : new file.
-       * SerializationMap.cs, XmlFormatter.cs, KnownTypeCollection.cs :
-         several changes for pretty primitive Deserialize() implementation.
-
-2005-10-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       Added hacky serialization feature. Actually it should be rewritten to
-       be based on IDataContractSurrogate.
-       * SerializationMap.cs, XmlFormatterSerializer.cs :
-         new files for Serialize() implementation.
-       * KnownTypeCollection.cs : use serialization maps to check contracts.
-       * XmlFormatter.cs : implemented hacky Serialize().
-       * DataMemberAttribute.cs : default Order is -1.
-       * DataContractAttribute.cs : added tiny comment.
-
-2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlFormatter.cs : Added implementation switch between
-         BinaryFormatter and internal DataContractFormatter.
-       * XmlSerializableServices.cs : WriteNodes() impl.
-
-2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSerializableServices.cs : ReadNodes() impl.
-
-2005-09-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * KnownTypeAttribute.cs : fixed attribute usage.
-
-2005-09-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * IDataContractSurrogate.cs, ContractNamespaceAttribute.cs,
-         XsdDataContractExporter.cs, KnownTypeAttribute.cs,
-         SerializationMode.cs, XmlFormatter.cs, DataMemberAttribute.cs,
-         ImportOptions.cs, UnknownSerializationData.cs,
-         SerializationFactoryMethodAttribute.cs, XmlSerializableServices.cs,
-         DataContractAttribute.cs, ExportOptions.cs,
-         InvalidDataContractException.cs, IUnknownSerializationData.cs,
-         CollectionDataContractAttribute.cs, XsdDataContractImporter.cs,
-         KnownTypeCollection.cs :
-         #if NET_2_0. coding style was updated.
-
-2005-09-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CollectionDataContractAttribute.cs
-         ContractNamespaceAttribute.cs
-         DataContractAttribute.cs
-         DataMemberAttribute.cs
-         ExportOptions.cs
-         IDataContractSurrogate.cs
-         InvalidDataContractException.cs
-         IUnknownSerializationData.cs
-         ImportOptions.cs
-         KnownTypeAttribute.cs
-         KnownTypeCollection.cs
-         SerializationFactoryMethodAttribute.cs
-         SerializationMode.cs
-         UnknownSerializationData.cs
-         XmlFormatter.cs
-         XmlSerializableServices.cs
-         XsdDataContractExporter.cs
-         XsdDataContractImporter.cs : new files.
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractResolver.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractResolver.cs
deleted file mode 100644 (file)
index 5a6dc28..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// DataContractResolver.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Xml;
-
-namespace System.Runtime.Serialization
-{
-       // See http://msdn.microsoft.com/en-us/library/ee358759.aspx
-       public
-       abstract class DataContractResolver
-       {
-               public abstract Type ResolveName (string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver);
-
-               public abstract bool TryResolveType (Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace);
-       }
-
-       internal class DefaultDataContractResolver : DataContractResolver
-       {
-               public DefaultDataContractResolver (DataContractSerializer serializer)
-               {
-                       this.serializer = serializer;
-               }
-
-               DataContractSerializer serializer;
-               XmlDictionary dictionary;
-
-               public override Type ResolveName (string typeName, string typeNamespace, Type declaredType, DataContractResolver knownTypeResolver)
-               {
-                       var map = serializer.InternalKnownTypes.FindUserMap (new XmlQualifiedName (typeName, typeNamespace));
-                       if (map == null)
-                               serializer.InternalKnownTypes.Add (declaredType);
-                       if (map != null)
-                               return map.RuntimeType;
-                       return null;
-               }
-
-               public override bool TryResolveType (Type type, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace)
-               {
-                       var map = serializer.InternalKnownTypes.FindUserMap (type);
-                       if (map == null) {
-                               typeName = null;
-                               typeNamespace = null;
-                               return false;
-                       } else {
-                               dictionary = dictionary ?? new XmlDictionary ();
-                               typeName = dictionary.Add (map.XmlName.Name);
-                               typeNamespace = dictionary.Add (map.XmlName.Namespace);
-                               return true;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializer.cs
deleted file mode 100755 (executable)
index 8a33e29..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-//
-// DataContractSerializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005-2007 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       public sealed class DataContractSerializer : XmlObjectSerializer
-       {
-               const string xmlns = "http://www.w3.org/2000/xmlns/";
-
-               Type type;
-               bool ignore_ext, preserve_refs;
-
-               // This is only for compatible mode.
-               StreamingContext context;
-               ReadOnlyCollection<Type> returned_known_types;
-               KnownTypeCollection known_types;
-               List<Type> specified_known_types;
-               IDataContractSurrogate surrogate;
-               DataContractResolver resolver, default_resolver;
-
-               int max_items = 0x10000; // FIXME: could be from config.
-
-               bool names_filled;
-               XmlDictionaryString root_name, root_ns;
-
-               public DataContractSerializer (Type type)
-                       : this (type, Type.EmptyTypes)
-               {
-                       // nothing to do here.
-               }
-
-               public DataContractSerializer (Type type,
-                       IEnumerable<Type> knownTypes)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       this.type = type;
-                       PopulateTypes (knownTypes);
-                       known_types.Add (type);
-                       QName qname = known_types.GetQName (type);
-
-                       FillDictionaryString (qname.Name, qname.Namespace);
-
-               }
-
-               public DataContractSerializer (Type type, string rootName,
-                       string rootNamespace)
-                       : this (type, rootName, rootNamespace, Type.EmptyTypes)
-               {
-                       // nothing to do here.
-               }
-
-               public DataContractSerializer (Type type,
-                       XmlDictionaryString rootName,
-                       XmlDictionaryString rootNamespace)
-                       : this (type, rootName, rootNamespace, Type.EmptyTypes)
-               {
-                       // nothing to do here.
-               }
-
-               public DataContractSerializer (Type type, string rootName,
-                       string rootNamespace, IEnumerable<Type> knownTypes)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (rootName == null)
-                               throw new ArgumentNullException ("rootName");
-                       if (rootNamespace == null)
-                               throw new ArgumentNullException ("rootNamespace");
-                       this.type = type;
-                       PopulateTypes (knownTypes);
-                       FillDictionaryString (rootName, rootNamespace);
-               }
-
-               public DataContractSerializer (Type type,
-                       XmlDictionaryString rootName,
-                       XmlDictionaryString rootNamespace,
-                       IEnumerable<Type> knownTypes)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (rootName == null)
-                               throw new ArgumentNullException ("rootName");
-                       if (rootNamespace == null)
-                               throw new ArgumentNullException ("rootNamespace");
-                       this.type = type;
-                       PopulateTypes (knownTypes);
-                       root_name = rootName;
-                       root_ns = rootNamespace;
-               }
-
-               public DataContractSerializer (Type type,
-                       IEnumerable<Type> knownTypes,
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate)
-                       : this (type, knownTypes)
-               {
-                       Initialize (maxObjectsInGraph,
-                               ignoreExtensionDataObject,
-                               preserveObjectReferences,
-                               dataContractSurrogate);
-               }
-
-               public DataContractSerializer (Type type,
-                       string rootName,
-                       string rootNamespace,
-                       IEnumerable<Type> knownTypes,
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate)
-                       : this (type, rootName, rootNamespace, knownTypes)
-               {
-                       Initialize (maxObjectsInGraph,
-                               ignoreExtensionDataObject,
-                               preserveObjectReferences,
-                               dataContractSurrogate);
-               }
-
-               public DataContractSerializer (Type type,
-                       XmlDictionaryString rootName,
-                       XmlDictionaryString rootNamespace,
-                       IEnumerable<Type> knownTypes,
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate)
-                       : this (type, rootName, rootNamespace, knownTypes)
-               {
-                       Initialize (maxObjectsInGraph,
-                               ignoreExtensionDataObject,
-                               preserveObjectReferences,
-                               dataContractSurrogate);
-               }
-
-               public DataContractSerializer (Type type,
-                       IEnumerable<Type> knownTypes,
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate,
-                       DataContractResolver dataContractResolver)
-                       : this (type, knownTypes, maxObjectsInGraph, ignoreExtensionDataObject, preserveObjectReferences, dataContractSurrogate)
-               {
-                       DataContractResolver = dataContractResolver;
-               }
-
-               public DataContractSerializer (Type type,
-                       string rootName,
-                       string rootNamespace,
-                       IEnumerable<Type> knownTypes,
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate,
-                       DataContractResolver dataContractResolver)
-                       : this (type, rootName, rootNamespace, knownTypes, maxObjectsInGraph, ignoreExtensionDataObject, preserveObjectReferences, dataContractSurrogate)
-               {
-                       DataContractResolver = dataContractResolver;
-               }
-
-               public DataContractSerializer (Type type,
-                       XmlDictionaryString rootName,
-                       XmlDictionaryString rootNamespace,
-                       IEnumerable<Type> knownTypes,
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate,
-                       DataContractResolver dataContractResolver)
-                       : this (type, rootName, rootNamespace, knownTypes, maxObjectsInGraph, ignoreExtensionDataObject, preserveObjectReferences, dataContractSurrogate)
-               {
-                       DataContractResolver = dataContractResolver;
-               }
-
-               public DataContractSerializer (Type type, DataContractSerializerSettings settings)
-                       : this (type, settings.RootName, settings.RootNamespace, settings.KnownTypes,
-                               settings.MaxItemsInObjectGraph, settings.IgnoreExtensionDataObject,
-                               settings.PreserveObjectReferences, settings.DataContractSurrogate,
-                               settings.DataContractResolver)
-               {
-               }
-
-               void PopulateTypes (IEnumerable<Type> knownTypes)
-               {
-                       if (known_types == null)
-                               known_types = new KnownTypeCollection ();
-
-                       if (specified_known_types == null)
-                               specified_known_types = new List<Type> ();
-
-                       if (knownTypes != null) {
-                               foreach (Type t in knownTypes) {
-                                       known_types.Add (t);
-                                       specified_known_types.Add (t);
-                               }
-                       }
-
-                       RegisterTypeAsKnown (type);
-               }
-
-               void RegisterTypeAsKnown (Type type)
-               {
-                       if (known_types.Contains (type))
-                               return;
-
-                       Type elementType = type;
-                       if (type.HasElementType) {
-                               known_types.Add (type);
-                               elementType = type.GetElementType ();
-                       }
-
-                       known_types.Add (elementType);
-
-                       /* Get all KnownTypeAttribute-s, including inherited ones */
-                       object [] attrs = elementType.GetCustomAttributes (typeof (KnownTypeAttribute), true);
-                       for (int i = 0; i < attrs.Length; i ++) {
-                               KnownTypeAttribute kt = (KnownTypeAttribute) attrs [i];
-                               foreach (var t in kt.GetTypes (elementType))
-                                       RegisterTypeAsKnown (t);
-                       }
-               }
-
-               void FillDictionaryString (string name, string ns)
-               {
-                       XmlDictionary d = new XmlDictionary ();
-                       root_name = d.Add (name);
-                       root_ns = d.Add (ns);
-                       names_filled = true;
-               }
-
-               void Initialize (
-                       int maxObjectsInGraph,
-                       bool ignoreExtensionDataObject,
-                       bool preserveObjectReferences,
-                       IDataContractSurrogate dataContractSurrogate)
-               {
-                       if (maxObjectsInGraph < 0)
-                               throw new ArgumentOutOfRangeException ("maxObjectsInGraph must not be negative.");
-                       max_items = maxObjectsInGraph;
-                       ignore_ext = ignoreExtensionDataObject;
-                       preserve_refs = preserveObjectReferences;
-                       surrogate = dataContractSurrogate;
-               }
-
-               public
-               DataContractResolver DataContractResolver {
-                       get { return resolver; }
-                       private set {
-                               resolver = value;
-                               default_resolver = default_resolver ?? new DefaultDataContractResolver (this);
-                       }
-               }
-
-               public bool IgnoreExtensionDataObject {
-                       get { return ignore_ext; }
-               }
-
-               public ReadOnlyCollection<Type> KnownTypes {
-                       get {
-                               if (returned_known_types == null)
-                                       returned_known_types = new ReadOnlyCollection<Type> (specified_known_types);
-                               return returned_known_types;
-                       }
-               }
-
-               internal KnownTypeCollection InternalKnownTypes {
-                       get { return known_types; }
-               }
-
-               public IDataContractSurrogate DataContractSurrogate {
-                       get { return surrogate; }
-               }
-
-               public int MaxItemsInObjectGraph {
-                       get { return max_items; }
-               }
-
-               public bool PreserveObjectReferences {
-                       get { return preserve_refs; }
-               }
-
-               public override bool IsStartObject (XmlDictionaryReader reader)
-               {
-                       if (reader == null)
-                               throw new ArgumentNullException ("reader");
-                       reader.MoveToContent ();
-                       return reader.IsStartElement (root_name, root_ns);
-               }
-
-               // SP1
-               public override bool IsStartObject (XmlReader reader)
-               {
-                       return IsStartObject (XmlDictionaryReader.CreateDictionaryReader (reader));
-               }
-
-               // SP1
-               public override object ReadObject (XmlReader reader)
-               {
-                       return ReadObject (XmlDictionaryReader.CreateDictionaryReader (reader));
-               }
-
-               public override object ReadObject (XmlReader reader, bool verifyObjectName)
-               {
-                       return ReadObject (XmlDictionaryReader.CreateDictionaryReader (reader), verifyObjectName);
-               }
-
-               public override object ReadObject (XmlDictionaryReader reader, bool verifyObjectName)
-               {
-                       int startTypeCount = known_types.Count;
-                       known_types.Add (type);
-
-                       bool isEmpty = reader.IsEmptyElement;
-
-                       object ret = XmlFormatterDeserializer.Deserialize (reader, type,
-                               known_types, surrogate, DataContractResolver, default_resolver, root_name.Value, root_ns.Value, verifyObjectName);
-
-                       // remove temporarily-added known types for
-                       // rootType and object graph type.
-                       while (known_types.Count > startTypeCount)
-                               known_types.RemoveAt (startTypeCount);
-
-                       return ret;
-               }
-
-               public object ReadObject (XmlDictionaryReader reader, bool verifyObjectName, DataContractResolver resolver)
-               {
-                       var bak = DataContractResolver;
-                       try {
-                               DataContractResolver = resolver;
-                               return ReadObject (reader, verifyObjectName);
-                       } finally {
-                               DataContractResolver = bak;
-                       }
-               }
-
-               // SP1
-               public override void WriteObject (XmlWriter writer, object graph)
-               {
-                       XmlDictionaryWriter w = XmlDictionaryWriter.CreateDictionaryWriter (writer);
-                       WriteObject (w, graph);
-               }
-
-               public void WriteObject (XmlDictionaryWriter writer, object graph, DataContractResolver resolver)
-               {
-                       var bak = DataContractResolver;
-                       try {
-                               DataContractResolver = resolver;
-                               WriteObject (writer, graph);
-                       } finally {
-                               DataContractResolver = bak;
-                       }
-               }
-
-               [MonoTODO ("use DataContractSurrogate")]
-               /*
-                       when writeContentOnly is true, then the input XmlWriter
-                       must be at element state. This is to write possible
-                       xsi:nil.
-
-                       rootType determines the top-level element QName (thus
-                       it is ignored when writeContentOnly is true).
-
-                       preserveObjectReferences indicates that whether the
-                       output should contain ms:Id or not.
-                       (http://schemas.microsoft.com/2003/10/Serialization/)
-               */
-               public override void WriteObjectContent (XmlDictionaryWriter writer, object graph)
-               {
-                       if (graph == null)
-                               return;
-
-                       int startTypeCount = known_types.Count;
-
-                       XmlFormatterSerializer.Serialize (writer, graph,
-                               type, known_types,
-                               ignore_ext, max_items, root_ns.Value, preserve_refs, DataContractResolver, default_resolver);
-
-                       // remove temporarily-added known types for
-                       // rootType and object graph type.
-                       while (known_types.Count > startTypeCount)
-                               known_types.RemoveAt (startTypeCount);
-               }
-
-               public override void WriteObjectContent (XmlWriter writer, object graph)
-               {
-                       XmlDictionaryWriter w = XmlDictionaryWriter.CreateDictionaryWriter (writer);
-                       WriteObjectContent (w, graph);
-               }
-
-               // SP1
-               public override void WriteStartObject (
-                       XmlWriter writer, object graph)
-               {
-                       WriteStartObject (XmlDictionaryWriter.CreateDictionaryWriter (writer), graph);
-               }
-
-               public override void WriteStartObject (
-                       XmlDictionaryWriter writer, object graph)
-               {
-                       Type rootType = type;
-
-                       if (IsAny())
-                               return;
-
-                       if (root_name.Value == "")
-                               throw new InvalidDataContractException ("Type '" + type.ToString () +
-                                       "' cannot have a DataContract attribute Name set to null or empty string.");
-
-                       if (graph == null) {
-                               if (names_filled)
-                                       writer.WriteStartElement (root_name.Value, root_ns.Value);
-                               else
-                                       writer.WriteStartElement (root_name, root_ns);
-                               writer.WriteAttributeString ("i", "nil", XmlSchema.InstanceNamespace, "true");
-                               return;
-                       }
-
-                       QName rootQName = null;
-                       XmlDictionaryString name, ns;
-                       var graphType = graph.GetType ();
-                       if (DataContractResolver != null && DataContractResolver.TryResolveType (graphType, type, default_resolver, out name, out ns))
-                               rootQName = new QName (name.Value, ns.Value);
-
-                       // It is error unless 1) TypeResolver resolved the type name, 2) the object is the exact type, 3) the object is known or 4) the type is primitive.
-
-                       QName collectionQName;
-                       if (KnownTypeCollection.IsInterchangeableCollectionType (type, graphType, out collectionQName)) {
-                               graphType = type;
-                               rootQName = collectionQName;
-                       } else if (graphType != type && rootQName == null && IsUnknownType (type, graphType))
-                               throw new SerializationException (String.Format ("Type '{0}' is unexpected. The type should either be registered as a known type, or DataContractResolver should be used.", graphType));
-
-                       QName instName = rootQName;
-                       rootQName = rootQName ?? known_types.GetQName (rootType);
-                       QName graph_qname = known_types.GetQName (graphType);
-
-                       known_types.Add (graphType);
-
-                       if (names_filled)
-                               writer.WriteStartElement (root_name.Value, root_ns.Value);
-                       else
-                               writer.WriteStartElement (root_name, root_ns);
-
-                       if (rootQName != graph_qname || rootQName.Namespace != KnownTypeCollection.MSSimpleNamespace && !rootType.IsEnum)
-                               //FIXME: Hack, when should the "i:type" be written?
-                               //Not used in case of enums
-                               writer.WriteXmlnsAttribute ("i", XmlSchema.InstanceNamespace);
-
-                       if (root_ns.Value != rootQName.Namespace)
-                               if (rootQName.Namespace != KnownTypeCollection.MSSimpleNamespace)
-                                       writer.WriteXmlnsAttribute (null, rootQName.Namespace);
-
-                       if (rootQName == graph_qname)
-                               return;
-
-                       /* Different names */
-                       known_types.Add (rootType);
-
-                       instName = instName ?? KnownTypeCollection.GetPredefinedTypeName (graphType);
-                       if (instName == QName.Empty)
-                               /* Not a primitive type */
-                               instName = graph_qname;
-                       else
-                               /* FIXME: Hack, .. see test WriteObject7 () */
-                               instName = new QName (instName.Name, XmlSchema.Namespace);
-
-/* // disabled as it now generates extraneous i:type output.
-                       // output xsi:type as rootType is not equivalent to the graph's type.
-                       writer.WriteStartAttribute ("i", "type", XmlSchema.InstanceNamespace);
-                       writer.WriteQualifiedName (instName.Name, instName.Namespace);
-                       writer.WriteEndAttribute ();
-*/
-               }
-
-               bool IsUnknownType (Type contractType, Type type)
-               {
-                       if (type.IsArray) {
-                               if (KnownTypeCollection.GetAttribute<CollectionDataContractAttribute> (contractType) != null ||
-                                   KnownTypeCollection.GetAttribute<DataContractAttribute> (contractType) != null)
-                                       return true;
-                       }
-                       return IsUnknownType (type);
-               }
-
-               bool IsUnknownType (Type type)
-               {
-                       if (known_types.Contains (type) ||
-                           KnownTypeCollection.GetPrimitiveTypeName (type) != QName.Empty)
-                               return false;
-                       if (type.IsArray)
-                               return IsUnknownType (type.GetElementType ());
-                       return true;
-               }
-
-               public override void WriteEndObject (XmlDictionaryWriter writer)
-               {
-                       if (IsAny())
-                               return;
-
-                       writer.WriteEndElement ();
-               }
-
-               // SP1
-               public override void WriteEndObject (XmlWriter writer)
-               {
-                       WriteEndObject (XmlDictionaryWriter.CreateDictionaryWriter (writer));
-               }
-
-               [MonoTODO]
-               public bool SerializeReadOnlyTypes {
-                       get { throw new NotImplementedException (); }
-               }
-
-               private bool IsAny ()
-               {
-                       var xpa = type.GetCustomAttribute<XmlSchemaProviderAttribute> (true);
-
-                       if (xpa != null)
-                               return xpa.IsAny;
-
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializerSettings.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataContractSerializerSettings.cs
deleted file mode 100644 (file)
index 18a78e1..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// DataContractJsonSerializerSettings.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Xml;
-using System.Collections.Generic;
-
-namespace System.Runtime.Serialization {
-       public class DataContractSerializerSettings {
-               public DataContractResolver DataContractResolver { get; set; }
-               public IDataContractSurrogate DataContractSurrogate { get; set; }
-               public bool IgnoreExtensionDataObject { get; set; }
-               public IEnumerable<Type> KnownTypes { get; set; }
-               public int MaxItemsInObjectGraph { get; set; }
-               public bool PreserveObjectReferences { get; set; }
-               public XmlDictionaryString RootName { get; set; }
-               public XmlDictionaryString RootNamespace { get; set; }
-               public bool SerializeReadOnlyTypes { get; set; }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataMemberAttribute.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DataMemberAttribute.cs
deleted file mode 100644 (file)
index be38301..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// DataMemberAttribute.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.Serialization
-{
-       [AttributeUsage (AttributeTargets.Property | AttributeTargets.Field,
-               Inherited = false, AllowMultiple = false)]
-       public sealed class DataMemberAttribute : Attribute
-       {
-               bool is_required;
-               bool emit_default = true;
-               string name;
-               int order = -1;
-
-               public DataMemberAttribute ()
-               {
-               }
-
-               public bool EmitDefaultValue {
-                       get { return emit_default; }
-                       set { emit_default = value; }
-               }
-
-               public bool IsRequired {
-                       get { return is_required; }
-                       set { is_required = value; }
-               }
-
-               public string Name {
-                       get { return name; }
-                       set { name = value; }
-               }
-
-               public int Order {
-                       get { return order; }
-                       set { order = value; }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DateTimeFormat.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/DateTimeFormat.cs
deleted file mode 100644 (file)
index a6dc358..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Authors:
-//      Martin Baulig (martin.baulig@xamarin.com)
-//
-// Copyright 2012 Xamarin Inc. (http://www.xamarin.com)
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Globalization;
-
-namespace System.Runtime.Serialization {
-       [MonoTODO]
-       public class DateTimeFormat {
-               public DateTimeFormat (string formatString)
-               {
-                       throw new InvalidOperationException ();
-               }
-               
-               public DateTimeFormat (string formatString, IFormatProvider formatProvider)
-               {
-                       throw new InvalidOperationException ();
-               }
-               
-               public DateTimeStyles DateTimeStyles {
-                       get { throw new InvalidOperationException (); }
-                       set { throw new InvalidOperationException (); }
-               }
-
-               public IFormatProvider FormatProvider {
-                       get { throw new InvalidOperationException (); }
-               }
-
-               public string FormatString {
-                       get { throw new InvalidOperationException (); }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/EmitTypeInformation.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/EmitTypeInformation.cs
deleted file mode 100644 (file)
index 289dd5e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// IgnoreList.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-namespace System.Runtime.Serialization {
-       public enum EmitTypeInformation {
-               AsNeeded,
-               Always,
-               Never
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/EnumMemberAttribute.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/EnumMemberAttribute.cs
deleted file mode 100644 (file)
index 491eefb..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// EnumMemberAttribute.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.Serialization
-{
-       [AttributeUsage (AttributeTargets.Field,
-               Inherited = false, AllowMultiple = false)]
-       public sealed class EnumMemberAttribute : Attribute
-       {
-               string value;
-
-               public EnumMemberAttribute ()
-               {
-               }
-
-               public string Value {
-                       get { return value; }
-                       set { this.value = value; }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ExportOptions.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ExportOptions.cs
deleted file mode 100644 (file)
index 1067da2..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// ExportOptions.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Collections.ObjectModel;
-
-namespace System.Runtime.Serialization
-{
-       public class ExportOptions
-       {
-               IDataContractSurrogate surrogate;
-               const KnownTypeCollection known_types = null;
-
-               public ExportOptions ()
-               {
-               }
-
-               public IDataContractSurrogate DataContractSurrogate {
-                       get { return surrogate; }
-                       set { surrogate = value; }
-               }
-
-               [MonoTODO]
-               public Collection<Type> KnownTypes {
-                       get { return known_types; }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ExtensionDataObject.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ExtensionDataObject.cs
deleted file mode 100644 (file)
index faf07ef..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// ExtensionDataObject.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.ObjectModel;
-
-namespace System.Runtime.Serialization
-{
-       public sealed class ExtensionDataObject
-       {
-               object target;
-
-               internal ExtensionDataObject (object target)
-               {
-                       this.target = target;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IDataContractSurrogate.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IDataContractSurrogate.cs
deleted file mode 100644 (file)
index 94ae63d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// IDataContractSurrogate.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.CodeDom;
-using System.Collections.ObjectModel;
-using System.Reflection;
-
-namespace System.Runtime.Serialization
-{
-       public interface IDataContractSurrogate
-       {
-               object GetCustomDataToExport (MemberInfo memberInfo,
-                       Type dataContractType);
-               object GetCustomDataToExport (Type clrType,
-                       Type dataContractType);
-
-               Type GetDataContractType (Type type);
-
-               object GetDeserializedObject (object obj, Type targetType);
-
-               void GetKnownCustomDataTypes (Collection<Type> customDataTypes);
-
-               object GetObjectToSerialize (object obj, Type targetType);
-#if !NET_2_1
-               Type GetReferencedTypeOnImport (string typeName,
-                       string typeNamespace, object customData);
-
-               CodeTypeDeclaration ProcessImportedType (
-                       CodeTypeDeclaration typeDeclaration,
-                       CodeCompileUnit compileUnit);
-#endif
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IExtensibleDataObject.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IExtensibleDataObject.cs
deleted file mode 100644 (file)
index bc1b0f5..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// IExtensibleDataObject.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.Serialization
-{
-       public interface IExtensibleDataObject
-       {
-               ExtensionDataObject ExtensionData { get; set; }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IgnoreDataMemberAttribute.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/IgnoreDataMemberAttribute.cs
deleted file mode 100644 (file)
index 9302632..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IgnoreDataMemberAttribute.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2009 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.Serialization
-{
-       [AttributeUsage (AttributeTargets.Property | AttributeTargets.Field,
-               Inherited = false, AllowMultiple = false)]
-       public sealed class IgnoreDataMemberAttribute : Attribute
-       {
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ImportOptions.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ImportOptions.cs
deleted file mode 100644 (file)
index 6ddc6e3..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// ImportOptions.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.CodeDom.Compiler;
-using System.Collections.Generic;
-
-namespace System.Runtime.Serialization
-{
-       public class ImportOptions
-       {
-               IDataContractSurrogate surrogate;
-               ICollection<Type> referenced_collection_types =
-                       new List<Type> ();
-               ICollection<Type> referenced_types = new List<Type> ();
-               bool enable_data_binding;
-               bool generate_internal;
-               bool generate_serializable;
-               bool import_xml_type;
-               IDictionary<string, string> namespaces =
-                       new Dictionary<string, string> ();
-               CodeDomProvider code_provider;
-
-               public ImportOptions ()
-               {
-               }
-
-               public CodeDomProvider CodeProvider {
-                       get { return code_provider; }
-                       set { code_provider = value; }
-               }
-
-               [MonoTODO]
-               public IDataContractSurrogate DataContractSurrogate {
-                       get { return surrogate; }
-                       set { surrogate = value; }
-               }
-
-               [MonoTODO]
-               public bool EnableDataBinding {
-                       get { return enable_data_binding; }
-                       set { enable_data_binding = value; }
-               }
-
-               public bool GenerateInternal {
-                       get { return generate_internal; }
-                       set { generate_internal = value; }
-               }
-
-               public bool GenerateSerializable {
-                       get { return generate_serializable; }
-                       set { generate_serializable = value; }
-               }
-
-               [MonoTODO]
-               public bool ImportXmlType {
-                       get { return import_xml_type; }
-                       set { import_xml_type = value; }
-               }
-
-               public IDictionary<string, string> Namespaces {
-                       get { return namespaces; }
-               }
-
-               [MonoTODO]
-               public ICollection<Type> ReferencedCollectionTypes {
-                       get { return referenced_collection_types; }
-               }
-
-               [MonoTODO]
-               public ICollection<Type> ReferencedTypes {
-                       get { return referenced_types; }
-               }
-       }
-}
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/InvalidDataContractException.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/InvalidDataContractException.cs
deleted file mode 100644 (file)
index bbd9e11..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// InvalidDataContractException.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Xml;
-
-namespace System.Runtime.Serialization
-{
-       [Serializable]
-       public class InvalidDataContractException : Exception
-       {
-               public InvalidDataContractException ()
-                       : base ()
-               {
-               }
-
-               public InvalidDataContractException (string message)
-                       : base (message)
-               {
-               }
-
-               protected InvalidDataContractException (SerializationInfo info,
-                       StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               public InvalidDataContractException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeAttribute.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeAttribute.cs
deleted file mode 100644 (file)
index 4ab8d1f..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// KnownTypeAttribute.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace System.Runtime.Serialization
-{
-       [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct,
-               Inherited = true, AllowMultiple = true)]
-       public sealed class KnownTypeAttribute : Attribute
-       {
-               string method_name;
-               Type type;
-
-               public KnownTypeAttribute (string methodName)
-               {
-                       if (methodName == null)
-                               throw new ArgumentNullException ("methodName");
-                       method_name = methodName;
-               }
-
-               public KnownTypeAttribute (Type type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       this.type = type;
-               }
-
-               public string MethodName {
-                       get { return method_name; }
-               }
-
-               public Type Type {
-                       get { return type; }
-               }
-
-               MethodInfo method_cache;
-
-               internal IEnumerable<Type> GetTypes (Type type)
-               {
-                       if (method_cache != null)
-                               return (IEnumerable<Type>) method_cache.Invoke (null, new object [0]);
-
-                       if (Type != null)
-                               return new Type [] {Type};
-                       else {
-                               var mi = type.GetMethod (MethodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static, null, Type.EmptyTypes, null);
-                               if (mi == null)
-                                       throw new InvalidDataContractException (String.Format ("KnownTypeAttribute on {0} specifies '{1}' method, but that does not exist. The methos must be static.", type, MethodName));
-                               if (!typeof (IEnumerable<Type>).IsAssignableFrom (mi.ReturnType))
-                                       throw new InvalidDataContractException (String.Format ("KnownTypeAttribute on {0} specifies '{1}' method, but it returns {2} which cannot be assignable from IEnumerable<Type>.", type, MethodName, mi.ReturnType));
-                               method_cache = mi;
-                               return GetTypes (type);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/KnownTypeCollection.cs
deleted file mode 100755 (executable)
index 702e7f3..0000000
+++ /dev/null
@@ -1,1067 +0,0 @@
-//
-// KnownTypeCollection.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-
-using QName = System.Xml.XmlQualifiedName;
-using System.Xml.Serialization;
-
-namespace System.Runtime.Serialization
-{
-/*
-       XmlFormatter implementation design inference:
-
-       type definitions:
-       - No XML Schema types are directly used. There are some maps from
-         xs:blahType to ms:blahType where the namespaceURI for prefix "ms" is
-         "http://schemas.microsoft.com/2003/10/Serialization/" .
-
-       serializable types:
-       - An object being serialized 1) must be of type System.Object, or
-         2) must be null, or 3) must have either a [DataContract] attribute
-         or a [Serializable] attribute to be serializable.
-       - When the object is either of type System.Object or null, then the
-         XML type is "anyType".
-       - When the object is [Serializable], then the runtime-serialization
-         compatible object graph is written.
-       - Otherwise the serialization is based on contract attributes.
-         ([Serializable] takes precedence).
-
-       type derivation:
-       - For type A to be serializable, the base type B of A must be
-         serializable.
-       - If a type which is [Serializable] and whose base type has a
-         [DataContract], then for base type members [DataContract] is taken.
-       - It is vice versa i.e. if the base type is [Serializable] and the
-         derived type has a [DataContract], then [Serializable] takes place
-         for base members.
-
-       known type collection:
-       - It internally manages mapping store keyed by contract QNames.
-         KnownTypeCollection.Add() checks if the same QName contract already
-         exists (and raises InvalidOperationException if required).
-
-*/
-
-       internal static class TypeExtensions
-       {
-               public static IEnumerable<Type> GetInterfacesOrSelfInterface (this Type type)
-               {
-                       if (type.IsInterface)
-                               yield return type;
-                       foreach (var t in type.GetInterfaces ())
-                               yield return t;
-               }
-
-               public static bool ImplementsInterface (this Type type, Type iface)
-               {
-                       foreach (var t in type.GetInterfacesOrSelfInterface ()) {
-                               if (t == iface)
-                                       return true;
-                       }
-
-                       var baseType = type.BaseType;
-                       if (baseType != null)
-                               return baseType.ImplementsInterface (iface);
-                       
-                       return false;
-               }
-       }
-
-       internal sealed class KnownTypeCollection : Collection<Type>
-       {
-               internal const string MSSimpleNamespace =
-                       "http://schemas.microsoft.com/2003/10/Serialization/";
-               internal const string MSArraysNamespace =
-                       "http://schemas.microsoft.com/2003/10/Serialization/Arrays";
-               internal const string DefaultClrNamespaceBase =
-                       "http://schemas.datacontract.org/2004/07/";
-               internal const string DefaultClrNamespaceSystem =
-                       "http://schemas.datacontract.org/2004/07/System";
-
-
-               static QName any_type, bool_type,
-                       byte_type, date_type, decimal_type, double_type,
-                       float_type, string_type,
-                       short_type, int_type, long_type,
-                       ubyte_type, ushort_type, uint_type, ulong_type,
-                       // non-TypeCode
-                       any_uri_type, base64_type, duration_type, qname_type,
-                       // custom in ms nsURI schema
-                       char_type, guid_type,
-                       // not in ms nsURI schema
-                       dbnull_type, date_time_offset_type;
-
-               // XmlSchemaType.GetBuiltInPrimitiveType() does not exist in moonlight, so I had to explicitly add them. And now that we have it, it does not make much sense to use #if MOONLIGHT ... #endif for XmlSchemaType anymore :-(
-               static Dictionary<string,Type> xs_predefined_types = new Dictionary<string,Type> ();
-
-               static KnownTypeCollection ()
-               {
-                       string s = MSSimpleNamespace;
-                       any_type = new QName ("anyType", s);
-                       any_uri_type = new QName ("anyURI", s);
-                       bool_type = new QName ("boolean", s);
-                       base64_type = new QName ("base64Binary", s);
-                       date_type = new QName ("dateTime", s);
-                       duration_type = new QName ("duration", s);
-                       qname_type = new QName ("QName", s);
-                       decimal_type = new QName ("decimal", s);
-                       double_type = new QName ("double", s);
-                       float_type = new QName ("float", s);
-                       byte_type = new QName ("byte", s);
-                       short_type = new QName ("short", s);
-                       int_type = new QName ("int", s);
-                       long_type = new QName ("long", s);
-                       ubyte_type = new QName ("unsignedByte", s);
-                       ushort_type = new QName ("unsignedShort", s);
-                       uint_type = new QName ("unsignedInt", s);
-                       ulong_type = new QName ("unsignedLong", s);
-                       string_type = new QName ("string", s);
-                       guid_type = new QName ("guid", s);
-                       char_type = new QName ("char", s);
-
-                       dbnull_type = new QName ("DBNull", DefaultClrNamespaceBase + "System");
-                       date_time_offset_type = new QName ("DateTimeOffset", DefaultClrNamespaceBase + "System");
-
-                       xs_predefined_types.Add ("string", typeof (string));
-                       xs_predefined_types.Add ("boolean", typeof (bool));
-                       xs_predefined_types.Add ("float", typeof (float));
-                       xs_predefined_types.Add ("double", typeof (double));
-                       xs_predefined_types.Add ("decimal", typeof (decimal));
-                       xs_predefined_types.Add ("duration", typeof (TimeSpan));
-                       xs_predefined_types.Add ("dateTime", typeof (DateTime));
-                       xs_predefined_types.Add ("date", typeof (DateTime));
-                       xs_predefined_types.Add ("time", typeof (DateTime));
-                       xs_predefined_types.Add ("gYearMonth", typeof (DateTime));
-                       xs_predefined_types.Add ("gYear", typeof (DateTime));
-                       xs_predefined_types.Add ("gMonthDay", typeof (DateTime));
-                       xs_predefined_types.Add ("gDay", typeof (DateTime));
-                       xs_predefined_types.Add ("gMonth", typeof (DateTime));
-                       xs_predefined_types.Add ("hexBinary", typeof (byte []));
-                       xs_predefined_types.Add ("base64Binary", typeof (byte []));
-                       xs_predefined_types.Add ("anyURI", typeof (Uri));
-                       xs_predefined_types.Add ("QName", typeof (QName));
-                       xs_predefined_types.Add ("NOTATION", typeof (string));
-
-                       xs_predefined_types.Add ("normalizedString", typeof (string));
-                       xs_predefined_types.Add ("token", typeof (string));
-                       xs_predefined_types.Add ("language", typeof (string));
-                       xs_predefined_types.Add ("IDREFS", typeof (string []));
-                       xs_predefined_types.Add ("ENTITIES", typeof (string []));
-                       xs_predefined_types.Add ("NMTOKEN", typeof (string));
-                       xs_predefined_types.Add ("NMTOKENS", typeof (string []));
-                       xs_predefined_types.Add ("Name", typeof (string));
-                       xs_predefined_types.Add ("NCName", typeof (string));
-                       xs_predefined_types.Add ("ID", typeof (string));
-                       xs_predefined_types.Add ("IDREF", typeof (string));
-                       xs_predefined_types.Add ("ENTITY", typeof (string));
-
-                       xs_predefined_types.Add ("integer", typeof (decimal));
-                       xs_predefined_types.Add ("nonPositiveInteger", typeof (int));
-                       xs_predefined_types.Add ("negativeInteger", typeof (int));
-                       xs_predefined_types.Add ("long", typeof (long));
-                       xs_predefined_types.Add ("int", typeof (int));
-                       xs_predefined_types.Add ("short", typeof (short));
-                       xs_predefined_types.Add ("byte", typeof (sbyte));
-                       xs_predefined_types.Add ("nonNegativeInteger", typeof (decimal));
-                       xs_predefined_types.Add ("unsignedLong", typeof (ulong));
-                       xs_predefined_types.Add ("unsignedInt", typeof (uint));
-                       xs_predefined_types.Add ("unsignedShort", typeof (ushort));
-                       xs_predefined_types.Add ("unsignedByte", typeof (byte));
-                       xs_predefined_types.Add ("positiveInteger", typeof (decimal));
-
-                       xs_predefined_types.Add ("anyType", typeof (object));
-               }
-
-               // FIXME: find out how QName and guid are processed
-
-               internal QName GetXmlName (Type type)
-               {
-                       SerializationMap map = FindUserMap (type);
-                       if (map != null)
-                               return map.XmlName;
-                       return GetPredefinedTypeName (type);
-               }
-
-               internal static QName GetPredefinedTypeName (Type type)
-               {
-                       QName name = GetPrimitiveTypeName (type);
-                       if (name != QName.Empty)
-                               return name;
-                       if (type == typeof (DBNull))
-                               return dbnull_type;
-                       return QName.Empty;
-               }
-
-               internal static QName GetPrimitiveTypeName (Type type)
-               {
-                       if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>))
-                               return GetPrimitiveTypeName (type.GetGenericArguments () [0]);
-
-                       if (type.IsEnum)
-                               return QName.Empty;
-
-                       switch (Type.GetTypeCode (type)) {
-                       case TypeCode.Object: // other than System.Object
-                       case TypeCode.DBNull: // it is natively mapped, but not in ms serialization namespace.
-                       case TypeCode.Empty:
-                       default:
-                               if (type == typeof (object))
-                                       return any_type;
-                               if (type == typeof (Guid))
-                                       return guid_type;
-                               if (type == typeof (TimeSpan))
-                                       return duration_type;
-                               if (type == typeof (byte []))
-                                       return base64_type;
-                               if (type == typeof (Uri))
-                                       return any_uri_type;
-                               if (type == typeof (DateTimeOffset))
-                                       return date_time_offset_type;
-                               return QName.Empty;
-                       case TypeCode.Boolean:
-                               return bool_type;
-                       case TypeCode.Byte:
-                               return ubyte_type;
-                       case TypeCode.Char:
-                               return char_type;
-                       case TypeCode.DateTime:
-                               return date_type;
-                       case TypeCode.Decimal:
-                               return decimal_type;
-                       case TypeCode.Double:
-                               return double_type;
-                       case TypeCode.Int16:
-                               return short_type;
-                       case TypeCode.Int32:
-                               return int_type;
-                       case TypeCode.Int64:
-                               return long_type;
-                       case TypeCode.SByte:
-                               return byte_type;
-                       case TypeCode.Single:
-                               return float_type;
-                       case TypeCode.String:
-                               return string_type;
-                       case TypeCode.UInt16:
-                               return ushort_type;
-                       case TypeCode.UInt32:
-                               return uint_type;
-                       case TypeCode.UInt64:
-                               return ulong_type;
-                       }
-               }
-
-               internal static string PredefinedTypeObjectToString (object obj)
-               {
-                       Type type = obj.GetType ();
-                       switch (Type.GetTypeCode (type)) {
-                       case TypeCode.Object: // other than System.Object
-                       case TypeCode.Empty:
-                       default:
-                               if (type == typeof (object))
-                                       return String.Empty;
-                               if (type == typeof (Guid))
-                                       return XmlConvert.ToString ((Guid) obj);
-                               if (type == typeof (TimeSpan))
-                                       return XmlConvert.ToString ((TimeSpan) obj);
-                               if (type == typeof (byte []))
-                                       return Convert.ToBase64String ((byte []) obj);
-                               if (type == typeof (Uri))
-                                       return ((Uri) obj).ToString ();
-                               throw new Exception ("Internal error: missing predefined type serialization for type " + type.FullName);
-                       case TypeCode.DBNull: // predefined, but not primitive
-                               return String.Empty;
-                       case TypeCode.Boolean:
-                               return XmlConvert.ToString ((bool) obj);
-                       case TypeCode.Byte:
-                               return XmlConvert.ToString ((int)((byte) obj));
-                       case TypeCode.Char:
-                               return XmlConvert.ToString ((uint) (char) obj);
-                       case TypeCode.DateTime:
-                               return XmlConvert.ToString ((DateTime) obj, XmlDateTimeSerializationMode.RoundtripKind);
-                       case TypeCode.Decimal:
-                               return XmlConvert.ToString ((decimal) obj);
-                       case TypeCode.Double:
-                               return XmlConvert.ToString ((double) obj);
-                       case TypeCode.Int16:
-                               return XmlConvert.ToString ((short) obj);
-                       case TypeCode.Int32:
-                               return XmlConvert.ToString ((int) obj);
-                       case TypeCode.Int64:
-                               return XmlConvert.ToString ((long) obj);
-                       case TypeCode.SByte:
-                               return XmlConvert.ToString ((sbyte) obj);
-                       case TypeCode.Single:
-                               return XmlConvert.ToString ((float) obj);
-                       case TypeCode.String:
-                               return (string) obj;
-                       case TypeCode.UInt16:
-                               return XmlConvert.ToString ((int) (ushort) obj);
-                       case TypeCode.UInt32:
-                               return XmlConvert.ToString ((uint) obj);
-                       case TypeCode.UInt64:
-                               return XmlConvert.ToString ((ulong) obj);
-                       }
-               }
-
-               internal static Type GetPrimitiveTypeFromName (QName name)
-               {
-                       switch (name.Namespace) {
-                       case DefaultClrNamespaceSystem:
-                               switch (name.Name) {
-                               case "DBNull":
-                                       return typeof (DBNull);
-                               case "DateTimeOffset":
-                                       return typeof (DateTimeOffset);
-                               }
-                               break;
-                       case XmlSchema.Namespace:
-                               return xs_predefined_types.FirstOrDefault (p => p.Key == name.Name).Value;
-                       case MSSimpleNamespace:
-                               switch (name.Name) {
-                               case "anyURI":
-                                       return typeof (Uri);
-                               case "boolean":
-                                       return typeof (bool);
-                               case "base64Binary":
-                                       return typeof (byte []);
-                               case "dateTime":
-                                       return typeof (DateTime);
-                               case "duration":
-                                       return typeof (TimeSpan);
-                               case "QName":
-                                       return typeof (QName);
-                               case "decimal":
-                                       return typeof (decimal);
-                               case "double":
-                                       return typeof (double);
-                               case "float":
-                                       return typeof (float);
-                               case "byte":
-                                       return typeof (sbyte);
-                               case "short":
-                                       return typeof (short);
-                               case "int":
-                                       return typeof (int);
-                               case "long":
-                                       return typeof (long);
-                               case "unsignedByte":
-                                       return typeof (byte);
-                               case "unsignedShort":
-                                       return typeof (ushort);
-                               case "unsignedInt":
-                                       return typeof (uint);
-                               case "unsignedLong":
-                                       return typeof (ulong);
-                               case "string":
-                                       return typeof (string);
-                               case "anyType":
-                                       return typeof (object);
-                               case "guid":
-                                       return typeof (Guid);
-                               case "char":
-                                       return typeof (char);
-                               }
-                               break;
-                       }
-                       return null;
-               }
-
-
-               internal static object PredefinedTypeStringToObject (string s,
-                       string name, XmlReader reader)
-               {
-                       switch (name) {
-                       case "anyURI":
-                               return new Uri(s,UriKind.RelativeOrAbsolute);
-                       case "boolean":
-                               return XmlConvert.ToBoolean (s);
-                       case "base64Binary":
-                               return Convert.FromBase64String (s);
-                       case "dateTime":
-                               return XmlConvert.ToDateTime (s, XmlDateTimeSerializationMode.RoundtripKind);
-                       case "duration":
-                               return XmlConvert.ToTimeSpan (s);
-                       case "QName":
-                               int idx = s.IndexOf (':');
-                               string l = idx < 0 ? s : s.Substring (idx + 1);
-                               return idx < 0 ? new QName (l) :
-                                       new QName (l, reader.LookupNamespace (
-                                               s.Substring (0, idx)));
-                       case "decimal":
-                               return XmlConvert.ToDecimal (s);
-                       case "double":
-                               return XmlConvert.ToDouble (s);
-                       case "float":
-                               return XmlConvert.ToSingle (s);
-                       case "byte":
-                               return XmlConvert.ToSByte (s);
-                       case "short":
-                               return XmlConvert.ToInt16 (s);
-                       case "int":
-                               return XmlConvert.ToInt32 (s);
-                       case "long":
-                               return XmlConvert.ToInt64 (s);
-                       case "unsignedByte":
-                               return XmlConvert.ToByte (s);
-                       case "unsignedShort":
-                               return XmlConvert.ToUInt16 (s);
-                       case "unsignedInt":
-                               return XmlConvert.ToUInt32 (s);
-                       case "unsignedLong":
-                               return XmlConvert.ToUInt64 (s);
-                       case "string":
-                               return s;
-                       case "guid":
-                               return XmlConvert.ToGuid (s);
-                       case "anyType":
-                               return s;
-                       case "char":
-                               return (char) XmlConvert.ToUInt32 (s);
-                       default:
-                               throw new Exception ("Unanticipated primitive type: " + name);
-                       }
-               }
-
-               List<SerializationMap> contracts = new List<SerializationMap> ();
-
-               public KnownTypeCollection ()
-               {
-               }
-
-               protected override void ClearItems ()
-               {
-                       base.Clear ();
-               }
-
-               protected override void InsertItem (int index, Type type)
-               {
-                       if (ShouldNotRegister (type))
-                               return;
-                       if (!Contains (type)) {
-                               TryRegister (type);
-                               base.InsertItem (index, type);
-                       }
-               }
-
-               // FIXME: it could remove other types' dependencies.
-               protected override void RemoveItem (int index)
-               {
-                       lock (this)
-                               DoRemoveItem (index);
-               }
-
-               void DoRemoveItem (int index)
-               {
-                       Type t = base [index];
-                       List<SerializationMap> l = new List<SerializationMap> ();
-                       foreach (SerializationMap m in contracts) {
-                               if (m.RuntimeType == t)
-                                       l.Add (m);
-                       }
-                       foreach (SerializationMap m in l) {
-                               contracts.Remove (m);
-                               base.RemoveItem (index);
-                       }
-               }
-
-               protected override void SetItem (int index, Type type)
-               {
-                       if (ShouldNotRegister (type))
-                               return;
-
-                       // Since this collection is not assured to be ordered, it ignores the whole Set operation if the type already exists.
-                       if (Contains (type))
-                               return;
-
-                       if (index != Count)
-                               RemoveItem (index);
-                       if (TryRegister (type))
-                               base.InsertItem (index - 1, type);
-               }
-
-               internal SerializationMap FindUserMap (Type type)
-               {
-                       lock (this) {
-                               for (int i = 0; i < contracts.Count; i++)
-                                       if (type == contracts [i].RuntimeType)
-                                               return contracts [i];
-                               return null;
-                       }
-               }
-
-               internal SerializationMap FindUserMap (QName qname)
-               {
-                       lock (this)
-                               return contracts.FirstOrDefault (c => c.XmlName == qname);
-               }
-
-               internal SerializationMap FindUserMap (QName qname, Type type)
-               {
-                       lock (this)
-                               return contracts.FirstOrDefault (c => c.XmlName == qname && c.RuntimeType == type);
-               }
-
-               internal Type GetSerializedType (Type type)
-               {
-                       if (IsPrimitiveNotEnum (type))
-                               return type;
-                       Type element = GetCollectionElementType (type);
-                       if (element == null)
-                               return type;
-                       QName name = GetQName (type);
-                       var map = FindUserMap (name, type);
-                       if (map != null)
-                               return map.RuntimeType;
-                       return type;
-               }
-
-               internal QName GetQName (Type type)
-               {
-                       SerializationMap map = FindUserMap (type);
-                       if (map != null)
-                               // already mapped.
-                               return map.XmlName;
-                       return GetStaticQName (type);
-               }
-
-               public static QName GetStaticQName (Type type)
-               {
-                       if (IsPrimitiveNotEnum (type))
-                               return GetPrimitiveTypeName (type);
-
-                       if (type.IsEnum)
-                               return GetEnumQName (type);
-
-                       QName qname = GetContractQName (type);
-                       if (qname != null)
-                               return qname;
-
-                       if (type.GetInterface ("System.Xml.Serialization.IXmlSerializable") != null)
-                               //FIXME: Reusing GetSerializableQName here, since we just
-                               //need name of the type..
-                               return GetSerializableQName (type);
-
-                       qname = GetCollectionContractQName (type);
-                       if (qname != null)
-                               return qname;
-
-                       Type element = GetCollectionElementType (type);
-                       if (element != null) {
-                               if (type.IsInterface || IsCustomCollectionType (type, element))
-                                       return GetCollectionQName (element);
-                       }
-
-                       if (GetAttribute<SerializableAttribute> (type) != null)
-                               return GetSerializableQName (type);
-
-                       // default type map - still uses GetContractQName().
-                       return GetContractQName (type, null, null);
-               }
-
-               internal static QName GetContractQName (Type type)
-               {
-                       var a = GetAttribute<DataContractAttribute> (type);
-                       return a == null ? null : GetContractQName (type, a.Name, a.Namespace);
-               }
-
-               static QName GetCollectionContractQName (Type type)
-               {
-                       var a = GetAttribute<CollectionDataContractAttribute> (type);
-                       return a == null ? null : GetContractQName (type, a.Name, a.Namespace);
-               }
-
-               static QName GetContractQName (Type type, string name, string ns)
-               {
-                       if (name == null)
-                               name = GetDefaultName (type);
-                       else if (type.IsGenericType) {
-                               var args = type.GetGenericArguments ();
-                               for (int i = 0; i < args.Length; i++)
-                                       name = name.Replace ("{" + i + "}", GetStaticQName (args [i]).Name);
-                       }
-
-                       if (ns == null)
-                               ns = GetDefaultNamespace (type);
-                       return new QName (name, ns);
-               }
-
-               static QName GetEnumQName (Type type)
-               {
-                       string name = null, ns = null;
-
-                       if (!type.IsEnum)
-                               return null;
-
-                       var dca = GetAttribute<DataContractAttribute> (type);
-
-                       if (dca != null) {
-                               ns = dca.Namespace;
-                               name = dca.Name;
-                       }
-
-                       if (ns == null)
-                               ns = GetDefaultNamespace (type);
-
-                       if (name == null)
-                               name = type.Namespace == null ? type.Name : type.FullName.Substring (type.Namespace.Length + 1).Replace ('+', '.');
-
-                       return new QName (name, ns);
-               }
-
-               internal static string GetDefaultName (Type type)
-               {
-                       // FIXME: there could be decent ways to get
-                       // the same result...
-                       string name = type.Namespace == null || type.Namespace.Length == 0 ? type.Name : type.FullName.Substring (type.Namespace.Length + 1).Replace ('+', '.');
-                       if (type.IsGenericType) {
-                               name = name.Substring (0, name.IndexOf ('`')) + "Of";
-                               foreach (var t in type.GetGenericArguments ())
-                                       name += t.Name; // FIXME: check namespaces too
-                       }
-                       return name;
-               }
-
-               internal static string GetDefaultNamespace (Type type)
-               {
-                       foreach (ContractNamespaceAttribute a in type.Assembly.GetCustomAttributes (typeof (ContractNamespaceAttribute), true))
-                               if (a.ClrNamespace == type.Namespace)
-                                       return a.ContractNamespace;
-                       return DefaultClrNamespaceBase + type.Namespace;
-               }
-
-               static QName GetCollectionQName (Type element)
-               {
-                       QName eqname = GetStaticQName (element);
-
-                       string ns = eqname.Namespace;
-                       if (eqname.Namespace == MSSimpleNamespace)
-                               //Arrays of Primitive types
-                               ns = MSArraysNamespace;
-
-                       return new QName (
-                               "ArrayOf" + XmlConvert.EncodeLocalName (eqname.Name),
-                               ns);
-               }
-
-               static QName GetSerializableQName (Type type)
-               {
-                       // First, check XmlSchemaProviderAttribute and try GetSchema() to see if it returns a schema in the expected format.
-                       var xpa = type.GetCustomAttribute<XmlSchemaProviderAttribute> (true);
-                       if (xpa != null) {
-                               if (xpa.IsAny)
-                                       return XmlQualifiedName.Empty;
-                               var mi = type.GetMethod (xpa.MethodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
-                               if (mi != null) {
-                                       try {
-                                               var xss = new XmlSchemaSet ();
-                                               return (XmlQualifiedName) mi.Invoke (null, new object [] {xss});
-                                       } catch {
-                                               // ignore.
-                                       }
-                               }
-                       }
-
-                       string xmlName = type.Name;
-                       if (type.IsGenericType) {
-                               xmlName = xmlName.Substring (0, xmlName.IndexOf ('`')) + "Of";
-                               foreach (var t in type.GetGenericArguments ())
-                                       xmlName += GetStaticQName (t).Name; // FIXME: check namespaces too
-                       }
-                       string xmlNamespace = GetDefaultNamespace (type);
-                       var x = GetAttribute<XmlRootAttribute> (type);
-                       if (x != null) {
-                               xmlName = x.ElementName;
-                               xmlNamespace = x.Namespace;
-                       }
-                       return new QName (XmlConvert.EncodeLocalName (xmlName), xmlNamespace);
-               }
-
-               static bool IsPrimitiveNotEnum (Type type)
-               {
-                       if (type.IsEnum)
-                               return false;
-                       if (Type.GetTypeCode (type) != TypeCode.Object) // explicitly primitive
-                               return true;
-                       if (type == typeof (Guid) || type == typeof (object) || type == typeof(TimeSpan) || type == typeof(byte[]) || type == typeof(Uri) || type == typeof(DateTimeOffset)) // special primitives
-                               return true;
-                       // DOM nodes
-                       if (type == typeof (XmlElement) || type == typeof (XmlNode []))
-                               return true;
-                       // nullable
-                       if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>))
-                               return IsPrimitiveNotEnum (type.GetGenericArguments () [0]);
-                       return false;
-               }
-
-               bool ShouldNotRegister (Type type)
-               {
-                       return IsPrimitiveNotEnum (type);
-               }
-
-               internal bool TryRegister (Type type)
-               {
-                       lock (this) {
-                               return DoTryRegister (type);
-                       }
-               }
-
-               bool DoTryRegister (Type type)
-               {
-                       // exclude predefined maps
-                       if (ShouldNotRegister (type))
-                               return false;
-
-                       if (FindUserMap (type) != null)
-                               return false;
-
-                       if (RegisterEnum (type) != null)
-                               return true;
-
-                       if (RegisterDictionary (type) != null)
-                               return true;
-
-                       if (RegisterCollectionContract (type) != null)
-                               return true;
-
-                       if (RegisterContract (type) != null)
-                               return true;
-
-                       if (RegisterIXmlSerializable (type) != null)
-                               return true;
-
-                       if (RegisterCollection (type) != null)
-                               return true;
-
-                       if (GetAttribute<SerializableAttribute> (type) != null) {
-                               RegisterSerializable (type);
-                               return true;
-                       }
-
-                       RegisterDefaultTypeMap (type);
-                       return true;
-               }
-
-               static Type GetCollectionElementType (Type type)
-               {
-                       if (type.IsArray)
-                               return type.GetElementType ();
-                       var ifaces = type.GetInterfacesOrSelfInterface ();
-                       foreach (Type i in ifaces)
-                               if (i.IsGenericType && i.GetGenericTypeDefinition ().Equals (typeof (IEnumerable<>)))
-                                       return i.GetGenericArguments () [0];
-                       foreach (Type i in ifaces)
-                               if (i == typeof (IEnumerable))
-                                       return typeof (object);
-                       return null;
-               }
-
-               internal static T GetAttribute<T> (ICustomAttributeProvider ap) where T : Attribute
-               {
-                       object [] atts = ap.GetCustomAttributes (typeof (T), false);
-                       return atts.Length == 0 ? null : (T) atts [0];
-               }
-
-               private CollectionContractTypeMap RegisterCollectionContract (Type type)
-               {
-                       var cdca = GetAttribute<CollectionDataContractAttribute> (type);
-                       if (cdca == null)
-                               return null;
-
-                       Type element = GetCollectionElementType (type);
-                       if (element == null)
-                               throw new InvalidDataContractException (String.Format ("Type '{0}' is marked as collection contract, but it is not a collection", type));
-                       if (type.GetMethod ("Add", new Type[] { element }) == null)
-                               throw new InvalidDataContractException (String.Format ("Type '{0}' is marked as collection contract, but missing a public \"Add\" method", type));
-
-                       TryRegister (element); // must be registered before the name conflict check.
-
-                       QName qname = GetCollectionContractQName (type);
-                       CheckStandardQName (qname);
-                       var map = FindUserMap (qname, type);
-                       if (map != null) {
-                               var cmap = map as CollectionContractTypeMap;
-                               if (cmap == null) // The runtime type may still differ (between array and other IList; see bug #670560)
-                                       throw new InvalidOperationException (String.Format ("Failed to add type {0} to known type collection. There already is a registered type for XML name {1}", type, qname));
-                       }
-
-                       var ret = new CollectionContractTypeMap (type, cdca, element, qname, this);
-                       contracts.Add (ret);
-                       return ret;
-               }
-
-               private CollectionTypeMap RegisterCollection (Type type)
-               {
-                       Type element = GetCollectionElementType (type);
-                       if (element == null)
-                               return null;
-
-                       TryRegister (element);
-
-                       /*
-                        * To qualify as a custom collection type, a type must have
-                        * a public parameterless constructor and an "Add" method
-                        * with the correct parameter type in addition to implementing
-                        * one of the collection interfaces.
-                        * 
-                        */
-
-                       if (!type.IsArray && type.IsClass && !IsCustomCollectionType (type, element))
-                               return null;
-
-                       QName qname = GetCollectionQName (element);
-
-                       var map = FindUserMap (qname, element);
-                       if (map != null) {
-                               var cmap = map as CollectionTypeMap;
-                               if (cmap == null) // The runtime type may still differ (between array and other IList; see bug #670560)
-                                       throw new InvalidOperationException (String.Format ("Failed to add type {0} to known type collection. There already is a registered type for XML name {1}", type, qname));
-                               return cmap;
-                       }
-
-                       CollectionTypeMap ret =
-                               new CollectionTypeMap (type, element, qname, this);
-                       contracts.Add (ret);
-                       return ret;
-               }
-
-               static bool IsCustomCollectionType (Type type, Type elementType)
-               {
-                       if (!type.IsClass)
-                               return false;
-                       if (type.GetConstructor (new Type [0]) == null)
-                               return false;
-                       if (type.GetMethod ("Add", new Type[] { elementType }) == null)
-                               return false;
-
-                       return true;
-               }
-
-               internal static bool IsInterchangeableCollectionType (Type contractType, Type graphType,
-                                                                     out QName collectionQName)
-               {
-                       collectionQName = null;
-                       if (GetAttribute<CollectionDataContractAttribute> (contractType) != null)
-                               return false;
-
-                       var type = contractType;
-                       if (type.IsGenericType)
-                               type = type.GetGenericTypeDefinition ();
-
-                       var elementType = GetCollectionElementType (contractType);
-                       if (elementType == null)
-                               return false;
-                       
-                       if (contractType.IsArray) {
-                               if (!graphType.IsArray || !elementType.Equals (graphType.GetElementType ()))
-                                       throw new InvalidCastException (String.Format ("Type '{0}' cannot be converted into '{1}'.", graphType.GetElementType (), elementType));
-                       } else if (!contractType.IsInterface) {
-                               if (GetAttribute<SerializableAttribute> (contractType) == null)
-                                       return false;
-
-                               var graphElementType = GetCollectionElementType (graphType);
-                               if (elementType != graphElementType)
-                                       return false;
-
-                               if (!IsCustomCollectionType (contractType, elementType))
-                                       return false;
-                       } else if (type.Equals (typeof (IEnumerable)) || type.Equals (typeof (IList)) ||
-                                  type.Equals (typeof (ICollection))) {
-                               if (!graphType.ImplementsInterface (contractType))
-                                       return false;
-                       } else if (type.Equals (typeof (IEnumerable<>)) || type.Equals (typeof (IList<>)) ||
-                                  type.Equals (typeof (ICollection<>))) {
-                               var graphElementType = GetCollectionElementType (graphType);
-                               if (graphElementType != elementType)
-                                       throw new InvalidCastException (String.Format (
-                                               "Cannot convert type '{0}' into '{1}'.", graphType, contractType));
-
-                               if (!graphType.ImplementsInterface (contractType))
-                                       return false;
-                       } else {
-                               return false;
-                       }
-
-                       collectionQName = GetCollectionQName (elementType);
-                       return true;
-               }
-
-               static bool ImplementsInterface (Type type, Type iface)
-               {
-                       foreach (var i in type.GetInterfacesOrSelfInterface ())
-                               if (iface == i)
-                                       return true;
-                                       
-                       return false;
-               }
-
-
-               static bool TypeImplementsIEnumerable (Type type)
-               {
-                       foreach (var iface in type.GetInterfacesOrSelfInterface ())
-                               if (iface == typeof (IEnumerable) || (iface.IsGenericType && iface.GetGenericTypeDefinition () == typeof (IEnumerable<>)))
-                                       return true;
-                       
-                       return false;
-               }
-
-               static bool TypeImplementsIDictionary (Type type)
-               {
-                       foreach (var iface in type.GetInterfacesOrSelfInterface ())
-                               if (iface == typeof (IDictionary) || (iface.IsGenericType && iface.GetGenericTypeDefinition () == typeof (IDictionary<,>)))
-                                       return true;
-
-                       return false;
-               }
-
-               // it also supports contract-based dictionary.
-               private DictionaryTypeMap RegisterDictionary (Type type)
-               {
-                       if (!TypeImplementsIDictionary (type))
-                               return null;
-
-                       var cdca = GetAttribute<CollectionDataContractAttribute> (type);
-
-                       DictionaryTypeMap ret =
-                               new DictionaryTypeMap (type, cdca, this);
-
-                       TryRegister (ret.KeyType);
-                       TryRegister (ret.ValueType);
-
-                       var map = FindUserMap (ret.XmlName, type);
-                       if (map != null) {
-                               var dmap = map as DictionaryTypeMap;
-                               if (dmap == null) // The runtime type may still differ (between array and other IList; see bug #670560)
-                                       throw new InvalidOperationException (String.Format ("Failed to add type {0} to known type collection. There already is a registered type for XML name {1}", type, ret.XmlName));
-                       }
-                       contracts.Add (ret);
-
-                       return ret;
-               }
-
-               private SerializationMap RegisterSerializable (Type type)
-               {
-                       QName qname = GetSerializableQName (type);
-
-                       if (FindUserMap (qname, type) != null)
-                               throw new InvalidOperationException (String.Format ("There is already a registered type for XML name {0}", qname));
-
-                       SharedTypeMap ret = new SharedTypeMap (type, qname, this);
-                       contracts.Add (ret);
-                       ret.Initialize ();
-                       return ret;
-               }
-
-               private SerializationMap RegisterIXmlSerializable (Type type)
-               {
-                       if (type.GetInterface ("System.Xml.Serialization.IXmlSerializable") == null)
-                               return null;
-
-                       QName qname = GetSerializableQName (type);
-
-                       if (!QName.Empty.Equals (qname) && FindUserMap (qname, type) != null)
-                               throw new InvalidOperationException (String.Format ("There is already a registered type for XML name {0}", qname));
-
-                       XmlSerializableMap ret = new XmlSerializableMap (type, qname, this);
-                       contracts.Add (ret);
-
-                       return ret;
-               }
-
-               void CheckStandardQName (QName qname)
-               {
-                       switch (qname.Namespace) {
-                       case XmlSchema.Namespace:
-                       case XmlSchema.InstanceNamespace:
-                       case MSSimpleNamespace:
-                       case MSArraysNamespace:
-                               throw new InvalidOperationException (String.Format ("Namespace {0} is reserved and cannot be used for user serialization", qname.Namespace));
-                       }
-
-               }
-
-               private SharedContractMap RegisterContract (Type type)
-               {
-                       QName qname = GetContractQName (type);
-                       if (qname == null)
-                               return null;
-                       CheckStandardQName (qname);
-                       if (FindUserMap (qname, type) != null)
-                               throw new InvalidOperationException (String.Format ("There is already a registered type for XML name {0}", qname));
-
-                       SharedContractMap ret = new SharedContractMap (type, qname, this);
-                       contracts.Add (ret);
-                       ret.Initialize ();
-
-                       if (type.BaseType != typeof (object)) {
-                               TryRegister (type.BaseType);
-                               if (!FindUserMap (type.BaseType).IsContractAllowedType)
-                                       throw new InvalidDataContractException (String.Format ("To be serializable by data contract, type '{0}' cannot inherit from non-contract and non-Serializable type '{1}'", type, type.BaseType));
-                       }
-
-                       object [] attrs = type.GetCustomAttributes (typeof (KnownTypeAttribute), true);
-                       for (int i = 0; i < attrs.Length; i++) {
-                               KnownTypeAttribute kt = (KnownTypeAttribute) attrs [i];
-                               foreach (var t in kt.GetTypes (type))
-                                       TryRegister (t);
-                       }
-
-                       return ret;
-               }
-
-               DefaultTypeMap RegisterDefaultTypeMap (Type type)
-               {
-                       DefaultTypeMap ret = new DefaultTypeMap (type, this);
-                       contracts.Add (ret);
-                       ret.Initialize ();
-                       return ret;
-               }
-
-               private EnumMap RegisterEnum (Type type)
-               {
-                       QName qname = GetEnumQName (type);
-                       if (qname == null)
-                               return null;
-
-                       if (FindUserMap (qname, type) != null)
-                               throw new InvalidOperationException (String.Format ("There is already a registered type for XML name {0}", qname));
-
-                       EnumMap ret =
-                               new EnumMap (type, qname, this);
-                       contracts.Add (ret);
-                       return ret;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/NetDataContractSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/NetDataContractSerializer.cs
deleted file mode 100644 (file)
index 68f6bea..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-//
-// NetDataContractSerializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Xml;
-using System.Xml.Schema;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       public sealed class NetDataContractSerializer
-               : XmlObjectSerializer, IFormatter
-       {
-               const string xmlns = "http://www.w3.org/2000/xmlns/";
-               const string default_ns = "http://schemas.datacontract.org/2004/07/";
-
-               // This is only for compatible mode.
-               StreamingContext context;
-//             KnownTypeCollection known_types;
-//             IDataContractSurrogate surrogate;
-
-               SerializationBinder binder;
-               ISurrogateSelector selector;
-
-               int max_items = 0x10000; // FIXME: could be from config.
-               bool ignore_extensions;
-               FormatterAssemblyStyle ass_style;
-
-               XmlDictionaryString root_name, root_ns;
-
-               public NetDataContractSerializer ()
-               {
-               }
-
-               public NetDataContractSerializer (StreamingContext context)
-               {
-                       this.context = context;
-               }
-
-               public NetDataContractSerializer (string rootName,
-                       string rootNamespace)
-               {
-                       FillDictionaryString (rootName, rootNamespace);
-               }
-
-               public NetDataContractSerializer (XmlDictionaryString rootName,
-                       XmlDictionaryString rootNamespace)
-               {
-                       if (rootName == null)
-                               throw new ArgumentNullException ("rootName");
-                       if (rootNamespace == null)
-                               throw new ArgumentNullException ("rootNamespace");
-                       root_name = rootName;
-                       root_ns = rootNamespace;
-               }
-
-               public NetDataContractSerializer (StreamingContext context, 
-                       int maxItemsInObjectGraph,
-                       bool ignoreExtensibleDataObject,
-                       FormatterAssemblyStyle assemblyFormat,
-                       ISurrogateSelector surrogateSelector)
-               {
-                       this.context = context;
-                       max_items = maxItemsInObjectGraph;
-                       ignore_extensions = ignoreExtensibleDataObject;
-                       ass_style = assemblyFormat;
-                       selector = surrogateSelector;
-               }
-
-               public NetDataContractSerializer (
-                       string rootName, string rootNamespace,
-                       StreamingContext context, 
-                       int maxItemsInObjectGraph,
-                       bool ignoreExtensibleDataObject,
-                       FormatterAssemblyStyle assemblyFormat,
-                       ISurrogateSelector surrogateSelector)
-                       : this (context, maxItemsInObjectGraph,
-                               ignoreExtensibleDataObject, assemblyFormat,
-                               surrogateSelector)
-               {
-                       FillDictionaryString (rootName, rootNamespace);
-               }
-
-               public NetDataContractSerializer (
-                       XmlDictionaryString rootName,
-                       XmlDictionaryString rootNamespace,
-                       StreamingContext context,
-                       int maxItemsInObjectGraph,
-                       bool ignoreExtensibleDataObject,
-                       FormatterAssemblyStyle assemblyFormat,
-                       ISurrogateSelector surrogateSelector)
-                       : this (context, maxItemsInObjectGraph,
-                               ignoreExtensibleDataObject, assemblyFormat,
-                               surrogateSelector)
-               {
-                       if (rootName == null)
-                               throw new ArgumentNullException ("rootName");
-                       if (rootNamespace == null)
-                               throw new ArgumentNullException ("rootNamespace");
-                       root_name = rootName;
-                       root_ns = rootNamespace;
-               }
-
-               void FillDictionaryString (string rootName, string rootNamespace)
-               {
-                       if (rootName == null)
-                               throw new ArgumentNullException ("rootName");
-                       if (rootNamespace == null)
-                               throw new ArgumentNullException ("rootNamespace");
-                       XmlDictionary d = new XmlDictionary ();
-                       root_name = d.Add (rootName);
-                       root_ns = d.Add (rootNamespace);
-               }
-
-               public FormatterAssemblyStyle AssemblyFormat {
-                       get { return ass_style; }
-                       set { ass_style = value; }
-               }
-
-               public SerializationBinder Binder {
-                       get { return binder; }
-                       set { binder = value; }
-               }
-
-               public bool IgnoreExtensionDataObject {
-                       get { return ignore_extensions; }
-               }
-
-               public ISurrogateSelector SurrogateSelector {
-                       get { return selector; }
-                       set { selector = value; }
-               }
-
-               public StreamingContext Context {
-                       get { return context; }
-                       set { context = value; }
-               }
-
-               public int MaxItemsInObjectGraph {
-                       get { return max_items; }
-               }
-
-               public object Deserialize (Stream stream)
-               {
-                       return ReadObject (stream);
-               }
-
-               [MonoTODO]
-               public override bool IsStartObject (XmlDictionaryReader reader)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override object ReadObject (XmlDictionaryReader reader, bool readContentOnly)
-               {
-                       /*
-                       int startTypeCount = known_types.Count;
-
-                       object ret = XmlFormatterDeserializer.Deserialize (
-                               // FIXME: remove this second param.
-                               reader, null, known_types, surrogate, readContentOnly);
-
-                       if (!readContentOnly && reader.NodeType == XmlNodeType.EndElement)
-                               reader.Read ();
-
-                       // remove temporarily-added known types for
-                       // rootType and object graph type.
-                       while (known_types.Count > startTypeCount)
-                               known_types.RemoveAt (startTypeCount);
-
-                       return ret;
-                       */
-                       throw new NotImplementedException ();
-               }
-
-               public void Serialize (Stream stream, Object graph)
-               {
-                       using (XmlWriter w = XmlWriter.Create (stream)) {
-                               WriteObject (w, graph);
-                       }
-               }
-
-               [MonoTODO ("support arrays; support Serializable; support SharedType; use DataContractSurrogate")]
-               /*
-                       when writeContentOnly is true, then the input XmlWriter
-                       must be at element state. This is to write possible
-                       xsi:nil.
-
-                       rootType determines the top-level element QName (thus
-                       it is ignored when writeContentOnly is true).
-
-                       preserveObjectReferences indicates that whether the
-                       output should contain ms:Id or not.
-                       (http://schemas.microsoft.com/2003/10/Serialization/)
-               */
-               public override void WriteObjectContent (
-                       XmlDictionaryWriter writer, object graph)
-               {
-                       /*
-                       int startTypeCount = known_types.Count;
-
-                       string ns = default_ns;
-
-                       //writer.WriteAttributeString ("xmlns", "i", xmlns, XmlSchema.InstanceNamespace);
-                       //writer.WriteAttributeString ("xmlns", "x", xmlns, XmlSchema.Namespace);
-                       if (ns != null)
-                               writer.WriteAttributeString ("xmlns", xmlns, ns);
-
-                       XmlFormatterSerializer.Serialize (writer, graph,
-                               known_types,
-                               ignore_extensions, max_items);
-
-                       // remove temporarily-added known types for
-                       // rootType and object graph type.
-                       while (known_types.Count > startTypeCount)
-                               known_types.RemoveAt (startTypeCount);
-                       */
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteStartObject (
-                       XmlDictionaryWriter writer, object graph)
-               {
-                       /*
-                       Type rootType = graph.GetType ();
-                       known_types.Add (rootType);
-                       SerializationMap map =
-                               known_types.FindUserMap (rootType);
-                       QName name = map != null ? map.XmlName :
-                               KnownTypeCollection.GetPredefinedTypeName (rootType);
-                       writer.WriteStartElement (
-                               name.Name, name.Namespace);
-                       */
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEndObject (XmlDictionaryWriter writer)
-               {
-                       writer.WriteEndElement ();
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.XsdExporter.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.XsdExporter.cs
deleted file mode 100644 (file)
index 47fc17c..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// SerializationMap.XsdExporter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       internal abstract partial class SerializationMap
-       {
-               public abstract void ExportSchemaType (XsdDataContractExporter exporter);
-       }
-       
-       internal partial class XmlSerializableMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       // .NET also expects a default constructor.
-                       var ixs = (IXmlSerializable) Activator.CreateInstance (RuntimeType, true);
-                       var xs = ixs.GetSchema ();
-                       if (xs != null)
-                               exporter.Schemas.Add (xs);
-               }
-       }
-       
-       internal partial class SharedContractMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportStandardComplexType (RuntimeType.GetCustomAttribute<DataContractAttribute> (false), this, Members);
-               }
-       }
-       
-       internal partial class DefaultTypeMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportStandardComplexType (null, this, Members);
-               }
-       }
-       
-       internal partial class CollectionContractTypeMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportListContractType (a, this);
-               }
-       }
-       
-       internal partial class CollectionTypeMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportListContractType (null, this);
-               }
-       }
-       
-       internal partial class DictionaryTypeMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportDictionaryContractType (a, this, GetGenericDictionaryInterface (RuntimeType));
-               }
-       }
-       
-       internal partial class SharedTypeMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportStandardComplexType (null, this, Members);
-               }
-       }
-       
-       internal partial class EnumMap
-       {
-               public override void ExportSchemaType (XsdDataContractExporter exporter)
-               {
-                       exporter.ExportEnumContractType (RuntimeType.GetCustomAttribute<DataContractAttribute> (false), this);
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs
deleted file mode 100644 (file)
index 48b121e..0000000
+++ /dev/null
@@ -1,1122 +0,0 @@
-//
-// SerializationMap.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//     Ankit Jain <JAnkit@novell.com>
-//     Duncan Mak (duncan@ximian.com)
-//     Eyal Alaluf (eyala@mainsoft.com)
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-// Copyright (C) 2006 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-/*
-       XmlFormatter implementation design inference:
-
-       type definitions:
-       - No XML Schema types are directly used. There are some maps from
-         xs:blahType to ms:blahType where the namespaceURI for prefix "ms" is
-         "http://schemas.microsoft.com/2003/10/Serialization/" .
-
-       serializable types:
-       - An object being serialized 1) must be of type System.Object, or
-         2) must be null, or 3) must have either a [DataContract] attribute
-         or a [Serializable] attribute to be serializable.
-       - When the object is either of type System.Object or null, then the
-         XML type is "anyType".
-       - When the object is [Serializable], then the runtime-serialization
-         compatible object graph is written.
-       - Otherwise the serialization is based on contract attributes.
-         ([Serializable] takes precedence).
-
-       type derivation:
-       - For type A to be serializable, the base type B of A must be
-         serializable.
-       - If a type which is [Serializable] and whose base type has a
-         [DataContract], then for base type members [DataContract] is taken.
-       - It is vice versa i.e. if the base type is [Serializable] and the
-         derived type has a [DataContract], then [Serializable] takes place
-         for base members.
-
-       known type collection:
-       - It internally manages mapping store keyed by contract QNames.
-         KnownTypeCollection.Add() checks if the same QName contract already
-         exists (and raises InvalidOperationException if required).
-
-*/
-       internal abstract partial class SerializationMap
-       {
-               public const BindingFlags AllInstanceFlags =
-                       BindingFlags.Public | BindingFlags.NonPublic |
-                       BindingFlags.Instance;
-
-               public readonly KnownTypeCollection KnownTypes;
-               public readonly Type RuntimeType;
-               public bool IsReference; // new in 3.5 SP1
-               public List<DataMemberInfo> Members;
-#if !NET_2_1
-               XmlSchemaSet schema_set;
-#endif
-               //FIXME FIXME
-               Dictionary<Type, QName> qname_table = new Dictionary<Type, QName> ();
-
-               protected SerializationMap (
-                       Type type, QName qname, KnownTypeCollection knownTypes)
-               {
-                       KnownTypes = knownTypes;
-                       RuntimeType = type;
-                       if (qname.Namespace == null)
-                               qname = new QName (qname.Name,
-                                       KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace);
-
-                       XmlName = qname;
-                       Members = new List<DataMemberInfo> ();
-
-                       foreach (var mi in type.GetMethods (AllInstanceFlags)) {
-                               if (mi.GetCustomAttributes (typeof (OnDeserializingAttribute), false).Length > 0)
-                                       OnDeserializing = mi;
-                               else if (mi.GetCustomAttributes (typeof (OnDeserializedAttribute), false).Length > 0)
-                                       OnDeserialized = mi;
-                       }
-               }
-
-               public MethodInfo OnDeserializing { get; set; }
-               public MethodInfo OnDeserialized { get; set; }
-
-               public virtual bool OutputXsiType {
-                       get { return true; }
-               }
-
-               public QName XmlName { get; set; }
-
-               public abstract bool IsContractAllowedType { get; }
-
-               protected void HandleId (XmlReader reader, XmlFormatterDeserializer deserializer, object instance)
-               {
-                       HandleId (reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace), deserializer, instance);
-               }
-               
-               protected void HandleId (string id, XmlFormatterDeserializer deserializer, object instance)
-               {
-                       if (id != null)
-                               deserializer.References.Add (id, instance);
-               }
-
-               public CollectionDataContractAttribute GetCollectionDataContractAttribute (Type type)
-               {
-                       object [] atts = type.GetCustomAttributes (
-                               typeof (CollectionDataContractAttribute), false);
-                       return atts.Length == 0 ? null : (CollectionDataContractAttribute) atts [0];
-               }
-
-               public DataMemberAttribute GetDataMemberAttribute (
-                       MemberInfo mi)
-               {
-                       object [] atts = mi.GetCustomAttributes (
-                               typeof (DataMemberAttribute), false);
-                       if (atts.Length == 0)
-                               return null;
-                       return (DataMemberAttribute) atts [0];
-               }
-
-               bool IsPrimitive (Type type)
-               {
-                       return (Type.GetTypeCode (type) != TypeCode.Object || type == typeof (object));
-               }
-
-               //Returns list of data members for this type ONLY
-               public virtual List<DataMemberInfo> GetMembers ()
-               {
-                       throw new NotImplementedException (String.Format ("Implement me for {0}", this));
-               }
-
-#if !NET_2_1
-               protected XmlSchemaElement GetSchemaElement (QName qname, XmlSchemaType schemaType)
-               {
-                       XmlSchemaElement schemaElement = new XmlSchemaElement ();
-                       schemaElement.Name = qname.Name;
-                       schemaElement.SchemaTypeName = qname;
-
-                       if (schemaType is XmlSchemaComplexType)
-                               schemaElement.IsNillable = true;
-
-                       return schemaElement;
-               }
-
-               protected XmlSchema GetSchema (XmlSchemaSet schemas, string ns)
-               {
-                       ICollection colln = schemas.Schemas (ns);
-                       if (colln.Count > 0) {
-                               if (colln.Count > 1)
-                                       throw new Exception (String.Format (
-                                               "More than 1 schema for namespace '{0}' found.", ns));
-                               foreach (object o in colln)
-                                       //return colln [0]
-                                       return (o as XmlSchema);
-                       }
-
-                       XmlSchema schema = new XmlSchema ();
-                       schema.TargetNamespace = ns;
-                       schema.ElementFormDefault = XmlSchemaForm.Qualified;
-                       schemas.Add (schema);
-
-                       return schema;
-               }
-
-               protected XmlQualifiedName GetQualifiedName (Type type)
-               {
-                       if (qname_table.ContainsKey (type))
-                               return qname_table [type];
-
-                       QName qname = KnownTypes.GetQName (type);
-                       if (qname.Namespace == KnownTypeCollection.MSSimpleNamespace)
-                               qname = new QName (qname.Name, XmlSchema.Namespace);
-
-                       qname_table [type] = qname;
-                       return qname;
-               }
-#endif
-
-               public virtual void Serialize (object graph,
-                       XmlFormatterSerializer serializer)
-               {
-                       string label;
-                       if (serializer.TrySerializeAsReference (IsReference, graph, out label))
-                               return;
-                       else if (serializer.SerializingObjects.Contains (graph))
-                               throw new SerializationException (String.Format ("Circular reference of an object in the object graph was found: '{0}' of type {1}", graph, graph.GetType ()));
-                       serializer.SerializingObjects.Add (graph);
-
-                       if (label != null)
-                               serializer.Writer.WriteAttributeString ("z", "Id", KnownTypeCollection.MSSimpleNamespace, label);
-
-                       SerializeNonReference (graph, serializer);
-
-                       serializer.SerializingObjects.Remove (graph);
-               }
-
-               public virtual void SerializeNonReference (object graph,
-                       XmlFormatterSerializer serializer)
-               {
-                       foreach (DataMemberInfo dmi in Members) {
-                               FieldInfo fi = dmi.Member as FieldInfo;
-                               PropertyInfo pi = fi == null ?
-                                       (PropertyInfo) dmi.Member : null;
-                               Type type = fi != null ?
-                                       fi.FieldType : pi.PropertyType;
-                               object value = fi != null ?
-                                       fi.GetValue (graph) :
-                                       pi.GetValue (graph, null);
-
-                               serializer.WriteStartElement (dmi.XmlName, dmi.XmlRootNamespace, dmi.XmlNamespace);
-                               serializer.Serialize (type, value);
-                               serializer.WriteEndElement ();
-                       }
-               }
-
-               public virtual object DeserializeObject (XmlReader reader, XmlFormatterDeserializer deserializer)
-               {
-                       bool isEmpty = reader.IsEmptyElement;
-                       string id = reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace);
-                       reader.ReadStartElement ();
-                       reader.MoveToContent ();
-
-                       object res;
-
-                       if (isEmpty)
-                               res = DeserializeEmptyContent (reader, deserializer, id);
-                       else
-                               res = DeserializeContent (reader, deserializer, id);
-
-                       reader.MoveToContent ();
-                       if (!isEmpty && reader.NodeType == XmlNodeType.EndElement)
-                               reader.ReadEndElement ();
-                       else if (!isEmpty && !reader.EOF && reader.NodeType != XmlNodeType.EndElement) {
-                               var li = reader as IXmlLineInfo;
-                               throw new SerializationException (String.Format ("Deserializing type '{3}'. Expecting state 'EndElement'. Encountered state '{0}' with name '{1}' with namespace '{2}'.{4}",
-                                       reader.NodeType,
-                                       reader.Name,
-                                       reader.NamespaceURI,
-                                       RuntimeType.FullName,
-                                       li != null && li.HasLineInfo () ? String.Format (" {0}({1},{2})", reader.BaseURI, li.LineNumber, li.LinePosition) : String.Empty));
-                       }
-                       return res;
-               }
-
-               // This is sort of hack. The argument reader already moved ahead of
-               // the actual empty element.It's just for historical consistency.
-               public virtual object DeserializeEmptyContent (XmlReader reader,
-                       XmlFormatterDeserializer deserializer, string id)
-               {
-                       return DeserializeContent (reader, deserializer, id, true);
-               }
-
-               public virtual object DeserializeContent (XmlReader reader,
-                       XmlFormatterDeserializer deserializer, string id)
-               {
-                       return DeserializeContent (reader, deserializer, id, false);
-               }
-
-               object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id, bool empty)
-               {
-                       object instance = FormatterServices.GetUninitializedObject (RuntimeType);
-                       HandleId (id, deserializer, instance);
-
-                       if (OnDeserializing != null)
-                               OnDeserializing.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
-
-                       int depth = reader.NodeType == XmlNodeType.None ? reader.Depth : reader.Depth - 1;
-                       bool [] filled = new bool [Members.Count];
-                       bool [] nsmatched = new bool [Members.Count];
-                       int memberInd = -1, ordered = -1;
-                       while (!empty && reader.NodeType == XmlNodeType.Element && reader.Depth > depth) {
-                               DataMemberInfo dmi = null;
-                               int i = 0;
-                               bool nsmatchedOne = false;
-                               for (; i < Members.Count; i++) { // unordered
-                                       if (Members [i].Order >= 0)
-                                               break;
-                                       if (reader.LocalName == Members [i].XmlName) {
-                                               memberInd = i;
-                                               dmi = Members [i];
-                                               nsmatchedOne = (dmi.XmlRootNamespace == null || reader.NamespaceURI == dmi.XmlRootNamespace);
-                                               if (nsmatchedOne)
-                                                       break;
-                                       }
-                               }
-                               for (i = Math.Max (i, ordered); i < Members.Count; i++) { // ordered
-                                       if (dmi != null)
-                                               break;
-                                       if (reader.LocalName == Members [i].XmlName) {
-                                               ordered = i;
-                                               memberInd = i;
-                                               dmi = Members [i];
-                                               nsmatchedOne = (dmi.XmlRootNamespace == null || reader.NamespaceURI == dmi.XmlRootNamespace);
-                                               if (nsmatchedOne)
-                                                       break;
-                                       }
-                               }
-                               
-                               if (dmi == null) {
-                                       reader.Skip ();
-                                       reader.MoveToContent ();
-                                       continue;
-                               }
-                               if (filled [memberInd] && nsmatched [memberInd]) {
-                                       // The strictly-corresponding member (i.e. that matches namespace URI too, not only local name) already exists, so skip this element.
-                                       reader.Skip ();
-                                       reader.MoveToContent ();
-                                       continue;
-                               }
-                               nsmatched [memberInd] = nsmatchedOne;
-                               SetValue (dmi, instance, deserializer.Deserialize (dmi.MemberType, reader));
-                               filled [memberInd] = true;
-                               reader.MoveToContent ();
-                       }
-                       for (int i = 0; i < Members.Count; i++)
-                               if (!filled [i] && Members [i].IsRequired)
-                                       throw MissingRequiredMember (Members [i], reader);
-
-                       if (OnDeserialized != null)
-                               OnDeserialized.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
-
-                       return instance;
-               }
-
-               // For now it could be private.
-               protected Exception MissingRequiredMember (DataMemberInfo dmi, XmlReader reader)
-               {
-                       var li = reader as IXmlLineInfo;
-                       return new ArgumentException (String.Format ("Data contract member {0} for the type {1} is required, but missing in the input XML.{2}",
-                               new QName (dmi.XmlName, dmi.XmlNamespace),
-                               RuntimeType,
-                               li != null && li.HasLineInfo () ? String.Format (" {0}({1},{2})", reader.BaseURI, li.LineNumber, li.LinePosition) : null));
-               }
-
-               // For now it could be private.
-               protected void SetValue (DataMemberInfo dmi, object obj, object value)
-               {
-                       try {
-                               if (dmi.Member is PropertyInfo)
-                                       ((PropertyInfo) dmi.Member).SetValue (obj, value, null);
-                               else
-                                       ((FieldInfo) dmi.Member).SetValue (obj, value);
-                       } catch (Exception ex) {
-                               throw new InvalidOperationException (String.Format ("Failed to set value of type {0} for property {1}", value != null ? value.GetType () : null, dmi.Member), ex);
-                       }
-               }
-
-               protected DataMemberInfo CreateDataMemberInfo (DataMemberAttribute dma, MemberInfo mi, Type memberType, string ownerNamespace)
-               {
-                       KnownTypes.Add (memberType);
-                       QName qname = KnownTypes.GetQName (memberType);
-                       
-                       if (KnownTypeCollection.GetPrimitiveTypeFromName (qname) != null)
-                               return new DataMemberInfo (mi, dma, ownerNamespace, null);
-                       else
-                               return new DataMemberInfo (mi, dma, ownerNamespace, qname.Namespace);
-               }
-       }
-
-       internal partial class XmlSerializableMap : SerializationMap
-       {
-               public override bool IsContractAllowedType { get { return true; } }
-
-               public XmlSerializableMap (Type type, QName qname, KnownTypeCollection knownTypes)
-                       : base (type, qname, knownTypes)
-               {
-               }
-
-               public override void Serialize (object graph, XmlFormatterSerializer serializer)
-               {
-                       IXmlSerializable ixs = graph as IXmlSerializable;
-                       if (ixs == null)
-                               //FIXME: Throw what exception here?
-                               throw new SerializationException ();
-
-                       ixs.WriteXml (serializer.Writer);
-               }
-
-               public override object DeserializeObject (XmlReader reader, XmlFormatterDeserializer deserializer)
-               {
-#if NET_2_1
-                       IXmlSerializable ixs = (IXmlSerializable) Activator.CreateInstance (RuntimeType);
-#else
-                       IXmlSerializable ixs = (IXmlSerializable) Activator.CreateInstance (RuntimeType, true);
-#endif
-
-                       HandleId (reader, deserializer, ixs);
-
-                       ixs.ReadXml (reader);
-                       return ixs;
-               }
-       }
-
-       internal partial class SharedContractMap : SerializationMap
-       {
-               public SharedContractMap (
-                       Type type, QName qname, KnownTypeCollection knownTypes)
-                       : base (type, qname, knownTypes)
-               {
-               }
-
-               public override bool IsContractAllowedType { get { return true; } }
-
-               internal void Initialize ()
-               {
-                       Type type = RuntimeType;
-                       List <DataMemberInfo> members;
-                       object [] atts = type.GetCustomAttributes (
-                               typeof (DataContractAttribute), false);
-                       IsReference = atts.Length > 0 ? (((DataContractAttribute) atts [0]).IsReference) : false;
-
-                       while (type != null) {
-                               members = GetMembers (type);
-                               members.Sort (DataMemberInfo.DataMemberInfoComparer.Instance);
-                               Members.InsertRange (0, members);
-                               members.Clear ();
-
-                               type = type.BaseType;
-                       }
-               }
-
-               List<DataMemberInfo> GetMembers (Type type)
-               {
-                       List<DataMemberInfo> data_members = new List<DataMemberInfo> ();
-                       BindingFlags flags = AllInstanceFlags | BindingFlags.DeclaredOnly;
-
-                       foreach (PropertyInfo pi in type.GetProperties (flags)) {
-                               DataMemberAttribute dma =
-                                       GetDataMemberAttribute (pi);
-                               if (dma == null)
-                                       continue;
-                               KnownTypes.Add (pi.PropertyType);
-                               var map = KnownTypes.FindUserMap (pi.PropertyType);
-                               if (!pi.CanRead || (!pi.CanWrite && !(map is ICollectionTypeMap)))
-                                       throw new InvalidDataContractException (String.Format (
-                                                       "DataMember property '{0}' on type '{1}' must have both getter and setter.", pi, pi.DeclaringType));
-                               data_members.Add (CreateDataMemberInfo (dma, pi, pi.PropertyType, KnownTypeCollection.GetStaticQName (pi.DeclaringType).Namespace));
-                       }
-
-                       foreach (FieldInfo fi in type.GetFields (flags)) {
-                               DataMemberAttribute dma =
-                                       GetDataMemberAttribute (fi);
-                               if (dma == null)
-                                       continue;
-                               data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType, KnownTypeCollection.GetStaticQName (fi.DeclaringType).Namespace));
-                       }
-
-                       return data_members;
-               }
-
-               public override List<DataMemberInfo> GetMembers ()
-               {
-                       return Members;
-               }
-       }
-
-       internal partial class DefaultTypeMap : SerializationMap
-       {
-               public DefaultTypeMap (Type type, KnownTypeCollection knownTypes)
-                       : base (type, KnownTypeCollection.GetStaticQName (type), knownTypes)
-               {
-               }
-
-               public override bool IsContractAllowedType { get { return false; } }
-
-               internal void Initialize ()
-               {
-                       Members.AddRange (GetDefaultMembers ());
-               }
-
-               List<DataMemberInfo> GetDefaultMembers ()
-               {
-                       var l = new List<DataMemberInfo> ();
-                       foreach (var mi in RuntimeType.GetMembers ()) {
-                               Type mt = null;
-                               FieldInfo fi = mi as FieldInfo;
-                               mt = fi == null ? null : fi.FieldType;
-                               PropertyInfo pi = mi as PropertyInfo;
-                               if (pi != null && pi.CanRead && pi.CanWrite && pi.GetIndexParameters ().Length == 0)
-                                       mt = pi.PropertyType;
-                               if (mt == null)
-                                       continue;
-                               if (mi.GetCustomAttributes (typeof (IgnoreDataMemberAttribute), false).Length != 0)
-                                       continue;
-                               string ns = KnownTypeCollection.GetStaticQName (mi.DeclaringType).Namespace;
-                               l.Add (CreateDataMemberInfo (new DataMemberAttribute (), mi, mt, ns));
-                       }
-                       l.Sort (DataMemberInfo.DataMemberInfoComparer.Instance);
-                       return l;
-               }
-       }
-
-       // FIXME: it still needs to consider KeyName/ValueName
-       // (especially Dictionary collection is not likely considered yet.)
-       internal partial class CollectionContractTypeMap : CollectionTypeMap
-       {
-               CollectionDataContractAttribute a;
-
-               public CollectionContractTypeMap (
-                       Type type, CollectionDataContractAttribute a, Type elementType,
-                       QName qname, KnownTypeCollection knownTypes)
-                       : base (type, elementType, qname, knownTypes)
-               {
-                       this.a = a;
-                       IsReference = a.IsReference;
-                       if (!String.IsNullOrEmpty (a.ItemName))
-                               element_qname = new XmlQualifiedName (a.ItemName, a.Namespace ?? CurrentNamespace);
-               }
-
-               internal override string CurrentNamespace {
-                       get { return XmlName.Namespace; }
-               }
-
-               public override bool IsContractAllowedType { get { return true; } }
-       }
-
-       internal interface ICollectionTypeMap
-       {
-       }
-
-       internal partial class CollectionTypeMap : SerializationMap, ICollectionTypeMap
-       {
-               Type element_type;
-               internal QName element_qname;
-               MethodInfo add_method;
-
-               public CollectionTypeMap (
-                       Type type, Type elementType,
-                       QName qname, KnownTypeCollection knownTypes)
-                       : base (type, qname, knownTypes)
-               {
-                       element_type = elementType;
-                       element_qname = KnownTypes.GetQName (element_type);
-                       var icoll = GetGenericCollectionInterface (RuntimeType);
-                       if (icoll != null) {
-                               if (RuntimeType.IsInterface) {
-                                       add_method = RuntimeType.GetMethod ("Add", icoll.GetGenericArguments ());
-                               } else {
-                                       var imap = RuntimeType.GetInterfaceMap (icoll);
-                                       for (int i = 0; i < imap.InterfaceMethods.Length; i++)
-                                               if (imap.InterfaceMethods [i].Name == "Add") {
-                                                       add_method = imap.TargetMethods [i];
-                                                       break;
-                                               }
-                                       if (add_method == null)
-                                               add_method = type.GetMethod ("Add", icoll.GetGenericArguments ());
-                               }
-                       }
-               }
-
-               static Type GetGenericCollectionInterface (Type type)
-               {
-                       foreach (var iface in type.GetInterfacesOrSelfInterface ())
-                               if (iface.IsGenericType && iface.GetGenericTypeDefinition () == typeof (IEnumerable<>))
-                                       return iface;
-
-                       return null;
-               }
-
-               public override bool IsContractAllowedType { get { return false; } }
-
-               public override bool OutputXsiType {
-                       get { return false; }
-               }
-
-               internal virtual string CurrentNamespace {
-                       get {
-                               string ns = element_qname.Namespace;
-                               if (ns == KnownTypeCollection.MSSimpleNamespace)
-                                       ns = KnownTypeCollection.MSArraysNamespace;
-                               return ns;
-                       }
-               }
-
-               public override void SerializeNonReference (object graph,
-                       XmlFormatterSerializer serializer)
-               {
-                       // output item xmlns in advance so that it does not result in excessive xmlns overwrites.
-                       if (XmlName.Namespace != element_qname.Namespace && element_qname.Namespace != KnownTypeCollection.MSSimpleNamespace)
-                               serializer.Writer.WriteXmlnsAttribute (null, element_qname.Namespace);
-
-                       foreach (object o in (IEnumerable) graph) {
-                               serializer.WriteStartElement (element_qname.Name, XmlName.Namespace, CurrentNamespace);
-                               serializer.Serialize (element_type, o);
-                               serializer.WriteEndElement ();
-                       }
-               }
-
-               object CreateInstance ()
-               {
-                       if (RuntimeType.IsArray)
-                               return new ArrayList ();
-                       if (RuntimeType.IsInterface) {
-                               var icoll = GetGenericCollectionInterface (RuntimeType);
-                               if (icoll != null)
-                                       return Activator.CreateInstance (typeof (List<>).MakeGenericType (RuntimeType.GetGenericArguments () [0])); // List<T>
-                               else // non-generic
-                                       return new ArrayList ();
-                       }
-#if NET_2_1 // FIXME: is it fine?
-                       return Activator.CreateInstance (RuntimeType);
-#else
-                       return Activator.CreateInstance (RuntimeType, true);
-#endif
-               }
-
-               public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
-               {
-                       var instance = CreateInstance ();
-                       HandleId (id, deserializer, instance);
-                       if (OnDeserializing != null)
-                               OnDeserializing.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
-                       try {
-                               if (RuntimeType.IsArray)
-                                       return ((ArrayList)instance).ToArray (element_type);
-                               else
-                                       return instance;
-                       } finally {
-                               if (OnDeserialized != null)
-                                       OnDeserialized.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
-                       }
-               }
-
-               public override object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
-               {
-                       object instance = CreateInstance ();
-                       HandleId (id, deserializer, instance);
-                       if (OnDeserializing != null)
-                               OnDeserializing.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
-                       int depth = reader.NodeType == XmlNodeType.None ? reader.Depth : reader.Depth - 1;
-                       while (reader.NodeType == XmlNodeType.Element && reader.Depth > depth) {
-                               object elem = deserializer.Deserialize (element_type, reader);
-                               if (instance is IList)
-                                       ((IList)instance).Add (elem);
-                               else if (add_method != null)
-                                       add_method.Invoke (instance, new object [] {elem});
-                               else
-                                       throw new NotImplementedException (String.Format ("Type {0} is not supported", RuntimeType));
-                               reader.MoveToContent ();
-                       }
-                       try {
-                               if (RuntimeType.IsArray)
-                                       return ((ArrayList)instance).ToArray (element_type);
-                               return instance;
-                       } finally {
-                               if (OnDeserialized != null)
-                                       OnDeserialized.Invoke (instance, new object [] {new StreamingContext (StreamingContextStates.All)});
-                       }
-               }
-
-               public override List<DataMemberInfo> GetMembers ()
-               {
-                       //Shouldn't come here at all!
-                       throw new NotImplementedException ();
-               }
-       }
-
-       internal partial class DictionaryTypeMap : SerializationMap, ICollectionTypeMap
-       {
-               Type key_type, value_type;
-               QName item_qname, key_qname, value_qname;
-               MethodInfo add_method;
-               CollectionDataContractAttribute a;
-
-               public DictionaryTypeMap (
-                       Type type, CollectionDataContractAttribute a, KnownTypeCollection knownTypes)
-                       : base (type, QName.Empty, knownTypes)
-               {
-                       this.a = a;
-
-                       key_type = typeof (object);
-                       value_type = typeof (object);
-
-                       var idic = GetGenericDictionaryInterface (RuntimeType);
-                       if (idic != null) {
-                               var imap = RuntimeType.GetInterfaceMap (idic);
-                               for (int i = 0; i < imap.InterfaceMethods.Length; i++)
-                                       if (imap.InterfaceMethods [i].Name == "Add") {
-                                               add_method = imap.TargetMethods [i];
-                                               break;
-                                       }
-                               var argtypes = idic.GetGenericArguments();
-                               key_type = argtypes [0];
-                               value_type = argtypes [1];
-                               if (add_method == null)
-                                       add_method = type.GetMethod ("Add", argtypes);
-                       }
-
-                       XmlName = GetDictionaryQName ();
-                       item_qname = GetItemQName ();
-                       key_qname = GetKeyQName ();
-                       value_qname = GetValueQName ();
-               }
-
-               static Type GetGenericDictionaryInterface (Type type)
-               {
-                       foreach (var iface in type.GetInterfacesOrSelfInterface ())
-                               if (iface.IsGenericType && iface.GetGenericTypeDefinition () == typeof (IDictionary<,>))
-                                       return iface;
-
-                       return null;
-               }
-
-               string ContractNamespace {
-                       get { return a != null && !String.IsNullOrEmpty (a.Namespace) ? a.Namespace : KnownTypeCollection.MSArraysNamespace; }
-               }
-
-               public override bool IsContractAllowedType { get { return a != null; } }
-
-               public Type KeyType { get { return key_type; } }
-               public Type ValueType { get { return value_type; } }
-
-               internal virtual QName GetDictionaryQName ()
-               {
-                       string name = a != null ? a.Name : null;
-                       string ns = a != null ? a.Namespace : null;
-                       if (RuntimeType.IsGenericType && RuntimeType.GetGenericTypeDefinition () != typeof (Dictionary<,>))
-                               name = name ?? KnownTypeCollection.GetDefaultName (RuntimeType);
-                       else
-                               name = "ArrayOf" + GetItemQName ().Name;
-                       ns = ns ?? KnownTypeCollection.MSArraysNamespace;
-
-                       return new QName (name, ns);
-               }
-
-               internal virtual QName GetItemQName ()
-               {
-                       string name = a != null ? a.ItemName : null;
-                       string ns = a != null ? a.Namespace : null;
-
-                       name = name ?? "KeyValueOf" + KnownTypes.GetQName (key_type).Name + KnownTypes.GetQName (value_type).Name;
-                       ns = ns ?? (a != null ? ContractNamespace : KnownTypeCollection.MSArraysNamespace);
-
-                       return new QName (name, ns);
-               }
-
-               internal virtual QName GetKeyQName ()
-               {
-                       string name = a != null ? a.KeyName : null;
-                       string ns = a != null ? a.Namespace : null;
-
-                       name = name ?? "Key";
-                       ns = ns ?? (a != null ? ContractNamespace : KnownTypeCollection.MSArraysNamespace);
-                       return new QName (name, ns);
-               }
-
-               internal virtual QName GetValueQName ()
-               {
-                       string name = a != null ? a.ValueName : null;
-                       string ns = a != null ? a.Namespace : null;
-
-                       name = name ?? "Value";
-                       ns = ns ?? (a != null ? ContractNamespace : KnownTypeCollection.MSArraysNamespace);
-                       return new QName (name, ns);
-               }
-
-               internal virtual string CurrentNamespace {
-                       get {
-                               string ns = item_qname.Namespace;
-                               if (ns == KnownTypeCollection.MSSimpleNamespace)
-                                       ns = KnownTypeCollection.MSArraysNamespace;
-                               return ns;
-                       }
-               }
-
-               Type pair_type;
-               PropertyInfo pair_key_property, pair_value_property;
-
-               public override void SerializeNonReference (object graph,
-                       XmlFormatterSerializer serializer)
-               {
-                       if (add_method != null) { // generic
-                               if (pair_type == null) {
-                                       pair_type = typeof (KeyValuePair<,>).MakeGenericType (add_method.DeclaringType.GetGenericArguments ());
-                                       pair_key_property = pair_type.GetProperty ("Key");
-                                       pair_value_property = pair_type.GetProperty ("Value");
-                               }
-                               foreach (object p in (IEnumerable) graph) {
-                                       serializer.WriteStartElement (item_qname.Name, item_qname.Namespace, CurrentNamespace);
-                                       serializer.WriteStartElement (key_qname.Name, key_qname.Namespace, CurrentNamespace);
-                                       serializer.Serialize (pair_key_property.PropertyType, pair_key_property.GetValue (p, null));
-                                       serializer.WriteEndElement ();
-                                       serializer.WriteStartElement (value_qname.Name, value_qname.Namespace, CurrentNamespace);
-                                       serializer.Serialize (pair_value_property.PropertyType, pair_value_property.GetValue (p, null));
-                                       serializer.WriteEndElement ();
-                                       serializer.WriteEndElement ();
-                               }
-                       } else { // non-generic
-                               foreach (DictionaryEntry p in (IEnumerable) graph) {
-                                       serializer.WriteStartElement (item_qname.Name, item_qname.Namespace, CurrentNamespace);
-                                       serializer.WriteStartElement (key_qname.Name, key_qname.Namespace, CurrentNamespace);
-                                       serializer.Serialize (key_type, p.Key);
-                                       serializer.WriteEndElement ();
-                                       serializer.WriteStartElement (value_qname.Name, value_qname.Namespace, CurrentNamespace);
-                                       serializer.Serialize (value_type, p.Value);
-                                       serializer.WriteEndElement ();
-                                       serializer.WriteEndElement ();
-                               }
-                       }
-               }
-
-               object CreateInstance ()
-               {
-                       if (RuntimeType.IsInterface) {
-                               if (RuntimeType.IsGenericType && Array.IndexOf (RuntimeType.GetGenericTypeDefinition ().GetInterfaces (), typeof (IDictionary<,>)) >= 0) {
-                                       var gargs = RuntimeType.GetGenericArguments ();
-                                       return Activator.CreateInstance (typeof (Dictionary<,>).MakeGenericType (gargs [0], gargs [1])); // Dictionary<T>
-                               }
-                               else // non-generic
-                                       return new Hashtable ();
-                       }
-#if NET_2_1 // FIXME: is it fine?
-                       return Activator.CreateInstance (RuntimeType);
-#else
-                       return Activator.CreateInstance (RuntimeType, true);
-#endif
-               }
-
-               public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
-               {
-                       object instance = CreateInstance ();
-                       HandleId (id, deserializer, instance);
-                       return instance;
-               }
-
-               public override object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
-               {
-                       object instance = CreateInstance ();
-                       HandleId (id, deserializer, instance);
-                       int depth = reader.NodeType == XmlNodeType.None ? reader.Depth : reader.Depth - 1;
-                       while (reader.NodeType == XmlNodeType.Element && reader.Depth > depth) {
-                               if (reader.IsEmptyElement)
-                                       throw new XmlException (String.Format ("Unexpected empty element for dictionary entry: name {0}", reader.Name));
-                               // FIXME: sloppy parsing
-                               reader.ReadStartElement ();// item_qname.Name, item_qname.Namespace);
-                               reader.MoveToContent ();
-                               object key = deserializer.Deserialize (key_type, reader);
-                               reader.MoveToContent ();
-                               object val = deserializer.Deserialize (value_type, reader);
-                               reader.MoveToContent ();
-                               reader.ReadEndElement (); // of pair
-                               reader.MoveToContent ();
-
-                               if (instance is IDictionary)
-                                       ((IDictionary)instance).Add (key, val);
-                               else if (add_method != null)
-                                       add_method.Invoke (instance, new object [] {key, val});
-                               else
-                                       throw new NotImplementedException (String.Format ("Type {0} is not supported", RuntimeType));
-                       }
-                       return instance;
-               }
-
-               public override List<DataMemberInfo> GetMembers ()
-               {
-                       //Shouldn't come here at all!
-                       throw new NotImplementedException ();
-               }
-       }
-
-       internal partial class SharedTypeMap : SerializationMap
-       {
-               public SharedTypeMap (
-                       Type type, QName qname, KnownTypeCollection knownTypes)
-                       : base (type, qname, knownTypes)
-               {
-               }
-
-               public override bool IsContractAllowedType { get { return true; } }
-
-               public void Initialize ()
-               {
-                       Members = GetMembers (RuntimeType, XmlName, false);
-               }
-
-               List<DataMemberInfo> GetMembers (Type type, QName qname, bool declared_only)
-               {
-                       List<DataMemberInfo> data_members = new List<DataMemberInfo> ();
-                       BindingFlags flags = AllInstanceFlags | BindingFlags.DeclaredOnly;
-                       
-                       for (Type t = type; t != null; t = t.BaseType) {
-                               foreach (FieldInfo fi in t.GetFields (flags)) {
-                                       if (fi.GetCustomAttributes (
-                                               typeof (NonSerializedAttribute),
-                                               false).Length > 0)
-                                               continue;
-
-                                       if (fi.IsInitOnly)
-                                               throw new InvalidDataContractException (String.Format ("DataMember field {0} must not be read-only.", fi));
-                                       DataMemberAttribute dma = new DataMemberAttribute ();
-                                       data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType, KnownTypeCollection.GetStaticQName (fi.DeclaringType).Namespace));
-                               }
-                       }
-
-                       data_members.Sort (DataMemberInfo.DataMemberInfoComparer.Instance); // alphabetic order.
-
-                       return data_members;
-               }
-
-               // Does this make sense? I doubt.
-               public override List<DataMemberInfo> GetMembers ()
-               {
-                       return Members;
-                       //return GetMembers (RuntimeType, XmlName, true);
-               }
-       }
-
-       internal partial class EnumMap : SerializationMap
-       {
-               List<EnumMemberInfo> enum_members;
-               bool flag_attr;
-
-               public EnumMap (
-                       Type type, QName qname, KnownTypeCollection knownTypes)
-                       : base (type, qname, knownTypes)
-               {
-                       bool has_dc = false;
-                       object [] atts = RuntimeType.GetCustomAttributes (
-                               typeof (DataContractAttribute), false);
-                       if (atts.Length != 0)
-                               has_dc = true;
-                       flag_attr = type.GetCustomAttributes (typeof (FlagsAttribute), false).Length > 0;
-
-                       enum_members = new List<EnumMemberInfo> ();
-                       BindingFlags flags = BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Static;
-                       
-                       foreach (FieldInfo fi in RuntimeType.GetFields (flags)) {
-                               string name = fi.Name;
-                               if (has_dc) {
-                                       EnumMemberAttribute ema =
-                                               GetEnumMemberAttribute (fi);
-                                       if (ema == null)
-                                               continue;
-
-                                       if (ema.Value != null)
-                                               name = ema.Value;
-                               }
-
-                               enum_members.Add (new EnumMemberInfo (name, fi.GetValue (null)));
-                       }
-               }
-
-               public override bool IsContractAllowedType { get { return false; } }
-
-               private EnumMemberAttribute GetEnumMemberAttribute (
-                       MemberInfo mi)
-               {
-                       object [] atts = mi.GetCustomAttributes (
-                               typeof (EnumMemberAttribute), false);
-                       if (atts.Length == 0)
-                               return null;
-                       return (EnumMemberAttribute) atts [0];
-               }
-
-               public override void Serialize (object graph,
-                       XmlFormatterSerializer serializer)
-               {
-                       if (flag_attr) {
-                               long val = Convert.ToInt64 (graph);
-                               string s = null;
-                               foreach (EnumMemberInfo emi in enum_members) {
-                                       long f = Convert.ToInt64 (emi.Value);
-                                       if (f == val) {
-                                               s = emi.XmlName;
-                                               break;
-                                       }
-                                       if ((f & val) == f)
-                                               s += (s != null ? " " : String.Empty) + emi.XmlName;
-                               }
-                               if (s != null)
-                                       serializer.Writer.WriteString (s);
-                               return;
-                       } else {
-                               foreach (EnumMemberInfo emi in enum_members) {
-                                       if (Enum.Equals (emi.Value, graph)) {
-                                               serializer.Writer.WriteString (emi.XmlName);
-                                               return;
-                                       }
-                               }
-                       }
-
-                       throw new SerializationException (String.Format (
-                               "Enum value '{0}' is invalid for type '{1}' and cannot be serialized.", graph, RuntimeType));
-               }
-
-               public override object DeserializeEmptyContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
-               {
-                       if (!flag_attr)
-                               throw new SerializationException (String.Format ("Enum value '' is invalid for type '{0}' and cannot be deserialized.", RuntimeType));
-                       var instance = Enum.ToObject (RuntimeType, 0);
-                       HandleId (id, deserializer, instance);
-                       return instance;
-               }
-
-               public override object DeserializeContent (XmlReader reader, XmlFormatterDeserializer deserializer, string id)
-               {
-                       string value = reader.NodeType != XmlNodeType.Text ? String.Empty : reader.ReadContentAsString ();
-                       HandleId (id, deserializer, value);
-
-                       if (value != String.Empty) {
-                               if (flag_attr && value.IndexOf (' ') != -1) {
-                                       long flags = 0L;
-                                       foreach (string flag in value.Split (' ')) {
-                                               foreach (EnumMemberInfo emi in enum_members) {
-                                                       if (emi.XmlName == flag) {
-                                                               flags |= Convert.ToInt64 (emi.Value);
-                                                               break;
-                                                       }
-                                               }
-                                       }
-                                       return Enum.ToObject (RuntimeType, flags);
-                               }
-                               else {
-                                       foreach (EnumMemberInfo emi in enum_members)
-                                               if (emi.XmlName == value)
-                                                       return emi.Value;
-                               }
-                       }
-
-                       if (!flag_attr)
-                               throw new SerializationException (String.Format ("Enum value '{0}' is invalid for type '{1}' and cannot be deserialized.", value, RuntimeType));
-                       return Enum.ToObject (RuntimeType, 0);
-               }
-       }
-
-       internal struct EnumMemberInfo
-       {
-               public readonly string XmlName;
-               public readonly object Value;
-
-               public EnumMemberInfo (string name, object value)
-               {
-                       XmlName = name;
-                       Value = value;
-               }
-       }
-
-       internal class DataMemberInfo //: KeyValuePair<int, MemberInfo>
-       {
-               public readonly int Order;
-               public readonly bool IsRequired;
-               public readonly string XmlName;
-               public readonly MemberInfo Member;
-               public readonly string XmlNamespace;
-               public readonly string XmlRootNamespace;
-               public readonly Type MemberType;
-
-               public DataMemberInfo (MemberInfo member, DataMemberAttribute dma, string rootNamespce, string ns)
-               {
-                       if (dma == null)
-                               throw new ArgumentNullException ("dma");
-                       Order = dma.Order;
-                       Member = member;
-                       IsRequired = dma.IsRequired;
-                       XmlName = XmlConvert.EncodeLocalName (dma.Name != null ? dma.Name : member.Name);
-                       XmlNamespace = ns;
-                       XmlRootNamespace = rootNamespce;
-                       if (Member is FieldInfo)
-                               MemberType = ((FieldInfo) Member).FieldType;
-                       else
-                               MemberType = ((PropertyInfo) Member).PropertyType;
-               }
-
-               public class DataMemberInfoComparer : IComparer<DataMemberInfo>
-                       , IComparer // see bug #76361
-               {
-                       public static readonly DataMemberInfoComparer Instance
-                               = new DataMemberInfoComparer ();
-
-                       private DataMemberInfoComparer () {}
-
-                       public int Compare (object o1, object o2)
-                       {
-                               return Compare ((DataMemberInfo) o1,
-                                       (DataMemberInfo) o2);
-                       }
-
-                       public int Compare (DataMemberInfo d1, DataMemberInfo d2)
-                       {
-                               if (d1.Order == d2.Order)
-                                       return String.CompareOrdinal (d1.XmlName, d2.XmlName);
-
-                               return d1.Order - d2.Order;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterDeserializer.cs
deleted file mode 100644 (file)
index a0a9632..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-//
-// XmlFormatterDeserializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Xml;
-using System.Xml.Schema;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       internal class XmlFormatterDeserializer
-       {
-               KnownTypeCollection types;
-               IDataContractSurrogate surrogate;
-               DataContractResolver resolver, default_resolver; // new in 4.0.
-               // 3.5 SP1 supports deserialization by reference (id->obj).
-               // Though unlike XmlSerializer, it does not support forward-
-               // reference resolution i.e. a referenced object must appear
-               // before any references to it.
-               Dictionary<string,object> references = new Dictionary<string,object> ();
-               Dictionary<QName,Type> resolved_qnames = new Dictionary<QName,Type> ();
-
-               public static object Deserialize (XmlReader reader, Type declaredType,
-                       KnownTypeCollection knownTypes, IDataContractSurrogate surrogate, DataContractResolver resolver, DataContractResolver defaultResolver,
-                       string name, string ns, bool verifyObjectName)
-               {
-                       reader.MoveToContent ();
-                       if (verifyObjectName)
-                               if (reader.NodeType != XmlNodeType.Element ||
-                                   reader.LocalName != name ||
-                                   reader.NamespaceURI != ns)
-                                       throw new SerializationException (String.Format ("Expected element '{0}' in namespace '{1}', but found {2} node '{3}' in namespace '{4}'", name, ns, reader.NodeType, reader.LocalName, reader.NamespaceURI));
-//                             Verify (knownTypes, declaredType, name, ns, reader);
-                       return new XmlFormatterDeserializer (knownTypes, surrogate, resolver, defaultResolver).Deserialize (declaredType, reader);
-               }
-
-               // Verify the top element name and namespace.
-               private static void Verify (KnownTypeCollection knownTypes, Type type, string name, string Namespace, XmlReader reader)
-               {
-                       QName graph_qname = new QName (reader.LocalName, reader.NamespaceURI);
-                       if (graph_qname.Name == name && graph_qname.Namespace == Namespace)
-                               return;
-
-                       // <BClass .. i:type="EClass" >..</BClass>
-                       // Expecting type EClass : allowed
-                       // See test Serialize1b, and Serialize1c (for
-                       // negative cases)
-
-                       // Run through inheritance heirarchy .. 
-                       for (Type baseType = type; baseType != null; baseType = baseType.BaseType)
-                               if (knownTypes.GetQName (baseType) == graph_qname)
-                                       return;
-
-                       QName typeQName = knownTypes.GetQName (type);
-                       throw new SerializationException (String.Format (
-                               "Expecting element '{0}' from namespace '{1}'. Encountered 'Element' with name '{2}', namespace '{3}'",
-                               typeQName.Name, typeQName.Namespace, graph_qname.Name, graph_qname.Namespace));
-               }
-
-               private XmlFormatterDeserializer (
-                       KnownTypeCollection knownTypes,
-                       IDataContractSurrogate surrogate,
-                       DataContractResolver resolver,
-                       DataContractResolver defaultResolver)
-               {
-                       this.types = knownTypes;
-                       this.surrogate = surrogate;
-                       this.resolver = resolver;
-                       this.default_resolver = defaultResolver;
-               }
-
-               public Dictionary<string,object> References {
-                       get { return references; }
-               }
-
-               XmlDocument document;
-               
-               XmlDocument XmlDocument {
-                       get { return (document = document ?? new XmlDocument ()); }
-               }
-
-               // This method handles z:Ref, xsi:nil and primitive types, and then delegates to DeserializeByMap() for anything else.
-
-               public object Deserialize (Type type, XmlReader reader)
-               {
-                       if (type == typeof (XmlElement))
-                               return XmlDocument.ReadNode (reader);
-                       else if (type == typeof (XmlNode [])) {
-                               reader.ReadStartElement ();
-                               var l = new List<XmlNode> ();
-                               for(; !reader.EOF && reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ())
-                                       l.Add (XmlDocument.ReadNode (reader));
-                               reader.ReadEndElement ();
-                               return l.ToArray ();
-                       }
-                       QName graph_qname = null;
-                       
-                       if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>)) {
-                               Type internal_type = type.GetGenericArguments () [0];
-                               
-                               if (types.FindUserMap(internal_type) != null) {
-                                       graph_qname = types.GetQName (internal_type);
-                               }
-                       }
-                       
-                       if (graph_qname == null)
-                               graph_qname = types.GetQName (type);
-                               
-                       string itype = reader.GetAttribute ("type", XmlSchema.InstanceNamespace);
-                       if (itype != null) {
-                               string [] parts = itype.Split (':');
-                               if (parts.Length > 1)
-                                       graph_qname = new QName (parts [1], reader.LookupNamespace (reader.NameTable.Get (parts [0])));
-                               else
-                                       graph_qname = new QName (itype, reader.LookupNamespace (String.Empty));
-                       }
-
-                       string label = reader.GetAttribute ("Ref", KnownTypeCollection.MSSimpleNamespace);
-                       if (label != null) {
-                               object o;
-                               if (!references.TryGetValue (label, out o))
-                                       throw new SerializationException (String.Format ("Deserialized object with reference Id '{0}' was not found", label));
-                               reader.Skip ();
-                               return o;
-                       }
-
-                       bool isNil = reader.GetAttribute ("nil", XmlSchema.InstanceNamespace) == "true";
-
-                       if (isNil) {
-                               reader.Skip ();
-                               if (!type.IsValueType || type == typeof (void))
-                                       return null;
-                               else if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>))
-                                       return null;
-                               else 
-                                       throw new SerializationException (String.Format ("Value type {0} cannot be null.", type));
-                       }
-
-                       if (resolver != null) {
-                               Type t;
-                               if (resolved_qnames.TryGetValue (graph_qname, out t))
-                                       type = t;
-                               else { // i.e. resolve name only once.
-                                       type = resolver.ResolveName (graph_qname.Name, graph_qname.Namespace, type, default_resolver) ?? type;
-                                       resolved_qnames.Add (graph_qname, type);
-                                       types.Add (type);
-                               }
-                       }
-
-                       if (KnownTypeCollection.GetPrimitiveTypeFromName (graph_qname) != null) {
-                               string id = reader.GetAttribute ("Id", KnownTypeCollection.MSSimpleNamespace);
-
-                               object ret = DeserializePrimitive (type, reader, graph_qname);
-
-                               if (id != null) {
-                                       if (references.ContainsKey (id))
-                                               throw new InvalidOperationException (String.Format ("Object with Id '{0}' already exists as '{1}'", id, references [id]));
-                                       references.Add (id, ret);
-                               }
-                               return ret;
-                       }
-
-                       return DeserializeByMap (graph_qname, type, reader);
-               }
-
-               object DeserializePrimitive (Type type, XmlReader reader, QName qname)
-               {
-                       bool isDateTimeOffset = false;
-                       // Handle DateTimeOffset type and DateTimeOffset?.
-                       if (type == typeof (DateTimeOffset))
-                               isDateTimeOffset = true;
-                       else if(type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>)) 
-                               isDateTimeOffset = type.GetGenericArguments () [0] == typeof (DateTimeOffset);  
-                       // It is the only exceptional type that does not serialize to string but serializes into complex element.
-                       if (isDateTimeOffset) {
-                               if (reader.IsEmptyElement) {
-                                       reader.Read ();
-                                       return default (DateTimeOffset);
-                               }
-                               reader.ReadStartElement ();
-                               reader.MoveToContent ();
-                               var date = reader.ReadElementContentAsDateTime ("DateTime", KnownTypeCollection.DefaultClrNamespaceSystem);
-                               var off = TimeSpan.FromMinutes (reader.ReadElementContentAsInt ("OffsetMinutes", KnownTypeCollection.DefaultClrNamespaceSystem));
-                               reader.MoveToContent ();
-                               reader.ReadEndElement ();
-                               return new DateTimeOffset (DateTime.SpecifyKind (date.ToUniversalTime () + off, DateTimeKind.Unspecified), off);
-                       }
-
-                       string value;
-                       if (reader.IsEmptyElement) {
-                               reader.Read (); // advance
-                               if (type.IsValueType)
-                                       return Activator.CreateInstance (type);
-                               else
-                                       // FIXME: Workaround for creating empty objects of the correct type.
-                                       value = String.Empty;
-                       }
-                       else
-                               value = reader.ReadElementContentAsString ();
-                       return KnownTypeCollection.PredefinedTypeStringToObject (value, qname.Name, reader);
-               }
-
-               object DeserializeByMap (QName name, Type type, XmlReader reader)
-               {
-                       SerializationMap map = null;
-                       // List<T> and T[] have the same QName, use type to find map work better.
-                       if(name.Name.StartsWith ("ArrayOf", StringComparison.Ordinal) || resolved_qnames.ContainsKey (name))
-                               map = types.FindUserMap (type);
-                       else
-                               map = types.FindUserMap (name); // use type when the name is "resolved" one. Otherwise use name (there are cases that type cannot be resolved by type).
-                       if (map == null && (name.Name.StartsWith ("ArrayOf", StringComparison.Ordinal) ||
-                           name.Namespace == KnownTypeCollection.MSArraysNamespace ||
-                           name.Namespace.StartsWith (KnownTypeCollection.DefaultClrNamespaceBase, StringComparison.Ordinal))) {
-                               var it = GetTypeFromNamePair (name.Name, name.Namespace);
-                               types.Add (it);
-                               map = types.FindUserMap (name);
-                       }
-                       if (map == null)
-                               throw new SerializationException (String.Format ("Unknown type {0} is used for DataContract with reference of name {1}. Any derived types of a data contract or a data member should be added to KnownTypes.", type, name));
-
-                       return map.DeserializeObject (reader, this);
-               }
-
-               Type GetTypeFromNamePair (string name, string ns)
-               {
-                       Type p = KnownTypeCollection.GetPrimitiveTypeFromName (new QName (name, ns));
-                       if (p != null)
-                               return p;
-                       bool makeArray = false;
-                       if (name.StartsWith ("ArrayOf", StringComparison.Ordinal)) {
-                               name = name.Substring (7); // strip "ArrayOf"
-                               if (ns == KnownTypeCollection.MSArraysNamespace)
-                                       return GetTypeFromNamePair (name, KnownTypeCollection.MSSimpleNamespace).MakeArrayType ();
-                               makeArray = true;
-                       }
-
-                       string dnsb = KnownTypeCollection.DefaultClrNamespaceBase;
-                       string clrns = ns.StartsWith (dnsb, StringComparison.Ordinal) ?  ns.Substring (dnsb.Length) : ns;
-
-                       foreach (var ass in AppDomain.CurrentDomain.GetAssemblies ()) {
-                               Type [] types;
-
-                               types = ass.GetTypes ();
-                               if (types == null)
-                                       continue;
-
-                               foreach (var t in types) {
-                                       // there can be null entries or exception throw to access the attribute - 
-                                       // at least when some referenced assemblies could not be loaded (affects moonlight)
-                                       if (t == null)
-                                               continue;
-
-                                       try {
-                                               var dca = t.GetCustomAttribute<DataContractAttribute> (true);
-                                               if (dca != null && dca.Name == name && dca.Namespace == ns)
-                                                       return makeArray ? t.MakeArrayType () : t;
-                                       }
-                                       catch (TypeLoadException tle) {
-                                               Console.Error.WriteLine (tle);
-                                               continue;
-                                       }
-                                       catch (FileNotFoundException fnfe) {
-                                               Console.Error.WriteLine (fnfe);
-                                               continue;
-                                       }
-
-                                       if (clrns != null && t.Name == name && t.Namespace == clrns)
-                                               return makeArray ? t.MakeArrayType () : t;
-                               }
-                       }
-                       throw new XmlException (String.Format ("Type not found; name: {0}, namespace: {1}", name, ns));
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlFormatterSerializer.cs
deleted file mode 100644 (file)
index 4dae584..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-//
-// XmlFormatterSerializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Xml;
-using System.Xml.Schema;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       internal class XmlFormatterSerializer
-       {
-               XmlDictionaryWriter writer;
-               object graph;
-               KnownTypeCollection types;
-               
-               bool save_id;
-               bool ignore_unknown;
-               IDataContractSurrogate surrogate;
-               DataContractResolver resolver, default_resolver; // new in 4.0
-               int max_items;
-
-               List<object> objects = new List<object> ();
-               Dictionary<object,string> references = new Dictionary<object,string> (); // preserve possibly referenced objects to ids. (new in 3.5 SP1)
-
-               public static void Serialize (XmlDictionaryWriter writer, object graph, Type declaredType, KnownTypeCollection types,
-                       bool ignoreUnknown, int maxItems, string root_ns, bool preserveObjectReferences, DataContractResolver resolver, DataContractResolver defaultResolver)
-               {
-                       new XmlFormatterSerializer (writer, types, ignoreUnknown, maxItems, root_ns, preserveObjectReferences, resolver, defaultResolver)
-                               .Serialize (/*graph != null ? graph.GetType () : */declaredType, graph); // FIXME: I believe it should always use declaredType, but such a change brings some test breakages.
-               }
-
-               public XmlFormatterSerializer (XmlDictionaryWriter writer, KnownTypeCollection types, bool ignoreUnknown,
-                                              int maxItems, string root_ns, bool preserveObjectReferences,
-                                              DataContractResolver resolver, DataContractResolver defaultResolver)
-               {
-                       this.writer = writer;
-                       this.types = types;
-                       ignore_unknown = ignoreUnknown;
-                       max_items = maxItems;
-                       PreserveObjectReferences = preserveObjectReferences;
-                       this.resolver = resolver;
-                       this.default_resolver = defaultResolver;
-               }
-
-               public bool PreserveObjectReferences { get; private set; }
-
-               public List<object> SerializingObjects {
-                       get { return objects; }
-               }
-
-               public XmlDictionaryWriter Writer {
-                       get { return writer; }
-               }
-
-               public void Serialize (Type type, object graph)
-               {
-                       if (graph == null)
-                               writer.WriteAttributeString ("i", "nil", XmlSchema.InstanceNamespace, "true");
-                       else if (type == typeof (XmlElement))
-                               ((XmlElement) graph).WriteTo (Writer);
-                       else if (type == typeof (XmlNode [])) {
-                               foreach (var xn in (XmlNode []) graph)
-                                       xn.WriteTo (Writer);
-                       }
-                       else {
-                               QName resolvedQName = null;
-                               if (resolver != null) {
-                                       XmlDictionaryString rname, rns;
-                                       if (resolver.TryResolveType (graph != null ? graph.GetType () : typeof (object), type, default_resolver, out rname, out rns))
-                                               resolvedQName = new QName (rname.Value, rns.Value);
-                               }
-
-                               Type actualType = graph.GetType ();
-
-                               SerializationMap map;
-                               map = types.FindUserMap (actualType);
-                               // For some collection types, the actual type does not matter. So get nominal serialization type instead.
-                               // (The code below also covers the lines above, but I don't remove above lines to avoid extra search cost.)
-                               if (map == null) {
-                                       // FIXME: not sure if type.IsInterface is the correct condition to determine whether items are serialized with i:type or not. (e.g. bug #675144 server response).
-                                       actualType = types.GetSerializedType (type.IsInterface ? type : actualType);
-                                       map = types.FindUserMap (actualType);
-                               }
-                               // If it is still unknown, then register it.
-                               if (map == null) {
-                                       types.Add (actualType);
-                                       map = types.FindUserMap (actualType);
-                               }
-                               
-                               bool explicityType = false;
-                               if(type != actualType)
-                               {
-                                       // Check if underlying type of Nullable, mismatch the current type.
-                                       if(type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>))
-                                               explicityType = (type.GetGenericArguments () [0] != actualType);
-                                       else
-                                               explicityType = true;
-                               }
-
-                               if (explicityType && (map == null || map.OutputXsiType)) {
-                                       QName qname = resolvedQName ?? types.GetXmlName (actualType);
-                                       string name = qname.Name;
-                                       string ns = qname.Namespace;
-                                       if (qname == QName.Empty) {
-                                               name = XmlConvert.EncodeLocalName (actualType.Name);
-                                               ns = KnownTypeCollection.DefaultClrNamespaceBase + actualType.Namespace;
-                                       } else if (XmlSchemaType.GetBuiltInSimpleType (new QName (qname.Name, XmlSchema.Namespace)) != null)
-                                               ns = XmlSchema.Namespace;
-                                       if (writer.LookupPrefix (ns) == null) // it goes first (extraneous, but it makes att order compatible)
-                                               writer.WriteXmlnsAttribute (null, ns);
-                                       writer.WriteStartAttribute ("i", "type", XmlSchema.InstanceNamespace);
-                                       writer.WriteQualifiedName (name, ns);
-                                       writer.WriteEndAttribute ();
-                               }
-                               QName predef = KnownTypeCollection.GetPredefinedTypeName (actualType);
-                               if (predef != QName.Empty)
-                                       SerializePrimitive (type, graph, predef);
-                               else
-                                       map.Serialize (graph, this);
-                       }
-               }
-
-               public void SerializePrimitive (Type type, object graph, QName qname)
-               {
-                       string label;
-                       if (TrySerializeAsReference (false, graph, out label))
-                               return;
-                       if (label != null)
-                               Writer.WriteAttributeString ("z", "Id", KnownTypeCollection.MSSimpleNamespace, label);
-
-                       bool isDateTimeOffset = false;
-                       // Handle DateTimeOffset type and DateTimeOffset?
-                       if (type == typeof (DateTimeOffset))
-                               isDateTimeOffset = true;
-                       else if(type.IsGenericType && type.GetGenericTypeDefinition () == typeof (Nullable<>)) 
-                               isDateTimeOffset = type.GetGenericArguments () [0] == typeof (DateTimeOffset);  
-                       // It is the only exceptional type that does not serialize to string but serializes into complex element.
-                       if (isDateTimeOffset) {
-                               var v = (DateTimeOffset) graph;
-                               writer.WriteStartElement ("DateTime", KnownTypeCollection.DefaultClrNamespaceSystem);
-                               SerializePrimitive (typeof (DateTime), DateTime.SpecifyKind (v.DateTime.Subtract (v.Offset), DateTimeKind.Utc), KnownTypeCollection.GetPredefinedTypeName (typeof (DateTime)));
-                               writer.WriteEndElement ();
-                               writer.WriteStartElement ("OffsetMinutes", KnownTypeCollection.DefaultClrNamespaceSystem);
-                               SerializePrimitive (typeof (int), v.Offset.TotalMinutes, KnownTypeCollection.GetPredefinedTypeName (typeof (int)));
-                               writer.WriteEndElement ();
-                       }
-                       else
-                               writer.WriteString (KnownTypeCollection.PredefinedTypeObjectToString (graph));
-               }
-
-               public void WriteStartElement (string memberName, string memberNamespace, string contentNamespace)
-               {
-                       writer.WriteStartElement (memberName, memberNamespace);
-                       if (!string.IsNullOrEmpty (contentNamespace) && contentNamespace != memberNamespace)
-                               writer.WriteXmlnsAttribute (null, contentNamespace);
-               }
-
-               public void WriteEndElement ()
-               {
-                       writer.WriteEndElement ();
-               }
-
-               // returned bool: whether z:Ref is written or not.
-               // out label: object label either in use or newly allocated.
-               public bool TrySerializeAsReference (bool isMapReference, object graph, out string label)
-               {
-                       label = null;
-                       if (!isMapReference && (!PreserveObjectReferences || graph == null || graph.GetType ().IsValueType))
-                               return false;
-
-                       if (references.TryGetValue (graph, out label)) {
-                               Writer.WriteAttributeString ("z", "Ref", KnownTypeCollection.MSSimpleNamespace, label);
-                               label = null; // do not write label
-                               return true;
-                       }
-
-                       label = "i" + (references.Count + 1);
-                       references.Add (graph, label);
-
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlObjectSerializer.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlObjectSerializer.cs
deleted file mode 100644 (file)
index 2abb766..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// XmlObjectSerializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.IO;
-using System.Text;
-using System.Reflection;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Xml;
-using System.Xml.Schema;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       public abstract class XmlObjectSerializer
-       {
-               // This is only for compatible mode.
-               IDataContractSurrogate surrogate;
-
-               SerializationBinder binder;
-               ISurrogateSelector selector;
-
-               int max_items = 0x10000; // FIXME: could be from config.
-
-               protected XmlObjectSerializer ()
-               {
-               }
-
-               public virtual bool IsStartObject (XmlReader reader)
-               {
-                       return IsStartObject (XmlDictionaryReader.CreateDictionaryReader (reader));
-               }
-
-               public abstract bool IsStartObject (XmlDictionaryReader reader);
-
-               public virtual object ReadObject (Stream stream)
-               {
-                       var settings = new XmlReaderSettings ();
-                       settings.CheckCharacters = false;
-                       return ReadObject (XmlReader.Create (stream, settings));
-               }
-
-               public virtual object ReadObject (XmlReader reader)
-               {
-                       return ReadObject (XmlDictionaryReader.CreateDictionaryReader (reader));
-               }
-
-               public virtual object ReadObject (XmlDictionaryReader reader)
-               {
-                       return ReadObject (reader, true);
-               }
-
-               public virtual object ReadObject (XmlReader reader, bool readContentOnly)
-               {
-                       return ReadObject (
-                               XmlDictionaryReader.CreateDictionaryReader (reader),
-                               readContentOnly);
-               }
-
-               [MonoTODO]
-               public abstract object ReadObject (XmlDictionaryReader reader, bool readContentOnly);
-
-               public virtual void WriteObject (Stream stream, object graph)
-               {
-                       var settings = new XmlWriterSettings ();
-                       settings.Encoding = Encoding.UTF8;
-                       settings.CloseOutput = false;
-                       settings.OmitXmlDeclaration = true;
-                       settings.CheckCharacters = false;
-                       using (XmlWriter xw = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (stream, settings))) {
-                               WriteObject (xw, graph);
-                       }
-               }
-
-               public virtual void WriteObject (XmlWriter writer, object graph)
-               {
-                       WriteObject (XmlDictionaryWriter.CreateDictionaryWriter (writer), graph);
-               }
-
-               public virtual void WriteStartObject (XmlWriter writer, object graph)
-               {
-                       WriteStartObject (XmlDictionaryWriter.CreateDictionaryWriter (writer), graph);
-               }
-
-               public virtual void WriteObject (XmlDictionaryWriter writer, object graph)
-               {
-                       WriteStartObject (writer, graph);
-                       WriteObjectContent (writer, graph);
-                       WriteEndObject (writer);
-               }
-
-               public abstract void WriteStartObject (
-                       XmlDictionaryWriter writer, object graph);
-
-               public virtual void WriteObjectContent (XmlWriter writer, object graph)
-               {
-                       WriteObjectContent (
-                               XmlDictionaryWriter.CreateDictionaryWriter (writer),
-                               graph);
-               }
-
-               public abstract void WriteObjectContent (
-                       XmlDictionaryWriter writer, object graph);
-
-               public virtual void WriteEndObject (XmlWriter writer)
-               {
-                       WriteEndObject (XmlDictionaryWriter.CreateDictionaryWriter (writer));
-               }
-
-               public abstract void WriteEndObject (
-                       XmlDictionaryWriter writer);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlSerializableServices.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XmlSerializableServices.cs
deleted file mode 100644 (file)
index a2cf7e6..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// XmlSerializableServices.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Xml;
-using System.Xml.Schema;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       public static class XmlSerializableServices
-       {
-               static Dictionary<QName, XmlSchemaSet> defaultSchemas
-                       = new Dictionary<QName, XmlSchemaSet> ();
-
-               [MonoTODO]
-               public static void AddDefaultSchema (
-                       XmlSchemaSet schemas,
-                       QName typeQName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public static XmlNode [] ReadNodes (XmlReader xmlReader)
-               {
-                       if (xmlReader.NodeType != XmlNodeType.Element || xmlReader.IsEmptyElement)
-                               return new XmlNode [0];
-
-                       int depth = xmlReader.Depth;
-                       xmlReader.Read ();
-                       if (xmlReader.NodeType == XmlNodeType.EndElement)
-                               return new XmlNode [0];
-
-                       List<XmlNode> al = new List<XmlNode> ();
-                       XmlDocument doc = new XmlDocument ();
-                       while (xmlReader.Depth > depth & !xmlReader.EOF)
-                               al.Add (doc.ReadNode (xmlReader));
-                       return al.ToArray ();
-               }
-
-               public static void WriteNodes (XmlWriter xmlWriter,
-                       XmlNode [] nodes)
-               {
-                       foreach (XmlNode n in nodes)
-                               n.WriteTo (xmlWriter);
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractExporter.cs
deleted file mode 100644 (file)
index b3959eb..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-//
-// XsdDataContractExporter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-using QName = System.Xml.XmlQualifiedName;
-
-//
-// .NET exports almost empty schema for "http://www.w3.org/2001/XMLSchema" that
-// contains only "schema" element which consists of a complexType with empty
-// definition (i.e. <complexType/> ).
-//
-
-namespace System.Runtime.Serialization
-{
-       public class XsdDataContractExporter
-       {
-               class TypeImportInfo
-               {
-                       public Type ClrType { get; set; }
-                       public QName RootElementName { get; set; }
-                       public XmlSchemaType SchemaType { get; set; }
-                       public QName  SchemaTypeName { get; set; }
-               }
-
-               static readonly List<TypeImportInfo> predefined_types;
-
-               static XsdDataContractExporter ()
-               {
-                       var l = new List<TypeImportInfo> ();
-                       predefined_types = l;
-                       if (!MSTypesSchema.IsCompiled)
-                               MSTypesSchema.Compile (null);
-                       foreach (XmlSchemaElement el in MSTypesSchema.Elements.Values) {
-                               var typeName = el.ElementSchemaType.QualifiedName;
-                               var info = new TypeImportInfo () {
-                                       RootElementName = el.QualifiedName,
-                                       SchemaType = typeName.Namespace == XmlSchema.Namespace ? null : el.ElementSchemaType,
-                                       SchemaTypeName = typeName,
-                                       ClrType = GetPredefinedTypeFromQName (typeName) };
-                               l.Add (info);
-                       }
-               }
-
-               // Note that this does not handle DBNull and DateTimeOffset
-               // (they are not included in the predefined schema)
-               static Type GetPredefinedTypeFromQName (QName qname)
-               {
-                       switch (qname.Namespace) {
-                       case XmlSchema.Namespace:
-                       case KnownTypeCollection.MSSimpleNamespace:
-                               return KnownTypeCollection.GetPrimitiveTypeFromName (qname);
-                       }
-                       throw new Exception ("Should not happen");
-               }
-
-               static XmlSchema mstypes_schema;
-               static XmlSchema MSTypesSchema {
-                       get {
-                               if (mstypes_schema == null) {
-                                       Assembly a = Assembly.GetCallingAssembly ();
-                                       Stream s = a.GetManifestResourceStream ("mstypes.schema");
-                                       mstypes_schema= XmlSchema.Read (s, null);
-                               }
-                               return mstypes_schema;
-                       }
-               }
-
-               KnownTypeCollection known_types = new KnownTypeCollection ();
-               List<TypeImportInfo> imported_types = new List<TypeImportInfo> ();
-
-               public XsdDataContractExporter ()
-                       : this (new XmlSchemaSet ())
-               {
-               }
-               
-               public XsdDataContractExporter (XmlSchemaSet schemas)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-#if false // by default this is the only added schema. But it is pointless...
-                       var xs = new XmlSchema () { TargetNamespace = XmlSchema.Namespace };
-                       xs.Items.Add (new XmlSchemaElement () { Name = "schema", SchemaType = new XmlSchemaComplexType () });
-                       schemas.Add (xs);
-#else // FIXME: it is added only when the included items are in use.
-                       schemas.Add (MSTypesSchema);
-#endif
-                       Schemas = schemas;
-               }
-               
-               public ExportOptions Options { get; set; }
-               public XmlSchemaSet Schemas { get; private set; }
-
-               // CanExport implementation
-
-               public bool CanExport (ICollection<Assembly> assemblies)
-               {
-                       if (assemblies == null)
-                               throw new ArgumentNullException ("assemblies");
-                       foreach (var ass in assemblies)
-                               if (!CanExport (ass.GetTypes ()))
-                                       return false;
-                       return true;
-               }
-               
-               public bool CanExport (ICollection<Type> types)
-               {
-                       if (types == null)
-                               throw new ArgumentNullException ("types");
-                       foreach (var type in types)
-                               if (!CanExport (type))
-                                       return false;
-                       return true;
-               }
-               
-               public bool CanExport (Type type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-
-                       if (predefined_types.FirstOrDefault (i => i.ClrType == type) != null)
-                               return true;
-
-                       known_types.Add (type);
-                       return known_types.FindUserMap (type) != null;
-               }
-
-               // Export implementation
-
-               public void Export (ICollection<Assembly> assemblies)
-               {
-                       if (assemblies == null)
-                               throw new ArgumentNullException ("assemblies");
-                       foreach (var ass in assemblies)
-                               Export (ass.GetTypes ());
-               }
-               
-               public void Export (ICollection<Type> types)
-               {
-                       if (types == null)
-                               throw new ArgumentNullException ("types");
-                       foreach (var type in types)
-                               Export (type);
-               }
-               
-               public void Export (Type type)
-               {
-                       if (ExportCore (type, true)) {
-                               // This reprocess is required to clean up compilation state.
-                               foreach (XmlSchema xs in Schemas.Schemas ())
-                                       Schemas.Reprocess (xs);
-                               Schemas.Compile ();
-                       }
-               }
-
-               // returns true if it requires recompilcation
-               bool ExportCore (Type type, bool rejectNonContract)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-
-                       if (predefined_types.FirstOrDefault (i => i.ClrType == type) != null) {
-                               if (Schemas.Contains (MSTypesSchema.TargetNamespace))
-                                       return false; // exists
-                               Schemas.Add (MSTypesSchema);
-                               return false;
-                       }
-                       if (imported_types.FirstOrDefault (i => i.ClrType == type) != null)
-                               return false;
-
-                       known_types.Add (type);
-                       var map = known_types.FindUserMap (type);
-                       if (map == null)
-                               return false;
-                       map.ExportSchemaType (this);
-                       return true;
-               }
-               
-               internal void ExportDictionaryContractType (CollectionDataContractAttribute attr, SerializationMap map, Type dicType)
-               {
-                       var type = map.RuntimeType;
-                       var qname = map.XmlName;
-
-                       var typeArgs = dicType.IsGenericType ? dicType.GetGenericArguments () : null;
-                       var keyType = typeArgs != null ? typeArgs [0] : typeof (object);
-                       var valueType = typeArgs != null ? typeArgs [1] : typeof (object);
-                       ExportCore (keyType, false);
-                       ExportCore (valueType, false);
-
-                       string keyName = "Key", valueName = "Value";
-                       if (attr != null) {
-                               keyName = attr.KeyName ?? keyName;
-                               valueName = attr.ValueName ?? valueName;
-                       }
-                       string itemName = attr != null && attr.ItemName != null ? attr.ItemName : "KeyValueOf" + keyName + valueName;
-
-                       var ct = CreateComplexType (qname, type);
-                       var appInfo = new XmlSchemaAppInfo ();
-                       var node = new XmlDocument ().CreateElement ("IsDictionary", KnownTypeCollection.MSSimpleNamespace);
-                       node.InnerText = "true";
-                       appInfo.Markup = new XmlNode [] { node };
-                       ct.Annotation = new XmlSchemaAnnotation ();
-                       ct.Annotation.Items.Add (appInfo);
-
-                       var seq = new XmlSchemaSequence ();
-                       ct.Particle = seq;
-                       var el = new XmlSchemaElement () { Name = itemName, MinOccurs = 0, MaxOccursString = "unbounded" };
-                       seq.Items.Add (el);
-
-                       var dictType = new XmlSchemaComplexType ();
-                       el.SchemaType = dictType;
-                       var dictSeq = new XmlSchemaSequence ();
-                       dictType.Particle = dictSeq;
-                       dictSeq.Items.Add (new XmlSchemaElement () { Name = keyName, SchemaTypeName = GetSchemaTypeName (keyType), IsNillable = true });
-                       dictSeq.Items.Add (new XmlSchemaElement () { Name = valueName, SchemaTypeName = GetSchemaTypeName (valueType), IsNillable = true });
-               }
-               
-               internal void ExportListContractType (CollectionDataContractAttribute attr, CollectionTypeMap map)
-               {
-                       Type type = map.RuntimeType;
-                       var qname = map.XmlName;
-
-                       var typeArgs = type.IsGenericType ? type.GetGenericArguments () : null;
-                       if (typeArgs != null && typeArgs.Length != 1)
-                               throw new InvalidDataContractException ("CollectionDataContractAttribute is applied to non-collection type.");
-
-                       var itemType = typeArgs != null ? typeArgs [0] : type.IsArray ? type.GetElementType () : typeof (object);
-                       bool nullable = !itemType.IsValueType;
-                       if (itemType.IsGenericType && itemType.GetGenericTypeDefinition () == typeof (Nullable<>)) {
-                               itemType = itemType.GetGenericArguments () [0];
-                               nullable = true;
-                       }
-                       ExportCore (itemType, false);
-
-                       var itemQName = GetSchemaTypeName (itemType);
-                       var itemName = attr != null && attr.ItemName != null ? attr.ItemName : itemQName.Name;
-
-                       var ct = CreateComplexType (qname, type);
-                       var seq = new XmlSchemaSequence ();
-                       ct.Particle = seq;
-                       var el = new XmlSchemaElement () { Name = itemName, MinOccurs = 0, MaxOccursString = "unbounded", SchemaTypeName = itemQName, IsNillable = nullable };
-                       seq.Items.Add (el);
-
-                       /*
-                       var arrayType = new XmlSchemaComplexType ();
-                       el.SchemaType = arrayType;
-                       var arraySeq = new XmlSchemaSequence ();
-                       arrayType.Particle = arraySeq;
-                       arraySeq.Items.Add (new XmlSchemaElement () { Name = itemName, SchemaTypeName = itemQName, IsNillable = true });
-                       */
-               }
-
-               internal void ExportEnumContractType (DataContractAttribute attr, SerializationMap map)
-               {
-                       Type type = map.RuntimeType;
-                       var qname = map.XmlName;
-                       var st = CreateSimpleType (qname, type);
-                       if (type.GetCustomAttribute<FlagsAttribute> (false) != null) {
-                               var list = new XmlSchemaSimpleTypeList ();
-                               var sct = new XmlSchemaSimpleType ();
-                               sct.Content = CreateEnumMembers (type, attr != null);
-                               list.ItemType = sct;
-                               st.Content = list;
-                       }
-                       else
-                               st.Content = CreateEnumMembers (type, attr != null);
-               }
-
-               XmlSchemaSimpleTypeRestriction CreateEnumMembers (Type type, bool expectAttribute)
-               {
-                       var r = new XmlSchemaSimpleTypeRestriction () { BaseTypeName = GetSchemaTypeName (typeof (string)) };
-                       foreach (var mi in type.GetFields (BindingFlags.Public | BindingFlags.Static)) {
-                               var ema = expectAttribute ? mi.GetCustomAttribute<EnumMemberAttribute> (false) : null;
-                               if (expectAttribute && ema == null)
-                                       continue;
-                               var xe = new XmlSchemaEnumerationFacet () { Value = ema != null && ema.Value != null ? ema.Value : mi.Name };
-                               r.Facets.Add (xe);
-                       }
-                       return r;
-               }
-
-               internal void ExportStandardComplexType (DataContractAttribute attr, SerializationMap map, List<DataMemberInfo> members)
-               {
-                       Type type = map.RuntimeType;
-                       var qname = map.XmlName;
-                       var ct = CreateComplexType (qname, type);
-
-                       if (type.BaseType != null && type.BaseType != typeof (object)) {
-                               ExportCore (type.BaseType, false);
-                               var xcc = new XmlSchemaComplexContent ();
-                               ct.ContentModel = xcc;
-                               var xcce = new XmlSchemaComplexContentExtension ();
-                               xcc.Content = xcce;
-                               xcce.BaseTypeName = GetSchemaTypeName (type.BaseType);
-                               xcce.Particle = CreateMembersSequence (type, members, attr != null);
-                       }
-                       else
-                               ct.Particle = CreateMembersSequence (type, members, attr != null);
-               }
-
-               XmlSchemaSimpleType CreateSimpleType (QName qname, Type type)
-               {
-                       var xs = GetSchema (qname.Namespace);
-
-                       var el = new XmlSchemaElement () { Name = qname.Name, IsNillable = true };
-                       el.SchemaTypeName = qname;
-                       xs.Items.Add (el);
-                       var st = new XmlSchemaSimpleType () { Name = qname.Name };
-                       xs.Items.Add (st);
-                       imported_types.Add (new TypeImportInfo () { RootElementName = qname, SchemaType = st, SchemaTypeName = qname,  ClrType = type });
-
-                       return st;
-               }
-
-               XmlSchemaComplexType CreateComplexType (QName qname, Type type)
-               {
-                       var xs = GetSchema (qname.Namespace);
-
-                       var el = new XmlSchemaElement () { Name = qname.Name, IsNillable = true };
-                       el.SchemaTypeName = qname;
-                       xs.Items.Add (el);
-                       var ct = new XmlSchemaComplexType () { Name = qname.Name };
-                       xs.Items.Add (ct);
-                       imported_types.Add (new TypeImportInfo () { RootElementName = qname, SchemaType = ct, SchemaTypeName = qname,  ClrType = type });
-
-                       return ct;
-               }
-
-               static int CompareMembers (MemberInfo m1, MemberInfo m2)
-               {
-                       var a1 = m1.GetCustomAttribute<DataMemberAttribute> (false);
-                       var a2 = m2.GetCustomAttribute<DataMemberAttribute> (false);
-                       return a1.Order == a2.Order ? String.CompareOrdinal (a1.Name ?? m1.Name, a2.Name ?? m2.Name) : a1.Order - a2.Order;
-               }
-
-               // FIXME: use members parameter to determine which members are to be exported.
-               XmlSchemaSequence CreateMembersSequence (Type type, List<DataMemberInfo> dataMembers, bool expectContract)
-               {
-                       var seq = new XmlSchemaSequence ();
-                       var members = new List<MemberInfo> ();
-                       var flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly;
-                       if (expectContract)
-                               flags |= BindingFlags.NonPublic;
-
-                       foreach (var mi in type.GetFields (flags))
-                               if (!expectContract || mi.GetCustomAttribute<DataMemberAttribute> (false) != null)
-                                       members.Add (mi);
-                       foreach (var mi in type.GetProperties (flags))
-                               if ((!expectContract || mi.GetCustomAttribute<DataMemberAttribute> (false) != null) && mi.GetIndexParameters ().Length == 0)
-                                       members.Add (mi);
-
-                       if (expectContract)
-                               members.Sort (CompareMembers);
-
-                       foreach (var mi in members) {
-                               var dma = mi.GetCustomAttribute<DataMemberAttribute> (false);
-                               var fi = mi as FieldInfo;
-                               var pi = mi as PropertyInfo;
-                               var mt = fi != null ? fi.FieldType : pi.PropertyType;
-                               bool nullable = !mt.IsValueType;
-                               if (mt.IsGenericType && mt.GetGenericTypeDefinition () == typeof (Nullable<>)) {
-                                       mt = mt.GetGenericArguments () [0];
-                                       nullable = true;
-                               }
-                               ExportCore (mt, false);
-
-                               var name = dma != null && dma.Name != null ? dma.Name : mi.Name;
-                               var xe = new XmlSchemaElement () { Name = name, IsNillable = nullable };
-                               xe.SchemaTypeName = GetSchemaTypeName (mt);
-                               seq.Items.Add (xe);
-                       }
-                       return seq;
-               }
-
-               XmlSchema GetSchema (string ns)
-               {
-                       foreach (XmlSchema xs in Schemas.Schemas (ns))
-                               return xs;
-                       var nxs = new XmlSchema () { ElementFormDefault = XmlSchemaForm.Qualified };
-                       if (!String.IsNullOrEmpty (ns))
-                               nxs.TargetNamespace = ns;
-                       Schemas.Add (nxs);
-                       return nxs;
-               }
-
-               string GetXmlTypeName (Type type)
-               {
-                       var qname = KnownTypeCollection.GetPrimitiveTypeName (type);
-                       if (!qname.Equals (QName.Empty))
-                               return qname.Name;
-                       var ret = type.Name;
-                       int idx = ret.IndexOf ('`');
-                       return idx < 0 ? ret : ret.Substring (0, idx);
-               }
-
-               string GetXmlNamespace (Type type)
-               {
-                       foreach (ContractNamespaceAttribute a in type.Assembly.GetCustomAttributes (typeof (ContractNamespaceAttribute), false))
-                               if (a.ClrNamespace == type.Namespace)
-                                       return a.ContractNamespace;
-                       return KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace;
-               }
-
-               // get mapping info (either exported or predefined).
-
-               public QName GetRootElementName (Type type)
-               {
-                       var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
-                       if (info != null)
-                               return info.RootElementName;
-                       info = imported_types.FirstOrDefault (i => i.ClrType == type);
-                       if (info != null && info.RootElementName != null)
-                               return info.RootElementName;
-
-                       return GetSchemaTypeName (type);
-               }
-               
-               public XmlSchemaType GetSchemaType (Type type)
-               {
-                       var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
-                       if (info != null)
-                               return info.SchemaType;
-                       info = imported_types.FirstOrDefault (i => i.ClrType == type);
-                       if (info != null)
-                               return info.SchemaType;
-
-                       return null;
-               }
-               
-               public QName GetSchemaTypeName (Type type)
-               {
-                       var info = predefined_types.FirstOrDefault (i => i.ClrType == type);
-                       if (info != null)
-                               return info.SchemaTypeName;
-                       info = imported_types.FirstOrDefault (i => i.ClrType == type);
-                       if (info != null && info.SchemaTypeName != null)
-                               return info.SchemaTypeName;
-
-                       known_types.Add (type);
-                       var map = known_types.FindUserMap (type);
-                       if (map != null)
-                               return map.XmlName;
-
-                       // The following lines would be mostly redundant (legacy code now that it widely uses SerializationMap.XmlName for consistency...)
-
-                       var cdca = type.GetCustomAttribute<CollectionDataContractAttribute> (false);
-                       if (cdca != null)
-                               return new QName (cdca.Name ?? GetXmlTypeName (type), cdca.Namespace ?? GetXmlNamespace (type));
-                       var dca = type.GetCustomAttribute<DataContractAttribute> (false);
-                       if (dca != null)
-                               return new QName (dca.Name ?? GetXmlTypeName (type), dca.Namespace ?? GetXmlNamespace (type));
-
-                       if (type.IsArray) {
-                               var item = GetSchemaTypeName (type.GetElementType ());
-                               if (item.Namespace == XmlSchema.Namespace)
-                                       return new QName ("ArrayOf" + item.Name, KnownTypeCollection.MSArraysNamespace);
-                               return new QName ("ArrayOf" + item.Name, item.Namespace);
-                       }
-
-                       return new QName (type.Name, KnownTypeCollection.DefaultClrNamespaceBase + type.Namespace);
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs b/mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/XsdDataContractImporter.cs
deleted file mode 100644 (file)
index 28bc270..0000000
+++ /dev/null
@@ -1,1085 +0,0 @@
-//
-// XsdDataContractImporter.cs
-//
-// Authors:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//      Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (C) 2010 Novell, Inc.  http://www.novell.com
-//               2012 Xamarin, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-using QName = System.Xml.XmlQualifiedName;
-
-namespace System.Runtime.Serialization
-{
-       [MonoTODO ("support arrays")]
-       public class XsdDataContractImporter
-       {
-               static readonly XmlQualifiedName qname_anytype = new XmlQualifiedName ("anyType", XmlSchema.Namespace);
-
-               public XsdDataContractImporter ()
-                       : this (null)
-               {
-               }
-
-               public XsdDataContractImporter (CodeCompileUnit codeCompileUnit)
-               {
-                       // null argument is ok.
-                       CodeCompileUnit = codeCompileUnit ?? new CodeCompileUnit ();
-
-                       // Options is null by default
-               }
-
-               public CodeCompileUnit CodeCompileUnit { get; private set; }
-
-               CodeDomProvider code_provider = CodeDomProvider.CreateProvider ("csharp");
-               Dictionary<CodeNamespace,CodeIdentifiers> identifiers_table = new Dictionary<CodeNamespace,CodeIdentifiers> ();
-               ImportOptions import_options;
-
-               public ImportOptions Options {
-                       get { return import_options; }
-                       set {
-                               import_options = value;
-                               code_provider = value.CodeProvider ?? code_provider;
-                       }
-               }
-
-               void GenerateXmlType (XmlQualifiedName qname)
-               {
-                       var cns = GetCodeNamespace (qname.Namespace);
-                       var td = new CodeTypeDeclaration () {
-                               Name = GetUniqueName (CodeIdentifier.MakeValid (qname.Name), cns),
-                               TypeAttributes = GenerateInternal ? TypeAttributes.NotPublic : TypeAttributes.Public,
-                               IsPartial = true };
-                       cns.Types.Add (td);
-                       td.BaseTypes.Add (new CodeTypeReference (typeof (IXmlSerializable)));
-
-                       var thisNodes = new CodePropertyReferenceExpression (new CodeThisReferenceExpression (), "Nodes"); // property this.Nodes
-                       var xmlSerializableServices = new CodeTypeReferenceExpression (typeof (XmlSerializableServices)); // static XmlSerializableServices.
-                       var qnameType = new CodeTypeReference (typeof (XmlQualifiedName));
-
-                       // XmlQualifiedName qname = new XmlQualifiedName ({qname.Name}, {qname.Namespace});
-                       td.Members.Add (new CodeMemberField () { Name = "qname", Type = qnameType, InitExpression = new CodeObjectCreateExpression (qnameType, new CodePrimitiveExpression (qname.Name), new CodePrimitiveExpression (qname.Namespace)) });
-
-                       // public XmlNode[] Nodes { get; set; }
-                       td.Members.Add (new CodeMemberProperty () { Name = "Nodes", Type = new CodeTypeReference (typeof (XmlNode [])), Attributes = (GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public) | MemberAttributes.Final, HasGet = true, HasSet = true });
-
-                       // public void ReadXml(XmlReader reader) {
-                       var read = new CodeMemberMethod () { Name = "ReadXml", Attributes = (GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public) | MemberAttributes.Final };
-                       read.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (XmlReader)), "reader"));
-                       //   this.Nodes = XmlSerializableServices.ReadXml(reader);
-                       read.Statements.Add (
-                               new CodeAssignStatement (thisNodes,
-                                       new CodeMethodInvokeExpression (
-                                               new CodeMethodReferenceExpression (xmlSerializableServices, "ReadXml"),
-                                               new CodeArgumentReferenceExpression ("reader"))));
-                       // }
-                       td.Members.Add (read);
-
-                       // public void WriteXml(XmlWriter writer) {
-                       var write = new CodeMemberMethod () { Name = "WriteXml",Attributes = (GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public) | MemberAttributes.Final };
-                       write.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (XmlWriter)), "writer"));
-                       //   XmlSerializableServices.WriteXml(writer, this.Nodes);
-                       write.Statements.Add (
-                               new CodeMethodInvokeExpression (
-                                       new CodeMethodReferenceExpression (xmlSerializableServices, "WriteXml"),
-                                       new CodeArgumentReferenceExpression ("writer"),
-                                       thisNodes));
-                       // }
-                       td.Members.Add (write);
-
-                       // public XmlSchema GetSchema () { return null; }
-                       var getSchema = new CodeMemberMethod () { Name = "GetSchema", Attributes = (GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public) | MemberAttributes.Final, ReturnType = new CodeTypeReference (typeof (XmlSchema)) };
-                       getSchema.Statements.Add (new CodeMethodReturnStatement (new CodePrimitiveExpression (null)));
-                       td.Members.Add (getSchema);
-
-                       // public static XmlQualifiedName ExportSchema (XmlSchemaSet schemas) {
-                       var export = new CodeMemberMethod () { Name = "ExportSchema", Attributes = (GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public) | MemberAttributes.Final | MemberAttributes.Static, ReturnType = qnameType };
-                       export.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (XmlSchemaSet)), "schemas"));
-                       //   XmlSerializableServices.AddDefaultSchema (schemas);
-                       export.Statements.Add (new CodeMethodInvokeExpression (xmlSerializableServices, "AddDefaultSchema", new CodeArgumentReferenceExpression ("schemas")));
-                       //   return qname;
-                       export.Statements.Add (new CodeMethodReturnStatement (new CodeFieldReferenceExpression (new CodeThisReferenceExpression (), "qname")));
-                       // }
-                       td.Members.Add (export);
-               }
-
-               // CanImport
-
-               public bool CanImport (XmlSchemaSet schemas)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-
-                       PrepareSchemas (schemas);
-
-                       foreach (XmlSchemaElement xe in schemas.GlobalElements.Values)
-                               if (!CanImport (schemas, xe))
-                                       return false;
-                       return true;
-               }
-
-               public bool CanImport (XmlSchemaSet schemas, ICollection<XmlQualifiedName> typeNames)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-                       if (typeNames == null)
-                               throw new ArgumentNullException ("typeNames");
-
-                       PrepareSchemas (schemas);
-
-                       foreach (var name in typeNames)
-                               if (!CanImport (schemas, name))
-                                       return false;
-                       return true;
-               }
-
-               public bool CanImport (XmlSchemaSet schemas, XmlQualifiedName typeName)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-                       if (typeName == null)
-                               throw new ArgumentNullException ("typeName");
-
-                       PrepareSchemas (schemas);
-
-                       if (IsPredefinedType (typeName))
-                               return true; // while it just ignores...
-
-                       if (!schemas.GlobalTypes.Contains (typeName))
-                               return false;
-
-                       return CanImport (schemas, schemas.GlobalTypes [typeName] as XmlSchemaType);
-               }
-
-               public bool CanImport (XmlSchemaSet schemas, XmlSchemaElement element)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-                       if (element == null)
-                               throw new ArgumentNullException ("element");
-
-                       PrepareSchemas (schemas);
-
-                       if (element.ElementSchemaType != null)
-                               return CanImport (schemas, element.ElementSchemaType as XmlSchemaType);
-                       else if (element.SchemaTypeName != null && !element.SchemaTypeName.Equals (QName.Empty))
-                               return CanImport (schemas, element.SchemaTypeName);
-                       else
-                               // anyType
-                               return true;
-               }
-
-
-#if true // new
-               bool CanImport (XmlSchemaSet schemas, XmlSchemaType type)
-               {
-                       if (IsPredefinedType (type.QualifiedName))
-                               return true;
-
-                       var st = type as XmlSchemaSimpleType;
-                       if (st != null) {
-                               return CanImportSimpleType (schemas, st);
-                       } else {
-                               var ct = (XmlSchemaComplexType) type;
-                               var sc = ct.ContentModel as XmlSchemaSimpleContent;
-                               if (sc != null) {
-                                       if (sc.Content is XmlSchemaSimpleContentExtension)
-                                               return false;
-                               }
-                               if (!CanImportComplexType (schemas, ct))
-                                       return false;
-                               return true;
-                       }
-               }
-
-               bool CanImportSimpleType (XmlSchemaSet schemas, XmlSchemaSimpleType type)
-               {
-                       var scl = type.Content as XmlSchemaSimpleTypeList;
-                       if (scl != null) {
-                               if (scl.ItemType == null)
-                                       return false;
-                               var itemType = scl.ItemType as XmlSchemaSimpleType;
-                               var ir = itemType.Content as XmlSchemaSimpleTypeRestriction;
-                               if (ir == null)
-                                       return false;
-                               return true; // as enum
-                       }
-                       var scr = type.Content as XmlSchemaSimpleTypeRestriction;
-                       if (scr != null)
-                               return true; // as enum
-
-                       return false;
-               }
-
-               bool CanImportComplexType (XmlSchemaSet schemas, XmlSchemaComplexType type)
-               {
-                       foreach (XmlSchemaAttribute att in type.AttributeUses.Values)
-                               if (att.Use != XmlSchemaUse.Optional || att.QualifiedName.Namespace != KnownTypeCollection.MSSimpleNamespace)
-                                       return false;
-
-                       CodeTypeReference baseClrType = null;
-                       var particle = type.Particle;
-                       if (type.ContentModel != null) {
-                               var xsscr = type.ContentModel.Content as XmlSchemaSimpleContentRestriction;
-                               if (xsscr != null) {
-                                       if (xsscr.BaseType != null) {
-                                               if (!CanImport (schemas, xsscr.BaseType))
-                                                       return false;
-                                       } else {
-                                               if (!CanImport (schemas, xsscr.BaseTypeName))
-                                                       return false;
-                                       }
-                                       // The above will result in an error, but make sure to show we don't support it.
-                                       return false;
-                               }
-                               var xscce = type.ContentModel.Content as XmlSchemaComplexContentExtension;
-                               if (xscce != null) {
-                                       if (!CanImport (schemas, xscce.BaseTypeName))
-                                               return false;
-                                       baseClrType = GetCodeTypeReferenceInternal (xscce.BaseTypeName, false);
-
-                                       var baseInfo = GetTypeInfo (xscce.BaseTypeName, false);
-                                       particle = xscce.Particle;
-                               }
-                               var xsccr = type.ContentModel.Content as XmlSchemaComplexContentRestriction;
-                               if (xsccr != null)
-                                       return false;
-                       }
-
-                       var seq = particle as XmlSchemaSequence;
-                       if (seq == null && particle != null)
-                               return false;
-
-                       if (seq != null) {
-
-                       if (seq.Items.Count == 1 && seq.Items [0] is XmlSchemaAny && type.Parent is XmlSchemaElement) {
-
-                               // looks like it is not rejected (which contradicts the error message on .NET). See XsdDataContractImporterTest.ImportTestX32(). Also ImporTestX13() for Parent check.
-
-                       } else {
-
-                       foreach (var child in seq.Items)
-                               if (!(child is XmlSchemaElement))
-                                       return false;
-
-                       bool isDictionary = false;
-                       if (type.Annotation != null) {
-                               foreach (var ann in type.Annotation.Items) {
-                                       var ai = ann as XmlSchemaAppInfo;
-                                       if (ai != null && ai.Markup != null &&
-                                           ai.Markup.Length > 0 &&
-                                           ai.Markup [0].NodeType == XmlNodeType.Element &&
-                                           ai.Markup [0].LocalName == "IsDictionary" &&
-                                           ai.Markup [0].NamespaceURI == KnownTypeCollection.MSSimpleNamespace)
-                                               isDictionary = true;
-                               }
-                       }
-
-                       if (seq.Items.Count == 1) {
-                               var pt = (XmlSchemaParticle) seq.Items [0];
-                               var xe = pt as XmlSchemaElement;
-                               if (pt.MaxOccursString == "unbounded") {
-                                       // import as a collection contract.
-                                       if (pt is XmlSchemaAny) {
-                                       } else if (isDictionary) {
-                                               var kvt = xe.ElementSchemaType as XmlSchemaComplexType;
-                                               var seq2 = kvt != null ? kvt.Particle as XmlSchemaSequence : null;
-                                               var k = seq2 != null && seq2.Items.Count == 2 ? seq2.Items [0] as XmlSchemaElement : null;
-                                               var v = seq2 != null && seq2.Items.Count == 2 ? seq2.Items [1] as XmlSchemaElement : null;
-                                               if (k == null || v == null)
-                                                       return false;
-                                               if (!CanImport (schemas, k.ElementSchemaType))
-                                                       return false;
-                                               if (!CanImport (schemas, v.ElementSchemaType))
-                                                       return false;
-                                               
-                                               return true;
-                                       } else if (type.QualifiedName.Namespace == KnownTypeCollection.MSArraysNamespace &&
-                                                  IsPredefinedType (xe.ElementSchemaType.QualifiedName)) {
-                                               // then this CodeTypeDeclaration is to be removed, and CodeTypeReference to this type should be an array instead.
-                                               return true;
-                                       }
-                                       else
-                                               if (!CanImport (schemas, xe.ElementSchemaType))
-                                                       return false;
-                                       return true;
-                               }
-                       }
-                       if (isDictionary)
-                               return false;
-
-                       // import as a (normal) contract.
-                       var elems = new List<XmlSchemaElement> ();
-                       foreach (XmlSchemaElement xe in seq.Items) {
-                               if (xe.MaxOccurs != 1)
-                                       return false;
-
-                               if (elems.Any (e => e.QualifiedName.Name == xe.QualifiedName.Name))
-                                       return false;
-
-                               elems.Add (xe);
-                       }
-                       foreach (var xe in elems) {
-                               // import property type in prior.
-                               if (!CanImport (schemas, xe.ElementSchemaType.QualifiedName))
-                                       return false;
-                       }
-
-                       } // if (seq contains only an xs:any)
-                       } // if (seq != 0)
-
-                       return true;
-               }
-#else
-               bool CanImport (XmlSchemaSet schemas, XmlSchemaComplexType type)
-               {
-                       if (type == null || type.QualifiedName.Namespace == XmlSchema.Namespace) // xs:anyType -> not supported.
-                               return false;
-
-                       if (type.ContentModel is XmlSchemaSimpleContent) // simple content derivation is not supported.
-                               return false;
-                       if (type.ContentModel != null && type.ContentModel.Content != null) {
-                               var xscce = type.ContentModel.Content as XmlSchemaComplexContentExtension;
-                               if (xscce == null) // complex DBR is not supported.
-                                       return false;
-                               // check base type
-                               if (xscce.BaseTypeName != qname_anytype && !CanImport (schemas, xscce.BaseTypeName))
-                                       return false;
-                       }
-
-                       return true;
-               }
-#endif
-
-               // Import
-
-               void PrepareSchemas (XmlSchemaSet schemas)
-               {
-                       if (!schemas.Contains (KnownTypeCollection.MSSimpleNamespace))
-                               schemas.Add (XmlSchema.Read (GetType ().Assembly.GetManifestResourceStream ("mstypes.schema"), null));
-
-                       if (!schemas.IsCompiled)
-                               schemas.Compile ();
-               }
-
-               public void Import (XmlSchemaSet schemas)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-
-                       PrepareSchemas (schemas);
-
-                       foreach (XmlSchemaElement xe in schemas.GlobalElements.Values)
-                               Import (schemas, xe);
-               }
-
-               public void Import (XmlSchemaSet schemas, ICollection<XmlQualifiedName> typeNames)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-                       if (typeNames == null)
-                               throw new ArgumentNullException ("typeNames");
-                       foreach (var name in typeNames)
-                               Import (schemas, name);
-               }
-
-               // This checks type existence and raises an error if it is missing.
-               public void Import (XmlSchemaSet schemas, XmlQualifiedName typeName)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-                       if (typeName == null)
-                               throw new ArgumentNullException ("typeName");
-
-                       PrepareSchemas (schemas);
-
-                       if (IsPredefinedType (typeName))
-                               return;
-
-                       if (!schemas.GlobalTypes.Contains (typeName))
-                               throw new InvalidDataContractException (String.Format ("Type {0} is not found in the schemas", typeName));
-
-                       Import (schemas, schemas.GlobalTypes [typeName] as XmlSchemaType, typeName);
-               }
-
-               public XmlQualifiedName Import (XmlSchemaSet schemas, XmlSchemaElement element)
-               {
-                       if (schemas == null)
-                               throw new ArgumentNullException ("schemas");
-                       if (element == null)
-                               throw new ArgumentNullException ("element");
-
-                       var elname = element.QualifiedName;
-
-                       if (IsPredefinedType (element.SchemaTypeName))
-                               return elname;
-
-                       switch (elname.Namespace) {
-                       case KnownTypeCollection.MSSimpleNamespace:
-                               switch (elname.Name) {
-                               case "char":
-                               case "duration":
-                               case "guid":
-                                       return elname;
-                               }
-                               break;
-                       }
-
-                       if (!CanImport (schemas, element) && Options != null && Options.ImportXmlType) {
-                               var qn = element.QualifiedName;
-                               GenerateXmlType (qn);
-                               return qn;
-                       }
-
-                       if (element.ElementSchemaType != null) {
-                               if (IsCollectionType (element.ElementSchemaType))
-                                       elname = element.ElementSchemaType.QualifiedName;
-                       }
-
-                       // FIXME: use element to fill nillable and arrays.
-                       var qname =
-                               elname != null && !elname.Equals (QName.Empty) ? elname :
-                               element.ElementSchemaType != null ? element.ElementSchemaType.QualifiedName :
-                               qname_anytype;
-
-                       if (element.ElementSchemaType != null)
-                               Import (schemas, element.ElementSchemaType, qname);
-                       else if (element.SchemaTypeName != null && !element.SchemaTypeName.Equals (QName.Empty))
-                               Import (schemas, schemas.GlobalTypes [element.SchemaTypeName] as XmlSchemaType, qname);
-                       // otherwise it is typeless == anyType.
-                       else
-                               Import (schemas, XmlSchemaType.GetBuiltInComplexType (qname_anytype), qname);
-
-                       return qname;
-               }
-
-               void Import (XmlSchemaSet schemas, XmlSchemaType type)
-               {
-                       if (!CanImport (schemas, type) && Options != null && Options.ImportXmlType) {
-                               GenerateXmlType (type.QualifiedName);
-                               return;
-                       }
-                       Import (schemas, type, type.QualifiedName);
-               }
-
-               void Import (XmlSchemaSet schemas, XmlSchemaType type, XmlQualifiedName qname)
-               {
-                       var existing = imported_types.FirstOrDefault (it => it.XsdType == type);
-                       if (existing != null)
-                               return;// existing.XsdTypeName;
-
-                       if (IsPredefinedType (type.QualifiedName))
-                               return;
-
-                       DoImport (schemas, type, qname);
-               }
-
-               string GetUniqueName (string name, CodeNamespace cns)
-               {
-                       CodeIdentifiers i;
-                       if (!identifiers_table.TryGetValue (cns, out i)) {
-                               i = new CodeIdentifiers ();
-                               identifiers_table.Add (cns, i);
-                       }
-                       return i.AddUnique (name, null);
-               }
-
-               void DoImport (XmlSchemaSet schemas, XmlSchemaType type, XmlQualifiedName qname)
-               {
-                       CodeNamespace cns = null;
-                       CodeTypeReference clrRef;
-                       cns = GetCodeNamespace (qname.Namespace);
-                       clrRef = new CodeTypeReference (cns.Name.Length > 0 ? cns.Name + "." + qname.Name : qname.Name);
-
-                       var td = new CodeTypeDeclaration () {
-                               Name = GetUniqueName (CodeIdentifier.MakeValid (qname.Name), cns),
-                               TypeAttributes = GenerateInternal ? TypeAttributes.NotPublic : TypeAttributes.Public,
-                               IsPartial = true };
-                       cns.Types.Add (td);
-
-                       var info = new TypeImportInfo () { ClrType = clrRef, XsdType = type,  XsdTypeName = qname };
-                       imported_types.Add (info);
-
-                       var st = type as XmlSchemaSimpleType;
-                       if (st != null) {
-                               ImportSimpleType (td, schemas, st, qname);
-                       } else {
-                               var ct = (XmlSchemaComplexType) type;
-                               var sc = ct.ContentModel as XmlSchemaSimpleContent;
-                               if (sc != null) {
-                                       if (sc.Content is XmlSchemaSimpleContentExtension)
-                                               throw new InvalidDataContractException (String.Format ("complex type '{0}' with simple content extension is not supported", type.QualifiedName));
-                               }
-                               if (!ImportComplexType (td, schemas, ct, qname)) {
-                                       cns.Types.Remove (td);
-                                       if (cns.Types.Count == 0)
-                                               CodeCompileUnit.Namespaces.Remove (cns);
-                               }
-
-                               foreach (var impinfo in imported_types)
-                                       for (; impinfo.KnownTypeOutputIndex < impinfo.KnownClrTypes.Count; impinfo.KnownTypeOutputIndex++)
-                                               td.CustomAttributes.Add (new CodeAttributeDeclaration (
-                                                       new CodeTypeReference (typeof (KnownTypeAttribute)),
-                                                       new CodeAttributeArgument (new CodeTypeOfExpression (impinfo.KnownClrTypes [impinfo.KnownTypeOutputIndex]))));
-                       }
-               }
-
-               static readonly string ass_name = typeof (DataContractAttribute).Assembly.GetName ().Name;
-               static readonly string ass_version = typeof (DataContractAttribute).Assembly.GetName ().Version.ToString ();
-               static readonly CodeTypeReference typeref_data_contract = new CodeTypeReference (typeof (DataContractAttribute));
-               static readonly CodeTypeReference typeref_coll_contract = new CodeTypeReference (typeof (CollectionDataContractAttribute));
-
-               void AddTypeAttributes (CodeTypeDeclaration td, XmlSchemaType type, params XmlSchemaElement [] collectionArgs)
-               {
-                       var name = type.QualifiedName;
-                       // [GeneratedCode (assembly_name, assembly_version)]
-                       td.CustomAttributes.Add (new CodeAttributeDeclaration (
-                               new CodeTypeReference (typeof (GeneratedCodeAttribute)),
-                               new CodeAttributeArgument (new CodePrimitiveExpression (ass_name)),
-                               new CodeAttributeArgument (new CodePrimitiveExpression (ass_version))));
-
-                       var ct = type as XmlSchemaComplexType;
-
-                       // [DataContract(Name="foobar",Namespace="urn:foobar")] (optionally IsReference=true),
-                       // or [CollectionDataContract(ditto, ItemType/KeyType/ValueType)]
-                       var dca = new CodeAttributeDeclaration (
-                               collectionArgs != null && collectionArgs.Length > 0 ? typeref_coll_contract : typeref_data_contract,
-                               new CodeAttributeArgument ("Name", new CodePrimitiveExpression (name.Name)),
-                               new CodeAttributeArgument ("Namespace", new CodePrimitiveExpression (name.Namespace)));
-                       if (collectionArgs != null) {
-                               if (collectionArgs.Length > 0)
-                                       dca.Arguments.Add (new CodeAttributeArgument ("ItemName", new CodePrimitiveExpression (CodeIdentifier.MakeValid (collectionArgs [0].QualifiedName.Name))));
-                               if (collectionArgs.Length > 2) {
-                                       dca.Arguments.Add (new CodeAttributeArgument ("KeyName", new CodePrimitiveExpression (CodeIdentifier.MakeValid (collectionArgs [1].QualifiedName.Name))));
-                                       dca.Arguments.Add (new CodeAttributeArgument ("ValueName", new CodePrimitiveExpression (CodeIdentifier.MakeValid (collectionArgs [2].QualifiedName.Name))));
-                               }
-                       }
-                       if (ct != null && ct.AttributeUses [new XmlQualifiedName ("Ref", KnownTypeCollection.MSSimpleNamespace)] != null)
-                               dca.Arguments.Add (new CodeAttributeArgument ("IsReference", new CodePrimitiveExpression (true)));
-                       td.CustomAttributes.Add (dca);
-
-                       // optional [Serializable]
-                       if (Options != null && Options.GenerateSerializable)
-                               td.CustomAttributes.Add (new CodeAttributeDeclaration ("System.SerializableAttribute"));
-               }
-
-               static readonly CodeTypeReference typeref_ext_iface = new CodeTypeReference ("System.Runtime.Serialization.IExtensibleDataObject");
-               static readonly CodeTypeReference typeref_ext_class = new CodeTypeReference ("System.Runtime.Serialization.ExtensionDataObject");
-
-               void AddExtensionData (CodeTypeDeclaration td)
-               {
-                       td.BaseTypes.Add (typeref_ext_iface);
-
-                       var field = new CodeMemberField (typeref_ext_class, "extensionDataField");
-                       td.Members.Add (field);
-
-                       var prop = new CodeMemberProperty () { Type = field.Type, Name = "ExtensionData", Attributes = (GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public) | MemberAttributes.Final };
-                       prop.GetStatements.Add (new CodeMethodReturnStatement (
-                               new CodeFieldReferenceExpression (
-                               new CodeThisReferenceExpression (),
-                               "extensionDataField")));
-                       prop.SetStatements.Add (new CodeAssignStatement (
-                               new CodeFieldReferenceExpression (
-                               new CodeThisReferenceExpression (),
-                               "extensionDataField"),
-                               new CodePropertySetValueReferenceExpression ()));
-
-                       td.Members.Add (prop);
-               }
-
-               void ImportSimpleType (CodeTypeDeclaration td, XmlSchemaSet schemas, XmlSchemaSimpleType type, XmlQualifiedName qname)
-               {
-                       var scl = type.Content as XmlSchemaSimpleTypeList;
-                       if (scl != null) {
-                               if (scl.ItemType == null)
-                                       throw new InvalidDataContractException (String.Format ("simple type list is allowed only with an anonymous simple type with enumeration restriction content as its item type definition (type is {0})", type.QualifiedName));
-                               var itemType = scl.ItemType as XmlSchemaSimpleType;
-                               var ir = itemType.Content as XmlSchemaSimpleTypeRestriction;
-                               if (ir == null)
-                                       throw new InvalidDataContractException (String.Format ("simple type list is allowed only with an anonymous simple type with enumeration restriction content as its item type definition (type is {0})", type.QualifiedName));
-                               ImportEnum (td, schemas, ir, type, qname, true);
-                               return;
-                       }
-                       var scr = type.Content as XmlSchemaSimpleTypeRestriction;
-                       if (scr != null) {
-                               ImportEnum (td, schemas, scr, type, qname, false);
-                               return;
-                       }
-
-                       throw new InvalidDataContractException (String.Format ("simple type is supported only if it has enumeration or list of an anonymous simple type with enumeration restriction content as its item type definition (type is {0})", qname));
-               }
-
-               static readonly CodeTypeReference enum_member_att_ref = new CodeTypeReference (typeof (EnumMemberAttribute));
-
-               void ImportEnum (CodeTypeDeclaration td, XmlSchemaSet schemas, XmlSchemaSimpleTypeRestriction r, XmlSchemaType type, XmlQualifiedName qname, bool isFlag)
-               {
-                       if (isFlag && !r.BaseTypeName.Equals (new XmlQualifiedName ("string", XmlSchema.Namespace)))
-                               throw new InvalidDataContractException (String.Format ("For flags enumeration '{0}', the base type for the simple type restriction must be XML schema string", qname));
-
-                       td.IsEnum = true;
-                       AddTypeAttributes (td, type);
-                       if (isFlag)
-                               td.CustomAttributes.Add (new CodeAttributeDeclaration (new CodeTypeReference (typeof (FlagsAttribute))));
-
-                       foreach (var facet in r.Facets) {
-                               var e = facet as XmlSchemaEnumerationFacet;
-                               if (e == null)
-                                       throw new InvalidDataContractException (String.Format ("Invalid simple type restriction (type {0}). Only enumeration is allowed.", qname));
-                               var em = new CodeMemberField () { Name = CodeIdentifier.MakeValid (e.Value) };
-                               var ea = new CodeAttributeDeclaration (enum_member_att_ref);
-                               if (e.Value != em.Name)
-                                       ea.Arguments.Add (new CodeAttributeArgument ("Value", new CodePrimitiveExpression (e.Value)));
-                               em.CustomAttributes.Add (ea);
-                               td.Members.Add (em);
-                       }
-               }
-
-               // Returns false if it should remove the imported type.
-               bool IsCollectionType (XmlSchemaType type)
-               {
-                       var complex = type as XmlSchemaComplexType;
-                       if (complex == null)
-                               return false;
-
-                       var seq = complex.Particle as XmlSchemaSequence;
-                       if (seq == null)
-                               return false;
-
-                       if (seq.Items.Count == 1 && seq.Items [0] is XmlSchemaAny && complex.Parent is XmlSchemaElement)
-                               return false;
-
-                       if (type.Annotation != null) {
-                               foreach (var ann in type.Annotation.Items) {
-                                       var ai = ann as XmlSchemaAppInfo;
-                                       if (ai != null && ai.Markup != null &&
-                                           ai.Markup.Length > 0 &&
-                                           ai.Markup [0].NodeType == XmlNodeType.Element &&
-                                           ai.Markup [0].LocalName == "IsDictionary" &&
-                                           ai.Markup [0].NamespaceURI == KnownTypeCollection.MSSimpleNamespace)
-                                               return true;
-                               }
-                       }
-                                       
-                       if (seq.Items.Count != 1)
-                               return false;
-
-                       var pt = (XmlSchemaParticle) seq.Items [0];
-                       var xe = pt as XmlSchemaElement;
-                       if (pt.MaxOccursString != "unbounded")
-                               return false;
-
-                       return !(pt is XmlSchemaAny);
-               }
-
-               // Returns false if it should remove the imported type.
-               bool ImportComplexType (CodeTypeDeclaration td, XmlSchemaSet schemas, XmlSchemaComplexType type, XmlQualifiedName qname)
-               {
-                       foreach (XmlSchemaAttribute att in type.AttributeUses.Values)
-                               if (att.Use != XmlSchemaUse.Optional || att.QualifiedName.Namespace != KnownTypeCollection.MSSimpleNamespace)
-                                       throw new InvalidDataContractException (String.Format ("attribute in DataContract complex type '{0}' is limited to those in {1} namespace, and optional.", qname, KnownTypeCollection.MSSimpleNamespace));
-
-                       CodeTypeReference baseClrType = null;
-                       var particle = type.Particle;
-                       if (type.ContentModel != null) {
-                               var xsscr = type.ContentModel.Content as XmlSchemaSimpleContentRestriction;
-                               if (xsscr != null) {
-                                       if (xsscr.BaseType != null)
-                                               Import (schemas, xsscr.BaseType);
-                                       else
-                                               Import (schemas, xsscr.BaseTypeName);
-                                       // The above will result in an error, but make sure to show we don't support it.
-                                       throw new InvalidDataContractException (String.Format ("complex type simple content restriction is not supported in DataContract (type '{0}')", qname));
-                               }
-                               var xscce = type.ContentModel.Content as XmlSchemaComplexContentExtension;
-                               if (xscce != null) {
-                                       Import (schemas, xscce.BaseTypeName);
-                                       baseClrType = GetCodeTypeReferenceInternal (xscce.BaseTypeName, false);
-                                       if (baseClrType != null)
-                                               td.BaseTypes.Add (baseClrType);
-
-                                       var baseInfo = GetTypeInfo (xscce.BaseTypeName, false);
-                                       if (baseInfo != null)
-                                               baseInfo.KnownClrTypes.Add (imported_types.First (it => it.XsdType == type).ClrType);
-                                       particle = xscce.Particle;
-                               }
-                               var xsccr = type.ContentModel.Content as XmlSchemaComplexContentRestriction;
-                               if (xsccr != null)
-                                       throw new InvalidDataContractException (String.Format ("complex content type (for type '{0}') has a restriction content model, which is not supported in DataContract.", qname));
-                       }
-
-                       var seq = particle as XmlSchemaSequence;
-                       if (seq == null && particle != null)
-                               throw new InvalidDataContractException (String.Format ("Not supported particle {1}. In DataContract, only sequence particle is allowed as the top-level content of a complex type (type '{0}')", qname, particle));
-
-                       if (seq != null) {
-
-                       if (seq.Items.Count == 1 && seq.Items [0] is XmlSchemaAny && type.Parent is XmlSchemaElement) {
-
-                               // looks like it is not rejected (which contradicts the error message on .NET). See XsdDataContractImporterTest.ImportTestX32(). Also ImporTestX13() for Parent check.
-
-                       } else {
-
-                       foreach (var child in seq.Items)
-                               if (!(child is XmlSchemaElement))
-                                       throw new InvalidDataContractException (String.Format ("Only local element is allowed as the content of the sequence of the top-level content of a complex type '{0}'. Other particles (sequence, choice, all, any, group ref) are not supported.", qname));
-
-                       bool isDictionary = false;
-                       if (type.Annotation != null) {
-                               foreach (var ann in type.Annotation.Items) {
-                                       var ai = ann as XmlSchemaAppInfo;
-                                       if (ai != null && ai.Markup != null &&
-                                           ai.Markup.Length > 0 &&
-                                           ai.Markup [0].NodeType == XmlNodeType.Element &&
-                                           ai.Markup [0].LocalName == "IsDictionary" &&
-                                           ai.Markup [0].NamespaceURI == KnownTypeCollection.MSSimpleNamespace)
-                                               isDictionary = true;
-                               }
-                       }
-
-                       /*
-                        * Collection Type Support:
-                        * 
-                        * We need to distinguish between normal array/dictionary collections and
-                        * custom collection types which use [CollectionDataContract].
-                        * 
-                        * The name of a normal collection type starts with "ArrayOf" and uses the
-                        * element type's namespace.  We use the collection type directly and don't
-                        * generate a proxy class for these.
-                        * 
-                        * The collection type (and the base class or a custom collection's proxy type)
-                        * is dermined by 'ImportOptions.ReferencedCollectionTypes'.  The default is to
-                        * use an array for list collections and Dictionary<,> for dictionaries.
-                        * 
-                        * Note that my implementation currently only checks for generic type definitions
-                        * in the 'ImportOptions.ReferencedCollectionTypes' - it looks for something that
-                        * implements IEnumerable<T> or IDictionary<K,V>.  This is not complete, but it's
-                        * all that's necessary to support different collection types in a GUI.
-                        * 
-                        * Simply use
-                        *     var options = new ImportOptions ();
-                        *     options.ReferencedCollectionTypes.Add (typeof (LinkedList<>));
-                        *     options.ReferencedCollectionTypes.Add (typeof (SortedList<,>));
-                        * to configure these; see XsdDataContractImportTest2.cs for some examples.
-                        * 
-                        */
-
-                       if (seq.Items.Count == 1) {
-                               var pt = (XmlSchemaParticle) seq.Items [0];
-                               var xe = pt as XmlSchemaElement;
-                               if (pt.MaxOccursString == "unbounded") {
-                                       // import as a collection contract.
-                                       if (pt is XmlSchemaAny) {
-                                       } else if (isDictionary) {
-                                               var kvt = xe.ElementSchemaType as XmlSchemaComplexType;
-                                               var seq2 = kvt != null ? kvt.Particle as XmlSchemaSequence : null;
-                                               var k = seq2 != null && seq2.Items.Count == 2 ? seq2.Items [0] as XmlSchemaElement : null;
-                                               var v = seq2 != null && seq2.Items.Count == 2 ? seq2.Items [1] as XmlSchemaElement : null;
-                                               if (k == null || v == null)
-                                                       throw new InvalidDataContractException (String.Format ("Invalid Dictionary contract type '{0}'. A Dictionary schema type must have a sequence particle which contains exactly two schema elements for key and value.", type.QualifiedName));
-                                               return ImportCollectionType (td, schemas, type, k, v);
-                                       }
-                                       return ImportCollectionType (td, schemas, type, xe);
-                               }
-                       }
-                       if (isDictionary)
-                               throw new InvalidDataContractException (String.Format ("complex type '{0}' is an invalid Dictionary type definition. A Dictionary must have a sequence particle with exactly two child elements", qname));
-
-                       // import as a (normal) contract.
-                       var elems = new List<XmlSchemaElement> ();
-                       foreach (XmlSchemaElement xe in seq.Items) {
-                               if (xe.MaxOccurs != 1)
-                                       throw new InvalidDataContractException (String.Format ("schema complex type '{0}' has a content sequence containing an element '{1}' with 'maxOccurs' value as more than 1, which is not supported in DataContract.", qname, xe.QualifiedName));
-
-                               if (elems.Any (e => e.QualifiedName.Name == xe.QualifiedName.Name))
-                                       throw new InvalidDataContractException (String.Format ("In schema type '{0}', there already is an element whose name is {1}, where duplicate of element names are not supported.", qname, xe.QualifiedName.Name));
-
-                               elems.Add (xe);
-                       }
-                       foreach (var xe in elems) {
-                               // import property type in prior.
-                               Import (schemas, xe.ElementSchemaType.QualifiedName);
-                               AddProperty (td, xe);
-                       }
-
-                       } // if (seq contains only an xs:any)
-                       } // if (seq != 0)
-
-                       AddTypeAttributes (td, type);
-                       AddExtensionData (td);
-
-                       return true;
-               }
-
-               bool ImportCollectionType (CodeTypeDeclaration td, XmlSchemaSet schemas,
-                                          XmlSchemaComplexType type,
-                                          XmlSchemaElement key, XmlSchemaElement value)
-               {
-                       Import (schemas, key.ElementSchemaType);
-                       Import (schemas, value.ElementSchemaType);
-                       var keyType = GetCodeTypeReference (key.ElementSchemaType.QualifiedName);
-                       var valueType = GetCodeTypeReference (value.ElementSchemaType.QualifiedName);
-
-                       var collectionType = GetDictionaryCollectionType ();
-                       var baseTypeName = collectionType != null ?
-                               collectionType.FullName : "System.Collections.Generic.Dictionary";
-
-                       if (type.QualifiedName.Name.StartsWith ("ArrayOf")) {
-                               // Standard collection, use the collection type instead of
-                               // creating a proxy class.
-                               var cti = imported_types.First (i => i.XsdType == type);
-                               cti.ClrType = new CodeTypeReference (baseTypeName, keyType, valueType);
-                               return false;
-                       }
-
-                       td.BaseTypes.Add (new CodeTypeReference (baseTypeName, keyType, valueType));
-                       AddTypeAttributes (td, type, key);
-                       AddTypeAttributes (td, type, value);
-                       return true;
-               }
-
-               bool ImportCollectionType (CodeTypeDeclaration td, XmlSchemaSet schemas,
-                                          XmlSchemaComplexType type, XmlSchemaElement xe)
-               {
-                       Import (schemas, xe.ElementSchemaType);
-                       var element = GetCodeTypeReference (xe.ElementSchemaType.QualifiedName);
-
-                       var collectionType = GetListCollectionType ();
-
-                       if (type.QualifiedName.Name.StartsWith ("ArrayOf")) {
-                               // Standard collection, use the collection type instead of
-                               // creating a proxy class.
-                               var cti = imported_types.First (i => i.XsdType == type);
-                               if (collectionType != null)
-                                       cti.ClrType = new CodeTypeReference (collectionType.FullName, element);
-                               else
-                                       cti.ClrType = new CodeTypeReference (element, 1);
-                               return false;
-                       }
-
-                       var baseTypeName = collectionType != null ?
-                               collectionType.FullName : "System.Collections.Generic.List";
-
-                       td.BaseTypes.Add (new CodeTypeReference (baseTypeName, element));
-                       AddTypeAttributes (td, type, xe);
-                       return true;
-               }
-
-               bool ImplementsInterface (Type type, Type iface)
-               {
-                       foreach (var i in type.GetInterfaces ()) {
-                               if (i.Equals (iface))
-                                       return true;
-                               if (i.IsGenericType && i.GetGenericTypeDefinition ().Equals (iface))
-                                       return true;
-                       }
-
-                       return false;
-               }
-
-               Type GetListCollectionType ()
-               {
-                       if (import_options == null)
-                               return null;
-                       var listTypes = import_options.ReferencedCollectionTypes.Where (
-                               t => t.IsGenericTypeDefinition && t.GetGenericArguments ().Length == 1 &&
-                               ImplementsInterface (t, typeof (IEnumerable<>)));
-                       return listTypes.FirstOrDefault ();
-               }
-
-               Type GetDictionaryCollectionType ()
-               {
-                       if (import_options == null)
-                               return null;
-                       var dictTypes = import_options.ReferencedCollectionTypes.Where (
-                               t => t.IsGenericTypeDefinition && t.GetGenericArguments ().Length == 2 &&
-                               ImplementsInterface (t, typeof (IDictionary<,>)));
-                       return dictTypes.FirstOrDefault ();
-               }
-
-               static readonly CodeExpression this_expr = new CodeThisReferenceExpression ();
-               static readonly CodeExpression arg_value_expr = new CodePropertySetValueReferenceExpression ();
-
-               bool GenerateInternal {
-                       get { return Options != null && Options.GenerateInternal; }
-               }
-
-               void AddProperty (CodeTypeDeclaration td, XmlSchemaElement xe)
-               {
-                       var att = GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public;
-                       var fi = new CodeMemberField () { Name = CodeIdentifier.MakeValid (xe.QualifiedName.Name + "Field"), Type = GetCodeTypeReference (xe.ElementSchemaType.QualifiedName, xe) };
-                       td.Members.Add (fi);
-                       var pi = new CodeMemberProperty () { Name = xe.QualifiedName.Name, Attributes = att, HasGet = true, HasSet = true, Type = fi.Type };
-                       // [DataMember(Name=foobar, IsRequired=!nillable)]
-                       var dma = new CodeAttributeDeclaration (
-                               new CodeTypeReference (typeof (DataMemberAttribute)));
-                       if (fi.Name != xe.QualifiedName.Name)
-                               new CodeAttributeArgument ("Name", new CodePrimitiveExpression (xe.QualifiedName.Name));
-                       if (!xe.IsNillable)
-                               new CodeAttributeArgument ("IsRequired", new CodePrimitiveExpression (true));
-                       pi.CustomAttributes.Add (dma);
-
-                       pi.GetStatements.Add (new CodeMethodReturnStatement () { Expression = new CodeFieldReferenceExpression (this_expr, fi.Name) });
-                       pi.SetStatements.Add (new CodeAssignStatement (new CodeFieldReferenceExpression (this_expr, fi.Name), arg_value_expr));
-
-
-                       td.Members.Add (pi);
-               }
-
-               bool IsPredefinedType (XmlQualifiedName qname)
-               {
-                       if (qname == null)
-                               return false;
-                       switch (qname.Namespace) {
-                       case KnownTypeCollection.MSSimpleNamespace:
-                               return KnownTypeCollection.GetPrimitiveTypeFromName (qname) != null;
-                       case XmlSchema.Namespace:
-                               return XmlSchemaType.GetBuiltInSimpleType (qname) != null || XmlSchemaType.GetBuiltInComplexType (qname) != null;
-                       }
-                       return false;
-               }
-
-               CodeNamespace GetCodeNamespace (string xmlns)
-               {
-                       string ns = null;
-                       if (Options == null || !Options.Namespaces.TryGetValue (xmlns, out ns))
-                               ns = GetCodeNamespaceFromXmlns (xmlns);
-
-                       foreach (CodeNamespace cns in CodeCompileUnit.Namespaces)
-                               if (cns.Name == ns)
-                                       return cns;
-                       var newCns = new CodeNamespace () { Name = ns };
-                       CodeCompileUnit.Namespaces.Add (newCns);
-                       return newCns;
-               }
-
-               const string default_ns_prefix = "http://schemas.datacontract.org/2004/07/";
-
-               string GetCodeNamespaceFromXmlns (string xns)
-               {
-                       if (xns.StartsWith (default_ns_prefix, StringComparison.Ordinal))
-                               xns = xns.Substring (default_ns_prefix.Length);
-                       else {
-                               Uri u;
-                               string tmp;
-                               if (Uri.TryCreate (xns, UriKind.Absolute, out u) && (tmp = MakeStringNamespaceComponentsValid (u.GetComponents (UriComponents.Host | UriComponents.Path, UriFormat.Unescaped))).Length > 0)
-                                       xns = tmp;
-                       }
-                       return MakeStringNamespaceComponentsValid (xns);
-               }
-
-               static readonly char [] split_tokens = new char [] {'/', '.'};
-
-               string MakeStringNamespaceComponentsValid (string ns)
-               {
-                       var arr = ns.Split (split_tokens, StringSplitOptions.RemoveEmptyEntries);
-                       for (int i = 0; i < arr.Length; i++)
-                               arr [i] = CodeIdentifier.MakeValid (arr [i]);
-                       return String.Join (".", arr);
-               }
-
-               // Post-compilation information retrieval
-
-               TypeImportInfo GetTypeInfo (XmlQualifiedName typeName, bool throwError)
-               {
-                       var info = imported_types.FirstOrDefault (
-                               i => i.XsdTypeName.Equals (typeName) || i.XsdType.QualifiedName.Equals (typeName));
-                       if (info == null) {
-                               if (throwError)
-                                       throw new InvalidOperationException (String.Format ("schema type '{0}' has not been imported yet. Import it first.", typeName));
-                               return null;
-                       }
-                       return info;
-               }
-
-               public CodeTypeReference GetCodeTypeReference (XmlQualifiedName typeName)
-               {
-                       return GetCodeTypeReferenceInternal (typeName, true);
-               }
-
-               CodeTypeReference GetCodeTypeReferenceInternal (XmlQualifiedName typeName, bool throwError)
-               {
-                       if (typeName == null)
-                               throw new ArgumentNullException ("typeName");
-
-                       switch (typeName.Namespace) {
-                       case XmlSchema.Namespace:
-                       case KnownTypeCollection.MSSimpleNamespace:
-                               var pt = KnownTypeCollection.GetPrimitiveTypeFromName (typeName);
-                               if (pt == null)
-                                       throw new ArgumentException (String.Format ("Invalid type name in a predefined namespace: {0}", typeName));
-                               return new CodeTypeReference (pt);
-                       }
-
-                       var info = GetTypeInfo (typeName, throwError);
-                       return info != null ? info.ClrType : null;
-               }
-
-               [MonoTODO ("use element argument and fill Nullable etc.")]
-               public CodeTypeReference GetCodeTypeReference (XmlQualifiedName typeName, XmlSchemaElement element)
-               {
-                       if (typeName == null)
-                               throw new ArgumentNullException ("typeName");
-                       if (element == null)
-                               throw new ArgumentNullException ("element");
-
-                       return GetCodeTypeReference (typeName);
-               }
-
-               public ICollection<CodeTypeReference> GetKnownTypeReferences (XmlQualifiedName typeName)
-               {
-                       if (typeName == null)
-                               throw new ArgumentNullException ("typeName");
-
-                       return GetTypeInfo (typeName, true).KnownClrTypes;
-               }
-
-               List<TypeImportInfo> imported_types = new List<TypeImportInfo> ();
-
-               class TypeImportInfo
-               {
-                       public TypeImportInfo ()
-                       {
-                               KnownClrTypes = new List<CodeTypeReference> ();
-                       }
-
-                       public CodeTypeReference ClrType { get; set; }
-                       public XmlQualifiedName XsdTypeName { get; set; }
-                       public XmlSchemaType XsdType { get; set; }
-                       public List<CodeTypeReference> KnownClrTypes { get; private set; }
-                       public int KnownTypeOutputIndex { get; set; } // updated while importing.
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog b/mcs/class/System.Runtime.Serialization/System.Xml/ChangeLog
deleted file mode 100755 (executable)
index 25af315..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-2010-06-02 Atsushi Enomoto  <atsushi@ximian.com>
-
-        * XmlBinaryDictionaryReader.cs : reset name in Reset().
-          Fixed bug #599479.
-
-2010-02-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : try to lookup dictionary string in
-         WriteNode(). This is part of #577139 fix (probably).
-
-2010-02-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : for text '0' and '1', write 0x80 and
-         0x82 instead of 0x99 [0x30|0x31]. This cosmetic fix gives identical
-         writer output for #577139 (and yet it still doesn't work).
-
-2009-12-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : slightly more descriptive errmsg.
-
-2009-12-01  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * XmlDictionaryReader.cs: Fix ReadValueAsBase64 return value and
-       remove NET_2_1 (gui-compare shows this in our 3.0 SP1 profile)
-
-2009-09-21  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * XmlDictionaryWriter.cs: Remove usage of XmlMtomDictionaryWriter
-       for NET_2_1
-
-2009-07-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : ReadValueAsBase64(byte[],int,int) is only
-         in SL2.
-
-2009-07-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : read false (0x84) and true (0x86).
-
-2009-07-07  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSimpleDictionaryWriter.cs : fix bogus import of
-         XmlWriter.WriteNode() to handle more than two elements.
-
-2009-06-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : fix GetAttribute() that returns
-         attributes from cache that are *not* in current element.
-
-2009-06-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : there was wrong reusage of nodes
-         when the node was at the top of the stack. It was added twice and
-         call to reset resulted in end element with empty names.
-
-2009-05-29  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : allow mapping an identical prefix
-         to different xmlns in different element level.
-
-2009-05-29  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : allow writing xml/xmlns attributes
-         without specifying their corresponding namespaces.
-
-2009-05-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : fix regression on stream consumption
-         excess.
-
-2009-05-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : ReadContentString() returned
-         doubled string result.
-
-2009-05-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : fix utf16 array on getting its
-         length. Report correct length (since BinaryReader is directly used
-         it makes no sense to incompletely keep track of position in Source).
-
-2009-05-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : support reader quotas.
-
-2009-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * UniqueId.cs: Fix attributes for v3.5 (and later 2.0 SP) and remove
-       them (in particular [SecurityTreatAsSafe]) from the NET_2_1 build.
-
-2009-04-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : several fixes;
-         - Name property was always empty.
-         - Value property was always empty for attributes.
-         - TextIndex node type was not supported.
-         - node reset at Read() was incomplete.
-         - attribute Prefix for single character had wrong value.
-         - namespace nodes did not appear as attribute nodes.
-         - attribute value node must be always single. Another text node
-           means a text child of the element, not the following attr value.
-         tests will go in sys.servicemodel.
-
-2009-04-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlMtomDictionaryReader.cs : new.
-       * XmlDictionaryReader.cs : implemented CreateMtomReader().
-
-2009-04-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlMtomDictionaryWriter.cs : new.
-       * XmlDictionaryWriter.cs : implement CreateMtomWriter().
-
-2009-04-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : add ReadStartElement() overload.
-
-2009-04-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * UniqueId.cs : add missing security attributes.
-       * XmlDictionaryReader.cs : cleanup extra TODOs.
-       * XmlBinaryDictionaryReader.cs : iplement IsArray.
-
-2009-03-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlDictionaryWriter.cs :
-         a couple of fixes to reflect correct values for node properties
-         on each read step.
-
-2009-03-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlBinaryFormat.cs :
-         support array operation (0x03) on reader too.
-
-2009-03-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : removed lots of unused part.
-
-2009-03-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriterAutoGen.cs : generated code.
-       * XmlBinaryFormat.cs, XmlBinaryDictionaryWriter.cs :
-         support array operation (0x03) and a bunch of WriteArray() methods.
-
-2009-03-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlBinaryDictionaryWriter.cs
-         XmlBinaryFormat.cs : implemented element with short prefix.
-
-2009-03-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryFormat.cs, XmlBinaryDictionaryWriter.cs :
-         resolved all namespace and QName issues.
-
-2009-03-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : further namespace refactory.
-         namespaces are managed by its own (to work fine for both string
-         and dictionary string).
-
-2009-03-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryFormat.cs, XmlBinaryDictionaryReader.cs,
-         XmlBinaryDictionaryWriter.cs : improved shorthanded prefix
-         support. Not only autocreated prefixes but also explicitly-
-         specified 'a' .. 'z' prefixes are mapped as shorthand.
-         Some significant (and ongoing) namespace support changes.
-
-2009-03-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryFormat.cs, XmlBinaryDictionaryWriter.cs :
-         added some incomplete code for QName support.
-
-2009-03-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlBinaryFormat.cs :
-         handle utf16 typed nodes. (not sure if it is used in writer.)
-
-2009-03-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : oops, fix build.
-
-2009-03-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs, XmlBinaryDictionaryReader.cs,
-         XmlBinaryFormat.cs, : reverted Uuid change (UniqueId is different).
-         Updated TODO status. Removed extra BinaryReader type.
-
-2009-03-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlBinaryDictionaryWriter.cs,
-         XmlBinaryFormat.cs : fixed couple of issues regarding text and
-         base64 fixed-length buffers (their sizes are not variant).
-         Some ongoing changes on reading dummy-prefixed attributes.
-
-2009-03-25  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlBinaryFormat.cs,
-         XmlBinaryDictionaryWriter.cs : couple of enhancements to support
-         missing types, Dictionary string lookups and indexing fixes.
-         Also reflect some correction by [MC-NBFX] (MS OSPed document).
-       * XmlBinaryReaderSession.cs : implemented.
-
-2009-03-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : more not-understandable bits.
-
-2009-03-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : implemented ReadFullStartElement (full??).
-
-2009-03-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : implemented missing && understandable
-         members.
-
-2009-03-02  Chris Toshok  <toshok@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlSimpleDictionaryReader.cs: 2.1
-       has HasValue.
-
-2009-02-13  Jonathan Pryor  <jpryor@novell.com>
-
-       * UniqueId.cs: Remove most [MonoTODO]s and NotImplementedExceptions.
-         Revert the 2009-02-12 UniqueId.IsGuid "fix", as .NET says that 
-         new UniqueId(new Guid()).IsGuid==false (which makes no sense, as
-         .ToString() on the same instance includes the "urn:uuid:" prefix,
-         which is used by Guids...).
-
-2009-02-13  Jonathan Pryor  <jpryor@novell.com>
-
-       * XmlDictionaryWriter.cs: Implement WriteValue(IStreamProvider).
-
-2009-02-13  Jonathan Pryor  <jpryor@novell.com>
-
-       * XmlDictionaryWriter.cs: Implement
-         WriteTextNode(XmlDictionaryReader,bool).  This requires changes to
-         WriteNode(), as testing had determined that WriteTextNode() is used
-         instead of WriteString() for Text nodes and attribute values when
-         called via WriteNode().
-
-2009-02-12  Jonathan Pryor  <jpryor@novell.com>
-
-       * XmlDictionaryWriter.cs: Implement WriteValue(Guid),
-         WriteValue(TimeSpan), WriteValue(UniqueId).
-       * UniqueId.cs: Fix UniqueId.IsGuid, as `new UniqueId(new Guid())` was
-         previously being detected as a string value, not a Guid value.
-
-2009-02-12  Jonathan Pryor  <jpryor@novell.com>
-
-       * XmlDictionaryWriter.cs (WriteStartElement): Add parameter checking
-         and default arguments to avoid NullReferenceExceptions.
-
-2009-02-11  Jonathan Pryor  <jpryor@novell.com>
-
-       * XmlDictionaryString.cs: Add constructor argument checking.
-
-2009-02-10  Jonathan Pryor  <jpryor@novell.com>
-
-       * IFragmentCapableXmlDictionaryWriter.cs: Added.
-
-2008-09-09  Atsushi Enomoto  <atsushi@ximian.com>
-                       Jb Evain  <jbevain@novell.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlSimpleDictionaryReader.cs:
-       add support to build on the net_2_1 profile.
-
-2008-04-10  Eyal Alaluf <eyala@mainsoft.com>
-
-       * XmlBinaryDictionaryWriter.cs: WriteXmlnsAttribute generates a prefix
-         when given a null prefix.
-
-2008-03-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs :
-         - It didn't clean namespaces up during Read().
-         - Non-typed attribute nodes should be allowed in get_Value().
-         - Fixed wrong namespace scope push.
-
-2008-02-27 Eyal Alaluf <eyala@mainsoft.com>
-
-       * XmlBinaryDictionaryReader.cs: Handle compilation warnings.
-       * XmlSimpleDictionaryReader.cs: Added onClose handling.
-       * XmlDictionaryReader.cs: Simple implementation of CreateTextReader.
-
-2008-02-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : Even with UTF8 (marked) .net does not
-         output BOMs, so use always unmarked utf8 for any UTF8 encodings.
-
-2008-02-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : Since it does not support XML declaration
-         its encoding is limited to utf16 and utf8. Null argument check.
-
-2007-11-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : WriteNode() is override, not new.
-
-2007-07-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : store Depth for dummy prefix output.
-         WriteXmlnsAttribute() writes dummy prefix when null prefix is given.
-       * XmlSimpleDictionaryWriter.cs, XmlBinaryDictionaryWriter.cs :
-         increment Depth on WriteStartElement() and decrement it on
-         WriteEndElement(). They don't have to be complete, just fine as
-         long as it correctly creates a dummy.
-
-2007-04-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryFormat.cs : added Base64Fixed (0xA0).
-       * XmlBinaryDictionaryReader.cs : support 0xA0 type above.
-         ReadInt() refactoring. Handle float and double value types.
-
-2007-03-30  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs :
-         implemented some ReadContentAs[Type]() methods.
-       * XmlDictionaryReader.cs :
-         Added Read[[Element]ContentAs]String() implementations.
-       * XmlDictionaryReaderAutoGen.cs : regenerated
-
-2007-03-20  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : simply return false for
-         TryGet[Base64|Array]Length().
-       * XmlBinaryDictionaryReader.cs : Value string should be pupulated
-         for typed value nodes.
-
-2007-03-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : more ongoing updates (valuetype support,
-         key support updates, ReadElementContentAsBase64).
-
-2007-03-19  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryFormat.cs, XmlBinaryDictionaryWriter.cs :
-         support following operators; 0x80 (integer 0), 0x82 (integer 1) and
-         0xAE (UniqueId which is created from Guid).
-         Little fix for length output.
-
-2007-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : fix infinite loop.
-
-2007-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : added couple of missing methods.
-
-2007-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReaderAutoGen.cs : regenerated.
-
-2007-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : ongoing updates to the 3.0 RTM
-         format.
-
-2007-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : for XmlWriterBinarySession lookup,
-         internal dictionary lookup should be string-based, since otherwise
-         it will never return correct dictionary string stored when the
-         dictionary string is from another dictionary.
-       * XmlBinaryWriterSession.cs :
-         TryLookup() is now based on string value comparison.
-         Reverted internal dictionary to int->XmlDictionaryString form,
-         as I don't use TryGetValue() anymore.
-
-2007-03-16  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : WriteValue(Decimal) is working now.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryFormat.cs : new file, collection of constants.
-       * XmlBinaryDictionaryWriter.cs :
-         Stream->BinaryWriter. Support for WriteValue() for almost all
-         types.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : removed couple of MonoTODOs.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : more couple of fixes (typed value
-         support and fixes, more element/attribute namespace fixes etc.).
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : fixed Base64 operation byte.
-         For comment node there is no corresponding combined EndElement
-         operation, so don't try to combine it.
-         Don't output xmlns and xml namespaces.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : fixed couple of dictionary string
-         issues (on lookup and index output).
-       * XmlBinaryWriterSession.cs : added internal TryLookup(). Changed
-         internal structure to have dictionary string as a key.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : new prefix population is needed
-         in this class too.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : more WriteEndAttribute() is needed.
-         Remove wrong namespaceUri index output. Fixed attribute operation.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : output attribute value.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : for binary output format requirement,
-         every content must be buffered once and wait for next operation so
-         that if the content is one of the content sequence or not. This is
-         almost silly, but that is what Microsoft wanted to do.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : couple of namespaces processing fix.
-
-2007-03-15  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : WriteAttributeString and WriteStartElement
-         should also delegate to dictionary-string based methods.
-       * XmlBinaryDictionaryWriter.cs : ongoing reimplementation as it was
-         based on pretty old design as well as pretty old XmlTextWriter.
-
-2007-03-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryWriterSession.cs : implemented.
-       * XmlBinaryDictionaryWriter.cs : a bunch of updates.
-
-2007-03-14  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * UniqueId.cs : hacky Equals() implementation.
-       * XmlDictionaryReaderQuotas.cs : removed Default and fixed Max.
-       * XmlSimpleDictionaryWriter.cs : in .NET 3.0 RTM, it is supported.
-       * XmlDictionaryWriter.cs : WriteStartElement(XmlDictionaryString,
-         XmlDictionaryString) should call WriteStartElement(string,
-         XmlDictionaryString,XmlDictionaryString) since because only the
-         latter is overridable and possible to provide dictionary string.
-
-2007-03-09  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : make it partial. Fill Quotas when requested.
-       * XmlDictionaryReaderAutoGen.cs : added autogenerated array reader
-         methods.
-       * XmlDictionaryWriter.cs : make it partial.
-       * XmlDictionaryWruterAutoGen.cs : added autogenerated array writer
-         methods.
-
-2006-10-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, XmlSimpleDictionaryReader.cs :
-         implement IXmlNamespaceResolver.
-
-2006-07-31  Ankit Jain  <jankit@novell.com>
-
-       * UniqueId.cs (.ctor): (string overload) Implement.
-       (ToString): Prepend "urn:uuid:" instead of "uuid-".
-
-2006-07-31  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * UniqueId.cs : some implementation.
-
-2006-07-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs, XmlSimpleDictionaryWriter.cs,
-         XmlDictionaryReaderQuotas.cs : June CTP API update.
-
-2006-07-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs, IStreamProvider.cs,
-         XmlSimpleDictionaryReader.cs, IXmlMtomReaderInitializer.cs,
-         XmlBinaryWriterSession.cs, IXmlUTF8ReaderInitializer.cs,
-         IXmlMtomWriterInitializer.cs, XmlDictionaryReader.cs :
-         June CTP API updates.
-
-2006-01-17  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlShimWriter.cs : deleted.
-       * XmlBinaryDictionaryWriter.cs, XmlSimpleDictionaryWriter.cs :
-         WriteProcessingInstruction() throws InvalidOperationException.
-
-2005-11-28  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs, XmlBinaryDictionaryWriter.cs,
-         XmlDictionary.cs, XmlDictionaryWriter.cs, XmlC14NWriter.cs :
-         several API fixes to Nov. CTP.
-
-2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs : CreateMtomReader() stubs.
-
-2005-10-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : use saved xml_lang and xml_space for
-         those corresponding properties (they bork at the declaring element).
-
-2005-10-24  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * UniqueId.cs : it does not compile.
-
-2005-10-23  Duncan Mak  <duncan@novell.com>
-
-       * UniqueId.cs (.ctor): Implement some overloads by chaining it to
-       other Unimplemented ones.
-       (operator ==, operator !=): Implemented using the Equals method.
-       (Equals, TryGetGuid): Well, at least figure the false case....
-
-2005-10-23  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionary.cs : fixed type of Empty.
-       * XmlDictionaryReaderQuotas.cs : Default and Max were not readonly.
-
-2005-10-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : and it can GetContext().
-
-2005-10-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs :
-         Fixed index for room-reserved attributes (0x22-0x3B).
-         Added note on 0x9D.
-       * XmlBinaryDictionaryReader.cs :
-         Several fixes to get it work fine.
-
-2005-10-05  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionary.cs : TryLookup() should use TryGetValue().
-         Fixed incorrect upper bound check for TryLookup(int, out dictstr).
-       * XmlBinaryDictionaryWriter.cs : Use 0x8B for empty string everywhere
-         we use 0x83.
-
-2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryReader.cs : new file for CreateBinaryReader().
-       * XmlDictionaryReader.cs : use above.
-       * XmlBinaryDictionaryWriter.cs : several fixes (renamed private
-         fields, added more notes, and much more).
-
-2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs :
-         Added notes on dictionary string support inference. Fixed filename.
-
-2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlBinaryDictionaryWriter.cs : new file for CreateBinaryWriter().
-       * XmlDictionaryWriter.cs : use above.
-
-2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : stubby WriteNode() impl.
-       * XmlBinaryWriterSession.cs : tiny notes.
-
-2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlSimpleDictionaryWriter.cs : new file for CreateDictionaryWriter().
-         Implemented simple XmlWriter functionality.
-       * XmlDictionaryWriter.cs : use above.
-
-2005-10-03  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryWriter.cs : implemented some members. Added more stubs.
-
-2005-09-29  Duncan Mak  <duncan@novell.com>
-
-       * XmlDictionaryWriter.cs (CreateBinaryWriter): Added stub.
-
-2005-09-28  Duncan Mak  <duncan@novell.com>
-
-       * XmlDictionaryWriter.cs (CreateDictionaryWriter): Added stub.
-
-2005-09-27  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryReader.cs :
-         Some member signature fixes.
-         implemented CreateDictionaryReader().
-         TryGetLocalNameAsDictionaryString() seems always returning false.
-         IsLocalName() is not likely to use TryGet...() above.
-       * XmlSimpleDictionaryReader.cs : for CreateDictionaryReader().
-
-2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryString.cs, XmlDictionary.cs,
-         XmlDictionaryReaderQuotas.cs, XmlDictionaryReader.cs:
-         added some implementations.
-
-2005-09-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * XmlDictionaryString.cs, XmlShimWriter.cs,
-         IXmlBinaryWriterInitializer.cs, IXmlUTF8WriterInitializer.cs,
-         XmlDictionaryWriter.cs, UniqueId.cs, XmlC14NWriter.cs,
-         XmlDictionary.cs, OnXmlDictionaryReaderClose.cs,
-         XmlBinaryReaderSession.cs, IXmlMtomReaderInitializer.cs,
-         IXmlDictionary.cs, IXmlBinaryReaderInitializer.cs,
-         XmlCanonicalWriter.cs, XmlBinaryWriterSession.cs,
-         XmlDictionaryReaderQuotas.cs, IXmlUTF8ReaderInitializer.cs,
-         IXmlMtomWriterInitializer.cs, XmlDictionaryReader.cs :
-         #if NET_2_0. coding style was updated.
-
-2005-09-22  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * IXmlBinaryReaderInitializer.cs
-         IXmlBinaryWriterInitializer.cs
-         IXmlDictionary.cs
-         IXmlMtomReaderInitializer.cs
-         IXmlMtomWriterInitializer.cs
-         IXmlUTF8ReaderInitializer.cs
-         IXmlUTF8WriterInitializer.cs
-         OnXmlDictionaryReaderClose.cs
-         UniqueId.cs
-         XmlBinaryReaderSession.cs
-         XmlBinaryWriterSession.cs
-         XmlC14NWriter.cs
-         XmlCanonicalWriter.cs
-         XmlDictionary.cs
-         XmlDictionaryReader.cs
-         XmlDictionaryReaderQuotas.cs
-         XmlDictionaryString.cs
-         XmlDictionaryWriter.cs
-         XmlShimWriter.cs : new files.
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IFragmentCapableXmlDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IFragmentCapableXmlDictionaryWriter.cs
deleted file mode 100644 (file)
index f9c8ac2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// IFragmentCapableXmlDictionaryWriter.cs
-//
-// Author:
-//     Jonathan Pryor <jpryor@novell.com>
-//
-// Copyright (C) 2009 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.IO;
-
-namespace System.Xml
-{
-       public interface IFragmentCapableXmlDictionaryWriter
-       {
-               bool CanFragment { get; }
-
-               void StartFragment (Stream stream, bool generateSelfContainedTextFragment);
-               void WriteFragment (byte[] buffer, int offset, int count);
-               void EndFragment ();
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IStreamProvider.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IStreamProvider.cs
deleted file mode 100644 (file)
index 3856a45..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IStreamProvider.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.IO;
-
-namespace System.Xml
-{
-       public interface IStreamProvider
-       {
-               Stream GetStream ();
-               void ReleaseStream (Stream stream);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlBinaryReaderInitializer.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlBinaryReaderInitializer.cs
deleted file mode 100644 (file)
index e0d2840..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// IXmlBinaryReaderInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-
-namespace System.Xml
-{
-       public interface IXmlBinaryReaderInitializer
-       {
-               void SetInput (
-                       Stream stream,
-                       IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quota,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose);
-
-               void SetInput (byte [] buffer, int offset, int count,
-                       IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quota,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlBinaryWriterInitializer.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlBinaryWriterInitializer.cs
deleted file mode 100644 (file)
index fa34bf5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// IXmlBinaryWriterInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-
-namespace System.Xml
-{
-       public interface IXmlBinaryWriterInitializer
-       {
-               void SetOutput (Stream stream,
-                       IXmlDictionary dictionary,
-                       XmlBinaryWriterSession session,
-                       bool ownsStream);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlDictionary.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlDictionary.cs
deleted file mode 100644 (file)
index a894ae1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IXmlDictionary.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Xml
-{
-       public interface IXmlDictionary
-       {
-               bool TryLookup (int key, out XmlDictionaryString result);
-               bool TryLookup (string value, out XmlDictionaryString result);
-               bool TryLookup (XmlDictionaryString value,
-                       out XmlDictionaryString result);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlMtomReaderInitializer.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlMtomReaderInitializer.cs
deleted file mode 100644 (file)
index 484e776..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// IXmlMtomReaderInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
-       public interface IXmlMtomReaderInitializer
-       {
-               void SetInput (Stream stream, Encoding [] encodings,
-                               string contentType,
-                               XmlDictionaryReaderQuotas quotas,
-                               int maxBufferSize,
-                               OnXmlDictionaryReaderClose onClose);
-
-               void SetInput (byte [] buffer, int offset, int count,
-                               Encoding [] encodings, string contentType, 
-                               XmlDictionaryReaderQuotas quotas,
-                               int maxBufferSize,
-                               OnXmlDictionaryReaderClose onClose);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlMtomWriterInitializer.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlMtomWriterInitializer.cs
deleted file mode 100644 (file)
index 0f85ada..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// IXmlMtomWriterInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
-       public interface IXmlMtomWriterInitializer
-       {
-               void SetOutput (Stream stream, Encoding encoding,
-                       int maxSizeInBytes, string startInfo, string boundary,
-                       string startUri, bool writeMessageHeaders, bool ownsStream);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlUTF8ReaderInitializer.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlUTF8ReaderInitializer.cs
deleted file mode 100644 (file)
index 126e7a1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// IXmlTextReaderInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
-       public interface IXmlTextReaderInitializer
-       {
-               void SetInput (byte [] buffer, int offset, int count,
-                       Encoding encoding,
-                       XmlDictionaryReaderQuotas quota,
-                       OnXmlDictionaryReaderClose onClose);
-
-               void SetInput (Stream stream,
-                       Encoding encoding,
-                       XmlDictionaryReaderQuotas quota,
-                       OnXmlDictionaryReaderClose onClose);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/IXmlUTF8WriterInitializer.cs b/mcs/class/System.Runtime.Serialization/System.Xml/IXmlUTF8WriterInitializer.cs
deleted file mode 100644 (file)
index 83d6fdc..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// IXmlTextWriterInitializer.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
-       public interface IXmlTextWriterInitializer
-       {
-               void SetOutput (Stream stream, Encoding encoding, bool ownsStream);
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/OnXmlDictionaryReaderClose.cs b/mcs/class/System.Runtime.Serialization/System.Xml/OnXmlDictionaryReaderClose.cs
deleted file mode 100644 (file)
index 54ce036..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// OnXmlDictionaryReaderClose.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Xml
-{
-       public delegate void OnXmlDictionaryReaderClose (XmlDictionaryReader reader);
-}
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/UniqueId.cs b/mcs/class/System.Runtime.Serialization/System.Xml/UniqueId.cs
deleted file mode 100644 (file)
index 28cbb00..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-//
-// UniqueId.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//     Jonathan Pryor <jpryor@novell.com>
-//
-// Copyright (C) 2005,2007,2009 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Security;
-
-namespace System.Xml
-{
-       public class UniqueId
-       {
-               Guid guid;
-               string id;
-
-               public UniqueId ()
-                       : this (Guid.NewGuid ())
-               {
-               }
-
-               public UniqueId (byte [] id)
-                       : this (id, 0)
-               {
-               }
-
-               public UniqueId (Guid id)
-               {
-                       this.guid = id;
-               }
-
-               public UniqueId (string value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value cannot be null", "value");
-
-                       if (value.Length == 0)
-                               throw new FormatException ("UniqueId cannot be zero length");
-
-                       this.id = value;
-               }
-
-               public UniqueId (byte [] id, int offset)
-               {
-                       if (id == null)
-                               throw new ArgumentNullException ();
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException ("offset");
-                       if (offset >= id.Length)
-                               throw new ArgumentException ("id too small.", "offset");
-
-                       if (id.Length - offset != 16)
-                               throw new ArgumentException ("id and offset provide less than 16 bytes");
-
-                       if (offset == 0)
-                               guid = new Guid (id);
-                       else {
-                               List<byte> buf = new List<byte> (id);
-                               buf.RemoveRange (0, offset);
-                               guid = new Guid (buf.ToArray ());
-                       }
-               }
-
-               public UniqueId (char [] id, int offset, int count)
-               {
-                       if (id == null)
-                               throw new ArgumentNullException ("id");
-                       if (offset < 0 || offset >= id.Length)
-                               throw new ArgumentOutOfRangeException ("offset");
-                       if (count < 0 || id.Length - offset < count)
-                               throw new ArgumentOutOfRangeException ("count");
-                       if (count == 0)
-                               throw new FormatException ();
-
-                       // Does it start with "urn:uuid:"?  If so, it's a Guid.
-                       if (count > 8 && id [offset] == 'u' && id [offset+1] == 'r' && 
-                                       id [offset+2] == 'n' && id [offset+3] == ':' &&
-                                       id [offset+4] == 'u' && id [offset+5] == 'u' &&
-                                       id [offset+6] == 'i' && id [offset+7] == 'd' &&
-                                       id [offset+8] == ':') {
-                               if (count != 45)
-                                       throw new ArgumentOutOfRangeException ("Invalid Guid");
-                               this.guid = new Guid (new string (id, offset+9, count-9));
-                       } else
-                               this.id = new string (id, offset, count);
-               }
-
-               public int CharArrayLength {
-                       get {return id != null ? id.Length : 45;}
-               }
-
-               public bool IsGuid {
-                       get { return guid != default (Guid); }
-               }
-
-               public override bool Equals (Object obj)
-               {
-                       UniqueId other = obj as UniqueId;
-
-                       if (other == null)
-                               return false;
-
-                       if (IsGuid && other.IsGuid) {
-                               return guid.Equals (other.guid);
-                       }
-
-                       return id == other.id;
-               }
-
-               [MonoTODO ("Determine semantics when IsGuid==true")]
-               public override int GetHashCode ()
-               {
-                       return id != null ? id.GetHashCode () : guid.GetHashCode ();
-               }
-
-               public static bool operator == (UniqueId id1, UniqueId id2)
-               {
-                       return object.Equals (id1, id2);
-               }
-
-               public static bool operator != (UniqueId id1, UniqueId id2)
-               {
-                       return ! (id1 == id2);
-               }
-
-               public int ToCharArray (char [] array, int offset)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException ("array");
-                       if (offset < 0 || offset >= array.Length)
-                               throw new ArgumentOutOfRangeException ("offset");
-
-                       string s = ToString ();
-                       s.CopyTo (0, array, offset, s.Length);
-                       return s.Length;
-               }
-
-               public override string ToString ()
-               {
-                       if (id == null)
-                               return "urn:uuid:" + guid;
-
-                       return id;
-               }
-
-               public bool TryGetGuid (out Guid guid)
-               {
-                       if (IsGuid) {
-                               guid = this.guid;
-                               return true;
-                       } else {
-                               guid = default (Guid);
-                               return false;
-                       }
-               }
-
-               public bool TryGetGuid (byte [] buffer, int offset)
-               {
-                       if (!IsGuid)
-                               return false;
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-                       if (offset < 0 || offset >= buffer.Length)
-                               throw new ArgumentOutOfRangeException ("offset");
-                       if (buffer.Length - offset < 16)
-                               throw new ArgumentOutOfRangeException ("offset");
-
-                       guid.ToByteArray ().CopyTo (buffer, offset);
-                       return true;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryReader.cs
deleted file mode 100644 (file)
index acc4ad0..0000000
+++ /dev/null
@@ -1,1197 +0,0 @@
-//
-// XmlBinaryDictionaryReader.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2005, 2007 Novell, Inc.  http://www.novell.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Text;
-
-using QName = System.Xml.XmlQualifiedName;
-using BF = System.Xml.XmlBinaryFormat;
-
-namespace System.Xml
-{
-       // FIXME:
-       //      - support XmlDictionaryReaderQuotas.
-
-       internal class XmlBinaryDictionaryReader : XmlDictionaryReader, IXmlNamespaceResolver
-       {
-               internal interface ISource
-               {
-                       int Position { get; }
-                       int ReadByte ();
-                       int Read (byte [] data, int offset, int count);
-                       BinaryReader Reader { get; }
-               }
-
-               internal class StreamSource : ISource
-               {
-                       BinaryReader reader;
-
-                       public StreamSource (Stream stream)
-                       {
-                               this.reader = new BinaryReader (stream);
-                       }
-
-                       public int Position {
-                               get { return (int) reader.BaseStream.Position; }
-                       }
-
-                       public BinaryReader Reader {
-                               get { return reader; }
-                       }
-
-                       public int ReadByte ()
-                       {
-                               return reader.BaseStream.ReadByte ();
-                       }
-
-                       public int Read (byte [] data, int offset, int count)
-                       {
-                               return reader.BaseStream.Read (data, offset, count);
-                       }
-               }
-
-               class NodeInfo
-               {
-                       public NodeInfo ()
-                       {
-                       }
-
-                       public NodeInfo (bool isAttr)
-                       {
-                               IsAttributeValue = isAttr;
-                       }
-
-                       public bool IsAttributeValue;
-                       public int Position;
-                       public string Prefix;
-                       public XmlDictionaryString DictLocalName;
-                       public XmlDictionaryString DictNS;
-                       public XmlDictionaryString DictValue; // BF.TextIndex
-                       public XmlNodeType NodeType;
-                       public object TypedValue;
-                       public byte ValueType;
-
-                       // -1 for nothing,
-                       // -2 for that of element (only for attribute),
-                       // 0 or more to fill later
-                       public int NSSlot;
-
-                       string name = String.Empty;
-                       string local_name = String.Empty;
-                       string ns = String.Empty;
-                       string value;
-
-                       public string LocalName {
-                               get { return DictLocalName != null ? DictLocalName.Value : local_name; }
-                               set {
-                                       DictLocalName = null;
-                                       local_name = value;
-                               }
-                       }
-
-                       public string NS {
-                               get { return DictNS != null ? DictNS.Value : ns; }
-                               set {
-                                       DictNS = null;
-                                       ns = value;
-                               }
-                       }
-
-                       public string Name {
-                               get {
-                                       if (name.Length == 0)
-                                               name = Prefix.Length > 0 ?
-                                                       String.Concat (Prefix, ":", LocalName) :
-                                                       LocalName;
-                                       return name;
-                               }
-                       }
-
-                       public virtual string Value {
-                               get {
-                                       switch (ValueType) {
-                                       case 0:
-                                       case BF.Comment:
-                                       case BF.Chars8:
-                                       case BF.Chars16:
-                                       case BF.Chars32:
-                                       case BF.EmptyText:
-                                       case BF.Utf16_8:
-                                       case BF.Utf16_16:
-                                       case BF.Utf16_32:
-                                               return value;
-                                       case BF.TextIndex:
-                                               return DictValue.Value;
-                                       case BF.Zero:
-                                               return "0";
-                                       case BF.One:
-                                               return "1";
-                                       case BF.BoolTrue:
-                                               return "true";
-                                       case BF.BoolFalse:
-                                               return "false";
-                                       case BF.Int8:
-                                               return XmlConvert.ToString ((byte) TypedValue);
-                                       case BF.Int16:
-                                               return XmlConvert.ToString ((short) TypedValue);
-                                       case BF.Int32:
-                                               return XmlConvert.ToString ((int) TypedValue);
-                                       case BF.Int64:
-                                               return XmlConvert.ToString ((long) TypedValue);
-                                       case BF.Single:
-                                               return XmlConvert.ToString ((float) TypedValue);
-                                       case BF.Double:
-                                               return XmlConvert.ToString ((double) TypedValue);
-                                       case BF.Decimal:
-                                               return XmlConvert.ToString ((decimal) TypedValue);
-                                       case BF.DateTime:
-                                               return XmlConvert.ToString ((DateTime) TypedValue, XmlDateTimeSerializationMode.RoundtripKind);
-                                       case BF.TimeSpan:
-                                               return XmlConvert.ToString ((TimeSpan) TypedValue);
-                                       case BF.Guid:
-                                               return XmlConvert.ToString ((Guid) TypedValue);
-                                       case BF.UniqueId:
-                                               return TypedValue.ToString ();
-                                       case BF.Bytes8:
-                                       case BF.Bytes16:
-                                       case BF.Bytes32:
-                                               return Convert.ToBase64String ((byte []) TypedValue);
-                                       case BF.QNameIndex:
-                                               return Name;
-                                       default:
-                                               throw new NotImplementedException ("ValueType " + ValueType + " on node " + NodeType);
-                                       }
-                               }
-                               set { this.value = value; }
-                       }
-
-                       public virtual void Reset ()
-                       {
-                               Position = 0;
-                               DictLocalName = DictNS = null;
-                               LocalName = NS = Prefix = Value = name = String.Empty;
-                               NodeType = XmlNodeType.None;
-                               TypedValue = null;
-                               ValueType = 0;
-                               NSSlot = -1;
-                       }
-               }
-
-               class AttrNodeInfo : NodeInfo
-               {
-                       public AttrNodeInfo (XmlBinaryDictionaryReader owner)
-                       {
-                               this.owner = owner;
-                       }
-
-                       XmlBinaryDictionaryReader owner;
-                       public int ValueIndex;
-
-                       public override void Reset ()
-                       {
-                               base.Reset ();
-                               ValueIndex = -1;
-                               NodeType = XmlNodeType.Attribute;
-                       }
-
-                       public override string Value {
-                               get { return owner.attr_values [ValueIndex].Value; }
-                       }
-               }
-
-               ISource source;
-               IXmlDictionary dictionary;
-               XmlDictionaryReaderQuotas quota;
-               XmlBinaryReaderSession session;
-               OnXmlDictionaryReaderClose on_close;
-               XmlParserContext context;
-
-               ReadState state = ReadState.Initial;
-               NodeInfo node;
-               NodeInfo current;
-               List<AttrNodeInfo> attributes = new List<AttrNodeInfo> ();
-               List<NodeInfo> attr_values = new List<NodeInfo> ();
-               List<NodeInfo> node_stack = new List<NodeInfo> ();
-               List<QName> ns_store = new List<QName> ();
-               Dictionary<int,XmlDictionaryString> ns_dict_store =
-                       new Dictionary<int,XmlDictionaryString> ();
-               int attr_count;
-               int attr_value_count;
-               int current_attr = -1;
-               int depth = 0;
-               // used during Read()
-               int ns_slot;
-               // next byte in the source (one byte token ahead always
-               // happens because there is no "end of start element" mark).
-               int next = -1;
-               bool is_next_end_element;
-               // temporary buffer for utf8enc.GetString()
-               byte [] tmp_buffer = new byte [128];
-               UTF8Encoding utf8enc = new UTF8Encoding ();
-
-               // See comment at Read()
-               int array_item_remaining;
-               byte array_item_type;
-               XmlNodeType array_state;
-
-               public XmlBinaryDictionaryReader (byte [] buffer, int offset,
-                       int count, IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quota,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       source = /*new ArraySource (buffer, offset, count);*/
-                               new StreamSource (new MemoryStream (buffer, offset, count));
-                       Initialize (dictionary, quota, session, onClose);
-               }
-
-               public XmlBinaryDictionaryReader (Stream stream,
-                       IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quota,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       source = new StreamSource (stream);
-                       Initialize (dictionary, quota, session, onClose);
-               }
-
-               private void Initialize (IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quotas,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       if (quotas == null)
-                               throw new ArgumentNullException ("quotas");
-                       if (dictionary == null)
-                               dictionary = new XmlDictionary ();
-                       this.dictionary = dictionary;
-
-                       this.quota = quotas;
-
-                       if (session == null)
-                               session = new XmlBinaryReaderSession ();
-                       this.session = session;
-
-                       on_close = onClose;
-                       NameTable nt = new NameTable ();
-                       this.context = new XmlParserContext (nt,
-                               new XmlNamespaceManager (nt),
-                               null, XmlSpace.None);
-
-                       current = node = new NodeInfo ();
-                       current.Reset ();
-                       node_stack.Add (node);
-               }
-
-               public override int AttributeCount {
-                       get { return attr_count; }
-               }
-
-               public override string BaseURI {
-                       get { return context.BaseURI; }
-               }
-
-               public override int Depth {
-                       get { return current == node ? depth : NodeType == XmlNodeType.Attribute ? depth + 1 : depth + 2; }
-               }
-
-               public override bool EOF {
-                       get { return state == ReadState.EndOfFile || state == ReadState.Error; }
-               }
-
-               public override bool HasValue {
-                       get { return Value.Length > 0; }
-               }
-
-               public override bool IsEmptyElement {
-                       get { return false; }
-               }
-
-               public override XmlNodeType NodeType {
-                       get { return current.NodeType; }
-               }
-
-               public override string Prefix {
-                       get { return current_attr >= 0 ? attributes [current_attr].Prefix : current.Prefix; }
-               }
-
-               // looks like it may return attribute's name even if it is on its value node.
-               public override string LocalName {
-                       get { return current_attr >= 0 ? attributes [current_attr].LocalName : current.LocalName; }
-               }
-
-               public override string Name {
-                       get { return current_attr >= 0 ? attributes [current_attr].Name : current.Name; }
-               }
-
-               public override string NamespaceURI {
-                       get { return current_attr >= 0 ? attributes [current_attr].NS : current.NS; }
-               }
-
-               public override XmlNameTable NameTable {
-                       get { return context.NameTable; }
-               }
-
-               public override XmlDictionaryReaderQuotas Quotas {
-                       get { return quota; }
-               }
-
-               public override ReadState ReadState {
-                       get { return state; }
-               }
-
-               public override string Value {
-                       get { return current.Value; }
-               }
-
-               public override void Close ()
-               {
-                       if (on_close != null)
-                               on_close (this);
-               }
-
-               public override string GetAttribute (int i)
-               {
-                       if (i >= attr_count)
-                               throw new ArgumentOutOfRangeException (String.Format ("Specified attribute index is {0} and should be less than {1}", i, attr_count));
-                       return attributes [i].Value;
-               }
-
-               public override string GetAttribute (string name)
-               {
-                       for (int i = 0; i < attr_count; i++)
-                               if (attributes [i].Name == name)
-                                       return attributes [i].Value;
-                       return null;
-               }
-
-               public override string GetAttribute (string localName, string ns)
-               {
-                       for (int i = 0; i < attr_count; i++)
-                               if (attributes [i].LocalName == localName &&
-                                       attributes [i].NS == ns)
-                                       return attributes [i].Value;
-                       return null;
-               }
-
-               public IDictionary<string,string> GetNamespacesInScope (
-                       XmlNamespaceScope scope)
-               {
-                       return context.NamespaceManager.GetNamespacesInScope (scope);
-               }
-
-               public string LookupPrefix (string ns)
-               {
-                       return context.NamespaceManager.LookupPrefix (NameTable.Get (ns));
-               }
-
-               public override string LookupNamespace (string prefix)
-               {
-                       return context.NamespaceManager.LookupNamespace (
-                               NameTable.Get (prefix));
-               }
-
-               public override bool IsArray (out Type type)
-               {
-                       if (array_state == XmlNodeType.Element) {
-                               type = GetArrayType (array_item_type);
-                               return true;
-                       } else {
-                               type = null;
-                               return false;
-                       }
-               }
-
-               public override bool MoveToElement ()
-               {
-                       bool ret = current_attr >= 0;
-                       current_attr = -1;
-                       current = node;
-                       return ret;
-               }
-
-               public override bool MoveToFirstAttribute ()
-               {
-                       if (attr_count == 0)
-                               return false;
-                       current_attr = 0;
-                       current = attributes [current_attr];
-                       return true;
-               }
-
-               public override bool MoveToNextAttribute ()
-               {
-                       if (++current_attr < attr_count) {
-                               current = attributes [current_attr];
-                               return true;
-                       } else {
-                               --current_attr;
-                               return false;
-                       }
-               }
-
-               public override void MoveToAttribute (int i)
-               {
-                       if (i >= attr_count)
-                               throw new ArgumentOutOfRangeException (String.Format ("Specified attribute index is {0} and should be less than {1}", i, attr_count));
-                       current_attr = i;
-                       current = attributes [i];
-               }
-
-               public override bool MoveToAttribute (string name)
-               {
-                       for (int i = 0; i < attributes.Count; i++) {
-                               if (attributes [i].Name == name) {
-                                       MoveToAttribute (i);
-                                       return true;
-                               }
-                       }
-                       return false;
-               }
-
-               public override bool MoveToAttribute (string localName, string ns)
-               {
-                       for (int i = 0; i < attributes.Count; i++) {
-                               if (attributes [i].LocalName == localName &&
-                                       attributes [i].NS == ns) {
-                                       MoveToAttribute (i);
-                                       return true;
-                               }
-                       }
-                       return false;
-               }
-
-               public override bool ReadAttributeValue ()
-               {
-                       if (current_attr < 0)
-                               return false;
-                       int start = attributes [current_attr].ValueIndex;
-                       int end = current_attr + 1 == attr_count ? attr_value_count : attributes [current_attr + 1].ValueIndex;
-                       if (start == end)
-                               return false;
-                       if (!current.IsAttributeValue) {
-                               current = attr_values [start];
-                               return true;
-                       }
-                       // Actually there is no case for attribute whose value is split to more than two nodes. We could simplify the node structure.
-                       return false;
-               }
-
-               // When reading an array (0x03), it requires extraneously
-               // complex procedure for XmlReader. First, it reads element,
-               // type of operation and length of the items. And this XmlReader
-               // has to return Element state. On the next Read(), it proceeds
-               // to the value node of the first item of the array, so it
-               // reads the value stream. On the next Read(), it proceeds to
-               // EndElement, so it should not read anything from stream while
-               // it has to move to the node state to EndElement.
-               public override bool Read ()
-               {
-                       switch (state) {
-                       case ReadState.Closed:
-                       case ReadState.EndOfFile:
-                       case ReadState.Error:
-                               return false;
-                       }
-
-                       // clear.
-                       state = ReadState.Interactive;
-                       MoveToElement ();
-                       attr_count = 0;
-                       attr_value_count = 0;
-                       ns_slot = 0;
-
-                       if (node.NodeType == XmlNodeType.Element) {
-                               // push element scope
-                               if (node_stack.Count <= ++depth) {
-                                       if (depth == quota.MaxDepth)
-                                               throw new XmlException (String.Format ("Binary XML stream quota exceeded. Depth must be less than {0}", quota.MaxDepth));
-                                       node = new NodeInfo ();
-                                       node_stack.Add (node);
-                               } else {
-                                       node = node_stack [depth]; // reuse
-                                       node.Reset ();
-                               }
-                       }
-                       current = node;
-
-                       if (is_next_end_element) {
-                               is_next_end_element = false;
-                               node.Reset ();
-                               ProcessEndElement ();
-                               return true;
-                       }
-
-                       // process array node after preparing node stack.
-                       switch (array_state) {
-                       case XmlNodeType.Element:
-                               ReadArrayItem ();
-                               return true;
-                       case XmlNodeType.Text:
-                               ShiftToArrayItemEndElement ();
-                               return true;
-                       case XmlNodeType.EndElement:
-                               if (--array_item_remaining == 0) {
-                                       array_state = XmlNodeType.None;
-                                       break;
-                               } else {
-                                       ShiftToArrayItemElement ();
-                                       return true;
-                               }
-                       }
-
-                       // array consumer does not expect Reset whlie it's on reading. So call it later than array check.
-                       node.Reset ();
-
-                       int ident = next >= 0 ? next : source.ReadByte ();
-                       next = -1;
-
-                       // check end of source.
-                       if (ident < 0) {
-                               state = ReadState.EndOfFile;
-                               current.Reset ();
-                               return false;
-                       }
-
-                       is_next_end_element = ident > 0x80 && (ident & 1) == 1;
-                       ident -= is_next_end_element ? 1 : 0;
-
-                       switch (ident) {
-                       case BF.EndElement:
-                               ProcessEndElement ();
-                               break;
-                       case BF.Comment:
-                               node.Value = ReadUTF8 ();
-                               node.ValueType = BF.Comment;
-                               node.NodeType = XmlNodeType.Comment;
-                               break;
-                       case BF.ElemString:
-                       case BF.ElemStringPrefix:
-                       case BF.ElemIndex:
-                       case BF.ElemIndexPrefix:
-                               ReadElementBinary ((byte) ident);
-                               break;
-
-                       case BF.Array:
-                               ident = ReadByteOrError ();
-                               ReadElementBinary ((byte) ident);
-                               ident = ReadByteOrError ();
-                               if (ident != 0x01)
-                                       throw new XmlException (String.Format ("EndElement is expected after element in an array. The actual byte was {0:X} in hexadecimal", ident));
-                               ident = ReadByteOrError () - 1; // -1 becauseit contains EndElement
-                               VerifyValidArrayItemType (ident);
-                               if (ident < 0)
-                                       throw new XmlException ("The stream has ended where the array item type is expected");
-                               array_item_type = (byte) ident;
-                               array_item_remaining = ReadVariantSize ();
-                               if (array_item_remaining > quota.MaxArrayLength)
-                                       throw new Exception (String.Format ("Binary xml stream exceeded max array length quota. Items are {0} and should be less than quota.MaxArrayLength", quota.MaxArrayLength));
-                               array_state = XmlNodeType.Element;
-                               break;
-
-                       default:
-                               if (BF.PrefixNElemIndexStart <= ident && ident <= BF.PrefixNElemIndexEnd ||
-                                   BF.PrefixNElemStringStart <= ident && ident <= BF.PrefixNElemStringEnd)
-                                       goto case BF.ElemString;
-                               ReadTextOrValue ((byte) ident, node, false);
-                               break;
-                       }
-
-                       return true;
-               }
-
-               void ReadArrayItem ()
-               {
-                       ReadTextOrValue (array_item_type, node, false);
-                       array_state = XmlNodeType.Text;
-               }
-
-               void ShiftToArrayItemEndElement ()
-               {
-                       ProcessEndElement ();
-                       array_state = XmlNodeType.EndElement;
-               }
-
-               void ShiftToArrayItemElement ()
-               {
-                       node.NodeType = XmlNodeType.Element;
-                       context.NamespaceManager.PushScope ();
-                       array_state = XmlNodeType.Element;
-               }
-
-               void VerifyValidArrayItemType (int ident)
-               {
-                       if (GetArrayType (ident) == null)
-                               throw new XmlException (String.Format ("Unexpected array item type {0:X} in hexadecimal", ident));
-               }
-               
-               Type GetArrayType (int ident)
-               {
-                       switch (ident) {
-                       case BF.Bool:
-                               return typeof (bool);
-                       case BF.Int16:
-                               return typeof (short);
-                       case BF.Int32:
-                               return typeof (int);
-                       case BF.Int64:
-                               return typeof (long);
-                       case BF.Single:
-                               return typeof (float);
-                       case BF.Double:
-                               return typeof (double);
-                       case BF.Decimal:
-                               return typeof (decimal);
-                       case BF.DateTime:
-                               return typeof (DateTime);
-                       case BF.TimeSpan:
-                               return typeof (TimeSpan);
-                       case BF.Guid:
-                               return typeof (Guid);
-                       }
-                       return null;
-               }
-
-               private void ProcessEndElement ()
-               {
-                       if (depth == 0)
-                               throw new XmlException ("Unexpected end of element while there is no element started.");
-                       current = node = node_stack [--depth];
-                       node.NodeType = XmlNodeType.EndElement;
-                       context.NamespaceManager.PopScope ();
-               }
-
-               private void ReadElementBinary (int ident)
-               {
-                       // element
-                       node.NodeType = XmlNodeType.Element;
-                       node.Prefix = String.Empty;
-                       context.NamespaceManager.PushScope ();
-                       switch (ident) {
-                       case BF.ElemString:
-                               node.LocalName = ReadUTF8 ();
-                               break;
-                       case BF.ElemStringPrefix:
-                               node.Prefix = ReadUTF8 ();
-                               node.NSSlot = ns_slot++;
-                               goto case BF.ElemString;
-                       case BF.ElemIndex:
-                               node.DictLocalName = ReadDictName ();
-                               break;
-                       case BF.ElemIndexPrefix:
-                               node.Prefix = ReadUTF8 ();
-                               node.NSSlot = ns_slot++;
-                               goto case BF.ElemIndex;
-                       default:
-                               if (BF.PrefixNElemIndexStart <= ident && ident <= BF.PrefixNElemIndexEnd) {
-                                       node.Prefix = ((char) (ident - BF.PrefixNElemIndexStart + 'a')).ToString ();
-                                       node.DictLocalName = ReadDictName ();
-                               } else if (BF.PrefixNElemStringStart <= ident && ident <= BF.PrefixNElemStringEnd) {
-                                       node.Prefix = ((char) (ident - BF.PrefixNElemStringStart + 'a')).ToString ();
-                                       node.LocalName = ReadUTF8 ();
-                               }
-                               else
-                                       throw new XmlException (String.Format ("Invalid element node type {0:X02} in hexadecimal", ident));
-                               break;
-                       }
-
-                       bool loop = true;
-                       do {
-                               ident = ReadByteOrError ();
-
-                               switch (ident) {
-                               case BF.AttrString:
-                               case BF.AttrStringPrefix:
-                               case BF.AttrIndex:
-                               case BF.AttrIndexPrefix:
-                                       ReadAttribute ((byte) ident);
-                                       break;
-                               case BF.DefaultNSString:
-                               case BF.PrefixNSString:
-                               case BF.DefaultNSIndex:
-                               case BF.PrefixNSIndex:
-                                       ReadNamespace ((byte) ident);
-                                       break;
-                               default:
-                                       if (BF.PrefixNAttrStringStart <= ident && ident <= BF.PrefixNAttrStringEnd ||
-                                           BF.PrefixNAttrIndexStart <= ident && ident <= BF.PrefixNAttrIndexEnd)
-                                               ReadAttribute ((byte) ident);
-                                       else {
-                                               next = ident;
-                                               loop = false;
-                                       }
-                                       break;
-                               }
-                       } while (loop);
-
-                       node.NS = context.NamespaceManager.LookupNamespace (node.Prefix) ?? String.Empty;
-                       foreach (AttrNodeInfo a in attributes)
-                               if (a.Prefix.Length > 0)
-                                       a.NS = context.NamespaceManager.LookupNamespace (a.Prefix);
-
-                       ns_store.Clear ();
-                       ns_dict_store.Clear ();
-               }
-
-               private void ReadAttribute (byte ident)
-               {
-                       if (attributes.Count == attr_count)
-                               attributes.Add (new AttrNodeInfo (this));
-                       AttrNodeInfo a = attributes [attr_count++];
-                       a.Reset ();
-                       a.Position = source.Position;
-
-                       switch (ident) {
-                       case BF.AttrString:
-                               a.LocalName = ReadUTF8 ();
-                               break;
-                       case BF.AttrStringPrefix:
-                               a.Prefix = ReadUTF8 ();
-                               a.NSSlot = ns_slot++;
-                               goto case BF.AttrString;
-                       case BF.AttrIndex:
-                               a.DictLocalName = ReadDictName ();
-                               break;
-                       case BF.AttrIndexPrefix:
-                               a.Prefix = ReadUTF8 ();
-                               a.NSSlot = ns_slot++;
-                               goto case BF.AttrIndex;
-                       default:
-                               if (BF.PrefixNAttrStringStart <= ident && ident <= BF.PrefixNAttrStringEnd) {
-                                       a.Prefix = ((char) ('a' + ident - BF.PrefixNAttrStringStart)).ToString ();
-                                       a.LocalName = ReadUTF8 ();
-                                       break;
-                               }
-                               else if (BF.PrefixNAttrIndexStart <= ident && ident <= BF.PrefixNAttrIndexEnd) {
-                                       a.Prefix = ((char) ('a' + ident - BF.PrefixNAttrIndexStart)).ToString ();
-                                       a.DictLocalName = ReadDictName ();
-                                       break;
-                               }
-                               else throw new XmlException (String.Format ("Unexpected attribute node type: 0x{0:X02}", ident));
-                       }
-                       ReadAttributeValueBinary (a);
-               }
-
-               private void ReadNamespace (byte ident)
-               {
-                       // create attrubute slot.
-                       if (attributes.Count == attr_count)
-                               attributes.Add (new AttrNodeInfo (this));
-                       AttrNodeInfo a = attributes [attr_count++];
-                       a.Reset ();
-                       a.Position = source.Position;
-
-                       string prefix = null, ns = null;
-                       XmlDictionaryString dns = null;
-
-                       switch (ident) {
-                       case BF.DefaultNSString:
-                               prefix = String.Empty;
-                               ns = ReadUTF8 ();
-                               break;
-                       case BF.PrefixNSString:
-                               prefix = ReadUTF8 ();
-                               ns = ReadUTF8 ();
-                               break;
-                       case BF.DefaultNSIndex:
-                               prefix = String.Empty;
-                               dns = ReadDictName ();
-                               ns_dict_store.Add (ns_store.Count, dns);
-                               ns = dns.Value;
-                               break;
-                       case BF.PrefixNSIndex:
-                               prefix = ReadUTF8 ();
-                               dns = ReadDictName ();
-                               ns_dict_store.Add (ns_store.Count, dns);
-                               ns = dns.Value;
-                               break;
-                       }
-
-                       // fill attribute slot.
-                       a.Prefix = prefix.Length > 0 ? "xmlns" : String.Empty;
-                       a.LocalName = prefix.Length > 0 ? prefix : "xmlns";
-                       a.NS = "http://www.w3.org/2000/xmlns/";
-                       a.ValueIndex = attr_value_count;
-                       if (attr_value_count == attr_values.Count)
-                               attr_values.Add (new NodeInfo (true));
-                       NodeInfo v = attr_values [attr_value_count++];
-                       v.Reset ();
-                       v.Value = ns;
-                       v.ValueType = BF.Chars8;
-                       v.NodeType = XmlNodeType.Text;
-
-                       ns_store.Add (new QName (prefix, ns));
-                       context.NamespaceManager.AddNamespace (prefix, ns);
-               }
-
-               private void ReadAttributeValueBinary (AttrNodeInfo a)
-               {
-                       a.ValueIndex = attr_value_count;
-                       if (attr_value_count == attr_values.Count)
-                               attr_values.Add (new NodeInfo (true));
-                       NodeInfo v = attr_values [attr_value_count++];
-                       v.Reset ();
-                       int ident = ReadByteOrError ();
-                       bool end = ident > 0x80 && (ident & 1) == 1;
-                       ident -= end ? 1 : 0;
-                       ReadTextOrValue ((byte) ident, v, true);
-               }
-
-               private bool ReadTextOrValue (byte ident, NodeInfo node, bool canSkip)
-               {
-                       node.Value = null;
-                       node.ValueType = ident;
-                       node.NodeType = XmlNodeType.Text;
-                       switch (ident) {
-                       case BF.Zero:
-                               node.TypedValue = 0;
-                               break;
-                       case BF.One:
-                               node.TypedValue = 1;
-                               break;
-                       case BF.BoolFalse:
-                               node.TypedValue = false;
-                               break;
-                       case BF.BoolTrue:
-                               node.TypedValue = true;
-                               break;
-                       case BF.Int8:
-                               node.TypedValue = ReadByteOrError ();
-                               break;
-                       case BF.Int16:
-                               node.TypedValue = source.Reader.ReadInt16 ();
-                               break;
-                       case BF.Int32:
-                               node.TypedValue = source.Reader.ReadInt32 ();
-                               break;
-                       case BF.Int64:
-                               node.TypedValue = source.Reader.ReadInt64 ();
-                               break;
-                       case BF.Single:
-                               node.TypedValue = source.Reader.ReadSingle ();
-                               break;
-                       case BF.Double:
-                               node.TypedValue = source.Reader.ReadDouble ();
-                               break;
-                       case BF.Decimal:
-                               int [] bits = new int [4];
-                               bits [3] = source.Reader.ReadInt32 ();
-                               bits [2] = source.Reader.ReadInt32 ();
-                               bits [0] = source.Reader.ReadInt32 ();
-                               bits [1] = source.Reader.ReadInt32 ();
-                               node.TypedValue = new Decimal (bits);
-                               break;
-                       case BF.DateTime:
-                               node.TypedValue = DateTime.FromBinary (source.Reader.ReadInt64 ());
-                               break;
-                       //case BF.UniqueId: // identical to .Text
-                       case BF.Bytes8:
-                       case BF.Bytes16:
-                       case BF.Bytes32:
-                               int size =
-                                       (ident == BF.Bytes8) ? source.Reader.ReadByte () :
-                                       (ident == BF.Bytes16) ? source.Reader.ReadUInt16 () :
-                                       source.Reader.ReadInt32 ();
-                               byte [] base64 = Alloc (size);
-                               source.Reader.Read (base64, 0, base64.Length);
-                               node.TypedValue = base64;
-                               break;
-                       case BF.TimeSpan:
-                               node.TypedValue = new TimeSpan (source.Reader.ReadInt64 ());
-                               break;
-                       case BF.UniqueId:
-                               byte [] guid = new byte [16];
-                               source.Reader.Read (guid, 0, guid.Length);
-                               node.TypedValue = new UniqueId (new Guid (guid));
-                               break;
-                       case BF.Guid:
-                               guid = new byte [16];
-                               source.Reader.Read (guid, 0, guid.Length);
-                               node.TypedValue = new Guid (guid);
-                               break;
-                       case BF.Chars8:
-                       case BF.Chars16:
-                       case BF.Chars32:
-                       case BF.Utf16_8:
-                       case BF.Utf16_16:
-                       case BF.Utf16_32:
-                               Encoding enc = ident <= BF.Chars32 ? Encoding.UTF8 : Encoding.Unicode;
-                               size =
-                                       (ident == BF.Chars8 || ident == BF.Utf16_8) ? source.Reader.ReadByte () :
-                                       (ident == BF.Chars16 || ident == BF.Utf16_16) ? source.Reader.ReadUInt16 () :
-                                       source.Reader.ReadInt32 ();
-                               byte [] bytes = Alloc (size);
-                               source.Reader.Read (bytes, 0, size);
-                               node.Value = enc.GetString (bytes, 0, size);
-                               node.NodeType = XmlNodeType.Text;
-                               break;
-                       case BF.EmptyText:
-                               node.Value = String.Empty;
-                               node.NodeType = XmlNodeType.Text;
-                               break;
-                       case BF.TextIndex:
-                               node.DictValue = ReadDictName ();
-                               node.NodeType = XmlNodeType.Text;
-                               break;
-                       case BF.QNameIndex:
-                               node.Prefix = ((char) (ReadByteOrError () + 'a')).ToString ();
-                               node.DictLocalName = ReadDictName();
-                               break;  
-                       default:
-                               if (!canSkip)
-                                       throw new ArgumentException (String.Format ("Unexpected binary XML data at position {1}: {0:X}", ident + (is_next_end_element ? 1 : 0), source.Position));
-                               next = ident;
-                               return false;
-                       }
-                       return true;
-               }
-
-               byte [] Alloc (int size)
-               {
-                       if (size > quota.MaxStringContentLength || size < 0)
-                               throw new XmlException (String.Format ("Text content buffer exceeds the quota limitation at {2}. {0} bytes and should be less than {1} bytes", size, quota.MaxStringContentLength, source.Position));
-                       return new byte [size];
-               }
-
-               private int ReadVariantSize ()
-               {
-                       int size = 0;
-                       // If sizeSpec < 0, then it is variant size specifier.
-                       // Otherwise it is fixed size s = sizeSpec + 1 byte(s).
-                       int d = 0;
-                       do {
-                               byte got = ReadByteOrError ();
-                               size += (got & 0x7F) << d;
-                               d += 7;
-                               if (got < 0x80)
-                                       break;
-                       } while (true);
-                       return size;
-               }
-
-               private string ReadUTF8 ()
-               {
-                       int size = ReadVariantSize ();
-                       if (size == 0)
-                               return String.Empty;
-                       if (tmp_buffer.Length < size) {
-                               int extlen = tmp_buffer.Length * 2;
-                               tmp_buffer = Alloc (size < extlen ? extlen : size);
-                       }
-                       size = source.Read (tmp_buffer, 0, size);
-                       return utf8enc.GetString (tmp_buffer, 0, size);
-               }
-
-               private XmlDictionaryString ReadDictName ()
-               {
-                       int key = ReadVariantSize ();
-                       XmlDictionaryString s;
-                       if ((key & 1) == 1) {
-                               if (session.TryLookup (key >> 1, out s))
-                                       return s;
-                       } else {
-                               if (dictionary.TryLookup (key >> 1, out s))
-                                       return s;
-                       }
-                       throw new XmlException (String.Format ("Input XML binary stream is invalid. No matching XML dictionary string entry at {0}. Binary stream position at {1}", key, source.Position));
-               }
-
-               private byte ReadByteOrError ()
-               {
-                       if (next >= 0) {
-                               byte b = (byte) next;
-                               next = -1;
-                               return b;
-                       }
-                       int ret = source.ReadByte ();
-                       if (ret < 0)
-                               throw new XmlException (String.Format ("Unexpected end of binary stream. Position is at {0}", source.Position));
-                       return (byte) ret;
-               }
-
-               public override void ResolveEntity ()
-               {
-                       throw new NotSupportedException ("this XmlReader does not support ResolveEntity.");
-               }
-
-               public override bool TryGetBase64ContentLength (out int length)
-               {
-                       length = 0;
-                       switch (current.ValueType) {
-                       case BF.Bytes8:
-                       case BF.Bytes16:
-                       case BF.Bytes32:
-                               length = ((byte []) current.TypedValue).Length;
-                               return true;
-                       }
-                       return false;
-               }
-
-               public override string ReadContentAsString ()
-               {
-                       string value = String.Empty;
-                       do {
-                               switch (NodeType) {
-                               case XmlNodeType.Element:
-                               case XmlNodeType.EndElement:
-                                       return value;
-                               case XmlNodeType.Text:
-                                       value += Value;
-                                       break;
-                               }
-                       } while (Read ());
-                       return value;
-               }
-
-               #region read typed content
-
-               public override int ReadContentAsInt ()
-               {
-                       int ret = GetIntValue ();
-                       Read ();
-                       return ret;
-               }
-               
-               int GetIntValue ()
-               {
-                       switch (node.ValueType) {
-                       case BF.Zero:
-                               return 0;
-                       case BF.One:
-                               return 1;
-                       case BF.Int8:
-                               return (byte) current.TypedValue;
-                       case BF.Int16:
-                               return (short) current.TypedValue;
-                       case BF.Int32:
-                               return (int) current.TypedValue;
-                       }
-                       throw new InvalidOperationException (String.Format ("Current content is not an integer. (Internal value type:{0:X02})", (int) node.ValueType));
-               }
-
-               public override long ReadContentAsLong ()
-               {
-                       if (node.ValueType == BF.Int64) {
-                               long v = (long) current.TypedValue;
-                               Read ();
-                               return v;
-                       }
-                       return ReadContentAsInt ();
-               }
-
-               public override float ReadContentAsFloat ()
-               {
-                       if (node.ValueType != BF.Single)
-                               throw new InvalidOperationException ("Current content is not a single");
-                       float v = (float) current.TypedValue;
-                       Read ();
-                       return v;
-               }
-
-               public override double ReadContentAsDouble ()
-               {
-                       if (node.ValueType != BF.Double)
-                               throw new InvalidOperationException ("Current content is not a double");
-                       double v = (double) current.TypedValue;
-                       Read ();
-                       return v;
-               }
-
-               bool IsBase64Node (byte b)
-               {
-                       switch (b) {
-                       case BF.Bytes8:
-                       case BF.Bytes16:
-                       case BF.Bytes32:
-                               return true;
-                       }
-                       return false;
-               }
-
-               // FIXME: this is not likely to consume sequential base64 nodes.
-               public override byte [] ReadContentAsBase64 ()
-               {
-                       byte [] ret = null;
-                       if (!IsBase64Node (node.ValueType))
-                               throw new InvalidOperationException ("Current content is not base64");
-
-                       while (NodeType == XmlNodeType.Text && IsBase64Node (node.ValueType)) {
-                               if (ret == null)
-                                       ret = (byte []) node.TypedValue;
-                               else {
-                                       byte [] tmp = (byte []) node.TypedValue;
-                                       byte [] tmp2 = Alloc (ret.Length + tmp.Length);
-                                       Array.Copy (ret, tmp2, ret.Length);
-                                       Array.Copy (tmp, 0, tmp2, ret.Length, tmp.Length);
-                                       ret = tmp2;
-                               }
-                               Read ();
-                               //MoveToContent ();
-                       }
-                       return ret;
-               }
-
-               public override Guid ReadContentAsGuid ()
-               {
-                       if (node.ValueType != BF.Guid)
-                               throw new InvalidOperationException ("Current content is not a Guid");
-                       Guid ret = (Guid) node.TypedValue;
-                       Read ();
-                       return ret;
-               }
-
-               public override UniqueId ReadContentAsUniqueId ()
-               {
-                       switch (node.ValueType) {
-                       case BF.Chars8:
-                       case BF.Chars16:
-                       case BF.Chars32:
-                       case BF.Utf16_8:
-                       case BF.Utf16_16:
-                       case BF.Utf16_32:
-                               UniqueId ret = new UniqueId (node.Value);
-                               Read ();
-                               return ret;
-                       case BF.UniqueId:
-                               ret = (UniqueId) node.TypedValue;
-                               Read ();
-                               return ret;
-                       default:
-                               throw new InvalidOperationException ("Current content is not a UniqueId");
-                       }
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriter.cs
deleted file mode 100644 (file)
index 4f0674d..0000000
+++ /dev/null
@@ -1,1102 +0,0 @@
-//
-// XmlBinaryDictionaryWriter.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2005, 2007 Novell, Inc.  http://www.novell.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Text;
-
-using BF = System.Xml.XmlBinaryFormat;
-
-namespace System.Xml
-{
-       internal partial class XmlBinaryDictionaryWriter : XmlDictionaryWriter
-       {
-               class MyBinaryWriter : BinaryWriter
-               {
-                       public MyBinaryWriter (Stream s)
-                               : base (s)
-                       {
-                       }
-
-                       public void WriteFlexibleInt (int value)
-                       {
-                               Write7BitEncodedInt (value);
-                       }
-               }
-
-               #region Fields
-               MyBinaryWriter original, writer, buffer_writer;
-               IXmlDictionary dict_ext;
-               XmlDictionary dict_int = new XmlDictionary ();
-               XmlBinaryWriterSession session;
-               bool owns_stream;
-               Encoding utf8Enc = new UTF8Encoding ();
-               MemoryStream buffer = new MemoryStream ();
-
-               const string XmlNamespace = "http://www.w3.org/XML/1998/namespace";
-               const string XmlnsNamespace = "http://www.w3.org/2000/xmlns/";
-
-               WriteState state = WriteState.Start;
-               bool open_start_element = false;
-               // transient current node info
-               List<KeyValuePair<string,object>> namespaces = new List<KeyValuePair<string,object>> ();
-               string xml_lang = null;
-               XmlSpace xml_space = XmlSpace.None;
-               int ns_index = 0;
-               // stacked info
-               Stack<int> ns_index_stack = new Stack<int> ();
-               Stack<string> xml_lang_stack = new Stack<string> ();
-               Stack<XmlSpace> xml_space_stack = new Stack<XmlSpace> ();
-               Stack<string> element_ns_stack = new Stack<string> ();
-               string element_ns = String.Empty;
-               int element_count;
-               string element_prefix; // only meaningful at Element state
-               // current attribute info
-               string attr_value;
-               string current_attr_prefix;
-               object current_attr_name, current_attr_ns;
-               bool attr_typed_value;
-               SaveTarget save_target;
-
-               enum SaveTarget {
-                       None,
-                       Namespaces,
-                       XmlLang,
-                       XmlSpace
-               }
-
-               // XmlWriterSettings support
-
-               #endregion
-
-               #region Constructors
-
-               public XmlBinaryDictionaryWriter (Stream stream,
-                       IXmlDictionary dictionary,
-                       XmlBinaryWriterSession session, bool ownsStream)
-               {
-                       if (dictionary == null)
-                               dictionary = new XmlDictionary ();
-                       if (session == null)
-                               session = new XmlBinaryWriterSession ();
-
-                       original = new MyBinaryWriter (stream);
-                       this.writer = original;
-                       buffer_writer = new MyBinaryWriter (buffer);
-                       this.dict_ext = dictionary;
-                       this.session = session;
-                       owns_stream = ownsStream;
-
-                       AddNamespace ("xml", "http://www.w3.org/XML/1998/namespace");
-                       AddNamespace ("xml", "http://www.w3.org/2000/xmlns/");
-                       ns_index = 2;
-               }
-
-               #endregion
-
-               #region Properties
-
-               public override WriteState WriteState {
-                       get { return state; }
-               }
-               
-               public override string XmlLang {
-                       get { return xml_lang; }
-               }
-
-               public override XmlSpace XmlSpace {
-                       get { return xml_space; }
-               }
-
-               #endregion
-
-               #region Methods
-
-               private void AddMissingElementXmlns ()
-               {
-                       // push new namespaces to manager.
-                       for (int i = ns_index; i < namespaces.Count; i++) {
-                               var ent = namespaces [i];
-                               string prefix = (string) ent.Key;
-                               string ns = ent.Value as string;
-                               XmlDictionaryString dns = ent.Value as XmlDictionaryString;
-                               if (ns != null) {
-                                       if (prefix.Length > 0) {
-                                               writer.Write (BF.PrefixNSString);
-                                               writer.Write (prefix);
-                                       }
-                                       else
-                                               writer.Write (BF.DefaultNSString);
-                                       writer.Write (ns);
-                               } else {
-                                       if (prefix.Length > 0) {
-                                               writer.Write (BF.PrefixNSIndex);
-                                               writer.Write (prefix);
-                                       }
-                                       else
-                                               writer.Write (BF.DefaultNSIndex);
-                                       WriteDictionaryIndex (dns);
-                               }
-                       }
-                       ns_index = namespaces.Count;
-               }
-
-               private void CheckState ()
-               {
-                       if (state == WriteState.Closed) {
-                               throw new InvalidOperationException ("The Writer is closed.");
-                       }
-               }
-
-               void ProcessStateForContent ()
-               {
-                       CheckState ();
-
-                       if (state == WriteState.Element)
-                               CloseStartElement ();
-
-                       ProcessPendingBuffer (false, false);
-                       if (state != WriteState.Attribute)
-                               writer = buffer_writer;
-               }
-
-               void ProcessTypedValue ()
-               {
-                       ProcessStateForContent ();
-                       if (state == WriteState.Attribute) {
-                               if (attr_typed_value)
-                                       throw new InvalidOperationException (String.Format ("A typed value for the attribute '{0}' in namespace '{1}' was already written", current_attr_name, current_attr_ns));
-                               attr_typed_value = true;
-                       }
-               }
-
-               void ProcessPendingBuffer (bool last, bool endElement)
-               {
-                       if (buffer.Position > 0) {
-                               byte [] arr = buffer.GetBuffer ();
-                               if (endElement)
-                                       arr [0]++;
-                               original.Write (arr, 0, (int) buffer.Position);
-                               buffer.SetLength (0);
-                       }
-                       if (last)
-                               writer = original;
-               }
-
-               public override void Close ()
-               {
-                       CloseOpenAttributeAndElements ();
-
-                       if (owns_stream)
-                               writer.Close ();
-                       else if (state != WriteState.Closed)
-                               writer.Flush ();
-                       state = WriteState.Closed;
-               }
-
-               private void CloseOpenAttributeAndElements ()
-               {
-                       CloseStartElement ();
-
-                        while (element_count > 0)
-                               WriteEndElement ();
-               }
-
-               private void CloseStartElement ()
-               {
-                       if (!open_start_element)
-                               return;
-
-                       if (state == WriteState.Attribute)
-                               WriteEndAttribute ();
-
-                       AddMissingElementXmlns ();
-
-                       state = WriteState.Content;
-                       open_start_element = false;
-               }
-
-               public override void Flush ()
-               {
-                       writer.Flush ();
-               }
-
-               public override string LookupPrefix (string ns)
-               {
-                       if (ns == null || ns == String.Empty)
-                               throw new ArgumentException ("The Namespace cannot be empty.");
-
-                       var de = namespaces.LastOrDefault (i => i.Value.ToString () == ns);
-                       return de.Key; // de is KeyValuePair and its default key is null.
-               }
-
-               public override void WriteBase64 (byte[] buffer, int index, int count)
-               {
-                       if (count < 0)
-                               throw new IndexOutOfRangeException ("Negative count");
-                       ProcessStateForContent ();
-
-                       if (count < 0x100) {
-                               writer.Write (BF.Bytes8);
-                               writer.Write ((byte) count);
-                               writer.Write (buffer, index, count);
-                       } else if (count < 0x10000) {
-                               writer.Write (BF.Bytes8);
-                               writer.Write ((ushort) count);
-                               writer.Write (buffer, index, count);
-                       } else {
-                               writer.Write (BF.Bytes32);
-                               writer.Write (count);
-                               writer.Write (buffer, index, count);
-                       }
-               }
-
-               public override void WriteCData (string text)
-               {
-                       if (text.IndexOf ("]]>") >= 0)
-                               throw new ArgumentException ("CDATA section cannot contain text \"]]>\".");
-
-                       ProcessStateForContent ();
-
-                       WriteTextBinary (text);
-               }
-
-               public override void WriteCharEntity (char ch)
-               {
-                       WriteChars (new char [] {ch}, 0, 1);
-               }
-
-               public override void WriteChars (char[] buffer, int index, int count)
-               {
-                       ProcessStateForContent ();
-
-                       int blen = Encoding.UTF8.GetByteCount (buffer, index, count);
-
-                       if (blen == 0)
-                               writer.Write (BF.EmptyText);
-                       else if (count == 1 && buffer [0] == '0')
-                               writer.Write (BF.Zero);
-                       else if (count == 1 && buffer [0] == '1')
-                               writer.Write (BF.One);
-                       else if (blen < 0x100) {
-                               writer.Write (BF.Chars8);
-                               writer.Write ((byte) blen);
-                               writer.Write (buffer, index, count);
-                       } else if (blen < 0x10000) {
-                               writer.Write (BF.Chars16);
-                               writer.Write ((ushort) blen);
-                               writer.Write (buffer, index, count);
-                       } else {
-                               writer.Write (BF.Chars32);
-                               writer.Write (blen);
-                               writer.Write (buffer, index, count);
-                       }
-               }
-
-               public override void WriteComment (string text)
-               {
-                       if (text.EndsWith("-"))
-                               throw new ArgumentException ("An XML comment cannot contain \"--\" inside.");
-                       else if (text.IndexOf("--") > 0)
-                               throw new ArgumentException ("An XML comment cannot end with \"-\".");
-
-                       ProcessStateForContent ();
-
-                       if (state == WriteState.Attribute)
-                               throw new InvalidOperationException ("Comment node is not allowed inside an attribute");
-
-                       writer.Write (BF.Comment);
-                       writer.Write (text);
-               }
-
-               public override void WriteDocType (string name, string pubid, string sysid, string subset)
-               {
-                       throw new NotSupportedException ("This XmlWriter implementation does not support document type.");
-               }
-
-               public override void WriteEndAttribute ()
-               {
-                       if (state != WriteState.Attribute)
-                               throw new InvalidOperationException("Token EndAttribute in state Start would result in an invalid XML document.");
-
-                       CheckState ();
-
-                       if (attr_value == null)
-                               attr_value = String.Empty;
-
-                       switch (save_target) {
-                       case SaveTarget.XmlLang:
-                               xml_lang = attr_value;
-                               goto default;
-                       case SaveTarget.XmlSpace:
-                               switch (attr_value) {
-                               case "preserve":
-                                       xml_space = XmlSpace.Preserve;
-                                       break;
-                               case "default":
-                                       xml_space = XmlSpace.Default;
-                                       break;
-                               default:
-                                       throw new ArgumentException (String.Format ("Invalid xml:space value: '{0}'", attr_value));
-                               }
-                               goto default;
-                       case SaveTarget.Namespaces:
-                               if (current_attr_name.ToString ().Length > 0 && attr_value.Length == 0)
-                                       throw new ArgumentException ("Cannot use prefix with an empty namespace.");
-
-                               AddNamespaceChecked (current_attr_name.ToString (), attr_value);
-                               break;
-                       default:
-                               if (!attr_typed_value)
-                                       WriteTextBinary (attr_value);
-                               break;
-                       }
-
-                       if (current_attr_prefix.Length > 0 && save_target != SaveTarget.Namespaces)
-                               AddNamespaceChecked (current_attr_prefix, current_attr_ns);
-
-                       state = WriteState.Element;
-                       current_attr_prefix = null;
-                       current_attr_name = null;
-                       current_attr_ns = null;
-                       attr_value = null;
-                       attr_typed_value = false;
-               }
-
-               public override void WriteEndDocument ()
-               {
-                       CloseOpenAttributeAndElements ();
-
-                       switch (state) {
-                       case WriteState.Start:
-                               throw new InvalidOperationException ("Document has not started.");
-                       case WriteState.Prolog:
-                               throw new ArgumentException ("This document does not have a root element.");
-                       }
-
-                       state = WriteState.Start;
-               }
-
-               bool SupportsCombinedEndElementSupport (byte operation)
-               {
-                       switch (operation) {
-                       case BF.Comment:
-                               return false;
-                       }
-                       return true;
-               }
-
-               public override void WriteEndElement ()
-               {
-                       if (element_count-- == 0)
-                               throw new InvalidOperationException("There was no XML start tag open.");
-
-                       if (state == WriteState.Attribute)
-                               WriteEndAttribute ();
-
-                       // Comment+EndElement does not exist
-                       bool needExplicitEndElement = buffer.Position == 0 || !SupportsCombinedEndElementSupport (buffer.GetBuffer () [0]);
-                       ProcessPendingBuffer (true, !needExplicitEndElement);
-                       CheckState ();
-                       AddMissingElementXmlns ();
-
-                       if (needExplicitEndElement)
-                               writer.Write (BF.EndElement);
-
-                       element_ns = element_ns_stack.Pop ();
-                       xml_lang = xml_lang_stack.Pop ();
-                       xml_space = xml_space_stack.Pop ();
-                       int cur = namespaces.Count;
-                       ns_index = ns_index_stack.Pop ();
-                       namespaces.RemoveRange (ns_index, cur - ns_index);
-                       open_start_element = false;
-
-                       Depth--;
-               }
-
-               public override void WriteEntityRef (string name)
-               {
-                       throw new NotSupportedException ("This XmlWriter implementation does not support entity references.");
-               }
-
-               public override void WriteFullEndElement ()
-               {
-                       WriteEndElement ();
-               }
-
-               public override void WriteProcessingInstruction (string name, string text)
-               {
-                       if (name != "xml")
-                               throw new ArgumentException ("Processing instructions are not supported. ('xml' is allowed for XmlDeclaration; this is because of design problem of ECMA XmlWriter)");
-                       // Otherwise, silently ignored. WriteStartDocument()
-                       // is still callable after this method(!)
-               }
-
-               public override void WriteQualifiedName (XmlDictionaryString local, XmlDictionaryString ns)
-               {
-                       string prefix = namespaces.LastOrDefault (i => i.Value.ToString () == ns.ToString ()).Key;
-                       bool use_dic = prefix != null;
-                       if (prefix == null)
-                               prefix = LookupPrefix (ns.Value);
-                       if (prefix == null)
-                               throw new ArgumentException (String.Format ("Namespace URI '{0}' is not bound to any of the prefixes", ns));
-
-                       ProcessTypedValue ();
-
-                       if (use_dic && prefix.Length == 1) {
-                               writer.Write (BF.QNameIndex);
-                               writer.Write ((byte) (prefix [0] - 'a'));
-                               WriteDictionaryIndex (local);
-                       } else {
-                               // QNameIndex is not applicable.
-                               WriteString (prefix);
-                               WriteString (":");
-                               WriteString (local);
-                       }
-               }
-
-               public override void WriteRaw (string data)
-               {
-                       WriteString (data);
-               }
-
-               public override void WriteRaw (char[] buffer, int index, int count)
-               {
-                       WriteChars (buffer, index, count);
-               }
-
-               void CheckStateForAttribute ()
-               {
-                       CheckState ();
-
-                       if (state != WriteState.Element)
-                               throw new InvalidOperationException ("Token StartAttribute in state " + WriteState + " would result in an invalid XML document.");
-               }
-
-               string CreateNewPrefix ()
-               {
-                       return CreateNewPrefix (String.Empty);
-               }
-               
-               string CreateNewPrefix (string p)
-               {
-                       for (char c = 'a'; c <= 'z'; c++)
-                               if (!namespaces.Any (iter => iter.Key == p + c))
-                                       return p + c;
-                       for (char c = 'a'; c <= 'z'; c++) {
-                               var s = CreateNewPrefix (c.ToString ());
-                               if (s != null)
-                                       return s;
-                       }
-                       throw new InvalidOperationException ("too many prefix population");
-               }
-
-               bool CollectionContains (ICollection col, string value)
-               {
-                       foreach (string v in col)
-                               if (v == value)
-                                       return true;
-                       return false;
-               }
-
-               void ProcessStartAttributeCommon (ref string prefix, string localName, string ns, object nameObj, object nsObj)
-               {
-                       // dummy prefix is created here, while the caller
-                       // still uses empty string as the prefix there.
-                       if (prefix.Length == 0 && ns.Length > 0) {
-                               prefix = LookupPrefix (ns);
-                               // Not only null but also ""; when the returned
-                               // string is empty, then it still needs a dummy
-                               // prefix, since default namespace does not
-                               // apply to attribute
-                               if (String.IsNullOrEmpty (prefix))
-                                       prefix = CreateNewPrefix ();
-                       }
-                       else if (prefix.Length > 0 && ns.Length == 0) {
-                               switch (prefix) {
-                               case "xml":
-                                       nsObj = ns = XmlNamespace;
-                                       break;
-                               case "xmlns":
-                                       nsObj = ns = XmlnsNamespace;
-                                       break;
-                               default:
-                                       throw new ArgumentException ("Cannot use prefix with an empty namespace.");
-                               }
-                       }
-                       // here we omit such cases that it is used for writing
-                       // namespace-less xml, unlike XmlTextWriter.
-                       if (prefix == "xmlns" && ns != XmlnsNamespace)
-                               throw new ArgumentException (String.Format ("The 'xmlns' attribute is bound to the reserved namespace '{0}'", XmlnsNamespace));
-
-                       CheckStateForAttribute ();
-
-                       state = WriteState.Attribute;
-
-                       save_target = SaveTarget.None;
-                       switch (prefix) {
-                       case "xml":
-                               // MS.NET looks to allow other names than 
-                               // lang and space (e.g. xml:link, xml:hack).
-                               ns = XmlNamespace;
-                               switch (localName) {
-                               case "lang":
-                                       save_target = SaveTarget.XmlLang;
-                                       break;
-                               case "space":
-                                       save_target = SaveTarget.XmlSpace;
-                                       break;
-                               }
-                               break;
-                       case "xmlns":
-                               save_target = SaveTarget.Namespaces;
-                               break;
-                       }
-
-                       current_attr_prefix = prefix;
-                       current_attr_name = nameObj;
-                       current_attr_ns = nsObj;
-               }
-
-               public override void WriteStartAttribute (string prefix, string localName, string ns)
-               {
-                       if (prefix == null)
-                               prefix = String.Empty;
-                       if (ns == null)
-                               ns = String.Empty;
-                       if (localName == "xmlns" && prefix.Length == 0) {
-                               prefix = "xmlns";
-                               localName = String.Empty;
-                       }
-
-                       ProcessStartAttributeCommon (ref prefix, localName, ns, localName, ns);
-
-                       // for namespace nodes we don't write attribute node here.
-                       if (save_target == SaveTarget.Namespaces)
-                               return;
-
-                       byte op = prefix.Length == 1 && 'a' <= prefix [0] && prefix [0] <= 'z' ?
-                                 (byte) (prefix [0] - 'a' + BF.PrefixNAttrStringStart) :
-                                 prefix.Length == 0 ? BF.AttrString :
-                                 BF.AttrStringPrefix;
-
-                       if (BF.PrefixNAttrStringStart <= op && op <= BF.PrefixNAttrStringEnd) {
-                               writer.Write (op);
-                               writer.Write (localName);
-                       } else {
-                               writer.Write (op);
-                               if (prefix.Length > 0)
-                                       writer.Write (prefix);
-                               writer.Write (localName);
-                       }
-               }
-
-               public override void WriteStartDocument ()
-               {
-                       WriteStartDocument (false);
-               }
-
-               public override void WriteStartDocument (bool standalone)
-               {
-                       if (state != WriteState.Start)
-                               throw new InvalidOperationException("WriteStartDocument should be the first call.");
-
-                       CheckState ();
-
-                       // write nothing to stream.
-
-                       state = WriteState.Prolog;
-               }
-
-               void PrepareStartElement ()
-               {
-                       ProcessPendingBuffer (true, false);
-                       CheckState ();
-                       CloseStartElement ();
-
-                       Depth++;
-
-                       element_ns_stack.Push (element_ns);
-                       xml_lang_stack.Push (xml_lang);
-                       xml_space_stack.Push (xml_space);
-                       ns_index_stack.Push (ns_index);
-               }
-
-               public override void WriteStartElement (string prefix, string localName, string ns)
-               {
-                       PrepareStartElement ();
-
-                       if ((prefix != null && prefix != String.Empty) && ((ns == null) || (ns == String.Empty)))
-                               throw new ArgumentException ("Cannot use a prefix with an empty namespace.");
-
-                       if (ns == null)
-                               ns = String.Empty;
-                       if (ns == String.Empty)
-                               prefix = String.Empty;
-                       if (prefix == null)
-                               prefix = String.Empty;
-
-                       byte op = prefix.Length == 1 && 'a' <= prefix [0] && prefix [0] <= 'z' ?
-                                 (byte) (prefix [0] - 'a' + BF.PrefixNElemStringStart) :
-                                 prefix.Length == 0 ? BF.ElemString :
-                                 BF.ElemStringPrefix;
-
-                       if (BF.PrefixNElemStringStart <= op && op <= BF.PrefixNElemStringEnd) {
-                               writer.Write (op);
-                               writer.Write (localName);
-                       } else {
-                               writer.Write (op);
-                               if (prefix.Length > 0)
-                                       writer.Write (prefix);
-                               writer.Write (localName);
-                       }
-
-                       OpenElement (prefix, ns);
-               }
-
-               void OpenElement (string prefix, object nsobj)
-               {
-                       string ns = nsobj.ToString ();
-
-                       state = WriteState.Element;
-                       open_start_element = true;
-                       element_prefix = prefix;
-                       element_count++;
-                       element_ns = nsobj.ToString ();
-
-                       if (element_ns != String.Empty && LookupPrefix (element_ns) != prefix)
-                               AddNamespace (prefix, nsobj);
-               }
-
-               void AddNamespace (string prefix, object nsobj)
-               {
-                       namespaces.Add (new KeyValuePair<string,object> (prefix, nsobj));
-               }
-
-               void CheckIfTextAllowed ()
-               {
-                       switch (state) {
-                       case WriteState.Start:
-                       case WriteState.Prolog:
-                               throw new InvalidOperationException ("Token content in state Prolog would result in an invalid XML document.");
-                       }
-               }
-
-               public override void WriteString (string text)
-               {
-                       if (text == null)
-                               throw new ArgumentNullException ("text");
-                       CheckIfTextAllowed ();
-
-                       if (text == null)
-                               text = String.Empty;
-
-                       ProcessStateForContent ();
-
-                       if (state == WriteState.Attribute)
-                               attr_value += text;
-                       else
-                               WriteTextBinary (text);
-               }
-
-               public override void WriteString (XmlDictionaryString text)
-               {
-                       if (text == null)
-                               throw new ArgumentNullException ("text");
-                       CheckIfTextAllowed ();
-
-                       if (text == null)
-                               text = XmlDictionaryString.Empty;
-
-                       ProcessStateForContent ();
-
-                       if (state == WriteState.Attribute)
-                               attr_value += text.Value;
-                       else if (text.Equals (XmlDictionary.Empty))
-                               writer.Write (BF.EmptyText);
-                       else {
-                               writer.Write (BF.TextIndex);
-                               WriteDictionaryIndex (text);
-                       }
-               }
-
-               public override void WriteSurrogateCharEntity (char lowChar, char highChar)
-               {
-                       WriteChars (new char [] {highChar, lowChar}, 0, 2);
-               }
-
-               public override void WriteWhitespace (string ws)
-               {
-                       for (int i = 0; i < ws.Length; i++) {
-                               switch (ws [i]) {
-                               case ' ': case '\t': case '\r': case '\n':
-                                       continue;
-                               default:
-                                       throw new ArgumentException ("Invalid Whitespace");
-                               }
-                       }
-
-                       ProcessStateForContent ();
-
-                       WriteTextBinary (ws);
-               }
-
-               public override void WriteXmlnsAttribute (string prefix, string namespaceUri)
-               {
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-
-                       if (String.IsNullOrEmpty (prefix))
-                               prefix = CreateNewPrefix ();
-
-                       CheckStateForAttribute ();
-
-                       AddNamespaceChecked (prefix, namespaceUri);
-
-                       state = WriteState.Element;
-               }
-
-               void AddNamespaceChecked (string prefix, object ns)
-               {
-                       switch (ns.ToString ()) {
-                       case XmlnsNamespace:
-                       case XmlNamespace:
-                               return;
-                       }
-
-                       if (prefix == null)
-                               throw new InvalidOperationException ();
-                       var o = namespaces.LastOrDefault (i => i.Key == prefix);
-                       if (o.Key != null) { // i.e. exists
-                               if (o.Value.ToString () != ns.ToString ()) {
-                                       if (namespaces.LastIndexOf (o) >= ns_index)
-                                               throw new ArgumentException (String.Format ("The prefix '{0}' is already mapped to another namespace URI '{1}' in this element scope and cannot be mapped to '{2}'", prefix ?? "(null)", o.Value ?? "(null)", ns.ToString ()));
-                                       else
-                                               AddNamespace  (prefix, ns);
-                               }
-                       }
-                       else
-                               AddNamespace  (prefix, ns);
-               }
-
-               #region DictionaryString
-
-               void WriteDictionaryIndex (XmlDictionaryString ds)
-               {
-                       XmlDictionaryString ds2;
-                       bool isSession = false;
-                       int idx = ds.Key;
-                       if (ds.Dictionary != dict_ext) {
-                               isSession = true;
-                               if (dict_int.TryLookup (ds.Value, out ds2))
-                                       ds = ds2;
-                               if (!session.TryLookup (ds, out idx))
-                                       session.TryAdd (dict_int.Add (ds.Value), out idx);
-                       }
-                       if (idx >= 0x80) {
-                               writer.Write ((byte) (0x80 + ((idx % 0x80) << 1) + (isSession ? 1 : 0)));
-                               writer.Write ((byte) ((byte) (idx / 0x80) << 1));
-                       }
-                       else
-                               writer.Write ((byte) (((idx % 0x80) << 1) + (isSession ? 1 : 0)));
-               }
-
-               public override void WriteStartElement (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       PrepareStartElement ();
-
-                       if (prefix == null)
-                               prefix = String.Empty;
-
-                       byte op = prefix.Length == 1 && 'a' <= prefix [0] && prefix [0] <= 'z' ?
-                                 (byte) (prefix [0] - 'a' + BF.PrefixNElemIndexStart) :
-                                 prefix.Length == 0 ? BF.ElemIndex :
-                                 BF.ElemIndexPrefix;
-
-                       if (BF.PrefixNElemIndexStart <= op && op <= BF.PrefixNElemIndexEnd) {
-                               writer.Write (op);
-                               WriteDictionaryIndex (localName);
-                       } else {
-                               writer.Write (op);
-                               if (prefix.Length > 0)
-                                       writer.Write (prefix);
-                               WriteDictionaryIndex (localName);
-                       }
-
-                       OpenElement (prefix, namespaceUri);
-               }
-
-               public override void WriteStartAttribute (string prefix, XmlDictionaryString localName, XmlDictionaryString ns)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (prefix == null)
-                               prefix = String.Empty;
-                       if (ns == null)
-                               ns = XmlDictionaryString.Empty;
-                       if (localName.Value == "xmlns" && prefix.Length == 0) {
-                               prefix = "xmlns";
-                               localName = XmlDictionaryString.Empty;
-                       }
-
-                       ProcessStartAttributeCommon (ref prefix, localName.Value, ns.Value, localName, ns);
-
-                       if (save_target == SaveTarget.Namespaces)
-                               return;
-
-                       if (prefix.Length == 1 && 'a' <= prefix [0] && prefix [0] <= 'z') {
-                               writer.Write ((byte) (prefix [0] - 'a' + BF.PrefixNAttrIndexStart));
-                               WriteDictionaryIndex (localName);
-                       } else {
-                               byte op = ns.Value.Length == 0 ? BF.AttrIndex :BF.AttrIndexPrefix;
-                               // Write to Stream
-                               writer.Write (op);
-                               if (prefix.Length > 0)
-                                       writer.Write (prefix);
-                               WriteDictionaryIndex (localName);
-                       }
-               }
-
-               public override void WriteXmlnsAttribute (string prefix, XmlDictionaryString namespaceUri)
-               {
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-
-                       if (String.IsNullOrEmpty (prefix))
-                               prefix = CreateNewPrefix ();
-
-                       CheckStateForAttribute ();
-
-                       AddNamespaceChecked (prefix, namespaceUri);
-
-                       state = WriteState.Element;
-               }
-               #endregion
-
-               #region WriteValue
-               public override void WriteValue (bool value)
-               {
-                       ProcessTypedValue ();
-                       writer.Write ((byte) (value ? BF.BoolTrue : BF.BoolFalse));
-               }
-
-               public override void WriteValue (int value)
-               {
-                       WriteValue ((long) value);
-               }
-
-               public override void WriteValue (long value)
-               {
-                       ProcessTypedValue ();
-
-                       if (value == 0)
-                               writer.Write (BF.Zero);
-                       else if (value == 1)
-                               writer.Write (BF.One);
-                       else if (value < 0 || value > uint.MaxValue) {
-                               writer.Write (BF.Int64);
-                               for (int i = 0; i < 8; i++) {
-                                       writer.Write ((byte) (value & 0xFF));
-                                       value >>= 8;
-                               }
-                       } else if (value <= byte.MaxValue) {
-                               writer.Write (BF.Int8);
-                               writer.Write ((byte) value);
-                       } else if (value <= short.MaxValue) {
-                               writer.Write (BF.Int16);
-                               writer.Write ((byte) (value & 0xFF));
-                               writer.Write ((byte) (value >> 8));
-                       } else if (value <= int.MaxValue) {
-                               writer.Write (BF.Int32);
-                               for (int i = 0; i < 4; i++) {
-                                       writer.Write ((byte) (value & 0xFF));
-                                       value >>= 8;
-                               }
-                       }
-               }
-
-               public override void WriteValue (float value)
-               {
-                       ProcessTypedValue ();
-                       writer.Write (BF.Single);
-                       WriteValueContent (value);
-               }
-
-               void WriteValueContent (float value)
-               {
-                       writer.Write (value);
-               }
-
-               public override void WriteValue (double value)
-               {
-                       ProcessTypedValue ();
-                       writer.Write (BF.Double);
-                       WriteValueContent (value);
-               }
-
-               void WriteValueContent (double value)
-               {
-                       writer.Write (value);
-               }
-
-               public override void WriteValue (decimal value)
-               {
-                       ProcessTypedValue ();
-                       writer.Write (BF.Decimal);
-                       WriteValueContent (value);
-               }
-
-               void WriteValueContent (decimal value)
-               {
-                       int [] bits = Decimal.GetBits (value);
-                       // so, looks like it is saved as its internal form,
-                       // not the returned order.
-                       // BinaryWriter.Write(Decimal) is useless here.
-                       writer.Write (bits [3]);
-                       writer.Write (bits [2]);
-                       writer.Write (bits [0]);
-                       writer.Write (bits [1]);
-               }
-
-               public override void WriteValue (DateTime value)
-               {
-                       ProcessTypedValue ();
-                       writer.Write (BF.DateTime);
-                       WriteValueContent (value);
-               }
-
-               void WriteValueContent (DateTime value)
-               {
-                       writer.Write (value.ToBinary ());
-               }
-
-               public override void WriteValue (Guid value)
-               {
-                       ProcessTypedValue ();
-                       writer.Write (BF.Guid);
-                       WriteValueContent (value);
-               }
-
-               void WriteValueContent (Guid value)
-               {
-                       byte [] bytes = value.ToByteArray ();
-                       writer.Write (bytes, 0, bytes.Length);
-               }
-
-               public override void WriteValue (UniqueId value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       Guid guid;
-                       if (value.TryGetGuid (out guid)) {
-                               // this conditional branching is required for
-                               // attr_typed_value not being true.
-                               ProcessTypedValue ();
-
-                               writer.Write (BF.UniqueId);
-                               byte [] bytes = guid.ToByteArray ();
-                               writer.Write (bytes, 0, bytes.Length);
-                       } else {
-                               WriteValue (value.ToString ());
-                       }
-               }
-
-               public override void WriteValue (TimeSpan value)
-               {
-                       ProcessTypedValue ();
-
-                       writer.Write (BF.TimeSpan);
-                       WriteValueContent (value);
-               }
-
-               void WriteValueContent (TimeSpan value)
-               {
-                       WriteBigEndian (value.Ticks, 8);
-               }
-               #endregion
-
-               private void WriteBigEndian (long value, int digits)
-               {
-                       long v = 0;
-                       for (int i = 0; i < digits; i++) {
-                               v = (v << 8) + (value & 0xFF);
-                               value >>= 8;
-                       }
-                       for (int i = 0; i < digits; i++) {
-                               writer.Write ((byte) (v & 0xFF));
-                               v >>= 8;
-                       }
-               }
-
-               private void WriteTextBinary (string text)
-               {
-                       if (text.Length == 0)
-                               writer.Write (BF.EmptyText);
-                       else {
-                               char [] arr = text.ToCharArray ();
-                               WriteChars (arr, 0, arr.Length);
-                       }
-               }
-
-               #endregion
-
-               #region Write typed array content
-
-               // they are packed in WriteValue(), so we cannot reuse
-               // them for array content.
-
-               void WriteValueContent (bool value)
-               {
-                       writer.Write (value ? (byte) 1 : (byte) 0);
-               }
-
-               void WriteValueContent (short value)
-               {
-                       writer.Write (value);
-               }
-
-               void WriteValueContent (int value)
-               {
-                       writer.Write (value);
-               }
-
-               void WriteValueContent (long value)
-               {
-                       writer.Write (value);
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriterAutoGen.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryDictionaryWriterAutoGen.cs
deleted file mode 100644 (file)
index fb1c7ea..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-
-using System;
-using BF = System.Xml.XmlBinaryFormat;
-
-namespace System.Xml
-{
-       internal partial class XmlBinaryDictionaryWriter : XmlDictionaryWriter
-       {
-               void CheckWriteArrayArguments (Array array, int offset, int length)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException ("array");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException ("offset is negative");
-                       if (offset > array.Length)
-                               throw new ArgumentOutOfRangeException ("offset exceeds the length of the destination array");
-                       if (length < 0)
-                               throw new ArgumentOutOfRangeException ("length is negative");
-                       if (length > array.Length - offset)
-                               throw new ArgumentOutOfRangeException ("length + offset exceeds the length of the destination array");
-               }
-
-               void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-               }
-
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, bool [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (bool [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0xB5); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, DateTime [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (DateTime [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x97); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, decimal [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (decimal [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x95); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, double [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, double [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (double [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x93); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, Guid [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (Guid [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0xB1); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, short [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, short [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (short [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x8B); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, int [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, int [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (int [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x8D); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, long [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, long [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (long [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x8F); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, float [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, float [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (float [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0x91); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, TimeSpan [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }
-
-               void WriteArrayRemaining (TimeSpan [] array, int offset, int length)
-               {
-                       writer.Write ((byte) 0xAF); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }
-
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryFormat.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryFormat.cs
deleted file mode 100644 (file)
index 2d95052..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-//
-// XmlBinaryFormat.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2007 Novell, Inc.  http://www.novell.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Xml
-{
-       internal class XmlBinaryFormat
-       {
-               public const byte EndElement = 0x01;
-               public const byte Comment = 0x02;
-               public const byte Array = 0x03;
-               public const byte AttrString = 0x04;
-               public const byte AttrStringPrefix = 0x05;
-               public const byte AttrIndex = 0x06;
-               public const byte AttrIndexPrefix = 0x07;
-               public const byte DefaultNSString = 0x08;
-               public const byte PrefixNSString = 0x09;
-               public const byte DefaultNSIndex = 0x0A;
-               public const byte PrefixNSIndex = 0x0B;
-               public const byte PrefixNAttrIndexStart = 0x0C;
-               public const byte PrefixNAttrIndexEnd = 0x0C + 26 - 1;
-               public const byte PrefixNAttrStringStart = 0x26;
-               public const byte PrefixNAttrStringEnd = 0x26 + 26 - 1;
-               public const byte ElemString = 0x40;
-               public const byte ElemStringPrefix = 0x41;
-               public const byte ElemIndex = 0x42;
-               public const byte ElemIndexPrefix = 0x43;
-               public const byte PrefixNElemIndexStart = 0x44;
-               public const byte PrefixNElemIndexEnd = 0x44 + 26 - 1;
-               public const byte PrefixNElemStringStart = 0x5E;
-               public const byte PrefixNElemStringEnd = 0x5E + 26 - 1;
-
-               public const byte Zero = 0x80;
-               public const byte One = 0x82;
-               public const byte BoolFalse = 0x84;
-               public const byte BoolTrue = 0x86;
-               public const byte Int8 = 0x88;
-               public const byte Int16 = 0x8A;
-               public const byte Int32 = 0x8C;
-               public const byte Int64 = 0x8E;
-               public const byte Single = 0x90;
-               public const byte Double = 0x92;
-               public const byte Decimal = 0x94;
-               public const byte DateTime = 0x96;
-               public const byte Chars8 = 0x98;
-               public const byte Chars16 = 0x9A;
-               public const byte Chars32 = 0x9C;
-               public const byte Bytes8 = 0x9E;
-               public const byte Bytes16 = 0xA0;
-               public const byte Bytes32 = 0xA2;
-
-               public const byte EmptyText = 0xA8;
-               public const byte TextIndex = 0xAA;
-               public const byte UniqueId = 0xAC;
-               public const byte TimeSpan = 0xAE;
-               public const byte Guid = 0xB0;
-               public const byte UInt64 = 0xB2;
-               public const byte Bool = 0xB4; // e.g. for typed array
-               public const byte Utf16_8 = 0xB6;
-               public const byte Utf16_16 = 0xB8;
-               public const byte Utf16_32 = 0xBA;
-               public const byte QNameIndex = 0xBC;
-       }
-
-       /* Binary Format (incomplete):
-
-               Literal strings are represented as UTF-8 string, with a length
-               prefixed to the string itself.
-
-               Key indices are based on the rules below:
-               - dictionary strings which can be found in IXmlDictionary are 
-                 doubled its Key. e.g. if the string.Key is 4, then the
-                 output is 8.
-               - dictionary strings which cannot be found in IXmlDictionary
-                 are stored in the XmlBinaryWriterSession, and its output
-                 number is doubled + 1 e.g. if the string is the first
-                 non-dictionary entry, then the output is 1, and 7 for the
-                 fourth one.
-               - When the index goes beyond 128, then it becomes 2 bytes,
-                 where the first byte becomes 0x80 + idx % 0x80 and
-                 the second byte becomes idx / 0x80.
-
-               Below are operations. Prefixes are always raw strings.
-               $string is length-prefixed string. @index is index as
-               described above. [value] is length-prefixed raw array.
-
-               // 2009-03-25: now that the binary format is open under OSP
-               // [MC-NBFX], I have added some notes beyond current
-               // implementation status (marked as TODO).
-
-               01                      : EndElement
-               02 $value               : Comment
-               03                      : array
-               04 $name                : local attribute by string
-               05 $prefix $name        : global attribute by string
-               06 @name                : local attribute by index
-               07 $prefix @name        : global attribute by index
-               08 $name                : default namespace by string
-               09 $prefix $name        : prefixed namespace by string
-               0A @name                : default namespace by index
-               0B $prefix @name        : prefixed namespace by index
-               0C @name                : global attribute by index,
-               ... 0x25                : in current element's namespace
-               26 ... 0x3F             : attributes with prefix
-               40 $name                : element w/o namespace by string
-               41 $prefix $name        : element with namespace by string
-               42 @name                : element w/o namespace by index
-               43 $prefix @name        : element with namespace by index
-               44 @name                : global element by index,
-               ... 0x5D                : in current element's namespace
-               5E ... 0x77             : elements with prefix
-               98 $value               : text/cdata/chars
-               99 $value               : text/cdata/chars + EndElement
-
-               FIXME: Below are not implemented:
-               (Uri is simply 98, QName is 98 '{' ns '}' 98 name)
-
-               Combined EndElement for below are supported:
-               80 : 0 (integer)
-               82 : 1 (integer)
-               84 : false (bool)
-               86 : true (bool)
-               88 : 1-byte integer
-               8A : 2-bytes integer
-               8C : 4-bytes integer
-               8E : 8-bytes integer
-               90 : single
-               92 : double
-               94 : decimal
-               96 : DateTime
-               98 : chars8
-               9A : chars16
-               9C : chars32
-               9E : bytes8 (base64)
-               A0 : bytes16 (base64)
-               A2 : bytes32 (base64)
-               A4 : TODO: start of list
-               A6 : TODO: end of list
-               A8 : empty text
-               AA : text index
-               AC : UniqueId (IsGuid = true)
-               AE : TimeSpan
-               B0 : UUID
-               B2 : UInt64
-               B4 : bool text
-               B6 : utf16_8
-               B8 : utf16_16
-               BA : utf16_32
-               BC : QName index
-
-               Error: PIs, doctype
-               Ignored: XMLdecl
-       */
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryReaderSession.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryReaderSession.cs
deleted file mode 100644 (file)
index 94c1438..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// XmlBinaryReaderSession.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-
-namespace System.Xml
-{
-       public class XmlBinaryReaderSession : IXmlDictionary
-       {
-               XmlDictionary dic = new XmlDictionary ();
-               Dictionary<int,XmlDictionaryString> store = new Dictionary<int,XmlDictionaryString> ();
-
-               public XmlBinaryReaderSession ()
-               {
-               }
-
-               public XmlDictionaryString Add (int id, string value)
-               {
-                       var v = dic.Add (value);
-                       store [id] = v;
-                       return v;
-               }
-
-               public void Clear ()
-               {
-                       store.Clear ();
-               }
-
-               public bool TryLookup (int key, out XmlDictionaryString result)
-               {
-                       return store.TryGetValue (key, out result);
-               }
-
-               public bool TryLookup (string value, out XmlDictionaryString result)
-               {
-                       foreach (var v in store.Values)
-                               if (v.Value == value) {
-                                       result = v;
-                                       return true;
-                               }
-                       result = null;
-                       return false;
-               }
-
-               public bool TryLookup (XmlDictionaryString value,
-                       out XmlDictionaryString result)
-               {
-                       foreach (var v in store.Values)
-                               if (v == value) {
-                                       result = v;
-                                       return true;
-                               }
-                       result = null;
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryWriterSession.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlBinaryWriterSession.cs
deleted file mode 100644 (file)
index 64753b8..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// XmlBinaryWriterSession.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005, 2007 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Collections.Generic;
-
-namespace System.Xml
-{
-       public class XmlBinaryWriterSession
-       {
-               Dictionary<int,XmlDictionaryString> dic =
-                       new Dictionary<int,XmlDictionaryString> ();
-
-               public XmlBinaryWriterSession ()
-               {
-               }
-
-               public void Reset ()
-               {
-                       dic.Clear ();
-               }
-
-               // Unlike XmlDictionary, it throws an InvalidOperationException
-               // if the same string already exists.
-               public virtual bool TryAdd (XmlDictionaryString value,
-                       out int key)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       if (TryLookup (value, out key))
-                               throw new InvalidOperationException ("Argument XmlDictionaryString was already added to the writer session");
-                       key = dic.Count;
-                       dic.Add (key, value);
-                       return true;
-               }
-
-               internal bool TryLookup (XmlDictionaryString value,
-                       out int key)
-               {
-                       foreach (KeyValuePair<int,XmlDictionaryString> e in dic)
-                               if (e.Value.Value == value.Value) {
-                                       key = e.Key;
-                                       return true;
-                               }
-                       key = -1;
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlC14NWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlC14NWriter.cs
deleted file mode 100644 (file)
index bedf337..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// XmlC14NWriter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if USE_DEPRECATED
-using System;
-using System.IO;
-
-namespace System.Xml
-{
-       [MonoTODO]
-       public sealed class XmlC14NWriter : XmlCanonicalWriter
-       {
-               bool include_comments;
-
-               public XmlC14NWriter (Stream stream)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public XmlC14NWriter (Stream stream, bool includeComments,
-                       params string [] inclusivePrefixes)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public bool IncludeComments {
-                       get { return include_comments; }
-                       set {
-                               throw new NotImplementedException ();
-                       }
-               }
-
-               public override void Close ()
-               {
-                       Flush ();
-               }
-
-               public override void Flush ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public void SetOutput (Stream stream)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public void SetOutput (Stream stream, bool includeComments,
-                       params string [] inclusivePrefixes)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteBase64 (byte [] buffer, int index, int count)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteCharEntity (int ch)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteComment (string text)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteComment (byte [] data, int offset, int count)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteDeclaration ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEndAttribute ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEndElement (string prefix, string localName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEndElement (byte [] prefix, int offset1, int count1, byte [] localName, int offset2, int count2)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEndStartElement (bool isEmpty)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEscapedText (string text)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteEscapedText (byte [] text, int offset, int count)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteNode (XmlReader reader)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteStartAttribute (string prefix, string localName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteStartAttribute (byte [] prefix, int offset1, int count1, byte [] localName, int offset2, int count2)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteStartElement (string prefix, string localName)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteStartElement (byte [] prefix, int offset1, int count1, byte [] localName, int offset2, int count2)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteText (string text)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteText (int ch)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteText (byte [] text, int offset, int count)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteXmlnsAttribute (
-                       string prefix, string namespaceUri)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override void WriteXmlnsAttribute (byte [] prefix, int offset1, int count1, byte [] namespaceUri, int offset2, int count2)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
-#endif
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlCanonicalWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlCanonicalWriter.cs
deleted file mode 100644 (file)
index e0bdd38..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// XmlCanonicalWriter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if USE_DEPRECATED
-using System;
-using System.IO;
-
-namespace System.Xml
-{
-       [MonoTODO]
-       public abstract class XmlCanonicalWriter
-       {
-               protected XmlCanonicalWriter ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public abstract void Close ();
-
-               public abstract void Flush ();
-
-               public abstract void WriteBase64 (byte [] buffer, int index, int count);
-
-               public abstract void WriteCharEntity (int ch);
-
-               public abstract void WriteComment (string text);
-
-               public abstract void WriteComment (byte [] data, int offset, int count);
-
-               public abstract void WriteDeclaration ();
-
-               public abstract void WriteEndAttribute ();
-
-               public abstract void WriteEndElement (string prefix, string localName);
-
-               public abstract void WriteEndElement (byte [] prefix, int offset1, int count1, byte [] localName, int offset2, int count2);
-
-               public abstract void WriteEndStartElement (bool isEmpty);
-
-               public abstract void WriteEscapedText (string text);
-
-               public abstract void WriteEscapedText (byte [] text, int offset, int count);
-
-               public abstract void WriteNode (XmlReader reader);
-
-               public abstract void WriteStartAttribute (string prefix, string localName);
-
-               public abstract void WriteStartAttribute (byte [] prefix, int offset1, int count1, byte [] localName, int offset2, int count2);
-
-               public abstract void WriteStartElement (string prefix, string localName);
-
-               public abstract void WriteStartElement (byte [] prefix, int offset1, int count1, byte [] localName, int offset2, int count2);
-
-               public abstract void WriteText (string text);
-
-               public abstract void WriteText (byte [] text, int offset, int count);
-
-               public abstract void WriteText (int ch);
-
-               public abstract void WriteXmlnsAttribute (
-                       string prefix, string namespaceUri);
-
-               public abstract void WriteXmlnsAttribute (byte [] prefix, int offset1, int count1, byte [] namespaceUri, int offset2, int count2);
-       }
-}
-#endif
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionary.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionary.cs
deleted file mode 100644 (file)
index 7537274..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// XmlDictionary.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace System.Xml
-{
-       public class XmlDictionary : IXmlDictionary
-       {
-               internal class EmptyDictionary : XmlDictionary
-               {
-                       public static readonly EmptyDictionary Instance =
-                               new EmptyDictionary ();
-
-                       public EmptyDictionary ()
-                               : base (1)
-                       {
-                       }
-               }
-
-               static XmlDictionary empty = new XmlDictionary (true);
-
-               public static IXmlDictionary Empty {
-                       get { return empty; }
-               }
-
-               readonly bool is_readonly;
-               Dictionary<string, XmlDictionaryString> dict;
-               List<XmlDictionaryString> list;
-
-               public XmlDictionary ()
-               {
-                       dict = new Dictionary<string, XmlDictionaryString> ();
-                       list = new List<XmlDictionaryString> ();
-               }
-
-               public XmlDictionary (int capacity)
-               {
-                       dict = new Dictionary<string, XmlDictionaryString> (capacity);
-                       list = new List<XmlDictionaryString> (capacity);
-               }
-
-               // for static empty.
-               private XmlDictionary (bool isReadOnly)
-                       : this (1)
-               {
-                       is_readonly = isReadOnly;
-               }
-
-               public virtual XmlDictionaryString Add (string value)
-               {
-                       if (is_readonly)
-                               throw new InvalidOperationException ();
-                       XmlDictionaryString ret;
-                       if (dict.TryGetValue (value, out ret))
-                               return ret;
-                       ret = new XmlDictionaryString (this, value, dict.Count);
-                       dict.Add (value, ret);
-                       list.Add (ret);
-                       return ret;
-               }
-
-               public virtual bool TryLookup (
-                       int key, out XmlDictionaryString result)
-               {
-                       if (key < 0 || dict.Count <= key) {
-                               result = null;
-                               return false;
-                       }
-                       result = list [key];
-                       return true;
-               }
-
-               public virtual bool TryLookup (string value,
-                       out XmlDictionaryString result)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ();
-                       return dict.TryGetValue (value, out result);
-               }
-
-               public virtual bool TryLookup (XmlDictionaryString value,
-                       out XmlDictionaryString result)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ();
-                       if (value.Dictionary != this) {
-                               result = null;
-                               return false;
-                       }
-                       for (int i = 0; i < list.Count; i++) {
-                               if (object.ReferenceEquals (list [i], value)) {
-                                       result = value;
-                                       return true;
-                               }
-                       }
-                       result = null;
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReader.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReader.cs
deleted file mode 100644 (file)
index f1407dc..0000000
+++ /dev/null
@@ -1,662 +0,0 @@
-//
-// XmlDictionaryReader.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005, 2007 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Reflection;
-using System.Text;
-using System.Xml;
-
-namespace System.Xml
-{
-       public abstract partial class XmlDictionaryReader : XmlReader
-       {
-               protected XmlDictionaryReader ()
-               {
-               }
-
-               XmlDictionaryReaderQuotas quotas;
-
-               public virtual bool CanCanonicalize {
-                       get { return false; }
-               }
-
-               public virtual XmlDictionaryReaderQuotas Quotas {
-                       get {
-                               if (quotas == null)
-                                       quotas = new XmlDictionaryReaderQuotas ();
-                               return quotas;
-                       }
-               }
-
-               public virtual void EndCanonicalization ()
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public virtual string GetAttribute (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       return GetAttribute (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int IndexOfLocalName (
-                       string [] localNames, string namespaceUri)
-               {
-                       if (localNames == null)
-                               throw new ArgumentNullException ("localNames");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       if (NamespaceURI != namespaceUri)
-                               return -1;
-                       for (int i = 0; i < localNames.Length; i++)
-                               if (localNames [i] == LocalName)
-                                       return i;
-                       return -1;
-               }
-
-               public virtual int IndexOfLocalName (
-                       XmlDictionaryString [] localNames,
-                       XmlDictionaryString namespaceUri)
-               {
-                       if (localNames == null)
-                               throw new ArgumentNullException ("localNames");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       if (NamespaceURI != namespaceUri.Value)
-                               return -1;
-                       XmlDictionaryString localName;
-                       if (!TryGetLocalNameAsDictionaryString (out localName))
-                               return -1;
-                       IXmlDictionary dict = localName.Dictionary;
-                       XmlDictionaryString iter;
-                       for (int i = 0; i < localNames.Length; i++)
-                               if (dict.TryLookup (localNames [i], out iter) && object.ReferenceEquals (iter, localName))
-                                       return i;
-                       return -1;
-               }
-
-               public virtual bool IsArray (out Type type)
-               {
-                       type = null;
-                       return false;
-               }
-
-               public virtual bool IsLocalName (string localName)
-               {
-                       return LocalName == localName;
-               }
-
-               public virtual bool IsLocalName (XmlDictionaryString localName)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       return LocalName == localName.Value;
-               }
-
-               public virtual bool IsNamespaceUri (string namespaceUri)
-               {
-                       return NamespaceURI == namespaceUri;
-               }
-
-               public virtual bool IsNamespaceUri (XmlDictionaryString namespaceUri)
-               {
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       return NamespaceURI == namespaceUri.Value;
-               }
-
-               public virtual bool IsStartArray (out Type type)
-               {
-                       type = null;
-                       return false;
-               }
-
-               public virtual bool IsStartElement (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       return IsStartElement (localName.Value, namespaceUri.Value);
-               }
-
-               protected bool IsTextNode (XmlNodeType nodeType)
-               {
-                       switch (nodeType) {
-                       case XmlNodeType.Attribute: // wow, it isn't indeed.
-                       case XmlNodeType.Text:
-                       case XmlNodeType.CDATA:
-                       case XmlNodeType.Whitespace:
-                       case XmlNodeType.SignificantWhitespace:
-                               return true;
-                       default:
-                               return false;
-                       }
-               }
-
-               XmlException XmlError (string message)
-               {
-                       IXmlLineInfo li = this as IXmlLineInfo;
-                       if (li == null || !li.HasLineInfo ())
-                               return new XmlException (message);
-                       else
-                               return new XmlException (String.Format ("{0} in {1} , at ({2},{3})", message, BaseURI, li.LineNumber, li.LinePosition));
-               }
-
-               public virtual void MoveToStartElement ()
-               {
-                       MoveToContent ();
-                       if (NodeType != XmlNodeType.Element)
-                               throw XmlError (String.Format ("Element node is expected, but got {0} node.", NodeType));
-               }
-
-               public virtual void MoveToStartElement (string name)
-               {
-                       if (name == null)
-                               throw new ArgumentNullException ("name");
-                       MoveToStartElement ();
-                       if (Name != name)
-                               throw XmlError (String.Format ("Element node '{0}' is expected, but got '{1}' element.", name, Name));
-               }
-
-               public virtual void MoveToStartElement (
-                       string localName, string namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       MoveToStartElement ();
-                       if (LocalName != localName || NamespaceURI != namespaceUri)
-                               throw XmlError (String.Format ("Element node '{0}' in namespace '{1}' is expected, but got '{2}' in namespace '{3}' element.", localName, namespaceUri, LocalName, NamespaceURI));
-               }
-
-               public virtual void MoveToStartElement (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       MoveToStartElement (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual void StartCanonicalization (
-                       Stream stream, bool includeComments,
-                       string [] inclusivePrefixes)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public virtual bool TryGetArrayLength (out int count)
-               {
-                       count = -1;
-                       return false;
-               }
-
-               public virtual bool TryGetBase64ContentLength (out int count)
-               {
-                       count = -1;
-                       return false;
-               }
-
-               public virtual bool TryGetLocalNameAsDictionaryString (
-                       out XmlDictionaryString localName)
-               {
-                       localName = null;
-                       return false;
-               }
-
-               public virtual bool TryGetNamespaceUriAsDictionaryString (
-                       out XmlDictionaryString namespaceUri)
-               {
-                       namespaceUri = null;
-                       return false;
-               }
-
-               #region Content Reader Methods
-
-               public override object ReadContentAs (Type type, IXmlNamespaceResolver nsResolver)
-               {
-                       return base.ReadContentAs (type, nsResolver);
-               }
-
-               public virtual byte [] ReadContentAsBase64 ()
-               {
-                       int len;
-                       if (!TryGetBase64ContentLength (out len))
-                               return Convert.FromBase64String (ReadContentAsString ());
-                       byte [] bytes = new byte [len];
-                       ReadContentAsBase64 (bytes, 0, len);
-                       return bytes;
-               }
-
-               MethodInfo xmlconv_from_bin_hex = typeof (XmlConvert).GetMethod ("FromBinHexString", BindingFlags.Static | BindingFlags.NonPublic, null, new Type [] {typeof (string)}, null);
-
-               byte [] FromBinHexString (string s)
-               {
-                       return (byte []) xmlconv_from_bin_hex.Invoke (null, new object [] {s});
-               }
-
-               public virtual byte [] ReadContentAsBinHex ()
-               {
-                       int len;
-                       if (!TryGetArrayLength (out len))
-                               return FromBinHexString (ReadContentAsString ());
-                       return ReadContentAsBinHex (len);
-               }
-
-               protected byte [] ReadContentAsBinHex (int maxByteArrayContentLength)
-               {
-                       byte [] bytes = new byte [maxByteArrayContentLength];
-                       ReadContentAsBinHex (bytes, 0, maxByteArrayContentLength);
-                       return bytes;
-               }
-
-               [MonoTODO]
-               public virtual int ReadContentAsChars (char [] chars, int offset, int count)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public override decimal ReadContentAsDecimal ()
-               {
-                       return base.ReadContentAsDecimal ();
-               }
-
-               public override float ReadContentAsFloat ()
-               {
-                       return base.ReadContentAsFloat ();
-               }
-
-               public virtual Guid ReadContentAsGuid ()
-               {
-                       return XmlConvert.ToGuid (ReadContentAsString ());
-               }
-
-               public virtual void ReadContentAsQualifiedName (out string localName, out string namespaceUri)
-               {
-                       XmlQualifiedName qname = (XmlQualifiedName) ReadContentAs (typeof (XmlQualifiedName), this as IXmlNamespaceResolver);
-                       localName = qname.Name;
-                       namespaceUri = qname.Namespace;
-               }
-
-               public override string ReadContentAsString ()
-               {
-                       return ReadContentAsString (Quotas.MaxStringContentLength);
-               }
-
-               [MonoTODO]
-               protected string ReadContentAsString (int maxStringContentLength)
-               {
-                       return base.ReadContentAsString ();
-               }
-
-               [MonoTODO ("there is exactly no information on the web")]
-               public virtual string ReadContentAsString (string [] strings, out int index)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO ("there is exactly no information on the web")]
-               public virtual string ReadContentAsString (XmlDictionaryString [] strings, out int index)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               public virtual TimeSpan ReadContentAsTimeSpan ()
-               {
-                       return XmlConvert.ToTimeSpan (ReadContentAsString ());
-               }
-
-               public virtual UniqueId ReadContentAsUniqueId ()
-               {
-                       return new UniqueId (ReadContentAsString ());
-               }
-
-               public virtual byte [] ReadElementContentAsBase64 ()
-               {
-                       ReadStartElement ();
-                       byte [] ret = ReadContentAsBase64 ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public virtual byte [] ReadElementContentAsBinHex ()
-               {
-                       ReadStartElement ();
-                       byte [] ret = ReadContentAsBinHex ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public virtual Guid ReadElementContentAsGuid ()
-               {
-                       ReadStartElement ();
-                       Guid ret = ReadContentAsGuid ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public virtual TimeSpan ReadElementContentAsTimeSpan ()
-               {
-                       ReadStartElement ();
-                       TimeSpan ret = ReadContentAsTimeSpan ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public virtual UniqueId ReadElementContentAsUniqueId ()
-               {
-                       ReadStartElement ();
-                       UniqueId ret = ReadContentAsUniqueId ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override string ReadElementContentAsString ()
-               {
-                       if (IsEmptyElement) {
-                               Read ();
-                               return String.Empty;
-                       } else {
-                               ReadStartElement ();
-                               string s;
-                               if (NodeType == XmlNodeType.EndElement)
-                                       s = String.Empty;
-                               else
-                                       s = ReadContentAsString ();
-                               ReadEndElement ();
-                               return s;
-                       }
-               }
-
-               public virtual void ReadFullStartElement ()
-               {
-                       if (!IsStartElement ())
-                               throw new XmlException ("Current node is not a start element");
-                       ReadStartElement ();
-               }
-
-               public virtual void ReadFullStartElement (string name)
-               {
-                       if (!IsStartElement (name))
-                               throw new XmlException (String.Format ("Current node is not a start element '{0}'", name));
-                       ReadStartElement (name);
-               }
-
-               public virtual void ReadFullStartElement (string localName, string namespaceUri)
-               {
-                       if (!IsStartElement (localName, namespaceUri))
-                               throw new XmlException (String.Format ("Current node is not a start element '{0}' in namesapce '{1}'", localName, namespaceUri));
-                       ReadStartElement (localName, namespaceUri);
-               }
-
-               public virtual void ReadFullStartElement (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (!IsStartElement (localName, namespaceUri))
-                               throw new XmlException (String.Format ("Current node is not a start element '{0}' in namesapce '{1}'", localName, namespaceUri));
-                       ReadStartElement (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual void ReadStartElement (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-                       ReadStartElement (localName.Value, namespaceUri.Value);
-               }
-
-               public override string ReadString ()
-               {
-                       return ReadString (Quotas.MaxStringContentLength);
-               }
-
-               [MonoTODO]
-               protected string ReadString (int maxStringContentLength)
-               {
-                       return base.ReadString ();
-               }
-
-               public virtual int ReadValueAsBase64 (byte [] bytes, int start, int length)
-               {
-                       throw new NotSupportedException (); // as it is documented ...
-               }
-
-               public virtual bool TryGetValueAsDictionaryString (out XmlDictionaryString value)
-               {
-                       throw new NotSupportedException (); // as documented
-               }
-
-               #endregion
-
-               #region Factory Methods
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       byte [] buffer, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateBinaryReader (buffer, 0, buffer.Length, quotas);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       byte [] buffer, int offset, int count, 
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateBinaryReader (buffer, offset, count, new XmlDictionary (), quotas);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       byte [] buffer, int offset, int count,
-                       IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateBinaryReader (buffer, offset, count,
-                               dictionary, quotas,
-                               new XmlBinaryReaderSession (), null);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       byte [] buffer, int offset, int count,
-                       IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quotas,
-                       XmlBinaryReaderSession session)
-               {
-                       return CreateBinaryReader (buffer, offset, count,
-                               dictionary, quotas,
-                               session, null);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       byte [] buffer, int offset, int count,
-                       IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quotas,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       return new XmlBinaryDictionaryReader (buffer,
-                               offset, count,
-                               dictionary, quotas, session, onClose);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       Stream stream, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateBinaryReader (stream, new XmlDictionary (), quotas);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       Stream stream, IXmlDictionary dictionary, 
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateBinaryReader (stream, dictionary, quotas,
-                               new XmlBinaryReaderSession (), null);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       Stream stream, IXmlDictionary dictionary, 
-                       XmlDictionaryReaderQuotas quotas,
-                       XmlBinaryReaderSession session)
-               {
-                       return CreateBinaryReader (stream, dictionary, quotas,
-                               session, null);
-               }
-
-               public static XmlDictionaryReader CreateBinaryReader (
-                       Stream stream, IXmlDictionary dictionary,
-                       XmlDictionaryReaderQuotas quotas,
-                       XmlBinaryReaderSession session,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       return new XmlBinaryDictionaryReader (stream,
-                               dictionary, quotas, session, onClose);
-               }
-
-               public static XmlDictionaryReader CreateDictionaryReader (
-                       XmlReader reader)
-               {
-                       return new XmlSimpleDictionaryReader (reader);
-               }
-
-#if !NET_2_1
-               public static XmlDictionaryReader CreateMtomReader (
-                       Stream stream, Encoding encoding,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return new XmlMtomDictionaryReader (stream, encoding, quotas);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       Stream stream, Encoding [] encodings,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateMtomReader (stream, encodings, null, quotas);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       Stream stream, Encoding [] encodings, string contentType,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateMtomReader (stream, encodings, contentType, quotas, int.MaxValue, null);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       Stream stream, Encoding [] encodings, string contentType,
-                       XmlDictionaryReaderQuotas quotas,
-                       int maxBufferSize,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       return new XmlMtomDictionaryReader (stream, encodings, contentType, quotas, maxBufferSize, onClose);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       byte [] buffer, int offset, int count,
-                       Encoding encoding, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateMtomReader (new MemoryStream (buffer, offset, count), encoding, quotas);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       byte [] buffer, int offset, int count,
-                       Encoding [] encodings, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateMtomReader (new MemoryStream (buffer, offset, count), encodings, quotas);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       byte [] buffer, int offset, int count,
-                       Encoding [] encodings, string contentType,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateMtomReader (new MemoryStream (buffer, offset, count), encodings, contentType, quotas);
-               }
-
-               public static XmlDictionaryReader CreateMtomReader (
-                       byte [] buffer, int offset, int count,
-                       Encoding [] encodings, string contentType,
-                       XmlDictionaryReaderQuotas quotas,
-                       int maxBufferSize,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       return CreateMtomReader (new MemoryStream (buffer, offset, count), encodings, contentType, quotas, maxBufferSize, onClose);
-               }
-#endif
-
-               public static XmlDictionaryReader CreateTextReader (byte [] buffer, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateTextReader (buffer, 0, buffer.Length, quotas);
-               }
-
-               public static XmlDictionaryReader CreateTextReader (
-                       byte [] buffer, int offset, int count,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateTextReader (buffer, offset, count,
-                               Encoding.UTF8, quotas, null);
-               }
-
-               public static XmlDictionaryReader CreateTextReader (
-                       byte [] buffer, int offset, int count,
-                       Encoding encoding,
-                       XmlDictionaryReaderQuotas quotas,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       return CreateTextReader (new MemoryStream (buffer, offset, count), encoding, quotas, onClose);
-               }
-
-               public static XmlDictionaryReader CreateTextReader (
-                       Stream stream, XmlDictionaryReaderQuotas quotas)
-               {
-                       return CreateTextReader (stream, Encoding.UTF8, quotas, null);
-               }
-
-               public static XmlDictionaryReader CreateTextReader (
-                       Stream stream, Encoding encoding,
-                       XmlDictionaryReaderQuotas quotas,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       XmlReaderSettings s = new XmlReaderSettings ();
-                       XmlNameTable nt = new NameTable ();
-                       XmlParserContext c = new XmlParserContext (nt, new XmlNamespaceManager (nt), String.Empty, XmlSpace.None, encoding);
-                       XmlDictionaryReader res = new XmlSimpleDictionaryReader (XmlReader.Create (stream, s, c), null, onClose);
-                       res.quotas = quotas;
-                       return res;
-               }
-
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderAutoGen.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderAutoGen.cs
deleted file mode 100644 (file)
index 46c8456..0000000
+++ /dev/null
@@ -1,522 +0,0 @@
-
-#pragma warning disable 612
-using System;
-using System.Collections.Generic;
-
-namespace System.Xml
-{
-       public abstract partial class XmlDictionaryReader : XmlReader
-       {
-               static readonly char [] wsChars = new char [] {' ', '\t', '\n', '\r'};
-
-               void CheckReadArrayArguments (Array array, int offset, int length)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException ("array");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException ("offset is negative");
-                       if (offset > array.Length)
-                               throw new ArgumentOutOfRangeException ("offset exceeds the length of the destination array");
-                       if (length < 0)
-                               throw new ArgumentOutOfRangeException ("length is negative");
-                       if (length > array.Length - offset)
-                               throw new ArgumentOutOfRangeException ("length + offset exceeds the length of the destination array");
-               }
-
-               void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-               }
-
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, bool [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToBoolean (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual bool [] ReadBooleanArray (string localName, string namespaceUri)
-               {
-                       List<bool> list = new List<bool> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToBoolean (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual bool [] ReadBooleanArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadBooleanArray (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, DateTime [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToDateTime (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual DateTime [] ReadDateTimeArray (string localName, string namespaceUri)
-               {
-                       List<DateTime> list = new List<DateTime> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToDateTime (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual DateTime [] ReadDateTimeArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadDateTimeArray (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, decimal [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToDecimal (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual decimal [] ReadDecimalArray (string localName, string namespaceUri)
-               {
-                       List<decimal> list = new List<decimal> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToDecimal (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual decimal [] ReadDecimalArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadDecimalArray (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, double [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, double [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToDouble (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual double [] ReadDoubleArray (string localName, string namespaceUri)
-               {
-                       List<double> list = new List<double> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToDouble (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual double [] ReadDoubleArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadDoubleArray (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, Guid [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToGuid (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual Guid [] ReadGuidArray (string localName, string namespaceUri)
-               {
-                       List<Guid> list = new List<Guid> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToGuid (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual Guid [] ReadGuidArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadGuidArray (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, short [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, short [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToInt16 (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual short [] ReadInt16Array (string localName, string namespaceUri)
-               {
-                       List<short> list = new List<short> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToInt16 (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual short [] ReadInt16Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadInt16Array (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, int [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, int [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToInt32 (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual int [] ReadInt32Array (string localName, string namespaceUri)
-               {
-                       List<int> list = new List<int> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToInt32 (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual int [] ReadInt32Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadInt32Array (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, long [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, long [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToInt64 (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual long [] ReadInt64Array (string localName, string namespaceUri)
-               {
-                       List<long> list = new List<long> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToInt64 (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual long [] ReadInt64Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadInt64Array (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, float [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, float [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToSingle (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual float [] ReadSingleArray (string localName, string namespaceUri)
-               {
-                       List<float> list = new List<float> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToSingle (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual float [] ReadSingleArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadSingleArray (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual int ReadArray (string localName, string namespaceUri, TimeSpan [] array, int offset, int length)
-               {
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.ToTimeSpan (ReadContentAsString ());
-                               ReadEndElement ();
-                       }
-                       return length;
-               }
-
-               public virtual TimeSpan [] ReadTimeSpanArray (string localName, string namespaceUri)
-               {
-                       List<TimeSpan> list = new List<TimeSpan> ();
-                       while (true) {
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.ToTimeSpan (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }
-                       return list.ToArray ();
-               }
-
-               public virtual TimeSpan [] ReadTimeSpanArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadTimeSpanArray (localName.Value, namespaceUri.Value);
-               }
-
-               public override bool ReadElementContentAsBoolean ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       bool ret = ReadContentAsBoolean ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override DateTime ReadElementContentAsDateTime ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       DateTime ret = ReadContentAsDateTime ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override decimal ReadElementContentAsDecimal ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       decimal ret = ReadContentAsDecimal ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override double ReadElementContentAsDouble ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       double ret = ReadContentAsDouble ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override float ReadElementContentAsFloat ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       float ret = ReadContentAsFloat ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override int ReadElementContentAsInt ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       int ret = ReadContentAsInt ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-               public override long ReadElementContentAsLong ()
-               {
-                       ReadStartElement (LocalName, NamespaceURI);
-                       long ret = ReadContentAsLong ();
-                       ReadEndElement ();
-                       return ret;
-               }
-
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderQuotas.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderQuotas.cs
deleted file mode 100644 (file)
index 1a8ad4a..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-//
-// XmlDictionaryReaderQuotas.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Xml
-{
-       public sealed class XmlDictionaryReaderQuotas
-       {
-               static XmlDictionaryReaderQuotas max;
-
-               static XmlDictionaryReaderQuotas ()
-               {
-                       max = new XmlDictionaryReaderQuotas (true);
-               }
-
-               readonly bool is_readonly;
-               int array_len, bytes, depth, nt_chars, text_len;
-
-               public XmlDictionaryReaderQuotas ()
-                       : this (false)
-               {
-               }
-
-               private XmlDictionaryReaderQuotas (bool max)
-               {
-                       is_readonly = max;
-                       array_len = max ? int.MaxValue : 0x4000;
-                       bytes = max ? int.MaxValue : 0x1000;
-                       depth = max ? int.MaxValue : 0x20;
-                       nt_chars = max ? int.MaxValue : 0x4000;
-                       text_len = max ? int.MaxValue : 0x2000;
-               }
-
-               public static XmlDictionaryReaderQuotas Max {
-                       get { return max; }
-               }
-
-               public int MaxArrayLength {
-                       get { return array_len; }
-                       set { array_len = Check (value); }
-               }
-
-               public int MaxBytesPerRead {
-                       get { return bytes; }
-                       set { bytes = Check (value); }
-               }
-
-               public int MaxDepth {
-                       get { return depth; }
-                       set { depth = Check (value); }
-               }
-
-               public int MaxNameTableCharCount {
-                       get { return nt_chars; }
-                       set { nt_chars = Check (value); }
-               }
-
-               public int MaxStringContentLength {
-                       get { return text_len; }
-                       set { text_len = Check (value); }
-               }
-
-               private int Check (int value)
-               {
-                       if (is_readonly)
-                               throw new InvalidOperationException ("This quota is read-only.");
-                       if (value <= 0)
-                               throw new ArgumentException ("Value must be positive integer.");
-                       return value;
-               }
-
-               public void CopyTo (XmlDictionaryReaderQuotas quota)
-               {
-                       quota.array_len = array_len;
-                       quota.bytes = bytes;
-                       quota.depth = depth;
-                       quota.nt_chars = nt_chars;
-                       quota.text_len = text_len;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryString.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryString.cs
deleted file mode 100644 (file)
index 374b451..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// XmlDictionaryString.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-
-namespace System.Xml
-{
-       public class XmlDictionaryString
-       {
-               static XmlDictionaryString empty = new XmlDictionaryString (
-                       XmlDictionary.EmptyDictionary.Instance,
-                       String.Empty, 0);
-
-               public static XmlDictionaryString Empty {
-                       get { return empty; }
-               }
-
-               readonly IXmlDictionary dict;
-               readonly string value;
-               readonly int key;
-
-               public XmlDictionaryString (IXmlDictionary dictionary,
-                       string value, int key)
-               {
-                       if (dictionary == null)
-                               throw new ArgumentNullException ("dictionary");
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       if (key < 0 || key > (int.MaxValue/4))
-                               throw new ArgumentOutOfRangeException ("key");
-                       this.dict = dictionary;
-                       this.value = value;
-                       this.key = key;
-               }
-
-               public IXmlDictionary Dictionary {
-                       get { return dict; }
-               }
-
-               public int Key {
-                       get { return key; }
-               }
-
-               public string Value {
-                       get { return value; }
-               }
-
-               public override string ToString ()
-               {
-                       return value;
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriter.cs
deleted file mode 100644 (file)
index 6e909a8..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-//
-// XmlDictionaryWriter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
-       public abstract partial class XmlDictionaryWriter : XmlWriter
-       {
-               static readonly Encoding utf8_unmarked = new UTF8Encoding (false);
-
-               protected XmlDictionaryWriter ()
-               {
-               }
-
-               internal int Depth { get; set; }
-
-               internal int NSIndex { get; set; }
-
-               public virtual bool CanCanonicalize {
-                       get { return false; }
-               }
-
-               public static XmlDictionaryWriter CreateBinaryWriter (
-                       Stream stream)
-               {
-                       return CreateBinaryWriter (stream, null, null, false);
-               }
-
-               public static XmlDictionaryWriter CreateBinaryWriter (
-                       Stream stream, IXmlDictionary dictionary)
-               {
-                       return CreateBinaryWriter (stream, dictionary, null, false);
-               }
-
-               public static XmlDictionaryWriter CreateBinaryWriter (
-                       Stream stream, IXmlDictionary dictionary,
-                       XmlBinaryWriterSession session)
-               {
-                       return CreateBinaryWriter (stream, dictionary, session, false);
-               }
-
-               public static XmlDictionaryWriter CreateBinaryWriter (
-                       Stream stream, IXmlDictionary dictionary,
-                       XmlBinaryWriterSession session, bool ownsStream)
-               {
-                       return new XmlBinaryDictionaryWriter (stream,
-                               dictionary, session, ownsStream);
-               }
-
-               public static XmlDictionaryWriter CreateDictionaryWriter (XmlWriter writer)
-               {
-                       return new XmlSimpleDictionaryWriter (writer);
-               }
-#if !NET_2_1
-               public static XmlDictionaryWriter CreateMtomWriter (
-                       Stream stream, Encoding encoding, int maxSizeInBytes,
-                       string startInfo)
-               {
-                       return CreateMtomWriter (stream, encoding,
-                               maxSizeInBytes, startInfo, Guid.NewGuid () + "id=1", "http://tempuri.org/0/" + DateTime.Now.Ticks, true, false);
-               }
-
-               public static XmlDictionaryWriter CreateMtomWriter (
-                       Stream stream, Encoding encoding, int maxSizeInBytes,
-                       string startInfo, string boundary, string startUri,
-                       bool writeMessageHeaders, bool ownsStream)
-               {
-                       return new XmlMtomDictionaryWriter (stream, encoding, maxSizeInBytes, startInfo, boundary, startUri, writeMessageHeaders, ownsStream);
-               }
-#endif
-               public static XmlDictionaryWriter CreateTextWriter (
-                       Stream stream)
-               {
-                       return CreateTextWriter (stream, Encoding.UTF8);
-               }
-
-               public static XmlDictionaryWriter CreateTextWriter (
-                       Stream stream, Encoding encoding)
-               {
-                       return CreateTextWriter (stream, encoding, false);
-               }
-
-               // BTW looks like it creates an instance of different
-               // implementation than those from XmlWriter.Create().
-               public static XmlDictionaryWriter CreateTextWriter (
-                       Stream stream, Encoding encoding, bool ownsStream)
-               {
-                       if (stream == null)
-                               throw new ArgumentNullException ("stream");
-                       if (encoding == null)
-                               throw new ArgumentNullException ("encoding");
-
-                       switch (encoding.CodePage) {
-                       case 1200:
-                       case 1201: // utf-16
-                       case 65001: // utf-8
-                               encoding = utf8_unmarked;
-                               break;
-                       default:
-                               throw new XmlException (String.Format ("XML declaration is required for encoding code page {0} but this XmlWriter does not support XML declaration.", encoding.CodePage));
-                       }
-
-                       XmlWriterSettings s = new XmlWriterSettings ();
-                       s.Encoding = encoding;
-                       s.CloseOutput = ownsStream;
-                       s.OmitXmlDeclaration = true;
-                       return CreateDictionaryWriter (XmlWriter.Create (stream, s));
-               }
-
-               
-
-               public virtual void EndCanonicalization ()
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public virtual void StartCanonicalization (
-                       Stream stream, bool includeComments,
-                       string [] inclusivePrefixes)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public void WriteAttributeString (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri,
-                       string value)
-               {
-                       WriteAttributeString (null, localName, namespaceUri, value);
-               }
-
-               public void WriteAttributeString (string prefix,
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri,
-                       string value)
-               {
-                       WriteStartAttribute (prefix, localName, namespaceUri);
-                       WriteString (value);
-                       WriteEndAttribute ();
-               }
-
-               public void WriteElementString (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri,
-                       string value)
-               {
-                       WriteElementString (null, localName, namespaceUri, value);
-               }
-
-               public void WriteElementString (string prefix,
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri,
-                       string value)
-               {
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteString (value);
-                       WriteEndElement ();
-               }
-
-               public virtual void WriteNode (XmlDictionaryReader reader,
-                       bool defattr)
-               {
-                       if (reader == null)
-                               throw new ArgumentNullException ("reader");
-
-                       if (reader.ReadState == ReadState.Initial)
-                               reader.Read ();
-                       
-                       switch (reader.NodeType) {
-                       case XmlNodeType.Element:
-                               // gratuitously copied from System.XML/System.Xml/XmlWriter.cs:WriteNode(XmlReader,bool)
-                               // as there doesn't seem to be a way to hook into attribute writing w/o handling Element.
-                               XmlDictionaryString ename, ens;
-                               if (reader.TryGetLocalNameAsDictionaryString (out ename) && reader.TryGetLocalNameAsDictionaryString (out ens))
-                                       WriteStartElement (reader.Prefix, ename, ens);
-                               else
-                                       WriteStartElement (reader.Prefix, reader.LocalName, reader.NamespaceURI);
-                               // Well, I found that MS.NET took this way, since
-                               // there was a error-prone SgmlReader that fails
-                               // MoveToNextAttribute().
-                               if (reader.HasAttributes) {
-                                       for (int i = 0; i < reader.AttributeCount; i++) {
-                                               reader.MoveToAttribute (i);
-                                               WriteAttribute (reader, defattr);
-                                       }
-                                       reader.MoveToElement ();
-                               }
-                               if (reader.IsEmptyElement)
-                                       WriteEndElement ();
-                               else {
-                                       int depth = reader.Depth;
-                                       reader.Read ();
-                                       if (reader.NodeType != XmlNodeType.EndElement) {
-                                               do {
-                                                       WriteNode (reader, defattr);
-                                               } while (depth < reader.Depth);
-                                       }
-                                       WriteFullEndElement ();
-                               }
-                               reader.Read ();
-                               break;
-                       case XmlNodeType.Attribute:
-                       case XmlNodeType.Text:
-                               WriteTextNode (reader, defattr);
-                               break;
-                       default:
-                               base.WriteNode (reader, defattr);
-                               break;
-                       }
-               }
-
-               private void WriteAttribute (XmlDictionaryReader reader, bool defattr)
-               {
-                       if (!defattr && reader.IsDefault)
-                               return;
-
-                       XmlDictionaryString name, ns;
-                       if (reader.TryGetLocalNameAsDictionaryString (out name) && reader.TryGetLocalNameAsDictionaryString (out ns))
-                               WriteStartAttribute (reader.Prefix, name, ns);
-                       else
-                               WriteStartAttribute (reader.Prefix, reader.LocalName, reader.NamespaceURI);
-#if NET_2_1
-                       // no ReadAttributeValue() in 2.1 profile.
-                       WriteTextNode (reader, true);
-#else
-                       while (reader.ReadAttributeValue ()) {
-                               switch (reader.NodeType) {
-                               case XmlNodeType.Text:
-                                       WriteTextNode (reader, true);
-                                       break;
-                               case XmlNodeType.EntityReference:
-                                       WriteEntityRef (reader.Name);
-                                       break;
-                               }
-                       }
-#endif
-                       WriteEndAttribute ();
-               }
-
-               public override void WriteNode (XmlReader reader, bool defattr)
-               {
-                       if (reader == null)
-                               throw new ArgumentNullException ("reader");
-
-                       XmlDictionaryReader dr = reader as XmlDictionaryReader;
-                       if (dr != null)
-                               WriteNode (dr, defattr);
-                       else
-                               base.WriteNode (reader, defattr);
-               }
-
-               public virtual void WriteQualifiedName (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       WriteQualifiedName (localName.Value, namespaceUri.Value);
-               }
-
-               public void WriteStartAttribute (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       WriteStartAttribute (localName.Value, namespaceUri.Value);
-               }
-
-               public virtual void WriteStartAttribute (string prefix,
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       WriteStartAttribute (prefix, localName.Value, namespaceUri.Value);
-               }
-
-               public void WriteStartElement (
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       WriteStartElement (null, localName, namespaceUri);
-               }
-
-               public virtual void WriteStartElement (string prefix,
-                       XmlDictionaryString localName,
-                       XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentException ("localName must not be null.", "localName");
-                       WriteStartElement (prefix, localName.Value,
-                                       namespaceUri != null ? namespaceUri.Value : null);
-               }
-
-               public virtual void WriteString (XmlDictionaryString value)
-               {
-                       WriteString (value.Value);
-               }
-
-               protected virtual void WriteTextNode (XmlDictionaryReader reader, bool isAttribute)
-               {
-                       WriteString (reader.Value);
-                       if (!isAttribute)
-                               reader.Read ();
-               }
-
-               public virtual void WriteValue (Guid guid)
-               {
-                       WriteString (guid.ToString ());
-               }
-
-               public virtual void WriteValue (IStreamProvider value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       Stream stream = value.GetStream ();
-                       byte[] buf = new byte [Math.Min (2048, stream.CanSeek ? stream.Length : 2048)];
-                       int read;
-                       while ((read = stream.Read (buf, 0, buf.Length)) > 0) {
-                               WriteBase64 (buf, 0, read);
-                       }
-                       value.ReleaseStream (stream);
-               }
-
-               public virtual void WriteValue (TimeSpan duration)
-               {
-                       WriteString (XmlConvert.ToString (duration));
-               }
-
-               public virtual void WriteValue (UniqueId id)
-               {
-                       if (id == null)
-                               throw new ArgumentNullException ("id");
-                       WriteString (id.ToString ());
-               }
-
-               public virtual void WriteValue (XmlDictionaryString value)
-               {
-                       WriteValue (value.Value);
-               }
-
-               public virtual void WriteXmlAttribute (string localName, string value)
-               {
-                       WriteAttributeString ("xml", localName, "http://www.w3.org/XML/1998/namespace", value);
-               }
-
-               public virtual void WriteXmlAttribute (XmlDictionaryString localName,
-                       XmlDictionaryString value)
-               {
-                       WriteXmlAttribute (localName.Value, value.Value);
-               }
-
-               public virtual void WriteXmlnsAttribute (
-                       string prefix, string namespaceUri)
-               {
-                       // BTW .NET 2.0 those XmlWriters from XmlWrite.Create()
-                       // rejects namespace overriding i.e.
-                       //
-                       //      xw.WriteStartElement ("foo", "urn:foo");
-                       //      xw.WriteXmlnsAttribute ("foo", "urn:bar");
-                       //
-                       // causes an XmlException. We need fix in sys.xml.dll
-
-                       // When the prefix is null, this writer must mock
-                       // a dummy namespace up. It is then up to the actual
-                       // writer how it is determined in the output. (When
-                       // there is a duplicate, then it will be further 
-                       // modified.)
-                       if (prefix == null && String.IsNullOrEmpty (namespaceUri))
-                               prefix = String.Empty;
-                       else if (prefix == null)
-                               prefix = "d" + Depth + "p" + (++NSIndex);
-
-                       if (prefix == String.Empty)
-                               WriteAttributeString ("xmlns", namespaceUri);
-                       else
-                               WriteAttributeString ("xmlns", prefix, "http://www.w3.org/2000/xmlns/", namespaceUri);
-               }
-
-               public virtual void WriteXmlnsAttribute (string prefix,
-                       XmlDictionaryString namespaceUri)
-               {
-                       WriteXmlnsAttribute (prefix, namespaceUri.Value);
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriterAutoGen.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryWriterAutoGen.cs
deleted file mode 100644 (file)
index 76bc185..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-
-using System;
-
-namespace System.Xml
-{
-       public abstract partial class XmlDictionaryWriter : XmlWriter
-       {
-               void CheckWriteArrayArguments (Array array, int offset, int length)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException ("array");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException ("offset is negative");
-                       if (offset > array.Length)
-                               throw new ArgumentOutOfRangeException ("offset exceeds the length of the destination array");
-                       if (length < 0)
-                               throw new ArgumentOutOfRangeException ("length is negative");
-                       if (length > array.Length - offset)
-                               throw new ArgumentOutOfRangeException ("length + offset exceeds the length of the destination array");
-               }
-
-               void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException ("localName");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException ("namespaceUri");
-               }
-
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, bool [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, DateTime [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, decimal [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, double [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, double [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, Guid [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, short [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, short [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, int [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, int [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, long [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, long [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, float [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, float [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan [] array, int offset, int length)
-               {
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, TimeSpan [] array, int offset, int length)
-               {
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }
-
-               }
-
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlMtomDictionaryReader.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlMtomDictionaryReader.cs
deleted file mode 100644 (file)
index b2ca93c..0000000
+++ /dev/null
@@ -1,630 +0,0 @@
-//
-// XmlMtomDictionaryReader.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2009 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Mime;
-using System.Reflection;
-using System.Text;
-using System.Xml;
-
-namespace System.Xml
-{
-       internal class XmlMtomDictionaryReader : XmlDictionaryReader
-       {
-               public XmlMtomDictionaryReader (
-                       Stream stream, Encoding encoding,
-                       XmlDictionaryReaderQuotas quotas)
-               {
-                       this.stream = stream;
-                       this.encoding = encoding;
-                       this.quotas = quotas;
-
-                       Initialize ();
-               }
-
-               public XmlMtomDictionaryReader (
-                       Stream stream, Encoding [] encodings, string contentType,
-                       XmlDictionaryReaderQuotas quotas,
-                       int maxBufferSize,
-                       OnXmlDictionaryReaderClose onClose)
-               {
-                       this.stream = stream;
-                       this.encodings = encodings;
-                       content_type = contentType != null ? CreateContentType (contentType) : null;
-                       this.quotas = quotas;
-                       this.max_buffer_size = maxBufferSize;
-                       on_close = onClose;
-
-                       Initialize ();
-               }
-
-               Stream stream;
-               Encoding encoding;
-               Encoding [] encodings;
-               ContentType content_type;
-               XmlDictionaryReaderQuotas quotas;
-               int max_buffer_size;
-               OnXmlDictionaryReaderClose on_close;
-
-               Dictionary<string,MimeEncodedStream> readers = new Dictionary<string,MimeEncodedStream> ();
-
-               void Initialize ()
-               {
-                       var nt = new NameTable ();
-                       initial_reader = new NonInteractiveStateXmlReader (String.Empty, nt, ReadState.Initial);
-                       eof_reader = new NonInteractiveStateXmlReader (String.Empty, nt, ReadState.EndOfFile);
-                       xml_reader = initial_reader;
-               }
-
-               ContentType CreateContentType (string contentTypeString)
-               {
-                       ContentType c = null;
-                       foreach (var s_ in contentTypeString.Split (';')) {
-                               var s = s_.Trim ();
-                               if (c == null) {
-                                       // first one
-                                       c = new ContentType (s);
-                                       continue;
-                               }
-                               int idx = s.IndexOf ('=');
-                               if (idx < 0)
-                                       throw new XmlException ("Invalid content type header");
-                               var val = StripBraces (s.Substring (idx + 1));
-                               c.Parameters [s.Substring (0, idx)] = val;
-                       }
-                       return c;
-               }
-
-               XmlReader xml_reader, initial_reader, eof_reader, part_reader;
-               XmlReader Reader {
-                       get { return part_reader ?? xml_reader; }
-               }
-
-               public override bool EOF {
-                       get { return Reader == eof_reader; }
-               }
-
-               public override void Close ()
-               {
-                       if (!EOF && on_close != null)
-                               on_close (this);
-                       xml_reader = eof_reader;
-               }
-
-               public override bool Read ()
-               {
-                       if (EOF)
-                               return false;
-
-                       if (Reader == initial_reader)
-                               SetupPrimaryReader ();
-
-                       if (part_reader != null)
-                               part_reader = null;
-
-                       if (!Reader.Read ()) {
-                               xml_reader = eof_reader;
-                               return false;
-                       }
-                       if (Reader.LocalName == "Include" && Reader.NamespaceURI == "http://www.w3.org/2004/08/xop/include") {
-                               string cid = Reader.GetAttribute ("href");
-                               if (!cid.StartsWith ("cid:"))
-                                       throw new XmlException ("Cannot resolve non-cid href attribute value in XOP Include element");
-                               cid = cid.Substring (4);
-                               if (!readers.ContainsKey (cid))
-                                       ReadToIdentifiedStream (cid);
-                               part_reader = new MultiPartedXmlReader (Reader, readers [cid]);
-                       }
-                       return true;
-               }
-
-               void SetupPrimaryReader ()
-               {
-                       ReadOptionalMimeHeaders ();
-                       if (current_content_type != null)
-                               content_type = current_content_type;
-
-                       if (content_type == null)
-                               throw new XmlException ("Content-Type header for the MTOM message was not found");
-                       if (content_type.Boundary == null)
-                               throw new XmlException ("Content-Type header for the MTOM message must contain 'boundary' parameter");
-
-                       if (encoding == null && content_type.CharSet != null)
-                               encoding = Encoding.GetEncoding (content_type.CharSet);
-                       if (encoding == null && encodings == null)
-                               throw new XmlException ("Encoding specification is required either in the constructor argument or the content-type header");
-
-                       // consume the first identifier.
-                       string ident = "--" + content_type.Boundary;
-                       string idline;
-
-                       while (true) {
-                               idline = ReadAsciiLine ().Trim ();
-                               if (idline == null)
-                                       return;
-                               if (idline.Length != 0)
-                                       break;
-                       }
-                       if (!idline.StartsWith (ident, StringComparison.Ordinal))
-                               throw new XmlException (String.Format ("Unexpected boundary line was found. Expected boundary is '{0}' but it was '{1}'", content_type.Boundary, idline));
-
-                       string start = content_type.Parameters ["start"];
-                       ReadToIdentifiedStream (start);
-
-                       xml_reader = XmlReader.Create (readers [start].CreateTextReader ());
-               }
-
-               int buffer_length;
-               byte [] buffer;
-               int peek_char;
-
-               ContentType current_content_type;
-               int content_index;
-               string current_content_id, current_content_encoding;
-
-               void ReadToIdentifiedStream (string id)
-               {
-                       while (true) {
-                               if (!ReadNextStream ())
-                                       throw new XmlException (String.Format ("The stream '{0}' did not appear", id));
-                               if (current_content_id == id || id == null)
-                                       break;
-                       }
-               }
-
-               bool ReadNextStream ()
-               {
-                       ReadOptionalMimeHeaders ();
-                       string ident = "--" + content_type.Boundary;
-
-                       StringBuilder sb = new StringBuilder ();
-                       while (true) {
-                               string n = ReadAsciiLine ();
-                               if (n == null && sb.Length == 0)
-                                       return false;
-                               else if (n == null || n.StartsWith (ident, StringComparison.Ordinal))
-                                       break;
-                               sb.Append (n);
-                       }
-                       readers.Add (current_content_id, new MimeEncodedStream (current_content_id, current_content_encoding, sb.ToString ()));
-                       return true;
-               }
-
-               void ReadOptionalMimeHeaders ()
-               {
-                       peek_char = stream.ReadByte ();
-                       if (peek_char == '-') // no header
-                               return;
-                       ReadMimeHeaders ();
-               }
-
-               string ReadAllHeaderLines ()
-               {
-                       string s = String.Empty;
-
-                       while (true) {
-                               var n = ReadAsciiLine ();
-                               if (n.Length == 0)
-                                       return s;
-                               n = n.TrimEnd ();
-                               s += n;
-                               if (n [n.Length - 1] != ';')
-                                       s += '\n';
-                       }
-               }
-
-               void ReadMimeHeaders ()
-               {
-                       foreach (var s in ReadAllHeaderLines ().Split ('\n')) {
-                               if (s.Length == 0)
-                                       continue;
-                               int idx = s.IndexOf (':');
-                               if (idx < 0)
-                                       throw new XmlException (String.Format ("Unexpected header string: {0}", s));
-                               string v = StripBraces (s.Substring (idx + 1).Trim ());
-                               switch (s.Substring (0, idx).ToLower ()) {
-                               case "content-type":
-                                       current_content_type = CreateContentType (v);
-                                       break;
-                               case "content-id":
-                                       current_content_id = v;
-                                       break;
-                               case "content-transfer-encoding":
-                                       current_content_encoding = v;
-                                       break;
-                               }
-                       }
-               }
-
-               string StripBraces (string s)
-               {
-                       // could be foo, <foo>, "foo" and "<foo>".
-                       if (s.Length >= 2 && s [0] == '"' && s [s.Length - 1] == '"')
-                               s = s.Substring (1, s.Length - 2);
-                       if (s.Length >= 2 && s [0] == '<' && s [s.Length - 1] == '>')
-                               s = s.Substring (1, s.Length - 2);
-                       return s;
-               }
-
-               string ReadAsciiLine ()
-               {
-                       if (buffer == null)
-                               buffer = new byte [1024];
-                       int bpos = 0;
-                       int b = peek_char;
-                       bool skipRead = b >= 0;
-                       peek_char = -1;
-                       while (true) {
-                               if (skipRead)
-                                       skipRead = false;
-                               else
-                                       b = stream.ReadByte ();
-                               if (b < 0) {
-                                       if (bpos > 0)
-                                               throw new XmlException ("The stream ends without end of line");
-                                       return null;
-                               }
-                               if (b == '\r') {
-                                       b = stream.ReadByte ();
-                                       if (b < 0) {
-                                               buffer [bpos++] = (byte) '\r';
-                                               break;
-                                       }
-                                       else if (b == '\n')
-                                               break;
-                                       buffer [bpos++] = (byte) '\r';
-                                       skipRead = true;
-                               }
-                               else
-                                       buffer [bpos++] = (byte) b;
-                               if (bpos == buffer.Length) {
-                                       var newbuf = new byte [buffer.Length << 1];
-                                       Array.Copy (buffer, 0, newbuf, 0, buffer.Length);
-                                       buffer = newbuf;
-                               }
-                       }
-                       return Encoding.ASCII.GetString (buffer, 0, bpos);
-               }
-
-               // The rest are just reader delegation.
-
-               public override int AttributeCount {
-                       get { return Reader.AttributeCount; }
-               }
-
-               public override string BaseURI {
-                       get { return Reader.BaseURI; }
-               }
-
-               public override int Depth {
-                       get { return Reader.Depth; }
-               }
-
-               public override bool HasValue {
-                       get { return Reader.HasValue; }
-               }
-
-               public override bool IsEmptyElement {
-                       get { return Reader.IsEmptyElement; }
-               }
-
-               public override string LocalName {
-                       get { return Reader.LocalName; }
-               }
-
-               public override string NamespaceURI {
-                       get { return Reader.NamespaceURI; }
-               }
-
-               public override XmlNameTable NameTable {
-                       get { return Reader.NameTable; }
-               }
-
-               public override XmlNodeType NodeType {
-                       get { return Reader.NodeType; }
-               }
-
-               public override string Prefix {
-                       get { return Reader.Prefix; }
-               }
-
-               public override ReadState ReadState {
-                       get { return Reader.ReadState; }
-               }
-
-               public override string Value {
-                       get { return Reader.Value; }
-               }
-
-               public override bool MoveToElement ()
-               {
-                       return Reader.MoveToElement ();
-               }
-
-               public override string GetAttribute (int index)
-               {
-                       return Reader.GetAttribute (index);
-               }
-
-               public override string GetAttribute (string name)
-               {
-                       return Reader.GetAttribute (name);
-               }
-
-               public override string GetAttribute (string localName, string namespaceURI)
-               {
-                       return Reader.GetAttribute (localName, namespaceURI);
-               }
-
-               public override void MoveToAttribute (int index)
-               {
-                       Reader.MoveToAttribute (index);
-               }
-
-               public override bool MoveToAttribute (string name)
-               {
-                       return Reader.MoveToAttribute (name);
-               }
-
-               public override bool MoveToAttribute (string localName, string namespaceURI)
-               {
-                       return Reader.MoveToAttribute (localName, namespaceURI);
-               }
-
-               public override bool MoveToFirstAttribute ()
-               {
-                       return Reader.MoveToFirstAttribute ();
-               }
-
-               public override bool MoveToNextAttribute ()
-               {
-                       return Reader.MoveToNextAttribute ();
-               }
-
-               public override string LookupNamespace (string prefix)
-               {
-                       return Reader.LookupNamespace (prefix);
-               }
-
-               public override bool ReadAttributeValue ()
-               {
-                       return Reader.ReadAttributeValue ();
-               }
-
-               public override void ResolveEntity ()
-               {
-                       Reader.ResolveEntity ();
-               }
-       }
-
-       class NonInteractiveStateXmlReader : DummyStateXmlReader
-       {
-               public NonInteractiveStateXmlReader (string baseUri, XmlNameTable nameTable, ReadState readState)
-                       : base (baseUri, nameTable, readState)
-               {
-               }
-
-               public override int Depth {
-                       get { return 0; }
-               }
-
-               public override bool HasValue {
-                       get { return false; }
-               }
-
-               public override string Value {
-                       get { return String.Empty; }
-               }
-
-               public override XmlNodeType NodeType {
-                       get { return XmlNodeType.None; }
-               }
-       }
-
-       class MultiPartedXmlReader : DummyStateXmlReader
-       {
-               public MultiPartedXmlReader (XmlReader reader, MimeEncodedStream value)
-                       : base (reader.BaseURI, reader.NameTable, reader.ReadState)
-               {
-                       this.owner = reader;
-                       this.value = value.CreateTextReader ().ReadToEnd ();
-               }
-
-               XmlReader owner;
-               string value;
-
-               public override int Depth {
-                       get { return owner.Depth; }
-               }
-
-               public override bool HasValue {
-                       get { return true; }
-               }
-
-               public override string Value {
-                       get { return value; }
-               }
-
-               public override XmlNodeType NodeType {
-                       get { return XmlNodeType.Text; }
-               }
-       }
-
-       abstract class DummyStateXmlReader : XmlReader
-       {
-               protected DummyStateXmlReader (string baseUri, XmlNameTable nameTable, ReadState readState)
-               {
-                       base_uri = baseUri;
-                       name_table = nameTable;
-                       read_state = readState;
-               }
-
-               string base_uri;
-               XmlNameTable name_table;
-               ReadState read_state;
-
-               public override string BaseURI {
-                       get { return base_uri; }
-               }
-
-               public override bool EOF {
-                       get { return false; }
-               }
-
-               public override void Close ()
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public override bool Read ()
-               {
-                       throw new NotSupportedException ();
-               }
-
-               // The rest are just reader delegation.
-
-               public override int AttributeCount {
-                       get { return 0; }
-               }
-
-               public override bool IsEmptyElement {
-                       get { return false; }
-               }
-
-               public override string LocalName {
-                       get { return String.Empty; }
-               }
-
-               public override string NamespaceURI {
-                       get { return String.Empty; }
-               }
-
-               public override XmlNameTable NameTable {
-                       get { return name_table; }
-               }
-
-               public override string Prefix {
-                       get { return String.Empty; }
-               }
-
-               public override ReadState ReadState {
-                       get { return read_state; }
-               }
-
-               public override bool MoveToElement ()
-               {
-                       return false;
-               }
-
-               public override string GetAttribute (int index)
-               {
-                       return null;
-               }
-
-               public override string GetAttribute (string name)
-               {
-                       return null;
-               }
-
-               public override string GetAttribute (string localName, string namespaceURI)
-               {
-                       return null;
-               }
-
-               public override void MoveToAttribute (int index)
-               {
-                       throw new ArgumentOutOfRangeException ();
-               }
-
-               public override bool MoveToAttribute (string name)
-               {
-                       return false;
-               }
-
-               public override bool MoveToAttribute (string localName, string namespaceURI)
-               {
-                       return false;
-               }
-
-               public override bool MoveToFirstAttribute ()
-               {
-                       return false;
-               }
-
-               public override bool MoveToNextAttribute ()
-               {
-                       return false;
-               }
-
-               public override string LookupNamespace (string prefix)
-               {
-                       return null;
-               }
-
-               public override bool ReadAttributeValue ()
-               {
-                       return false;
-               }
-
-               public override void ResolveEntity ()
-               {
-                       throw new InvalidOperationException ();
-               }
-       }
-
-       class MimeEncodedStream
-       {
-               public MimeEncodedStream (string id, string contentEncoding, string value)
-               {
-                       Id = id;
-                       ContentEncoding = contentEncoding;
-                       EncodedString = value;
-               }
-
-               public string Id { get; set; }
-               public string ContentEncoding { get; set; }
-               public string EncodedString { get; set; }
-
-               public string DecodedBase64String {
-                       get { return Convert.ToBase64String (Encoding.ASCII.GetBytes (EncodedString)); }
-               }
-
-               public TextReader CreateTextReader ()
-               {
-                       switch (ContentEncoding) {
-                       case "7bit":
-                       case "8bit":
-                               return new StringReader (EncodedString);
-                       default:
-                               return new StringReader (DecodedBase64String);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlMtomDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlMtomDictionaryWriter.cs
deleted file mode 100644 (file)
index 0d1a081..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-//
-// XmlMtomDictionaryWriter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2009 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Net.Mime;
-using System.Text;
-
-namespace System.Xml
-{
-       internal class XmlMtomDictionaryWriter : XmlDictionaryWriter
-       {
-               public XmlMtomDictionaryWriter (Stream stream, Encoding encoding, int maxSizeInBytes, string startInfo, string boundary, string startUri, bool writeMessageHeaders, bool ownsStream)
-               {
-                       writer = new StreamWriter (stream, encoding);
-                       max_bytes = maxSizeInBytes;
-                       write_headers = writeMessageHeaders;
-                       owns_stream = ownsStream;
-
-                       var settings = new XmlWriterSettings ();
-                       settings.Encoding = encoding;
-                       settings.OmitXmlDeclaration = true;
-                       settings.ConformanceLevel = ConformanceLevel.Fragment;
-                       settings.NewLineChars = "\r\n";
-                       xml_writer_settings = settings;
-
-                       // FIXME: actually it does not likely use ContentType.ToString() but writes those header items by own.
-                       // (so that it could generate "start" header dynamically)
-                       var c = new ContentType ("multipart/related");
-                       c.Parameters ["type"] = "application/xop+xml";
-                       c.Boundary = boundary;
-                       c.Parameters ["start"] = "<" + startUri + ">";
-                       c.Parameters ["start-info"] = startInfo;
-                       content_type = c;
-               }
-
-               // constructor arguments
-               TextWriter writer;
-               XmlWriterSettings xml_writer_settings;
-               Encoding encoding;
-               int max_bytes;
-               bool write_headers;
-               bool owns_stream;
-               ContentType content_type;
-
-               // state
-               XmlWriter w;
-               int depth;
-               int section_count;
-
-               XmlWriter CreateWriter ()
-               {
-                       return XmlWriter.Create (writer, xml_writer_settings);
-               }
-
-               public override void Close ()
-               {
-                       w.Close ();
-                       if (owns_stream)
-                               writer.Close ();
-               }
-
-               public override void Flush ()
-               {
-                       w.Flush ();
-               }
-
-               public override string LookupPrefix (string namespaceUri)
-               {
-                       return w.LookupPrefix (namespaceUri);
-               }
-
-               public override void WriteBase64 (byte [] bytes, int start, int length)
-               {
-                       CheckState ();
-                       w.WriteBase64 (bytes, start, length);
-               }
-
-               public override void WriteCData (string text)
-               {
-                       CheckState ();
-                       w.WriteCData (text);
-               }
-
-               public override void WriteCharEntity (char c)
-               {
-                       CheckState ();
-                       w.WriteCharEntity (c);
-               }
-
-               public override void WriteChars (char [] buffer, int index, int count)
-               {
-                       CheckState ();
-                       w.WriteChars (buffer, index, count);
-               }
-
-               public override void WriteComment (string comment)
-               {
-                       CheckState ();
-                       w.WriteComment (comment);
-               }
-
-               public override void WriteDocType (string name, string pubid, string sysid, string intSubset)
-               {
-                       throw new NotSupportedException (); // indeed
-               }
-
-               public override void WriteEndAttribute ()
-               {
-                       w.WriteEndAttribute ();
-               }
-
-               public override void WriteEndDocument ()
-               {
-                       // We don't call w.WriteEndElement() because that causes state error
-                       // (which is correct; MTOM writer just does not expect it).
-               }
-
-               public override void WriteEndElement ()
-               {
-                       w.WriteEndElement ();
-                       if (--depth == 0)
-                               WriteEndOfMimeSection ();
-               }
-
-               public override void WriteEntityRef (string name)
-               {
-                       w.WriteEntityRef (name);
-               }
-
-               public override void WriteFullEndElement ()
-               {
-                       w.WriteFullEndElement ();
-                       if (--depth == 0)
-                               WriteEndOfMimeSection ();
-               }
-
-               public override void WriteProcessingInstruction (string name, string data)
-               {
-                       throw new NotSupportedException ();
-               }
-
-               public override void WriteRaw (string raw)
-               {
-                       CheckState ();
-                       w.WriteRaw (raw);
-               }
-
-               public override void WriteRaw (char [] chars, int index, int count)
-               {
-                       CheckState ();
-                       w.WriteRaw (chars, index, count);
-               }
-
-               public override void WriteStartAttribute (string prefix, string localName, string namespaceURI)
-               {
-                       CheckState ();
-                       w.WriteStartAttribute (prefix, localName, namespaceURI);
-               }
-
-               public override void WriteStartDocument ()
-               {
-                       CheckState ();
-                       // We don't call w.WriteStartDocument() because that causes state error
-                       // (which is correct; MTOM writer just does not expect it).
-               }
-
-               public override void WriteStartDocument (bool standalone)
-               {
-                       CheckState ();
-                       // We don't call w.WriteStartDocument() because that causes state error
-                       // (which is correct; MTOM writer just does not expect it).
-               }
-
-               public override void WriteStartElement (string prefix, string localName, string namespaceURI)
-               {
-                       CheckState ();
-
-                       if (depth == 0)
-                               WriteStartOfMimeSection ();
-
-                       w.WriteStartElement (prefix, localName, namespaceURI);
-                       depth++;
-               }
-
-               public override WriteState WriteState {
-                       get { return w.WriteState; }
-               }
-
-               static readonly char [] eol_chars = "\r\n".ToCharArray ();
-
-               public override void WriteString (string text)
-               {
-                       CheckState ();
-
-                       int i1, i2 = 0;
-                       do {
-                               i1 = text.IndexOfAny (eol_chars, i2);
-                               if (i1 >= 0) {
-                                       w.WriteString (text.Substring (i2, i1 - i2));
-                                       if (text [i1] == '\r')
-                                               w.WriteCharEntity ('\r');
-                                       else
-                                               w.WriteRaw ("\r\n");
-                                       i2 = i1 + 1;
-                               } else {
-                                       w.WriteString (text.Substring (i2));
-                                       break;
-                               }
-                       } while (true);
-               }
-
-               public override void WriteSurrogateCharEntity (char low, char high)
-               {
-                       CheckState ();
-                       w.WriteSurrogateCharEntity (low, high);
-               }
-
-               public override void WriteWhitespace (string text)
-               {
-                       CheckState ();
-                       w.WriteWhitespace (text);
-               }
-
-               public override string XmlLang {
-                       get { return w.XmlLang; }
-               }
-
-               public override XmlSpace XmlSpace {
-                       get { return w.XmlSpace; }
-               }
-
-               void CheckState ()
-               {
-                       if (w == null && write_headers)
-                               WriteMimeHeaders ();
-                       
-                       if (w == null || w.WriteState == WriteState.Closed || w.WriteState == WriteState.Error)
-                               w = CreateWriter ();
-               }
-
-               void WriteMimeHeaders ()
-               {
-                       w.Flush ();
-                       writer.Write ("MIME-Version: 1.0\r\n");
-                       writer.Write ("Content-Type: ");
-                       writer.Write (content_type.ToString ());
-                       writer.Write ("\r\n\r\n\r\n");
-               }
-
-               void WriteStartOfMimeSection ()
-               {
-                       section_count++;
-
-                       // I'm not sure what's the expected behavior of this
-                       // strange XmlWriter, but so far - it outputs only one
-                       // section.
-                       if (section_count > 1)
-                               return;
-
-                       writer.Write ("\r\n");
-                       writer.Write ("--");
-                       writer.Write (content_type.Boundary);
-                       writer.Write ("\r\n");
-                       writer.Write ("Content-ID: ");
-                       writer.Write (content_type.Parameters ["start"]);
-                       writer.Write ("\r\n");
-                       writer.Write ("Content-Transfer-Encoding: 8bit\r\n");
-                       writer.Write ("Content-Type: application/xop+xml;charset=");
-                       writer.Write (xml_writer_settings.Encoding.HeaderName);
-                       writer.Write (";type=\"");
-                       writer.Write (content_type.Parameters ["start-info"].Replace ("\"", "\\\""));
-                       writer.Write ("\"\r\n\r\n");
-               }
-
-               void WriteEndOfMimeSection ()
-               {
-                       // I'm not sure what's the expected behavior of this
-                       // strange XmlWriter, but so far - it outputs only one
-                       // section.
-                       if (section_count > 1)
-                               return;
-
-                       w.Flush ();
-                       writer.Write ("\r\n");
-                       writer.Write ("--");
-                       writer.Write (content_type.Boundary);
-                       writer.Write ("--\r\n");
-               }
-       }
-}
-
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryReader.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryReader.cs
deleted file mode 100644 (file)
index 77682e4..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace System.Xml
-{
-       internal class XmlSimpleDictionaryReader :
-               XmlDictionaryReader, IXmlLineInfo, IXmlNamespaceResolver
-       {
-               XmlDictionary dict;
-               XmlReader reader;
-               XmlDictionaryReader as_dict_reader;
-               IXmlLineInfo as_line_info;
-               OnXmlDictionaryReaderClose onClose;
-
-               public XmlSimpleDictionaryReader (XmlReader reader)
-                       : this (reader, null)
-               {
-               }
-
-               public XmlSimpleDictionaryReader (XmlReader reader,
-                       XmlDictionary dictionary)
-                       : this (reader, dictionary, null)
-               {
-               }
-
-               public XmlSimpleDictionaryReader (XmlReader reader,
-                       XmlDictionary dictionary, OnXmlDictionaryReaderClose onClose)
-               {
-                       this.reader = reader;
-                       this.onClose = onClose;
-                       as_line_info = reader as IXmlLineInfo;
-                       as_dict_reader = reader as XmlDictionaryReader;
-
-                       if (dictionary == null)
-                               dictionary = new XmlDictionary ();
-                       dict = dictionary;
-               }
-
-               #region IXmlLineInfo
-               public int LineNumber {
-                       get { return as_line_info != null ? as_line_info.LineNumber : 0; }
-               }
-
-               public int LinePosition {
-                       get { return as_line_info != null ? as_line_info.LinePosition : 0; }
-               }
-
-               public bool HasLineInfo ()
-               {
-                       return as_line_info != null ? as_line_info.HasLineInfo () : false;
-               }
-               #endregion
-
-               #region XmlDictionaryReader
-
-               public override bool CanCanonicalize {
-                       get { return as_dict_reader != null ? as_dict_reader.CanCanonicalize : false; }
-               }
-
-               public override void EndCanonicalization ()
-               {
-                       if (as_dict_reader != null)
-                               as_dict_reader.EndCanonicalization ();
-                       else
-                               throw new NotSupportedException ();
-               }
-
-               // no need to override for GetAttribute(), IndexOfLocalName(),
-               // IsLocalName(), IsNamespaceUri(), IsStartElement()
-
-               public override bool TryGetLocalNameAsDictionaryString (
-                       out XmlDictionaryString localName)
-               {
-                       // FIXME: find out when it returns true.
-                       localName = null;
-                       return false;
-//                     if (!dict.TryLookup (LocalName, out localName))
-//                             return false;
-//                     return true;
-               }
-
-               public override bool TryGetNamespaceUriAsDictionaryString (
-                       out XmlDictionaryString namespaceUri)
-               {
-                       // FIXME: find out when it returns true.
-                       namespaceUri = null;
-                       return false;
-//                     if (!dict.TryLookup (NamespaceURI, out namespaceUri))
-//                             return false;
-//                     return true;
-               }
-               #endregion
-
-               #region IXmlNamespaceResolver
-
-               public IDictionary<string,string> GetNamespacesInScope (
-                       XmlNamespaceScope scope)
-               {
-                       IXmlNamespaceResolver nsr = reader as IXmlNamespaceResolver;
-                       return nsr.GetNamespacesInScope (scope);
-               }
-
-               public string LookupPrefix (string ns)
-               {
-                       IXmlNamespaceResolver nsr = reader as IXmlNamespaceResolver;
-                       return nsr.LookupPrefix (NameTable.Get (ns));
-               }
-
-               #endregion
-
-               #region XmlReader
-
-               public override int AttributeCount {
-                       get { return reader.AttributeCount; }
-               }
-
-               public override string BaseURI {
-                       get { return reader.BaseURI; }
-               }
-
-               public override int Depth {
-                       get { return reader.Depth; }
-               }
-
-               public override XmlNodeType NodeType 
-               {
-                       get { return reader.NodeType; }
-               }
-
-               public override string Name {
-                       get { return reader.Name; }
-               }
-
-               public override string LocalName {
-                       get { return reader.LocalName; }
-               }
-
-               public override string NamespaceURI {
-                       get { return reader.NamespaceURI; }
-               }
-
-               public override string Prefix {
-                       get { return reader.Prefix; }
-               }
-
-               public override bool HasValue {
-                       get { return reader.HasValue; }
-               }
-
-               public override string Value {
-                       get { return reader.Value; }
-               }
-
-               public override bool IsEmptyElement {
-                       get { return reader.IsEmptyElement; }
-               }
-
-               public override bool IsDefault {
-                       get { return reader.IsDefault; }
-               }
-
-               public override char QuoteChar {
-                       get { return reader.QuoteChar; }
-               }
-
-               public override string XmlLang {
-                       get { return reader.XmlLang; }
-               }
-
-               public override XmlSpace XmlSpace {
-                       get { return reader.XmlSpace; }
-               }
-
-               public override string this [int i] {
-                       get { return reader [i]; }
-               }
-
-               public override string this [string name] {
-                       get { return reader [name]; }
-               }
-
-               public override string this [string localName, string namespaceURI] {
-                       get { return reader [localName, namespaceURI]; }
-               }
-
-               public override bool EOF {
-                       get { return reader.EOF; }
-               }
-
-               public override ReadState ReadState {
-                       get { return reader.ReadState; }
-               }
-
-               public override XmlNameTable NameTable {
-                       get { return reader.NameTable; }
-               }
-
-               public override string GetAttribute (string name)
-               {
-                       return reader.GetAttribute (name);
-               }
-
-               public override string GetAttribute (string localName, string namespaceURI)
-               {
-                       return reader.GetAttribute (localName, namespaceURI);
-               }
-
-               public override string GetAttribute (int i)
-               {
-                       return reader.GetAttribute (i);
-               }
-
-               public override bool MoveToAttribute (string name)
-               {
-                       return reader.MoveToAttribute (name);
-               }
-
-               public override bool MoveToAttribute (string localName, string namespaceURI)
-               {
-                       return reader.MoveToAttribute (localName, namespaceURI);
-               }
-
-               public override void MoveToAttribute (int i)
-               {
-                       reader.MoveToAttribute (i);
-               }
-
-               public override bool MoveToFirstAttribute ()
-               {
-                       return reader.MoveToFirstAttribute ();
-               }
-
-               public override bool MoveToNextAttribute ()
-               {
-                       return reader.MoveToNextAttribute ();
-               }
-
-               public override bool MoveToElement ()
-               {
-                       return reader.MoveToElement ();
-               }
-
-               public override void Close ()
-               {
-                       reader.Close ();
-                       if (onClose != null)
-                               onClose (this);
-               }
-
-               public override bool Read ()
-               {
-                       if (!reader.Read ())
-                               return false;
-                       dict.Add (reader.Prefix);
-                       dict.Add (reader.LocalName);
-                       dict.Add (reader.NamespaceURI);
-                       if (reader.MoveToFirstAttribute ()) {
-                               do {
-                                       dict.Add (reader.Prefix);
-                                       dict.Add (reader.LocalName);
-                                       dict.Add (reader.NamespaceURI);
-                                       dict.Add (reader.Value);
-                               } while (reader.MoveToNextAttribute ());
-                               reader.MoveToElement ();
-                       }
-                       return true;
-               }
-
-               public override string ReadString ()
-               {
-                       return reader.ReadString ();
-               }
-
-               public override string ReadInnerXml ()
-               {
-                       return reader.ReadInnerXml ();
-               }
-
-               public override string ReadOuterXml ()
-               {
-                       return reader.ReadOuterXml ();
-               }
-
-               public override string LookupNamespace (string prefix)
-               {
-                       return reader.LookupNamespace (prefix);
-               }
-
-               public override void ResolveEntity ()
-               {
-                       reader.ResolveEntity ();
-               }
-               public override bool ReadAttributeValue ()
-               {
-                       return reader.ReadAttributeValue ();
-               }
-               #endregion
-       }
-}
diff --git a/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs b/mcs/class/System.Runtime.Serialization/System.Xml/XmlSimpleDictionaryWriter.cs
deleted file mode 100644 (file)
index 8f2116f..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-//
-// XmlDictionaryWriter.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Text;
-
-namespace System.Xml
-{
-       internal class XmlSimpleDictionaryWriter : XmlDictionaryWriter
-       {
-               XmlWriter writer;
-
-               // FIXME: find out how soapCompliant argument is used.
-               public XmlSimpleDictionaryWriter (XmlWriter writer)
-               {
-                       this.writer = writer;
-               }
-
-               public override void Close ()
-               {
-                       writer.Close ();
-               }
-
-               public override void Flush ()
-               {
-                       writer.Flush ();
-               }
-
-               public override string LookupPrefix (string ns)
-               {
-                       return writer.LookupPrefix (ns);
-               }
-
-               public override void WriteBase64 (byte [] buffer, int index, int count)
-               {
-                       writer.WriteBase64 (buffer, index, count);
-               }
-
-               public override void WriteBinHex (byte [] buffer, int index, int count)
-               {
-                       writer.WriteBinHex (buffer, index, count);
-               }
-
-               public override void WriteCData (string text)
-               {
-                       writer.WriteCData (text);
-               }
-
-               public override void WriteCharEntity (char ch)
-               {
-                       writer.WriteCharEntity (ch);
-               }
-
-               public override void WriteChars (char [] buffer, int index, int count)
-               {
-                       writer.WriteChars (buffer, index, count);
-               }
-
-               public override void WriteComment (string text)
-               {
-                       writer.WriteComment (text);
-               }
-
-               public override void WriteDocType (string name, string pubid, string sysid, string subset)
-               {
-                       writer.WriteDocType (name, pubid, sysid, subset);
-               }
-
-               public override void WriteEndAttribute ()
-               {
-                       writer.WriteEndAttribute ();
-               }
-
-               public override void WriteEndDocument ()
-               {
-                       writer.WriteEndDocument ();
-               }
-
-               public override void WriteEndElement ()
-               {
-                       Depth--;
-                       NSIndex = 0;
-                       writer.WriteEndElement ();
-               }
-
-               public override void WriteEntityRef (string name)
-               {
-                       writer.WriteEntityRef (name);
-               }
-
-               public override void WriteFullEndElement ()
-               {
-                       writer.WriteFullEndElement ();
-               }
-
-               public override void WriteName (string name)
-               {
-                       writer.WriteName (name);
-               }
-
-               public override void WriteNmToken (string name)
-               {
-                       writer.WriteNmToken (name);
-               }
-
-               public override void WriteNode (XmlReader reader, bool defattr)
-               {
-                       writer.WriteNode (reader, defattr);
-               }
-
-               public override void WriteProcessingInstruction (string name, string text)
-               {
-                       writer.WriteProcessingInstruction (name, text);
-               }
-
-               public override void WriteQualifiedName (string localName, string ns)
-               {
-                       writer.WriteQualifiedName (localName, ns);
-               }
-
-               public override void WriteRaw (string data)
-               {
-                       writer.WriteRaw (data);
-               }
-
-               public override void WriteRaw (char [] buffer, int index, int count)
-               {
-                       writer.WriteRaw (buffer, index, count);
-               }
-
-               public override void WriteStartAttribute (string prefix, string localName, string ns)
-               {
-                       writer.WriteStartAttribute (prefix, localName, ns);
-               }
-
-               public override void WriteStartDocument (bool standalone)
-               {
-                       writer.WriteStartDocument (standalone);
-               }
-
-               public override void WriteStartDocument ()
-               {
-                       writer.WriteStartDocument ();
-               }
-
-               public override void WriteStartElement (string prefix, string localName, string ns)
-               {
-                       Depth++;
-                       NSIndex = 0;
-                       writer.WriteStartElement (prefix, localName, ns);
-               }
-
-               public override void WriteString (string text)
-               {
-                       writer.WriteString (text);
-               }
-
-               public override void WriteSurrogateCharEntity (char lowChar, char highChar)
-               {
-                       writer.WriteSurrogateCharEntity (lowChar, highChar);
-               }
-
-               public override void WriteWhitespace (string ws)
-               {
-                       writer.WriteWhitespace (ws);
-               }
-
-               public override WriteState WriteState {
-                       get {
-                               return writer.WriteState;
-                       }
-               }
-
-               public override string XmlLang {
-                       get {
-                               return writer.XmlLang;
-                       }
-               }
-
-               public override XmlSpace XmlSpace {
-                       get {
-                               return writer.XmlSpace;
-                       }
-               }
-
-       }
-}
index 0fc956d862074bef6efc18df22ce0de563bbe21e..03264c43f51f21f3d7535cad350a672f1393881a 100755 (executable)
@@ -137,9 +137,7 @@ namespace MonoTests.System.Runtime.Serialization
                        MemoryStream sw = new MemoryStream ();
                        ser.WriteObject (sw, 1);
                        string expected = "<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>";
-                       byte[] buf = sw.ToArray ();
-                       // Skip the utf8 bom
-                       Assert.AreEqual (expected, Encoding.UTF8.GetString (buf, 3, buf.Length - 3));
+                       Assert.AreEqual (expected, Encoding.UTF8.GetString (sw.ToArray ()));
                }
 
                [Test]
@@ -1641,7 +1639,7 @@ namespace MonoTests.System.Runtime.Serialization
                                        + "<SecondId>ID-GOES-HERE</SecondId>"
                                        + "</MyData>";
                        var serializer = new DataContractSerializer (typeof (MyData));
-                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (whatItGets)))
+                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (whatItGets.Replace ("ID-GOES-HERE", Guid.NewGuid ().ToString ()))))
                        {
                                var data = serializer.ReadObject (stream);
                        }
index 690ebfe36eaacd57b29ffada790d6a6995c7aadd..9687913986155d8efee563ec507ea14329075e61 100644 (file)
@@ -244,7 +244,7 @@ namespace MonoTests.System.Runtime.Serialization
                        Assert.That (ret, Is.Not.Null, "#2");
                        
                        Assert.That (ret.ArrayRank, Is.EqualTo (0), "#3");
-                       Assert.That (ret.BaseType, Is.EqualTo ("TestWCF.Model.MyCollectionOfdouble"), "#4");
+                       Assert.That (ret.BaseType, Is.EqualTo ("TestWCF.Model1.MyCollectionOfdouble"), "#4");
                        Assert.That (ret.TypeArguments.Count, Is.EqualTo (0), "#5");
                }
 
index d57dbb698d0f77fa0cf3a27c6b932573c684404f..31ca0721bbc91266891823ce72affb817a446d64 100644 (file)
@@ -47,7 +47,6 @@ namespace MonoTests.System.Xml
                {
                        MemoryStream ms = new MemoryStream ();
                        var w = XmlDictionaryWriter.CreateMtomWriter (ms, Encoding.UTF8, 10000, "sTaRt", "myboundary", "urn:foo", false, false);
-                       w.WriteStartDocument ();
                        w.WriteStartElement ("root");
                        w.WriteRaw ("RAW");
                        w.WriteStartElement ("foo");
@@ -79,11 +78,11 @@ Content-ID: <urn:foo>
 Content-Transfer-Encoding: 8bit
 Content-Type: application/xop+xml;charset=utf-8;type=""sTaRt""
 
-<root>RAW<foo>bcdMjxG<arr>true</arr><arr>false</arr><arr>true</arr>AQIDBAU=999&#xD;
-&#xD;
+<root>RAW<foo>bcdMjxG<arr>true</arr><arr>false</arr><arr>true</arr>AQIDBAU=999&#xD;XXX
+&#xD;XXX
 666</foo></root>
 --myboundary--
-<root/><root/><root/>".Replace ("\n", "\r\n");
+<root/><root/><root/>".Replace ("\n", "\r\n").Replace ("XXX\r\n", "\n");
        }
 
        class MyStreamProvider : IStreamProvider
diff --git a/mcs/class/System.Runtime.Serialization/binary-writer-method-gen.cs b/mcs/class/System.Runtime.Serialization/binary-writer-method-gen.cs
deleted file mode 100644 (file)
index df3e5d9..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-// mono binary-writer-method-gen.exe > System.Xml/XmlBinaryDictionaryWriterAutoGen.cs
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using Microsoft.CSharp;
-
-public class Generator
-{
-       public static void Main ()
-       {
-               Console.Out.NewLine = "\n";
-               Type [] types = new Type [] {
-                       typeof (bool), typeof (DateTime), typeof (decimal), typeof (double),
-                       typeof (Guid), typeof (short), typeof (int), typeof (long), typeof (float), typeof (TimeSpan) };
-
-               Dictionary<Type,byte> table = new Dictionary<Type,byte> ();
-               // LAMESPEC: [MC-NBFX] section 2.3.3 dedscribes wrong RecordTypes.
-               table.Add (typeof (bool), 0xB5);
-               table.Add (typeof (short), 0x8B);
-               table.Add (typeof (int), 0x8D);
-               table.Add (typeof (long), 0x8F);
-               table.Add (typeof (float), 0x91);
-               table.Add (typeof (double), 0x93);
-               table.Add (typeof (decimal), 0x95);
-               table.Add (typeof (DateTime), 0x97);
-               table.Add (typeof (TimeSpan), 0xAF);
-               table.Add (typeof (Guid), 0xB1);
-
-               Console.WriteLine (@"
-using System;
-using BF = System.Xml.XmlBinaryFormat;
-
-namespace System.Xml
-{
-       internal partial class XmlBinaryDictionaryWriter : XmlDictionaryWriter
-       {
-               void CheckWriteArrayArguments (Array array, int offset, int length)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException (""array"");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException (""offset is negative"");
-                       if (offset > array.Length)
-                               throw new ArgumentOutOfRangeException (""offset exceeds the length of the destination array"");
-                       if (length < 0)
-                               throw new ArgumentOutOfRangeException (""length is negative"");
-                       if (length > array.Length - offset)
-                               throw new ArgumentOutOfRangeException (""length + offset exceeds the length of the destination array"");
-               }
-
-               void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException (""localName"");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException (""namespaceUri"");
-               }
-");
-
-               foreach (Type type in types) {
-                       Console.WriteLine (@"
-
-               public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, {0} [] array, int offset, int length)
-               {{
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }}
-
-               public override void WriteArray (string prefix, string localName, string namespaceUri, {0} [] array, int offset, int length)
-               {{
-                       CheckWriteArrayArguments (array, offset, length);
-                       writer.Write (BF.Array);
-                       WriteStartElement (prefix, localName, namespaceUri);
-                       WriteEndElement ();
-                       WriteArrayRemaining (array, offset, length);
-               }}
-
-               void WriteArrayRemaining ({0} [] array, int offset, int length)
-               {{
-                       writer.Write ((byte) 0x{2:X02}); // ident
-                       writer.WriteFlexibleInt (length);
-                       for (int i = offset; i < offset + length; i++)
-                               WriteValueContent (array [i]);
-               }}", ToCSharp (type), type.Name, table [type]);
-
-               // <note>
-               // WriteArrayRemaining() is generated, but are modified and moved into 
-               // XmlBinaryDictionaryWriter. (I keep it open here so that we
-               // make sure to remove this before compiling. Remove this to get
-               // it working fine).
-               // </note>
-
-
-               }
-               Console.WriteLine (@"
-       }
-}");
-       }
-
-       static CodeDomProvider cs = new CSharpCodeProvider ();
-
-       static string ToCSharp (Type type)
-       {
-               string r = cs.GetTypeOutput (new CodeTypeReference (type));
-               return r != type.FullName ? r : type.Name;
-       }
-}
-
index 3946206a0bf0d9fcce0ceb38e65f0eff62039ec5..c0c73b07ad060fd22023aa3448912020fa0071df 100644 (file)
@@ -1,63 +1,5 @@
-Assembly/AssemblyInfo.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializerSettings.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JavaScriptReader.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
-../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/CollectionDataContractAttribute.cs
-../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/ContractNamespaceAttribute.cs
-../../../external/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractAttribute.cs
-System.Runtime.Serialization/DataContractResolver.cs
-System.Runtime.Serialization/DataContractSerializer.cs
-System.Runtime.Serialization/DataContractSerializerSettings.cs
-System.Runtime.Serialization/DataMemberAttribute.cs
-System.Runtime.Serialization/DateTimeFormat.cs
-System.Runtime.Serialization/EmitTypeInformation.cs
-System.Runtime.Serialization/EnumMemberAttribute.cs
-System.Runtime.Serialization/ExportOptions.cs
-System.Runtime.Serialization/ExtensionDataObject.cs
-System.Runtime.Serialization/IDataContractSurrogate.cs
-System.Runtime.Serialization/IExtensibleDataObject.cs
-System.Runtime.Serialization/IgnoreDataMemberAttribute.cs
-System.Runtime.Serialization/InvalidDataContractException.cs
-System.Runtime.Serialization/KnownTypeAttribute.cs
-System.Runtime.Serialization/KnownTypeCollection.cs
-System.Runtime.Serialization/NetDataContractSerializer.cs
-System.Runtime.Serialization/SerializationMap.cs
-System.Runtime.Serialization/XmlFormatterDeserializer.cs
-System.Runtime.Serialization/XmlFormatterSerializer.cs
-System.Runtime.Serialization/XmlObjectSerializer.cs
-System.Xml/IStreamProvider.cs
-System.Xml/IXmlBinaryReaderInitializer.cs
-System.Xml/IXmlBinaryWriterInitializer.cs
-System.Xml/IXmlDictionary.cs
-System.Xml/IXmlMtomReaderInitializer.cs
-System.Xml/IXmlMtomWriterInitializer.cs
-System.Xml/IXmlUTF8ReaderInitializer.cs
-System.Xml/IXmlUTF8WriterInitializer.cs
-System.Xml/OnXmlDictionaryReaderClose.cs
-System.Xml/UniqueId.cs
-System.Xml/XmlBinaryDictionaryReader.cs
-System.Xml/XmlBinaryDictionaryWriter.cs
-System.Xml/XmlBinaryDictionaryWriterAutoGen.cs
-System.Xml/XmlBinaryFormat.cs
-System.Xml/XmlBinaryReaderSession.cs
-System.Xml/XmlBinaryWriterSession.cs
-System.Xml/XmlC14NWriter.cs
-System.Xml/XmlCanonicalWriter.cs
-System.Xml/XmlDictionary.cs
-System.Xml/XmlDictionaryReader.cs
-System.Xml/XmlDictionaryReaderAutoGen.cs
-System.Xml/XmlDictionaryReaderQuotas.cs
-System.Xml/XmlDictionaryString.cs
-System.Xml/XmlDictionaryWriter.cs
-System.Xml/XmlDictionaryWriterAutoGen.cs
-System.Xml/XmlSimpleDictionaryReader.cs
-System.Xml/XmlSimpleDictionaryWriter.cs
-System.Xml/OnXmlDictionaryReaderClose.cs
+#include System.Runtime.Serialization.dll.sources
+#include ReferenceSource.common.sources
+
+ReferenceSources/SchemaExporter_mobile.cs
+ReferenceSources/SimplifiedCodeTypeReference.cs
diff --git a/mcs/class/System.Runtime.Serialization/net_4_0_System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/net_4_0_System.Runtime.Serialization.dll.sources
deleted file mode 100644 (file)
index 1a04edc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include System.Runtime.Serialization.dll.sources
-
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReader.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationWriter.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonWriter.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
index be9e8242268f4e377083e0fac77b3e4da22d1ccc..a26b31febb036df6edf76204afba107eee1426f4 100644 (file)
@@ -1,5 +1,3 @@
-#include net_4_0_System.Runtime.Serialization.dll.sources
-System.Runtime.Serialization/DateTimeFormat.cs
-System.Runtime.Serialization/EmitTypeInformation.cs
-../System.ServiceModel.Web/System.Runtime.Serialization.Json/DataContractJsonSerializerSettings.cs
-System.Runtime.Serialization/DataContractSerializerSettings.cs
+#include System.Runtime.Serialization.dll.sources
+#include ReferenceSource.common.sources
+#include ReferenceSource.desktop.sources
diff --git a/mcs/class/System.Runtime.Serialization/reader-method-gen.cs b/mcs/class/System.Runtime.Serialization/reader-method-gen.cs
deleted file mode 100644 (file)
index e360b21..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-// mono reader-method-gen.exe > System.Xml/XmlDictionaryReaderAutoGen.cs
-using System;
-using System.Globalization;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Reflection;
-using System.Xml;
-using Microsoft.CSharp;
-
-public class Generator
-{
-       public static void Main ()
-       {
-               Console.Out.NewLine = "\n";
-               Type [] types = new Type [] {
-                       typeof (bool), typeof (DateTime), typeof (decimal), typeof (double),
-                       typeof (Guid), typeof (short), typeof (int), typeof (long), typeof (float), typeof (TimeSpan) };
-
-               Console.WriteLine (@"
-#pragma warning disable 612
-using System;
-using System.Collections.Generic;
-
-namespace System.Xml
-{
-       public abstract partial class XmlDictionaryReader : XmlReader
-       {
-               static readonly char [] wsChars = new char [] {' ', '\t', '\n', '\r'};
-
-               void CheckReadArrayArguments (Array array, int offset, int length)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException (""array"");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException (""offset is negative"");
-                       if (offset > array.Length)
-                               throw new ArgumentOutOfRangeException (""offset exceeds the length of the destination array"");
-                       if (length < 0)
-                               throw new ArgumentOutOfRangeException (""length is negative"");
-                       if (length > array.Length - offset)
-                               throw new ArgumentOutOfRangeException (""length + offset exceeds the length of the destination array"");
-               }
-
-               void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException (""localName"");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException (""namespaceUri"");
-               }
-");
-
-               foreach (Type type in types) {
-                       Console.WriteLine (@"
-               public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, {0} [] array, int offset, int length)
-               {{
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
-               }}
-
-               public virtual int ReadArray (string localName, string namespaceUri, {0} [] array, int offset, int length)
-               {{
-                       CheckReadArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {{
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       return i;
-                               ReadStartElement (localName, namespaceUri);
-                               array [offset + i] = XmlConvert.To{1} (ReadContentAsString ());
-                               ReadEndElement ();
-                       }}
-                       return length;
-               }}
-
-               public virtual {0} [] Read{1}Array (string localName, string namespaceUri)
-               {{
-                       List<{0}> list = new List<{0}> ();
-                       while (true) {{
-                               MoveToContent ();
-                               if (NodeType != XmlNodeType.Element)
-                                       break;
-                               ReadStartElement (localName, namespaceUri);
-                               list.Add (XmlConvert.To{1} (ReadContentAsString ()));
-                               ReadEndElement ();
-                               if (list.Count == Quotas.MaxArrayLength)
-                                       // FIXME: check if raises an error or not
-                                       break;
-                       }}
-                       return list.ToArray ();
-               }}
-
-               public virtual {0} [] Read{1}Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {{
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       return Read{1}Array (localName.Value, namespaceUri.Value);
-               }}", ToCSharp (type), type.Name);
-
-               }
-
-               Type xr = typeof (XmlReader);
-               string name = "ReadElementContentAs";
-               foreach (MethodInfo mi in xr.GetMethods ()) {
-                       if (!mi.Name.StartsWith (name))
-                               continue;
-                       ParameterInfo [] pl = mi.GetParameters ();
-                       if (pl.Length != 2 || pl [0].ParameterType != typeof (string))
-                               continue;
-                       if (mi.Name.EndsWith ("AsObject"))
-                               continue; // special case to filter out.
-                       if (mi.Name.EndsWith ("AsString"))
-                               continue; // special case to filter out.
-
-                       bool isOverride = xr.GetMethod (mi.Name, Type.EmptyTypes) != null;
-                       Console.WriteLine (@"
-               public {3}{0} {1} ()
-               {{
-                       ReadStartElement (LocalName, NamespaceURI);
-                       {0} ret = {2} ();
-                       ReadEndElement ();
-                       return ret;
-               }}",
-                               ToCSharp (mi.ReturnType),
-                               mi.Name,
-                               mi.Name.Replace ("Element", String.Empty),
-                               isOverride ? "override " : null);
-               }
-
-               Console.WriteLine (@"
-       }
-}");
-       }
-
-       static CodeDomProvider cs = new CSharpCodeProvider ();
-
-       static string ToCSharp (Type type)
-       {
-               string r = cs.GetTypeOutput (new CodeTypeReference (type));
-               return r != type.FullName ? r : type.Name;
-       }
-
-       static string ToOldName (Type type)
-       {
-               switch (type.Name) {
-               case "Single":
-                       return "Float";
-               case "Int32":
-                       return "Int";
-               case "Int64":
-                       return "Long";
-               case "Int16":
-                       return "Short";
-               default:
-                       return type.Name;
-               }
-       }
-}
-
diff --git a/mcs/class/System.Runtime.Serialization/resources/mstypes.schema b/mcs/class/System.Runtime.Serialization/resources/mstypes.schema
deleted file mode 100644 (file)
index d5677f6..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-       <xs:element name="anyType" nillable="true" type="xs:anyType" />
-       <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
-       <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
-       <xs:element name="boolean" nillable="true" type="xs:boolean" />
-       <xs:element name="byte" nillable="true" type="xs:byte" />
-       <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
-       <xs:element name="decimal" nillable="true" type="xs:decimal" />
-       <xs:element name="double" nillable="true" type="xs:double" />
-       <xs:element name="float" nillable="true" type="xs:float" />
-       <xs:element name="int" nillable="true" type="xs:int" />
-       <xs:element name="long" nillable="true" type="xs:long" />
-       <xs:element name="QName" nillable="true" type="xs:QName" />
-       <xs:element name="short" nillable="true" type="xs:short" />
-       <xs:element name="string" nillable="true" type="xs:string" />
-       <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
-       <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
-       <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
-       <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
-       <xs:element name="char" nillable="true" type="tns:char" />
-       <xs:simpleType name="char">
-               <xs:restriction base="xs:int" />
-       </xs:simpleType>
-       <xs:element name="duration" nillable="true" type="tns:duration" />
-       <xs:simpleType name="duration">
-               <xs:restriction base="xs:duration">
-                       <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
-                       <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
-                       <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
-               </xs:restriction>
-       </xs:simpleType>
-       <xs:element name="guid" nillable="true" type="tns:guid" />
-       <xs:simpleType name="guid">
-               <xs:restriction base="xs:string">
-                       <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
-               </xs:restriction>
-       </xs:simpleType>
-       <xs:attribute name="FactoryType" type="xs:QName" />
-       <xs:attribute name="Id" type="xs:ID" />
-       <xs:attribute name="Ref" type="xs:IDREF" />
-</xs:schema>
diff --git a/mcs/class/System.Runtime.Serialization/writer-method-gen.cs b/mcs/class/System.Runtime.Serialization/writer-method-gen.cs
deleted file mode 100644 (file)
index ed7518f..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-// mono writer-method-gen.exe > System.Xml/XmlDictionaryWriterAutoGen.cs
-using System;
-using System.Globalization;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using Microsoft.CSharp;
-
-public class Generator
-{
-       public static void Main ()
-       {
-               Console.Out.NewLine = "\n";
-               Type [] types = new Type [] {
-                       typeof (bool), typeof (DateTime), typeof (decimal), typeof (double),
-                       typeof (Guid), typeof (short), typeof (int), typeof (long), typeof (float), typeof (TimeSpan) };
-
-               Console.WriteLine (@"
-using System;
-
-namespace System.Xml
-{
-       public abstract partial class XmlDictionaryWriter : XmlWriter
-       {
-               void CheckWriteArrayArguments (Array array, int offset, int length)
-               {
-                       if (array == null)
-                               throw new ArgumentNullException (""array"");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException (""offset is negative"");
-                       if (offset > array.Length)
-                               throw new ArgumentOutOfRangeException (""offset exceeds the length of the destination array"");
-                       if (length < 0)
-                               throw new ArgumentOutOfRangeException (""length is negative"");
-                       if (length > array.Length - offset)
-                               throw new ArgumentOutOfRangeException (""length + offset exceeds the length of the destination array"");
-               }
-
-               void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
-               {
-                       if (localName == null)
-                               throw new ArgumentNullException (""localName"");
-                       if (namespaceUri == null)
-                               throw new ArgumentNullException (""namespaceUri"");
-               }
-");
-
-               foreach (Type type in types) {
-                       Console.WriteLine (@"
-               public virtual void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, {0} [] array, int offset, int length)
-               {{
-                       CheckDictionaryStringArgs (localName, namespaceUri);
-                       WriteArray (prefix, localName.Value, namespaceUri.Value, array, offset, length);
-               }}
-
-               public virtual void WriteArray (string prefix, string localName, string namespaceUri, {0} [] array, int offset, int length)
-               {{
-                       CheckWriteArrayArguments (array, offset, length);
-                       for (int i = 0; i < length; i++) {{
-                               WriteStartElement (prefix, localName, namespaceUri);
-                               WriteValue (array [offset + i]);
-                               WriteEndElement ();
-                       }}
-
-               }}", ToCSharp (type), type.Name);
-
-               }
-               Console.WriteLine (@"
-       }
-}");
-       }
-
-       static CodeDomProvider cs = new CSharpCodeProvider ();
-
-       static string ToCSharp (Type type)
-       {
-               string r = cs.GetTypeOutput (new CodeTypeReference (type));
-               return r != type.FullName ? r : type.Name;
-       }
-}
-
index 3a40bb20ec96f0275abd84725b371f4876db7b2f..8a59e57f34149998efcb05a3a7fc41ee232e7905 100644 (file)
@@ -79,7 +79,7 @@ namespace MonoTests.System.ServiceModel.Discovery
 
                [Test]
                // looks like EndpointAddress is *ignored*
-               [Category ("NotOnMac")]
+               [Category ("NotWorking")]
                public void AnnonceOnlineOfflineAddressSchemeMismatch ()
                {
                        var ac = new AnnouncementClient (new UdpAnnouncementEndpoint () { Address = new EndpointAddress ("http://localhost:37564")});
index 649dd19170cb6eda06b4ea1326355222d7d28e02..80b1075ba774d6f04c853e2082f415cc14e0a7e7 100644 (file)
@@ -49,6 +49,7 @@ using System.Runtime.InteropServices;
 [assembly: SecurityCritical (SecurityCriticalScope.Explicit)]
 #endif
 [assembly: InternalsVisibleTo ("SMDiagnostics, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull)]
+[assembly: InternalsVisibleTo ("System.Runtime.DurableInstancing, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
 [assembly: InternalsVisibleTo ("System.Runtime.Serialization, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
 [assembly: InternalsVisibleTo ("System.IdentityModel, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
 [assembly: InternalsVisibleTo ("System.IdentityModel.Selectors, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull2)]
index 80683a02fb0fc1e6d1024bf3329a7daeffbc0383..24b5d2fc2e9b93f44c0ac70a9941155b47d5602d 100644 (file)
@@ -13,12 +13,6 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES = 
 
-VALID_PROFILE := $(filter net_4_5 monotouch monodroid xammac, $(PROFILE))
-ifndef VALID_PROFILE
-LIBRARY_NAME = dummy-System.ServiceModel.Internals.dll
-NO_INSTALL = yes
-NO_SIGN_ASSEMBLY = yes
 NO_TEST = yes
-endif
 
 include ../../build/library.make
index 380b054468a5dcfc7f6ec2811ab4457ce43cf9a8..b438b10968481216020eb087dce8d5b0e6b6a0f6 100644 (file)
@@ -178,12 +178,12 @@ namespace System.ServiceModel.Channels
                                using (XmlWriter w = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (new StreamWriter (stream, source.WriteEncoding))))
                                        message.WriteMessage (w);
 #else
-                               using (XmlWriter w = XmlDictionaryWriter.CreateTextWriter (stream, source.WriteEncoding))
+                               using (XmlWriter w = XmlDictionaryWriter.CreateTextWriter (stream, source.WriteEncoding, false))
                                        message.WriteMessage (w);
 #endif
                                break;
                        case WebContentFormat.Json:
-                               using (XmlWriter w = JsonReaderWriterFactory.CreateJsonWriter (stream, source.WriteEncoding))
+                               using (XmlWriter w = JsonReaderWriterFactory.CreateJsonWriter (stream, source.WriteEncoding, false))
                                        message.WriteMessage (w);
                                break;
                        case WebContentFormat.Raw:
index c9a78ea3420d19f36f5ac6a3db101f796fbb70c3..00e44579760024f920006cb20a04bcc9355d57d3 100644 (file)
@@ -80,7 +80,7 @@ namespace System.ServiceModel.Syndication
                        Add (new SyndicationElementExtension (xmlReader));
                }
 
-               new void Add (SyndicationElementExtension item)
+               internal new void Add (SyndicationElementExtension item)
                {
                        base.Add (item);
                }
index bc268c4c669fc2c7e28eccf0d42f4853d34badb6..b380fd834ad074115d7a09271b23ccbb492db52c 100644 (file)
@@ -95,7 +95,7 @@ namespace System.ServiceModel.Syndication
                                if (!(r is XmlDictionaryReader))
                                        r = XmlDictionaryReader.CreateDictionaryReader (r);
                                var ms = new MemoryStream ();
-                               var xw = XmlDictionaryWriter.CreateBinaryWriter (ms);
+                               var xw = XmlDictionaryWriter.CreateBinaryWriter (ms, null, null, false);
                                xw.WriteStartElement ("content", Namespaces.Atom10);
                                xw.WriteAttributeString ("type", "text/xml");
                                while (!r.EOF)
index 8a11d70baf12597633b386afe2b730be9546d3ed..21eef3451a0525b3894e0f86a7b46ec9adf1c068 100644 (file)
@@ -1083,7 +1083,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (SerializationException))]
-               [Category ("NotDotNet")] // 0.0 is an invalid Colors value.
+               [Ignore ("NotDotNet")] // 0.0 is an invalid Colors value.
                public void DeserializeEnumInvalid3 ()
                {
                        //"0.0" instead of "0"
@@ -1104,7 +1104,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (SerializationException))]
-               [Category ("NotDotNet")] // 4 is an invalid Colors value.
+               [Ignore ("NotDotNet")] // 4 is an invalid Colors value.
                [Category ("NotWorking")]
                public void DeserializeEnumWithDCInvalid ()
                {
@@ -1360,8 +1360,8 @@ namespace MonoTests.System.Runtime.Serialization.Json
                        var ms = new MemoryStream ();
                        DataContractJsonSerializer serializer = new DataContractJsonSerializer (typeof (Query));
                        Query query = new Query () {
-                               StartDate = new DateTime (2010, 3, 4, 5, 6, 7),
-                               EndDate = new DateTime (2010, 4, 5, 6, 7, 8)
+                               StartDate = DateTime.SpecifyKind (new DateTime (2010, 3, 4, 5, 6, 7), DateTimeKind.Utc),
+                               EndDate = DateTime.SpecifyKind (new DateTime (2010, 4, 5, 6, 7, 8), DateTimeKind.Utc)
                                };
                        serializer.WriteObject (ms, query);
                        Assert.AreEqual ("{\"StartDate\":\"\\/Date(1267679167000)\\/\",\"EndDate\":\"\\/Date(1270447628000)\\/\"}", Encoding.UTF8.GetString (ms.ToArray ()), "#1");
@@ -1386,14 +1386,14 @@ namespace MonoTests.System.Runtime.Serialization.Json
                [Test]
                public void BugXamarin163 ()
                {
-                       string json = @"{""should_have_value"":""\/Date(1277355600000-0500)\/""}";
+                       string json = @"{""should_have_value"":""\/Date(1277355600000)\/""}";
 
                        byte[] bytes = global::System.Text.Encoding.UTF8.GetBytes(json);
                        Stream inputStream = new MemoryStream(bytes);
                        
                        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DateTest));
                        DateTest t = serializer.ReadObject(inputStream) as DateTest;
-                       Assert.AreEqual (634129344000000000, t.ShouldHaveValue.Value.Ticks, "#1");
+                       Assert.AreEqual (634129524000000000, t.ShouldHaveValue.Value.Ticks, "#1");
                }
 
                [Test]
@@ -2069,6 +2069,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
                void Init ()
                {
                        C = true;
+                       ServerTimeUTC = DateTime.SpecifyKind (DateTime.MinValue, DateTimeKind.Utc);
                }
 
                [OnDeserializing]
index c19cedaab1e2f2116df80fe25d9b3fd94b875bc8..c95c3b62352418dc98e81ac95c74f6155a0d514e 100644 (file)
@@ -509,7 +509,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
                // Read() valid and invalid contents
 
                [Test]
-               [ExpectedException (typeof (XmlException))]
+               [Ignore ("It should throw XmlException for parser error, but .NET fails to report that")]
                public void ReadTwoTopLevelContents ()
                {
                        ReadToEnd (CreateReader ("{}{}"));
@@ -537,7 +537,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
                }
 
                [Test]
-               [ExpectedException (typeof (XmlException))]
+               [Ignore ("It should throw XmlException for parser error, but .NET fails to report that")]
                public void ReadExtraCloseCurly2 ()
                {
                        ReadToEnd (CreateReader ("{}}"));
@@ -566,7 +566,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // hmm, why does it pass?
+               [Ignore ("NotDotNet")] // hmm, why does it pass?
                public void ReadExtraCloseBrace2 ()
                {
                        ReadToEnd (CreateReader ("[]]"));
@@ -655,7 +655,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidNumber3 ()
                {
                        ReadToEnd (CreateReader ("01"));
@@ -670,7 +670,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidNumber5 ()
                {
                        ReadToEnd (CreateReader ("10."));
@@ -685,7 +685,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidNumber8 ()
                {
                        ReadToEnd (CreateReader ("-e5"));
@@ -693,7 +693,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidNumber9 ()
                {
                        ReadToEnd (CreateReader ("-e5.5"));
@@ -714,7 +714,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidObjectContent2 ()
                {
                        ReadToEnd (CreateReader ("{\"A\": 123 456}"));
@@ -729,7 +729,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidObjectContent4 ()
                {
                        ReadToEnd (CreateReader ("{\"A\":123, \"B\":456,}"));
@@ -744,7 +744,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidArrayContent2 ()
                {
                        ReadToEnd (CreateReader ("[123 456]"));
@@ -759,7 +759,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
 
                [Test]
                [ExpectedException (typeof (XmlException))]
-               [Category ("NotDotNet")] // likely .NET bug
+               [Ignore ("NotDotNet")] // likely .NET bug
                public void ReadInvalidArrayContent4 ()
                {
                        ReadToEnd (CreateReader ("[123,456,]"));
@@ -876,7 +876,7 @@ namespace MonoTests.System.Runtime.Serialization.Json
                                DataContractJsonSerializer jsonSerializer = new
                                        DataContractJsonSerializer(typeof(IEnumerable<string>));
                                var result = jsonSerializer.ReadObject(stream);
-                               Assert.AreEqual (typeof (List<string>), result.GetType ());
+                               Assert.AreEqual (typeof (string []), result.GetType ());
                        }
                }
        }
index 4ea004a34e86c7b60d01da5951b7069d8ff636d5..b6e42b90bb0dafaee233cf63ea37187a3bcd2a46 100644 (file)
@@ -28,6 +28,7 @@
 using System;
 using System.IO;
 using System.Text;
+using System.Runtime.Serialization;
 using System.Runtime.Serialization.Json;
 using System.Xml;
 using NUnit.Framework;
@@ -51,6 +52,39 @@ namespace MonoTests.System.Runtime.Serialization.Json
                        w = JsonReaderWriterFactory.CreateJsonWriter (ms);
                }
 
+               /*
+               [Test]
+               public void Dummy_BitFlagsGenerator ()
+               {
+                       var b = new BitFlagsGenerator (2);
+                       Assert.IsFalse (b.Load (0), "#a1");
+                       b.Store (0, false);
+                       Assert.IsFalse (b.Load (0), "#a2");
+                       b.Store (0, true);
+                       Assert.IsTrue (b.Load (0), "#a3");
+                       Assert.IsFalse (b.Load (1), "#a4");
+                       b.Store (0, false);
+                       Assert.IsFalse (b.Load (0), "#a5");
+                       Assert.IsFalse (b.Load (1), "#a6");
+
+                       Assert.IsFalse (b.Load (1), "#b1");
+                       b.Store (1, false);
+                       Assert.IsFalse (b.Load (1), "#b2");
+                       b.Store (1, true);
+                       Assert.IsTrue (b.Load (1), "#b3");
+                       b.Store (1, false);
+                       Assert.IsFalse (b.Load (1), "#b4");
+
+                       var bytes = new byte [2];
+                       Assert.IsFalse (BitFlagsGenerator.IsBitSet (bytes, 0), "#c1");
+                       BitFlagsGenerator.SetBit (bytes, 0);
+                       Assert.IsTrue (BitFlagsGenerator.IsBitSet (bytes, 0), "#c2");
+                       Assert.IsFalse (BitFlagsGenerator.IsBitSet (bytes, 1), "#c3");
+                       BitFlagsGenerator.SetBit (bytes, 0);
+                       Assert.IsTrue (BitFlagsGenerator.IsBitSet (bytes, 0), "#c4");
+               }
+               */
+
                [Test]
                [ExpectedException (typeof (ArgumentNullException))]
                public void ConstructorNullStream ()
index f3b3bc0933df511651dba3baca09ac1ab5f3821f..0140f3c1b5856f231c99771f92b7e29602f8cc33 100644 (file)
@@ -1,3 +1,6 @@
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
 Assembly/AssemblyInfo.cs
 Assembly/TypeForwarders.cs
 System.ServiceModel.Channels/WebBodyFormatMessageProperty.cs
index ab76a512211bf8114ce564a3ad2d958743a6a9ec..fc379b2e588c954c49948dd5a3c7285d66a6a69f 100644 (file)
@@ -120,7 +120,7 @@ namespace System.ServiceModel.Channels
                {
                        VerifyMessageVersion (message);
 
-                       using (var xw = XmlDictionaryWriter.CreateBinaryWriter (stream, Constants.SoapDictionary, session ? CurrentWriterSession : null))
+                       using (var xw = XmlDictionaryWriter.CreateBinaryWriter (stream, Constants.SoapDictionary, session ? CurrentWriterSession : null, false))
                                message.WriteMessage (xw);
                }
 
index ec14a780bb07007b121c0f48379eca8420092253..f67ce5dd8ad5a357f0d1408aec19137c4e16ac62 100644 (file)
@@ -258,9 +258,16 @@ namespace System.ServiceModel.Channels
                                WriteBodyContents (body);
                        }
 
+                       var nt = new NameTable ();
+                       var nsmgr = new XmlNamespaceManager (nt);
+                       nsmgr.AddNamespace ("s", Version.Envelope.Namespace);
+                       nsmgr.AddNamespace ("a", Version.Addressing.Namespace);
+                       var pc = new XmlParserContext (nt, nsmgr, null, XmlSpace.None);
+                       
                        var rs = new XmlReaderSettings ();
                        rs.ConformanceLevel = ConformanceLevel.Auto;
-                       return XmlDictionaryReader.CreateDictionaryReader (XmlReader.Create (new StringReader (sw.ToString ()), rs));
+                       
+                       return XmlDictionaryReader.CreateDictionaryReader (XmlReader.Create (new StringReader (sw.ToString ()), rs, pc));
                }
 
                protected abstract void OnWriteBodyContents (
index dccf9bedfba17297d994ab083bd32a61ce5b8d21..130f13fbebe8a4faf15b9706e1d98796fb3ec03c 100644 (file)
@@ -99,17 +99,6 @@ namespace System.ServiceModel.Description
 
                #region internals required for moonlight compatibility
 
-#if NET_2_1  // it uses S.R.Serialization internals which is InternalVisible to this assembly only in 2.1. So, DON'T use this member in full 2.0 profile.
-               XmlName msg_name;
-               internal XmlName MessageName {
-                       get {
-                               if (msg_name == null)
-                                       msg_name = new XmlName (KnownTypeCollection.GetStaticQName (MessageType).Name);
-                               return msg_name;
-                       }
-               }
-#endif
-
                internal bool IsTypedMessage {
                        get { return MessageType == null; }
                }
index eaaa7b4eb2731dcfca00578a2d9e0a0c2ebfeebf..be5e051ff47524fa6ac28485f5baaa1836fa7e1a 100644 (file)
@@ -96,8 +96,9 @@ namespace System.ServiceModel.Description
                                        MetadataSection.CreateFromServiceDescription (sd));
 
                        foreach (XmlSchema xs in GeneratedXmlSchemas.Schemas ())
-                               metadata.MetadataSections.Add (
-                                       MetadataSection.CreateFromSchema (xs));
+                               if (xs.TargetNamespace != XmlSchema.Namespace)
+                                       metadata.MetadataSections.Add (
+                                               MetadataSection.CreateFromSchema (xs));
                                
                        return metadata;
                }
@@ -459,7 +460,6 @@ namespace System.ServiceModel.Description
                        get {
                                if (xsd_exporter == null)
                                        xsd_exporter = new XsdDataContractExporter ();
-
                                return xsd_exporter;
                        }
                }
@@ -651,6 +651,9 @@ namespace System.ServiceModel.Description
                                        return;
                        }
 
+                       if (ns == string.Empty)
+                               return;
+
                        XmlSchemaImport imp = new XmlSchemaImport ();
                        imp.Namespace = ns;
                        schema.Includes.Add (imp);
index dc036a32be80f1bed036c92aeb7388b815a9bb98..4b130a9110a7bc42891c2168ba1144dc257d4f61 100644 (file)
@@ -52,7 +52,6 @@ using System.Security.Permissions;
 [assembly: NeutralResourcesLanguage ("en-US")]
 
 [assembly: ComVisible (false)]
-[assembly: ComCompatibleVersion (1, 0, 3300, 0)]
 [assembly: AllowPartiallyTrustedCallers]
 
        [assembly: CLSCompliant (true)]
index dfc16133567cb0eea19df63708a3870a9ef19e17..891b1ef66ce35e2bd5bfe39da86555d0efe195e4 100644 (file)
@@ -495,21 +495,21 @@ namespace System.Web.Script.Serialization
                                        break;
 
                                case JsonType.TRUE:
-                                       if (String.Compare (s, "true", StringComparison.Ordinal) == 0)
+                                       if (String.Compare (s.Trim (), "true", StringComparison.Ordinal) == 0)
                                                result = true;
                                        else
                                                converted = false;
                                        break;
 
                                case JsonType.FALSE:
-                                       if (String.Compare (s, "false", StringComparison.Ordinal) == 0)
+                                       if (String.Compare (s.Trim (), "false", StringComparison.Ordinal) == 0)
                                                result = false;
                                        else
                                                converted = false;
                                        break;
 
                                case JsonType.NULL:
-                                       if (String.Compare (s, "null", StringComparison.Ordinal) != 0)
+                                       if (String.Compare (s.Trim (), "null", StringComparison.Ordinal) != 0)
                                                converted = false;
                                        break;
 
index 43f9e13be14e1f3519c78f1345ae3f0aa5cd806a..dd2d5a38bc9de2c505e9ebb1f2286e49eafabdb0 100644 (file)
@@ -1416,5 +1416,30 @@ namespace MonoTests.System.Web.Script.Serialization
     ";
                        serializer.DeserializeObject (json_with_newline);
                }
+
+               class Dummy
+               {
+                       public bool t;
+                       public bool f;
+                       public string s;
+                       public int i;
+                       public double d;
+                       public object o;
+               }
+               
+               [Test]
+               public void DeserializeWhiteSpaces ()
+               {
+                       string json = "{\"t\" : true , \"f\" : false , \"s\" : \"s\" , \"i\" : 1337 , \"d\" : 1337.0 , \"o\" : null }";
+                       
+                       var obj = (new JavaScriptSerializer ()).Deserialize<Dummy>(json);
+                       
+                       Assert.IsTrue (obj.t);
+                       Assert.IsFalse (obj.f);
+                       Assert.AreEqual ("s", obj.s);
+                       Assert.AreEqual (1337, obj.i);
+                       Assert.AreEqual (1337.0, obj.d);
+                       Assert.AreEqual (null, obj.o);
+               }
        }
 }
index 64981eb7ba8f3c0eba9f5cdb1319f2b79a42ed38..d0223334e7d6018247664ecadbc0bb7d04241204 100644 (file)
@@ -2667,6 +2667,7 @@ namespace System.Windows.Forms
                {
                        BeginUpdate ();
                        
+                       DeleteOldThumbnails (); // any existing thumbnail images need to be Dispose()d.
                        Items.Clear ();
                        SelectedItems.Clear ();
                        
@@ -3096,6 +3097,23 @@ namespace System.Windows.Forms
                                }
                        }
                }
+
+               private void DeleteOldThumbnails()
+               {
+                       foreach (var item in Items) {
+                               var fi = item as FileViewListViewItem;
+                               if (fi == null || fi.FSEntry == null)
+                                       continue;
+                               fi.FSEntry.Dispose();
+                               fi.FSEntry = null;
+                       }
+               }
+
+               protected override void Dispose(bool disposing)
+               {
+                       DeleteOldThumbnails();
+                       base.Dispose(disposing);
+               }
        }
        #endregion
        
@@ -3145,7 +3163,7 @@ namespace System.Windows.Forms
                                        break;
                        }
                }
-               
+
                public FSEntry FSEntry {
                        set {
                                fsEntry = value;
@@ -4365,7 +4383,7 @@ namespace System.Windows.Forms
        #endregion
        
        #region FSEntry
-       internal class FSEntry
+       internal class FSEntry : IDisposable
        {
                public enum FSEntryType
                {
@@ -4590,13 +4608,17 @@ namespace System.Windows.Forms
                }
 
                internal Image Image { get; set; }
+               private bool fMustDisposeImage;
 
                internal void SetImage()
                {
                        try {
                                Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
-                               Bitmap myBitmap = new Bitmap(FullName);
-                               this.Image = myBitmap.GetThumbnailImage(48, 48, myCallback, IntPtr.Zero);
+                               using (Bitmap myBitmap = new Bitmap(FullName))
+                               {
+                                       this.Image = myBitmap.GetThumbnailImage(48, 48, myCallback, IntPtr.Zero);
+                                       fMustDisposeImage = true;
+                               }
                        } catch (Exception) {
                                // cannot handle this image format?  not an image file?
                                this.Image = null;
@@ -4607,6 +4629,16 @@ namespace System.Windows.Forms
                {
                        return false;
                }
+
+               #region IDisposable implementation
+               public void Dispose()
+               {
+                       if (this.Image != null && fMustDisposeImage) {
+                               this.Image.Dispose();
+                               this.Image = null;
+                       }
+               }
+               #endregion
        }
        #endregion
        
index 5986f5e3869d6ef7628bd7916876039a2d63ea7c..355a3941c49773033d6a5496df503c5a8a417a99 100644 (file)
@@ -62,14 +62,14 @@ using System.Runtime.InteropServices;
 #endif
 
 #if NET_2_1
-       [assembly: InternalsVisibleTo ("System.Runtime.Serialization, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
        [assembly: InternalsVisibleTo ("System.ServiceModel.Web, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
        // System.Xml.Serialization (from Microsoft Silverlight 2.0 SDK) requires access to System.Xml internals
        [assembly: InternalsVisibleTo ("System.Xml.Serialization, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull)]
 #else
        [assembly: AllowPartiallyTrustedCallers]
 #endif
-       [assembly: InternalsVisibleTo ("System.Xml.Linq, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull)]
+       [assembly: InternalsVisibleTo ("System.Runtime.Serialization, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull, AllInternalsVisible = false)]
+       [assembly: InternalsVisibleTo ("System.Xml.Linq, PublicKey=" + AssemblyRef.FrameworkPublicKeyFull, AllInternalsVisible = false)]
 
 [assembly: AssemblyFileVersion (Consts.FxFileVersion)]
 [assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
diff --git a/mcs/class/System.XML/Dummy.cs b/mcs/class/System.XML/Dummy.cs
deleted file mode 100644 (file)
index 2028429..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Xml.Schema;
-
-namespace System.Xml
-{
-       static partial class Res
-       {
-               public static string GetString (string s, params object [] args)
-               {
-                       return args == null ? s : string.Format (s, args);
-               }
-       }
-}
-
-namespace System.Xml.Utils
-{
-       static partial class Res
-       {
-               public static string GetString (string s, params object [] args)
-               {
-                       return args == null || args.Length == 0 ? s : string.Format (s, args);
-               }
-       }
-}
-
-// workaround for missing members in corlib.
-namespace System.Security.Policy
-{
-       static class EvidenceExtensions
-       {
-               public static void AddHostEvidence (this Evidence evidence, Url url)
-               {
-                       throw new NotImplementedException ();
-               }
-               public static void AddHostEvidence (this Evidence evidence, Zone zone)
-               {
-                       throw new NotImplementedException ();
-               }
-               public static void AddHostEvidence (this Evidence evidence, Site site)
-               {
-                       throw new NotImplementedException ();
-               }
-               public static void AddHostEvidence (this Evidence evidence, EvidenceBase e)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
index 7873914d2dd6cd749069ba183539a1348fa46dbd..a945136671e34bb6023b76830de0edcdbf74bf81 100644 (file)
@@ -13,9 +13,9 @@ ifdef USE_BOOT_COMPILE
 LIBRARY_COMPILE = $(BOOT_COMPILE)
 endif
 
-# FIXME: use below, once mcs got fixed.
-#RESOURCE_STRINGS = ../../../external/referencesource/System.Xml/System.Xml.txt
-#      ../../../external/referencesource/System.Data.SqlXml/System.Xml.Utils.txt
+RESOURCE_STRINGS = \
+       ../../../external/referencesource/System.Xml/System.Xml.txt \
+       ../../../external/referencesource/System.Data.SqlXml/System.Xml.Utils.txt
 
 PROFILE_ANY_MOBILE := $(filter monotouch monotouch_runtime monodroid xammac mobile mobile_static, $(PROFILE))
 
diff --git a/mcs/class/System.XML/ReferenceSources/CodeDom.cs b/mcs/class/System.XML/ReferenceSources/CodeDom.cs
new file mode 100644 (file)
index 0000000..423b0ca
--- /dev/null
@@ -0,0 +1,114 @@
+#if MOBILE
+
+using System;
+using System.Globalization;
+
+namespace Microsoft.CSharp
+{
+       internal class CodeDomProvider
+       {
+               public string CreateEscapedIdentifier (string name)
+               {
+            // Any identifier started with two consecutive underscores are 
+            // reserved by CSharp.
+            if (IsKeyword(name) || IsPrefixTwoUnderscore(name)) {
+                return "@" + name;
+            }
+            return name;                       
+               }
+
+               static bool IsKeyword(string value) {
+                       return false;
+               } 
+
+        static bool IsPrefixTwoUnderscore(string value) {
+            if( value.Length < 3) {
+                return false;
+            }
+            else {
+                return ((value[0] == '_') && (value[1] == '_') && (value[2] != '_'));
+            }
+        }              
+       }
+
+       internal class CSharpCodeProvider : CodeDomProvider
+       {
+       }
+
+       class CodeGenerator
+       {
+        public static bool IsValidLanguageIndependentIdentifier(string value)
+        {
+            return IsValidTypeNameOrIdentifier(value, false);
+        }
+
+        private static bool IsValidTypeNameOrIdentifier(string value, bool isTypeName) {
+            bool nextMustBeStartChar = true;
+            
+            if (value.Length == 0) 
+                return false;
+
+            // each char must be Lu, Ll, Lt, Lm, Lo, Nd, Mn, Mc, Pc
+            // 
+            for(int i = 0; i < value.Length; i++) {
+                char ch = value[i];
+                UnicodeCategory uc = Char.GetUnicodeCategory(ch);
+                switch (uc) {
+                    case UnicodeCategory.UppercaseLetter:        // Lu
+                    case UnicodeCategory.LowercaseLetter:        // Ll
+                    case UnicodeCategory.TitlecaseLetter:        // Lt
+                    case UnicodeCategory.ModifierLetter:         // Lm
+                    case UnicodeCategory.LetterNumber:           // Lm
+                    case UnicodeCategory.OtherLetter:            // Lo
+                        nextMustBeStartChar = false;
+                        break;
+
+                    case UnicodeCategory.NonSpacingMark:         // Mn
+                    case UnicodeCategory.SpacingCombiningMark:   // Mc
+                    case UnicodeCategory.ConnectorPunctuation:   // Pc
+                    case UnicodeCategory.DecimalDigitNumber:     // Nd
+                        // Underscore is a valid starting character, even though it is a ConnectorPunctuation.
+                        if (nextMustBeStartChar && ch != '_')
+                            return false;
+                        
+                        nextMustBeStartChar = false;
+                        break;
+                    default:
+                        // We only check the special Type chars for type names. 
+                        if (isTypeName && IsSpecialTypeChar(ch, ref nextMustBeStartChar)) {
+                            break;
+                        }
+
+                        return false;
+                }
+            }
+
+            return true;
+        }
+
+        private static bool IsSpecialTypeChar(char ch, ref bool nextMustBeStartChar) {
+            switch(ch) {
+                case ':':
+                case '.':
+                case '$':
+                case '+':
+                case '<':
+                case '>':
+                case '-':
+                case '[':
+                case ']':
+                case ',':
+                case '&':
+                case '*':
+                    nextMustBeStartChar = true;
+                    return true;
+
+                case '`':
+                    return true;
+            }
+            return false;
+        }        
+       }
+}
+
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.XML/ReferenceSources/Res.cs b/mcs/class/System.XML/ReferenceSources/Res.cs
new file mode 100644 (file)
index 0000000..dae7d2d
--- /dev/null
@@ -0,0 +1,1167 @@
+namespace System.Xml
+{
+       static class Res
+       {
+               public static string GetString (string name)
+               {
+                       return name;
+               }
+
+               public static string GetString (string name, params object[] args)
+               {
+                       if (args == null)
+                               return name;
+                               
+                       return SR.GetString (name, args);
+               }
+
+               public const string Arg_CannotCreateNode = "Arg_CannotCreateNode";
+               public const string Arg_ExpectingXmlTextReader  = "Arg_ExpectingXmlTextReader";
+               public const string Arg_IncompatibleParamType = "Arg_IncompatibleParamType";
+               public const string Enc_InvalidByteInEncoding = "Enc_InvalidByteInEncoding";
+               public const string RefSyntaxNotSupportedForElements0 = "RefSyntaxNotSupportedForElements0";
+               public const string SchInf_NoElement = "SchInf_NoElement";
+               public const string SchInf_UnknownParticle = "SchInf_UnknownParticle";
+               public const string SchInf_ct = "SchInf_ct";
+               public const string SchInf_entity = "SchInf_entity";
+               public const string SchInf_extension = "SchInf_extension";
+               public const string SchInf_noct = "SchInf_noct";
+               public const string SchInf_noseq = "SchInf_noseq";
+               public const string SchInf_particle = "SchInf_particle";
+               public const string SchInf_schema = "SchInf_schema";
+               public const string SchInf_schematype = "SchInf_schematype";
+               public const string SchInf_seq = "SchInf_seq";
+               public const string SchInf_simplecontent = "SchInf_simplecontent";
+               public const string Sch_AbstractElement = "Sch_AbstractElement";
+               public const string Sch_AllElement = "Sch_AllElement";
+               public const string Sch_AllRefMinMax = "Sch_AllRefMinMax";
+               public const string Sch_AllRefNotRoot = "Sch_AllRefNotRoot";
+               public const string Sch_AnnotationLocation = "Sch_AnnotationLocation";
+               public const string Sch_AnyAttributeLastChild = "Sch_AnyAttributeLastChild";
+               public const string Sch_AnyElement = "Sch_AnyElement";
+               public const string Sch_AnyElementNS = "Sch_AnyElementNS";
+               public const string Sch_AnyFromAnyRule1 = "Sch_AnyFromAnyRule1";
+               public const string Sch_AnyFromAnyRule2 = "Sch_AnyFromAnyRule2";
+               public const string Sch_AnyFromAnyRule3 = "Sch_AnyFromAnyRule3";
+               public const string Sch_AttListPresence = "Sch_AttListPresence";
+               public const string Sch_AttrGroupDoubleRedefine = "Sch_AttrGroupDoubleRedefine";
+               public const string Sch_AttrGroupRedefineNotFound = "Sch_AttrGroupRedefineNotFound";
+               public const string Sch_AttrUseAndWildId = "Sch_AttrUseAndWildId";
+               public const string Sch_AttributeCircularRef = "Sch_AttributeCircularRef";
+               public const string Sch_AttributeDefaultDataType = "Sch_AttributeDefaultDataType";
+               public const string Sch_AttributeFixedInvalid = "Sch_AttributeFixedInvalid";
+               public const string Sch_AttributeGroupCircularRef = "Sch_AttributeGroupCircularRef";
+               public const string Sch_AttributeIgnored = "Sch_AttributeIgnored";
+               public const string Sch_AttributeMutuallyExclusive = "Sch_AttributeMutuallyExclusive";
+               public const string Sch_AttributeNameRef = "Sch_AttributeNameRef";
+               public const string Sch_AttributeRestrictionInvalid = "Sch_AttributeRestrictionInvalid";
+               public const string Sch_AttributeRestrictionInvalidFromWildcard = "Sch_AttributeRestrictionInvalidFromWildcard";
+               public const string Sch_AttributeRestrictionProhibited = "Sch_AttributeRestrictionProhibited";
+               public const string Sch_AttributeUseInvalid = "Sch_AttributeUseInvalid";
+               public const string Sch_AttributeValueDataType = "Sch_AttributeValueDataType";
+               public const string Sch_AttributeValueDataTypeDetailed = "Sch_AttributeValueDataTypeDetailed";
+               public const string Sch_BaseFinalExtension = "Sch_BaseFinalExtension";
+               public const string Sch_BaseFinalList = "Sch_BaseFinalList";
+               public const string Sch_BaseFinalRestriction = "Sch_BaseFinalRestriction";
+               public const string Sch_BaseFinalUnion = "Sch_BaseFinalUnion";
+               public const string Sch_CannotLoadSchema = "Sch_CannotLoadSchema";
+               public const string Sch_CannotLoadSchemaLocation = "Sch_CannotLoadSchemaLocation";
+               public const string Sch_ComplexContentContentModel = "Sch_ComplexContentContentModel";
+               public const string Sch_ComplexContentModel = "Sch_ComplexContentModel";
+               public const string Sch_ComplexToSimpleTypeRedefine = "Sch_ComplexToSimpleTypeRedefine";
+               public const string Sch_ComplexTypeContentModel = "Sch_ComplexTypeContentModel";
+               public const string Sch_ComplexTypeDoubleRedefine = "Sch_ComplexTypeDoubleRedefine";
+               public const string Sch_ComplexTypeRedefineNotFound = "Sch_ComplexTypeRedefineNotFound";
+               public const string Sch_ComponentAlreadySeenForNS = "Sch_ComponentAlreadySeenForNS";
+               public const string Sch_ComponentRedefineNotFound = "Sch_ComponentRedefineNotFound";
+               public const string Sch_ContentInNill = "Sch_ContentInNill";
+               public const string Sch_ContinuationString = "Sch_ContinuationString";
+               public const string Sch_DataTypeTextOnly = "Sch_DataTypeTextOnly";
+               public const string Sch_DefaultAttributeNotApplied = "Sch_DefaultAttributeNotApplied";
+               public const string Sch_DefaultException = "Sch_DefaultException";
+               public const string Sch_DefaultFixedAttributes = "Sch_DefaultFixedAttributes";
+               public const string Sch_DefaultIdValue = "Sch_DefaultIdValue";
+               public const string Sch_DerivedNotFromBase = "Sch_DerivedNotFromBase";
+               public const string Sch_DifContentType = "Sch_DifContentType";
+               public const string Sch_DtMaxLengthInvalid = "Sch_DtMaxLengthInvalid";
+               public const string Sch_DtMinLengthInvalid = "Sch_DtMinLengthInvalid";
+               public const string Sch_DtMinMaxLength = "Sch_DtMinMaxLength";
+               public const string Sch_DupAttribute = "Sch_DupAttribute";
+               public const string Sch_DupAttributeGroup = "Sch_DupAttributeGroup";
+               public const string Sch_DupAttributeUse = "Sch_DupAttributeUse";
+               public const string Sch_DupComplexType = "Sch_DupComplexType";
+               public const string Sch_DupDtMaxLength = "Sch_DupDtMaxLength";
+               public const string Sch_DupDtMinLength = "Sch_DupDtMinLength";
+               public const string Sch_DupDtType = "Sch_DupDtType";
+               public const string Sch_DupElement = "Sch_DupElement";
+               public const string Sch_DupElementDecl = "Sch_DupElementDecl";
+               public const string Sch_DupFractionDigitsFacet = "Sch_DupFractionDigitsFacet";
+               public const string Sch_DupGlobalAttribute = "Sch_DupGlobalAttribute";
+               public const string Sch_DupGlobalElement = "Sch_DupGlobalElement";
+               public const string Sch_DupGroup = "Sch_DupGroup";
+               public const string Sch_DupGroupParticle = "Sch_DupGroupParticle";
+               public const string Sch_DupId = "Sch_DupId";
+               public const string Sch_DupIdAttribute = "Sch_DupIdAttribute";
+               public const string Sch_DupIdentityConstraint = "Sch_DupIdentityConstraint";
+               public const string Sch_DupLengthFacet = "Sch_DupLengthFacet";
+               public const string Sch_DupMaxExclusiveFacet = "Sch_DupMaxExclusiveFacet";
+               public const string Sch_DupMaxInclusiveFacet = "Sch_DupMaxInclusiveFacet";
+               public const string Sch_DupMaxLengthFacet = "Sch_DupMaxLengthFacet";
+               public const string Sch_DupMinExclusiveFacet = "Sch_DupMinExclusiveFacet";
+               public const string Sch_DupMinInclusiveFacet = "Sch_DupMinInclusiveFacet";
+               public const string Sch_DupMinLengthFacet = "Sch_DupMinLengthFacet";
+               public const string Sch_DupNotation = "Sch_DupNotation";
+               public const string Sch_DupNotationAttribute = "Sch_DupNotationAttribute";
+               public const string Sch_DupSelector = "Sch_DupSelector";
+               public const string Sch_DupSimpleType = "Sch_DupSimpleType";
+               public const string Sch_DupSimpleTypeChild = "Sch_DupSimpleTypeChild";
+               public const string Sch_DupTotalDigitsFacet = "Sch_DupTotalDigitsFacet";
+               public const string Sch_DupWhiteSpaceFacet = "Sch_DupWhiteSpaceFacet";
+               public const string Sch_DupXsdElement = "Sch_DupXsdElement";
+               public const string Sch_DuplicateAttribute = "Sch_DuplicateAttribute";
+               public const string Sch_DuplicateKey = "Sch_DuplicateKey";
+               public const string Sch_ElementCannotHaveValue = "Sch_ElementCannotHaveValue";
+               public const string Sch_ElementCircularRef = "Sch_ElementCircularRef";
+               public const string Sch_ElementFromAnyRule1 = "Sch_ElementFromAnyRule1";
+               public const string Sch_ElementFromAnyRule2 = "Sch_ElementFromAnyRule2";
+               public const string Sch_ElementFromElement = "Sch_ElementFromElement";
+               public const string Sch_ElementFromGroupBase1 = "Sch_ElementFromGroupBase1";
+               public const string Sch_ElementFromGroupBase2 = "Sch_ElementFromGroupBase2";
+               public const string Sch_ElementFromGroupBase3 = "Sch_ElementFromGroupBase3";
+               public const string Sch_ElementInMixedWithFixed = "Sch_ElementInMixedWithFixed";
+               public const string Sch_ElementMissing = "Sch_ElementMissing";
+               public const string Sch_ElementName = "Sch_ElementName";
+               public const string Sch_ElementNameAndNamespace = "Sch_ElementNameAndNamespace";
+               public const string Sch_ElementNameRef = "Sch_ElementNameRef";
+               public const string Sch_ElementNotAllowed = "Sch_ElementNotAllowed";
+               public const string Sch_ElementRef = "Sch_ElementRef";
+               public const string Sch_ElementTypeCollision = "Sch_ElementTypeCollision";
+               public const string Sch_ElementValueDataType = "Sch_ElementValueDataType";
+               public const string Sch_ElementValueDataTypeDetailed = "Sch_ElementValueDataTypeDetailed";
+               public const string Sch_EmptyAttributeValue = "Sch_EmptyAttributeValue";
+               public const string Sch_EmptyChoice = "Sch_EmptyChoice";
+               public const string Sch_EmptyXPath = "Sch_EmptyXPath";
+               public const string Sch_EnumFinished = "Sch_EnumFinished";
+               public const string Sch_EnumNotStarted = "Sch_EnumNotStarted";
+               public const string Sch_EnumerationConstraintFailed = "Sch_EnumerationConstraintFailed";
+               public const string Sch_EnumerationFacetInvalid = "Sch_EnumerationFacetInvalid";
+               public const string Sch_EnumerationFacetProhibited = "Sch_EnumerationFacetProhibited";
+               public const string Sch_EnumerationValue = "Sch_EnumerationValue";
+               public const string Sch_FacetBaseFixed = "Sch_FacetBaseFixed";
+               public const string Sch_FieldSimpleTypeExpected = "Sch_FieldSimpleTypeExpected";
+               public const string Sch_FieldSingleValueExpected = "Sch_FieldSingleValueExpected";
+               public const string Sch_FixedAttributeValue = "Sch_FixedAttributeValue";
+               public const string Sch_FixedDefaultInRef = "Sch_FixedDefaultInRef";
+               public const string Sch_FixedElementValue = "Sch_FixedElementValue";
+               public const string Sch_FixedInRef = "Sch_FixedInRef";
+               public const string Sch_ForbiddenAttribute = "Sch_ForbiddenAttribute";
+               public const string Sch_ForbiddenDerivedParticleForAll = "Sch_ForbiddenDerivedParticleForAll";
+               public const string Sch_ForbiddenDerivedParticleForChoice = "Sch_ForbiddenDerivedParticleForChoice";
+               public const string Sch_ForbiddenDerivedParticleForElem = "Sch_ForbiddenDerivedParticleForElem";
+               public const string Sch_ForbiddenDerivedParticleForSeq = "Sch_ForbiddenDerivedParticleForSeq";
+               public const string Sch_FractionDigitsConstraintFailed = "Sch_FractionDigitsConstraintFailed";
+               public const string Sch_FractionDigitsFacetInvalid = "Sch_FractionDigitsFacetInvalid";
+               public const string Sch_FractionDigitsFacetProhibited = "Sch_FractionDigitsFacetProhibited";
+               public const string Sch_FractionDigitsGtTotalDigits = "Sch_FractionDigitsGtTotalDigits";
+               public const string Sch_FractionDigitsNotOnDecimal = "Sch_FractionDigitsNotOnDecimal";
+               public const string Sch_GroupBaseFromAny1 = "Sch_GroupBaseFromAny1";
+               public const string Sch_GroupBaseFromAny2 = "Sch_GroupBaseFromAny2";
+               public const string Sch_GroupBaseRestNoMap = "Sch_GroupBaseRestNoMap";
+               public const string Sch_GroupBaseRestNotEmptiable = "Sch_GroupBaseRestNotEmptiable";
+               public const string Sch_GroupBaseRestRangeInvalid = "Sch_GroupBaseRestRangeInvalid";
+               public const string Sch_GroupCircularRef = "Sch_GroupCircularRef";
+               public const string Sch_GroupDisabled = "Sch_GroupDisabled";
+               public const string Sch_GroupDoubleRedefine = "Sch_GroupDoubleRedefine";
+               public const string Sch_GroupRedefineNotFound = "Sch_GroupRedefineNotFound";
+               public const string Sch_ICXpathError = "Sch_ICXpathError";
+               public const string Sch_IdAttrDeclared = "Sch_IdAttrDeclared";
+               public const string Sch_IdConstraintNoFields = "Sch_IdConstraintNoFields";
+               public const string Sch_IdConstraintNoRefer = "Sch_IdConstraintNoRefer";
+               public const string Sch_IdConstraintNoSelector = "Sch_IdConstraintNoSelector";
+               public const string Sch_IdentityConstraintCircularRef = "Sch_IdentityConstraintCircularRef";
+               public const string Sch_ImportLocation = "Sch_ImportLocation";
+               public const string Sch_ImportTargetNamespace = "Sch_ImportTargetNamespace";
+               public const string Sch_ImportTargetNamespaceNull = "Sch_ImportTargetNamespaceNull";
+               public const string Sch_IncludeLocation = "Sch_IncludeLocation";
+               public const string Sch_IncompleteContent = "Sch_IncompleteContent";
+               public const string Sch_IncompleteContentComplex = "Sch_IncompleteContentComplex";
+               public const string Sch_IncompleteContentExpecting = "Sch_IncompleteContentExpecting";
+               public const string Sch_IncompleteContentExpectingComplex = "Sch_IncompleteContentExpectingComplex";
+               public const string Sch_InvalidAllElementMax = "Sch_InvalidAllElementMax";
+               public const string Sch_InvalidAllMax = "Sch_InvalidAllMax";
+               public const string Sch_InvalidAllMin = "Sch_InvalidAllMin";
+               public const string Sch_InvalidAny = "Sch_InvalidAny";
+               public const string Sch_InvalidAnyAttribute = "Sch_InvalidAnyAttribute";
+               public const string Sch_InvalidAnyAttributeRestriction = "Sch_InvalidAnyAttributeRestriction";
+               public const string Sch_InvalidAnyDetailed = "Sch_InvalidAnyDetailed";
+               public const string Sch_InvalidAttribute = "Sch_InvalidAttribute";
+               public const string Sch_InvalidAttributeExtension = "Sch_InvalidAttributeExtension";
+               public const string Sch_InvalidAttributeRef = "Sch_InvalidAttributeRef";
+               public const string Sch_InvalidBaseToEmpty = "Sch_InvalidBaseToEmpty";
+               public const string Sch_InvalidBaseToMixed = "Sch_InvalidBaseToMixed";
+               public const string Sch_InvalidBlockDefaultValue = "Sch_InvalidBlockDefaultValue";
+               public const string Sch_InvalidBoolean = "Sch_InvalidBoolean";
+               public const string Sch_InvalidCollection = "Sch_InvalidCollection";
+               public const string Sch_InvalidContentRestrictionDetailed = "Sch_InvalidContentRestrictionDetailed";
+               public const string Sch_InvalidComplexTypeBlockValue = "Sch_InvalidComplexTypeBlockValue";
+               public const string Sch_InvalidComplexTypeFinalValue = "Sch_InvalidComplexTypeFinalValue";
+               public const string Sch_InvalidContentRestriction = "Sch_InvalidContentRestriction";
+               public const string Sch_InvalidDateTimeOption = "Sch_InvalidDateTimeOption";
+               public const string Sch_InvalidElementBlockValue = "Sch_InvalidElementBlockValue";
+               public const string Sch_InvalidElementContent = "Sch_InvalidElementContent";
+               public const string Sch_InvalidElementContentComplex = "Sch_InvalidElementContentComplex";
+               public const string Sch_InvalidElementContentExpecting = "Sch_InvalidElementContentExpecting";
+               public const string Sch_InvalidElementContentExpectingComplex = "Sch_InvalidElementContentExpectingComplex";
+               public const string Sch_InvalidElementDefaultValue = "Sch_InvalidElementDefaultValue";
+               public const string Sch_InvalidElementFinalValue = "Sch_InvalidElementFinalValue";
+               public const string Sch_InvalidElementInEmptyEx = "Sch_InvalidElementInEmptyEx";
+               public const string Sch_InvalidElementInTextOnlyEx = "Sch_InvalidElementInTextOnlyEx";
+               public const string Sch_InvalidElementRef = "Sch_InvalidElementRef";
+               public const string Sch_InvalidElementSubstitution = "Sch_InvalidElementSubstitution";
+               public const string Sch_InvalidEndElementCall = "Sch_InvalidEndElementCall";
+               public const string Sch_InvalidEndElementCallTyped = "Sch_InvalidEndElementCallTyped";
+               public const string Sch_InvalidEndElementMultiple = "Sch_InvalidEndElementMultiple";
+               public const string Sch_InvalidEndValidation = "Sch_InvalidEndValidation";
+               public const string Sch_InvalidExamplar = "Sch_InvalidExamplar";
+               public const string Sch_InvalidFacet = "Sch_InvalidFacet";
+               public const string Sch_InvalidFacetPosition = "Sch_InvalidFacetPosition";
+               public const string Sch_InvalidFinalDefaultValue = "Sch_InvalidFinalDefaultValue";
+               public const string Sch_InvalidIdAttribute = "Sch_InvalidIdAttribute";
+               public const string Sch_InvalidIncludeLocation = "Sch_InvalidIncludeLocation";
+               public const string Sch_InvalidLanguageId = "Sch_InvalidLanguageId";
+               public const string Sch_InvalidNameAttributeEx = "Sch_InvalidNameAttributeEx";
+               public const string Sch_InvalidNamespace = "Sch_InvalidNamespace";
+               public const string Sch_InvalidNamespaceAttribute = "Sch_InvalidNamespaceAttribute";
+               public const string Sch_InvalidPIComment = "Sch_InvalidPIComment";
+               public const string Sch_InvalidPartialValidationType = "Sch_InvalidPartialValidationType";
+               public const string Sch_InvalidParticleRestriction = "Sch_InvalidParticleRestriction";
+               public const string Sch_InvalidParticleRestrictionDetailed = "Sch_InvalidParticleRestrictionDetailed";
+               public const string Sch_InvalidPublicAttribute = "Sch_InvalidPublicAttribute";
+               public const string Sch_InvalidSchemaLocation = "Sch_InvalidSchemaLocation";
+               public const string Sch_InvalidSimpleTypeFinalValue = "Sch_InvalidSimpleTypeFinalValue";
+               public const string Sch_InvalidSimpleTypeRestriction = "Sch_InvalidSimpleTypeRestriction";
+               public const string Sch_InvalidStartTransition = "Sch_InvalidStartTransition";
+               public const string Sch_InvalidStateTransition = "Sch_InvalidStateTransition";
+               public const string Sch_InvalidSubstitutionMember = "Sch_InvalidSubstitutionMember";
+               public const string Sch_InvalidSystemAttribute = "Sch_InvalidSystemAttribute";
+               public const string Sch_InvalidTargetNamespaceAttribute = "Sch_InvalidTargetNamespaceAttribute";
+               public const string Sch_InvalidTextInElement = "Sch_InvalidTextInElement";
+               public const string Sch_InvalidTextInElementExpecting = "Sch_InvalidTextInElementExpecting";
+               public const string Sch_InvalidTextInEmpty = "Sch_InvalidTextInEmpty";
+               public const string Sch_InvalidTypeRedefine = "Sch_InvalidTypeRedefine";
+               public const string Sch_InvalidValue = "Sch_InvalidValue";
+               public const string Sch_InvalidValueDetailed = "Sch_InvalidValueDetailed";
+               public const string Sch_InvalidValueDetailedAttribute = "Sch_InvalidValueDetailedAttribute";
+               public const string Sch_InvalidWhiteSpace = "Sch_InvalidWhiteSpace";
+               public const string Sch_InvalidWhitespaceInEmpty = "Sch_InvalidWhitespaceInEmpty";
+               public const string Sch_InvalidXsdAttributeDatatypeValue = "Sch_InvalidXsdAttributeDatatypeValue";
+               public const string Sch_InvalidXsdAttributeValue = "Sch_InvalidXsdAttributeValue";
+               public const string Sch_InvalidXsiNill = "Sch_InvalidXsiNill";
+               public const string Sch_LengthAndMinMax = "Sch_LengthAndMinMax";
+               public const string Sch_LengthConstraintFailed = "Sch_LengthConstraintFailed";
+               public const string Sch_LengthFacetInvalid = "Sch_LengthFacetInvalid";
+               public const string Sch_LengthFacetProhibited = "Sch_LengthFacetProhibited";
+               public const string Sch_LengthGtBaseLength = "Sch_LengthGtBaseLength";
+               public const string Sch_ListFromNonatomic = "Sch_ListFromNonatomic";
+               public const string Sch_ManyMaxOccurs = "Sch_ManyMaxOccurs";
+               public const string Sch_MaxExclusiveConstraintFailed = "Sch_MaxExclusiveConstraintFailed";
+               public const string Sch_MaxExclusiveFacetInvalid = "Sch_MaxExclusiveFacetInvalid";
+               public const string Sch_MaxExclusiveFacetProhibited = "Sch_MaxExclusiveFacetProhibited";
+               public const string Sch_MaxExclusiveMismatch = "Sch_MaxExclusiveMismatch";
+               public const string Sch_MaxExlIncMismatch = "Sch_MaxExlIncMismatch";
+               public const string Sch_MaxIncExlMismatch = "Sch_MaxIncExlMismatch";
+               public const string Sch_MaxInclusiveConstraintFailed = "Sch_MaxInclusiveConstraintFailed";
+               public const string Sch_MaxInclusiveExclusive = "Sch_MaxInclusiveExclusive";
+               public const string Sch_MaxInclusiveFacetInvalid = "Sch_MaxInclusiveFacetInvalid";
+               public const string Sch_MaxInclusiveFacetProhibited = "Sch_MaxInclusiveFacetProhibited";
+               public const string Sch_MaxInclusiveMismatch = "Sch_MaxInclusiveMismatch";
+               public const string Sch_MaxLengthConstraintFailed = "Sch_MaxLengthConstraintFailed";
+               public const string Sch_MaxLengthFacetInvalid = "Sch_MaxLengthFacetInvalid";
+               public const string Sch_MaxLengthFacetProhibited = "Sch_MaxLengthFacetProhibited";
+               public const string Sch_MaxLengthGtBaseMaxLength = "Sch_MaxLengthGtBaseMaxLength";
+               public const string Sch_MaxMinLengthBaseLength = "Sch_MaxMinLengthBaseLength";
+               public const string Sch_MaxOccursInvalid = "Sch_MaxOccursInvalid";
+               public const string Sch_MaxOccursInvalidXsd = "Sch_MaxOccursInvalidXsd";
+               public const string Sch_MinExclusiveConstraintFailed = "Sch_MinExclusiveConstraintFailed";
+               public const string Sch_MinExclusiveFacetInvalid = "Sch_MinExclusiveFacetInvalid";
+               public const string Sch_MinExclusiveFacetProhibited = "Sch_MinExclusiveFacetProhibited";
+               public const string Sch_MinExclusiveGtMaxExclusive = "Sch_MinExclusiveGtMaxExclusive";
+               public const string Sch_MinExclusiveGtMaxInclusive = "Sch_MinExclusiveGtMaxInclusive";
+               public const string Sch_MinExclusiveMismatch = "Sch_MinExclusiveMismatch";
+               public const string Sch_MinExlIncMismatch = "Sch_MinExlIncMismatch";
+               public const string Sch_MinExlMaxExlMismatch = "Sch_MinExlMaxExlMismatch";
+               public const string Sch_MinGtMax = "Sch_MinGtMax";
+               public const string Sch_MinIncExlMismatch = "Sch_MinIncExlMismatch";
+               public const string Sch_MinIncMaxExlMismatch = "Sch_MinIncMaxExlMismatch";
+               public const string Sch_MinInclusiveConstraintFailed = "Sch_MinInclusiveConstraintFailed";
+               public const string Sch_MinInclusiveExclusive = "Sch_MinInclusiveExclusive";
+               public const string Sch_MinInclusiveFacetInvalid = "Sch_MinInclusiveFacetInvalid";
+               public const string Sch_MinInclusiveFacetProhibited = "Sch_MinInclusiveFacetProhibited";
+               public const string Sch_MinInclusiveGtMaxExclusive = "Sch_MinInclusiveGtMaxExclusive";
+               public const string Sch_MinInclusiveGtMaxInclusive = "Sch_MinInclusiveGtMaxInclusive";
+               public const string Sch_MinInclusiveMismatch = "Sch_MinInclusiveMismatch";
+               public const string Sch_MinLengthConstraintFailed = "Sch_MinLengthConstraintFailed";
+               public const string Sch_MinLengthFacetInvalid = "Sch_MinLengthFacetInvalid";
+               public const string Sch_MinLengthFacetProhibited = "Sch_MinLengthFacetProhibited";
+               public const string Sch_MinLengthGtBaseMinLength = "Sch_MinLengthGtBaseMinLength";
+               public const string Sch_MinLengthGtMaxLength = "Sch_MinLengthGtMaxLength";
+               public const string Sch_MinMaxGroupRedefine = "Sch_MinMaxGroupRedefine";
+               public const string Sch_MinOccursInvalid = "Sch_MinOccursInvalid";
+               public const string Sch_MinOccursInvalidXsd = "Sch_MinOccursInvalidXsd";
+               public const string Sch_MismatchTargetNamespaceEx = "Sch_MismatchTargetNamespaceEx";
+               public const string Sch_MismatchTargetNamespaceImport = "Sch_MismatchTargetNamespaceImport";
+               public const string Sch_MismatchTargetNamespaceInclude = "Sch_MismatchTargetNamespaceInclude";
+               public const string Sch_MissAttribute = "Sch_MissAttribute";
+               public const string Sch_MissDtvalue = "Sch_MissDtvalue";
+               public const string Sch_MissDtvaluesAttribute = "Sch_MissDtvaluesAttribute";
+               public const string Sch_MissRequiredAttribute = "Sch_MissRequiredAttribute";
+               public const string Sch_MissingKey = "Sch_MissingKey";
+               public const string Sch_MissingPublicSystemAttribute = "Sch_MissingPublicSystemAttribute";
+               public const string Sch_MixSchemaTypes = "Sch_MixSchemaTypes";
+               public const string Sch_MixedMany = "Sch_MixedMany";
+               public const string Sch_MoreThanOneWildId = "Sch_MoreThanOneWildId";
+               public const string Sch_MultipleAttrGroupSelfRef = "Sch_MultipleAttrGroupSelfRef";
+               public const string Sch_MultipleGroupSelfRef = "Sch_MultipleGroupSelfRef";
+               public const string Sch_MultipleRedefine = "Sch_MultipleRedefine";
+               public const string Sch_NeedSimpleTypeChild = "Sch_NeedSimpleTypeChild";
+               public const string Sch_NoAttributeSchemaFound = "Sch_NoAttributeSchemaFound";
+               public const string Sch_NoDerivedAttribute = "Sch_NoDerivedAttribute";
+               public const string Sch_NoElementSchemaFound = "Sch_NoElementSchemaFound";
+               public const string Sch_NoExamplar = "Sch_NoExamplar";
+               public const string Sch_NoGroupParticle = "Sch_NoGroupParticle";
+               public const string Sch_NoRestOrExt = "Sch_NoRestOrExt";
+               public const string Sch_NoRestOrExtQName = "Sch_NoRestOrExtQName";
+               public const string Sch_NoSimpleTypeContent = "Sch_NoSimpleTypeContent";
+               public const string Sch_NonDeterministic = "Sch_NonDeterministic";
+               public const string Sch_NonDeterministicAnyAny = "Sch_NonDeterministicAnyAny";
+               public const string Sch_NonDeterministicAnyEx = "Sch_NonDeterministicAnyEx";
+               public const string Sch_NotAllAlone = "Sch_NotAllAlone";
+               public const string Sch_NotComplexContent = "Sch_NotComplexContent";
+               public const string Sch_NotNormalizedString = "Sch_NotNormalizedString";
+               public const string Sch_NotSimpleContent = "Sch_NotSimpleContent";
+               public const string Sch_NotTokenString = "Sch_NotTokenString";
+               public const string Sch_NotXsiAttribute = "Sch_NotXsiAttribute";
+               public const string Sch_NotationAttributeOnEmptyElement = "Sch_NotationAttributeOnEmptyElement";
+               public const string Sch_NotationRequired = "Sch_NotationRequired";
+               public const string Sch_NotationValue = "Sch_NotationValue";
+               public const string Sch_NullValue = "Sch_NullValue";
+               public const string Sch_OptionalDefaultAttribute = "Sch_OptionalDefaultAttribute";
+               public const string Sch_ParEntityRefNesting = "Sch_ParEntityRefNesting";
+               public const string Sch_PatternConstraintFailed = "Sch_PatternConstraintFailed";
+               public const string Sch_PatternFacetInvalid = "Sch_PatternFacetInvalid";
+               public const string Sch_PatternFacetProhibited = "Sch_PatternFacetProhibited";
+               public const string Sch_ProhibitedAttribute = "Sch_ProhibitedAttribute";
+               public const string Sch_RedefineLocation = "Sch_RedefineLocation";
+               public const string Sch_RedefineNoSchema = "Sch_RedefineNoSchema";
+               public const string Sch_RefInvalidAttribute = "Sch_RefInvalidAttribute";
+               public const string Sch_RefInvalidCardin = "Sch_RefInvalidCardin";
+               public const string Sch_RefInvalidElement = "Sch_RefInvalidElement";
+               public const string Sch_RefInvalidIdentityConstraint = "Sch_RefInvalidIdentityConstraint";
+               public const string Sch_RefNotInScope = "Sch_RefNotInScope";
+               public const string Sch_ReftoKeyref = "Sch_ReftoKeyref";
+               public const string Sch_RequireEnumeration = "Sch_RequireEnumeration";
+               public const string Sch_RootMatchDocType = "Sch_RootMatchDocType";
+               public const string Sch_SchemaAttributeNameMismatch = "Sch_SchemaAttributeNameMismatch";
+               public const string Sch_SchemaDoesNotExist = "Sch_SchemaDoesNotExist";
+               public const string Sch_SchemaElementNameMismatch = "Sch_SchemaElementNameMismatch";
+               public const string Sch_SchemaNotPreprocessed = "Sch_SchemaNotPreprocessed";
+               public const string Sch_SchemaNotRemoved = "Sch_SchemaNotRemoved";
+               public const string Sch_SchemaRootExpected = "Sch_SchemaRootExpected";
+               public const string Sch_SelectorAttr = "Sch_SelectorAttr";
+               public const string Sch_SelectorBeforeFields = "Sch_SelectorBeforeFields";
+               public const string Sch_SeqFromAll = "Sch_SeqFromAll";
+               public const string Sch_SeqFromChoice = "Sch_SeqFromChoice";
+               public const string Sch_SimpleToComplexTypeRedefine = "Sch_SimpleToComplexTypeRedefine";
+               public const string Sch_SimpleTypeDoubleRedefine = "Sch_SimpleTypeDoubleRedefine";
+               public const string Sch_SimpleTypeListRefBase = "Sch_SimpleTypeListRefBase";
+               public const string Sch_SimpleTypeListRefBaseNone = "Sch_SimpleTypeListRefBaseNone";
+               public const string Sch_SimpleTypeRedefineNotFound = "Sch_SimpleTypeRedefineNotFound";
+               public const string Sch_SimpleTypeRestRefBase = "Sch_SimpleTypeRestRefBase";
+               public const string Sch_SimpleTypeRestRefBaseNone = "Sch_SimpleTypeRestRefBaseNone";
+               public const string Sch_SimpleTypeRestriction = "Sch_SimpleTypeRestriction";
+               public const string Sch_SimpleTypeUnionNoBase = "Sch_SimpleTypeUnionNoBase";
+               public const string Sch_StandAlone = "Sch_StandAlone";
+               public const string Sch_StandAloneNormalization = "Sch_StandAloneNormalization";
+               public const string Sch_SubstitutionBlocked = "Sch_SubstitutionBlocked";
+               public const string Sch_SubstitutionCircularRef = "Sch_SubstitutionCircularRef";
+               public const string Sch_SubstitutionNotAllowed = "Sch_SubstitutionNotAllowed";
+               public const string Sch_TargetNamespaceXsi = "Sch_TargetNamespaceXsi";
+               public const string Sch_TextNotAllowed = "Sch_TextNotAllowed";
+               public const string Sch_TotalDigitsConstraintFailed = "Sch_TotalDigitsConstraintFailed";
+               public const string Sch_TotalDigitsFacetInvalid = "Sch_TotalDigitsFacetInvalid";
+               public const string Sch_TotalDigitsFacetProhibited = "Sch_TotalDigitsFacetProhibited";
+               public const string Sch_TotalDigitsMismatch = "Sch_TotalDigitsMismatch";
+               public const string Sch_TwoIdAttrUses = "Sch_TwoIdAttrUses";
+               public const string Sch_TypeAfterConstraints = "Sch_TypeAfterConstraints";
+               public const string Sch_TypeCircularRef = "Sch_TypeCircularRef";
+               public const string Sch_TypeMutualExclusive = "Sch_TypeMutualExclusive";
+               public const string Sch_UnSpecifiedDefaultAttributeInExternalStandalone = "Sch_UnSpecifiedDefaultAttributeInExternalStandalone";
+               public const string Sch_UndeclaredAttribute = "Sch_UndeclaredAttribute";
+               public const string Sch_UndeclaredElement = "Sch_UndeclaredElement";
+               public const string Sch_UndeclaredEntity = "Sch_UndeclaredEntity";
+               public const string Sch_UndeclaredEquivClass = "Sch_UndeclaredEquivClass";
+               public const string Sch_UndeclaredId = "Sch_UndeclaredId";
+               public const string Sch_UndeclaredIdentityConstraint = "Sch_UndeclaredIdentityConstraint";
+               public const string Sch_UndeclaredNotation = "Sch_UndeclaredNotation";
+               public const string Sch_UndeclaredSimpleType = "Sch_UndeclaredSimpleType";
+               public const string Sch_UndeclaredType = "Sch_UndeclaredType";
+               public const string Sch_UndefAttributeGroupRef = "Sch_UndefAttributeGroupRef";
+               public const string Sch_UndefBaseExtension = "Sch_UndefBaseExtension";
+               public const string Sch_UndefBaseRestriction = "Sch_UndefBaseRestriction";
+               public const string Sch_UndefGroupRef = "Sch_UndefGroupRef";
+               public const string Sch_UnexpressibleAnyAttribute = "Sch_UnexpressibleAnyAttribute";
+               public const string Sch_UnionFailedEx = "Sch_UnionFailedEx";
+               public const string Sch_UnionFromUnion = "Sch_UnionFromUnion";
+               public const string Sch_UnknownContent = "Sch_UnknownContent";
+               public const string Sch_UnknownDtType = "Sch_UnknownDtType";
+               public const string Sch_UnknownFacet = "Sch_UnknownFacet";
+               public const string Sch_UnknownModel = "Sch_UnknownModel";
+               public const string Sch_UnknownOrder = "Sch_UnknownOrder";
+               public const string Sch_UnknownRequired = "Sch_UnknownRequired";
+               public const string Sch_UnparsedEntityRef = "Sch_UnparsedEntityRef";
+               public const string Sch_UnrefNS = "Sch_UnrefNS";
+               public const string Sch_UnresolvedKeyref = "Sch_UnresolvedKeyref";
+               public const string Sch_UnresolvedPrefix = "Sch_UnresolvedPrefix";
+               public const string Sch_UnsupportedAttribute = "Sch_UnsupportedAttribute";
+               public const string Sch_UnsupportedElement = "Sch_UnsupportedElement";
+               public const string Sch_ValidateAttributeInvalidCall = "Sch_ValidateAttributeInvalidCall";
+               public const string Sch_ValidateElementInvalidCall = "Sch_ValidateElementInvalidCall";
+               public const string Sch_WhiteSpaceFacetProhibited = "Sch_WhiteSpaceFacetProhibited";
+               public const string Sch_WhiteSpaceRestriction1 = "Sch_WhiteSpaceRestriction1";
+               public const string Sch_WhiteSpaceRestriction2 = "Sch_WhiteSpaceRestriction2";
+               public const string Sch_XSDSchemaOnly = "Sch_XSDSchemaOnly";
+               public const string Sch_XSDSchemaRootExpected = "Sch_XSDSchemaRootExpected";
+               public const string Sch_XmlNsAttribute = "Sch_XmlNsAttribute";
+               public const string Sch_XmlSpace = "Sch_XmlSpace";
+               public const string Sch_XmlTypeHasFraction = "Sch_XmlTypeHasFraction";
+               public const string Sch_XsdDateTimeCompare = "Sch_XsdDateTimeCompare";
+               public const string Sch_XsiNilAndFixed = "Sch_XsiNilAndFixed";
+               public const string Sch_XsiNilAndType = "Sch_XsiNilAndType";
+               public const string Sch_XsiTypeAbstract = "Sch_XsiTypeAbstract";
+               public const string Sch_XsiTypeBlockedEx = "Sch_XsiTypeBlockedEx";
+               public const string Sch_XsiTypeNotFound = "Sch_XsiTypeNotFound";
+               public const string SqlTypes_ArithOverflow = "SqlTypes_ArithOverflow";
+               public const string SqlTypes_ArithTruncation = "SqlTypes_ArithTruncation";
+               public const string SqlTypes_DivideByZero = "SqlTypes_DivideByZero";
+               public const string XPathDocument_MissingSchemas = "XPathDocument_MissingSchemas";
+               public const string XPathDocument_NotEnoughSchemaInfo = "XPathDocument_NotEnoughSchemaInfo";
+               public const string XPathDocument_SchemaSetNotAllowed = "XPathDocument_SchemaSetNotAllowed";
+               public const string XPathDocument_ValidateInvalidNodeType = "XPathDocument_ValidateInvalidNodeType";
+               public const string Xdom_AttrCol_Insert = "Xdom_AttrCol_Insert";
+               public const string Xdom_AttrCol_Object = "Xdom_AttrCol_Object";
+               public const string Xdom_Attr_InUse = "Xdom_Attr_InUse";
+               public const string Xdom_Attr_Name = "Xdom_Attr_Name";
+               public const string Xdom_Attr_Reserved_XmlNS = "Xdom_Attr_Reserved_XmlNS";
+               public const string Xdom_Document_Innertext = "Xdom_Document_Innertext";
+               public const string Xdom_DualDeclarationNode = "Xdom_DualDeclarationNode";
+               public const string Xdom_DualDocumentElementNode = "Xdom_DualDocumentElementNode";
+               public const string Xdom_DualDocumentTypeNode = "Xdom_DualDocumentTypeNode";
+               public const string Xdom_Empty_LocalName = "Xdom_Empty_LocalName";
+               public const string Xdom_EntRef_SetVal = "Xdom_EntRef_SetVal";
+               public const string Xdom_Ent_Innertext = "Xdom_Ent_Innertext";
+               public const string Xdom_Enum_ElementList = "Xdom_Enum_ElementList";
+               public const string Xdom_Import = "Xdom_Import";
+               public const string Xdom_Import_NullNode = "Xdom_Import_NullNode";
+               public const string Xdom_IndexOutOfRange = "Xdom_IndexOutOfRange";
+               public const string Xdom_InvalidCharacter_EntityReference  = "Xdom_InvalidCharacter_EntityReference";
+               public const string Xdom_Invalid_NT_String = "Xdom_Invalid_NT_String";
+               public const string Xdom_Load_NoDocument = "Xdom_Load_NoDocument";
+               public const string Xdom_Load_NoReader = "Xdom_Load_NoReader";
+               public const string Xdom_NamedNode_Context = "Xdom_NamedNode_Context";
+               public const string Xdom_NoRootEle = "Xdom_NoRootEle";
+               public const string Xdom_Node_Cloning = "Xdom_Node_Cloning";
+               public const string Xdom_Node_Insert_Child = "Xdom_Node_Insert_Child";
+               public const string Xdom_Node_Insert_Contain = "Xdom_Node_Insert_Contain";
+               public const string Xdom_Node_Insert_Context = "Xdom_Node_Insert_Context";
+               public const string Xdom_Node_Insert_Location = "Xdom_Node_Insert_Location";
+               public const string Xdom_Node_Insert_Path = "Xdom_Node_Insert_Path";
+               public const string Xdom_Node_Insert_TypeConflict = "Xdom_Node_Insert_TypeConflict";
+               public const string Xdom_Node_Modify_ReadOnly = "Xdom_Node_Modify_ReadOnly";
+               public const string Xdom_Node_Null_Doc = "Xdom_Node_Null_Doc";
+               public const string Xdom_Node_Remove_Child = "Xdom_Node_Remove_Child";
+               public const string Xdom_Node_Remove_Contain = "Xdom_Node_Remove_Contain";
+               public const string Xdom_Node_SetVal = "Xdom_Node_SetVal";
+               public const string Xdom_Set_InnerXml  = "Xdom_Set_InnerXml";
+               public const string Xdom_TextNode_SplitText = "Xdom_TextNode_SplitText";
+               public const string Xdom_Version = "Xdom_Version";
+               public const string Xdom_WS_Char = "Xdom_WS_Char";
+               public const string Xdom_standalone = "Xdom_standalone";
+               public const string XmlAbstractType = "XmlAbstractType";
+               public const string XmlAnonymousBaseType = "XmlAnonymousBaseType";
+               public const string XmlAnonymousInclude = "XmlAnonymousInclude";
+               public const string XmlAnyElementDuplicate = "XmlAnyElementDuplicate";
+               public const string XmlArrayItemAmbiguousTypes = "XmlArrayItemAmbiguousTypes";
+               public const string XmlAttributeHasNoName = "XmlAttributeHasNoName";
+               public const string XmlAttributeSetAgain = "XmlAttributeSetAgain";
+               public const string XmlBadBaseElement = "XmlBadBaseElement";
+               public const string XmlBadBaseType = "XmlBadBaseType";
+               public const string XmlBadName = "XmlBadName";
+               public const string XmlBareAttributeMember = "XmlBareAttributeMember";
+               public const string XmlBareTextMember = "XmlBareTextMember";
+               public const string XmlBin_InvalidQNameID = "XmlBin_InvalidQNameID";
+               public const string XmlBin_MissingEndCDATA = "XmlBin_MissingEndCDATA";
+               public const string XmlBinary_AttrWithNsNoPrefix = "XmlBinary_AttrWithNsNoPrefix";
+               public const string XmlBinary_CastNotSupported = "XmlBinary_CastNotSupported";
+               public const string XmlBinary_InvalidProtocolVersion = "XmlBinary_InvalidProtocolVersion";
+               public const string XmlBinary_InvalidSignature = "XmlBinary_InvalidSignature";
+               public const string XmlBinary_InvalidSqlDecimal = "XmlBinary_InvalidSqlDecimal";
+               public const string XmlBinary_InvalidStandalone = "XmlBinary_InvalidStandalone";
+               public const string XmlBinary_ListsOfValuesNotSupported = "XmlBinary_ListsOfValuesNotSupported";
+               public const string XmlBinary_NoParserContext = "XmlBinary_NoParserContext";
+               public const string XmlBinary_NoRemapPrefix = "XmlBinary_NoRemapPrefix";
+               public const string XmlBinary_UnexpectedToken = "XmlBinary_UnexpectedToken";
+               public const string XmlBinary_UnsupportedCodePage = "XmlBinary_UnsupportedCodePage";
+               public const string XmlBinary_ValueTooBig = "XmlBinary_ValueTooBig";
+               public const string XmlCannotIncludeInSchema = "XmlCannotIncludeInSchema";
+               public const string XmlCannotReconcileAccessor = "XmlCannotReconcileAccessor";
+               public const string XmlCannotReconcileAccessorDefault = "XmlCannotReconcileAccessorDefault";
+               public const string XmlCannotReconcileAttributeAccessor = "XmlCannotReconcileAttributeAccessor";
+               public const string XmlChoiceIdDuplicate = "XmlChoiceIdDuplicate";
+               public const string XmlChoiceIdentiferAmbiguous = "XmlChoiceIdentiferAmbiguous";
+               public const string XmlChoiceIdentiferMemberMissing = "XmlChoiceIdentiferMemberMissing";
+               public const string XmlChoiceIdentiferMissing = "XmlChoiceIdentiferMissing";
+               public const string XmlChoiceIdentifierArrayType = "XmlChoiceIdentifierArrayType";
+               public const string XmlChoiceIdentifierMismatch = "XmlChoiceIdentifierMismatch";
+               public const string XmlChoiceIdentifierType = "XmlChoiceIdentifierType";
+               public const string XmlChoiceIdentifierTypeEnum = "XmlChoiceIdentifierTypeEnum";
+               public const string XmlChoiceMismatchChoiceException = "XmlChoiceMismatchChoiceException";
+               public const string XmlChoiceMissingAnyValue = "XmlChoiceMissingAnyValue";
+               public const string XmlChoiceMissingValue = "XmlChoiceMissingValue";
+               public const string XmlCircularDerivation = "XmlCircularDerivation";
+               public const string XmlCircularGroupReference = "XmlCircularGroupReference";
+               public const string XmlCircularReference = "XmlCircularReference";
+               public const string XmlCircularReference2 = "XmlCircularReference2";
+               public const string XmlCircularTypeReference = "XmlCircularTypeReference";
+               public const string XmlCodegenWarningDetails = "XmlCodegenWarningDetails";
+               public const string XmlCompilerError = "XmlCompilerError";
+               public const string XmlConfigurationDuplicateExtension = "XmlConfigurationDuplicateExtension";
+               public const string XmlConstructorHasSecurityAttributes = "XmlConstructorHasSecurityAttributes";
+               public const string XmlConstructorInaccessible = "XmlConstructorInaccessible";
+               public const string XmlConvert_BadFormat = "XmlConvert_BadFormat";
+               public const string XmlConvert_BadUri = "XmlConvert_BadUri";
+               public const string XmlConvert_NotOneCharString = "XmlConvert_NotOneCharString";
+               public const string XmlConvert_Overflow = "XmlConvert_Overflow";
+               public const string XmlConvert_TypeBadMapping = "XmlConvert_TypeBadMapping";
+               public const string XmlConvert_TypeBadMapping2 = "XmlConvert_TypeBadMapping2";
+               public const string XmlConvert_TypeFromString = "XmlConvert_TypeFromString";
+               public const string XmlConvert_TypeListBadMapping = "XmlConvert_TypeListBadMapping";
+               public const string XmlConvert_TypeListBadMapping2 = "XmlConvert_TypeListBadMapping2";
+               public const string XmlConvert_TypeNoNamespace = "XmlConvert_TypeNoNamespace";
+               public const string XmlConvert_TypeNoPrefix = "XmlConvert_TypeNoPrefix";
+               public const string XmlConvert_TypeToString = "XmlConvert_TypeToString";
+               public const string XmlDataBinding_NoSchemaType = "XmlDataBinding_NoSchemaType";
+               public const string XmlDataBinding_XPathAttrLast = "XmlDataBinding_XPathAttrLast";
+               public const string XmlDataBinding_XPathAttrNotFirst = "XmlDataBinding_XPathAttrNotFirst";
+               public const string XmlDataBinding_XPathEnd = "XmlDataBinding_XPathEnd";
+               public const string XmlDataBinding_XPathRequireSlash = "XmlDataBinding_XPathRequireSlash";
+               public const string XmlDataTypeMismatch = "XmlDataTypeMismatch";
+               public const string XmlDisallowNegativeValues = "XmlDisallowNegativeValues";
+               public const string XmlDocument_NoNodeSchemaInfo = "XmlDocument_NoNodeSchemaInfo";
+               public const string XmlDocument_NoSchemaInfo = "XmlDocument_NoSchemaInfo";
+               public const string XmlDocument_NodeNotFromDocument = "XmlDocument_NodeNotFromDocument";
+               public const string XmlDocument_ValidateInvalidNodeType = "XmlDocument_ValidateInvalidNodeType";
+               public const string XmlDropArrayAttributeValue = "XmlDropArrayAttributeValue";
+               public const string XmlDropAttributeValue = "XmlDropAttributeValue";
+               public const string XmlDropDefaultAttribute = "XmlDropDefaultAttribute";
+               public const string XmlDropNonPrimitiveAttributeValue = "XmlDropNonPrimitiveAttributeValue";
+               public const string XmlDuplicateAttributeName = "XmlDuplicateAttributeName";
+               public const string XmlDuplicateElementInScope = "XmlDuplicateElementInScope";
+               public const string XmlDuplicateElementInScope1 = "XmlDuplicateElementInScope1";
+               public const string XmlDuplicateElementName = "XmlDuplicateElementName";
+               public const string XmlDuplicateNamespace = "XmlDuplicateNamespace";
+               public const string XmlDuplicateNs = "XmlDuplicateNs";
+               public const string XmlDuplicateTypeName = "XmlDuplicateTypeName";
+               public const string XmlElementHasNoName = "XmlElementHasNoName";
+               public const string XmlElementImportedTwice = "XmlElementImportedTwice";
+               public const string XmlElementMissingType = "XmlElementMissingType";
+               public const string XmlElementNameMismatch = "XmlElementNameMismatch";
+               public const string XmlEmptyArrayType = "XmlEmptyArrayType";
+               public const string XmlExtensionComment = "XmlExtensionComment";
+               public const string XmlExtensionDuplicateDefinition = "XmlExtensionDuplicateDefinition";
+               public const string XmlFieldReflectionError = "XmlFieldReflectionError";
+               public const string XmlGenError = "XmlGenError";
+               public const string XmlGetSchemaEmptyTypeName = "XmlGetSchemaEmptyTypeName";
+               public const string XmlGetSchemaInclude = "XmlGetSchemaInclude";
+               public const string XmlGetSchemaMethodMissing = "XmlGetSchemaMethodMissing";
+               public const string XmlGetSchemaMethodName = "XmlGetSchemaMethodName";
+               public const string XmlGetSchemaMethodReturnType = "XmlGetSchemaMethodReturnType";
+               public const string XmlGetSchemaTypeMissing = "XmlGetSchemaTypeMissing";
+               public const string XmlHiddenMember = "XmlHiddenMember";
+               public const string XmlIdentityAccessDenied = "XmlIdentityAccessDenied";
+               public const string XmlIllegalAnyElement = "XmlIllegalAnyElement";
+               public const string XmlIllegalArrayArrayAttribute = "XmlIllegalArrayArrayAttribute";
+               public const string XmlIllegalArrayElement = "XmlIllegalArrayElement";
+               public const string XmlIllegalArrayTextAttribute = "XmlIllegalArrayTextAttribute";
+               public const string XmlIllegalAttrOrText = "XmlIllegalAttrOrText";
+               public const string XmlIllegalAttrOrTextInterface = "XmlIllegalAttrOrTextInterface";
+               public const string XmlIllegalAttribute = "XmlIllegalAttribute";
+               public const string XmlIllegalAttributeFlagsArray = "XmlIllegalAttributeFlagsArray";
+               public const string XmlIllegalAttributesArrayAttribute = "XmlIllegalAttributesArrayAttribute";
+               public const string XmlIllegalDefault = "XmlIllegalDefault";
+               public const string XmlIllegalElementsArrayAttribute = "XmlIllegalElementsArrayAttribute";
+               public const string XmlIllegalForm = "XmlIllegalForm";
+               public const string XmlIllegalMultipleText = "XmlIllegalMultipleText";
+               public const string XmlIllegalMultipleTextMembers = "XmlIllegalMultipleTextMembers";
+               public const string XmlIllegalOverride = "XmlIllegalOverride";
+               public const string XmlIllegalSimpleContentExtension = "XmlIllegalSimpleContentExtension";
+               public const string XmlIllegalSoapAttribute = "XmlIllegalSoapAttribute";
+               public const string XmlIllegalType = "XmlIllegalType";
+               public const string XmlIllegalTypeContext = "XmlIllegalTypeContext";
+               public const string XmlIllegalTypedTextAttribute = "XmlIllegalTypedTextAttribute";
+               public const string XmlIllegalWildcard = "XmlIllegalWildcard";
+               public const string XmlImporterExtensionBadLocalTypeName = "XmlImporterExtensionBadLocalTypeName";
+               public const string XmlImporterExtensionBadTypeName = "XmlImporterExtensionBadTypeName";
+               public const string XmlInternalError = "XmlInternalError";
+               public const string XmlInternalErrorDetails = "XmlInternalErrorDetails";
+               public const string XmlInternalErrorMethod = "XmlInternalErrorMethod";
+               public const string XmlInternalErrorReaderAdvance = "XmlInternalErrorReaderAdvance";
+               public const string XmlInvalidAnyAttributeUse = "XmlInvalidAnyAttributeUse";
+               public const string XmlInvalidArrayDimentions = "XmlInvalidArrayDimentions";
+               public const string XmlInvalidArrayLength = "XmlInvalidArrayLength";
+               public const string XmlInvalidArrayRef = "XmlInvalidArrayRef";
+               public const string XmlInvalidArraySyntax = "XmlInvalidArraySyntax";
+               public const string XmlInvalidArrayTypeName = "XmlInvalidArrayTypeName";
+               public const string XmlInvalidArrayTypeNamespace = "XmlInvalidArrayTypeNamespace";
+               public const string XmlInvalidArrayTypeSyntax = "XmlInvalidArrayTypeSyntax";
+               public const string XmlInvalidAttributeType = "XmlInvalidAttributeType";
+               public const string XmlInvalidAttributeUse = "XmlInvalidAttributeUse";
+               public const string XmlInvalidBaseType = "XmlInvalidBaseType";
+               public const string XmlInvalidCast = "XmlInvalidCast";
+               public const string XmlInvalidCastWithId = "XmlInvalidCastWithId";
+               public const string XmlInvalidChoiceIdentifierValue = "XmlInvalidChoiceIdentifierValue";
+               public const string XmlInvalidConstantAttribute = "XmlInvalidConstantAttribute";
+               public const string XmlInvalidContent = "XmlInvalidContent";
+               public const string XmlInvalidDataTypeUsage = "XmlInvalidDataTypeUsage";
+               public const string XmlInvalidDefaultEnumValue = "XmlInvalidDefaultEnumValue";
+               public const string XmlInvalidDefaultValue = "XmlInvalidDefaultValue";
+               public const string XmlInvalidElementAttribute = "XmlInvalidElementAttribute";
+               public const string XmlInvalidEncoding = "XmlInvalidEncoding";
+               public const string XmlInvalidEncoding3 = "XmlInvalidEncoding3";
+               public const string XmlInvalidEncodingNotEncoded1 = "XmlInvalidEncodingNotEncoded1";
+               public const string XmlInvalidEnumAttribute = "XmlInvalidEnumAttribute";
+               public const string XmlInvalidEnumContent = "XmlInvalidEnumContent";
+               public const string XmlInvalidFormUnqualified = "XmlInvalidFormUnqualified";
+               public const string XmlInvalidHref = "XmlInvalidHref";
+               public const string XmlInvalidIdentifier = "XmlInvalidIdentifier";
+               public const string XmlInvalidIsNullable = "XmlInvalidIsNullable";
+               public const string XmlInvalidNotNullable = "XmlInvalidNotNullable";
+               public const string XmlInvalidNullCast = "XmlInvalidNullCast";
+               public const string XmlInvalidReturnPosition = "XmlInvalidReturnPosition";
+               public const string XmlInvalidSchemaElementType = "XmlInvalidSchemaElementType";
+               public const string XmlInvalidSchemaExtension = "XmlInvalidSchemaExtension";
+               public const string XmlInvalidSerializable = "XmlInvalidSerializable";
+               public const string XmlInvalidSoapArray = "XmlInvalidSoapArray";
+               public const string XmlInvalidSpecifiedType = "XmlInvalidSpecifiedType";
+               public const string XmlInvalidSubstitutionGroupUse = "XmlInvalidSubstitutionGroupUse";
+               public const string XmlInvalidTypeAttributes = "XmlInvalidTypeAttributes";
+               public const string XmlInvalidUseOfType = "XmlInvalidUseOfType";
+               public const string XmlInvalidVoid = "XmlInvalidVoid";
+               public const string XmlInvalidXmlOverride = "XmlInvalidXmlOverride";
+               public const string XmlInvalidXmlns = "XmlInvalidXmlns";
+               public const string XmlInvalidXsdDataType = "XmlInvalidXsdDataType";
+               public const string XmlMappingsScopeMismatch = "XmlMappingsScopeMismatch";
+               public const string XmlMelformMapping = "XmlMelformMapping";
+               public const string XmlMembersDeriveError = "XmlMembersDeriveError";
+               public const string XmlMethodTypeNameConflict = "XmlMethodTypeNameConflict";
+               public const string XmlMismatchSchemaObjects = "XmlMismatchSchemaObjects";
+               public const string XmlMismatchedArrayBrackets = "XmlMismatchedArrayBrackets";
+               public const string XmlMissingArrayType = "XmlMissingArrayType";
+               public const string XmlMissingAttribute = "XmlMissingAttribute";
+               public const string XmlMissingAttributeGroup = "XmlMissingAttributeGroup";
+               public const string XmlMissingDataType = "XmlMissingDataType";
+               public const string XmlMissingElement = "XmlMissingElement";
+               public const string XmlMissingGroup = "XmlMissingGroup";
+               public const string XmlMissingHref = "XmlMissingHref";
+               public const string XmlMissingMethodEnum = "XmlMissingMethodEnum";
+               public const string XmlMissingSchema = "XmlMissingSchema";
+               public const string XmlMissingType = "XmlMissingType";
+               public const string XmlMultipleAttributeOverrides = "XmlMultipleAttributeOverrides";
+               public const string XmlMultipleXmlns = "XmlMultipleXmlns";
+               public const string XmlMultipleXmlnsMembers = "XmlMultipleXmlnsMembers";
+               public const string XmlNeedAttributeHere = "XmlNeedAttributeHere";
+               public const string XmlNoAddMethod = "XmlNoAddMethod";
+               public const string XmlNoAttributeHere = "XmlNoAttributeHere";
+               public const string XmlNoDefaultAccessors = "XmlNoDefaultAccessors";
+               public const string XmlNoNameAllowed = "XmlNoNameAllowed";
+               public const string XmlNoPartialTrust = "XmlNoPartialTrust";
+               public const string XmlNoSerializableMembers = "XmlNoSerializableMembers";
+               public const string XmlNotKnownDefaultValue = "XmlNotKnownDefaultValue";
+               public const string XmlNotSerializable = "XmlNotSerializable";
+               public const string XmlPregenAssemblyDynamic = "XmlPregenAssemblyDynamic";
+               public const string XmlPregenCannotLoad = "XmlPregenCannotLoad";
+               public const string XmlPregenInvalidXmlSerializerAssemblyAttribute = "XmlPregenInvalidXmlSerializerAssemblyAttribute";
+               public const string XmlPregenMissingDirectory = "XmlPregenMissingDirectory";
+               public const string XmlPregenMissingTempDirectory = "XmlPregenMissingTempDirectory";
+               public const string XmlPregenOrphanType = "XmlPregenOrphanType";
+               public const string XmlPregenTypeDynamic = "XmlPregenTypeDynamic";
+               public const string XmlPrimitiveBaseType = "XmlPrimitiveBaseType";
+               public const string XmlPropertyReflectionError = "XmlPropertyReflectionError";
+               public const string XmlReadOnlyCollection = "XmlReadOnlyCollection";
+               public const string XmlReadOnlyPropertyError = "XmlReadOnlyPropertyError";
+               public const string XmlReflectionError = "XmlReflectionError";
+               public const string XmlRemarks = "XmlRemarks";
+               public const string XmlRpcArrayOfValueTypes = "XmlRpcArrayOfValueTypes";
+               public const string XmlRpcLitArrayElement = "XmlRpcLitArrayElement";
+               public const string XmlRpcLitAttributeAttributes = "XmlRpcLitAttributeAttributes";
+               public const string XmlRpcLitAttributes = "XmlRpcLitAttributes";
+               public const string XmlRpcLitElementNamespace = "XmlRpcLitElementNamespace";
+               public const string XmlRpcLitElementNullable = "XmlRpcLitElementNullable";
+               public const string XmlRpcLitElements = "XmlRpcLitElements";
+               public const string XmlRpcLitXmlns = "XmlRpcLitXmlns";
+               public const string XmlRpcNestedValueType = "XmlRpcNestedValueType";
+               public const string XmlRpcRefsInValueType = "XmlRpcRefsInValueType";
+               public const string XmlSchema = "XmlSchema";
+               public const string XmlSchemaAttributeReference = "XmlSchemaAttributeReference";
+               public const string XmlSchemaCompiled = "XmlSchemaCompiled";
+               public const string XmlSchemaContentDef = "XmlSchemaContentDef";
+               public const string XmlSchemaDuplicateNamespace = "XmlSchemaDuplicateNamespace";
+               public const string XmlSchemaElementReference = "XmlSchemaElementReference";
+               public const string XmlSchemaIncludeLocation = "XmlSchemaIncludeLocation";
+               public const string XmlSchemaItem = "XmlSchemaItem";
+               public const string XmlSchemaNamedItem = "XmlSchemaNamedItem";
+               public const string XmlSchemaSyntaxErrorDetails = "XmlSchemaSyntaxErrorDetails";
+               public const string XmlSequenceHierarchy = "XmlSequenceHierarchy";
+               public const string XmlSequenceInconsistent = "XmlSequenceInconsistent";
+               public const string XmlSequenceMatch = "XmlSequenceMatch";
+               public const string XmlSequenceMembers = "XmlSequenceMembers";
+               public const string XmlSequenceUnique = "XmlSequenceUnique";
+               public const string XmlSerializableAttributes = "XmlSerializableAttributes";
+               public const string XmlSerializableBadDerivation = "XmlSerializableBadDerivation";
+               public const string XmlSerializableMergeItem = "XmlSerializableMergeItem";
+               public const string XmlSerializableMissingClrType = "XmlSerializableMissingClrType";
+               public const string XmlSerializableNameMissing1 = "XmlSerializableNameMissing1";
+               public const string XmlSerializableRootDupName = "XmlSerializableRootDupName";
+               public const string XmlSerializableSchemaError = "XmlSerializableSchemaError";
+               public const string XmlSerializeError = "XmlSerializeError";
+               public const string XmlSerializeErrorDetails = "XmlSerializeErrorDetails";
+               public const string XmlSerializerAccessDenied = "XmlSerializerAccessDenied";
+               public const string XmlSerializerCompileFailed = "XmlSerializerCompileFailed";
+               public const string XmlSerializerExpired = "XmlSerializerExpired";
+               public const string XmlSerializerExpiredDetails = "XmlSerializerExpiredDetails";
+               public const string XmlSerializerUnsupportedMember = "XmlSerializerUnsupportedMember";
+               public const string XmlSerializerUnsupportedType = "XmlSerializerUnsupportedType";
+               public const string XmlSoapCannotIncludeInSchema = "XmlSoapCannotIncludeInSchema";
+               public const string XmlSoapInvalidAttributeUse = "XmlSoapInvalidAttributeUse";
+               public const string XmlSoapInvalidChoice = "XmlSoapInvalidChoice";
+               public const string XmlSoapUnsupportedGroupAny = "XmlSoapUnsupportedGroupAny";
+               public const string XmlSoapUnsupportedGroupNested = "XmlSoapUnsupportedGroupNested";
+               public const string XmlSoapUnsupportedGroupRef = "XmlSoapUnsupportedGroupRef";
+               public const string XmlSoapUnsupportedGroupRepeat = "XmlSoapUnsupportedGroupRepeat";
+               public const string XmlSoleXmlnsAttribute = "XmlSoleXmlnsAttribute";
+               public const string XmlTypeInaccessible = "XmlTypeInaccessible";
+               public const string XmlTypeReflectionError = "XmlTypeReflectionError";
+               public const string XmlTypeStatic = "XmlTypeStatic";
+               public const string XmlTypeUsedTwice = "XmlTypeUsedTwice";
+               public const string XmlTypesDuplicate = "XmlTypesDuplicate";
+               public const string XmlUdeclaredXsdType = "XmlUdeclaredXsdType";
+               public const string XmlUndefinedAlias = "XmlUndefinedAlias";
+               public const string XmlUnknownAnyElement = "XmlUnknownAnyElement";
+               public const string XmlUnknownConstant = "XmlUnknownConstant";
+               public const string XmlUnknownNode = "XmlUnknownNode";
+               public const string XmlUnknownType = "XmlUnknownType";
+               public const string XmlUnsupportedDefaultType = "XmlUnsupportedDefaultType";
+               public const string XmlUnsupportedDefaultValue = "XmlUnsupportedDefaultValue";
+               public const string XmlUnsupportedIDictionary = "XmlUnsupportedIDictionary";
+               public const string XmlUnsupportedIDictionaryDetails = "XmlUnsupportedIDictionaryDetails";
+               public const string XmlUnsupportedInheritance = "XmlUnsupportedInheritance";
+               public const string XmlUnsupportedInterface = "XmlUnsupportedInterface";
+               public const string XmlUnsupportedInterfaceDetails = "XmlUnsupportedInterfaceDetails";
+               public const string XmlUnsupportedOpenGenericType = "XmlUnsupportedOpenGenericType";
+               public const string XmlUnsupportedRank = "XmlUnsupportedRank";
+               public const string XmlUnsupportedRedefine = "XmlUnsupportedRedefine";
+               public const string XmlUnsupportedSoapTypeKind = "XmlUnsupportedSoapTypeKind";
+               public const string XmlUnsupportedTypeKind = "XmlUnsupportedTypeKind";
+               public const string XmlUnxpectedType = "XmlUnxpectedType";
+               public const string XmlXmlnsInvalidType = "XmlXmlnsInvalidType";
+               public const string Xml_AsyncIsRunningException = "Xml_AsyncIsRunningException";
+               public const string Xml_AttlistDuplEnumValue = "Xml_AttlistDuplEnumValue";
+               public const string Xml_AttlistDuplNotationValue = "Xml_AttlistDuplNotationValue";
+               public const string Xml_BadAttributeChar = "Xml_BadAttributeChar";
+               public const string Xml_BadDTDLocation = "Xml_BadDTDLocation";
+               public const string Xml_BadDecimalEntity = "Xml_BadDecimalEntity";
+               public const string Xml_BadHexEntity = "Xml_BadHexEntity";
+               public const string Xml_BadNameChar = "Xml_BadNameChar";
+               public const string Xml_BadNameCharWithPos = "Xml_BadNameCharWithPos";
+               public const string Xml_BadNamespaceDecl = "Xml_BadNamespaceDecl";
+               public const string Xml_BadStartNameChar = "Xml_BadStartNameChar";
+               public const string Xml_CDATAEndInText = "Xml_CDATAEndInText";
+               public const string Xml_CanNotBindToReservedNamespace = "Xml_CanNotBindToReservedNamespace";
+               public const string Xml_CannotResolveEntity = "Xml_CannotResolveEntity";
+               public const string Xml_CannotResolveEntityDtdIgnored = "Xml_CannotResolveEntityDtdIgnored";
+               public const string Xml_CannotResolveExternalSubset = "Xml_CannotResolveExternalSubset";
+               public const string Xml_CannotResolveUrl = "Xml_CannotResolveUrl";
+               public const string Xml_CannotStartDocumentOnFragment = "Xml_CannotStartDocumentOnFragment";
+               public const string Xml_CannotWriteXmlDecl = "Xml_CannotWriteXmlDecl";
+               public const string Xml_CharEntityOverflow = "Xml_CharEntityOverflow";
+               public const string Xml_Closed = "Xml_Closed";
+               public const string Xml_ClosedOrError = "Xml_ClosedOrError";
+               public const string Xml_ClosedOrErrorReader  = "Xml_ClosedOrErrorReader";
+               public const string Xml_ColonInLocalName = "Xml_ColonInLocalName";
+               public const string Xml_ConformanceLevelFragment = "Xml_ConformanceLevelFragment";
+               public const string Xml_DefaultException = "Xml_DefaultException";
+               public const string Xml_DoubleBaseUri  = "Xml_DoubleBaseUri";
+               public const string Xml_DtdAfterRootElement  = "Xml_DtdAfterRootElement";
+               public const string Xml_DtdAlreadyWritten = "Xml_DtdAlreadyWritten";
+               public const string Xml_DtdIsProhibited = "Xml_DtdIsProhibited";
+               public const string Xml_DtdIsProhibitedEx = "Xml_DtdIsProhibitedEx";
+               public const string Xml_DtdNotAllowedInFragment = "Xml_DtdNotAllowedInFragment";
+               public const string Xml_DupAttributeName = "Xml_DupAttributeName";
+               public const string Xml_DupXmlDecl = "Xml_DupXmlDecl";
+               public const string Xml_ElementNotFound = "Xml_ElementNotFound";
+               public const string Xml_ElementNotFoundNs = "Xml_ElementNotFoundNs";
+               public const string Xml_EmptyLocalName = "Xml_EmptyLocalName";
+               public const string Xml_EmptyName = "Xml_EmptyName";
+               public const string Xml_EmptyUrl  = "Xml_EmptyUrl";
+               public const string Xml_EncodingSwitchAfterResetState = "Xml_EncodingSwitchAfterResetState";
+               public const string Xml_EntityHandling = "Xml_EntityHandling";
+               public const string Xml_EntityRefNesting  = "Xml_EntityRefNesting";
+               public const string Xml_EnumerationRequired = "Xml_EnumerationRequired";
+               public const string Xml_ErrorFilePosition = "Xml_ErrorFilePosition";
+               public const string Xml_ErrorOpeningExternalDtd = "Xml_ErrorOpeningExternalDtd";
+               public const string Xml_ErrorOpeningExternalEntity = "Xml_ErrorOpeningExternalEntity";
+               public const string Xml_ErrorParsingEntityName = "Xml_ErrorParsingEntityName";
+               public const string Xml_ErrorPosition = "Xml_ErrorPosition";
+               public const string Xml_ExpectAttType  = "Xml_ExpectAttType";
+               public const string Xml_ExpectDtdMarkup  = "Xml_ExpectDtdMarkup";
+               public const string Xml_ExpectExternalIdOrEntityValue  = "Xml_ExpectExternalIdOrEntityValue";
+               public const string Xml_ExpectExternalOrClose = "Xml_ExpectExternalOrClose";
+               public const string Xml_ExpectExternalOrPublicId  = "Xml_ExpectExternalOrPublicId";
+               public const string Xml_ExpectIgnoreOrInclude  = "Xml_ExpectIgnoreOrInclude";
+               public const string Xml_ExpectNoWhitespace  = "Xml_ExpectNoWhitespace";
+               public const string Xml_ExpectOp  = "Xml_ExpectOp";
+               public const string Xml_ExpectPcData  = "Xml_ExpectPcData";
+               public const string Xml_ExpectSubOrClose  = "Xml_ExpectSubOrClose";
+               public const string Xml_ExpectingWhiteSpace = "Xml_ExpectingWhiteSpace";
+               public const string Xml_ExternalEntityInAttValue = "Xml_ExternalEntityInAttValue";
+               public const string Xml_ExternalEntityInStandAloneDocument = "Xml_ExternalEntityInStandAloneDocument";
+               public const string Xml_FragmentId = "Xml_FragmentId";
+               public const string Xml_IncompatibleConformanceLevel = "Xml_IncompatibleConformanceLevel";
+               public const string Xml_IncompleteDtdContent  = "Xml_IncompleteDtdContent";
+               public const string Xml_IncompleteEntity  = "Xml_IncompleteEntity";
+               public const string Xml_IndentCharsNotWhitespace = "Xml_IndentCharsNotWhitespace";
+               public const string Xml_InternalError = "Xml_InternalError";
+               public const string Xml_InvalidAttributeType  = "Xml_InvalidAttributeType";
+               public const string Xml_InvalidAttributeType1  = "Xml_InvalidAttributeType1";
+               public const string Xml_InvalidBase64Value = "Xml_InvalidBase64Value";
+               public const string Xml_InvalidBinHexValue = "Xml_InvalidBinHexValue";
+               public const string Xml_InvalidBinHexValueOddCount = "Xml_InvalidBinHexValueOddCount";
+               public const string Xml_InvalidCDataChars = "Xml_InvalidCDataChars";
+               public const string Xml_InvalidCharInThisEncoding = "Xml_InvalidCharInThisEncoding";
+               public const string Xml_InvalidCharacter = "Xml_InvalidCharacter";
+               public const string Xml_InvalidCharsInIndent = "Xml_InvalidCharsInIndent";
+               public const string Xml_InvalidCommentChars = "Xml_InvalidCommentChars";
+               public const string Xml_InvalidConditionalSection  = "Xml_InvalidConditionalSection";
+               public const string Xml_InvalidContentModel  = "Xml_InvalidContentModel";
+               public const string Xml_InvalidIndentation = "Xml_InvalidIndentation";
+               public const string Xml_InvalidNameChars = "Xml_InvalidNameChars";
+               public const string Xml_InvalidNameCharsDetail = "Xml_InvalidNameCharsDetail";
+               public const string Xml_InvalidNmToken = "Xml_InvalidNmToken";
+               public const string Xml_InvalidNodeType = "Xml_InvalidNodeType";
+               public const string Xml_InvalidOperation = "Xml_InvalidOperation";
+               public const string Xml_InvalidPIName = "Xml_InvalidPIName";
+               public const string Xml_InvalidParEntityRef  = "Xml_InvalidParEntityRef";
+               public const string Xml_InvalidPiChars = "Xml_InvalidPiChars";
+               public const string Xml_InvalidPosition = "Xml_InvalidPosition";
+               public const string Xml_InvalidPrefix = "Xml_InvalidPrefix";
+               public const string Xml_InvalidQuote = "Xml_InvalidQuote";
+               public const string Xml_InvalidReadContentAs = "Xml_InvalidReadContentAs";
+               public const string Xml_InvalidReadElementContentAs = "Xml_InvalidReadElementContentAs";
+               public const string Xml_InvalidReadValueChunk = "Xml_InvalidReadValueChunk";
+               public const string Xml_InvalidResetStateCall  = "Xml_InvalidResetStateCall";
+               public const string Xml_InvalidRootData = "Xml_InvalidRootData";
+               public const string Xml_InvalidSurrogateHighChar = "Xml_InvalidSurrogateHighChar";
+               public const string Xml_InvalidSurrogateMissingLowChar = "Xml_InvalidSurrogateMissingLowChar";
+               public const string Xml_InvalidSurrogatePairWithArgs = "Xml_InvalidSurrogatePairWithArgs";
+               public const string Xml_InvalidTextDecl  = "Xml_InvalidTextDecl";
+               public const string Xml_InvalidVersionNumber = "Xml_InvalidVersionNumber";
+               public const string Xml_InvalidWhitespaceCharacter = "Xml_InvalidWhitespaceCharacter";
+               public const string Xml_InvalidXmlDecl = "Xml_InvalidXmlDecl";
+               public const string Xml_InvalidXmlDocument = "Xml_InvalidXmlDocument";
+               public const string Xml_InvalidXmlSpace = "Xml_InvalidXmlSpace";
+               public const string Xml_LimitExceeded = "Xml_LimitExceeded";
+               public const string Xml_MessageWithErrorPosition = "Xml_MessageWithErrorPosition";
+               public const string Xml_MissingByteOrderMark = "Xml_MissingByteOrderMark";
+               public const string Xml_MissingRoot = "Xml_MissingRoot";
+               public const string Xml_MixedReadElementContentAs = "Xml_MixedReadElementContentAs";
+               public const string Xml_MixingBinaryContentMethods  = "Xml_MixingBinaryContentMethods";
+               public const string Xml_MixingReadValueChunkWithBinary  = "Xml_MixingReadValueChunkWithBinary";
+               public const string Xml_MixingV1StreamingWithV2Binary  = "Xml_MixingV1StreamingWithV2Binary";
+               public const string Xml_MultipleDTDsProvided  = "Xml_MultipleDTDsProvided";
+               public const string Xml_MultipleRoots = "Xml_MultipleRoots";
+               public const string Xml_MultipleValidaitonTypes = "Xml_MultipleValidaitonTypes";
+               public const string Xml_NamespaceDeclXmlXmlns = "Xml_NamespaceDeclXmlXmlns";
+               public const string Xml_NametableMismatch = "Xml_NametableMismatch";
+               public const string Xml_NoDTDPresent = "Xml_NoDTDPresent";
+               public const string Xml_NoMultipleRoots = "Xml_NoMultipleRoots";
+               public const string Xml_NoNamespaces = "Xml_NoNamespaces";
+               public const string Xml_NoRoot = "Xml_NoRoot";
+               public const string Xml_NoStartTag = "Xml_NoStartTag";
+               public const string Xml_NoValidation = "Xml_NoValidation";
+               public const string Xml_NonWhitespace = "Xml_NonWhitespace";
+               public const string Xml_NotEnoughSpaceForSurrogatePair  = "Xml_NotEnoughSpaceForSurrogatePair";
+               public const string Xml_NotInWriteState = "Xml_NotInWriteState";
+               public const string Xml_NotSameNametable = "Xml_NotSameNametable";
+               public const string Xml_NotTheFirst = "Xml_NotTheFirst";
+               public const string Xml_NullResolver = "Xml_NullResolver";
+               public const string Xml_PartialContentNodeTypeNotSupportedEx = "Xml_PartialContentNodeTypeNotSupportedEx";
+               public const string Xml_PrefixForEmptyNs = "Xml_PrefixForEmptyNs";
+               public const string Xml_ReadBinaryContentNotSupported = "Xml_ReadBinaryContentNotSupported";
+               public const string Xml_ReadContentAsFormatException = "Xml_ReadContentAsFormatException";
+               public const string Xml_ReadOnlyProperty = "Xml_ReadOnlyProperty";
+               public const string Xml_ReadSubtreeNotOnElement = "Xml_ReadSubtreeNotOnElement";
+               public const string Xml_ReadValueChunkNotSupported = "Xml_ReadValueChunkNotSupported";
+               public const string Xml_ReaderAsyncNotSetException = "Xml_ReaderAsyncNotSetException";
+               public const string Xml_RecursiveGenEntity = "Xml_RecursiveGenEntity";
+               public const string Xml_RecursiveParEntity = "Xml_RecursiveParEntity";
+               public const string Xml_RedefinePrefix = "Xml_RedefinePrefix";
+               public const string Xml_RelativeUriNotSupported = "Xml_RelativeUriNotSupported";
+               public const string Xml_StackOverflow = "Xml_StackOverflow";
+               public const string Xml_SurrogatePairSplit  = "Xml_SurrogatePairSplit";
+               public const string Xml_TagMismatchEx = "Xml_TagMismatchEx";
+               public const string Xml_UnclosedConditionalSection  = "Xml_UnclosedConditionalSection";
+               public const string Xml_UnclosedQuote  = "Xml_UnclosedQuote";
+               public const string Xml_UndeclaredEntity = "Xml_UndeclaredEntity";
+               public const string Xml_UndeclaredParEntity = "Xml_UndeclaredParEntity";
+               public const string Xml_UndefNamespace = "Xml_UndefNamespace";
+               public const string Xml_UndefPrefix = "Xml_UndefPrefix";
+               public const string Xml_UnexpectedCDataEnd  = "Xml_UnexpectedCDataEnd";
+               public const string Xml_UnexpectedEOF = "Xml_UnexpectedEOF";
+               public const string Xml_UnexpectedEOF1 = "Xml_UnexpectedEOF1";
+               public const string Xml_UnexpectedEOFInElementContent = "Xml_UnexpectedEOFInElementContent";
+               public const string Xml_UnexpectedEndTag = "Xml_UnexpectedEndTag";
+               public const string Xml_UnexpectedNodeInSimpleContent = "Xml_UnexpectedNodeInSimpleContent";
+               public const string Xml_UnexpectedNodeType = "Xml_UnexpectedNodeType";
+               public const string Xml_UnexpectedToken = "Xml_UnexpectedToken";
+               public const string Xml_UnexpectedTokenEx = "Xml_UnexpectedTokenEx";
+               public const string Xml_UnexpectedTokens2 = "Xml_UnexpectedTokens2";
+               public const string Xml_UnknownEncoding = "Xml_UnknownEncoding";
+               public const string Xml_UnknownNs = "Xml_UnknownNs";
+               public const string Xml_UnparsedEntityRef = "Xml_UnparsedEntityRef";
+               public const string Xml_UnsupportedClass = "Xml_UnsupportedClass";
+               public const string Xml_UntrustedCodeSettingResolver  = "Xml_UntrustedCodeSettingResolver";
+               public const string Xml_UserException = "Xml_UserException";
+               public const string Xml_WhitespaceHandling = "Xml_WhitespaceHandling";
+               public const string Xml_WriterAsyncNotSetException = "Xml_WriterAsyncNotSetException";
+               public const string Xml_WrongToken = "Xml_WrongToken";
+               public const string Xml_XapResolverCannotOpenUri = "Xml_XapResolverCannotOpenUri";
+               public const string Xml_XmlDeclNotFirst = "Xml_XmlDeclNotFirst";
+               public const string Xml_XmlPrefix = "Xml_XmlPrefix";
+               public const string Xml_XmlnsBelongsToReservedNs = "Xml_XmlnsBelongsToReservedNs";
+               public const string Xml_XmlnsPrefix = "Xml_XmlnsPrefix";
+               public const string Xnr_ResolveEntity = "Xnr_ResolveEntity";
+               public const string Xp_BadQueryObject = "Xp_BadQueryObject";
+               public const string Xp_CurrentNotAllowed = "Xp_CurrentNotAllowed";
+               public const string Xp_ExprExpected = "Xp_ExprExpected";
+               public const string Xp_FunctionFailed = "Xp_FunctionFailed";
+               public const string Xp_InvalidArgumentType = "Xp_InvalidArgumentType";
+               public const string Xp_InvalidKeyPattern = "Xp_InvalidKeyPattern";
+               public const string Xp_InvalidName = "Xp_InvalidName";
+               public const string Xp_InvalidNumArgs = "Xp_InvalidNumArgs";
+               public const string Xp_InvalidPattern = "Xp_InvalidPattern";
+               public const string Xp_InvalidToken = "Xp_InvalidToken";
+               public const string Xp_NoContext = "Xp_NoContext";
+               public const string Xp_NodeSetExpected = "Xp_NodeSetExpected";
+               public const string Xp_NotSupported = "Xp_NotSupported";
+               public const string Xp_QueryTooComplex = "Xp_QueryTooComplex";
+               public const string Xp_UnclosedString = "Xp_UnclosedString";
+               public const string Xp_UndefFunc = "Xp_UndefFunc";
+               public const string Xp_UndefVar = "Xp_UndefVar";
+               public const string Xp_UndefinedXsltContext = "Xp_UndefinedXsltContext";
+               public const string Xpn_BadPosition = "Xpn_BadPosition";
+               public const string Xpn_MissingParent = "Xpn_MissingParent";
+               public const string Xpn_NoContent = "Xpn_NoContent";
+               public const string Xslt_IncompatibleCompiledStylesheetVersion = "Xslt_IncompatibleCompiledStylesheetVersion";
+               public const string Xslt_NoStylesheetLoaded = "Xslt_NoStylesheetLoaded";
+               public const string Xslt_NotCompiledStylesheet = "Xslt_NotCompiledStylesheet";  
+       }
+}
+
+namespace System.Xml.Utils
+{
+       static class Res
+       {
+               public static string GetString (string name)
+               {
+                       return name;
+               }
+
+               public static string GetString (string name, params object[] args)
+               {
+                       return SR.GetString (name, args);
+               }               
+
+               public const string Arg_IncompatibleParamType = "Arg_IncompatibleParamType";
+               public const string Coll_BadOptFormat = "Coll_BadOptFormat";
+               public const string Coll_Unsupported = "Coll_Unsupported";
+               public const string Coll_UnsupportedLanguage = "Coll_UnsupportedLanguage";
+               public const string Coll_UnsupportedOpt = "Coll_UnsupportedOpt";
+               public const string Coll_UnsupportedOptVal = "Coll_UnsupportedOptVal";
+               public const string Coll_UnsupportedSortOpt = "Coll_UnsupportedSortOpt";
+               public const string Qil_Validation = "Qil_Validation";
+               public const string Sch_EnumFinished = "Sch_EnumFinished";
+               public const string Sch_EnumNotStarted = "Sch_EnumNotStarted";
+               public const string XPath_AtLeastNArgsExpected = "XPath_AtLeastNArgsExpected";
+               public const string XPath_AtMostMArgsExpected = "XPath_AtMostMArgsExpected";
+               public const string XPath_EofExpected = "XPath_EofExpected";
+               public const string XPath_InvalidAxisInPattern = "XPath_InvalidAxisInPattern";
+               public const string XPath_NArgsExpected = "XPath_NArgsExpected";
+               public const string XPath_NOrMArgsExpected = "XPath_NOrMArgsExpected";
+               public const string XPath_NodeSetArgumentExpected = "XPath_NodeSetArgumentExpected";
+               public const string XPath_NodeSetExpected = "XPath_NodeSetExpected";
+               public const string XPath_NodeTestExpected = "XPath_NodeTestExpected";
+               public const string XPath_PredicateAfterDot = "XPath_PredicateAfterDot";
+               public const string XPath_PredicateAfterDotDot = "XPath_PredicateAfterDotDot";
+               public const string XPath_RtfInPathExpr = "XPath_RtfInPathExpr";
+               public const string XPath_ScientificNotation = "XPath_ScientificNotation";
+               public const string XPath_TokenExpected = "XPath_TokenExpected";
+               public const string XPath_UnclosedString = "XPath_UnclosedString";
+               public const string XPath_UnexpectedToken = "XPath_UnexpectedToken";
+               public const string XmlIl_AmbiguousExtensionMethod = "XmlIl_AmbiguousExtensionMethod";
+               public const string XmlIl_BadXmlState = "XmlIl_BadXmlState";
+               public const string XmlIl_BadXmlStateAttr = "XmlIl_BadXmlStateAttr";
+               public const string XmlIl_ByRefType = "XmlIl_ByRefType";
+               public const string XmlIl_CantResolveEntity = "XmlIl_CantResolveEntity";
+               public const string XmlIl_CantStripNav = "XmlIl_CantStripNav";
+               public const string XmlIl_DocumentLoadError = "XmlIl_DocumentLoadError";
+               public const string XmlIl_ExtensionError = "XmlIl_ExtensionError";
+               public const string XmlIl_GenericExtensionMethod = "XmlIl_GenericExtensionMethod";
+               public const string XmlIl_NmspAfterAttr = "XmlIl_NmspAfterAttr";
+               public const string XmlIl_NmspConflict = "XmlIl_NmspConflict";
+               public const string XmlIl_NoDefaultDocument = "XmlIl_NoDefaultDocument";
+               public const string XmlIl_NoExtensionMethod = "XmlIl_NoExtensionMethod";
+               public const string XmlIl_NonPublicExtensionMethod = "XmlIl_NonPublicExtensionMethod";
+               public const string XmlIl_TooManyParameters = "XmlIl_TooManyParameters";
+               public const string XmlIl_TopLevelAttrNmsp = "XmlIl_TopLevelAttrNmsp";
+               public const string XmlIl_UnknownDocument = "XmlIl_UnknownDocument";
+               public const string XmlIl_UnknownExtObj = "XmlIl_UnknownExtObj";
+               public const string XmlIl_UnknownParam = "XmlIl_UnknownParam";
+               public const string Xml_EndOfInnerExceptionStack = "Xml_EndOfInnerExceptionStack";
+               public const string Xml_ErrorFilePosition = "Xml_ErrorFilePosition";
+               public const string Xml_InvalidOperation = "Xml_InvalidOperation";
+               public const string Xml_UserException = "Xml_UserException";
+               public const string Xslt_AnalyzeStringChildOrder = "Xslt_AnalyzeStringChildOrder";
+               public const string Xslt_AnalyzeStringDupChild = "Xslt_AnalyzeStringDupChild";
+               public const string Xslt_AnalyzeStringEmpty = "Xslt_AnalyzeStringEmpty";
+               public const string Xslt_ApplyImports = "Xslt_ApplyImports";
+               public const string Xslt_AssemblyNameHref = "Xslt_AssemblyNameHref";
+               public const string Xslt_AttributeRedefinition = "Xslt_AttributeRedefinition";
+               public const string Xslt_BistateAttribute = "Xslt_BistateAttribute";
+               public const string Xslt_BothMatchNameAbsent = "Xslt_BothMatchNameAbsent";
+               public const string Xslt_CannotLoadStylesheet = "Xslt_CannotLoadStylesheet";
+               public const string Xslt_CantResolve = "Xslt_CantResolve";
+               public const string Xslt_CharAttribute = "Xslt_CharAttribute";
+               public const string Xslt_CircularAttributeSet = "Xslt_CircularAttributeSet";
+               public const string Xslt_CircularInclude = "Xslt_CircularInclude";
+               public const string Xslt_CircularReference = "Xslt_CircularReference";
+               public const string Xslt_CollationSyntax = "Xslt_CollationSyntax";
+               public const string Xslt_CompileError = "Xslt_CompileError";
+               public const string Xslt_CompileError2 = "Xslt_CompileError2";
+               public const string Xslt_CurrentNotAllowed = "Xslt_CurrentNotAllowed";
+               public const string Xslt_DecimalFormatRedefined = "Xslt_DecimalFormatRedefined";
+               public const string Xslt_DecimalFormatSignsNotDistinct = "Xslt_DecimalFormatSignsNotDistinct";
+               public const string Xslt_DocumentFuncProhibited = "Xslt_DocumentFuncProhibited";
+               public const string Xslt_DupDecimalFormat = "Xslt_DupDecimalFormat";
+               public const string Xslt_DupGlobalVariable = "Xslt_DupGlobalVariable";
+               public const string Xslt_DupLocalVariable = "Xslt_DupLocalVariable";
+               public const string Xslt_DupNsAlias = "Xslt_DupNsAlias";
+               public const string Xslt_DupOtherwise = "Xslt_DupOtherwise";
+               public const string Xslt_DupTemplateName = "Xslt_DupTemplateName";
+               public const string Xslt_DupVarName = "Xslt_DupVarName";
+               public const string Xslt_DuplicateWithParam = "Xslt_DuplicateWithParam";
+               public const string Xslt_ElementCntSel = "Xslt_ElementCntSel";
+               public const string Xslt_EmptyAttrValue = "Xslt_EmptyAttrValue";
+               public const string Xslt_EmptyAvtExpr = "Xslt_EmptyAvtExpr";
+               public const string Xslt_EmptyNsAlias = "Xslt_EmptyNsAlias";
+               public const string Xslt_ExcludeDefault = "Xslt_ExcludeDefault";
+               public const string Xslt_InputTooComplex = "Xslt_InputTooComplex";
+               public const string Xslt_InputTypeAnnotations = "Xslt_InputTypeAnnotations";
+               public const string Xslt_InvalidApplyImports = "Xslt_InvalidApplyImports";
+               public const string Xslt_InvalidAttrValue = "Xslt_InvalidAttrValue";
+               public const string Xslt_InvalidAttribute = "Xslt_InvalidAttribute";
+               public const string Xslt_InvalidCallTemplate = "Xslt_InvalidCallTemplate";
+               public const string Xslt_InvalidCompareOption = "Xslt_InvalidCompareOption";
+               public const string Xslt_InvalidContents = "Xslt_InvalidContents";
+               public const string Xslt_InvalidEncoding = "Xslt_InvalidEncoding";
+               public const string Xslt_InvalidExtensionNamespace = "Xslt_InvalidExtensionNamespace";
+               public const string Xslt_InvalidFormat = "Xslt_InvalidFormat";
+               public const string Xslt_InvalidFormat1 = "Xslt_InvalidFormat1";
+               public const string Xslt_InvalidFormat2 = "Xslt_InvalidFormat2";
+               public const string Xslt_InvalidFormat3 = "Xslt_InvalidFormat3";
+               public const string Xslt_InvalidFormat5 = "Xslt_InvalidFormat5";
+               public const string Xslt_InvalidFormat8 = "Xslt_InvalidFormat8";
+               public const string Xslt_InvalidLanguage = "Xslt_InvalidLanguage";
+               public const string Xslt_InvalidMethod = "Xslt_InvalidMethod";
+               public const string Xslt_InvalidModeAttribute = "Xslt_InvalidModeAttribute";
+               public const string Xslt_InvalidPattern = "Xslt_InvalidPattern";
+               public const string Xslt_InvalidPrefix = "Xslt_InvalidPrefix";
+               public const string Xslt_InvalidQName = "Xslt_InvalidQName";
+               public const string Xslt_InvalidVariable = "Xslt_InvalidVariable";
+               public const string Xslt_InvalidXPath = "Xslt_InvalidXPath";
+               public const string Xslt_ItemNull = "Xslt_ItemNull";
+               public const string Xslt_KeyCntUse = "Xslt_KeyCntUse";
+               public const string Xslt_KeyNotAllowed = "Xslt_KeyNotAllowed";
+               public const string Xslt_MissingAttribute = "Xslt_MissingAttribute";
+               public const string Xslt_ModeListAll = "Xslt_ModeListAll";
+               public const string Xslt_ModeListDup = "Xslt_ModeListDup";
+               public const string Xslt_ModeListEmpty = "Xslt_ModeListEmpty";
+               public const string Xslt_ModeWithoutMatch    = "Xslt_ModeWithoutMatch  ";
+               public const string Xslt_MultipleRoots = "Xslt_MultipleRoots";
+               public const string Xslt_NestedAvt = "Xslt_NestedAvt";
+               public const string Xslt_NoAttributeSet = "Xslt_NoAttributeSet";
+               public const string Xslt_NoDecimalFormat = "Xslt_NoDecimalFormat";
+               public const string Xslt_NoNavigatorConversion = "Xslt_NoNavigatorConversion";
+               public const string Xslt_NoNodeSetConversion = "Xslt_NoNodeSetConversion";
+               public const string Xslt_NoSelectNoContent = "Xslt_NoSelectNoContent";
+               public const string Xslt_NoWhen = "Xslt_NoWhen";
+               public const string Xslt_NodeSetNotNode = "Xslt_NodeSetNotNode";
+               public const string Xslt_NonTemplateTunnel = "Xslt_NonTemplateTunnel";
+               public const string Xslt_NotAtTop = "Xslt_NotAtTop";
+               public const string Xslt_NotEmptyContents = "Xslt_NotEmptyContents";
+               public const string Xslt_NotFirstImport = "Xslt_NotFirstImport";
+               public const string Xslt_NotYetImplemented = "Xslt_NotYetImplemented";
+               public const string Xslt_NullNsAtTopLevel = "Xslt_NullNsAtTopLevel";
+               public const string Xslt_OpenBracesAvt = "Xslt_OpenBracesAvt";
+               public const string Xslt_OpenLiteralAvt = "Xslt_OpenLiteralAvt";
+               public const string Xslt_PerformSortCntSel = "Xslt_PerformSortCntSel";
+               public const string Xslt_PriorityWithoutMatch = "Xslt_PriorityWithoutMatch";
+               public const string Xslt_RequiredAndSelect = "Xslt_RequiredAndSelect";
+               public const string Xslt_RequiredOnFunction = "Xslt_RequiredOnFunction";
+               public const string Xslt_ReservedNS = "Xslt_ReservedNS";
+               public const string Xslt_SchemaAttribute = "Xslt_SchemaAttribute";
+               public const string Xslt_SchemaAttributeValue = "Xslt_SchemaAttributeValue";
+               public const string Xslt_SchemaDeclaration = "Xslt_SchemaDeclaration";
+               public const string Xslt_ScriptAndExtensionClash = "Xslt_ScriptAndExtensionClash";
+               public const string Xslt_ScriptCompileErrors = "Xslt_ScriptCompileErrors";
+               public const string Xslt_ScriptCompileException = "Xslt_ScriptCompileException";
+               public const string Xslt_ScriptDub = "Xslt_ScriptDub";
+               public const string Xslt_ScriptEmpty = "Xslt_ScriptEmpty";
+               public const string Xslt_ScriptInvalidLanguage = "Xslt_ScriptInvalidLanguage";
+               public const string Xslt_ScriptInvalidPrefix = "Xslt_ScriptInvalidPrefix";
+               public const string Xslt_ScriptMixedLanguages = "Xslt_ScriptMixedLanguages";
+               public const string Xslt_ScriptNotAtTop = "Xslt_ScriptNotAtTop";
+               public const string Xslt_ScriptXsltNamespace = "Xslt_ScriptXsltNamespace";
+               public const string Xslt_ScriptsProhibited = "Xslt_ScriptsProhibited";
+               public const string Xslt_SingleRightAvt = "Xslt_SingleRightAvt";
+               public const string Xslt_SingleRightBraceInAvt = "Xslt_SingleRightBraceInAvt";
+               public const string Xslt_SortStable = "Xslt_SortStable";
+               public const string Xslt_TemplateNoAttrib = "Xslt_TemplateNoAttrib";
+               public const string Xslt_Terminate = "Xslt_Terminate";
+               public const string Xslt_TextNodesNotAllowed = "Xslt_TextNodesNotAllowed";
+               public const string Xslt_UndefinedKey = "Xslt_UndefinedKey";
+               public const string Xslt_UnexpectedElement = "Xslt_UnexpectedElement";
+               public const string Xslt_UnexpectedKeyword = "Xslt_UnexpectedKeyword";
+               public const string Xslt_UnknownExtensionElement = "Xslt_UnknownExtensionElement";
+               public const string Xslt_UnknownXsltFunction = "Xslt_UnknownXsltFunction";
+               public const string Xslt_UnsuppFunction = "Xslt_UnsuppFunction";
+               public const string Xslt_UnsupportedClrType = "Xslt_UnsupportedClrType";
+               public const string Xslt_UnsupportedXsltFunction = "Xslt_UnsupportedXsltFunction";
+               public const string Xslt_VariableCntSel2 = "Xslt_VariableCntSel2";
+               public const string Xslt_VariablesNotAllowed = "Xslt_VariablesNotAllowed";
+               public const string Xslt_WarningAsError = "Xslt_WarningAsError";
+               public const string Xslt_WdXslNamespace = "Xslt_WdXslNamespace";
+               public const string Xslt_WhenAfterOtherwise = "Xslt_WhenAfterOtherwise";
+               public const string Xslt_WrongNumberArgs = "Xslt_WrongNumberArgs";
+               public const string Xslt_WrongStylesheetElement = "Xslt_WrongStylesheetElement";
+               public const string Xslt_XmlnsAttr = "Xslt_XmlnsAttr";
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/System.XML/Res.cs b/mcs/class/System.XML/Res.cs
deleted file mode 100644 (file)
index 689d130..0000000
+++ /dev/null
@@ -1,1325 +0,0 @@
-/* How to verify that we have assigned valid string message for every constant field:
-
- MONO_PATH=../lib/net_4_5/ ../../../runtime/mono-wrapper       \
-  ../lib/net_4_5/csharp.exe -e "typeof (System.Xml.XmlReader)  \
-  .Assembly.GetTypes ().Where (t => t.Name.EndsWith (\"Res\")) \
-  .SelectMany (type => type.GetFields () \
-  .Where (f => f.Name == f.GetValue (null) as string)) \
-  .Select (f => f.Name)"
-*/
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-namespace System.Xml.Utils
-{
-       class Res
-       {
-               public const string Xslt_OpenBracesAvt = "Attribute value template \"{0}\" is not closed by '}'";
-               public const string Arg_IncompatibleParamType = "Type is incompatible.";
-               public const string Coll_BadOptFormat = "bad collation option format: {0} ";
-               public const string Coll_Unsupported = "Collation \"{0}\" is not supported.";
-               public const string Coll_UnsupportedLanguage = "Collation for language  \"{0}\" is not supported.";
-               public const string Coll_UnsupportedOpt = "Collation option \"{0}\" is not supported.";
-               public const string Coll_UnsupportedOptVal = "Value \"{1}\" is not supported for collation option \"{0}\".";
-               public const string Coll_UnsupportedSortOpt = "Sorting option \"{0}\" is not supported.";
-               public const string Qil_Validation = "QIL validation error";
-               public const string Sch_EnumFinished = "The enumerator has already reached at the end.";
-               public const string Sch_EnumNotStarted = "The enumerator has not started yet.";
-               public const string XPath_AtLeastNArgsExpected = "At least {1} arguments are expected for function \"{0}\".";
-               public const string XPath_AtMostMArgsExpected = "For function \"{0}\", {1} to {2} arguments are expected.";
-               public const string XPath_EofExpected = "End of XPath token is expected \"{0}\"";
-               public const string XPath_InvalidAxisInPattern = "Invalid axis in pattern";
-               public const string XPath_NArgsExpected = "{1} arguments are expected for function \"{0}\".";
-               public const string XPath_NOrMArgsExpected = "For function \"{0}\", {1} or {2} arguments are expected.";
-               public const string XPath_NodeSetArgumentExpected = "Node-set argument is expected for parameter \"{0}\" (at {1}).";
-               public const string XPath_NodeSetExpected = "Node set is expected.";
-               public const string XPath_NodeTestExpected = "Node test is expected.";
-               public const string XPath_PredicateAfterDot = "Predicate appeared atfer \".\".";
-               public const string XPath_PredicateAfterDotDot = "Predicate appeared after \"..\".";
-               public const string XPath_RtfInPathExpr = "Result tree fragment appeared in path expression.";
-               public const string XPath_ScientificNotation = "Invalid scientific notation in number.";
-               public const string XPath_TokenExpected = "Token \"{0}\" is expected.";
-               public const string XPath_UnclosedString = "String is not closed.";
-               public const string XPath_UnexpectedToken = "Unexpected token {0}";
-               public const string XmlIl_AmbiguousExtensionMethod = "Ambiguous extension method \"{1}\" in namespace \"{0}\" with {2} arguments are found.";
-               public const string XmlIl_BadXmlState = "Invalid XML state transition from {0} to {1}.";
-               public const string XmlIl_BadXmlStateAttr = "Invalid XML state transition in attribute.";
-               public const string XmlIl_ByRefType = "Parameter of ByRef type is not supported. Found in function {0} in namespace {1}";
-               public const string XmlIl_CantResolveEntity = "Cannot resolve entity \"{0}\" from data source of {1} type.";
-               public const string XmlIl_CantStripNav = "Whitespaces cannot be stripped from XPath navigator.";
-               public const string XmlIl_DocumentLoadError = "Could not load document '{0}'";
-               public const string XmlIl_ExtensionError = "Error in XSLT extension function \"{0}\"";
-               public const string XmlIl_GenericExtensionMethod = "Generic method is not supported for XSLT extension. Function \"{0}\" in namespace \"{1}\".";
-               public const string XmlIl_NmspAfterAttr = "Namespace node appeared after attribute node.";
-               public const string XmlIl_NmspConflict = "Conflicting namespace nodes appeared as xmlns{0}{1}=\"{2}\" while it is already mapped to \"{3}\".";
-               public const string XmlIl_NoDefaultDocument = "Default document is not defined.";
-               public const string XmlIl_NoExtensionMethod = "No method is found for extension function \"{0}\" in namespace \"{1}\" with {2} arguments.";
-               public const string XmlIl_NonPublicExtensionMethod = "The specified method for extension function \"{0}\" in namespace \"{1}\" is not public.";
-               public const string XmlIl_TooManyParameters = "Too many method parameters.";
-               public const string XmlIl_TopLevelAttrNmsp = "Attribute or namespace node is being generated as the top level node.";
-               public const string XmlIl_UnknownDocument = "Unknown document {0} is referenced.";
-               public const string XmlIl_UnknownExtObj = "Unknown extension object in namespace {0} is referenced.";
-               public const string XmlIl_UnknownParam = "Unknown parameter \"{0}\" in namespace \"{1}\" is referenced.";
-               public const string Xml_EndOfInnerExceptionStack = "--- End of inner exception stack trace ---";
-               public const string Xml_ErrorFilePosition = "File {0}, line {1}, position {2}.";
-               public const string Xml_InvalidOperation = "Invalid XML operation has occured.";
-               public const string Xml_UserException = "{0}";
-               public const string Xslt_AnalyzeStringChildOrder = "Incorrect child element order in \"analyze-string\" element.";
-               public const string Xslt_AnalyzeStringDupChild = "Duplicate child element in \"analyze-string\" element \"{0}\" is found.";
-               public const string Xslt_AnalyzeStringEmpty = "Empty \"analyze-child\" element.";
-               public const string Xslt_ApplyImports = "\"apply-imports\" is not available.";
-               public const string Xslt_AssemblyNameHref = "Both assembly name and href are specified.";
-               public const string Xslt_AttributeRedefinition = "Attribute redefinition is detected for \"{0}\".";
-               public const string Xslt_BistateAttribute = "Attribute \"{0}\" accepts only \"{1}\" and \"{2}\" as the value.";
-               public const string Xslt_BothMatchNameAbsent = "Both \"match\" and \"name\" attributes are absent. One of either is required.";
-               public const string Xslt_CannotLoadStylesheet = "Cannot load stylesheet \"{0}\". The entity is {1}.";
-               public const string Xslt_CantResolve = "Cannot resolve stylesheet \"{0}\".";
-               public const string Xslt_CharAttribute = "Unexpected character in attribute \"{0}\".";
-               public const string Xslt_CircularAttributeSet = "Attribute set \"{0}\" results in circular definition.";
-               public const string Xslt_CircularInclude = "\"{0}\" is specified to be included, but it results in circular inclusion.";
-               public const string Xslt_CircularReference = "Reference to \"{0}\" results in circular references.";
-               public const string Xslt_CollationSyntax = "Cannot determine default collation.";
-               public const string Xslt_CompileError2 = "XSLT compile error. See InnerException for details.";
-               public const string Xslt_CurrentNotAllowed = "Call to current function is not allowed here.";
-               public const string Xslt_DecimalFormatRedefined = "Decimal format symbol \"{0}\" is being redefined (as \"{1}\").";
-               public const string Xslt_DecimalFormatSignsNotDistinct = "Each of number sign characters must be unique: \"{0}\" and \"{1}\"";
-               public const string Xslt_DocumentFuncProhibited = "document function is prohibited";
-               public const string Xslt_DupDecimalFormat = "decimal-format \"{0}\" has duplicate specification.";
-               public const string Xslt_DupGlobalVariable = "Global variable \"{0}\" already exists.";
-               public const string Xslt_DupLocalVariable = "Local variable \"{0}\" already exists.";
-               public const string Xslt_DupNsAlias = "Namespace alias for \"{0}\" is already defined.";
-               public const string Xslt_DupOtherwise = "More than one \"otherwise\" definition is found.";
-               public const string Xslt_DupTemplateName = "Template \"{0}\" already exists.";
-               public const string Xslt_DupVarName = "Variable \"{0}\" is already defined.";
-               public const string Xslt_DuplicateWithParam = "\"with-param\" for \"{0}\" is already defined.";
-               public const string Xslt_ElementCntSel = "Element \"{0}\" cannot have both \"select\" attribute and element content at the same time.";
-               public const string Xslt_EmptyAttrValue = "Attribute \"{0}\" has empty value \"{1}\".";
-               public const string Xslt_EmptyAvtExpr = "Attribute value template is empty: \"{0}\"";
-               public const string Xslt_EmptyNsAlias = "Namespace alias for \"{0}\" is empty.";
-               public const string Xslt_ExcludeDefault = "#default cannot be excluded.";
-               public const string Xslt_InputTooComplex = "Too complicated XPath expression is detected.";
-               public const string Xslt_InputTypeAnnotations = "Inconsistent \"input-type-annotations\" is specified.";
-               public const string Xslt_InvalidApplyImports = "\"apply-imports\" is not applicable here.";
-               public const string Xslt_InvalidAttrValue = "For attribute \"{0}\", value \"{1}\" is invalid.";
-               public const string Xslt_InvalidAttribute = "Attribute \"{0}\" is invalid in element \"{1}\".";
-               public const string Xslt_InvalidCallTemplate = "Invalid \"call-template\" to \"{0}\" is found.";
-               public const string Xslt_InvalidCompareOption = "Invalid string comparison option \"{0}\" is specified.";
-               public const string Xslt_InvalidContents = "Invalid contents in \"{0}\" element.";
-               public const string Xslt_InvalidEncoding = "Invalid encoding name: \"{0}\".";
-               public const string Xslt_InvalidExtensionNamespace = "Invalid extension namespace.";
-               public const string Xslt_InvalidFormat = "Decimal format string is empty.";
-               public const string Xslt_InvalidFormat1 = "Invalid decimal format string: \"{0}\".";
-               public const string Xslt_InvalidFormat2 = "More than one decimal digit is found in decimal format string: \"{0}\"";
-               public const string Xslt_InvalidFormat3 = "More than one pattern is found in decimal format string: \"{0}\"";
-               public const string Xslt_InvalidFormat5 = "More than one decimal separator is found in decimal format string: \"{0}\"";
-               public const string Xslt_InvalidFormat8 = "Pattern without preceding digit or zero-digit has appeared.";
-               public const string Xslt_InvalidLanguage = "Language \"{0}\" is not supported.";
-               public const string Xslt_InvalidMethod = "Output method \"{0}\" is not supported.";
-               public const string Xslt_InvalidModeAttribute = "Template mode \"{0}\" is not supported.";
-               public const string Xslt_InvalidPattern = "Invalid pattern match occured with \"{0}\".";
-               public const string Xslt_InvalidPrefix = "Invalid XML prefix \"{0}\" is specified.";
-               public const string Xslt_InvalidQName = "Invalid QName \"{0}\" is specified.";
-               public const string Xslt_InvalidVariable = "Variable \"{0}\" could not be resolved.";
-               public const string Xslt_InvalidXPath = "Invalid XPath was specified: \"{0}\".";
-               public const string Xslt_ItemNull = "Item is null.";
-               public const string Xslt_KeyCntUse = "XSLT \"key\" needs either \"use\" attribute or content.";
-               public const string Xslt_KeyNotAllowed = "XSLT key is not allowed here.";
-               public const string Xslt_MissingAttribute = "Mandatory attribute \"{0}\" is missing.";
-               public const string Xslt_ModeListAll = "Only #default, #current and #all are the valid values in mode list.";
-               public const string Xslt_ModeListDup = "Mode \"{0}\" is already specified in the list.";
-               public const string Xslt_ModeListEmpty = "Mode list is empty.";
-               public const string Xslt_ModeWithoutMatch    = "\"mode\" is specified while no \"match\" is specified.";
-               public const string Xslt_MultipleRoots = "Multiple root element is being written for XML output.";
-               public const string Xslt_NestedAvt = "Nested attribute value template is found: \"{0}\"";
-               public const string Xslt_NoAttributeSet = "Specified attribute set \"{0}\" is not found.";
-               public const string Xslt_NoDecimalFormat = "decimal format \"{0}\" is not found.";
-               public const string Xslt_NoNavigatorConversion = "Argument cannot be converted to result tree fragment.";
-               public const string Xslt_NoNodeSetConversion = "Argument cannot be converted to node set.";
-               public const string Xslt_NoSelectNoContent = "Either \"select\" attribute or child node set is required in \"{0}\" element.";
-               public const string Xslt_NoWhen = "No \"when\" element appreared.";
-               public const string Xslt_NodeSetNotNode = "Node set contains no node.";
-               public const string Xslt_NonTemplateTunnel = "Not suppoted use of template parameter tunnel: \"{0}\".";
-               public const string Xslt_NotAtTop = "Node \"{0}\" is not at top level. Parent is \"{0}\".";
-               public const string Xslt_NotEmptyContents = "Content is not supported in \"{0}\" element.";
-               public const string Xslt_NotFirstImport = "Element \"import\" should be at first before other elements.";
-               public const string Xslt_NotYetImplemented = "\"{0}\" is not implemented yet.";
-               public const string Xslt_NullNsAtTopLevel = "\"null-namespace\" is not expected at top-level.";
-               public const string Xslt_OpenLiteralAvt = "Literal in attribute value template \"{0}\" is not closed";
-               public const string Xslt_PerformSortCntSel = "XSLT \"select\" element can only contain \"sort\" element.";
-               public const string Xslt_PriorityWithoutMatch = "In template, \"priority\" attribute is specified without \"match\" attribute.";
-               public const string Xslt_RequiredAndSelect = "Both \"required\" attribute and \"select\" attribute are specified in variable \"{0}\".";
-               public const string Xslt_RequiredOnFunction = "Attribute \"required\" is not supported in \"{0}\".";
-               public const string Xslt_ReservedNS = "\"{0}\" is a reserverd namespace.";
-               public const string Xslt_SchemaAttribute = "Invalid schema attribute \"{0}\".";
-               public const string Xslt_SchemaAttributeValue = "Invalid schema attribute value \"{1}\" for \"{1}\".";
-               public const string Xslt_SchemaDeclaration = "Not supported schema declaration on \"{0}\" element.";
-               public const string Xslt_ScriptAndExtensionClash = "MSXSL \"script\" and XSLT extension object conflict for \"{0}\" namespace.";
-               public const string Xslt_ScriptCompileErrors = "Script compile error occurred: {0}";
-               public const string Xslt_ScriptCompileException = "Could not start compiling script. There could be an issue in configuration, CodeDomProvider type, temporary file creation etc.";
-               public const string Xslt_ScriptDub = "MSXSL script or extension object for namespace \"{0}\" already exists.";
-               public const string Xslt_ScriptEmpty = "MSXSL script is empty.";
-               public const string Xslt_ScriptInvalidLanguage = "\"{0}\" is an invalid script language.";
-               public const string Xslt_ScriptInvalidPrefix = "Extension object for prefix \"{0}\" is not found.";
-               public const string Xslt_ScriptMixedLanguages = "For namespace \"{0}\" you are using different language from another script, which is not supported.";
-               public const string Xslt_ScriptNotAtTop = "element \"{0}\" should be a top-level child of \"script\" element.";
-               public const string Xslt_ScriptXsltNamespace = "XSLT namespace cannot be used as a script namespace.";
-               public const string Xslt_ScriptsProhibited = "MSXSL script is prohibited.";
-               public const string Xslt_SingleRightAvt = "Single right brace '}' has appeared within attribute value template: \"{0}\".";
-               public const string Xslt_SingleRightBraceInAvt = "Single right brace '}' has appeared outside attribute value template: \"{0}\". It must be escaped as \"}}\".";
-               public const string Xslt_SortStable = "Attribute \"stable\" is applicable only to the first \"sort\" element.";
-               public const string Xslt_TemplateNoAttrib = "Template has no name attribute.";
-               public const string Xslt_Terminate = "Terminating with: {0}";
-               public const string Xslt_TextNodesNotAllowed = "Text node is not allowed in {0} element.";
-               public const string Xslt_UndefinedKey = "Key '{0}\" is undefined.";
-               public const string Xslt_UnexpectedElement = "Element \"{0}\" is unexpected in {1} element.";
-               public const string Xslt_UnexpectedKeyword = "\"{0}\" is unexpected in {1} element.";
-               public const string Xslt_UnknownExtensionElement = "XSLT extension {0} is not found.";
-               public const string Xslt_UnknownXsltFunction = "XSLT function {0} is not found.";
-               public const string Xslt_UnsuppFunction = "XSLT function {0} is not supported.";
-               public const string Xslt_UnsupportedClrType = "CLR type {0} is not supported.";
-               public const string Xslt_UnsupportedXsltFunction = "XSLT function {0} is not supported.";
-               public const string Xslt_VariableCntSel2 = "Variable declaration cannot have both \"select\" attribute and contents.";
-               public const string Xslt_VariablesNotAllowed = "Variable cannot be referenced.";
-               public const string Xslt_WarningAsError = "Treating warning as error: {0}";
-               public const string Xslt_WdXslNamespace = "Specified namespace URI is for unsupported working draft version of XSLT.";
-               public const string Xslt_WhenAfterOtherwise = "\"when\" element appeared after \"otherwise\" element.";
-               public const string Xslt_WrongNumberArgs = "Wrong number of arguments for function \"{0}\": got {1}.";
-               public const string Xslt_WrongStylesheetElement = "stylesheet element is not found.";
-               public const string Xslt_XmlnsAttr = "\"xmlns\" is being written as an attribute node, using non-empty prefix and empty namespace.";
-
-               public const string Xslt_CompileError = "XSLT compile error at {0}({1},{2}). See InnerException for details.";
-
-               public static string GetString (string s, params object [] args)
-               {
-                       return args == null || args.Length == 0 ? s : string.Format (s, args);
-               }
-       }
-}
-
-namespace System.Xml
-{
-       
-       class Res 
-       {
-               public const string Xslt_IncompatibleCompiledStylesheetVersion = "Xslt_IncompatibleCompiledStylesheetVersion";
-               public const string Xslt_NotCompiledStylesheet = "Xslt_NotCompiledStylesheet";
-               public const string Xslt_NoStylesheetLoaded = "Xslt_NoStylesheetLoaded";
-               public const string Arg_IncompatibleParamType = "Arg_IncompatibleParamType";
-
-               public const string XmlPropertyReflectionError = "XmlPropertyReflectionError";
-               public const string XPathDocument_SchemaSetNotAllowed = "XPathDocument_SchemaSetNotAllowed";
-               public const string XPathDocument_MissingSchemas = "XPathDocument_MissingSchemas";
-               public const string XPathDocument_NotEnoughSchemaInfo = "XPathDocument_NotEnoughSchemaInfo";
-               public const string XPathDocument_ValidateInvalidNodeType = "XPathDocument_ValidateInvalidNodeType";
-               public const string Xml_RecursiveParEntity = "Xml_RecursiveParEntity";
-               public const string RefSyntaxNotSupportedForElements0 = "RefSyntaxNotSupportedForElements0";
-               public const string Xml_ErrorOpeningExternalDtd = "Xml_ErrorOpeningExternalDtd";
-               public const string Xml_CannotResolveEntityDtdIgnored = "Xml_CannotResolveEntityDtdIgnored";
-               public const string Arg_ExpectingXmlTextReader = "The XmlReader passed in to construct this XmlValidatingReaderImpl must be an instance of a System.Xml.XmlTextReader.";
-               public const string Arg_CannotCreateNode = "Cannot create node of type {0}.";
-               public const string Xnr_ResolveEntity = "Xnr_ResolveEntity";
-               public const string Enc_InvalidByteInEncoding = "Enc_InvalidByteInEncoding";
-               /*
-               public const string SqlCommandBuilder_DataAdapter = "SqlCommandBuilder_DataAdapter";
-               public const string SqlCommand_Notification = "SqlCommand_Notification";
-               public const string SqlCommand_NotificationAutoEnlist = "SqlCommand_NotificationAutoEnlist";
-               public const string SqlConnection_ClientConnectionId = "SqlConnection_ClientConnectionId";
-               public const string SqlConnection_ConnectionString = "SqlConnection_ConnectionString";
-               public const string SqlConnection_ConnectionTimeout = "SqlConnection_ConnectionTimeout";
-               public const string SqlConnection_Credential = "SqlConnection_Credential";
-               public const string SqlConnection_DataSource = "SqlConnection_DataSource";
-               public const string SqlConnection_Database = "SqlConnection_Database";
-               public const string SqlConnection_PacketSize = "SqlConnection_PacketSize";
-               public const string SqlConnection_ServerVersion = "SqlConnection_ServerVersion";
-               public const string SqlConnection_StatisticsEnabled = "SqlConnection_StatisticsEnabled";
-               public const string SqlConnection_WorkstationId = "SqlConnection_WorkstationId";
-               public const string SqlConvert_ConvertFailed = "SqlConvert_ConvertFailed";
-               public const string SqlDelegatedTransaction_PromotionFailed = "SqlDelegatedTransaction_PromotionFailed";
-               public const string SqlDependency_AddCommandDependency = "SqlDependency_AddCommandDependency";
-               public const string SqlDependency_DatabaseBrokerDisabled = "SqlDependency_DatabaseBrokerDisabled";
-               public const string SqlDependency_DefaultOptionsButNoStart = "SqlDependency_DefaultOptionsButNoStart";
-               public const string SqlDependency_DuplicateStart = "SqlDependency_DuplicateStart";
-               public const string SqlDependency_EventNoDuplicate = "SqlDependency_EventNoDuplicate";
-               public const string SqlDependency_HasChanges = "SqlDependency_HasChanges";
-               public const string SqlDependency_Id = "SqlDependency_Id";
-               public const string SqlDependency_IdMismatch = "SqlDependency_IdMismatch";
-               public const string SqlDependency_InvalidTimeout = "SqlDependency_InvalidTimeout";
-               public const string SqlDependency_NoMatchingServerDatabaseStart = "SqlDependency_NoMatchingServerDatabaseStart";
-               public const string SqlDependency_NoMatchingServerStart = "SqlDependency_NoMatchingServerStart";
-               public const string SqlDependency_OnChange = "SqlDependency_OnChange";
-               public const string SqlFileStream_FileAlreadyInTransaction = "SqlFileStream_FileAlreadyInTransaction";
-               public const string SqlFileStream_InvalidParameter = "SqlFileStream_InvalidParameter";
-               public const string SqlFileStream_InvalidPath = "SqlFileStream_InvalidPath";
-               public const string SqlFileStream_PathNotValidDiskResource = "SqlFileStream_PathNotValidDiskResource";
-               public const string SqlMetaData_InvalidSqlDbTypeForConstructorFormat = "SqlMetaData_InvalidSqlDbTypeForConstructorFormat";
-               public const string SqlMetaData_NameTooLong = "SqlMetaData_NameTooLong";
-               public const string SqlMetaData_NoMetadata = "SqlMetaData_NoMetadata";
-               public const string SqlMetaData_SpecifyBothSortOrderAndOrdinal = "SqlMetaData_SpecifyBothSortOrderAndOrdinal";
-               public const string SqlMisc_AlreadyFilledMessage = "SqlMisc_AlreadyFilledMessage";
-               public const string SqlMisc_ArithOverflowMessage = "SqlMisc_ArithOverflowMessage";
-               public const string SqlMisc_BufferInsufficientMessage = "SqlMisc_BufferInsufficientMessage";
-               public const string SqlMisc_ClosedXmlReaderMessage = "SqlMisc_ClosedXmlReaderMessage";
-               public const string SqlMisc_CompareDiffCollationMessage = "SqlMisc_CompareDiffCollationMessage";
-               public const string SqlMisc_ConcatDiffCollationMessage = "SqlMisc_ConcatDiffCollationMessage";
-               public const string SqlMisc_ConversionOverflowMessage = "SqlMisc_ConversionOverflowMessage";
-               public const string SqlMisc_DateTimeOverflowMessage = "SqlMisc_DateTimeOverflowMessage";
-               public const string SqlMisc_DivideByZeroMessage = "SqlMisc_DivideByZeroMessage";
-               public const string SqlMisc_FormatMessage = "SqlMisc_FormatMessage";
-               public const string SqlMisc_InvalidArraySizeMessage = "SqlMisc_InvalidArraySizeMessage";
-               public const string SqlMisc_InvalidDateTimeMessage = "SqlMisc_InvalidDateTimeMessage";
-               public const string SqlMisc_InvalidFlagMessage = "SqlMisc_InvalidFlagMessage";
-               public const string SqlMisc_InvalidOpStreamClosed = "SqlMisc_InvalidOpStreamClosed";
-               public const string SqlMisc_InvalidOpStreamNonReadable = "SqlMisc_InvalidOpStreamNonReadable";
-               public const string SqlMisc_InvalidOpStreamNonSeekable = "SqlMisc_InvalidOpStreamNonSeekable";
-               public const string SqlMisc_InvalidOpStreamNonWritable = "SqlMisc_InvalidOpStreamNonWritable";
-               public const string SqlMisc_InvalidPrecScaleMessage = "SqlMisc_InvalidPrecScaleMessage";
-               public const string SqlMisc_MessageString = "SqlMisc_MessageString";
-               public const string SqlMisc_NoBufferMessage = "SqlMisc_NoBufferMessage";
-               public const string SqlMisc_NotFilledMessage = "SqlMisc_NotFilledMessage";
-               public const string SqlMisc_NullString = "SqlMisc_NullString";
-               public const string SqlMisc_NullValueMessage = "SqlMisc_NullValueMessage";
-               public const string SqlMisc_NumeToDecOverflowMessage = "SqlMisc_NumeToDecOverflowMessage";
-               public const string SqlMisc_SqlTypeMessage = "SqlMisc_SqlTypeMessage";
-               public const string SqlMisc_StreamErrorMessage = "SqlMisc_StreamErrorMessage";
-               public const string SqlMisc_SubclassMustOverride = "SqlMisc_SubclassMustOverride";
-               public const string SqlMisc_TimeZoneSpecifiedMessage = "SqlMisc_TimeZoneSpecifiedMessage";
-               public const string SqlMisc_TruncationMaxDataMessage = "SqlMisc_TruncationMaxDataMessage";
-               public const string SqlMisc_TruncationMessage = "SqlMisc_TruncationMessage";
-               public const string SqlMisc_WriteNonZeroOffsetOnNullMessage = "SqlMisc_WriteNonZeroOffsetOnNullMessage";
-               public const string SqlMisc_WriteOffsetLargerThanLenMessage = "SqlMisc_WriteOffsetLargerThanLenMessage";
-               public const string SqlNotify_SqlDepCannotBeCreatedInProc = "SqlNotify_SqlDepCannotBeCreatedInProc";
-               public const string SqlParameter_DBNullNotSupportedForTVP = "SqlParameter_DBNullNotSupportedForTVP";
-               public const string SqlParameter_InvalidTableDerivedPrecisionForTvp = "SqlParameter_InvalidTableDerivedPrecisionForTvp";
-               public const string SqlParameter_ParameterName = "SqlParameter_ParameterName";
-               public const string SqlParameter_SqlDbType = "SqlParameter_SqlDbType";
-               public const string SqlParameter_UnexpectedTypeNameForNonStruct = "SqlParameter_UnexpectedTypeNameForNonStruct";
-               public const string SqlParameter_UnsupportedTVPOutputParameter = "SqlParameter_UnsupportedTVPOutputParameter";
-               public const string SqlParameter_XmlSchemaCollectionDatabase = "SqlParameter_XmlSchemaCollectionDatabase";
-               public const string SqlParameter_XmlSchemaCollectionName = "SqlParameter_XmlSchemaCollectionName";
-               public const string SqlParameter_XmlSchemaCollectionOwningSchema = "SqlParameter_XmlSchemaCollectionOwningSchema";
-               public const string SqlPipe_AlreadyHasAnOpenResultSet = "SqlPipe_AlreadyHasAnOpenResultSet";
-               public const string SqlPipe_CommandHookedUpToNonContextConnection = "SqlPipe_CommandHookedUpToNonContextConnection";
-               public const string SqlPipe_DoesNotHaveAnOpenResultSet = "SqlPipe_DoesNotHaveAnOpenResultSet";
-               public const string SqlPipe_IsBusy = "SqlPipe_IsBusy";
-               public const string SqlPipe_MessageTooLong = "SqlPipe_MessageTooLong";
-               public const string SqlProvider_DuplicateSortOrdinal = "SqlProvider_DuplicateSortOrdinal";
-               public const string SqlProvider_InvalidDataColumnMaxLength = "SqlProvider_InvalidDataColumnMaxLength";
-               public const string SqlProvider_InvalidDataColumnType = "SqlProvider_InvalidDataColumnType";
-               public const string SqlProvider_MissingSortOrdinal = "SqlProvider_MissingSortOrdinal";
-               public const string SqlProvider_NotEnoughColumnsInStructuredType = "SqlProvider_NotEnoughColumnsInStructuredType";
-               public const string SqlProvider_SortOrdinalGreaterThanFieldCount = "SqlProvider_SortOrdinalGreaterThanFieldCount";
-               */
-               public const string SqlTypes_ArithOverflow = "SqlTypes_ArithOverflow";
-               public const string SqlTypes_ArithTruncation = "SqlTypes_ArithTruncation";
-               public const string SqlTypes_DivideByZero = "SqlTypes_DivideByZero";
-               public const string SqlUdtReason_NoUdtAttribute = "SqlUdtReason_NoUdtAttribute";
-               public const string SqlUdt_InvalidUdtMessage = "SqlUdt_InvalidUdtMessage";
-               public const string Sql_BulkLoadLcidMismatch = "Sql_BulkLoadLcidMismatch";
-               public const string Sql_CanotCreateNormalizer = "Sql_CanotCreateNormalizer";
-               public const string Sql_InternalError = "Sql_InternalError";
-               public const string Sql_MismatchedMetaDataDirectionArrayLengths = "Sql_MismatchedMetaDataDirectionArrayLengths";
-               public const string Sql_NullCommandText = "Sql_NullCommandText";
-               public const string Xml_AsyncIsRunningException = "Xml_AsyncIsRunningException";
-               public const string Xml_AttlistDuplEnumValue = "Xml_AttlistDuplEnumValue";
-               public const string Xml_AttlistDuplNotationValue = "Xml_AttlistDuplNotationValue";
-               public const string Xml_AttributeValues = "Xml_AttributeValues";
-               public const string Xml_BadAttributeChar = "Xml_BadAttributeChar";
-               public const string Xml_BadDTDLocation = "Xml_BadDTDLocation";
-               public const string Xml_BadDecimalEntity = "Xml_BadDecimalEntity";
-               public const string Xml_BadHexEntity = "Xml_BadHexEntity";
-               public const string Xml_BadNameChar = "The '{0}' character, hexadecimal value {1}, cannot be included in a name.";
-               public const string Xml_BadNameCharWithPos = "Xml_BadNameCharWithPos";
-               public const string Xml_BadNamespaceDecl = "Xml_BadNamespaceDecl";
-               public const string Xml_BadStartNameChar = "Name cannot begin with the '{0}' character, hexadecimal value {1}.";
-               public const string Xml_CDATAEndInText = "Xml_CDATAEndInText";
-               public const string Xml_CanNotBindToReservedNamespace = "Cannot bind to the reserved namespace.";
-               public const string Xml_CanNotDeserializeObjectType = "Xml_CanNotDeserializeObjectType";
-               public const string Xml_CannotConvert = "Xml_CannotConvert";
-               public const string Xml_CannotInstantiateAbstract = "Xml_CannotInstantiateAbstract";
-               public const string Xml_CannotResolveEntity = "Xml_CannotResolveEntity";
-               public const string Xml_CannotResolveExternalSubset = "Xml_CannotResolveExternalSubset";
-               public const string Xml_CannotResolveUrl = "Xml_CannotResolveUrl";
-               public const string Xml_CannotStartDocumentOnFragment = "WriteStartDocument cannot be called on writers created with ConformanceLevel.Fragment.";
-               public const string Xml_CannotWriteXmlDecl = "Cannot write XML declaration. XML declaration can be only at the beginning of the document.";
-               public const string Xml_CharEntityOverflow = "Xml_CharEntityOverflow";
-               public const string Xml_CircularComplexType = "Xml_CircularComplexType";
-               public const string Xml_Closed = "The Writer is closed.";
-               public const string Xml_ClosedOrError = "The Writer is closed or in error state.";
-               public const string Xml_ClosedOrErrorReader = "Xml_ClosedOrErrorReader";
-               public const string Xml_ColonInLocalName = "Xml_ColonInLocalName";
-               public const string Xml_ColumnConflict = "Xml_ColumnConflict";
-               public const string Xml_ConformanceLevelFragment = "Make sure that the ConformanceLevel setting is set to ConformanceLevel.Fragment or ConformanceLevel.Auto if you want to write an XML fragment.";
-               public const string Xml_DataTableInferenceNotSupported = "Xml_DataTableInferenceNotSupported";
-               public const string Xml_DatatypeNotDefined = "Xml_DatatypeNotDefined";
-               public const string Xml_DefaultException = "Xml_DefaultException";
-               public const string Xml_DoubleBaseUri = "Xml_DoubleBaseUri";
-               public const string Xml_DtdAfterRootElement = "Xml_DtdAfterRootElement";
-               public const string Xml_DtdAlreadyWritten = "The DTD has already been written out.";
-               public const string Xml_DtdIsProhibited = "Xml_DtdIsProhibited";
-               public const string Xml_DtdIsProhibitedEx = "Xml_DtdIsProhibitedEx";
-               public const string Xml_DtdNotAllowedInFragment = "DTD is not allowed in XML fragments.";
-               public const string Xml_DupAttributeName = "'{0}' is a duplicate attribute name.";
-               public const string Xml_DupXmlDecl = "Cannot write XML declaration. WriteStartDocument method has already written it.";
-               public const string Xml_DuplicateConstraint = "Xml_DuplicateConstraint";
-               public const string Xml_DynamicWithoutXmlSerializable = "Xml_DynamicWithoutXmlSerializable";
-               public const string Xml_ElementNotFound = "Xml_ElementNotFound";
-               public const string Xml_ElementNotFoundNs = "Xml_ElementNotFoundNs";
-               public const string Xml_ElementTypeNotFound = "Xml_ElementTypeNotFound";
-               public const string Xml_EmptyLocalName = "The empty string '' is not a valid local name.";
-               public const string Xml_EmptyName = "The empty string '' is not a valid name.";
-               public const string Xml_EmptyUrl = "Xml_EmptyUrl";
-               public const string Xml_EncodingSwitchAfterResetState = "Xml_EncodingSwitchAfterResetState";
-               public const string Xml_EndOfInnerExceptionStack = "Xml_EndOfInnerExceptionStack";
-               public const string Xml_EntityHandling = "Xml_EntityHandling";
-               public const string Xml_EntityRefNesting = "Xml_EntityRefNesting";
-               public const string Xml_EnumerationRequired = "Xml_EnumerationRequired";
-               public const string Xml_ErrorFilePosition = "Xml_ErrorFilePosition";
-               public const string Xml_ErrorOpeningExternalEntity = "Xml_ErrorOpeningExternalEntity";
-               public const string Xml_ErrorParsingEntityName = "Xml_ErrorParsingEntityName";
-               public const string Xml_ErrorPosition = "Line {0}, position {1}.";
-               public const string Xml_ExpectAttType = "Xml_ExpectAttType";
-               public const string Xml_ExpectDtdMarkup = "Xml_ExpectDtdMarkup";
-               public const string Xml_ExpectExternalIdOrEntityValue = "Xml_ExpectExternalIdOrEntityValue";
-               public const string Xml_ExpectExternalOrClose = "Xml_ExpectExternalOrClose";
-               public const string Xml_ExpectExternalOrPublicId = "Xml_ExpectExternalOrPublicId";
-               public const string Xml_ExpectIgnoreOrInclude = "Xml_ExpectIgnoreOrInclude";
-               public const string Xml_ExpectNoWhitespace = "Xml_ExpectNoWhitespace";
-               public const string Xml_ExpectOp = "Xml_ExpectOp";
-               public const string Xml_ExpectPcData = "Xml_ExpectPcData";
-               public const string Xml_ExpectSubOrClose = "Xml_ExpectSubOrClose";
-               public const string Xml_ExpectingWhiteSpace = "Xml_ExpectingWhiteSpace";
-               public const string Xml_ExternalEntityInAttValue = "Xml_ExternalEntityInAttValue";
-               public const string Xml_ExternalEntityInStandAloneDocument = "Xml_ExternalEntityInStandAloneDocument";
-               public const string Xml_FoundEntity = "Xml_FoundEntity";
-               public const string Xml_FragmentId = "Xml_FragmentId";
-               public const string Xml_IncompatibleConformanceLevel = "Xml_IncompatibleConformanceLevel";
-               public const string Xml_IncompleteDtdContent = "Xml_IncompleteDtdContent";
-               public const string Xml_IncompleteEntity = "Xml_IncompleteEntity";
-               public const string Xml_IndentCharsNotWhitespace = "Xml_IndentCharsNotWhitespace";
-               public const string Xml_InternalError = "Xml_InternalError";
-               public const string Xml_InvalidAttributeType = "Xml_InvalidAttributeType";
-               public const string Xml_InvalidAttributeType1 = "Xml_InvalidAttributeType1";
-               public const string Xml_InvalidBase64Value = "'{0}' is not a valid Base64 text sequence.";
-               public const string Xml_InvalidBinHexValue = "'{0}' is not a valid BinHex text sequence.";
-               public const string Xml_InvalidBinHexValueOddCount = "'{0}' is not a valid BinHex text sequence. The sequence must contain an even number of characters.";
-               public const string Xml_InvalidCDataChars = "Cannot have ']]&gt;' inside an XML CDATA block.";
-               public const string Xml_InvalidCharInThisEncoding = "Xml_InvalidCharInThisEncoding";
-               public const string Xml_InvalidCharacter = "'{0}', hexadecimal value {1}, is an invalid character.";
-               public const string Xml_InvalidCharsInIndent = "Xml_InvalidCharsInIndent";
-               public const string Xml_InvalidCommentChars = "An XML comment cannot contain '--', and '-' cannot be the last character.";
-               public const string Xml_InvalidConditionalSection = "Xml_InvalidConditionalSection";
-               public const string Xml_InvalidContentModel = "Xml_InvalidContentModel";
-               public const string Xml_InvalidField = "Xml_InvalidField";
-               public const string Xml_InvalidIndentation = "Indentation value must be greater than 0.";
-               public const string Xml_InvalidKey = "Xml_InvalidKey";
-               public const string Xml_InvalidNameChars = "Invalid name character in '{0}'.";
-               public const string Xml_InvalidNameCharsDetail = "Invalid name character in '{0}'. The '{1}' character, hexadecimal value {2}, cannot be included in a name.";
-               public const string Xml_InvalidNmToken = "Xml_InvalidNmToken";
-               public const string Xml_InvalidNodeType = "'{0}' is an invalid XmlNodeType.";
-               public const string Xml_InvalidOperation = "Operation is not valid due to the current state of the object.";
-               public const string Xml_InvalidPIName = "'{0}' is an invalid name for processing instructions.";
-               public const string Xml_InvalidParEntityRef = "Xml_InvalidParEntityRef";
-               public const string Xml_InvalidPiChars = "Cannot have '?&gt;' inside an XML processing instruction.";
-               public const string Xml_InvalidPosition = "Xml_InvalidPosition";
-               public const string Xml_InvalidPrefix = "Prefixes beginning with \"xml\" (regardless of whether the characters are uppercase, lowercase, or some combination thereof) are reserved for use by XML.";
-               public const string Xml_InvalidQuote = "Invalid XML attribute quote character. Valid attribute quote characters are ' and \".";
-               public const string Xml_InvalidReadContentAs = "The {0} method is not supported on node type {1}. If you want to read typed content of an element, use the ReadElementContentAs method.";
-               public const string Xml_InvalidReadElementContentAs = "The {0} method is not supported on node type {1}.";
-               public const string Xml_InvalidReadValueChunk = "Xml_InvalidReadValueChunk";
-               public const string Xml_InvalidResetStateCall = "Xml_InvalidResetStateCall";
-               public const string Xml_InvalidRootData = "Xml_InvalidRootData";
-               public const string Xml_InvalidSelector = "Xml_InvalidSelector";
-               public const string Xml_InvalidSurrogateHighChar = "Invalid high surrogate character (0x{0}). A high surrogate character must have a value from range (0xD800 - 0xDBFF).";
-               public const string Xml_InvalidSurrogateMissingLowChar = "The surrogate pair is invalid. Missing a low surrogate character.";
-               public const string Xml_InvalidSurrogatePairWithArgs = "The surrogate pair (0x{0}, 0x{1}) is invalid. A high surrogate character (0xD800 - 0xDBFF) must always be paired with a low surrogate character (0xDC00 - 0xDFFF).";
-               public const string Xml_InvalidTextDecl = "Xml_InvalidTextDecl";
-               public const string Xml_InvalidVersionNumber = "Xml_InvalidVersionNumber";
-               public const string Xml_InvalidWhitespaceCharacter = "Xml_InvalidWhitespaceCharacter";
-               public const string Xml_InvalidXmlDecl = "Xml_InvalidXmlDecl";
-               public const string Xml_InvalidXmlDocument = "Xml_InvalidXmlDocument";
-               public const string Xml_InvalidXmlSpace = "'{0}' is an invalid xml:space value.";
-               public const string Xml_IsDataSetAttributeMissingInSchema = "Xml_IsDataSetAttributeMissingInSchema";
-               public const string Xml_LimitExceeded = "Xml_LimitExceeded";
-               public const string Xml_MergeDuplicateDeclaration = "Xml_MergeDuplicateDeclaration";
-               public const string Xml_MessageWithErrorPosition = "{0} Line {1}, position {2}.";
-               public const string Xml_MismatchKeyLength = "Xml_MismatchKeyLength";
-               public const string Xml_MissingAttribute = "Xml_MissingAttribute";
-               public const string Xml_MissingByteOrderMark = "Xml_MissingByteOrderMark";
-               public const string Xml_MissingRefer = "Xml_MissingRefer";
-               public const string Xml_MissingRoot = "Xml_MissingRoot";
-               public const string Xml_MissingSQL = "Xml_MissingSQL";
-               public const string Xml_MissingTable = "Xml_MissingTable";
-               public const string Xml_MixedReadElementContentAs = "Xml_MixedReadElementContentAs";
-               public const string Xml_MixingBinaryContentMethods = "ReadContentAsBase64 and ReadContentAsBinHex method calls cannot be mixed with calls to ReadElementContentAsBase64 and ReadElementContentAsBinHex.";
-               public const string Xml_MixingReadValueChunkWithBinary = "Xml_MixingReadValueChunkWithBinary";
-               public const string Xml_MixingV1StreamingWithV2Binary = "Xml_MixingV1StreamingWithV2Binary";
-               public const string Xml_MultipleDTDsProvided = "Xml_MultipleDTDsProvided";
-               public const string Xml_MultipleParentRows = "Xml_MultipleParentRows";
-               public const string Xml_MultipleRoots = "Xml_MultipleRoots";
-               public const string Xml_MultipleTargetConverterEmpty = "Xml_MultipleTargetConverterEmpty";
-               public const string Xml_MultipleValidaitonTypes = "Xml_MultipleValidaitonTypes";
-               public const string Xml_NamespaceDeclXmlXmlns = "Prefix '{0}' cannot be mapped to namespace name reserved for \"xml\" or \"xmlns\".";
-               public const string Xml_NametableMismatch = "Xml_NametableMismatch";
-               public const string Xml_NestedCircular = "Xml_NestedCircular";
-               public const string Xml_NoDTDPresent = "Xml_NoDTDPresent";
-               public const string Xml_NoMultipleRoots = "Xml_NoMultipleRoots";
-               public const string Xml_NoNamespaces = "Cannot set the namespace if Namespaces is 'false'.";
-               public const string Xml_NoRoot = "Document does not have a root element.";
-               public const string Xml_NoStartTag = "There was no XML start tag open.";
-               public const string Xml_NoValidation = "Xml_NoValidation";
-               public const string Xml_NonWhitespace = "Only white space characters should be used.";
-               public const string Xml_NotEnoughSpaceForSurrogatePair = "Xml_NotEnoughSpaceForSurrogatePair";
-               public const string Xml_NotInWriteState = "Xml_NotInWriteState";
-               public const string Xml_NotSameNametable = "Xml_NotSameNametable";
-               public const string Xml_NotTheFirst = "WriteStartDocument needs to be the first call.";
-               public const string Xml_NullResolver = "Resolving of external URIs was prohibited.";
-               public const string Xml_PartialContentNodeTypeNotSupportedEx = "Xml_PartialContentNodeTypeNotSupportedEx";
-               public const string Xml_PolymorphismNotSupported = "Xml_PolymorphismNotSupported";
-               public const string Xml_PrefixForEmptyNs = "Cannot use a prefix with an empty namespace.";
-               public const string Xml_ReadBinaryContentNotSupported = "Xml_ReadBinaryContentNotSupported";
-               public const string Xml_ReadContentAsFormatException = "Xml_ReadContentAsFormatException";
-               public const string Xml_ReadOnlyProperty = "Xml_ReadOnlyProperty";
-               public const string Xml_ReadSubtreeNotOnElement = "Xml_ReadSubtreeNotOnElement";
-               public const string Xml_ReadValueChunkNotSupported = "Xml_ReadValueChunkNotSupported";
-               public const string Xml_ReaderAsyncNotSetException = "Xml_ReaderAsyncNotSetException";
-               public const string Xml_RecursiveGenEntity = "Xml_RecursiveGenEntity";
-               public const string Xml_RedefinePrefix = "The prefix '{0}' cannot be redefined from '{1}' to '{2}' within the same start element tag.";
-               public const string Xml_RelationChildKeyMissing = "Xml_RelationChildKeyMissing";
-               public const string Xml_RelationChildNameMissing = "Xml_RelationChildNameMissing";
-               public const string Xml_RelationParentNameMissing = "Xml_RelationParentNameMissing";
-               public const string Xml_RelationTableKeyMissing = "Xml_RelationTableKeyMissing";
-               public const string Xml_RelativeUriNotSupported = "Relative URIs are not supported.";
-               public const string Xml_SimpleTypeNotSupported = "Xml_SimpleTypeNotSupported";
-               public const string Xml_StackOverflow = "Xml_StackOverflow";
-               public const string Xml_SurrogatePairSplit = "The second character surrogate pair is not in the input buffer to be written.";
-               public const string Xml_TagMismatchEx = "'{0}' is expected.";
-               public const string Xml_TooManyIsDataSetAtributeInSchema = "Xml_TooManyIsDataSetAtributeInSchema";
-               public const string Xml_UnclosedConditionalSection = "Xml_UnclosedConditionalSection";
-               public const string Xml_UnclosedQuote = "Xml_UnclosedQuote";
-               public const string Xml_UndeclaredEntity = "Xml_UndeclaredEntity";
-               public const string Xml_UndeclaredParEntity = "Reference to undeclared parameter entity '{0}'.";
-               public const string Xml_UndefNamespace = "The '{0}' namespace is not defined.";
-               public const string Xml_UndefPrefix = "An undefined prefix is in use.";
-               public const string Xml_UndefinedDatatype = "Xml_UndefinedDatatype";
-               public const string Xml_UnexpectedCDataEnd = "Xml_UnexpectedCDataEnd";
-               public const string Xml_UnexpectedEOF = "Xml_UnexpectedEOF";
-               public const string Xml_UnexpectedEOF1 = "Xml_UnexpectedEOF1";
-               public const string Xml_UnexpectedEOFInElementContent = "Xml_UnexpectedEOFInElementContent";
-               public const string Xml_UnexpectedEndTag = "Xml_UnexpectedEndTag";
-               public const string Xml_UnexpectedNodeInSimpleContent = "Xml_UnexpectedNodeInSimpleContent";
-               public const string Xml_UnexpectedNodeType = "Unexpected XmlNodeType: '{0}'.";
-               public const string Xml_UnexpectedToken = "Xml_UnexpectedToken";
-               public const string Xml_UnexpectedTokenEx = "Xml_UnexpectedTokenEx";
-               public const string Xml_UnexpectedTokens2 = "Xml_UnexpectedTokens2";
-               public const string Xml_UnknownEncoding = "Xml_UnknownEncoding";
-               public const string Xml_UnknownNs = "Xml_UnknownNs";
-               public const string Xml_UnparsedEntityRef = "Xml_UnparsedEntityRef";
-               public const string Xml_UnsupportedClass = "Object type is not supported.";
-               public const string Xml_UntrustedCodeSettingResolver = "XmlResolver can be set only by fully trusted code.";
-               public const string Xml_UserException = "{0}";
-               public const string Xml_ValueOutOfRange = "Xml_ValueOutOfRange";
-               public const string Xml_WhitespaceHandling = "Xml_WhitespaceHandling";
-               public const string Xml_WriterAsyncNotSetException = "Xml_WriterAsyncNotSetException";
-               public const string Xml_WrongToken = "Token {0} in state {1} would result in an invalid XML document.";
-               public const string Xml_XapResolverCannotOpenUri = "Xml_XapResolverCannotOpenUri";
-               public const string Xml_XmlDeclNotFirst = "Cannot insert specified type of node as a child of this node.";
-               public const string Xml_XmlPrefix = "Prefix \"xml\" is reserved for use by XML and can be mapped only to namespace name \"http://www.w3.org/XML/1998/namespace\".";
-               public const string Xml_XmlnsBelongsToReservedNs = "The 'xmlns' attribute is bound to the reserved namespace 'http://www.w3.org/2000/xmlns/'.";
-               public const string Xml_XmlnsPrefix = "Prefix \"xmlns\" is reserved for use by XML.";
-               public const string XmlAbstractType = "XmlAbstractType";
-               public const string XmlAnonymousBaseType = "XmlAnonymousBaseType";
-               public const string XmlAnonymousInclude = "XmlAnonymousInclude";
-               public const string XmlAnyElementDuplicate = "XmlAnyElementDuplicate";
-               public const string XmlArrayItemAmbiguousTypes = "XmlArrayItemAmbiguousTypes";
-               public const string XmlAttributeHasNoName = "XmlAttributeHasNoName";
-               public const string XmlAttributeSetAgain = "XmlAttributeSetAgain";
-               public const string XmlBadBaseElement = "XmlBadBaseElement";
-               public const string XmlBadBaseType = "XmlBadBaseType";
-               public const string XmlBadName = "A node of type '{0}' cannot have the name '{1}'.";
-               public const string XmlBareAttributeMember = "XmlBareAttributeMember";
-               public const string XmlBareTextMember = "XmlBareTextMember";
-               public const string XmlBin_InvalidQNameID = "XmlBin_InvalidQNameID";
-               public const string XmlBin_MissingEndCDATA = "XmlBin_MissingEndCDATA";
-               public const string XmlBinary_AttrWithNsNoPrefix = "XmlBinary_AttrWithNsNoPrefix";
-               public const string XmlBinary_CastNotSupported = "XmlBinary_CastNotSupported";
-               public const string XmlBinary_InvalidProtocolVersion = "XmlBinary_InvalidProtocolVersion";
-               public const string XmlBinary_InvalidSignature = "XmlBinary_InvalidSignature";
-               public const string XmlBinary_InvalidSqlDecimal = "XmlBinary_InvalidSqlDecimal";
-               public const string XmlBinary_InvalidStandalone = "XmlBinary_InvalidStandalone";
-               public const string XmlBinary_ListsOfValuesNotSupported = "XmlBinary_ListsOfValuesNotSupported";
-               public const string XmlBinary_NoParserContext = "XmlBinary_NoParserContext";
-               public const string XmlBinary_NoRemapPrefix = "XmlBinary_NoRemapPrefix";
-               public const string XmlBinary_UnexpectedToken = "XmlBinary_UnexpectedToken";
-               public const string XmlBinary_UnsupportedCodePage = "XmlBinary_UnsupportedCodePage";
-               public const string XmlBinary_ValueTooBig = "XmlBinary_ValueTooBig";
-               public const string XmlCannotIncludeInSchema = "XmlCannotIncludeInSchema";
-               public const string XmlCannotReconcileAccessor = "XmlCannotReconcileAccessor";
-               public const string XmlCannotReconcileAccessorDefault = "XmlCannotReconcileAccessorDefault";
-               public const string XmlCannotReconcileAttributeAccessor = "XmlCannotReconcileAttributeAccessor";
-               public const string XmlChoiceIdDuplicate = "XmlChoiceIdDuplicate";
-               public const string XmlChoiceIdentiferAmbiguous = "XmlChoiceIdentiferAmbiguous";
-               public const string XmlChoiceIdentiferMemberMissing = "XmlChoiceIdentiferMemberMissing";
-               public const string XmlChoiceIdentiferMissing = "XmlChoiceIdentiferMissing";
-               public const string XmlChoiceIdentifierArrayType = "XmlChoiceIdentifierArrayType";
-               public const string XmlChoiceIdentifierMismatch = "XmlChoiceIdentifierMismatch";
-               public const string XmlChoiceIdentifierType = "XmlChoiceIdentifierType";
-               public const string XmlChoiceIdentifierTypeEnum = "XmlChoiceIdentifierTypeEnum";
-               public const string XmlChoiceMismatchChoiceException = "XmlChoiceMismatchChoiceException";
-               public const string XmlChoiceMissingAnyValue = "XmlChoiceMissingAnyValue";
-               public const string XmlChoiceMissingValue = "XmlChoiceMissingValue";
-               public const string XmlCircularDerivation = "XmlCircularDerivation";
-               public const string XmlCircularGroupReference = "XmlCircularGroupReference";
-               public const string XmlCircularReference = "XmlCircularReference";
-               public const string XmlCircularReference2 = "XmlCircularReference2";
-               public const string XmlCircularTypeReference = "XmlCircularTypeReference";
-               public const string XmlCodegenWarningDetails = "XmlCodegenWarningDetails";
-               public const string XmlCompilerError = "XmlCompilerError";
-               public const string XmlConfigurationDuplicateExtension = "XmlConfigurationDuplicateExtension";
-               public const string XmlConstructorHasSecurityAttributes = "XmlConstructorHasSecurityAttributes";
-               public const string XmlConstructorInaccessible = "XmlConstructorInaccessible";
-               public const string XmlConvert_BadFormat = "The string '{0}' is not a valid {1} value.";
-               public const string XmlConvert_BadUri = "The string was not recognized as a valid Uri.";
-               public const string XmlConvert_NotOneCharString = "String must be exactly one character long.";
-               public const string XmlConvert_Overflow = "Value '{0}' was either too large or too small for {1}.";
-               public const string XmlConvert_TypeBadMapping = "Xml type '{0}' does not support Clr type '{1}'.";
-               public const string XmlConvert_TypeBadMapping2 = "Xml type '{0}' does not support a conversion from Clr type '{1}' to Clr type '{2}'.";
-               public const string XmlConvert_TypeFromString = "Xml type '{0}' cannot convert to Clr type '{1}' unless the source value is a String or an XmlAtomicValue.";
-               public const string XmlConvert_TypeListBadMapping = "Xml type 'List of {0}' does not support Clr type '{1}'.";
-               public const string XmlConvert_TypeListBadMapping2 = "Xml type 'List of {0}' does not support a conversion from Clr type '{1}' to Clr type '{2}'.";
-               public const string XmlConvert_TypeNoNamespace = "The String '{0}' cannot be represented as an XmlQualifiedName.  A namespace for prefix '{1}' cannot be found.";
-               public const string XmlConvert_TypeNoPrefix = "The QName '{0}' cannot be represented as a String.  A prefix for namespace '{1}' cannot be found.";
-               public const string XmlConvert_TypeToString = "Cannot convert type '{0}' to String.";
-               public const string XmlDataBinding_NoSchemaType = "XmlDataBinding_NoSchemaType";
-               public const string XmlDataBinding_XPathAttrLast = "XmlDataBinding_XPathAttrLast";
-               public const string XmlDataBinding_XPathAttrNotFirst = "XmlDataBinding_XPathAttrNotFirst";
-               public const string XmlDataBinding_XPathEnd = "XmlDataBinding_XPathEnd";
-               public const string XmlDataBinding_XPathRequireSlash = "XmlDataBinding_XPathRequireSlash";
-               public const string XmlDataTypeMismatch = "XmlDataTypeMismatch";
-               public const string XmlDisallowNegativeValues = "XmlDisallowNegativeValues";
-               public const string XmlDocument_NoNodeSchemaInfo = "XmlDocument_NoNodeSchemaInfo";
-               public const string XmlDocument_NoSchemaInfo = "XmlDocument_NoSchemaInfo";
-               public const string XmlDocument_NodeNotFromDocument = "XmlDocument_NodeNotFromDocument";
-               public const string XmlDocument_ValidateInvalidNodeType = "XmlDocument_ValidateInvalidNodeType";
-               public const string XmlDropArrayAttributeValue = "XmlDropArrayAttributeValue";
-               public const string XmlDropAttributeValue = "XmlDropAttributeValue";
-               public const string XmlDropDefaultAttribute = "XmlDropDefaultAttribute";
-               public const string XmlDropNonPrimitiveAttributeValue = "XmlDropNonPrimitiveAttributeValue";
-               public const string XmlDuplicateAttributeName = "XmlDuplicateAttributeName";
-               public const string XmlDuplicateElementInScope = "XmlDuplicateElementInScope";
-               public const string XmlDuplicateElementInScope1 = "XmlDuplicateElementInScope1";
-               public const string XmlDuplicateElementName = "XmlDuplicateElementName";
-               public const string XmlDuplicateNamespace = "XmlDuplicateNamespace";
-               public const string XmlDuplicateNs = "XmlDuplicateNs";
-               public const string XmlDuplicateTypeName = "XmlDuplicateTypeName";
-               public const string XmlElementHasNoName = "XmlElementHasNoName";
-               public const string XmlElementImportedTwice = "XmlElementImportedTwice";
-               public const string XmlElementMissingType = "XmlElementMissingType";
-               public const string XmlElementNameMismatch = "XmlElementNameMismatch";
-               public const string XmlEmptyArrayType = "XmlEmptyArrayType";
-               public const string XmlExtensionComment = "XmlExtensionComment";
-               public const string XmlExtensionDuplicateDefinition = "XmlExtensionDuplicateDefinition";
-               public const string XmlFieldReflectionError = "XmlFieldReflectionError";
-               public const string XmlGenError = "XmlGenError";
-               public const string XmlGetSchemaEmptyTypeName = "XmlGetSchemaEmptyTypeName";
-               public const string XmlGetSchemaInclude = "XmlGetSchemaInclude";
-               public const string XmlGetSchemaMethodMissing = "XmlGetSchemaMethodMissing";
-               public const string XmlGetSchemaMethodName = "XmlGetSchemaMethodName";
-               public const string XmlGetSchemaMethodReturnType = "XmlGetSchemaMethodReturnType";
-               public const string XmlGetSchemaTypeMissing = "XmlGetSchemaTypeMissing";
-               public const string XmlHiddenMember = "XmlHiddenMember";
-               public const string XmlIdentityAccessDenied = "XmlIdentityAccessDenied";
-               public const string XmlIl_AmbiguousExtensionMethod = "XmlIl_AmbiguousExtensionMethod";
-               public const string XmlIl_BadXmlState = "XmlIl_BadXmlState";
-               public const string XmlIl_BadXmlStateAttr = "XmlIl_BadXmlStateAttr";
-               public const string XmlIl_ByRefType = "XmlIl_ByRefType";
-               public const string XmlIl_CantResolveEntity = "XmlIl_CantResolveEntity";
-               public const string XmlIl_CantStripNav = "XmlIl_CantStripNav";
-               public const string XmlIl_DocumentLoadError = "XmlIl_DocumentLoadError";
-               public const string XmlIl_ExtensionError = "XmlIl_ExtensionError";
-               public const string XmlIl_GenericExtensionMethod = "XmlIl_GenericExtensionMethod";
-               public const string XmlIl_NmspAfterAttr = "XmlIl_NmspAfterAttr";
-               public const string XmlIl_NmspConflict = "XmlIl_NmspConflict";
-               public const string XmlIl_NoDefaultDocument = "XmlIl_NoDefaultDocument";
-               public const string XmlIl_NoExtensionMethod = "XmlIl_NoExtensionMethod";
-               public const string XmlIl_NonPublicExtensionMethod = "XmlIl_NonPublicExtensionMethod";
-               public const string XmlIl_TooManyParameters = "XmlIl_TooManyParameters";
-               public const string XmlIl_TopLevelAttrNmsp = "XmlIl_TopLevelAttrNmsp";
-               public const string XmlIl_UnknownDocument = "XmlIl_UnknownDocument";
-               public const string XmlIl_UnknownExtObj = "XmlIl_UnknownExtObj";
-               public const string XmlIl_UnknownParam = "XmlIl_UnknownParam";
-               public const string XmlIllegalAnyElement = "XmlIllegalAnyElement";
-               public const string XmlIllegalArrayArrayAttribute = "XmlIllegalArrayArrayAttribute";
-               public const string XmlIllegalArrayElement = "XmlIllegalArrayElement";
-               public const string XmlIllegalArrayTextAttribute = "XmlIllegalArrayTextAttribute";
-               public const string XmlIllegalAttrOrText = "XmlIllegalAttrOrText";
-               public const string XmlIllegalAttrOrTextInterface = "XmlIllegalAttrOrTextInterface";
-               public const string XmlIllegalAttribute = "XmlIllegalAttribute";
-               public const string XmlIllegalAttributeFlagsArray = "XmlIllegalAttributeFlagsArray";
-               public const string XmlIllegalAttributesArrayAttribute = "XmlIllegalAttributesArrayAttribute";
-               public const string XmlIllegalDefault = "XmlIllegalDefault";
-               public const string XmlIllegalElementsArrayAttribute = "XmlIllegalElementsArrayAttribute";
-               public const string XmlIllegalForm = "XmlIllegalForm";
-               public const string XmlIllegalMultipleText = "XmlIllegalMultipleText";
-               public const string XmlIllegalMultipleTextMembers = "XmlIllegalMultipleTextMembers";
-               public const string XmlIllegalOverride = "XmlIllegalOverride";
-               public const string XmlIllegalSimpleContentExtension = "XmlIllegalSimpleContentExtension";
-               public const string XmlIllegalSoapAttribute = "XmlIllegalSoapAttribute";
-               public const string XmlIllegalType = "XmlIllegalType";
-               public const string XmlIllegalTypeContext = "XmlIllegalTypeContext";
-               public const string XmlIllegalTypedTextAttribute = "XmlIllegalTypedTextAttribute";
-               public const string XmlIllegalWildcard = "XmlIllegalWildcard";
-               public const string XmlImporterExtensionBadLocalTypeName = "XmlImporterExtensionBadLocalTypeName";
-               public const string XmlImporterExtensionBadTypeName = "XmlImporterExtensionBadTypeName";
-               public const string XmlInternalError = "XmlInternalError";
-               public const string XmlInternalErrorDetails = "XmlInternalErrorDetails";
-               public const string XmlInternalErrorMethod = "XmlInternalErrorMethod";
-               public const string XmlInternalErrorReaderAdvance = "XmlInternalErrorReaderAdvance";
-               public const string XmlInvalidAnyAttributeUse = "XmlInvalidAnyAttributeUse";
-               public const string XmlInvalidArrayDimentions = "XmlInvalidArrayDimentions";
-               public const string XmlInvalidArrayLength = "XmlInvalidArrayLength";
-               public const string XmlInvalidArrayRef = "XmlInvalidArrayRef";
-               public const string XmlInvalidArraySyntax = "XmlInvalidArraySyntax";
-               public const string XmlInvalidArrayTypeName = "XmlInvalidArrayTypeName";
-               public const string XmlInvalidArrayTypeNamespace = "XmlInvalidArrayTypeNamespace";
-               public const string XmlInvalidArrayTypeSyntax = "XmlInvalidArrayTypeSyntax";
-               public const string XmlInvalidAttributeType = "XmlInvalidAttributeType";
-               public const string XmlInvalidAttributeUse = "XmlInvalidAttributeUse";
-               public const string XmlInvalidBaseType = "XmlInvalidBaseType";
-               public const string XmlInvalidCast = "XmlInvalidCast";
-               public const string XmlInvalidCastWithId = "XmlInvalidCastWithId";
-               public const string XmlInvalidChoiceIdentifierValue = "XmlInvalidChoiceIdentifierValue";
-               public const string XmlInvalidConstantAttribute = "XmlInvalidConstantAttribute";
-               public const string XmlInvalidContent = "XmlInvalidContent";
-               public const string XmlInvalidDataTypeUsage = "XmlInvalidDataTypeUsage";
-               public const string XmlInvalidDefaultEnumValue = "XmlInvalidDefaultEnumValue";
-               public const string XmlInvalidDefaultValue = "XmlInvalidDefaultValue";
-               public const string XmlInvalidElementAttribute = "XmlInvalidElementAttribute";
-               public const string XmlInvalidEncoding = "XmlInvalidEncoding";
-               public const string XmlInvalidEncoding3 = "XmlInvalidEncoding3";
-               public const string XmlInvalidEncodingNotEncoded1 = "XmlInvalidEncodingNotEncoded1";
-               public const string XmlInvalidEnumAttribute = "XmlInvalidEnumAttribute";
-               public const string XmlInvalidEnumContent = "XmlInvalidEnumContent";
-               public const string XmlInvalidFormUnqualified = "XmlInvalidFormUnqualified";
-               public const string XmlInvalidHref = "XmlInvalidHref";
-               public const string XmlInvalidIdentifier = "XmlInvalidIdentifier";
-               public const string XmlInvalidIsNullable = "XmlInvalidIsNullable";
-               public const string XmlInvalidNotNullable = "XmlInvalidNotNullable";
-               public const string XmlInvalidNullCast = "XmlInvalidNullCast";
-               public const string XmlInvalidReturnPosition = "XmlInvalidReturnPosition";
-               public const string XmlInvalidSchemaElementType = "XmlInvalidSchemaElementType";
-               public const string XmlInvalidSchemaExtension = "XmlInvalidSchemaExtension";
-               public const string XmlInvalidSerializable = "XmlInvalidSerializable";
-               public const string XmlInvalidSoapArray = "XmlInvalidSoapArray";
-               public const string XmlInvalidSpecifiedType = "XmlInvalidSpecifiedType";
-               public const string XmlInvalidSubstitutionGroupUse = "XmlInvalidSubstitutionGroupUse";
-               public const string XmlInvalidTypeAttributes = "XmlInvalidTypeAttributes";
-               public const string XmlInvalidUseOfType = "XmlInvalidUseOfType";
-               public const string XmlInvalidVoid = "XmlInvalidVoid";
-               public const string XmlInvalidXmlOverride = "XmlInvalidXmlOverride";
-               public const string XmlInvalidXmlns = "XmlInvalidXmlns";
-               public const string XmlInvalidXsdDataType = "XmlInvalidXsdDataType";
-               public const string XmlLang = "XmlLang";
-               public const string XmlMappingsScopeMismatch = "XmlMappingsScopeMismatch";
-               public const string XmlMelformMapping  = "XmlMelformMapping ";
-               public const string XmlMembersDeriveError = "XmlMembersDeriveError";
-               public const string XmlMethodTypeNameConflict = "XmlMethodTypeNameConflict";
-               public const string XmlMismatchSchemaObjects = "XmlMismatchSchemaObjects";
-               public const string XmlMismatchedArrayBrackets = "XmlMismatchedArrayBrackets";
-               public const string XmlMissingArrayType = "XmlMissingArrayType";
-               public const string XmlMissingAttribute = "XmlMissingAttribute";
-               public const string XmlMissingAttributeGroup = "XmlMissingAttributeGroup";
-               public const string XmlMissingDataType = "XmlMissingDataType";
-               public const string XmlMissingElement = "XmlMissingElement";
-               public const string XmlMissingGroup = "XmlMissingGroup";
-               public const string XmlMissingHref = "XmlMissingHref";
-               public const string XmlMissingMethodEnum = "XmlMissingMethodEnum";
-               public const string XmlMissingSchema = "XmlMissingSchema";
-               public const string XmlMissingType = "XmlMissingType";
-               public const string XmlMultipleAttributeOverrides = "XmlMultipleAttributeOverrides";
-               public const string XmlMultipleXmlns = "XmlMultipleXmlns";
-               public const string XmlMultipleXmlnsMembers = "XmlMultipleXmlnsMembers";
-               public const string XmlNeedAttributeHere = "XmlNeedAttributeHere";
-               public const string XmlNoAddMethod = "XmlNoAddMethod";
-               public const string XmlNoAttributeHere = "XmlNoAttributeHere";
-               public const string XmlNoDefaultAccessors = "XmlNoDefaultAccessors";
-               public const string XmlNoNameAllowed = "A node of type '{0}' cannot have a name.";
-               public const string XmlNoPartialTrust = "XmlNoPartialTrust";
-               public const string XmlNoSerializableMembers = "XmlNoSerializableMembers";
-               public const string XmlNotKnownDefaultValue = "XmlNotKnownDefaultValue";
-               public const string XmlNotSerializable = "XmlNotSerializable";
-               public const string XmlPregenAssemblyDynamic = "XmlPregenAssemblyDynamic";
-               public const string XmlPregenCannotLoad = "XmlPregenCannotLoad";
-               public const string XmlPregenInvalidXmlSerializerAssemblyAttribute = "XmlPregenInvalidXmlSerializerAssemblyAttribute";
-               public const string XmlPregenMissingDirectory = "XmlPregenMissingDirectory";
-               public const string XmlPregenMissingTempDirectory = "XmlPregenMissingTempDirectory";
-               public const string XmlPregenOrphanType = "XmlPregenOrphanType";
-               public const string XmlPregenTypeDynamic = "XmlPregenTypeDynamic";
-               public const string XmlPrimitiveBaseType = "XmlPrimitiveBaseType";
-               public const string XmlReadOnlyCollection = "XmlReadOnlyCollection";
-               public const string XmlReadOnlyPropertyError = "XmlReadOnlyPropertyError";
-               public const string XmlReflectionError = "XmlReflectionError";
-               public const string XmlRemarks = "XmlRemarks";
-               public const string XmlRpcArrayOfValueTypes = "XmlRpcArrayOfValueTypes";
-               public const string XmlRpcLitArrayElement = "XmlRpcLitArrayElement";
-               public const string XmlRpcLitAttributeAttributes = "XmlRpcLitAttributeAttributes";
-               public const string XmlRpcLitAttributes = "XmlRpcLitAttributes";
-               public const string XmlRpcLitElementNamespace = "XmlRpcLitElementNamespace";
-               public const string XmlRpcLitElementNullable = "XmlRpcLitElementNullable";
-               public const string XmlRpcLitElements = "XmlRpcLitElements";
-               public const string XmlRpcLitXmlns = "XmlRpcLitXmlns";
-               public const string XmlRpcNestedValueType = "XmlRpcNestedValueType";
-               public const string XmlRpcRefsInValueType = "XmlRpcRefsInValueType";
-               public const string XmlSchema = "XmlSchema";
-               public const string XmlSchemaAttributeReference = "XmlSchemaAttributeReference";
-               public const string XmlSchemaCompiled = "XmlSchemaCompiled";
-               public const string XmlSchemaContentDef = "XmlSchemaContentDef";
-               public const string XmlSchemaDuplicateNamespace = "XmlSchemaDuplicateNamespace";
-               public const string XmlSchemaElementReference = "XmlSchemaElementReference";
-               public const string XmlSchemaIncludeLocation = "XmlSchemaIncludeLocation";
-               public const string XmlSchemaItem = "XmlSchemaItem";
-               public const string XmlSchemaNamedItem = "XmlSchemaNamedItem";
-               public const string XmlSchemaSyntaxErrorDetails = "XmlSchemaSyntaxErrorDetails";
-               public const string XmlSequenceHierarchy = "XmlSequenceHierarchy";
-               public const string XmlSequenceInconsistent = "XmlSequenceInconsistent";
-               public const string XmlSequenceMatch = "XmlSequenceMatch";
-               public const string XmlSequenceMembers = "XmlSequenceMembers";
-               public const string XmlSequenceUnique = "XmlSequenceUnique";
-               public const string XmlSerializableAttributes = "XmlSerializableAttributes";
-               public const string XmlSerializableBadDerivation = "XmlSerializableBadDerivation";
-               public const string XmlSerializableMergeItem = "XmlSerializableMergeItem";
-               public const string XmlSerializableMissingClrType = "XmlSerializableMissingClrType";
-               public const string XmlSerializableNameMissing1 = "XmlSerializableNameMissing1";
-               public const string XmlSerializableRootDupName = "XmlSerializableRootDupName";
-               public const string XmlSerializableSchemaError = "XmlSerializableSchemaError";
-               public const string XmlSerializeError = "XmlSerializeError";
-               public const string XmlSerializeErrorDetails = "XmlSerializeErrorDetails";
-               public const string XmlSerializerAccessDenied = "XmlSerializerAccessDenied";
-               public const string XmlSerializerCompileFailed = "XmlSerializerCompileFailed";
-               public const string XmlSerializerExpired = "XmlSerializerExpired";
-               public const string XmlSerializerExpiredDetails = "XmlSerializerExpiredDetails";
-               public const string XmlSerializerUnsupportedMember = "XmlSerializerUnsupportedMember";
-               public const string XmlSerializerUnsupportedType = "XmlSerializerUnsupportedType";
-               public const string XmlSoapCannotIncludeInSchema = "XmlSoapCannotIncludeInSchema";
-               public const string XmlSoapInvalidAttributeUse = "XmlSoapInvalidAttributeUse";
-               public const string XmlSoapInvalidChoice = "XmlSoapInvalidChoice";
-               public const string XmlSoapUnsupportedGroupAny = "XmlSoapUnsupportedGroupAny";
-               public const string XmlSoapUnsupportedGroupNested = "XmlSoapUnsupportedGroupNested";
-               public const string XmlSoapUnsupportedGroupRef = "XmlSoapUnsupportedGroupRef";
-               public const string XmlSoapUnsupportedGroupRepeat = "XmlSoapUnsupportedGroupRepeat";
-               public const string XmlSoleXmlnsAttribute = "XmlSoleXmlnsAttribute";
-               public const string XmlTypeInaccessible = "XmlTypeInaccessible";
-               public const string XmlTypeReflectionError = "XmlTypeReflectionError";
-               public const string XmlTypeStatic = "XmlTypeStatic";
-               public const string XmlTypeUsedTwice = "XmlTypeUsedTwice";
-               public const string XmlTypesDuplicate = "XmlTypesDuplicate";
-               public const string XmlUdeclaredXsdType = "XmlUdeclaredXsdType";
-               public const string XmlUndefinedAlias = "Namespace prefix '{0}' is not defined.";
-               public const string XmlUnknownAnyElement = "XmlUnknownAnyElement";
-               public const string XmlUnknownConstant = "XmlUnknownConstant";
-               public const string XmlUnknownNode = "XmlUnknownNode";
-               public const string XmlUnknownType = "XmlUnknownType";
-               public const string XmlUnsupportedDefaultType = "XmlUnsupportedDefaultType";
-               public const string XmlUnsupportedDefaultValue = "XmlUnsupportedDefaultValue";
-               public const string XmlUnsupportedIDictionary = "XmlUnsupportedIDictionary";
-               public const string XmlUnsupportedIDictionaryDetails = "XmlUnsupportedIDictionaryDetails";
-               public const string XmlUnsupportedInheritance = "XmlUnsupportedInheritance";
-               public const string XmlUnsupportedInterface = "XmlUnsupportedInterface";
-               public const string XmlUnsupportedInterfaceDetails = "XmlUnsupportedInterfaceDetails";
-               public const string XmlUnsupportedOpenGenericType = "XmlUnsupportedOpenGenericType";
-               public const string XmlUnsupportedRank = "XmlUnsupportedRank";
-               public const string XmlUnsupportedRedefine = "XmlUnsupportedRedefine";
-               public const string XmlUnsupportedSoapTypeKind = "XmlUnsupportedSoapTypeKind";
-               public const string XmlUnsupportedTypeKind = "XmlUnsupportedTypeKind";
-               public const string XmlUnxpectedType = "XmlUnxpectedType";
-               public const string XmlXmlnsInvalidType = "XmlXmlnsInvalidType";
-               public const string Xp_BadQueryObject = "This is an invalid object. Only objects returned from Compile() can be passed as input.";
-               public const string Xp_CurrentNotAllowed = "The 'current()' function cannot be used in a pattern.";
-               public const string Xp_ExprExpected = "'{0}' is an invalid expression.";
-               public const string Xp_FunctionFailed = "Function '{0}()' has failed.";
-               public const string Xp_InvalidArgumentType = "The argument to function '{0}' in '{1}' cannot be converted to a node-set.";
-               public const string Xp_InvalidKeyPattern = "'{0}' is an invalid key pattern. It either contains a variable reference or 'key()' function.";
-               public const string Xp_InvalidName = "'{0}' has an invalid qualified name.";
-               public const string Xp_InvalidNumArgs = "Function '{0}' in '{1}' has an invalid number of arguments.";
-               public const string Xp_InvalidPattern = "'{0}' is an invalid XSLT pattern.";
-               public const string Xp_InvalidToken = "'{0}' has an invalid token.";
-               public const string Xp_NoContext = "Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.";
-               public const string Xp_NodeSetExpected = "Expression must evaluate to a node-set.";
-               public const string Xp_NotSupported = "The XPath query '{0}' is not supported.";
-               public const string Xp_QueryTooComplex = "The xpath query is too complex.";
-               public const string Xp_UnclosedString = "This is an unclosed string.";
-               public const string Xp_UndefFunc = "The function '{0}()' is undefined.";
-               public const string Xp_UndefVar = "The variable '{0}' is undefined.";
-               public const string Xp_UndefinedXsltContext = "XsltContext is needed for this query because of an unknown function.";
-               public const string Xpn_BadPosition = "Operation is not valid due to the current position of the navigator.";
-               public const string Xpn_MissingParent = "The current position of the navigator is missing a valid parent.";
-               public const string Xpn_NoContent = "No content generated as the result of the operation.";
-               public const string Xdom_AttrCol_Insert = "The reference node must be a child of the current node.";
-               public const string Xdom_AttrCol_Object = "An 'Attributes' collection can only contain 'Attribute' objects.";
-               public const string Xdom_Attr_InUse = "The 'Attribute' node cannot be inserted because it is already an attribute of another element.";
-               public const string Xdom_Attr_Name = "The attribute local name cannot be empty.";
-               public const string Xdom_Attr_Reserved_XmlNS = "The namespace declaration attribute has an incorrect 'namespaceURI': '{0}'.";
-               public const string Xdom_Document_Innertext = "The 'InnerText' of a 'Document' node is read-only and cannot be set.";
-               public const string Xdom_DualDeclarationNode = "This document already has an 'XmlDeclaration' node.";
-               public const string Xdom_DualDocumentElementNode = "This document already has a 'DocumentElement' node.";
-               public const string Xdom_DualDocumentTypeNode = "This document already has a 'DocumentType' node.";
-               public const string Xdom_Empty_LocalName = "The local name for elements or attributes cannot be null or an empty string.";
-               public const string Xdom_EntRef_SetVal = "'EntityReference' nodes have no support for setting value.";
-               public const string Xdom_Ent_Innertext = "The 'InnerText' of an 'Entity' node is read-only and cannot be set.";
-               public const string Xdom_Enum_ElementList = "The element list has changed. The enumeration operation failed to continue.";
-               public const string Xdom_Import = "Cannot import nodes of type '{0}'.";
-               public const string Xdom_Import_NullNode = "Cannot import a null node.";
-               public const string Xdom_IndexOutOfRange = "The index being passed in is out of range.";
-               public const string Xdom_InvalidCharacter_EntityReference = "Cannot create an 'EntityReference' node with a name starting with '#'.";
-               public const string Xdom_Invalid_NT_String = "'{0}' does not represent any 'XmlNodeType'.";
-               public const string Xdom_Load_NoDocument = "The document to be loaded could not be found.";
-               public const string Xdom_Load_NoReader = "There is no reader from which to load the document.";
-               public const string Xdom_NamedNode_Context = "The named node is from a different document context.";
-               public const string Xdom_NoRootEle = "The document does not have a root element.";
-               public const string Xdom_Node_Cloning = "'Entity' and 'Notation' nodes cannot be cloned.";
-               public const string Xdom_Node_Insert_Child = "Cannot insert a node or any ancestor of that node as a child of itself.";
-               public const string Xdom_Node_Insert_Contain = "The current node cannot contain other nodes.";
-               public const string Xdom_Node_Insert_Context = "The node to be inserted is from a different document context.";
-               public const string Xdom_Node_Insert_Location = "Cannot insert the node in the specified location.";
-               public const string Xdom_Node_Insert_Path = "The reference node is not a child of this node.";
-               public const string Xdom_Node_Insert_TypeConflict = "The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type.";
-               public const string Xdom_Node_Modify_ReadOnly = "This node is read-only. It cannot be modified.";
-               public const string Xdom_Node_Null_Doc = "Cannot create a node without an owner document.";
-               public const string Xdom_Node_Remove_Child = "The node to be removed is not a child of this node.";
-               public const string Xdom_Node_Remove_Contain = "The current node cannot contain other nodes, so the node to be removed is not its child.";
-               public const string Xdom_Node_SetVal = "Cannot set a value on node type '{0}'.";
-               public const string Xdom_Set_InnerXml = "Cannot set the 'InnerXml' for the current node because it is either read-only or cannot have children.";
-               public const string Xdom_TextNode_SplitText = "The 'Text' node is not connected in the DOM live tree. No 'SplitText' operation could be performed.";
-               public const string Xdom_Version = "Wrong XML version information. The XML must match production \"VersionNum ::= '1.' [0-9]+\".";
-               public const string Xdom_WS_Char = "The string for white space contains an invalid character.";
-               public const string Xdom_standalone = "Wrong value for the XML declaration standalone attribute of '{0}'.";
-               public const string SchInf_NoElement = "SchInf_NoElement";
-               public const string SchInf_UnknownParticle = "SchInf_UnknownParticle";
-               public const string SchInf_ct = "SchInf_ct";
-               public const string SchInf_entity = "SchInf_entity";
-               public const string SchInf_extension = "SchInf_extension";
-               public const string SchInf_noct = "SchInf_noct";
-               public const string SchInf_noseq = "SchInf_noseq";
-               public const string SchInf_particle = "SchInf_particle";
-               public const string SchInf_schema = "SchInf_schema";
-               public const string SchInf_schematype = "SchInf_schematype";
-               public const string SchInf_seq = "SchInf_seq";
-               public const string SchInf_simplecontent = "SchInf_simplecontent";
-               public const string Sch_AbstractElement = "Sch_AbstractElement";
-               public const string Sch_AllElement = "Sch_AllElement";
-               public const string Sch_AllRefMinMax = "Sch_AllRefMinMax";
-               public const string Sch_AllRefNotRoot = "Sch_AllRefNotRoot";
-               public const string Sch_AnnotationLocation = "Sch_AnnotationLocation";
-               public const string Sch_AnyAttributeLastChild = "Sch_AnyAttributeLastChild";
-               public const string Sch_AnyElement = "Sch_AnyElement";
-               public const string Sch_AnyElementNS = "Sch_AnyElementNS";
-               public const string Sch_AnyFromAnyRule1 = "Sch_AnyFromAnyRule1";
-               public const string Sch_AnyFromAnyRule2 = "Sch_AnyFromAnyRule2";
-               public const string Sch_AnyFromAnyRule3 = "Sch_AnyFromAnyRule3";
-               public const string Sch_AttListPresence = "Sch_AttListPresence";
-               public const string Sch_AttrGroupDoubleRedefine = "Sch_AttrGroupDoubleRedefine";
-               public const string Sch_AttrGroupRedefineNotFound = "Sch_AttrGroupRedefineNotFound";
-               public const string Sch_AttrUseAndWildId = "Sch_AttrUseAndWildId";
-               public const string Sch_AttributeCircularRef = "Sch_AttributeCircularRef";
-               public const string Sch_AttributeDefaultDataType = "Sch_AttributeDefaultDataType";
-               public const string Sch_AttributeFixedInvalid = "Sch_AttributeFixedInvalid";
-               public const string Sch_AttributeGroupCircularRef = "Sch_AttributeGroupCircularRef";
-               public const string Sch_AttributeIgnored = "Sch_AttributeIgnored";
-               public const string Sch_AttributeMutuallyExclusive = "Sch_AttributeMutuallyExclusive";
-               public const string Sch_AttributeNameRef = "Sch_AttributeNameRef";
-               public const string Sch_AttributeRestrictionInvalid = "Sch_AttributeRestrictionInvalid";
-               public const string Sch_AttributeRestrictionInvalidFromWildcard = "Sch_AttributeRestrictionInvalidFromWildcard";
-               public const string Sch_AttributeRestrictionProhibited = "Sch_AttributeRestrictionProhibited";
-               public const string Sch_AttributeUseInvalid = "Sch_AttributeUseInvalid";
-               public const string Sch_AttributeValueDataType = "Invalid data value is passed to attribute '{0}'";
-               public const string Sch_AttributeValueDataTypeDetailed = "Sch_AttributeValueDataTypeDetailed";
-               public const string Sch_BaseFinalExtension = "Sch_BaseFinalExtension";
-               public const string Sch_BaseFinalList = "Sch_BaseFinalList";
-               public const string Sch_BaseFinalRestriction = "Sch_BaseFinalRestriction";
-               public const string Sch_BaseFinalUnion = "Sch_BaseFinalUnion";
-               public const string Sch_CannotLoadSchema = "Sch_CannotLoadSchema";
-               public const string Sch_CannotLoadSchemaLocation = "Sch_CannotLoadSchemaLocation";
-               public const string Sch_ComplexContentContentModel = "Sch_ComplexContentContentModel";
-               public const string Sch_ComplexContentModel  = "Sch_ComplexContentModel ";
-               public const string Sch_ComplexToSimpleTypeRedefine = "Sch_ComplexToSimpleTypeRedefine";
-               public const string Sch_ComplexTypeContentModel = "Sch_ComplexTypeContentModel";
-               public const string Sch_ComplexTypeDoubleRedefine = "Sch_ComplexTypeDoubleRedefine";
-               public const string Sch_ComplexTypeRedefineNotFound = "Sch_ComplexTypeRedefineNotFound";
-               public const string Sch_ComponentAlreadySeenForNS = "Sch_ComponentAlreadySeenForNS";
-               public const string Sch_ComponentRedefineNotFound = "Sch_ComponentRedefineNotFound";
-               public const string Sch_ContentInNill = "Sch_ContentInNill";
-               public const string Sch_ContinuationString = "Sch_ContinuationString";
-               public const string Sch_DataTypeTextOnly = "Sch_DataTypeTextOnly";
-               public const string Sch_DefaultAttributeNotApplied = "Sch_DefaultAttributeNotApplied";
-               public const string Sch_DefaultException = "{0}";
-               public const string Sch_DefaultFixedAttributes = "Sch_DefaultFixedAttributes";
-               public const string Sch_DefaultIdValue = "Sch_DefaultIdValue";
-               public const string Sch_DerivedNotFromBase = "Sch_DerivedNotFromBase";
-               public const string Sch_DifContentType = "Sch_DifContentType";
-               public const string Sch_DtMaxLengthInvalid = "Sch_DtMaxLengthInvalid";
-               public const string Sch_DtMinLengthInvalid = "Sch_DtMinLengthInvalid";
-               public const string Sch_DtMinMaxLength = "Sch_DtMinMaxLength";
-               public const string Sch_DupAttribute = "Sch_DupAttribute";
-               public const string Sch_DupAttributeGroup = "Sch_DupAttributeGroup";
-               public const string Sch_DupAttributeUse = "Sch_DupAttributeUse";
-               public const string Sch_DupComplexType = "Sch_DupComplexType";
-               public const string Sch_DupDtMaxLength = "Sch_DupDtMaxLength";
-               public const string Sch_DupDtMinLength = "Sch_DupDtMinLength";
-               public const string Sch_DupDtType = "Sch_DupDtType";
-               public const string Sch_DupElement = "Sch_DupElement";
-               public const string Sch_DupElementDecl = "Sch_DupElementDecl";
-               public const string Sch_DupFractionDigitsFacet = "Sch_DupFractionDigitsFacet";
-               public const string Sch_DupGlobalAttribute = "Sch_DupGlobalAttribute";
-               public const string Sch_DupGlobalElement = "Sch_DupGlobalElement";
-               public const string Sch_DupGroup = "Sch_DupGroup";
-               public const string Sch_DupGroupParticle = "Sch_DupGroupParticle";
-               public const string Sch_DupId = "Sch_DupId";
-               public const string Sch_DupIdAttribute = "Sch_DupIdAttribute";
-               public const string Sch_DupIdentityConstraint = "Sch_DupIdentityConstraint";
-               public const string Sch_DupLengthFacet = "Sch_DupLengthFacet";
-               public const string Sch_DupMaxExclusiveFacet = "Sch_DupMaxExclusiveFacet";
-               public const string Sch_DupMaxInclusiveFacet = "Sch_DupMaxInclusiveFacet";
-               public const string Sch_DupMaxLengthFacet = "Sch_DupMaxLengthFacet";
-               public const string Sch_DupMinExclusiveFacet = "Sch_DupMinExclusiveFacet";
-               public const string Sch_DupMinInclusiveFacet = "Sch_DupMinInclusiveFacet";
-               public const string Sch_DupMinLengthFacet = "Sch_DupMinLengthFacet";
-               public const string Sch_DupNotation = "Sch_DupNotation";
-               public const string Sch_DupNotationAttribute = "Sch_DupNotationAttribute";
-               public const string Sch_DupSelector = "Sch_DupSelector";
-               public const string Sch_DupSimpleType = "Sch_DupSimpleType";
-               public const string Sch_DupSimpleTypeChild = "Sch_DupSimpleTypeChild";
-               public const string Sch_DupTotalDigitsFacet = "Sch_DupTotalDigitsFacet";
-               public const string Sch_DupWhiteSpaceFacet = "Sch_DupWhiteSpaceFacet";
-               public const string Sch_DupXsdElement = "Sch_DupXsdElement";
-               public const string Sch_DuplicateAttribute = "Sch_DuplicateAttribute";
-               public const string Sch_DuplicateKey = "Sch_DuplicateKey";
-               public const string Sch_ElementCannotHaveValue = "Sch_ElementCannotHaveValue";
-               public const string Sch_ElementCircularRef = "Sch_ElementCircularRef";
-               public const string Sch_ElementFromAnyRule1 = "Sch_ElementFromAnyRule1";
-               public const string Sch_ElementFromAnyRule2 = "Sch_ElementFromAnyRule2";
-               public const string Sch_ElementFromElement = "Sch_ElementFromElement";
-               public const string Sch_ElementFromGroupBase1 = "Sch_ElementFromGroupBase1";
-               public const string Sch_ElementFromGroupBase2 = "Sch_ElementFromGroupBase2";
-               public const string Sch_ElementFromGroupBase3 = "Sch_ElementFromGroupBase3";
-               public const string Sch_ElementInMixedWithFixed = "Sch_ElementInMixedWithFixed";
-               public const string Sch_ElementMissing = "Sch_ElementMissing";
-               public const string Sch_ElementName = "'{0}' element";
-               public const string Sch_ElementNameAndNamespace = "Sch_ElementNameAndNamespace";
-               public const string Sch_ElementNameRef = "Sch_ElementNameRef";
-               public const string Sch_ElementNotAllowed = "Sch_ElementNotAllowed";
-               public const string Sch_ElementRef = "Sch_ElementRef";
-               public const string Sch_ElementTypeCollision = "Sch_ElementTypeCollision";
-               public const string Sch_ElementValueDataType = "Invalid data value is passed to element '{0}'";
-               public const string Sch_ElementValueDataTypeDetailed = "Sch_ElementValueDataTypeDetailed";
-               public const string Sch_EmptyAttributeValue = "Sch_EmptyAttributeValue";
-               public const string Sch_EmptyChoice = "Sch_EmptyChoice";
-               public const string Sch_EmptyXPath = "Sch_EmptyXPath";
-               public const string Sch_EnumFinished = "Enumeration has already finished.";
-               public const string Sch_EnumNotStarted = "Enumeration has not started. Call MoveNext.";
-               public const string Sch_EnumerationConstraintFailed = "Sch_EnumerationConstraintFailed";
-               public const string Sch_EnumerationFacetInvalid = "Sch_EnumerationFacetInvalid";
-               public const string Sch_EnumerationFacetProhibited = "Sch_EnumerationFacetProhibited";
-               public const string Sch_EnumerationValue = "Sch_EnumerationValue";
-               public const string Sch_FacetBaseFixed = "Sch_FacetBaseFixed";
-               public const string Sch_FieldSimpleTypeExpected = "Sch_FieldSimpleTypeExpected";
-               public const string Sch_FieldSingleValueExpected = "Sch_FieldSingleValueExpected";
-               public const string Sch_FixedAttributeValue = "Sch_FixedAttributeValue";
-               public const string Sch_FixedDefaultInRef = "Sch_FixedDefaultInRef";
-               public const string Sch_FixedElementValue = "Sch_FixedElementValue";
-               public const string Sch_FixedInRef = "Sch_FixedInRef";
-               public const string Sch_ForbiddenAttribute = "Sch_ForbiddenAttribute";
-               public const string Sch_ForbiddenDerivedParticleForAll = "Sch_ForbiddenDerivedParticleForAll";
-               public const string Sch_ForbiddenDerivedParticleForChoice = "Sch_ForbiddenDerivedParticleForChoice";
-               public const string Sch_ForbiddenDerivedParticleForElem = "Sch_ForbiddenDerivedParticleForElem";
-               public const string Sch_ForbiddenDerivedParticleForSeq = "Sch_ForbiddenDerivedParticleForSeq";
-               public const string Sch_FractionDigitsConstraintFailed = "Sch_FractionDigitsConstraintFailed";
-               public const string Sch_FractionDigitsFacetInvalid = "Sch_FractionDigitsFacetInvalid";
-               public const string Sch_FractionDigitsFacetProhibited = "Sch_FractionDigitsFacetProhibited";
-               public const string Sch_FractionDigitsGtTotalDigits = "Sch_FractionDigitsGtTotalDigits";
-               public const string Sch_FractionDigitsNotOnDecimal = "Sch_FractionDigitsNotOnDecimal";
-               public const string Sch_GroupBaseFromAny1 = "Sch_GroupBaseFromAny1";
-               public const string Sch_GroupBaseFromAny2 = "Sch_GroupBaseFromAny2";
-               public const string Sch_GroupBaseRestNoMap = "Sch_GroupBaseRestNoMap";
-               public const string Sch_GroupBaseRestNotEmptiable = "Sch_GroupBaseRestNotEmptiable";
-               public const string Sch_GroupBaseRestRangeInvalid = "Sch_GroupBaseRestRangeInvalid";
-               public const string Sch_GroupCircularRef = "Sch_GroupCircularRef";
-               public const string Sch_GroupDisabled = "Sch_GroupDisabled";
-               public const string Sch_GroupDoubleRedefine = "Sch_GroupDoubleRedefine";
-               public const string Sch_GroupRedefineNotFound = "Sch_GroupRedefineNotFound";
-               public const string Sch_ICXpathError = "Sch_ICXpathError";
-               public const string Sch_IdAttrDeclared = "Sch_IdAttrDeclared";
-               public const string Sch_IdConstraintNoFields = "Sch_IdConstraintNoFields";
-               public const string Sch_IdConstraintNoRefer = "Sch_IdConstraintNoRefer";
-               public const string Sch_IdConstraintNoSelector = "Sch_IdConstraintNoSelector";
-               public const string Sch_IdentityConstraintCircularRef = "Sch_IdentityConstraintCircularRef";
-               public const string Sch_ImportLocation = "Sch_ImportLocation";
-               public const string Sch_ImportTargetNamespace = "Sch_ImportTargetNamespace";
-               public const string Sch_ImportTargetNamespaceNull = "Sch_ImportTargetNamespaceNull";
-               public const string Sch_IncludeLocation = "Sch_IncludeLocation";
-               public const string Sch_IncompleteContent = "Sch_IncompleteContent";
-               public const string Sch_IncompleteContentComplex = "Sch_IncompleteContentComplex";
-               public const string Sch_IncompleteContentExpecting = "Sch_IncompleteContentExpecting";
-               public const string Sch_IncompleteContentExpectingComplex = "Sch_IncompleteContentExpectingComplex";
-               public const string Sch_InvalidAllElementMax = "Sch_InvalidAllElementMax";
-               public const string Sch_InvalidAllMax = "Sch_InvalidAllMax";
-               public const string Sch_InvalidAllMin = "Sch_InvalidAllMin";
-               public const string Sch_InvalidAny = "Sch_InvalidAny";
-               public const string Sch_InvalidAnyAttribute = "Sch_InvalidAnyAttribute";
-               public const string Sch_InvalidAnyAttributeRestriction = "Sch_InvalidAnyAttributeRestriction";
-               public const string Sch_InvalidAnyDetailed = "Sch_InvalidAnyDetailed";
-               public const string Sch_InvalidAttribute = "Sch_InvalidAttribute";
-               public const string Sch_InvalidAttributeExtension = "Sch_InvalidAttributeExtension";
-               public const string Sch_InvalidAttributeRef = "Sch_InvalidAttributeRef";
-               public const string Sch_InvalidBaseToEmpty = "Sch_InvalidBaseToEmpty";
-               public const string Sch_InvalidBaseToMixed = "Sch_InvalidBaseToMixed";
-               public const string Sch_InvalidBlockDefaultValue = "Sch_InvalidBlockDefaultValue";
-               public const string Sch_InvalidBoolean = "Sch_InvalidBoolean";
-               public const string Sch_InvalidCollection = "Sch_InvalidCollection";
-               public const string Sch_InvalidComplexTypeBlockValue = "Sch_InvalidComplexTypeBlockValue";
-               public const string Sch_InvalidComplexTypeFinalValue = "Sch_InvalidComplexTypeFinalValue";
-               public const string Sch_InvalidContentRestriction = "Sch_InvalidContentRestriction";
-               public const string Sch_InvalidContentRestrictionDetailed = "Sch_InvalidContentRestrictionDetailed";
-               public const string Sch_InvalidDateTimeOption = "Sch_InvalidDateTimeOption";
-               public const string Sch_InvalidElementBlockValue = "Sch_InvalidElementBlockValue";
-               public const string Sch_InvalidElementContent = "Sch_InvalidElementContent";
-               public const string Sch_InvalidElementContentComplex = "Sch_InvalidElementContentComplex";
-               // There are two places that use this message, but they have different number of arguments...! One has 3, anoher has 4. We cannot fail at 3 args.
-               public const string Sch_InvalidElementContentExpecting = "Invalid start element. Within {0}, got {1}, while expected {2}.";
-               public const string Sch_InvalidElementContentExpectingComplex = "Sch_InvalidElementContentExpectingComplex";
-               public const string Sch_InvalidElementDefaultValue = "Sch_InvalidElementDefaultValue";
-               public const string Sch_InvalidElementFinalValue = "Sch_InvalidElementFinalValue";
-               public const string Sch_InvalidElementInEmptyEx = "Sch_InvalidElementInEmptyEx";
-               public const string Sch_InvalidElementInTextOnlyEx = "Sch_InvalidElementInTextOnlyEx";
-               public const string Sch_InvalidElementRef = "Sch_InvalidElementRef";
-               public const string Sch_InvalidElementSubstitution = "Sch_InvalidElementSubstitution";
-               public const string Sch_InvalidEndElementCall = "Sch_InvalidEndElementCall";
-               public const string Sch_InvalidEndElementCallTyped = "Sch_InvalidEndElementCallTyped";
-               public const string Sch_InvalidEndElementMultiple = "Sch_InvalidEndElementMultiple";
-               public const string Sch_InvalidEndValidation = "Sch_InvalidEndValidation";
-               public const string Sch_InvalidExamplar = "Sch_InvalidExamplar";
-               public const string Sch_InvalidFacet = "Sch_InvalidFacet";
-               public const string Sch_InvalidFacetPosition = "Sch_InvalidFacetPosition";
-               public const string Sch_InvalidFinalDefaultValue = "Sch_InvalidFinalDefaultValue";
-               public const string Sch_InvalidIdAttribute = "Sch_InvalidIdAttribute";
-               public const string Sch_InvalidIncludeLocation = "Sch_InvalidIncludeLocation";
-               public const string Sch_InvalidLanguageId = "Sch_InvalidLanguageId";
-               public const string Sch_InvalidNameAttributeEx = "Sch_InvalidNameAttributeEx";
-               public const string Sch_InvalidNamespace = "Sch_InvalidNamespace";
-               public const string Sch_InvalidNamespaceAttribute = "Sch_InvalidNamespaceAttribute";
-               public const string Sch_InvalidPIComment = "Sch_InvalidPIComment";
-               public const string Sch_InvalidPartialValidationType = "Sch_InvalidPartialValidationType";
-               public const string Sch_InvalidParticleRestriction = "Sch_InvalidParticleRestriction";
-               public const string Sch_InvalidParticleRestrictionDetailed = "Sch_InvalidParticleRestrictionDetailed";
-               public const string Sch_InvalidPublicAttribute = "Sch_InvalidPublicAttribute";
-               public const string Sch_InvalidSchemaLocation = "Sch_InvalidSchemaLocation";
-               public const string Sch_InvalidSimpleTypeFinalValue = "Sch_InvalidSimpleTypeFinalValue";
-               public const string Sch_InvalidSimpleTypeRestriction = "Sch_InvalidSimpleTypeRestriction";
-               public const string Sch_InvalidStartTransition = "Sch_InvalidStartTransition";
-               public const string Sch_InvalidStateTransition = "Sch_InvalidStateTransition";
-               public const string Sch_InvalidSubstitutionMember = "Sch_InvalidSubstitutionMember";
-               public const string Sch_InvalidSystemAttribute = "Sch_InvalidSystemAttribute";
-               public const string Sch_InvalidTargetNamespaceAttribute = "Sch_InvalidTargetNamespaceAttribute";
-               public const string Sch_InvalidTextInElement = "Sch_InvalidTextInElement";
-               public const string Sch_InvalidTextInElementExpecting = "Sch_InvalidTextInElementExpecting";
-               public const string Sch_InvalidTextInEmpty = "Sch_InvalidTextInEmpty";
-               public const string Sch_InvalidTypeRedefine = "Sch_InvalidTypeRedefine";
-               public const string Sch_InvalidValue = "Sch_InvalidValue";
-               public const string Sch_InvalidValueDetailed = "Sch_InvalidValueDetailed";
-               public const string Sch_InvalidValueDetailedAttribute = "Sch_InvalidValueDetailedAttribute";
-               public const string Sch_InvalidWhiteSpace = "Sch_InvalidWhiteSpace";
-               public const string Sch_InvalidWhitespaceInEmpty = "Sch_InvalidWhitespaceInEmpty";
-               public const string Sch_InvalidXsdAttributeDatatypeValue = "Sch_InvalidXsdAttributeDatatypeValue";
-               public const string Sch_InvalidXsdAttributeValue = "Sch_InvalidXsdAttributeValue";
-               public const string Sch_InvalidXsiNill = "Sch_InvalidXsiNill";
-               public const string Sch_LengthAndMinMax = "Sch_LengthAndMinMax";
-               public const string Sch_LengthConstraintFailed = "Sch_LengthConstraintFailed";
-               public const string Sch_LengthFacetInvalid = "Sch_LengthFacetInvalid";
-               public const string Sch_LengthFacetProhibited = "Sch_LengthFacetProhibited";
-               public const string Sch_LengthGtBaseLength = "Sch_LengthGtBaseLength";
-               public const string Sch_ListFromNonatomic = "Sch_ListFromNonatomic";
-               public const string Sch_ManyMaxOccurs = "Sch_ManyMaxOccurs";
-               public const string Sch_MaxExclusiveConstraintFailed = "Sch_MaxExclusiveConstraintFailed";
-               public const string Sch_MaxExclusiveFacetInvalid = "Sch_MaxExclusiveFacetInvalid";
-               public const string Sch_MaxExclusiveFacetProhibited = "Sch_MaxExclusiveFacetProhibited";
-               public const string Sch_MaxExclusiveMismatch = "Sch_MaxExclusiveMismatch";
-               public const string Sch_MaxExlIncMismatch = "Sch_MaxExlIncMismatch";
-               public const string Sch_MaxIncExlMismatch = "Sch_MaxIncExlMismatch";
-               public const string Sch_MaxInclusiveConstraintFailed = "Sch_MaxInclusiveConstraintFailed";
-               public const string Sch_MaxInclusiveExclusive = "Sch_MaxInclusiveExclusive";
-               public const string Sch_MaxInclusiveFacetInvalid = "Sch_MaxInclusiveFacetInvalid";
-               public const string Sch_MaxInclusiveFacetProhibited = "Sch_MaxInclusiveFacetProhibited";
-               public const string Sch_MaxInclusiveMismatch = "Sch_MaxInclusiveMismatch";
-               public const string Sch_MaxLengthConstraintFailed = "Sch_MaxLengthConstraintFailed";
-               public const string Sch_MaxLengthFacetInvalid = "Sch_MaxLengthFacetInvalid";
-               public const string Sch_MaxLengthFacetProhibited = "Sch_MaxLengthFacetProhibited";
-               public const string Sch_MaxLengthGtBaseMaxLength = "Sch_MaxLengthGtBaseMaxLength";
-               public const string Sch_MaxMinLengthBaseLength = "Sch_MaxMinLengthBaseLength";
-               public const string Sch_MaxOccursInvalid = "Sch_MaxOccursInvalid";
-               public const string Sch_MaxOccursInvalidXsd = "Sch_MaxOccursInvalidXsd";
-               public const string Sch_MinExclusiveConstraintFailed = "Sch_MinExclusiveConstraintFailed";
-               public const string Sch_MinExclusiveFacetInvalid = "Sch_MinExclusiveFacetInvalid";
-               public const string Sch_MinExclusiveFacetProhibited = "Sch_MinExclusiveFacetProhibited";
-               public const string Sch_MinExclusiveGtMaxExclusive = "Sch_MinExclusiveGtMaxExclusive";
-               public const string Sch_MinExclusiveGtMaxInclusive = "Sch_MinExclusiveGtMaxInclusive";
-               public const string Sch_MinExclusiveMismatch = "Sch_MinExclusiveMismatch";
-               public const string Sch_MinExlIncMismatch = "Sch_MinExlIncMismatch";
-               public const string Sch_MinExlMaxExlMismatch = "Sch_MinExlMaxExlMismatch";
-               public const string Sch_MinGtMax = "Sch_MinGtMax";
-               public const string Sch_MinIncExlMismatch = "Sch_MinIncExlMismatch";
-               public const string Sch_MinIncMaxExlMismatch = "Sch_MinIncMaxExlMismatch";
-               public const string Sch_MinInclusiveConstraintFailed = "Sch_MinInclusiveConstraintFailed";
-               public const string Sch_MinInclusiveExclusive = "Sch_MinInclusiveExclusive";
-               public const string Sch_MinInclusiveFacetInvalid = "Sch_MinInclusiveFacetInvalid";
-               public const string Sch_MinInclusiveFacetProhibited = "Sch_MinInclusiveFacetProhibited";
-               public const string Sch_MinInclusiveGtMaxExclusive = "Sch_MinInclusiveGtMaxExclusive";
-               public const string Sch_MinInclusiveGtMaxInclusive = "Sch_MinInclusiveGtMaxInclusive";
-               public const string Sch_MinInclusiveMismatch = "Sch_MinInclusiveMismatch";
-               public const string Sch_MinLengthConstraintFailed = "Sch_MinLengthConstraintFailed";
-               public const string Sch_MinLengthFacetInvalid = "Sch_MinLengthFacetInvalid";
-               public const string Sch_MinLengthFacetProhibited = "Sch_MinLengthFacetProhibited";
-               public const string Sch_MinLengthGtBaseMinLength = "Sch_MinLengthGtBaseMinLength";
-               public const string Sch_MinLengthGtMaxLength = "Sch_MinLengthGtMaxLength";
-               public const string Sch_MinMaxGroupRedefine = "Sch_MinMaxGroupRedefine";
-               public const string Sch_MinOccursInvalid = "Sch_MinOccursInvalid";
-               public const string Sch_MinOccursInvalidXsd = "Sch_MinOccursInvalidXsd";
-               public const string Sch_MismatchTargetNamespaceEx = "Sch_MismatchTargetNamespaceEx";
-               public const string Sch_MismatchTargetNamespaceImport = "Sch_MismatchTargetNamespaceImport";
-               public const string Sch_MismatchTargetNamespaceInclude = "Sch_MismatchTargetNamespaceInclude";
-               public const string Sch_MissAttribute = "Sch_MissAttribute";
-               public const string Sch_MissDtvalue = "Sch_MissDtvalue";
-               public const string Sch_MissDtvaluesAttribute = "Sch_MissDtvaluesAttribute";
-               public const string Sch_MissRequiredAttribute = "Sch_MissRequiredAttribute";
-               public const string Sch_MissingKey = "Sch_MissingKey";
-               public const string Sch_MissingPublicSystemAttribute = "Sch_MissingPublicSystemAttribute";
-               public const string Sch_MixSchemaTypes = "Sch_MixSchemaTypes";
-               public const string Sch_MixedMany = "Sch_MixedMany";
-               public const string Sch_MoreThanOneWildId = "Sch_MoreThanOneWildId";
-               public const string Sch_MultipleAttrGroupSelfRef = "Sch_MultipleAttrGroupSelfRef";
-               public const string Sch_MultipleGroupSelfRef = "Sch_MultipleGroupSelfRef";
-               public const string Sch_MultipleRedefine = "Sch_MultipleRedefine";
-               public const string Sch_NeedSimpleTypeChild = "Sch_NeedSimpleTypeChild";
-               public const string Sch_NoAttributeSchemaFound = "Sch_NoAttributeSchemaFound";
-               public const string Sch_NoDerivedAttribute = "Sch_NoDerivedAttribute";
-               public const string Sch_NoElementSchemaFound = "Sch_NoElementSchemaFound";
-               public const string Sch_NoExamplar = "Sch_NoExamplar";
-               public const string Sch_NoGroupParticle = "Sch_NoGroupParticle";
-               public const string Sch_NoRestOrExt = "Sch_NoRestOrExt";
-               public const string Sch_NoRestOrExtQName = "Sch_NoRestOrExtQName";
-               public const string Sch_NoSimpleTypeContent = "Sch_NoSimpleTypeContent";
-               public const string Sch_NonDeterministic = "Sch_NonDeterministic";
-               public const string Sch_NonDeterministicAnyAny = "Sch_NonDeterministicAnyAny";
-               public const string Sch_NonDeterministicAnyEx = "Sch_NonDeterministicAnyEx";
-               public const string Sch_NotAllAlone = "Sch_NotAllAlone";
-               public const string Sch_NotComplexContent = "Sch_NotComplexContent";
-               public const string Sch_NotNormalizedString = "Sch_NotNormalizedString";
-               public const string Sch_NotSimpleContent = "Sch_NotSimpleContent";
-               public const string Sch_NotTokenString = "Sch_NotTokenString";
-               public const string Sch_NotXsiAttribute = "Sch_NotXsiAttribute";
-               public const string Sch_NotationAttributeOnEmptyElement = "Sch_NotationAttributeOnEmptyElement";
-               public const string Sch_NotationRequired = "Sch_NotationRequired";
-               public const string Sch_NotationValue = "Sch_NotationValue";
-               public const string Sch_NullValue = "Sch_NullValue";
-               public const string Sch_OptionalDefaultAttribute = "Sch_OptionalDefaultAttribute";
-               public const string Sch_ParEntityRefNesting  = "Sch_ParEntityRefNesting ";
-               public const string Sch_PatternConstraintFailed = "Sch_PatternConstraintFailed";
-               public const string Sch_PatternFacetInvalid = "Sch_PatternFacetInvalid";
-               public const string Sch_PatternFacetProhibited = "Sch_PatternFacetProhibited";
-               public const string Sch_ProhibitedAttribute = "Sch_ProhibitedAttribute";
-               public const string Sch_RedefineLocation = "Sch_RedefineLocation";
-               public const string Sch_RedefineNoSchema = "Sch_RedefineNoSchema";
-               public const string Sch_RefInvalidAttribute = "Sch_RefInvalidAttribute";
-               public const string Sch_RefInvalidCardin = "Sch_RefInvalidCardin";
-               public const string Sch_RefInvalidElement = "Sch_RefInvalidElement";
-               public const string Sch_RefInvalidIdentityConstraint = "Sch_RefInvalidIdentityConstraint";
-               public const string Sch_RefNotInScope = "Sch_RefNotInScope";
-               public const string Sch_ReftoKeyref = "Sch_ReftoKeyref";
-               public const string Sch_RequireEnumeration = "Sch_RequireEnumeration";
-               public const string Sch_RootMatchDocType = "Sch_RootMatchDocType";
-               public const string Sch_SchemaAttributeNameMismatch = "Sch_SchemaAttributeNameMismatch";
-               public const string Sch_SchemaDoesNotExist = "Sch_SchemaDoesNotExist";
-               public const string Sch_SchemaElementNameMismatch = "Sch_SchemaElementNameMismatch";
-               public const string Sch_SchemaNotPreprocessed = "Sch_SchemaNotPreprocessed";
-               public const string Sch_SchemaNotRemoved = "Sch_SchemaNotRemoved";
-               public const string Sch_SchemaRootExpected = "Sch_SchemaRootExpected";
-               public const string Sch_SelectorAttr = "Sch_SelectorAttr";
-               public const string Sch_SelectorBeforeFields = "Sch_SelectorBeforeFields";
-               public const string Sch_SeqFromAll = "Sch_SeqFromAll";
-               public const string Sch_SeqFromChoice = "Sch_SeqFromChoice";
-               public const string Sch_SimpleToComplexTypeRedefine = "Sch_SimpleToComplexTypeRedefine";
-               public const string Sch_SimpleTypeDoubleRedefine = "Sch_SimpleTypeDoubleRedefine";
-               public const string Sch_SimpleTypeListRefBase = "Sch_SimpleTypeListRefBase";
-               public const string Sch_SimpleTypeListRefBaseNone = "Sch_SimpleTypeListRefBaseNone";
-               public const string Sch_SimpleTypeRedefineNotFound = "Sch_SimpleTypeRedefineNotFound";
-               public const string Sch_SimpleTypeRestRefBase = "Sch_SimpleTypeRestRefBase";
-               public const string Sch_SimpleTypeRestRefBaseNone = "Sch_SimpleTypeRestRefBaseNone";
-               public const string Sch_SimpleTypeRestriction = "Sch_SimpleTypeRestriction";
-               public const string Sch_SimpleTypeUnionNoBase = "Sch_SimpleTypeUnionNoBase";
-               public const string Sch_StandAlone = "Sch_StandAlone";
-               public const string Sch_StandAloneNormalization = "Sch_StandAloneNormalization";
-               public const string Sch_SubstitutionBlocked = "Sch_SubstitutionBlocked";
-               public const string Sch_SubstitutionCircularRef = "Sch_SubstitutionCircularRef";
-               public const string Sch_SubstitutionNotAllowed = "Sch_SubstitutionNotAllowed";
-               public const string Sch_TargetNamespaceXsi = "Sch_TargetNamespaceXsi";
-               public const string Sch_TextNotAllowed = "Sch_TextNotAllowed";
-               public const string Sch_TotalDigitsConstraintFailed = "Sch_TotalDigitsConstraintFailed";
-               public const string Sch_TotalDigitsFacetInvalid = "Sch_TotalDigitsFacetInvalid";
-               public const string Sch_TotalDigitsFacetProhibited = "Sch_TotalDigitsFacetProhibited";
-               public const string Sch_TotalDigitsMismatch = "Sch_TotalDigitsMismatch";
-               public const string Sch_TwoIdAttrUses = "Sch_TwoIdAttrUses";
-               public const string Sch_TypeAfterConstraints = "Sch_TypeAfterConstraints";
-               public const string Sch_TypeCircularRef = "Sch_TypeCircularRef";
-               public const string Sch_TypeMutualExclusive = "Sch_TypeMutualExclusive";
-               public const string Sch_UnSpecifiedDefaultAttributeInExternalStandalone = "Sch_UnSpecifiedDefaultAttributeInExternalStandalone";
-               public const string Sch_UndeclaredAttribute = "Specified XML Schema attribute {0} is not declared.";
-               public const string Sch_UndeclaredElement = "Specified XML Schema element {0} is not declared.";
-               public const string Sch_UndeclaredEntity = "Specified XML entity {0} is not declared.";
-               public const string Sch_UndeclaredEquivClass = "Specified XML Schema substitution group {0} is not declared.";
-               public const string Sch_UndeclaredId = "Specified ID {0} is not declared.";
-               public const string Sch_UndeclaredIdentityConstraint = "Specified XML Schema identity constraint {0} is not declared.";
-               public const string Sch_UndeclaredNotation = "XML Schema notation {0} is not declared.";
-               public const string Sch_UndeclaredSimpleType = "XML Schema simple type {0} is not declared.";
-               public const string Sch_UndeclaredType = "XML Schema type {0} is not declared.";
-               public const string Sch_UndefAttributeGroupRef = "XML Schema attribute group {0} is not declared.";
-               public const string Sch_UndefBaseExtension = "Specified XML Schema base type {0} for extension is not declared.";
-               public const string Sch_UndefBaseRestriction = "Specified XML Schema base type {0} for restriction is not declared.";
-               public const string Sch_UndefGroupRef = "Specified XML Schema group {0} is not declared.";
-               public const string Sch_UnexpressibleAnyAttribute = "Sch_UnexpressibleAnyAttribute";
-               public const string Sch_UnionFailedEx = "Sch_UnionFailedEx";
-               public const string Sch_UnionFromUnion = "Sch_UnionFromUnion";
-               public const string Sch_UnknownContent = "Sch_UnknownContent";
-               public const string Sch_UnknownDtType = "Sch_UnknownDtType";
-               public const string Sch_UnknownFacet = "Sch_UnknownFacet";
-               public const string Sch_UnknownModel = "Sch_UnknownModel";
-               public const string Sch_UnknownOrder = "Sch_UnknownOrder";
-               public const string Sch_UnknownRequired = "Sch_UnknownRequired";
-               public const string Sch_UnparsedEntityRef = "Sch_UnparsedEntityRef";
-               public const string Sch_UnrefNS = "Sch_UnrefNS";
-               public const string Sch_UnresolvedKeyref = "Sch_UnresolvedKeyref";
-               public const string Sch_UnresolvedPrefix = "Sch_UnresolvedPrefix";
-               public const string Sch_UnsupportedAttribute = "Sch_UnsupportedAttribute";
-               public const string Sch_UnsupportedElement = "Sch_UnsupportedElement";
-               public const string Sch_ValidateAttributeInvalidCall = "Sch_ValidateAttributeInvalidCall";
-               public const string Sch_ValidateElementInvalidCall = "Sch_ValidateElementInvalidCall";
-               public const string Sch_WhiteSpaceFacetProhibited = "Sch_WhiteSpaceFacetProhibited";
-               public const string Sch_WhiteSpaceRestriction1 = "Sch_WhiteSpaceRestriction1";
-               public const string Sch_WhiteSpaceRestriction2 = "Sch_WhiteSpaceRestriction2";
-               public const string Sch_XSDSchemaOnly = "Sch_XSDSchemaOnly";
-               public const string Sch_XSDSchemaRootExpected = "Sch_XSDSchemaRootExpected";
-               public const string Sch_XmlNsAttribute = "Sch_XmlNsAttribute";
-               public const string Sch_XmlSpace = "Sch_XmlSpace";
-               public const string Sch_XmlTypeHasFraction = "Sch_XmlTypeHasFraction";
-               public const string Sch_XsdDateTimeCompare = "Cannot compare '{0}' and '{1}'.";
-               public const string Sch_XsiNilAndFixed = "Sch_XsiNilAndFixed";
-               public const string Sch_XsiNilAndType = "Sch_XsiNilAndType";
-               public const string Sch_XsiTypeAbstract = "Sch_XsiTypeAbstract";
-               public const string Sch_XsiTypeBlockedEx = "Sch_XsiTypeBlockedEx";
-               public const string Sch_XsiTypeNotFound = "Sch_XsiTypeNotFound";
-               public const string SchemaSyntaxErrorDetails = "SchemaSyntaxErrorDetails";
-               public const string SchemaValidationWarning = "SchemaValidationWarning";
-
-               public static string GetString (string s, params object [] args)
-               {
-                       return args == null ? s : string.Format (s, args);
-               }
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Res.cs b/mcs/class/System.XML/System.Xml.Res.cs
deleted file mode 100644 (file)
index ab6be05..0000000
+++ /dev/null
@@ -1,1257 +0,0 @@
-namespace System.Xml {
-       static partial class Res {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public const string Xml_UserException = @"{0}";
-public const string Xml_DefaultException = @"An XML error has occurred.";
-public const string Xml_InvalidOperation = @"Operation is not valid due to the current state of the object.";
-public const string Xml_ErrorFilePosition = @"An error occurred at {0}, ({1}, {2}).";
-#if !SILVERLIGHT
-public const string Xml_StackOverflow = @"Stack overflow.";
-public const string Xslt_NoStylesheetLoaded = @"No stylesheet was loaded.";
-public const string Xslt_NotCompiledStylesheet = @"Type '{0}' is not a compiled stylesheet class.";
-public const string Xslt_IncompatibleCompiledStylesheetVersion = @"Executing a stylesheet that was compiled using a later version of the framework is not supported. Stylesheet Version: {0}. Current Framework Version: {1}.";
-#endif
-
-
-
-
-public const string Xml_AsyncIsRunningException = @"An asynchronous operation is already in progress.";
-public const string Xml_ReaderAsyncNotSetException = @"Set XmlReaderSettings.Async to true if you want to use Async Methods.";
-public const string Xml_UnclosedQuote = @"There is an unclosed literal string.";
-public const string Xml_UnexpectedEOF = @"Unexpected end of file while parsing {0} has occurred.";
-public const string Xml_UnexpectedEOF1 = @"Unexpected end of file has occurred.";
-public const string Xml_UnexpectedEOFInElementContent = @"Unexpected end of file has occurred. The following elements are not closed: {0}";
-public const string Xml_BadStartNameChar = @"Name cannot begin with the '{0}' character, hexadecimal value {1}.";
-public const string Xml_BadNameChar = @"The '{0}' character, hexadecimal value {1}, cannot be included in a name.";
-public const string Xml_BadDecimalEntity = @"Invalid syntax for a decimal numeric entity reference.";
-public const string Xml_BadHexEntity = @"Invalid syntax for a hexadecimal numeric entity reference.";
-public const string Xml_MissingByteOrderMark = @"There is no Unicode byte order mark. Cannot switch to Unicode.";
-public const string Xml_UnknownEncoding = @"System does not support '{0}' encoding.";
-public const string Xml_InternalError = @"An internal error has occurred.";
-public const string Xml_InvalidCharInThisEncoding = @"Invalid character in the given encoding.";
-public const string Xml_ErrorPosition = @"Line {0}, position {1}.";
-public const string Xml_MessageWithErrorPosition = @"{0} Line {1}, position {2}.";
-public const string Xml_UnexpectedTokenEx = @"'{0}' is an unexpected token. The expected token is '{1}'.";
-public const string Xml_UnexpectedTokens2 = @"'{0}' is an unexpected token. The expected token is '{1}' or '{2}'.";
-public const string Xml_ExpectingWhiteSpace = @"'{0}' is an unexpected token. Expecting white space.";
-public const string Xml_TagMismatch = @"The '{0}' start tag on line {1} does not match the end tag of '{2}'.";
-public const string Xml_TagMismatchEx = @"The '{0}' start tag on line {1} position {2} does not match the end tag of '{3}'.";
-public const string Xml_UnexpectedEndTag = @"Unexpected end tag.";
-public const string Xml_UnknownNs = @"'{0}' is an undeclared prefix.";
-public const string Xml_BadAttributeChar = @"'{0}', hexadecimal value {1}, is an invalid attribute character.";
-public const string Xml_ExpectExternalOrClose = @"Expecting external ID, '[' or '>'.";
-public const string Xml_MissingRoot = @"Root element is missing.";
-public const string Xml_MultipleRoots = @"There are multiple root elements.";
-public const string Xml_InvalidRootData = @"Data at the root level is invalid.";
-public const string Xml_XmlDeclNotFirst = @"Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it.";
-public const string Xml_InvalidXmlDecl = @"Syntax for an XML declaration is invalid.";
-public const string Xml_InvalidNodeType = @"'{0}' is an invalid XmlNodeType.";
-public const string Xml_InvalidPIName = @"'{0}' is an invalid name for processing instructions.";
-public const string Xml_InvalidXmlSpace = @"'{0}' is an invalid xml:space value.";
-public const string Xml_InvalidVersionNumber = @"Version number '{0}' is invalid.";
-public const string Xml_DupAttributeName = @"'{0}' is a duplicate attribute name.";
-public const string Xml_BadDTDLocation = @"Unexpected DTD declaration.";
-public const string Xml_ElementNotFound = @"Element '{0}' was not found.";
-public const string Xml_ElementNotFoundNs = @"Element '{0}' with namespace name '{1}' was not found.";
-public const string Xml_PartialContentNodeTypeNotSupportedEx = @"XmlNodeType {0} is not supported for partial content parsing.";
-public const string Xml_MultipleDTDsProvided = @"Cannot have multiple DTDs.";
-public const string Xml_CanNotBindToReservedNamespace = @"Cannot bind to the reserved namespace.";
-public const string Xml_InvalidCharacter = @"'{0}', hexadecimal value {1}, is an invalid character.";
-public const string Xml_InvalidBinHexValue = @"'{0}' is not a valid BinHex text sequence.";
-public const string Xml_InvalidBinHexValueOddCount = @"'{0}' is not a valid BinHex text sequence. The sequence must contain an even number of characters.";
-public const string Xml_InvalidTextDecl = @"Invalid text declaration.";
-public const string Xml_InvalidBase64Value = @"'{0}' is not a valid Base64 text sequence.";
-public const string Xml_UndeclaredEntity = @"Reference to undeclared entity '{0}'.";
-public const string Xml_RecursiveParEntity = @"Parameter entity '{0}' references itself.";
-public const string Xml_RecursiveGenEntity = @"General entity '{0}' references itself.";
-public const string Xml_ExternalEntityInAttValue = @"External entity '{0}' reference cannot appear in the attribute value.";
-public const string Xml_UnparsedEntityRef = @"Reference to unparsed entity '{0}'.";
-public const string Xml_NotSameNametable = @"Not the same name table.";
-public const string Xml_NametableMismatch = @"XmlReaderSettings.XmlNameTable must be the same name table as in XmlParserContext.NameTable or XmlParserContext.NamespaceManager.NameTable, or it must be null.";
-public const string Xml_BadNamespaceDecl = @"Invalid namespace declaration.";
-public const string Xml_ErrorParsingEntityName = @"An error occurred while parsing EntityName.";
-public const string Xml_InvalidNmToken = @"Invalid NmToken value '{0}'.";
-public const string Xml_EntityRefNesting = @"Entity replacement text must nest properly within markup declarations.";
-public const string Xml_CannotResolveEntity = @"Cannot resolve entity reference '{0}'.";
-public const string Xml_CannotResolveEntityDtdIgnored = @"Cannot resolve entity reference '{0}' because the DTD has been ignored. To enable DTD processing set the DtdProcessing property on XmlReaderSettings to Parse and pass the settings into XmlReader.Create method.";
-public const string Xml_CannotResolveExternalSubset = @"Cannot resolve external DTD subset - public ID = '{0}', system ID = '{1}'.";
-public const string Xml_CannotResolveUrl = @"Cannot resolve '{0}'.";
-public const string Xml_CDATAEndInText = @"']]>' is not allowed in character data.";
-public const string Xml_ExternalEntityInStandAloneDocument = @"Standalone document declaration must have a value of 'no' because an external entity '{0}' is referenced.";
-public const string Xml_DtdAfterRootElement = @"DTD must be defined before the document root element.";
-public const string Xml_ReadOnlyProperty = @"The '{0}' property is read only and cannot be set.";
-public const string Xml_DtdIsProhibited = @"DTD is prohibited in this XML document.";
-public const string Xml_DtdIsProhibitedEx = @"For security reasons DTD is prohibited in this XML document. To enable DTD processing set the DtdProcessing property on XmlReaderSettings to Parse and pass the settings into XmlReader.Create method.";
-public const string Xml_ReadSubtreeNotOnElement = @"ReadSubtree() can be called only if the reader is on an element node.";
-public const string Xml_DtdNotAllowedInFragment = @"DTD is not allowed in XML fragments.";
-public const string Xml_CannotStartDocumentOnFragment = @"WriteStartDocument cannot be called on writers created with ConformanceLevel.Fragment.";
-public const string Xml_ErrorOpeningExternalDtd = @"An error has occurred while opening external DTD '{0}': {1}";
-public const string Xml_ErrorOpeningExternalEntity = @"An error has occurred while opening external entity '{0}': {1}";
-public const string Xml_ReadBinaryContentNotSupported = @"{0} method is not supported on this XmlReader. Use CanReadBinaryContent property to find out if a reader implements it.";
-public const string Xml_ReadValueChunkNotSupported = @"ReadValueChunk method is not supported on this XmlReader. Use CanReadValueChunk property to find out if an XmlReader implements it.";
-public const string Xml_InvalidReadContentAs = @"The {0} method is not supported on node type {1}. If you want to read typed content of an element, use the ReadElementContentAs method.";
-public const string Xml_InvalidReadElementContentAs = @"The {0} method is not supported on node type {1}.";
-public const string Xml_MixedReadElementContentAs = @"ReadElementContentAs() methods cannot be called on an element that has child elements.";
-public const string Xml_MixingReadValueChunkWithBinary = @"ReadValueChunk calls cannot be mixed with ReadContentAsBase64 or ReadContentAsBinHex.";
-public const string Xml_MixingBinaryContentMethods = @"ReadContentAsBase64 and ReadContentAsBinHex method calls cannot be mixed with calls to ReadElementContentAsBase64 and ReadElementContentAsBinHex.";
-public const string Xml_MixingV1StreamingWithV2Binary = @"ReadContentAsBase64 and ReadContentAsBinHex method calls cannot be mixed with calls to ReadChars, ReadBase64, and ReadBinHex.";
-public const string Xml_InvalidReadValueChunk = @"The ReadValueAsChunk method is not supported on node type {0}.";
-public const string Xml_ReadContentAsFormatException = @"Content cannot be converted to the type {0}.";
-public const string Xml_DoubleBaseUri = @"BaseUri must be specified either as an argument of XmlReader.Create or on the XmlParserContext. If it is specified on both, it must be the same base URI.";
-public const string Xml_NotEnoughSpaceForSurrogatePair = @"The buffer is not large enough to fit a surrogate pair. Please provide a buffer of size at least 2 characters.";
-public const string Xml_EmptyUrl = @"The URL cannot be empty.";
-public const string Xml_UnexpectedNodeInSimpleContent = @"Unexpected node type {0}. {1} method can only be called on elements with simple or empty content.";
-public const string Xml_InvalidWhitespaceCharacter = @"The Whitespace or SignificantWhitespace node can contain only XML white space characters. '{0}' is not an XML white space character.";
-public const string Xml_IncompatibleConformanceLevel = @"Cannot change conformance checking to {0}. Make sure the ConformanceLevel in XmlReaderSettings is set to Auto for wrapping scenarios.";
-public const string Xml_LimitExceeded = @"The input document has exceeded a limit set by {0}.";
-public const string Xml_ClosedOrErrorReader = @"The XmlReader is closed or in error state.";
-public const string Xml_CharEntityOverflow = @"Invalid value of a character entity reference.";
-
-#if !SILVERLIGHT
-public const string Xml_BadNameCharWithPos = @"The '{0}' character, hexadecimal value {1}, at position {2} within the name, cannot be included in a name.";
-public const string Xml_XmlnsBelongsToReservedNs = @"The 'xmlns' attribute is bound to the reserved namespace 'http://www.w3.org/2000/xmlns/'.";
-public const string Xml_UndeclaredParEntity = @"Reference to undeclared parameter entity '{0}'.";
-public const string Xml_InvalidXmlDocument = @"Invalid XML document. {0}";
-public const string Xml_NoDTDPresent = @"No DTD found.";
-public const string Xml_MultipleValidaitonTypes = @"Unsupported combination of validation types.";
-public const string Xml_NoValidation = @"No validation occurred.";
-public const string Xml_WhitespaceHandling = @"Expected WhitespaceHandling.None, or WhitespaceHandling.All, or WhitespaceHandling.Significant.";
-public const string Xml_InvalidResetStateCall = @"Cannot call ResetState when parsing an XML fragment.";
-public const string Xml_EntityHandling = @"Expected EntityHandling.ExpandEntities or EntityHandling.ExpandCharEntities.";
-public const string Xml_AttlistDuplEnumValue = @"'{0}' is a duplicate enumeration value.";
-public const string Xml_AttlistDuplNotationValue = @"'{0}' is a duplicate notation value.";
-public const string Xml_EncodingSwitchAfterResetState = @"'{0}' is an invalid value for the 'encoding' attribute. The encoding cannot be switched after a call to ResetState.";
-public const string Xml_UnexpectedNodeType = @"Unexpected XmlNodeType: '{0}'.";
-#endif // !SILVERLIGHT
-
-
-
-
-public const string Xml_InvalidConditionalSection = @"A conditional section is not allowed in an internal subset.";
-public const string Xml_UnexpectedCDataEnd = @"']]>' is not expected.";
-public const string Xml_UnclosedConditionalSection = @"There is an unclosed conditional section.";
-public const string Xml_ExpectDtdMarkup = @"Expected DTD markup was not found.";
-public const string Xml_IncompleteDtdContent = @"Incomplete DTD content.";
-public const string Xml_EnumerationRequired = @"Enumeration data type required.";
-public const string Xml_InvalidContentModel = @"Invalid content model.";
-public const string Xml_FragmentId = @"Fragment identifier '{0}' cannot be part of the system identifier '{1}'.";
-public const string Xml_ExpectPcData = @"Expecting 'PCDATA'.";
-public const string Xml_ExpectNoWhitespace = @"White space not allowed before '?', '*', or '+'.";
-public const string Xml_ExpectOp = @"Expecting '?', '*', or '+'.";
-public const string Xml_InvalidAttributeType = @"'{0}' is an invalid attribute type.";
-public const string Xml_InvalidAttributeType1 = @"Invalid attribute type.";
-public const string Xml_ExpectAttType = @"Expecting an attribute type.";
-public const string Xml_ColonInLocalName = @"'{0}' is an unqualified name and cannot contain the character ':'.";
-public const string Xml_InvalidParEntityRef = @"A parameter entity reference is not allowed in internal markup.";
-public const string Xml_ExpectSubOrClose = @"Expecting an internal subset or the end of the DOCTYPE declaration.";
-public const string Xml_ExpectExternalOrPublicId = @"Expecting a system identifier or a public identifier.";
-public const string Xml_ExpectExternalIdOrEntityValue = @"Expecting an external identifier or an entity value.";
-public const string Xml_ExpectIgnoreOrInclude = @"Conditional sections must specify the keyword 'IGNORE' or 'INCLUDE'.";
-
-
-
-
-public const string Xml_UnsupportedClass = @"Object type is not supported.";
-public const string Xml_NullResolver = @"Resolving of external URIs was prohibited.";
-public const string Xml_RelativeUriNotSupported = @"Relative URIs are not supported.";
-
-#if !SILVERLIGHT
-public const string Xml_UntrustedCodeSettingResolver = @"XmlResolver can be set only by fully trusted code.";
-#endif // !SILVERLIGHT
-
-
-
-
-public const string Xml_WriterAsyncNotSetException = @"Set XmlWriterSettings.Async to true if you want to use Async Methods.";
-public const string Xml_PrefixForEmptyNs = @"Cannot use a prefix with an empty namespace.";
-public const string Xml_InvalidCommentChars = @"An XML comment cannot contain '--', and '-' cannot be the last character.";
-public const string Xml_UndefNamespace = @"The '{0}' namespace is not defined.";
-public const string Xml_EmptyName = @"The empty string '' is not a valid name.";
-public const string Xml_EmptyLocalName = @"The empty string '' is not a valid local name.";
-public const string Xml_InvalidNameCharsDetail = @"Invalid name character in '{0}'. The '{1}' character, hexadecimal value {2}, cannot be included in a name.";
-public const string Xml_NoStartTag = @"There was no XML start tag open.";
-public const string Xml_ClosedOrError = @"The Writer is closed or in error state.";
-public const string Xml_WrongToken = @"Token {0} in state {1} would result in an invalid XML document.";
-public const string Xml_XmlPrefix = @"Prefix ""xml"" is reserved for use by XML and can be mapped only to namespace name ""http://www.w3.org/XML/1998/namespace"".";
-public const string Xml_XmlnsPrefix = @"Prefix ""xmlns"" is reserved for use by XML.";
-public const string Xml_NamespaceDeclXmlXmlns = @"Prefix '{0}' cannot be mapped to namespace name reserved for ""xml"" or ""xmlns"".";
-public const string Xml_NonWhitespace = @"Only white space characters should be used.";
-public const string Xml_DupXmlDecl = @"Cannot write XML declaration. WriteStartDocument method has already written it.";
-public const string Xml_CannotWriteXmlDecl = @"Cannot write XML declaration. XML declaration can be only at the beginning of the document.";
-public const string Xml_NoRoot = @"Document does not have a root element.";
-public const string Xml_InvalidPosition = @"The current position on the Reader is neither an element nor an attribute.";
-public const string Xml_IncompleteEntity = @"Incomplete entity contents.";
-public const string Xml_InvalidSurrogateHighChar = @"Invalid high surrogate character (0x{0}). A high surrogate character must have a value from range (0xD800 - 0xDBFF).";
-public const string Xml_InvalidSurrogateMissingLowChar = @"The surrogate pair is invalid. Missing a low surrogate character.";
-public const string Xml_InvalidSurrogatePairWithArgs = @"The surrogate pair (0x{0}, 0x{1}) is invalid. A high surrogate character (0xD800 - 0xDBFF) must always be paired with a low surrogate character (0xDC00 - 0xDFFF).";
-public const string Xml_RedefinePrefix = @"The prefix '{0}' cannot be redefined from '{1}' to '{2}' within the same start element tag.";
-public const string Xml_DtdAlreadyWritten = @"The DTD has already been written out.";
-public const string Xml_InvalidCharsInIndent = @"XmlWriterSettings.{0} can contain only valid XML text content characters when XmlWriterSettings.CheckCharacters is true. {1}";
-public const string Xml_IndentCharsNotWhitespace = @"XmlWriterSettings.{0} can contain only valid XML white space characters when XmlWriterSettings.CheckCharacters and XmlWriterSettings.NewLineOnAttributes are true.";
-public const string Xml_ConformanceLevelFragment = @"Make sure that the ConformanceLevel setting is set to ConformanceLevel.Fragment or ConformanceLevel.Auto if you want to write an XML fragment. ";
-
-#if !SILVERLIGHT
-public const string Xml_InvalidQuote = @"Invalid XML attribute quote character. Valid attribute quote characters are ' and "".";
-public const string Xml_UndefPrefix = @"An undefined prefix is in use.";
-public const string Xml_NoNamespaces = @"Cannot set the namespace if Namespaces is 'false'.";
-public const string Xml_InvalidCDataChars = @"Cannot have ']]>' inside an XML CDATA block.";
-public const string Xml_NotTheFirst = @"WriteStartDocument needs to be the first call.";
-public const string Xml_InvalidPiChars = @"Cannot have '?>' inside an XML processing instruction.";
-public const string Xml_InvalidNameChars = @"Invalid name character in '{0}'.";
-public const string Xml_Closed = @"The Writer is closed.";
-public const string Xml_InvalidPrefix = @"Prefixes beginning with ""xml"" (regardless of whether the characters are uppercase, lowercase, or some combination thereof) are reserved for use by XML.";
-public const string Xml_InvalidIndentation = @"Indentation value must be greater than 0.";
-public const string Xml_NotInWriteState = @"NotInWriteState.";
-public const string Xml_SurrogatePairSplit = @"The second character surrogate pair is not in the input buffer to be written.";
-public const string Xml_NoMultipleRoots = @"Document cannot have multiple document elements.";
-public const string XmlBadName = @"A node of type '{0}' cannot have the name '{1}'.";
-public const string XmlNoNameAllowed = @"A node of type '{0}' cannot have a name.";
-#endif // !SILVERLIGHT
-
-
-
-
-public const string XmlConvert_BadUri = @"The string was not recognized as a valid Uri.";
-public const string XmlConvert_BadFormat = @"The string '{0}' is not a valid {1} value.";
-public const string XmlConvert_Overflow = @"Value '{0}' was either too large or too small for {1}.";
-public const string XmlConvert_TypeBadMapping = @"Xml type '{0}' does not support Clr type '{1}'.";
-public const string XmlConvert_TypeBadMapping2 = @"Xml type '{0}' does not support a conversion from Clr type '{1}' to Clr type '{2}'.";
-public const string XmlConvert_TypeListBadMapping = @"Xml type 'List of {0}' does not support Clr type '{1}'.";
-public const string XmlConvert_TypeListBadMapping2 = @"Xml type 'List of {0}' does not support a conversion from Clr type '{1}' to Clr type '{2}'.";
-public const string XmlConvert_TypeToString = @"Xml type '{0}' cannot convert from Clr type '{1}' unless the destination type is String or XmlAtomicValue.";
-public const string XmlConvert_TypeFromString = @"Xml type '{0}' cannot convert to Clr type '{1}' unless the source value is a String or an XmlAtomicValue.";
-public const string XmlConvert_TypeNoPrefix = @"The QName '{0}' cannot be represented as a String.  A prefix for namespace '{1}' cannot be found.";
-public const string XmlConvert_TypeNoNamespace = @"The String '{0}' cannot be represented as an XmlQualifiedName.  A namespace for prefix '{1}' cannot be found.";
-public const string XmlConvert_NotOneCharString = @"String must be exactly one character long.";
-
-
-
-
-public const string Sch_ParEntityRefNesting = @"The parameter entity replacement text must nest properly within markup declarations.";
-public const string Sch_NotTokenString = @"line-feed (#xA) or tab (#x9) characters, leading or trailing spaces and sequences of one or more spaces (#x20) are not allowed in 'xs:token'.";
-public const string Sch_XsdDateTimeCompare = @"Cannot compare '{0}' and '{1}'.";
-public const string Sch_InvalidNullCast = @"Cannot return null as a value for type '{0}'.";
-public const string Sch_InvalidDateTimeOption = @"The '{0}' value for the 'dateTimeOption' parameter is not an allowed value for the 'XmlDateTimeSerializationMode' enumeration.";
-public const string Sch_StandAloneNormalization = @"StandAlone is 'yes' and the value of the attribute '{0}' contains a definition in an external document that changes on normalization.";
-public const string Sch_UnSpecifiedDefaultAttributeInExternalStandalone = @"Markup for unspecified default attribute '{0}' is external and standalone='yes'.";
-
-#if !SILVERLIGHT
-public const string Sch_DefaultException = @"A schema error occurred.";
-public const string Sch_DupElementDecl = @"The '{0}' element has already been declared.";
-public const string Sch_IdAttrDeclared = @"The attribute of type ID is already declared on the '{0}' element.";
-public const string Sch_RootMatchDocType = @"Root element name must match the DocType name.";
-public const string Sch_DupId = @"'{0}' is already used as an ID.";
-public const string Sch_UndeclaredElement = @"The '{0}' element is not declared.";
-public const string Sch_UndeclaredAttribute = @"The '{0}' attribute is not declared.";
-public const string Sch_UndeclaredNotation = @"The '{0}' notation is not declared.";
-public const string Sch_UndeclaredId = @"Reference to undeclared ID is '{0}'.";
-public const string Sch_SchemaRootExpected = @"Expected schema root. Make sure the root element is <schema> and the namespace is 'http://www.w3.org/2001/XMLSchema' for an XSD schema or 'urn:schemas-microsoft-com:xml-data' for an XDR schema.";
-public const string Sch_XSDSchemaRootExpected = @"The root element of a W3C XML Schema should be <schema> and its namespace should be 'http://www.w3.org/2001/XMLSchema'.";
-public const string Sch_UnsupportedAttribute = @"The '{0}' attribute is not supported in this context.";
-public const string Sch_UnsupportedElement = @"The '{0}' element is not supported in this context.";
-public const string Sch_MissAttribute = @"The '{0}' attribute is either invalid or missing.";
-public const string Sch_AnnotationLocation = @"The 'annotation' element cannot appear at this location.";
-public const string Sch_DataTypeTextOnly = @"Content must be ""textOnly"" when using DataType on an ElementType.";
-public const string Sch_UnknownModel = @"The model attribute must have a value of open or closed, not '{0}'.";
-public const string Sch_UnknownOrder = @"The order attribute must have a value of 'seq', 'one', or 'many', not '{0}'.";
-public const string Sch_UnknownContent = @"The content attribute must have a value of 'textOnly', 'eltOnly', 'mixed', or 'empty', not '{0}'.";
-public const string Sch_UnknownRequired = @"The required attribute must have a value of yes or no.";
-public const string Sch_UnknownDtType = @"Reference to an unknown data type, '{0}'.";
-public const string Sch_MixedMany = @"The order must be many when content is mixed.";
-public const string Sch_GroupDisabled = @"The group is not allowed when ElementType has empty or textOnly content.";
-public const string Sch_MissDtvalue = @"The DataType value cannot be empty.";
-public const string Sch_MissDtvaluesAttribute = @"The dt:values attribute is missing.";
-public const string Sch_DupDtType = @"Data type has already been declared.";
-public const string Sch_DupAttribute = @"The '{0}' attribute has already been declared for this ElementType.";
-public const string Sch_RequireEnumeration = @"Data type should be enumeration when the values attribute is present.";
-public const string Sch_DefaultIdValue = @"An attribute or element of type xs:ID or derived from xs:ID, should not have a value constraint.";
-public const string Sch_ElementNotAllowed = @"Element is not allowed when the content is empty or textOnly.";
-public const string Sch_ElementMissing = @"There is a missing element.";
-public const string Sch_ManyMaxOccurs = @"When the order is many, the maxOccurs attribute must have a value of '*'.";
-public const string Sch_MaxOccursInvalid = @"The maxOccurs attribute must have a value of 1 or *.";
-public const string Sch_MinOccursInvalid = @"The minOccurs attribute must have a value of 0 or 1.";
-public const string Sch_DtMaxLengthInvalid = @"The value '{0}' is invalid for dt:maxLength.";
-public const string Sch_DtMinLengthInvalid = @"The value '{0}' is invalid for dt:minLength.";
-public const string Sch_DupDtMaxLength = @"The value of maxLength has already been declared.";
-public const string Sch_DupDtMinLength = @"The value of minLength has already been declared.";
-public const string Sch_DtMinMaxLength = @"The maxLength value must be equal to or greater than the minLength value.";
-public const string Sch_DupElement = @"The '{0}' element already exists in the content model.";
-public const string Sch_DupGroupParticle = @"The content model can only have one of the following; 'all', 'choice', or 'sequence'.";
-public const string Sch_InvalidValue = @"The value '{0}' is invalid according to its data type.";
-public const string Sch_InvalidValueDetailed = @"The value '{0}' is invalid according to its schema type '{1}' - {2}";
-public const string Sch_InvalidValueDetailedAttribute = @"The attribute '{0}' has an invalid value '{1}' according to its schema type '{2}' - {3}";
-public const string Sch_MissRequiredAttribute = @"The required attribute '{0}' is missing.";
-public const string Sch_FixedAttributeValue = @"The value of the '{0}' attribute does not equal its fixed value.";
-public const string Sch_FixedElementValue = @"The value of the '{0}' element does not equal its fixed value.";
-public const string Sch_AttributeValueDataTypeDetailed = @"The '{0}' attribute is invalid - The value '{1}' is invalid according to its datatype '{2}' - {3}";
-public const string Sch_AttributeDefaultDataType = @"The default value of '{0}' attribute is invalid according to its datatype.";
-public const string Sch_IncludeLocation = @"The 'include' element cannot appear at this location.";
-public const string Sch_ImportLocation = @"The 'import' element cannot appear at this location.";
-public const string Sch_RedefineLocation = @"The 'redefine' element cannot appear at this location.";
-public const string Sch_InvalidBlockDefaultValue = @"The values 'list' and 'union' are invalid for the blockDefault attribute.";
-public const string Sch_InvalidFinalDefaultValue = @"The value 'substitution' is invalid for the finalDefault attribute.";
-public const string Sch_InvalidElementBlockValue = @"The values 'list' and 'union' are invalid for the block attribute on element.";
-public const string Sch_InvalidElementFinalValue = @"The values 'substitution', 'list', and 'union' are invalid for the final attribute on element.";
-public const string Sch_InvalidSimpleTypeFinalValue = @"The values 'substitution' and 'extension' are invalid for the final attribute on simpleType.";
-public const string Sch_InvalidComplexTypeBlockValue = @"The values 'substitution', 'list', and 'union' are invalid for the block attribute on complexType.";
-public const string Sch_InvalidComplexTypeFinalValue = @"The values 'substitution', 'list', and 'union' are invalid for the final attribute on complexType.";
-public const string Sch_DupIdentityConstraint = @"The identity constraint '{0}' has already been declared.";
-public const string Sch_DupGlobalElement = @"The global element '{0}' has already been declared.";
-public const string Sch_DupGlobalAttribute = @"The global attribute '{0}' has already been declared.";
-public const string Sch_DupSimpleType = @"The simpleType '{0}' has already been declared.";
-public const string Sch_DupComplexType = @"The complexType '{0}' has already been declared.";
-public const string Sch_DupGroup = @"The group '{0}' has already been declared.";
-public const string Sch_DupAttributeGroup = @"The attributeGroup '{0}' has already been declared.";
-public const string Sch_DupNotation = @"The notation '{0}' has already been declared.";
-public const string Sch_DefaultFixedAttributes = @"The fixed and default attributes cannot both be present.";
-public const string Sch_FixedInRef = @"The fixed value constraint on the '{0}' attribute reference must match the fixed value constraint on the declaration.";
-public const string Sch_FixedDefaultInRef = @"The default value constraint cannot be present on the '{0}' attribute reference if the fixed value constraint is present on the declaration.";
-public const string Sch_DupXsdElement = @"'{0}' is a duplicate XSD element.";
-public const string Sch_ForbiddenAttribute = @"The '{0}' attribute cannot be present.";
-public const string Sch_AttributeIgnored = @"The '{0}' attribute is ignored, because the value of 'prohibited' for attribute use only prevents inheritance of an identically named attribute from the base type definition.";
-public const string Sch_ElementRef = @"When the ref attribute is present, the type attribute and complexType, simpleType, key, keyref, and unique elements cannot be present.";
-public const string Sch_TypeMutualExclusive = @"The type attribute cannot be present with either simpleType or complexType.";
-public const string Sch_ElementNameRef = @"For element declaration, either the name or the ref attribute must be present.";
-public const string Sch_AttributeNameRef = @"For attribute '{0}', either the name or the ref attribute must be present, but not both.";
-public const string Sch_TextNotAllowed = @"The following text is not allowed in this context: '{0}'.";
-public const string Sch_UndeclaredType = @"Type '{0}' is not declared.";
-public const string Sch_UndeclaredSimpleType = @"Type '{0}' is not declared, or is not a simple type.";
-public const string Sch_UndeclaredEquivClass = @"Substitution group refers to '{0}', an undeclared element.";
-public const string Sch_AttListPresence = @"An attribute of type ID must have a declared default of either #IMPLIED or #REQUIRED.";
-public const string Sch_NotationValue = @"'{0}' is not in the notation list.";
-public const string Sch_EnumerationValue = @"'{0}' is not in the enumeration list.";
-public const string Sch_EmptyAttributeValue = @"The attribute value cannot be empty.";
-public const string Sch_InvalidLanguageId = @"'{0}' is an invalid language identifier.";
-public const string Sch_XmlSpace = @"Invalid xml:space syntax.";
-public const string Sch_InvalidXsdAttributeValue = @"'{1}' is an invalid value for the '{0}' attribute.";
-public const string Sch_InvalidXsdAttributeDatatypeValue = @"The value for the '{0}' attribute is invalid - {1}";
-public const string Sch_ElementValueDataTypeDetailed = @"The '{0}' element is invalid - The value '{1}' is invalid according to its datatype '{2}' - {3}";
-public const string Sch_InvalidElementDefaultValue = @"The default value '{0}' of element '{1}' is invalid according to the type specified by xsi:type.";
-public const string Sch_NonDeterministic = @"Multiple definition of element '{0}' causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.";
-public const string Sch_NonDeterministicAnyEx = @"Wildcard '{0}' allows element '{1}', and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.";
-public const string Sch_NonDeterministicAnyAny = @"Wildcards '{0}' and '{1}' have not empty intersection, and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.";
-public const string Sch_StandAlone = @"The standalone document declaration must have a value of 'no'.";
-public const string Sch_XmlNsAttribute = @"The value 'xmlns' cannot be used as the name of an attribute declaration.";
-public const string Sch_AllElement = @"Element '{0}' cannot appear more than once if content model type is ""all"".";
-public const string Sch_MismatchTargetNamespaceInclude = @"The targetNamespace '{0}' of included/redefined schema should be the same as the targetNamespace '{1}' of the including schema.";
-public const string Sch_MismatchTargetNamespaceImport = @"The namespace attribute '{0}' of an import should be the same value as the targetNamespace '{1}' of the imported schema.";
-public const string Sch_MismatchTargetNamespaceEx = @"The targetNamespace parameter '{0}' should be the same value as the targetNamespace '{1}' of the schema.";
-public const string Sch_XsiTypeNotFound = @"This is an invalid xsi:type '{0}'.";
-public const string Sch_XsiTypeAbstract = @"The xsi:type '{0}' cannot be abstract.";
-public const string Sch_ListFromNonatomic = @"A list data type must be derived from an atomic or union data type.";
-public const string Sch_UnionFromUnion = @"It is an error if a union type has a member with variety union and this member cannot be substituted with its own members. This may be due to the fact that the union member is a restriction of a union with facets.";
-public const string Sch_DupLengthFacet = @"This is a duplicate Length constraining facet.";
-public const string Sch_DupMinLengthFacet = @"This is a duplicate MinLength constraining facet.";
-public const string Sch_DupMaxLengthFacet = @"This is a duplicate MaxLength constraining facet.";
-public const string Sch_DupWhiteSpaceFacet = @"This is a duplicate WhiteSpace constraining facet.";
-public const string Sch_DupMaxInclusiveFacet = @"This is a duplicate MaxInclusive constraining facet.";
-public const string Sch_DupMaxExclusiveFacet = @"This is a duplicate MaxExclusive constraining facet.";
-public const string Sch_DupMinInclusiveFacet = @"This is a duplicate MinInclusive constraining facet.";
-public const string Sch_DupMinExclusiveFacet = @"This is a duplicate MinExclusive constraining facet.";
-public const string Sch_DupTotalDigitsFacet = @"This is a duplicate TotalDigits constraining facet.";
-public const string Sch_DupFractionDigitsFacet = @"This is a duplicate FractionDigits constraining facet.";
-public const string Sch_LengthFacetProhibited = @"The length constraining facet is prohibited for '{0}'.";
-public const string Sch_MinLengthFacetProhibited = @"The MinLength constraining facet is prohibited for '{0}'.";
-public const string Sch_MaxLengthFacetProhibited = @"The MaxLength constraining facet is prohibited for '{0}'.";
-public const string Sch_PatternFacetProhibited = @"The Pattern constraining facet is prohibited for '{0}'.";
-public const string Sch_EnumerationFacetProhibited = @"The Enumeration constraining facet is prohibited for '{0}'.";
-public const string Sch_WhiteSpaceFacetProhibited = @"The WhiteSpace constraining facet is prohibited for '{0}'.";
-public const string Sch_MaxInclusiveFacetProhibited = @"The MaxInclusive constraining facet is prohibited for '{0}'.";
-public const string Sch_MaxExclusiveFacetProhibited = @"The MaxExclusive constraining facet is prohibited for '{0}'.";
-public const string Sch_MinInclusiveFacetProhibited = @"The MinInclusive constraining facet is prohibited for '{0}'.";
-public const string Sch_MinExclusiveFacetProhibited = @"The MinExclusive constraining facet is prohibited for '{0}'.";
-public const string Sch_TotalDigitsFacetProhibited = @"The TotalDigits constraining facet is prohibited for '{0}'.";
-public const string Sch_FractionDigitsFacetProhibited = @"The FractionDigits constraining facet is prohibited for '{0}'.";
-public const string Sch_LengthFacetInvalid = @"The Length constraining facet is invalid - {0}";
-public const string Sch_MinLengthFacetInvalid = @"The MinLength constraining facet is invalid - {0}";
-public const string Sch_MaxLengthFacetInvalid = @"The MaxLength constraining facet is invalid - {0}";
-public const string Sch_MaxInclusiveFacetInvalid = @"The MaxInclusive constraining facet is invalid - {0}";
-public const string Sch_MaxExclusiveFacetInvalid = @"The MaxExclusive constraining facet is invalid - {0}";
-public const string Sch_MinInclusiveFacetInvalid = @"The MinInclusive constraining facet is invalid - {0}";
-public const string Sch_MinExclusiveFacetInvalid = @"The MinExclusive constraining facet is invalid - {0}";
-public const string Sch_TotalDigitsFacetInvalid = @"The TotalDigits constraining facet is invalid - {0}";
-public const string Sch_FractionDigitsFacetInvalid = @"The FractionDigits constraining facet is invalid - {0}";
-public const string Sch_PatternFacetInvalid = @"The Pattern constraining facet is invalid - {0}";
-public const string Sch_EnumerationFacetInvalid = @"The Enumeration constraining facet is invalid - {0}";
-public const string Sch_InvalidWhiteSpace = @"The white space character, '{0}', is invalid.";
-public const string Sch_UnknownFacet = @"This is an unknown facet.";
-public const string Sch_LengthAndMinMax = @"It is an error for both length and minLength or maxLength to be present.";
-public const string Sch_MinLengthGtMaxLength = @"MinLength is greater than MaxLength.";
-public const string Sch_FractionDigitsGtTotalDigits = @"FractionDigits is greater than TotalDigits.";
-public const string Sch_LengthConstraintFailed = @"The actual length is not equal to the specified length.";
-public const string Sch_MinLengthConstraintFailed = @"The actual length is less than the MinLength value.";
-public const string Sch_MaxLengthConstraintFailed = @"The actual length is greater than the MaxLength value.";
-public const string Sch_PatternConstraintFailed = @"The Pattern constraint failed.";
-public const string Sch_EnumerationConstraintFailed = @"The Enumeration constraint failed.";
-public const string Sch_MaxInclusiveConstraintFailed = @"The MaxInclusive constraint failed.";
-public const string Sch_MaxExclusiveConstraintFailed = @"The MaxExclusive constraint failed.";
-public const string Sch_MinInclusiveConstraintFailed = @"The MinInclusive constraint failed.";
-public const string Sch_MinExclusiveConstraintFailed = @"The MinExclusive constraint failed.";
-public const string Sch_TotalDigitsConstraintFailed = @"The TotalDigits constraint failed.";
-public const string Sch_FractionDigitsConstraintFailed = @"The FractionDigits constraint failed.";
-public const string Sch_UnionFailedEx = @"The value '{0}' is not valid according to any of the memberTypes of the union.";
-public const string Sch_NotationRequired = @"NOTATION cannot be used directly in a schema; only data types derived from NOTATION by specifying an enumeration value can be used in a schema. All enumeration facet values must match the name of a notation declared in the current schema.";
-public const string Sch_DupNotationAttribute = @"No element type can have more than one NOTATION attribute specified.";
-public const string Sch_MissingPublicSystemAttribute = @"NOTATION must have either the Public or System attribute present.";
-public const string Sch_NotationAttributeOnEmptyElement = @"An attribute of type NOTATION must not be declared on an element declared EMPTY.";
-public const string Sch_RefNotInScope = @"The Keyref '{0}' cannot find the referred key or unique in scope.";
-public const string Sch_UndeclaredIdentityConstraint = @"The '{0}' identity constraint is not declared.";
-public const string Sch_RefInvalidIdentityConstraint = @"Reference to an invalid identity constraint, '{0}'.";
-public const string Sch_RefInvalidCardin = @"Keyref '{0}' has different cardinality as the referred key or unique element.";
-public const string Sch_ReftoKeyref = @"The '{0}' Keyref can refer to key or unique only.";
-public const string Sch_EmptyXPath = @"The XPath for selector or field cannot be empty.";
-public const string Sch_UnresolvedPrefix = @"The prefix '{0}' in XPath cannot be resolved.";
-public const string Sch_UnresolvedKeyref = @"The key sequence '{0}' in '{1}' Keyref fails to refer to some key.";
-public const string Sch_ICXpathError = @"'{0}' is an invalid XPath for selector or field.";
-public const string Sch_SelectorAttr = @"'{0}' is an invalid XPath for selector. Selector cannot have an XPath selection with an attribute node.";
-public const string Sch_FieldSimpleTypeExpected = @"The field '{0}' is expecting an element or attribute with simple type or simple content.";
-public const string Sch_FieldSingleValueExpected = @"The field '{0}' is expecting at the most one value.";
-public const string Sch_MissingKey = @"The identity constraint '{0}' validation has failed. Either a key is missing or the existing key has an empty node.";
-public const string Sch_DuplicateKey = @"There is a duplicate key sequence '{0}' for the '{1}' key or unique identity constraint.";
-public const string Sch_TargetNamespaceXsi = @"The target namespace of an attribute declaration, whether local or global, must not match http://www.w3.org/2001/XMLSchema-instance.";
-public const string Sch_UndeclaredEntity = @"Reference to an undeclared entity, '{0}'.";
-public const string Sch_UnparsedEntityRef = @"Reference to an unparsed entity, '{0}'.";
-public const string Sch_MaxOccursInvalidXsd = @"The value for the 'maxOccurs' attribute must be xsd:nonNegativeInteger or 'unbounded'.";
-public const string Sch_MinOccursInvalidXsd = @"The value for the 'minOccurs' attribute must be xsd:nonNegativeInteger.";
-public const string Sch_MaxInclusiveExclusive = @"'maxInclusive' and 'maxExclusive' cannot both be specified for the same data type.";
-public const string Sch_MinInclusiveExclusive = @"'minInclusive' and 'minExclusive' cannot both be specified for the same data type.";
-public const string Sch_MinInclusiveGtMaxInclusive = @"The value specified for 'minInclusive' cannot be greater than the value specified for 'maxInclusive' for the same data type.";
-public const string Sch_MinExclusiveGtMaxExclusive = @"The value specified for 'minExclusive' cannot be greater than the value specified for 'maxExclusive' for the same data type.";
-public const string Sch_MinInclusiveGtMaxExclusive = @"The value specified for 'minInclusive' cannot be greater than the value specified for 'maxExclusive' for the same data type.";
-public const string Sch_MinExclusiveGtMaxInclusive = @"The value specified for 'minExclusive' cannot be greater than the value specified for 'maxInclusive' for the same data type.";
-public const string Sch_SimpleTypeRestriction = @"'simpleType' should be the first child of restriction.";
-public const string Sch_InvalidFacetPosition = @"Facet should go before 'attribute', 'attributeGroup', or 'anyAttribute'.";
-public const string Sch_AttributeMutuallyExclusive = @"'{0}' and content model are mutually exclusive.";
-public const string Sch_AnyAttributeLastChild = @"'anyAttribute' must be the last child.";
-public const string Sch_ComplexTypeContentModel = @"The content model of a complex type must consist of 'annotation' (if present); followed by zero or one of the following: 'simpleContent', 'complexContent', 'group', 'choice', 'sequence', or 'all'; followed by zero or more 'attribute' or 'attributeGroup'; followed by zero or one 'anyAttribute'.";
-public const string Sch_ComplexContentContentModel = @"Complex content restriction or extension should consist of zero or one of 'group', 'choice', 'sequence', or 'all'; followed by zero or more 'attribute' or 'attributeGroup'; followed by zero or one 'anyAttribute'.";
-public const string Sch_NotNormalizedString = @"Carriage return (#xD), line feed (#xA), and tab (#x9) characters are not allowed in xs:normalizedString.";
-public const string Sch_FractionDigitsNotOnDecimal = @"FractionDigits should be equal to 0 on types other then decimal.";
-public const string Sch_ContentInNill = @"Element '{0}' must have no character or element children.";
-public const string Sch_NoElementSchemaFound = @"Could not find schema information for the element '{0}'.";
-public const string Sch_NoAttributeSchemaFound = @"Could not find schema information for the attribute '{0}'.";
-public const string Sch_InvalidNamespace = @"The Namespace '{0}' is an invalid URI.";
-public const string Sch_InvalidTargetNamespaceAttribute = @"The targetNamespace attribute cannot have empty string as its value.";
-public const string Sch_InvalidNamespaceAttribute = @"The namespace attribute cannot have empty string as its value.";
-public const string Sch_InvalidSchemaLocation = @"The SchemaLocation '{0}' is an invalid URI.";
-public const string Sch_ImportTargetNamespace = @"Namespace attribute of an import must not match the real value of the enclosing targetNamespace of the <schema>.";
-public const string Sch_ImportTargetNamespaceNull = @"The enclosing <schema> must have a targetNamespace, if the Namespace attribute is absent on the import element.";
-public const string Sch_GroupDoubleRedefine = @"Double redefine for group.";
-public const string Sch_ComponentRedefineNotFound = @"Cannot find a {0} with name '{1}' to redefine.";
-public const string Sch_GroupRedefineNotFound = @"No group to redefine.";
-public const string Sch_AttrGroupDoubleRedefine = @"Double redefine for attribute group.";
-public const string Sch_AttrGroupRedefineNotFound = @"No attribute group to redefine.";
-public const string Sch_ComplexTypeDoubleRedefine = @"Double redefine for complex type.";
-public const string Sch_ComplexTypeRedefineNotFound = @"No complex type to redefine.";
-public const string Sch_SimpleToComplexTypeRedefine = @"Cannot redefine a simple type as complex type.";
-public const string Sch_SimpleTypeDoubleRedefine = @"Double redefine for simple type.";
-public const string Sch_ComplexToSimpleTypeRedefine = @"Cannot redefine a complex type as simple type.";
-public const string Sch_SimpleTypeRedefineNotFound = @"No simple type to redefine.";
-public const string Sch_MinMaxGroupRedefine = @"When group is redefined, the real value of both minOccurs and maxOccurs attribute must be 1 (or absent).";
-public const string Sch_MultipleGroupSelfRef = @"Multiple self-reference within a group is redefined.";
-public const string Sch_MultipleAttrGroupSelfRef = @"Multiple self-reference within an attribute group is redefined.";
-public const string Sch_InvalidTypeRedefine = @"If type is being redefined, the base type has to be self-referenced.";
-public const string Sch_InvalidElementRef = @"If ref is present, all of <complexType>, <simpleType>, <key>, <keyref>, <unique>, nillable, default, fixed, form, block, and type must be absent.";
-public const string Sch_MinGtMax = @"minOccurs value cannot be greater than maxOccurs value.";
-public const string Sch_DupSelector = @"Selector cannot appear twice in one identity constraint.";
-public const string Sch_IdConstraintNoSelector = @"Selector must be present.";
-public const string Sch_IdConstraintNoFields = @"At least one field must be present.";
-public const string Sch_IdConstraintNoRefer = @"The referring attribute must be present.";
-public const string Sch_SelectorBeforeFields = @"Cannot define fields before selector.";
-public const string Sch_NoSimpleTypeContent = @"SimpleType content is missing.";
-public const string Sch_SimpleTypeRestRefBase = @"SimpleType restriction should have either the base attribute or a simpleType child, but not both.";
-public const string Sch_SimpleTypeRestRefBaseNone = @"SimpleType restriction should have either the base attribute or a simpleType child to indicate the base type for the derivation.";
-public const string Sch_SimpleTypeListRefBase = @"SimpleType list should have either the itemType attribute or a simpleType child, but not both.";
-public const string Sch_SimpleTypeListRefBaseNone = @"SimpleType list should have either the itemType attribute or a simpleType child to indicate the itemType of the list. ";
-public const string Sch_SimpleTypeUnionNoBase = @"Either the memberTypes attribute must be non-empty or there must be at least one simpleType child.";
-public const string Sch_NoRestOrExtQName = @"'restriction' or 'extension' child is required for complexType '{0}' in namespace '{1}', because it has a simpleContent or complexContent child.";
-public const string Sch_NoRestOrExt = @"'restriction' or 'extension' child is required for complexType with simpleContent or complexContent child.";
-public const string Sch_NoGroupParticle = @"'sequence', 'choice', or 'all' child is required.";
-public const string Sch_InvalidAllMin = @"'all' must have 'minOccurs' value of 0 or 1.";
-public const string Sch_InvalidAllMax = @"'all' must have {max occurs}=1.";
-public const string Sch_InvalidFacet = @"The 'value' attribute must be present in facet.";
-public const string Sch_AbstractElement = @"The element '{0}' is abstract or its type is abstract.";
-public const string Sch_XsiTypeBlockedEx = @"The xsi:type attribute value '{0}' is not valid for the element '{1}', either because it is not a type validly derived from the type in the schema, or because it has xsi:type derivation blocked.";
-public const string Sch_InvalidXsiNill = @"If the 'nillable' attribute is false in the schema, the 'xsi:nil' attribute must not be present in the instance.";
-public const string Sch_SubstitutionNotAllowed = @"Element '{0}' cannot substitute in place of head element '{1}' because it has block='substitution'.";
-public const string Sch_SubstitutionBlocked = @"Member element {0}'s type cannot be derived by restriction or extension from head element {1}'s type, because it has block='restriction' or 'extension'.";
-public const string Sch_InvalidElementInEmptyEx = @"The element '{0}' cannot contain child element '{1}' because the parent element's content model is empty.";
-public const string Sch_InvalidElementInTextOnlyEx = @"The element '{0}' cannot contain child element '{1}' because the parent element's content model is text only.";
-public const string Sch_InvalidTextInElement = @"The element {0} cannot contain text.";
-public const string Sch_InvalidElementContent = @"The element {0} has invalid child element {1}.";
-public const string Sch_InvalidElementContentComplex = @"The element {0} has invalid child element {1} - {2}";
-public const string Sch_IncompleteContent = @"The element {0} has incomplete content.";
-public const string Sch_IncompleteContentComplex = @"The element {0} has incomplete content - {2}";
-public const string Sch_InvalidTextInElementExpecting = @"The element {0} cannot contain text. List of possible elements expected: {1}.";
-public const string Sch_InvalidElementContentExpecting = @"The element {0} has invalid child element {1}. List of possible elements expected: {2}.";
-public const string Sch_InvalidElementContentExpectingComplex = @"The element {0} has invalid child element {1}. List of possible elements expected: {2}. {3}";
-public const string Sch_IncompleteContentExpecting = @"The element {0} has incomplete content. List of possible elements expected: {1}.";
-public const string Sch_IncompleteContentExpectingComplex = @"The element {0} has incomplete content. List of possible elements expected: {1}. {2}";
-public const string Sch_InvalidElementSubstitution = @"The element {0} cannot substitute for a local element {1} expected in that position.";
-
-public const string Sch_ElementNameAndNamespace = @"'{0}' in namespace '{1}'";
-public const string Sch_ElementName = @"'{0}'";
-public const string Sch_ContinuationString = @"{0}as well as ";
-public const string Sch_AnyElementNS = @"any element in namespace '{0}'";
-public const string Sch_AnyElement = @"any element";
-public const string Sch_InvalidTextInEmpty = @"The element cannot contain text. Content model is empty.";
-public const string Sch_InvalidWhitespaceInEmpty = @"The element cannot contain white space. Content model is empty.";
-public const string Sch_InvalidPIComment = @"The element cannot contain comment or processing instruction. Content model is empty.";
-public const string Sch_InvalidAttributeRef = @"If ref is present, all of 'simpleType', 'form', 'type', and 'use' must be absent.";
-public const string Sch_OptionalDefaultAttribute = @"The 'use' attribute must be optional (or absent) if the default attribute is present.";
-public const string Sch_AttributeCircularRef = @"Circular attribute reference.";
-public const string Sch_IdentityConstraintCircularRef = @"Circular identity constraint reference.";
-public const string Sch_SubstitutionCircularRef = @"Circular substitution group affiliation.";
-public const string Sch_InvalidAnyAttribute = @"Invalid namespace in 'anyAttribute'.";
-public const string Sch_DupIdAttribute = @"Duplicate ID attribute.";
-public const string Sch_InvalidAllElementMax = @"The {max occurs} of all the particles in the {particles} of an all group must be 0 or 1.";
-public const string Sch_InvalidAny = @"Invalid namespace in 'any'.";
-public const string Sch_InvalidAnyDetailed = @"The value of the namespace attribute of the element or attribute wildcard is invalid - {0}";
-public const string Sch_InvalidExamplar = @"Cannot be nominated as the {substitution group affiliation} of any other declaration.";
-public const string Sch_NoExamplar = @"Reference to undeclared substitution group affiliation.";
-public const string Sch_InvalidSubstitutionMember = @"'{0}' cannot be a member of substitution group with head element '{1}'.";
-public const string Sch_RedefineNoSchema = @"'SchemaLocation' must successfully resolve if <redefine> contains any child other than <annotation>.";
-public const string Sch_ProhibitedAttribute = @"The '{0}' attribute is not allowed.";
-public const string Sch_TypeCircularRef = @"Circular type reference.";
-public const string Sch_TwoIdAttrUses = @"Two distinct members of the attribute uses must not have type definitions which are both xs:ID or are derived from xs:ID.";
-public const string Sch_AttrUseAndWildId = @"It is an error if there is a member of the attribute uses of a type definition with type xs:ID or derived from xs:ID and another attribute with type xs:ID matches an attribute wildcard.";
-public const string Sch_MoreThanOneWildId = @"It is an error if more than one attribute whose type is xs:ID or is derived from xs:ID, matches an attribute wildcard on an element.";
-public const string Sch_BaseFinalExtension = @"The base type is the final extension.";
-public const string Sch_NotSimpleContent = @"The content type of the base type must be a simple type definition or it must be mixed, and simpleType child must be present.";
-public const string Sch_NotComplexContent = @"The content type of the base type must not be a simple type definition.";
-public const string Sch_BaseFinalRestriction = @"The base type is final restriction.";
-public const string Sch_BaseFinalList = @"The base type is the final list.";
-public const string Sch_BaseFinalUnion = @"The base type is the final union.";
-public const string Sch_UndefBaseRestriction = @"Undefined complexType '{0}' is used as a base for complex type restriction.";
-public const string Sch_UndefBaseExtension = @"Undefined complexType '{0}' is used as a base for complex type extension.";
-public const string Sch_DifContentType = @"The derived type and the base type must have the same content type.";
-public const string Sch_InvalidContentRestriction = @"Invalid content type derivation by restriction.";
-public const string Sch_InvalidContentRestrictionDetailed = @"Invalid content type derivation by restriction. {0}";
-public const string Sch_InvalidBaseToEmpty = @"If the derived content type is Empty, then the base content type should also be Empty or Mixed with Emptiable particle according to rule 5.3 of Schema Component Constraint: Derivation Valid (Restriction, Complex).";
-public const string Sch_InvalidBaseToMixed = @"If the derived content type is Mixed, then the base content type should also be Mixed according to rule 5.4 of Schema Component Constraint: Derivation Valid (Restriction, Complex).";
-public const string Sch_DupAttributeUse = @"The attribute '{0}' already exists.";
-public const string Sch_InvalidParticleRestriction = @"Invalid particle derivation by restriction.";
-public const string Sch_InvalidParticleRestrictionDetailed = @"Invalid particle derivation by restriction - '{0}'.";
-public const string Sch_ForbiddenDerivedParticleForAll = @"'Choice' or 'any' is forbidden as derived particle when the base particle is 'all'.";
-public const string Sch_ForbiddenDerivedParticleForElem = @"Only 'element' is valid as derived particle when the base particle is 'element'.";
-public const string Sch_ForbiddenDerivedParticleForChoice = @"'All' or 'any' is forbidden as derived particle when the base particle is 'choice'.";
-public const string Sch_ForbiddenDerivedParticleForSeq = @"'All', 'any', and 'choice' are forbidden as derived particles when the base particle is 'sequence'.";
-public const string Sch_ElementFromElement = @"Derived element '{0}' is not a valid restriction of base element '{1}' according to Elt:Elt -- NameAndTypeOK.";
-public const string Sch_ElementFromAnyRule1 = @"The namespace of element '{0}'is not valid with respect to the wildcard's namespace constraint in the base, Elt:Any -- NSCompat Rule 1.";
-public const string Sch_ElementFromAnyRule2 = @"The occurrence range of element '{0}'is not a valid restriction of the wildcard's occurrence range in the base, Elt:Any -- NSCompat Rule2.";
-public const string Sch_AnyFromAnyRule1 = @"The derived wildcard's occurrence range is not a valid restriction of the base wildcard's occurrence range, Any:Any -- NSSubset Rule 1.";
-
-public const string Sch_AnyFromAnyRule2 = @"The derived wildcard's namespace constraint must be an intensional subset of the base wildcard's namespace constraint, Any:Any -- NSSubset Rule2.";
-public const string Sch_AnyFromAnyRule3 = @"The derived wildcard's 'processContents' must be identical to or stronger than the base wildcard's 'processContents', where 'strict' is stronger than 'lax' and 'lax' is stronger than 'skip', Any:Any -- NSSubset Rule 3.";
-public const string Sch_GroupBaseFromAny1 = @"Every member of the derived group particle must be a valid restriction of the base wildcard, NSRecurseCheckCardinality Rule 1.";
-public const string Sch_GroupBaseFromAny2 = @"The derived particle's occurrence range at ({0}, {1}) is not a valid restriction of the base wildcard's occurrence range at ({2}, {3}), NSRecurseCheckCardinality Rule 2.";
-public const string Sch_ElementFromGroupBase1 = @"The derived element {0} at ({1}, {2}) is not a valid restriction of the base sequence particle at ({3}, {4}) according to Elt:All/Choice/Sequence -- RecurseAsIfGroup.";
-public const string Sch_ElementFromGroupBase2 = @"The derived element {0} at ({1}, {2}) is not a valid restriction of the base choice particle at ({3}, {4}) according to Elt:All/Choice/Sequence -- RecurseAsIfGroup.";
-public const string Sch_ElementFromGroupBase3 = @"The derived element {0} at ({1}, {2}) is not a valid restriction of the base all particle at ({3}, {4}) according to Elt:All/Choice/Sequence -- RecurseAsIfGroup.";
-public const string Sch_GroupBaseRestRangeInvalid = @"The derived particle's range is not a valid restriction of the base particle's range according to All:All,Sequence:Sequence -- Recurse Rule 1 or Choice:Choice -- RecurseLax.";
-public const string Sch_GroupBaseRestNoMap = @"The derived particle cannot have more members than the base particle - All:All,Sequence:Sequence -- Recurse Rule 2 / Choice:Choice -- RecurseLax.";
-public const string Sch_GroupBaseRestNotEmptiable = @"All particles in the {particles} of the base particle which are not mapped to by any particle in the {particles} of the derived particle should be emptiable - All:All,Sequence:Sequence -- Recurse Rule 2 / Choice:Choice -- RecurseLax.";
-public const string Sch_SeqFromAll = @"The derived sequence particle at ({0}, {1}) is not a valid restriction of the base all particle at ({2}, {3}) according to Sequence:All -- RecurseUnordered.";
-public const string Sch_SeqFromChoice = @"The derived sequence particle at ({0}, {1}) is not a valid restriction of the base choice particle at ({2}, {3}) according to Sequence:Choice -- MapAndSum.";
-public const string Sch_UndefGroupRef = @"Reference to undeclared model group '{0}'.";
-public const string Sch_GroupCircularRef = @"Circular group reference.";
-public const string Sch_AllRefNotRoot = @"The group ref to 'all' is not the root particle, or it is being used as an extension.";
-public const string Sch_AllRefMinMax = @"The group ref to 'all' must have {min occurs}= 0 or 1 and {max occurs}=1.";
-public const string Sch_NotAllAlone = @"'all' is not the only particle in a group, or is being used as an extension.";
-public const string Sch_AttributeGroupCircularRef = @"Circular attribute group reference.";
-public const string Sch_UndefAttributeGroupRef = @"Reference to undeclared attribute group '{0}'.";
-public const string Sch_InvalidAttributeExtension = @"Invalid attribute extension.";
-public const string Sch_InvalidAnyAttributeRestriction = @"The base any attribute must be a superset of the derived 'anyAttribute'.";
-public const string Sch_AttributeRestrictionProhibited = @"Invalid attribute restriction. Attribute restriction is prohibited in base type.";
-public const string Sch_AttributeRestrictionInvalid = @"Invalid attribute restriction. Derived attribute's type is not a valid restriction of the base attribute's type.";
-public const string Sch_AttributeFixedInvalid = @"Invalid attribute restriction. Derived attribute's fixed value must be the same as the base attribute's fixed value. ";
-public const string Sch_AttributeUseInvalid = @"Derived attribute's use has to be required if base attribute's use is required.";
-public const string Sch_AttributeRestrictionInvalidFromWildcard = @"The {base type definition} must have an {attribute wildcard} and the {target namespace} of the R's {attribute declaration} must be valid with respect to that wildcard.";
-public const string Sch_NoDerivedAttribute = @"The base attribute '{0}' whose use = 'required' does not have a corresponding derived attribute while redefining attribute group '{1}'.";
-public const string Sch_UnexpressibleAnyAttribute = @"The 'anyAttribute' is not expressible.";
-public const string Sch_RefInvalidAttribute = @"Reference to invalid attribute '{0}'.";
-public const string Sch_ElementCircularRef = @"Circular element reference.";
-public const string Sch_RefInvalidElement = @"Reference to invalid element '{0}'.";
-public const string Sch_ElementCannotHaveValue = @"Element's type does not allow fixed or default value constraint.";
-public const string Sch_ElementInMixedWithFixed = @"Although the '{0}' element's content type is mixed, it cannot have element children, because it has a fixed value constraint in the schema.";
-public const string Sch_ElementTypeCollision = @"Elements with the same name and in the same scope must have the same type.";
-public const string Sch_InvalidIncludeLocation = @"Cannot resolve the 'schemaLocation' attribute.";
-public const string Sch_CannotLoadSchema = @"Cannot load the schema for the namespace '{0}' - {1}";
-public const string Sch_CannotLoadSchemaLocation = @"Cannot load the schema from the location '{0}' - {1}";
-public const string Sch_LengthGtBaseLength = @"It is an error if 'length' is among the members of {facets} of {base type definition} and {value} is greater than the {value} of the parent 'length'.";
-public const string Sch_MinLengthGtBaseMinLength = @"It is an error if 'minLength' is among the members of {facets} of {base type definition} and {value} is less than the {value} of the parent 'minLength'.";
-public const string Sch_MaxLengthGtBaseMaxLength = @"It is an error if 'maxLength' is among the members of {facets} of {base type definition} and {value} is greater than the {value} of the parent 'maxLength'.";
-public const string Sch_MaxMinLengthBaseLength = @"It is an error for both 'length' and either 'minLength' or 'maxLength' to be members of {facets}, unless they are specified in different derivation steps. In which case the following must be true: the {value} of 'minLength' <= the {value} of 'length' <= the {value} of 'maxLength'.";
-public const string Sch_MaxInclusiveMismatch = @"It is an error if the derived 'maxInclusive' facet value is greater than the parent 'maxInclusive' facet value.";
-public const string Sch_MaxExclusiveMismatch = @"It is an error if the derived 'maxExclusive' facet value is greater than the parent 'maxExclusive' facet value.";
-public const string Sch_MinInclusiveMismatch = @"It is an error if the derived 'minInclusive' facet value is less than the parent 'minInclusive' facet value.";
-public const string Sch_MinExclusiveMismatch = @"It is an error if the derived 'minExclusive' facet value is less than the parent 'minExclusive' facet value.";
-public const string Sch_MinExlIncMismatch = @"It is an error if the derived 'minExclusive' facet value is less than or equal to the parent 'minInclusive' facet value.";
-public const string Sch_MinExlMaxExlMismatch = @"It is an error if the derived 'minExclusive' facet value is greater than or equal to the parent 'maxExclusive' facet value.";
-public const string Sch_MinIncMaxExlMismatch = @"It is an error if the derived 'minInclusive' facet value is greater than or equal to the parent 'maxExclusive' facet value.";
-public const string Sch_MinIncExlMismatch = @"It is an error if the derived 'minInclusive' facet value is less than or equal to the parent 'minExclusive' facet value.";
-public const string Sch_MaxIncExlMismatch = @"It is an error if the derived 'maxInclusive' facet value is greater than or equal to the parent 'maxExclusive' facet value.";
-public const string Sch_MaxExlIncMismatch = @"It is an error if the derived 'maxExclusive' facet value is greater than or equal to the parent 'maxInclusive' facet value.";
-public const string Sch_TotalDigitsMismatch = @"It is an error if the derived 'totalDigits' facet value is greater than the parent 'totalDigits' facet value.";
-public const string Sch_FacetBaseFixed = @"Values that are declared as {fixed} in a base type can not be changed in a derived type.";
-public const string Sch_WhiteSpaceRestriction1 = @"It is an error if 'whiteSpace' is among the members of {facets} of {base type definition}, {value} is 'replace' or 'preserve', and the {value} of the parent 'whiteSpace' is 'collapse'.";
-public const string Sch_WhiteSpaceRestriction2 = @"It is an error if 'whiteSpace' is among the members of {facets} of {base type definition}, {value} is 'preserve', and the {value} of the parent 'whiteSpace' is 'replace'.";
-public const string Sch_XsiNilAndFixed = @"There must be no fixed value when an attribute is 'xsi:nil' and has a value of 'true'.";
-public const string Sch_MixSchemaTypes = @"Different schema types cannot be mixed.";
-public const string Sch_XSDSchemaOnly = @"'XmlSchemaSet' can load only W3C XML Schemas.";
-public const string Sch_InvalidPublicAttribute = @"Public attribute '{0}' is an invalid URI.";
-public const string Sch_InvalidSystemAttribute = @"System attribute '{0}' is an invalid URI.";
-public const string Sch_TypeAfterConstraints = @"'simpleType' or 'complexType' cannot follow 'unique', 'key' or 'keyref'.";
-public const string Sch_XsiNilAndType = @"There can be no type value when attribute is 'xsi:nil' and has value 'true'.";
-public const string Sch_DupSimpleTypeChild = @"'simpleType' should have only one child 'union', 'list', or 'restriction'.";
-public const string Sch_InvalidIdAttribute = @"Invalid 'id' attribute value: {0}";
-public const string Sch_InvalidNameAttributeEx = @"Invalid 'name' attribute value '{0}': '{1}'.";
-public const string Sch_InvalidAttribute = @"Invalid '{0}' attribute: '{1}'.";
-public const string Sch_EmptyChoice = @"Empty choice cannot be satisfied if 'minOccurs' is not equal to 0.";
-public const string Sch_DerivedNotFromBase = @"The data type of the simple content is not a valid restriction of the base complex type.";
-public const string Sch_NeedSimpleTypeChild = @"Simple content restriction must have a simple type child if the content type of the base type is not a simple type definition.";
-public const string Sch_InvalidCollection = @"The schema items collection cannot contain an object of type 'XmlSchemaInclude', 'XmlSchemaImport', or 'XmlSchemaRedefine'.";
-public const string Sch_UnrefNS = @"Namespace '{0}' is not available to be referenced in this schema.";
-public const string Sch_InvalidSimpleTypeRestriction = @"Restriction of 'anySimpleType' is not allowed.";
-public const string Sch_MultipleRedefine = @"Multiple redefines of the same schema will be ignored.";
-public const string Sch_NullValue = @"Value cannot be null.";
-public const string Sch_ComplexContentModel = @"Content model validation resulted in a large number of states, possibly due to large occurrence ranges. Therefore, content model may not be validated accurately.";
-public const string Sch_SchemaNotPreprocessed = @"All schemas in the set should be successfully preprocessed prior to compilation.";
-public const string Sch_SchemaNotRemoved = @"The schema could not be removed because other schemas in the set have dependencies on this schema or its imports.";
-public const string Sch_ComponentAlreadySeenForNS = @"An element or attribute information item has already been validated from the '{0}' namespace. It is an error if 'xsi:schemaLocation', 'xsi:noNamespaceSchemaLocation', or an inline schema occurs for that namespace.";
-public const string Sch_DefaultAttributeNotApplied = @"Default attribute '{0}' for element '{1}' could not be applied as the attribute namespace is not mapped to a prefix in the instance document.";
-public const string Sch_NotXsiAttribute = @"The attribute '{0}' does not match one of the four allowed attributes in the 'xsi' namespace.";
-public const string Sch_SchemaDoesNotExist = @"Schema does not exist in the set.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlDocument_ValidateInvalidNodeType = @"Validate method can be called only on nodes of type Document, DocumentFragment, Element, or Attribute.";
-public const string XmlDocument_NodeNotFromDocument = @"Cannot validate '{0}' because its owner document is not the current document. ";
-public const string XmlDocument_NoNodeSchemaInfo = @"Schema information could not be found for the node passed into Validate. The node may be invalid in its current position. Navigate to the ancestor that has schema information, then call Validate again.";
-public const string XmlDocument_NoSchemaInfo = @"The XmlSchemaSet on the document is either null or has no schemas in it. Provide schema information before calling Validate.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Sch_InvalidStartTransition = @"It is invalid to call the '{0}' method in the current state of the validator. The '{1}' method must be called before proceeding with validation.";
-public const string Sch_InvalidStateTransition = @"The transition from the '{0}' method to the '{1}' method is not allowed.";
-public const string Sch_InvalidEndValidation = @"The 'EndValidation' method cannot not be called when all the elements have not been validated. 'ValidateEndElement' calls corresponding to 'ValidateElement' calls might be missing.";
-public const string Sch_InvalidEndElementCall = @"It is invalid to call the 'ValidateEndElement' overload that takes in a 'typedValue' after 'ValidateText' or 'ValidateWhitespace' methods have been called.";
-public const string Sch_InvalidEndElementCallTyped = @"It is invalid to call the 'ValidateEndElement' overload that takes in a 'typedValue' for elements with complex content.";
-public const string Sch_InvalidEndElementMultiple = @"The call to the '{0}' method does not match a corresponding call to 'ValidateElement' method.";
-public const string Sch_DuplicateAttribute = @"The '{0}' attribute has already been validated and is a duplicate attribute.";
-public const string Sch_InvalidPartialValidationType = @"The partial validation type has to be 'XmlSchemaElement', 'XmlSchemaAttribute', or 'XmlSchemaType'.";
-public const string Sch_SchemaElementNameMismatch = @"The element name '{0}' does not match the name '{1}' of the 'XmlSchemaElement' set as a partial validation type. ";
-public const string Sch_SchemaAttributeNameMismatch = @"The attribute name '{0}' does not match the name '{1}' of the 'XmlSchemaAttribute' set as a partial validation type. ";
-public const string Sch_ValidateAttributeInvalidCall = @"If the partial validation type is 'XmlSchemaElement' or 'XmlSchemaType', the 'ValidateAttribute' method cannot be called.";
-public const string Sch_ValidateElementInvalidCall = @"If the partial validation type is 'XmlSchemaAttribute', the 'ValidateElement' method cannot be called.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Sch_EnumNotStarted = @"Enumeration has not started. Call MoveNext.";
-public const string Sch_EnumFinished = @"Enumeration has already finished.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string SchInf_schema = @"The supplied xml instance is a schema or contains an inline schema. This class cannot infer a schema for a schema.";
-public const string SchInf_entity = @"Inference cannot handle entity references. Pass in an 'XmlReader' that expands entities.";
-public const string SchInf_simplecontent = @"Expected simple content. Schema was not created using this tool.";
-public const string SchInf_extension = @"Expected 'Extension' within 'SimpleContent'. Schema was not created using this tool.";
-public const string SchInf_particle = @"Particle cannot exist along with 'ContentModel'.";
-public const string SchInf_ct = @"Complex type expected to exist with at least one 'Element' at this point.";
-public const string SchInf_seq = @"sequence expected to contain elements only. Schema was not created using this tool.";
-public const string SchInf_noseq = @"The supplied schema contains particles other than Sequence and Choice. Only schemas generated by this tool are supported.";
-public const string SchInf_noct = @"Expected ComplexType. Schema was not generated using this tool.";
-public const string SchInf_UnknownParticle = @"Expected Element. Schema was not generated using this tool.";
-public const string SchInf_schematype = @"Inference can only handle simple built-in types for 'SchemaType'.";
-public const string SchInf_NoElement = @"There is no element to infer schema.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Xp_UnclosedString = @"This is an unclosed string.";
-public const string Xp_ExprExpected = @"'{0}' is an invalid expression.";
-public const string Xp_InvalidArgumentType = @"The argument to function '{0}' in '{1}' cannot be converted to a node-set.";
-public const string Xp_InvalidNumArgs = @"Function '{0}' in '{1}' has an invalid number of arguments.";
-public const string Xp_InvalidName = @"'{0}' has an invalid qualified name.";
-public const string Xp_InvalidToken = @"'{0}' has an invalid token.";
-public const string Xp_NodeSetExpected = @"Expression must evaluate to a node-set.";
-public const string Xp_NotSupported = @"The XPath query '{0}' is not supported.";
-public const string Xp_InvalidPattern = @"'{0}' is an invalid XSLT pattern.";
-public const string Xp_InvalidKeyPattern = @"'{0}' is an invalid key pattern. It either contains a variable reference or 'key()' function.";
-public const string Xp_BadQueryObject = @"This is an invalid object. Only objects returned from Compile() can be passed as input.";
-public const string Xp_UndefinedXsltContext = @"XsltContext is needed for this query because of an unknown function.";
-public const string Xp_NoContext = @"Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.";
-public const string Xp_UndefVar = @"The variable '{0}' is undefined.";
-public const string Xp_UndefFunc = @"The function '{0}()' is undefined.";
-public const string Xp_FunctionFailed = @"Function '{0}()' has failed.";
-public const string Xp_CurrentNotAllowed = @"The 'current()' function cannot be used in a pattern.";
-public const string Xp_QueryTooComplex = @"The xpath query is too complex.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Xdom_DualDocumentTypeNode = @"This document already has a 'DocumentType' node.";
-public const string Xdom_DualDocumentElementNode = @"This document already has a 'DocumentElement' node.";
-public const string Xdom_DualDeclarationNode = @"This document already has an 'XmlDeclaration' node.";
-public const string Xdom_Import = @"Cannot import nodes of type '{0}'.";
-public const string Xdom_Import_NullNode = @"Cannot import a null node.";
-public const string Xdom_NoRootEle = @"The document does not have a root element.";
-public const string Xdom_Attr_Name = @"The attribute local name cannot be empty.";
-public const string Xdom_AttrCol_Object = @"An 'Attributes' collection can only contain 'Attribute' objects.";
-public const string Xdom_AttrCol_Insert = @"The reference node must be a child of the current node.";
-public const string Xdom_NamedNode_Context = @"The named node is from a different document context.";
-public const string Xdom_Version = @"Wrong XML version information. The XML must match production ""VersionNum ::= '1.' [0-9]+"".";
-public const string Xdom_standalone = @"Wrong value for the XML declaration standalone attribute of '{0}'.";
-public const string Xdom_Ele_Prefix = @"The prefix of an element name cannot start with 'xml'.";
-public const string Xdom_Ent_Innertext = @"The 'InnerText' of an 'Entity' node is read-only and cannot be set.";
-public const string Xdom_EntRef_SetVal = @"'EntityReference' nodes have no support for setting value.";
-public const string Xdom_WS_Char = @"The string for white space contains an invalid character.";
-public const string Xdom_Node_SetVal = @"Cannot set a value on node type '{0}'.";
-public const string Xdom_Empty_LocalName = @"The local name for elements or attributes cannot be null or an empty string.";
-public const string Xdom_Set_InnerXml = @"Cannot set the 'InnerXml' for the current node because it is either read-only or cannot have children.";
-public const string Xdom_Attr_InUse = @"The 'Attribute' node cannot be inserted because it is already an attribute of another element.";
-public const string Xdom_Enum_ElementList = @"The element list has changed. The enumeration operation failed to continue.";
-public const string Xdom_Invalid_NT_String = @"'{0}' does not represent any 'XmlNodeType'.";
-public const string Xdom_InvalidCharacter_EntityReference = @"Cannot create an 'EntityReference' node with a name starting with '#'.";
-public const string Xdom_IndexOutOfRange = @"The index being passed in is out of range.";
-public const string Xdom_Document_Innertext = @"The 'InnerText' of a 'Document' node is read-only and cannot be set.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Xpn_BadPosition = @"Operation is not valid due to the current position of the navigator.";
-public const string Xpn_MissingParent = @"The current position of the navigator is missing a valid parent.";
-public const string Xpn_NoContent = @"No content generated as the result of the operation.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Xdom_Load_NoDocument = @"The document to be loaded could not be found.";
-public const string Xdom_Load_NoReader = @"There is no reader from which to load the document.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Xdom_Node_Null_Doc = @"Cannot create a node without an owner document.";
-public const string Xdom_Node_Insert_Child = @"Cannot insert a node or any ancestor of that node as a child of itself.";
-public const string Xdom_Node_Insert_Contain = @"The current node cannot contain other nodes.";
-public const string Xdom_Node_Insert_Path = @"The reference node is not a child of this node.";
-public const string Xdom_Node_Insert_Context = @"The node to be inserted is from a different document context.";
-public const string Xdom_Node_Insert_Location = @"Cannot insert the node in the specified location.";
-public const string Xdom_Node_Insert_TypeConflict = @"The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type.";
-public const string Xdom_Node_Remove_Contain = @"The current node cannot contain other nodes, so the node to be removed is not its child.";
-public const string Xdom_Node_Remove_Child = @"The node to be removed is not a child of this node.";
-public const string Xdom_Node_Modify_ReadOnly = @"This node is read-only. It cannot be modified.";
-public const string Xdom_TextNode_SplitText = @"The 'Text' node is not connected in the DOM live tree. No 'SplitText' operation could be performed.";
-public const string Xdom_Attr_Reserved_XmlNS = @"The namespace declaration attribute has an incorrect 'namespaceURI': '{0}'.";
-public const string Xdom_Node_Cloning = @"'Entity' and 'Notation' nodes cannot be cloned.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string Xnr_ResolveEntity = @"The node is not an expandable 'EntityReference' node.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string XPathDocument_MissingSchemas = @"An XmlSchemaSet must be provided to validate the document.";
-public const string XPathDocument_NotEnoughSchemaInfo = @"Element should have prior schema information to call this method.";
-public const string XPathDocument_ValidateInvalidNodeType = @"Validate and CheckValidity are only allowed on Root or Element nodes.";
-public const string XPathDocument_SchemaSetNotAllowed = @"An XmlSchemaSet is only allowed as a parameter on the Root node.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-
-
-
-
-
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlBin_MissingEndCDATA = @"CDATA end token is missing.";
-public const string XmlBin_InvalidQNameID = @"Invalid QName ID.";
-public const string XmlBinary_UnexpectedToken = @"Unexpected BinaryXml token.";
-public const string XmlBinary_InvalidSqlDecimal = @"Unable to parse data as SQL_DECIMAL.";
-public const string XmlBinary_InvalidSignature = @"Invalid BinaryXml signature.";
-public const string XmlBinary_InvalidProtocolVersion = @"Invalid BinaryXml protocol version.";
-public const string XmlBinary_UnsupportedCodePage = @"Unsupported BinaryXml codepage.";
-public const string XmlBinary_InvalidStandalone = @"Invalid BinaryXml standalone token.";
-public const string XmlBinary_NoParserContext = @"BinaryXml Parser does not support initialization with XmlParserContext.";
-public const string XmlBinary_ListsOfValuesNotSupported = @"Lists of BinaryXml value tokens not supported.";
-public const string XmlBinary_CastNotSupported = @"Token '{0}' does not support a conversion to Clr type '{1}'.";
-public const string XmlBinary_NoRemapPrefix = @"Prefix '{0}' is already assigned to namespace '{1}' and cannot be reassigned to '{2}' on this tag.";
-public const string XmlBinary_AttrWithNsNoPrefix = @"Attribute '{0}' has namespace '{1}' but no prefix.";
-public const string XmlBinary_ValueTooBig = @"The value is too big to fit into an Int32. The arithmetic operation resulted in an overflow.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string SqlTypes_ArithOverflow = @"Arithmetic Overflow.";
-public const string SqlTypes_ArithTruncation = @"Numeric arithmetic causes truncation.";
-public const string SqlTypes_DivideByZero = @"Divide by zero error encountered.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlMissingType = @"Invalid serialization assembly: Required type {0} cannot be found in the generated assembly '{1}'.";
-public const string XmlUnsupportedType = @"{0} is an unsupported type.";
-public const string XmlSerializerUnsupportedType = @"{0} is an unsupported type. Please use [XmlIgnore] attribute to exclude members of this type from serialization graph.";
-public const string XmlSerializerUnsupportedMember = @"Cannot serialize member '{0}' of type '{1}', see inner exception for more details.";
-public const string XmlUnsupportedTypeKind = @"The type {0} may not be serialized.";
-public const string XmlUnsupportedSoapTypeKind = @"The type {0} may not be serialized with SOAP-encoded messages. Set the Use for your message to Literal.";
-public const string XmlUnsupportedIDictionary = @"The type {0} is not supported because it implements IDictionary.";
-public const string XmlUnsupportedIDictionaryDetails = @"Cannot serialize member {0} of type {1}, because it implements IDictionary.";
-public const string XmlDuplicateTypeName = @"A type with the name {0} has already been added in namespace {1}.";
-public const string XmlSerializableNameMissing1 = @"Schema Id is missing. The schema returned from {0}.GetSchema() must have an Id.";
-public const string XmlConstructorInaccessible = @"{0} cannot be serialized because it does not have a parameterless constructor.";
-public const string XmlTypeInaccessible = @"{0} is inaccessible due to its protection level. Only public types can be processed.";
-public const string XmlTypeStatic = @"{0} cannot be serialized. Static types cannot be used as parameters or return types.";
-public const string XmlNoDefaultAccessors = @"You must implement a default accessor on {0} because it inherits from ICollection.";
-public const string XmlNoAddMethod = @"To be XML serializable, types which inherit from {2} must have an implementation of Add({1}) at all levels of their inheritance hierarchy. {0} does not implement Add({1}).";
-public const string XmlReadOnlyPropertyError = @"Cannot deserialize type '{0}' because it contains property '{1}' which has no public setter.";
-public const string XmlAttributeSetAgain = @"'{0}.{1}' already has attributes.";
-public const string XmlIllegalWildcard = @"Cannot use wildcards at the top level of a schema.";
-public const string XmlIllegalArrayElement = @"An element declared at the top level of a schema cannot have maxOccurs > 1. Provide a wrapper element for '{0}' by using XmlArray or XmlArrayItem instead of XmlElementAttribute, or by using the Wrapped parameter style.";
-public const string XmlIllegalForm = @"There was an error exporting '{0}': elements declared at the top level of a schema cannot be unqualified.";
-public const string XmlBareTextMember = @"There was an error exporting '{0}': bare members cannot contain text content.";
-public const string XmlBareAttributeMember = @"There was an error exporting '{0}': bare members cannot be attributes.";
-public const string XmlReflectionError = @"There was an error reflecting '{0}'.";
-public const string XmlTypeReflectionError = @"There was an error reflecting type '{0}'.";
-public const string XmlPropertyReflectionError = @"There was an error reflecting property '{0}'.";
-public const string XmlFieldReflectionError = @"There was an error reflecting field '{0}'.";
-public const string XmlInvalidDataTypeUsage = @"'{0}' is an invalid value for the {1} property. The property may only be specified for primitive types.";
-public const string XmlInvalidXsdDataType = @"Value '{0}' cannot be used for the {1} property. The datatype '{2}' is missing.";
-public const string XmlDataTypeMismatch = @"'{0}' is an invalid value for the {1} property. {0} cannot be converted to {2}.";
-public const string XmlIllegalTypeContext = @"{0} cannot be used as: 'xml {1}'.";
-public const string XmlUdeclaredXsdType = @"The type, {0}, is undeclared.";
-public const string XmlAnyElementNamespace = @"The element {0} has been attributed with an XmlAnyElementAttribute and a namespace {1}, but no name. When a namespace is supplied, a name is also required. Supply a name or remove the namespace.";
-public const string XmlInvalidConstantAttribute = @"Only XmlEnum may be used on enumerated constants.";
-public const string XmlIllegalDefault = @"The default value for XmlAttribute or XmlElement may only be specified for primitive types.";
-public const string XmlIllegalAttributesArrayAttribute = @"XmlAttribute and XmlAnyAttribute cannot be used in conjunction with XmlElement, XmlText, XmlAnyElement, XmlArray, or XmlArrayItem.";
-public const string XmlIllegalElementsArrayAttribute = @"XmlElement, XmlText, and XmlAnyElement cannot be used in conjunction with XmlAttribute, XmlAnyAttribute, XmlArray, or XmlArrayItem.";
-public const string XmlIllegalArrayArrayAttribute = @"XmlArray and XmlArrayItem cannot be used in conjunction with XmlAttribute, XmlAnyAttribute, XmlElement, XmlText, or XmlAnyElement.";
-public const string XmlIllegalAttribute = @"For non-array types, you may use the following attributes: XmlAttribute, XmlText, XmlElement, or XmlAnyElement.";
-public const string XmlIllegalType = @"The type for {0} may not be specified for primitive types.";
-public const string XmlIllegalAttrOrText = @"Cannot serialize member '{0}' of type {1}. XmlAttribute/XmlText cannot be used to encode complex types.";
-public const string XmlIllegalSoapAttribute = @"Cannot serialize member '{0}' of type {1}. SoapAttribute cannot be used to encode complex types.";
-public const string XmlIllegalAttrOrTextInterface = @"Cannot serialize member '{0}' of type {1}. XmlAttribute/XmlText cannot be used to encode types implementing {2}.";
-public const string XmlIllegalAttributeFlagsArray = @"XmlAttribute cannot be used to encode array of {1}, because it is marked with FlagsAttribute.";
-public const string XmlIllegalAnyElement = @"Cannot serialize member of type {0}: XmlAnyElement can only be used with classes of type XmlNode or a type deriving from XmlNode.";
-public const string XmlInvalidIsNullable = @"IsNullable may not be 'true' for value type {0}.  Please consider using Nullable<{0}> instead.";
-public const string XmlInvalidNotNullable = @"IsNullable may not be set to 'false' for a Nullable<{0}> type. Consider using '{0}' type or removing the IsNullable property from the {1} attribute.";
-public const string XmlInvalidFormUnqualified = @"The Form property may not be 'Unqualified' when an explicit Namespace property is present.";
-public const string XmlDuplicateNamespace = @"The namespace, {0}, is a duplicate.";
-public const string XmlElementHasNoName = @"This element has no name. Please review schema type '{0}' from namespace '{1}'.";
-public const string XmlAttributeHasNoName = @"This attribute has no name.";
-public const string XmlElementImportedTwice = @"The element, {0}, from namespace, {1}, was imported in two different contexts: ({2}, {3}).";
-public const string XmlHiddenMember = @"Member {0}.{1} of type {2} hides base class member {3}.{4} of type {5}. Use XmlElementAttribute or XmlAttributeAttribute to specify a new name.";
-public const string XmlInvalidXmlOverride = @"Member '{0}.{1}' hides inherited member '{2}.{3}', but has different custom attributes.";
-public const string XmlMembersDeriveError = @"These members may not be derived.";
-public const string XmlTypeUsedTwice = @"The type '{0}' from namespace '{1}' was used in two different ways.";
-public const string XmlMissingGroup = @"Group {0} is missing.";
-public const string XmlMissingAttributeGroup = @"The attribute group {0} is missing.";
-public const string XmlMissingDataType = @"The datatype '{0}' is missing.";
-public const string XmlInvalidEncoding = @"Referenced type '{0}' is only valid for encoded SOAP.";
-public const string XmlMissingElement = @"The element '{0}' is missing.";
-public const string XmlMissingAttribute = @"The attribute {0} is missing.";
-public const string XmlMissingMethodEnum = @"The method for enum {0} is missing.";
-public const string XmlNoAttributeHere = @"Cannot write a node of type XmlAttribute as an element value. Use XmlAnyAttributeAttribute with an array of XmlNode or XmlAttribute to write the node as an attribute.";
-public const string XmlNeedAttributeHere = @"The node must be either type XmlAttribute or a derived type.";
-public const string XmlElementNameMismatch = @"This element was named '{0}' from namespace '{1}' but should have been named '{2}' from namespace '{3}'.";
-public const string XmlUnsupportedDefaultType = @"The default value type, {0}, is unsupported.";
-public const string XmlUnsupportedDefaultValue = @"The formatter {0} cannot be used for default values.";
-public const string XmlInvalidDefaultValue = @"Value '{0}' cannot be converted to {1}.";
-public const string XmlInvalidDefaultEnumValue = @"Enum {0} cannot be converted to {1}.";
-public const string XmlUnknownNode = @"{0} was not expected.";
-public const string XmlUnknownConstant = @"Instance validation error: '{0}' is not a valid value for {1}.";
-public const string XmlSerializeError = @"There is an error in the XML document.";
-public const string XmlSerializeErrorDetails = @"There is an error in XML document ({0}, {1}).";
-public const string XmlCompilerError = @"Unable to generate a temporary class (result={0}).";
-public const string XmlSchemaDuplicateNamespace = @"There are more then one schema with targetNamespace='{0}'.";
-public const string XmlSchemaCompiled = @"Cannot add schema to compiled schemas collection.";
-public const string XmlInvalidSchemaExtension = @"'{0}' is not a valid SchemaExtensionType.";
-public const string XmlInvalidArrayDimentions = @"SOAP-ENC:arrayType with multidimensional array found at {0}. Only single-dimensional arrays are supported. Consider using an array of arrays instead.";
-public const string XmlInvalidArrayTypeName = @"The SOAP-ENC:arrayType references type is named '{0}'; a type named '{1}' was expected at {2}.";
-public const string XmlInvalidArrayTypeNamespace = @"The SOAP-ENC:arrayType references type is from namespace '{0}'; the namespace '{1}' was expected at {2}.";
-public const string XmlMissingArrayType = @"SOAP-ENC:arrayType was missing at {0}.";
-public const string XmlEmptyArrayType = @"SOAP-ENC:arrayType was empty at {0}.";
-public const string XmlInvalidArraySyntax = @"SOAP-ENC:arrayType must end with a ']' character.";
-public const string XmlInvalidArrayTypeSyntax = @"Invalid wsd:arrayType syntax: '{0}'.";
-public const string XmlMismatchedArrayBrackets = @"SOAP-ENC:arrayType has mismatched brackets.";
-public const string XmlInvalidArrayLength = @"SOAP-ENC:arrayType could not handle '{1}' as the length of the array.";
-public const string XmlMissingHref = @"The referenced element with ID '{0}' is located outside the current document and cannot be retrieved.";
-public const string XmlInvalidHref = @"The referenced element with ID '{0}' was not found in the document.";
-public const string XmlUnknownType = @"The specified type was not recognized: name='{0}', namespace='{1}', at {2}.";
-public const string XmlAbstractType = @"The specified type is abstract: name='{0}', namespace='{1}', at {2}.";
-public const string XmlMappingsScopeMismatch = @"Exported mappings must come from the same importer.";
-public const string XmlMethodTypeNameConflict = @"The XML element '{0}' from namespace '{1}' references a method and a type. Change the method's message name using WebMethodAttribute or change the type's root element using the XmlRootAttribute.";
-public const string XmlCannotReconcileAccessor = @"The top XML element '{0}' from namespace '{1}' references distinct types {2} and {3}. Use XML attributes to specify another XML name or namespace for the element or types.";
-public const string XmlCannotReconcileAttributeAccessor = @"The global XML attribute '{0}' from namespace '{1}' references distinct types {2} and {3}. Use XML attributes to specify another XML name or namespace for the attribute or types.";
-public const string XmlCannotReconcileAccessorDefault = @"The global XML item '{0}' from namespace '{1}' has mismatch default value attributes: '{2}' and '{3}' and cannot be mapped to the same schema item. Use XML attributes to specify another XML name or namespace for one of the items, or make sure that the default values match.";
-public const string XmlInvalidTypeAttributes = @"XmlRoot and XmlType attributes may not be specified for the type {0}.";
-public const string XmlInvalidAttributeUse = @"XML attributes may not be specified for the type {0}.";
-public const string XmlTypesDuplicate = @"Types '{0}' and '{1}' both use the XML type name, '{2}', from namespace '{3}'. Use XML attributes to specify a unique XML name and/or namespace for the type.";
-public const string XmlInvalidSoapArray = @"An array of type {0} may not be used with XmlArrayType.Soap.";
-public const string XmlCannotIncludeInSchema = @"The type {0} may not be exported to a schema because the IncludeInSchema property of the XmlType attribute is 'false'.";
-public const string XmlSoapCannotIncludeInSchema = @"The type {0} may not be exported to a schema because the IncludeInSchema property of the SoapType attribute is 'false'.";
-public const string XmlInvalidSerializable = @"The type {0} may not be used in this context. To use {0} as a parameter, return type, or member of a class or struct, the parameter, return type, or member must be declared as type {0} (it cannot be object). Objects of type {0} may not be used in un-typed collections, such as ArrayLists.";
-public const string XmlInvalidUseOfType = @"The type {0} may not be used in this context.";
-public const string XmlUnxpectedType = @"The type {0} was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.";
-public const string XmlUnknownAnyElement = @"The XML element '{0}' from namespace '{1}' was not expected. The XML element name and namespace must match those provided via XmlAnyElementAttribute(s).";
-public const string XmlMultipleAttributeOverrides = @"{0}. {1} already has attributes.";
-public const string XmlInvalidEnumAttribute = @"Only SoapEnum may be used on enum constants.";
-public const string XmlInvalidReturnPosition = @"The return value must be the first member.";
-public const string XmlInvalidElementAttribute = @"Only SoapElementAttribute or SoapAttributeAttribute may be used on members.";
-public const string XmlInvalidVoid = @"The type Void is not valid in this context.";
-public const string XmlInvalidContent = @"Invalid content {0}.";
-public const string XmlInvalidSchemaElementType = @"Types must be declared at the top level in the schema. Please review schema type '{0}' from namespace '{1}': element '{2}' is using anonymous type declaration, anonymous types are not supported with encoded SOAP.";
-public const string XmlInvalidSubstitutionGroupUse = @"Substitution group may not be used with encoded SOAP. Please review type declaration '{0}' from namespace '{1}'.";
-public const string XmlElementMissingType = @"Please review type declaration '{0}' from namespace '{1}': element '{2}' does not specify a type.";
-public const string XmlInvalidAnyAttributeUse = @"Any may not be specified. Attributes are not supported with encoded SOAP. Please review schema type '{0}' from namespace '{1}'.";
-public const string XmlSoapInvalidAttributeUse = @"Attributes are not supported with encoded SOAP. Please change definition of schema type '{0}' from namespace '{1}': use elements (not attributes) for fields/parameters.";
-public const string XmlSoapInvalidChoice = @"Choice is not supported with encoded SOAP. Please change definition of schema type '{0}' from namespace '{1}': use all or sequence (not choice) for fields/parameters.";
-public const string XmlSoapUnsupportedGroupRef = @"The ref syntax for groups is not supported with encoded SOAP. Please change definition of schema type '{0}' from namespace '{1}': replace the group reference with local group declaration.";
-public const string XmlSoapUnsupportedGroupRepeat = @"Group may not repeat.  Unbounded groups are not supported with encoded SOAP. Please change definition of schema type '{0}' from namespace '{1}'.";
-public const string XmlSoapUnsupportedGroupNested = @"Nested groups may not be used with encoded SOAP. Please change definition of schema type '{0}' from namespace '{1}'.";
-public const string XmlSoapUnsupportedGroupAny = @"Any may not be used with encoded SOAP. Please change definition of schema type '{0}' from namespace '{1}'.";
-public const string XmlInvalidEnumContent = @"Invalid content '{0}' for enumerated data type {1}.";
-public const string XmlInvalidAttributeType = @"{0} may not be used on parameters or return values when they are not wrapped.";
-public const string XmlInvalidBaseType = @"Type {0} cannot derive from {1} because it already has base type {2}.";
-public const string XmlPrimitiveBaseType = @"Type '{0}' from namespace '{1}' is not a complex type and cannot be used as a {2}.";
-public const string XmlInvalidIdentifier = @"Identifier '{0}' is not CLS-compliant.";
-public const string XmlGenError = @"There was an error generating the XML document.";
-public const string XmlInvalidXmlns = @"Invalid namespace attribute: xmlns:{0}="""".";
-public const string XmlCircularReference = @"A circular reference was detected while serializing an object of type {0}.";
-public const string XmlCircularReference2 = @"A circular type reference was detected in anonymous type '{0}'.  Please change '{0}' to be a named type by setting {1}={2} in the type definition.";
-public const string XmlAnonymousBaseType = @"Illegal type derivation: Type '{0}' derives from anonymous type '{1}'. Please change '{1}' to be a named type by setting {2}={3} in the type definition.";
-public const string XmlMissingSchema = @"Missing schema targetNamespace=""{0}"".";
-public const string XmlNoSerializableMembers = @"Cannot serialize object of type '{0}'. The object does not have serializable members.";
-public const string XmlIllegalOverride = @"Error: Type '{0}' could not be imported because it redefines inherited member '{1}' with a different type. '{1}' is declared as type '{3}' on '{0}', but as type '{2}' on base class '{4}'.";
-public const string XmlReadOnlyCollection = @"Could not deserialize {0}. Parameterless constructor is required for collections and enumerators.";
-public const string XmlRpcNestedValueType = @"Cannot serialize {0}. Nested structs are not supported with encoded SOAP.";
-public const string XmlRpcRefsInValueType = @"Cannot serialize {0}. References in structs are not supported with encoded SOAP.";
-public const string XmlRpcArrayOfValueTypes = @"Cannot serialize {0}. Arrays of structs are not supported with encoded SOAP.";
-public const string XmlDuplicateElementName = @"The XML element '{0}' from namespace '{1}' is already present in the current scope. Use XML attributes to specify another XML name or namespace for the element.";
-public const string XmlDuplicateAttributeName = @"The XML attribute '{0}' from namespace '{1}' is already present in the current scope. Use XML attributes to specify another XML name or namespace for the attribute.";
-public const string XmlBadBaseElement = @"Element '{0}' from namespace '{1}' is not a complex type and cannot be used as a {2}.";
-public const string XmlBadBaseType = @"Type '{0}' from namespace '{1}' is not a complex type and cannot be used as a {2}.";
-public const string XmlUndefinedAlias = @"Namespace prefix '{0}' is not defined.";
-public const string XmlChoiceIdentifierType = @"Type of choice identifier '{0}' is inconsistent with type of '{1}'. Please use {2}.";
-public const string XmlChoiceIdentifierArrayType = @"Type of choice identifier '{0}' is inconsistent with type of '{1}'. Please use array of {2}.";
-public const string XmlChoiceIdentifierTypeEnum = @"Choice identifier '{0}' must be an enum.";
-public const string XmlChoiceIdentiferMemberMissing = @"Missing '{0}' member needed for serialization of choice '{1}'.";
-public const string XmlChoiceIdentiferAmbiguous = @"Ambiguous choice identifier. There are several members named '{0}'.";
-public const string XmlChoiceIdentiferMissing = @"You need to add {0} to the '{1}' member.";
-public const string XmlChoiceMissingValue = @"Type {0} is missing enumeration value '{1}' for element '{2}' from namespace '{3}'.";
-public const string XmlChoiceMissingAnyValue = @"Type {0} is missing enumeration value '##any:' corresponding to XmlAnyElementAttribute.";
-public const string XmlChoiceMismatchChoiceException = @"Value of {0} mismatches the type of {1}; you need to set it to {2}.";
-public const string XmlArrayItemAmbiguousTypes = @"Ambiguous types specified for member '{0}'.  Items '{1}' and '{2}' have the same type.  Please consider using {3} with {4} instead.";
-public const string XmlUnsupportedInterface = @"Cannot serialize interface {0}.";
-public const string XmlUnsupportedInterfaceDetails = @"Cannot serialize member {0} of type {1} because it is an interface.";
-public const string XmlUnsupportedRank = @"Cannot serialize object of type {0}. Multidimensional arrays are not supported.";
-public const string XmlUnsupportedInheritance = @"Using {0} as a base type for a class is not supported by XmlSerializer.";
-public const string XmlIllegalMultipleText = @"Cannot serialize object of type '{0}' because it has multiple XmlText attributes. Consider using an array of strings with XmlTextAttribute for serialization of a mixed complex type.";
-public const string XmlIllegalMultipleTextMembers = @"XmlText may not be used on multiple parameters or return values.";
-public const string XmlIllegalArrayTextAttribute = @"Member '{0}' cannot be encoded using the XmlText attribute. You may use the XmlText attribute to encode primitives, enumerations, arrays of strings, or arrays of XmlNode.";
-public const string XmlIllegalTypedTextAttribute = @"Cannot serialize object of type '{0}'. Consider changing type of XmlText member '{0}.{1}' from {2} to string or string array.";
-public const string XmlIllegalSimpleContentExtension = @"Cannot serialize object of type '{0}'. Base type '{1}' has simpleContent and can only be extended by adding XmlAttribute elements. Please consider changing XmlText member of the base class to string array.";
-public const string XmlInvalidCast = @"Cannot assign object of type {0} to an object of type {1}.";
-public const string XmlInvalidCastWithId = @"Cannot assign object of type {0} to an object of type {1}. The error occurred while reading node with id='{2}'.";
-public const string XmlInvalidArrayRef = @"Invalid reference id='{0}'. Object of type {1} cannot be stored in an array of this type. Details: array index={2}.";
-public const string XmlInvalidNullCast = @"Cannot assign null value to an object of type {1}.";
-public const string XmlMultipleXmlns = @"Cannot serialize object of type '{0}' because it has multiple XmlNamespaceDeclarations attributes.";
-public const string XmlMultipleXmlnsMembers = @"XmlNamespaceDeclarations may not be used on multiple parameters or return values.";
-public const string XmlXmlnsInvalidType = @"Cannot use XmlNamespaceDeclarations attribute on member '{0}' of type {1}.  This attribute is only valid on members of type {2}.";
-public const string XmlSoleXmlnsAttribute = @"XmlNamespaceDeclarations attribute cannot be used in conjunction with any other custom attributes.";
-public const string XmlConstructorHasSecurityAttributes = @"The type '{0}' cannot be serialized because its parameterless constructor is decorated with declarative security permission attributes. Consider using imperative asserts or demands in the constructor.";
-public const string XmlPropertyHasSecurityAttributes = @"The property '{0}' on type '{1}' cannot be serialized because it is decorated with declarative security permission attributes. Consider using imperative asserts or demands in the property accessors.";
-public const string XmlMethodHasSecurityAttributes = @"The type '{0}' cannot be serialized because the {1}({2}) method is decorated with declarative security permission attributes. Consider using imperative asserts or demands in the method.";
-public const string XmlDefaultAccessorHasSecurityAttributes = @"The type '{0}' cannot be serialized because its default accessor is decorated with declarative security permission attributes. Consider using imperative asserts or demands in the accessor.";
-public const string XmlInvalidChoiceIdentifierValue = @"Invalid or missing value of the choice identifier '{1}' of type '{0}[]'.";
-public const string XmlAnyElementDuplicate = @"The element '{0}' has been attributed with duplicate XmlAnyElementAttribute(Name=""{1}"", Namespace=""{2}"").";
-public const string XmlChoiceIdDuplicate = @"Enum values in the XmlChoiceIdentifier '{0}' have to be unique.  Value '{1}' already present.";
-public const string XmlChoiceIdentifierMismatch = @"Value '{0}' of the choice identifier '{1}' does not match element '{2}' from namespace '{3}'.";
-public const string XmlUnsupportedRedefine = @"Cannot import schema for type '{0}' from namespace '{1}'. Redefine not supported.";
-public const string XmlDuplicateElementInScope = @"The XML element named '{0}' from namespace '{1}' is already present in the current scope.";
-public const string XmlDuplicateElementInScope1 = @"The XML element named '{0}' from namespace '{1}' is already present in the current scope. Elements with the same name in the same scope must have the same type.";
-public const string XmlNoPartialTrust = @"One or more assemblies referenced by the XmlSerializer cannot be called from partially trusted code.";
-public const string XmlInvalidEncodingNotEncoded1 = @"The encoding style '{0}' is not valid for this call because this XmlSerializer instance does not support encoding. Use the SoapReflectionImporter to initialize an XmlSerializer that supports encoding.";
-public const string XmlInvalidEncoding3 = @"The encoding style '{0}' is not valid for this call. Valid values are '{1}' for SOAP 1.1 encoding or '{2}' for SOAP 1.2 encoding.";
-public const string XmlInvalidSpecifiedType = @"Member '{0}' of type {1} cannot be serialized.  Members with names ending on 'Specified' suffix have special meaning to the XmlSerializer: they control serialization of optional ValueType members and have to be of type {2}.";
-public const string XmlUnsupportedOpenGenericType = @"Type {0} is not supported because it has unbound generic parameters.  Only instantiated generic types can be serialized.";
-public const string XmlMismatchSchemaObjects = @"Warning: Cannot share {0} named '{1}' from '{2}' namespace. Several mismatched schema declarations were found.";
-public const string XmlCircularTypeReference = @"Type '{0}' from targetNamespace='{1}' has invalid definition: Circular type reference.";
-public const string XmlCircularGroupReference = @"Group '{0}' from targetNamespace='{1}' has invalid definition: Circular group reference.";
-public const string XmlRpcLitElementNamespace = @"{0}='{1}' is not supported with rpc\\literal SOAP. The wrapper element has to be unqualified.";
-public const string XmlRpcLitElementNullable = @"{0}='{1}' is not supported with rpc\\literal SOAP. The wrapper element cannot be nullable.";
-public const string XmlRpcLitElements = @"Multiple accessors are not supported with rpc\\literal SOAP, you may use the following attributes: XmlArray, XmlArrayItem, or single XmlElement.";
-public const string XmlRpcLitArrayElement = @"Input or output values of an rpc\\literal method cannot have maxOccurs > 1. Provide a wrapper element for '{0}' by using XmlArray or XmlArrayItem instead of XmlElement attribute.";
-public const string XmlRpcLitAttributeAttributes = @"XmlAttribute and XmlAnyAttribute cannot be used with rpc\\literal SOAP, you may use the following attributes: XmlArray, XmlArrayItem, or single XmlElement.";
-public const string XmlRpcLitAttributes = @"XmlText, XmlAnyElement, or XmlChoiceIdentifier cannot be used with rpc\\literal SOAP, you may use the following attributes: XmlArray, XmlArrayItem, or single XmlElement.";
-public const string XmlSequenceMembers = @"Explicit sequencing may not be used on parameters or return values.  Please remove {0} property from custom attributes.";
-public const string XmlRpcLitXmlns = @"Input or output values of an rpc\\literal method cannot have an XmlNamespaceDeclarations attribute (member '{0}').";
-public const string XmlDuplicateNs = @"Illegal namespace declaration xmlns:{0}='{1}'. Namespace alias '{0}' already defined in the current scope.";
-public const string XmlAnonymousInclude = @"Cannot include anonymous type '{0}'.";
-public const string RefSyntaxNotSupportedForElements0 = @"Element reference syntax not supported with encoded SOAP. Replace element reference '{0}' from namespace '{1}' with a local element declaration.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlSchemaIncludeLocation = @"Schema attribute schemaLocation='{1}' is not supported on objects of type {0}.  Please set {0}.Schema property.";
-public const string XmlSerializableSchemaError = @"Schema type information provided by {0} is invalid: {1}";
-public const string XmlGetSchemaMethodName = @"'{0}' is an invalid language identifier.";
-public const string XmlGetSchemaMethodMissing = @"You must implement public static {0}({1}) method on {2}.";
-public const string XmlGetSchemaMethodReturnType = @"Method {0}.{1}() specified by {2} has invalid signature: return type must be compatible with {3}.";
-public const string XmlGetSchemaEmptyTypeName = @"{0}.{1}() must return a valid type name.";
-public const string XmlGetSchemaTypeMissing = @"{0}.{1}() must return a valid type name. Type '{2}' cannot be found in the targetNamespace='{3}'.";
-public const string XmlGetSchemaInclude = @"Multiple schemas with targetNamespace='{0}' returned by {1}.{2}().  Please use only the main (parent) schema, and add the others to the schema Includes.";
-public const string XmlSerializableAttributes = @"Only XmlRoot attribute may be specified for the type {0}. Please use {1} to specify schema type.";
-
-public const string XmlSerializableMergeItem = @"Cannot merge schemas with targetNamespace='{0}'. Several mismatched declarations were found: {1}";
-public const string XmlSerializableBadDerivation = @"Type '{0}' from namespace '{1}' declared as derivation of type '{2}' from namespace '{3}, but corresponding CLR types are not compatible.  Cannot convert type '{4}' to '{5}'.";
-public const string XmlSerializableMissingClrType = @"Type '{0}' from namespace '{1}' does not have corresponding IXmlSerializable type. Please consider adding {2} to '{3}'.";
-public const string XmlCircularDerivation = @"Circular reference in derivation of IXmlSerializable type '{0}'.";
-public const string XmlSerializerAccessDenied = @"Access to the temp directory is denied.  The process under which XmlSerializer is running does not have sufficient permission to access the temp directory.  CodeDom will use the user account the process is using to do the compilation, so if the user doesn't have access to system temp directory, you will not be able to compile.  Use Path.GetTempPath() API to find out the temp directory location.";
-public const string XmlIdentityAccessDenied = @"Access to the temp directory is denied.  Identity '{0}' under which XmlSerializer is running does not have sufficient permission to access the temp directory.  CodeDom will use the user account the process is using to do the compilation, so if the user doesn't have access to system temp directory, you will not be able to compile.  Use Path.GetTempPath() API to find out the temp directory location.";
-public const string XmlMelformMapping = @"This mapping was not crated by reflection importer and cannot be used in this context.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlSchemaSyntaxErrorDetails = @"Schema with targetNamespace='{0}' has invalid syntax. {1} Line {2}, position {3}.";
-public const string XmlSchemaElementReference = @"Element reference '{0}' declared in schema type '{1}' from namespace '{2}'.";
-public const string XmlSchemaAttributeReference = @"Attribute reference '{0}' declared in schema type '{1}' from namespace '{2}'.";
-public const string XmlSchemaItem = @"Schema item '{1}' from namespace '{0}'. {2}";
-public const string XmlSchemaNamedItem = @"Schema item '{1}' named '{2}' from namespace '{0}'. {3}";
-public const string XmlSchemaContentDef = @"Check content definition of schema type '{0}' from namespace '{1}'. {2}";
-public const string XmlSchema = @"Schema with targetNamespace='{0}' has invalid syntax. {1}";
-public const string XmlSerializerCompileFailed = @"Cannot load dynamically generated serialization assembly. In some hosting environments assembly load functionality is restricted, consider using pre-generated serializer. Please see inner exception for more information.";
-public const string XmlSerializableRootDupName = @"Cannot reconcile schema for '{0}'. Please use [XmlRoot] attribute to change default name or namespace of the top-level element to avoid duplicate element declarations: element name='{1}' namespace='{2}'.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlDropDefaultAttribute = @"DefaultValue attribute on members of type {0} is not supported in this version of the .Net Framework.";
-public const string XmlDropAttributeValue = @"'{0}' attribute on items of type '{1}' is not supported in this version of the .Net Framework.  Ignoring {0}='{2}' attribute.";
-public const string XmlDropArrayAttributeValue = @"'{0}' attribute on array-like elements is not supported in this version of the .Net Framework.  Ignoring {0}='{1}' attribute on element name='{2}'.";
-public const string XmlDropNonPrimitiveAttributeValue = @"'{0}' attribute supported only for primitive types.  Ignoring {0}='{1}' attribute.";
-public const string XmlNotKnownDefaultValue = @"Schema importer extension {0} failed to parse '{1}'='{2}' attribute of type {3} from namespace='{4}'.";
-public const string XmlRemarks = @"<remarks/>";
-public const string XmlCodegenWarningDetails = @"CODEGEN Warning: {0}";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlExtensionComment = @"This type definition was generated by {0} schema importer extension.";
-public const string XmlExtensionDuplicateDefinition = @"Schema importer extension {0} generated duplicate type definitions: {1}.";
-public const string XmlImporterExtensionBadLocalTypeName = @"Schema importer extension {0} returned invalid type information: '{1}' is not a valid type name.";
-public const string XmlImporterExtensionBadTypeName = @"Schema importer extension {0} returned invalid type information for xsd type {1} from namespace='{2}': '{3}' is not a valid type name.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlConfigurationDuplicateExtension = @"Duplicate extension name.  schemaImporterExtension with name '{0}' already been added.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlPregenMissingDirectory = @"Could not find directory to save XmlSerializer generated assembly: {0}.";
-public const string XmlPregenMissingTempDirectory = @"Could not find TEMP directory to save XmlSerializer generated assemblies.";
-public const string XmlPregenTypeDynamic = @"Cannot pre-generate serialization assembly for type '{0}'. Pre-generation of serialization assemblies is not supported for dynamic types. Save the assembly and load it from disk to use it with XmlSerialization.";
-public const string XmlSerializerExpiredDetails = @"Pre-generated serializer '{0}' has expired. You need to re-generate serializer for '{1}'.";
-public const string XmlSerializerExpired = @"Pre-generated assembly '{0}' CodeBase='{1}' has expired.";
-public const string XmlPregenAssemblyDynamic = @"Cannot pre-generate serialization assembly. Pre-generation of serialization assemblies is not supported for dynamic assemblies. Save the assembly and load it from disk to use it with XmlSerialization.";
-public const string XmlNotSerializable = @"Type '{0}' is not serializable.";
-public const string XmlPregenOrphanType = @"Cannot pre-generate serializer for multiple assemblies. Type '{0}' does not belong to assembly {1}.";
-public const string XmlPregenCannotLoad = @"Could not load file or assembly '{0}' or one of its dependencies. The system cannot find the file specified.";
-public const string XmlPregenInvalidXmlSerializerAssemblyAttribute = @"Invalid XmlSerializerAssemblyAttribute usage. Please use {0} property or {1} property.";
-#endif // !SILVERLIGHT
-
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlSequenceInconsistent = @"Inconsistent sequencing: if used on one of the class's members, the '{0}' property is required on all particle-like members, please explicitly set '{0}' using XmlElement, XmlAnyElement or XmlArray custom attribute on class member '{1}'.";
-public const string XmlSequenceUnique = @"'{1}' values must be unique within the same scope. Value '{0}' is in use. Please change '{1}' property on '{2}'.";
-public const string XmlSequenceHierarchy = @"There was an error processing type '{0}'. Type member '{1}' declared in '{2}' is missing required '{3}' property. If one class in the class hierarchy uses explicit sequencing feature ({3}), then its base class and all derived classes have to do the same.";
-public const string XmlSequenceMatch = @"If multiple custom attributes specified on a single member only one of them have to have explicit '{0}' property, however if more that one attribute has the explicit '{0}', all values have to match.";
-#endif // !SILVERLIGHT
-public const string XmlDisallowNegativeValues = @"Negative values are prohibited.";
-
-
-
-
-#if !SILVERLIGHT
-public const string Xml_BadComment = @"This is an invalid comment syntax.  Expected '-->'.";
-public const string Xml_NumEntityOverflow = @"The numeric entity value is too large.";
-public const string Xml_UnexpectedCharacter = @"'{0}', hexadecimal value {1}, is an unexpected character.";
-public const string Xml_UnexpectedToken1 = @"This is an unexpected token. The expected token is '|' or ')'.";
-public const string Xml_TagMismatchFileName = @"The '{0}' start tag on line '{1}' doesn't match the end tag of '{2}' in file '{3}'.";
-public const string Xml_ReservedNs = @"This is a reserved namespace.";
-public const string Xml_BadElementData = @"The element data is invalid.";
-public const string Xml_UnexpectedElement = @"The <{0}> tag from namespace {1} is not expected.";
-public const string Xml_TagNotInTheSameEntity = @"<{0}> and </{0}> are not defined in the same entity.";
-public const string Xml_InvalidPartialContentData = @"There is invalid partial content data.";
-public const string Xml_CanNotStartWithXmlInNamespace = @"Namespace qualifiers beginning with 'xml' are reserved, and cannot be used in user-specified namespaces.";
-public const string Xml_UnparsedEntity = @"The '{0}' entity is not an unparsed entity.";
-public const string Xml_InvalidContentForThisNode = @"Invalid content for {0} NodeType.";
-public const string Xml_MissingEncodingDecl = @"Encoding declaration is required in an XmlDeclaration in an external entity.";
-public const string Xml_InvalidSurrogatePair = @"The surrogate pair is invalid.";
-public const string Sch_ErrorPosition = @"An error occurred at {0}, ({1}, {2}).";
-public const string Sch_ReservedNsDecl = @"The '{0}' prefix is reserved.";
-public const string Sch_NotInSchemaCollection = @"The '{0}' schema does not exist in the XmlSchemaCollection.";
-public const string Sch_NotationNotAttr = @"This NOTATION should be used only on attributes.";
-public const string Sch_InvalidContent = @"The element '{0}' has invalid content.";
-public const string Sch_InvalidContentExpecting = @"The element '{0}' has invalid content. Expected '{1}'.";
-public const string Sch_InvalidTextWhiteSpace = @"The element cannot contain text or white space. Content model is empty.";
-public const string Sch_XSCHEMA = @"x-schema can load only XDR schemas.";
-public const string Sch_DubSchema = @"Schema for targetNamespace '{0}' already present in collection and being used for validation.";
-public const string Xp_TokenExpected = @"A token was expected.";
-public const string Xp_NodeTestExpected = @"A NodeTest was expected at {0}.";
-public const string Xp_NumberExpected = @"A number was expected.";
-public const string Xp_QueryExpected = @"A query was expected.";
-public const string Xp_InvalidArgument = @"'{0}' function in '{1}' has an invalid argument. Possibly ')' is missing.";
-public const string Xp_FunctionExpected = @"A function was expected.";
-public const string Xp_InvalidPatternString = @"{0} is an invalid XSLT pattern.";
-public const string Xp_BadQueryString = @"The XPath expression passed into Compile() is null or empty.";
-public const string XdomXpNav_NullParam = @"The parameter (other) being passed in is null.";
-public const string Xdom_Load_NodeType = @"XmlLoader.Load(): Unexpected NodeType: {0}.";
-public const string XmlMissingMethod = @"{0} was not found in {1}.";
-public const string XmlIncludeSerializableError = @"Type {0} is derived from {1} and therefore cannot be used with attribute XmlInclude.";
-public const string XmlCompilerDynModule = @"Unable to generate a serializer for type {0} from assembly {1} because the assembly may be dynamic. Save the assembly and load it from disk to use it with XmlSerialization.";
-public const string XmlInvalidSchemaType = @"Types must be declared at the top level in the schema.";
-public const string XmlInvalidAnyUse = @"Any may not be specified.";
-public const string XmlSchemaSyntaxError = @"Schema with targetNamespace='{0}' has invalid syntax.";
-public const string XmlDuplicateChoiceElement = @"The XML element named '{0}' from namespace '{1}' is already present in the current scope. Elements with the same name in the same scope must have the same type.";
-public const string XmlConvert_BadTimeSpan = @"The string was not recognized as a valid TimeSpan value.";
-public const string XmlConvert_BadBoolean = @"The string was not recognized as a valid Boolean value.";
-public const string Xml_UnexpectedToken = @"This is an unexpected token. The expected token is '{0}'.";
-public const string Xml_PartialContentNodeTypeNotSupported = @"This NodeType is not supported for partial content parsing.";
-public const string Sch_AttributeValueDataType = @"The '{0}' attribute has an invalid value according to its data type.";
-public const string Sch_ElementValueDataType = @"The '{0}' element has an invalid value according to its data type.";
-public const string Sch_NonDeterministicAny = @"The content model must be deterministic. Wildcard declaration along with a local element declaration causes the content model to become ambiguous.";
-public const string Sch_MismatchTargetNamespace = @"The attribute targetNamespace does not match the designated namespace URI.";
-public const string Sch_UnionFailed = @"Union does not support this value.";
-public const string Sch_XsiTypeBlocked = @"The element '{0}' has xsi:type derivation blocked.";
-public const string Sch_InvalidElementInEmpty = @"The element cannot contain child element. Content model is empty.";
-public const string Sch_InvalidElementInTextOnly = @"The element cannot contain a child element. Content model is text only.";
-public const string Sch_InvalidNameAttribute = @"Invalid 'name' attribute value: {0}.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if !SILVERLIGHT
-public const string XmlInternalError = @"Internal error.";
-public const string XmlInternalErrorDetails = @"Internal error: {0}.";
-public const string XmlInternalErrorMethod = @"Internal error: missing generated method for {0}.";
-public const string XmlInternalErrorReaderAdvance = @"Internal error: deserialization failed to advance over underlying stream.";
-#endif // !SILVERLIGHT
-
-
-
-
-public const string Enc_InvalidByteInEncoding = @"Invalid byte was found at index {0}.";
-#if !SILVERLIGHT
-public const string Arg_ExpectingXmlTextReader = @"The XmlReader passed in to construct this XmlValidatingReaderImpl must be an instance of a System.Xml.XmlTextReader.";
-public const string Arg_CannotCreateNode = @"Cannot create node of type {0}.";
-public const string Arg_IncompatibleParamType = @"Type is incompatible.";
-public const string XmlNonCLSCompliantException = @"Non-CLS Compliant Exception.";
-#endif // !SILVERLIGHT
-
-
-
-
-#if SILVERLIGHT
-public const string Xml_CannotFindFileInXapPackage = @"Cannot find file '{0}' in the application xap package.";
-#endif // SILVERLIGHT
-
-
-
-
-public const string Xml_XapResolverCannotOpenUri = @"Cannot open '{0}'. The Uri parameter must be a relative path pointing to content inside the Silverlight application's XAP package. If you need to load content from an arbitrary Uri, please see the documentation on Loading XML content using WebClient/HttpWebRequest.";
-}
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Advanced/ChangeLog b/mcs/class/System.XML/System.Xml.Serialization.Advanced/ChangeLog
deleted file mode 100644 (file)
index b1caaea..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-2006-11-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SchemaImporterExtensionCollection.cs,
-         SchemaImporterExtension.cs : moved from S.X.Serialization.
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Advanced/SchemaImporterExtension.cs b/mcs/class/System.XML/System.Xml.Serialization.Advanced/SchemaImporterExtension.cs
deleted file mode 100644 (file)
index c804713..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-// 
-// System.Xml.Serialization.SchemaImporterExtension.cs 
-//
-// Author:
-//   Lluis Sanchez Gual (lluis@novell.com)
-//
-// Copyright (C) Novell, Inc., 2004
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Xml.Schema;
-
-namespace System.Xml.Serialization.Advanced
-{
-       public abstract class SchemaImporterExtension
-       {
-               protected SchemaImporterExtension ()
-               {
-               }
-
-               public virtual string ImportAnyElement (
-                       XmlSchemaAny any, 
-                       bool mixed, 
-                       XmlSchemas schemas, 
-                       XmlSchemaImporter importer, 
-                       CodeCompileUnit compileUnit, 
-                       CodeNamespace mainNamespace, 
-                       CodeGenerationOptions options, 
-                       CodeDomProvider codeProvider
-               )
-               {
-                       return null;
-               }
-               
-               public virtual CodeExpression ImportDefaultValue (string value, string type)
-               {
-                       return null;
-               }
-               
-               public virtual string ImportSchemaType (
-                       XmlSchemaType type, 
-                       XmlSchemaObject context, 
-                       XmlSchemas schemas, 
-                       XmlSchemaImporter importer, 
-                       CodeCompileUnit compileUnit, 
-                       CodeNamespace mainNamespace, 
-                       CodeGenerationOptions options, 
-                       CodeDomProvider codeProvider
-               )
-               {
-                       return null;
-               }
-               
-               public virtual string ImportSchemaType (
-                       string name, 
-                       string ns, 
-                       XmlSchemaObject context, 
-                       XmlSchemas schemas, 
-                       XmlSchemaImporter importer, 
-                       CodeCompileUnit compileUnit, 
-                       CodeNamespace mainNamespace, 
-                       CodeGenerationOptions options, 
-                       CodeDomProvider codeProvider
-               )
-               {
-                       return null;
-               }
-       }
-}
-
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Advanced/SchemaImporterExtensionCollection.cs b/mcs/class/System.XML/System.Xml.Serialization.Advanced/SchemaImporterExtensionCollection.cs
deleted file mode 100644 (file)
index 23e7807..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-// 
-// System.Xml.Serialization.SchemaImporterExtensionCollection.cs 
-//
-// Author:
-//   Lluis Sanchez Gual (lluis@novell.com)
-//   Atsushi Enomoto (atsushi@ximian.com)
-//
-// Copyright (C) Novell, Inc., 2004, 2006
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace System.Xml.Serialization.Advanced
-{
-       public class SchemaImporterExtensionCollection : CollectionBase
-       {
-               Dictionary<string,SchemaImporterExtension> named_items =
-                       new Dictionary<string,SchemaImporterExtension> ();
-
-               public SchemaImporterExtensionCollection ()
-               {
-               }
-
-               public int Add (SchemaImporterExtension extension)
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       return List.Add (extension);
-               }
-
-               public int Add (string name, Type type)
-               {
-                       if (name == null)
-                               throw new ArgumentNullException ("name");
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (!type.IsSubclassOf (typeof (SchemaImporterExtension)))
-                               throw new ArgumentException ("The type argument must be subclass of SchemaImporterExtension.");
-
-                       SchemaImporterExtension e = (SchemaImporterExtension) Activator.CreateInstance (type);
-                       if (named_items.ContainsKey (name))
-                               throw new InvalidOperationException (String.Format ("A SchemaImporterExtension keyed by '{0}' already exists.", name));
-                       int ret = Add (e);
-                       named_items.Add (name, e);
-                       return ret;
-               }
-       
-               public new void Clear ()
-               {
-                       named_items.Clear ();
-                       List.Clear ();
-               }
-       
-               public bool Contains (SchemaImporterExtension extension)
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       foreach (SchemaImporterExtension e in List)
-                               if (extension.Equals (e))
-                                       return true;
-                       return false;
-               }
-               
-               public void CopyTo (SchemaImporterExtension [] array, int index)
-               {
-                       List.CopyTo (array, index);
-               }
-               
-               public int IndexOf (SchemaImporterExtension extension)
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       int i = 0;
-                       foreach (SchemaImporterExtension e in List) {
-                               if (extension.Equals (e)) {
-                                       return i;
-                               }
-                               i++;
-                       }
-                       return -1;
-               }
-               
-               public void Insert (int index, SchemaImporterExtension extension)
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       List.Insert (index, extension);
-               }
-               
-               public void Remove (SchemaImporterExtension extension)
-               {
-                       int idx = IndexOf (extension);
-                       if (idx >= 0)
-                               List.RemoveAt (idx);
-               }
-               
-               public void Remove (string name)
-               {
-                       if (name == null)
-                               throw new ArgumentNullException ("name");
-                       if (!named_items.ContainsKey (name))
-                               return;
-                       SchemaImporterExtension e = named_items [name];
-                       Remove (e);
-                       named_items.Remove (name);
-               }
-               
-               public SchemaImporterExtension this [int index] 
-               {
-                       get { return (SchemaImporterExtension) List [index]; }
-                       set { List [index] = value; }
-               }
-       }
-}
-
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/ChangeLog b/mcs/class/System.XML/System.Xml.Serialization.Configuration/ChangeLog
deleted file mode 100644 (file)
index e1f9374..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-2006-11-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SchemaImporterExtensionsSection.cs :
-         oops, it was protected override.
-
-2006-11-02  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * SchemaImporterExtensionsSection.cs :
-         added missing InitializeDefault().
-
-2006-11-01  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * DateTimeSerializationSection.cs
-         SerializationSectionGroup.cs
-         XmlSerializerSection.cs
-         SchemaImporterExtensionElementCollection.cs
-         SchemaImporterExtensionsSection.cs
-         SchemaImporterExtensionElement.cs : new files. config support it
-         not functional yet.
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/DateTimeSerializationSection.cs b/mcs/class/System.XML/System.Xml.Serialization.Configuration/DateTimeSerializationSection.cs
deleted file mode 100644 (file)
index 40521e1..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// DateTimeSerializationSection.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2006 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if CONFIGURATION_DEP
-using System;
-using System.Collections;
-using System.Configuration;
-using System.Globalization;
-using System.Xml;
-using System.Text;
-
-namespace System.Xml.Serialization.Configuration
-{
-       public sealed class DateTimeSerializationSection : ConfigurationSection
-       {
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty mode;
-
-               static DateTimeSerializationSection ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       mode = new ConfigurationProperty ("mode", typeof (DateTimeSerializationMode), DateTimeSerializationMode.Roundtrip, ConfigurationPropertyOptions.None);
-                       properties.Add (mode);
-               }
-
-               public enum DateTimeSerializationMode
-               {
-                       Default,
-                       Roundtrip,
-                       Local,
-               }
-
-               [ConfigurationProperty ("mode", DefaultValue = DateTimeSerializationMode.Roundtrip, Options = ConfigurationPropertyOptions.None)]
-               public DateTimeSerializationMode Mode {
-                       get { return (DateTimeSerializationMode) this [mode]; }
-                       set { this [mode] = value; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-       }
-}
-
-#endif
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionElement.cs b/mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionElement.cs
deleted file mode 100644 (file)
index 78f959c..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// SchemaImporterExtensionElement.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2006 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if CONFIGURATION_DEP
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Configuration;
-using System.Globalization;
-using System.Xml;
-using System.Text;
-
-namespace System.Xml.Serialization.Configuration
-{
-       public sealed class SchemaImporterExtensionElement : ConfigurationElement
-       {
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty name, type;
-
-               static SchemaImporterExtensionElement ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       name = new ConfigurationProperty ("name", typeof (string), "", ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsRequired);
-                       type = new ConfigurationProperty ("type", typeof (Type), null, ConfigurationPropertyOptions.IsRequired);
-                       properties.Add (name);
-                       properties.Add (type);
-               }
-
-               public SchemaImporterExtensionElement ()
-               {
-               }
-
-               public SchemaImporterExtensionElement (string name, string type)
-               {
-                       Name = name;
-                       Type = Type.GetType (type);
-               }
-
-               public SchemaImporterExtensionElement (string name, Type type)
-               {
-                       Name = name;
-                       Type = type;
-               }
-
-               // huh? default value Type ?
-               [ConfigurationProperty ("name", DefaultValue = typeof (object), Options = ConfigurationPropertyOptions.IsKey | ConfigurationPropertyOptions.IsRequired)]
-               public string Name {
-                       get { return (string) this [name]; }
-                       set { this [name] = value; }
-               }
-
-               [ConfigurationProperty ("type", DefaultValue = typeof (object), Options = ConfigurationPropertyOptions.IsRequired)]
-               [TypeConverter (typeof (TypeConverter))]
-               public Type Type {
-                       get { return (Type) this [type]; }
-                       set { this [type] = value; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-       }
-}
-
-#endif
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionElementCollection.cs b/mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionElementCollection.cs
deleted file mode 100644 (file)
index c07c0f0..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// SchemaImporterExtensionElementCollection.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2006 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if CONFIGURATION_DEP
-using System;
-using System.Collections;
-using System.Configuration;
-using System.Globalization;
-using System.Xml;
-using System.Text;
-
-namespace System.Xml.Serialization.Configuration
-{
-       [ConfigurationCollection (typeof (SchemaImporterExtensionElement), CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap)]
-       public sealed class SchemaImporterExtensionElementCollection : ConfigurationElementCollection
-       {
-               public SchemaImporterExtensionElement this [int index] {
-                       get {
-                               int i = 0;
-                               if (index >= this.Count || index < 0)
-                                       throw new ArgumentOutOfRangeException ("index is less than 0 or greater than the count of the collection.");
-                               foreach (SchemaImporterExtensionElement e in this)
-                                       if (i++ == index)
-                                               return e;
-                               return null; // should not happen
-                       }
-                       set {
-                               if (index >= this.Count || index < 0)
-                                       throw new ArgumentOutOfRangeException ("index is less than 0 or greater than the count of the collection.");
-                               RemoveAt (index);
-                               BaseAdd (index, value);
-                       }
-               }
-               public new SchemaImporterExtensionElement this [string name] {
-                       get {
-                               foreach (SchemaImporterExtensionElement e in this)
-                                       if (e.Name == name)
-                                               return e;
-                               return null;
-                       }
-                       set {
-                               Remove (name);
-                               Add (value);
-                       }
-               }
-
-               protected override ConfigurationElement CreateNewElement ()
-               {
-                       return new SchemaImporterExtensionElement ();
-               }
-
-               protected override object GetElementKey (ConfigurationElement element)
-               {
-                       return ((SchemaImporterExtensionElement) element).Name;
-               }
-
-               public void Add (SchemaImporterExtensionElement element)
-               {
-                       BaseAdd (element);
-               }
-
-               public void Clear ()
-               {
-                       BaseClear ();
-               }
-
-               public int IndexOf (SchemaImporterExtensionElement element)
-               {
-                       int i = 0;
-                       foreach (SchemaImporterExtensionElement e in this) {
-                               if (element.Equals (e))
-                                       return i;
-                               i++;
-                       }
-                       return -1;
-               }
-
-               public void Remove (string name)
-               {
-                       foreach (SchemaImporterExtensionElement el in this)
-                               if (name == el.Name) {
-                                       BaseRemove (el);
-                                       break;
-                               }
-               }
-
-               public void Remove (SchemaImporterExtensionElement element)
-               {
-                       foreach (SchemaImporterExtensionElement el in this)
-                               if (element.Name == el.Name) {
-                                       BaseRemove (el);
-                                       break;
-                               }
-               }
-
-               public void RemoveAt (int i)
-               {
-                       BaseRemoveAt (i);
-               }
-       }
-}
-
-#endif
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionsSection.cs b/mcs/class/System.XML/System.Xml.Serialization.Configuration/SchemaImporterExtensionsSection.cs
deleted file mode 100644 (file)
index e014ec7..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// SchemaImporterExtensionsSection.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2006 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if CONFIGURATION_DEP
-using System;
-using System.Collections;
-using System.Configuration;
-using System.Globalization;
-using System.Xml;
-using System.Text;
-
-namespace System.Xml.Serialization.Configuration
-{
-       public sealed class SchemaImporterExtensionsSection : ConfigurationSection
-       {
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty extensions;
-
-               static SchemaImporterExtensionsSection ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       extensions = new ConfigurationProperty ("", typeof (SchemaImporterExtensionElement), null, ConfigurationPropertyOptions.IsDefaultCollection);
-                       properties.Add (extensions);
-               }
-
-               [ConfigurationProperty ("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
-               public SchemaImporterExtensionElementCollection SchemaImporterExtensions {
-                       get { return (SchemaImporterExtensionElementCollection) this [extensions]; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-
-               protected override void InitializeDefault ()
-               {
-                       // not sure what is expected here.
-                       // Configuration would work without it.
-                       base.InitializeDefault ();
-               }
-       }
-}
-
-#endif
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/SerializationSectionGroup.cs b/mcs/class/System.XML/System.Xml.Serialization.Configuration/SerializationSectionGroup.cs
deleted file mode 100644 (file)
index 85a1450..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// SerializationSectionGroup.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2006 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if CONFIGURATION_DEP
-using System;
-using System.Collections;
-using System.Configuration;
-using System.Globalization;
-using System.Xml;
-using System.Text;
-
-namespace System.Xml.Serialization.Configuration
-{
-       public sealed class SerializationSectionGroup : ConfigurationSectionGroup
-       {
-               DateTimeSerializationSection dateTime =
-                       new DateTimeSerializationSection ();
-               XmlSerializerSection serializer = new XmlSerializerSection ();
-               SchemaImporterExtensionsSection extensions =
-                       new SchemaImporterExtensionsSection ();
-
-               [ConfigurationProperty ("dateTimeSerialization")]
-               public DateTimeSerializationSection DateTimeSerialization {
-                       get { return dateTime; }
-               }
-
-               [ConfigurationProperty ("schemaImporterExtensions")]
-               public SchemaImporterExtensionsSection SchemaImporterExtensions {
-                       get { return extensions; }
-               }
-
-               public XmlSerializerSection XmlSerializer {
-                       get { return serializer; }
-               }
-       }
-}
-
-#endif
diff --git a/mcs/class/System.XML/System.Xml.Serialization.Configuration/XmlSerializerSection.cs b/mcs/class/System.XML/System.Xml.Serialization.Configuration/XmlSerializerSection.cs
deleted file mode 100644 (file)
index 9dc81f9..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// XmlSerializerSection.cs
-//
-// Author:
-//     Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2006 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if CONFIGURATION_DEP
-using System;
-using System.Collections;
-using System.Configuration;
-using System.Globalization;
-using System.Xml;
-using System.Text;
-
-namespace System.Xml.Serialization.Configuration
-{
-       public sealed class XmlSerializerSection : ConfigurationSection
-       {
-               static ConfigurationPropertyCollection properties;
-               static ConfigurationProperty checkDeserializeAdvances;
-
-               static XmlSerializerSection ()
-               {
-                       properties = new ConfigurationPropertyCollection ();
-                       checkDeserializeAdvances = new ConfigurationProperty ("checkDeserializeAdvances", typeof (bool), false, ConfigurationPropertyOptions.None);
-                       properties.Add (checkDeserializeAdvances);
-               }
-
-               [ConfigurationProperty ("checkDeserializeAdvances", DefaultValue = false, Options = ConfigurationPropertyOptions.None)]
-               public bool CheckDeserializeAdvances {
-                       get { return (bool) this [checkDeserializeAdvances]; }
-                       set { this [checkDeserializeAdvances] = value; }
-               }
-
-               protected override ConfigurationPropertyCollection Properties {
-                       get { return properties; }
-               }
-       }
-}
-
-#endif
diff --git a/mcs/class/System.XML/System.Xml.Serialization/CodeGenerationOptions.cs b/mcs/class/System.XML/System.Xml.Serialization/CodeGenerationOptions.cs
deleted file mode 100644 (file)
index d06f3e4..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// 
-// System.Xml.Serialization.CodeGenerationOptions 
-//
-// Author:
-//   Lluis Sanchez Gual (lluis@ximian.com)
-//
-// Copyright (C) Novell, Inc., 2004
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Xml.Serialization 
-{
-       [Flags]
-       public
-       enum CodeGenerationOptions
-       {
-               [XmlIgnore]
-               None = 0,
-               [XmlEnum ("properties")]
-               GenerateProperties = 1,
-               [XmlEnum ("newAsync")]
-               GenerateNewAsync = 2,
-               [XmlEnum ("oldAsync")]
-               GenerateOldAsync = 4,
-               [XmlEnum ("order")]
-               GenerateOrder = 8,
-               [XmlEnum ("enableDataBinding")]
-               EnableDataBinding = 16,
-               
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/CodeIdentifier.cs b/mcs/class/System.XML/System.Xml.Serialization/CodeIdentifier.cs
deleted file mode 100644 (file)
index 7d96ca5..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.Xml.Serialization.CodeIdentifier.cs
-//
-// Author: 
-//    Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-
-namespace System.Xml.Serialization {
-       public class CodeIdentifier {
-
-               [Obsolete ("Design mistake. It only contains static methods.")]
-               public
-               CodeIdentifier ()
-               {
-               }
-
-               public static string MakeCamel (string identifier)
-               {
-                       string validIdentifier = MakeValid (identifier);
-                       return (Char.ToLower (validIdentifier[0], CultureInfo.InvariantCulture) + validIdentifier.Substring (1));
-               }
-
-               public static string MakePascal (string identifier)
-               {
-                       string validIdentifier = MakeValid (identifier);
-                       return (Char.ToUpper (validIdentifier[0], CultureInfo.InvariantCulture) + validIdentifier.Substring (1));
-               }
-
-               public static string MakeValid (string identifier)
-               {
-                       if (identifier == null)
-                               throw new NullReferenceException ();
-                       if (identifier.Length == 0)
-                               return "Item";
-
-                       string output = "";
-
-                       if (!Char.IsLetter (identifier[0]) && (identifier[0]!='_') )
-                               output = "Item";
-
-                       foreach (char c in identifier) 
-                               if (Char.IsLetterOrDigit (c) || c == '_')
-                                       output += c;
-
-                       if (output.Length > 400)
-                               output = output.Substring (0,400);
-                               
-                       return output;
-               }
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/CodeIdentifiers.cs b/mcs/class/System.XML/System.Xml.Serialization/CodeIdentifiers.cs
deleted file mode 100644 (file)
index cca5605..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-// 
-// System.Xml.Serialization.CodeIdentifiers 
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-
-namespace System.Xml.Serialization {
-       public class CodeIdentifiers {
-
-               #region Fields
-
-               bool useCamelCasing;
-               Hashtable table;
-               Hashtable reserved;
-
-               #endregion
-
-               #region Constructors
-
-               public CodeIdentifiers ()
-                       : this (true)
-               {
-               }
-
-               public
-               CodeIdentifiers (bool caseSensitive)
-               {
-                       StringComparer c = caseSensitive ?
-                               StringComparer.Ordinal :
-                               StringComparer.OrdinalIgnoreCase;
-                       table = new Hashtable (c);
-                       reserved = new Hashtable (c);
-               }
-
-               #endregion // Constructors
-
-               #region Properties
-
-               public bool UseCamelCasing {
-                       get { return useCamelCasing; }
-                       set { useCamelCasing = value; }
-               }
-
-               #endregion // Properties
-
-               #region Methods
-
-               public void Add (string identifier, object value)
-               {
-                       table.Add (identifier, value);
-               }
-
-               public void AddReserved (string identifier)
-               {
-                       reserved.Add (identifier, identifier);
-               }
-
-               public string AddUnique (string identifier, object value)
-               {
-                       string unique = MakeUnique (identifier);
-                       Add (unique, value);
-                       return unique;
-               }
-
-               public void Clear ()
-               {
-                       table.Clear ();
-               }
-
-               public bool IsInUse (string identifier)
-               {
-                       return (table.ContainsKey (identifier) || reserved.ContainsKey (identifier));
-               }
-
-               public string MakeRightCase (string identifier)
-               {
-                       if (UseCamelCasing)
-                               return CodeIdentifier.MakeCamel (identifier);
-                       else
-                               return CodeIdentifier.MakePascal (identifier);
-               }
-
-               public string MakeUnique (string identifier)
-               {
-                       string uniqueIdentifier = identifier;
-                       int i = 1;
-
-                       while (IsInUse (uniqueIdentifier)) {
-                               uniqueIdentifier = String.Format (CultureInfo.InvariantCulture, "{0}{1}", identifier, i);
-                               i += 1;
-                       }
-
-                       return uniqueIdentifier;
-               }
-
-               public void Remove (string identifier)
-               {
-                       table.Remove (identifier);
-               }
-
-               public void RemoveReserved (string identifier)
-               {
-                       reserved.Remove (identifier);
-               }
-
-               public object ToArray (Type type)
-               {
-                       Array list = Array.CreateInstance (type, table.Count);
-                       table.CopyTo (list, 0);
-                       return list;
-               }
-
-               #endregion // Methods
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/UnreferencedObjectEventArgs.cs b/mcs/class/System.XML/System.Xml.Serialization/UnreferencedObjectEventArgs.cs
deleted file mode 100644 (file)
index 224c477..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// UnreferencedObjectEventArgs.cs: 
-//
-// Author:
-//   John Donagher (john@webmeta.com)
-//
-// (C) 2002 John Donagher
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Xml.Serialization
-{
-       /// <summary>
-       /// Summary description for UnreferencedObjectEventArgs.
-       /// </summary>
-       public class UnreferencedObjectEventArgs : EventArgs
-       {
-               private object unreferencedObject;
-               private string unreferencedId;
-               
-               public UnreferencedObjectEventArgs(object o, string id)
-               {
-                       unreferencedObject = o;
-                       unreferencedId = id;
-               }
-               
-               public string UnreferencedId {
-                       get{ return unreferencedId; }
-               }
-               public object UnreferencedObject {
-                       get{ return unreferencedObject; }
-               }
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/UnreferencedObjectEventHandler.cs b/mcs/class/System.XML/System.Xml.Serialization/UnreferencedObjectEventHandler.cs
deleted file mode 100644 (file)
index 6e99536..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// UnreferencedObjectEventHandler.cs: 
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Xml.Serialization {
-
-       public delegate void UnreferencedObjectEventHandler (object sender, UnreferencedObjectEventArgs e);
-}
-
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlAttributeEventArgs.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlAttributeEventArgs.cs
deleted file mode 100644 (file)
index be903c7..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// XmlAttributeEventArgs.cs: 
-//
-// Author:
-//   John Donagher (john@webmeta.com)
-//
-// (C) 2002 John Donagher
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Xml;
-using System;
-
-namespace System.Xml.Serialization
-{
-       /// <summary>
-       /// Summary description for XmlAttributeEventArgs.
-       /// </summary>
-       public class XmlAttributeEventArgs : EventArgs
-       {
-               private XmlAttribute attr;
-               private int lineNumber;
-               private int linePosition;
-               private object obj;
-               private string expectedAttributes;
-
-               internal XmlAttributeEventArgs(XmlAttribute attr, int lineNum, int linePos, object source)
-               {
-                       this.attr               = attr;
-                       this.lineNumber = lineNum;
-                       this.linePosition = linePos;
-                       this.obj                = source;
-               }
-
-               public XmlAttribute Attr { 
-                       get { return attr; }
-               }
-
-               public int LineNumber {
-                       get { return lineNumber; }
-               }
-               
-               public int LinePosition {
-                       get { return linePosition; }
-               }
-               
-               public object ObjectBeingDeserialized {
-                       get{ return obj; }
-               }
-
-               public string ExpectedAttributes {
-                       get { return expectedAttributes; }
-                       internal set { expectedAttributes = value; }
-               }
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlAttributeEventHandler.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlAttributeEventHandler.cs
deleted file mode 100644 (file)
index 97576e4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// XmlAttributeEventHandler.cs: 
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Xml.Serialization {
-       
-       public delegate void XmlAttributeEventHandler (object sender, XmlAttributeEventArgs e);
-}
-
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlElementEventArgs.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlElementEventArgs.cs
deleted file mode 100644 (file)
index dc8781d..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// XmlElementEventArgs.cs: 
-//
-// Author:
-//   John Donagher (john@webmeta.com)
-//
-// (C) 2002 John Donagher
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Xml;
-using System;
-
-namespace System.Xml.Serialization
-{
-       /// <summary>
-       /// Summary description for XmlElementEventArgs.
-       /// </summary>
-       public class XmlElementEventArgs : EventArgs
-       {
-               private XmlElement attr;
-               private int lineNumber;
-               private int linePosition;
-               private object obj;
-               private string expectedElements;
-
-               internal XmlElementEventArgs(XmlElement attr, int lineNum, int linePos, object source)
-               {
-                       this.attr               = attr;
-                       this.lineNumber = lineNum;
-                       this.linePosition = linePos;
-                       this.obj                = source;
-               }
-
-               public XmlElement Element
-               { 
-                       get { return attr; }
-               }
-
-               public int LineNumber 
-               {
-                       get { return lineNumber; }
-               }
-               
-               public int LinePosition 
-               {
-                       get { return linePosition; }
-               }
-               
-               public object ObjectBeingDeserialized 
-               {
-                       get{ return obj; }
-               }
-
-               public string ExpectedElements {
-                       get { return expectedElements; }
-                       internal set { expectedElements = value; }
-               }
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlElementEventHandler.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlElementEventHandler.cs
deleted file mode 100644 (file)
index c48c999..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// XmlElementEventHandler.cs: 
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Xml.Serialization {
-       
-       public delegate void XmlElementEventHandler (object sender, XmlElementEventArgs e);
-}
-
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlNodeEventArgs.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlNodeEventArgs.cs
deleted file mode 100644 (file)
index e475779..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// XmlNodeEventArgs.cs: 
-//
-// Author:
-//   John Donagher (john@webmeta.com)
-//
-// (C) 2002 John Donagher
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Xml;
-using System;
-
-namespace System.Xml.Serialization
-{
-       /// <summary>
-       /// Summary description for XmlNodeEventArgs.
-       /// </summary>
-       public class XmlNodeEventArgs : EventArgs
-       {
-               private int linenumber;
-               private int lineposition ;
-               private string localname;
-               private string name;
-               private string nsuri;
-               private XmlNodeType nodetype;
-               private object source;
-               private string text;
-
-               internal XmlNodeEventArgs(int linenumber, int lineposition, string localname, string name, string nsuri,
-                       XmlNodeType nodetype, object source, string text)
-               {
-                       this.linenumber = linenumber;
-                       this.lineposition = lineposition;
-                       this.localname = localname;
-                       this.name = name;
-                       this.nsuri = nsuri;
-                       this.nodetype = nodetype;
-                       this.source = source;
-                       this.text = text;
-               }
-
-               public int LineNumber 
-               {
-                       get { return linenumber; } 
-               }
-               
-               public int LinePosition 
-               {
-                       get { return lineposition; } 
-               }
-
-               public string LocalName
-               {
-                       get { return localname; } 
-               }
-
-               public string Name 
-               {
-                       get { return name; } 
-               }
-
-               public string NamespaceURI
-               {
-                       get { return nsuri; } 
-               }
-
-               public XmlNodeType NodeType
-               {
-                       get { return nodetype; } 
-               }
-
-               public object ObjectBeingDeserialized 
-               {
-                       get { return source; } 
-               }
-
-               public string Text
-               {
-                       get { return text; } 
-               }
-       }
-}
diff --git a/mcs/class/System.XML/System.Xml.Serialization/XmlNodeEventHandler.cs b/mcs/class/System.XML/System.Xml.Serialization/XmlNodeEventHandler.cs
deleted file mode 100644 (file)
index 97c8c6f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// XmlNodeEventHandler.cs: 
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Xml.Serialization {
-       
-       public delegate void XmlNodeEventHandler (object sender, XmlNodeEventArgs e);
-}
-
index 15eefabd83e417de7bf315d85a68f249bedb25e7..32593bc4e016164b22b2f5942fc4db6aa3f09afd 100644 (file)
@@ -942,8 +942,7 @@ namespace System.Xml.Serialization
                                line_position = 0;
                        }
 
-                       XmlAttributeEventArgs args = new XmlAttributeEventArgs (attr, line_number, line_position, o);
-                       args.ExpectedAttributes = qnames;
+                       XmlAttributeEventArgs args = new XmlAttributeEventArgs (attr, line_number, line_position, o, qnames);
 
                        if (eventSource != null)
                                eventSource.OnUnknownAttribute (args);
@@ -967,8 +966,7 @@ namespace System.Xml.Serialization
                                line_position = 0;
                        }
 
-                       XmlElementEventArgs args = new XmlElementEventArgs (elem, line_number, line_position, o);
-                       args.ExpectedElements = qnames;
+                       XmlElementEventArgs args = new XmlElementEventArgs (elem, line_number, line_position, o, qnames);
 
                        if (eventSource != null)
                                eventSource.OnUnknownElement (args);
@@ -1010,7 +1008,7 @@ namespace System.Xml.Serialization
                        else
                        {
                                if (eventSource != null)
-                                       eventSource.OnUnknownNode (new XmlNodeEventArgs(line_number, line_position, node.LocalName, node.Name, node.NamespaceURI, node.NodeType, o, node.Value));
+                                       eventSource.OnUnknownNode (new XmlNodeEventArgs(node, line_number, line_position, o));
        
                                if (Reader.ReadState == ReadState.EndOfFile) 
                                        throw new InvalidOperationException ("End of document found");
@@ -1040,7 +1038,14 @@ namespace System.Xml.Serialization
                        object collectionItems;
                        string id;
 
-                       public CollectionFixup (object collection, XmlSerializationCollectionFixupCallback callback, string id)
+                       public CollectionFixup(object collection, XmlSerializationCollectionFixupCallback callback, object collectionItems)
+                       {
+                               this.callback = callback;
+                               this.collection = collection;
+                               this.collectionItems = collectionItems;
+                       }
+
+                       internal CollectionFixup (object collection, XmlSerializationCollectionFixupCallback callback, string id)
                        {
                                this.callback = callback;
                                this.collection = collection;
@@ -1055,14 +1060,14 @@ namespace System.Xml.Serialization
                                get { return collection; }
                        }
 
-                       public object Id {
+                       internal object Id {
                                get { return id; }
                        }
 
-                       internal object CollectionItems
+                       public object CollectionItems
                        {
                                get { return collectionItems; }
-                               set { collectionItems = value; }
+                               internal set { collectionItems = value; }
                        }
                }
 
@@ -1100,7 +1105,7 @@ namespace System.Xml.Serialization
                        }
                }
 
-               protected class CollectionItemFixup 
+               class CollectionItemFixup 
                {
                        Array list;
                        int index;
diff --git a/mcs/class/System.XML/System.Xml.Utils.Res.cs b/mcs/class/System.XML/System.Xml.Utils.Res.cs
deleted file mode 100644 (file)
index 2dbc91a..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-namespace System.Xml.Utils {
-       static partial class Res {
-
-
-
-
-
-
-
-
-
-
-
-
-public const string Xml_UserException = @"{0}";
-public const string Xml_ErrorFilePosition = @"An error occurred at {0}({1},{2}).";
-public const string Xml_InvalidOperation = @"Operation is not valid due to the current state of the object.";
-
-
-public const string Xml_EndOfInnerExceptionStack = @"--- End of inner exception stack trace ---";
-
-
-public const string XPath_UnclosedString = @"String literal was not closed.";
-public const string XPath_ScientificNotation = @"Scientific notation is not allowed.";
-public const string XPath_UnexpectedToken = @"Unexpected token '{0}' in the expression.";
-public const string XPath_NodeTestExpected = @"Expected a node test, found '{0}'.";
-public const string XPath_EofExpected = @"Expected end of the expression, found '{0}'.";
-public const string XPath_TokenExpected = @"Expected token '{0}', found '{1}'.";
-public const string XPath_InvalidAxisInPattern = @"Only 'child' and 'attribute' axes are allowed in a pattern outside predicates.";
-public const string XPath_PredicateAfterDot = @"Abbreviated step '.' cannot be followed by a predicate. Use the full form 'self::node()[predicate]' instead.";
-public const string XPath_PredicateAfterDotDot = @"Abbreviated step '..' cannot be followed by a predicate. Use the full form 'parent::node()[predicate]' instead.";
-public const string XPath_NArgsExpected = @"Function '{0}()' must have {1} argument(s).";
-public const string XPath_NOrMArgsExpected = @"Function '{0}()' must have {1} or {2} argument(s).";
-public const string XPath_AtLeastNArgsExpected = @"Function '{0}()' must have at least {1} argument(s).";
-
-public const string XPath_AtMostMArgsExpected = @"Function '{0}()' must have no more than {2} arguments.";
-public const string XPath_NodeSetArgumentExpected = @"Argument {1} of function '{0}()' cannot be converted to a node-set.";
-public const string XPath_NodeSetExpected = @"Expression must evaluate to a node-set.";
-public const string XPath_RtfInPathExpr = @"To use a result tree fragment in a path expression, first convert it to a node-set using the msxsl:node-set() function.";
-
-
-
-public const string Xslt_WarningAsError = @"Warning as Error: {0}";
-public const string Xslt_InputTooComplex = @"The stylesheet is too complex.";
-public const string Xslt_CannotLoadStylesheet = @"Cannot load the stylesheet object referenced by URI '{0}', because the provided XmlResolver returned an object of type '{1}'. One of Stream, XmlReader, and IXPathNavigable types was expected.";
-public const string Xslt_WrongStylesheetElement = @"Stylesheet must start either with an 'xsl:stylesheet' or an 'xsl:transform' element, or with a literal result element that has an 'xsl:version' attribute, where prefix 'xsl' denotes the 'http://www.w3.org/1999/XSL/Transform' namespace.";
-public const string Xslt_WdXslNamespace = @"The 'http://www.w3.org/TR/WD-xsl' namespace is no longer supported.";
-public const string Xslt_NotAtTop = @"'{0}' element children must precede all other children of the '{1}' element.";
-public const string Xslt_UnexpectedElement = @"'{0}' cannot be a child of the '{1}' element.";
-public const string Xslt_NullNsAtTopLevel = @"Top-level element '{0}' may not have a null namespace URI.";
-public const string Xslt_TextNodesNotAllowed = @"'{0}' element cannot have text node children.";
-public const string Xslt_NotEmptyContents = @"The contents of '{0}' must be empty.";
-public const string Xslt_InvalidAttribute = @"'{0}' is an invalid attribute for the '{1}' element.";
-public const string Xslt_MissingAttribute = @"Missing mandatory attribute '{0}'.";
-public const string Xslt_InvalidAttrValue = @"'{1}' is an invalid value for the '{0}' attribute.";
-public const string Xslt_BistateAttribute = @"The value of the '{0}' attribute must be '{1}' or '{2}'.";
-public const string Xslt_CharAttribute = @"The value of the '{0}' attribute must be a single character.";
-public const string Xslt_CircularInclude = @"Stylesheet '{0}' cannot directly or indirectly include or import itself.";
-public const string Xslt_SingleRightBraceInAvt = @"The right curly brace in an attribute value template '{0}' outside an expression must be doubled.";
-public const string Xslt_VariableCntSel2 = @"The variable or parameter '{0}' cannot have both a 'select' attribute and non-empty content.";
-public const string Xslt_KeyCntUse = @"'xsl:key' has a 'use' attribute and has non-empty content, or it has empty content and no 'use' attribute.";
-public const string Xslt_DupTemplateName = @"'{0}' is a duplicate template name.";
-public const string Xslt_BothMatchNameAbsent = @"'xsl:template' must have either a 'match' attribute or a 'name' attribute, or both.";
-public const string Xslt_InvalidVariable = @"The variable or parameter '{0}' is either not defined or it is out of scope.";
-public const string Xslt_DupGlobalVariable = @"The variable or parameter '{0}' was duplicated with the same import precedence.";
-public const string Xslt_DupLocalVariable = @"The variable or parameter '{0}' was duplicated within the same scope.";
-public const string Xslt_DupNsAlias = @"Namespace URI '{0}' is declared to be an alias for multiple different namespace URIs with the same import precedence.";
-public const string Xslt_EmptyAttrValue = @"The value of the '{0}' attribute cannot be empty.";
-public const string Xslt_EmptyNsAlias = @"The value of the '{0}' attribute cannot be empty. Use '#default' to specify the default namespace.";
-public const string Xslt_UnknownXsltFunction = @"'{0}()' is an unknown XSLT function.";
-public const string Xslt_UnsupportedXsltFunction = @"'{0}()' is an unsupported XSLT function.";
-public const string Xslt_NoAttributeSet = @"A reference to attribute set '{0}' cannot be resolved. An 'xsl:attribute-set' of this name must be declared at the top level of the stylesheet.";
-public const string Xslt_UndefinedKey = @"A reference to key '{0}' cannot be resolved. An 'xsl:key' of this name must be declared at the top level of the stylesheet.";
-public const string Xslt_CircularAttributeSet = @"Circular reference in the definition of attribute set '{0}'.";
-public const string Xslt_InvalidCallTemplate = @"The named template '{0}' does not exist.";
-public const string Xslt_InvalidPrefix = @"Prefix '{0}' is not defined.";
-public const string Xslt_ScriptXsltNamespace = @"Script block cannot implement the XSLT namespace.";
-public const string Xslt_ScriptInvalidLanguage = @"Scripting language '{0}' is not supported.";
-public const string Xslt_ScriptMixedLanguages = @"All script blocks implementing the namespace '{0}' must use the same language.";
-
-public const string Xslt_ScriptCompileException = @"Error occurred while compiling the script: {0}";
-public const string Xslt_ScriptNotAtTop = @"Element '{0}' must precede script code.";
-public const string Xslt_AssemblyNameHref = @"'msxsl:assembly' must have either a 'name' attribute or an 'href' attribute, but not both.";
-public const string Xslt_ScriptAndExtensionClash = @"Cannot have both an extension object and a script implementing the same namespace '{0}'.";
-public const string Xslt_NoDecimalFormat = @"Decimal format '{0}' is not defined.";
-public const string Xslt_DecimalFormatSignsNotDistinct = @"The '{0}' and '{1}' attributes of 'xsl:decimal-format' must have distinct values.";
-public const string Xslt_DecimalFormatRedefined = @"The '{0}' attribute of 'xsl:decimal-format' cannot be redefined with a value of '{1}'.";
-public const string Xslt_UnknownExtensionElement = @"'{0}' is not a recognized extension element.";
-public const string Xslt_ModeWithoutMatch = @"An 'xsl:template' element without a 'match' attribute cannot have a 'mode' attribute.";
-public const string Xslt_ModeListEmpty = @"List of modes in 'xsl:template' element can't be empty. ";
-public const string Xslt_ModeListDup = @"List of modes in 'xsl:template' element can't contain duplicates ('{0}'). ";
-public const string Xslt_ModeListAll = @"List of modes in 'xsl:template' element can't contain token '#all' together with any other value. ";
-public const string Xslt_PriorityWithoutMatch = @"An 'xsl:template' element without a 'match' attribute cannot have a 'priority' attribute.";
-public const string Xslt_InvalidApplyImports = @"An 'xsl:apply-imports' element can only occur within an 'xsl:template' element with a 'match' attribute, and cannot occur within an 'xsl:for-each' element.";
-public const string Xslt_DuplicateWithParam = @"Value of parameter '{0}' cannot be specified more than once within a single 'xsl:call-template' or 'xsl:apply-templates' element.";
-public const string Xslt_ReservedNS = @"Elements and attributes cannot belong to the reserved namespace '{0}'.";
-public const string Xslt_XmlnsAttr = @"An attribute with a local name 'xmlns' and a null namespace URI cannot be created.";
-public const string Xslt_NoWhen = @"An 'xsl:choose' element must have at least one 'xsl:when' child.";
-public const string Xslt_WhenAfterOtherwise = @"'xsl:when' must precede the 'xsl:otherwise' element.";
-public const string Xslt_DupOtherwise = @"An 'xsl:choose' element can have only one 'xsl:otherwise' child.";
-public const string Xslt_AttributeRedefinition = @"Attribute '{0}' of 'xsl:output' cannot be defined more than once with the same import precedence.";
-public const string Xslt_InvalidMethod = @"'{0}' is not a supported output method. Supported methods are 'xml', 'html', and 'text'.";
-public const string Xslt_InvalidEncoding = @"'{0}' is not a supported encoding name.";
-public const string Xslt_InvalidLanguage = @"'{0}' is not a supported language identifier.";
-public const string Xslt_InvalidCompareOption = @"String comparison option(s) '{0}' are either invalid or cannot be used together.";
-public const string Xslt_KeyNotAllowed = @"The 'key()' function cannot be used in 'use' and 'match' attributes of 'xsl:key' element.";
-public const string Xslt_VariablesNotAllowed = @"Variables cannot be used within this expression.";
-public const string Xslt_CurrentNotAllowed = @"The 'current()' function cannot be used in a pattern.";
-public const string Xslt_DocumentFuncProhibited = @"Execution of the 'document()' function was prohibited. Use the XsltSettings.EnableDocumentFunction property to enable it.";
-public const string Xslt_ScriptsProhibited = @"Execution of scripts was prohibited. Use the XsltSettings.EnableScript property to enable it.";
-public const string Xslt_ItemNull = @"Extension functions cannot return null values.";
-public const string Xslt_NodeSetNotNode = @"Cannot convert a node-set which contains zero nodes or more than one node to a single node.";
-public const string Xslt_UnsupportedClrType = @"Extension function parameters or return values which have Clr type '{0}' are not supported.";
-public const string Xslt_NotYetImplemented = @"'{0}' is not yet implemented.";
-public const string Xslt_SchemaDeclaration = @"'{0}' declaration is not permitted in non-schema aware processor.";
-public const string Xslt_SchemaAttribute = @"Attribute '{0}' is not permitted in basic XSLT processor (http://www.w3.org/TR/xslt20/#dt-basic-xslt-processor).";
-public const string Xslt_SchemaAttributeValue = @"Value '{1}' of attribute '{0}' is not permitted in basic XSLT processor (http://www.w3.org/TR/xslt20/#dt-basic-xslt-processor).";
-public const string Xslt_ElementCntSel = @"The element '{0}' cannot have both a 'select' attribute and non-empty content.";
-public const string Xslt_PerformSortCntSel = @"The element 'xsl:perform-sort' cannot have 'select' attribute any content other than 'xsl:sort' and 'xsl:fallback' instructions.";
-public const string Xslt_RequiredAndSelect = @"Mandatory parameter '{0}' must be empty and must not have a 'select' attribute.";
-public const string Xslt_NoSelectNoContent = @"Element '{0}' must have either 'select' attribute or non-empty content.";
-public const string Xslt_NonTemplateTunnel = @"Stylesheet or function parameter '{0}' cannot have attribute 'tunnel'.";
-public const string Xslt_RequiredOnFunction = @"The 'required' attribute must not be specified for parameter '{0}'. Function parameters are always mandatory. ";
-public const string Xslt_ExcludeDefault = @"Value '#default' is used within the 'exclude-result-prefixes' attribute and the parent element of this attribute has no default namespace.";
-public const string Xslt_CollationSyntax = @"The value of an 'default-collation' attribute contains no recognized collation URI.";
-public const string Xslt_AnalyzeStringDupChild = @"'xsl:analyze-string' cannot have second child with name '{0}'.";
-public const string Xslt_AnalyzeStringChildOrder = @"When both 'xsl:matching-string' and 'xsl:non-matching-string' elements are present, 'xsl:matching-string' element must come first.";
-public const string Xslt_AnalyzeStringEmpty = @"'xsl:analyze-string' must contain either 'xsl:matching-string' or 'xsl:non-matching-string' elements or both.";
-public const string Xslt_SortStable = @"Only the first 'xsl:sort' element may have 'stable' attribute.";
-public const string Xslt_InputTypeAnnotations = @"It is an error if there is a stylesheet module in the stylesheet that specifies 'input-type-annotations'=""strip"" and another stylesheet module that specifies 'input-type-annotations'=""preserve"".";
-
-
-public const string Coll_BadOptFormat = @"Collation option '{0}' is invalid. Options must have the following format: <option-name>=<option-value>.";
-public const string Coll_Unsupported = @"The collation '{0}' is not supported.";
-public const string Coll_UnsupportedLanguage = @"Collation language '{0}' is not supported.";
-public const string Coll_UnsupportedOpt = @"Unsupported option '{0}' in collation.";
-public const string Coll_UnsupportedOptVal = @"Collation option '{0}' cannot have the value '{1}'.";
-public const string Coll_UnsupportedSortOpt = @"Unsupported sort option '{0}' in collation.";
-
-
-public const string Qil_Validation = @"QIL Validation Error! '{0}'.";
-
-
-public const string XmlIl_TooManyParameters = @"Functions may not have more than 65535 parameters.";
-public const string XmlIl_BadXmlState = @"An item of type '{0}' cannot be constructed within a node of type '{1}'.";
-public const string XmlIl_BadXmlStateAttr = @"Attribute and namespace nodes cannot be added to the parent element after a text, comment, pi, or sub-element node has already been added.";
-public const string XmlIl_NmspAfterAttr = @"Namespace nodes cannot be added to the parent element after an attribute node has already been added.";
-public const string XmlIl_NmspConflict = @"Cannot construct namespace declaration xmlns{0}{1}='{2}'. Prefix '{1}' is already mapped to namespace '{3}'.";
-public const string XmlIl_CantResolveEntity = @"Cannot query the data source object referenced by URI '{0}', because the provided XmlResolver returned an object of type '{1}'. Only Stream, XmlReader, and IXPathNavigable data source objects are currently supported.";
-public const string XmlIl_NoDefaultDocument = @"Query requires a default data source, but no default was supplied to the query engine.";
-public const string XmlIl_UnknownDocument = @"Data source '{0}' cannot be located.";
-public const string XmlIl_UnknownParam = @"Supplied XsltArgumentList does not contain a parameter with local name '{0}' and namespace '{1}'.";
-public const string XmlIl_UnknownExtObj = @"Cannot find a script or an extension object associated with namespace '{0}'.";
-public const string XmlIl_CantStripNav = @"White space cannot be stripped from input documents that have already been loaded. Provide the input document as an XmlReader instead.";
-public const string XmlIl_ExtensionError = @"An error occurred during a call to extension function '{0}'. See InnerException for a complete description of the error.";
-public const string XmlIl_TopLevelAttrNmsp = @"XmlWriter cannot process the sequence returned by the query, because it contains an attribute or namespace node.";
-public const string XmlIl_NoExtensionMethod = @"Extension object '{0}' does not contain a matching '{1}' method that has {2} parameter(s).";
-public const string XmlIl_AmbiguousExtensionMethod = @"Ambiguous method call. Extension object '{0}' contains multiple '{1}' methods that have {2} parameter(s).";
-public const string XmlIl_NonPublicExtensionMethod = @"Method '{1}' of extension object '{0}' cannot be called because it is not public.";
-public const string XmlIl_GenericExtensionMethod = @"Method '{1}' of extension object '{0}' cannot be called because it is generic.";
-public const string XmlIl_ByRefType = @"Method '{1}' of extension object '{0}' cannot be called because it has one or more ByRef parameters.";
-public const string XmlIl_DocumentLoadError = @"An error occurred while loading document '{0}'. See InnerException for a complete description of the error.";
-
-
-public const string Xslt_CompileError = @"XSLT compile error at {0}({1},{2}). See InnerException for details.";
-public const string Xslt_CompileError2 = @"XSLT compile error.";
-public const string Xslt_UnsuppFunction = @"'{0}()' is an unsupported XSLT function.";
-public const string Xslt_NotFirstImport = @"'xsl:import' instructions must precede all other element children of an 'xsl:stylesheet' element.";
-public const string Xslt_UnexpectedKeyword = @"'{0}' cannot be a child of the '{1}' element.";
-public const string Xslt_InvalidContents = @"The contents of '{0}' are invalid.";
-public const string Xslt_CantResolve = @"Cannot resolve the referenced document '{0}'.";
-public const string Xslt_SingleRightAvt = @"Right curly brace in the attribute value template '{0}' must be doubled.";
-public const string Xslt_OpenBracesAvt = @"The braces are not closed in AVT expression '{0}'.";
-public const string Xslt_OpenLiteralAvt = @"The literal in AVT expression is not correctly closed '{0}'.";
-public const string Xslt_NestedAvt = @"AVT cannot be nested in AVT '{0}'.";
-public const string Xslt_EmptyAvtExpr = @"XPath Expression in AVT cannot be empty: '{0}'.";
-public const string Xslt_InvalidXPath = @"'{0}' is an invalid XPath expression.";
-public const string Xslt_InvalidQName = @"'{0}' is an invalid QName.";
-public const string Xslt_NoStylesheetLoaded = @"No stylesheet was loaded.";
-public const string Xslt_TemplateNoAttrib = @"The 'xsl:template' instruction must have the 'match' and/or 'name' attribute present.";
-public const string Xslt_DupVarName = @"Variable or parameter '{0}' was duplicated within the same scope.";
-public const string Xslt_WrongNumberArgs = @"XSLT function '{0}()' has the wrong number of arguments.";
-public const string Xslt_NoNodeSetConversion = @"Cannot convert the operand to a node-set.";
-public const string Xslt_NoNavigatorConversion = @"Cannot convert the operand to 'Result tree fragment'.";
-public const string Xslt_FunctionFailed = @"Function '{0}()' has failed.";
-public const string Xslt_InvalidFormat = @"Format cannot be empty.";
-public const string Xslt_InvalidFormat1 = @"Format '{0}' cannot have digit symbol after zero digit symbol before a decimal point.";
-public const string Xslt_InvalidFormat2 = @"Format '{0}' cannot have zero digit symbol after digit symbol after decimal point.";
-public const string Xslt_InvalidFormat3 = @"Format '{0}' has two pattern separators.";
-public const string Xslt_InvalidFormat4 = @"Format '{0}' cannot end with a pattern separator.";
-public const string Xslt_InvalidFormat5 = @"Format '{0}' cannot have two decimal separators.";
-public const string Xslt_InvalidFormat8 = @"Format string should have at least one digit or zero digit.";
-public const string Xslt_ScriptCompileErrors = @"Script compile errors:\n{0}";
-public const string Xslt_ScriptInvalidPrefix = @"Cannot find the script or external object that implements prefix '{0}'.";
-public const string Xslt_ScriptDub = @"Namespace '{0}' has a duplicate implementation.";
-public const string Xslt_ScriptEmpty = @"The 'msxsl:script' element cannot be empty.";
-public const string Xslt_DupDecimalFormat = @"Decimal format '{0}' has a duplicate declaration.";
-public const string Xslt_CircularReference = @"Circular reference in the definition of variable '{0}'.";
-public const string Xslt_InvalidExtensionNamespace = @"Extension namespace cannot be 'null' or an XSLT namespace URI.";
-public const string Xslt_InvalidModeAttribute = @"An 'xsl:template' element without a 'match' attribute cannot have a 'mode' attribute.";
-public const string Xslt_MultipleRoots = @"There are multiple root elements in the output XML.";
-public const string Xslt_ApplyImports = @"The 'xsl:apply-imports' instruction cannot be included within the content of an 'xsl:for-each' instruction or within an 'xsl:template' instruction without the 'match' attribute.";
-public const string Xslt_Terminate = @"Transform terminated: '{0}'.";
-public const string Xslt_InvalidPattern = @"'{0}' is an invalid XSLT pattern.";
-
-
-public const string Xslt_EmptyTagRequired = @"The tag '{0}' must be empty.";
-public const string Xslt_WrongNamespace = @"The wrong namespace was used for XSL. Use 'http://www.w3.org/1999/XSL/Transform'.";
-public const string Xslt_InvalidFormat6 = @"Format '{0}' has both  '*' and '_' which is invalid. ";
-public const string Xslt_InvalidFormat7 = @"Format '{0}' has '{1}' which is invalid.";
-public const string Xslt_ScriptMixLang = @"Multiple scripting languages for the same namespace is not supported.";
-public const string Xslt_ScriptInvalidLang = @"The scripting language '{0}' is not supported.";
-public const string Xslt_InvalidExtensionPermitions = @"Extension object should not have wider permissions than the caller of the AddExtensionObject(). If wider permissions are needed, wrap the extension object. ";
-public const string Xslt_InvalidParamNamespace = @"Parameter cannot belong to XSLT namespace.";
-public const string Xslt_DuplicateParametr = @"Duplicate parameter: '{0}'.";
-public const string Xslt_VariableCntSel = @"The '{0}' variable has both a select attribute of '{1}' and non-empty contents.";
-}
-}
index 896f3e204ce255074fdb76a397b527c727ec517d..808fa1ace2823ced7f8d6f457b77a147170f417f 100644 (file)
@@ -36,6 +36,7 @@ using System.Runtime.InteropServices;
 using System.Security;
 using System.Security.Policy;
 using System.Xml.XPath;
+using System.Xml.XmlConfiguration;
 
 namespace System.Xml.Xsl
 {
@@ -173,18 +174,18 @@ namespace System.Xml.Xsl
 
                public void Load (XmlReader stylesheet)
                {
-                       Load (stylesheet, null, null);
+                       Load (stylesheet, XsltSettings.Default, XsltConfigSection.CreateDefaultResolver());
                }
 
                public void Load (IXPathNavigable stylesheet)
                {
-                       Load (stylesheet.CreateNavigator(), null, null);
+                       Load (stylesheet.CreateNavigator(), XsltSettings.Default, XsltConfigSection.CreateDefaultResolver());
                }
 
                public void Load (IXPathNavigable stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
                {
-                       if (!settings.EnableDocumentFunction)
-                               throw new NotSupportedException ("'document' function cannot be disabled on this framework because it just runs XslTransform which does not support XsltSettings");
+//                     if (!settings.EnableDocumentFunction)
+//                             throw new NotSupportedException ("'document' function cannot be disabled on this framework because it just runs XslTransform which does not support XsltSettings");
                        if (settings.EnableScript)
                                throw new NotSupportedException ("'msxsl:script' element is not supported on this framework because it does not support run-time code generation");
                        impl.Load (stylesheet, stylesheetResolver);
index 3da35f2936f50f72296e8fa934224033a886447b..ac6743bffc30849e1415ed362a5e01cd5f928281 100644 (file)
@@ -3,14 +3,11 @@ Assembly/AssemblyInfo.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
 ../../build/common/SR.cs
-Dummy.cs
-System.Xml.Res.cs
-System.Xml.Utils.Res.cs
 ReferenceSources/SpecifiedAccessor.cs
+ReferenceSources/Res.cs
 ReferenceSources/ThisAssembly.cs
 ReferenceSources/TypeScope.cs
 ReferenceSources/Wsdl.cs
-../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/Assembly.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/GenerateHelper.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/IteratorDescriptor.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/OptimizerPatterns.cs
@@ -479,11 +476,26 @@ ReferenceSources/Wsdl.cs
 ../../../external/referencesource/System.Xml/System/Xml/Schema/XsdDateTime.cs
 ../../../external/referencesource/System.Xml/System/Xml/Schema/XsdDuration.cs
 ../../../external/referencesource/System.Xml/System/Xml/Schema/XsdValidator.cs
+
+../../../external/referencesource/System.Xml/System/Xml/Serialization/_Events.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/CodeGenerationoptions.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/CodeIdentifier.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/CodeIdentifiers.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/ImportContext.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/SchemaObjectWriter.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/XmlSchemas.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/XmlSerializerNamespaces.cs
+
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Advanced/SchemaImporterExtension.cs
+
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/ConfigurationStrings.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/DateTimeSerializationSection.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/SchemaImporterExtensionElement.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/SchemaImporterExtensionElementCollection.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/SchemaImporterExtensionsSection.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/SerializationSectionGroup.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/Configuration/XmlSerializerSection.cs
+
 ../../../external/referencesource/System.Xml/System/Xml/ValidateNames.cs
 ../../../external/referencesource/System.Xml/System/Xml/XmlCharType.cs
 ../../../external/referencesource/System.Xml/System/Xml/XmlComplianceUtil.cs
@@ -591,17 +603,7 @@ ReferenceSources/Wsdl.cs
 ../../../external/referencesource/System.Xml/System/Xml/Xslt/XsltException.cs
 ../../../external/referencesource/System.Xml/System/Xml/Xslt/XslTransform.cs
 ../../../external/referencesource/System.Xml/System/Xml/Xslt/XsltSettings.cs
-System.Xml.Serialization.Advanced/SchemaImporterExtensionCollection.cs
-System.Xml.Serialization.Advanced/SchemaImporterExtension.cs
 System.Xml.Serialization/CodeExporter.cs
-System.Xml.Serialization/CodeGenerationOptions.cs
-System.Xml.Serialization/CodeIdentifiers.cs
-System.Xml.Serialization.Configuration/DateTimeSerializationSection.cs
-System.Xml.Serialization.Configuration/SchemaImporterExtensionElementCollection.cs
-System.Xml.Serialization.Configuration/SchemaImporterExtensionElement.cs
-System.Xml.Serialization.Configuration/SchemaImporterExtensionsSection.cs
-System.Xml.Serialization.Configuration/SerializationSectionGroup.cs
-System.Xml.Serialization.Configuration/XmlSerializerSection.cs
 System.Xml.Serialization/ImportContext.cs
 System.Xml.Serialization/IXmlSerializable.cs
 System.Xml.Serialization/IXmlTextParser.cs
@@ -629,8 +631,6 @@ System.Xml.Serialization/SoapTypeAttribute.cs
 System.Xml.Serialization/TypeData.cs
 System.Xml.Serialization/TypeMember.cs
 System.Xml.Serialization/TypeTranslator.cs
-System.Xml.Serialization/UnreferencedObjectEventArgs.cs
-System.Xml.Serialization/UnreferencedObjectEventHandler.cs
 System.Xml.Serialization/XmlAnyAttributeAttribute.cs
 System.Xml.Serialization/XmlAnyElementAttribute.cs
 System.Xml.Serialization/XmlAnyElementAttributes.cs
@@ -638,8 +638,6 @@ System.Xml.Serialization/XmlArrayAttribute.cs
 System.Xml.Serialization/XmlArrayItemAttribute.cs
 System.Xml.Serialization/XmlArrayItemAttributes.cs
 System.Xml.Serialization/XmlAttributeAttribute.cs
-System.Xml.Serialization/XmlAttributeEventArgs.cs
-System.Xml.Serialization/XmlAttributeEventHandler.cs
 System.Xml.Serialization/XmlAttributeOverrides.cs
 System.Xml.Serialization/XmlAttributes.cs
 System.Xml.Serialization/XmlChoiceIdentifierAttribute.cs
@@ -648,8 +646,6 @@ System.Xml.Serialization/XmlCustomFormatter.cs
 System.Xml.Serialization/XmlDeserializationEvents.cs
 System.Xml.Serialization/XmlElementAttribute.cs
 System.Xml.Serialization/XmlElementAttributes.cs
-System.Xml.Serialization/XmlElementEventArgs.cs
-System.Xml.Serialization/XmlElementEventHandler.cs
 System.Xml.Serialization/XmlEnumAttribute.cs
 System.Xml.Serialization/XmlIgnoreAttribute.cs
 System.Xml.Serialization/XmlIncludeAttribute.cs
@@ -658,8 +654,6 @@ System.Xml.Serialization/XmlMapping.cs
 System.Xml.Serialization/XmlMemberMapping.cs
 System.Xml.Serialization/XmlMembersMapping.cs
 System.Xml.Serialization/XmlNamespaceDeclarationsAttribute.cs
-System.Xml.Serialization/XmlNodeEventArgs.cs
-System.Xml.Serialization/XmlNodeEventHandler.cs
 System.Xml.Serialization/XmlReflectionImporter.cs
 System.Xml.Serialization/XmlReflectionMember.cs
 System.Xml.Serialization/XmlRootAttribute.cs
index 70f5591eadcf4decb05d151384e3fd8a88704669..2569fd2e694bb55c6134c16c17290dc23303ae76 100644 (file)
@@ -3514,15 +3514,15 @@ namespace MonoTests.System.XmlSerialization
        [XmlType]
        public class ContainerTypeForTest
        {
-               [XmlElement ("XmlFirstType", typeof (FirstDerivedTypeForTest))]
-               [XmlElement ("XmlIntermediateType", typeof (IntermediateTypeForTest))]
                [XmlElement ("XmlSecondType", typeof (SecondDerivedTypeForTest))]
+               [XmlElement ("XmlIntermediateType", typeof (IntermediateTypeForTest))]
+               [XmlElement ("XmlFirstType", typeof (FirstDerivedTypeForTest))]
                public AbstractTypeForTest MemberToUseInclude { get; set; }
        }
 
-       [XmlInclude (typeof (FirstDerivedTypeForTest))]
-       [XmlInclude (typeof (IntermediateTypeForTest))]
        [XmlInclude (typeof (SecondDerivedTypeForTest))]
+       [XmlInclude (typeof (IntermediateTypeForTest))]
+       [XmlInclude (typeof (FirstDerivedTypeForTest))]
        public abstract class AbstractTypeForTest
        {
        }
index 6a68818450b53654f6102bc7107b69d229fdb0a9..aa333328d962b5cf0d7640c6500f03d266c21e83 100644 (file)
@@ -36,6 +36,7 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                public void MSXslNodeSetAcceptsNodeSet ()
                {
                        string xsl = @"<xsl:stylesheet version='1.0'
@@ -57,6 +58,7 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                public void MSXslNodeSetAcceptsEmptyString ()
                {
                        string xsl = @"<xsl:stylesheet version='1.0'
@@ -135,14 +137,19 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
                        t.Load (new XmlTextReader (new StringReader (xsl)));
 
                        var source = "<?xml version='1.0' encoding='utf-8' ?><Node><Name>123</Name></Node>";
+#if MOBILE
+                       var expected = "<?xml version=\"1.0\" encoding=\"utf-16\"?><Node name=\"123\"></Node>";
+#else
                        var expected = "<?xml version=\"1.0\" encoding=\"utf-16\"?><Node name=\"123\" />";
-
+#endif
                        StringWriter sw = new StringWriter ();
-                       t.Transform (new XPathDocument (new XmlTextReader (new StringReader (source))), null, sw);
+                       var xp = new XPathDocument (new XmlTextReader (new StringReader (source)));
+                       t.Transform (xp, null, sw);
                        Assert.AreEqual (expected, sw.ToString ());
                }
                
                [Test] // bug 2917
+               [Category ("MobileNotWorking")]
                public void XslOutputSettings ()
                {
                        XslCompiledTransform xslCompiledTransform = new XslCompiledTransform();
diff --git a/mcs/class/System.XML/genresstringcs.sh b/mcs/class/System.XML/genresstringcs.sh
deleted file mode 100644 (file)
index 800aa62..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/sh
-
-outfile=$1
-infile=$2
-namespace=$3
-
-echo "namespace $3 {" > $1 || exit
-echo "\tstatic partial class Res {" >> $1 || exit
-sed -e 's/^;.*//' -e 's/doesn..t/doesn''t/' -e 's/`echo "\0222"`/''/' -e 's/\"/\"\"/g' -e 's/^\([_0-9a-ZA-Z]*\)=\(.*\)/public const string \1 = @"\2";/' $2 >> $1 || exit
-echo "}" >> $1 || exit
-echo "}" >> $1 || exit
index bd433063d2e96feab3ed4e6f6c10408e183c0c91..249e726dc5ec8079a6c258a5c19a52394f0370b7 100644 (file)
@@ -3,13 +3,11 @@ Assembly/AssemblyInfo.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
 ../../build/common/SR.cs
-Dummy.cs
-System.Xml.Res.cs
-System.Xml.Utils.Res.cs
+ReferenceSources/Res.cs
 ReferenceSources/ThisAssembly.cs
 ReferenceSources/TypeScope.cs
 ReferenceSources/Wsdl.cs
-../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/Assembly.cs
+ReferenceSources/CodeDom.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/ISourceLineInfo.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/ListBase.cs
 ../../../external/referencesource/System.Data.SqlXml/System/Xml/Xsl/Pair.cs
@@ -376,10 +374,16 @@ ReferenceSources/Wsdl.cs
 ../../../external/referencesource/System.Xml/System/Xml/Schema/XsdDateTime.cs
 ../../../external/referencesource/System.Xml/System/Xml/Schema/XsdDuration.cs
 ../../../external/referencesource/System.Xml/System/Xml/Schema/XsdValidator.cs
+
+../../../external/referencesource/System.Xml/System/Xml/Serialization/_Events.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/CodeGenerationoptions.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/CodeIdentifier.cs
+../../../external/referencesource/System.Xml/System/Xml/Serialization/CodeIdentifiers.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/ImportContext.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/SchemaObjectWriter.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/XmlSchemas.cs
 ../../../external/referencesource/System.Xml/System/Xml/Serialization/XmlSerializerNamespaces.cs
+
 ../../../external/referencesource/System.Xml/System/Xml/ValidateNames.cs
 ../../../external/referencesource/System.Xml/System/Xml/XmlCharType.cs
 ../../../external/referencesource/System.Xml/System/Xml/XmlComplianceUtil.cs
@@ -486,9 +490,6 @@ ReferenceSources/Wsdl.cs
 ../../../external/referencesource/System.Xml/System/Xml/Xslt/XsltException.cs
 ../../../external/referencesource/System.Xml/System/Xml/Xslt/XslTransform.cs
 ../../../external/referencesource/System.Xml/System/Xml/Xslt/XsltSettings.cs
-System.Xml.Serialization/CodeGenerationOptions.cs
-System.Xml.Serialization/CodeIdentifier.cs
-System.Xml.Serialization/CodeIdentifiers.cs
 System.Xml.Serialization/ImportContext.cs
 System.Xml.Serialization/IXmlSerializable.cs
 System.Xml.Serialization/IXmlTextParser.cs
@@ -511,8 +512,6 @@ System.Xml.Serialization/SoapTypeAttribute.cs
 System.Xml.Serialization/TypeData.cs
 System.Xml.Serialization/TypeMember.cs
 System.Xml.Serialization/TypeTranslator.cs
-System.Xml.Serialization/UnreferencedObjectEventArgs.cs
-System.Xml.Serialization/UnreferencedObjectEventHandler.cs
 System.Xml.Serialization/XmlAnyAttributeAttribute.cs
 System.Xml.Serialization/XmlAnyElementAttribute.cs
 System.Xml.Serialization/XmlAnyElementAttributes.cs
@@ -520,8 +519,6 @@ System.Xml.Serialization/XmlArrayAttribute.cs
 System.Xml.Serialization/XmlArrayItemAttribute.cs
 System.Xml.Serialization/XmlArrayItemAttributes.cs
 System.Xml.Serialization/XmlAttributeAttribute.cs
-System.Xml.Serialization/XmlAttributeEventArgs.cs
-System.Xml.Serialization/XmlAttributeEventHandler.cs
 System.Xml.Serialization/XmlAttributeOverrides.cs
 System.Xml.Serialization/XmlAttributes.cs
 System.Xml.Serialization/XmlChoiceIdentifierAttribute.cs
@@ -529,8 +526,6 @@ System.Xml.Serialization/XmlCustomFormatter.cs
 System.Xml.Serialization/XmlDeserializationEvents.cs
 System.Xml.Serialization/XmlElementAttribute.cs
 System.Xml.Serialization/XmlElementAttributes.cs
-System.Xml.Serialization/XmlElementEventArgs.cs
-System.Xml.Serialization/XmlElementEventHandler.cs
 System.Xml.Serialization/XmlEnumAttribute.cs
 System.Xml.Serialization/XmlIgnoreAttribute.cs
 System.Xml.Serialization/XmlIncludeAttribute.cs
@@ -539,8 +534,6 @@ System.Xml.Serialization/XmlMapping.cs
 System.Xml.Serialization/XmlMemberMapping.cs
 System.Xml.Serialization/XmlMembersMapping.cs
 System.Xml.Serialization/XmlNamespaceDeclarationsAttribute.cs
-System.Xml.Serialization/XmlNodeEventArgs.cs
-System.Xml.Serialization/XmlNodeEventHandler.cs
 System.Xml.Serialization/XmlReflectionImporter.cs
 System.Xml.Serialization/XmlReflectionMember.cs
 System.Xml.Serialization/XmlRootAttribute.cs
index 7d1e8302b68fd41e5734213560bf68b3d0b0c9a0..b8327d315858735ef5f869d97597f002684f0a8a 100644 (file)
@@ -205,6 +205,14 @@ namespace MonoTests.System.Xml.Linq
                        Assert.AreEqual ("a=\" &gt;_&lt; \"", a.ToString ());
                }
 
+               [Test]
+               public void ToString_Xamarin29935 ()
+               {
+                       var doc = XDocument.Parse ("<?xml version='1.0' encoding='utf-8'?><lift xmlns:test='http://test.example.com'></lift>");
+                       Assert.AreEqual ("xmlns:test=\"http://test.example.com\"",
+                               doc.Root.Attributes ().Select (s => s.ToString ()).First ());
+               }
+
                [Test]
                public void DateTimeAttribute ()
                {
index de0f569d5c5d57a002c307b612d0f9e9f10d64b3..ecc7b1a4645f400223e493bd48916a0e9819c5a9 100644 (file)
@@ -205,13 +205,15 @@ namespace Mono.CSharp
                        foreach (CodeNamespace codeNamespace in compileUnit.Namespaces) {
                                if (string.IsNullOrEmpty (codeNamespace.Name)) {
                                        global_imports = codeNamespace.Imports;
-                                       codeNamespace.Imports = new CodeNamespaceImportCollection ();
+                                       codeNamespace.Imports.Clear ();
                                }
 
                                GenerateNamespace (codeNamespace);
 
                                if (global_imports != null) {
-                                       codeNamespace.Imports = global_imports;
+                                       codeNamespace.Imports.Clear ();
+                                       foreach (CodeNamespaceImport ns in global_imports)
+                                       codeNamespace.Imports.Add (ns);
                                        global_imports = null;
                                }
                        }
index db1e087e442ee16d0f4ba66ffb3203bfa4a3e0cc..eed54ad4b63bac3dda99d1e3fc5f22b9d879ccb6 100644 (file)
@@ -93,6 +93,9 @@ namespace Microsoft.VisualBasic
                        "While", "With", "WithEvents", "WriteOnly", 
                        "Xor" 
                };
+
+               private CodeAttributeDeclarationCollection assemblyCustomAttributes;
+
                public VBCodeGenerator()
                {
                }
@@ -229,13 +232,17 @@ namespace Microsoft.VisualBasic
 
                protected override void GenerateCompileUnit (CodeCompileUnit compileUnit)
                {
-                       GenerateCompileUnitStart (compileUnit);
+                       assemblyCustomAttributes = compileUnit.AssemblyCustomAttributes;
 
-                       OutputAttributes (compileUnit.AssemblyCustomAttributes,
-                               "Assembly: ", LineHandling.NewLine);
+                       GenerateCompileUnitStart (compileUnit);
 
                        GenerateNamespaces (compileUnit);
 
+                       // In the case there are no namespaces, and hence no Import statements, now 
+                       // is the time to emit assembly level attributes.
+                       if (assemblyCustomAttributes != null) 
+                               GenerateAssemblyAttributes ();
+
                        GenerateCompileUnitEnd (compileUnit);
                }
 
@@ -1026,7 +1033,14 @@ namespace Microsoft.VisualBasic
                protected override void GenerateNamespace(CodeNamespace ns)
                {
                        GenerateNamespaceImports (ns);
+
+                       // Assembly level attributes can't be emitted before the Import statements
+                       // in the file.  
+                       if (assemblyCustomAttributes != null)
+                               GenerateAssemblyAttributes ();
+
                        Output.WriteLine ();
+
                        GenerateCommentStatements (ns.Comments);
                        GenerateNamespaceStart (ns); 
                        GenerateTypes (ns);
@@ -1650,6 +1664,13 @@ namespace Microsoft.VisualBasic
                        return (attributes & MemberAttributes.ScopeMask) == MemberAttributes.Abstract;
                }
 
+               private void GenerateAssemblyAttributes ()
+               {
+                       OutputAttributes (assemblyCustomAttributes,
+                               "Assembly: ", LineHandling.NewLine);
+                       assemblyCustomAttributes = null;
+               }
+
                private enum LineHandling
                {
                        InLine,
diff --git a/mcs/class/System/ReferenceSources/MonoSocketRuntimeWorkItem.cs b/mcs/class/System/ReferenceSources/MonoSocketRuntimeWorkItem.cs
deleted file mode 100644 (file)
index 3c96435..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Runtime.CompilerServices;
-using System.Threading;
-
-namespace System.Net.Sockets
-{
-       internal sealed class MonoSocketRuntimeWorkItem : IThreadPoolWorkItem
-       {
-               Socket.SocketAsyncResult socket_async_result;
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern void ExecuteWorkItem();
-
-               public void MarkAborted(ThreadAbortException tae)
-               {
-               }
-       }
-}
\ No newline at end of file
index 7bf4932b6d662fd503ebacb877c3fa072434d5ab..dbda7ac686451f3e87dc078ed726f5fa0dc9e5cc 100644 (file)
@@ -910,4 +910,17 @@ public const string Incorrect_base_type = @"The specified type, '{0}' is not der
 public const string Only_specify_one = @"'switchValue' and 'switchName' cannot both be specified on source '{0}'.";
 public const string Reference_listener_cant_have_properties = @"A listener with no type name specified references the sharedListeners section and cannot have any attributes other than 'Name'.  Listener: '{0}'.";
 public const string Reference_to_nonexistent_listener = @"Listener '{0}' does not exist in the sharedListeners section.";
+
+public const string Argument_NullComment = @"The 'Comment' property of the CodeCommentStatement '{0}' cannot be null.";
+public const string CodeGenOutputWriter = @"The output writer for code generation and the writer supplied don't match and cannot be used. This is generally caused by a bad implementation of a CodeGenerator derived class.";
+public const string CodeGenReentrance = @"This code generation API cannot be called while the generator is being used to generate something else.";
+public const string InvalidElementType = @"Element type {0} is not supported.";
+public const string InvalidIdentifier = @"Identifier '{0}' is not valid.";
+public const string InvalidPrimitiveType = @"Invalid Primitive Type: {0}. Consider using CodeObjectCreateExpression.";
+public const string ArityDoesntMatch = @"The total arity specified in '{0}' does not match the number of TypeArguments supplied.  There were '{1}' TypeArguments supplied.
+";
+public const string InvalidPathCharsInChecksum = @"The CodeChecksumPragma file name '{0}' contains invalid path characters.";
+public const string InvalidLanguageIdentifier = @"The identifier:""{0}"" on the property:""{1}"" of type:""{2}"" is not a valid language-independent identifier name. Check to see if CodeGenerator.IsValidLanguageIndependentIdentifier allows the identifier name.";
+public const string InvalidTypeName = @"The type name:""{0}"" on the property:""{1}"" of type:""{2}"" is not a valid language-independent type name.";
+public const string InvalidRegion = "The region directive '{0}' contains invalid characters.  RegionText cannot contain any new line characters.";
 }
index d6db248b751df90cbebb49c717d577cb8aee01b7..8c1d12b8aaaeea6744f18260c9f1db19986b9c64 100644 (file)
@@ -37,10 +37,10 @@ namespace System.Net.Sockets
                // this version does not throw.
                internal void InternalShutdown (SocketShutdown how)
                {
-                       if (!connected || disposed)
+                       if (!is_connected || is_disposed)
                                return;
                        int error;
-                       Shutdown_internal (socket, how, out error);
+                       Shutdown_internal (safe_handle, how, out error);
                }
 
                internal IAsyncResult UnsafeBeginConnect (EndPoint remoteEP, AsyncCallback callback, object state)
@@ -86,7 +86,7 @@ namespace System.Net.Sockets
 
                internal void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, int optionValue, bool silent)
                {
-                       if (disposed && closed) {
+                       if (is_disposed && is_closed) {
                                if (silent)
                                        return;
                                throw new ObjectDisposedException (GetType ().ToString ());
@@ -94,7 +94,7 @@ namespace System.Net.Sockets
 
                        int error;
 
-                       SetSocketOption_internal (socket, optionLevel, optionName, null,
+                       SetSocketOption_internal (safe_handle, optionLevel, optionName, null,
                                null, optionValue, out error);
 
                        if (!silent && error != 0)
diff --git a/mcs/class/System/System.CodeDom.Compiler/CodeGenerator.cs b/mcs/class/System/System.CodeDom.Compiler/CodeGenerator.cs
deleted file mode 100644 (file)
index 7171149..0000000
+++ /dev/null
@@ -1,1316 +0,0 @@
-//
-// System.CodeDom.Compiler.CodeGenerator.cs
-//
-// Authors:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//   Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2001-2003 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.CodeDom;
-using System.Reflection;
-using System.IO;
-using System.Collections;
-       
-namespace System.CodeDom.Compiler {
-
-       public abstract class CodeGenerator : ICodeGenerator
-       {
-               private IndentedTextWriter output;
-               private CodeGeneratorOptions options;
-               private CodeTypeMember currentMember;
-               private CodeTypeDeclaration currentType;
-               private Visitor visitor;
-
-               //
-               // Constructors
-               //
-               protected CodeGenerator()
-               {
-                       visitor = new Visitor (this);
-               }
-
-               //
-               // Properties
-               //
-               protected
-               CodeTypeDeclaration CurrentClass {
-                       get {
-                               return currentType;
-                       }
-               }
-
-               protected CodeTypeMember CurrentMember {
-                       get {
-                               return currentMember;
-                       }
-               }
-               
-               protected string CurrentMemberName {
-                       get {
-                               if (currentMember == null)
-                                       return "<% unknown %>";
-                               return currentMember.Name;
-                       }
-               }
-
-               protected string CurrentTypeName {
-                       get {
-                               if (currentType == null)
-                                       return "<% unknown %>";
-                               return currentType.Name;
-                       }
-               }
-               
-               protected int Indent {
-                       get {
-                               return output.Indent;
-                       }
-                       set {
-                               output.Indent = value;
-                       }
-               }
-               
-               protected bool IsCurrentClass {
-                       get {
-                               if (currentType == null)
-                                       return false;
-                               return currentType.IsClass && !(currentType is CodeTypeDelegate);
-                       }
-               }
-
-               protected bool IsCurrentDelegate {
-                       get {
-                               return currentType is CodeTypeDelegate;
-                       }
-               }
-
-               protected bool IsCurrentEnum {
-                       get {
-                               if (currentType == null)
-                                       return false;
-                               return currentType.IsEnum;
-                       }
-               }
-
-               protected bool IsCurrentInterface {
-                       get {
-                               if (currentType == null)
-                                       return false;
-                               return currentType.IsInterface;
-                       }
-               }
-
-               protected bool IsCurrentStruct {
-                       get {
-                               if (currentType == null)
-                                       return false;
-                               return currentType.IsStruct;
-                       }
-               }
-
-               protected abstract string NullToken {
-                       get;
-               }
-               
-               
-               protected CodeGeneratorOptions Options {
-                       get {
-                               return options;
-                       }
-               }
-                       
-               protected TextWriter Output {
-                       get {
-                               return output;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               protected virtual void ContinueOnNewLine (string st)
-               {
-                       output.WriteLine (st);
-               }
-
-               /*
-                * Code Generation methods
-                */
-               protected abstract void GenerateArgumentReferenceExpression (CodeArgumentReferenceExpression e);
-               protected abstract void GenerateArrayCreateExpression (CodeArrayCreateExpression e);
-               protected abstract void GenerateArrayIndexerExpression (CodeArrayIndexerExpression e);
-               protected abstract void GenerateAssignStatement (CodeAssignStatement s);
-               protected abstract void GenerateAttachEventStatement (CodeAttachEventStatement s);
-               protected abstract void GenerateAttributeDeclarationsStart (CodeAttributeDeclarationCollection attributes);
-               protected abstract void GenerateAttributeDeclarationsEnd (CodeAttributeDeclarationCollection attributes);
-               protected abstract void GenerateBaseReferenceExpression (CodeBaseReferenceExpression e);
-
-               protected virtual void GenerateBinaryOperatorExpression (CodeBinaryOperatorExpression e)
-               {
-                       output.Write ('(');
-                       GenerateExpression (e.Left);
-                       output.Write (' ');
-                       OutputOperator (e.Operator);
-                       output.Write (' ');
-                       GenerateExpression (e.Right);
-                       output.Write (')');
-               }
-
-               protected abstract void GenerateCastExpression (CodeCastExpression e);
-
-               [MonoTODO]
-               public virtual void GenerateCodeFromMember (CodeTypeMember member, TextWriter writer, CodeGeneratorOptions options)
-               {
-                       throw new NotImplementedException ();
-               }
-               protected abstract void GenerateComment (CodeComment comment);
-
-               protected virtual void GenerateCommentStatement (CodeCommentStatement statement)
-               {
-                       GenerateComment (statement.Comment);
-               }
-
-               protected virtual void GenerateCommentStatements (CodeCommentStatementCollection statements)
-               {
-                       foreach (CodeCommentStatement comment in statements)
-                               GenerateCommentStatement (comment);
-               }
-
-               protected virtual void GenerateCompileUnit (CodeCompileUnit compileUnit)
-               {
-                       GenerateCompileUnitStart (compileUnit);
-
-                       foreach (CodeNamespace ns in compileUnit.Namespaces)
-                               if (string.IsNullOrEmpty(ns.Name))
-                                       GenerateNamespace (ns);
-                                     
-                       CodeAttributeDeclarationCollection attributes = compileUnit.AssemblyCustomAttributes;
-                       if (attributes.Count != 0) {
-                               foreach (CodeAttributeDeclaration att in attributes) {
-                                       GenerateAttributeDeclarationsStart (attributes);
-                                       output.Write ("assembly: ");
-                                       OutputAttributeDeclaration (att);
-                                       GenerateAttributeDeclarationsEnd (attributes);
-                               }
-                               output.WriteLine ();
-                       }
-
-                       foreach (CodeNamespace ns in compileUnit.Namespaces)
-                               if (!string.IsNullOrEmpty(ns.Name))
-                                       GenerateNamespace (ns);
-
-                       GenerateCompileUnitEnd (compileUnit);
-               }
-
-               protected virtual void GenerateCompileUnitEnd (CodeCompileUnit compileUnit)
-               {
-                       if (compileUnit.EndDirectives.Count > 0)
-                               GenerateDirectives (compileUnit.EndDirectives);
-               }
-
-               protected virtual void GenerateCompileUnitStart (CodeCompileUnit compileUnit)
-               {
-                       if (compileUnit.StartDirectives.Count > 0) {
-                               GenerateDirectives (compileUnit.StartDirectives);
-                               Output.WriteLine ();
-                       }
-               }
-
-               protected abstract void GenerateConditionStatement (CodeConditionStatement s);
-               protected abstract void GenerateConstructor (CodeConstructor x, CodeTypeDeclaration d);
-
-               protected virtual void GenerateDecimalValue (Decimal d)
-               {
-                       Output.Write (d.ToString (CultureInfo.InvariantCulture));
-               }
-
-               [MonoTODO]
-               protected virtual void GenerateDefaultValueExpression (CodeDefaultValueExpression e)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               protected abstract void GenerateDelegateCreateExpression (CodeDelegateCreateExpression e);
-               protected abstract void GenerateDelegateInvokeExpression (CodeDelegateInvokeExpression e);
-
-               protected virtual void GenerateDirectionExpression (CodeDirectionExpression e)
-               {
-                       OutputDirection (e.Direction);
-                       output.Write (' ');
-                       GenerateExpression (e.Expression);
-               }
-
-               protected virtual void GenerateDoubleValue (Double d)
-               {
-                       Output.Write (d.ToString (CultureInfo.InvariantCulture));
-               }
-
-               protected abstract void GenerateEntryPointMethod (CodeEntryPointMethod m, CodeTypeDeclaration d);
-               protected abstract void GenerateEvent (CodeMemberEvent ev, CodeTypeDeclaration d);
-               protected abstract void GenerateEventReferenceExpression (CodeEventReferenceExpression e);
-
-               protected void GenerateExpression (CodeExpression e)
-               {
-                       if (e == null)
-                               throw new ArgumentNullException ("e");
-
-                       try {
-                               e.Accept (visitor);
-                       } catch (NotImplementedException) {
-                               throw new ArgumentException ("Element type " + e.GetType () + " is not supported.", "e");
-                       }
-               }
-
-               protected abstract void GenerateExpressionStatement (CodeExpressionStatement statement);
-               protected abstract void GenerateField (CodeMemberField f);
-               protected abstract void GenerateFieldReferenceExpression (CodeFieldReferenceExpression e);
-               protected abstract void GenerateGotoStatement (CodeGotoStatement statement);
-               protected abstract void GenerateIndexerExpression (CodeIndexerExpression e);
-               protected abstract void GenerateIterationStatement (CodeIterationStatement s);
-               protected abstract void GenerateLabeledStatement (CodeLabeledStatement statement);
-               protected abstract void GenerateLinePragmaStart (CodeLinePragma p);
-               protected abstract void GenerateLinePragmaEnd (CodeLinePragma p);
-               protected abstract void GenerateMethod (CodeMemberMethod m, CodeTypeDeclaration d);
-               protected abstract void GenerateMethodInvokeExpression (CodeMethodInvokeExpression e);
-               protected abstract void GenerateMethodReferenceExpression (CodeMethodReferenceExpression e);
-               protected abstract void GenerateMethodReturnStatement (CodeMethodReturnStatement e);
-
-               protected virtual void GenerateNamespace (CodeNamespace ns)
-               {
-                       foreach (CodeCommentStatement statement in ns.Comments)
-                               GenerateCommentStatement (statement);
-
-                       GenerateNamespaceStart (ns);
-
-                       foreach (CodeNamespaceImport import in ns.Imports) {
-                               if (import.LinePragma != null)
-                                       GenerateLinePragmaStart (import.LinePragma);
-
-                               GenerateNamespaceImport (import);
-
-                               if (import.LinePragma != null)
-                                       GenerateLinePragmaEnd (import.LinePragma);
-                       }
-
-                       output.WriteLine();
-
-                       GenerateTypes (ns);
-
-                       GenerateNamespaceEnd (ns);
-               }
-
-               protected abstract void GenerateNamespaceStart (CodeNamespace ns);
-               protected abstract void GenerateNamespaceEnd (CodeNamespace ns);
-               protected abstract void GenerateNamespaceImport (CodeNamespaceImport i);
-               protected void GenerateNamespaceImports (CodeNamespace e)
-               {
-                       foreach (CodeNamespaceImport import in e.Imports) {
-                               if (import.LinePragma != null)
-                                       GenerateLinePragmaStart (import.LinePragma);
-
-                               GenerateNamespaceImport (import);
-
-                               if (import.LinePragma != null)
-                                       GenerateLinePragmaEnd (import.LinePragma);
-                       }
-               }
-
-               protected void GenerateNamespaces (CodeCompileUnit e)
-               {
-                       foreach (CodeNamespace ns in e.Namespaces)
-                               GenerateNamespace (ns);
-               }
-
-               protected abstract void GenerateObjectCreateExpression (CodeObjectCreateExpression e);
-
-               protected virtual void GenerateParameterDeclarationExpression (CodeParameterDeclarationExpression e)
-               {
-                       if (e.CustomAttributes != null && e.CustomAttributes.Count > 0)
-                               OutputAttributeDeclarations (e.CustomAttributes);
-                       OutputDirection (e.Direction);
-                       OutputType (e.Type);
-                       output.Write (' ');
-                       output.Write (e.Name);
-               }
-
-               protected virtual void GeneratePrimitiveExpression (CodePrimitiveExpression e)
-               {
-                       object value = e.Value;
-                       if (value == null) {
-                               output.Write (NullToken);
-                               return;
-                       }
-                       Type type = value.GetType ();
-                       TypeCode typeCode = Type.GetTypeCode (type);
-                       switch (typeCode) {
-                       case TypeCode.Boolean:
-                               output.Write (value.ToString ().ToLower (CultureInfo.InvariantCulture));
-                               break;
-                       case TypeCode.Char:
-                               output.Write ("'" + value.ToString () + "'");
-                               break;
-                       case TypeCode.String:
-                               output.Write (QuoteSnippetString ((string) value));
-                               break;
-                       case TypeCode.Single:
-                               GenerateSingleFloatValue ((float) value);
-                               break;
-                       case TypeCode.Double:
-                               GenerateDoubleValue ((double) value);
-                               break;
-                       case TypeCode.Decimal:
-                               GenerateDecimalValue ((decimal) value);
-                               break;
-                       case TypeCode.Byte:
-                       case TypeCode.Int16:
-                       case TypeCode.Int32:
-                       case TypeCode.Int64:
-                               output.Write (((IFormattable)value).ToString (null, CultureInfo.InvariantCulture));
-                               break;
-                       default:
-                               throw new ArgumentException (string.Format(CultureInfo.InvariantCulture,
-                                       "Invalid Primitive Type: {0}. Only CLS compliant primitive " +
-                                       "types can be used. Consider using CodeObjectCreateExpression.",
-                                       type.FullName));
-                       }
-               }
-
-               protected abstract void GenerateProperty (CodeMemberProperty p, CodeTypeDeclaration d);
-               protected abstract void GeneratePropertyReferenceExpression (CodePropertyReferenceExpression e);
-               protected abstract void GeneratePropertySetValueReferenceExpression (CodePropertySetValueReferenceExpression e);
-               protected abstract void GenerateRemoveEventStatement (CodeRemoveEventStatement statement);
-
-               protected virtual void GenerateSingleFloatValue (Single s)
-               {
-                       output.Write (s.ToString(CultureInfo.InvariantCulture));
-               }
-
-               protected virtual void GenerateSnippetCompileUnit (CodeSnippetCompileUnit e)
-               {
-                       if (e.LinePragma != null)
-                               GenerateLinePragmaStart (e.LinePragma);
-
-                       output.WriteLine (e.Value);
-
-                       if (e.LinePragma != null)
-                               GenerateLinePragmaEnd (e.LinePragma);
-
-               }
-
-               protected abstract void GenerateSnippetExpression (CodeSnippetExpression e);
-               protected abstract void GenerateSnippetMember (CodeSnippetTypeMember m);
-               protected virtual void GenerateSnippetStatement (CodeSnippetStatement s)
-               {
-                       output.WriteLine (s.Value);
-               }
-
-               protected void GenerateStatement (CodeStatement s)
-               {
-                       if (s.StartDirectives.Count > 0)
-                               GenerateDirectives (s.StartDirectives);
-                       if (s.LinePragma != null)
-                               GenerateLinePragmaStart (s.LinePragma);
-
-                       CodeSnippetStatement snippet = s as CodeSnippetStatement;
-                       if (snippet != null) {
-                               int indent = Indent;
-                               try {
-                                       Indent = 0;
-                                       GenerateSnippetStatement (snippet);
-                               } finally {
-                                       Indent = indent;
-                               }
-                       } else {
-                               try {
-                                       s.Accept (visitor);
-                               } catch (NotImplementedException) {
-                                       throw new ArgumentException ("Element type " + s.GetType () + " is not supported.", "s");
-                               }
-                       }
-
-                       if (s.LinePragma != null)
-                               GenerateLinePragmaEnd (s.LinePragma);
-
-                       if (s.EndDirectives.Count > 0)
-                               GenerateDirectives (s.EndDirectives);
-               }
-
-               protected void GenerateStatements (CodeStatementCollection c)
-               {
-                       foreach (CodeStatement statement in c)
-                               GenerateStatement (statement);
-               }
-
-               protected abstract void GenerateThisReferenceExpression (CodeThisReferenceExpression e);
-               protected abstract void GenerateThrowExceptionStatement (CodeThrowExceptionStatement s);
-               protected abstract void GenerateTryCatchFinallyStatement (CodeTryCatchFinallyStatement s);
-               protected abstract void GenerateTypeEnd (CodeTypeDeclaration declaration);
-               protected abstract void GenerateTypeConstructor (CodeTypeConstructor constructor);
-
-               protected virtual void GenerateTypeOfExpression (CodeTypeOfExpression e)
-               {
-                       output.Write ("typeof(");
-                       OutputType (e.Type);
-                       output.Write (")");
-               }
-
-               protected virtual void GenerateTypeReferenceExpression (CodeTypeReferenceExpression e)
-               {
-                       OutputType (e.Type);
-               }
-
-               protected void GenerateTypes (CodeNamespace e)
-               {
-                       foreach (CodeTypeDeclaration type in e.Types) {
-                               if (options.BlankLinesBetweenMembers)
-                                       output.WriteLine ();
-
-                               GenerateType (type);
-                       }
-               }
-
-               protected abstract void GenerateTypeStart (CodeTypeDeclaration declaration);
-               protected abstract void GenerateVariableDeclarationStatement (CodeVariableDeclarationStatement e);
-               protected abstract void GenerateVariableReferenceExpression (CodeVariableReferenceExpression e);
-
-               //
-               // Other members
-               //
-               
-               /*
-                * Output Methods
-                */
-               protected virtual void OutputAttributeArgument (CodeAttributeArgument argument)
-               {
-                       string name = argument.Name;
-                       if ((name != null) && (name.Length > 0)) {
-                               output.Write (name);
-                               output.Write ('=');
-                       }
-                       GenerateExpression (argument.Value);
-               }
-
-               private void OutputAttributeDeclaration (CodeAttributeDeclaration attribute)
-               {
-                       output.Write (attribute.Name.Replace ('+', '.'));
-                       output.Write ('(');
-                       IEnumerator enumerator = attribute.Arguments.GetEnumerator();
-                       if (enumerator.MoveNext()) {
-                               CodeAttributeArgument argument = (CodeAttributeArgument)enumerator.Current;
-                               OutputAttributeArgument (argument);
-                               
-                               while (enumerator.MoveNext()) {
-                                       output.Write (',');
-                                       argument = (CodeAttributeArgument)enumerator.Current;
-                                       OutputAttributeArgument (argument);
-                               }
-                       }
-                       output.Write (')');
-               }
-
-               protected virtual void OutputAttributeDeclarations (CodeAttributeDeclarationCollection attributes)
-               {
-                       GenerateAttributeDeclarationsStart (attributes);
-                       
-                       IEnumerator enumerator = attributes.GetEnumerator();
-                       if (enumerator.MoveNext()) {
-                               CodeAttributeDeclaration attribute = (CodeAttributeDeclaration)enumerator.Current;
-
-                               OutputAttributeDeclaration (attribute);
-                               
-                               while (enumerator.MoveNext()) {
-                                       attribute = (CodeAttributeDeclaration)enumerator.Current;
-
-                                       output.WriteLine (',');
-                                       OutputAttributeDeclaration (attribute);
-                               }
-                       }
-
-                       GenerateAttributeDeclarationsEnd (attributes);
-               }
-
-               protected virtual void OutputDirection (FieldDirection direction)
-               {
-                       switch (direction) {
-                       case FieldDirection.In:
-                               //output.Write ("in ");
-                               break;
-                       case FieldDirection.Out:
-                               output.Write ("out ");
-                               break;
-                       case FieldDirection.Ref:
-                               output.Write ("ref ");
-                               break;
-                       }
-               }
-
-               protected virtual void OutputExpressionList (CodeExpressionCollection expressions)
-               {
-                       OutputExpressionList (expressions, false);
-               }
-
-               protected virtual void OutputExpressionList (CodeExpressionCollection expressions,
-                                                            bool newLineBetweenItems)
-               {
-                       ++Indent;
-                       IEnumerator enumerator = expressions.GetEnumerator();
-                       if (enumerator.MoveNext()) {
-                               CodeExpression expression = (CodeExpression)enumerator.Current;
-
-                               GenerateExpression (expression);
-                               
-                               while (enumerator.MoveNext()) {
-                                       expression = (CodeExpression)enumerator.Current;
-                                       
-                                       output.Write (',');
-                                       if (newLineBetweenItems)
-                                               output.WriteLine ();
-                                       else
-                                               output.Write (' ');
-                                       
-                                       GenerateExpression (expression);
-                               }
-                       }
-                       --Indent;
-               }
-
-               protected virtual void OutputFieldScopeModifier (MemberAttributes attributes)
-               {
-                       if ((attributes & MemberAttributes.VTableMask) == MemberAttributes.New)
-                               output.Write ("new ");
-
-                       switch (attributes & MemberAttributes.ScopeMask) {
-                       case MemberAttributes.Static:
-                               output.Write ("static ");
-                               break;
-                       case MemberAttributes.Const:
-                               output.Write ("const ");
-                               break;
-                       }
-               }
-
-               protected virtual void OutputIdentifier (string ident)
-               {
-                       output.Write (ident);
-               }
-
-               protected virtual void OutputMemberAccessModifier (MemberAttributes attributes)
-               {
-                       switch (attributes & MemberAttributes.AccessMask) {
-                               case MemberAttributes.Assembly:
-                                       output.Write ("internal ");
-                                       break;
-                               case MemberAttributes.FamilyAndAssembly:
-                                       output.Write ("internal "); 
-                                       break;
-                               case MemberAttributes.Family:
-                                       output.Write ("protected ");
-                                       break;
-                               case MemberAttributes.FamilyOrAssembly:
-                                       output.Write ("protected internal ");
-                                       break;
-                               case MemberAttributes.Private:
-                                       output.Write ("private ");
-                                       break;
-                               case MemberAttributes.Public:
-                                       output.Write ("public ");
-                                       break;
-                       }
-               }
-
-               protected virtual void OutputMemberScopeModifier (MemberAttributes attributes)
-               {
-                       if ((attributes & MemberAttributes.VTableMask) == MemberAttributes.New)
-                               output.Write( "new " );
-
-                       switch (attributes & MemberAttributes.ScopeMask) {
-                               case MemberAttributes.Abstract:
-                                       output.Write ("abstract ");
-                                       break;
-                               case MemberAttributes.Final:
-                                       // Do nothing
-                                       break;
-                               case MemberAttributes.Static:
-                                       output.Write ("static ");
-                                       break;
-                               case MemberAttributes.Override:
-                                       output.Write ("override ");
-                                       break;
-                               default:
-                                       //
-                                       // FUNNY! if the scope value is
-                                       // rubbish (0 or >Const), and access
-                                       // is public or protected, make it
-                                       // "virtual".
-                                       //
-                                       // i'm not sure whether this is 100%
-                                       // correct, but it seems to be MS
-                                       // behavior.
-                                       //
-                                       // On .NET 2.0, internal members
-                                       // are also marked "virtual".
-                                       //
-                                       MemberAttributes access = attributes & MemberAttributes.AccessMask;
-                                       if (access == MemberAttributes.Public || access == MemberAttributes.Family)
-                                               output.Write ("virtual ");
-                                       break;
-                       }
-               }
-                               
-               protected virtual void OutputOperator (CodeBinaryOperatorType op)
-               {
-                       switch (op) {
-                       case CodeBinaryOperatorType.Add:
-                               output.Write ("+");
-                               break;
-                       case CodeBinaryOperatorType.Subtract:
-                               output.Write ("-");
-                               break;
-                       case CodeBinaryOperatorType.Multiply:
-                               output.Write ("*");
-                               break;
-                       case CodeBinaryOperatorType.Divide:
-                               output.Write ("/");
-                               break;
-                       case CodeBinaryOperatorType.Modulus:
-                               output.Write ("%");
-                               break;
-                       case CodeBinaryOperatorType.Assign:
-                               output.Write ("=");
-                               break;
-                       case CodeBinaryOperatorType.IdentityInequality:
-                               output.Write ("!=");
-                               break;
-                       case CodeBinaryOperatorType.IdentityEquality:
-                               output.Write ("==");
-                               break;
-                       case CodeBinaryOperatorType.ValueEquality:
-                               output.Write ("==");
-                               break;
-                       case CodeBinaryOperatorType.BitwiseOr:
-                               output.Write ("|");
-                               break;
-                       case CodeBinaryOperatorType.BitwiseAnd:
-                               output.Write ("&");
-                               break;
-                       case CodeBinaryOperatorType.BooleanOr:
-                               output.Write ("||");
-                               break;
-                       case CodeBinaryOperatorType.BooleanAnd:
-                               output.Write ("&&");
-                               break;
-                       case CodeBinaryOperatorType.LessThan:
-                               output.Write ("<");
-                               break;
-                       case CodeBinaryOperatorType.LessThanOrEqual:
-                               output.Write ("<=");
-                               break;
-                       case CodeBinaryOperatorType.GreaterThan:
-                               output.Write (">");
-                               break;
-                       case CodeBinaryOperatorType.GreaterThanOrEqual:
-                               output.Write (">=");
-                               break;
-                       }
-               }
-
-               protected virtual void OutputParameters (CodeParameterDeclarationExpressionCollection parameters)
-               {
-                       bool first = true;
-                       foreach (CodeParameterDeclarationExpression expr in parameters) {
-                               if (first)
-                                       first = false;
-                               else
-                                       output.Write (", ");
-                               GenerateExpression (expr);
-                       }
-               }
-
-               protected abstract void OutputType (CodeTypeReference t);
-
-               protected virtual void OutputTypeAttributes (TypeAttributes attributes,
-                                                            bool isStruct,
-                                                            bool isEnum)
-               {
-                       switch (attributes & TypeAttributes.VisibilityMask) {
-                       case TypeAttributes.NotPublic:
-                               // private by default
-                               break; 
-
-                       case TypeAttributes.Public:
-                       case TypeAttributes.NestedPublic:
-                               output.Write ("public ");
-                               break;
-
-                       case TypeAttributes.NestedPrivate:
-                               output.Write ("private ");
-                               break;
-                       }
-
-                       if (isStruct)
-                               output.Write ("struct ");
-
-                       else if (isEnum)
-                               output.Write ("enum ");
-                       else {
-                               if ((attributes & TypeAttributes.Interface) != 0) 
-                                       output.Write ("interface ");
-                               else if (currentType is CodeTypeDelegate)
-                                       output.Write ("delegate ");
-                               else {
-                                       if ((attributes & TypeAttributes.Sealed) != 0)
-                                               output.Write ("sealed ");
-                                       if ((attributes & TypeAttributes.Abstract) != 0)
-                                               output.Write ("abstract ");
-                                       
-                                       output.Write ("class ");
-                               }
-                       }
-               }
-
-               protected virtual void OutputTypeNamePair (CodeTypeReference type,
-                                                          string name)
-               {
-                       OutputType (type);
-                       output.Write (' ');
-                       output.Write (name);
-               }
-
-               protected abstract string QuoteSnippetString (string value);
-
-               /*
-                * ICodeGenerator
-                */
-               protected abstract string CreateEscapedIdentifier (string value);
-               string ICodeGenerator.CreateEscapedIdentifier (string value)
-               {
-                       return CreateEscapedIdentifier (value);
-               }
-
-               protected abstract string CreateValidIdentifier (string value);
-               string ICodeGenerator.CreateValidIdentifier (string value)
-               {
-                       return CreateValidIdentifier (value);
-               }
-
-               private void InitOutput (TextWriter output, CodeGeneratorOptions options)
-               {
-                       if (options == null)
-                               options = new CodeGeneratorOptions ();
-                               
-                       this.output = new IndentedTextWriter (output, options.IndentString);
-                       this.options = options;
-               }
-
-               void ICodeGenerator.GenerateCodeFromCompileUnit (CodeCompileUnit compileUnit,
-                                                                TextWriter output,
-                                                                CodeGeneratorOptions options)
-               {
-                       InitOutput (output, options);
-
-                       if (compileUnit is CodeSnippetCompileUnit) {
-                               GenerateSnippetCompileUnit ((CodeSnippetCompileUnit) compileUnit);
-                       } else {
-                               GenerateCompileUnit (compileUnit);
-                       }
-               }
-
-               void ICodeGenerator.GenerateCodeFromExpression (CodeExpression expression,
-                                                               TextWriter output,
-                                                               CodeGeneratorOptions options)
-               {
-                       InitOutput (output, options);
-                       GenerateExpression (expression);
-               }
-
-               void ICodeGenerator.GenerateCodeFromNamespace (CodeNamespace ns,
-                                                              TextWriter output, 
-                                                              CodeGeneratorOptions options)
-               {
-                       InitOutput (output, options);
-                       GenerateNamespace (ns);
-               }
-
-               void ICodeGenerator.GenerateCodeFromStatement (CodeStatement statement,
-                                                              TextWriter output, 
-                                                              CodeGeneratorOptions options)
-               {
-                       InitOutput (output, options);
-                       GenerateStatement (statement);
-               }
-
-               void ICodeGenerator.GenerateCodeFromType (CodeTypeDeclaration type,
-                                                         TextWriter output,
-                                                         CodeGeneratorOptions options)
-               {
-                       InitOutput (output, options);
-                       GenerateType (type);
-               }
-
-               private void GenerateType (CodeTypeDeclaration type)
-               {
-                       this.currentType = type;
-                       this.currentMember = null;
-
-                       if (type.StartDirectives.Count > 0)
-                               GenerateDirectives (type.StartDirectives);
-                       foreach (CodeCommentStatement statement in type.Comments)
-                               GenerateCommentStatement (statement);
-
-                       if (type.LinePragma != null)
-                               GenerateLinePragmaStart (type.LinePragma);
-
-                       GenerateTypeStart (type);
-
-                       CodeTypeMember[] members = new CodeTypeMember[type.Members.Count];
-                       type.Members.CopyTo (members, 0);
-
-                       if (!Options.VerbatimOrder)
-                       {
-                               int[] order = new int[members.Length];
-                               for (int n = 0; n < members.Length; n++)
-                                       order[n] = Array.IndexOf (memberTypes, members[n].GetType ()) * members.Length + n;
-
-                               Array.Sort (order, members);
-                       }
-
-                       // WARNING: if anything is missing in the foreach loop and you add it, add the type in
-                       // its corresponding place in CodeTypeMemberComparer class (below)
-
-                       CodeTypeDeclaration subtype = null;
-                       foreach (CodeTypeMember member in members) {
-                               CodeTypeMember prevMember = this.currentMember;
-                               this.currentMember = member;
-
-                               if (prevMember != null && subtype == null) {
-                                       if (prevMember.LinePragma != null)
-                                               GenerateLinePragmaEnd (prevMember.LinePragma);
-                                       if (prevMember.EndDirectives.Count > 0)
-                                               GenerateDirectives (prevMember.EndDirectives);
-                                       if (!Options.VerbatimOrder && prevMember is CodeSnippetTypeMember && !(member is CodeSnippetTypeMember))
-                                               output.WriteLine ();
-                               }
-
-                               if (options.BlankLinesBetweenMembers)
-                                       output.WriteLine ();
-
-                               subtype = member as CodeTypeDeclaration;
-                               if (subtype != null) {
-                                       GenerateType (subtype);
-                                       this.currentType = type;
-                                       continue;
-                               }
-
-                               if (currentMember.StartDirectives.Count > 0)
-                                       GenerateDirectives (currentMember.StartDirectives);
-                               foreach (CodeCommentStatement statement in member.Comments)
-                                       GenerateCommentStatement (statement);
-
-                               if (member.LinePragma != null)
-                                       GenerateLinePragmaStart (member.LinePragma);
-
-                               try {
-                                       member.Accept (visitor);
-                               } catch (NotImplementedException) {
-                                       throw new ArgumentException ("Element type " + member.GetType () + " is not supported.");
-                               }
-                       }
-
-                       // Hack because of previous continue usage
-                       if (currentMember != null && !(currentMember is CodeTypeDeclaration)) {
-                               if (currentMember.LinePragma != null)
-                                       GenerateLinePragmaEnd (currentMember.LinePragma);
-                               if (currentMember.EndDirectives.Count > 0)
-                                       GenerateDirectives (currentMember.EndDirectives);
-                               if (!Options.VerbatimOrder && currentMember is CodeSnippetTypeMember)
-                                       output.WriteLine ();
-                       }
-
-                       this.currentType = type;
-                       GenerateTypeEnd (type);
-
-                       if (type.LinePragma != null)
-                               GenerateLinePragmaEnd (type.LinePragma);
-
-                       if (type.EndDirectives.Count > 0)
-                               GenerateDirectives (type.EndDirectives);
-               }
-
-               protected abstract string GetTypeOutput (CodeTypeReference type);
-
-               string ICodeGenerator.GetTypeOutput (CodeTypeReference type)
-               {
-                       return GetTypeOutput (type);
-               }
-
-               protected abstract bool IsValidIdentifier (string value);
-
-               bool ICodeGenerator.IsValidIdentifier (string value)
-               {
-                       return IsValidIdentifier (value);
-               }
-
-               public static bool IsValidLanguageIndependentIdentifier (string value)
-               {
-                       if (value == null)
-                               return false;
-                       if (value.Equals (string.Empty))
-                               return false;
-
-                       switch (char.GetUnicodeCategory (value[0])) {
-                       case UnicodeCategory.LetterNumber:
-                       case UnicodeCategory.LowercaseLetter:
-                       case UnicodeCategory.TitlecaseLetter:
-                       case UnicodeCategory.UppercaseLetter:
-                       case UnicodeCategory.OtherLetter:
-                       case UnicodeCategory.ModifierLetter:
-                       case UnicodeCategory.ConnectorPunctuation:
-                               break;
-                       default:
-                               return false;
-                       }
-
-                       for (int x = 1; x < value.Length; ++x) {
-                               switch (char.GetUnicodeCategory (value[x])) {
-                               case UnicodeCategory.LetterNumber:
-                               case UnicodeCategory.LowercaseLetter:
-                               case UnicodeCategory.TitlecaseLetter:
-                               case UnicodeCategory.UppercaseLetter:
-                               case UnicodeCategory.OtherLetter:
-                               case UnicodeCategory.ModifierLetter:
-                               case UnicodeCategory.ConnectorPunctuation:
-                               case UnicodeCategory.DecimalDigitNumber:
-                               case UnicodeCategory.NonSpacingMark:
-                               case UnicodeCategory.SpacingCombiningMark:
-                               case UnicodeCategory.Format:
-                                       break;
-                               default:
-                                       return false;
-                               }
-                       }
-
-                       return true;
-               }
-
-               protected abstract bool Supports (GeneratorSupport supports);
-
-               bool ICodeGenerator.Supports (GeneratorSupport value)
-               {
-                       return Supports (value);
-               }
-
-               protected virtual void ValidateIdentifier (string value)
-               {
-                       if (!(IsValidIdentifier (value)))
-                               throw new ArgumentException ("Identifier is invalid", "value");
-               }
-
-               [MonoTODO]
-               public static void ValidateIdentifiers (CodeObject e)
-               {
-                       throw new NotImplementedException();
-               }
-
-               void ICodeGenerator.ValidateIdentifier (string value)
-               {
-                       ValidateIdentifier (value);
-               }
-
-               // The position in the array determines the order in which those
-               // kind of CodeTypeMembers are generated. Less is more ;-)
-               static readonly Type [] memberTypes = { typeof (CodeMemberField),
-                                               typeof (CodeSnippetTypeMember),
-                                               typeof (CodeTypeConstructor),
-                                               typeof (CodeConstructor),
-                                               typeof (CodeMemberProperty),
-                                               typeof (CodeMemberEvent),
-                                               typeof (CodeMemberMethod),
-                                               typeof (CodeTypeDeclaration),
-                                               typeof (CodeEntryPointMethod)
-                                       };
-
-               protected virtual void GenerateDirectives (CodeDirectiveCollection directives)
-               {
-               }
-
-               internal class Visitor : ICodeDomVisitor {
-                       CodeGenerator g;
-
-                       public Visitor (CodeGenerator generator)
-                       {
-                               this.g = generator;
-                       }
-
-                       // CodeExpression
-                               
-                       public void Visit (CodeArgumentReferenceExpression o)
-                       {
-                               g.GenerateArgumentReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeArrayCreateExpression o)
-                       {
-                               g.GenerateArrayCreateExpression (o);
-                       }
-       
-                       public void Visit (CodeArrayIndexerExpression o)
-                       {
-                               g.GenerateArrayIndexerExpression (o);
-                       }
-       
-                       public void Visit (CodeBaseReferenceExpression o)
-                       {
-                               g.GenerateBaseReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeBinaryOperatorExpression o)
-                       {
-                               g.GenerateBinaryOperatorExpression (o);
-                       }
-       
-                       public void Visit (CodeCastExpression o)
-                       {
-                               g.GenerateCastExpression (o);
-                       }
-       
-                       public void Visit (CodeDefaultValueExpression o)
-                       {
-                               g.GenerateDefaultValueExpression (o);
-                       }
-       
-                       public void Visit (CodeDelegateCreateExpression o)
-                       {
-                               g.GenerateDelegateCreateExpression (o);
-                       }
-       
-                       public void Visit (CodeDelegateInvokeExpression o)
-                       {
-                               g.GenerateDelegateInvokeExpression (o);
-                       }
-       
-                       public void Visit (CodeDirectionExpression o)
-                       {
-                               g.GenerateDirectionExpression (o);
-                       }
-       
-                       public void Visit (CodeEventReferenceExpression o)
-                       {
-                               g.GenerateEventReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeFieldReferenceExpression o)
-                       {
-                               g.GenerateFieldReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeIndexerExpression o)
-                       {
-                               g.GenerateIndexerExpression (o);
-                       }
-       
-                       public void Visit (CodeMethodInvokeExpression o)
-                       {
-                               g.GenerateMethodInvokeExpression (o);
-                       }
-       
-                       public void Visit (CodeMethodReferenceExpression o)
-                       {
-                               g.GenerateMethodReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeObjectCreateExpression o)
-                       {
-                               g.GenerateObjectCreateExpression (o);
-                       }
-       
-                       public void Visit (CodeParameterDeclarationExpression o)
-                       {
-                               g.GenerateParameterDeclarationExpression (o);
-                       }
-       
-                       public void Visit (CodePrimitiveExpression o)
-                       {
-                               g.GeneratePrimitiveExpression (o);
-                       }
-       
-                       public void Visit (CodePropertyReferenceExpression o)
-                       {
-                               g.GeneratePropertyReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodePropertySetValueReferenceExpression o)
-                       {
-                               g.GeneratePropertySetValueReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeSnippetExpression o)
-                       {
-                               g.GenerateSnippetExpression (o);
-                       }
-       
-                       public void Visit (CodeThisReferenceExpression o)
-                       {
-                               g.GenerateThisReferenceExpression (o);
-                       }
-       
-                       public void Visit (CodeTypeOfExpression o)
-                       {
-                               g.GenerateTypeOfExpression (o);
-                       }
-       
-                       public void Visit (CodeTypeReferenceExpression o)
-                       {
-                               g.GenerateTypeReferenceExpression (o);
-                       }
-                       
-                       public void Visit (CodeVariableReferenceExpression o)
-                       {
-                               g.GenerateVariableReferenceExpression (o);
-                       }
-                       
-                       // CodeStatement
-
-                       public void Visit (CodeAssignStatement o)
-                       {
-                               g.GenerateAssignStatement (o);
-                       }
-
-                       public void Visit (CodeAttachEventStatement o)
-                       {
-                               g.GenerateAttachEventStatement (o);
-                       }
-
-                       public void Visit (CodeCommentStatement o)
-                       {
-                               g.GenerateCommentStatement (o);
-                       }
-
-                       public void Visit (CodeConditionStatement o)
-                       {
-                               g.GenerateConditionStatement (o);
-                       }
-
-                       public void Visit (CodeExpressionStatement o)
-                       {
-                               g.GenerateExpressionStatement (o);
-                       }
-
-                       public void Visit (CodeGotoStatement o)
-                       {
-                               g.GenerateGotoStatement (o);
-                       }
-
-                       public void Visit (CodeIterationStatement o)
-                       {
-                               g.GenerateIterationStatement (o);
-                       }
-
-                       public void Visit (CodeLabeledStatement o)
-                       {
-                               g.GenerateLabeledStatement (o);
-                       }
-
-                       public void Visit (CodeMethodReturnStatement o)
-                       {
-                               g.GenerateMethodReturnStatement (o);
-                       }
-
-                       public void Visit (CodeRemoveEventStatement o)
-                       {
-                               g.GenerateRemoveEventStatement (o);
-                       }
-
-                       public void Visit (CodeThrowExceptionStatement o)
-                       {
-                               g.GenerateThrowExceptionStatement (o);
-                       }
-
-                       public void Visit (CodeTryCatchFinallyStatement o)
-                       {
-                               g.GenerateTryCatchFinallyStatement (o);
-                       }
-
-                       public void Visit (CodeVariableDeclarationStatement o)
-                       {
-                               g.GenerateVariableDeclarationStatement (o);
-                       }
-               
-                       // CodeTypeMember
-                       
-                       public void Visit (CodeConstructor o)
-                       {
-                               g.GenerateConstructor (o, g.CurrentClass);
-                       }
-                       
-                       public void Visit (CodeEntryPointMethod o)
-                       {
-                               g.GenerateEntryPointMethod (o, g.CurrentClass);
-                       }
-       
-                       public void Visit (CodeMemberEvent o)
-                       {
-                               g.GenerateEvent (o, g.CurrentClass);
-                       }
-       
-                       public void Visit (CodeMemberField o)
-                       {
-                               g.GenerateField (o);
-                       }
-                       
-                       public void Visit (CodeMemberMethod o)
-                       {
-                               g.GenerateMethod (o, g.CurrentClass);
-                       }
-       
-                       public void Visit (CodeMemberProperty o)
-                       {
-                               g.GenerateProperty (o, g.CurrentClass);         
-                       }
-       
-                       public void Visit (CodeSnippetTypeMember o)
-                       {
-                               var indent = g.Indent;
-                               g.Indent = 0;
-                               g.GenerateSnippetMember (o);
-
-                               if (g.Options.VerbatimOrder)
-                                       g.Output.WriteLine ();
-
-                               g.Indent = indent;
-                       }
-       
-                       public void Visit (CodeTypeConstructor o)
-                       {
-                               g.GenerateTypeConstructor (o);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/CodeGeneratorOptions.cs b/mcs/class/System/System.CodeDom.Compiler/CodeGeneratorOptions.cs
deleted file mode 100644 (file)
index 82fa7c4..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// System.CodeDom.Compiler CodeGeneratorOptions class
-//
-// Authors:
-//     Daniel Stodden (stodden@in.tum.de)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Collections.Specialized;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-namespace System.CodeDom.Compiler {
-
-       [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
-       public class CodeGeneratorOptions {
-
-               private IDictionary properties;
-               
-               //
-               // Constructors
-               //
-               public CodeGeneratorOptions()
-               {
-                       properties = new ListDictionary();
-               }
-
-               //
-               // Properties
-               //
-
-               /// <summary>
-               /// Whether to insert blank lines between individual members.
-               /// Default is true.
-               /// </summary>
-               public bool BlankLinesBetweenMembers {
-                       get {
-                               object o = properties["BlankLinesBetweenMembers"];
-                               return ((o == null) ? true : (bool) o);
-                       }
-                       set {
-                               properties["BlankLinesBetweenMembers"] = value;
-                       }
-               }
-
-               /// <summary>
-               /// "Block" puts braces on the same line as the associated statement or declaration.
-               /// "C" puts braces on the following line.
-               /// Default is "C"
-               /// </summary>
-               public string BracingStyle {
-                       get {
-                               object o = properties["BracingStyle"];
-                               return ((o == null) ? "Block" : (string) o);
-                       }
-                       set {
-                               properties["BracingStyle"] = value;
-                       }
-               }
-
-               /// <summary>
-               /// Whether to start <code>else</code>,
-               /// <code>catch</code>, or <code>finally</code>
-               /// blocks on the same line as the previous block.
-               /// Default is false.
-               /// </summary>
-               public bool ElseOnClosing {
-                       get {
-                               object o = properties["ElseOnClosing"];
-                               return ((o == null) ? false : (bool) o);
-                       }
-                       set {
-                               properties["ElseOnClosing"] = value;
-                       }
-               }
-
-               /// <summary>
-               /// The string used for individual indentation levels. Default is four spaces.
-               /// </summary>
-               public string IndentString {
-                       get {
-                               object o = properties["IndentString"];
-                               return ((o == null) ? "    " : (string) o);
-                       }
-                       set {
-                               properties["IndentString"] = value;
-                       }
-               }
-
-               public Object this[string index] {
-                       get {
-                               return properties[index];
-                       }
-                       set {
-                               properties[index] = value;
-                       }
-               }
-
-               [ComVisible (false)]
-               public bool VerbatimOrder {
-                       get {
-                               object o = properties["VerbatimOrder"];
-                               return ((o == null) ? false : (bool) o);
-                       }
-                       set {
-                               properties["VerbatimOrder"] = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/CompilerError.cs b/mcs/class/System/System.CodeDom.Compiler/CompilerError.cs
deleted file mode 100644 (file)
index 1bab10f..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// System.CodeDom.Compiler.CompilerError
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2002 Ximian, Inc (http://www.ximian.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Security.Permissions;
-
-namespace System.CodeDom.Compiler {
-
-       [Serializable]
-       public class CompilerError {
-               string fileName;
-               int line;
-               int column;
-               string errorNumber;
-               string errorText;
-               bool isWarning = false;
-
-               public CompilerError () :
-                       this (String.Empty, 0, 0, String.Empty, String.Empty)
-               {
-               }
-
-               public CompilerError (string fileName, int line, int column, string errorNumber, string errorText)
-               {
-                       this.fileName = fileName;
-                       this.line = line;
-                       this.column = column;
-                       this.errorNumber = errorNumber;
-                       this.errorText = errorText;
-               }
-
-               public override string ToString ()
-               {
-                       string type = isWarning ? "warning" : "error";
-                       return String.Format (System.Globalization.CultureInfo.InvariantCulture,
-                                       "{0}({1},{2}) : {3} {4}: {5}", fileName, line, column, type,
-                                       errorNumber, errorText);
-               }
-
-               public int Line
-               {
-                       get { return line; }
-                       set { line = value; }
-               }
-
-               public int Column
-               {
-                       get { return column; }
-                       set { column = value; }
-               }
-
-               public string ErrorNumber
-               {
-                       get { return errorNumber; }
-                       set { errorNumber = value; }
-               }
-
-               public string ErrorText
-               {
-                       get { return errorText; }
-                       set { errorText = value; }
-               }
-
-               public bool IsWarning
-               {
-                       get { return isWarning; }
-                       set { isWarning = value; }
-               }
-
-               public string FileName
-               {
-                       get { return fileName; }
-                       set { fileName = value; }
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom.Compiler/CompilerErrorCollection.cs b/mcs/class/System/System.CodeDom.Compiler/CompilerErrorCollection.cs
deleted file mode 100644 (file)
index 19005db..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// System.CodeDom.Compiler.CompilerErrorCollection.cs
-//
-// Authors:
-//   Daniel Stodden (stodden@in.tum.de)
-//   Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2002 Ximian, Inc. (http://www.ximian.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Security.Permissions;
-
-namespace System.CodeDom.Compiler {
-
-       [Serializable]
-       public class CompilerErrorCollection : CollectionBase
-       {
-               public CompilerErrorCollection ()
-               {
-               }
-
-               public CompilerErrorCollection (CompilerErrorCollection value)
-               {
-                       InnerList.AddRange(value.InnerList);
-               }
-
-               public CompilerErrorCollection (CompilerError[] value)
-               {
-                       InnerList.AddRange(value);
-               }
-
-               public int Add (CompilerError value)
-               {
-                       return InnerList.Add(value);
-               }
-
-               public void AddRange (CompilerError[] value)
-               {
-                       InnerList.AddRange(value);
-               }
-
-               public void AddRange (CompilerErrorCollection value)
-               {
-                       InnerList.AddRange(value.InnerList);
-               }
-
-               public bool Contains (CompilerError value)
-               {
-                       return InnerList.Contains(value);
-               }
-
-               public void CopyTo (CompilerError[] array, int index)
-               {
-                       InnerList.CopyTo(array,index);
-               }
-
-               public int IndexOf (CompilerError value)
-               {
-                       return InnerList.IndexOf(value);
-               }
-
-               public void Insert (int index, CompilerError value)
-               {
-                       InnerList.Insert(index,value);
-               }
-
-               public void Remove (CompilerError value)
-               {
-                       InnerList.Remove(value);
-               }
-
-               public CompilerError this [int index] {
-                       get { return (CompilerError) InnerList[index]; }
-                       set { InnerList[index]=value; }
-               }
-
-               public bool HasErrors {
-                       get {
-                               foreach (CompilerError error in InnerList)
-                                       if (!error.IsWarning) return true;
-                               return false;
-                       }
-               }
-
-               public bool HasWarnings {
-                       get {
-                               foreach (CompilerError error in InnerList)
-                                       if (error.IsWarning) return true;
-                               return false;
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom.Compiler/CompilerParameters.cs b/mcs/class/System/System.CodeDom.Compiler/CompilerParameters.cs
deleted file mode 100644 (file)
index 1816d21..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-//
-// System.CodeDom.Compiler.CompilerParameters.cs
-//
-// Authors:
-//   Daniel Stodden (stodden@in.tum.de)
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections.Specialized;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-using System.Security.Policy;
-
-namespace System.CodeDom.Compiler {
-
-       [Serializable]
-       [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
-       [PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-       public class CompilerParameters {
-
-               private string compilerOptions;
-               private Evidence evidence;
-               private bool generateExecutable = false;
-               private bool generateInMemory = false;
-               private bool includeDebugInformation = false;
-               private string mainClass;
-               private string outputAssembly;
-               private StringCollection referencedAssemblies;
-               private TempFileCollection tempFiles;
-               private bool treatWarningsAsErrors = false;
-               private IntPtr userToken = IntPtr.Zero;
-               private int warningLevel = -1;
-               private string win32Resource;
-               private StringCollection embedded_resources;
-               private StringCollection linked_resources;
-
-               //
-               // Constructors
-               //
-               public CompilerParameters()
-               {
-               }
-               
-               public CompilerParameters (string[] assemblyNames)
-               {
-                       referencedAssemblies = new StringCollection();
-                       referencedAssemblies.AddRange (assemblyNames);
-               }
-
-               public CompilerParameters (string[] assemblyNames, string output)
-               {
-                       referencedAssemblies = new StringCollection();
-                       referencedAssemblies.AddRange (assemblyNames);
-                       outputAssembly = output;
-               }
-
-               public CompilerParameters (string[] assemblyNames, string output, bool includeDebugInfo)
-               {
-                       referencedAssemblies = new StringCollection();
-                       referencedAssemblies.AddRange (assemblyNames);
-                       outputAssembly = output;
-                       includeDebugInformation = includeDebugInfo;
-               }
-
-               //
-               // Properties
-               //
-               public string CompilerOptions {
-                       get {
-                               return compilerOptions;
-                       }
-                       set {
-                               compilerOptions = value;
-                       }
-               }
-
-               [Obsolete]
-               public Evidence Evidence {
-                       get { return evidence; }
-                       [SecurityPermission (SecurityAction.Demand, ControlEvidence = true)]
-                       set { evidence = value; }
-               }
-
-               public bool GenerateExecutable {
-                       get {
-                               return generateExecutable;
-                       }
-                       set {
-                               generateExecutable = value;
-                       }
-               }
-
-               public bool GenerateInMemory {
-                       get {
-                               return generateInMemory;
-                       }
-                       set {
-                               generateInMemory = value;
-                       }
-               }
-               
-               public bool IncludeDebugInformation {
-                       get {
-                               return includeDebugInformation;
-                       }
-                       set {
-                               includeDebugInformation = value;
-                       }
-               }
-
-               public string MainClass {
-                       get {
-                               return mainClass;
-                       }
-                       set {
-                               mainClass = value;
-                       }
-               }
-
-               public string OutputAssembly {
-                       get {
-                               return outputAssembly;
-                       }
-                       set {
-                               outputAssembly = value;
-                       }
-               }
-
-               public StringCollection ReferencedAssemblies {
-                       get {
-                               if (referencedAssemblies == null)
-                                       referencedAssemblies = new StringCollection ();
-
-                               return referencedAssemblies;
-                       }
-               }
-
-               public TempFileCollection TempFiles {
-                       get {
-                               if (tempFiles == null)
-                                       tempFiles = new TempFileCollection ();
-                               return tempFiles;
-                       }
-                       set {
-                               tempFiles = value;
-                       }
-               }
-
-               public bool TreatWarningsAsErrors {
-                       get {
-                               return treatWarningsAsErrors;
-                       }
-                       set {
-                               treatWarningsAsErrors = value;
-                       }
-               }
-
-               public IntPtr UserToken {
-                       get {
-                               return userToken;
-                       }
-                       set {
-                               userToken = value;
-                       }
-               }
-
-               public int WarningLevel {
-                       get {
-                               return warningLevel;
-                       }
-                       set {
-                               warningLevel = value;
-                       }
-               }
-               
-               public string Win32Resource {
-                       get {
-                               return win32Resource;
-                       }
-                       set {
-                               win32Resource = value;
-                       }
-               }
-               [ComVisible (false)]
-               public StringCollection EmbeddedResources {
-                       get {
-                               if (embedded_resources == null)
-                                       embedded_resources = new StringCollection ();
-                               return embedded_resources;
-                       }
-               }
-
-               [ComVisible (false)]
-               public StringCollection LinkedResources {
-                       get {
-                               if (linked_resources == null)
-                                       linked_resources = new StringCollection ();
-                               return linked_resources;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/GeneratedCodeAttribute.cs b/mcs/class/System/System.CodeDom.Compiler/GeneratedCodeAttribute.cs
deleted file mode 100644 (file)
index 601bd7c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.CodeDom.Compiler.GeneratedCodeAttribute class
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom.Compiler {
-
-       [AttributeUsage (AttributeTargets.All, Inherited = false, AllowMultiple = false)]
-       public sealed class GeneratedCodeAttribute : Attribute {
-
-               private string tool;
-               private string version;
-
-
-               public GeneratedCodeAttribute (string tool, string version)
-               {
-                       this.tool = tool;
-                       this.version = version;
-               }
-
-
-               public string Tool {
-                       get { return tool; }
-               }
-
-               public string Version {
-                       get { return version; }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/GeneratorSupport.cs b/mcs/class/System/System.CodeDom.Compiler/GeneratorSupport.cs
deleted file mode 100644 (file)
index e8ba013..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// System.CodeDom.Compiler GeneratorSupport Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom.Compiler
-{
-       [Flags]
-       [Serializable]
-       public enum GeneratorSupport {
-               ArraysOfArrays = 1,
-               EntryPointMethod = 1 << 1,
-               GotoStatements = 1 << 2,
-               MultidimensionalArrays = 1 << 3,
-               StaticConstructors = 1 << 4,
-               TryCatchStatements = 1 << 5,
-               ReturnTypeAttributes = 1 << 6,
-               DeclareValueTypes = 1 << 7,
-               DeclareEnums = 1 << 8,
-               DeclareDelegates = 1 << 9,
-               DeclareInterfaces = 1 << 10,
-               DeclareEvents = 1 << 11,
-               AssemblyAttributes = 1 << 12,
-               ParameterAttributes = 1 << 13,
-               ReferenceParameters = 1 << 14,
-               ChainedConstructorArguments = 1 << 15,
-               NestedTypes = 1 << 16,
-               MultipleInterfaceMembers = 1 << 17,
-               PublicStaticMembers = 1 << 18,
-               ComplexExpressions = 1 << 19,
-               Win32Resources = 1 << 20,
-               Resources = 1 << 21,
-               PartialTypes = 1 << 22,
-               GenericTypeReference = 1 << 23,
-               GenericTypeDeclaration = 1 << 24,
-               DeclareIndexerProperties = 1 << 25,
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom.Compiler/ICodeCompiler.cs b/mcs/class/System/System.CodeDom.Compiler/ICodeCompiler.cs
deleted file mode 100644 (file)
index 3570c50..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.CodeDom.Compiler ICodeCompiler Interface
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom.Compiler
-{
-       public interface ICodeCompiler
-       {
-               CompilerResults CompileAssemblyFromDom( CompilerParameters options,
-                                                       CodeCompileUnit compilationUnit );
-
-               CompilerResults CompileAssemblyFromDomBatch( CompilerParameters options,
-                                                            CodeCompileUnit[] batch );
-
-               CompilerResults CompileAssemblyFromFile( CompilerParameters options,
-                                                        string fileName );
-
-               CompilerResults CompileAssemblyFromFileBatch( CompilerParameters options,
-                                                             string[] batch );
-
-               CompilerResults CompileAssemblyFromSource( CompilerParameters options,
-                                                          string source );
-
-               CompilerResults CompileAssemblyFromSourceBatch( CompilerParameters options,
-                                                               string[] batch );
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/ICodeGenerator.cs b/mcs/class/System/System.CodeDom.Compiler/ICodeGenerator.cs
deleted file mode 100644 (file)
index b3e2813..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// System.CodeDom.Compiler ICodeGenerator Interface
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom.Compiler
-{
-       using System.CodeDom;
-       using System.IO;
-
-       public interface ICodeGenerator
-       {
-               //
-               // Methods
-               //
-               string CreateEscapedIdentifier( string value );
-
-               string CreateValidIdentifier( string value );
-
-               void GenerateCodeFromCompileUnit( CodeCompileUnit compileUnit,
-                                                 TextWriter output,
-                                                 CodeGeneratorOptions options );
-
-               void GenerateCodeFromExpression( CodeExpression expression,
-                                                TextWriter output, 
-                                                CodeGeneratorOptions options );
-
-               void GenerateCodeFromNamespace( CodeNamespace ns,
-                                               TextWriter output, 
-                                               CodeGeneratorOptions options );
-
-               void GenerateCodeFromStatement( CodeStatement statement,
-                                               TextWriter output, 
-                                               CodeGeneratorOptions options );
-
-               void GenerateCodeFromType( CodeTypeDeclaration typeDeclaration,
-                                          TextWriter output,
-                                          CodeGeneratorOptions options );
-
-               string GetTypeOutput( CodeTypeReference type );
-
-               bool IsValidIdentifier( string value );
-
-               bool Supports( GeneratorSupport supports );
-               void ValidateIdentifier( string value );
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/ICodeParser.cs b/mcs/class/System/System.CodeDom.Compiler/ICodeParser.cs
deleted file mode 100644 (file)
index 3fc54c7..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.CodeDom.Compiler ICodeParser Interface
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom.Compiler
-{
-       using System.CodeDom;
-       using System.IO;
-
-       public interface ICodeParser
-       {
-               CodeCompileUnit Parse( TextReader codeStream );
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/IndentedTextWriter.cs b/mcs/class/System/System.CodeDom.Compiler/IndentedTextWriter.cs
deleted file mode 100644 (file)
index 239d49b..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-//
-// System.CodeDom.Compiler IndentedTextWriter class
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.IO;
-using System.Security.Permissions;
-using System.Text;
-
-namespace System.CodeDom.Compiler {
-       
-       [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
-       [PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-       public class IndentedTextWriter
-               : TextWriter
-       {
-               private TextWriter writer;
-               private string tabString;
-               private int indent;
-               private bool newline;
-
-               //
-               // Constructors
-               //
-               public IndentedTextWriter( TextWriter writer )
-               {
-                       this.writer = writer;
-                       this.tabString = DefaultTabString;
-                       newline = true;
-               }
-
-               public IndentedTextWriter( TextWriter writer, string tabString )
-               {
-                       this.writer = writer;
-                       this.tabString = tabString;
-                       newline = true;
-               }
-
-               
-               //
-               // Fields
-               //
-               public const string DefaultTabString = "    ";
-
-               //
-               // Properties
-               //
-               public override Encoding Encoding {
-                       get {
-                               return writer.Encoding;
-                       }
-               }
-
-               public int Indent {
-                       get {
-                               return indent;
-                       }
-                       set {
-                               if (value < 0) {
-                                       value = 0;
-                               }
-                               indent = value;
-                       }
-               }
-
-               public TextWriter InnerWriter {
-                       get {
-                               return writer;
-                       }
-               }
-
-               public override string NewLine {
-                       get {
-                               return writer.NewLine;
-                       }
-                       set {
-                               writer.NewLine = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public override void Close()
-               {
-                       writer.Close();
-               }
-
-               public override void Flush()
-               {
-                       writer.Flush();
-               }
-
-               public override void Write( bool value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( char value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-               
-               public override void Write( char[] value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( double value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( int value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( long value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( object value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( float value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( string value )
-               {
-                       OutputTabs();
-                       writer.Write( value );
-               }
-
-               public override void Write( string format, object arg )
-               {
-                       OutputTabs();
-                       writer.Write( format, arg );
-               }
-
-               public override void Write( string format, params object[] args )
-               {
-                       OutputTabs();
-                       writer.Write( format, args );
-               }
-
-               public override void Write( char[] buffer, int index, int count )
-               {
-                       OutputTabs();
-                       writer.Write( buffer, index, count );
-               }
-               
-               public override void Write( string format, object arg0, object arg1 )
-               {
-                       OutputTabs();
-                       writer.Write( format, arg0, arg1 );
-               }
-
-               
-               public override void WriteLine()
-               {
-                       OutputTabs();
-                       writer.WriteLine();
-                       newline = true;
-               }
-
-               public override void WriteLine( bool value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( char value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( char[] value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( double value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( int value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( long value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( object value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( float value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( string value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               [CLSCompliant(false)]
-               public override void WriteLine( uint value )
-               {
-                       OutputTabs();
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-               public override void WriteLine( string format, object arg )
-               {
-                       OutputTabs();
-                       writer.WriteLine( format, arg );
-                       newline = true;
-               }
-
-               public override void WriteLine( string format, params object[] args )
-               {
-                       OutputTabs();
-                       writer.WriteLine( format, args );
-                       newline = true;
-               }
-
-               public override void WriteLine( char[] buffer, int index, int count )
-               {
-                       OutputTabs();
-                       writer.WriteLine( buffer, index, count );
-                       newline = true;
-               }
-
-               public override void WriteLine( string format, object arg0, object arg1 )
-               {
-                       OutputTabs();
-                       writer.WriteLine( format, arg0, arg1 );
-                       newline = true;
-               }
-
-
-               public void WriteLineNoTabs( string value )
-               {
-                       writer.WriteLine( value );
-                       newline = true;
-               }
-
-
-               protected virtual void OutputTabs()
-               {
-                       if ( newline ) {
-                               for ( int i = 0; i < indent; ++i )
-                                       writer.Write( tabString );
-                               newline = false;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom.Compiler/LanguageOptions.cs b/mcs/class/System/System.CodeDom.Compiler/LanguageOptions.cs
deleted file mode 100644 (file)
index c27d056..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.CodeDom.Compiler LanguageOptions Enum implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom.Compiler
-{
-       [Flags]
-       [Serializable]  
-       public enum LanguageOptions {
-               None = 0,
-               CaseInsensitive = 1
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/ChangeLog b/mcs/class/System/System.CodeDom/ChangeLog
deleted file mode 100644 (file)
index 3320b3b..0000000
+++ /dev/null
@@ -1,742 +0,0 @@
-2009-10-22 Lluis Sanchez Gual <lluis@novell.com>
-
-       * CodeNamespaceImportCollection.cs: Properly update the internal
-       keys hashtable when there are changes in the items.
-
-2009-09-30 Gonzalo Paniagua Javier <gonzalo@novell.com>
-
-       * CodeNamespace.cs:
-       * CodeTypeReference.cs:
-       * CodeMemberMethod.cs:
-       * CodeCompileUnit.cs:
-       * CodeNamespaceImportCollection.cs:
-       * CodeTypeDeclaration.cs: renamed/added fields so that we're
-       compatible with MS serialization.
-
-2009-08-13  Marek Habersack  <mhabersack@novell.com>
-
-       * CodeTypeReference.cs: generic types specialized on arrays must
-       not be treated as array declarations. Fixes bug #523341
-
-2008-02-10  Juraj Skripsky  <js@hotfeet.ch>
-
-       * CodeObject.cs: Add empty Visit method implementation.
-       
-       * CodeArgumentReferenceExpression.cs, CodeArrayCreateExpression.cs,
-       CodeArrayIndexerExpression.cs, CodeAssignStatement.cs,
-       CodeAttachEventStatement.cs, CodeBaseReferenceExpression.cs,
-       CodeBinaryOperatorExpression.cs, CodeCastExpression.cs,
-       CodeCommentStatement.cs, CodeConditionStatement.cs,
-       CodeConstructor.cs, CodeDefaultValueExpression.cs,
-       CodeDelegateCreateExpression.cs, CodeDelegateInvokeExpression.cs,
-       CodeDirectionExpression.cs, CodeEntryPointMethod.cs,
-       CodeEventReferenceExpression.cs, CodeExpressionStatement.cs,
-       CodeFieldReferenceExpression.cs, CodeGotoStatement.cs,
-       CodeIndexerExpression.cs, CodeIterationStatement.cs,
-       CodeLabeledStatement.cs, CodeMemberEvent.cs,
-       CodeMemberField.cs, CodeMemberMethod.cs,
-       CodeMemberProperty.cs, CodeMethodInvokeExpression.cs,
-       CodeMethodReferenceExpression.cs, CodeMethodReturnStatement.cs,
-       CodeObjectCreateExpression.cs, CodeParameterDeclarationExpression.cs,
-       CodePrimitiveExpression.cs, CodePropertyReferenceExpression.cs,
-       CodePropertySetValueReferenceExpression.cs, CodeRemoveEventStatement.cs, 
-       CodeSnippetExpression.cs, CodeSnippetTypeMember.cs,
-       CodeThisReferenceExpression.cs, CodeThrowExceptionStatement.cs,
-       CodeTryCatchFinallyStatement.cs, CodeTypeConstructor.cs,
-       CodeTypeOfExpression.cs, CodeTypeReferenceExpression.cs,
-       CodeVariableDeclarationStatement.cs, CodeVariableReferenceExpression.cs:
-       Add Visit method implementation.
-
-2007-01-18  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * CodeTypeReference.cs :
-         Support generic type definition in .ctor(Type)
-         Handle generic type in straightforward way in .ctor(Type), no need
-         to do ToString() and Parse().
-         Supply "`n" in .ctor(string,params CodeTypeReference[]).
-
-2006-03-11  Miguel de Icaza  <miguel@novell.com>
-
-       * CodeNamespaceImportCollection.cs: It turns out that a lot of the
-       errors flagged with "!" were just missing explicit interface
-       implementations.  
-
-       Implement.
-
-2005-11-30  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeRemoveEventStatement.cs: Event returns new CodeEventReference
-       if underlying value is null.
-
-2005-11-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeParameterDeclarationExpressionCollection.cs: Use CollectionBase
-       implementation of IList.Remove to handle removal of item from
-       collection.
-       * CodeCatchClauseCollection.cs: Same.
-       * CodeStatementCollection.cs: Same.
-       * CodeAttributeDeclarationCollection.cs: Same.
-       * CodeTypeMemberCollection.cs: Same.
-       * CodeDirectiveCollection.cs: Same.
-       * CodeTypeDeclarationCollection.cs: Same.
-       * CodeNamespaceCollection.cs: Same.
-       * CodeExpressionCollection.cs: Same.
-       * CodeTypeReferenceCollection.cs: Same.
-       * CodeTypeParameterCollection.cs: Same.
-       * CodeCommentStatementCollection.cs: Same.
-       * CodeAttributeArgumentCollection.cs: Same.
-
-2005-11-20  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeEventReferenceExpression.cs: Set eol-style to native.
-       * CodeArgumentReferenceExpression.cs: Set eol-style to native.
-       * CodeParameterDeclarationExpressionCollection.cs: Set eol-style to 
-       native.
-       * CodeRegionMode.cs: Set eol-style to native.
-       * FieldDirection.cs: Set eol-style to native.
-       * CodeChecksumPragma.cs: Set eol-style to native.
-       * CodeCatchClauseCollection.cs: Set eol-style to native.
-       * CodeAttachEventStatement.cs: Set eol-style to native.
-       * CodeSnippetCompileUnit.cs: Set eol-style to native.
-       * CodeNamespace.cs: Set eol-style to native.
-       * CodePropertySetValueReferenceExpression.cs: Set eol-style to native.
-       * CodeTypeReference.cs: Set eol-style to native.
-       * CodeDirectionExpression.cs: Set eol-style to native.
-       * CodeThisReferenceExpression.cs: Set eol-style to native.
-       * CodeSnippetStatement.cs: Set eol-style to native.
-       * CodeMemberMethod.cs: Set eol-style to native.
-       * CodeMemberProperty.cs: Set eol-style to native.
-       * CodeEntryPointMethod.cs: Set eol-style to native.
-       * CodeTypeReferenceOptions.cs: Set eol-style to native.
-       * CodeIndexerExpression.cs: Set eol-style to native.
-       * CodeCatchClause.cs: Set eol-style to native.
-       * CodeStatementCollection.cs: Set eol-style to native.
-       * CodeRegionDirective.cs: Set eol-style to native.
-       * CodeTypeParameter.cs: Set eol-style to native.
-       * CodeIterationStatement.cs: Set eol-style to native.
-       * CodeRemoveEventStatement.cs: Set eol-style to native.
-       * CodeVariableReferenceExpression.cs: Set eol-style to native.
-       * CodeAttributeDeclarationCollection.cs: Set eol-style to native.
-       * CodeTryCatchFinallyStatement.cs: Set eol-style to native.
-       * CodeTypeMemberCollection.cs: Set eol-style to native.
-       * CodeCompileUnit.cs: Set eol-style to native.
-       * CodePrimitiveExpression.cs: Set eol-style to native.
-       * CodeDirectiveCollection.cs: Fixed line endings. Set eol-style to 
-       native.
-       * CodeTypeDeclarationCollection.cs: Set eol-style to native.
-       * CodeNamespaceImportCollection.cs: Set eol-style to native.
-       * CodeNamespaceCollection.cs: Set eol-style to native.
-       * CodeTypeMember.cs: Set eol-style to native.
-       * CodeAttributeDeclaration.cs: Set eol-style to native.
-       * CodeConditionStatement.cs: Set eol-style to native.
-       * CodeExpressionCollection.cs: Set eol-style to native.
-       * CodeTypeReferenceCollection.cs: Set eol-style to native.
-       * CodeSnippetTypeMember.cs: Set eol-style to native.
-       * CodeDelegateCreateExpression.cs: Set eol-style to native.
-       * CodeLinePragma.cs: Set eol-style to native.
-       * CodeMethodReferenceExpression.cs: Set eol-style to native.
-       * CodeVariableDeclarationStatement.cs: Set eol-style to native.
-       * CodeTypeReferenceExpression.cs: Set eol-style to native.
-       * CodeArrayCreateExpression.cs: Set eol-style to native.
-       * CodeFieldReferenceExpression.cs: Set eol-style to native.
-       * CodePropertyReferenceExpression.cs: Set eol-style to native.
-       * CodeTypeDeclaration.cs: Set eol-style to native.
-       * CodeTypeConstructor.cs: Set eol-style to native.
-       * CodeNamespaceImport.cs: Set eol-style to native.
-       * CodeTypeParameterCollection.cs: Use for loop instead of foreach to 
-       add elements in AddRange method. Fixed line endings. Set eol-style to
-       native.
-       * CodeTypeParameterCollection.cs: Set eol-style to native.
-       * CodeExpression.cs: Set eol-style to native.
-       * CodeBinaryOperatorType.cs: Set eol-style to native.
-       * CodeSnippetExpression.cs: Set eol-style to native.
-       * CodeCommentStatementCollection.cs: Set eol-style to native.
-       * CodeMethodReturnStatement.cs: Set eol-style to native.
-       * CodeObject.cs: Set eol-style to native.
-       * CodeParameterDeclarationExpression.cs: Set eol-style to native.
-       * CodeDelegateInvokeExpression.cs: Set eol-style to native.
-       * CodeThrowExceptionStatement.cs: Set eol-style to native.
-       * CodeObjectCreateExpression.cs: Set eol-style to native.
-       * CodeTypeDelegate.cs: Set eol-style to native.
-       * CodeLabeledStatement.cs: Set eol-style to native.
-       * CodeArrayIndexerExpression.cs: Set eol-style to native.
-       * CodeBinaryOperatorExpression.cs: Set eol-style to native.
-       * CodeAttributeArgumentCollection.cs: Set eol-style to native.
-       * MemberAttributes.cs: Set eol-style to native.
-       * CodeExpressionStatement.cs: Set eol-style to native.
-       * CodeConstructor.cs: Set eol-style to native.
-       * CodeTypeOfExpression.cs: Set eol-style to native.
-       * CodeCommentStatement.cs: Set eol-style to native.
-       * CodeGotoStatement.cs: Set eol-style to native.
-       * CodeComment.cs: Set eol-style to native.
-       * CodeStatement.cs: Set eol-style to native.
-       * CodeMemberEvent.cs: Set eol-style to native.
-       * CodeBaseReferenceExpression.cs: Set eol-style to native.
-       * CodeAssignStatement.cs: Set eol-style to native.
-       * CodeCastExpression.cs: Set eol-style to native.
-       * CodeMemberField.cs: Set eol-style to native.
-       * CodeMethodInvokeExpression.cs: Set eol-style to native.
-       * CodeDirective.cs: Set eol-style to native.
-
-2005-11-19  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeCatchClauseCollection.cs: Added null check to AddRange overloads
-       and use for loop to add elements.
-       * CodeAttributeDeclarationCollection.cs: Added null check to AddRange
-       overloads and use for loop to add elements.
-       * CodeTypeMemberCollection.cs: Added null check to AddRange overloads
-       and use for loop to add elements.
-       * CodeTypeDeclarationCollection.cs: Added null check to AddRange
-       overloads and use for loop to add elements.
-       * CodeNamespaceImportCollection.cs: Added null check to Add and perform
-       case-insensitive check on namespace to avoid duplicate namespace 
-       imports. Added null check to AddRange method.
-       * CodeNamespaceCollection.cs: Added null check to AddRange overloads
-       and use for loop to add elements.
-       * CodeCommentStatementCollection.cs: Added null check to AddRange
-       overloads and use for loop to add elements.
-       * CodeAttributeArgumentCollection.cs: Added null check to AddRange
-       overloads and use for loop to add elements.
-       * CodeDirectiveCollection.cs: Added null check to AddRange overloads
-       and use for loop to add elements.
-       * CodeTypeParameterCollection.cs: Added null check to AddRange 
-       overloads and use for loop to add elements.
-
-2005-11-08  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeExpressionCollection.cs: Fixed OutOfMemoryException when
-       passing collection to AddRange method on itself.
-       * CodeTypeReferenceCollection.cs: same.
-       * CodeParameterDeclarationExpressionCollection.cs: same.
-       * CodeStatementCollection.cs: same.
-
-2005-11-04  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeEventReferenceExpression.cs: EventName now returns zero-length
-       string if underlying value is null.
-       * CodeParameterDeclarationExpressionCollection.cs: Fixed AddRange to
-       add each item to collection using Add method to ensure validation
-       is performed.
-       * CodeChecksumPragma.cs: FileName now returns zero-length string
-       if underlying value is null.
-       * CodeSnippetCompileUnit.cs: Value now returns zero-length string if
-       underlying value is null.
-       * CodeNamespace.cs: Name now returns zero-length string if underlying
-       value is null.
-       * CodeSnippetStatement.cs: Value now returns zero-length string if
-       underlying value is null.
-       * CodeMemberMethod.cs: code formatting change.
-       * CodeCatchClause.cs: CatchExceptionType now returns CodeTypeReference
-       instance for System.Exception if underlying value is null. LocalName
-       now returns zero-length string if underlying value is null.
-       * CodeStatementCollection.cs: Fixed AddRange to add each item to
-       collection using Add method to ensure validation is performed. Code
-       formatting changes.
-       * CodeRegionDirective.cs: RegionText now returns zero-length string
-       if underlying value is null.
-       * CodeTypeParameter.cs: Name now returns zero-length string if
-       underlying value is null.
-       * CodeVariableReferenceExpression.cs: VariableName now returns
-       zero-length string if underlying value is null.
-       * CodeDefaultValueExpression.cs: Type now returns CodeTypeReference
-       for void if underlying value is null.
-       * CodeExpressionCollection.cs: Fixed AddRange to add each item to
-       collection using Add method to ensure validation is performed.
-       * CodeSnippetTypeMember.cs: Text now returns zero-length string if
-       underlying value is null.
-       * CodeTypeReferenceCollection.cs: Fixed AddRange to add each item
-       to collection using Add method to ensure validation is performed.
-       * CodeDelegateCreateExpression.cs: DelegateType now returns
-       CodeTypeReference for void if underlying value is null. MethodName
-       now returns zero-length string if underlying value is null.
-       * CodeMethodReferenceExpression.cs: MethodName now returns
-       zero-length string if underlying value is null.
-       * CodeLinePragma.cs: FileName now returns zero-length string if
-       underlying value is null.
-       * CodeTypeReferenceExpression.cs: Type now return CodeTypeReference
-       for void if underlying value is null.
-       * CodeVariableDeclarationStatement.cs: Name now return zero-length
-       string if underlying value is null. Type returns CodeTypeReference
-       for void if underlying value is null.
-       * CodePropertyReferenceExpression.cs: PropertyName now returns
-       zero-length string if underlying value is null.
-       * CodeNamespaceImport.cs: Namespace now returns zero-length string
-       if underlying value is null.
-       * CodeTypeConstructor.cs: Name is fixed to ".cctor" to match MS.NET.
-       * CodeSnippetExpression.cs: Value now returns zero-length string if
-       underlying value is null.
-       * CodeParameterDeclarationExpression.cs: Name now returns zero-length
-       string if underlying value is null. Type now returns CodeTypeReference
-       for void if underlying value is null.
-       * CodeObjectCreateExpression.cs: CreateType now returns 
-       CodeTypeReference for void if underlying value is null.
-       * CodeLabeledStatement.cs: Label returns zero-length string if
-       underlying value is null.
-       * CodeConstructor.cs: Name is fixed to ".ctor" to match MS.NET.
-       * CodeTypeOfExpression.cs: Type returns CodeTypeReference for void
-       if underlying value is null.
-       * CodeGotoStatement.cs: Only throw ArgumentNullException for null or
-       zero-length label on 2.0 profile.
-       * CodeCastExpression.cs: TargetType returns CodeTypeReference for void
-       if underlying value is null.
-       * CodeMethodInvokeExpression.cs: Method returns a default
-       CodeMethodReferenceExpression instance if the underlying value is
-       null.
-
-2005-10-25  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeAttachEventStatement.cs: Fixed extra removal in r52147.
-       * CodeAttributeDeclaration.cs: Make sure AttributeType is updated
-       when Name is set or changed. For constructors taking attribute type,
-       use BaseType of attribute type as name of CodeAttributeDeclaration.
-
-2005-10-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CodeAttributeDeclaration.cs: Fixed extra removal in r52147.
-
-2005-10-24  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeArgumentReferenceExpression.cs: If ParameterName is null, return
-       string.Empty.
-       * CodeArrayCreateExpression.cs: Implement default value in CreateType
-       property.
-       * CodeAttachEventStatement.cs: Implement default value in Event
-       property.
-       * CodeAttributeArgument.cs: Implement default value in Name property.
-       * CodeAttributeDeclaration.cs: Implement default value in Name
-       property.
-
-2005-10-24  Gert Driesen  <drieseng@users.sourceforge.net>
-
-       * CodeTypeReference.cs: Ignore ArrayElementType for determining
-       BaseType if ArrayRank zero or less. Fixes bug #76535.
-
-2005-10-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CodeArgumentReferenceExpression.cs: Added default value for 
-       arameterName.
-       * CodeArrayCreateExpression.cs: Added default value for createType.
-       * CodeAttachEventStatement.cs: Added default value for eventRef.
-       * CodeAttributeArgument.cs: Added default value for name.
-       * CodeAttributeArgumentCollection.cs: Fixed AddRange methods not to
-       throw an exception (as the list was being changed when using an 
-       numerator).
-       * CodeAttributeDeclaration.cs: Added default value for name.
-       * CodeAttributeDeclarationCollection.cs: Fixed AddRange methods not to
-       throw an exception (as the list was being changed when using an 
-       numerator).
-       * CodeCastExpression.cs: Added default value for targetType.
-       * CodeCatchClause.cs: Added default value for catchExceptionType and 
-       ocalName.
-       * CodeCatchClauseCollection.cs: Fixed AddRange methods not to throw an
-       xception (as the list was being changed when using an enumerator).
-       * CodeCommentStatementCollection.cs: Fixed AddRange methods not to 
-       hrow an exception (as the list was being changed when using an 
-       numerator).
-       * CodeDelegateCreateExpression.cs: Added default value for 
-       elegateType and methodName.
-       * CodeEventReferenceExpression.cs: Added default value for eventName.
-       * CodeExpressionCollection.cs: Fixed AddRange methods not to throw an
-       xception (as the list was being changed when using an enumerator).
-       * CodeFieldReferenceExpression.cs: Added default value for fieldName.
-       * CodeMethodInvokeExpression.cs: Added default value for method.
-       * CodeMethodReferenceExpression.cs: Added default value for methodName
-       * CodeNamespace.cs: Added default value for name.
-       * CodeNamespaceCollection.cs: Fixed AddRange methods not to throw an 
-       xception (as the list was being changed when using an enumerator).
-       * CodeNamespaceImport.cs: Added default value for nameSpace.
-       * CodeNamespaceImportCollection.cs: SyncRoot returns null.
-       * CodeObjectCreateExpression.cs: Added default value for createType.
-       * CodeParameterDeclarationExpression.cs: Added default value for name 
-       and type.
-       * CodeParameterDeclarationExpressionCollection.cs: Fixed AddRange 
-       methods not to throw an exception (as the list was being changed when 
-       using an enumerator).
-       * CodePropertyReferenceExpression.cs: Added default value for 
-       propertyName.
-       * CodeRemoveEventStatement.cs: Added default value for eventRef.
-       * CodeSnippetExpression.cs: Added default value for value.
-       * CodeSnippetStatement.cs: Added default value for value.
-       * CodeSnippetTypeMember.cs: Added default value for text.
-       * CodeStatementCollection.cs: Fixed AddRange methods not to throw an 
-       exception (as the list was being changed when using an enumerator).
-       * CodeTypeDeclarationCollection.cs: Fixed AddRange methods not to 
-       throw an exception (as the list was being changed when using an 
-       enumerator).
-       * CodeTypeMemberCollection.cs: Fixed AddRange methods not to throw an
-       exception (as the list was being changed when using an enumerator).
-       * CodeTypeOfExpression.cs: Added default value for type.
-       * CodeTypeReferenceCollection.cs: Fixed AddRange methods not to throw 
-       an exception (as the list was being changed when using an enumerator).
-       * CodeTypeReferenceExpression.cs: Added default value for type.
-       * CodeVariableDeclarationStatement.cs: Added default value for name 
-       and type.
-       * CodeVariableReferenceExpression.cs: Added default value for 
-       variableName.
-
-2005-10-23  Sebastien Pouliot  <sebastien@ximian.com> 
-       * CodeTypeParameterCollection.cs: Added missing Add(string) method.
-
-2005-10-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CodeAttributeDeclaration.cs: Added new 2.0 ctor and AttributeType 
-       property.
-       * CodeDefaultValueExpression.cs: New. Implemented (2.0).
-       * CodeDirectiveCollection.cs: Completed implementation.
-       * CodeGotoStatement.cs: Added default ctor for 2.0.
-       * CodeIndexerExpression.cs: Fixed typo in header.
-       * CodeLinePragma.cs: Added default ctor for 2.0.
-       * CodeRegionMode.cs: Added missing None element.
-       * CodeSnippetCompileUnit.cs: Added default ctor for 2.0.
-       * CodeTypeDeclaration.cs: Added ComVisible(false) on TypeParameters 
-       property.
-       * CodeTypeParameterCollection.cs: Completed implementation.
-
-2005-10-07 Gert Driesen <drieseng@users.sourceforge.net>
-       
-       * CodeTypeReference.cs: Fixed Parse implementation on 1.0 profile.
-       Added MonoTODO's.
-
-2005-10-05 Gert Driesen <drieseng@users.sourceforge.net>
-
-       * CodeTypeReference.cs: Added support for generic type parameters.
-
-2005-10-02 Gert Driesen <drieseng@users.sourceforge.net>
-
-       * CodeTypeReference.cs: Added default ctor for 2.0 profile. Set
-       Options to CodeReferenceOptions.GenericTypeParameter when instance
-       is constructed using ctor taking CodeTypeParameter argument. Modified
-       BaseType property to return BaseType of ArrayElementType if
-       available. Fixed some bugs in array and typeparameter support.
-
-2005-07-24 Gert Driesen <drieseng@users.sourceforge.net>
-
-       * CodeTypeReference.cs: Added internal IsInterface property.
-       * CodeTypeDelegate.cs: System.Delegate is base type, and make sure 
-       ReturnType is initialized.
-
-2005-06-28 Gert Driesen <drieseng@users.sourceforge.net>
-
-       * CodeTypeReference.cs: Also consider null type name as void, throw
-       ArgumentNullException for null type on 2.0 profile.
-
-2005-06-26 Gert Driesen <drieseng@users.sourceforge.net>
-
-       * CodeMemberProperty.cs: Default value of Type is empty 
-       CodeTypeReference.
-
-2005-06-25 Gert Driesen <drieseng@users.sourceforge.net>
-
-       * CodeMemberField.cs: Default value of Type is empty CodeTypeReference.
-
-2004-09-14 Marek Safar <marek.safar@seznam.cz>
-
-       * CodeTypeReference.cs: Fix #65854
-
-2004-09-06 Marek Safar <marek.safar@seznam.cz>
-
-       * CodeCompileUnit.cs,
-       * CodeMemberMethod.cs,
-       * CodeMethodReferenceExpression.cs,
-       * CodeStatement.cs,
-       * CodeTypeDeclaration.cs,
-       * CodeTypeMember.cs,
-       * CodeTypeReference.cs : Implemented NET_2_0.
-
-       * CodeChecksumPragma.cs,
-       * CodeDirective.cs,
-       * CodeDirectiveCollection.cs,
-       * CodeRegionDirective.cs,
-       * CodeRegionMode.cs,
-       * CodeTypeParameter.cs,
-       * CodeTypeParameterCollection.cs,
-       * CodeTypeReferenceOptions.cs : New NET_2_0 files
-
-2004-09-01 Marek Safar <marek.safar@seznam.cz>
-
-       * CodeCatchClause.cs: System.Exception is default type
-        for string constructor.
-
-       * CodeTypeMember.cs: Default member attributes are
-       private and final.
-
-       * CodeTypeReference.cs: Implemented array info extraction
-       from Type.
-
-2004-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * CodeEntryPointMethod.cs: patch by Fawad Halim that makes the entry
-       point method public.
-
-2004-02-04  Jackson Harper <jackson@ximian.com>
-
-       * CodeTypeMember.cs: Name is String.Empty if not set.
-       * CodeComment.cs: Text is String.Empty if not set.
-       
-2003-12-23  Jaroslaw Kowalski <jaak@zd.com.pl>
-
-       * CodeAttributeDeclaration.cs:
-       * CodeDelegateInvokeExpression:
-         -Added "params" keyword to constructors
-
-2003-08-15  Jaroslaw Kowalski <jarek@atm.com.pl>
-
-       * CodeTypeDeclaration.cs:
-
-         - TypeAttributes of CodeTypeDeclaration now defaults to
-           TypeAttributes.Public (same as MS implementation)
-
-2003-04-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * CodeEventReferenceExpression.cs: fixed typo that prevented event
-       name from being set.
-
-2003-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * CodeMemberProperty.cs: fixed HasGet and HasSet to actually generate
-       code for the property.
-       
-2002-10-11  Ravi Pratap  <ravi@ximian.com>
-
-       * CodeMethodInvokeExpression.cs : Fix second constructor so that
-       the last argument is params - that is what the docs say.
-
-2002-09-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
-
-       * CodeBinaryOperatorType.cs:
-       * CodeMemberEvent.cs:
-       * CodeParameterDeclarationExpression.cs:
-       * CodeTypeMember.cs:
-       * CodeTypeReference.cs:
-       * CodeTypeReferenceCollection.cs: misc. fixes
-
-2002-05-28  Daniel Stodden  <stodden@in.tum.de>
-
-       * CodeArrayCreateExpression.cs: typo + comments
-
-       * CodeAttributeArgumentCollection.cs: Add() signature fixed
-
-       * CodeAttributeDeclarationCollection.cs: Add() signature fixed
-
-       * CodeCatchClause.cs: ctor signature fixed
-
-       * CodeCatchClauseCollection.cs: Add() signature fixed
-
-       * CodeCommentStatementCollection.cs: Add() signature fixed
-
-       * CodeConstructor.cs: ctor added
-
-       * CodeExpressionCollection.cs: Populate* events: nullref checks
-       added
-
-       * CodeNamespace.cs: Populate* events: nullref checks added
-
-       * CodeNamespaceCollection.cs: Add() signature fixed
-
-       * CodeParameterDeclarationExpressionCollection.cs: Add() signature
-       fixed
-
-       * CodeStatementCollection.cs: Add() signature fixed, missing
-       overload added
-
-       * CodeTypeConstructor.cs: class name typo :P
-
-       * CodeTypeDeclaration.cs: finally figured out how TypeAttributes
-       work.
-
-       * CodeTypeDeclarationCollection.cs: Add() signature fixed
-
-       * CodeTypeReference.cs: added MonoTODOs. some corrections on array
-       type behavior.
-
-       * CodeTypeReferenceCollection.cs: Add() signature fixed
-
-       * MemberAttributes.cs: just comments
-       
-2002-05-11  Daniel Stodden  <stodden@in.tum.de>
-
-       * CodeAttributeArgumentCollection.cs: inherits CollectionBase
-
-       * CodeAttributeDeclarationCollection.cs: inherits CollectionBase
-
-       * CodeCatchClauseCollection.cs: inherits CollectionBase
-
-       * CodeExpressionCollection.cs: inherits CollectionBase
-
-       * CodeNamespaceImportCollection.cs: not CollectionBase, but
-       matching MS docs
-
-       * CodeParameterDeclarationCollection.cs: inherits CollectionBase
-
-       * CodeStatementCollection.cs: inherits CollectionBase
-
-       * CodeArrayCreateExpression.cs: corrections, completions, whatever
-
-       * CodeAssignStatement.cs: corrections, completions, whatever
-
-       * CodeAttachEventStatement.cs: corrections, completions, whatever
-
-       * CodeAttributeArgument.cs: corrections, completions, whatever
-
-       * CodeAttributeDeclaration.cs: corrections, completions, whatever
-
-       * CodeBaseReferenceExpression.cs: corrections, completions,
-       whatever
-
-       * CodeBinaryOperatorExpression.cs: corrections, completions,
-       whatever
-
-       * CodeCastExpression.cs: corrections, completions, whatever
-
-       * CodeCatchClause.cs: corrections, completions, whatever
-
-       * CodeCommentStatement.cs: corrections, completions, whatever
-
-       * CodeConstructor.cs: corrections, completions, whatever
-
-       * CodeDelegateCreateExpression.cs: corrections, completions,
-       whatever
-
-       * CodeDelegateInvokeExpression.cs: corrections, completions,
-       whatever
-
-       * CodeExpression.cs: corrections, completions, whatever
-
-       * CodeFieldReferenceExpression.cs: corrections, completions,
-       whatever
-
-       * CodeIndexerExpression.cs: corrections, completions, whatever
-
-       * CodeLinePragma.cs: corrections, completions, whatever
-
-       * CodeMemberEvent.cs: corrections, completions, whatever
-
-       * CodeMemberField.cs: corrections, completions, whatever
-
-       * CodeMemberMethod.cs: corrections, completions, whatever
-
-       * CodeMemberProperty.cs: corrections, completions, whatever
-
-       * CodeMethodInvokeExpression.cs: corrections, completions,
-       whatever
-
-       * CodeMethodReturnStatement.cs: corrections, completions, whatever
-
-       * CodeNamespace.cs: corrections, completions, whatever
-
-       * CodeNamespaceImport.cs: corrections, completions, whatever
-
-       * CodeObject.cs: corrections, completions, whatever
-
-       * CodeObjectCreateExpression.cs: corrections, completions,
-       whatever
-
-       * CodeParameterDeclarationExpression.cs: corrections, completions,
-       whatever
-
-       * CodePrimitiveExpression.cs: corrections, completions, whatever
-
-       * CodePropertyReferenceExpression.cs: corrections, completions,
-       whatever
-
-       * CodeStatement.cs: corrections, completions, whatever
-
-       * CodeThisReferenceExpression.cs: corrections, completions,
-       whatever
-
-       * CodeThrowExceptionStatement.cs: corrections, completions,
-       whatever
-
-       * CodeTryCatchFinallyStatement.cs: corrections, completions,
-       whatever
-
-       * CodeTypeDeclaration.cs: corrections, completions, whatever
-
-       * CodeTypeMember.cs: corrections, completions, whatever
-
-       * CodeTypeOfExpression.cs: corrections, completions, whatever
-
-       * CodeTypeReferenceExpression.cs: corrections, completions,
-       whatever
-
-       * CodeVariableDeclarationStatement.cs: corrections, completions,
-       whatever
-
-       * FieldDirection.cs: corrections, completions, whatever
-
-       * CodeArgumentReferenceExpression.cs: added
-
-       * CodeArrayIndexerExpression.cs: added
-
-       * CodeComment.cs: added
-
-       * CodeCommentStatementCollection.cs: added
-
-       * CodeCompileUnit.cs: added
-
-       * CodeConditionStatement.cs: added
-
-       * CodeDirectionExpression.cs: added
-
-       * CodeEntryPointMethod.cs: added
-
-       * CodeEventReferenceExpression.cs: added
-
-       * CodeExpressionStatement.cs: added
-
-       * CodeGotoStatement.cs: added
-
-       * CodeIterationStatement.cs: added
-
-       * CodeLabeledStatement.cs: added
-
-       * CodeMethodReferenceExpression.cs: added
-
-       * CodeNamespaceCollection.cs: added
-
-       * CodePropertySetValueReferenceExpression.cs: added
-
-       * CodeRemoveEventStatement.cs: added
-
-       * CodeSnippetCompileUnit.cs: added
-
-       * CodeSnippetExpression.cs: added
-
-       * CodeSnippetStatement.cs: added
-
-       * CodeSnippetTypeMember.cs: added
-
-       * CodeTypeConstructor.cs: added
-
-       * CodeTypeDeclarationCollection.cs: added
-
-       * CodeTypeDelegate.cs: added
-
-       * CodeTypeMemberCollection.cs: added
-
-       * CodeTypeReference.cs: added
-
-       * CodeTypeReferenceCollection.cs: added
-
-       * CodeVariableReferenceExpression.cs: added
-
-2001-07-15  Sean MacIsaac  <macisaac@ximian.com>
-
-       * MemberAttributes.cs: Added so rest of classes would compile.
-
-       * FieldDirection.cs: Added so rest of classes would compile.
-
-       * CodeTypeMember.cs: Added so rest of classes would compile.
-
-       * CodeTypeDeclaration.cs: Added so rest of classes would compile.
-
-       * CodeObject.cs: Added so rest of classes would compile.
-
-       * CodeBinaryOperatorType.cs: Added so rest of classes would compile.
-
-2001-07-12  Sean MacIsaac  <macisaac@ximian.com>
-       
-       * All files implementing IList: Added IsFixedSize property.
-
-       * All files:  Changed CodeDOM to CodeDom.
diff --git a/mcs/class/System/System.CodeDom/CodeArgumentReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeArgumentReferenceExpression.cs
deleted file mode 100644 (file)
index 9a7a932..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.CodeDom CodeArgumentReferenceExpression Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeArgumentReferenceExpression 
-               : CodeExpression
-       {
-               private string parameterName;
-
-               //
-               // Constructors
-               //
-               public CodeArgumentReferenceExpression()
-               {
-               }
-
-               public CodeArgumentReferenceExpression( string name )
-               {
-                       this.parameterName = name;
-               }
-
-               //
-               // Properties
-               //
-               public string ParameterName {
-                       get {
-                               if (parameterName == null) {
-                                       return string.Empty;
-                               }
-                               return parameterName;
-                       }
-                       set {
-                               parameterName = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeArrayCreateExpression.cs b/mcs/class/System/System.CodeDom/CodeArrayCreateExpression.cs
deleted file mode 100644 (file)
index b713efa..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// System.CodeDom CodeArrayCreateExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeArrayCreateExpression
-               : CodeExpression 
-       {
-               private CodeTypeReference createType;
-               private CodeExpressionCollection initializers;
-               private CodeExpression sizeExpression;
-               private int size;
-               
-               //
-               // Constructors
-               //
-               public CodeArrayCreateExpression ()
-               {
-               }
-
-               public CodeArrayCreateExpression (CodeTypeReference createType, 
-                                                 CodeExpression size )
-               {
-                       this.createType = createType;
-                       this.sizeExpression = size;
-               }
-
-               public CodeArrayCreateExpression (CodeTypeReference createType, 
-                                                 params CodeExpression[] initializers )
-               {
-                       this.createType = createType;
-                       this.Initializers.AddRange( initializers );
-               }
-
-               public CodeArrayCreateExpression (CodeTypeReference createType, 
-                                                 int size)
-               {
-                       this.createType = createType;
-                       this.size = size;
-               }
-
-
-               public CodeArrayCreateExpression (string createType, 
-                                                 CodeExpression size)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.sizeExpression = size;
-               }
-
-               public CodeArrayCreateExpression (string createType, 
-                                                 params CodeExpression[] initializers)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.Initializers.AddRange( initializers );
-               }
-
-               public CodeArrayCreateExpression (string createType, 
-                                                 int size)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.size = size;
-               }
-
-
-               public CodeArrayCreateExpression (Type createType, 
-                                                 CodeExpression size)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.sizeExpression = size;
-               }
-                       
-               public CodeArrayCreateExpression (Type createType, 
-                                                 params CodeExpression[] initializers)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.Initializers.AddRange( initializers );
-               }
-
-               public CodeArrayCreateExpression (Type createType, 
-                                                 int size)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.size = size;
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReference CreateType {
-                       get {
-                               if (createType == null) {
-                                       createType = new CodeTypeReference (typeof (void));
-                               }
-                               return createType;
-                       }
-                       set {
-                               createType = value;
-                       }
-               }
-
-               public CodeExpressionCollection Initializers {
-                       get {
-                               if ( initializers == null )
-                                       initializers = new CodeExpressionCollection();
-                                       
-                               return initializers;
-                       }
-               }
-
-               public CodeExpression SizeExpression {
-                       get {
-                               return sizeExpression;
-                       }
-                       set {
-                               sizeExpression = value;
-                       }
-               }
-
-               public int Size {
-                       get {
-                               return size;
-                       }
-                       set {
-                               size = value;
-                               // NOTE: Setting Size in ms.Net does
-                               // not supersede SizeExpression
-                               // values. Instead, the CodeGenerator
-                               // seems to always prefer
-                               // SizeExpression if set to a value !=
-                               // null.
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom/CodeArrayIndexerExpression.cs b/mcs/class/System/System.CodeDom/CodeArrayIndexerExpression.cs
deleted file mode 100644 (file)
index 08ade4b..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// System.CodeDom CodeArrayIndexerExpression Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeArrayIndexerExpression
-               : CodeExpression 
-       {
-               private CodeExpressionCollection indices;
-               private CodeExpression targetObject;
-
-               //
-               // Constructors
-               //
-               public CodeArrayIndexerExpression()
-               {
-               }
-
-               public CodeArrayIndexerExpression( CodeExpression targetObject, params CodeExpression[] indices )
-               {
-                       this.targetObject = targetObject;
-                       this.Indices.AddRange( indices );
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpressionCollection Indices {
-                       get {
-                               if ( indices == null )
-                                       indices = new CodeExpressionCollection();
-                               return indices;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeAssignStatement.cs b/mcs/class/System/System.CodeDom/CodeAssignStatement.cs
deleted file mode 100644 (file)
index 4392411..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.CodeDom CodeArrayCreateExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeAssignStatement
-               : CodeStatement 
-       {
-               CodeExpression left, right;
-
-               //
-               // Constructors
-               //
-               public CodeAssignStatement ()
-               {
-               }
-
-               public CodeAssignStatement (CodeExpression left, CodeExpression right)
-               {
-                       this.left = left;
-                       this.right = right;
-               }
-               
-               //
-               // Properties
-               //
-               public CodeExpression Left {
-                       get {
-                               return left;
-                       }
-                       set {
-                               left = value;
-                       }
-               }
-
-               public CodeExpression Right {
-                       get {
-                               return right;
-                       }
-                       set {
-                               right = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeAttachEventStatement.cs b/mcs/class/System/System.CodeDom/CodeAttachEventStatement.cs
deleted file mode 100644 (file)
index f560ae1..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// System.CodeDom CodeAttachEventStatement Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeAttachEventStatement
-               : CodeStatement 
-       {
-               private CodeEventReferenceExpression eventRef;
-               private CodeExpression listener;
-               
-               //
-               // Constructors
-               //
-               public CodeAttachEventStatement ()
-               {
-               }
-
-               public CodeAttachEventStatement (CodeEventReferenceExpression eventRef,
-                                                CodeExpression listener)
-               {
-                       this.eventRef = eventRef;
-                       this.listener = listener;
-               }
-
-               public CodeAttachEventStatement (CodeExpression targetObject,
-                                                string eventName, 
-                                                CodeExpression listener)
-               {
-                       this.eventRef = new CodeEventReferenceExpression (targetObject,
-                                                                                                                               eventName);
-                       this.listener = listener;
-               }
-
-               //
-               // Properties
-               //
-               public CodeEventReferenceExpression Event {
-                       get {
-                               if (eventRef == null) {
-                                       eventRef = new CodeEventReferenceExpression ();
-                               }
-                               return eventRef;
-                       }
-                       set {
-                               eventRef = value;
-                       }
-               }
-
-               public CodeExpression Listener {
-                       get {
-                               return listener; 
-                       }
-                       set {
-                               listener = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeAttributeArgument.cs b/mcs/class/System/System.CodeDom/CodeAttributeArgument.cs
deleted file mode 100644 (file)
index b54b137..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.CodeDom CodeAttributeArgument Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeAttributeArgument
-       {
-               private string name;
-               private CodeExpression value;
-               
-               //
-               // Constructors
-               //
-               public CodeAttributeArgument ()
-               {
-               }
-
-               public CodeAttributeArgument (CodeExpression value)
-               {
-                       this.value = value;
-               }
-
-               public CodeAttributeArgument (string name, CodeExpression value)
-               {
-                       this.name = name;
-                       this.value = value;
-               }
-
-               //
-               // Properties
-               //
-               public string Name {
-                       get {
-                               if (name == null) {
-                                       return string.Empty;
-                               }
-                               return name;
-                       }
-                       set {
-                               name = value;
-                       }
-               }
-
-               public CodeExpression Value {
-                       get {
-                               return this.value;
-                       }
-                       set {
-                               this.value = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeAttributeArgumentCollection.cs b/mcs/class/System/System.CodeDom/CodeAttributeArgumentCollection.cs
deleted file mode 100644 (file)
index 8fe8fd3..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// System.CodeDom CodeAttributeArgumentCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeAttributeArgumentCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeAttributeArgumentCollection()
-               {
-               }
-
-               public CodeAttributeArgumentCollection( CodeAttributeArgument[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeAttributeArgumentCollection( CodeAttributeArgumentCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeAttributeArgument this[int index]
-               {
-                       get {
-                               return (CodeAttributeArgument)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeAttributeArgument value)
-               {
-                       return List.Add( value );
-               }
-
-               public void AddRange (CodeAttributeArgument [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeAttributeArgumentCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeAttributeArgument value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeAttributeArgument[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeAttributeArgument value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeAttributeArgument value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeAttributeArgument value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeAttributeDeclaration.cs b/mcs/class/System/System.CodeDom/CodeAttributeDeclaration.cs
deleted file mode 100644 (file)
index 89bb36a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// System.CodeDom CodeAttributeDeclaration Class implementation
-//
-// Authors:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//   Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeAttributeDeclaration 
-       {
-               private string name;
-               private CodeAttributeArgumentCollection arguments;
-               private CodeTypeReference attribute;
-
-               //
-               // Constructors
-               //
-               public CodeAttributeDeclaration ()
-               {
-               }
-
-               public CodeAttributeDeclaration (string name)
-               {
-                       this.Name = name;
-               }
-
-               public CodeAttributeDeclaration (string name, params CodeAttributeArgument [] arguments)
-               {
-                       this.Name = name;
-                       Arguments.AddRange (arguments);
-               }
-
-               public CodeAttributeDeclaration (CodeTypeReference attributeType)
-               {
-                       attribute = attributeType;
-                       if (attributeType != null) {
-                               name = attributeType.BaseType;
-                       }
-               }
-
-               public CodeAttributeDeclaration (CodeTypeReference attributeType, params CodeAttributeArgument [] arguments)
-               {
-                       attribute = attributeType;
-                       if (attributeType != null) {
-                               name = attributeType.BaseType;
-                       }
-                       Arguments.AddRange (arguments);
-               }
-
-               //
-               // Properties
-               //
-               public CodeAttributeArgumentCollection Arguments {
-                       get {
-                               if (arguments == null) {
-                                       arguments = new CodeAttributeArgumentCollection ();
-                               }
-
-                               return arguments;
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (name == null) {
-                                       return string.Empty;
-                               }
-                               return name;
-                       }
-                       set {
-                               name = value;
-                               attribute = new CodeTypeReference (name);
-                       }
-               }
-
-               public CodeTypeReference AttributeType {
-                       get { return attribute; }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeAttributeDeclarationCollection.cs b/mcs/class/System/System.CodeDom/CodeAttributeDeclarationCollection.cs
deleted file mode 100644 (file)
index 48e8801..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// System.CodeDom CodeAttributeDeclarationCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeAttributeDeclarationCollection 
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeAttributeDeclarationCollection()
-               {
-               }
-
-               public CodeAttributeDeclarationCollection( CodeAttributeDeclaration[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeAttributeDeclarationCollection( CodeAttributeDeclarationCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeAttributeDeclaration this[int index]
-               {
-                       get {
-                               return (CodeAttributeDeclaration)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeAttributeDeclaration value)
-               {
-                       return List.Add (value);
-               }
-
-               public void AddRange (CodeAttributeDeclaration [] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public void AddRange (CodeAttributeDeclarationCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeAttributeDeclaration value )
-               {
-                       return List.Contains( value );
-               }
-
-               public void CopyTo( CodeAttributeDeclaration[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeAttributeDeclaration value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeAttributeDeclaration value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeAttributeDeclaration value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeBaseReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeBaseReferenceExpression.cs
deleted file mode 100644 (file)
index b907215..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.CodeDom CodeBaseReferenceExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeBaseReferenceExpression
-               : CodeExpression 
-       {
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeBinaryOperatorExpression.cs b/mcs/class/System/System.CodeDom/CodeBinaryOperatorExpression.cs
deleted file mode 100644 (file)
index 0cdda07..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// System.CodeDom CodeBinaryOperatorExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeBinaryOperatorExpression
-               : CodeExpression 
-       {
-               private CodeExpression left, right;
-               private CodeBinaryOperatorType op;
-
-               //
-               // Constructors
-               //
-               public CodeBinaryOperatorExpression ()
-               {
-               }
-
-               public CodeBinaryOperatorExpression (CodeExpression left,
-                                                    CodeBinaryOperatorType op,
-                                                    CodeExpression right)
-               {
-                       this.left = left;
-                       this.op = op;
-                       this.right = right;
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression Left {
-                       get {
-                               return left;
-                       }
-                       set {
-                               left = value;
-                       }
-               }
-
-               public CodeBinaryOperatorType Operator {
-                       get {
-                               return op;
-                       }
-                       set {
-                               op = value;
-                       }
-               }
-
-               public CodeExpression Right {
-                       get {
-                               return right;
-                       }
-                       set {
-                               right = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeBinaryOperatorType.cs b/mcs/class/System/System.CodeDom/CodeBinaryOperatorType.cs
deleted file mode 100644 (file)
index 2a6fcc4..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// System.CodeDom CodeBinaryOperatorType Enum implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ComVisible(true)]
-       public enum CodeBinaryOperatorType {
-               Add = 0,
-               Subtract = 1,
-               Multiply = 2,
-               Divide = 3,
-               Modulus = 4,
-               Assign = 5,
-               IdentityInequality = 6,
-               IdentityEquality = 7,
-               ValueEquality = 8,
-               BitwiseOr = 9,
-               BitwiseAnd = 10,
-               BooleanOr = 11,
-               BooleanAnd = 12,
-               LessThan = 13,
-               LessThanOrEqual = 14,
-               GreaterThan = 15,
-               GreaterThanOrEqual = 16
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeCastExpression.cs b/mcs/class/System/System.CodeDom/CodeCastExpression.cs
deleted file mode 100644 (file)
index 736400b..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// System.CodeDom CodeCastExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeCastExpression : CodeExpression
-       {
-               private CodeTypeReference targetType;
-               private CodeExpression expression;
-               
-               //
-               // Constructors
-               //
-               public CodeCastExpression ()
-               {
-               }
-
-               public CodeCastExpression (CodeTypeReference targetType, CodeExpression expression)
-               {
-                       this.targetType = targetType;
-                       this.expression = expression;
-               }
-
-               public CodeCastExpression (string targetType, CodeExpression expression)
-               {
-                       this.targetType = new CodeTypeReference (targetType);
-                       this.expression = expression;
-               }
-
-               public CodeCastExpression (Type targetType, CodeExpression expression)
-               {
-                       this.targetType = new CodeTypeReference (targetType);
-                       this.expression = expression;
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression Expression {
-                       get {
-                               return expression;
-                       }
-
-                       set {
-                               expression = value;
-                       }
-               }
-
-               public CodeTypeReference TargetType {
-                       get {
-                               if (targetType == null) {
-                                       targetType = new CodeTypeReference (string.Empty);
-                               }
-                               return targetType;
-                       }
-                       set {
-                               targetType = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeCatchClause.cs b/mcs/class/System/System.CodeDom/CodeCatchClause.cs
deleted file mode 100644 (file)
index 993ce9f..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// System.CodeDom CodeCatchClaus Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeCatchClause
-       {
-               private CodeTypeReference catchExceptionType;
-               private string localName;
-               private CodeStatementCollection statements;
-
-               //
-               // Constructors
-               //
-               public CodeCatchClause ()
-               {
-               }
-
-               public CodeCatchClause ( string localName )
-               {
-                       this.localName = localName;
-               }
-
-               public CodeCatchClause ( string localName,
-                                        CodeTypeReference catchExceptionType )
-               {
-                       this.localName = localName;
-                       this.catchExceptionType = catchExceptionType;
-               }
-
-               public CodeCatchClause ( string localName,
-                                        CodeTypeReference catchExceptionType,
-                                        params CodeStatement[] statements )
-               {
-                       this.localName = localName;
-                       this.catchExceptionType = catchExceptionType;
-                       this.Statements.AddRange (statements);
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReference CatchExceptionType {
-                       get {
-                               if (catchExceptionType == null) {
-                                       catchExceptionType = new CodeTypeReference (typeof (Exception));
-                               }
-                               return catchExceptionType;
-                       }
-                       set {
-                               catchExceptionType = value;
-                       }
-               }
-
-               public string LocalName {
-                       get {
-                               if (localName == null) {
-                                       return string.Empty;
-                               }
-                               return localName;
-                       }
-                       set {
-                               localName = value;
-                       }
-               }
-
-               public CodeStatementCollection Statements {
-                       get {
-                               if ( statements == null )
-                                       statements = new CodeStatementCollection();
-                               return statements;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeCatchClauseCollection.cs b/mcs/class/System/System.CodeDom/CodeCatchClauseCollection.cs
deleted file mode 100644 (file)
index 05865d1..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// System.CodeDom CodeCatchClauseCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeCatchClauseCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeCatchClauseCollection()
-               {
-               }
-
-               public CodeCatchClauseCollection( CodeCatchClause[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeCatchClauseCollection( CodeCatchClauseCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeCatchClause this[int index] {
-                       get {
-                               return (CodeCatchClause)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeCatchClause value)
-               {
-                       return List.Add (value);
-               }
-
-               public void AddRange (CodeCatchClause [] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public void AddRange (CodeCatchClauseCollection value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeCatchClause value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeCatchClause[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeCatchClause value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeCatchClause value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeCatchClause value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeChecksumPragma.cs b/mcs/class/System/System.CodeDom/CodeChecksumPragma.cs
deleted file mode 100644 (file)
index 44d2a1e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// System.CodeDom CodeChecksumPragma class
-//
-// Author:
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2004 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true), ClassInterface (ClassInterfaceType.AutoDispatch)]
-       public class CodeChecksumPragma: CodeDirective
-       {
-               string fileName;
-               Guid checksumAlgorithmId;
-               byte[] checksumData;
-
-               public CodeChecksumPragma ()
-               {
-               }
-
-               public CodeChecksumPragma (string fileName, Guid checksumAlgorithmId, byte[] checksumData)
-               {
-                       this.fileName = fileName;
-                       this.checksumAlgorithmId = checksumAlgorithmId;
-                       this.checksumData = checksumData;
-               }
-            
-               public Guid ChecksumAlgorithmId {
-                       get {
-                               return checksumAlgorithmId;
-                       }
-                       set {
-                               checksumAlgorithmId = value;
-                       }
-               }
-
-               public byte[] ChecksumData {
-                       get {
-                               return checksumData;
-                       } 
-                       set {
-                               checksumData = value;
-                       }
-               }
-
-               public string FileName {
-                       get {
-                               if (fileName == null) {
-                                       return string.Empty;
-                               }
-                               return fileName;
-                       }
-                       set {
-                               fileName = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeComment.cs b/mcs/class/System/System.CodeDom/CodeComment.cs
deleted file mode 100644 (file)
index ccbd9ef..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// System.CodeDom CodeComment Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeComment
-               : CodeObject
-       {
-               private bool docComment;
-               private string text;
-               
-               //
-               // Constructors
-               //
-               public CodeComment()
-               {
-               }
-
-               public CodeComment( string text )
-               {
-                       this.text = text;
-               }
-
-               public CodeComment( string text, bool docComment )
-               {
-                       this.text = text;
-                       this.docComment = docComment;
-               }
-
-               //
-               // Properties
-               //
-               public bool DocComment {
-                       get {
-                               return docComment;
-                       }
-                       set {
-                               docComment = value;
-                       }
-               }
-               
-               public string Text {
-                       get {
-                               if (text == null)
-                                       return String.Empty;
-                               return text;
-                       }
-                       set {
-                               text = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeCommentStatement.cs b/mcs/class/System/System.CodeDom/CodeCommentStatement.cs
deleted file mode 100644 (file)
index d1c9216..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-//
-// System.CodeDom CodeCommentStatement Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001, 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeCommentStatement
-               : CodeStatement
-       {
-               private CodeComment comment;
-               
-               //
-               // Constructors
-               //
-               public CodeCommentStatement ()
-               {
-               }
-
-               public CodeCommentStatement (CodeComment comment)
-               {
-                       this.comment = comment;
-               }
-
-               public CodeCommentStatement (string text)
-               {
-                       this.comment = new CodeComment( text );
-               }
-               
-               public CodeCommentStatement (string text, bool docComment)
-               {
-                       this.comment = new CodeComment( text, docComment );
-               }
-
-               //
-               // Properties
-               //
-               public CodeComment Comment {
-                       get {
-                               return comment;
-                       }
-                       set {
-                               comment = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeCommentStatementCollection.cs b/mcs/class/System/System.CodeDom/CodeCommentStatementCollection.cs
deleted file mode 100644 (file)
index 38f83ce..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// System.CodeDom CodeCommentStatementCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeCommentStatementCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeCommentStatementCollection()
-               {
-               }
-               
-               public CodeCommentStatementCollection( CodeCommentStatement[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeCommentStatementCollection( CodeCommentStatementCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeCommentStatement this[int index]
-               {
-                       get {
-                               return (CodeCommentStatement)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeCommentStatement value)
-               {
-                       return List.Add( value );
-               }
-
-               public void AddRange (CodeCommentStatement [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeCommentStatementCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeCommentStatement value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeCommentStatement[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeCommentStatement value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeCommentStatement value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeCommentStatement value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeCompileUnit.cs b/mcs/class/System/System.CodeDom/CodeCompileUnit.cs
deleted file mode 100644 (file)
index 3ac9cc1..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// System.CodeDom CodeCompileUnit Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections.Specialized;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeCompileUnit
-               : CodeObject
-       {
-               private CodeAttributeDeclarationCollection attributes;
-               private CodeNamespaceCollection namespaces;
-               private StringCollection assemblies;
-
-               //
-               // Constructors
-               //
-               public CodeCompileUnit()
-               {
-               }
-
-               //
-               // Properties
-               //
-               public CodeAttributeDeclarationCollection AssemblyCustomAttributes {
-                       get {
-                               if ( attributes == null )
-                                       attributes = 
-                                               new CodeAttributeDeclarationCollection();
-                               return attributes;
-                       }
-               }
-
-               public CodeNamespaceCollection Namespaces {
-                       get {
-                               if ( namespaces == null )
-                                       namespaces = new CodeNamespaceCollection();
-                               return namespaces;
-                       }
-               }
-
-               public StringCollection ReferencedAssemblies {
-                       get {
-                               if ( assemblies == null )
-                                       assemblies = new StringCollection();
-                               return assemblies;
-                       }
-               }
-
-               CodeDirectiveCollection startDirectives;
-               CodeDirectiveCollection endDirectives;
-
-               public CodeDirectiveCollection StartDirectives {
-                       get {
-                               if (startDirectives == null)
-                                       startDirectives = new CodeDirectiveCollection ();
-                               return startDirectives;
-                       }
-               }
-
-               public CodeDirectiveCollection EndDirectives {
-                       get {
-                               if (endDirectives == null)
-                                       endDirectives = new CodeDirectiveCollection ();
-                               return endDirectives;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeConditionStatement.cs b/mcs/class/System/System.CodeDom/CodeConditionStatement.cs
deleted file mode 100644 (file)
index d8cea1f..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// System.CodeDom CodeConditionStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeConditionStatement
-               : CodeStatement
-       {
-               private CodeExpression condition;
-               private CodeStatementCollection trueStatements;
-               private CodeStatementCollection falseStatements;
-
-               //
-               // Constructors
-               //
-               public CodeConditionStatement()
-               {
-               }
-
-               public CodeConditionStatement( CodeExpression condition, 
-                                              params CodeStatement[] trueStatements )
-               {
-                       this.condition = condition;
-                       this.TrueStatements.AddRange( trueStatements );
-               }
-
-               public CodeConditionStatement( CodeExpression condition,
-                                              CodeStatement[] trueStatements,
-                                              CodeStatement[] falseStatements )
-               {
-                       this.condition = condition;
-                       this.TrueStatements.AddRange( trueStatements );
-                       this.FalseStatements.AddRange( falseStatements );
-               }
-               
-               //
-               // Properties
-               //
-               public CodeExpression Condition {
-                       get {
-                               return condition;
-                       }
-                       set {
-                               condition = value;
-                       }
-               }
-
-               public CodeStatementCollection FalseStatements {
-                       get {
-                               if ( falseStatements == null )
-                                       falseStatements = 
-                                               new CodeStatementCollection();
-                               return falseStatements;
-                       }
-               }
-
-               public CodeStatementCollection TrueStatements {
-                       get {
-                               if ( trueStatements == null )
-                                       trueStatements = 
-                                               new CodeStatementCollection();
-                               return trueStatements;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeConstructor.cs b/mcs/class/System/System.CodeDom/CodeConstructor.cs
deleted file mode 100644 (file)
index bf4794e..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// System.CodeDom CodeConstructor Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeConstructor
-               : CodeMemberMethod 
-       {
-               private CodeExpressionCollection baseConstructorArgs;
-               private CodeExpressionCollection chainedConstructorArgs;
-
-               //
-               // Constructors
-               //
-               public CodeConstructor()
-               {
-                       this.Name = ".ctor";
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpressionCollection BaseConstructorArgs {
-                       get {
-                               if ( baseConstructorArgs == null )
-                                       baseConstructorArgs = new CodeExpressionCollection();
-
-                               return baseConstructorArgs;
-                       }
-               }
-
-               public CodeExpressionCollection ChainedConstructorArgs {
-                       get {
-                               if ( chainedConstructorArgs == null )
-                                       chainedConstructorArgs = new CodeExpressionCollection();
-
-                               return chainedConstructorArgs;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeDefaultValueExpression.cs b/mcs/class/System/System.CodeDom/CodeDefaultValueExpression.cs
deleted file mode 100644 (file)
index 750f42f..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// System.CodeDom.CodeDefaultValueExpression class
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-
-       [Serializable]
-       [ClassInterface (ClassInterfaceType.AutoDispatch)]
-       [ComVisible (true)]
-       public class CodeDefaultValueExpression : CodeExpression {
-
-               private CodeTypeReference type;
-
-
-               public CodeDefaultValueExpression ()
-               {
-               }
-
-               public CodeDefaultValueExpression (CodeTypeReference type)
-               {
-                       this.type = type;
-               }
-
-
-               public CodeTypeReference Type {
-                       get { 
-                               if (type == null) {
-                                       type = new CodeTypeReference (string.Empty);
-                               }
-                               return type; 
-                       }
-                       set { type = value; }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeDelegateCreateExpression.cs b/mcs/class/System/System.CodeDom/CodeDelegateCreateExpression.cs
deleted file mode 100644 (file)
index ec59d35..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// System.CodeDom CodeDelegateCreateExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeDelegateCreateExpression
-               : CodeExpression 
-       {
-               private CodeTypeReference delegateType;
-               private string methodName;
-               private CodeExpression targetObject;
-
-               //
-               // Constructors
-               //
-               public CodeDelegateCreateExpression ()
-               {
-               }
-
-               public CodeDelegateCreateExpression (CodeTypeReference delegateType,
-                                                    CodeExpression targetObject,
-                                                    string methodName)
-               {
-                       this.delegateType = delegateType;
-                       this.targetObject = targetObject;
-                       this.methodName = methodName;
-               }
-
-
-               //
-               // Properties
-               //
-               public CodeTypeReference DelegateType {
-                       get {
-                               if (delegateType == null) {
-                                       delegateType = new CodeTypeReference (string.Empty);
-                               }
-                               return delegateType;
-                       }
-                       set {
-                               delegateType = value;
-                       }
-               }
-
-               public string MethodName {
-                       get {
-                               if (methodName == null) {
-                                       return string.Empty;
-                               }
-                               return methodName;
-                       }
-                       set {
-                               methodName = value;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeDelegateInvokeExpression.cs b/mcs/class/System/System.CodeDom/CodeDelegateInvokeExpression.cs
deleted file mode 100644 (file)
index 76f9f5c..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// System.CodeDom CodeDelegateInvokeExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeDelegateInvokeExpression
-               : CodeExpression 
-       {
-               private CodeExpressionCollection parameters;
-               private CodeExpression targetObject;
-               
-               //
-               // Constructors
-               //
-               public CodeDelegateInvokeExpression ()
-               {
-               }
-               
-               public CodeDelegateInvokeExpression (CodeExpression targetObject)
-               {
-                       this.targetObject = targetObject;
-               }
-
-               public CodeDelegateInvokeExpression (CodeExpression targetObject,
-                                                    params CodeExpression [] parameters)
-               {
-                       this.targetObject = targetObject;
-                       this.Parameters.AddRange( parameters );
-               }
-
-
-               //
-               // Properties
-               //
-               public CodeExpressionCollection Parameters {
-                       get {
-                               if ( parameters == null )
-                                       parameters = new CodeExpressionCollection();
-                               return parameters;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeDirectionExpression.cs b/mcs/class/System/System.CodeDom/CodeDirectionExpression.cs
deleted file mode 100644 (file)
index 9bb6bd2..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.CodeDom FieldDirection Enum implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeDirectionExpression
-               : CodeExpression
-       {
-               private FieldDirection direction;
-               private CodeExpression expression;
-
-               //
-               // Constructors
-               //
-               public CodeDirectionExpression()
-               {
-               }
-
-               public CodeDirectionExpression( FieldDirection direction, 
-                                               CodeExpression expression )
-               {
-                       this.direction = direction;
-                       this.expression = expression;
-               }
-
-               //
-               // Properties
-               //
-               public FieldDirection Direction {
-                       get {
-                               return direction;
-                       }
-                       set {
-                               direction = value;
-                       }
-               }
-
-               public CodeExpression Expression {
-                       get {
-                               return expression;
-                       }
-                       set {
-                               expression = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeDirective.cs b/mcs/class/System/System.CodeDom/CodeDirective.cs
deleted file mode 100644 (file)
index 9895e9a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.CodeDom CodeDirective class
-//
-// Author:
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2004 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true), ClassInterface (ClassInterfaceType.AutoDispatch)]
-       public class CodeDirective: CodeObject
-       {
-               public CodeDirective () {}
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeDirectiveCollection.cs b/mcs/class/System/System.CodeDom/CodeDirectiveCollection.cs
deleted file mode 100644 (file)
index 68f7ab2..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-//
-// System.CodeDom CodeDirectiveCollection class
-//
-// Authors:
-//     Marek Safar (marek.safar@seznam.cz)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true), ClassInterface (ClassInterfaceType.AutoDispatch)]
-       public class CodeDirectiveCollection: System.Collections.CollectionBase {
-
-               public CodeDirectiveCollection ()
-               {
-               }
-
-               public CodeDirectiveCollection (CodeDirective[] value)
-               {
-                       AddRange (value);
-               }
-
-               public CodeDirectiveCollection (CodeDirectiveCollection value)
-               {
-                       AddRange (value);
-               }
-
-
-               public CodeDirective this [int index] {
-                       get { return (CodeDirective) List [index]; }
-                       set { List [index] = value; }
-               }
-
-
-               public int Add (CodeDirective value)
-               {
-                       return List.Add (value);
-               }
-
-               public void AddRange (CodeDirective[] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeDirectiveCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains (CodeDirective value)
-               {
-                       return List.Contains (value);
-               }
-               
-               public void CopyTo (CodeDirective[] array, int index)
-               {
-                       List.CopyTo (array, index);
-               }
-
-               public int IndexOf (CodeDirective value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, CodeDirective value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (CodeDirective value)
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeEntryPointMethod.cs b/mcs/class/System/System.CodeDom/CodeEntryPointMethod.cs
deleted file mode 100644 (file)
index 6f423d5..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.CodeDom CodeEntryPointMethod Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeEntryPointMethod
-               : CodeMemberMethod
-       {
-               public CodeEntryPointMethod ()
-               {
-                       Attributes = MemberAttributes.Public | MemberAttributes.Static;
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeEventReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeEventReferenceExpression.cs
deleted file mode 100644 (file)
index b59d3dd..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.CodeDom CodeEventReferenceExpression class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeEventReferenceExpression
-               : CodeExpression
-       {
-               private string eventName;
-               private CodeExpression targetObject;
-
-               //
-               // Constructors
-               //
-               public CodeEventReferenceExpression()
-               {
-               }
-
-               public CodeEventReferenceExpression( CodeExpression targetObject, string eventName )
-               {
-                       this.targetObject = targetObject;
-                       this.eventName = eventName;
-               }
-
-               //
-               // Properties
-               //
-               public string EventName {
-                       get {
-                               if (eventName == null) {
-                                       return string.Empty;
-                               }
-                               return eventName;
-                       }
-                       set {
-                               eventName = value;
-                       }
-               }
-               
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeExpression.cs b/mcs/class/System/System.CodeDom/CodeExpression.cs
deleted file mode 100644 (file)
index e96d8f8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.CodeDom CodeExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeExpression
-               : CodeObject
-       {
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeExpressionCollection.cs b/mcs/class/System/System.CodeDom/CodeExpressionCollection.cs
deleted file mode 100644 (file)
index 7a1f19f..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// System.CodeDom CodeExpressionCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeExpressionCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeExpressionCollection()
-               {
-               }
-               
-               public CodeExpressionCollection( CodeExpression[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeExpressionCollection( CodeExpressionCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression this[int index]
-               {
-                       get {
-                               return (CodeExpression)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeExpression value)
-               {
-                       return List.Add( value );
-               }
-
-               public void AddRange (CodeExpression [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeExpressionCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeExpression value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeExpression[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeExpression value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeExpression value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeExpression value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeExpressionStatement.cs b/mcs/class/System/System.CodeDom/CodeExpressionStatement.cs
deleted file mode 100644 (file)
index 0e4533e..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// System.CodeDom CodeExpressionStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeExpressionStatement
-               : CodeStatement
-       {
-               private CodeExpression expression;
-
-               //
-               // Constructors
-               //
-               public CodeExpressionStatement()
-               {
-               }
-
-               public CodeExpressionStatement(CodeExpression expression)
-               {
-                       Expression = expression;
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression Expression {
-                       get {
-                               return expression;
-                       }
-                       set {
-                               expression = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeFieldReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeFieldReferenceExpression.cs
deleted file mode 100644 (file)
index cf8922e..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.CodeDom CodeFieldReferenceExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeFieldReferenceExpression
-               : CodeExpression 
-       {
-               private CodeExpression targetObject;
-               private string fieldName;
-
-               //
-               // Constructors
-               //
-               public CodeFieldReferenceExpression ()
-               {
-                       fieldName = String.Empty;
-               }
-               
-               public CodeFieldReferenceExpression (CodeExpression targetObject,
-                                                    string fieldName)
-               {
-                       this.targetObject = targetObject;
-                       this.fieldName = fieldName;
-               }
-
-               //
-               // Properties
-               //
-               public string FieldName {
-                       get {
-                               return fieldName;
-                       }
-                       set {
-                               fieldName = value;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeGotoStatement.cs b/mcs/class/System/System.CodeDom/CodeGotoStatement.cs
deleted file mode 100644 (file)
index 57a468a..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.CodeDom CodeGotoStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeGotoStatement
-               : CodeStatement
-       {
-               private string label;
-
-               //
-               // Constructors
-               //
-               public CodeGotoStatement ()
-               {
-               }
-
-               public CodeGotoStatement (string label)
-               {
-                       Label = label;
-               }
-
-               //
-               // Properties
-               //
-               public string Label {
-                       get {
-                               return label;
-                       }
-                       set {
-                               if (value == null || value.Length == 0) {
-                                       throw new ArgumentNullException ("value");
-                               }
-                               label = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeIndexerExpression.cs b/mcs/class/System/System.CodeDom/CodeIndexerExpression.cs
deleted file mode 100644 (file)
index b9e881d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// System.CodeDom CodeIndexerExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeIndexerExpression
-               : CodeExpression 
-       {
-               private CodeExpression targetObject;
-               private CodeExpressionCollection indices;
-
-               //
-               // Constructors
-               //
-               public CodeIndexerExpression ()
-               {
-               }
-               
-               public CodeIndexerExpression (CodeExpression targetObject, params CodeExpression[] indices)
-               {
-                       this.targetObject = targetObject;
-                       this.Indices.AddRange( indices );
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpressionCollection Indices {
-                       get {
-                               if ( indices == null )
-                                       indices = new CodeExpressionCollection();
-
-                               return indices;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeIterationStatement.cs b/mcs/class/System/System.CodeDom/CodeIterationStatement.cs
deleted file mode 100644 (file)
index f140f64..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// System.CodeDom CodeIterationStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeIterationStatement
-               : CodeStatement
-       {
-               private CodeStatement incrementStatement;
-               private CodeStatement initStatement;
-               private CodeStatementCollection statements;
-               private CodeExpression testExpression;
-               
-               //
-               // Constructors
-               //
-               public CodeIterationStatement()
-               {
-               }
-
-               public CodeIterationStatement( CodeStatement initStatement, 
-                                              CodeExpression testExpression,
-                                              CodeStatement incrementStatement,
-                                              params CodeStatement[] statements )
-               {
-                       this.initStatement = initStatement;
-                       this.testExpression = testExpression;
-                       this.incrementStatement = incrementStatement;
-                       this.Statements.AddRange( statements );
-               }
-
-               //
-               // Properties
-               //
-               public CodeStatement IncrementStatement {
-                       get {
-                               return incrementStatement;
-                       }
-                       set {
-                               incrementStatement = value;
-                       }
-               }
-
-               public CodeStatement InitStatement {
-                       get {
-                               return initStatement;
-                       }
-                       set {
-                               initStatement = value;
-                       }
-               }
-
-               public CodeStatementCollection Statements {
-                       get {
-                               if ( statements == null )
-                                       statements = new CodeStatementCollection();
-                               return statements;
-                       }
-               }
-
-               public CodeExpression TestExpression {
-                       get {
-                               return testExpression;
-                       }
-                       set {
-                               testExpression = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeLabeledStatement.cs b/mcs/class/System/System.CodeDom/CodeLabeledStatement.cs
deleted file mode 100644 (file)
index ca81185..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// System.CodeDom CodeLabeledStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeLabeledStatement
-               : CodeStatement
-       {
-               private string label;
-               private CodeStatement statement;
-
-               //
-               // Constructors
-               //
-               public CodeLabeledStatement()
-               {
-               }
-
-               public CodeLabeledStatement( string label )
-               {
-                       this.label = label;
-               }
-
-               public CodeLabeledStatement( string label, CodeStatement statement )
-               {
-                       this.label = label;
-                       this.statement = statement;
-               }
-
-               //
-               // Properties
-               //
-               public string Label {
-                       get {
-                               if (label == null) {
-                                       return string.Empty;
-                               }
-                               return label;
-                       }
-                       set {
-                               label = value;
-                       }
-               }
-
-               public CodeStatement Statement {
-                       get {
-                               return statement;
-                       }
-                       set {
-                               statement = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeLinePragma.cs b/mcs/class/System/System.CodeDom/CodeLinePragma.cs
deleted file mode 100644 (file)
index 4f37a38..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.CodeDom CodeLinePragma Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       // <summary>
-       //    Use objects of this class to keep track of locations where
-       //    statements are defined
-       // </summary>
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeLinePragma 
-       {
-               private string fileName;
-               private int lineNumber;
-               
-               //
-               // Constructors
-               //
-               public CodeLinePragma ()
-               {
-               }
-
-               public CodeLinePragma (string fileName, int lineNumber)
-               {
-                       this.fileName = fileName;
-                       this.lineNumber = lineNumber;
-               }
-               
-               //
-               // Properties
-               //
-               public string FileName {
-                       get {
-                               if (fileName == null) {
-                                       return string.Empty;
-                               }
-                               return fileName;
-                       }
-                       set {
-                               fileName = value;
-                       }
-               }
-               
-               public int LineNumber {
-                       get {
-                               return lineNumber;
-                       }
-                       set {
-                               lineNumber = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMemberEvent.cs b/mcs/class/System/System.CodeDom/CodeMemberEvent.cs
deleted file mode 100644 (file)
index ff463ff..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// System.CodeDom CodeMemberEvent Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMemberEvent
-               : CodeTypeMember
-       {
-               private CodeTypeReferenceCollection implementationTypes;
-               private CodeTypeReference privateImplementationType;
-               private CodeTypeReference type;
-               
-               //
-               // Constructors
-               //
-               public CodeMemberEvent ()
-               {
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReferenceCollection ImplementationTypes
-               {
-                       get {
-                               if (implementationTypes == null)
-                                       implementationTypes = new CodeTypeReferenceCollection ();
-
-                               return implementationTypes;
-                       }
-               }
-
-               public CodeTypeReference PrivateImplementationType
-               {
-                       get {
-                               return privateImplementationType;
-                       }
-                       set {
-                               privateImplementationType = value;
-                       }
-               }
-
-               public CodeTypeReference Type
-               {
-                       get {
-                               if (type == null)
-                                       type = new CodeTypeReference (String.Empty);
-
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMemberField.cs b/mcs/class/System/System.CodeDom/CodeMemberField.cs
deleted file mode 100644 (file)
index d143d87..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// System.CodeDom CodeMemberField Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMemberField
-               : CodeTypeMember
-       {
-               private CodeExpression initExpression;
-               private CodeTypeReference type;
-               
-               public CodeMemberField ()
-               {
-               }
-
-               public CodeMemberField (CodeTypeReference type, string name)
-               {
-                       this.type = type;
-                       this.Name = name;
-               }
-               
-               public CodeMemberField (string type, string name)
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.Name = name;
-               }
-                       
-               public CodeMemberField (Type type, string name)
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.Name = name;
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression InitExpression {
-                       get {
-                               return initExpression;
-                       }
-                       set {
-                               initExpression = value;
-                       }
-               }
-
-               public CodeTypeReference Type {
-                       get {
-                               if (type == null) {
-                                       type = new CodeTypeReference (
-                                                       string.Empty);
-                               }
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMemberMethod.cs b/mcs/class/System/System.CodeDom/CodeMemberMethod.cs
deleted file mode 100644 (file)
index 9ef0707..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// System.CodeDom CodeMemberMethod Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMemberMethod
-               : CodeTypeMember 
-       {
-               private CodeTypeReferenceCollection implementationTypes;
-               private CodeParameterDeclarationExpressionCollection parameters;
-               private CodeTypeReference privateImplements;
-               private CodeTypeReference returnType;
-               private CodeStatementCollection statements;
-               private CodeAttributeDeclarationCollection returnAttributes;
-               //int populated;
-
-               CodeTypeParameterCollection typeParameters;
-               //
-               // Constructors
-               //
-               public CodeMemberMethod()
-               {
-               }
-
-               //
-               // Properties
-               // 
-               public CodeTypeReferenceCollection ImplementationTypes {
-                       get {
-                               if ( implementationTypes == null ) {
-                                       implementationTypes = new CodeTypeReferenceCollection();
-                                       if ( PopulateImplementationTypes != null )
-                                               PopulateImplementationTypes( this, EventArgs.Empty );
-                               }
-                               return implementationTypes;
-                       }
-               }
-
-               public CodeParameterDeclarationExpressionCollection Parameters {
-                       get {
-                               if ( parameters == null ) {
-                                       parameters = new CodeParameterDeclarationExpressionCollection();
-                                       if ( PopulateParameters != null )
-                                               PopulateParameters( this, EventArgs.Empty );
-                               }
-                               return parameters;
-                       }
-               }
-
-               public CodeTypeReference PrivateImplementationType {
-                       get {
-                               return privateImplements;
-                       }
-                       set {
-                               privateImplements = value;
-                       }
-               }
-
-               public CodeTypeReference ReturnType {
-                       get {
-                               if ( returnType == null )
-                                       return new CodeTypeReference (typeof (void));
-                               return returnType;
-                       }
-                       set {
-                               returnType = value;
-                       }
-               }
-
-               public CodeStatementCollection Statements {
-                       get {
-                               if ( statements == null ) {
-                                       statements = new CodeStatementCollection();
-                                       if ( PopulateStatements != null )
-                                               PopulateStatements( this, EventArgs.Empty );
-                               }
-                               return statements;
-                       }
-               }
-
-               public CodeAttributeDeclarationCollection ReturnTypeCustomAttributes {
-                       get {
-                               if ( returnAttributes == null )
-                                       returnAttributes = new CodeAttributeDeclarationCollection();
-                               
-                               return returnAttributes;
-                       }
-               }
-
-               [ComVisible (false)]
-               public CodeTypeParameterCollection TypeParameters {
-                       get {
-                               if (typeParameters == null)
-                                       typeParameters = new CodeTypeParameterCollection ();
-                               return typeParameters;
-                       }
-               }
-
-               //
-               // Events
-               //
-               public event EventHandler PopulateImplementationTypes;
-
-               public event EventHandler PopulateParameters;
-
-               public event EventHandler PopulateStatements;
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMemberProperty.cs b/mcs/class/System/System.CodeDom/CodeMemberProperty.cs
deleted file mode 100644 (file)
index cfc9714..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// System.CodeDom CodeMemberProperty Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMemberProperty
-               : CodeTypeMember
-       {
-               private CodeStatementCollection getStatements;
-               private bool hasGet;
-               private bool hasSet;
-               private CodeTypeReferenceCollection implementationTypes;
-               private CodeParameterDeclarationExpressionCollection parameters;
-               private CodeTypeReference privateImplementationType;
-               private CodeStatementCollection setStatements;
-               private CodeTypeReference type;
-               
-               //
-               // Constructors
-               //
-               public CodeMemberProperty ()
-               {
-               }
-
-               //
-               // Properties
-               //
-               public CodeStatementCollection GetStatements {
-                       get {
-                               if ( getStatements == null )
-                                       getStatements = new CodeStatementCollection();
-                               return getStatements;
-                       }
-               }
-
-               public bool HasGet {
-                       get {
-                               return (hasGet || (getStatements != null && getStatements.Count > 0));
-                       }
-                       set {
-                               hasGet = value;
-                               if (!hasGet && getStatements != null)
-                                       getStatements.Clear ();
-                                       
-                       }
-               }
-               
-               public bool HasSet {
-                       get {
-                               return (hasSet || (setStatements != null && setStatements.Count > 0));
-                       }
-                       set {
-                               hasSet = value;
-                               if (!hasSet && setStatements != null)
-                                       setStatements.Clear ();
-                       }
-               }
-
-               public CodeTypeReferenceCollection ImplementationTypes {
-                       get {
-                               if ( implementationTypes == null )
-                                       implementationTypes = new CodeTypeReferenceCollection();
-                               return implementationTypes;
-                       }
-               }
-
-               public CodeParameterDeclarationExpressionCollection Parameters {
-                       get {
-                               if ( parameters == null )
-                                       parameters = new CodeParameterDeclarationExpressionCollection();
-                               return parameters;
-                       }
-               }
-
-               public CodeTypeReference PrivateImplementationType {
-                       get {
-                               return privateImplementationType;
-                       }
-                       set {
-                               privateImplementationType = value;
-                       }
-               }
-
-               public CodeStatementCollection SetStatements {
-                       get {
-                               if ( setStatements == null )
-                                       setStatements = new CodeStatementCollection();
-                               return setStatements;
-                       }
-               }
-
-               public CodeTypeReference Type {
-                       get {
-                               if (type == null) {
-                                       type = new CodeTypeReference(string.Empty);
-                               }
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMethodInvokeExpression.cs b/mcs/class/System/System.CodeDom/CodeMethodInvokeExpression.cs
deleted file mode 100644 (file)
index d802646..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// System.CodeDom CodeMethodInvokeExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMethodInvokeExpression
-               : CodeExpression 
-       {
-               private CodeMethodReferenceExpression method;
-               private CodeExpressionCollection parameters;
-               
-               //
-               // Constructors
-               //
-               public CodeMethodInvokeExpression () 
-               {
-               }
-
-               public CodeMethodInvokeExpression (CodeMethodReferenceExpression method, params CodeExpression[] parameters)
-               {
-                       this.method = method;
-                       this.Parameters.AddRange( parameters );
-               }
-
-               public CodeMethodInvokeExpression (CodeExpression targetObject,
-                                                  string methodName,
-                                                  params CodeExpression [] parameters)
-               {
-                       this.method = new CodeMethodReferenceExpression( targetObject, methodName );
-                       this.Parameters.AddRange (parameters);
-               }
-
-               //
-               // Properties
-               //
-               public CodeMethodReferenceExpression Method {
-                       get {
-                               if (method == null) {
-                                       method = new CodeMethodReferenceExpression ();
-                               }
-                               return method;
-                       }
-                       set {
-                               method = value;
-                       }
-               }
-
-               public CodeExpressionCollection Parameters {
-                       get {
-                               if ( parameters == null )
-                                       parameters = new CodeExpressionCollection();
-                               return parameters;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMethodReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeMethodReferenceExpression.cs
deleted file mode 100644 (file)
index 40da67b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// System.CodeDom CodeMethodInvokeExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMethodReferenceExpression
-               : CodeExpression 
-       {
-               private string methodName;
-               private CodeExpression targetObject;
-               CodeTypeReferenceCollection typeArguments;
-               
-               //
-               // Constructors
-               //
-               public CodeMethodReferenceExpression ()
-               {
-               }
-
-               public CodeMethodReferenceExpression (CodeExpression targetObject, 
-                                                     string methodName)
-               {
-                       this.targetObject = targetObject;
-                       this.methodName = methodName;
-               }
-
-               public CodeMethodReferenceExpression (CodeExpression targetObject, 
-                       string methodName, params CodeTypeReference[] typeParameters) :
-                       this (targetObject, methodName)
-               {
-                       if (typeParameters != null && typeParameters.Length > 0)
-                               TypeArguments.AddRange (typeParameters);
-               }
-
-               //
-               // Properties
-               //
-               public string MethodName {
-                       get {
-                               if (methodName == null) {
-                                       return string.Empty;
-                               }
-                               return methodName;
-                       }
-                       set {
-                               methodName = value;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               [ComVisible (false)]
-               public CodeTypeReferenceCollection TypeArguments {
-                       get {
-                               if (typeArguments == null)
-                                       typeArguments = new CodeTypeReferenceCollection ();
-                               return typeArguments;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeMethodReturnStatement.cs b/mcs/class/System/System.CodeDom/CodeMethodReturnStatement.cs
deleted file mode 100644 (file)
index 4316b58..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// System.CodeDom CodeMethodReturnStatement class implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeMethodReturnStatement
-               : CodeStatement
-       {
-               private CodeExpression expression;
-
-               //
-               // Constructors
-               //
-               public CodeMethodReturnStatement()
-               {
-               }
-               
-               public CodeMethodReturnStatement( CodeExpression expression )
-               {
-                       this.expression = expression;
-               }
-               
-               //
-               // Properties
-               //
-               public CodeExpression Expression {
-                       get {
-                               return expression;
-                       }
-                       set {
-                               expression = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeNamespace.cs b/mcs/class/System/System.CodeDom/CodeNamespace.cs
deleted file mode 100644 (file)
index 7940975..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// System.CodeDom CodeNamespace Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeNamespace
-               : CodeObject
-       {
-               private CodeCommentStatementCollection comments;
-               private CodeNamespaceImportCollection imports;
-               //private CodeNamespaceCollection namespaces;
-               private CodeTypeDeclarationCollection classes;
-               private string name;
-               //int populated;
-
-               //
-               // Constructors
-               //
-               public CodeNamespace()
-               {
-               }
-
-               public CodeNamespace(string name)
-               {
-                       this.name = name;
-               }
-
-               //
-               // Properties
-               //
-               public CodeCommentStatementCollection Comments {
-                       get {
-                               if ( comments == null ) {
-                                       comments = new CodeCommentStatementCollection();
-                                       if ( PopulateComments != null )
-                                               PopulateComments( this, EventArgs.Empty );
-                               }
-                               return comments;
-                       }
-               }
-
-               public CodeNamespaceImportCollection Imports {
-                       get {
-                               if ( imports == null ) {
-                                       imports = new CodeNamespaceImportCollection();
-                                       if ( PopulateImports != null )
-                                               PopulateImports( this, EventArgs.Empty );
-                               }
-                               return imports;
-                       }
-                       internal set {
-                               imports = value;
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (name == null) {
-                                       return string.Empty;
-                               }
-                               return name;
-                       }
-                       set {
-                               name = value;
-                       }
-               }
-
-               public CodeTypeDeclarationCollection Types {
-                       get {
-                               if ( classes == null ) {
-                                       classes = new CodeTypeDeclarationCollection();
-                                       if ( PopulateTypes != null )
-                                               PopulateTypes( this, EventArgs.Empty );
-                               }
-                               return classes;
-                       }
-               }
-
-               //
-               // Events
-               //
-               public event EventHandler PopulateComments;
-               
-               public event EventHandler PopulateImports;
-               
-               public event EventHandler PopulateTypes;
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeNamespaceCollection.cs b/mcs/class/System/System.CodeDom/CodeNamespaceCollection.cs
deleted file mode 100644 (file)
index f2bfbcd..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// System.CodeDom CodeNamespaceCollection Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeNamespaceCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeNamespaceCollection()
-               {
-               }
-
-               public CodeNamespaceCollection( CodeNamespace[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeNamespaceCollection( CodeNamespaceCollection value )
-               {
-                       AddRange( value );
-               }
-               
-               //
-               // Properties
-               //
-               public CodeNamespace this[int index]
-               {
-                       get {
-                               return (CodeNamespace)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeNamespace value)
-               {
-                       return List.Add (value); 
-               }
-
-               public void AddRange (CodeNamespace [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeNamespaceCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeNamespace value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeNamespace[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeNamespace value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeNamespace value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeNamespace value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeNamespaceImport.cs b/mcs/class/System/System.CodeDom/CodeNamespaceImport.cs
deleted file mode 100644 (file)
index fc501d1..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// System.CodeDom CodeNamespaceImport Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeNamespaceImport
-               : CodeObject 
-       {
-               private CodeLinePragma linePragma;
-               private string nameSpace;
-               
-               //
-               // Constructors
-               //
-               public CodeNamespaceImport ()
-               {
-               }
-
-               public CodeNamespaceImport (string nameSpace)
-               {
-                       this.nameSpace = nameSpace;
-               }
-
-               //
-               // Properties
-               //
-               public CodeLinePragma LinePragma {
-                       get {
-                               return linePragma;
-                       }
-                       set {
-                               linePragma = value;
-                       }
-               }
-
-               public string Namespace {
-                       get {
-                               if (nameSpace == null) {
-                                       return string.Empty;
-                               }
-                               return nameSpace;
-                       }
-                       set {
-                               nameSpace = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeNamespaceImportCollection.cs b/mcs/class/System/System.CodeDom/CodeNamespaceImportCollection.cs
deleted file mode 100644 (file)
index da5c905..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-//
-// System.CodeDom CodeNamespaceImportCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom
-{
-       /*
-        * Should probably be derived from CollectionBase like any
-        * other System.CodeDom.*Collection. MS docs say it currently
-        * is not, for whichever reason.
-        */
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeNamespaceImportCollection
-               : IList, ICollection, IEnumerable
-       {
-               private Hashtable keys;
-               private ArrayList data;
-
-               //
-               // Constructors
-               //
-               public CodeNamespaceImportCollection ()
-               {
-                       data = new ArrayList ();
-                       keys = new Hashtable (CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
-               }
-
-               //
-               // Properties
-               //
-               int ICollection.Count {
-                       get {
-                               return data.Count;
-                       }
-               }
-               
-               public int Count {
-                       get {
-                               return data.Count;
-                       }
-               }
-
-               public CodeNamespaceImport this [int index] {
-                       get {
-                               return (CodeNamespaceImport)data[index];
-                       }
-                       set {
-                               CodeNamespaceImport oldImport = (CodeNamespaceImport) data [index];
-                               CodeNamespaceImport newImport = (CodeNamespaceImport) value;
-                               keys.Remove (oldImport.Namespace);
-                               data[index] = value;
-                               keys [newImport.Namespace] = newImport;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public void Add (CodeNamespaceImport value)
-               {
-                       if (value == null) {
-                               throw new NullReferenceException ();
-                       }
-
-                       if (!keys.ContainsKey (value.Namespace)) {
-                               keys [value.Namespace] = value;
-                               data.Add (value);
-                       }
-               }
-
-               public void AddRange (CodeNamespaceImport [] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       foreach (CodeNamespaceImport elem in value) {
-                               Add (elem);
-                       }
-               }
-
-               void IList.Clear ()
-               {
-                       Clear ();
-               }
-               
-               public void Clear ()
-               {
-                       data.Clear ();
-                       keys.Clear ();
-               }
-
-               // IList implementation
-               bool IList.IsFixedSize {
-                       get {
-                               return false;
-                       }
-               }
-
-               bool IList.IsReadOnly {
-                       get {
-                               return false;
-                       }
-               }
-
-               object IList.this[int index] {
-                       get {
-                               return data[index];
-                       }
-                       set {
-                               this [index] = (CodeNamespaceImport) value;
-                       }
-               }
-
-               int IList.Add( object value )
-               {
-                       Add ((CodeNamespaceImport) value);
-                       return data.Count - 1;
-               }
-               
-               bool IList.Contains( object value )
-               {
-                       return data.Contains( value );
-               }
-               
-               int IList.IndexOf( object value )
-               {
-                       return data.IndexOf( value );
-               }
-
-               void IList.Insert( int index, object value )
-               {
-                       data.Insert( index, value );
-                       CodeNamespaceImport import = (CodeNamespaceImport) value;
-                       keys [import.Namespace] = import;
-               }
-
-               void IList.Remove( object value )
-               {
-                       string ns = ((CodeNamespaceImport)value).Namespace;
-                       data.Remove( value );
-                       foreach (CodeNamespaceImport import in data) {
-                               if (import.Namespace == ns) {
-                                       keys [ns] = import;
-                                       return;
-                               }
-                       }
-                       keys.Remove (ns);
-               }
-               
-               void IList.RemoveAt( int index )
-               {
-                       string ns = this [index].Namespace;
-                       data.RemoveAt( index );
-                       foreach (CodeNamespaceImport import in data) {
-                               if (import.Namespace == ns) {
-                                       keys [ns] = import;
-                                       return;
-                               }
-                       }
-                       keys.Remove (ns);
-               }
-
-               // ICollection implementation
-               object ICollection.SyncRoot {
-                       get {
-                               return null;
-                       }
-               }
-
-               bool ICollection.IsSynchronized {
-                       get {
-                               return data.IsSynchronized;
-                       }
-               }
-
-               void ICollection.CopyTo( Array array, int index )
-               {
-                       data.CopyTo( array, index );
-               }
-
-               // IEnumerable implementation
-               IEnumerator IEnumerable.GetEnumerator ()
-               {
-                       return data.GetEnumerator();
-               }
-               
-               // IEnumerable implementation
-               public IEnumerator GetEnumerator ()
-               {
-                       return data.GetEnumerator();
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeObject.cs b/mcs/class/System/System.CodeDom/CodeObject.cs
deleted file mode 100644 (file)
index 67326cd..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// System.CodeDom CodeObject class implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-using System.Collections.Specialized;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeObject
-       {
-               private IDictionary userData;
-
-               //
-               // Properties
-               //
-               public IDictionary UserData {
-                       get {
-                               if ( userData == null )
-                                       userData = new ListDictionary();
-                               return userData;
-                       }
-               }
-
-               internal virtual void Accept (ICodeDomVisitor visitor)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeObjectCreateExpression.cs b/mcs/class/System/System.CodeDom/CodeObjectCreateExpression.cs
deleted file mode 100644 (file)
index 5babdf0..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// System.CodeDom CodeObjectCreateExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeObjectCreateExpression
-               : CodeExpression 
-       {
-               private CodeTypeReference createType;
-               private CodeExpressionCollection parameters;
-               
-               //
-               // Constructors
-               //
-               public CodeObjectCreateExpression () 
-               {
-               }
-
-               public CodeObjectCreateExpression (CodeTypeReference createType, 
-                                                  params CodeExpression [] parameters)
-               {
-                       this.createType = createType;
-                       this.Parameters.AddRange( parameters );
-               }
-
-               public CodeObjectCreateExpression (string createType, 
-                                                  params CodeExpression [] parameters)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.Parameters.AddRange( parameters );
-               }
-
-               public CodeObjectCreateExpression (Type createType, 
-                                                  params CodeExpression [] parameters)
-               {
-                       this.createType = new CodeTypeReference( createType );
-                       this.Parameters.AddRange( parameters );
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReference CreateType {
-                       get {
-                               if (createType == null) {
-                                       createType = new CodeTypeReference (string.Empty);
-                               }
-                               return createType;
-                       }
-                       set {
-                               createType = value;
-                       }
-               }
-
-               public CodeExpressionCollection Parameters {
-                       get {
-                               if ( parameters == null )
-                                       parameters = new CodeExpressionCollection();
-                               return parameters;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeParameterDeclarationExpression.cs b/mcs/class/System/System.CodeDom/CodeParameterDeclarationExpression.cs
deleted file mode 100644 (file)
index 9df391d..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// System.CodeDom CodeParameterDeclarationExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeParameterDeclarationExpression
-               : CodeExpression 
-       {
-               private CodeAttributeDeclarationCollection customAttributes;
-               private FieldDirection direction;
-               private string name;
-               private CodeTypeReference type;
-
-               //
-               // Constructors
-               //
-               public CodeParameterDeclarationExpression ()
-               {
-               }
-
-               public CodeParameterDeclarationExpression( CodeTypeReference type, string name )
-               {
-                       this.type = type;
-                       this.name = name;
-               }
-
-               public CodeParameterDeclarationExpression (string type, string name)
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.name = name;
-               }
-
-               public CodeParameterDeclarationExpression (Type type, string name)
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.name = name;
-               }
-
-               //
-               // Properties
-               //
-               public CodeAttributeDeclarationCollection CustomAttributes {
-                       get {
-                               if ( customAttributes == null )
-                                       customAttributes = new CodeAttributeDeclarationCollection();
-                               return customAttributes;
-                       }
-                       set {
-                               customAttributes = value;
-                       }
-               }
-
-               public FieldDirection Direction {
-                       get {
-                               return direction;
-                       }
-                       set {
-                               direction = value;
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (name == null) {
-                                       return string.Empty;
-                               }
-                               return name;
-                       }
-                       set {
-                               name = value;
-                       }
-               }
-
-               public CodeTypeReference Type {
-                       get {
-                               if (type == null) {
-                                       type = new CodeTypeReference (string.Empty);
-                               }
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeParameterDeclarationExpressionCollection.cs b/mcs/class/System/System.CodeDom/CodeParameterDeclarationExpressionCollection.cs
deleted file mode 100644 (file)
index 67e8634..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// System.CodeDom CodeParameterDeclarationExpressionCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeParameterDeclarationExpressionCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeParameterDeclarationExpressionCollection()
-               {
-               }
-
-               public CodeParameterDeclarationExpressionCollection( CodeParameterDeclarationExpression[] value )
-               {
-                       AddRange( value );
-               }
-               
-               public CodeParameterDeclarationExpressionCollection( CodeParameterDeclarationExpressionCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeParameterDeclarationExpression this[int index]
-               {
-                       get {
-                               return (CodeParameterDeclarationExpression)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeParameterDeclarationExpression value)
-               {
-                       return List.Add( value );
-               }
-
-               public void AddRange (CodeParameterDeclarationExpression [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeParameterDeclarationExpressionCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeParameterDeclarationExpression value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeParameterDeclarationExpression[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeParameterDeclarationExpression value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeParameterDeclarationExpression value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeParameterDeclarationExpression value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodePrimitiveExpression.cs b/mcs/class/System/System.CodeDom/CodePrimitiveExpression.cs
deleted file mode 100644 (file)
index 090d255..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// System.CodeDom CodePrimitiveExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodePrimitiveExpression
-               : CodeExpression 
-       {
-               private object value;
-
-               //
-               // Constructors
-               //
-               public CodePrimitiveExpression ()
-               {
-               }
-
-               public CodePrimitiveExpression (Object value)
-               {
-                       this.value = value;
-               }
-
-               //
-               // Properties
-               //
-               public object Value {
-                       get {
-                               return this.value;
-                       }
-                       set {
-                               this.value = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodePropertyReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodePropertyReferenceExpression.cs
deleted file mode 100644 (file)
index 44f0222..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// System.CodeDom CodePropertyReferenceExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodePropertyReferenceExpression
-               : CodeExpression 
-       {
-               private CodeExpression targetObject;
-               private string propertyName;
-               
-               //
-               // Constructors
-               //
-               public CodePropertyReferenceExpression () 
-               {
-               }
-
-               public CodePropertyReferenceExpression (CodeExpression targetObject,
-                                                       string propertyName)
-               {
-                       this.targetObject = targetObject;
-                       this.propertyName = propertyName;
-               }
-
-               //
-               // Properties
-               //
-               public string PropertyName {
-                       get {
-                               if (propertyName == null) {
-                                       return string.Empty;
-                               }
-                               return propertyName;
-                       }
-                       set {
-                               propertyName = value;
-                       }
-               }
-
-               public CodeExpression TargetObject {
-                       get {
-                               return targetObject;
-                       }
-                       set {
-                               targetObject = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodePropertySetValueReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodePropertySetValueReferenceExpression.cs
deleted file mode 100644 (file)
index d977a43..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.CodeDom CodePropertySetValueReferenceExpression Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodePropertySetValueReferenceExpression
-               : CodeExpression
-       {
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeRegionDirective.cs b/mcs/class/System/System.CodeDom/CodeRegionDirective.cs
deleted file mode 100644 (file)
index 4f8c967..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// System.CodeDom CodeRegionDirective class
-//
-// Author:
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2004 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true), ClassInterface (ClassInterfaceType.AutoDispatch)]
-       public class CodeRegionDirective: CodeDirective
-       {
-               CodeRegionMode regionMode;
-               string regionText;
-
-               public CodeRegionDirective () {}
-
-               public CodeRegionDirective (CodeRegionMode regionMode, string regionText)
-               {
-                       this.regionMode = regionMode;
-                       this.regionText = regionText;
-               }
-
-               public CodeRegionMode RegionMode {
-                       get {
-                               return regionMode;
-                       }
-                       set {
-                               regionMode = value;
-                       }
-               }
-
-               public string RegionText {
-                       get {
-                               if (regionText == null) {
-                                       return string.Empty;
-                               }
-                               return regionText;
-                       }
-                       set {
-                               regionText = value;
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom/CodeRegionMode.cs b/mcs/class/System/System.CodeDom/CodeRegionMode.cs
deleted file mode 100644 (file)
index 8769138..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.CodeDom CodeRegionMode enum
-//
-// Author:
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2004 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true)]
-       public enum CodeRegionMode
-       {
-               None = 0,
-               Start = 1,
-               End = 1 << 1
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeRemoveEventStatement.cs b/mcs/class/System/System.CodeDom/CodeRemoveEventStatement.cs
deleted file mode 100644 (file)
index cad191b..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// System.CodeDom CodeRemoveEventStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeRemoveEventStatement
-               : CodeStatement 
-       {
-               private CodeEventReferenceExpression eventRef;
-               private CodeExpression listener;
-
-               //
-               // Constructors
-               //
-               public CodeRemoveEventStatement ()
-               {
-               }
-
-               public CodeRemoveEventStatement (CodeEventReferenceExpression eventRef,
-                                                CodeExpression listener)
-               {
-                       this.eventRef = eventRef;
-                       this.listener = listener;
-               }
-
-               public CodeRemoveEventStatement (CodeExpression targetObject,
-                                                string eventName,
-                                                CodeExpression listener)
-               {
-                       this.eventRef = new CodeEventReferenceExpression( targetObject,
-                                                                         eventName );
-                       this.listener = listener;
-               }
-
-               //
-               // Properties
-               //
-               public CodeEventReferenceExpression Event {
-                       get {
-                               if (eventRef == null) {
-                                       eventRef = new CodeEventReferenceExpression ();
-                               }
-                               return eventRef;
-                       }
-                       set {
-                               eventRef = value;
-                       }
-               }
-
-               public CodeExpression Listener {
-                       get {
-                               return listener; 
-                       }
-                       set {
-                               listener = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom/CodeSnippetCompileUnit.cs b/mcs/class/System/System.CodeDom/CodeSnippetCompileUnit.cs
deleted file mode 100644 (file)
index 422ab2c..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// System.CodeDom CodeSnippetCompileUnit Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeSnippetCompileUnit
-               : CodeCompileUnit
-       {
-               private CodeLinePragma linePragma;
-               private string value;
-
-               //
-               // Constructors
-               //
-               public CodeSnippetCompileUnit ()
-               {
-               }
-
-               public CodeSnippetCompileUnit( string value )
-               {
-                       this.value = value;
-               }
-
-               //
-               // Properties
-               //
-               public CodeLinePragma LinePragma {
-                       get {
-                               return linePragma;
-                       }
-                       set {
-                               linePragma = value;
-                       }
-               }
-
-               public string Value {
-                       get {
-                               if (this.value == null) {
-                                       return string.Empty;
-                               }
-                               return this.value;
-                       }
-                       set {
-                               this.value = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeSnippetExpression.cs b/mcs/class/System/System.CodeDom/CodeSnippetExpression.cs
deleted file mode 100644 (file)
index 1fb8d86..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.CodeDom CodeSnippetExpression Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeSnippetExpression
-               : CodeExpression 
-       {
-               private string value;
-
-               //
-               // Constructors
-               //
-               public CodeSnippetExpression()
-               {
-               }
-
-               public CodeSnippetExpression( string value )
-               {
-                       this.value = value;
-               }
-               
-               //
-               // Properties
-               //
-               public string Value {
-                       get {
-                               if (this.value == null) {
-                                       return string.Empty;
-                               }
-                               return this.value;
-                       }
-                       set {
-                               this.value = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeSnippetStatement.cs b/mcs/class/System/System.CodeDom/CodeSnippetStatement.cs
deleted file mode 100644 (file)
index c717313..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// System.CodeDom CodeSnippetStatement Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeSnippetStatement
-               : CodeStatement 
-       {
-               private string value;
-
-               //
-               // Constructors
-               //
-               public CodeSnippetStatement()
-               {
-               }
-
-               public CodeSnippetStatement( string value )
-               {
-                       this.value = value;
-               }
-               
-               //
-               // Properties
-               //
-               public string Value {
-                       get {
-                               if (this.value == null) {
-                                       return string.Empty;
-                               }
-                               return this.value;
-                       }
-                       set {
-                               this.value = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeSnippetTypeMember.cs b/mcs/class/System/System.CodeDom/CodeSnippetTypeMember.cs
deleted file mode 100644 (file)
index b51cd8d..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.CodeDom CodeSnippetTypeMember Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeSnippetTypeMember
-               : CodeTypeMember
-       {
-               private string text;
-
-               //
-               // Constructors
-               //
-               public CodeSnippetTypeMember()
-               {
-               }
-               
-               public CodeSnippetTypeMember( string text )
-               {
-                       this.text = text;
-               }
-
-               //
-               // Properties
-               //
-               public string Text {
-                       get {
-                               if (text == null) {
-                                       return string.Empty;
-                               }
-                               return text;
-                       }
-                       set {
-                               text = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeStatement.cs b/mcs/class/System/System.CodeDom/CodeStatement.cs
deleted file mode 100644 (file)
index fa60b58..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.CodeDom CodeStatement class implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeStatement
-               : CodeObject
-       {
-               private CodeLinePragma linePragma;
-
-               CodeDirectiveCollection endDirectives;
-               CodeDirectiveCollection startDirectives;
-               
-               //
-               // Constructors
-               //
-               public CodeStatement()
-               {
-               }
-               
-               //
-               // Properties
-               //
-               public CodeLinePragma LinePragma {
-                       get {
-                               return linePragma;
-                       }
-                       set {
-                               linePragma = value;
-                       }
-               }
-
-               public CodeDirectiveCollection EndDirectives {
-                       get {
-                               if (endDirectives == null)
-                                       endDirectives = new CodeDirectiveCollection ();
-                               return endDirectives;
-                       }
-               }
-
-               public CodeDirectiveCollection StartDirectives {
-                       get {
-                               if (startDirectives == null)
-                                       startDirectives = new CodeDirectiveCollection ();
-                               return startDirectives;
-                       }
-               }
-
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeStatementCollection.cs b/mcs/class/System/System.CodeDom/CodeStatementCollection.cs
deleted file mode 100644 (file)
index 3183b58..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// System.CodeDom CodeStatementCollection Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeStatementCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeStatementCollection()
-               {
-               }
-
-               public CodeStatementCollection (CodeStatement[] value)
-               {
-                       AddRange (value);
-               }
-
-               public CodeStatementCollection (CodeStatementCollection value)
-               {
-                       AddRange (value);
-               }
-
-               //
-               // Properties
-               //
-               public CodeStatement this[int index]
-               {
-                       get {
-                               return (CodeStatement) List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeStatement value)
-               {
-                       return List.Add (value);
-               }
-
-               public int Add (CodeExpression value)
-               {
-                       return Add (new CodeExpressionStatement (value));
-               }
-
-               public void AddRange (CodeStatement [] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeStatementCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains (CodeStatement value)
-               {
-                       return List.Contains (value);
-               }
-               
-               public void CopyTo (CodeStatement[] array, int index)
-               {
-                       List.CopyTo (array, index);
-               }
-
-               public int IndexOf (CodeStatement value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, CodeStatement value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (CodeStatement value)
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeThisReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeThisReferenceExpression.cs
deleted file mode 100644 (file)
index 5decec3..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.CodeDom CodeParameterDeclarationExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeThisReferenceExpression
-               : CodeExpression 
-       {
-
-               //
-               // Constructors
-               //
-               public CodeThisReferenceExpression()
-               {
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeThrowExceptionStatement.cs b/mcs/class/System/System.CodeDom/CodeThrowExceptionStatement.cs
deleted file mode 100644 (file)
index 0865e96..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// System.CodeDom CodeThrowExceptionStatement Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeThrowExceptionStatement
-               : CodeStatement 
-       {
-               private CodeExpression toThrow;
-               
-               //
-               // Constructors
-               //
-               public CodeThrowExceptionStatement ()
-               {
-               }
-
-               public CodeThrowExceptionStatement (CodeExpression toThrow)
-               {
-                       this.toThrow = toThrow;
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression ToThrow {
-                       get {
-                               return toThrow;
-                       }
-                       set {
-                               toThrow = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTryCatchFinallyStatement.cs b/mcs/class/System/System.CodeDom/CodeTryCatchFinallyStatement.cs
deleted file mode 100644 (file)
index f74c0b6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// System.CodeDom CodeTryCatchFinallyStatement Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTryCatchFinallyStatement
-               : CodeStatement 
-       {
-               private CodeStatementCollection tryStatements, finallyStatements;
-               private CodeCatchClauseCollection catchClauses;
-               
-               //
-               // Constructors
-               //
-               public CodeTryCatchFinallyStatement ()
-               {
-               }
-               
-               public CodeTryCatchFinallyStatement (CodeStatement [] tryStatements,
-                                                    CodeCatchClause [] catchClauses)
-               {
-                       TryStatements.AddRange( tryStatements );
-                       CatchClauses.AddRange( catchClauses );
-               }
-
-               public CodeTryCatchFinallyStatement (CodeStatement [] tryStatements,
-                                                    CodeCatchClause [] catchClauses,
-                                                    CodeStatement [] finallyStatements)
-               {
-                       TryStatements.AddRange( tryStatements );
-                       CatchClauses.AddRange( catchClauses );
-                       FinallyStatements.AddRange( finallyStatements );
-               }
-
-               //
-               // Properties
-               //
-               public CodeStatementCollection FinallyStatements{
-                       get {
-                               if ( finallyStatements == null )
-                                       finallyStatements = new CodeStatementCollection();
-                               return finallyStatements;
-                       }
-               }
-
-               public CodeStatementCollection TryStatements {
-                       get {
-                               if ( tryStatements == null )
-                                       tryStatements = new CodeStatementCollection();
-                               return tryStatements;
-                       }
-               }
-               public CodeCatchClauseCollection CatchClauses {
-                       get {
-                               if ( catchClauses == null )
-                                       catchClauses = new CodeCatchClauseCollection();
-                               return catchClauses;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeConstructor.cs b/mcs/class/System/System.CodeDom/CodeTypeConstructor.cs
deleted file mode 100644 (file)
index 0226c07..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.CodeDom CodeTypeConstructor Class Implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//   
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeConstructor
-               : CodeMemberMethod
-       {
-               public CodeTypeConstructor ()
-               {
-                       this.Name = ".cctor";
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeDeclaration.cs b/mcs/class/System/System.CodeDom/CodeTypeDeclaration.cs
deleted file mode 100644 (file)
index f35ad1e..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// System.CodeDom CodeTypeDeclaration Class implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Reflection;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeDeclaration
-               : CodeTypeMember
-       {
-               private CodeTypeReferenceCollection baseTypes;
-               private CodeTypeMemberCollection members;
-               private TypeAttributes attributes = TypeAttributes.Public;
-               private bool isEnum;
-               private bool isStruct;
-               //int populated;
-
-               bool isPartial;
-               CodeTypeParameterCollection typeParameters;
-
-               //
-               // Constructors
-               //
-
-               public CodeTypeDeclaration()
-               {
-               }
-               
-               public CodeTypeDeclaration( string name )
-               {
-                       this.Name = name;
-               }
-
-               /* by default, it's a class */
-
-               //
-               // Properties
-               //
-               public CodeTypeReferenceCollection BaseTypes {
-                       get {
-                               if ( baseTypes == null ) {
-                                       baseTypes = new CodeTypeReferenceCollection();
-                                       if ( PopulateBaseTypes != null )
-                                               PopulateBaseTypes( this, EventArgs.Empty );
-                               }
-                               return baseTypes;
-                       }
-               }
-
-               public bool IsClass {
-                       get {
-                               if ( (attributes & TypeAttributes.Interface) != 0 )
-                                       return false;
-                               if ( isEnum )
-                                       return false;
-                               if ( isStruct )
-                                       return false;
-                               return true;
-                       }
-                       set {
-                               if ( value ) {
-                                       attributes &= ~TypeAttributes.Interface;
-                                       isEnum = false;
-                                       isStruct = false;
-                               }
-                       }
-               }
-               
-               public bool IsEnum {
-                       get {
-                               return isEnum;
-                       }
-                       set {
-                               if ( value ) {
-                                       attributes &= ~TypeAttributes.Interface;
-                                       isEnum = true;
-                                       isStruct = false;
-                               }
-                       }
-               }
-
-               public bool IsInterface {
-                       get {
-                               return (attributes & TypeAttributes.Interface) != 0;
-                       }
-                       set {
-                               if ( value ) {
-                                       attributes |= TypeAttributes.Interface;
-                                       isEnum = false;
-                                       isStruct = false;
-                               }
-                       }
-               }
-
-               public bool IsStruct {
-                       get {
-                               return isStruct;
-                       }
-                       set {
-                               if ( value ) {
-                                       attributes &= ~TypeAttributes.Interface;
-                                       isEnum = false;
-                                       isStruct = true;
-                               }
-                       }
-               }
-
-               public CodeTypeMemberCollection Members {
-                       get {
-                               if ( members == null ) {
-                                       members = new CodeTypeMemberCollection();
-                                       if ( PopulateMembers != null )
-                                               PopulateMembers( this, EventArgs.Empty );
-                               }
-                               return members;
-                       }
-               }
-
-               public TypeAttributes TypeAttributes {
-                       get {
-                               return attributes;
-                       }
-                       set {
-                               attributes = value;
-#if FALSE
-                               /* MS does not seem to do this, so don't I */
-                               if ( (attributes & TypeAttributes.Interface) != 0 ) {
-                                       isEnum = false;
-                                       isStruct = false;
-                               }
-#endif
-                       }
-               }
-
-               public bool IsPartial {
-                       get {
-                               return isPartial;
-                       }
-                       set {
-                               isPartial = value;
-                       }
-               }
-
-               [ComVisible (false)]
-               public CodeTypeParameterCollection TypeParameters {
-                       get {
-                               if (typeParameters == null)
-                                       typeParameters = new CodeTypeParameterCollection ();
-                               return typeParameters;
-                       }
-               }
-
-               //
-               // Events
-               // 
-               public event EventHandler PopulateBaseTypes;
-
-               public event EventHandler PopulateMembers;
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeDeclarationCollection.cs b/mcs/class/System/System.CodeDom/CodeTypeDeclarationCollection.cs
deleted file mode 100644 (file)
index 96dc1f4..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// System.CodeDom CodeTypeDeclarationCollection Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeDeclarationCollection 
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeTypeDeclarationCollection()
-               {
-               }
-
-               public CodeTypeDeclarationCollection( CodeTypeDeclaration[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeTypeDeclarationCollection( CodeTypeDeclarationCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeDeclaration this[int index]
-               {
-                       get {
-                               return (CodeTypeDeclaration)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeTypeDeclaration value)
-               {
-                       return List.Add (value);
-               }
-
-               public void AddRange (CodeTypeDeclaration [] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public void AddRange (CodeTypeDeclarationCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeTypeDeclaration value )
-               {
-                       return List.Contains( value );
-               }
-
-               public void CopyTo( CodeTypeDeclaration[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeTypeDeclaration value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeTypeDeclaration value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeTypeDeclaration value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeDelegate.cs b/mcs/class/System/System.CodeDom/CodeTypeDelegate.cs
deleted file mode 100644 (file)
index dab98d1..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// System.CodeDom CodeTypeDelegate Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeDelegate : CodeTypeDeclaration
-       {
-               private CodeParameterDeclarationExpressionCollection parameters;
-               private CodeTypeReference returnType;
-
-               //
-               // Constructors
-               //
-               public CodeTypeDelegate()
-               {
-                       base.BaseTypes.Add (new CodeTypeReference ("System.Delegate"));
-               }
-
-               public CodeTypeDelegate(string name) : this()
-               {
-                       this.Name = name;
-               }
-
-               //
-               // Properties
-               //
-               public CodeParameterDeclarationExpressionCollection Parameters {
-                       get {
-                               if (parameters == null) {
-                                       parameters = new CodeParameterDeclarationExpressionCollection ();
-                               }
-                               return parameters;
-                       }
-               }
-
-               public CodeTypeReference ReturnType {
-                       get {
-                               if (returnType == null) {
-                                       this.returnType = new CodeTypeReference(string.Empty);
-                               }
-                               return returnType;
-                       }
-                       set {
-                               returnType = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeMember.cs b/mcs/class/System/System.CodeDom/CodeTypeMember.cs
deleted file mode 100644 (file)
index c26fb96..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// System.CodeDom CodeTypeMember Class implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeMember
-               : CodeObject
-       {
-               private string name;
-               private MemberAttributes attributes;
-               private CodeCommentStatementCollection comments;
-               private CodeAttributeDeclarationCollection customAttributes;
-               private CodeLinePragma linePragma;
-               CodeDirectiveCollection endDirectives;
-               CodeDirectiveCollection startDirectives;
-
-               //
-               // Constructors
-               //
-               public CodeTypeMember()
-               {
-                       attributes = (MemberAttributes.Private | MemberAttributes.Final);
-               }
-               
-               //
-               // Properties
-               //
-               public MemberAttributes Attributes {
-                       get {
-                               return attributes;
-                       }
-                       set {
-                               attributes = value;
-                       }
-               }
-
-               public CodeCommentStatementCollection Comments {
-                       get {
-                               if ( comments == null )
-                                       comments = new CodeCommentStatementCollection();
-                               return comments;
-                       }
-               }
-
-               
-               public CodeAttributeDeclarationCollection CustomAttributes {
-                       get {
-                               if ( customAttributes == null )
-                                       customAttributes = new CodeAttributeDeclarationCollection();
-                               return customAttributes;
-                       }
-                       set {
-                               customAttributes = value;
-                       }
-               }
-
-               public CodeLinePragma LinePragma {
-                       get {
-                               return linePragma;
-                       }
-                       set {
-                               linePragma = value;
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (name == null)
-                                       return String.Empty;
-                               return name;
-                       }
-                       set {
-                               name = value;
-                       }
-               }
-
-               public CodeDirectiveCollection EndDirectives {
-                       get {
-                               if (endDirectives == null)
-                                       endDirectives = new CodeDirectiveCollection ();
-                               return endDirectives;
-                       }
-               }
-
-               public CodeDirectiveCollection StartDirectives {
-                       get {
-                               if (startDirectives == null)
-                                       startDirectives = new CodeDirectiveCollection ();
-                               return startDirectives;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeMemberCollection.cs b/mcs/class/System/System.CodeDom/CodeTypeMemberCollection.cs
deleted file mode 100644 (file)
index d1dee07..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// System.CodeDom CodeTypeMemberCollection Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeMemberCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeTypeMemberCollection()
-               {
-               }
-               
-               public CodeTypeMemberCollection( CodeTypeMember[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeTypeMemberCollection( CodeTypeMemberCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeMember this[int index]
-               {
-                       get {
-                               return (CodeTypeMember)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeTypeMember value)
-               {
-                       return List.Add( value );
-               }
-
-               public void AddRange (CodeTypeMember [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeTypeMemberCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeTypeMember value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeTypeMember[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeTypeMember value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeTypeMember value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeTypeMember value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeOfExpression.cs b/mcs/class/System/System.CodeDom/CodeTypeOfExpression.cs
deleted file mode 100644 (file)
index 09884d3..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.CodeDom CodeTypeOfExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeOfExpression
-               : CodeExpression 
-       {
-               private CodeTypeReference type;
-                       
-               //
-               // Constructors
-               //
-               public CodeTypeOfExpression () 
-               {
-               }
-
-               public CodeTypeOfExpression (CodeTypeReference type)
-               {
-                       this.type = type;
-               }
-
-               public CodeTypeOfExpression (string type)
-               {
-                       this.type = new CodeTypeReference( type );
-               }
-               
-               public CodeTypeOfExpression (Type type)
-               {
-                       this.type = new CodeTypeReference( type );
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReference Type {
-                       get {
-                               if (type == null) {
-                                       type = new CodeTypeReference (string.Empty);
-                               }
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeParameter.cs b/mcs/class/System/System.CodeDom/CodeTypeParameter.cs
deleted file mode 100644 (file)
index 43a9cd0..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.CodeDom CodeTypeParameter class
-//
-// Author:
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2004 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true), ClassInterface (ClassInterfaceType.AutoDispatch)]
-       public class CodeTypeParameter: CodeObject
-       {
-               CodeTypeReferenceCollection constraints;
-               CodeAttributeDeclarationCollection customAttributes;
-               bool hasConstructorConstraint;
-               string name;
-
-               public CodeTypeParameter () {}
-
-               public CodeTypeParameter (string name)
-               {
-                       this.name = name;
-               }
-
-               public CodeTypeReferenceCollection Constraints {
-                       get {
-                               if (constraints == null)
-                                       constraints = new CodeTypeReferenceCollection ();
-                               return constraints;
-                       }
-               }
-
-               public CodeAttributeDeclarationCollection CustomAttributes {
-                       get {
-                               if (customAttributes == null)
-                                       customAttributes = new CodeAttributeDeclarationCollection ();
-                               return customAttributes;
-                       }
-               }
-
-               public bool HasConstructorConstraint {
-                       get {
-                               return hasConstructorConstraint;
-                       }
-                       set {
-                               hasConstructorConstraint = value;
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (name == null) {
-                                       return string.Empty;
-                               }
-                               return name;
-                       }
-                       set {
-                               name = value;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeParameterCollection.cs b/mcs/class/System/System.CodeDom/CodeTypeParameterCollection.cs
deleted file mode 100644 (file)
index 942f097..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// System.CodeDom CodeTypeParameterCollection class
-//
-// Authors:
-//     Marek Safar (marek.safar@seznam.cz)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ComVisible (true), ClassInterface (ClassInterfaceType.AutoDispatch)]
-       public class CodeTypeParameterCollection: System.Collections.CollectionBase
-       {
-               public CodeTypeParameterCollection ()
-               {
-               }
-
-               public CodeTypeParameterCollection (CodeTypeParameter[] value)
-               {
-                       AddRange (value);
-               }
-
-               public CodeTypeParameterCollection (CodeTypeParameterCollection value)
-               {
-                       AddRange (value);
-               }
-
-               public int Add (CodeTypeParameter value)
-               {
-                       return List.Add (value);
-               }
-
-               public void Add (string value)
-               {
-                       List.Add (new CodeTypeParameter (value));
-               }
-
-               public void AddRange (CodeTypeParameter[] value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public void AddRange (CodeTypeParameterCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains (CodeTypeParameter value)
-               {
-                       return List.Contains (value);
-               }
-               
-               public void CopyTo (CodeTypeParameter[] array, int index)
-               {
-                       List.CopyTo (array, index);
-               }
-
-               public int IndexOf (CodeTypeParameter value)
-               {
-                       return List.IndexOf (value);
-               }
-
-               public void Insert (int index, CodeTypeParameter value)
-               {
-                       List.Insert (index, value);
-               }
-
-               public void Remove (CodeTypeParameter value)
-               {
-                       List.Remove (value);
-               }
-
-               public CodeTypeParameter this [int index]
-               {
-                       get {
-                               return ((CodeTypeParameter) List [index]);
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom/CodeTypeReference.cs b/mcs/class/System/System.CodeDom/CodeTypeReference.cs
deleted file mode 100644 (file)
index 49b9c45..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-//
-// System.CodeDom CodeTypeReferenceExpression Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeReference : CodeObject
-       {
-               private string baseType;
-               private CodeTypeReference arrayElementType;
-               private int arrayRank;
-               private bool isInterface;
-               //bool needsFixup;
-
-               CodeTypeReferenceCollection typeArguments;
-               CodeTypeReferenceOptions referenceOptions;
-
-               //
-               // Constructors
-               //
-
-               public CodeTypeReference ()
-               {
-               }
-
-               [MonoTODO("We should parse basetype from right to left in 2.0 profile.")]
-               public CodeTypeReference (string baseType)
-               {
-                       Parse (baseType);
-               }
-
-               [MonoTODO("We should parse basetype from right to left in 2.0 profile.")]
-               public CodeTypeReference (Type baseType)
-               {
-                       if (baseType == null) {
-                               throw new ArgumentNullException ("baseType");
-                       }
-
-                       if (baseType.IsGenericParameter) {
-                               this.baseType = baseType.Name;
-                               this.referenceOptions = CodeTypeReferenceOptions.GenericTypeParameter;
-                       }
-                       else if (baseType.IsGenericTypeDefinition)
-                               this.baseType = baseType.FullName;
-                       else if (baseType.IsGenericType) {
-                               this.baseType = baseType.GetGenericTypeDefinition ().FullName;
-                               foreach (Type arg in baseType.GetGenericArguments ()) {
-                                       if (arg.IsGenericParameter)
-                                               TypeArguments.Add (new CodeTypeReference (new CodeTypeParameter (arg.Name)));
-                                       else
-                                               TypeArguments.Add (new CodeTypeReference (arg));
-                               }
-                       }
-                       else if (baseType.IsArray) {
-                               this.arrayRank = baseType.GetArrayRank ();
-                               this.arrayElementType = new CodeTypeReference (baseType.GetElementType ());
-                               this.baseType = arrayElementType.BaseType;
-                       } else {
-                               Parse (baseType.FullName);
-                       }
-                       this.isInterface = baseType.IsInterface;
-               }
-
-               public CodeTypeReference( CodeTypeReference arrayElementType, int arrayRank )
-               {
-                       this.baseType = null;
-                       this.arrayRank = arrayRank;
-                       this.arrayElementType = arrayElementType;
-               }
-
-               [MonoTODO("We should parse basetype from right to left in 2.0 profile.")]
-               public CodeTypeReference( string baseType, int arrayRank )
-                       : this (new CodeTypeReference (baseType), arrayRank)
-               {
-               }
-
-               public CodeTypeReference( CodeTypeParameter typeParameter ) :
-                       this (typeParameter.Name)
-               {
-                       this.referenceOptions = CodeTypeReferenceOptions.GenericTypeParameter;
-               }
-
-               public CodeTypeReference( string typeName, CodeTypeReferenceOptions referenceOptions ) :
-                       this (typeName)
-               {
-                       this.referenceOptions = referenceOptions;
-               }
-
-               public CodeTypeReference( Type type, CodeTypeReferenceOptions referenceOptions ) :
-                       this (type)
-               {
-                       this.referenceOptions = referenceOptions;
-               }
-
-               public CodeTypeReference( string typeName, params CodeTypeReference[] typeArguments ) :
-                       this (typeName)
-               {
-                       TypeArguments.AddRange (typeArguments);
-                       if (this.baseType.IndexOf ('`') < 0)
-                               this.baseType += "`" + TypeArguments.Count;
-               }
-
-               //
-               // Properties
-               //
-
-               public CodeTypeReference ArrayElementType
-               {
-                       get {
-                               return arrayElementType;
-                       }
-                       set {
-                               arrayElementType = value;
-                       }
-               }
-               
-               public int ArrayRank {
-                       get {
-                               return arrayRank;
-                       }
-                       set {
-                               arrayRank = value;
-                       }
-               }
-
-               public string BaseType {
-                       get {
-                               if (arrayElementType != null && arrayRank > 0) {
-                                       return arrayElementType.BaseType;
-                               }
-
-                               if (baseType == null)
-                                       return String.Empty;
-
-                               return baseType;
-                       }
-                       set {
-                               baseType = value;
-                       }
-               }
-
-               internal bool IsInterface {
-                       get { return isInterface; }
-               }
-
-               private void Parse (string baseType)
-               {
-                       if (baseType == null || baseType.Length == 0) {
-                               this.baseType = typeof (void).FullName;
-                               return;
-                       }
-
-                       int array_start = baseType.IndexOf ('[');
-                       if (array_start == -1) {
-                               this.baseType = baseType;
-                               return;
-                       }
-
-                       int array_end = baseType.LastIndexOf (']');
-                       if (array_end < array_start) {
-                               this.baseType = baseType;
-                               return;
-                       }
-
-                       int lastAngle = baseType.LastIndexOf ('>');
-                       if (lastAngle != -1 && lastAngle > array_end) {
-                               this.baseType = baseType;
-                               return;
-                       }
-                       
-                       string[] args = baseType.Substring (array_start + 1, array_end - array_start - 1).Split (',');
-
-                       if ((array_end - array_start) != args.Length) {
-                               this.baseType = baseType.Substring (0, array_start);
-                               int escapeCount = 0;
-                               int scanPos = array_start;
-                               StringBuilder tb = new StringBuilder();
-                               while (scanPos < baseType.Length) {
-                                       char currentChar = baseType[scanPos];
-                                       
-                                       switch (currentChar) {
-                                               case '[':
-                                                       if (escapeCount > 1 && tb.Length > 0) {
-                                                               tb.Append (currentChar);
-                                                       }
-                                                       escapeCount++;
-                                                       break;
-                                               case ']':
-                                                       escapeCount--;
-                                                       if (escapeCount > 1 && tb.Length > 0) {
-                                                               tb.Append (currentChar);
-                                                       }
-
-                                                       if (tb.Length != 0 && (escapeCount % 2) == 0) {
-                                                               TypeArguments.Add (tb.ToString ());
-                                                               tb.Length = 0;
-                                                       }
-                                                       break;
-                                               case ',':
-                                                       if (escapeCount > 1) {
-                                                               // skip anything after the type name until we 
-                                                               // reach the next separator
-                                                               while (scanPos + 1 < baseType.Length) {
-                                                                       if (baseType[scanPos + 1] == ']') {
-                                                                               break;
-                                                                       }
-                                                                       scanPos++;
-                                                               }
-                                                       } else if (tb.Length > 0) {
-                                                               CodeTypeReference typeArg = new CodeTypeReference (tb.ToString ());
-                                                               TypeArguments.Add (typeArg);
-                                                               tb.Length = 0;
-                                                       }
-                                                       break;
-                                               default:
-                                                       tb.Append (currentChar);
-                                                       break;
-                                       }
-                                       scanPos++;
-                               }
-                       } else {
-                               arrayElementType = new CodeTypeReference (baseType.Substring (0, array_start));
-                               arrayRank = args.Length;
-                       }
-               }
-
-               [ComVisible (false)]
-               public CodeTypeReferenceOptions Options {
-                       get {
-                               return referenceOptions;
-                       }
-                       set {
-                               referenceOptions = value;
-                       }
-               }
-
-               [ComVisible (false)]
-               public CodeTypeReferenceCollection TypeArguments {
-                       get {
-                               if (typeArguments == null)
-                                       typeArguments = new CodeTypeReferenceCollection ();
-                               return typeArguments;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeReferenceCollection.cs b/mcs/class/System/System.CodeDom/CodeTypeReferenceCollection.cs
deleted file mode 100644 (file)
index 0212e4e..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// System.CodeDom CodeTypeReferenceCollection Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2002 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeReferenceCollection
-               : CollectionBase
-       {
-               //
-               // Constructors
-               //
-               public CodeTypeReferenceCollection()
-               {
-               }
-
-               public CodeTypeReferenceCollection( CodeTypeReference[] value )
-               {
-                       AddRange( value );
-               }
-
-               public CodeTypeReferenceCollection( CodeTypeReferenceCollection value )
-               {
-                       AddRange( value );
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReference this[int index]
-               {
-                       get {
-                               return (CodeTypeReference)List[index];
-                       }
-                       set {
-                               List[index] = value;
-                       }
-               }
-
-               //
-               // Methods
-               //
-               public int Add (CodeTypeReference value)
-               {
-                       return List.Add( value );
-               }
-
-               public void Add (string value)
-               {
-                       Add (new CodeTypeReference (value));
-               }
-
-               public void Add (Type value)
-               {
-                       Add (new CodeTypeReference (value));
-               }
-
-               public void AddRange (CodeTypeReference [] value )
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       for (int i = 0; i < value.Length; i++) {
-                               Add (value[i]);
-                       }
-               }
-               
-               public void AddRange (CodeTypeReferenceCollection value)
-               {
-                       if (value == null) {
-                               throw new ArgumentNullException ("value");
-                       }
-
-                       int count = value.Count;
-                       for (int i = 0; i < count; i++) {
-                               Add (value[i]);
-                       }
-               }
-
-               public bool Contains( CodeTypeReference value )
-               {
-                       return List.Contains( value );
-               }
-               
-               public void CopyTo( CodeTypeReference[] array, int index )
-               {
-                       List.CopyTo( array, index );
-               }
-
-               public int IndexOf( CodeTypeReference value )
-               {
-                       return List.IndexOf( value );
-               }
-
-               public void Insert( int index, CodeTypeReference value )
-               {
-                       List.Insert( index, value );
-               }
-
-               public void Remove( CodeTypeReference value )
-               {
-                       List.Remove (value);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeTypeReferenceExpression.cs
deleted file mode 100644 (file)
index ea71c9d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// System.CodeDom CodeTypeReferenceExpression Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeTypeReferenceExpression
-               : CodeExpression
-       {
-               private CodeTypeReference type;
-               
-               //
-               // Constructors
-               //
-               public CodeTypeReferenceExpression ()
-               {
-               }
-
-               public CodeTypeReferenceExpression (CodeTypeReference type)
-               {
-                       this.type = type;
-               }
-               
-               public CodeTypeReferenceExpression (string type)
-               {
-                       this.type = new CodeTypeReference( type );
-               }
-
-               public CodeTypeReferenceExpression (Type type)
-               {
-                       this.type = new CodeTypeReference( type );
-               }
-
-               //
-               // Properties
-               //
-               public CodeTypeReference Type {
-                       get {
-                               if (type == null) {
-                                       return new CodeTypeReference (string.Empty);
-                               }
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeTypeReferenceOptions.cs b/mcs/class/System/System.CodeDom/CodeTypeReferenceOptions.cs
deleted file mode 100644 (file)
index 8e3ee5b..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.CodeDom CodeTypeReferenceOptions enum
-//
-// Author:
-//   Marek Safar (marek.safar@seznam.cz)
-//
-// (C) 2004 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Flags]
-       [Serializable]
-       [ComVisible (true)]
-       public enum CodeTypeReferenceOptions
-       {
-               GlobalReference = 1,
-               GenericTypeParameter = 1 << 1
-       }
-}
-
diff --git a/mcs/class/System/System.CodeDom/CodeVariableDeclarationStatement.cs b/mcs/class/System/System.CodeDom/CodeVariableDeclarationStatement.cs
deleted file mode 100644 (file)
index 171faae..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-//
-// System.CodeDom CodeVariableDeclarationStatement Class implementation
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom 
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeVariableDeclarationStatement
-               : CodeStatement  
-       {
-               private CodeExpression initExpression;
-               private CodeTypeReference type;
-               private string name;
-
-               //
-               // Constructors
-               //
-               public CodeVariableDeclarationStatement () 
-               {
-               }
-
-               public CodeVariableDeclarationStatement( CodeTypeReference type, string name )
-               {
-                       this.type = type;
-                       this.name = name;
-               }
-               
-               public CodeVariableDeclarationStatement( string type, string name )
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.name = name;
-               }
-
-               public CodeVariableDeclarationStatement( Type type, string name )
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.name = name;
-               }
-
-               public CodeVariableDeclarationStatement( CodeTypeReference type, 
-                                                        string name,
-                                                        CodeExpression initExpression )
-               {
-                       this.type = type;
-                       this.name = name;
-                       this.initExpression = initExpression;
-               }
-
-               public CodeVariableDeclarationStatement( string type,
-                                                        string name, 
-                                                        CodeExpression initExpression )
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.name = name;
-                       this.initExpression = initExpression;
-               }
-
-               public CodeVariableDeclarationStatement( Type type, 
-                                                        string name, 
-                                                        CodeExpression initExpression )
-               {
-                       this.type = new CodeTypeReference( type );
-                       this.name = name;
-                       this.initExpression = initExpression;
-               }
-
-               //
-               // Properties
-               //
-               public CodeExpression InitExpression {
-                       get {
-                               return initExpression;
-                       }
-                       set {
-                               initExpression = value;
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (name == null) {
-                                       return string.Empty;
-                               }
-                               return name;
-                       }
-                       set {
-                               name = value;
-                       }
-               }
-
-               public CodeTypeReference Type {
-                       get {
-                               if (type == null) {
-                                       type = new CodeTypeReference (string.Empty);
-                               }
-                               return type;
-                       }
-                       set {
-                               type = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/CodeVariableReferenceExpression.cs b/mcs/class/System/System.CodeDom/CodeVariableReferenceExpression.cs
deleted file mode 100644 (file)
index 6731b7c..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.CodeDom CodeVariableReferenceExpression Class implementation
-//
-// Author:
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom
-{
-       [Serializable]
-       [ClassInterface(ClassInterfaceType.AutoDispatch)]
-       [ComVisible(true)]
-       public class CodeVariableReferenceExpression
-               : CodeExpression 
-       {
-               private string variableName;
-
-               //
-               // Constructors
-               //
-               public CodeVariableReferenceExpression() 
-               {
-               }
-
-               public CodeVariableReferenceExpression( string variableName )
-               {
-                       this.variableName = variableName;
-               }
-
-               //
-               // Properties
-               //
-               public string VariableName {
-                       get {
-                               if (variableName == null) {
-                                       return string.Empty;
-                               }
-                               return variableName;
-                       }
-                       set {
-                               variableName = value;
-                       }
-               }
-
-               //
-               // ICodeDomVisitor method
-               //
-               internal override void Accept (ICodeDomVisitor visitor)
-               {
-                       visitor.Visit (this);
-               }
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/FieldDirection.cs b/mcs/class/System/System.CodeDom/FieldDirection.cs
deleted file mode 100644 (file)
index eae8c1a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.CodeDom FieldDirection Enum implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-
-       [Serializable]
-       [ComVisible(true)]
-       public enum FieldDirection {
-               In,
-               Out,
-               Ref
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/ICodeDomVisitor.cs b/mcs/class/System/System.CodeDom/ICodeDomVisitor.cs
deleted file mode 100644 (file)
index bc568cd..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// System.CodeDom.ICodeDomVisitor.cs
-//
-// Author:
-//   Juraj Skripsky (js@hotfeet.ch)
-//
-// Copyright (C) 2008 HotFeet GmbH (http://www.hotfeet.ch)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.CodeDom {
-       internal interface ICodeDomVisitor {
-               // CodeExpression
-               void Visit (CodeArgumentReferenceExpression o);
-               void Visit (CodeArrayCreateExpression o);
-               void Visit (CodeArrayIndexerExpression o);
-               void Visit (CodeBaseReferenceExpression o);
-               void Visit (CodeBinaryOperatorExpression o);
-               void Visit (CodeCastExpression o);
-               void Visit (CodeDefaultValueExpression o);
-               void Visit (CodeDelegateCreateExpression o);
-               void Visit (CodeDelegateInvokeExpression o);
-               void Visit (CodeDirectionExpression o);
-               void Visit (CodeEventReferenceExpression o);
-               void Visit (CodeFieldReferenceExpression o);
-               void Visit (CodeIndexerExpression o);
-               void Visit (CodeMethodInvokeExpression o);
-               void Visit (CodeMethodReferenceExpression o);
-               void Visit (CodeObjectCreateExpression o);
-               void Visit (CodeParameterDeclarationExpression o);
-               void Visit (CodePrimitiveExpression o);
-               void Visit (CodePropertyReferenceExpression o);
-               void Visit (CodePropertySetValueReferenceExpression o);
-               void Visit (CodeSnippetExpression o);
-               void Visit (CodeThisReferenceExpression o);
-               void Visit (CodeTypeOfExpression o);
-               void Visit (CodeTypeReferenceExpression o);
-               void Visit (CodeVariableReferenceExpression o);
-
-               // CodeStatement
-               void Visit (CodeAssignStatement o);
-               void Visit (CodeAttachEventStatement o);
-               void Visit (CodeCommentStatement o);
-               void Visit (CodeConditionStatement o);
-               void Visit (CodeExpressionStatement o);
-               void Visit (CodeGotoStatement o);
-               void Visit (CodeIterationStatement o);
-               void Visit (CodeLabeledStatement o);
-               void Visit (CodeMethodReturnStatement o);
-               void Visit (CodeRemoveEventStatement o);
-               void Visit (CodeThrowExceptionStatement o);
-               void Visit (CodeTryCatchFinallyStatement o);
-               void Visit (CodeVariableDeclarationStatement o);
-
-               // CodeTypeMember
-               void Visit (CodeConstructor o);
-               void Visit (CodeEntryPointMethod o);
-               void Visit (CodeMemberEvent o);
-               void Visit (CodeMemberField o);
-               void Visit (CodeMemberMethod o);
-               void Visit (CodeMemberProperty o);
-               void Visit (CodeSnippetTypeMember o);
-               void Visit (CodeTypeConstructor o);
-       }
-}
diff --git a/mcs/class/System/System.CodeDom/MemberAttributes.cs b/mcs/class/System/System.CodeDom/MemberAttributes.cs
deleted file mode 100644 (file)
index 02c534f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.CodeDom MemberAttributes Enum implementation
-//
-// Author:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Daniel Stodden (stodden@in.tum.de)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.CodeDom {
-
-       [Serializable]
-       [ComVisible(true)]
-       public enum MemberAttributes {
-               Abstract =              0x00000001,
-               Final =                 0x00000002,
-               Static =                0x00000003,
-               Override =              0x00000004,
-               Const =                 0x00000005,
-               ScopeMask =             0x0000000F,
-
-               New =                   0x00000010,
-               VTableMask =            0x000000F0,
-
-               Overloaded =            0x00000100,
-
-               Assembly =              0x00001000, // internal
-               FamilyAndAssembly =     0x00002000, // protected AND internal
-               Family =                0x00003000, // protected
-               FamilyOrAssembly =      0x00004000, // protected internal
-               Private =               0x00005000, // private
-               Public =                0x00006000, // public
-               AccessMask =            0x0000F000
-       }
-}
index a394dc4fa78f55ec9c309f9004db034585b58d8b..73a01bf9ff6ed4195a9938a57bd2cbfce0bf8182 100644 (file)
@@ -38,6 +38,7 @@ using System.ComponentModel;
 using System.ComponentModel.Design;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using System.Runtime.Remoting.Messaging;
 using System.Security.Permissions;
 using System.Collections.Generic;
 using System.Security;
@@ -75,12 +76,14 @@ namespace System.Diagnostics {
                IntPtr process_handle;
                int pid;
                bool enableRaisingEvents;
-               bool already_waiting;
+               RegisteredWaitHandle exitWaitHandle;
                ISynchronizeInvoke synchronizingObject;
                EventHandler exited_event;
                IntPtr stdout_rd;
                IntPtr stderr_rd;
-               
+
+               object thisLock = new Object ();
+
                /* Private constructor called from other methods */
                private Process(IntPtr handle, int id) {
                        process_handle=handle;
@@ -102,12 +105,30 @@ namespace System.Diagnostics {
 
                void StartExitCallbackIfNeeded ()
                {
-                       bool start = (!already_waiting && enableRaisingEvents && exited_event != null);
-                       if (start && process_handle != IntPtr.Zero) {
-                               WaitOrTimerCallback cb = new WaitOrTimerCallback (CBOnExit);
-                               ProcessWaitHandle h = new ProcessWaitHandle (process_handle);
-                               ThreadPool.RegisterWaitForSingleObject (h, cb, this, -1, true);
-                               already_waiting = true;
+                       lock (thisLock) {
+                               bool start = (exitWaitHandle == null && enableRaisingEvents && exited_event != null);
+                               if (start && process_handle != IntPtr.Zero) {
+                                       WaitOrTimerCallback cb = new WaitOrTimerCallback (CBOnExit);
+                                       ProcessWaitHandle h = new ProcessWaitHandle (process_handle);
+                                       exitWaitHandle = ThreadPool.RegisterWaitForSingleObject (h, cb, this, -1, true);
+                               }
+                       }
+               }
+
+               void UnregisterExitCallback ()
+               {
+                       lock (thisLock) {
+                               if (exitWaitHandle != null) {
+                                       exitWaitHandle.Unregister (null);
+                                       exitWaitHandle = null;
+                               }
+                       }
+               }
+
+               bool IsExitCallbackPending ()
+               {
+                       lock (thisLock) {
+                               return exitWaitHandle != null;
                        }
                }
 
@@ -1257,7 +1278,13 @@ namespace System.Diagnostics {
                                                return false;
                                }
                        }
-                       return WaitForExit_internal (process_handle, ms);
+
+                       bool exited = WaitForExit_internal (process_handle, ms);
+
+                       if (exited)
+                               OnExited ();
+
+                       return exited;
                }
 
                /* Waits up to ms milliseconds for process 'handle' to 
@@ -1315,7 +1342,7 @@ namespace System.Diagnostics {
                }
 
                [StructLayout (LayoutKind.Sequential)]
-               sealed class ProcessAsyncReader
+               sealed class ProcessAsyncReader : IThreadPoolWorkItem
                {
                        /*
                           The following fields match those of SocketAsyncResult.
@@ -1352,7 +1379,7 @@ namespace System.Diagnostics {
                        bool err_out; // true -> stdout, false -> stderr
                        internal int error;
                        public int operation = 8; // MAGIC NUMBER: see Socket.cs:AsyncOperation
-                       public object ares;
+                       public AsyncResult async_result;
                        public int EndCalled;
 
                        // These fields are not in SocketAsyncResult
@@ -1456,6 +1483,15 @@ namespace System.Diagnostics {
                        public void Close () {
                                stream.Close ();
                        }
+
+                       void IThreadPoolWorkItem.ExecuteWorkItem()
+                       {
+                               async_result.Invoke ();
+                       }
+
+                       void IThreadPoolWorkItem.MarkAborted(ThreadAbortException tae)
+                       {
+                       }
                }
 
                AsyncModes async_mode;
@@ -1560,7 +1596,7 @@ namespace System.Diagnostics {
                                // dispose all managed resources.
                                if(disposing) {
                                        // Do stuff here
-                                       lock (this) {
+                                       lock (thisLock) {
                                                /* These have open FileStreams on the pipes we are about to close */
                                                if (async_output != null)
                                                        async_output.Close ();
@@ -1586,7 +1622,7 @@ namespace System.Diagnostics {
                                
                                // Release unmanaged resources
 
-                               lock(this) {
+                               lock (thisLock) {
                                        if(process_handle!=IntPtr.Zero) {
                                                Process_free_internal(process_handle);
                                                process_handle=IntPtr.Zero;
@@ -1604,15 +1640,31 @@ namespace System.Diagnostics {
                static void CBOnExit (object state, bool unused)
                {
                        Process p = (Process) state;
-                       p.already_waiting = false;
+
+                       if (!p.IsExitCallbackPending ())
+                               return;
+
+                       if (!p.HasExited) {
+                               p.UnregisterExitCallback ();
+                               p.StartExitCallbackIfNeeded ();
+                               return;
+                       }
+
                        p.OnExited ();
                }
 
+               int on_exited_called = 0;
+
                protected void OnExited() 
                {
                        if (exited_event == null)
                                return;
 
+                       if (on_exited_called != 0 || Interlocked.CompareExchange (ref on_exited_called, 1, 0) != 0)
+                               return;
+
+                       UnregisterExitCallback ();
+
                        if (synchronizingObject == null) {
                                foreach (EventHandler d in exited_event.GetInvocationList ()) {
                                        try {
index 7ead35f82e26fef53a04061def19ab708b158b5b..2eb2cd34a53cbf4051c279acc2696a3e4d740f45 100644 (file)
@@ -420,7 +420,7 @@ namespace System.IO {
                                return pathData;
 
                        if (fdsDict.Count >= maxFds)
-                               throw new IOException ("kqueue() FileSystemWatcher has reached the maximum nunmber of files to watch."); 
+                               throw new IOException ("kqueue() FileSystemWatcher has reached the maximum number of files to watch."); 
 
                        var fd = open (path, O_EVTONLY, 0);
 
index 9c9d8d751280f29fb9e163b4ffdc332051ff0863..00f14114077d259e3d7956be41c6f2074d686e4e 100644 (file)
@@ -32,24 +32,6 @@ namespace System.Net.Sockets {
                {
                }
 
-               bool closii;
-
-               /*protected override void Dispose (bool disposing)
-               {
-                       lock (this) {
-                               if (!closii) {
-
-                                       closii = true;
-                                       int error = 0;
-                                       Socket.Blocking_internal (handle, false, out error);
-                                       //AbortRegisteredThreads ();
-                                       Socket.Close_internal (handle, out error);
-                                       //Console.Error.WriteLine ("Closed "+ handle);
-                               }
-                       }
-                       base.Dispose (disposing);
-               }*/
-
                protected override bool ReleaseHandle ()
                {
                        int error = 0;
index f3a1102f464f37eb0c6effe6466f80d57387fe4f..2038a079c67cfcfd38ffa72238a2aaae8c11e23e 100644 (file)
@@ -6,6 +6,7 @@
 //     Gonzalo Paniagua Javier (gonzalo@ximian.com)
 //     Sridhar Kulkarni (sridharkulkarni@gmail.com)
 //     Brian Nickel (brian.nickel@gmail.com)
+//     Ludovic Henry (ludovic@xamarin.com)
 //
 // Copyright (C) 2001, 2002 Phillip Pearson and Ximian, Inc.
 //    http://www.myelin.co.nz
@@ -50,215 +51,338 @@ namespace System.Net.Sockets
 {
        public partial class Socket : IDisposable
        {
-               private bool islistening;
-               private bool useoverlappedIO;
-               private const int SOCKET_CLOSED = 10004;
+               const int SOCKET_CLOSED_CODE = 10004;
+               const string TIMEOUT_EXCEPTION_MSG = "A connection attempt failed because the connected party did not properly respond" +
+                       "after a period of time, or established connection failed because connected host has failed to respond";
 
-               private static readonly string timeout_exc_msg = "A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond";
+               /*
+                *      These two fields are looked up by name by the runtime, don't change
+                *  their name without also updating the runtime code.
+                */
+               static int ipv4_supported = -1;
+               static int ipv6_supported = -1;
 
-               static void AddSockets (List<Socket> sockets, IList list, string name)
+               /* true if we called Close_internal */
+               bool is_closed;
+
+               bool is_listening;
+               bool use_overlapped_io;
+
+               int linger_timeout;
+
+               AddressFamily address_family;
+               SocketType socket_type;
+               ProtocolType protocol_type;
+
+               /* the field "safe_handle" is looked up by name by the runtime */
+               internal SafeSocketHandle safe_handle;
+
+               /*
+                * This EndPoint is used when creating new endpoints. Because
+                * there are many types of EndPoints possible,
+                * seed_endpoint.Create(addr) is used for creating new ones.
+                * As such, this value is set on Bind, SentTo, ReceiveFrom,
+                * Connect, etc.
+                */
+               internal EndPoint seed_endpoint = null;
+
+               internal Queue<SocketAsyncWorker> readQ = new Queue<SocketAsyncWorker> (2);
+               internal Queue<SocketAsyncWorker> writeQ = new Queue<SocketAsyncWorker> (2);
+
+               internal bool is_blocking = true;
+               internal bool is_bound;
+
+               /* When true, the socket was connected at the time of the last IO operation */
+               internal bool is_connected;
+
+               internal bool is_disposed;
+               internal bool connect_in_progress;
+
+#region Constructors
+
+               static Socket ()
                {
-                       if (list != null) {
-                               foreach (Socket sock in list) {
-                                       if (sock == null) // MS throws a NullRef
-                                               throw new ArgumentNullException ("name", "Contains a null element");
-                                       sockets.Add (sock);
+                       if (ipv4_supported == -1) {
+                               try {
+                                       Socket tmp = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+                                       tmp.Close();
+
+                                       ipv4_supported = 1;
+                               } catch {
+                                       ipv4_supported = 0;
                                }
                        }
 
-                       sockets.Add (null);
+                       if (ipv6_supported == -1) {
+                               // We need to put a try/catch around ConfigurationManager methods as will always throw an exception 
+                               // when run in a mono embedded application.  This occurs as embedded applications do not have a setup
+                               // for application config.  The exception is not thrown when called from a normal .NET application. 
+                               //
+                               // We, then, need to guard calls to the ConfigurationManager.  If the config is not found or throws an
+                               // exception, will fall through to the existing Socket / API directly below in the code.
+                               //
+                               // Also note that catching ConfigurationErrorsException specifically would require library dependency
+                               // System.Configuration, and wanted to avoid that.
+#if !NET_2_1
+#if CONFIGURATION_DEP
+                               try {
+                                       SettingsSection config;
+                                       config = (SettingsSection) System.Configuration.ConfigurationManager.GetSection ("system.net/settings");
+                                       if (config != null)
+                                               ipv6_supported = config.Ipv6.Enabled ? -1 : 0;
+                               } catch {
+                                       ipv6_supported = -1;
+                               }
+#else
+                               try {
+                                       NetConfig config = System.Configuration.ConfigurationSettings.GetConfig("system.net/settings") as NetConfig;
+                                       if (config != null)
+                                               ipv6_supported = config.ipv6Enabled ? -1 : 0;
+                               } catch {
+                                       ipv6_supported = -1;
+                               }
+#endif
+#endif
+                               if (ipv6_supported != 0) {
+                                       try {
+                                               Socket tmp = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
+                                               tmp.Close();
+
+                                               ipv6_supported = 1;
+                                       } catch {
+                                               ipv6_supported = 0;
+                                       }
+                               }
+                       }
                }
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void Select_internal (ref Socket [] sockets,
-                                                       int microSeconds,
-                                                       out int error);
-               public static void Select (IList checkRead, IList checkWrite, IList checkError, int microSeconds)
-               {
-                       var list = new List<Socket> ();
-                       AddSockets (list, checkRead, "checkRead");
-                       AddSockets (list, checkWrite, "checkWrite");
-                       AddSockets (list, checkError, "checkError");
 
-                       if (list.Count == 3) {
-                               throw new ArgumentNullException ("checkRead, checkWrite, checkError",
-                                                                "All the lists are null or empty.");
+               //
+               // This constructor is used by servers that want to listen for instance on both
+               // ipv4 and ipv6.   Mono has historically done that if you use InterNetworkV6 (at
+               // least on Unix), because that is the default behavior unless the IPV6_V6ONLY
+               // option is explicitly set by using setsockopt (sock, IPPROTO_IPV6, IPV6_ONLY)
+               //
+               public Socket (SocketType socketType, ProtocolType protocolType)
+                       : this (AddressFamily.InterNetworkV6, socketType, protocolType)
+               {
+                       DualMode = true;
+               }
+               
+               public Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
+               {
+#if NET_2_1 && !MOBILE
+                       switch (addressFamily) {
+                       case AddressFamily.InterNetwork:    // ok
+                       case AddressFamily.InterNetworkV6:  // ok
+                       case AddressFamily.Unknown:         // SocketException will be thrown later (with right error #)
+                               break;
+                       // case AddressFamily.Unspecified:
+                       default:
+                               throw new ArgumentException ("addressFamily");
+                       }
+
+                       switch (socketType) {
+                       case SocketType.Stream:             // ok
+                       case SocketType.Unknown:            // SocketException will be thrown later (with right error #)
+                               break;
+                       default:
+                               throw new ArgumentException ("socketType");
+                       }
+
+                       switch (protocolType) {
+                       case ProtocolType.Tcp:              // ok
+                       case ProtocolType.Unspecified:      // ok
+                       case ProtocolType.Unknown:          // SocketException will be thrown later (with right error #)
+                               break;
+                       default:
+                               throw new ArgumentException ("protocolType");
                        }
-
+#endif
+                       this.address_family = addressFamily;
+                       this.socket_type = socketType;
+                       this.protocol_type = protocolType;
+                       
                        int error;
-                       /*
-                        * The 'sockets' array contains: READ socket 0-n, null,
-                        *                               WRITE socket 0-n, null,
-                        *                               ERROR socket 0-n, null
-                        */
-                       Socket [] sockets = list.ToArray ();
-                       Select_internal (ref sockets, microSeconds, out error);
+                       var handle = Socket_internal (addressFamily, socketType, protocolType, out error);
+
+                       this.safe_handle = new SafeSocketHandle (handle, true);
 
                        if (error != 0)
                                throw new SocketException (error);
 
-                       if (sockets == null) {
-                               if (checkRead != null)
-                                       checkRead.Clear ();
-                               if (checkWrite != null)
-                                       checkWrite.Clear ();
-                               if (checkError != null)
-                                       checkError.Clear ();
-                               return;
-                       }
+#if !NET_2_1 || MOBILE
+                       SocketDefaults ();
+#endif
+               }
 
-                       int mode = 0;
-                       int count = sockets.Length;
-                       IList currentList = checkRead;
-                       int currentIdx = 0;
-                       for (int i = 0; i < count; i++) {
-                               Socket sock = sockets [i];
-                               if (sock == null) { // separator
-                                       if (currentList != null) {
-                                               // Remove non-signaled sockets after the current one
-                                               int to_remove = currentList.Count - currentIdx;
-                                               for (int k = 0; k < to_remove; k++)
-                                                       currentList.RemoveAt (currentIdx);
-                                       }
-                                       currentList = (mode == 0) ? checkWrite : checkError;
-                                       currentIdx = 0;
-                                       mode++;
-                                       continue;
-                               }
+#if !MOBILE
+               public Socket (SocketInformation socketInformation)
+               {
+                       this.is_listening      = (socketInformation.Options & SocketInformationOptions.Listening) != 0;
+                       this.is_connected      = (socketInformation.Options & SocketInformationOptions.Connected) != 0;
+                       this.is_blocking       = (socketInformation.Options & SocketInformationOptions.NonBlocking) == 0;
+                       this.use_overlapped_io = (socketInformation.Options & SocketInformationOptions.UseOnlyOverlappedIO) != 0;
 
-                               if (mode == 1 && currentList == checkWrite && !sock.connected) {
-                                       if ((int) sock.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error) == 0)
-                                               sock.connected = true;
-                               }
+                       var result = Mono.DataConverter.Unpack ("iiiil", socketInformation.ProtocolInformation, 0);
 
-                               // Remove non-signaled sockets before the current one
-                               //int max = currentList.Count;
-                               while (((Socket) currentList [currentIdx]) != sock) {
-                                       currentList.RemoveAt (currentIdx);
-                               }
-                               currentIdx++;
-                       }
+                       this.address_family = (AddressFamily) (int) result [0];
+                       this.socket_type = (SocketType) (int) result [1];
+                       this.protocol_type = (ProtocolType) (int) result [2];
+                       this.is_bound = (ProtocolType) (int) result [3] != 0;
+                       this.safe_handle = new SafeSocketHandle ((IntPtr) (long) result [4], true);
+
+                       SocketDefaults ();
                }
+#endif
 
-               // private constructor used by Accept, which already
-               // has a socket handle to use
-               internal Socket(AddressFamily family, SocketType type,
-                              ProtocolType proto, SafeSocketHandle sock)
+               /* private constructor used by Accept, which already has a socket handle to use */
+               internal Socket(AddressFamily family, SocketType type, ProtocolType proto, SafeSocketHandle safe_handle)
                {
-                       address_family=family;
-                       socket_type=type;
-                       protocol_type=proto;
+                       this.address_family = family;
+                       this.socket_type = type;
+                       this.protocol_type = proto;
                        
-                       socket=sock;
-                       connected=true;
+                       this.safe_handle = safe_handle;
+                       this.is_connected = true;
+               }
+
+               ~Socket ()
+               {
+                       Dispose (false);
                }
 
-               private void SocketDefaults ()
+               void SocketDefaults ()
                {
                        try {
-                               if (address_family == AddressFamily.InterNetwork /* Need to test IPv6 further ||
-                                                                                  address_family == AddressFamily.InterNetworkV6 */) {
-                                       /* This is the default, but it
-                                        * probably has nasty side
-                                        * effects on Linux, as the
-                                        * socket option is kludged by
-                                        * turning on or off PMTU
-                                        * discovery...
-                                        */
+                               /* Need to test IPv6 further */
+                               if (address_family == AddressFamily.InterNetwork
+                                       // || address_family == AddressFamily.InterNetworkV6
+                               ) {
+                                       /* This is the default, but it probably has nasty side
+                                        * effects on Linux, as the socket option is kludged by
+                                        * turning on or off PMTU discovery... */
                                        this.DontFragment = false;
                                }
 
-                               //
-                               // Microsoft sets these to 8192, but we are going to keep them
-                               // both to the OS defaults as these have a big performance impact.
-                               // on WebClient performance.
-                               //
-                               //this.ReceiveBufferSize = 8192;
-                               //this.SendBufferSize = 8192;
+                               /* Microsoft sets these to 8192, but we are going to keep them
+                                * both to the OS defaults as these have a big performance impact.
+                                * on WebClient performance. */
+                               // this.ReceiveBufferSize = 8192;
+                               // this.SendBufferSize = 8192;
                        } catch (SocketException) {
                        }
                }
 
-#if !MOBILE
-               public Socket (SocketInformation socketInformation)
-               {
-                       var options = socketInformation.Options;
-                       islistening = (options & SocketInformationOptions.Listening) != 0;
-                       connected   = (options & SocketInformationOptions.Connected) != 0;
-                       blocking    = (options & SocketInformationOptions.NonBlocking) == 0;
-                       useoverlappedIO = (options & SocketInformationOptions.UseOnlyOverlappedIO) != 0;
+               /* Creates a new system socket, returning the handle */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern IntPtr Socket_internal (AddressFamily family, SocketType type, ProtocolType proto, out int error);
 
-                       var result = Mono.DataConverter.Unpack ("iiiil", socketInformation.ProtocolInformation, 0);
-                       
-                       address_family = (AddressFamily) (int) result [0];
-                       socket_type = (SocketType) (int) result [1];
-                       protocol_type = (ProtocolType) (int) result [2];
-                       isbound = (ProtocolType) (int) result [3] != 0;
-                       socket = new SafeSocketHandle ((IntPtr) (long) result [4], true);
-                       SocketDefaults ();
+#endregion
+
+#region Properties
+
+               [ObsoleteAttribute ("Use OSSupportsIPv4 instead")]
+               public static bool SupportsIPv4 {
+                       get { return ipv4_supported == 1; }
+               }
+
+               [ObsoleteAttribute ("Use OSSupportsIPv6 instead")]
+               public static bool SupportsIPv6 {
+                       get { return ipv6_supported == 1; }
+               }
+
+#if NET_2_1
+               public static bool OSSupportsIPv4 {
+                       get { return ipv4_supported == 1; }
+               }
+#else
+               public static bool OSSupportsIPv4 {
+                       get {
+                               NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces ();
+
+                               foreach (NetworkInterface adapter in nics) {
+                                       if (adapter.Supports (NetworkInterfaceComponent.IPv4))
+                                               return true;
+                               }
+
+                               return false;
+                       }
                }
 #endif
-       
-               // Returns the amount of data waiting to be read on socket
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static int Available_internal(IntPtr socket, out int error);
 
-               private static int Available_internal (SafeSocketHandle safeHandle, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               return Available_internal (safeHandle.DangerousGetHandle (), out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
+#if NET_2_1
+               public static bool OSSupportsIPv6 {
+                       get { return ipv6_supported == 1; }
+               }
+#else
+               public static bool OSSupportsIPv6 {
+                       get {
+                               NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces ();
+
+                               foreach (NetworkInterface adapter in nics) {
+                                       if (adapter.Supports (NetworkInterfaceComponent.IPv6))
+                                               return true;
+                               }
+
+                               return false;
                        }
                }
+#endif
 
                public int Available {
                        get {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
+                               ThrowIfDisposedAndClosed ();
 
                                int ret, error;
-                               
-                               ret = Available_internal(socket, out error);
+                               ret = Available_internal (safe_handle, out error);
 
                                if (error != 0)
                                        throw new SocketException (error);
 
-                               return(ret);
+                               return ret;
                        }
                }
 
+               static int Available_internal (SafeSocketHandle safeHandle, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               return Available_internal (safeHandle.DangerousGetHandle (), out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
+
+               /* Returns the amount of data waiting to be read on socket */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static int Available_internal (IntPtr socket, out int error);
 
                public bool DontFragment {
                        get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-
-                               bool dontfragment;
-                               
-                               if (address_family == AddressFamily.InterNetwork) {
-                                       dontfragment = (int)(GetSocketOption (SocketOptionLevel.IP, SocketOptionName.DontFragment)) != 0;
-                               } else if (address_family == AddressFamily.InterNetworkV6) {
-                                       dontfragment = (int)(GetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.DontFragment)) != 0;
-                               } else {
+                               ThrowIfDisposedAndClosed ();
+
+                               switch (address_family) {
+                               case AddressFamily.InterNetwork:
+                                       return ((int) GetSocketOption (SocketOptionLevel.IP, SocketOptionName.DontFragment)) != 0;
+                               case AddressFamily.InterNetworkV6:
+                                       return ((int) GetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.DontFragment)) != 0;
+                               default:
                                        throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
                                }
-                               
-                               return(dontfragment);
                        }
                        set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-
-                               if (address_family == AddressFamily.InterNetwork) {
-                                       SetSocketOption (SocketOptionLevel.IP, SocketOptionName.DontFragment, value?1:0);
-                               } else if (address_family == AddressFamily.InterNetworkV6) {
-                                       SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.DontFragment, value?1:0);
-                               } else {
+                               ThrowIfDisposedAndClosed ();
+
+                               switch (address_family) {
+                               case AddressFamily.InterNetwork:
+                                       SetSocketOption (SocketOptionLevel.IP, SocketOptionName.DontFragment, value ? 1 : 0);
+                                       break;
+                               case AddressFamily.InterNetworkV6:
+                                       SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.DontFragment, value ? 1 : 0);
+                                       break;
+                               default:
                                        throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
                                }
                        }
@@ -266,186 +390,145 @@ namespace System.Net.Sockets
 
                public bool EnableBroadcast {
                        get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
+                               ThrowIfDisposedAndClosed ();
 
-                               if (protocol_type != ProtocolType.Udp) {
-                                       throw new SocketException ((int)SocketError.ProtocolOption);
-                               }
-                               
-                               return((int)(GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Broadcast)) != 0);
+                               if (protocol_type != ProtocolType.Udp)
+                                       throw new SocketException ((int) SocketError.ProtocolOption);
+
+                               return ((int) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Broadcast)) != 0;
                        }
                        set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
+                               ThrowIfDisposedAndClosed ();
 
-                               if (protocol_type != ProtocolType.Udp) {
-                                       throw new SocketException ((int)SocketError.ProtocolOption);
-                               }
+                               if (protocol_type != ProtocolType.Udp)
+                                       throw new SocketException ((int) SocketError.ProtocolOption);
 
-                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Broadcast, value?1:0);
+                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Broadcast, value ? 1 : 0);
                        }
                }
-               
+
                public bool ExclusiveAddressUse {
                        get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
+                               ThrowIfDisposedAndClosed ();
 
-                               return((int)(GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ExclusiveAddressUse)) != 0);
+                               return ((int) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ExclusiveAddressUse)) != 0;
                        }
                        set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               if (isbound) {
+                               ThrowIfDisposedAndClosed ();
+
+                               if (is_bound)
                                        throw new InvalidOperationException ("Bind has already been called for this socket");
-                               }
-                               
-                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ExclusiveAddressUse, value?1:0);
+
+                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ExclusiveAddressUse, value ? 1 : 0);
                        }
                }
-               
+
                public bool IsBound {
                        get {
-                               return(isbound);
+                               return is_bound;
                        }
                }
-               
+
                public LingerOption LingerState {
                        get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
+                               ThrowIfDisposedAndClosed ();
 
-                               return((LingerOption)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger));
+                               return (LingerOption) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger);
                        }
                        set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               
-                               SetSocketOption (SocketOptionLevel.Socket,
-                                                SocketOptionName.Linger,
-                                                value);
+                               ThrowIfDisposedAndClosed ();
+                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger, value);
                        }
                }
-               
+
                public bool MulticastLoopback {
                        get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-
-                               /* Even though this option can be set
-                                * for TCP sockets on Linux, throw
-                                * this exception anyway to be
-                                * compatible (the MSDN docs say
-                                * "Setting this property on a
-                                * Transmission Control Protocol (TCP)
-                                * socket will have no effect." but
-                                * the MS runtime throws the
-                                * exception...)
-                                */
-                               if (protocol_type == ProtocolType.Tcp) {
+                               ThrowIfDisposedAndClosed ();
+
+                               /* Even though this option can be set for TCP sockets on Linux, throw
+                                * this exception anyway to be compatible (the MSDN docs say
+                                * "Setting this property on a Transmission Control Protocol (TCP)
+                                * socket will have no effect." but the MS runtime throws the
+                                * exception...) */
+                               if (protocol_type == ProtocolType.Tcp)
                                        throw new SocketException ((int)SocketError.ProtocolOption);
-                               }
-                               
-                               bool multicastloopback;
-                               
-                               if (address_family == AddressFamily.InterNetwork) {
-                                       multicastloopback = (int)(GetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastLoopback)) != 0;
-                               } else if (address_family == AddressFamily.InterNetworkV6) {
-                                       multicastloopback = (int)(GetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.MulticastLoopback)) != 0;
-                               } else {
+
+                               switch (address_family) {
+                               case AddressFamily.InterNetwork:
+                                       return ((int) GetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastLoopback)) != 0;
+                               case AddressFamily.InterNetworkV6:
+                                       return ((int) GetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.MulticastLoopback)) != 0;
+                               default:
                                        throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
                                }
-                               
-                               return(multicastloopback);
                        }
                        set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-
-                               /* Even though this option can be set
-                                * for TCP sockets on Linux, throw
-                                * this exception anyway to be
-                                * compatible (the MSDN docs say
-                                * "Setting this property on a
-                                * Transmission Control Protocol (TCP)
-                                * socket will have no effect." but
-                                * the MS runtime throws the
-                                * exception...)
-                                */
-                               if (protocol_type == ProtocolType.Tcp) {
+                               ThrowIfDisposedAndClosed ();
+
+                               /* Even though this option can be set for TCP sockets on Linux, throw
+                                * this exception anyway to be compatible (the MSDN docs say
+                                * "Setting this property on a Transmission Control Protocol (TCP)
+                                * socket will have no effect." but the MS runtime throws the
+                                * exception...) */
+                               if (protocol_type == ProtocolType.Tcp)
                                        throw new SocketException ((int)SocketError.ProtocolOption);
-                               }
-                               
-                               if (address_family == AddressFamily.InterNetwork) {
-                                       SetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastLoopback, value?1:0);
-                               } else if (address_family == AddressFamily.InterNetworkV6) {
-                                       SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.MulticastLoopback, value?1:0);
-                               } else {
+
+                               switch (address_family) {
+                               case AddressFamily.InterNetwork:
+                                       SetSocketOption (SocketOptionLevel.IP, SocketOptionName.MulticastLoopback, value ? 1 : 0);
+                                       break;
+                               case AddressFamily.InterNetworkV6:
+                                       SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.MulticastLoopback, value ? 1 : 0);
+                                       break;
+                               default:
                                        throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
                                }
                        }
                }
-               
-               
-               [MonoTODO ("This doesn't do anything on Mono yet")]
-               public bool UseOnlyOverlappedIO {
+
+               public bool DualMode {
                        get {
-                               return(useoverlappedIO);
+                               if (AddressFamily != AddressFamily.InterNetworkV6) 
+                                       throw new NotSupportedException("This protocol version is not supported");
+
+                               return ((int)GetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only) == 0);
                        }
                        set {
-                               useoverlappedIO = value;
+                               if (AddressFamily != AddressFamily.InterNetworkV6) 
+                                       throw new NotSupportedException("This protocol version is not supported");
+
+                               SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, value ? 0 : 1);
                        }
                }
 
-               public IntPtr Handle {
+               private bool IsDualMode {
                        get {
-                               return(socket.DangerousGetHandle ());
+                               return AddressFamily == AddressFamily.InterNetworkV6 && DualMode;
                        }
                }
 
-               // Returns the local endpoint details in addr and port
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static SocketAddress LocalEndPoint_internal(IntPtr socket, int family, out int error);
+               [MonoTODO ("This doesn't do anything on Mono yet")]
+               public bool UseOnlyOverlappedIO {
+                       get { return use_overlapped_io; }
+                       set { use_overlapped_io = value; }
+               }
 
-               private static SocketAddress LocalEndPoint_internal(SafeSocketHandle safeHandle, int family, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               return LocalEndPoint_internal (safeHandle.DangerousGetHandle (), family, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
+               public IntPtr Handle {
+                       get { return safe_handle.DangerousGetHandle (); }
                }
 
                // Wish:  support non-IP endpoints.
                public EndPoint LocalEndPoint {
                        get {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               
-                               /*
-                                * If the seed EndPoint is null, Connect, Bind,
-                                * etc has not yet been called. MS returns null
-                                * in this case.
-                                */
+                               ThrowIfDisposedAndClosed ();
+
+                               /* If the seed EndPoint is null, Connect, Bind, etc has not yet
+                                * been called. MS returns null in this case. */
                                if (seed_endpoint == null)
                                        return null;
-                               
-                               SocketAddress sa;
+
                                int error;
-                               
-                               sa=LocalEndPoint_internal(socket, (int) address_family, out error);
+                               SocketAddress sa = LocalEndPoint_internal (safe_handle, (int) address_family, out error);
 
                                if (error != 0)
                                        throw new SocketException (error);
@@ -454,222 +537,472 @@ namespace System.Net.Sockets
                        }
                }
 
-               public SocketType SocketType {
-                       get {
-                               return(socket_type);
+               static SocketAddress LocalEndPoint_internal (SafeSocketHandle safeHandle, int family, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               return LocalEndPoint_internal (safeHandle.DangerousGetHandle (), family, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
                        }
                }
 
+               /* Returns the local endpoint details in addr and port */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static SocketAddress LocalEndPoint_internal (IntPtr socket, int family, out int error);
+
+               public SocketType SocketType {
+                       get { return socket_type; }
+               }
+
                public int SendTimeout {
                        get {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
+                               ThrowIfDisposedAndClosed ();
 
-                               return (int)GetSocketOption(
-                                       SocketOptionLevel.Socket,
-                                       SocketOptionName.SendTimeout);
+                               return (int) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout);
                        }
                        set {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
+                               ThrowIfDisposedAndClosed ();
 
                                if (value < -1)
                                        throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than -1");
 
-                               /* According to the MSDN docs we
-                                * should adjust values between 1 and
-                                * 499 to 500, but the MS runtime
-                                * doesn't do this.
-                                */
+                               /* According to the MSDN docs we should adjust values between 1 and
+                                * 499 to 500, but the MS runtime doesn't do this. */
                                if (value == -1)
                                        value = 0;
 
-                               SetSocketOption(
-                                       SocketOptionLevel.Socket,
-                                       SocketOptionName.SendTimeout, value);
+                               SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, value);
                        }
                }
 
                public int ReceiveTimeout {
                        get {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
+                               ThrowIfDisposedAndClosed ();
 
-                               return (int)GetSocketOption(
-                                       SocketOptionLevel.Socket,
-                                       SocketOptionName.ReceiveTimeout);
+                               return (int) GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout);
                        }
                        set {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
+                               ThrowIfDisposedAndClosed ();
 
                                if (value < -1)
                                        throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than -1");
 
-                               if (value == -1) {
+                               if (value == -1)
                                        value = 0;
-                               }
-                               
-                               SetSocketOption(
-                                       SocketOptionLevel.Socket,
-                                       SocketOptionName.ReceiveTimeout, value);
+
+                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, value);
                        }
                }
 
-               public bool AcceptAsync (SocketAsyncEventArgs e)
-               {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       if (!IsBound)
-                               throw new InvalidOperationException ("You must call the Bind method before performing this operation.");
-                       if (!islistening)
-                               throw new InvalidOperationException ("You must call the Listen method before performing this operation.");
-                       if (e.BufferList != null)
-                               throw new ArgumentException ("Multiple buffers cannot be used with this method.");
-                       if (e.Count < 0)
-                               throw new ArgumentOutOfRangeException ("e.Count");
+               public AddressFamily AddressFamily {
+                       get { return address_family; }
+               }
 
-                       Socket acceptSocket = e.AcceptSocket;
-                       if (acceptSocket != null) {
-                               if (acceptSocket.IsBound || acceptSocket.Connected)
-                                       throw new InvalidOperationException ("AcceptSocket: The socket must not be bound or connected.");
-                       }
+               public bool Blocking {
+                       get { return is_blocking; }
+                       set {
+                               ThrowIfDisposedAndClosed ();
 
-                       e.curSocket = this;
-                       Worker w = e.Worker;
-                       w.Init (this, e, SocketOperation.Accept);
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (e.Worker);
-                               count = readQ.Count;
+                               int error;
+                               Blocking_internal (safe_handle, value, out error);
+
+                               if (error != 0)
+                                       throw new SocketException (error);
+
+                               is_blocking = value;
                        }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, w.result);
-                       return true;
                }
-               // Creates a new system socket, returning the handle
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static IntPtr Accept_internal(IntPtr sock, out int error, bool blocking);
 
-               private static SafeSocketHandle Accept_internal(SafeSocketHandle safeHandle, out int error, bool blocking)
+               static void Blocking_internal (SafeSocketHandle safeHandle, bool block, out int error)
                {
+                       bool release = false;
                        try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               var ret = Accept_internal (safeHandle.DangerousGetHandle (), out error, blocking);
-                               return new SafeSocketHandle (ret, true);
+                               safeHandle.DangerousAddRef (ref release);
+                               Blocking_internal (safeHandle.DangerousGetHandle (), block, out error);
                        } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
+                               if (release)
+                                       safeHandle.DangerousRelease ();
                        }
                }
 
-               public Socket Accept() {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal extern static void Blocking_internal(IntPtr socket, bool block, out int error);
+
+               public bool Connected {
+                       get { return is_connected; }
+                       internal set { is_connected = value; }
+               }
+
+               public ProtocolType ProtocolType {
+                       get { return protocol_type; }
+               }
+
+               public bool NoDelay {
+                       get {
+                               ThrowIfDisposedAndClosed ();
+                               ThrowIfUdp ();
+
+                               return ((int) GetSocketOption (SocketOptionLevel.Tcp, SocketOptionName.NoDelay)) != 0;
+                       }
+
+                       set {
+                               ThrowIfDisposedAndClosed ();
+                               ThrowIfUdp ();
+
+                               SetSocketOption (SocketOptionLevel.Tcp, SocketOptionName.NoDelay, value ? 1 : 0);
+                       }
+               }
+
+               public int ReceiveBufferSize {
+                       get {
+                               ThrowIfDisposedAndClosed ();
+
+                               return (int) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer);
+                       }
+                       set {
+                               ThrowIfDisposedAndClosed ();
+
+                               if (value < 0)
+                                       throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
+
+                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, value);
+                       }
+               }
+
+               public int SendBufferSize {
+                       get {
+                               ThrowIfDisposedAndClosed ();
+
+                               return (int) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendBuffer);
+                       }
+                       set {
+                               ThrowIfDisposedAndClosed ();
+
+                               if (value < 0)
+                                       throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
+
+                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendBuffer, value);
+                       }
+               }
+
+               public short Ttl {
+                       get {
+                               ThrowIfDisposedAndClosed ();
+
+                               switch (address_family) {
+                               case AddressFamily.InterNetwork:
+                                       return (short) (int) GetSocketOption (SocketOptionLevel.IP, SocketOptionName.IpTimeToLive);
+                               case AddressFamily.InterNetworkV6:
+                                       return (short) (int) GetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.HopLimit);
+                               default:
+                                       throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
+                               }
+                       }
+                       set {
+                               ThrowIfDisposedAndClosed ();
+
+                               if (value < 0)
+                                       throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
+
+                               switch (address_family) {
+                               case AddressFamily.InterNetwork:
+                                       SetSocketOption (SocketOptionLevel.IP, SocketOptionName.IpTimeToLive, value);
+                                       break;
+                               case AddressFamily.InterNetworkV6:
+                                       SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.HopLimit, value);
+                                       break;
+                               default:
+                                       throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
+                               }
+                       }
+               }
+
+               public EndPoint RemoteEndPoint {
+                       get {
+                               ThrowIfDisposedAndClosed ();
+
+                               /* If the seed EndPoint is null, Connect, Bind, etc has
+                                * not yet been called. MS returns null in this case. */
+                               if (!is_connected || seed_endpoint == null)
+                                       return null;
+
+                               int error;
+                               SocketAddress sa = RemoteEndPoint_internal (safe_handle, (int) address_family, out error);
+
+                               if (error != 0)
+                                       throw new SocketException (error);
+
+                               return seed_endpoint.Create (sa);
+                       }
+               }
+
+               static SocketAddress RemoteEndPoint_internal (SafeSocketHandle safeHandle, int family, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               return RemoteEndPoint_internal (safeHandle.DangerousGetHandle (), family, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
+
+               /* Returns the remote endpoint details in addr and port */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static SocketAddress RemoteEndPoint_internal (IntPtr socket, int family, out int error);
+
+#endregion
+
+#region Select
+
+               public static void Select (IList checkRead, IList checkWrite, IList checkError, int microSeconds)
+               {
+                       var list = new List<Socket> ();
+                       AddSockets (list, checkRead, "checkRead");
+                       AddSockets (list, checkWrite, "checkWrite");
+                       AddSockets (list, checkError, "checkError");
+
+                       if (list.Count == 3)
+                               throw new ArgumentNullException ("checkRead, checkWrite, checkError", "All the lists are null or empty.");
+
+                       /* The 'sockets' array contains:
+                        *  - READ socket 0-n, null,
+                        *  - WRITE socket 0-n, null,
+                        *  - ERROR socket 0-n, null */
+                       Socket [] sockets = list.ToArray ();
+
+                       int error;
+                       Select_internal (ref sockets, microSeconds, out error);
+
+                       if (error != 0)
+                               throw new SocketException (error);
+
+                       if (sockets == null) {
+                               if (checkRead != null)
+                                       checkRead.Clear ();
+                               if (checkWrite != null)
+                                       checkWrite.Clear ();
+                               if (checkError != null)
+                                       checkError.Clear ();
+                               return;
+                       }
+
+                       int mode = 0;
+                       int count = sockets.Length;
+                       IList currentList = checkRead;
+                       int currentIdx = 0;
+                       for (int i = 0; i < count; i++) {
+                               Socket sock = sockets [i];
+                               if (sock == null) { // separator
+                                       if (currentList != null) {
+                                               // Remove non-signaled sockets after the current one
+                                               int to_remove = currentList.Count - currentIdx;
+                                               for (int k = 0; k < to_remove; k++)
+                                                       currentList.RemoveAt (currentIdx);
+                                       }
+                                       currentList = (mode == 0) ? checkWrite : checkError;
+                                       currentIdx = 0;
+                                       mode++;
+                                       continue;
+                               }
+
+                               if (mode == 1 && currentList == checkWrite && !sock.is_connected) {
+                                       if ((int) sock.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error) == 0)
+                                               sock.is_connected = true;
+                               }
+
+                               /* Remove non-signaled sockets before the current one */
+                               while (((Socket) currentList [currentIdx]) != sock)
+                                       currentList.RemoveAt (currentIdx);
+
+                               currentIdx++;
+                       }
+               }
+
+               static void AddSockets (List<Socket> sockets, IList list, string name)
+               {
+                       if (list != null) {
+                               foreach (Socket sock in list) {
+                                       if (sock == null) // MS throws a NullRef
+                                               throw new ArgumentNullException ("name", "Contains a null element");
+                                       sockets.Add (sock);
+                               }
+                       }
+
+                       sockets.Add (null);
+               }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void Select_internal (ref Socket [] sockets, int microSeconds, out int error);
+
+#endregion
+
+#region Poll
+
+               public bool Poll (int time_us, SelectMode mode)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (mode != SelectMode.SelectRead && mode != SelectMode.SelectWrite && mode != SelectMode.SelectError)
+                               throw new NotSupportedException ("'mode' parameter is not valid.");
+
+                       int error;
+                       bool result = Poll_internal (safe_handle, mode, time_us, out error);
+
+                       if (error != 0)
+                               throw new SocketException (error);
+
+                       if (mode == SelectMode.SelectWrite && result && !is_connected) {
+                               /* Update the is_connected state; for non-blocking Connect()
+                                * this is when we can find out that the connect succeeded. */
+                               if ((int) GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error) == 0)
+                                       is_connected = true;
+                       }
+
+                       return result;
+               }
+
+               static bool Poll_internal (SafeSocketHandle safeHandle, SelectMode mode, int timeout, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               return Poll_internal (safeHandle.DangerousGetHandle (), mode, timeout, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static bool Poll_internal (IntPtr socket, SelectMode mode, int timeout, out int error);
+
+#endregion
+
+#region Accept
+
+               public Socket Accept()
+               {
+                       ThrowIfDisposedAndClosed ();
 
                        int error = 0;
-                       var sock = Accept_internal(socket, out error, blocking);
+                       SafeSocketHandle safe_handle = Accept_internal (this.safe_handle, out error, is_blocking);
 
                        if (error != 0) {
-                               if (closed)
-                                       error = SOCKET_CLOSED;
+                               if (is_closed)
+                                       error = SOCKET_CLOSED_CODE;
                                throw new SocketException(error);
                        }
 
-                       Socket accepted = new Socket(this.AddressFamily, this.SocketType,
-                               this.ProtocolType, sock);
+                       Socket accepted = new Socket (this.AddressFamily, this.SocketType, this.ProtocolType, safe_handle) {
+                               seed_endpoint = this.seed_endpoint,
+                               Blocking = this.Blocking,
+                       };
 
-                       accepted.seed_endpoint = this.seed_endpoint;
-                       accepted.Blocking = this.Blocking;
-                       return(accepted);
+                       return accepted;
                }
 
                internal void Accept (Socket acceptSocket)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       
+                       ThrowIfDisposedAndClosed ();
+
                        int error = 0;
-                       var sock = Accept_internal (socket, out error, blocking);
-                       
+                       SafeSocketHandle safe_handle = Accept_internal (this.safe_handle, out error, is_blocking);
+
                        if (error != 0) {
-                               if (closed)
-                                       error = SOCKET_CLOSED;
+                               if (is_closed)
+                                       error = SOCKET_CLOSED_CODE;
                                throw new SocketException (error);
                        }
-                       
+
                        acceptSocket.address_family = this.AddressFamily;
                        acceptSocket.socket_type = this.SocketType;
                        acceptSocket.protocol_type = this.ProtocolType;
-                       acceptSocket.socket = sock;
-                       acceptSocket.connected = true;
+                       acceptSocket.safe_handle = safe_handle;
+                       acceptSocket.is_connected = true;
                        acceptSocket.seed_endpoint = this.seed_endpoint;
                        acceptSocket.Blocking = this.Blocking;
 
-                       /* FIXME: figure out what if anything else
-                        * needs to be reset
-                        */
+                       // FIXME: figure out what if anything else needs to be reset
+               }
+
+               public bool AcceptAsync (SocketAsyncEventArgs e)
+               {
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
+
+                       ThrowIfDisposedAndClosed ();
+
+                       if (!is_bound)
+                               throw new InvalidOperationException ("You must call the Bind method before performing this operation.");
+                       if (!is_listening)
+                               throw new InvalidOperationException ("You must call the Listen method before performing this operation.");
+                       if (e.BufferList != null)
+                               throw new ArgumentException ("Multiple buffers cannot be used with this method.");
+                       if (e.Count < 0)
+                               throw new ArgumentOutOfRangeException ("e.Count");
+
+                       Socket acceptSocket = e.AcceptSocket;
+                       if (acceptSocket != null) {
+                               if (acceptSocket.is_bound || acceptSocket.is_connected)
+                                       throw new InvalidOperationException ("AcceptSocket: The socket must not be bound or connected.");
+                       }
+
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, SocketOperation.Accept);
+
+                       SocketAsyncResult sockares = e.Worker.result;
+
+                       QueueSocketAsyncResult (readQ, e.Worker, sockares);
+
+                       return true;
                }
 
                public IAsyncResult BeginAccept(AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       if (!isbound || !islistening)
+                       if (!is_bound || !is_listening)
                                throw new InvalidOperationException ();
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Accept);
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (req.Worker);
-                               count = readQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.Accept);
+
+                       QueueSocketAsyncResult (readQ, sockares.Worker, sockares);
+
+                       return sockares;
                }
 
-               public IAsyncResult BeginAccept (int receiveSize,
-                                                AsyncCallback callback,
-                                                object state)
+               public IAsyncResult BeginAccept (int receiveSize, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
                        if (receiveSize < 0)
                                throw new ArgumentOutOfRangeException ("receiveSize", "receiveSize is less than zero");
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.AcceptReceive);
-                       req.Buffer = new byte[receiveSize];
-                       req.Offset = 0;
-                       req.Size = receiveSize;
-                       req.SockFlags = SocketFlags.None;
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (req.Worker);
-                               count = readQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.AcceptReceive) {
+                               Buffer = new byte [receiveSize],
+                               Offset = 0,
+                               Size = receiveSize,
+                               SockFlags = SocketFlags.None,
+                       };
+
+                       QueueSocketAsyncResult (readQ, sockares.Worker, sockares);
+
+                       return sockares;
                }
 
-               public IAsyncResult BeginAccept (Socket acceptSocket,
-                                                int receiveSize,
-                                                AsyncCallback callback,
-                                                object state)
+               public IAsyncResult BeginAccept (Socket acceptSocket, int receiveSize, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
                        if (receiveSize < 0)
                                throw new ArgumentOutOfRangeException ("receiveSize", "receiveSize is less than zero");
 
                        if (acceptSocket != null) {
-                               if (acceptSocket.disposed && acceptSocket.closed)
-                                       throw new ObjectDisposedException (acceptSocket.GetType ().ToString ());
+                               ThrowIfDisposedAndClosed (acceptSocket);
 
                                if (acceptSocket.IsBound)
                                        throw new InvalidOperationException ();
@@ -683,1538 +1016,2110 @@ namespace System.Net.Sockets
                                        throw new SocketException ((int)SocketError.InvalidArgument);
                        }
                        
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.AcceptReceive);
-                       req.Buffer = new byte[receiveSize];
-                       req.Offset = 0;
-                       req.Size = receiveSize;
-                       req.SockFlags = SocketFlags.None;
-                       req.AcceptSocket = acceptSocket;
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (req.Worker);
-                               count = readQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return(req);
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.AcceptReceive) {
+                               Buffer = new byte [receiveSize],
+                               Offset = 0,
+                               Size = receiveSize,
+                               SockFlags = SocketFlags.None,
+                               AcceptSocket = acceptSocket,
+                       };
+
+                       QueueSocketAsyncResult (readQ, sockares.Worker, sockares);
+
+                       return sockares;
                }
 
-               public IAsyncResult BeginConnect (IPAddress address, int port,
-                                                 AsyncCallback callback,
-                                                 object state)
+               public Socket EndAccept (IAsyncResult result)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       int bytes;
+                       byte[] buffer;
+                       return EndAccept (out buffer, out bytes, result);
+               }
 
-                       if (address == null)
-                               throw new ArgumentNullException ("address");
+               public Socket EndAccept (out byte[] buffer, IAsyncResult asyncResult)
+               {
+                       int bytes;
+                       return EndAccept (out buffer, out bytes, asyncResult);
+               }
 
-                       if (address.ToString ().Length == 0)
-                               throw new ArgumentException ("The length of the IP address is zero");
+               public Socket EndAccept (out byte[] buffer, out int bytesTransferred, IAsyncResult asyncResult)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (asyncResult, "EndAccept", "asyncResult");
+
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne ();
+
+                       sockares.CheckIfThrowDelayedException ();
+
+                       buffer = sockares.Buffer;
+                       bytesTransferred = sockares.Total;
+
+                       return sockares.Socket;
+               }
+
+               static SafeSocketHandle Accept_internal (SafeSocketHandle safeHandle, out int error, bool blocking)
+               {
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               var ret = Accept_internal (safeHandle.DangerousGetHandle (), out error, blocking);
+                               return new SafeSocketHandle (ret, true);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
+                       }
+               }
+
+               /* Creates a new system socket, returning the handle */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static IntPtr Accept_internal (IntPtr sock, out int error, bool blocking);
+
+#endregion
+
+#region Bind
+
+               public void Bind (EndPoint local_end)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (local_end == null)
+                               throw new ArgumentNullException("local_end");
+
+                       int error;
+                       Bind_internal (safe_handle, local_end.Serialize(), out error);
+
+                       if (error != 0)
+                               throw new SocketException (error);
+                       if (error == 0)
+                               is_bound = true;
+
+                       seed_endpoint = local_end;
+               }
+
+               private static void Bind_internal (SafeSocketHandle safeHandle, SocketAddress sa, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               Bind_internal (safeHandle.DangerousGetHandle (), sa, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
+
+               // Creates a new system socket, returning the handle
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               private extern static void Bind_internal(IntPtr sock, SocketAddress sa, out int error);
+
+#endregion
+
+#region Listen
+
+               public void Listen (int backlog)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (!is_bound)
+                               throw new SocketException ((int) SocketError.InvalidArgument);
+
+                       int error;
+                       Listen_internal(safe_handle, backlog, out error);
+
+                       if (error != 0)
+                               throw new SocketException (error);
+
+                       is_listening = true;
+               }
+
+               static void Listen_internal (SafeSocketHandle safeHandle, int backlog, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               Listen_internal (safeHandle.DangerousGetHandle (), backlog, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void Listen_internal (IntPtr sock, int backlog, out int error);
+
+#endregion
+
+#region Connect
+
+               public void Connect (IPAddress address, int port)
+               {
+                       Connect (new IPEndPoint (address, port));
+               }
+
+               public void Connect (string host, int port)
+               {
+                       Connect (Dns.GetHostAddresses (host), port);
+               }
+
+               public void Connect (IPAddress[] addresses, int port)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (addresses == null)
+                               throw new ArgumentNullException ("addresses");
+                       if (this.AddressFamily != AddressFamily.InterNetwork && this.AddressFamily != AddressFamily.InterNetworkV6)
+                               throw new NotSupportedException ("This method is only valid for addresses in the InterNetwork or InterNetworkV6 families");
+                       if (is_listening)
+                               throw new InvalidOperationException ();
+
+                       // FIXME: do non-blocking sockets Poll here?
+                       int error = 0;
+                       foreach (IPAddress address in addresses) {
+                               IPEndPoint iep = new IPEndPoint (address, port);
+
+                               Connect_internal (safe_handle, iep.Serialize (), out error);
+                               if (error == 0) {
+                                       is_connected = true;
+                                       is_bound = true;
+                                       seed_endpoint = iep;
+                                       return;
+                               }
+                               if (error != (int)SocketError.InProgress && error != (int)SocketError.WouldBlock)
+                                       continue;
+
+                               if (!is_blocking) {
+                                       Poll (-1, SelectMode.SelectWrite);
+                                       error = (int)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
+                                       if (error == 0) {
+                                               is_connected = true;
+                                               is_bound = true;
+                                               seed_endpoint = iep;
+                                               return;
+                                       }
+                               }
+                       }
+
+                       if (error != 0)
+                               throw new SocketException (error);
+               }
+
+
+               public void Connect (EndPoint remoteEP)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (remoteEP == null)
+                               throw new ArgumentNullException ("remoteEP");
+
+                       IPEndPoint ep = remoteEP as IPEndPoint;
+                       /* Dgram uses Any to 'disconnect' */
+                       if (ep != null && socket_type != SocketType.Dgram) {
+                               if (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any))
+                                       throw new SocketException ((int) SocketError.AddressNotAvailable);
+                       }
+
+                       if (is_listening)
+                               throw new InvalidOperationException ();
+
+                       SocketAddress serial = remoteEP.Serialize ();
+
+                       int error = 0;
+                       Connect_internal (safe_handle, serial, out error);
+
+                       if (error == 0 || error == 10035)
+                               seed_endpoint = remoteEP; // Keep the ep around for non-blocking sockets
+
+                       if (error != 0) {
+                               if (is_closed)
+                                       error = SOCKET_CLOSED_CODE;
+                               throw new SocketException (error);
+                       }
+
+                       is_connected = !(socket_type == SocketType.Dgram && ep != null && (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any)));
+                       is_bound = true;
+               }
+
+               public bool ConnectAsync (SocketAsyncEventArgs e)
+               {
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
+
+                       ThrowIfDisposedAndClosed ();
+
+                       if (is_listening)
+                               throw new InvalidOperationException ("You may not perform this operation after calling the Listen method.");
+                       if (e.RemoteEndPoint == null)
+                               throw new ArgumentNullException ("remoteEP");
+
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, SocketOperation.Connect);
+
+                       SocketAsyncResult result = e.Worker.result;
+
+                       try {
+                               IPAddress [] addresses;
+                               IAsyncResult ares;
+
+                               if (!GetCheckedIPs (e, out addresses)) {
+                                       result.EndPoint = e.RemoteEndPoint;
+                                       ares = BeginConnect (e.RemoteEndPoint, SocketAsyncEventArgs.Dispatcher, e);
+                               } else {
+                                       DnsEndPoint dep = (e.RemoteEndPoint as DnsEndPoint);
+                                       result.Addresses = addresses;
+                                       result.Port = dep.Port;
+                                       ares = BeginConnect (addresses, dep.Port, SocketAsyncEventArgs.Dispatcher, e);
+                               }
+
+                               if (ares.IsCompleted && ares.CompletedSynchronously) {
+                                       ((SocketAsyncResult) ares).CheckIfThrowDelayedException ();
+                                       return false;
+                               }
+                       } catch (Exception exc) {
+                               result.Complete (exc, true);
+                               return false;
+                       }
+
+                       return true;
+               }
+
+               public IAsyncResult BeginConnect (IPAddress address, int port, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (address == null)
+                               throw new ArgumentNullException ("address");
+                       if (address.ToString ().Length == 0)
+                               throw new ArgumentException ("The length of the IP address is zero");
+                       if (port <= 0 || port > 65535)
+                               throw new ArgumentOutOfRangeException ("port", "Must be > 0 and < 65536");
+                       if (is_listening)
+                               throw new InvalidOperationException ();
+
+                       return BeginConnect (new IPEndPoint (address, port), callback, state);
+               }
+
+               public IAsyncResult BeginConnect (string host, int port, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (host == null)
+                               throw new ArgumentNullException ("host");
+                       if (address_family != AddressFamily.InterNetwork && address_family != AddressFamily.InterNetworkV6)
+                               throw new NotSupportedException ("This method is valid only for sockets in the InterNetwork and InterNetworkV6 families");
+                       if (port <= 0 || port > 65535)
+                               throw new ArgumentOutOfRangeException ("port", "Must be > 0 and < 65536");
+                       if (is_listening)
+                               throw new InvalidOperationException ();
+
+                       return BeginConnect (Dns.GetHostAddresses (host), port, callback, state);
+               }
+
+               public IAsyncResult BeginConnect (EndPoint end_point, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (end_point == null)
+                               throw new ArgumentNullException ("end_point");
+
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.Connect) {
+                               EndPoint = end_point,
+                       };
+
+                       // Bug #75154: Connect() should not succeed for .Any addresses.
+                       if (end_point is IPEndPoint) {
+                               IPEndPoint ep = (IPEndPoint) end_point;
+                               if (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any)) {
+                                       sockares.Complete (new SocketException ((int) SocketError.AddressNotAvailable), true);
+                                       return sockares;
+                               }
+                       }
+
+                       int error = 0;
+
+                       if (connect_in_progress) {
+                               // This could happen when multiple IPs are used
+                               // Calling connect() again will reset the connection attempt and cause
+                               // an error. Better to just close the socket and move on.
+                               connect_in_progress = false;
+                               safe_handle.Dispose ();
+                               var handle = Socket_internal (address_family, socket_type, protocol_type, out error);
+                               safe_handle = new SafeSocketHandle (handle, true);
+                               if (error != 0)
+                                       throw new SocketException (error);
+                       }
+
+                       bool blk = is_blocking;
+                       if (blk)
+                               Blocking = false;
+                       Connect_internal (safe_handle, end_point.Serialize (), out error);
+                       if (blk)
+                               Blocking = true;
+
+                       if (error == 0) {
+                               // succeeded synch
+                               is_connected = true;
+                               is_bound = true;
+                               sockares.Complete (true);
+                               return sockares;
+                       }
+
+                       if (error != (int) SocketError.InProgress && error != (int) SocketError.WouldBlock) {
+                               // error synch
+                               is_connected = false;
+                               is_bound = false;
+                               sockares.Complete (new SocketException (error), true);
+                               return sockares;
+                       }
+
+                       // continue asynch
+                       is_connected = false;
+                       is_bound = false;
+                       connect_in_progress = true;
+
+                       socket_pool_queue (SocketAsyncWorker.Dispatcher, sockares);
+
+                       return sockares;
+               }
+
+               public IAsyncResult BeginConnect (IPAddress[] addresses, int port, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (addresses == null)
+                               throw new ArgumentNullException ("addresses");
+                       if (addresses.Length == 0)
+                               throw new ArgumentException ("Empty addresses list");
+                       if (this.AddressFamily != AddressFamily.InterNetwork && this.AddressFamily != AddressFamily.InterNetworkV6)
+                               throw new NotSupportedException ("This method is only valid for addresses in the InterNetwork or InterNetworkV6 families");
+                       if (port <= 0 || port > 65535)
+                               throw new ArgumentOutOfRangeException ("port", "Must be > 0 and < 65536");
+                       if (is_listening)
+                               throw new InvalidOperationException ();
+
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.Connect) {
+                               Addresses = addresses,
+                               Port = port,
+                       };
+
+                       is_connected = false;
+
+                       return BeginMConnect (sockares);
+               }
+
+               internal IAsyncResult BeginMConnect (SocketAsyncResult sockares)
+               {
+                       IAsyncResult ares = null;
+                       Exception exc = null;
+
+                       for (int i = sockares.CurrentAddress; i < sockares.Addresses.Length; i++) {
+                               try {
+                                       sockares.CurrentAddress++;
+
+                                       ares = BeginConnect (new IPEndPoint (sockares.Addresses [i], sockares.Port), null, sockares);
+                                       if (ares.IsCompleted && ares.CompletedSynchronously) {
+                                               ((SocketAsyncResult) ares).CheckIfThrowDelayedException ();
+                                               sockares.DoMConnectCallback ();
+                                       }
+
+                                       break;
+                               } catch (Exception e) {
+                                       exc = e;
+                                       ares = null;
+                               }
+                       }
+
+                       if (ares == null)
+                               throw exc;
+
+                       return sockares;
+               }
+
+               public void EndConnect (IAsyncResult result)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (result, "EndConnect", "result");
+
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne();
+
+                       sockares.CheckIfThrowDelayedException();
+               }
+
+               static void Connect_internal (SafeSocketHandle safeHandle, SocketAddress sa, out int error)
+               {
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               Connect_internal (safeHandle.DangerousGetHandle (), sa, out error);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
+                       }
+               }
+
+               /* Connects to the remote address */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void Connect_internal(IntPtr sock, SocketAddress sa, out int error);
+
+               /* Returns :
+                *  - false when it is ok to use RemoteEndPoint
+                *  - true when addresses must be used (and addresses could be null/empty) */
+               bool GetCheckedIPs (SocketAsyncEventArgs e, out IPAddress [] addresses)
+               {
+                       addresses = null;
+
+                       // Connect to the first address that match the host name, like:
+                       // http://blogs.msdn.com/ncl/archive/2009/07/20/new-ncl-features-in-net-4-0-beta-2.aspx
+                       // while skipping entries that do not match the address family
+                       DnsEndPoint dep = e.RemoteEndPoint as DnsEndPoint;
+                       if (dep != null) {
+                               addresses = Dns.GetHostAddresses (dep.Host);
+                               return true;
+                       } else {
+                               e.ConnectByNameError = null;
+                               return false;
+                       }
+               }
+
+#endregion
+
+#region Disconnect
+
+               /* According to the docs, the MS runtime will throw PlatformNotSupportedException
+                * if the platform is newer than w2k.  We should be able to cope... */
+               public void Disconnect (bool reuseSocket)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       int error = 0;
+                       Disconnect_internal (safe_handle, reuseSocket, out error);
+
+                       if (error != 0) {
+                               if (error == 50) {
+                                       /* ERROR_NOT_SUPPORTED */
+                                       throw new PlatformNotSupportedException ();
+                               } else {
+                                       throw new SocketException (error);
+                               }
+                       }
+
+                       is_connected = false;
+                       if (reuseSocket) {
+                               /* Do managed housekeeping here... */
+                       }
+               }
+
+               public bool DisconnectAsync (SocketAsyncEventArgs e)
+               {
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
+
+                       ThrowIfDisposedAndClosed ();
+
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, SocketOperation.Disconnect);
+
+                       SocketAsyncResult sockares = e.Worker.result;
+
+                       socket_pool_queue (SocketAsyncWorker.Dispatcher, sockares);
+
+                       return true;
+               }
+
+
+               public IAsyncResult BeginDisconnect (bool reuseSocket, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.Disconnect) {
+                               ReuseSocket = reuseSocket,
+                       };
+
+                       socket_pool_queue (SocketAsyncWorker.Dispatcher, sockares);
+
+                       return sockares;
+               }
+
+               public void EndDisconnect (IAsyncResult asyncResult)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (asyncResult, "EndDisconnect", "asyncResult");
+
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne ();
+
+                       sockares.CheckIfThrowDelayedException ();
+               }
+
+               static void Disconnect_internal (SafeSocketHandle safeHandle, bool reuse, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               Disconnect_internal (safeHandle.DangerousGetHandle (), reuse, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void Disconnect_internal (IntPtr sock, bool reuse, out int error);
+
+#endregion
+
+#region Receive
+
+               public int Receive (byte [] buffer)
+               {
+                       return Receive (buffer, SocketFlags.None);
+               }
+
+               public int Receive (byte [] buffer, SocketFlags flags)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
+
+                       SocketError error;
+                       int ret = Receive_nochecks (buffer, 0, buffer.Length, flags, out error);
+
+                       if (error != SocketError.Success) {
+                               if (error == SocketError.WouldBlock && is_blocking) // This might happen when ReceiveTimeout is set
+                                       throw new SocketException ((int) error, TIMEOUT_EXCEPTION_MSG);
+                               throw new SocketException ((int) error);
+                       }
+
+                       return ret;
+               }
+
+               public int Receive (byte [] buffer, int size, SocketFlags flags)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, size);
+
+                       SocketError error;
+                       int ret = Receive_nochecks (buffer, 0, size, flags, out error);
+
+                       if (error != SocketError.Success) {
+                               if (error == SocketError.WouldBlock && is_blocking) // This might happen when ReceiveTimeout is set
+                                       throw new SocketException ((int) error, TIMEOUT_EXCEPTION_MSG);
+                               throw new SocketException ((int) error);
+                       }
+
+                       return ret;
+               }
+
+               public int Receive (byte [] buffer, int offset, int size, SocketFlags flags)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
+
+                       SocketError error;
+                       int ret = Receive_nochecks (buffer, offset, size, flags, out error);
+
+                       if (error != SocketError.Success) {
+                               if (error == SocketError.WouldBlock && is_blocking) // This might happen when ReceiveTimeout is set
+                                       throw new SocketException ((int) error, TIMEOUT_EXCEPTION_MSG);
+                               throw new SocketException ((int) error);
+                       }
+
+                       return ret;
+               }
+
+               public int Receive (byte [] buffer, int offset, int size, SocketFlags flags, out SocketError error)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
+
+                       return Receive_nochecks (buffer, offset, size, flags, out error);
+               }
+
+               public int Receive (IList<ArraySegment<byte>> buffers)
+               {
+                       SocketError error;
+                       int ret = Receive (buffers, SocketFlags.None, out error);
+
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
+
+                       return ret;
+               }
+
+               [CLSCompliant (false)]
+               public int Receive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags)
+               {
+                       SocketError error;
+                       int ret = Receive (buffers, socketFlags, out error);
+
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
+
+                       return(ret);
+               }
+
+               [CLSCompliant (false)]
+               public int Receive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (buffers == null || buffers.Count == 0)
+                               throw new ArgumentNullException ("buffers");
+
+                       int numsegments = buffers.Count;
+                       int nativeError;
+                       int ret;
+
+                       /* Only example I can find of sending a byte array reference directly into an internal
+                        * call is in System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc.Win32/NamedPipeSocket.cs,
+                        * so taking a lead from that... */
+                       WSABUF[] bufarray = new WSABUF[numsegments];
+                       GCHandle[] gch = new GCHandle[numsegments];
+
+                       for (int i = 0; i < numsegments; i++) {
+                               ArraySegment<byte> segment = buffers[i];
+
+                               if (segment.Offset < 0 || segment.Count < 0 || segment.Count > segment.Array.Length - segment.Offset)
+                                       throw new ArgumentOutOfRangeException ("segment");
+
+                               gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
+                               bufarray[i].len = segment.Count;
+                               bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
+                       }
+
+                       try {
+                               ret = Receive_internal (safe_handle, bufarray, socketFlags, out nativeError);
+                       } finally {
+                               for (int i = 0; i < numsegments; i++) {
+                                       if (gch[i].IsAllocated)
+                                               gch[i].Free ();
+                               }
+                       }
+
+                       errorCode = (SocketError) nativeError;
+
+                       return ret;
+               }
+
+               public bool ReceiveAsync (SocketAsyncEventArgs e)
+               {
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
+
+                       ThrowIfDisposedAndClosed ();
+
+                       // LAME SPEC: the ArgumentException is never thrown, instead an NRE is
+                       // thrown when e.Buffer and e.BufferList are null (works fine when one is
+                       // set to a valid object)
+                       if (e.Buffer == null && e.BufferList == null)
+                               throw new NullReferenceException ("Either e.Buffer or e.BufferList must be valid buffers.");
+
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, e.Buffer != null ? SocketOperation.Receive : SocketOperation.ReceiveGeneric);
+
+                       SocketAsyncResult sockares = e.Worker.result;
+                       sockares.SockFlags = e.SocketFlags;
+
+                       if (e.Buffer != null) {
+                               sockares.Buffer = e.Buffer;
+                               sockares.Offset = e.Offset;
+                               sockares.Size = e.Count;
+                       } else {
+                               sockares.Buffers = e.BufferList;
+                       }
+
+                       // Receive takes care of ReceiveGeneric
+                       QueueSocketAsyncResult (readQ, e.Worker, sockares);
+
+                       return true;
+               }
+
+               public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, SocketFlags socket_flags, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
+
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.Receive) {
+                               Buffer = buffer,
+                               Offset = offset,
+                               Size = size,
+                               SockFlags = socket_flags,
+                       };
+
+                       QueueSocketAsyncResult (readQ, sockares.Worker, sockares);
+
+                       return sockares;
+               }
+
+               public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, SocketFlags flags, out SocketError error, AsyncCallback callback, object state)
+               {
+                       /* As far as I can tell from the docs and from experimentation, a pointer to the
+                        * SocketError parameter is not supposed to be saved for the async parts.  And as we don't
+                        * set any socket errors in the setup code, we just have to set it to Success. */
+                       error = SocketError.Success;
+                       return BeginReceive (buffer, offset, size, flags, callback, state);
+               }
+
+               [CLSCompliant (false)]
+               public IAsyncResult BeginReceive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       if (buffers == null)
+                               throw new ArgumentNullException ("buffers");
+
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveGeneric) {
+                               Buffers = buffers,
+                               SockFlags = socketFlags,
+                       };
+
+                       QueueSocketAsyncResult (readQ, sockares.Worker, sockares);
+
+                       return sockares;
+               }
+
+               [CLSCompliant (false)]
+               public IAsyncResult BeginReceive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state)
+               {
+                       /* I assume the same SocketError semantics as above */
+                       errorCode = SocketError.Success;
+                       return BeginReceive (buffers, socketFlags, callback, state);
+               }
+
+               public int EndReceive (IAsyncResult result)
+               {
+                       SocketError error;
+                       int bytesReceived = EndReceive (result, out error);
+
+                       if (error != SocketError.Success) {
+                               if (error != SocketError.WouldBlock && error != SocketError.InProgress)
+                                       is_connected = false;
+                               throw new SocketException ((int)error);
+                       }
+
+                       return bytesReceived;
+               }
+
+               public int EndReceive (IAsyncResult asyncResult, out SocketError errorCode)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (asyncResult, "EndReceive", "asyncResult");
+
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne ();
+
+                       // If no socket error occurred, call CheckIfThrowDelayedException in case there are other
+                       // kinds of exceptions that should be thrown.
+                       if ((errorCode = sockares.ErrorCode) == SocketError.Success)
+                               sockares.CheckIfThrowDelayedException();
+
+                       return sockares.Total;
+               }
+
+               internal int Receive_nochecks (byte [] buf, int offset, int size, SocketFlags flags, out SocketError error)
+               {
+                       int nativeError;
+                       int ret = Receive_internal (safe_handle, buf, offset, size, flags, out nativeError);
+
+                       error = (SocketError) nativeError;
+                       if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress) {
+                               is_connected = false;
+                               is_bound = false;
+                       } else {
+                               is_connected = true;
+                       }
+
+                       return ret;
+               }
+
+               static int Receive_internal (SafeSocketHandle safeHandle, WSABUF[] bufarray, SocketFlags flags, out int error)
+               {
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               return Receive_internal (safeHandle.DangerousGetHandle (), bufarray, flags, out error);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
+                       }
+               }
+
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               extern static int Receive_internal (IntPtr sock, WSABUF[] bufarray, SocketFlags flags, out int error);
+
+               internal static int Receive_internal (SafeSocketHandle safeHandle, byte[] buffer, int offset, int count, SocketFlags flags, out int error)
+               {
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               return Receive_internal (safeHandle.DangerousGetHandle (), buffer, offset, count, flags, out error);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
+                       }
+               }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static int Receive_internal(IntPtr sock, byte[] buffer, int offset, int count, SocketFlags flags, out int error);
+
+#endregion
+
+#region ReceiveFrom
+
+               public int ReceiveFrom (byte [] buffer, ref EndPoint remoteEP)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
+
+                       if (remoteEP == null)
+                               throw new ArgumentNullException ("remoteEP");
+
+                       return ReceiveFrom_nochecks (buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP);
+               }
+
+               public int ReceiveFrom (byte [] buffer, SocketFlags flags, ref EndPoint remoteEP)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
+
+                       if (remoteEP == null)
+                               throw new ArgumentNullException ("remoteEP");
+
+                       return ReceiveFrom_nochecks (buffer, 0, buffer.Length, flags, ref remoteEP);
+               }
+
+               public int ReceiveFrom (byte [] buffer, int size, SocketFlags flags, ref EndPoint remoteEP)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, size);
+
+                       if (remoteEP == null)
+                               throw new ArgumentNullException ("remoteEP");
+
+                       return ReceiveFrom_nochecks (buffer, 0, size, flags, ref remoteEP);
+               }
+
+               public int ReceiveFrom (byte [] buffer, int offset, int size, SocketFlags flags, ref EndPoint remoteEP)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
+
+                       if (remoteEP == null)
+                               throw new ArgumentNullException ("remoteEP");
+
+                       return ReceiveFrom_nochecks (buffer, offset, size, flags, ref remoteEP);
+               }
+
+               public bool ReceiveFromAsync (SocketAsyncEventArgs e)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       // We do not support recv into multiple buffers yet
+                       if (e.BufferList != null)
+                               throw new NotSupportedException ("Mono doesn't support using BufferList at this point.");
+                       if (e.RemoteEndPoint == null)
+                               throw new ArgumentNullException ("remoteEP", "Value cannot be null.");
+
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, SocketOperation.ReceiveFrom);
 
-                       if (port <= 0 || port > 65535)
-                               throw new ArgumentOutOfRangeException ("port", "Must be > 0 and < 65536");
+                       SocketAsyncResult sockares = e.Worker.result;
+                       sockares.Buffer = e.Buffer;
+                       sockares.Offset = e.Offset;
+                       sockares.Size = e.Count;
+                       sockares.EndPoint = e.RemoteEndPoint;
+                       sockares.SockFlags = e.SocketFlags;
 
-                       if (islistening)
-                               throw new InvalidOperationException ();
+                       QueueSocketAsyncResult (readQ, e.Worker, sockares);
 
-                       IPEndPoint iep = new IPEndPoint (address, port);
-                       return(BeginConnect (iep, callback, state));
+                       return true;
                }
 
-               public IAsyncResult BeginConnect (string host, int port,
-                                                 AsyncCallback callback,
-                                                 object state)
+               public IAsyncResult BeginReceiveFrom (byte[] buffer, int offset, int size, SocketFlags socket_flags, ref EndPoint remote_end, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (host == null)
-                               throw new ArgumentNullException ("host");
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-                       if (address_family != AddressFamily.InterNetwork &&
-                               address_family != AddressFamily.InterNetworkV6)
-                               throw new NotSupportedException ("This method is valid only for sockets in the InterNetwork and InterNetworkV6 families");
+                       if (remote_end == null)
+                               throw new ArgumentNullException ("remote_end");
 
-                       if (port <= 0 || port > 65535)
-                               throw new ArgumentOutOfRangeException ("port", "Must be > 0 and < 65536");
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveFrom) {
+                               Buffer = buffer,
+                               Offset = offset,
+                               Size = size,
+                               SockFlags = socket_flags,
+                               EndPoint = remote_end,
+                       };
 
-                       if (islistening)
-                               throw new InvalidOperationException ();
+                       QueueSocketAsyncResult (readQ, sockares.Worker, sockares);
 
-                       return BeginConnect (Dns.GetHostAddresses (host), port, callback, state);
+                       return sockares;
                }
 
-               public IAsyncResult BeginDisconnect (bool reuseSocket,
-                                                    AsyncCallback callback,
-                                                    object state)
+               public int EndReceiveFrom(IAsyncResult result, ref EndPoint end_point)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Disconnect);
-                       req.ReuseSocket = reuseSocket;
-                       socket_pool_queue (Worker.Dispatcher, req);
-                       return(req);
-               }
+                       if (end_point == null)
+                               throw new ArgumentNullException ("remote_end");
 
-               void CheckRange (byte[] buffer, int offset, int size)
-               {
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException ("offset", "offset must be >= 0");
-                               
-                       if (offset > buffer.Length)
-                               throw new ArgumentOutOfRangeException ("offset", "offset must be <= buffer.Length");
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (result, "EndReceiveFrom", "result");
 
-                       if (size < 0)                          
-                               throw new ArgumentOutOfRangeException ("size", "size must be >= 0");
-                               
-                       if (size > buffer.Length - offset)
-                               throw new ArgumentOutOfRangeException ("size", "size must be <= buffer.Length - offset");
-               }
-               
-               public IAsyncResult BeginReceive(byte[] buffer, int offset,
-                                                int size,
-                                                SocketFlags socket_flags,
-                                                AsyncCallback callback,
-                                                object state) {
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne();
 
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       sockares.CheckIfThrowDelayedException();
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       end_point = sockares.EndPoint;
 
-                       CheckRange (buffer, offset, size);
+                       return sockares.Total;
+               }
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Receive);
-                       req.Buffer = buffer;
-                       req.Offset = offset;
-                       req.Size = size;
-                       req.SockFlags = socket_flags;
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (req.Worker);
-                               count = readQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
-               }
-
-               public IAsyncResult BeginReceive (byte[] buffer, int offset,
-                                                 int size, SocketFlags flags,
-                                                 out SocketError error,
-                                                 AsyncCallback callback,
-                                                 object state)
-               {
-                       /* As far as I can tell from the docs and from
-                        * experimentation, a pointer to the
-                        * SocketError parameter is not supposed to be
-                        * saved for the async parts.  And as we don't
-                        * set any socket errors in the setup code, we
-                        * just have to set it to Success.
-                        */
-                       error = SocketError.Success;
-                       return (BeginReceive (buffer, offset, size, flags, callback, state));
+               internal int ReceiveFrom_nochecks (byte [] buf, int offset, int size, SocketFlags flags, ref EndPoint remote_end)
+               {
+                       int error;
+                       return ReceiveFrom_nochecks_exc (buf, offset, size, flags, ref remote_end, true, out error);
                }
 
-               [CLSCompliant (false)]
-               public IAsyncResult BeginReceive (IList<ArraySegment<byte>> buffers,
-                                                 SocketFlags socketFlags,
-                                                 AsyncCallback callback,
-                                                 object state)
+               internal int ReceiveFrom_nochecks_exc (byte [] buf, int offset, int size, SocketFlags flags, ref EndPoint remote_end, bool throwOnError, out int error)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       SocketAddress sockaddr = remote_end.Serialize();
 
-                       if (buffers == null)
-                               throw new ArgumentNullException ("buffers");
+                       int cnt = ReceiveFrom_internal (safe_handle, buf, offset, size, flags, ref sockaddr, out error);
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveGeneric);
-                       req.Buffers = buffers;
-                       req.SockFlags = socketFlags;
-                       int count;
-                       lock(readQ) {
-                               readQ.Enqueue (req.Worker);
-                               count = readQ.Count;
+                       SocketError err = (SocketError) error;
+                       if (err != 0) {
+                               if (err != SocketError.WouldBlock && err != SocketError.InProgress) {
+                                       is_connected = false;
+                               } else if (err == SocketError.WouldBlock && is_blocking) { // This might happen when ReceiveTimeout is set
+                                       if (throwOnError)       
+                                               throw new SocketException ((int) SocketError.TimedOut, TIMEOUT_EXCEPTION_MSG);
+                                       error = (int) SocketError.TimedOut;
+                                       return 0;
+                               }
+
+                               if (throwOnError)
+                                       throw new SocketException (error);
+
+                               return 0;
                        }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
-               }
-               
-               [CLSCompliant (false)]
-               public IAsyncResult BeginReceive (IList<ArraySegment<byte>> buffers,
-                                                 SocketFlags socketFlags,
-                                                 out SocketError errorCode,
-                                                 AsyncCallback callback,
-                                                 object state)
-               {
-                       /* I assume the same SocketError semantics as
-                        * above
-                        */
-                       errorCode = SocketError.Success;
-                       return (BeginReceive (buffers, socketFlags, callback, state));
-               }
 
-               public IAsyncResult BeginReceiveFrom(byte[] buffer, int offset,
-                                                    int size,
-                                                    SocketFlags socket_flags,
-                                                    ref EndPoint remote_end,
-                                                    AsyncCallback callback,
-                                                    object state) {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       is_connected = true;
+                       is_bound = true;
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       /* If sockaddr is null then we're a connection oriented protocol and should ignore the
+                        * remote_end parameter (see MSDN documentation for Socket.ReceiveFrom(...) ) */
+                       if (sockaddr != null) {
+                               /* Stupidly, EndPoint.Create() is an instance method */
+                               remote_end = remote_end.Create (sockaddr);
+                       }
 
-                       if (remote_end == null)
-                               throw new ArgumentNullException ("remote_end");
+                       seed_endpoint = remote_end;
 
-                       CheckRange (buffer, offset, size);
+                       return cnt;
+               }
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.ReceiveFrom);
-                       req.Buffer = buffer;
-                       req.Offset = offset;
-                       req.Size = size;
-                       req.SockFlags = socket_flags;
-                       req.EndPoint = remote_end;
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (req.Worker);
-                               count = readQ.Count;
+               static int ReceiveFrom_internal (SafeSocketHandle safeHandle, byte[] buffer, int offset, int count, SocketFlags flags, ref SocketAddress sockaddr, out int error)
+               {
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               return ReceiveFrom_internal (safeHandle.DangerousGetHandle (), buffer, offset, count, flags, ref sockaddr, out error);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
                        }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
                }
 
-               [MonoTODO]
-               public IAsyncResult BeginReceiveMessageFrom (
-                       byte[] buffer, int offset, int size,
-                       SocketFlags socketFlags, ref EndPoint remoteEP,
-                       AsyncCallback callback, object state)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static int ReceiveFrom_internal(IntPtr sock, byte[] buffer, int offset, int count, SocketFlags flags, ref SocketAddress sockaddr, out int error);
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+#endregion
+
+#region ReceiveMessageFrom
+
+               [MonoTODO ("Not implemented")]
+               public int ReceiveMessageFrom (byte[] buffer, int offset, int size, ref SocketFlags socketFlags, ref EndPoint remoteEP, out IPPacketInformation ipPacketInformation)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
                        if (remoteEP == null)
                                throw new ArgumentNullException ("remoteEP");
 
-                       CheckRange (buffer, offset, size);
-
+                       // FIXME: figure out how we get hold of the IPPacketInformation
                        throw new NotImplementedException ();
                }
 
-               public IAsyncResult BeginSend (byte[] buffer, int offset, int size, SocketFlags socket_flags,
-                                              AsyncCallback callback, object state)
+               [MonoTODO ("Not implemented")]
+               public bool ReceiveMessageFromAsync (SocketAsyncEventArgs e)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-
-                       CheckRange (buffer, offset, size);
-
-                       if (!connected)
-                               throw new SocketException ((int)SocketError.NotConnected);
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Send);
-                       req.Buffer = buffer;
-                       req.Offset = offset;
-                       req.Size = size;
-                       req.SockFlags = socket_flags;
-                       int count;
-                       lock (writeQ) {
-                               writeQ.Enqueue (req.Worker);
-                               count = writeQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
-               }
+                       ThrowIfDisposedAndClosed ();
 
-               public IAsyncResult BeginSend (byte[] buffer, int offset,
-                                              int size,
-                                              SocketFlags socketFlags,
-                                              out SocketError errorCode,
-                                              AsyncCallback callback,
-                                              object state)
-               {
-                       if (!connected) {
-                               errorCode = SocketError.NotConnected;
-                               throw new SocketException ((int)errorCode);
-                       }
-                       
-                       errorCode = SocketError.Success;
-                       
-                       return (BeginSend (buffer, offset, size, socketFlags, callback,
-                               state));
+                       throw new NotImplementedException ();
                }
 
-               public IAsyncResult BeginSend (IList<ArraySegment<byte>> buffers,
-                                              SocketFlags socketFlags,
-                                              AsyncCallback callback,
-                                              object state)
+               [MonoTODO]
+               public IAsyncResult BeginReceiveMessageFrom (byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remoteEP, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffers == null)
-                               throw new ArgumentNullException ("buffers");
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-                       if (!connected)
-                               throw new SocketException ((int)SocketError.NotConnected);
+                       if (remoteEP == null)
+                               throw new ArgumentNullException ("remoteEP");
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.SendGeneric);
-                       req.Buffers = buffers;
-                       req.SockFlags = socketFlags;
-                       int count;
-                       lock (writeQ) {
-                               writeQ.Enqueue (req.Worker);
-                               count = writeQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
+                       throw new NotImplementedException ();
                }
 
-               [CLSCompliant (false)]
-               public IAsyncResult BeginSend (IList<ArraySegment<byte>> buffers,
-                                              SocketFlags socketFlags,
-                                              out SocketError errorCode,
-                                              AsyncCallback callback,
-                                              object state)
+               [MonoTODO]
+               public int EndReceiveMessageFrom (IAsyncResult asyncResult, ref SocketFlags socketFlags, ref EndPoint endPoint, out IPPacketInformation ipPacketInformation)
                {
-                       if (!connected) {
-                               errorCode = SocketError.NotConnected;
-                               throw new SocketException ((int)errorCode);
-                       }
-                       
-                       errorCode = SocketError.Success;
-                       return (BeginSend (buffers, socketFlags, callback, state));
-               }
+                       ThrowIfDisposedAndClosed ();
 
-               delegate void SendFileHandler (string fileName, byte [] preBuffer, byte [] postBuffer, TransmitFileOptions flags);
+                       if (endPoint == null)
+                               throw new ArgumentNullException ("endPoint");
 
-               sealed class SendFileAsyncResult : IAsyncResult {
-                       IAsyncResult ares;
-                       SendFileHandler d;
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (asyncResult, "EndReceiveMessageFrom", "asyncResult");
 
-                       public SendFileAsyncResult (SendFileHandler d, IAsyncResult ares)
-                       {
-                               this.d = d;
-                               this.ares = ares;
-                       }
+                       throw new NotImplementedException ();
+               }
 
-                       public object AsyncState {
-                               get { return ares.AsyncState; }
-                       }
+#endregion
 
-                       public WaitHandle AsyncWaitHandle {
-                               get { return ares.AsyncWaitHandle; }
-                       }
+#region Send
 
-                       public bool CompletedSynchronously {
-                               get { return ares.CompletedSynchronously; }
-                       }
+               public int Send (byte [] buffer)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
 
-                       public bool IsCompleted {
-                               get { return ares.IsCompleted; }
-                       }
+                       SocketError error;
+                       int ret = Send_nochecks (buffer, 0, buffer.Length, SocketFlags.None, out error);
 
-                       public SendFileHandler Delegate {
-                               get { return d; }
-                       }
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
 
-                       public IAsyncResult Original {
-                               get { return ares; }
-                       }
+                       return ret;
                }
 
-               public IAsyncResult BeginSendFile (string fileName,
-                                                  AsyncCallback callback,
-                                                  object state)
+               public int Send (byte [] buffer, SocketFlags flags)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
 
-                       if (!connected)
-                               throw new NotSupportedException ();
+                       SocketError error;
+                       int ret = Send_nochecks (buffer, 0, buffer.Length, flags, out error);
 
-                       if (!File.Exists (fileName))
-                               throw new FileNotFoundException ();
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
 
-                       return BeginSendFile (fileName, null, null, 0, callback, state);
+                       return ret;
                }
 
-               public IAsyncResult BeginSendFile (string fileName,
-                                                  byte[] preBuffer,
-                                                  byte[] postBuffer,
-                                                  TransmitFileOptions flags,
-                                                  AsyncCallback callback,
-                                                  object state)
+               public int Send (byte [] buffer, int size, SocketFlags flags)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, size);
 
-                       if (!connected)
-                               throw new NotSupportedException ();
+                       SocketError error;
+                       int ret = Send_nochecks (buffer, 0, size, flags, out error);
 
-                       if (!File.Exists (fileName))
-                               throw new FileNotFoundException ();
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
 
-                       SendFileHandler d = new SendFileHandler (SendFile);
-                       return new SendFileAsyncResult (d, d.BeginInvoke (fileName, preBuffer, postBuffer, flags, ar => {
-                               SendFileAsyncResult sfar = new SendFileAsyncResult (d, ar);
-                               callback (sfar);
-                       }, state));
+                       return ret;
                }
 
-               public IAsyncResult BeginSendTo(byte[] buffer, int offset,
-                                               int size,
-                                               SocketFlags socket_flags,
-                                               EndPoint remote_end,
-                                               AsyncCallback callback,
-                                               object state) {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+               public int Send (byte [] buffer, int offset, int size, SocketFlags flags)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       SocketError error;
+                       int ret = Send_nochecks (buffer, offset, size, flags, out error);
 
-                       CheckRange (buffer, offset, size);
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
 
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.SendTo);
-                       req.Buffer = buffer;
-                       req.Offset = offset;
-                       req.Size = size;
-                       req.SockFlags = socket_flags;
-                       req.EndPoint = remote_end;
-                       int count;
-                       lock (writeQ) {
-                               writeQ.Enqueue (req.Worker);
-                               count = writeQ.Count;
-                       }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
+                       return ret;
                }
 
-               // Creates a new system socket, returning the handle
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void Bind_internal(IntPtr sock,
-                                                        SocketAddress sa,
-                                                        out int error);
-
-               private static void Bind_internal (SafeSocketHandle safeHandle,
-                                                        SocketAddress sa,
-                                                        out int error)
+               public int Send (byte [] buffer, int offset, int size, SocketFlags flags, out SocketError error)
                {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               Bind_internal (safeHandle.DangerousGetHandle (), sa, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               public void Bind(EndPoint local_end) {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-                       if (local_end == null)
-                               throw new ArgumentNullException("local_end");
-                       
-                       int error;
-                       
-                       Bind_internal(socket, local_end.Serialize(), out error);
-                       if (error != 0)
-                               throw new SocketException (error);
-                       if (error == 0)
-                               isbound = true;
-                       
-                       seed_endpoint = local_end;
+                       return Send_nochecks (buffer, offset, size, flags, out error);
                }
 
-               public void Connect (IPAddress address, int port)
-               {
-                       Connect (new IPEndPoint (address, port));
-               }
-               
-               public void Connect (IPAddress[] addresses, int port)
+               public
+               int Send (IList<ArraySegment<byte>> buffers)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (addresses == null)
-                               throw new ArgumentNullException ("addresses");
-
-                       if (this.AddressFamily != AddressFamily.InterNetwork &&
-                               this.AddressFamily != AddressFamily.InterNetworkV6)
-                               throw new NotSupportedException ("This method is only valid for addresses in the InterNetwork or InterNetworkV6 families");
+                       SocketError error;
+                       int ret = Send (buffers, SocketFlags.None, out error);
 
-                       if (islistening)
-                               throw new InvalidOperationException ();
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
 
-                       /* FIXME: do non-blocking sockets Poll here? */
-                       int error = 0;
-                       foreach (IPAddress address in addresses) {
-                               IPEndPoint iep = new IPEndPoint (address, port);
-                               SocketAddress serial = iep.Serialize ();
-                               
-                               Connect_internal (socket, serial, out error);
-                               if (error == 0) {
-                                       connected = true;
-                                       isbound = true;
-                                       seed_endpoint = iep;
-                                       return;
-                               } else if (error != (int)SocketError.InProgress &&
-                                          error != (int)SocketError.WouldBlock) {
-                                       continue;
-                               }
-                               
-                               if (!blocking) {
-                                       Poll (-1, SelectMode.SelectWrite);
-                                       error = (int)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
-                                       if (error == 0) {
-                                               connected = true;
-                                               isbound = true;
-                                               seed_endpoint = iep;
-                                               return;
-                                       }
-                               }
-                       }
-                       if (error != 0)
-                               throw new SocketException (error);
+                       return ret;
                }
 
-               public void Connect (string host, int port)
+               public
+               int Send (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags)
                {
-                       IPAddress [] addresses = Dns.GetHostAddresses (host);
-                       Connect (addresses, port);
+                       SocketError error;
+                       int ret = Send (buffers, socketFlags, out error);
+
+                       if (error != SocketError.Success)
+                               throw new SocketException ((int) error);
+
+                       return ret;
                }
 
-               public bool DisconnectAsync (SocketAsyncEventArgs e)
+               [CLSCompliant (false)]
+               public int Send (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode)
                {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       e.curSocket = this;
-                       e.Worker.Init (this, e, SocketOperation.Disconnect);
-                       socket_pool_queue (Worker.Dispatcher, e.Worker.result);
-                       return true;
-               }
+                       if (buffers == null)
+                               throw new ArgumentNullException ("buffers");
+                       if (buffers.Count == 0)
+                               throw new ArgumentException ("Buffer is empty", "buffers");
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               extern static void Disconnect_internal(IntPtr sock, bool reuse, out int error);
+                       int numsegments = buffers.Count;
+                       int nativeError;
+                       int ret;
+
+                       WSABUF[] bufarray = new WSABUF[numsegments];
+                       GCHandle[] gch = new GCHandle[numsegments];
+
+                       for(int i = 0; i < numsegments; i++) {
+                               ArraySegment<byte> segment = buffers[i];
+
+                               if (segment.Offset < 0 || segment.Count < 0 || segment.Count > segment.Array.Length - segment.Offset)
+                                       throw new ArgumentOutOfRangeException ("segment");
+
+                               gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
+                               bufarray[i].len = segment.Count;
+                               bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
+                       }
 
-               private static void Disconnect_internal(SafeSocketHandle safeHandle, bool reuse, out int error)
-               {
-                       bool release = false;
                        try {
-                               safeHandle.DangerousAddRef (ref release);
-                               Disconnect_internal (safeHandle.DangerousGetHandle (), reuse, out error);
+                               ret = Send_internal (safe_handle, bufarray, socketFlags, out nativeError);
                        } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
+                               for(int i = 0; i < numsegments; i++) {
+                                       if (gch[i].IsAllocated) {
+                                               gch[i].Free ();
+                                       }
+                               }
                        }
+
+                       errorCode = (SocketError)nativeError;
+
+                       return ret;
                }
 
-               /* According to the docs, the MS runtime will throw
-                * PlatformNotSupportedException if the platform is
-                * newer than w2k.  We should be able to cope...
-                */
-               public void Disconnect (bool reuseSocket)
+               internal int Send_nochecks (byte [] buf, int offset, int size, SocketFlags flags, out SocketError error)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       if (size == 0) {
+                               error = SocketError.Success;
+                               return 0;
+                       }
 
-                       int error = 0;
-                       
-                       Disconnect_internal (socket, reuseSocket, out error);
+                       int nativeError;
+                       int ret = Send_internal (safe_handle, buf, offset, size, flags, out nativeError);
 
-                       if (error != 0) {
-                               if (error == 50) {
-                                       /* ERROR_NOT_SUPPORTED */
-                                       throw new PlatformNotSupportedException ();
-                               } else {
-                                       throw new SocketException (error);
-                               }
-                       }
+                       error = (SocketError)nativeError;
 
-                       connected = false;
-                       
-                       if (reuseSocket) {
-                               /* Do managed housekeeping here... */
+                       if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress) {
+                               is_connected = false;
+                               is_bound = false;
+                       } else {
+                               is_connected = true;
                        }
+
+                       return ret;
                }
 
-#if !MOBILE
-               [MonoLimitation ("We do not support passing sockets across processes, we merely allow this API to pass the socket across AppDomains")]
-               public SocketInformation DuplicateAndClose (int targetProcessId)
+               public bool SendAsync (SocketAsyncEventArgs e)
                {
-                       var si = new SocketInformation ();
-                       si.Options =
-                               (islistening ? SocketInformationOptions.Listening : 0) |
-                               (connected ? SocketInformationOptions.Connected : 0) |
-                               (blocking ? 0 : SocketInformationOptions.NonBlocking) |
-                               (useoverlappedIO ? SocketInformationOptions.UseOnlyOverlappedIO : 0);
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
 
-                       si.ProtocolInformation = Mono.DataConverter.Pack ("iiiil", (int)address_family, (int)socket_type, (int)protocol_type, isbound ? 1 : 0, (long)Handle);
-                       socket = null;
+                       ThrowIfDisposedAndClosed ();
 
-                       return si;
-               }
-#endif
-       
-               public Socket EndAccept (IAsyncResult result)
-               {
-                       int bytes;
-                       byte[] buffer;
-                       
-                       return(EndAccept (out buffer, out bytes, result));
-               }
+                       if (e.Buffer == null && e.BufferList == null)
+                               throw new NullReferenceException ("Either e.Buffer or e.BufferList must be valid buffers.");
 
-               public Socket EndAccept (out byte[] buffer, IAsyncResult asyncResult)
-               {
-                       int bytes;
-                       return(EndAccept (out buffer, out bytes, asyncResult));
-               }
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, e.Buffer != null ? SocketOperation.Send : SocketOperation.SendGeneric);
 
-               public Socket EndAccept (out byte[] buffer, out int bytesTransferred, IAsyncResult asyncResult)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       SocketAsyncResult sockares = e.Worker.result;
+                       sockares.SockFlags = e.SocketFlags;
 
-                       if (asyncResult == null)
-                               throw new ArgumentNullException ("asyncResult");
-                       
-                       SocketAsyncResult req = asyncResult as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
+                       if (e.Buffer != null) {
+                               sockares.Buffer = e.Buffer;
+                               sockares.Offset = e.Offset;
+                               sockares.Size = e.Count;
+                       } else {
+                               sockares.Buffers = e.BufferList;
+                       }
 
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndAccept");
-                       if (!asyncResult.IsCompleted)
-                               asyncResult.AsyncWaitHandle.WaitOne ();
+                       // Send takes care of SendGeneric
+                       QueueSocketAsyncResult (writeQ, e.Worker, sockares);
 
-                       req.CheckIfThrowDelayedException ();
-                       
-                       buffer = req.Buffer;
-                       bytesTransferred = req.Total;
-                       
-                       return(req.Socket);
+                       return true;
                }
 
-               public void EndConnect (IAsyncResult result)
+               public IAsyncResult BeginSend (byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (result == null)
-                               throw new ArgumentNullException ("result");
-
-                       SocketAsyncResult req = result as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "result");
-
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndConnect");
-                       if (!result.IsCompleted)
-                               result.AsyncWaitHandle.WaitOne();
+                       if (!is_connected) {
+                               errorCode = SocketError.NotConnected;
+                               throw new SocketException ((int) errorCode);
+                       }
 
-                       req.CheckIfThrowDelayedException();
+                       errorCode = SocketError.Success;
+                       return BeginSend (buffer, offset, size, socketFlags, callback, state);
                }
 
-               public void EndDisconnect (IAsyncResult asyncResult)
+               public IAsyncResult BeginSend (byte[] buffer, int offset, int size, SocketFlags socket_flags, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-                       if (asyncResult == null)
-                               throw new ArgumentNullException ("asyncResult");
+                       if (!is_connected)
+                               throw new SocketException ((int)SocketError.NotConnected);
 
-                       SocketAsyncResult req = asyncResult as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.Send) {
+                               Buffer = buffer,
+                               Offset = offset,
+                               Size = size,
+                               SockFlags = socket_flags,
+                       };
 
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndDisconnect");
-                       if (!asyncResult.IsCompleted)
-                               asyncResult.AsyncWaitHandle.WaitOne ();
+                       QueueSocketAsyncResult (writeQ, sockares.Worker, sockares);
 
-                       req.CheckIfThrowDelayedException ();
+                       return sockares;
                }
 
-               [MonoTODO]
-               public int EndReceiveMessageFrom (IAsyncResult asyncResult,
-                                                 ref SocketFlags socketFlags,
-                                                 ref EndPoint endPoint,
-                                                 out IPPacketInformation ipPacketInformation)
+               public IAsyncResult BeginSend (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       if (asyncResult == null)
-                               throw new ArgumentNullException ("asyncResult");
+                       if (buffers == null)
+                               throw new ArgumentNullException ("buffers");
+                       if (!is_connected)
+                               throw new SocketException ((int)SocketError.NotConnected);
 
-                       if (endPoint == null)
-                               throw new ArgumentNullException ("endPoint");
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.SendGeneric) {
+                               Buffers = buffers,
+                               SockFlags = socketFlags,
+                       };
 
-                       SocketAsyncResult req = asyncResult as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
+                       QueueSocketAsyncResult (writeQ, sockares.Worker, sockares);
 
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndReceiveMessageFrom");
-                       throw new NotImplementedException ();
+                       return sockares;
                }
 
-               public void EndSendFile (IAsyncResult asyncResult)
+               [CLSCompliant (false)]
+               public IAsyncResult BeginSend (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       if (!is_connected) {
+                               errorCode = SocketError.NotConnected;
+                               throw new SocketException ((int)errorCode);
+                       }
 
-                       if (asyncResult == null)
-                               throw new ArgumentNullException ("asyncResult");
+                       errorCode = SocketError.Success;
+                       return BeginSend (buffers, socketFlags, callback, state);
+               }
 
-                       SendFileAsyncResult ares = asyncResult as SendFileAsyncResult;
-                       if (ares == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
+               public int EndSend (IAsyncResult result)
+               {
+                       SocketError error;
+                       int bytesSent = EndSend (result, out error);
 
-                       ares.Delegate.EndInvoke (ares.Original);
+                       if (error != SocketError.Success) {
+                               if (error != SocketError.WouldBlock && error != SocketError.InProgress)
+                                       is_connected = false;
+                               throw new SocketException ((int)error);
+                       }
+
+                       return bytesSent;
                }
 
-               public int EndSendTo (IAsyncResult result)
+               public int EndSend (IAsyncResult asyncResult, out SocketError errorCode)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       if (result == null)
-                               throw new ArgumentNullException ("result");
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (asyncResult, "EndSend", "asyncResult");
 
-                       SocketAsyncResult req = result as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "result");
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne ();
 
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndSendTo");
-                       if (!result.IsCompleted)
-                               result.AsyncWaitHandle.WaitOne();
+                       /* If no socket error occurred, call CheckIfThrowDelayedException in
+                        * case there are other kinds of exceptions that should be thrown.*/
+                       if ((errorCode = sockares.ErrorCode) == SocketError.Success)
+                               sockares.CheckIfThrowDelayedException ();
 
-                       req.CheckIfThrowDelayedException();
-                       return req.Total;
+                       return sockares.Total;
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void GetSocketOption_arr_internal(IntPtr socket,
-                       SocketOptionLevel level, SocketOptionName name, ref byte[] byte_val,
-                       out int error);
-
-               private static void GetSocketOption_arr_internal (SafeSocketHandle safeHandle,
-                       SocketOptionLevel level, SocketOptionName name, ref byte[] byte_val,
-                       out int error)
+               static int Send_internal (SafeSocketHandle safeHandle, WSABUF[] bufarray, SocketFlags flags, out int error)
                {
                        bool release = false;
                        try {
                                safeHandle.DangerousAddRef (ref release);
-                               GetSocketOption_arr_internal (safeHandle.DangerousGetHandle (), level, name, ref byte_val, out error);
+                               return Send_internal (safeHandle.DangerousGetHandle (), bufarray, flags, out error);
                        } finally {
                                if (release)
                                        safeHandle.DangerousRelease ();
                        }
                }
 
-               public void GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, byte [] optionValue)
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               extern static int Send_internal (IntPtr sock, WSABUF[] bufarray, SocketFlags flags, out int error);
+
+               internal static int Send_internal (SafeSocketHandle safeHandle, byte[] buf, int offset, int count, SocketFlags flags, out int error)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               return Send_internal (safeHandle.DangerousGetHandle (), buf, offset, count, flags, out error);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
+                       }
+               }
 
-                       if (optionValue == null)
-                               throw new SocketException ((int) SocketError.Fault,
-                                       "Error trying to dereference an invalid pointer");
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static int Send_internal(IntPtr sock, byte[] buf, int offset, int count, SocketFlags flags, out int error);
 
-                       int error;
+#endregion
 
-                       GetSocketOption_arr_internal (socket, optionLevel, optionName, ref optionValue,
-                               out error);
-                       if (error != 0)
-                               throw new SocketException (error);
-               }
+#region SendTo
 
-               public byte [] GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, int length)
+               public int SendTo (byte [] buffer, EndPoint remote_end)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       byte[] byte_val=new byte[length];
-                       int error;
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
 
-                       GetSocketOption_arr_internal (socket, optionLevel, optionName, ref byte_val,
-                               out error);
-                       if (error != 0)
-                               throw new SocketException (error);
+                       if (remote_end == null)
+                               throw new ArgumentNullException ("remote_end");
 
-                       return(byte_val);
+                       return SendTo_nochecks (buffer, 0, buffer.Length, SocketFlags.None, remote_end);
                }
 
-               // See Socket.IOControl, WSAIoctl documentation in MSDN. The
-               // common options between UNIX and Winsock are FIONREAD,
-               // FIONBIO and SIOCATMARK. Anything else will depend on the
-               // system except SIO_KEEPALIVE_VALS which is properly handled
-               // on both windows and linux.
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               extern static int WSAIoctl (IntPtr sock, int ioctl_code, byte [] input,
-                       byte [] output, out int error);
-
-               private static int WSAIoctl (SafeSocketHandle safeHandle, int ioctl_code, byte [] input,
-                       byte [] output, out int error)
+               public int SendTo (byte [] buffer, SocketFlags flags, EndPoint remote_end)
                {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               return WSAIoctl (safeHandle.DangerousGetHandle (), ioctl_code, input, output, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, buffer.Length);
+
+                       if (remote_end == null)
+                               throw new ArgumentNullException ("remote_end");
+
+                       return SendTo_nochecks (buffer, 0, buffer.Length, flags, remote_end);
                }
 
-               public int IOControl (int ioctl_code, byte [] in_value, byte [] out_value)
+               public int SendTo (byte [] buffer, int size, SocketFlags flags, EndPoint remote_end)
                {
-                       if (disposed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       int error;
-                       int result = WSAIoctl (socket, ioctl_code, in_value, out_value,
-                               out error);
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, 0, size);
 
-                       if (error != 0)
-                               throw new SocketException (error);
-                       
-                       if (result == -1)
-                               throw new InvalidOperationException ("Must use Blocking property instead.");
+                       if (remote_end == null)
+                               throw new ArgumentNullException ("remote_end");
 
-                       return result;
+                       return SendTo_nochecks (buffer, 0, size, flags, remote_end);
                }
 
-               public int IOControl (IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue)
+               public int SendTo (byte [] buffer, int offset, int size, SocketFlags flags, EndPoint remote_end)
                {
-                       return IOControl ((int) ioControlCode, optionInValue, optionOutValue);
-               }
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void Listen_internal(IntPtr sock, int backlog, out int error);
+                       if (remote_end == null)
+                               throw new ArgumentNullException("remote_end");
 
-               private static void Listen_internal (SafeSocketHandle safeHandle, int backlog, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               Listen_internal (safeHandle.DangerousGetHandle (), backlog, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
+                       return SendTo_nochecks (buffer, offset, size, flags, remote_end);
                }
 
-               public void Listen (int backlog)
+               internal int SendTo_nochecks (byte [] buffer, int offset, int size, SocketFlags flags, EndPoint remote_end)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (!isbound)
-                               throw new SocketException ((int)SocketError.InvalidArgument);
-
                        int error;
-                       Listen_internal(socket, backlog, out error);
+                       int ret = SendTo_internal (safe_handle, buffer, offset, size, flags, remote_end.Serialize (), out error);
 
-                       if (error != 0)
+                       SocketError err = (SocketError) error;
+                       if (err != 0) {
+                               if (err != SocketError.WouldBlock && err != SocketError.InProgress)
+                                       is_connected = false;
                                throw new SocketException (error);
+                       }
+
+                       is_connected = true;
+                       is_bound = true;
+                       seed_endpoint = remote_end;
 
-                       islistening = true;
+                       return ret;
                }
 
-               public bool Poll (int time_us, SelectMode mode)
+               public bool SendToAsync (SocketAsyncEventArgs e)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
 
-                       if (mode != SelectMode.SelectRead &&
-                           mode != SelectMode.SelectWrite &&
-                           mode != SelectMode.SelectError)
-                               throw new NotSupportedException ("'mode' parameter is not valid.");
+                       ThrowIfDisposedAndClosed ();
 
-                       int error;
-                       bool result = Poll_internal (socket, mode, time_us, out error);
-                       if (error != 0)
-                               throw new SocketException (error);
+                       if (e.BufferList != null)
+                               throw new NotSupportedException ("Mono doesn't support using BufferList at this point.");
+                       if (e.RemoteEndPoint == null)
+                               throw new ArgumentNullException ("remoteEP", "Value cannot be null.");
 
-                       if (mode == SelectMode.SelectWrite && result && !connected) {
-                               /* Update the connected state; for
-                                * non-blocking Connect()s this is
-                                * when we can find out that the
-                                * connect succeeded.
-                                */
-                               if ((int)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error) == 0) {
-                                       connected = true;
-                               }
-                       }
-                       
-                       return result;
-               }
+                       e.curSocket = this;
+                       e.Worker.Init (this, e, SocketOperation.SendTo);
 
-               public int Receive (byte [] buffer)
-               {
-                       return Receive (buffer, SocketFlags.None);
+                       SocketAsyncResult sockares = e.Worker.result;
+                       sockares.Buffer = e.Buffer;
+                       sockares.Offset = e.Offset;
+                       sockares.Size = e.Count;
+                       sockares.SockFlags = e.SocketFlags;
+                       sockares.EndPoint = e.RemoteEndPoint;
+
+                       QueueSocketAsyncResult (writeQ, e.Worker, sockares);
+
+                       return true;
                }
 
-               public int Receive (byte [] buffer, SocketFlags flags)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+               public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, SocketFlags socket_flags, EndPoint remote_end, AsyncCallback callback, object state)
+               {
+                       ThrowIfDisposedAndClosed ();
+                       ThrowIfBufferNull (buffer);
+                       ThrowIfBufferOutOfRange (buffer, offset, size);
 
-                       SocketError error;
+                       SocketAsyncResult sockares = new SocketAsyncResult (this, state, callback, SocketOperation.SendTo) {
+                               Buffer = buffer,
+                               Offset = offset,
+                               Size = size,
+                               SockFlags = socket_flags,
+                               EndPoint = remote_end,
+                       };
 
-                       int ret = Receive_nochecks (buffer, 0, buffer.Length, flags, out error);
-                       
-                       if (error != SocketError.Success) {
-                               if (error == SocketError.WouldBlock && blocking) // This might happen when ReceiveTimeout is set
-                                       throw new SocketException ((int) error, timeout_exc_msg);
-                               throw new SocketException ((int) error);
-                       }
+                       QueueSocketAsyncResult (writeQ, sockares.Worker, sockares);
 
-                       return ret;
+                       return sockares;
                }
 
-               public int Receive (byte [] buffer, int size, SocketFlags flags)
+               public int EndSendTo (IAsyncResult result)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       SocketAsyncResult sockares = ValidateEndIAsyncResult (result, "EndSendTo", "result");
 
-                       CheckRange (buffer, 0, size);
-
-                       SocketError error;
+                       if (!sockares.IsCompleted)
+                               sockares.AsyncWaitHandle.WaitOne();
 
-                       int ret = Receive_nochecks (buffer, 0, size, flags, out error);
-                       
-                       if (error != SocketError.Success) {
-                               if (error == SocketError.WouldBlock && blocking) // This might happen when ReceiveTimeout is set
-                                       throw new SocketException ((int) error, timeout_exc_msg);
-                               throw new SocketException ((int) error);
-                       }
+                       sockares.CheckIfThrowDelayedException();
 
-                       return ret;
+                       return sockares.Total;
                }
 
-               public int Receive (byte [] buffer, int offset, int size, SocketFlags flags)
+               static int SendTo_internal (SafeSocketHandle safeHandle, byte[] buffer, int offset, int count, SocketFlags flags, SocketAddress sa, out int error)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       try {
+                               safeHandle.RegisterForBlockingSyscall ();
+                               return SendTo_internal (safeHandle.DangerousGetHandle (), buffer, offset, count, flags, sa, out error);
+                       } finally {
+                               safeHandle.UnRegisterForBlockingSyscall ();
+                       }
+               }
 
-                       CheckRange (buffer, offset, size);
-                       
-                       SocketError error;
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static int SendTo_internal (IntPtr sock, byte[] buffer, int offset, int count, SocketFlags flags, SocketAddress sa, out int error);
 
-                       int ret = Receive_nochecks (buffer, offset, size, flags, out error);
-                       
-                       if (error != SocketError.Success) {
-                               if (error == SocketError.WouldBlock && blocking) // This might happen when ReceiveTimeout is set
-                                       throw new SocketException ((int) error, timeout_exc_msg);
-                               throw new SocketException ((int) error);
-                       }
+#endregion
 
-                       return ret;
-               }
+#region SendFile
 
-               public int Receive (byte [] buffer, int offset, int size, SocketFlags flags, out SocketError error)
+               public void SendFile (string fileName)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       if (!is_connected)
+                               throw new NotSupportedException ();
+                       if (!is_blocking)
+                               throw new InvalidOperationException ();
 
-                       CheckRange (buffer, offset, size);
-                       
-                       return Receive_nochecks (buffer, offset, size, flags, out error);
+                       SendFile (fileName, null, null, 0);
                }
 
-               public bool ReceiveFromAsync (SocketAsyncEventArgs e)
+               public void SendFile (string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       // We do not support recv into multiple buffers yet
-                       if (e.BufferList != null)
-                               throw new NotSupportedException ("Mono doesn't support using BufferList at this point.");
-                       if (e.RemoteEndPoint == null)
-                               throw new ArgumentNullException ("remoteEP", "Value cannot be null.");
+                       if (!is_connected)
+                               throw new NotSupportedException ();
+                       if (!is_blocking)
+                               throw new InvalidOperationException ();
 
-                       e.curSocket = this;
-                       e.Worker.Init (this, e, SocketOperation.ReceiveFrom);
-                       SocketAsyncResult res = e.Worker.result;
-                       res.Buffer = e.Buffer;
-                       res.Offset = e.Offset;
-                       res.Size = e.Count;
-                       res.EndPoint = e.RemoteEndPoint;
-                       res.SockFlags = e.SocketFlags;
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (e.Worker);
-                               count = readQ.Count;
+                       if (!SendFile_internal (safe_handle, fileName, preBuffer, postBuffer, flags)) {
+                               SocketException exc = new SocketException ();
+                               if (exc.ErrorCode == 2 || exc.ErrorCode == 3)
+                                       throw new FileNotFoundException ();
+                               throw exc;
                        }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, res);
-                       return true;
                }
 
-               public int ReceiveFrom (byte [] buffer, ref EndPoint remoteEP)
+               public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       ThrowIfDisposedAndClosed ();
 
-                       if (remoteEP == null)
-                               throw new ArgumentNullException ("remoteEP");
+                       if (!is_connected)
+                               throw new NotSupportedException ();
+                       if (!File.Exists (fileName))
+                               throw new FileNotFoundException ();
 
-                       return ReceiveFrom_nochecks (buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP);
+                       return BeginSendFile (fileName, null, null, 0, callback, state);
                }
 
-               public int ReceiveFrom (byte [] buffer, SocketFlags flags, ref EndPoint remoteEP)
+               public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags, AsyncCallback callback, object state)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       if (!is_connected)
+                               throw new NotSupportedException ();
+                       if (!File.Exists (fileName))
+                               throw new FileNotFoundException ();
 
-                       if (remoteEP == null)
-                               throw new ArgumentNullException ("remoteEP");
+                       SendFileHandler handler = new SendFileHandler (SendFile);
 
-                       return ReceiveFrom_nochecks (buffer, 0, buffer.Length, flags, ref remoteEP);
+                       return new SendFileAsyncResult (handler, handler.BeginInvoke (fileName, preBuffer, postBuffer, flags, ar => callback (new SendFileAsyncResult (handler, ar)), state));
                }
 
-               public int ReceiveFrom (byte [] buffer, int size, SocketFlags flags,
-                                       ref EndPoint remoteEP)
+               public void EndSendFile (IAsyncResult asyncResult)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+                       ThrowIfDisposedAndClosed ();
 
-                       if (remoteEP == null)
-                               throw new ArgumentNullException ("remoteEP");
+                       if (asyncResult == null)
+                               throw new ArgumentNullException ("asyncResult");
 
-                       if (size < 0 || size > buffer.Length)
-                               throw new ArgumentOutOfRangeException ("size");
+                       SendFileAsyncResult ares = asyncResult as SendFileAsyncResult;
+                       if (ares == null)
+                               throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
 
-                       return ReceiveFrom_nochecks (buffer, 0, size, flags, ref remoteEP);
+                       ares.Delegate.EndInvoke (ares.Original);
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static int RecvFrom_internal(IntPtr sock,
-                                                           byte[] buffer,
-                                                           int offset,
-                                                           int count,
-                                                           SocketFlags flags,
-                                                           ref SocketAddress sockaddr,
-                                                           out int error);
-
-               private static int RecvFrom_internal (SafeSocketHandle safeHandle,
-                                                           byte[] buffer,
-                                                           int offset,
-                                                           int count,
-                                                           SocketFlags flags,
-                                                           ref SocketAddress sockaddr,
-                                                           out int error)
+               static bool SendFile_internal (SafeSocketHandle safeHandle, string filename, byte [] pre_buffer, byte [] post_buffer, TransmitFileOptions flags)
                {
                        try {
                                safeHandle.RegisterForBlockingSyscall ();
-                               return RecvFrom_internal (safeHandle.DangerousGetHandle (), buffer, offset, count, flags, ref sockaddr, out error);
+                               return SendFile_internal (safeHandle.DangerousGetHandle (), filename, pre_buffer, post_buffer, flags);
                        } finally {
                                safeHandle.UnRegisterForBlockingSyscall ();
                        }
                }
 
-               public int ReceiveFrom (byte [] buffer, int offset, int size, SocketFlags flags,
-                                       ref EndPoint remoteEP)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static bool SendFile_internal (IntPtr sock, string filename, byte [] pre_buffer, byte [] post_buffer, TransmitFileOptions flags);
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+               delegate void SendFileHandler (string fileName, byte [] preBuffer, byte [] postBuffer, TransmitFileOptions flags);
 
-                       if (remoteEP == null)
-                               throw new ArgumentNullException ("remoteEP");
+               sealed class SendFileAsyncResult : IAsyncResult {
+                       IAsyncResult ares;
+                       SendFileHandler d;
 
-                       CheckRange (buffer, offset, size);
+                       public SendFileAsyncResult (SendFileHandler d, IAsyncResult ares)
+                       {
+                               this.d = d;
+                               this.ares = ares;
+                       }
 
-                       return ReceiveFrom_nochecks (buffer, offset, size, flags, ref remoteEP);
-               }
+                       public object AsyncState {
+                               get { return ares.AsyncState; }
+                       }
 
-               internal int ReceiveFrom_nochecks (byte [] buf, int offset, int size, SocketFlags flags,
-                                                  ref EndPoint remote_end)
-               {
-                       int error;
-                       return ReceiveFrom_nochecks_exc (buf, offset, size, flags, ref remote_end, true, out error);
-               }
+                       public WaitHandle AsyncWaitHandle {
+                               get { return ares.AsyncWaitHandle; }
+                       }
 
-               internal int ReceiveFrom_nochecks_exc (byte [] buf, int offset, int size, SocketFlags flags,
-                                                  ref EndPoint remote_end, bool throwOnError, out int error)
-               {
-                       SocketAddress sockaddr = remote_end.Serialize();
-                       int cnt = RecvFrom_internal (socket, buf, offset, size, flags, ref sockaddr, out error);
-                       SocketError err = (SocketError) error;
-                       if (err != 0) {
-                               if (err != SocketError.WouldBlock && err != SocketError.InProgress)
-                                       connected = false;
-                               else if (err == SocketError.WouldBlock && blocking) { // This might happen when ReceiveTimeout is set
-                                       if (throwOnError)       
-                                               throw new SocketException ((int) SocketError.TimedOut, timeout_exc_msg);
-                                       error = (int) SocketError.TimedOut;
-                                       return 0;
-                               }
+                       public bool CompletedSynchronously {
+                               get { return ares.CompletedSynchronously; }
+                       }
 
-                               if (throwOnError)
-                                       throw new SocketException (error);
-                               return 0;
+                       public bool IsCompleted {
+                               get { return ares.IsCompleted; }
                        }
 
-                       connected = true;
-                       isbound = true;
+                       public SendFileHandler Delegate {
+                               get { return d; }
+                       }
 
-                       // If sockaddr is null then we're a connection
-                       // oriented protocol and should ignore the
-                       // remote_end parameter (see MSDN
-                       // documentation for Socket.ReceiveFrom(...) )
-                       
-                       if ( sockaddr != null ) {
-                               // Stupidly, EndPoint.Create() is an
-                               // instance method
-                               remote_end = remote_end.Create (sockaddr);
+                       public IAsyncResult Original {
+                               get { return ares; }
                        }
-                       
-                       seed_endpoint = remote_end;
-                       
-                       return cnt;
                }
 
+#endregion
+
+#region SendPackets
+
                [MonoTODO ("Not implemented")]
-               public bool ReceiveMessageFromAsync (SocketAsyncEventArgs e)
+               public bool SendPacketsAsync (SocketAsyncEventArgs e)
                {
                        // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       
+
+                       ThrowIfDisposedAndClosed ();
+
                        throw new NotImplementedException ();
                }
-               
-               [MonoTODO ("Not implemented")]
-               public int ReceiveMessageFrom (byte[] buffer, int offset,
-                                              int size,
-                                              ref SocketFlags socketFlags,
-                                              ref EndPoint remoteEP,
-                                              out IPPacketInformation ipPacketInformation)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+#endregion
 
-                       if (remoteEP == null)
-                               throw new ArgumentNullException ("remoteEP");
+#region DuplicateAndClose
+
+#if !MOBILE
+               [MonoLimitation ("We do not support passing sockets across processes, we merely allow this API to pass the socket across AppDomains")]
+               public SocketInformation DuplicateAndClose (int targetProcessId)
+               {
+                       var si = new SocketInformation ();
+                       si.Options =
+                               (is_listening      ? SocketInformationOptions.Listening : 0) |
+                               (is_connected      ? SocketInformationOptions.Connected : 0) |
+                               (is_blocking       ? 0 : SocketInformationOptions.NonBlocking) |
+                               (use_overlapped_io ? SocketInformationOptions.UseOnlyOverlappedIO : 0);
 
-                       CheckRange (buffer, offset, size);
+                       si.ProtocolInformation = Mono.DataConverter.Pack ("iiiil", (int)address_family, (int)socket_type, (int)protocol_type, is_bound ? 1 : 0, (long)Handle);
+                       safe_handle = null;
 
-                       /* FIXME: figure out how we get hold of the
-                        * IPPacketInformation
-                        */
-                       throw new NotImplementedException ();
+                       return si;
                }
+#endif
 
-               [MonoTODO ("Not implemented")]
-               public bool SendPacketsAsync (SocketAsyncEventArgs e)
+#endregion
+
+#region GetSocketOption
+
+               public void GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, byte [] optionValue)
                {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       
-                       throw new NotImplementedException ();
+                       ThrowIfDisposedAndClosed ();
+
+                       if (optionValue == null)
+                               throw new SocketException ((int) SocketError.Fault, "Error trying to dereference an invalid pointer");
+
+                       int error;
+                       GetSocketOption_arr_internal (safe_handle, optionLevel, optionName, ref optionValue, out error);
+
+                       if (error != 0)
+                               throw new SocketException (error);
                }
 
-               public int Send (byte [] buf)
+               public byte [] GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, int length)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       ThrowIfDisposedAndClosed ();
+
+                       int error;
+                       byte[] byte_val = new byte [length];
+                       GetSocketOption_arr_internal (safe_handle, optionLevel, optionName, ref byte_val, out error);
 
-                       if (buf == null)
-                               throw new ArgumentNullException ("buf");
+                       if (error != 0)
+                               throw new SocketException (error);
 
-                       SocketError error;
+                       return byte_val;
+               }
 
-                       int ret = Send_nochecks (buf, 0, buf.Length, SocketFlags.None, out error);
+               public object GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName)
+               {
+                       ThrowIfDisposedAndClosed ();
 
-                       if (error != SocketError.Success)
-                               throw new SocketException ((int) error);
+                       int error;
+                       object obj_val;
+                       GetSocketOption_obj_internal (safe_handle, optionLevel, optionName, out obj_val, out error);
 
-                       return ret;
+                       if (error != 0)
+                               throw new SocketException (error);
+
+                       if (optionName == SocketOptionName.Linger)
+                               return (LingerOption) obj_val;
+                       else if (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)
+                               return (MulticastOption) obj_val;
+                       else if (obj_val is int)
+                               return (int) obj_val;
+                       else
+                               return obj_val;
                }
 
-               public int Send (byte [] buf, SocketFlags flags)
+               static void GetSocketOption_arr_internal (SafeSocketHandle safeHandle, SocketOptionLevel level, SocketOptionName name, ref byte[] byte_val, out int error)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               GetSocketOption_arr_internal (safeHandle.DangerousGetHandle (), level, name, ref byte_val, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
 
-                       if (buf == null)
-                               throw new ArgumentNullException ("buf");
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void GetSocketOption_arr_internal(IntPtr socket, SocketOptionLevel level, SocketOptionName name, ref byte[] byte_val, out int error);
 
-                       SocketError error;
+               static void GetSocketOption_obj_internal (SafeSocketHandle safeHandle, SocketOptionLevel level, SocketOptionName name, out object obj_val, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               GetSocketOption_obj_internal (safeHandle.DangerousGetHandle (), level, name, out obj_val, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
+                       }
+               }
 
-                       int ret = Send_nochecks (buf, 0, buf.Length, flags, out error);
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void GetSocketOption_obj_internal(IntPtr socket, SocketOptionLevel level, SocketOptionName name, out object obj_val, out int error);
 
-                       if (error != SocketError.Success)
-                               throw new SocketException ((int) error);
+#endregion
 
-                       return ret;
+#region SetSocketOption
+
+               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, byte [] optionValue)
+               {
+                       ThrowIfDisposedAndClosed ();
+
+                       // I'd throw an ArgumentNullException, but this is what MS does.
+                       if (optionValue == null)
+                               throw new SocketException ((int) SocketError.Fault, "Error trying to dereference an invalid pointer");
+
+                       int error;
+                       SetSocketOption_internal (safe_handle, optionLevel, optionName, null, optionValue, 0, out error);
+
+                       if (error != 0) {
+                               if (error == (int) SocketError.InvalidArgument)
+                                       throw new ArgumentException ();
+                               throw new SocketException (error);
+                       }
                }
 
-               public int Send (byte [] buf, int size, SocketFlags flags)
+               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, object optionValue)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buf == null)
-                               throw new ArgumentNullException ("buf");
-
-                       CheckRange (buf, 0, size);
+                       ThrowIfDisposedAndClosed ();
 
-                       SocketError error;
+                       // NOTE: if a null is passed, the byte[] overload is used instead...
+                       if (optionValue == null)
+                               throw new ArgumentNullException("optionValue");
 
-                       int ret = Send_nochecks (buf, 0, size, flags, out error);
+                       int error;
 
-                       if (error != SocketError.Success)
-                               throw new SocketException ((int) error);
+                       if (optionLevel == SocketOptionLevel.Socket && optionName == SocketOptionName.Linger) {
+                               LingerOption linger = optionValue as LingerOption;
+                               if (linger == null)
+                                       throw new ArgumentException ("A 'LingerOption' value must be specified.", "optionValue");
+                               SetSocketOption_internal (safe_handle, optionLevel, optionName, linger, null, 0, out error);
+                       } else if (optionLevel == SocketOptionLevel.IP && (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)) {
+                               MulticastOption multicast = optionValue as MulticastOption;
+                               if (multicast == null)
+                                       throw new ArgumentException ("A 'MulticastOption' value must be specified.", "optionValue");
+                               SetSocketOption_internal (safe_handle, optionLevel, optionName, multicast, null, 0, out error);
+                       } else if (optionLevel == SocketOptionLevel.IPv6 && (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)) {
+                               IPv6MulticastOption multicast = optionValue as IPv6MulticastOption;
+                               if (multicast == null)
+                                       throw new ArgumentException ("A 'IPv6MulticastOption' value must be specified.", "optionValue");
+                               SetSocketOption_internal (safe_handle, optionLevel, optionName, multicast, null, 0, out error);
+                       } else {
+                               throw new ArgumentException ("Invalid value specified.", "optionValue");
+                       }
 
-                       return ret;
+                       if (error != 0) {
+                               if (error == (int) SocketError.InvalidArgument)
+                                       throw new ArgumentException ();
+                               throw new SocketException (error);
+                       }
                }
 
-               public int Send (byte [] buf, int offset, int size, SocketFlags flags)
+               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, bool optionValue)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buf == null)
-                               throw new ArgumentNullException ("buffer");
-
-                       CheckRange (buf, offset, size);
-
-                       SocketError error;
-
-                       int ret = Send_nochecks (buf, offset, size, flags, out error);
+                       ThrowIfDisposedAndClosed ();
 
-                       if (error != SocketError.Success)
-                               throw new SocketException ((int) error);
+                       int error;
+                       int int_val = optionValue ? 1 : 0;
+                       SetSocketOption_internal (safe_handle, optionLevel, optionName, null, null, int_val, out error);
 
-                       return ret;
+                       if (error != 0) {
+                               if (error == (int) SocketError.InvalidArgument)
+                                       throw new ArgumentException ();
+                               throw new SocketException (error);
+                       }
                }
 
-               public int Send (byte [] buf, int offset, int size, SocketFlags flags, out SocketError error)
+               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, int optionValue)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buf == null)
-                               throw new ArgumentNullException ("buffer");
+                       ThrowIfDisposedAndClosed ();
 
-                       CheckRange (buf, offset, size);
+                       int error;
+                       SetSocketOption_internal (safe_handle, optionLevel, optionName, null, null, optionValue, out error);
 
-                       return Send_nochecks (buf, offset, size, flags, out error);
+                       if (error != 0) {
+                               throw new SocketException (error);
+                       }
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static bool SendFile (IntPtr sock, string filename, byte [] pre_buffer, byte [] post_buffer, TransmitFileOptions flags);
-
-               private static bool SendFile (SafeSocketHandle safeHandle, string filename, byte [] pre_buffer, byte [] post_buffer, TransmitFileOptions flags)
+               static void SetSocketOption_internal (SafeSocketHandle safeHandle, SocketOptionLevel level, SocketOptionName name, object obj_val, byte [] byte_val, int int_val, out int error)
                {
+                       bool release = false;
                        try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               return SendFile (safeHandle.DangerousGetHandle (), filename, pre_buffer, post_buffer, flags);
+                               safeHandle.DangerousAddRef (ref release);
+                               SetSocketOption_internal (safeHandle.DangerousGetHandle (), level, name, obj_val, byte_val, int_val, out error);
                        } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
+                               if (release)
+                                       safeHandle.DangerousRelease ();
                        }
                }
 
-               public void SendFile (string fileName)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (!connected)
-                               throw new NotSupportedException ();
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static void SetSocketOption_internal (IntPtr socket, SocketOptionLevel level, SocketOptionName name, object obj_val, byte [] byte_val, int int_val, out int error);
 
-                       if (!blocking)
-                               throw new InvalidOperationException ();
+#endregion
 
-                       SendFile (fileName, null, null, 0);
-               }
+#region IOControl
 
-               public void SendFile (string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags)
+               public int IOControl (int ioctl_code, byte [] in_value, byte [] out_value)
                {
-                       if (disposed && closed)
+                       if (is_disposed)
                                throw new ObjectDisposedException (GetType ().ToString ());
 
-                       if (!connected)
-                               throw new NotSupportedException ();
+                       int error;
+                       int result = IOControl_internal (safe_handle, ioctl_code, in_value, out_value, out error);
 
-                       if (!blocking)
-                               throw new InvalidOperationException ();
+                       if (error != 0)
+                               throw new SocketException (error);
+                       if (result == -1)
+                               throw new InvalidOperationException ("Must use Blocking property instead.");
 
-                       if (!SendFile (socket, fileName, preBuffer, postBuffer, flags)) {
-                               SocketException exc = new SocketException ();
-                               if (exc.ErrorCode == 2 || exc.ErrorCode == 3)
-                                       throw new FileNotFoundException ();
-                               throw exc;
-                       }
+                       return result;
                }
 
-               public bool SendToAsync (SocketAsyncEventArgs e)
+               public int IOControl (IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue)
                {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       if (e.BufferList != null)
-                               throw new NotSupportedException ("Mono doesn't support using BufferList at this point.");
-                       if (e.RemoteEndPoint == null)
-                               throw new ArgumentNullException ("remoteEP", "Value cannot be null.");
+                       return IOControl ((int) ioControlCode, optionInValue, optionOutValue);
+               }
 
-                       e.curSocket = this;
-                       e.Worker.Init (this, e, SocketOperation.SendTo);
-                       SocketAsyncResult res = e.Worker.result;
-                       res.Buffer = e.Buffer;
-                       res.Offset = e.Offset;
-                       res.Size = e.Count;
-                       res.SockFlags = e.SocketFlags;
-                       res.EndPoint = e.RemoteEndPoint;
-                       int count;
-                       lock (writeQ) {
-                               writeQ.Enqueue (e.Worker);
-                               count = writeQ.Count;
+               static int IOControl_internal (SafeSocketHandle safeHandle, int ioctl_code, byte [] input, byte [] output, out int error)
+               {
+                       bool release = false;
+                       try {
+                               safeHandle.DangerousAddRef (ref release);
+                               return IOControl_internal (safeHandle.DangerousGetHandle (), ioctl_code, input, output, out error);
+                       } finally {
+                               if (release)
+                                       safeHandle.DangerousRelease ();
                        }
-                       if (count == 1)
-                               socket_pool_queue (Worker.Dispatcher, res);
-                       return true;
                }
-               
-               public int SendTo (byte [] buffer, EndPoint remote_end)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+               /* See Socket.IOControl, WSAIoctl documentation in MSDN. The common options between UNIX
+                * and Winsock are FIONREAD, FIONBIO and SIOCATMARK. Anything else will depend on the system
+                * except SIO_KEEPALIVE_VALS which is properly handled on both windows and linux. */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern static int IOControl_internal (IntPtr sock, int ioctl_code, byte [] input, byte [] output, out int error);
 
-                       if (remote_end == null)
-                               throw new ArgumentNullException ("remote_end");
+#endregion
 
-                       return SendTo_nochecks (buffer, 0, buffer.Length, SocketFlags.None, remote_end);
+#region Close
+
+               public void Close ()
+               {
+                       linger_timeout = 0;
+                       Dispose ();
                }
 
-               public int SendTo (byte [] buffer, SocketFlags flags, EndPoint remote_end)
+               public void Close (int timeout)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       linger_timeout = timeout;
+                       Dispose ();
+               }
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal extern static void Close_internal (IntPtr socket, out int error);
 
-                       if (remote_end == null)
-                               throw new ArgumentNullException ("remote_end");
-                               
-                       return SendTo_nochecks (buffer, 0, buffer.Length, flags, remote_end);
-               }
+#endregion
 
-               public int SendTo (byte [] buffer, int size, SocketFlags flags, EndPoint remote_end)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+#region Shutdown
 
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
+               public void Shutdown (SocketShutdown how)
+               {
+                       ThrowIfDisposedAndClosed ();
 
-                       if (remote_end == null)
-                               throw new ArgumentNullException ("remote_end");
+                       if (!is_connected)
+                               throw new SocketException (10057); // Not connected
 
-                       CheckRange (buffer, 0, size);
+                       int error;
+                       Shutdown_internal (safe_handle, how, out error);
 
-                       return SendTo_nochecks (buffer, 0, size, flags, remote_end);
+                       if (error != 0)
+                               throw new SocketException (error);
                }
 
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static int SendTo_internal(IntPtr sock,
-                                                         byte[] buffer,
-                                                         int offset,
-                                                         int count,
-                                                         SocketFlags flags,
-                                                         SocketAddress sa,
-                                                         out int error);
-
-               private static int SendTo_internal (SafeSocketHandle safeHandle,
-                                                         byte[] buffer,
-                                                         int offset,
-                                                         int count,
-                                                         SocketFlags flags,
-                                                         SocketAddress sa,
-                                                         out int error)
+               static void Shutdown_internal (SafeSocketHandle safeHandle, SocketShutdown how, out int error)
                {
+                       bool release = false;
                        try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               return SendTo_internal (safeHandle.DangerousGetHandle (), buffer, offset, count, flags, sa, out error);
+                               safeHandle.DangerousAddRef (ref release);
+                               Shutdown_internal (safeHandle.DangerousGetHandle (), how, out error);
                        } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
+                               if (release)
+                                       safeHandle.DangerousRelease ();
                        }
                }
 
-               public int SendTo (byte [] buffer, int offset, int size, SocketFlags flags,
-                                  EndPoint remote_end)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-
-                       if (remote_end == null)
-                               throw new ArgumentNullException("remote_end");
+               [MethodImplAttribute (MethodImplOptions.InternalCall)]
+               extern static void Shutdown_internal (IntPtr socket, SocketShutdown how, out int error);
 
-                       CheckRange (buffer, offset, size);
+#endregion
 
-                       return SendTo_nochecks (buffer, offset, size, flags, remote_end);
-               }
+#region Dispose
 
-               internal int SendTo_nochecks (byte [] buffer, int offset, int size, SocketFlags flags,
-                                             EndPoint remote_end)
+               protected virtual void Dispose (bool disposing)
                {
-                       SocketAddress sockaddr = remote_end.Serialize ();
+                       if (is_disposed)
+                               return;
 
-                       int ret, error;
+                       is_disposed = true;
+                       bool was_connected = is_connected;
+                       is_connected = false;
 
-                       ret = SendTo_internal (socket, buffer, offset, size, flags, sockaddr, out error);
+                       if (safe_handle != null) {
+                               is_closed = true;
+                               IntPtr x = Handle;
 
-                       SocketError err = (SocketError) error;
-                       if (err != 0) {
-                               if (err != SocketError.WouldBlock && err != SocketError.InProgress)
-                                       connected = false;
+                               if (was_connected)
+                                       Linger (x);
 
-                               throw new SocketException (error);
+                               safe_handle.Dispose ();
                        }
+               }
 
-                       connected = true;
-                       isbound = true;
-                       seed_endpoint = remote_end;
-                       
-                       return ret;
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
-               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, byte [] optionValue)
+               void Linger (IntPtr handle)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       if (!is_connected || linger_timeout <= 0)
+                               return;
 
-                       // I'd throw an ArgumentNullException, but this is what MS does.
-                       if (optionValue == null)
-                               throw new SocketException ((int) SocketError.Fault,
-                                       "Error trying to dereference an invalid pointer");
-                       
+                       /* We don't want to receive any more data */
                        int error;
+                       Shutdown_internal (handle, SocketShutdown.Receive, out error);
 
-                       SetSocketOption_internal (socket, optionLevel, optionName, null,
-                                                optionValue, 0, out error);
+                       if (error != 0)
+                               return;
 
-                       if (error != 0) {
-                               if (error == (int) SocketError.InvalidArgument)
-                                       throw new ArgumentException ();
-                               throw new SocketException (error);
+                       int seconds = linger_timeout / 1000;
+                       int ms = linger_timeout % 1000;
+                       if (ms > 0) {
+                               /* If the other end closes, this will return 'true' with 'Available' == 0 */
+                               Poll_internal (handle, SelectMode.SelectRead, ms * 1000, out error);
+                               if (error != 0)
+                                       return;
+                       }
+
+                       if (seconds > 0) {
+                               LingerOption linger = new LingerOption (true, seconds);
+                               SetSocketOption_internal (handle, SocketOptionLevel.Socket, SocketOptionName.Linger, linger, null, 0, out error);
+                               /* Not needed, we're closing upon return */
+                               //if (error != 0)
+                               //      return;
                        }
                }
 
-               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, object optionValue)
+#endregion
+
+               void ThrowIfDisposedAndClosed (Socket socket)
+               {
+                       if (socket.is_disposed && socket.is_closed)
+                               throw new ObjectDisposedException (socket.GetType ().ToString ());
+               }
+
+               void ThrowIfDisposedAndClosed ()
                {
-                       if (disposed && closed)
+                       if (is_disposed && is_closed)
                                throw new ObjectDisposedException (GetType ().ToString ());
+               }
 
-                       // NOTE: if a null is passed, the byte[] overload is used instead...
-                       if (optionValue == null)
-                               throw new ArgumentNullException("optionValue");
-                       
-                       int error;
+               void ThrowIfBufferNull (byte[] buffer)
+               {
+                       if (buffer == null)
+                               throw new ArgumentNullException ("buffer");
+               }
 
-                       if (optionLevel == SocketOptionLevel.Socket && optionName == SocketOptionName.Linger) {
-                               LingerOption linger = optionValue as LingerOption;
-                               if (linger == null)
-                                       throw new ArgumentException ("A 'LingerOption' value must be specified.", "optionValue");
-                               SetSocketOption_internal (socket, optionLevel, optionName, linger, null, 0, out error);
-                       } else if (optionLevel == SocketOptionLevel.IP && (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)) {
-                               MulticastOption multicast = optionValue as MulticastOption;
-                               if (multicast == null)
-                                       throw new ArgumentException ("A 'MulticastOption' value must be specified.", "optionValue");
-                               SetSocketOption_internal (socket, optionLevel, optionName, multicast, null, 0, out error);
-                       } else if (optionLevel == SocketOptionLevel.IPv6 && (optionName == SocketOptionName.AddMembership || optionName == SocketOptionName.DropMembership)) {
-                               IPv6MulticastOption multicast = optionValue as IPv6MulticastOption;
-                               if (multicast == null)
-                                       throw new ArgumentException ("A 'IPv6MulticastOption' value must be specified.", "optionValue");
-                               SetSocketOption_internal (socket, optionLevel, optionName, multicast, null, 0, out error);
-                       } else {
-                               throw new ArgumentException ("Invalid value specified.", "optionValue");
-                       }
+               void ThrowIfBufferOutOfRange (byte[] buffer, int offset, int size)
+               {
+                       if (offset < 0)
+                               throw new ArgumentOutOfRangeException ("offset", "offset must be >= 0");
+                       if (offset > buffer.Length)
+                               throw new ArgumentOutOfRangeException ("offset", "offset must be <= buffer.Length");
+                       if (size < 0)
+                               throw new ArgumentOutOfRangeException ("size", "size must be >= 0");
+                       if (size > buffer.Length - offset)
+                               throw new ArgumentOutOfRangeException ("size", "size must be <= buffer.Length - offset");
+               }
 
-                       if (error != 0) {
-                               if (error == (int) SocketError.InvalidArgument)
-                                       throw new ArgumentException ();
-                               throw new SocketException (error);
-                       }
+               void ThrowIfUdp ()
+               {
+#if !NET_2_1 || MOBILE
+                       if (protocol_type == ProtocolType.Udp)
+                               throw new SocketException ((int)SocketError.ProtocolOption);
+#endif
                }
 
-               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, bool optionValue)
+               SocketAsyncResult ValidateEndIAsyncResult (IAsyncResult ares, string methodName, string argName)
                {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
+                       if (ares == null)
+                               throw new ArgumentNullException (argName);
 
-                       int error;
-                       int int_val = (optionValue) ? 1 : 0;
-                       SetSocketOption_internal (socket, optionLevel, optionName, null, null, int_val, out error);
-                       if (error != 0) {
-                               if (error == (int) SocketError.InvalidArgument)
-                                       throw new ArgumentException ();
-                               throw new SocketException (error);
+                       SocketAsyncResult sockares = ares as SocketAsyncResult;
+                       if (sockares == null)
+                               throw new ArgumentException ("Invalid IAsyncResult", argName);
+                       if (Interlocked.CompareExchange (ref sockares.EndCalled, 1, 0) == 1)
+                               throw new InvalidOperationException (methodName + " can only be called once per asynchronous operation");
+
+                       return sockares;
+               }
+
+               void QueueSocketAsyncResult (Queue<SocketAsyncWorker> queue, SocketAsyncWorker worker, SocketAsyncResult sockares)
+               {
+                       int count;
+                       lock (queue) {
+                               queue.Enqueue (worker);
+                               count = queue.Count;
                        }
+
+                       if (count == 1)
+                               socket_pool_queue (SocketAsyncWorker.Dispatcher, sockares);
+               }
+
+               [StructLayout (LayoutKind.Sequential)]
+               struct WSABUF {
+                       public int len;
+                       public IntPtr buf;
                }
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal static extern void cancel_blocking_socket_operation (Thread thread);
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal static extern void socket_pool_queue (SocketAsyncCallback d, SocketAsyncResult r);
        }
 }
 
diff --git a/mcs/class/System/System.Net.Sockets/SocketAsyncCallback.cs b/mcs/class/System/System.Net.Sockets/SocketAsyncCallback.cs
new file mode 100644 (file)
index 0000000..0ea4479
--- /dev/null
@@ -0,0 +1,32 @@
+// System.Net.Sockets.SocketAsyncCallback.cs
+//
+// Authors:
+//     Ludovic Henry <ludovic@xamarin.com>
+//
+// Copyright (C) 2015 Xamarin, Inc. (https://www.xamarin.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Net.Sockets
+{
+       internal delegate void SocketAsyncCallback (SocketAsyncResult sar);
+}
index b7b38c150c1bcb2222080b01cf0f5735b29ccbbd..8a3f703f295a8ccf0862f1ed4f8b900b5636ed63 100644 (file)
@@ -40,7 +40,7 @@ namespace System.Net.Sockets
        {
                bool disposed;
                int in_progress;
-               internal Socket.Worker Worker;
+               internal SocketAsyncWorker Worker;
                EndPoint remote_ep;
                public Exception ConnectByNameError { get; internal set; }
 
@@ -101,7 +101,7 @@ namespace System.Net.Sockets
                
                public SocketAsyncEventArgs ()
                {
-                       Worker = new Socket.Worker (this);
+                       Worker = new SocketAsyncWorker (this);
                        AcceptSocket = null;
                        Buffer = null;
                        BufferList = null;
@@ -208,33 +208,42 @@ namespace System.Net.Sockets
                static void DispatcherCB (IAsyncResult ares)
                {
                        SocketAsyncEventArgs args = (SocketAsyncEventArgs) ares.AsyncState;
+
                        if (Interlocked.Exchange (ref args.in_progress, 0) != 1)
                                throw new InvalidOperationException ("No operation in progress");
-                       SocketAsyncOperation op = args.LastOperation;
-                       // Notes;
-                       //      -SocketOperation.AcceptReceive not used in SocketAsyncEventArgs
-                       //      -SendPackets and ReceiveMessageFrom are not implemented yet
-                       if (op == SocketAsyncOperation.Receive)
+
+                       /* Notes;
+                        *  -SocketOperation.AcceptReceive not used in SocketAsyncEventArgs
+                        *  -SendPackets and ReceiveMessageFrom are not implemented yet */
+                       switch (args.LastOperation) {
+                       case SocketAsyncOperation.Receive:
                                args.ReceiveCallback (ares);
-                       else if (op == SocketAsyncOperation.Send)
+                               break;
+                       case SocketAsyncOperation.Send:
                                args.SendCallback (ares);
-                       else if (op == SocketAsyncOperation.ReceiveFrom)
+                               break;
+                       case SocketAsyncOperation.ReceiveFrom:
                                args.ReceiveFromCallback (ares);
-                       else if (op == SocketAsyncOperation.SendTo)
+                               break;
+                       case SocketAsyncOperation.SendTo:
                                args.SendToCallback (ares);
-                       else if (op == SocketAsyncOperation.Accept)
+                               break;
+                       case SocketAsyncOperation.Accept:
                                args.AcceptCallback (ares);
-                       else if (op == SocketAsyncOperation.Disconnect)
+                               break;
+                       case SocketAsyncOperation.Disconnect:
                                args.DisconnectCallback (ares);
-                       else if (op == SocketAsyncOperation.Connect)
+                               break;
+                       case SocketAsyncOperation.Connect:
                                args.ConnectCallback (ares);
+                               break;
                        /*
-                       else if (op == Socket.SocketOperation.ReceiveMessageFrom)
-                       else if (op == Socket.SocketOperation.SendPackets)
+                       case SocketOperation.ReceiveMessageFrom:
+                       case SocketOperation.SendPackets:
                        */
-                       else
-                               throw new NotImplementedException (String.Format ("Operation {0} is not implemented", op));
-
+                       default:
+                               throw new NotImplementedException (String.Format ("Operation {0} is not implemented", args.LastOperation));
+                       }
                }
 
                internal void ReceiveCallback (IAsyncResult ares)
diff --git a/mcs/class/System/System.Net.Sockets/SocketAsyncResult.cs b/mcs/class/System/System.Net.Sockets/SocketAsyncResult.cs
new file mode 100644 (file)
index 0000000..f1cd229
--- /dev/null
@@ -0,0 +1,318 @@
+// System.Net.Sockets.SocketAsyncResult.cs
+//
+// Authors:
+//     Ludovic Henry <ludovic@xamarin.com>
+//
+// Copyright (C) 2015 Xamarin, Inc. (https://www.xamarin.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Runtime.Remoting.Messaging;
+using System.Threading;
+
+namespace System.Net.Sockets
+{
+       [StructLayout (LayoutKind.Sequential)]
+       internal sealed class SocketAsyncResult: IAsyncResult, IThreadPoolWorkItem
+       {
+               /* Same structure in the runtime. Keep this in sync with
+                * MonoSocketAsyncResult in metadata/socket-io.h and
+                * ProcessAsyncReader in System.Diagnostics/Process.cs. */
+
+               public Socket socket;
+               IntPtr handle;
+               object state;
+               AsyncCallback callback; // used from the runtime
+               WaitHandle wait_handle;
+
+               Exception delayed_exception;
+
+               public EndPoint EndPoint;                 // Connect,ReceiveFrom,SendTo
+               public byte [] Buffer;                    // Receive,ReceiveFrom,Send,SendTo
+               public int Offset;                        // Receive,ReceiveFrom,Send,SendTo
+               public int Size;                          // Receive,ReceiveFrom,Send,SendTo
+               public SocketFlags SockFlags;             // Receive,ReceiveFrom,Send,SendTo
+               public Socket AcceptSocket;               // AcceptReceive
+               public IPAddress[] Addresses;             // Connect
+               public int Port;                          // Connect
+               public IList<ArraySegment<byte>> Buffers; // Receive, Send
+               public bool ReuseSocket;                  // Disconnect
+
+               // Return values
+               Socket accept_socket;
+               int total;
+
+               bool completed_synchronously;
+               bool completed;
+               bool is_blocking;
+               internal int error;
+               public SocketOperation operation;
+               AsyncResult async_result;
+               public int EndCalled;
+
+               /* These fields are not in MonoSocketAsyncResult */
+               public SocketAsyncWorker Worker;
+               public int CurrentAddress;                // Connect
+
+               public SocketAsyncResult ()
+               {
+               }
+
+               public SocketAsyncResult (Socket socket, object state, AsyncCallback callback, SocketOperation operation)
+               {
+                       Init (socket, state, callback, operation, new SocketAsyncWorker (this));
+               }
+
+               public object AsyncState {
+                       get {
+                               return state;
+                       }
+               }
+
+               public WaitHandle AsyncWaitHandle {
+                       get {
+                               lock (this) {
+                                       if (wait_handle == null)
+                                               wait_handle = new ManualResetEvent (completed);
+                               }
+
+                               return wait_handle;
+                       }
+                       set {
+                               wait_handle = value;
+                       }
+               }
+
+               public bool CompletedSynchronously {
+                       get {
+                               return completed_synchronously;
+                       }
+               }
+
+               public bool IsCompleted {
+                       get {
+                               return completed;
+                       }
+                       set {
+                               completed = value;
+                               lock (this) {
+                                       if (wait_handle != null && value)
+                                               ((ManualResetEvent) wait_handle).Set ();
+                               }
+                       }
+               }
+
+               public Socket Socket {
+                       get {
+                               return accept_socket;
+                       }
+               }
+
+               public int Total {
+                       get { return total; }
+                       set { total = value; }
+               }
+
+               public SocketError ErrorCode {
+                       get {
+                               SocketException ex = delayed_exception as SocketException;
+                               if (ex != null)
+                                       return ex.SocketErrorCode;
+
+                               if (error != 0)
+                                       return (SocketError) error;
+
+                               return SocketError.Success;
+                       }
+               }
+
+               public void Init (Socket socket, object state, AsyncCallback callback, SocketOperation operation, SocketAsyncWorker worker)
+               {
+                       this.socket = socket;
+                       this.is_blocking = socket != null ? socket.is_blocking : true;
+                       this.handle = socket != null ? socket.Handle : IntPtr.Zero;
+                       this.state = state;
+                       this.callback = callback;
+                       this.operation = operation;
+
+                       if (wait_handle != null)
+                               ((ManualResetEvent) wait_handle).Reset ();
+
+                       delayed_exception = null;
+
+                       EndPoint = null;
+                       Buffer = null;
+                       Offset = 0;
+                       Size = 0;
+                       SockFlags = SocketFlags.None;
+                       AcceptSocket = null;
+                       Addresses = null;
+                       Port = 0;
+                       Buffers = null;
+                       ReuseSocket = false;
+                       accept_socket = null;
+                       total = 0;
+
+                       completed_synchronously = false;
+                       completed = false;
+                       is_blocking = false;
+                       error = 0;
+                       async_result = null;
+                       EndCalled = 0;
+                       Worker = worker;
+               }
+
+               public void DoMConnectCallback ()
+               {
+                       if (callback == null)
+                               return;
+                       ThreadPool.UnsafeQueueUserWorkItem (_ => callback (this), null);
+               }
+
+               public void Dispose ()
+               {
+                       Init (null, null, null, 0, Worker);
+                       if (wait_handle != null) {
+                               wait_handle.Close ();
+                               wait_handle = null;
+                       }
+               }
+
+               public void CheckIfThrowDelayedException ()
+               {
+                       if (delayed_exception != null) {
+                               socket.is_connected = false;
+                               throw delayed_exception;
+                       }
+
+                       if (error != 0) {
+                               socket.is_connected = false;
+                               throw new SocketException (error);
+                       }
+               }
+
+               void CompleteDisposed (object unused)
+               {
+                       Complete ();
+               }
+
+               public void Complete ()
+               {
+                       if (operation != SocketOperation.Receive && socket.is_disposed)
+                               delayed_exception = new ObjectDisposedException (socket.GetType ().ToString ());
+
+                       IsCompleted = true;
+
+                       Queue<SocketAsyncWorker> queue = null;
+                       switch (operation) {
+                       case SocketOperation.Receive:
+                       case SocketOperation.ReceiveFrom:
+                       case SocketOperation.ReceiveGeneric:
+                       case SocketOperation.Accept:
+                               queue = socket.readQ;
+                               break;
+                       case SocketOperation.Send:
+                       case SocketOperation.SendTo:
+                       case SocketOperation.SendGeneric:
+                               queue = socket.writeQ;
+                               break;
+                       }
+
+                       if (queue != null) {
+                               lock (queue) {
+                                       /* queue.Count will only be 0 if the socket is closed while receive/send/accept
+                                        * operation(s) are pending and at least one call to this method is waiting
+                                        * on the lock while another one calls CompleteAllOnDispose() */
+                                       if (queue.Count > 0)
+                                               queue.Dequeue (); /* remove ourselves */
+                                       if (queue.Count > 0) {
+                                               if (!socket.is_disposed) {
+                                                       Socket.socket_pool_queue (SocketAsyncWorker.Dispatcher, (queue.Peek ()).result);
+                                               } else {
+                                                       /* CompleteAllOnDispose */
+                                                       SocketAsyncWorker [] workers = queue.ToArray ();
+                                                       for (int i = 0; i < workers.Length; i++)
+                                                               ThreadPool.UnsafeQueueUserWorkItem (workers [i].result.CompleteDisposed, null);
+                                                       queue.Clear ();
+                                               }
+                                       }
+                               }
+                       }
+
+                       // IMPORTANT: 'callback', if any is scheduled from unmanaged code
+               }
+
+               public void Complete (bool synch)
+               {
+                       this.completed_synchronously = synch;
+                       Complete ();
+               }
+
+               public void Complete (int total)
+               {
+                       this.total = total;
+                       Complete ();
+               }
+
+               public void Complete (Exception e, bool synch)
+               {
+                       this.completed_synchronously = synch;
+                       this.delayed_exception = e;
+                       Complete ();
+               }
+
+               public void Complete (Exception e)
+               {
+                       this.delayed_exception = e;
+                       Complete ();
+               }
+
+               public void Complete (Socket s)
+               {
+                       this.accept_socket = s;
+                       Complete ();
+               }
+
+               public void Complete (Socket s, int total)
+               {
+                       this.accept_socket = s;
+                       this.total = total;
+                       Complete ();
+               }
+
+               void IThreadPoolWorkItem.ExecuteWorkItem()
+               {
+                       async_result.Invoke ();
+
+                       if (completed && callback != null) {
+                               ThreadPool.UnsafeQueueCustomWorkItem (new AsyncResult (state => callback ((IAsyncResult) state), this, false), false);
+                       }
+               }
+
+               void IThreadPoolWorkItem.MarkAborted(ThreadAbortException tae)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System/System.Net.Sockets/SocketAsyncWorker.cs b/mcs/class/System/System.Net.Sockets/SocketAsyncWorker.cs
new file mode 100644 (file)
index 0000000..0f3262f
--- /dev/null
@@ -0,0 +1,397 @@
+// System.Net.Sockets.SocketAsyncWorker.cs
+//
+// Authors:
+//     Ludovic Henry <ludovic@xamarin.com>
+//
+// Copyright (C) 2015 Xamarin, Inc. (https://www.xamarin.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Net.Sockets
+{
+       internal sealed class SocketAsyncWorker
+       {
+               public SocketAsyncResult result;
+               SocketAsyncEventArgs args;
+
+               public SocketAsyncWorker (SocketAsyncEventArgs args)
+               {
+                       this.args = args;
+                       result = new SocketAsyncResult ();
+                       result.Worker = this;
+               }
+
+               public SocketAsyncWorker (SocketAsyncResult ares)
+               {
+                       this.result = ares;
+               }
+
+               public void Dispose ()
+               {
+                       if (result != null) {
+                               result.Dispose ();
+                               result = null;
+                               args = null;
+                       }
+               }
+
+               public static SocketAsyncCallback Dispatcher = new SocketAsyncCallback (DispatcherCB);
+
+               static void DispatcherCB (SocketAsyncResult sar)
+               {
+                       /* SendPackets and ReceiveMessageFrom are not implemented yet */
+                       switch (sar.operation) {
+                       case SocketOperation.Receive:
+                       case SocketOperation.ReceiveGeneric:
+                       case SocketOperation.RecvJustCallback:
+                               sar.Worker.Receive ();
+                               break;
+                       case SocketOperation.Send:
+                       case SocketOperation.SendGeneric:
+                       case SocketOperation.SendJustCallback:
+                               sar.Worker.Send ();
+                               break;
+                       case SocketOperation.ReceiveFrom:
+                               sar.Worker.ReceiveFrom ();
+                               break;
+                       case SocketOperation.SendTo:
+                               sar.Worker.SendTo ();
+                               break;
+                       case SocketOperation.Connect:
+                               sar.Worker.Connect ();
+                               break;
+                       case SocketOperation.Accept:
+                               sar.Worker.Accept ();
+                               break;
+                       case SocketOperation.AcceptReceive:
+                               sar.Worker.AcceptReceive ();
+                               break;
+                       case SocketOperation.Disconnect:
+                               sar.Worker.Disconnect ();
+                               break;
+                       // case SocketOperation.ReceiveMessageFrom
+                       //      sar.Worker.ReceiveMessageFrom ()
+                       //      break;
+                       // case SocketOperation.SendPackets:
+                       //      sar.Worker.SendPackets ();
+                       //      break;
+                       default:
+                               throw new NotImplementedException (String.Format ("Operation {0} is not implemented", sar.operation));
+                       }
+               }
+
+               /* This is called when reusing a SocketAsyncEventArgs */
+               public void Init (Socket sock, SocketAsyncEventArgs args, SocketOperation op)
+               {
+                       result.Init (sock, args, SocketAsyncEventArgs.Dispatcher, op, this);
+
+                       SocketAsyncOperation async_op;
+
+                       // Notes;
+                       //      -SocketOperation.AcceptReceive not used in SocketAsyncEventArgs
+                       //      -SendPackets and ReceiveMessageFrom are not implemented yet
+                       switch (op) {
+                       case SocketOperation.Connect:
+                               async_op = SocketAsyncOperation.Connect;
+                               break;
+                       case SocketOperation.Accept:
+                               async_op = SocketAsyncOperation.Accept;
+                               break;
+                       case SocketOperation.Disconnect:
+                               async_op = SocketAsyncOperation.Disconnect;
+                               break;
+                       case SocketOperation.Receive:
+                       case SocketOperation.ReceiveGeneric:
+                               async_op = SocketAsyncOperation.Receive;
+                               break;
+                       case SocketOperation.ReceiveFrom:
+                               async_op = SocketAsyncOperation.ReceiveFrom;
+                               break;
+                       // case SocketOperation.ReceiveMessageFrom:
+                       //      async_op = SocketAsyncOperation.ReceiveMessageFrom;
+                       //      break;
+                       case SocketOperation.Send:
+                       case SocketOperation.SendGeneric:
+                               async_op = SocketAsyncOperation.Send;
+                               break;
+                       // case SocketOperation.SendPackets:
+                       //      async_op = SocketAsyncOperation.SendPackets;
+                       //      break;
+                       case SocketOperation.SendTo:
+                               async_op = SocketAsyncOperation.SendTo;
+                               break;
+                       default:
+                               throw new NotImplementedException (String.Format ("Operation {0} is not implemented", op));
+                       }
+
+                       args.SetLastOperation (async_op);
+                       args.SocketError = SocketError.Success;
+                       args.BytesTransferred = 0;
+               }
+
+               public void Accept ()
+               {
+                       Socket acc_socket = null;
+                       try {
+                               if (args != null && args.AcceptSocket != null) {
+                                       result.socket.Accept (args.AcceptSocket);
+                                       acc_socket = args.AcceptSocket;
+                               } else {
+                                       acc_socket = result.socket.Accept ();
+                                       if (args != null)
+                                               args.AcceptSocket = acc_socket;
+                               }
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+
+                       result.Complete (acc_socket);
+               }
+
+               /* only used in 2.0 profile and newer, but
+                * leave in older profiles to keep interface
+                * to runtime consistent
+                */
+               public void AcceptReceive ()
+               {
+                       Socket acc_socket = null;
+                       try {
+                               if (result.AcceptSocket == null) {
+                                       acc_socket = result.socket.Accept ();
+                               } else {
+                                       acc_socket = result.AcceptSocket;
+                                       result.socket.Accept (acc_socket);
+                               }
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+
+                       /* It seems the MS runtime
+                        * special-cases 0-length requested
+                        * receive data.  See bug 464201.
+                        */
+                       int total = 0;
+                       if (result.Size > 0) {
+                               try {
+                                       SocketError error;
+                                       total = acc_socket.Receive_nochecks (result.Buffer, result.Offset, result.Size, result.SockFlags, out error);
+                                       if (error != 0) {
+                                               result.Complete (new SocketException ((int) error));
+                                               return;
+                                       }
+                               } catch (Exception e) {
+                                       result.Complete (e);
+                                       return;
+                               }
+                       }
+
+                       result.Complete (acc_socket, total);
+               }
+
+               public void Connect ()
+               {
+                       if (result.EndPoint == null) {
+                               result.Complete (new SocketException ((int)SocketError.AddressNotAvailable));
+                               return;
+                       }
+
+                       SocketAsyncResult mconnect = result.AsyncState as SocketAsyncResult;
+                       bool is_mconnect = (mconnect != null && mconnect.Addresses != null);
+                       try {
+                               int error_code;
+                               EndPoint ep = result.EndPoint;
+                               error_code = (int) result.socket.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
+                               if (error_code == 0) {
+                                       if (is_mconnect)
+                                               result = mconnect;
+                                       result.socket.seed_endpoint = ep;
+                                       result.socket.is_connected = true;
+                                       result.socket.is_bound = true;
+                                       result.socket.connect_in_progress = false;
+                                       result.error = 0;
+                                       result.Complete ();
+                                       if (is_mconnect)
+                                               result.DoMConnectCallback ();
+                                       return;
+                               }
+
+                               if (!is_mconnect) {
+                                       result.socket.connect_in_progress = false;
+                                       result.Complete (new SocketException (error_code));
+                                       return;
+                               }
+
+                               if (mconnect.CurrentAddress >= mconnect.Addresses.Length) {
+                                       mconnect.Complete (new SocketException (error_code));
+                                       if (is_mconnect)
+                                               mconnect.DoMConnectCallback ();
+                                       return;
+                               }
+                               mconnect.socket.BeginMConnect (mconnect);
+                       } catch (Exception e) {
+                               result.socket.connect_in_progress = false;
+                               if (is_mconnect)
+                                       result = mconnect;
+                               result.Complete (e);
+                               if (is_mconnect)
+                                       result.DoMConnectCallback ();
+                               return;
+                       }
+               }
+
+               /* Also only used in 2.0 profile and newer */
+               public void Disconnect ()
+               {
+                       try {
+                               if (args != null)
+                                       result.ReuseSocket = args.DisconnectReuseSocket;
+                               result.socket.Disconnect (result.ReuseSocket);
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+                       result.Complete ();
+               }
+
+               public void Receive ()
+               {
+                       if (result.operation == SocketOperation.ReceiveGeneric) {
+                               ReceiveGeneric ();
+                               return;
+                       }
+
+                       int total = 0;
+                       try {
+                               total = Socket.Receive_internal (result.socket.safe_handle, result.Buffer, result.Offset, result.Size, result.SockFlags, out result.error);
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+
+                       result.Complete (total);
+               }
+
+               public void ReceiveFrom ()
+               {
+                       int total = 0;
+                       try {
+                               total = result.socket.ReceiveFrom_nochecks (result.Buffer, result.Offset, result.Size, result.SockFlags, ref result.EndPoint);
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+
+                       result.Complete (total);
+               }
+
+               public void ReceiveGeneric ()
+               {
+                       int total = 0;
+                       try {
+                               total = result.socket.Receive (result.Buffers, result.SockFlags);
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+                       result.Complete (total);
+               }
+
+               int send_so_far;
+
+               void UpdateSendValues (int last_sent)
+               {
+                       if (result.error == 0) {
+                               send_so_far += last_sent;
+                               result.Offset += last_sent;
+                               result.Size -= last_sent;
+                       }
+               }
+
+               public void Send ()
+               {
+                       if (result.operation == SocketOperation.SendGeneric) {
+                               SendGeneric ();
+                               return;
+                       }
+
+                       int total = 0;
+                       try {
+                               total = Socket.Send_internal (result.socket.safe_handle, result.Buffer, result.Offset, result.Size, result.SockFlags, out result.error);
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+
+                       if (result.error == 0) {
+                               UpdateSendValues (total);
+                               if (result.socket.is_disposed) {
+                                       result.Complete (total);
+                                       return;
+                               }
+
+                               if (result.Size > 0) {
+                                       Socket.socket_pool_queue (SocketAsyncWorker.Dispatcher, result);
+                                       return; // Have to finish writing everything. See bug #74475.
+                               }
+                               result.Total = send_so_far;
+                               send_so_far = 0;
+                       }
+                       result.Complete (total);
+               }
+
+               public void SendTo ()
+               {
+                       int total = 0;
+                       try {
+                               total = result.socket.SendTo_nochecks (result.Buffer, result.Offset, result.Size, result.SockFlags, result.EndPoint);
+
+                               UpdateSendValues (total);
+                               if (result.Size > 0) {
+                                       Socket.socket_pool_queue (SocketAsyncWorker.Dispatcher, result);
+                                       return; // Have to finish writing everything. See bug #74475.
+                               }
+                               result.Total = send_so_far;
+                               send_so_far = 0;
+                       } catch (Exception e) {
+                               send_so_far = 0;
+                               result.Complete (e);
+                               return;
+                       }
+
+                       result.Complete ();
+               }
+
+               public void SendGeneric ()
+               {
+                       int total = 0;
+                       try {
+                               total = result.socket.Send (result.Buffers, result.SockFlags);
+                       } catch (Exception e) {
+                               result.Complete (e);
+                               return;
+                       }
+                       result.Complete (total);
+               }
+       }
+}
diff --git a/mcs/class/System/System.Net.Sockets/SocketOperation.cs b/mcs/class/System/System.Net.Sockets/SocketOperation.cs
new file mode 100644 (file)
index 0000000..22ffd6e
--- /dev/null
@@ -0,0 +1,48 @@
+// System.Net.Sockets.SocketOperation.cs
+//
+// Authors:
+//     Ludovic Henry <ludovic@xamarin.com>
+//
+// Copyright (C) 2015 Xamarin, Inc. (https://www.xamarin.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Net.Sockets
+{
+       // Used by the runtime
+       internal enum SocketOperation {
+               Accept,
+               Connect,
+               Receive,
+               ReceiveFrom,
+               Send,
+               SendTo,
+               RecvJustCallback,
+               SendJustCallback,
+               UsedInProcess,
+               UsedInConsole2,
+               Disconnect,
+               AcceptReceive,
+               ReceiveGeneric,
+               SendGeneric
+       }
+}
diff --git a/mcs/class/System/System.Net.Sockets/SocketOptionName.cs b/mcs/class/System/System.Net.Sockets/SocketOptionName.cs
deleted file mode 100644 (file)
index d0043e1..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-// SocketOptionName.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:33:02 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Net.Sockets {
-
-
-       /// <summary>
-       /// </summary>
-       public enum SocketOptionName {
-
-               /// <summary>
-               /// </summary>
-               Debug = 1,
-
-               /// <summary>
-               /// </summary>
-               AcceptConnection = 2,
-
-               /// <summary>
-               /// </summary>
-               ReuseAddress = 4,
-
-               /// <summary>
-               /// </summary>
-               KeepAlive = 8,
-
-               /// <summary>
-               /// </summary>
-               DontRoute = 16,
-
-               /// <summary>
-               /// </summary>
-               Broadcast = 32,
-
-               /// <summary>
-               /// </summary>
-               UseLoopback = 64,
-
-               /// <summary>
-               /// </summary>
-               Linger = 128,
-
-               /// <summary>
-               /// </summary>
-               OutOfBandInline = 256,
-
-               /// <summary>
-               /// </summary>
-               DontLinger = -129,
-
-               /// <summary>
-               /// </summary>
-               ExclusiveAddressUse = -5,
-
-               /// <summary>
-               /// </summary>
-               SendBuffer = 4097,
-
-               /// <summary>
-               /// </summary>
-               ReceiveBuffer = 4098,
-
-               /// <summary>
-               /// </summary>
-               SendLowWater = 4099,
-
-               /// <summary>
-               /// </summary>
-               ReceiveLowWater = 4100,
-
-               /// <summary>
-               /// </summary>
-               SendTimeout = 4101,
-
-               /// <summary>
-               /// </summary>
-               ReceiveTimeout = 4102,
-
-               /// <summary>
-               /// </summary>
-               Error = 4103,
-
-               /// <summary>
-               /// </summary>
-               Type = 4104,
-
-               /// <summary>
-               /// </summary>
-               MaxConnections = 2147483647,
-
-               /// <summary>
-               /// </summary>
-               IPOptions = 1,
-
-               /// <summary>
-               /// </summary>
-               HeaderIncluded = 2,
-
-               /// <summary>
-               /// </summary>
-               TypeOfService = 3,
-
-               /// <summary>
-               /// </summary>
-               IpTimeToLive = 4,
-
-               /// <summary>
-               /// </summary>
-               MulticastInterface = 9,
-
-               /// <summary>
-               /// </summary>
-               MulticastTimeToLive = 10,
-
-               /// <summary>
-               /// </summary>
-               MulticastLoopback = 11,
-
-               /// <summary>
-               /// </summary>
-               AddMembership = 12,
-
-               /// <summary>
-               /// </summary>
-               DropMembership = 13,
-
-               /// <summary>
-               /// </summary>
-               DontFragment = 14,
-
-               /// <summary>
-               /// </summary>
-               AddSourceMembership = 15,
-
-               /// <summary>
-               /// </summary>
-               DropSourceMembership = 16,
-
-               /// <summary>
-               /// </summary>
-               BlockSource = 17,
-
-               /// <summary>
-               /// </summary>
-               UnblockSource = 18,
-
-               /// <summary>
-               /// </summary>
-               PacketInformation = 19,
-
-               /// <summary>
-               /// </summary>
-               NoDelay = 1,
-
-               /// <summary>
-               /// </summary>
-               BsdUrgent = 2,
-
-               /// <summary>
-               /// </summary>
-               Expedited = 2,
-
-               /// <summary>
-               /// </summary>
-               NoChecksum = 1,
-
-               /// <summary>
-               /// </summary>
-               ChecksumCoverage = 20,
-
-               HopLimit = 21,
-               UpdateAcceptContext = 28683,
-               UpdateConnectContext = 28688,
-
-       } // SocketOptionName
-
-} // System.Net.Sockets
diff --git a/mcs/class/System/System.Net.Sockets/Socket_2_1.cs b/mcs/class/System/System.Net.Sockets/Socket_2_1.cs
deleted file mode 100644 (file)
index 17e9d2a..0000000
+++ /dev/null
@@ -1,2005 +0,0 @@
-// System.Net.Sockets.Socket.cs
-//
-// Authors:
-//     Phillip Pearson (pp@myelin.co.nz)
-//     Dick Porter <dick@ximian.com>
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//     Sridhar Kulkarni (sridharkulkarni@gmail.com)
-//     Brian Nickel (brian.nickel@gmail.com)
-//
-// Copyright (C) 2001, 2002 Phillip Pearson and Ximian, Inc.
-//    http://www.myelin.co.nz
-// (c) 2004-2011 Novell, Inc. (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Net;
-using System.Collections;
-using System.Collections.Generic;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.IO;
-using System.Security;
-using System.Text;
-
-#if !NET_2_1
-using System.Net.Configuration;
-using System.Net.NetworkInformation;
-#endif
-
-namespace System.Net.Sockets {
-
-       public partial class Socket : IDisposable {
-               [StructLayout (LayoutKind.Sequential)]
-               struct WSABUF {
-                       public int len;
-                       public IntPtr buf;
-               }
-
-               // Used by the runtime
-               internal enum SocketOperation {
-                       Accept,
-                       Connect,
-                       Receive,
-                       ReceiveFrom,
-                       Send,
-                       SendTo,
-                       RecvJustCallback,
-                       SendJustCallback,
-                       UsedInProcess,
-                       UsedInConsole2,
-                       Disconnect,
-                       AcceptReceive,
-                       ReceiveGeneric,
-                       SendGeneric
-               }
-
-               [StructLayout (LayoutKind.Sequential)]
-               internal sealed class SocketAsyncResult: IAsyncResult
-               {
-                       /* Same structure in the runtime */
-                       /*
-                         Keep this in sync with MonoSocketAsyncResult in
-                         metadata/socket-io.h and ProcessAsyncReader
-                         in System.Diagnostics/Process.cs.
-                       */
-
-                       public Socket Sock;
-                       public IntPtr handle;
-                       object state;
-                       AsyncCallback callback; // used from the runtime
-                       WaitHandle waithandle;
-
-                       Exception delayedException;
-
-                       public EndPoint EndPoint;       // Connect,ReceiveFrom,SendTo
-                       public byte [] Buffer;          // Receive,ReceiveFrom,Send,SendTo
-                       public int Offset;              // Receive,ReceiveFrom,Send,SendTo
-                       public int Size;                // Receive,ReceiveFrom,Send,SendTo
-                       public SocketFlags SockFlags;   // Receive,ReceiveFrom,Send,SendTo
-                       public Socket AcceptSocket;     // AcceptReceive
-                       public IPAddress[] Addresses;   // Connect
-                       public int Port;                // Connect
-                       public IList<ArraySegment<byte>> Buffers;       // Receive, Send
-                       public bool ReuseSocket;        // Disconnect
-
-                       // Return values
-                       Socket acc_socket;
-                       int total;
-
-                       bool completed_sync;
-                       bool completed;
-                       public bool blocking;
-                       internal int error;
-                       public SocketOperation operation;
-                       public object ares;
-                       public int EndCalled;
-
-                       // These fields are not in MonoSocketAsyncResult
-                       public Worker Worker;
-                       public int CurrentAddress; // Connect
-
-                       public SocketAsyncResult ()
-                       {
-                       }
-
-                       public void Init (Socket sock, object state, AsyncCallback callback, SocketOperation operation)
-                       {
-                               this.Sock = sock;
-                               if (sock != null) {
-                                       this.blocking = sock.blocking;
-                                       this.handle = sock.Handle;
-                               } else {
-                                       this.blocking = true;
-                                       this.handle = IntPtr.Zero;
-                               }
-                               this.state = state;
-                               this.callback = callback;
-                               GC.KeepAlive (this.callback);
-                               this.operation = operation;
-                               SockFlags = SocketFlags.None;
-                               if (waithandle != null)
-                                       ((ManualResetEvent) waithandle).Reset ();
-
-                               delayedException = null;
-
-                               EndPoint = null;
-                               Buffer = null;
-                               Offset = 0;
-                               Size = 0;
-                               SockFlags = 0;
-                               AcceptSocket = null;
-                               Addresses = null;
-                               Port = 0;
-                               Buffers = null;
-                               ReuseSocket = false;
-                               acc_socket = null;
-                               total = 0;
-
-                               completed_sync = false;
-                               completed = false;
-                               blocking = false;
-                               error = 0;
-                               ares = null;
-                               EndCalled = 0;
-                               Worker = null;
-                       }
-
-                       public void DoMConnectCallback ()
-                       {
-                               if (callback == null)
-                                       return;
-                               ThreadPool.UnsafeQueueUserWorkItem (_ => { callback (this); }, null);
-                       }
-
-                       public void Dispose ()
-                       {
-                               Init (null, null, null, 0);
-                               if (waithandle != null) {
-                                       waithandle.Close ();
-                                       waithandle = null;
-                               }
-                       }
-
-                       public SocketAsyncResult (Socket sock, object state, AsyncCallback callback, SocketOperation operation)
-                       {
-                               this.Sock = sock;
-                               this.blocking = sock.blocking;
-                               this.handle = sock.Handle;
-                               this.state = state;
-                               this.callback = callback;
-                               GC.KeepAlive (this.callback);
-                               this.operation = operation;
-                               SockFlags = SocketFlags.None;
-                               Worker = new Worker (this);
-                       }
-
-                       public void CheckIfThrowDelayedException ()
-                       {
-                               if (delayedException != null) {
-                                       Sock.connected = false;
-                                       throw delayedException;
-                               }
-
-                               if (error != 0) {
-                                       Sock.connected = false;
-                                       throw new SocketException (error);
-                               }
-                       }
-
-                       void CompleteAllOnDispose (Queue queue)
-                       {
-                               object [] pending = queue.ToArray ();
-                               queue.Clear ();
-
-                               WaitCallback cb;
-                               for (int i = 0; i < pending.Length; i++) {
-                                       Worker worker = (Worker) pending [i];
-                                       SocketAsyncResult ares = worker.result;
-                                       cb = new WaitCallback (ares.CompleteDisposed);
-                                       ThreadPool.UnsafeQueueUserWorkItem (cb, null);
-                               }
-                       }
-
-                       void CompleteDisposed (object unused)
-                       {
-                               Complete ();
-                       }
-
-                       public void Complete ()
-                       {
-                               if (operation != SocketOperation.Receive && Sock.disposed)
-                                       delayedException = new ObjectDisposedException (Sock.GetType ().ToString ());
-
-                               IsCompleted = true;
-
-                               Queue queue = null;
-                               if (operation == SocketOperation.Receive ||
-                                   operation == SocketOperation.ReceiveFrom ||
-                                   operation == SocketOperation.ReceiveGeneric ||
-                                   operation == SocketOperation.Accept) {
-                                       queue = Sock.readQ;
-                               } else if (operation == SocketOperation.Send ||
-                                          operation == SocketOperation.SendTo ||
-                                          operation == SocketOperation.SendGeneric) {
-
-                                       queue = Sock.writeQ;
-                               }
-
-                               if (queue != null) {
-                                       Worker worker = null;
-                                       SocketAsyncCall sac = null;
-                                       lock (queue) {
-                                               // queue.Count will only be 0 if the socket is closed while receive/send/accept
-                                               // operation(s) are pending and at least one call to this method is
-                                               // waiting on the lock while another one calls CompleteAllOnDispose()
-                                               if (queue.Count > 0)
-                                                       queue.Dequeue (); // remove ourselves
-                                               if (queue.Count > 0) {
-                                                       worker = (Worker) queue.Peek ();
-                                                       if (!Sock.disposed) {
-                                                               sac = Worker.Dispatcher;
-                                                       } else {
-                                                               CompleteAllOnDispose (queue);
-                                                       }
-                                               }
-                                       }
-
-                                       if (sac != null)
-                                               Socket.socket_pool_queue (sac, worker.result);
-                               }
-                               // IMPORTANT: 'callback', if any is scheduled from unmanaged code
-                       }
-
-                       public void Complete (bool synch)
-                       {
-                               completed_sync = synch;
-                               Complete ();
-                       }
-
-                       public void Complete (int total)
-                       {
-                               this.total = total;
-                               Complete ();
-                       }
-
-                       public void Complete (Exception e, bool synch)
-                       {
-                               completed_sync = synch;
-                               delayedException = e;
-                               Complete ();
-                       }
-
-                       public void Complete (Exception e)
-                       {
-                               delayedException = e;
-                               Complete ();
-                       }
-
-                       public void Complete (Socket s)
-                       {
-                               acc_socket = s;
-                               Complete ();
-                       }
-
-                       public void Complete (Socket s, int total)
-                       {
-                               acc_socket = s;
-                               this.total = total;
-                               Complete ();
-                       }
-
-                       public object AsyncState {
-                               get {
-                                       return state;
-                               }
-                       }
-
-                       public WaitHandle AsyncWaitHandle {
-                               get {
-                                       lock (this) {
-                                               if (waithandle == null)
-                                                       waithandle = new ManualResetEvent (completed);
-                                       }
-
-                                       return waithandle;
-                               }
-                               set {
-                                       waithandle=value;
-                               }
-                       }
-
-                       public bool CompletedSynchronously {
-                               get {
-                                       return(completed_sync);
-                               }
-                       }
-
-                       public bool IsCompleted {
-                               get {
-                                       return(completed);
-                               }
-                               set {
-                                       completed=value;
-                                       lock (this) {
-                                               if (waithandle != null && value) {
-                                                       ((ManualResetEvent) waithandle).Set ();
-                                               }
-                                       }
-                               }
-                       }
-
-                       public Socket Socket {
-                               get {
-                                       return acc_socket;
-                               }
-                       }
-
-                       public int Total {
-                               get { return total; }
-                               set { total = value; }
-                       }
-
-                       public SocketError ErrorCode {
-                               get {
-                                       SocketException ex = delayedException as SocketException;
-                                       if (ex != null)
-                                               return(ex.SocketErrorCode);
-
-                                       if (error != 0)
-                                               return((SocketError)error);
-
-                                       return(SocketError.Success);
-                               }
-                       }
-               }
-
-               internal sealed class Worker
-               {
-                       public SocketAsyncResult result;
-                       SocketAsyncEventArgs args;
-
-                       public Worker (SocketAsyncEventArgs args)
-                       {
-                               this.args = args;
-                               result = new SocketAsyncResult ();
-                               result.Worker = this;
-                       }
-
-                       public Worker (SocketAsyncResult ares)
-                       {
-                               this.result = ares;
-                       }
-
-                       public void Dispose ()
-                       {
-                               if (result != null) {
-                                       result.Dispose ();
-                                       result = null;
-                                       args = null;
-                               }
-                       }
-
-                       public static SocketAsyncCall Dispatcher = new SocketAsyncCall (DispatcherCB);
-
-                       static void DispatcherCB (SocketAsyncResult sar)
-                       {
-                               SocketOperation op = sar.operation;
-                               if (op == Socket.SocketOperation.Receive || op == Socket.SocketOperation.ReceiveGeneric ||
-                                       op == Socket.SocketOperation.RecvJustCallback)
-                                       sar.Worker.Receive ();
-                               else if (op == Socket.SocketOperation.Send || op == Socket.SocketOperation.SendGeneric ||
-                                       op == Socket.SocketOperation.SendJustCallback)
-                                       sar.Worker.Send ();
-                               else if (op == Socket.SocketOperation.ReceiveFrom)
-                                       sar.Worker.ReceiveFrom ();
-                               else if (op == Socket.SocketOperation.SendTo)
-                                       sar.Worker.SendTo ();
-                               else if (op == Socket.SocketOperation.Connect)
-                                       sar.Worker.Connect ();
-                               else if (op == Socket.SocketOperation.Accept)
-                                       sar.Worker.Accept ();
-                               else if (op == Socket.SocketOperation.AcceptReceive)
-                                       sar.Worker.AcceptReceive ();
-                               else if (op == Socket.SocketOperation.Disconnect)
-                                       sar.Worker.Disconnect ();
-
-                               // SendPackets and ReceiveMessageFrom are not implemented yet
-                               /*
-                               else if (op == Socket.SocketOperation.ReceiveMessageFrom)
-                                       async_op = SocketAsyncOperation.ReceiveMessageFrom;
-                               else if (op == Socket.SocketOperation.SendPackets)
-                                       async_op = SocketAsyncOperation.SendPackets;
-                               */
-                               else
-                                       throw new NotImplementedException (String.Format ("Operation {0} is not implemented", op));
-                       }
-
-                       /* This is called when reusing a SocketAsyncEventArgs */
-                       public void Init (Socket sock, SocketAsyncEventArgs args, SocketOperation op)
-                       {
-                               result.Init (sock, args, SocketAsyncEventArgs.Dispatcher, op);
-                               result.Worker = this;
-                               SocketAsyncOperation async_op;
-
-                               // Notes;
-                               //      -SocketOperation.AcceptReceive not used in SocketAsyncEventArgs
-                               //      -SendPackets and ReceiveMessageFrom are not implemented yet
-                               if (op == Socket.SocketOperation.Connect)
-                                       async_op = SocketAsyncOperation.Connect;
-                               else if (op == Socket.SocketOperation.Accept)
-                                       async_op = SocketAsyncOperation.Accept;
-                               else if (op == Socket.SocketOperation.Disconnect)
-                                       async_op = SocketAsyncOperation.Disconnect;
-                               else if (op == Socket.SocketOperation.Receive || op == Socket.SocketOperation.ReceiveGeneric)
-                                       async_op = SocketAsyncOperation.Receive;
-                               else if (op == Socket.SocketOperation.ReceiveFrom)
-                                       async_op = SocketAsyncOperation.ReceiveFrom;
-                               /*
-                               else if (op == Socket.SocketOperation.ReceiveMessageFrom)
-                                       async_op = SocketAsyncOperation.ReceiveMessageFrom;
-                               */
-                               else if (op == Socket.SocketOperation.Send || op == Socket.SocketOperation.SendGeneric)
-                                       async_op = SocketAsyncOperation.Send;
-                               /*
-                               else if (op == Socket.SocketOperation.SendPackets)
-                                       async_op = SocketAsyncOperation.SendPackets;
-                               */
-                               else if (op == Socket.SocketOperation.SendTo)
-                                       async_op = SocketAsyncOperation.SendTo;
-                               else
-                                       throw new NotImplementedException (String.Format ("Operation {0} is not implemented", op));
-
-                               args.SetLastOperation (async_op);
-                               args.SocketError = SocketError.Success;
-                               args.BytesTransferred = 0;
-                       }
-
-                       public void Accept ()
-                       {
-                               Socket acc_socket = null;
-                               try {
-                                       if (args != null && args.AcceptSocket != null) {
-                                               result.Sock.Accept (args.AcceptSocket);
-                                               acc_socket = args.AcceptSocket;
-                                       } else {
-                                               acc_socket = result.Sock.Accept ();
-                                               if (args != null)
-                                                       args.AcceptSocket = acc_socket;
-                                       }
-                               } catch (Exception e) {
-                                       result.Complete (e);
-                                       return;
-                               }
-
-                               result.Complete (acc_socket);
-                       }
-
-                       /* only used in 2.0 profile and newer, but
-                        * leave in older profiles to keep interface
-                        * to runtime consistent
-                        */
-                       public void AcceptReceive ()
-                       {
-                               Socket acc_socket = null;
-                               try {
-                                       if (result.AcceptSocket == null) {
-                                               acc_socket = result.Sock.Accept ();
-                                       } else {
-                                               acc_socket = result.AcceptSocket;
-                                               result.Sock.Accept (acc_socket);
-                                       }
-                               } catch (Exception e) {
-                                       result.Complete (e);
-                                       return;
-                               }
-
-                               /* It seems the MS runtime
-                                * special-cases 0-length requested
-                                * receive data.  See bug 464201.
-                                */
-                               int total = 0;
-                               if (result.Size > 0) {
-                                       try {
-                                               SocketError error;
-                                               total = acc_socket.Receive_nochecks (result.Buffer,
-                                                                                    result.Offset,
-                                                                                    result.Size,
-                                                                                    result.SockFlags,
-                                                                                    out error);
-                                               if (error != 0) {
-                                                       result.Complete (new SocketException ((int) error));
-                                                       return;
-                                               }
-                                       } catch (Exception e) {
-                                               result.Complete (e);
-                                               return;
-                                       }
-                               }
-
-                               result.Complete (acc_socket, total);
-                       }
-
-                       public void Connect ()
-                       {
-                               if (result.EndPoint == null) {
-                                       result.Complete (new SocketException ((int)SocketError.AddressNotAvailable));
-                                       return;
-                               }
-
-                               SocketAsyncResult mconnect = result.AsyncState as SocketAsyncResult;
-                               bool is_mconnect = (mconnect != null && mconnect.Addresses != null);
-                               try {
-                                       int error_code;
-                                       EndPoint ep = result.EndPoint;
-                                       error_code = (int) result.Sock.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
-                                       if (error_code == 0) {
-                                               if (is_mconnect)
-                                                       result = mconnect;
-                                               result.Sock.seed_endpoint = ep;
-                                               result.Sock.connected = true;
-                                               result.Sock.isbound = true;
-                                               result.Sock.connect_in_progress = false;
-                                               result.error = 0;
-                                               result.Complete ();
-                                               if (is_mconnect)
-                                                       result.DoMConnectCallback ();
-                                               return;
-                                       }
-
-                                       if (!is_mconnect) {
-                                               result.Sock.connect_in_progress = false;
-                                               result.Complete (new SocketException (error_code));
-                                               return;
-                                       }
-
-                                       if (mconnect.CurrentAddress >= mconnect.Addresses.Length) {
-                                               mconnect.Complete (new SocketException (error_code));
-                                               if (is_mconnect)
-                                                       mconnect.DoMConnectCallback ();
-                                               return;
-                                       }
-                                       mconnect.Sock.BeginMConnect (mconnect);
-                               } catch (Exception e) {
-                                       result.Sock.connect_in_progress = false;
-                                       if (is_mconnect)
-                                               result = mconnect;
-                                       result.Complete (e);
-                                       if (is_mconnect)
-                                               result.DoMConnectCallback ();
-                                       return;
-                               }
-                       }
-
-                       /* Also only used in 2.0 profile and newer */
-                       public void Disconnect ()
-                       {
-                               try {
-                                       if (args != null)
-                                               result.ReuseSocket = args.DisconnectReuseSocket;
-                                       result.Sock.Disconnect (result.ReuseSocket);
-                               } catch (Exception e) {
-                                       result.Complete (e);
-                                       return;
-                               }
-                               result.Complete ();
-                       }
-
-                       public void Receive ()
-                       {
-                               if (result.operation == SocketOperation.ReceiveGeneric) {
-                                       ReceiveGeneric ();
-                                       return;
-                               }
-                               // Actual recv() done in the runtime
-                               result.Complete ();
-                       }
-
-                       public void ReceiveFrom ()
-                       {
-                               int total = 0;
-                               try {
-                                       total = result.Sock.ReceiveFrom_nochecks (result.Buffer,
-                                                                        result.Offset,
-                                                                        result.Size,
-                                                                        result.SockFlags,
-                                                                        ref result.EndPoint);
-                               } catch (Exception e) {
-                                       result.Complete (e);
-                                       return;
-                               }
-
-                               result.Complete (total);
-                       }
-
-                       public void ReceiveGeneric ()
-                       {
-                               int total = 0;
-                               try {
-                                       total = result.Sock.Receive (result.Buffers, result.SockFlags);
-                               } catch (Exception e) {
-                                       result.Complete (e);
-                                       return;
-                               }
-                               result.Complete (total);
-                       }
-
-                       int send_so_far;
-
-                       void UpdateSendValues (int last_sent)
-                       {
-                               if (result.error == 0) {
-                                       send_so_far += last_sent;
-                                       result.Offset += last_sent;
-                                       result.Size -= last_sent;
-                               }
-                       }
-
-                       public void Send ()
-                       {
-                               if (result.operation == SocketOperation.SendGeneric) {
-                                       SendGeneric ();
-                                       return;
-                               }
-                               // Actual send() done in the runtime
-                               if (result.error == 0) {
-                                       UpdateSendValues (result.Total);
-                                       if (result.Sock.disposed) {
-                                               result.Complete ();
-                                               return;
-                                       }
-
-                                       if (result.Size > 0) {
-                                               Socket.socket_pool_queue (Worker.Dispatcher, result);
-                                               return; // Have to finish writing everything. See bug #74475.
-                                       }
-                                       result.Total = send_so_far;
-                                       send_so_far = 0;
-                               }
-                               result.Complete ();
-                       }
-
-                       public void SendTo ()
-                       {
-                               int total = 0;
-                               try {
-                                       total = result.Sock.SendTo_nochecks (result.Buffer,
-                                                                   result.Offset,
-                                                                   result.Size,
-                                                                   result.SockFlags,
-                                                                   result.EndPoint);
-
-                                       UpdateSendValues (total);
-                                       if (result.Size > 0) {
-                                               Socket.socket_pool_queue (Worker.Dispatcher, result);
-                                               return; // Have to finish writing everything. See bug #74475.
-                                       }
-                                       result.Total = send_so_far;
-                                       send_so_far = 0;
-                               } catch (Exception e) {
-                                       send_so_far = 0;
-                                       result.Complete (e);
-                                       return;
-                               }
-
-                               result.Complete ();
-                       }
-
-                       public void SendGeneric ()
-                       {
-                               int total = 0;
-                               try {
-                                       total = result.Sock.Send (result.Buffers, result.SockFlags);
-                               } catch (Exception e) {
-                                       result.Complete (e);
-                                       return;
-                               }
-                               result.Complete (total);
-                       }
-               }
-
-               private Queue readQ = new Queue (2);
-               private Queue writeQ = new Queue (2);
-
-               internal delegate void SocketAsyncCall (SocketAsyncResult sar);
-
-               /*
-                *      These two fields are looked up by name by the runtime, don't change
-                *  their name without also updating the runtime code.
-                */
-               private static int ipv4Supported = -1, ipv6Supported = -1;
-               int linger_timeout;
-
-               static Socket ()
-               {
-                       // initialize ipv4Supported and ipv6Supported
-                       CheckProtocolSupport ();
-               }
-
-               internal static void CheckProtocolSupport ()
-               {
-                       if(ipv4Supported == -1) {
-                               try {
-                                       Socket tmp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-                                       tmp.Close();
-
-                                       ipv4Supported = 1;
-                               } catch {
-                                       ipv4Supported = 0;
-                               }
-                       }
-
-                       if (ipv6Supported == -1) {
-                               // We need to put a try/catch around ConfigurationManager methods as will always throw an exception 
-                               // when run in a mono embedded application.  This occurs as embedded applications do not have a setup
-                               // for application config.  The exception is not thrown when called from a normal .NET application. 
-                               //
-                               // We, then, need to guard calls to the ConfigurationManager.  If the config is not found or throws an
-                               // exception, will fall through to the existing Socket / API directly below in the code.
-                               //
-                               // Also note that catching ConfigurationErrorsException specifically would require library dependency
-                               // System.Configuration, and wanted to avoid that.
-#if !NET_2_1
-#if CONFIGURATION_DEP
-                               try {
-                                       SettingsSection config;
-                                       config = (SettingsSection) System.Configuration.ConfigurationManager.GetSection ("system.net/settings");
-                                       if (config != null)
-                                               ipv6Supported = config.Ipv6.Enabled ? -1 : 0;
-                               } catch {
-                                       ipv6Supported = -1;
-                               }
-#else
-                               try {
-                                       NetConfig config = System.Configuration.ConfigurationSettings.GetConfig("system.net/settings") as NetConfig;
-                                       if (config != null)
-                                               ipv6Supported = config.ipv6Enabled ? -1 : 0;
-                               } catch {
-                                       ipv6Supported = -1;
-                               }
-#endif
-#endif
-                               if (ipv6Supported != 0) {
-                                       try {
-                                               Socket tmp = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
-                                               tmp.Close();
-
-                                               ipv6Supported = 1;
-                                       } catch {
-                                               ipv6Supported = 0;
-                                       }
-                               }
-                       }
-               }
-
-               public static bool SupportsIPv4 {
-                       get {
-                               CheckProtocolSupport();
-                               return ipv4Supported == 1;
-                       }
-               }
-
-               [ObsoleteAttribute ("Use OSSupportsIPv6 instead")]
-               public static bool SupportsIPv6 {
-                       get {
-                               CheckProtocolSupport();
-                               return ipv6Supported == 1;
-                       }
-               }
-#if NET_2_1
-               public static bool OSSupportsIPv4 {
-                       get {
-                               CheckProtocolSupport();
-                               return ipv4Supported == 1;
-                       }
-               }
-#endif
-#if NET_2_1
-               public static bool OSSupportsIPv6 {
-                       get {
-                               CheckProtocolSupport();
-                               return ipv6Supported == 1;
-                       }
-               }
-#else
-               public static bool OSSupportsIPv6 {
-                       get {
-                               NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces ();
-                               
-                               foreach (NetworkInterface adapter in nics) {
-                                       if (adapter.Supports (NetworkInterfaceComponent.IPv6))
-                                               return true;
-                               }
-                               return false;
-                       }
-               }
-#endif
-
-               /* the field "socket" is looked up by name by the runtime */
-               private SafeSocketHandle socket;
-               private AddressFamily address_family;
-               private SocketType socket_type;
-               private ProtocolType protocol_type;
-               internal bool blocking=true;
-               private bool isbound;
-               /* When true, the socket was connected at the time of
-                * the last IO operation
-                */
-               private bool connected;
-               /* true if we called Close_internal */
-               private bool closed;
-               internal bool disposed;
-               bool connect_in_progress;
-
-               /*
-                * This EndPoint is used when creating new endpoints. Because
-                * there are many types of EndPoints possible,
-                * seed_endpoint.Create(addr) is used for creating new ones.
-                * As such, this value is set on Bind, SentTo, ReceiveFrom,
-                * Connect, etc.
-                */
-               internal EndPoint seed_endpoint = null;
-
-               // Creates a new system socket, returning the handle
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern IntPtr Socket_internal(AddressFamily family,
-                                                     SocketType type,
-                                                     ProtocolType proto,
-                                                     out int error);
-               
-               public Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
-               {
-#if NET_2_1 && !MOBILE
-                       switch (addressFamily) {
-                       case AddressFamily.InterNetwork:        // ok
-                       case AddressFamily.InterNetworkV6:      // ok
-                       case AddressFamily.Unknown:             // SocketException will be thrown later (with right error #)
-                               break;
-                       // case AddressFamily.Unspecified:
-                       default:
-                               throw new ArgumentException ("addressFamily");
-                       }
-
-                       switch (socketType) {
-                       case SocketType.Stream:                 // ok
-                       case SocketType.Unknown:                // SocketException will be thrown later (with right error #)
-                               break;
-                       default:
-                               throw new ArgumentException ("socketType");
-                       }
-
-                       switch (protocolType) {
-                       case ProtocolType.Tcp:                  // ok
-                       case ProtocolType.Unspecified:          // ok
-                       case ProtocolType.Unknown:              // SocketException will be thrown later (with right error #)
-                               break;
-                       default:
-                               throw new ArgumentException ("protocolType");
-                       }
-#endif
-                       address_family = addressFamily;
-                       socket_type = socketType;
-                       protocol_type = protocolType;
-                       
-                       int error;
-                       
-                       var handle = Socket_internal (addressFamily, socketType, protocolType, out error);
-                       socket = new SafeSocketHandle (handle, true);
-
-                       if (error != 0)
-                               throw new SocketException (error);
-#if !NET_2_1 || MOBILE
-                       SocketDefaults ();
-#endif
-               }
-
-               [MonoTODO ("Currently hardcoded to IPv4. Ideally, support v4/v6 dual-stack.")]
-               public Socket (SocketType socketType, ProtocolType protocolType)
-                       : this (AddressFamily.InterNetwork, socketType, protocolType)
-               {
-               }
-
-               ~Socket ()
-               {
-                       Dispose (false);
-               }
-
-
-               public AddressFamily AddressFamily {
-                       get { return address_family; }
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               internal extern static void Blocking_internal(IntPtr socket,
-                                                            bool block,
-                                                            out int error);
-
-               private static void Blocking_internal (SafeSocketHandle safeHandle,
-                                                            bool block,
-                                                            out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               Blocking_internal (safeHandle.DangerousGetHandle (), block, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               public bool Blocking {
-                       get {
-                               return(blocking);
-                       }
-                       set {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-
-                               int error;
-                               
-                               Blocking_internal (socket, value, out error);
-
-                               if (error != 0)
-                                       throw new SocketException (error);
-                               
-                               blocking=value;
-                       }
-               }
-
-               public bool Connected {
-                       get { return connected; }
-                       internal set { connected = value; }
-               }
-
-               public ProtocolType ProtocolType {
-                       get { return protocol_type; }
-               }
-
-               public bool NoDelay {
-                       get {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-
-                               ThrowIfUpd ();
-
-                               return (int)(GetSocketOption (
-                                       SocketOptionLevel.Tcp,
-                                       SocketOptionName.NoDelay)) != 0;
-                       }
-
-                       set {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-
-                               ThrowIfUpd ();
-
-                               SetSocketOption (
-                                       SocketOptionLevel.Tcp,
-                                       SocketOptionName.NoDelay, value ? 1 : 0);
-                       }
-               }
-
-               public int ReceiveBufferSize {
-                       get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               return((int)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer));
-                       }
-                       set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               if (value < 0) {
-                                       throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
-                               }
-                               
-                               SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, value);
-                       }
-               }
-
-               public int SendBufferSize {
-                       get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               return((int)GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendBuffer));
-                       }
-                       set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               if (value < 0) {
-                                       throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
-                               }
-                               
-                               SetSocketOption (SocketOptionLevel.Socket,
-                                                SocketOptionName.SendBuffer,
-                                                value);
-                       }
-               }
-
-               public short Ttl {
-                       get {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               
-                               short ttl_val;
-                               
-                               if (address_family == AddressFamily.InterNetwork) {
-                                       ttl_val = (short)((int)GetSocketOption (SocketOptionLevel.IP, SocketOptionName.IpTimeToLive));
-                               } else if (address_family == AddressFamily.InterNetworkV6) {
-                                       ttl_val = (short)((int)GetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.HopLimit));
-                               } else {
-                                       throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
-                               }
-                               
-                               return(ttl_val);
-                       }
-                       set {
-                               if (disposed && closed) {
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               }
-                               if (value < 0) {
-                                       throw new ArgumentOutOfRangeException ("value", "The value specified for a set operation is less than zero");
-                               }
-                               
-                               if (address_family == AddressFamily.InterNetwork) {
-                                       SetSocketOption (SocketOptionLevel.IP, SocketOptionName.IpTimeToLive, value);
-                               } else if (address_family == AddressFamily.InterNetworkV6) {
-                                       SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.HopLimit, value);
-                               } else {
-                                       throw new NotSupportedException ("This property is only valid for InterNetwork and InterNetworkV6 sockets");
-                               }
-                       }
-               }
-
-               // Returns the remote endpoint details in addr and port
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static SocketAddress RemoteEndPoint_internal(IntPtr socket, int family, out int error);
-
-               private static SocketAddress RemoteEndPoint_internal (SafeSocketHandle safeHandle, int family, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               return RemoteEndPoint_internal (safeHandle.DangerousGetHandle (), family, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               public EndPoint RemoteEndPoint {
-                       get {
-                               if (disposed && closed)
-                                       throw new ObjectDisposedException (GetType ().ToString ());
-                               
-                               /*
-                                * If the seed EndPoint is null, Connect, Bind,
-                                * etc has not yet been called. MS returns null
-                                * in this case.
-                                */
-                               if (!connected || seed_endpoint == null)
-                                       return null;
-                               SocketAddress sa;
-                               int error;
-                               
-                               sa=RemoteEndPoint_internal(socket, (int) address_family, out error);
-
-                               if (error != 0)
-                                       throw new SocketException (error);
-
-                               return seed_endpoint.Create (sa);
-                       }
-               }
-
-               void Linger (IntPtr handle)
-               {
-                       if (!connected || linger_timeout <= 0)
-                               return;
-
-                       // We don't want to receive any more data
-                       int error;
-                       Shutdown_internal (handle, SocketShutdown.Receive, out error);
-                       if (error != 0)
-                               return;
-
-                       int seconds = linger_timeout / 1000;
-                       int ms = linger_timeout % 1000;
-                       if (ms > 0) {
-                               // If the other end closes, this will return 'true' with 'Available' == 0
-                               Poll_internal (handle, SelectMode.SelectRead, ms * 1000, out error);
-                               if (error != 0)
-                                       return;
-
-                       }
-                       if (seconds > 0) {
-                               LingerOption linger = new LingerOption (true, seconds);
-                               SetSocketOption_internal (handle, SocketOptionLevel.Socket, SocketOptionName.Linger, linger, null, 0, out error);
-                               /* Not needed, we're closing upon return */
-                               /*if (error != 0)
-                                       return; */
-                       }
-               }
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               internal static extern void cancel_blocking_socket_operation (Thread thread);
-
-               protected virtual void Dispose (bool disposing)
-               {
-                       if (disposed)
-                               return;
-
-                       disposed = true;
-                       bool was_connected = connected;
-                       connected = false;
-                       
-                       if (socket != null) {
-                               closed = true;
-                               IntPtr x = Handle;
-
-                               if (was_connected)
-                                       Linger (x);
-
-                               socket.Dispose ();
-                       }
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);
-               }
-
-               // Closes the socket
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               internal extern static void Close_internal(IntPtr socket, out int error);
-
-               public void Close ()
-               {
-                       linger_timeout = 0;
-                       ((IDisposable) this).Dispose ();
-               }
-
-               public void Close (int timeout) 
-               {
-                       linger_timeout = timeout;
-                       ((IDisposable) this).Dispose ();
-               }
-
-               // Connects to the remote address
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void Connect_internal(IntPtr sock,
-                                                           SocketAddress sa,
-                                                           out int error);
-               
-               private static void Connect_internal (SafeSocketHandle safeHandle,
-                                                           SocketAddress sa,
-                                                           out int error)
-               {
-                       try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               Connect_internal (safeHandle.DangerousGetHandle (), sa, out error);
-                       } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
-                       }
-               }
-
-               public void Connect (EndPoint remoteEP)
-               {
-                       SocketAddress serial = null;
-
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (remoteEP == null)
-                               throw new ArgumentNullException ("remoteEP");
-
-                       IPEndPoint ep = remoteEP as IPEndPoint;
-                       if (ep != null && socket_type != SocketType.Dgram) /* Dgram uses Any to 'disconnect' */
-                               if (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any))
-                                       throw new SocketException ((int) SocketError.AddressNotAvailable);
-
-                       if (islistening)
-                               throw new InvalidOperationException ();
-                       serial = remoteEP.Serialize ();
-
-                       int error = 0;
-
-                       Connect_internal (socket, serial, out error);
-
-                       if (error == 0 || error == 10035)
-                               seed_endpoint = remoteEP; // Keep the ep around for non-blocking sockets
-
-                       if (error != 0) {
-                               if (closed)
-                                       error = SOCKET_CLOSED;
-                               throw new SocketException (error);
-                       }
-
-                       if (socket_type == SocketType.Dgram && ep != null && (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any)))
-                               connected = false;
-                       else
-                               connected = true;
-                       isbound = true;
-               }
-
-               public bool ReceiveAsync (SocketAsyncEventArgs e)
-               {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       // LAME SPEC: the ArgumentException is never thrown, instead an NRE is
-                       // thrown when e.Buffer and e.BufferList are null (works fine when one is
-                       // set to a valid object)
-                       if (e.Buffer == null && e.BufferList == null)
-                               throw new NullReferenceException ("Either e.Buffer or e.BufferList must be valid buffers.");
-
-                       e.curSocket = this;
-                       SocketOperation op = (e.Buffer != null) ? SocketOperation.Receive : SocketOperation.ReceiveGeneric;
-                       e.Worker.Init (this, e, op);
-                       SocketAsyncResult res = e.Worker.result;
-                       if (e.Buffer != null) {
-                               res.Buffer = e.Buffer;
-                               res.Offset = e.Offset;
-                               res.Size = e.Count;
-                       } else {
-                               res.Buffers = e.BufferList;
-                       }
-                       res.SockFlags = e.SocketFlags;
-                       int count;
-                       lock (readQ) {
-                               readQ.Enqueue (e.Worker);
-                               count = readQ.Count;
-                       }
-                       if (count == 1) {
-                               // Receive takes care of ReceiveGeneric
-                               socket_pool_queue (Worker.Dispatcher, res);
-                       }
-
-                       return true;
-               }
-
-               public bool SendAsync (SocketAsyncEventArgs e)
-               {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       if (e.Buffer == null && e.BufferList == null)
-                               throw new NullReferenceException ("Either e.Buffer or e.BufferList must be valid buffers.");
-
-                       e.curSocket = this;
-                       SocketOperation op = (e.Buffer != null) ? SocketOperation.Send : SocketOperation.SendGeneric;
-                       e.Worker.Init (this, e, op);
-                       SocketAsyncResult res = e.Worker.result;
-                       if (e.Buffer != null) {
-                               res.Buffer = e.Buffer;
-                               res.Offset = e.Offset;
-                               res.Size = e.Count;
-                       } else {
-                               res.Buffers = e.BufferList;
-                       }
-                       res.SockFlags = e.SocketFlags;
-                       int count;
-                       lock (writeQ) {
-                               writeQ.Enqueue (e.Worker);
-                               count = writeQ.Count;
-                       }
-                       if (count == 1) {
-                               // Send takes care of SendGeneric
-                               socket_pool_queue (Worker.Dispatcher, res);
-                       }
-                       return true;
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               extern static bool Poll_internal (IntPtr socket, SelectMode mode, int timeout, out int error);
-
-               private static bool Poll_internal (SafeSocketHandle safeHandle, SelectMode mode, int timeout, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               return Poll_internal (safeHandle.DangerousGetHandle (), mode, timeout, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static int Receive_internal(IntPtr sock,
-                                                          byte[] buffer,
-                                                          int offset,
-                                                          int count,
-                                                          SocketFlags flags,
-                                                          out int error);
-
-               private static int Receive_internal (SafeSocketHandle safeHandle,
-                                                          byte[] buffer,
-                                                          int offset,
-                                                          int count,
-                                                          SocketFlags flags,
-                                                          out int error)
-               {
-                       try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               return Receive_internal (safeHandle.DangerousGetHandle (), buffer, offset, count, flags, out error);
-                       } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
-                       }
-               }
-
-               internal int Receive_nochecks (byte [] buf, int offset, int size, SocketFlags flags, out SocketError error)
-               {
-                       int nativeError;
-                       int ret = Receive_internal (socket, buf, offset, size, flags, out nativeError);
-                       error = (SocketError) nativeError;
-                       if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress) {
-                               connected = false;
-                               isbound = false;
-                       } else {
-                               connected = true;
-                       }
-                       
-                       return ret;
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void GetSocketOption_obj_internal(IntPtr socket,
-                       SocketOptionLevel level, SocketOptionName name, out object obj_val,
-                       out int error);
-
-               private static void GetSocketOption_obj_internal (SafeSocketHandle safeHandle,
-                       SocketOptionLevel level, SocketOptionName name, out object obj_val,
-                       out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               GetSocketOption_obj_internal (safeHandle.DangerousGetHandle (), level, name, out obj_val, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static int Send_internal(IntPtr sock,
-                                                       byte[] buf, int offset,
-                                                       int count,
-                                                       SocketFlags flags,
-                                                       out int error);
-
-               private static int Send_internal (SafeSocketHandle safeHandle,
-                                                       byte[] buf, int offset,
-                                                       int count,
-                                                       SocketFlags flags,
-                                                       out int error)
-               {
-                       try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               return Send_internal (safeHandle.DangerousGetHandle (), buf, offset, count, flags, out error);
-                       } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
-                       }
-               }
-
-               internal int Send_nochecks (byte [] buf, int offset, int size, SocketFlags flags, out SocketError error)
-               {
-                       if (size == 0) {
-                               error = SocketError.Success;
-                               return 0;
-                       }
-
-                       int nativeError;
-
-                       int ret = Send_internal (socket, buf, offset, size, flags, out nativeError);
-
-                       error = (SocketError)nativeError;
-
-                       if (error != SocketError.Success && error != SocketError.WouldBlock && error != SocketError.InProgress) {
-                               connected = false;
-                               isbound = false;
-                       } else {
-                               connected = true;
-                       }
-
-                       return ret;
-               }
-
-               public object GetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       object obj_val;
-                       int error;
-
-                       GetSocketOption_obj_internal (socket, optionLevel, optionName, out obj_val,
-                               out error);
-                       if (error != 0)
-                               throw new SocketException (error);
-
-                       if (optionName == SocketOptionName.Linger) {
-                               return((LingerOption)obj_val);
-                       } else if (optionName == SocketOptionName.AddMembership ||
-                                  optionName == SocketOptionName.DropMembership) {
-                               return((MulticastOption)obj_val);
-                       } else if (obj_val is int) {
-                               return((int)obj_val);
-                       } else {
-                               return(obj_val);
-                       }
-               }
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern static void Shutdown_internal (IntPtr socket, SocketShutdown how, out int error);
-               
-               private static void Shutdown_internal (SafeSocketHandle safeHandle, SocketShutdown how, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               Shutdown_internal (safeHandle.DangerousGetHandle (), how, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               public void Shutdown (SocketShutdown how)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (!connected)
-                               throw new SocketException (10057); // Not connected
-
-                       int error;
-                       
-                       Shutdown_internal (socket, how, out error);
-                       if (error != 0)
-                               throw new SocketException (error);
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private extern static void SetSocketOption_internal (IntPtr socket, SocketOptionLevel level,
-                                                                    SocketOptionName name, object obj_val,
-                                                                    byte [] byte_val, int int_val,
-                                                                    out int error);
-
-               private static void SetSocketOption_internal (SafeSocketHandle safeHandle, SocketOptionLevel level,
-                                                                    SocketOptionName name, object obj_val,
-                                                                    byte [] byte_val, int int_val,
-                                                                    out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               SetSocketOption_internal (safeHandle.DangerousGetHandle (), level, name, obj_val, byte_val, int_val, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               public void SetSocketOption (SocketOptionLevel optionLevel, SocketOptionName optionName, int optionValue)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       int error;
-
-                       SetSocketOption_internal (socket, optionLevel, optionName, null,
-                                                null, optionValue, out error);
-
-                       if (error != 0)
-                               throw new SocketException (error);
-               }
-
-               private void ThrowIfUpd ()
-               {
-#if !NET_2_1 || MOBILE
-                       if (protocol_type == ProtocolType.Udp)
-                               throw new SocketException ((int)SocketError.ProtocolOption);
-#endif
-               }
-
-               public
-               IAsyncResult BeginConnect(EndPoint end_point, AsyncCallback callback, object state)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (end_point == null)
-                               throw new ArgumentNullException ("end_point");
-
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Connect);
-                       req.EndPoint = end_point;
-
-                       // Bug #75154: Connect() should not succeed for .Any addresses.
-                       if (end_point is IPEndPoint) {
-                               IPEndPoint ep = (IPEndPoint) end_point;
-                               if (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any)) {
-                                       req.Complete (new SocketException ((int) SocketError.AddressNotAvailable), true);
-                                       return req;
-                               }
-                       }
-
-                       int error = 0;
-                       if (connect_in_progress) {
-                               // This could happen when multiple IPs are used
-                               // Calling connect() again will reset the connection attempt and cause
-                               // an error. Better to just close the socket and move on.
-                               connect_in_progress = false;
-                               socket.Dispose ();
-                               var handle = Socket_internal (address_family, socket_type, protocol_type, out error);
-                               socket = new SafeSocketHandle (handle, true);
-                               if (error != 0)
-                                       throw new SocketException (error);
-                       }
-                       bool blk = blocking;
-                       if (blk)
-                               Blocking = false;
-                       SocketAddress serial = end_point.Serialize ();
-                       Connect_internal (socket, serial, out error);
-                       if (blk)
-                               Blocking = true;
-                       if (error == 0) {
-                               // succeeded synch
-                               connected = true;
-                               isbound = true;
-                               req.Complete (true);
-                               return req;
-                       }
-
-                       if (error != (int) SocketError.InProgress && error != (int) SocketError.WouldBlock) {
-                               // error synch
-                               connected = false;
-                               isbound = false;
-                               req.Complete (new SocketException (error), true);
-                               return req;
-                       }
-
-                       // continue asynch
-                       connected = false;
-                       isbound = false;
-                       connect_in_progress = true;
-                       socket_pool_queue (Worker.Dispatcher, req);
-                       return req;
-               }
-
-               public
-               IAsyncResult BeginConnect (IPAddress[] addresses, int port, AsyncCallback callback, object state)
-
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (addresses == null)
-                               throw new ArgumentNullException ("addresses");
-
-                       if (addresses.Length == 0)
-                               throw new ArgumentException ("Empty addresses list");
-
-                       if (this.AddressFamily != AddressFamily.InterNetwork &&
-                               this.AddressFamily != AddressFamily.InterNetworkV6)
-                               throw new NotSupportedException ("This method is only valid for addresses in the InterNetwork or InterNetworkV6 families");
-
-                       if (port <= 0 || port > 65535)
-                               throw new ArgumentOutOfRangeException ("port", "Must be > 0 and < 65536");
-                       if (islistening)
-                               throw new InvalidOperationException ();
-
-                       SocketAsyncResult req = new SocketAsyncResult (this, state, callback, SocketOperation.Connect);
-                       req.Addresses = addresses;
-                       req.Port = port;
-                       connected = false;
-                       return BeginMConnect (req);
-               }
-
-               IAsyncResult BeginMConnect (SocketAsyncResult req)
-               {
-                       IAsyncResult ares = null;
-                       Exception exc = null;
-                       for (int i = req.CurrentAddress; i < req.Addresses.Length; i++) {
-                               IPAddress addr = req.Addresses [i];
-                               IPEndPoint ep = new IPEndPoint (addr, req.Port);
-                               try {
-                                       req.CurrentAddress++;
-                                       ares = BeginConnect (ep, null, req);
-                                       if (ares.IsCompleted && ares.CompletedSynchronously) {
-                                               ((SocketAsyncResult) ares).CheckIfThrowDelayedException ();
-                                               req.DoMConnectCallback ();
-                                       }
-                                       break;
-                               } catch (Exception e) {
-                                       exc = e;
-                                       ares = null;
-                               }
-                       }
-
-                       if (ares == null)
-                               throw exc;
-
-                       return req;
-               }
-
-               // Returns false when it is ok to use RemoteEndPoint
-               //         true when addresses must be used (and addresses could be null/empty)
-               bool GetCheckedIPs (SocketAsyncEventArgs e, out IPAddress [] addresses)
-               {
-                       addresses = null;
-                       // Connect to the first address that match the host name, like:
-                       // http://blogs.msdn.com/ncl/archive/2009/07/20/new-ncl-features-in-net-4-0-beta-2.aspx
-                       // while skipping entries that do not match the address family
-                       DnsEndPoint dep = (e.RemoteEndPoint as DnsEndPoint);
-                       if (dep != null) {
-                               addresses = Dns.GetHostAddresses (dep.Host);
-                               return true;
-                       } else {
-                               e.ConnectByNameError = null;
-                                       return false;
-                       }
-               }
-
-               bool ConnectAsyncReal (SocketAsyncEventArgs e)
-               {                       
-                       bool use_remoteep = true;
-                       IPAddress [] addresses = null;
-                       use_remoteep = !GetCheckedIPs (e, out addresses);
-                       e.curSocket = this;
-                       Worker w = e.Worker;
-                       w.Init (this, e, SocketOperation.Connect);
-                       SocketAsyncResult result = w.result;
-                       IAsyncResult ares = null;
-                       try {
-                               if (use_remoteep) {
-                                       result.EndPoint = e.RemoteEndPoint;
-                                       ares = BeginConnect (e.RemoteEndPoint, SocketAsyncEventArgs.Dispatcher, e);
-                               }
-                               else {
-
-                                       DnsEndPoint dep = (e.RemoteEndPoint as DnsEndPoint);
-                                       result.Addresses = addresses;
-                                       result.Port = dep.Port;
-
-                                       ares = BeginConnect (addresses, dep.Port, SocketAsyncEventArgs.Dispatcher, e);
-                               }
-                               if (ares.IsCompleted && ares.CompletedSynchronously) {
-                                       ((SocketAsyncResult) ares).CheckIfThrowDelayedException ();
-                                       return false;
-                               }
-                       } catch (Exception exc) {
-                               result.Complete (exc, true);
-                               return false;
-                       }
-                       return true;
-               }
-
-               public bool ConnectAsync (SocketAsyncEventArgs e)
-               {
-                       // NO check is made whether e != null in MS.NET (NRE is thrown in such case)
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       if (islistening)
-                               throw new InvalidOperationException ("You may not perform this operation after calling the Listen method.");
-                       if (e.RemoteEndPoint == null)
-                               throw new ArgumentNullException ("remoteEP");
-
-                       return ConnectAsyncReal (e);
-               }
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern static int Receive_internal (IntPtr sock, WSABUF[] bufarray, SocketFlags flags, out int error);
-
-               private static int Receive_internal (SafeSocketHandle safeHandle, WSABUF[] bufarray, SocketFlags flags, out int error)
-               {
-                       try {
-                               safeHandle.RegisterForBlockingSyscall ();
-                               return Receive_internal (safeHandle.DangerousGetHandle (), bufarray, flags, out error);
-                       } finally {
-                               safeHandle.UnRegisterForBlockingSyscall ();
-                       }
-               }
-
-               public
-               int Receive (IList<ArraySegment<byte>> buffers)
-               {
-                       int ret;
-                       SocketError error;
-                       ret = Receive (buffers, SocketFlags.None, out error);
-                       if (error != SocketError.Success) {
-                               throw new SocketException ((int)error);
-                       }
-                       return(ret);
-               }
-
-               [CLSCompliant (false)]
-               public
-               int Receive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags)
-               {
-                       int ret;
-                       SocketError error;
-                       ret = Receive (buffers, socketFlags, out error);
-                       if (error != SocketError.Success) {
-                               throw new SocketException ((int)error);
-                       }
-                       return(ret);
-               }
-
-               [CLSCompliant (false)]
-               public
-               int Receive (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (buffers == null ||
-                           buffers.Count == 0) {
-                               throw new ArgumentNullException ("buffers");
-                       }
-
-                       int numsegments = buffers.Count;
-                       int nativeError;
-                       int ret;
-
-                       /* Only example I can find of sending a byte
-                        * array reference directly into an internal
-                        * call is in
-                        * System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc.Win32/NamedPipeSocket.cs,
-                        * so taking a lead from that...
-                        */
-                       WSABUF[] bufarray = new WSABUF[numsegments];
-                       GCHandle[] gch = new GCHandle[numsegments];
-
-                       for(int i = 0; i < numsegments; i++) {
-                               ArraySegment<byte> segment = buffers[i];
-
-                               if (segment.Offset < 0 || segment.Count < 0 ||
-                                   segment.Count > segment.Array.Length - segment.Offset)
-                                       throw new ArgumentOutOfRangeException ("segment");
-
-                               gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
-                               bufarray[i].len = segment.Count;
-                               bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
-                       }
-
-                       try {
-                               ret = Receive_internal (socket, bufarray,
-                                                       socketFlags,
-                                                       out nativeError);
-                       } finally {
-                               for(int i = 0; i < numsegments; i++) {
-                                       if (gch[i].IsAllocated) {
-                                               gch[i].Free ();
-                                       }
-                               }
-                       }
-
-                       errorCode = (SocketError)nativeError;
-                       return(ret);
-               }
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern static int Send_internal (IntPtr sock, WSABUF[] bufarray, SocketFlags flags, out int error);
-
-               private static int Send_internal (SafeSocketHandle safeHandle, WSABUF[] bufarray, SocketFlags flags, out int error)
-               {
-                       bool release = false;
-                       try {
-                               safeHandle.DangerousAddRef (ref release);
-                               return Send_internal (safeHandle.DangerousGetHandle (), bufarray, flags, out error);
-                       } finally {
-                               if (release)
-                                       safeHandle.DangerousRelease ();
-                       }
-               }
-
-               public
-               int Send (IList<ArraySegment<byte>> buffers)
-               {
-                       int ret;
-                       SocketError error;
-                       ret = Send (buffers, SocketFlags.None, out error);
-                       if (error != SocketError.Success) {
-                               throw new SocketException ((int)error);
-                       }
-                       return(ret);
-               }
-
-               public
-               int Send (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags)
-               {
-                       int ret;
-                       SocketError error;
-                       ret = Send (buffers, socketFlags, out error);
-                       if (error != SocketError.Success) {
-                               throw new SocketException ((int)error);
-                       }
-                       return(ret);
-               }
-
-               [CLSCompliant (false)]
-               public
-               int Send (IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       if (buffers == null)
-                               throw new ArgumentNullException ("buffers");
-                       if (buffers.Count == 0)
-                               throw new ArgumentException ("Buffer is empty", "buffers");
-                       int numsegments = buffers.Count;
-                       int nativeError;
-                       int ret;
-
-                       WSABUF[] bufarray = new WSABUF[numsegments];
-                       GCHandle[] gch = new GCHandle[numsegments];
-                       for(int i = 0; i < numsegments; i++) {
-                               ArraySegment<byte> segment = buffers[i];
-
-                               if (segment.Offset < 0 || segment.Count < 0 ||
-                                   segment.Count > segment.Array.Length - segment.Offset)
-                                       throw new ArgumentOutOfRangeException ("segment");
-
-                               gch[i] = GCHandle.Alloc (segment.Array, GCHandleType.Pinned);
-                               bufarray[i].len = segment.Count;
-                               bufarray[i].buf = Marshal.UnsafeAddrOfPinnedArrayElement (segment.Array, segment.Offset);
-                       }
-
-                       try {
-                               ret = Send_internal (socket, bufarray, socketFlags, out nativeError);
-                       } finally {
-                               for(int i = 0; i < numsegments; i++) {
-                                       if (gch[i].IsAllocated) {
-                                               gch[i].Free ();
-                                       }
-                               }
-                       }
-                       errorCode = (SocketError)nativeError;
-                       return(ret);
-               }
-
-               Exception InvalidAsyncOp (string method)
-               {
-                       return new InvalidOperationException (method + " can only be called once per asynchronous operation");
-               }
-
-               public
-               int EndReceive (IAsyncResult result)
-               {
-                       SocketError error;
-                       int bytesReceived = EndReceive (result, out error);
-                       if (error != SocketError.Success) {
-                               if (error != SocketError.WouldBlock && error != SocketError.InProgress)
-                                       connected = false;
-                               throw new SocketException ((int)error);
-                       }
-                       return bytesReceived;
-               }
-
-               public
-               int EndReceive (IAsyncResult asyncResult, out SocketError errorCode)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (asyncResult == null)
-                               throw new ArgumentNullException ("asyncResult");
-
-                       SocketAsyncResult req = asyncResult as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
-
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndReceive");
-                       if (!asyncResult.IsCompleted)
-                               asyncResult.AsyncWaitHandle.WaitOne ();
-
-                       errorCode = req.ErrorCode;
-                       // If no socket error occurred, call CheckIfThrowDelayedException in case there are other
-                       // kinds of exceptions that should be thrown.
-                       if (errorCode == SocketError.Success)
-                               req.CheckIfThrowDelayedException();
-
-                       return(req.Total);
-               }
-
-               public
-               int EndSend (IAsyncResult result)
-               {
-                       SocketError error;
-                       int bytesSent = EndSend (result, out error);
-                       if (error != SocketError.Success) {
-                               if (error != SocketError.WouldBlock && error != SocketError.InProgress)
-                                       connected = false;
-                               throw new SocketException ((int)error);
-                       }
-                       return bytesSent;
-               }
-
-               public
-               int EndSend (IAsyncResult asyncResult, out SocketError errorCode)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-                       if (asyncResult == null)
-                               throw new ArgumentNullException ("asyncResult");
-
-                       SocketAsyncResult req = asyncResult as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "result");
-
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndSend");
-                       if (!asyncResult.IsCompleted)
-                               asyncResult.AsyncWaitHandle.WaitOne ();
-
-                       errorCode = req.ErrorCode;
-                       // If no socket error occurred, call CheckIfThrowDelayedException in case there are other
-                       // kinds of exceptions that should be thrown.
-                       if (errorCode == SocketError.Success)
-                               req.CheckIfThrowDelayedException ();
-
-                       return(req.Total);
-               }
-
-               // Used by Udpclient
-               public
-               int EndReceiveFrom(IAsyncResult result, ref EndPoint end_point)
-               {
-                       if (disposed && closed)
-                               throw new ObjectDisposedException (GetType ().ToString ());
-
-                       if (result == null)
-                               throw new ArgumentNullException ("result");
-
-                       if (end_point == null)
-                               throw new ArgumentNullException ("remote_end");
-
-                       SocketAsyncResult req = result as SocketAsyncResult;
-                       if (req == null)
-                               throw new ArgumentException ("Invalid IAsyncResult", "result");
-
-                       if (Interlocked.CompareExchange (ref req.EndCalled, 1, 0) == 1)
-                               throw InvalidAsyncOp ("EndReceiveFrom");
-                       if (!result.IsCompleted)
-                               result.AsyncWaitHandle.WaitOne();
-
-                       req.CheckIfThrowDelayedException();
-                       end_point = req.EndPoint;
-                       return req.Total;
-               }
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               static extern void socket_pool_queue (SocketAsyncCall d, SocketAsyncResult r);
-       }
-}
-
index d5ff6effa2bce04f95370b76838a9d85d9645ac7..9045052ccf7a35a917619dcc0ee4d1fdd6cb5aa8 100644 (file)
@@ -56,8 +56,6 @@ namespace System.Net {
 
                static Dns ()
                {
-                       System.Net.Sockets.Socket.CheckProtocolSupport();
-
 #if !MOBILE
                        if (Environment.GetEnvironmentVariable ("MONO_DNS") != null) {
                                resolver = new SimpleResolver ();
index 2a2c1cb048fa6aa63336ee442c7902bb971fa39c..bb47c65c48faa262a6dedeeafc554390e796d4cd 100644 (file)
@@ -401,15 +401,21 @@ namespace System.Net
                }
                public bool CloseConnectionGroup (string connectionGroupName)
                {
+                       WebConnectionGroup cncGroup = null;
+
                        lock (this) {
-                               WebConnectionGroup cncGroup = GetConnectionGroup (connectionGroupName);
+                               cncGroup = GetConnectionGroup (connectionGroupName);
                                if (cncGroup != null) {
-                                       cncGroup.Close ();
                                        RemoveConnectionGroup (cncGroup);
-                                       return true;
                                }
                        }
 
+                       // WebConnectionGroup.Close() must *not* be called inside the lock
+                       if (cncGroup != null) {
+                               cncGroup.Close ();
+                               return true;
+                       }
+
                        return false;
                }
 
index 5e142154f913704bd614466144dbe5da559aa014..3936ee428981997dd3f5700a05f8727d20ce6680 100644 (file)
@@ -66,6 +66,8 @@ namespace System.Net
 
                public void Close ()
                {
+                       List<WebConnection> connectionsToClose = null;
+
                        //TODO: what do we do with the queue? Empty it out and abort the requests?
                        //TODO: abort requests or wait for them to finish
                        lock (sPoint) {
@@ -76,7 +78,17 @@ namespace System.Net
                                        var node = iter;
                                        iter = iter.Next;
 
+                                       // Closing connections inside the lock leads to a deadlock.
+                                       if (connectionsToClose == null)
+                                               connectionsToClose = new List<WebConnection>();
+
+                                       connectionsToClose.Add (cnc);
                                        connections.Remove (node);
+                               }
+                       }
+
+                       if (connectionsToClose != null) {
+                               foreach (var cnc in connectionsToClose) {
                                        cnc.Close (false);
                                        OnConnectionClosed ();
                                }
diff --git a/mcs/class/System/System.Threading/SemaphoreFullException.cs b/mcs/class/System/System.Threading/SemaphoreFullException.cs
deleted file mode 100644 (file)
index 6995b35..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// System.Threading.SemaphoreFullException.cs
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if (!NET_4_0 && !INSIDE_CORLIB) || (NET_4_0 && INSIDE_CORLIB)
-
-using System.Runtime.InteropServices;
-using System.Runtime.Serialization;
-using System.Runtime.CompilerServices;
-
-namespace System.Threading {
-
-#if NET_4_0 && INSIDE_CORLIB
-       [TypeForwardedFrom (Consts.AssemblySystem_2_0)]
-#endif
-       [ComVisible (false)]
-       [Serializable]
-       public class SemaphoreFullException : SystemException {
-
-               public SemaphoreFullException ()
-                       : base (Locale.GetText ("Exceeding maximum."))
-               {
-               }
-
-               public SemaphoreFullException (string message)
-                       : base (message)
-               {
-               }
-
-               public SemaphoreFullException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected SemaphoreFullException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-
-}
-#elif NET_4_0 && !INSIDE_CORLIB
-using System.Runtime.CompilerServices;
-using System.Threading;
-
-[assembly: TypeForwardedTo (typeof (SemaphoreFullException))]
-#endif
index b6114e4e51a383e7c3b489f8a0ed2baed2c9066a..2fa6a86c47156de30a9e63d6f166635aad87ce13 100644 (file)
@@ -27,117 +27,18 @@ Microsoft.Win32/UserPreferenceChangedEventHandler.cs
 Microsoft.Win32/UserPreferenceChangingEventArgs.cs
 Microsoft.Win32/UserPreferenceChangingEventHandler.cs
 Mono.Http/NtlmClient.cs
-System.CodeDom/CodeArgumentReferenceExpression.cs
-System.CodeDom/CodeArrayCreateExpression.cs
-System.CodeDom/CodeArrayIndexerExpression.cs
-System.CodeDom/CodeAssignStatement.cs
-System.CodeDom/CodeAttachEventStatement.cs
-System.CodeDom/CodeAttributeArgumentCollection.cs
-System.CodeDom/CodeAttributeArgument.cs
-System.CodeDom/CodeAttributeDeclarationCollection.cs
-System.CodeDom/CodeAttributeDeclaration.cs
-System.CodeDom/CodeBaseReferenceExpression.cs
-System.CodeDom/CodeBinaryOperatorExpression.cs
-System.CodeDom/CodeBinaryOperatorType.cs
-System.CodeDom/CodeCastExpression.cs
-System.CodeDom/CodeCatchClauseCollection.cs
-System.CodeDom/CodeCatchClause.cs
-System.CodeDom/CodeChecksumPragma.cs
-System.CodeDom/CodeComment.cs
-System.CodeDom/CodeCommentStatementCollection.cs
-System.CodeDom/CodeCommentStatement.cs
-System.CodeDom/CodeCompileUnit.cs
-System.CodeDom/CodeConditionStatement.cs
-System.CodeDom/CodeConstructor.cs
-System.CodeDom/CodeDefaultValueExpression.cs
-System.CodeDom/CodeDelegateCreateExpression.cs
-System.CodeDom/CodeDelegateInvokeExpression.cs
-System.CodeDom/CodeDirectionExpression.cs
-System.CodeDom/CodeDirectiveCollection.cs
-System.CodeDom/CodeDirective.cs
-System.CodeDom/CodeEntryPointMethod.cs
-System.CodeDom/CodeEventReferenceExpression.cs
-System.CodeDom/CodeExpressionCollection.cs
-System.CodeDom/CodeExpression.cs
-System.CodeDom/CodeExpressionStatement.cs
-System.CodeDom/CodeFieldReferenceExpression.cs
-System.CodeDom/CodeGotoStatement.cs
-System.CodeDom/CodeIndexerExpression.cs
-System.CodeDom/CodeIterationStatement.cs
-System.CodeDom/CodeLabeledStatement.cs
-System.CodeDom/CodeLinePragma.cs
-System.CodeDom/CodeMemberEvent.cs
-System.CodeDom/CodeMemberField.cs
-System.CodeDom/CodeMemberMethod.cs
-System.CodeDom/CodeMemberProperty.cs
-System.CodeDom/CodeMethodInvokeExpression.cs
-System.CodeDom/CodeMethodReferenceExpression.cs
-System.CodeDom/CodeMethodReturnStatement.cs
-System.CodeDom/CodeNamespaceCollection.cs
-System.CodeDom/CodeNamespace.cs
-System.CodeDom/CodeNamespaceImportCollection.cs
-System.CodeDom/CodeNamespaceImport.cs
-System.CodeDom/CodeObjectCreateExpression.cs
-System.CodeDom/CodeObject.cs
-System.CodeDom/CodeParameterDeclarationExpressionCollection.cs
-System.CodeDom/CodeParameterDeclarationExpression.cs
-System.CodeDom/CodePrimitiveExpression.cs
-System.CodeDom/CodePropertyReferenceExpression.cs
-System.CodeDom/CodePropertySetValueReferenceExpression.cs
-System.CodeDom/CodeRegionDirective.cs
-System.CodeDom/CodeRegionMode.cs
-System.CodeDom/CodeRemoveEventStatement.cs
-System.CodeDom/CodeSnippetCompileUnit.cs
-System.CodeDom/CodeSnippetExpression.cs
-System.CodeDom/CodeSnippetStatement.cs
-System.CodeDom/CodeSnippetTypeMember.cs
-System.CodeDom/CodeStatementCollection.cs
-System.CodeDom/CodeStatement.cs
-System.CodeDom/CodeThisReferenceExpression.cs
-System.CodeDom/CodeThrowExceptionStatement.cs
-System.CodeDom/CodeTryCatchFinallyStatement.cs
-System.CodeDom/CodeTypeConstructor.cs
-System.CodeDom/CodeTypeDeclarationCollection.cs
-System.CodeDom/CodeTypeDeclaration.cs
-System.CodeDom/CodeTypeDelegate.cs
-System.CodeDom/CodeTypeMemberCollection.cs
-System.CodeDom/CodeTypeMember.cs
-System.CodeDom/CodeTypeOfExpression.cs
-System.CodeDom/CodeTypeParameterCollection.cs
-System.CodeDom/CodeTypeParameter.cs
-System.CodeDom/CodeTypeReferenceCollection.cs
-System.CodeDom/CodeTypeReference.cs
-System.CodeDom/CodeTypeReferenceExpression.cs
-System.CodeDom/CodeTypeReferenceOptions.cs
-System.CodeDom/CodeVariableDeclarationStatement.cs
-System.CodeDom/CodeVariableReferenceExpression.cs
-System.CodeDom/ICodeDomVisitor.cs
 System.CodeDom.Compiler/CodeCompiler.cs
 System.CodeDom.Compiler/CodeDomConfigurationHandler.cs
 System.CodeDom.Compiler/CodeDomProvider.cs
-System.CodeDom.Compiler/CodeGenerator.cs
-System.CodeDom.Compiler/CodeGeneratorOptions.cs
 System.CodeDom.Compiler/CodeParser.cs
 System.CodeDom.Compiler/Compiler.cs
 System.CodeDom.Compiler/CompilerCollection.cs
-System.CodeDom.Compiler/CompilerErrorCollection.cs
-System.CodeDom.Compiler/CompilerError.cs
 System.CodeDom.Compiler/CompilerInfo.cs
-System.CodeDom.Compiler/CompilerParameters.cs
 System.CodeDom.Compiler/CompilerProviderOption.cs
 System.CodeDom.Compiler/CompilerProviderOptionsCollection.cs
 System.CodeDom.Compiler/CompilerResults.cs
 System.CodeDom.Compiler/Executor.cs
-System.CodeDom.Compiler/GeneratedCodeAttribute.cs
-System.CodeDom.Compiler/GeneratorSupport.cs
-System.CodeDom.Compiler/ICodeCompiler.cs
-System.CodeDom.Compiler/ICodeGenerator.cs
-System.CodeDom.Compiler/ICodeParser.cs
-System.CodeDom.Compiler/IndentedTextWriter.cs
-System.CodeDom.Compiler/LanguageOptions.cs
 System.CodeDom.Compiler/TempFileCollection.cs
-System.CodeDom/FieldDirection.cs
-System.CodeDom/MemberAttributes.cs
 System.Configuration/ApplicationScopedSettingAttribute.cs
 System.Configuration/ApplicationSettingsBase.cs
 System.Configuration/ApplicationSettingsGroup.cs
@@ -533,16 +434,19 @@ System.Net.Sockets/SafeSocketHandle.cs
 System.Net.Sockets/SelectMode.cs
 System.Net.Sockets/SendPacketsElement.cs
 System.Net.Sockets/Socket.cs
-System.Net.Sockets/Socket_2_1.cs
+System.Net.Sockets/SocketAsyncCallback.cs
 System.Net.Sockets/SocketAsyncEventArgs.cs
 System.Net.Sockets/SocketAsyncOperation.cs
+System.Net.Sockets/SocketAsyncResult.cs
+System.Net.Sockets/SocketAsyncWorker.cs
 System.Net.Sockets/SocketError.cs
 System.Net.Sockets/SocketException.cs
 System.Net.Sockets/SocketFlags.cs
 System.Net.Sockets/SocketInformation.cs
 System.Net.Sockets/SocketInformationOptions.cs
+System.Net.Sockets/SocketOperation.cs
 System.Net.Sockets/SocketOptionLevel.cs
-System.Net.Sockets/SocketOptionName.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketOptionName.cs
 System.Net.Sockets/SocketShutdown.cs
 System.Net.Sockets/SocketType.cs
 System.Net.Sockets/TcpClient.cs
@@ -647,7 +551,6 @@ System.Security.Permissions/StorePermission.cs
 System.Security.Permissions/StorePermissionFlags.cs
 System/SRDescriptionAttribute.cs
 System.Threading/Semaphore.cs
-System.Threading/SemaphoreFullException.cs
 System.Threading/ThreadExceptionEventArgs.cs
 System.Threading/ThreadExceptionEventHandler.cs
 System.Timers/ElapsedEventArgs.cs
@@ -722,7 +625,6 @@ ReferenceSources/SRCategoryAttribute.cs
 ReferenceSources/SystemNetworkCredential.cs
 ReferenceSources/WebHeaderCollectionType.cs
 ReferenceSources/Win32Exception.cs
-ReferenceSources/MonoSocketRuntimeWorkItem.cs
 
 ../../../external/referencesource/System/misc/PrivilegedConfigurationManager.cs
 ../../../external/referencesource/System/regex/system/text/regularexpressions/Regex.cs
@@ -1119,3 +1021,104 @@ ReferenceSources/MonoSocketRuntimeWorkItem.cs
 ../../../external/referencesource/System/misc/invariantcomparer.cs
 ../../../external/referencesource/System/misc/SecurityUtils.cs
 ../../../external/referencesource/System/misc/WeakHashtable.cs
+
+../../../external/referencesource/System/compmod/system/codedom/CodeArgumentReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeArrayCreateExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeArrayIndexerExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeAssignStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeAttachEventStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeAttributeArgumentCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeAttributeArgument.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeAttributeDeclarationCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeAttributeDeclaration.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeBaseReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeBinaryOperatorExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeBinaryOperatorType.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeCastExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeCatchClauseCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeCatchClause.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeChecksumPragma.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeComment.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeCommentStatementCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeCommentStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeCompileUnit.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeConditionStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeConstructor.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeDefaultValueExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeDelegateCreateExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeDelegateInvokeExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeDirectionExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeDirectiveCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeDirective.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeEntryPointMethod.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeEventReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeExpressionCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeExpressionStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeFieldReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeGotoStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeIndexerExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeIterationStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeLabeledStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeLinePragma.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeMemberEvent.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeMemberField.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeMemberMethod.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeMemberProperty.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeMethodInvokeExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/codemethodreferenceexpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeMethodReturnStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeNamespaceCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeNamespace.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeNamespaceImportCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeNamespaceImport.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeObjectCreateExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeObject.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeParameterDeclarationExpressionCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeParameterDeclarationExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodePrimitiveExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodePropertyReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodePropertySetValueReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeRegionDirective.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeRegionMode.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeRemoveEventStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeSnippetCompileUnit.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeSnippetExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeSnippetStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeSnippetTypeMember.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeStatementCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeThisReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeThrowExceptionStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTryCatchFinallyStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeConstructor.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeDeclarationCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeDeclaration.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeDelegate.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeMemberCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeMember.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeOfExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeParameterCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeParameter.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeReferenceCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeReference.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeTypeReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeVariableDeclarationStatement.cs
+../../../external/referencesource/System/compmod/system/codedom/CodeVariableReferenceExpression.cs
+../../../external/referencesource/System/compmod/system/codedom/FieldDirection.cs
+../../../external/referencesource/System/compmod/system/codedom/MemberAttributes.cs
+
+../../../external/referencesource/System/compmod/system/codedom/compiler/CodeGenerator.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/CodeGeneratorOptions.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/CodeValidator.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/CompilerError.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/CompilerErrorCollection.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/CompilerParameters.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/GeneratedCodeAttribute.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/GeneratorSupport.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/ICodeCompiler.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/ICodeGenerator.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/ICodeParser.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/IndentTextWriter.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/LanguageOptions.cs
+
index eab294b3f8f00fb84b3caf15d1acf4b4c1246a71..a1417e99527c0bd59f0befff9246110310ab4080 100644 (file)
@@ -233,6 +233,11 @@ namespace System {
                                        success = false;
                                        break;
                                }
+
+                               if (success && host.Length > 1 && host [0] != '[' && host [host.Length - 1] != ']') {
+                                       // host name present (but not an IPv6 address)
+                                       host = host.ToLower (CultureInfo.InvariantCulture);
+                               }
                        }
                }
 
@@ -1132,9 +1137,6 @@ namespace System {
                {
                        Parse (kind, source);
 
-                       if (userEscaped)
-                               return;
-
                        if (host.Length > 1 && host [0] != '[' && host [host.Length - 1] != ']') {
                                // host name present (but not an IPv6 address)
                                host = host.ToLower (CultureInfo.InvariantCulture);
index d53ccb2a76150a59063dec9559c27bedd017f153..7c9993abfdb45e2c0b027c100a6aba1ea8282535 100644 (file)
@@ -2,7 +2,7 @@
 // Microsoft.VisualBasic.* Test Cases
 //
 // Authors:
-//     Gert Driesen (drieseng@users.sourceforge.net)
+//     Gert Driesen (drieseng@users.sourceforge.net)
 //
 // (c) 2005 Novell
 //
@@ -154,6 +154,40 @@ namespace MonoTests.Microsoft.VisualBasic
                                + "Namespace{0}", NewLine), Generate ());
                }
 
+               [Test]
+               public void AttributeAndImportsTest ()
+               {
+                       CodeNamespace ns = new CodeNamespace ();
+                       codeUnit.Namespaces.Add (ns);
+                       ns.Imports.Add(new CodeNamespaceImport("System"));
+                       ns.Imports.Add(new CodeNamespaceImport("System.Reflection"));
+
+                       CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "A";
+                       codeUnit.AssemblyCustomAttributes.Add (attrDec);
+
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Imports System{0}Imports System.Reflection{0}<Assembly: A()> {0}{0}",
+                               NewLine), Generate ());
+               }
+
+               [Test]
+               public void AttributeAndImportsAndNamespaceTest ()
+               {
+                       CodeNamespace ns = new CodeNamespace ("A");
+                       codeUnit.Namespaces.Add (ns);
+                       ns.Imports.Add(new CodeNamespaceImport("System"));
+                       ns.Imports.Add(new CodeNamespaceImport("System.Reflection"));
+
+                       CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "A";
+                       codeUnit.AssemblyCustomAttributes.Add (attrDec);
+
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Imports System{0}Imports System.Reflection{0}<Assembly: A()> {0}{0}"
+                               + "Namespace A{0}End Namespace{0}", NewLine), Generate ());
+               }
+
                [Test]
                public void CodeSnippetTest ()
                {
index b88e1c17cdf8b655345db36699241c8304786ec4..c6ccdf0a26ab1e81b475f0a646aaf63296196b3e 100644 (file)
@@ -39,6 +39,7 @@ namespace MonoTests.System.CodeDom.Compiler
        [TestFixture]
        public class CodeGeneratorGenerateFromCompileUnitTest {
                [Test]
+               [Ignore ("This test is wrong; on .NET, ATTRIBUTE is not written and this attributePosition is always < 0.")]
                public void When_Having_AssemblyAttribute_And_Using_Namespace_It_Should_Generate_Namespace_First_And_Attribute_Afterwards () {
                        ICodeGenerator generator = new SampleCodeGenerator ();
                        var compileUnit = ACompileUnitWithAttributeAndNamespace ();
index 436e0e1252c835d9aad8d9bb347110344f50261c..b286100b932504342602c79ed75073df342023dc 100644 (file)
@@ -52,6 +52,15 @@ namespace MonoTests.System.Diagnostics
                        }
                }
 
+               [Test] // Covers #26363
+               public void GetProcesses_StartTime ()
+               {
+                       foreach (var p in Process.GetProcesses ()) {
+                               if (!p.HasExited && p.StartTime.Year < 1800)
+                                       Assert.Fail ("Process should not be started since the 18th century.");
+                       }
+               }
+
                [Test]
                public void PriorityClass_NotStarted ()
                {
@@ -768,11 +777,87 @@ namespace MonoTests.System.Diagnostics
 
                        Assert.AreEqual (true, r, "Null Argument Events Raised");
                }
+
+               [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")]
+               public void TestEnableEventsAfterExitedEvent ()
+               {
+                       Process p = new Process ();
+                       
+                       p.StartInfo = GetCrossPlatformStartInfo ();
+                       p.StartInfo.UseShellExecute = false;
+                       p.StartInfo.RedirectStandardOutput = true;
+                       p.StartInfo.RedirectStandardError = true;
+
+                       var exitedCalledCounter = 0;
+                       p.Exited += (object sender, EventArgs e) => {
+                               exitedCalledCounter++;
+                               Assert.IsTrue (p.HasExited);
+                       };
+
+                       p.EnableRaisingEvents = true;
+
+                       p.Start ();
+                       p.BeginErrorReadLine ();
+                       p.BeginOutputReadLine ();
+                       p.WaitForExit ();
+
+                       Assert.AreEqual (1, exitedCalledCounter);
+                       Thread.Sleep (50);
+                       Assert.AreEqual (1, exitedCalledCounter);
+               }
+
+               [Test]
+               [NUnit.Framework.Category ("MobileNotWorking")]
+               public void TestEnableEventsBeforeExitedEvent ()
+               {
+                       Process p = new Process ();
+                       
+                       p.StartInfo = GetCrossPlatformStartInfo ();
+                       p.StartInfo.UseShellExecute = false;
+                       p.StartInfo.RedirectStandardOutput = true;
+                       p.StartInfo.RedirectStandardError = true;
+
+                       p.EnableRaisingEvents = true;
+
+                       var exitedCalledCounter = 0;
+                       p.Exited += (object sender, EventArgs e) => {
+                               exitedCalledCounter++;
+                               Assert.IsTrue (p.HasExited);
+                       };
+
+                       p.Start ();
+                       p.BeginErrorReadLine ();
+                       p.BeginOutputReadLine ();
+                       p.WaitForExit ();
+
+                       Assert.AreEqual (1, exitedCalledCounter);
+                       Thread.Sleep (50);
+                       Assert.AreEqual (1, exitedCalledCounter);
+               }
+
                
                private ProcessStartInfo GetCrossPlatformStartInfo ()
                {
                        return RunningOnUnix ? new ProcessStartInfo ("/bin/ls", "/") : new ProcessStartInfo ("help", "");
                }
+
+               [Test] // Covers #26362
+               public void TestExitedEvent ()
+               {
+                       var falseExitedEvents = 0;
+                       var cp = Process.GetCurrentProcess ();
+                       foreach (var p in Process.GetProcesses ()) {
+                               if (p.Id != cp.Id && !p.HasExited) {
+                                       p.EnableRaisingEvents = true;
+                                       p.Exited += (s, e) => {
+                                               if (!p.HasExited)
+                                                       falseExitedEvents++;
+                                       };
+                               }
+                       }
+                       Assert.AreEqual (0, falseExitedEvents);
+               }
                
                [Test]
                public void ProcessName_NotStarted ()
index 3a0c7d89e5816ad949edc7f6a32e57d643f7efe2..f3cefe8c1513aebc1e7095aad330388f7d960011 100644 (file)
@@ -374,6 +374,29 @@ namespace MonoTests.System.IO.Compression
                        compressing.Close ();
                        backing.Close ();
                }
+
+               [Test]
+               public void Bug28777_EmptyFlush ()
+               {
+                       MemoryStream backing = new MemoryStream ();
+                       DeflateStream compressing = new DeflateStream (backing, CompressionLevel.Fastest, true);
+                       compressing.Flush ();
+                       compressing.Close ();
+                       backing.Close ();
+               }
+               
+               [Test]
+               public void Bug28777_DoubleFlush ()
+               {
+                       byte[] buffer = new byte [4096];
+                       MemoryStream backing = new MemoryStream ();
+                       DeflateStream compressing = new DeflateStream (backing, CompressionLevel.Fastest, true);
+                       compressing.Write (buffer, 0, buffer.Length);
+                       compressing.Flush ();
+                       compressing.Flush ();
+                       compressing.Close ();
+                       backing.Close ();
+               }
        }
 }
 
index 697830b3fd848d3d5f96b48aab738910621cfffe..f8c2f4cb750d69cbda8d81e1312338786dae656f 100755 (executable)
@@ -2505,6 +2505,24 @@ namespace MonoTests.System.Net.Sockets
                public void IOControl ()
                {
                }
+
+               [Test]
+               public void TestDefaultsDualMode ()
+               {
+                       using (var socket = new Socket (AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp)){
+                               Assert.IsTrue (socket.DualMode, "In Mono, DualMode must be true when constructing InterNetworkV6 sockets");
+                       }
+
+                       using (var socket = new Socket (SocketType.Stream, ProtocolType.Tcp)){
+                               Assert.AreEqual (AddressFamily.InterNetworkV6, socket.AddressFamily, "When creating sockets of type stream/tcp, the address family should be InterNetworkV6");
+                               Assert.IsTrue (socket.DualMode, "In Mono, DualMode must be true when constructing InterNetworkV6 sockets");
+
+                               socket.DualMode = false;
+
+                               Assert.IsFalse (socket.DualMode, "Setting of DualSocket should turn DualSockets off");
+                       }
+                       
+               }
                
                [Test]
                public void ReceiveGeneric ()
@@ -3156,7 +3174,7 @@ namespace MonoTests.System.Net.Sockets
 
                        EndPoint remoteEP = new IPEndPoint (IPAddress.Loopback, 8001);
                        try {
-                               s.ReceiveFrom ((Byte []) null, -1, (SocketFlags) 666,
+                               s.ReceiveFrom ((Byte []) null, 0, (SocketFlags) 666,
                                        ref remoteEP);
                                Assert.Fail ("#1");
                        } catch (ArgumentNullException ex) {
@@ -3178,7 +3196,7 @@ namespace MonoTests.System.Net.Sockets
                        byte [] buffer = new byte [5];
                        EndPoint remoteEP = null;
                        try {
-                               s.ReceiveFrom (buffer, -1, (SocketFlags) 666, ref remoteEP);
+                               s.ReceiveFrom (buffer, buffer.Length, (SocketFlags) 666, ref remoteEP);
                                Assert.Fail ("#1");
                        } catch (ArgumentNullException ex) {
                                Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
@@ -3322,7 +3340,7 @@ namespace MonoTests.System.Net.Sockets
                        EndPoint remoteEP = null;
 
                        try {
-                               s.ReceiveFrom (buffer, -1, -1, (SocketFlags) 666, ref remoteEP);
+                               s.ReceiveFrom (buffer, 0, buffer.Length, (SocketFlags) 666, ref remoteEP);
                                Assert.Fail ("#1");
                        } catch (ArgumentNullException ex) {
                                Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
index 0300aad9d579b981a08d5b90585e0249b3a3f296..7ff8924d0daaed4c9091dbdcbba456fa6b3a0323 100644 (file)
@@ -184,6 +184,12 @@ namespace MonoTests.System
 
                        Assert.IsTrue (Uri.TryCreate ("http://mono-project.com/☕", UriKind.Absolute, out uri), "highunicode-Absolute");
                        Assert.AreEqual("http://mono-project.com/%E2%98%95", uri.AbsoluteUri, "highunicode-Absolute-AbsoluteUri");
+
+                       string mixedCaseUri = "http://mOnO-proJECT.com";
+                       uri = new Uri (mixedCaseUri);
+                       Uri uri2;
+                       Assert.IsTrue (Uri.TryCreate (mixedCaseUri, UriKind.Absolute, out uri2), "mixedcasehost-absolute");
+                       Assert.AreEqual (uri.AbsoluteUri, uri2.AbsoluteUri, "mixedcasehost-absoluteuri-absoluteuri");
                }
 
                [Test] // TryCreate (String, UriKind, Uri)
index 6f061db7e6ec34020c25aea892383c7d9f0b8b0a..879d6456085f75c713d06b9b9595f58c35d8bea9 100644 (file)
@@ -2,8 +2,8 @@ Assembly/AssemblyInfo.cs
 ReferenceSources/SR.cs
 ../../build/common/SR.cs
 Mono.Http/NtlmClient.cs
-System.CodeDom.Compiler/GeneratedCodeAttribute.cs
-System.CodeDom.Compiler/IndentedTextWriter.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/GeneratedCodeAttribute.cs
+../../../external/referencesource/System/compmod/system/codedom/compiler/IndentTextWriter.cs
 System.Diagnostics/DataReceivedEventArgs.cs
 System.Diagnostics/DataReceivedEventHandler.cs
 System.Diagnostics/DefaultTraceListener.cs
@@ -129,18 +129,21 @@ System.Net.Sockets/SafeSocketHandle.cs
 System.Net.Sockets/SelectMode.cs
 System.Net.Sockets/SendPacketsElement.cs
 System.Net.Sockets/Socket.cs
+System.Net.Sockets/SocketAsyncCallback.cs
 System.Net.Sockets/SocketAsyncEventArgs.cs
 System.Net.Sockets/SocketAsyncOperation.cs
+System.Net.Sockets/SocketAsyncResult.cs
+System.Net.Sockets/SocketAsyncWorker.cs
 System.Net.Sockets/SocketError.cs
 System.Net.Sockets/SocketException.cs
 System.Net.Sockets/SocketFlags.cs
 System.Net.Sockets/SocketInformation.cs
 System.Net.Sockets/SocketInformationOptions.cs
+System.Net.Sockets/SocketOperation.cs
 System.Net.Sockets/SocketOptionLevel.cs
-System.Net.Sockets/SocketOptionName.cs
+../../../external/referencesource/System/net/System/Net/Sockets/SocketOptionName.cs
 System.Net.Sockets/SocketShutdown.cs
 System.Net.Sockets/SocketType.cs
-System.Net.Sockets/Socket_2_1.cs
 System.Net.Sockets/TcpClient.cs
 System.Net.Sockets/TcpListener.cs
 System.Net.Sockets/TransmitFileOptions.cs
@@ -314,7 +317,6 @@ System.Security.Cryptography/Oid.cs
 System.Security.Cryptography/OidCollection.cs
 System.Security.Cryptography/OidEnumerator.cs
 System.Threading/Semaphore.cs
-System.Threading/SemaphoreFullException.cs
 System.Threading/ThreadExceptionEventArgs.cs
 System.Threading/ThreadExceptionEventHandler.cs
 System.Timers/ElapsedEventArgs.cs
index 4325ba3dcbcb505f324641b255d438e279e4c781..a83741386d1022c3daf27e2c1b59b1d0c241e1c5 100644 (file)
@@ -70,7 +70,6 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyFileVersion (Consts.FxFileVersion)]
 [assembly: ComVisible (false)]
 [assembly: CompilationRelaxations (CompilationRelaxations.NoStringInterning)]
-[assembly: TypeLibVersion (2, 4)]
 [assembly: DefaultDependency (LoadHint.Always)]
 [assembly: StringFreezing]
 
index 05283f88bcffa8d649072360786e3b224b9586f1..9647ea805087eee637d589effe951c8e17843500 100644 (file)
@@ -36,12 +36,12 @@ RESOURCE_FILES = \
        resources/collation.cjkKO.bin \
        resources/collation.cjkKOlv2.bin
 
-REFERENCE_SOURCES_FLAGS = -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION
+REFERENCE_SOURCES_FLAGS = -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS
 
 MOBILE_STATIC := $(filter mobile_static monotouch monotouch_runtime, $(PROFILE))
 
 ifndef MOBILE_STATIC
-REFERENCE_SOURCES_FLAGS += -d:FEATURE_REMOTING,MONO_COM,FEATURE_USE_LCID
+REFERENCE_SOURCES_FLAGS += -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP
 endif
 
 LOCAL_MCS_FLAGS = -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB,MONO_CULTURE_DATA -d:LIBC $(REFERENCE_SOURCES_FLAGS)
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/ChangeLog b/mcs/class/corlib/Microsoft.Win32.SafeHandles/ChangeLog
deleted file mode 100644 (file)
index 728d1d1..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-2008-01-15  Zoltan Varga  <vargaz@gmail.com>
-
-       * SafeWaitHandle.cs: Fix some argument names to be consistent with MS.
-
-2007-07-18  Miguel de Icaza  <miguel@novell.com>
-
-       * SafeWaitHandle.cs: Do not call DangerousGetHandle here as it
-       throws ObjectDisposedException when the refcount reaches zero. 
-
-       * SafeFileHandle.cs: Same.
-
-2007-05-12  Jonathan Chambers  <joncham@gmail.com>
-
-       * SafeWaitHandle.cs: Add internal empty
-       constructor for pinvoke marshalling.
-
-2007-04-30  Dick Porter  <dick@ximian.com>
-
-       * CriticalHandleZeroOrMinusOneIsInvalid.cs: 
-       * CriticalHandleMinusOneIsInvalid.cs: 
-       * SafeWaitHandle.cs: 
-       * SafeHandleZeroOrMinusOneIsInvalid.cs: 
-       * SafeHandleMinusOneIsInvalid.cs: Added ReliabilityContract
-       attributes to complete 2.0 profile
-
-2007-01-13  Miguel de Icaza  <miguel@novell.com>
-
-       * Add a few more missing helper classes.
-
-2006-12-11  Miguel de Icaza  <miguel@novell.com>
-
-       * SafeWaitHandle.cs: Add new.
-
-2006-12-10  Miguel de Icaza  <miguel@novell.com>
-
-       * SafeFileHandle.cs: Implement this one.
-
-2006-12-02  Miguel de Icaza  <miguel@novell.com>
-
-       * SafeFileHandle.cs: Remove the IsInvalid method, as that is
-       present in the base class.
-
-2006-01-12  Ben Maurer  <bmaurer@andrew.cmu.edu>
-
-       * SafeHandleZeroOrMinusOneIsInvalid.cs: Update to RTM api
-
-       * SafeFileHandle.cs: Update to RTM api
-
-2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
-
-       * SafeFileHandle.cs: Make this inherit from SafeHandleZeroOrMinusOneIsInvalid.
-
-       * SafeHandleZeroOrMinusOneIsInvalid.cs: New file.
-
-2005-01-31  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SafeFileHandle.cs: Class declaration to allow compiling System.IO
-       and System.IO.IsolatedStorage for the NET_2_0 profile.
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/CriticalHandleMinusOneIsInvalid.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/CriticalHandleMinusOneIsInvalid.cs
deleted file mode 100644 (file)
index 7884221..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid
-//
-// Author
-//      Zoltan Varga (vargaz@gmail.com)
-//       Miguel de Icaza (miguel@novell.com)
-//
-// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.ConstrainedExecution;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public abstract class CriticalHandleMinusOneIsInvalid : CriticalHandle, IDisposable {
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
-               protected CriticalHandleMinusOneIsInvalid () : base ((IntPtr) (-1)) {
-               }
-
-               public override bool IsInvalid {
-                       get {
-                               return handle == (IntPtr)(-1);
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs
deleted file mode 100644 (file)
index 214611e..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid
-//
-// Author
-//      Zoltan Varga (vargaz@gmail.com)
-//       Miguel de Icaza (miguel@novell.com)
-//
-// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.ConstrainedExecution;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public abstract class CriticalHandleZeroOrMinusOneIsInvalid : CriticalHandle, IDisposable {
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
-               protected CriticalHandleZeroOrMinusOneIsInvalid () : base ((IntPtr) (-1)) {
-               }
-
-               public override bool IsInvalid {
-                       get {
-                               return handle == (IntPtr)(-1) || handle == IntPtr.Zero;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeFileHandle.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeFileHandle.cs
deleted file mode 100644 (file)
index 3f6da35..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.SafeFileHandle
-//
-// Authors:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//      Miguel de Icaza    <miguel@novell.com>
-//
-// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public sealed class SafeFileHandle : SafeHandleZeroOrMinusOneIsInvalid {
-               public SafeFileHandle (IntPtr preexistingHandle, bool ownsHandle) : base (ownsHandle)
-               {
-                       SetHandle (preexistingHandle);
-               }
-
-               // This is just for marshalling
-               internal SafeFileHandle () : base (true)
-               {
-               }
-
-               protected override bool ReleaseHandle ()
-               {
-                       MonoIOError error;
-                       
-                       MonoIO.Close (handle, out error);
-
-                       return error == MonoIOError.ERROR_SUCCESS;
-               }
-
-       }
-}
-
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeHandleMinusOneIsInvalid.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeHandleMinusOneIsInvalid.cs
deleted file mode 100644 (file)
index 8a0cb90..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid
-//
-// Author
-//      Zoltan Varga (vargaz@gmail.com)
-//       Miguel de Icaza (miguel@novell.com)
-//
-// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.ConstrainedExecution;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public abstract class SafeHandleMinusOneIsInvalid : SafeHandle, IDisposable {
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
-               protected SafeHandleMinusOneIsInvalid (bool ownsHandle) : base ((IntPtr) 0, ownsHandle) {
-               }
-
-               public override bool IsInvalid {
-                       get {
-                               return handle == (IntPtr)(-1);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs
deleted file mode 100644 (file)
index 24c7a5f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid
-//
-// Author
-//      Zoltan Varga (vargaz@gmail.com)
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.ConstrainedExecution;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public abstract class SafeHandleZeroOrMinusOneIsInvalid : SafeHandle, IDisposable {
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
-               protected SafeHandleZeroOrMinusOneIsInvalid (bool ownsHandle) : base ((IntPtr) 0, ownsHandle) {
-               }
-
-               public override bool IsInvalid {
-                       get {
-                               return handle == (IntPtr)(-1) || handle == (IntPtr) 0;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeRegistryHandle.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeRegistryHandle.cs
deleted file mode 100644 (file)
index e83eddc..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.SafeRegistryHandle
-//
-// Author
-//       Gonzalo Paniagua Javier (gonzalo@novell.com)
-//
-// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Runtime.ConstrainedExecution;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public sealed class SafeRegistryHandle : SafeHandleZeroOrMinusOneIsInvalid, IDisposable {
-               public SafeRegistryHandle (IntPtr preexistingHandle, bool ownsHandle) : base (ownsHandle)
-               {
-                       handle = preexistingHandle;     
-               }
-
-               protected override bool ReleaseHandle ()
-               {
-                       // Need to release an unmanaged pointer *only* in Windows.
-                       if (Path.DirectorySeparatorChar == '\\')
-                               return RegCloseKey (handle) == 0;
-
-                       return true;
-               }
-
-               [DllImport ("advapi32.dll", CharSet = CharSet.Unicode, EntryPoint="RegCloseKey")]
-               static extern int RegCloseKey (IntPtr keyHandle);
-       }
-}
-
diff --git a/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeWaitHandle.cs b/mcs/class/corlib/Microsoft.Win32.SafeHandles/SafeWaitHandle.cs
deleted file mode 100644 (file)
index c6f4df5..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// Microsoft.Win32.SafeHandles.SafeWaitHandle
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//      Miguel de Icaza    <miguel@novell.com>
-//
-// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Threading;
-using System.Runtime.ConstrainedExecution;
-
-namespace Microsoft.Win32.SafeHandles {
-
-       public sealed class SafeWaitHandle : SafeHandleZeroOrMinusOneIsInvalid {
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
-               public SafeWaitHandle (IntPtr existingHandle, bool ownsHandle) : base (ownsHandle)
-               {
-                       SetHandle (existingHandle);
-               }
-
-               protected override bool ReleaseHandle ()
-               {
-                       NativeEventCalls.CloseEvent_internal (handle);
-                       return true;
-               }
-
-       }
-}
diff --git a/mcs/class/corlib/ReferenceSources/Buffer.cs b/mcs/class/corlib/ReferenceSources/Buffer.cs
new file mode 100644 (file)
index 0000000..94b3a95
--- /dev/null
@@ -0,0 +1,176 @@
+namespace System
+{
+       partial class Buffer
+       {
+               public static int ByteLength (Array array)
+               {
+                       // note: the other methods in this class also use ByteLength to test for
+                       // null and non-primitive arguments as a side-effect.
+
+                       if (array == null)
+                               throw new ArgumentNullException ("array");
+
+                       int length = _ByteLength (array);
+                       if (length < 0)
+                               throw new ArgumentException (Locale.GetText ("Object must be an array of primitives."));
+
+                       return length;
+               }
+
+               public static byte GetByte (Array array, int index)
+               {
+                       if (index < 0 || index >= ByteLength (array))
+                               throw new ArgumentOutOfRangeException ("index");
+
+                       return _GetByte (array, index);
+               }
+
+               public static void SetByte (Array array, int index, byte value)
+               {
+                       if (index < 0 || index >= ByteLength (array))
+                               throw new ArgumentOutOfRangeException ("index");
+
+                       _SetByte (array, index, value);
+               }
+
+               public static void BlockCopy (Array src, int srcOffset, Array dst, int dstOffset, int count)
+               {
+                       if (src == null)
+                               throw new ArgumentNullException ("src");
+
+                       if (dst == null)
+                               throw new ArgumentNullException ("dst");
+
+                       if (srcOffset < 0)
+                               throw new ArgumentOutOfRangeException ("srcOffset", Locale.GetText(
+                                       "Non-negative number required."));
+
+                       if (dstOffset < 0)
+                               throw new ArgumentOutOfRangeException ("dstOffset", Locale.GetText (
+                                       "Non-negative number required."));
+
+                       if (count < 0)
+                               throw new ArgumentOutOfRangeException ("count", Locale.GetText (
+                                       "Non-negative number required."));
+
+                       // We do the checks in unmanaged code for performance reasons
+                       bool res = InternalBlockCopy (src, srcOffset, dst, dstOffset, count);
+                       if (!res) {
+                               // watch for integer overflow
+                               if ((srcOffset > ByteLength (src) - count) || (dstOffset > ByteLength (dst) - count))
+                                       throw new ArgumentException (Locale.GetText (
+                                               "Offset and length were out of bounds for the array or count is greater than " + 
+                                               "the number of elements from index to the end of the source collection."));
+                       }
+               }
+
+               internal static unsafe void memcpy4 (byte *dest, byte *src, int size) {
+                       /*while (size >= 32) {
+                               // using long is better than int and slower than double
+                               // FIXME: enable this only on correct alignment or on platforms
+                               // that can tolerate unaligned reads/writes of doubles
+                               ((double*)dest) [0] = ((double*)src) [0];
+                               ((double*)dest) [1] = ((double*)src) [1];
+                               ((double*)dest) [2] = ((double*)src) [2];
+                               ((double*)dest) [3] = ((double*)src) [3];
+                               dest += 32;
+                               src += 32;
+                               size -= 32;
+                       }*/
+                       while (size >= 16) {
+                               ((int*)dest) [0] = ((int*)src) [0];
+                               ((int*)dest) [1] = ((int*)src) [1];
+                               ((int*)dest) [2] = ((int*)src) [2];
+                               ((int*)dest) [3] = ((int*)src) [3];
+                               dest += 16;
+                               src += 16;
+                               size -= 16;
+                       }
+                       while (size >= 4) {
+                               ((int*)dest) [0] = ((int*)src) [0];
+                               dest += 4;
+                               src += 4;
+                               size -= 4;
+                       }
+                       while (size > 0) {
+                               ((byte*)dest) [0] = ((byte*)src) [0];
+                               dest += 1;
+                               src += 1;
+                               --size;
+                       }
+               }
+               internal static unsafe void memcpy2 (byte *dest, byte *src, int size) {
+                       while (size >= 8) {
+                               ((short*)dest) [0] = ((short*)src) [0];
+                               ((short*)dest) [1] = ((short*)src) [1];
+                               ((short*)dest) [2] = ((short*)src) [2];
+                               ((short*)dest) [3] = ((short*)src) [3];
+                               dest += 8;
+                               src += 8;
+                               size -= 8;
+                       }
+                       while (size >= 2) {
+                               ((short*)dest) [0] = ((short*)src) [0];
+                               dest += 2;
+                               src += 2;
+                               size -= 2;
+                       }
+                       if (size > 0)
+                               ((byte*)dest) [0] = ((byte*)src) [0];
+               }
+               static unsafe void memcpy1 (byte *dest, byte *src, int size) {
+                       while (size >= 8) {
+                               ((byte*)dest) [0] = ((byte*)src) [0];
+                               ((byte*)dest) [1] = ((byte*)src) [1];
+                               ((byte*)dest) [2] = ((byte*)src) [2];
+                               ((byte*)dest) [3] = ((byte*)src) [3];
+                               ((byte*)dest) [4] = ((byte*)src) [4];
+                               ((byte*)dest) [5] = ((byte*)src) [5];
+                               ((byte*)dest) [6] = ((byte*)src) [6];
+                               ((byte*)dest) [7] = ((byte*)src) [7];
+                               dest += 8;
+                               src += 8;
+                               size -= 8;
+                       }
+                       while (size >= 2) {
+                               ((byte*)dest) [0] = ((byte*)src) [0];
+                               ((byte*)dest) [1] = ((byte*)src) [1];
+                               dest += 2;
+                               src += 2;
+                               size -= 2;
+                       }
+                       if (size > 0)
+                               ((byte*)dest) [0] = ((byte*)src) [0];
+               }
+
+               internal static unsafe void Memcpy (byte *dest, byte *src, int size) {
+                       // FIXME: if pointers are not aligned, try to align them
+                       // so a faster routine can be used. Handle the case where
+                       // the pointers can't be reduced to have the same alignment
+                       // (just ignore the issue on x86?)
+                       if ((((int)dest | (int)src) & 3) != 0) {
+                               if (((int)dest & 1) != 0 && ((int)src & 1) != 0 && size >= 1) {
+                                       dest [0] = src [0];
+                                       ++dest;
+                                       ++src;
+                                       --size;
+                               }
+                               if (((int)dest & 2) != 0 && ((int)src & 2) != 0 && size >= 2) {
+                                       ((short*)dest) [0] = ((short*)src) [0];
+                                       dest += 2;
+                                       src += 2;
+                                       size -= 2;
+                               }
+                               if ((((int)dest | (int)src) & 1) != 0) {
+                                       memcpy1 (dest, src, size);
+                                       return;
+                               }
+                               if ((((int)dest | (int)src) & 2) != 0) {
+                                       memcpy2 (dest, src, size);
+                                       return;
+                               }
+                       }
+                       memcpy4 (dest, src, size);
+               }
+       }
+}
\ No newline at end of file
index 6e69b7c58257bf0e7913c7c6dbe96966803d8832..a0d79238e732dfae4fe248537b30b9fdbef826ae 100644 (file)
@@ -67,6 +67,13 @@ namespace System.Globalization
 
                int numberIndex;
 
+               int iDefaultAnsiCodePage;
+               int iDefaultOemCodePage;
+               int iDefaultMacCodePage;
+               int iDefaultEbcdicCodePage;
+               bool isRightToLeft;
+               string sListSeparator;
+
                private CultureData (string name)
                {
                        this.sRealName = name;
@@ -97,6 +104,13 @@ namespace System.Globalization
                                        // Store for specific data about each calendar
                                invariant.calendars = new CalendarData[CalendarData.MAX_CALENDARS];
                                invariant.calendars[0] = CalendarData.Invariant;
+
+                                       invariant.iDefaultAnsiCodePage = 1252;                   // default ansi code page ID (ACP)
+                                       invariant.iDefaultOemCodePage = 437;                    // default oem code page ID (OCP or OEM)
+                                       invariant.iDefaultMacCodePage = 10000;                  // default macintosh code page
+                                       invariant.iDefaultEbcdicCodePage = 037;                    // default EBCDIC code page
+
+                                       invariant.sListSeparator = ",";
                                        
                                        Interlocked.CompareExchange (ref s_Invariant, invariant, null);
                                }
@@ -115,7 +129,8 @@ namespace System.Globalization
                        }
                }
 
-               public static CultureData GetCultureData (string cultureName, bool useUserOverride, int datetimeIndex, int calendarId, int numberIndex, string iso2lang)
+               public static CultureData GetCultureData (string cultureName, bool useUserOverride, int datetimeIndex, int calendarId, int numberIndex, string iso2lang,
+                       int ansiCodePage, int oemCodePage, int macCodePage, int ebcdicCodePage, bool rightToLeft, string listSeparator)
                {
                        if (string.IsNullOrEmpty (cultureName))
                                return Invariant;
@@ -126,6 +141,12 @@ namespace System.Globalization
                        cd.calendarId = calendarId;
                        cd.numberIndex = numberIndex;
                        cd.sISO639Language = iso2lang;
+                       cd.iDefaultAnsiCodePage = ansiCodePage;
+                       cd.iDefaultOemCodePage = oemCodePage;
+                       cd.iDefaultMacCodePage = macCodePage;
+                       cd.iDefaultEbcdicCodePage = ebcdicCodePage;
+                       cd.isRightToLeft = rightToLeft;
+                       cd.sListSeparator = listSeparator;
                        return cd;
                }
 
@@ -240,11 +261,17 @@ namespace System.Globalization
                        }
                }
 
-        internal String SCOMPAREINFO {
-               get {
-                       return "";
+               internal String SCOMPAREINFO {
+                       get {
+                               return "";
+                       }
+               }
+
+               internal String STEXTINFO {
+                       get {
+                               return sRealName;
+                       }
                }
-       }
 
                internal int ILANGUAGE {
                        get {
@@ -252,6 +279,42 @@ namespace System.Globalization
                        }
                }
 
+               internal int IDEFAULTANSICODEPAGE {
+                       get {
+                               return iDefaultAnsiCodePage;
+                       }
+               }
+
+               internal int IDEFAULTOEMCODEPAGE {
+                       get {
+                               return iDefaultOemCodePage;
+                       }
+               }
+
+               internal int IDEFAULTMACCODEPAGE {
+                       get {
+                               return iDefaultMacCodePage;
+                       }
+               }
+
+               internal int IDEFAULTEBCDICCODEPAGE {
+                       get {
+                               return iDefaultEbcdicCodePage;
+                       }
+               }
+
+               internal bool IsRightToLeft {
+                       get {
+                               return isRightToLeft;
+                       }
+               }
+
+               internal String SLIST {
+                       get {
+                               return sListSeparator;
+                       }
+               }
+
 #region from reference sources
 
         // Are overrides enabled?
index afdf9315a473de132cfac18ac90ea5d9ac96930c..92057e9b5c31c9fa7225878a8f301a8532706f45 100644 (file)
@@ -38,5 +38,11 @@ namespace System
                        default: return codePage.ToString (CultureInfo.InvariantCulture);
                        }
                }
+
+               internal static bool IsWindows8OrAbove {
+                       get {
+                               return false;
+                       }
+               }
        }
 }
\ No newline at end of file
index 05c4d716cc118fafadbf26fdb732f3b1adee7af7..d5d822fdb00e9c4ddcd788046f1b0918b3aa5409 100644 (file)
@@ -6,7 +6,17 @@ namespace System.Runtime.CompilerServices {
        {
                static internal T UnsafeCast<T>(Object o) where T : class
                {
-                       return (T)o;
+                       return Array.UnsafeMov<object, T> (o);
+               }
+
+               static internal int UnsafeEnumCast<T>(T val) where T : struct
+               {
+                       return Array.UnsafeMov<T, int> (val);
+               }
+
+               static internal long UnsafeEnumCastLong<T>(T val) where T : struct
+               {
+                       throw new NotImplementedException ();
                }
        }
 }
\ No newline at end of file
diff --git a/mcs/class/corlib/ReferenceSources/MonoRuntimeWorkItem.cs b/mcs/class/corlib/ReferenceSources/MonoRuntimeWorkItem.cs
deleted file mode 100644 (file)
index e398d46..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-using System.Runtime.CompilerServices;
-using System.Runtime.Remoting.Messaging;
-
-namespace System.Threading
-{
-       internal sealed class MonoRuntimeWorkItem : IThreadPoolWorkItem
-       {
-               AsyncResult async_result;
-
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern void ExecuteWorkItem();
-
-               public void MarkAborted(ThreadAbortException tae)
-               {
-               }
-       }
-}
index b6b73bea8179ff708eecdfdb69b00cc9a85365ff..c87ea8f0860935c6a89c82a73368cb2dda6d5f73 100644 (file)
@@ -168,6 +168,13 @@ namespace System {
                        }
                }
 
+               // Value from which a new base 16 digit can cause an overflow.
+               const ulong base16MaxOverflowFreeValue = ulong.MaxValue / (16 * 16);
+
+               // From ulong we can only cast to positive long.
+               // As |long.MinValue| > |long.MaxValue| we need to do this to avoid an overflow.
+               const ulong longMinValue = ((ulong) long.MaxValue) + (ulong) -(long.MinValue + long.MaxValue);
+
                public unsafe static long StringToLong (string value, int fromBase, int flags, int* parsePos)
                {
                        if ((flags & (IsTight | NoSpace)) == 0)
@@ -177,11 +184,13 @@ namespace System {
                                return 0;
 
                        int chars = 0;
-                       int digitValue = -1;
-                       long result = 0;
+                       ulong fromBaseULong = (ulong) fromBase;
+                       ulong digitValue = 0;
+                       ulong result = 0;
 
                        int len = value.Length;
                        bool negative = false;
+                       bool treatAsUnsigned = (flags & ParseNumbers.TreatAsUnsigned) != 0;
 
                        if (len == 0) {
                                // Mimic broken .net behaviour
@@ -195,7 +204,7 @@ namespace System {
                                if (fromBase != 10)
                                        throw new ArgumentException ("String cannot contain a minus sign if the base is not 10.");
 
-                               if ((flags & TreatAsUnsigned) != 0)
+                               if (treatAsUnsigned)
                                        throw new OverflowException ("Negative number");
 
                                negative = true;
@@ -211,9 +220,9 @@ namespace System {
                        while (i < len) {
                                char c = value[i];
                                if (Char.IsNumber (c)) {
-                                       digitValue = c - '0';
+                                       digitValue = (ulong) (c - '0');
                                } else if (Char.IsLetter (c)) {
-                                       digitValue = Char.ToLowerInvariant (c) - 'a' + 10;
+                                       digitValue = (ulong) (Char.ToLowerInvariant (c) - 'a' + 10);
                                } else {
                                        if (i == 0)
                                                throw new FormatException ("Could not find any parsable digits.");
@@ -224,7 +233,7 @@ namespace System {
                                        break;
                                }
 
-                               if (digitValue >= fromBase) {
+                               if (digitValue >= fromBaseULong) {
                                        if (chars > 0) {
                                                throw new FormatException ("Additional unparsable "
                                                        + "characters are at the end of the string.");
@@ -234,7 +243,18 @@ namespace System {
                                        }
                                }
 
-                               result = fromBase * result + digitValue;
+                               if (result <= base16MaxOverflowFreeValue) {
+                                       result = result * (ulong) fromBaseULong + digitValue;
+                               } else {
+                                       // decompose 64 bit operation into 32 bit operations so we can check for overflows
+                                       ulong a = (result >> 32) * fromBaseULong;
+                                       ulong b = (result & uint.MaxValue) * fromBaseULong + digitValue;
+                                       if (((b >> 32) + a) > uint.MaxValue)
+                                               throw new OverflowException ();
+
+                                       result = (a << 32) + b;
+                               }
+
                                chars++;
                                ++i;
                        }
@@ -245,7 +265,24 @@ namespace System {
                        if (parsePos != null)
                                *parsePos = i;
 
-                       return negative ? -result : result;
+                       if (treatAsUnsigned)
+                               return (long) result;
+
+                       if (!negative) {
+                               if (fromBase == 10 && result > ((ulong) long.MaxValue))
+                                       throw new OverflowException ();
+
+                               return (long)result;
+                       }
+
+                       if (result <= (ulong) long.MaxValue)
+                               return -((long) result);
+
+                       if (result > longMinValue)
+                               throw new OverflowException ();
+
+                       // Avoids overflow of -result when result > long.MaxValue
+                       return long.MinValue + (long) (longMinValue - result);
                }
 
                public static string IntToString (int value, int toBase, int width, char paddingChar, int flags)
index 3557e77817c6b392af4e19cf509d4d6ee0219264..c8fae32d36363d570e0c0385504f5d21042fb400 100644 (file)
@@ -358,7 +358,7 @@ namespace System
 
                public override StructLayoutAttribute StructLayoutAttribute {
                        get {
-                               return GetStructLayoutAttribute ();
+                               return StructLayoutAttribute.GetCustomAttribute (this);
                        }
                }
 
@@ -394,42 +394,11 @@ namespace System
                        return constraints;
                }
 
-               public override Type MakeGenericType (params Type[] typeArguments)
+               internal static object CreateInstanceForAnotherGenericParameter (Type genericType, RuntimeType genericArgument)
                {
-                       if (IsUserType)
-                               throw new NotSupportedException ();
-                       if (!IsGenericTypeDefinition)
-                               throw new InvalidOperationException ("not a generic type definition");
-                       if (typeArguments == null)
-                               throw new ArgumentNullException ("typeArguments");
-                       if (GetGenericArguments().Length != typeArguments.Length)
-                               throw new ArgumentException (String.Format ("The type or method has {0} generic parameter(s) but {1} generic argument(s) where provided. A generic argument must be provided for each generic parameter.", GetGenericArguments ().Length, typeArguments.Length), "typeArguments");
-
-                       bool hasUserType = false;
-
-                       Type[] systemTypes = new Type[typeArguments.Length];
-                       for (int i = 0; i < typeArguments.Length; ++i) {
-                               Type t = typeArguments [i];
-                               if (t == null)
-                                       throw new ArgumentNullException ("typeArguments");
-
-                               if (!(t is MonoType))
-                                       hasUserType = true;
-                               systemTypes [i] = t;
-                       }
-
-                       if (hasUserType) {
-#if FULL_AOT_RUNTIME
-                               throw new NotSupportedException ("User types are not supported under full aot");
-#else
-                               return new MonoGenericClass (this, typeArguments);
-#endif
-                       }
-
-                       Type res = MakeGenericType (this, systemTypes);
-                       if (res == null)
-                               throw new TypeLoadException ();
-                       return res;
+                       var gt = (RuntimeType) MakeGenericType (genericType, new Type [] { genericArgument });
+                       var ctor = gt.GetDefaultConstructor ();
+                       return ctor.InternalInvoke (null, null);
                }
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
@@ -484,39 +453,8 @@ namespace System
                        }
                }
 
-               StructLayoutAttribute GetStructLayoutAttribute ()
-               {
-                       LayoutKind kind;
-
-                       if (IsLayoutSequential)
-                               kind = LayoutKind.Sequential;
-                       else if (IsExplicitLayout)
-                               kind = LayoutKind.Explicit;
-                       else
-                               kind = LayoutKind.Auto;
-
-                       StructLayoutAttribute attr = new StructLayoutAttribute (kind);
-
-                       if (IsUnicodeClass)
-                               attr.CharSet = CharSet.Unicode;
-                       else if (IsAnsiClass)
-                               attr.CharSet = CharSet.Ansi;
-                       else
-                               attr.CharSet = CharSet.Auto;
-
-                       if (kind != LayoutKind.Auto) {
-                               int packing;
-                               GetPacking (out packing, out attr.Size);
-                               // 0 means no data provided, we end up with default value
-                               if (packing != 0)
-                                       attr.Pack = packing;
-                       }
-
-                       return attr;
-               }
-
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               extern void GetPacking (out int packing, out int size);
+               internal extern void GetPacking (out int packing, out int size);
 
 #if MONO_COM
                private static Dictionary<Guid, Type> clsid_types;
@@ -612,7 +550,7 @@ namespace System
                internal extern string getFullName(bool full_name, bool assembly_qualified);
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               public extern override Type [] GetGenericArguments ();
+               extern Type[] GetGenericArgumentsInternal (bool runtimeArray);
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                extern GenericParameterAttributes GetGenericParameterAttributes ();
diff --git a/mcs/class/corlib/ReferenceSources/SharedStatics.cs b/mcs/class/corlib/ReferenceSources/SharedStatics.cs
new file mode 100644 (file)
index 0000000..01252cc
--- /dev/null
@@ -0,0 +1,22 @@
+using System.Threading;
+using StringMaker = System.Security.Util.Tokenizer.StringMaker;
+
+namespace System
+{
+       static class SharedStatics
+       {
+               static StringMaker shared;
+               static public StringMaker GetSharedStringMaker ()
+               {
+                       if (shared == null)
+                               Interlocked.CompareExchange (ref shared, new StringMaker (), null);
+
+                       return shared;
+               }
+
+               static public void ReleaseSharedStringMaker (ref StringMaker maker)
+               {
+
+               }
+       }
+}
\ No newline at end of file
index d4cec69780f1227be6dc612888810dc2e92da8e6..a7da51340592977c081cf693fdc8a054120ff0f5 100644 (file)
@@ -324,9 +324,23 @@ namespace System
                        }
                }
 
-        internal static int nativeCompareOrdinalEx (String strA, int indexA, String strB, int indexB, int count)
-        {
-               return CompareOrdinalUnchecked (strA, indexA, count, strB, indexB, count);
+               internal static int nativeCompareOrdinalEx (String strA, int indexA, String strB, int indexB, int count)
+               {
+                       //
+                       // .net does following checks in unmanaged land only which is quite
+                       // wrong as it's not always necessary and argument names don't match
+                       // but we are compatible
+                       //
+                       if (count < 0)
+                               throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NegativeCount"));
+
+                       if (indexA < 0 || indexA > strA.Length)
+                               throw new ArgumentOutOfRangeException("indexA", Environment.GetResourceString("ArgumentOutOfRange_Index"));
+
+                       if (indexB < 0 || indexB > strB.Length)
+                               throw new ArgumentOutOfRangeException("indexB", Environment.GetResourceString("ArgumentOutOfRange_Index"));
+
+                       return CompareOrdinalUnchecked (strA, indexA, count, strB, indexB, count);
         }
 
                unsafe String ReplaceInternal (char oldChar, char newChar)
@@ -365,7 +379,7 @@ namespace System
                        return tmp;
                }
 
-               public String ReplaceInternal (String oldValue, String newValue)
+               internal String ReplaceInternal (String oldValue, String newValue)
                {
                        // LAMESPEC: According to MSDN the following method is culture-sensitive but this seems to be incorrect
                        // LAMESPEC: Result is undefined if result Length is longer than maximum string Length
@@ -611,6 +625,44 @@ namespace System
                {
                        Buffer.Memcpy (dest, src, size);
                }
+
+               /* Used by the runtime */
+               internal static unsafe void bzero (byte *dest, int len) {
+                       memset (dest, 0, len);
+               }
+
+               internal static unsafe void bzero_aligned_1 (byte *dest, int len) {
+                       ((byte*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_2 (byte *dest, int len) {
+                       ((short*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_4 (byte *dest, int len) {
+                       ((int*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_8 (byte *dest, int len) {
+                       ((long*)dest) [0] = 0;
+               }
+
+               internal static unsafe void memcpy_aligned_1 (byte *dest, byte *src, int size) {
+                       ((byte*)dest) [0] = ((byte*)src) [0];
+               }
+
+               internal static unsafe void memcpy_aligned_2 (byte *dest, byte *src, int size) {
+                       ((short*)dest) [0] = ((short*)src) [0];
+               }
+
+               internal static unsafe void memcpy_aligned_4 (byte *dest, byte *src, int size) {
+                       ((int*)dest) [0] = ((int*)src) [0];
+               }
+
+               internal static unsafe void memcpy_aligned_8 (byte *dest, byte *src, int size) {
+                       ((long*)dest) [0] = ((long*)src) [0];
+               }
+
                #endregion
 
                // Certain constructors are redirected to CreateString methods with
diff --git a/mcs/class/corlib/ReferenceSources/TextInfo.cs b/mcs/class/corlib/ReferenceSources/TextInfo.cs
new file mode 100644 (file)
index 0000000..52bf3a1
--- /dev/null
@@ -0,0 +1,201 @@
+using System.Runtime.CompilerServices;
+
+namespace System.Globalization
+{
+       partial class TextInfo
+       {
+               unsafe static ushort *to_lower_data_low;
+               unsafe static ushort *to_lower_data_high;
+               unsafe static ushort *to_upper_data_low;
+               unsafe static ushort *to_upper_data_high;
+
+               [MethodImplAttribute(System.Runtime.CompilerServices.MethodImplOptions.InternalCall)]
+               unsafe static extern void GetDataTablePointersLite (out ushort *to_lower_data_low, out ushort *to_lower_data_high, out ushort *to_upper_data_low, out ushort *to_upper_data_high);
+
+               static readonly object cookie = new object ();
+
+               unsafe static void ReadDataTable ()
+               {
+                       if (to_lower_data_low == null) {
+                               lock (cookie) {
+                                       if (to_lower_data_low != null)
+                                               return;
+
+                                       GetDataTablePointersLite (out to_lower_data_low, out to_lower_data_high, out to_upper_data_low, out to_upper_data_high);
+                               }
+                       }
+               }
+
+               unsafe string ToUpperInternal (string str)
+               {
+                       if (str.Length == 0)
+                               return String.Empty;
+
+                       string tmp = String.FastAllocateString (str.Length);
+                       fixed (char* source = str, dest = tmp) {
+
+                               char* destPtr = (char*)dest;
+                               char* sourcePtr = (char*)source;
+
+                               for (int n = 0; n < str.Length; n++) {
+                                       *destPtr = ToUpper (*sourcePtr);
+                                       sourcePtr++;
+                                       destPtr++;
+                               }
+                       }
+                       return tmp;
+               }
+
+               unsafe string ToLowerInternal (string str)
+               {
+                       if (str.Length == 0)
+                               return String.Empty;
+
+                       string tmp = String.FastAllocateString (str.Length);
+                       fixed (char* source = str, dest = tmp) {
+
+                               char* destPtr = (char*)dest;
+                               char* sourcePtr = (char*)source;
+
+                               for (int n = 0; n < str.Length; n++) {
+                                       *destPtr = ToLower (*sourcePtr);
+                                       sourcePtr++;
+                                       destPtr++;
+                               }
+                       }
+                       return tmp;
+               }
+
+               char ToUpperInternal (char c)
+               {
+                       switch (c) {
+                       case '\u0069': // Latin lowercase i
+                               if (!IsAsciiCasingSameAsInvariant)
+                                       return '\u0130'; // dotted capital I
+                               break;
+                       case '\u0131': // dotless i
+                               return '\u0049'; // I
+
+                       case '\u01c5': // see ToLower()
+                               return '\u01c4';
+                       case '\u01c8': // see ToLower()
+                               return '\u01c7';
+                       case '\u01cb': // see ToLower()
+                               return '\u01ca';
+                       case '\u01f2': // see ToLower()
+                               return '\u01f1';
+                       case '\u0390': // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+                               return '\u03aa'; // it is not in ICU
+                       case '\u03b0': // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+                               return '\u03ab'; // it is not in ICU
+                       case '\u03d0': // GREEK BETA
+                               return '\u0392';
+                       case '\u03d1': // GREEK THETA
+                               return '\u0398';
+                       case '\u03d5': // GREEK PHI
+                               return '\u03a6';
+                       case '\u03d6': // GREEK PI
+                               return '\u03a0';
+                       case '\u03f0': // GREEK KAPPA
+                               return '\u039a';
+                       case '\u03f1': // GREEK RHO
+                               return '\u03a1';
+                       // am not sure why miscellaneous GREEK symbols are 
+                       // not handled here.
+                       }
+
+                       return ToUpperInvariant (c);
+               }               
+
+               char ToLowerInternal (char c)
+               {
+                       switch (c) {
+                       case '\u0049': // Latin uppercase I
+                               if (!IsAsciiCasingSameAsInvariant)
+                                       return '\u0131'; // I becomes dotless i
+                               break;
+                       case '\u0130': // I-dotted
+                               return '\u0069'; // i
+
+                       case '\u01c5': // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+                               return '\u01c6';
+                       // \u01c7 -> \u01c9 (LJ) : invariant
+                       case '\u01c8': // LATIN CAPITAL LETTER L WITH SMALL LETTER J
+                               return '\u01c9';
+                       // \u01ca -> \u01cc (NJ) : invariant
+                       case '\u01cb': // LATIN CAPITAL LETTER N WITH SMALL LETTER J
+                               return '\u01cc';
+                       // WITH CARON : invariant
+                       // WITH DIAERESIS AND * : invariant
+
+                       case '\u01f2': // LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+                               return '\u01f3';
+                       case '\u03d2':  // ? it is not in ICU
+                               return '\u03c5';
+                       case '\u03d3':  // ? it is not in ICU
+                               return '\u03cd';
+                       case '\u03d4':  // ? it is not in ICU
+                               return '\u03cb';
+                       }
+                       return ToLowerInvariant (c);                    
+               }
+
+               static char ToLowerInvariant (char c)
+               {
+                       ReadDataTable ();
+
+                       unsafe {
+                               if (c <= ((char)0x24cf))
+                                       return (char) to_lower_data_low [c];
+                               if (c >= ((char)0xff21))
+                                       return (char) to_lower_data_high[c - 0xff21];
+                       }
+                       return c;
+               }
+
+               static char ToUpperInvariant (char c)
+               {
+                       ReadDataTable ();
+
+                       unsafe {
+                               if (c <= ((char)0x24e9))
+                                       return (char) to_upper_data_low [c];
+                               if (c >= ((char)0xff21))
+                                       return (char) to_upper_data_high [c - 0xff21];
+                       }
+                       return c;
+               }               
+
+               static unsafe int InternalCompareStringOrdinalIgnoreCase (String strA, int indexA, String strB, int indexB, int lenA, int lenB)
+               {
+                       if (strA == null) {
+                               return strB == null ? 0 : -1;
+                       }
+                       if (strB == null) {
+                               return 1;
+                       }
+                       int lengthA = Math.Min (lenA, strA.Length - indexA);
+                       int lengthB = Math.Min (lenB, strB.Length - indexB);
+
+                       if (lengthA == lengthB && Object.ReferenceEquals (strA, strB))
+                               return 0;
+
+                       fixed (char* aptr = strA, bptr = strB) {
+                               char* ap = aptr + indexA;
+                               char* end = ap + Math.Min (lengthA, lengthB);
+                               char* bp = bptr + indexB;
+                               while (ap < end) {
+                                       if (*ap != *bp) {
+                                               char c1 = Char.ToUpperInvariant (*ap);
+                                               char c2 = Char.ToUpperInvariant (*bp);
+                                               if (c1 != c2)
+                                                       return c1 - c2;
+                                       }
+                                       ap++;
+                                       bp++;
+                               }
+                               return lengthA - lengthB;
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/corlib/ReferenceSources/TimeZoneInfoOptions.cs b/mcs/class/corlib/ReferenceSources/TimeZoneInfoOptions.cs
deleted file mode 100644 (file)
index 50ce810..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace System
-{
-    [Flags]
-    internal enum TimeZoneInfoOptions {
-        None                      = 1,
-        NoThrowOnInvalidTime      = 2
-    };
-}
\ No newline at end of file
diff --git a/mcs/class/corlib/ReferenceSources/TypeBuilderInstantiation.cs b/mcs/class/corlib/ReferenceSources/TypeBuilderInstantiation.cs
new file mode 100644 (file)
index 0000000..9e82664
--- /dev/null
@@ -0,0 +1,14 @@
+namespace System.Reflection.Emit
+{
+       abstract class TypeBuilderInstantiation : TypeInfo
+       {
+               internal static Type MakeGenericType (Type type, Type[] typeArguments)
+               {
+#if FULL_AOT_RUNTIME
+                       throw new NotSupportedException ("User types are not supported under full aot");
+#else
+                       return new MonoGenericClass (type, typeArguments);
+#endif
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/corlib/ReferenceSources/win32native.cs b/mcs/class/corlib/ReferenceSources/win32native.cs
new file mode 100644 (file)
index 0000000..c856267
--- /dev/null
@@ -0,0 +1,14 @@
+namespace Microsoft.Win32
+{
+       static class Win32Native
+       {
+               internal const string ADVAPI32 = "advapi32.dll";
+
+               internal const int ERROR_SUCCESS = 0x0;
+
+               public static string GetMessage (int hr)
+               {
+                       return "Error " + hr;
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Collections.Generic/Comparer.cs b/mcs/class/corlib/System.Collections.Generic/Comparer.cs
deleted file mode 100644 (file)
index d19ce2c..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// Comparer.cs
-//
-// Authors:
-//     Ben Maurer (bmaurer@ximian.com)
-//     Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.Collections.Generic {
-       [Serializable]
-       public abstract class Comparer<T> : IComparer<T>, IComparer
-       {
-               static readonly Comparer <T> _default = typeof (IComparable<T>).IsAssignableFrom (typeof (T)) ?
-                       (Comparer<T>) Activator.CreateInstance (typeof (GenericComparer <>).MakeGenericType (typeof (T))) :
-                       new DefaultComparer ();
-               
-               public abstract int Compare (T x, T y);
-       
-               public static Comparer<T> Default {
-                       get {
-                               return _default;
-                       }
-               }
-
-               public static Comparer<T> Create (Comparison<T> comparison)
-               {
-                       if (comparison == null)
-                               throw new ArgumentNullException ("comparison");
-
-                       return new ComparisonComparer<T> (comparison);
-               }
-
-               int IComparer.Compare (object x, object y)
-               {
-                       if (x == y)
-                               return 0;
-                       if (x == null)
-                               return y == null ? 0 : -1;
-                       if (y == null)
-                               return 1;
-                       
-                       if (x is T && y is T)
-                               return Compare ((T) x, (T) y);
-                       
-                       throw new ArgumentException ();
-               }
-       
-               [Serializable]
-               sealed class DefaultComparer : Comparer<T>
-               {
-                       public override int Compare (T x, T y)
-                       {
-                               // `null' is less than any other ref type
-                               if (x == null)
-                                       return y == null ? 0 : -1;
-                               if (y == null)
-                                       return 1;
-       
-                               var i = x as IComparable;
-                               if (i != null)
-                                       return i.CompareTo (y);
-
-                               i = y as IComparable;
-                               if (i != null)
-                                       return -i.CompareTo (x);
-
-                               throw new ArgumentException ("At least one argument has to implement IComparable interface");
-                       }
-               }
-       }
-       
-       [Serializable]
-       sealed class GenericComparer<T> : Comparer<T> where T : IComparable<T>
-       {
-               public override int Compare (T x, T y)
-               {
-                       // `null' is less than any other ref type
-                       if (x == null)
-                               return y == null ? 0 : -1;
-                       if (y == null)
-                               return 1;
-                       
-                       return x.CompareTo (y);
-               }
-       }
-       [Serializable]
-       sealed class ComparisonComparer<T> : Comparer<T>
-       {
-               readonly Comparison<T> comparison;
-
-               public ComparisonComparer (Comparison<T> comparison)
-               {
-                       this.comparison = comparison;
-               }
-
-               public override int Compare (T x, T y)
-               {
-                       return comparison (x, y);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs b/mcs/class/corlib/System.Collections.Generic/EqualityComparer.cs
deleted file mode 100644 (file)
index 9338f96..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-// EqualityComparer.cs
-//
-// Authors:
-//     Ben Maurer (bmaurer@ximian.com)
-//     Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2014 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.Collections.Generic {
-       [Serializable]
-       public abstract class EqualityComparer <T> : IEqualityComparer, IEqualityComparer <T> {
-               
-               static EqualityComparer ()
-               {
-                       var t = typeof (T);
-                       if (t == typeof (string)) {
-                               _default = (EqualityComparer<T>) (object) new InternalStringComparer ();
-                               return;
-                       }
-
-                       if (t == typeof (int)) {
-                               _default = (EqualityComparer<T>) (object) new IntEqualityComparer ();
-                               return;
-                       }
-
-                       if (t.IsEnum && Enum.GetUnderlyingType (t) == typeof (int)) {
-                               _default = new EnumIntEqualityComparer<T> ();
-                               return;
-                       }
-
-                       if (typeof (IEquatable <T>).IsAssignableFrom (t))
-                               _default = (EqualityComparer <T>) Activator.CreateInstance (typeof (GenericEqualityComparer <>).MakeGenericType (t));
-                       else
-                               _default = new DefaultComparer<T> ();
-               }
-               
-               public abstract int GetHashCode (T obj);
-               public abstract bool Equals (T x, T y);
-       
-               static readonly EqualityComparer <T> _default;
-               
-               public static EqualityComparer <T> Default {
-                       get {
-                               return _default;
-                       }
-               }
-
-               int IEqualityComparer.GetHashCode (object obj)
-               {
-                       if (obj == null)
-                               return 0;
-
-                       if (!(obj is T))
-                               throw new ArgumentException ("Argument is not compatible", "obj");
-
-                       return GetHashCode ((T)obj);
-               }
-
-               bool IEqualityComparer.Equals (object x, object y)
-               {
-                       if (x == y)
-                               return true;
-
-                       if (x == null || y == null)
-                               return false;
-
-                       if (!(x is T))
-                               throw new ArgumentException ("Argument is not compatible", "x");
-                       if (!(y is T))
-                               throw new ArgumentException ("Argument is not compatible", "y");
-                       return Equals ((T)x, (T)y);
-               }
-               
-               internal virtual int IndexOf (T[] array, T value, int startIndex, int endIndex)
-               {
-                       for (int i = startIndex; i < endIndex; ++i) {
-                               if (Equals (Array.UnsafeLoad (array, i), value))
-                                       return i;
-                       }
-
-                       return -1;
-               }
-       }
-
-       [Serializable]
-       sealed class DefaultComparer<T> : EqualityComparer<T> {
-       
-               public override int GetHashCode (T obj)
-               {
-                       if (obj == null)
-                               return 0;
-                       return obj.GetHashCode ();
-               }
-       
-               public override bool Equals (T x, T y)
-               {
-                       if (x == null)
-                               return y == null;
-
-                       return x.Equals (y);
-               }
-       }
-
-       [Serializable]
-       sealed class InternalStringComparer : EqualityComparer<string> {
-       
-               public override int GetHashCode (string obj)
-               {
-                       if (obj == null)
-                               return 0;
-                       return obj.GetHashCode ();
-               }
-       
-               public override bool Equals (string x, string y)
-               {
-                       if (x == null)
-                               return y == null;
-
-                       if ((object) x == (object) y)
-                               return true;
-                               
-                       return x.Equals (y);
-               }
-
-               internal override int IndexOf (string[] array, string value, int startIndex, int endIndex)
-               {
-                       for (int i = startIndex; i < endIndex; ++i) {
-                               if (Array.UnsafeLoad (array, i) == value)
-                                       return i;
-                       }
-
-                       return -1;
-               }
-       }
-
-       [Serializable]
-       sealed class IntEqualityComparer : EqualityComparer<int>
-       {
-               public override int GetHashCode (int obj)
-               {
-                       return obj;
-               }
-
-               public override bool Equals (int x, int y)
-               {
-                       return x == y;
-               }
-
-               internal override int IndexOf (int[] array, int value, int startIndex, int endIndex)
-               {
-                       for (int i = startIndex; i < endIndex; ++i) {
-                               if (Array.UnsafeLoad (array, i) == value)
-                                       return i;
-                       }
-
-                       return -1;
-               }
-       }
-
-       [Serializable]
-       sealed class EnumIntEqualityComparer<T> : EqualityComparer<T>
-       {
-               public override int GetHashCode (T obj)
-               {
-                       return Array.UnsafeMov<T, int> (obj);
-               }
-
-               public override bool Equals (T x, T y)
-               {
-                       return Array.UnsafeMov<T, int> (x) == Array.UnsafeMov<T, int> (y);
-               }
-
-               internal override int IndexOf (T[] array, T value, int startIndex, int endIndex)
-               {
-                       int v = Array.UnsafeMov<T, int> (value);
-                       var a = Array.UnsafeMov<T[], int[]> (array);
-                       for (int i = startIndex; i < endIndex; ++i) {
-                               if (Array.UnsafeLoad (a, i) == v)
-                                       return i;
-                       }
-
-                       return -1;
-               }
-       }
-
-       [Serializable]
-       sealed class GenericEqualityComparer <T> : EqualityComparer <T> where T : IEquatable <T> {
-
-               public override int GetHashCode (T obj)
-               {
-                       if (obj == null)
-                               return 0;
-                       return obj.GetHashCode ();
-               }
-
-               public override bool Equals (T x, T y)
-               {
-                       if (x == null)
-                               return y == null;
-                       
-                       return x.Equals (y);
-               }
-       }
-}
index 3a2fd33913e285a40bd7a139816f6d2ba9a975d0..3e775808fdc04a97de3a8adc125948cd2f9b4d7d 100644 (file)
@@ -189,56 +189,124 @@ namespace System.Diagnostics {
                        return frames;
                }
 
-               public override string ToString ()
+               internal bool AddFrames (StringBuilder sb, bool isException = false)
                {
-                       string newline = String.Format ("{0}   {1} ", Environment.NewLine, Locale.GetText ("at"));
+                       bool printOffset;
+                       string debugInfo, indentation;
                        string unknown = Locale.GetText ("<unknown method>");
-                       string debuginfo = Locale.GetText (" in {0}:line {1}");
-                       StringBuilder sb = new StringBuilder ();
-                       for (int i = 0; i < FrameCount; i++) {
+
+                       if (isException) {
+                               printOffset = true;
+                               indentation = "  ";
+                               debugInfo = Locale.GetText (" in {0}:{1} ");
+                       } else {
+                               printOffset = false;
+                               indentation = "   ";
+                               debugInfo = Locale.GetText (" in {0}:line {1}");
+                       }
+
+                       var newline = String.Format ("{0}{1}{2} ", Environment.NewLine, indentation,
+                                       Locale.GetText ("at"));
+
+                       int i;
+                       for (i = 0; i < FrameCount; i++) {
                                StackFrame frame = GetFrame (i);
-                               if (i > 0)
-                                       sb.Append (newline);
+                               if (i == 0)
+                                       sb.AppendFormat ("{0}{1} ", indentation, Locale.GetText ("at"));
                                else
-                                       sb.AppendFormat ("   {0} ", Locale.GetText ("at"));
-                               MethodBase method = frame.GetMethod ();
-                               if (method != null) {
-                                       // Method information available
-                                       sb.AppendFormat ("{0}.{1}", method.DeclaringType.FullName, method.Name);
-                                       /* Append parameter information */
-                                       sb.Append ("(");
-                                       ParameterInfo[] p = method.GetParametersInternal ();
-                                       for (int j = 0; j < p.Length; ++j) {
-                                               if (j > 0)
-                                                       sb.Append (", ");
-                                               Type pt = p[j].ParameterType;
-                                               bool byref = pt.IsByRef;
-                                               if (byref)
-                                                       pt = pt.GetElementType ();
-                                               if (pt.IsClass && pt.Namespace != String.Empty) {
-                                                       sb.Append (pt.Namespace);
-                                                       sb.Append (".");
+                                       sb.Append (newline);
+
+                               if (frame.GetMethod () == null) {
+                                       string internal_name = frame.GetInternalMethodName ();
+                                       if (internal_name != null)
+                                               sb.Append (internal_name);
+                                       else if (printOffset)
+                                               sb.AppendFormat ("<0x{0:x5} + 0x{1:x5}> {2}", frame.GetMethodAddress (), frame.GetNativeOffset (), unknown);
+                                       else
+                                               sb.AppendFormat (unknown);
+                               } else {
+                                       GetFullNameForStackTrace (sb, frame.GetMethod ());
+
+                                       if (printOffset) {
+                                               if (frame.GetILOffset () == -1) {
+                                                       sb.AppendFormat (" <0x{0:x5} + 0x{1:x5}>", frame.GetMethodAddress (), frame.GetNativeOffset ());
+                                                       if (frame.GetMethodIndex () != 0xffffff)
+                                                               sb.AppendFormat (" {0}", frame.GetMethodIndex ());
+                                               } else {
+                                                       sb.AppendFormat (" [0x{0:x5}]", frame.GetILOffset ());
                                                }
-                                               sb.Append (pt.Name);
-                                               if (byref)
-                                                       sb.Append (" ByRef");
-                                               sb.AppendFormat (" {0}", p [j].Name);
                                        }
-                                       sb.Append (")");
+
+                                       sb.AppendFormat (debugInfo, frame.GetSecureFileName (),
+                                                        frame.GetFileLineNumber ());
+                               }
+                       }
+
+                       return i != 0;
+               }
+
+               // This method is also used with reflection by mono-symbolicate tool.
+               // mono-symbolicate tool uses this method to check which method matches
+               // the stack frame method signature.
+               static void GetFullNameForStackTrace (StringBuilder sb, MethodBase mi)
+               {
+                       var declaringType = mi.DeclaringType;
+                       if (declaringType.IsGenericType && !declaringType.IsGenericTypeDefinition)
+                               declaringType = declaringType.GetGenericTypeDefinition ();
+
+                       // Get generic definition
+                       var bindingflags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
+                       foreach (var m in declaringType.GetMethods (bindingflags)) {
+                               if (m.MetadataToken == mi.MetadataToken) {
+                                       mi = m;
+                                       break;
                                }
-                               else {
-                                       // Method information not available
-                                       sb.Append (unknown);
+                       }
+
+                       sb.Append (declaringType.ToString ());
+
+                       sb.Append (".");
+                       sb.Append (mi.Name);
+
+                       if (mi.IsGenericMethod) {
+                               Type[] gen_params = mi.GetGenericArguments ();
+                               sb.Append ("[");
+                               for (int j = 0; j < gen_params.Length; j++) {
+                                       if (j > 0)
+                                               sb.Append (",");
+                                       sb.Append (gen_params [j].Name);
                                }
+                               sb.Append ("]");
+                       }
+
+                       ParameterInfo[] p = mi.GetParametersInternal ();
+
+                       sb.Append (" (");
+                       for (int i = 0; i < p.Length; ++i) {
+                               if (i > 0)
+                                       sb.Append (", ");
+
+                               Type pt = p[i].ParameterType;
+                               if (pt.IsGenericType && ! pt.IsGenericTypeDefinition)
+                                       pt = pt.GetGenericTypeDefinition ();
 
-                               if (debug_info) {
-                                       // we were asked for debugging informations
-                                       // but that doesn't mean we have the debug information available
-                                       string fname = frame.GetSecureFileName ();
-                                       if (fname != "<filename unknown>")
-                                               sb.AppendFormat (debuginfo, fname, frame.GetFileLineNumber ());
+                               if (pt.IsClass && !String.IsNullOrEmpty (pt.Namespace)) {
+                                       sb.Append (pt.Namespace);
+                                       sb.Append (".");
+                               }
+                               sb.Append (pt.Name);
+                               if (p [i].Name != null) {
+                                       sb.Append (" ");
+                                       sb.Append (p [i].Name);
                                }
                        }
+                       sb.Append (")");
+               }
+
+               public override string ToString ()
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       AddFrames (sb);
                        return sb.ToString ();
                }
 
diff --git a/mcs/class/corlib/System.Globalization/.gitattributes b/mcs/class/corlib/System.Globalization/.gitattributes
deleted file mode 100644 (file)
index 1e0deee..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/CodePageDataItem.cs -crlf
diff --git a/mcs/class/corlib/System.Globalization/CalendarAlgorithmType.cs b/mcs/class/corlib/System.Globalization/CalendarAlgorithmType.cs
deleted file mode 100644 (file)
index f66c25e..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// ::MONO
-//
-// System.Globalization.CalendarAlgorithmType.cs
-//
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Globalization
-{
-       [System.Runtime.InteropServices.ComVisible(true)]
-       public enum CalendarAlgorithmType
-       {
-               Unknown = 0,
-               SolarCalendar = 1,
-               LunarCalendar = 2,
-               LunisolarCalendar = 3,
-       }
-
-}
diff --git a/mcs/class/corlib/System.Globalization/CalendarWeekRule.cs b/mcs/class/corlib/System.Globalization/CalendarWeekRule.cs
deleted file mode 100644 (file)
index 678eded..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// ::MONO
-//
-// System.Globalization.CalendarWeekRule.cs
-//
-// Copyright (C) Wictor Wilén 2001 (wictor@iBizkit.se)
-//
-// Contributors: Wictor Wilén
-//
-// Revisions
-// 2001-09-14: First draft
-// 2001-09-15: First release
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Globalization
-{
-       /// <summary>
-       /// The System.Globalization.CalendarWeekRule enumeration
-       /// </summary>
-       [System.Runtime.InteropServices.ComVisible(true)]
-       [System.Serializable]
-       public enum CalendarWeekRule
-       {
-               FirstDay = 0,
-               FirstFullWeek = 1,
-               FirstFourDayWeek = 2
-
-       }
-
-}
index 0793fe501e44159c1a0cab702f1b2fc60e47f16b..b806082b188853ad5e30e10dfbde8b3e9a9c01e3 100644 (file)
@@ -84,6 +84,16 @@ namespace System.Globalization
                [NonSerialized]
                private unsafe readonly void *textinfo_data;
 
+               [StructLayout (LayoutKind.Sequential)]
+               struct Data {
+                       public int ansi;
+                       public int ebcdic;
+                       public int mac;
+                       public int oem;
+                       public bool right_to_left;
+                       public byte list_sep;
+               }
+
                int m_dataItem;         // MS.NET serializes this.
 #pragma warning restore 169, 649
 
@@ -417,18 +427,26 @@ namespace System.Globalization
                        // The runtime returns a NULL in the first position of the array when
                        // 'neutral' is true. We fill it in with a clone of InvariantCulture
                        // since it must not be read-only
+                       int i = 0;
                        if (neutral && infos.Length > 0 && infos [0] == null) {
-                               infos [0] = (CultureInfo) InvariantCulture.Clone ();
+                               infos [i++] = (CultureInfo) InvariantCulture.Clone ();
                        }
 
-                       for (int i = 1; i < infos.Length; ++i) {
+                       for (; i < infos.Length; ++i) {
                                var ci = infos [i];
-                               infos [i].m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.number_index, ci.iso2lang);
+                               var ti = ci.GetTextInfoData ();
+                               infos [i].m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.number_index, ci.iso2lang,
+                                       ti.ansi, ti.oem, ti.mac, ti.ebcdic, ti.right_to_left, ((char)ti.list_sep).ToString ());
                        }
 
                        return infos;
                }
 
+               unsafe Data GetTextInfoData ()
+               {
+                       return *(Data*) textinfo_data;
+               }
+
                public override int GetHashCode ()
                {
                        return cultureID.GetHashCode ();
@@ -624,7 +642,9 @@ namespace System.Globalization
 
                private unsafe TextInfo CreateTextInfo (bool readOnly)
                {
-                       return new TextInfo (this, cultureID, this.textinfo_data, readOnly);
+                       TextInfo tempTextInfo = new TextInfo (this.m_cultureData);
+                       tempTextInfo.SetReadOnlyState (readOnly);
+                       return tempTextInfo;
                }
 
                public CultureInfo (int culture) : this (culture, true) {}
@@ -644,8 +664,8 @@ namespace System.Globalization
 
                        if (culture == InvariantCultureId) {
                                /* Short circuit the invariant culture */
-                               ConstructInvariant (read_only);
                                m_cultureData = CultureData.Invariant;
+                               ConstructInvariant (read_only);
                                return;
                        }
 
@@ -657,7 +677,9 @@ namespace System.Globalization
                                throw new CultureNotFoundException ("culture", msg);
                        }
 
-                       m_cultureData = CultureData.GetCultureData (m_name, m_useUserOverride, datetime_index, CalendarType, number_index, iso2lang);
+                       var ti = GetTextInfoData ();
+                       m_cultureData = CultureData.GetCultureData (m_name, m_useUserOverride, datetime_index, CalendarType, number_index, iso2lang,
+                               ti.ansi, ti.oem, ti.mac, ti.ebcdic, ti.right_to_left, ((char)ti.list_sep).ToString ());
                }
 
                public CultureInfo (string name) : this (name, true) {}
@@ -677,8 +699,8 @@ namespace System.Globalization
 
                        if (name.Length == 0) {
                                /* Short circuit the invariant culture */
-                               ConstructInvariant (read_only);
                                m_cultureData = CultureData.Invariant;
+                               ConstructInvariant (read_only);
                                return;
                        }
 
@@ -686,7 +708,9 @@ namespace System.Globalization
                                throw CreateNotFoundException (name);
                        }
 
-                       m_cultureData = CultureData.GetCultureData (m_name, useUserOverride, datetime_index, CalendarType, number_index, iso2lang);
+                       var ti = GetTextInfoData ();
+                       m_cultureData = CultureData.GetCultureData (m_name, useUserOverride, datetime_index, CalendarType, number_index, iso2lang,
+                               ti.ansi, ti.oem, ti.mac, ti.ebcdic, ti.right_to_left, ((char)ti.list_sep).ToString ());
                }
 
                // This is used when creating by specific name and creating by
@@ -803,7 +827,10 @@ namespace System.Globalization
                        if (ci.IsNeutralCulture)
                                ci = CreateSpecificCultureFromNeutral (ci.Name);
 
-                       ci.m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.number_index, ci.iso2lang);
+                       var ti = ci.GetTextInfoData ();
+
+                       ci.m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.number_index, ci.iso2lang,
+                               ti.ansi, ti.oem, ti.mac, ti.ebcdic, ti.right_to_left, ((char)ti.list_sep).ToString ());
                        return ci;
                }
 
diff --git a/mcs/class/corlib/System.Globalization/DateTimeStyles.cs b/mcs/class/corlib/System.Globalization/DateTimeStyles.cs
deleted file mode 100644 (file)
index a61d315..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// DateTimeStyles.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Fri, 7 Sep 2001 16:32:07 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Globalization {
-
-       [Flags]
-       [Serializable]
-       [System.Runtime.InteropServices.ComVisible(true)]
-       public enum DateTimeStyles {
-               None                 = 0x00000000,
-               AllowLeadingWhite    = 0x00000001,
-               AllowTrailingWhite   = 0x00000002,
-               AllowInnerWhite      = 0x00000004,
-               AllowWhiteSpaces     = AllowLeadingWhite | AllowTrailingWhite | AllowInnerWhite,
-               NoCurrentDateDefault = 0x00000008,
-               AdjustToUniversal    = 0x00000010,
-               AssumeLocal          = 0x00000020,
-               AssumeUniversal      = 0x00000040,
-               RoundtripKind        = 0x00000080,
-       } // DateTimeStyles
-
-} // System.Globalization
diff --git a/mcs/class/corlib/System.Globalization/DigitShapes.cs b/mcs/class/corlib/System.Globalization/DigitShapes.cs
deleted file mode 100644 (file)
index a1a2142..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Globalization {
-
-       [System.Runtime.InteropServices.ComVisible(true)]
-       [Serializable]
-       public enum DigitShapes {
-               Context = 0,
-               None = 1,
-               NativeNational = 2
-       }
-}
diff --git a/mcs/class/corlib/System.Globalization/GregorianCalendarTypes.cs b/mcs/class/corlib/System.Globalization/GregorianCalendarTypes.cs
deleted file mode 100644 (file)
index 49a98db..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-// GregorianCalendarTypes.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Wed, 5 Sep 2001 06:35:19 UTC
-// Source file: all.xml
-// URL: http://devresource.hp.com/devresource/Docs/TechPapers/CSharp/all.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Globalization {
-
-
-       [System.Runtime.InteropServices.ComVisible(true)]
-       [System.Serializable]
-       public enum GregorianCalendarTypes {
-
-               /// <summary>
-               /// </summary>
-               Localized = 1,
-
-               /// <summary>
-               /// </summary>
-               USEnglish = 2,
-
-               /// <summary>
-               /// </summary>
-               MiddleEastFrench = 9,
-
-               /// <summary>
-               /// </summary>
-               Arabic = 10,
-
-               /// <summary>
-               /// </summary>
-               TransliteratedEnglish = 11,
-
-               /// <summary>
-               /// </summary>
-               TransliteratedFrench = 12,
-       } // GregorianCalendarTypes
-
-} // System.Globalization
diff --git a/mcs/class/corlib/System.Globalization/TextInfo.cs b/mcs/class/corlib/System.Globalization/TextInfo.cs
deleted file mode 100644 (file)
index 07d1eeb..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-//
-// System.Globalization.TextInfo.cs
-//
-// Authors:
-//     Dick Porter (dick@ximian.com)
-//     Duncan Mak (duncan@ximian.com)
-//     Atsushi Enomoto (atsushi@ximian.com)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002 Ximian, Inc.
-// (C) 2005 Novell, Inc.
-//
-// TODO:
-//   Missing the various code page mappings.
-//   Missing the OnDeserialization implementation.
-//
-// Copyright (C) 2004, 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Diagnostics.Contracts;
-
-namespace System.Globalization {
-
-       [Serializable]
-       [ComVisible (true)]
-       [MonoTODO ("IDeserializationCallback isn't implemented.")]
-       public class TextInfo: IDeserializationCallback, ICloneable
-       {
-               static TextInfo ()
-               {
-                       unsafe {
-                               GetDataTablePointersLite (out to_lower_data_low, out to_lower_data_high, out to_upper_data_low, out to_upper_data_high);
-                       }
-               }
-               
-               private readonly unsafe static ushort *to_lower_data_low;
-               private readonly unsafe static ushort *to_lower_data_high;
-               private readonly unsafe static ushort *to_upper_data_low;
-               private readonly unsafe static ushort *to_upper_data_high;
-               [MethodImplAttribute(System.Runtime.CompilerServices.MethodImplOptions.InternalCall)]
-               private unsafe static extern void GetDataTablePointersLite (out ushort *to_lower_data_low, out ushort *to_lower_data_high,
-                       out ushort *to_upper_data_low, out ushort *to_upper_data_high);
-
-               static char ToLowerInvariant (char c)
-               {
-                       unsafe {
-                               if (c <= ((char)0x24cf))
-                                       return (char) to_lower_data_low [c];
-                               if (c >= ((char)0xff21))
-                                       return (char) to_lower_data_high[c - 0xff21];
-                       }
-                       return c;
-               }
-
-               static char ToUpperInvariant (char c)
-               {
-                       unsafe {
-                               if (c <= ((char)0x24e9))
-                                       return (char) to_upper_data_low [c];
-                               if (c >= ((char)0xff21))
-                                       return (char) to_upper_data_high [c - 0xff21];
-                       }
-                       return c;
-               }
-               
-               [StructLayout (LayoutKind.Sequential)]
-               struct Data {
-                       public int ansi;
-                       public int ebcdic;
-                       public int mac;
-                       public int oem;
-                       public bool right_to_left;
-                       public byte list_sep;
-               }
-
-               string m_listSeparator;
-               bool m_isReadOnly;
-               string customCultureName;
-
-#pragma warning disable 169
-               [NonSerialized]
-               int m_nDataItem;
-               bool m_useUserOverride;
-#pragma warning restore 169            
-
-               int m_win32LangID;
-
-               [NonSerialized]
-               readonly CultureInfo ci;
-
-               [NonSerialized]
-               readonly bool handleDotI;
-
-               [NonSerialized]
-               readonly Data data;
-
-               internal unsafe TextInfo (CultureInfo ci, int lcid, void* data, bool read_only)
-               {
-                       this.m_isReadOnly = read_only;
-                       this.m_win32LangID = lcid;
-                       this.ci = ci;
-                       if (data != null)
-                               this.data = *(Data*) data;
-                       else {
-                               this.data = new Data ();
-                               this.data.list_sep = (byte) ',';
-                       }
-
-                       CultureInfo tmp = ci;
-                       while (tmp.Parent != null && tmp.Parent.LCID != 0x7F && tmp.Parent != tmp)
-                               tmp = tmp.Parent;
-
-                       if (tmp != null) {
-                               switch (tmp.LCID) {
-                               case 44: // Azeri (az)
-                               case 31: // Turkish (tr)
-                                       handleDotI = true;
-                                       break;
-                               }
-                       }
-               }
-
-               private TextInfo (TextInfo textInfo)
-               {
-                       m_win32LangID = textInfo.m_win32LangID;
-                       m_nDataItem = textInfo.m_nDataItem;
-                       m_useUserOverride = textInfo.m_useUserOverride;
-                       m_listSeparator = textInfo.ListSeparator;
-                       customCultureName = textInfo.CultureName;
-                       ci = textInfo.ci;
-                       handleDotI = textInfo.handleDotI;
-                       data = textInfo.data;
-               }
-
-               public virtual int ANSICodePage
-               {
-                       get {
-                               return data.ansi;
-                       }
-               }
-
-               public virtual int EBCDICCodePage
-               {
-                       get {
-                               return data.ebcdic;
-                       }
-               }
-
-               [ComVisible (false)]
-               public int LCID {
-                       get { return m_win32LangID; }
-               }
-
-               public virtual string ListSeparator {
-                       get {
-                               if (m_listSeparator == null)
-                                       m_listSeparator = ((char) data.list_sep).ToString ();
-                               return m_listSeparator;
-                       }
-                       [ComVisible (false)]
-                       set { m_listSeparator = value; }
-               }
-
-               public virtual int MacCodePage
-               {
-                       get {
-                               return data.mac;
-                       }
-               }
-
-               public virtual int OEMCodePage
-               {
-                       get {
-                               return data.oem;
-                       }
-               }
-
-               [ComVisible (false)]
-               public string CultureName {
-                       get {
-                               if (customCultureName == null)
-                                       customCultureName = ci == null ? String.Empty : ci.Name;
-                               return customCultureName;
-                       }
-               }
-
-               [ComVisible (false)]
-               public bool IsReadOnly {
-                       get { return m_isReadOnly; }
-               }
-
-               [ComVisible (false)]
-               public bool IsRightToLeft {
-                       get {
-                               return data.right_to_left;
-                       }
-               }
-
-               public override bool Equals (object obj)
-               {
-                       if (obj == null)
-                               return false;
-                       TextInfo other = obj as TextInfo;
-                       if (other == null)
-                               return false;
-                       if (other.m_win32LangID != m_win32LangID)
-                               return false;
-                       if (other.ci != ci)
-                               return false;
-                       return true;
-               }
-
-               public override int GetHashCode()
-               {
-                       return (m_win32LangID);
-               }
-               
-               public override string ToString()
-               {
-                       return "TextInfo - " + m_win32LangID;
-               }
-
-               public string ToTitleCase (string str)
-               {
-                       if(str == null)
-                               throw new ArgumentNullException ("str");
-
-                       StringBuilder sb = null;
-                       int i = 0;
-                       int start = 0;
-                       while (i < str.Length) {
-                               if (!Char.IsLetter (str [i++]))
-                                       continue;
-                               i--;
-                               char t = ToTitleCase (str [i]);
-                               bool capitalize = true;
-                               if (t == str [i]) {
-                                       capitalize = false;
-                                       bool allTitle = true;
-                                       // if the word is all titlecase,
-                                       // then don't capitalize it.
-                                       int saved = i;
-                                       while (++i < str.Length) {
-                                               var ch = str [i];
-                                               var category = char.GetUnicodeCategory (ch);
-                                               if (IsSeparator (category))
-                                                       break;
-                                               t = ToTitleCase (ch);
-                                               if (t != ch) {
-                                                       allTitle = false;
-                                                       break;
-                                               }
-                                       }
-                                       if (allTitle)
-                                               continue;
-                                       i = saved;
-
-                                       // still check if all remaining
-                                       // characters are lowercase,
-                                       // where we don't have to modify
-                                       // the source word.
-                                       while (++i < str.Length) {
-                                               var ch = str [i];
-                                               var category = char.GetUnicodeCategory (ch);
-                                               if (IsSeparator (category))
-                                                       break;
-                                               if (ToLower (ch) != ch) {
-                                                       capitalize = true;
-                                                       i = saved;
-                                                       break;
-                                               }
-                                       }
-                               }
-
-                               if (capitalize) {
-                                       if (sb == null)
-                                               sb = new StringBuilder (str.Length);
-                                       sb.Append (str, start, i - start);
-                                       sb.Append (ToTitleCase (str [i]));
-                                       start = i + 1;
-                                       while (++i < str.Length) {
-                                               var ch = str [i];
-                                               var category = char.GetUnicodeCategory (ch);
-                                               if (IsSeparator (category))
-                                                       break;
-                                               sb.Append (ToLower (ch));
-                                       }
-                                       start = i;
-                               }
-                       }
-                       if (sb != null)
-                               sb.Append (str, start, str.Length - start);
-
-                       return sb != null ? sb.ToString () : str;
-               }
-
-               static bool IsSeparator (UnicodeCategory category)
-               {
-                       switch (category) {
-                       case UnicodeCategory.SpaceSeparator:
-                       case UnicodeCategory.LineSeparator:
-                       case UnicodeCategory.ParagraphSeparator:
-                       case UnicodeCategory.Control:
-                       case UnicodeCategory.Format:
-                       case UnicodeCategory.ConnectorPunctuation:
-                       case UnicodeCategory.DashPunctuation:
-                       case UnicodeCategory.OpenPunctuation:
-                       case UnicodeCategory.ClosePunctuation:
-                       case UnicodeCategory.InitialQuotePunctuation:
-                       case UnicodeCategory.FinalQuotePunctuation:
-                       case UnicodeCategory.OtherPunctuation:
-                               return true;
-                       }
-
-                       return false;
-               }
-
-               // Only Azeri and Turkish have their own special cases.
-               // Other than them, all languages have common special case
-               // (enumerable enough).
-               public virtual char ToLower (char c)
-               {
-                       // quick ASCII range check
-                       if (c < 0x40 || 0x60 < c && c < 128)
-                               return c;
-                       else if ('A' <= c && c <= 'Z' && (!handleDotI || c != 'I'))
-                               return (char) (c + 0x20);
-
-                       if (ci == null || ci.LCID == 0x7F)
-                               return ToLowerInvariant (c);
-
-                       switch (c) {
-                       case '\u0049': // Latin uppercase I
-                               if (handleDotI)
-                                       return '\u0131'; // I becomes dotless i
-                               break;
-                       case '\u0130': // I-dotted
-                               return '\u0069'; // i
-
-                       case '\u01c5': // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-                               return '\u01c6';
-                       // \u01c7 -> \u01c9 (LJ) : invariant
-                       case '\u01c8': // LATIN CAPITAL LETTER L WITH SMALL LETTER J
-                               return '\u01c9';
-                       // \u01ca -> \u01cc (NJ) : invariant
-                       case '\u01cb': // LATIN CAPITAL LETTER N WITH SMALL LETTER J
-                               return '\u01cc';
-                       // WITH CARON : invariant
-                       // WITH DIAERESIS AND * : invariant
-
-                       case '\u01f2': // LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-                               return '\u01f3';
-                       case '\u03d2':  // ? it is not in ICU
-                               return '\u03c5';
-                       case '\u03d3':  // ? it is not in ICU
-                               return '\u03cd';
-                       case '\u03d4':  // ? it is not in ICU
-                               return '\u03cb';
-                       }
-                       return ToLowerInvariant (c);
-               }
-
-               public virtual char ToUpper (char c)
-               {
-                       // quick ASCII range check
-                       if (c < 0x60)
-                               return c;
-                       else if ('a' <= c && c <= 'z' && (!handleDotI || c != 'i'))
-                               return (char) (c - 0x20);
-
-                       if (ci == null || ci.LCID == 0x7F)
-                               return ToUpperInvariant (c);
-
-                       switch (c) {
-                       case '\u0069': // Latin lowercase i
-                               if (handleDotI)
-                                       return '\u0130'; // dotted capital I
-                               break;
-                       case '\u0131': // dotless i
-                               return '\u0049'; // I
-
-                       case '\u01c5': // see ToLower()
-                               return '\u01c4';
-                       case '\u01c8': // see ToLower()
-                               return '\u01c7';
-                       case '\u01cb': // see ToLower()
-                               return '\u01ca';
-                       case '\u01f2': // see ToLower()
-                               return '\u01f1';
-                       case '\u0390': // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-                               return '\u03aa'; // it is not in ICU
-                       case '\u03b0': // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-                               return '\u03ab'; // it is not in ICU
-                       case '\u03d0': // GREEK BETA
-                               return '\u0392';
-                       case '\u03d1': // GREEK THETA
-                               return '\u0398';
-                       case '\u03d5': // GREEK PHI
-                               return '\u03a6';
-                       case '\u03d6': // GREEK PI
-                               return '\u03a0';
-                       case '\u03f0': // GREEK KAPPA
-                               return '\u039a';
-                       case '\u03f1': // GREEK RHO
-                               return '\u03a1';
-                       // am not sure why miscellaneous GREEK symbols are 
-                       // not handled here.
-                       }
-
-                       return ToUpperInvariant (c);
-               }
-
-               private char ToTitleCase (char c)
-               {
-                       // Handle some Latin characters.
-                       switch (c) {
-                       case '\u01c4':
-                       case '\u01c5':
-                       case '\u01c6':
-                               return '\u01c5';
-                       case '\u01c7':
-                       case '\u01c8':
-                       case '\u01c9':
-                               return '\u01c8';
-                       case '\u01ca':
-                       case '\u01cb':
-                       case '\u01cc':
-                               return '\u01cb';
-                       case '\u01f1':
-                       case '\u01f2':
-                       case '\u01f3':
-                               return '\u01f2';
-                       }
-                       if ('\u2170' <= c && c <= '\u217f' || // Roman numbers
-                               '\u24d0' <= c && c <= '\u24e9')
-                               return c;
-                       return ToUpper (c);
-               }
-
-               public unsafe virtual string ToLower (string str)
-               {
-                       // In ICU (3.2) there are a few cases that one single
-                       // character results in multiple characters in e.g.
-                       // tr-TR culture. So I tried brute force conversion
-                       // test with single character as a string input, but 
-                       // there was no such conversion. So I think it just
-                       // invokes ToLower(char).
-                       if (str == null)
-                               throw new ArgumentNullException ("str");
-
-                       if (str.Length == 0)
-                               return String.Empty;
-
-                       string tmp = String.FastAllocateString (str.Length);
-                       fixed (char* source = str, dest = tmp) {
-
-                               char* destPtr = (char*)dest;
-                               char* sourcePtr = (char*)source;
-
-                               for (int n = 0; n < str.Length; n++) {
-                                       *destPtr = ToLower (*sourcePtr);
-                                       sourcePtr++;
-                                       destPtr++;
-                               }
-                       }
-                       return tmp;
-               }
-
-               public unsafe virtual string ToUpper (string str)
-               {
-                       // In ICU (3.2) there is a case that string
-                       // is handled beyond per-character conversion, but
-                       // it is only lt-LT culture where MS.NET does not
-                       // handle any special transliteration. So I keep
-                       // ToUpper() just as character conversion.
-                       if (str == null)
-                               throw new ArgumentNullException ("str");
-
-                       if (str.Length == 0)
-                               return String.Empty;
-
-                       string tmp = String.FastAllocateString (str.Length);
-                       fixed (char* source = str, dest = tmp) {
-
-                               char* destPtr = (char*)dest;
-                               char* sourcePtr = (char*)source;
-
-                               for (int n = 0; n < str.Length; n++) {
-                                       *destPtr = ToUpper (*sourcePtr);
-                                       sourcePtr++;
-                                       destPtr++;
-                               }
-                       }
-                       return tmp;
-               }
-
-               [ComVisible (false)]
-               public static TextInfo ReadOnly (TextInfo textInfo)
-               {
-                       if (textInfo == null)
-                               throw new ArgumentNullException ("textInfo");
-
-                       TextInfo ti = new TextInfo (textInfo);
-                       ti.m_isReadOnly = true;
-                       return ti;
-               }
-
-               /* IDeserialization interface */
-               [MonoTODO]
-               void IDeserializationCallback.OnDeserialization(object sender)
-               {
-                       // FIXME: we need to re-create "data" in order to get most properties working
-               }
-
-               /* IClonable */
-               [ComVisible (false)]
-               public virtual object Clone ()
-               {
-                       return new TextInfo (this);
-               }
-
-               internal int GetCaseInsensitiveHashCode (string str)
-               {
-                       return StringComparer.CurrentCultureIgnoreCase.GetHashCode (str);
-               }
-
-               internal static unsafe int GetHashCodeOrdinalIgnoreCase (string s)
-               {
-                       var length = s.Length;
-                       fixed (char * c = s) {
-                               char * cc = c;
-                               char * end = cc + length - 1;
-                               int h = 0;
-                               for (;cc < end; cc += 2) {
-                                       h = (h << 5) - h + Char.ToUpperInvariant (*cc);
-                                       h = (h << 5) - h + Char.ToUpperInvariant (cc [1]);
-                               }
-                               ++end;
-                               if (cc < end)
-                                       h = (h << 5) - h + Char.ToUpperInvariant (*cc);
-                               return h;
-                       }
-               }
-
-               internal static unsafe int CompareOrdinalIgnoreCase(String str1, String str2)
-               {
-                       return CompareOrdinalIgnoreCaseEx (str1, 0, str2, 0, str1.Length, str2.Length);
-               }
-
-               internal static int CompareOrdinalIgnoreCaseEx (String strA, int indexA, String strB, int indexB, int lenA, int lenB)
-               {
-                       return CompareOrdinalCaseInsensitiveUnchecked (strA, indexA, lenA, strB, indexB, lenB);
-               }
-
-               static unsafe int CompareOrdinalCaseInsensitiveUnchecked (String strA, int indexA, int lenA, String strB, int indexB, int lenB)
-               {
-                       if (strA == null) {
-                               return strB == null ? 0 : -1;
-                       }
-                       if (strB == null) {
-                               return 1;
-                       }
-                       int lengthA = Math.Min (lenA, strA.Length - indexA);
-                       int lengthB = Math.Min (lenB, strB.Length - indexB);
-
-                       if (lengthA == lengthB && Object.ReferenceEquals (strA, strB))
-                               return 0;
-
-                       fixed (char* aptr = strA, bptr = strB) {
-                               char* ap = aptr + indexA;
-                               char* end = ap + Math.Min (lengthA, lengthB);
-                               char* bp = bptr + indexB;
-                               while (ap < end) {
-                                       if (*ap != *bp) {
-                                               char c1 = Char.ToUpperInvariant (*ap);
-                                               char c2 = Char.ToUpperInvariant (*bp);
-                                               if (c1 != c2)
-                                                       return c1 - c2;
-                                       }
-                                       ap++;
-                                       bp++;
-                               }
-                               return lengthA - lengthB;
-                       }
-               }
-
-               internal static unsafe int LastIndexOfStringOrdinalIgnoreCase(String source, String value, int startIndex, int count)
-               {
-                       int valueLen = value.Length;
-                       if (count < valueLen)
-                               return -1;
-
-                       if (valueLen == 0)
-                               return startIndex;
-
-                       fixed (char* thisptr = source, valueptr = value) {
-                               char* ap = thisptr + startIndex - valueLen + 1;
-                               char* thisEnd = ap - count + valueLen - 1;
-                               while (ap != thisEnd) {
-                                       for (int i = 0; i < valueLen; i++) {
-                                               if (Char.ToUpperInvariant (ap[i]) != Char.ToUpperInvariant (valueptr[i]))
-                                                       goto NextVal;
-                                       }
-                                       return (int)(ap - thisptr);
-                                       NextVal:
-                                       ap--;
-                               }
-                       }
-                       return -1;
-               }
-
-               internal static int IndexOfStringOrdinalIgnoreCase(String source, String value, int startIndex, int count)
-               {
-            Contract.Assert(source != null, "[TextInfo.IndexOfStringOrdinalIgnoreCase] Caller should've validated source != null");
-            Contract.Assert(value != null, "[TextInfo.IndexOfStringOrdinalIgnoreCase] Caller should've validated value != null");
-            Contract.Assert(startIndex + count <= source.Length, "[TextInfo.IndexOfStringOrdinalIgnoreCase] Caller should've validated startIndex + count <= source.Length");
-
-            // We return 0 if both inputs are empty strings
-            if (source.Length == 0 && value.Length == 0)
-            {
-                return 0;
-            }
-
-            // the search space within [source] starts at offset [startIndex] inclusive and includes
-            // [count] characters (thus the last included character is at index [startIndex + count -1]
-            // [end] is the index of the next character after the search space
-            // (it points past the end of the search space)
-            int end = startIndex + count;
-            
-            // maxStartIndex is the index beyond which we never *start* searching, inclusive; in other words;
-            // a search could include characters beyond maxStartIndex, but we'd never begin a search at an 
-            // index strictly greater than maxStartIndex. 
-            int maxStartIndex = end - value.Length;
-
-            for (; startIndex <= maxStartIndex; startIndex++)
-            {
-                // We should always have the same or more characters left to search than our actual pattern
-                Contract.Assert(end - startIndex >= value.Length);
-                // since this is an ordinal comparison, we can assume that the lengths must match
-                if (CompareOrdinalIgnoreCaseEx(source, startIndex, value, 0, value.Length, value.Length) == 0)
-                {
-                    return startIndex;
-                }
-            }
-            
-            // Not found
-            return -1;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.IO/DirectoryNotFoundException.cs b/mcs/class/corlib/System.IO/DirectoryNotFoundException.cs
deleted file mode 100644 (file)
index 8a3392e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// System.IO.DirectoryNotFoundException.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.IO {
-
-       [Serializable]
-       [ComVisible (true)]
-       public class DirectoryNotFoundException : IOException {
-               
-               // Constructors
-               public DirectoryNotFoundException ()
-                       : base ("Directory not found")
-               {
-               }
-
-               public DirectoryNotFoundException (string message)
-                       : base (message)
-               {
-               }
-
-               public DirectoryNotFoundException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected DirectoryNotFoundException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.IO/DriveNotFoundException.cs b/mcs/class/corlib/System.IO/DriveNotFoundException.cs
deleted file mode 100644 (file)
index 52434e2..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// System.IO.DriveNotFoundException.cs
-//
-// Author:
-//   Kornél Pál <http://www.kornelpal.hu/>
-//
-// Copyright (C) 2006 Kornél Pál
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Runtime.Serialization;
-
-namespace System.IO
-{
-       [Serializable]
-       [ComVisible (true)]
-       public class DriveNotFoundException : IOException
-       {
-               private const int ErrorCode = unchecked((int)0x80070003);
-
-               // Constructors
-               public DriveNotFoundException ()
-                       : base ("Attempted to access a drive that is not available.")
-               {
-                       this.HResult = ErrorCode;
-               }
-
-               public DriveNotFoundException (string message)
-                       : base (message)
-               {
-                       this.HResult = ErrorCode;
-               }
-
-               public DriveNotFoundException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-                       this.HResult = ErrorCode;
-               }
-
-               protected DriveNotFoundException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.IO/EndOfStreamException.cs b/mcs/class/corlib/System.IO/EndOfStreamException.cs
deleted file mode 100644 (file)
index 4073c8b..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//     
-// System.IO.EndOfStreamException.cs
-//
-// Author:
-//     Duncan Mak (duncan@ximian.com)
-//
-// 2002 (C) Ximian, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.IO
-{
-          [Serializable]
-          [ComVisible (true)]
-          public class EndOfStreamException : IOException
-          {
-                        // Constructors
-                        public EndOfStreamException ()
-                                   : base (Locale.GetText ("Failed to read past end of stream."))
-                        {
-                        }
-
-                        public EndOfStreamException (string message)
-                                   : base (message)
-                        {
-                        }
-                        
-                        protected EndOfStreamException (SerializationInfo info,
-                                   StreamingContext context)
-                                   : base (info, context)
-                        {
-                        }
-
-                        public EndOfStreamException (string message, Exception innerException)
-                                   :base (message, innerException)
-                        {
-                        }
-                                   
-          }
-}
diff --git a/mcs/class/corlib/System.IO/FileLoadException.cs b/mcs/class/corlib/System.IO/FileLoadException.cs
deleted file mode 100644 (file)
index e978bac..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// System.IO.FileLoadException.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//   Duncan Mak (duncan@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Security;
-using System.Security.Permissions;
-using System.Text;
-using System.Runtime.InteropServices;
-
-namespace System.IO {
-
-       [Serializable]
-       [ComVisible (true)]
-       public class FileLoadException : IOException {
-
-               // Fields
-               const int Result = unchecked ((int)0x80070002);
-               string msg;
-               string fileName;
-               string fusionLog;
-               
-               // Constructors
-               public FileLoadException ()
-                       : base (Locale.GetText ("I/O Error"))
-               {
-                       HResult = Result;
-                       msg = Locale.GetText ("I/O Error");
-               }
-
-               public FileLoadException (string message)
-                       : base (message)
-               {
-                       HResult = Result;
-                       msg = message;
-               }
-
-               public FileLoadException (string message, string fileName)
-                       : base (message)
-               {
-                       HResult = Result;
-                       this.msg = message;
-                       this.fileName = fileName;
-               }               
-
-               public FileLoadException (string message, Exception inner)
-                       : base (message, inner)
-               {
-                       HResult = Result;
-                       msg = message;
-               }
-
-               public FileLoadException (string message, string fileName, Exception inner)
-                       : base (message, inner)
-               {
-                       HResult = Result;
-                       this.msg = message;
-                       this.fileName = fileName;
-               }
-
-               protected FileLoadException (SerializationInfo info, StreamingContext context)
-               {
-                       fileName = info.GetString ("FileLoad_FileName");
-                       fusionLog = info.GetString ("FileLoad_FusionLog");
-               }
-
-               // Properties
-               public override string Message {
-                       get { return msg; }
-               }
-
-               public string FileName
-               {
-                       get { return fileName; }
-               }
-               
-               public string FusionLog {
-                       // note: MS runtime throws a SecurityException when the Exception is created
-                       // but a FileLoadException once the exception as been thrown. Mono always
-                       // throw a SecurityException in both case (anyway fusionLog is currently empty)
-                       [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
-                       get { return fusionLog; }
-               }
-
-               // Methods
-               public override void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       base.GetObjectData (info, context);
-                       info.AddValue ("FileLoad_FileName", fileName);
-                       info.AddValue ("FileLoad_FusionLog", fusionLog);
-               }
-
-               public override string ToString ()
-               {
-                       StringBuilder sb = new StringBuilder (GetType ().FullName);
-                       sb.AppendFormat (": {0}", msg);
-
-                       if (fileName != null)
-                               sb.AppendFormat (" : {0}", fileName);
-
-                       if (this.InnerException != null)
-                               sb.AppendFormat (" ----> {0}", InnerException);
-
-                       if (this.StackTrace != null) {
-                               sb.Append (Environment.NewLine);
-                               sb.Append (StackTrace);
-                       }
-
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.IO/FileNotFoundException.cs b/mcs/class/corlib/System.IO/FileNotFoundException.cs
deleted file mode 100644 (file)
index 0f12284..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-//
-// System.IO.FileNotFoundException.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//   Duncan Mak (duncan@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-using System.Text;
-using System.Runtime.InteropServices;
-
-namespace System.IO {
-
-       [Serializable]
-       [ComVisible (true)]
-       public class FileNotFoundException : IOException {
-
-               const int Result = unchecked ((int)0x80131621);
-
-               private string fileName;
-               private string fusionLog;
-
-               // Constructors
-               public FileNotFoundException ()
-                       : base (Locale.GetText ("Unable to find the specified file."))
-               {
-                       HResult = Result;
-               }
-
-               public FileNotFoundException (string message)
-                       : base (message)
-               {
-                       HResult = Result;
-               }
-
-               public FileNotFoundException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-                       HResult = Result;
-               }
-
-               public FileNotFoundException (string message, string fileName)
-                       : base (message)
-               {
-                       HResult = Result;
-                       this.fileName = fileName;
-               }
-
-               public FileNotFoundException (string message, string fileName, Exception innerException)
-                       : base (message, innerException)
-               {
-                       HResult = Result;
-                       this.fileName = fileName;
-               }
-
-               protected FileNotFoundException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-                       fileName = info.GetString ("FileNotFound_FileName");
-                       fusionLog = info.GetString ("FileNotFound_FusionLog");
-               }
-
-               public string FileName
-               {
-                       get { return fileName; }
-               }
-
-               public string FusionLog {
-                       // note: MS runtime throws a SecurityException when the Exception is created
-                       // but a FileLoadException once the exception as been thrown. Mono always
-                       // throw a SecurityException in both case (anyway fusionLog is currently empty)
-                       [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
-                       get { return fusionLog; }
-               }
-
-               public override string Message {
-                       get {
-                               if (base.message == null) {
-                                       if (fileName != null) {
-                                               string message = string.Format (
-                                                       "Could not load file or assembly '{0}' or one of"
-                                                       + " its dependencies. The system cannot find the"
-                                                       + " file specified.", fileName);
-                                               return message;
-                                       }
-                               }
-                               return base.message;
-                       }
-               }
-
-               public override void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       base.GetObjectData (info, context);
-                       info.AddValue ("FileNotFound_FileName", fileName);
-                       info.AddValue ("FileNotFound_FusionLog", fusionLog);
-               }
-
-               public override string ToString ()
-               {
-                       StringBuilder sb = new StringBuilder (GetType ().FullName);
-                       sb.AppendFormat (": {0}", Message);
-
-                       if (fileName != null && fileName.Length > 0) {
-                               sb.Append (Environment.NewLine);
-                               sb.AppendFormat ("File name: '{0}'", fileName);
-                       }
-
-                       if (this.InnerException != null)
-                               sb.AppendFormat (" ---> {0}", InnerException);
-
-                       if (this.StackTrace != null) {
-                               sb.Append (Environment.NewLine);
-                               sb.Append (StackTrace);
-                       }
-
-                       return sb.ToString ();
-               }
-       }
-}
index 1cc5364dfd5816548fa3f4f6647a6e35895287c3..610247d2e088429f6ca9d36eda5bbea5c5516218 100644 (file)
@@ -988,7 +988,7 @@ namespace System.IO
                        
                        if (count > 0) {
                                // Use the fastest method, all range checks has been done
-                               Buffer.BlockCopyInternal (buf, buf_offset, dest, dest_offset, count);
+                               Buffer.InternalBlockCopy (buf, buf_offset, dest, dest_offset, count);
                                buf_offset += count;
                        }
                        
diff --git a/mcs/class/corlib/System.IO/IOException.cs b/mcs/class/corlib/System.IO/IOException.cs
deleted file mode 100644 (file)
index e4c2def..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.IO.IOException.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.IO {
-       [Serializable]
-       [ComVisible (true)]
-       public class IOException : SystemException {
-
-               // Constructors
-               public IOException ()
-                       : base ("I/O Error")
-               {
-               }
-
-               public IOException (string message)
-                       : base (message)
-               {
-               }
-
-               public IOException (string message, Exception innerException)
-                       : base (message, innerException)
-               {
-               }
-
-               protected IOException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-               }
-
-               public IOException (string message, int hresult)
-                       : base (message)
-               {
-                       this.HResult = hresult;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.IO/PathTooLongException.cs b/mcs/class/corlib/System.IO/PathTooLongException.cs
deleted file mode 100644 (file)
index a856ea8..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//     
-// System.IO.PathTooLongException.cs
-//
-// Author:
-//     Duncan Mak (duncan@ximian.com)
-//
-// 2002 (C) Ximian, Inc. http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.IO
-{
-          [Serializable]
-          [ComVisible (true)]
-          public class PathTooLongException : IOException
-          {
-                        // Constructors
-                        public PathTooLongException ()
-                                   : base (Locale.GetText ("Pathname is longer than the maximum length"))
-                        {
-                        }
-
-                        public PathTooLongException (string message)
-                                   : base (message)
-                        {
-                        }
-                        
-                        protected PathTooLongException (SerializationInfo info,
-                                   StreamingContext context)
-                                   : base (info, context)
-                        {
-                        }
-
-                        public PathTooLongException (string message, Exception innerException)
-                                   :base (message, innerException)
-                        {
-                        }
-                                   
-          }
-}
index 647736bf203d01d6e5cd6baea01790d950502700..f3302e02b9ce491b7e06f8c4dd78eb2f92f13896 100644 (file)
@@ -358,8 +358,10 @@ namespace System.Reflection.Emit {
                                        return UnmanagedMarshal.DefineLPArrayInternal (subtype, sizeConst, sizeParamIndex);
                                else
                                        return UnmanagedMarshal.DefineLPArray (subtype);
+#if FEATURE_COMINTEROP
                        case UnmanagedType.SafeArray:
                                return UnmanagedMarshal.DefineSafeArray (subtype);
+#endif
                        case UnmanagedType.ByValArray:
                                if (!is_field)
                                        throw new ArgumentException ("Specified unmanaged type is only valid on fields");
@@ -367,8 +369,10 @@ namespace System.Reflection.Emit {
                                return UnmanagedMarshal.DefineByValArray (sizeConst);
                        case UnmanagedType.ByValTStr:
                                return UnmanagedMarshal.DefineByValTStr (sizeConst);
+#if FEATURE_COMINTEROP
                        case UnmanagedType.CustomMarshaler:
                                return UnmanagedMarshal.DefineCustom (marshalTypeRef, marshalCookie, marshalTypeName, Guid.Empty);
+#endif
                        default:
                                return UnmanagedMarshal.DefineUnmanagedMarshal ((UnmanagedType)utype);
                        }
index 7cf8c8a5717167a37f5c29d40678931067c77dfa..45b9a2caef31e8cfe4281e8147c7015b83a59ccf 100644 (file)
@@ -68,8 +68,13 @@ namespace System.Reflection.Emit {
                
                public UnmanagedType BaseType {
                        get {
-                               if (t == UnmanagedType.LPArray || t == UnmanagedType.SafeArray)
+                               if (t == UnmanagedType.LPArray)
                                        throw new ArgumentException ();
+
+#if FEATURE_COMINTEROP
+                               if (t == UnmanagedType.SafeArray)
+                                       throw new ArgumentException ();
+#endif
                                return tbase;
                        }
                }
@@ -97,15 +102,15 @@ namespace System.Reflection.Emit {
                public static UnmanagedMarshal DefineLPArray( UnmanagedType elemType) {
                        return new UnmanagedMarshal (UnmanagedType.LPArray, elemType);
                }
-
+#if FEATURE_COMINTEROP
                public static UnmanagedMarshal DefineSafeArray( UnmanagedType elemType) {
                        return new UnmanagedMarshal (UnmanagedType.SafeArray, elemType);
                }
-
+#endif
                public static UnmanagedMarshal DefineUnmanagedMarshal( UnmanagedType unmanagedType) {
                        return new UnmanagedMarshal (unmanagedType, unmanagedType);
                }
-
+#if FEATURE_COMINTEROP
                internal static UnmanagedMarshal DefineCustom (Type typeref, string cookie, string mtype, Guid id) {
                        UnmanagedMarshal res = new UnmanagedMarshal (UnmanagedType.CustomMarshaler, UnmanagedType.CustomMarshaler);
                        res.mcookie = cookie;
@@ -117,7 +122,7 @@ namespace System.Reflection.Emit {
                                res.guid = id.ToString ();
                        return res;
                }
-               
+#endif         
                // sizeConst and sizeParamIndex can be -1 meaning they are not specified
                internal static UnmanagedMarshal DefineLPArrayInternal (UnmanagedType elemType, int sizeConst, int sizeParamIndex) {
                        UnmanagedMarshal res = new UnmanagedMarshal (UnmanagedType.LPArray, elemType);
index ad50e600bbb7a7c4024adb7285023a5bc8ea8444..0bba65f4693a630934df471360618a9d26b4b2f7 100644 (file)
@@ -514,6 +514,9 @@ namespace System.Reflection {
                                // ignore
                        }
 
+                       if (String.IsNullOrEmpty (Location))
+                               return null;
+
                        // Try the assembly directory
                        string location = Path.GetDirectoryName (Location);
                        string fullName = Path.Combine (location, Path.Combine (culture.Name, an.Name + ".dll"));
index 362c0405f2e00fb906cc4de04c3f62221c19c68c..8c6f92469380cc742e69ea9bce4f9d2d8003ba3c 100644 (file)
@@ -51,6 +51,12 @@ namespace System.Reflection {
                        }
                }
 
+               public override Module Module {
+                       get {
+                               return GetRuntimeModule ();
+                       }
+               }
+
                internal RuntimeType GetDeclaringTypeInternal ()
                {
                        return (RuntimeType) DeclaringType;
@@ -62,6 +68,11 @@ namespace System.Reflection {
                        }
                }
 
+               internal RuntimeModule GetRuntimeModule ()
+               {
+                       return GetDeclaringTypeInternal ().GetRuntimeModule ();
+               }
+
         #region ISerializable Implementation
         public void GetObjectData(SerializationInfo info, StreamingContext context)
         {
index 111387296cedafea98868ca522b631c8ff3bfdbe..491e2cbf33e1726fd2a7b8084908b6f89d40d320 100644 (file)
@@ -118,6 +118,12 @@ namespace System.Reflection {
                        }
                }
 
+               public override Module Module {
+                       get {
+                               return GetRuntimeModule ();
+                       }
+               }
+
                RuntimeType ReflectedTypeInternal {
                        get {
                                return (RuntimeType) ReflectedType;
@@ -148,6 +154,11 @@ namespace System.Reflection {
             return ReturnType.FormatTypeName() + " " + FormatNameAndSig(false);
         }
 
+               internal RuntimeModule GetRuntimeModule ()
+               {
+                       return ((RuntimeType)DeclaringType).GetRuntimeModule();
+               }
+
         #region ISerializable Implementation
         public void GetObjectData(SerializationInfo info, StreamingContext context)
         {
@@ -382,7 +393,7 @@ namespace System.Reflection {
                }
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               internal static extern DllImportAttribute GetDllImportAttribute (IntPtr mhandle);
+               internal extern void GetPInvoke (out PInvokeAttributes flags, out string entryPoint, out string dllName);
 
                internal object[] GetPseudoCustomAttributes ()
                {
@@ -404,10 +415,7 @@ namespace System.Reflection {
                        if ((info.iattrs & MethodImplAttributes.PreserveSig) != 0)
                                attrs [count ++] = new PreserveSigAttribute ();
                        if ((info.attrs & MethodAttributes.PinvokeImpl) != 0) {
-                               DllImportAttribute attr = GetDllImportAttribute (mhandle);
-                               if ((info.iattrs & MethodImplAttributes.PreserveSig) != 0)
-                                       attr.PreserveSig = true;
-                               attrs [count ++] = attr;
+                               attrs [count ++] = DllImportAttribute.GetCustomAttribute (this);
                        }
 
                        return attrs;
diff --git a/mcs/class/corlib/System.Runtime.ConstrainedExecution/CER.cs b/mcs/class/corlib/System.Runtime.ConstrainedExecution/CER.cs
deleted file mode 100644 (file)
index ba07f91..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.Runtime.ConstrainedExecution.Consistency.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-
-namespace System.Runtime.ConstrainedExecution {
-
-       [Serializable]
-        public enum Cer {
-                None,
-                MayFail,
-                Success
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.ConstrainedExecution/ChangeLog b/mcs/class/corlib/System.Runtime.ConstrainedExecution/ChangeLog
deleted file mode 100644 (file)
index 115efbb..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-2008-04-02  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>
-
-       * ReliabilityContractAttribute.cs: Fix parameter names
-
-2005-10-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CriticialFinalizerObject.cs: Added [ReliabilityContract] to ctor.
-       * ReliabilityContractAttribute.cs: Removed (obsoleted) default ctor.
-
-2005-05-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CriticialFinalizerObject.cs: Changed ComVisible to true.
-       * ReliabilityContractAttribute.cs: Default constructor is obsolete.
-       Properties don't have setters.
-
-2005-03-04  Kazuki Oikawa  <kazuki@panicode.com>
-
-       * PrePrepareMethodAttribute.cs:
-       * ReliabilityContractAttribute.cs: Fixed attributes.
-
-2004-08-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CER.cs: Copied from System.Runtime.Reliability. Fixed attributes.
-       * Consistency.cs: Copied from System.Runtime.Reliability. Fixed 
-       attributes.
-       * PrePrepareMethodAttribute.cs: Copied from System.Runtime.Reliability.
-       Fixed attributes.
-       * CriticialFinalizerObject.cs: Added missing finalizer and attributes.
-       * ReliabilityContractAttribute.cs: Copied from System.Runtime.
-       Reliability. Fixed attributes.
-
-2004-08-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CriticalFinalizerObject.cs: Moved from System.Runtime.Reliability to
-       match Fx 2.0 beta 1.
diff --git a/mcs/class/corlib/System.Runtime.ConstrainedExecution/Consistency.cs b/mcs/class/corlib/System.Runtime.ConstrainedExecution/Consistency.cs
deleted file mode 100644 (file)
index fa3d687..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Runtime.ConstrainedExecution.Consistency.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-
-namespace System.Runtime.ConstrainedExecution {
-
-       [Serializable]
-        public enum Consistency {
-                MayCorruptAppDomain = 1,
-                MayCorruptInstance = 2, 
-                MayCorruptProcess = 0,
-                WillNotCorruptState = 3
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.ConstrainedExecution/CriticialFinalizerObject.cs b/mcs/class/corlib/System.Runtime.ConstrainedExecution/CriticialFinalizerObject.cs
deleted file mode 100644 (file)
index 412377a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Runtime.ConstrainedExecution.CriticalFinalizerObject class
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Runtime.ConstrainedExecution
-{
-       [ComVisible (true)]
-        public abstract class CriticalFinalizerObject
-        {
-               //
-               // WARNING: If you add any fields here, update the definition
-               // for the runtime structures as well
-               //
-               
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
-                protected CriticalFinalizerObject ()
-                {
-                }
-
-               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
-               ~CriticalFinalizerObject ()
-               {
-               }
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.ConstrainedExecution/PrePrepareMethodAttribute.cs b/mcs/class/corlib/System.Runtime.ConstrainedExecution/PrePrepareMethodAttribute.cs
deleted file mode 100644 (file)
index d7cb07d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-
-namespace System.Runtime.ConstrainedExecution
-{
-       [AttributeUsage ((AttributeTargets.Constructor | AttributeTargets.Method), Inherited=false)]
-        public sealed class PrePrepareMethodAttribute : Attribute
-        {
-                public PrePrepareMethodAttribute ()
-                {
-                }
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.ConstrainedExecution/ReliabilityContractAttribute.cs b/mcs/class/corlib/System.Runtime.ConstrainedExecution/ReliabilityContractAttribute.cs
deleted file mode 100644 (file)
index 8f191fd..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.ConstrainedExecution.ReliabilityContractAttribute.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-
-namespace System.Runtime.ConstrainedExecution
-{
-       [AttributeUsage ((AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct |
-               AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Interface), Inherited=false)]
-        public sealed class ReliabilityContractAttribute : Attribute
-        {
-                Consistency consistency;
-                Cer cer;
-
-               public ReliabilityContractAttribute (Consistency consistencyGuarantee, Cer cer)
-                {
-                        this.consistency = consistencyGuarantee;
-                        this.cer = cer;
-                }
-
-                public Cer Cer {
-                        get { return cer; }
-                }
-
-                public Consistency ConsistencyGuarantee {
-                       get { return consistency; }
-                }
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/BINDPTR.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/BINDPTR.cs
deleted file mode 100644 (file)
index bf88b9e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.BINDPTR.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Explicit, CharSet = CharSet.Unicode)]
-       public struct BINDPTR {
-               [FieldOffset (0)] 
-               public IntPtr lpfuncdesc;
-               [FieldOffset (0)]
-               public IntPtr lptcomp;
-               [FieldOffset (0)]
-               public IntPtr lpvardesc;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/BIND_OPTS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/BIND_OPTS.cs
deleted file mode 100644 (file)
index c3b9b0f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.BIND_OPTS.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential)]
-       public struct BIND_OPTS
-       {
-               public int cbStruct;
-               public int grfFlags;
-               public int grfMode;
-               public int dwTickCountDeadline;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/CALLCONV.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/CALLCONV.cs
deleted file mode 100644 (file)
index 7534760..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.CALLCONV.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable]
-       public enum CALLCONV
-       {
-               CC_CDECL = 1,
-               CC_PASCAL = 2,
-               CC_MSCPASCAL = 2,
-               CC_MACPASCAL = 3,
-               CC_STDCALL = 4,
-               CC_RESERVED = 5,
-               CC_SYSCALL = 6,
-               CC_MPWCDECL = 7,
-               CC_MPWPASCAL = 8,
-               CC_MAX = 9
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/CONNECTDATA.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/CONNECTDATA.cs
deleted file mode 100644 (file)
index f1b4957..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.CONNECTDATA.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct CONNECTDATA
-       {
-               [MarshalAs (UnmanagedType.Interface)]
-               public object pUnk;
-               public int dwCookie;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ChangeLog b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ChangeLog
deleted file mode 100644 (file)
index 650af5d..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-2008-04-02  Andreas Nahr  <ClassDevelopment@A-SoftTech.com>
-
-       * IEnumVARIANT.cs: Fix parameter names
-
-2007-08-10  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * ITypeInfo2.cs, ITypeLib2.cs : added missing 2.0 members.
-         It is so strange that many of them overlap the base interfaces.
-
-2007-08-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * IMoniker.cs ELEMDESC.cs VARDESC.cs IRunningObjectTable.cs :
-         cosmetic 2.0 API fixes.
-
-2005-09-21  Kornél Pál  <kornelpal@hotmail.com>
-
-       * IEnumConnections.cs, IEnumMoniker.cs, IEnumString.cs, IStream.cs,
-         ITypeInfo.cs, ITypeLib.cs:
-         Removed UnmanagedType_80 that was required because mcs bug #75945
-         was not discovered.
-
-2005-03-04  Kazuki Oikawa  <kazuki@panicode.com>
-
-       * IBindCtx.cs
-       * IEnumConnectionPoints.cs
-       * IEnumMoniker.cs
-       * IEnumString.cs
-       * IEnumVARIANT.cs
-       * IMoniker.cs
-       * IRunningObjectTable.cs: Added missing attributes and corrected the wrong declarations.
-
-2005-03-03  Kazuki Oikawa  <kazuki@panicode.com>
-
-       * IBindCtx.cs
-       * IConnectionPoint.cs
-       * IConnectionPointContainer.cs
-       * IEnumConnectionPoints.cs
-       * IEnumConnections.cs
-       * IEnumMoniker.cs
-       * IEnumString.cs
-       * IEnumVARIANT.cs
-       * IMoniker.cs
-       * IPersistFile.cs
-       * IRunningObjectTable.cs
-       * IStream.cs
-       * ITypeComp.cs
-       * ITypeInfo.cs
-       * ITypeInfo2.cs
-       * ITypeLib.cs
-       * ITypeLib2.cs
-       * EXCEPINFO.cs
-       * IDLDESC.cs
-       * TYPELIBATTR.cs
-       * VARDESC.cs
-       * INVOKEKIND.cs
-       * SYSKIND.cs: Added missing attributes and corrected wrong declaration.
-
-2005-02-26  Kazuki Oikawa  <kazuki@panicode.com>
-
-       * BINDPTR.cs
-       * BIND_OPTS.cs
-       * CALLCONV.cs
-       * CONNECTDATA.cs
-       * DESCKIND.cs
-       * DISPPARAMS.cs
-       * ELEMDESC.cs
-       * EXCEPINFO.cs
-       * FILETIME.cs
-       * FUNCDESC.cs
-       * FUNCFLAGS.cs
-       * FUNCKIND.cs
-       * IBindCtx.cs
-       * IConnectionPoint.cs
-       * IConnectionPointContainer.cs
-       * IDLDESC.cs
-       * IDLFLAG.cs
-       * IEnumConnectionPoints.cs
-       * IEnumConnections.cs
-       * IEnumMoniker.cs
-       * IEnumString.cs
-       * IEnumVARIANT.cs
-       * IMoniker.cs
-       * IMPLTYPEFLAGS.cs
-       * INVOKEKIND.cs
-       * IPersistFile.cs
-       * IRunningObjectTable.cs
-       * IStream.cs
-       * ITypeComp.cs
-       * ITypeInfo.cs
-       * ITypeInfo2.cs
-       * ITypeLib.cs
-       * ITypeLib2.cs
-       * LIBFLAGS.cs
-       * PARAMDESC.cs
-       * PARAMFLAG.cs
-       * STATSTG.cs
-       * SYSKIND.cs
-       * TYPEATTR.cs
-       * TYPEDESC.cs
-       * TYPEFLAGS.cs
-       * TYPEKIND.cs
-       * TYPELIBATTR.cs
-       * VARDESC.cs
-       * VARFLAGS.cs
-       * VARKIND.cs: Added
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/DESCKIND.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/DESCKIND.cs
deleted file mode 100644 (file)
index 0fbd696..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.DESCKIND.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-
-       [Serializable]
-       public enum DESCKIND {
-               DESCKIND_NONE = 0,
-               DESCKIND_FUNCDESC = 1,
-               DESCKIND_VARDESC = 2,
-               DESCKIND_TYPECOMP = 3,
-               DESCKIND_IMPLICITAPPOBJ = 4,
-               DESCKIND_MAX = 5
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/DISPPARAMS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/DISPPARAMS.cs
deleted file mode 100644 (file)
index a8518e5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.DISPPARAMS.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct DISPPARAMS {
-               public IntPtr rgvarg;
-               public IntPtr rgdispidNamedArgs;
-               public int cArgs;
-               public int cNamedArgs;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ELEMDESC.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ELEMDESC.cs
deleted file mode 100644 (file)
index 56429a7..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.ELEMDESC.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct ELEMDESC
-       {
-               public TYPEDESC tdesc;
-               public DESCUNION desc;
-
-               [StructLayout (LayoutKind.Explicit, CharSet = CharSet.Unicode)]
-               public struct DESCUNION
-               {
-                       [FieldOffset (0)]
-                       public IDLDESC idldesc;
-                       [FieldOffset (0)]
-                       public PARAMDESC paramdesc;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/EXCEPINFO.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/EXCEPINFO.cs
deleted file mode 100644 (file)
index d30f264..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.EXCEPINFO.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-#if !FULL_AOT_RUNTIME
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct EXCEPINFO {
-               public short wCode;
-               public short wReserved;
-               [MarshalAs (UnmanagedType.BStr)]
-               public string bstrSource;
-               [MarshalAs (UnmanagedType.BStr)]
-               public string bstrDescription;
-               [MarshalAs (UnmanagedType.BStr)]
-               public string bstrHelpFile;
-               public int dwHelpContext;
-               public IntPtr pvReserved;
-               public IntPtr pfnDeferredFillIn;
-               public int scode;
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FILETIME.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FILETIME.cs
deleted file mode 100644 (file)
index 1a6b08b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.FILETIME.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential)]
-       public struct FILETIME
-       {
-               public int dwLowDateTime;
-               public int dwHighDateTime;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCDESC.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCDESC.cs
deleted file mode 100644 (file)
index 8276293..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.FUNCDESC.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential)]
-       public struct FUNCDESC
-       {
-               public int memid;
-               public IntPtr lprgscode;
-               public IntPtr lprgelemdescParam;
-               public FUNCKIND funckind;
-               public INVOKEKIND invkind;
-               public CALLCONV callconv;
-               public short cParams;
-               public short cParamsOpt;
-               public short oVft;
-               public short cScodes;
-               public ELEMDESC elemdescFunc;
-               public short wFuncFlags;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCFLAGS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCFLAGS.cs
deleted file mode 100644 (file)
index 10f165f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.FUNCFLAGS.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Flags, Serializable]
-       public enum FUNCFLAGS
-       {
-               FUNCFLAG_FRESTRICTED = 1,
-               FUNCFLAG_FSOURCE = 2,
-               FUNCFLAG_FBINDABLE = 4,
-               FUNCFLAG_FREQUESTEDIT = 8,
-               FUNCFLAG_FDISPLAYBIND = 16,
-               FUNCFLAG_FDEFAULTBIND = 32,
-               FUNCFLAG_FHIDDEN = 64,
-               FUNCFLAG_FUSESGETLASTERROR = 128,
-               FUNCFLAG_FDEFAULTCOLLELEM = 256,
-               FUNCFLAG_FUIDEFAULT = 512,
-               FUNCFLAG_FNONBROWSABLE = 1024,
-               FUNCFLAG_FREPLACEABLE = 2048,
-               FUNCFLAG_FIMMEDIATEBIND = 4096
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCKIND.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/FUNCKIND.cs
deleted file mode 100644 (file)
index 38abc1b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.FUNCKIND.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable]
-       public enum FUNCKIND
-       {
-               FUNC_VIRTUAL = 0,
-               FUNC_PUREVIRTUAL = 1,
-               FUNC_NONVIRTUAL = 2,
-               FUNC_STATIC = 3,
-               FUNC_DISPATCH = 4
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IBindCtx.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IBindCtx.cs
deleted file mode 100644 (file)
index 49d9c04..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IBindCtx.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("0000000e-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IBindCtx
-       {
-               void RegisterObjectBound ([MarshalAs(UnmanagedType.Interface)] object punk);
-               void RevokeObjectBound ([MarshalAs(UnmanagedType.Interface)] object punk);
-               void ReleaseBoundObjects ();
-               void SetBindOptions ([In] ref BIND_OPTS pbindopts);
-               void GetBindOptions (ref BIND_OPTS pbindopts);
-               void GetRunningObjectTable (out IRunningObjectTable pprot);
-               void RegisterObjectParam ([MarshalAs (UnmanagedType.LPWStr)] string pszKey, [MarshalAs (UnmanagedType.Interface)] object punk);
-               void GetObjectParam ([MarshalAs (UnmanagedType.LPWStr)] string pszKey, [MarshalAs (UnmanagedType.Interface)] out object ppunk);
-               void EnumObjectParam (out IEnumString ppenum);
-               [PreserveSig]
-               int RevokeObjectParam ([MarshalAs(UnmanagedType.LPWStr)] string pszKey);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IConnectionPoint.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IConnectionPoint.cs
deleted file mode 100644 (file)
index 68d9175..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IConnectionPoint.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("b196b286-bab4-101a-b69c-00aa00341d07")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IConnectionPoint
-       {
-               void GetConnectionInterface (out Guid pIID);
-               void GetConnectionPointContainer (out IConnectionPointContainer ppCPC);
-               void Advise ([MarshalAs(UnmanagedType.Interface)] object pUnkSink, out int pdwCookie);
-               void Unadvise (int dwCookie);
-               void EnumConnections (out IEnumConnections ppEnum);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IConnectionPointContainer.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IConnectionPointContainer.cs
deleted file mode 100644 (file)
index 92ab88e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IConnectionPointContainer.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("b196b284-bab4-101a-b69c-00aa00341d07")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IConnectionPointContainer
-       {
-               void EnumConnectionPoints (out IEnumConnectionPoints ppEnum);
-               void FindConnectionPoint ([In] ref Guid riid, out IConnectionPoint ppCP);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IDLDESC.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IDLDESC.cs
deleted file mode 100644 (file)
index 94aa57d..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IDLDESC.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct IDLDESC
-       {
-               public IntPtr dwReserved;
-               public IDLFLAG wIDLFlags;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IDLFLAG.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IDLFLAG.cs
deleted file mode 100644 (file)
index a2334df..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IDLFLAG.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Flags, Serializable]
-       public enum IDLFLAG
-       {
-               IDLFLAG_NONE = 0,
-               IDLFLAG_FIN = 1,
-               IDLFLAG_FOUT = 2,
-               IDLFLAG_FLCID = 4,
-               IDLFLAG_FRETVAL = 8
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumConnectionPoints.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumConnectionPoints.cs
deleted file mode 100644 (file)
index b6afc1d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("b196b285-bab4-101a-b69c-00aa00341d07")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IEnumConnectionPoints
-       {
-               [PreserveSigAttribute]
-               int Next (int celt, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex = 0)] IConnectionPoint[] rgelt, IntPtr pceltFetched);
-               [PreserveSigAttribute]
-               int Skip (int celt);
-               void Reset ();
-               void Clone (out IEnumConnectionPoints ppenum);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumConnections.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumConnections.cs
deleted file mode 100644 (file)
index 1980ea5..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IEnumConnections.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("b196b287-bab4-101a-b69c-00aa00341d07")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IEnumConnections
-       {
-               [PreserveSigAttribute]
-               int Next (int celt, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] CONNECTDATA[] rgelt, IntPtr pceltFetched);
-               [PreserveSigAttribute]
-               int Skip (int celt);
-               void Reset ();
-               void Clone (out IEnumConnections ppenum);
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumMoniker.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumMoniker.cs
deleted file mode 100644 (file)
index 3aa4c79..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IEnumMoniker.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("00000102-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IEnumMoniker
-       {
-               [PreserveSigAttribute]
-               int Next (int celt, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] IMoniker[] rgelt, IntPtr pceltFetched);
-               [PreserveSigAttribute]
-               int Skip (int celt);
-               void Reset ();
-               void Clone (out IEnumMoniker ppenum);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumString.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumString.cs
deleted file mode 100644 (file)
index b7563f9..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IEnumString.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("00000101-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IEnumString
-       {
-               [PreserveSigAttribute]
-               int Next (int celt, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex = 0)] string[] rgelt, IntPtr pceltFetched);
-               [PreserveSigAttribute]
-               int Skip (int celt);
-               void Reset ();
-               void Clone (out IEnumString ppenum);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumVARIANT.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IEnumVARIANT.cs
deleted file mode 100644 (file)
index b107944..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IEnumVARIANT.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("00020404-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IEnumVARIANT
-       {
-               [PreserveSigAttribute]
-               int Next (int celt, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex=0)] object[] rgVar, IntPtr pceltFetched);
-               [PreserveSigAttribute]
-               int Skip (int celt);
-               [PreserveSigAttribute]
-               int Reset ();
-               IEnumVARIANT Clone ();
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IMPLTYPEFLAGS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IMPLTYPEFLAGS.cs
deleted file mode 100644 (file)
index ff3375e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Flags, Serializable]
-       public enum IMPLTYPEFLAGS
-       {
-               IMPLTYPEFLAG_FDEFAULT = 1,
-               IMPLTYPEFLAG_FSOURCE = 2,
-               IMPLTYPEFLAG_FRESTRICTED = 4,
-               IMPLTYPEFLAG_FDEFAULTVTABLE = 8
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IMoniker.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IMoniker.cs
deleted file mode 100644 (file)
index ddf2b64..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IMoniker.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("0000000f-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IMoniker
-       {
-               void GetClassID (out Guid pClassID);
-               [PreserveSig]
-               int IsDirty ();
-               void Load (IStream pStm);
-               void Save (IStream pStm, [MarshalAs (UnmanagedType.Bool)] bool fClearDirty);
-               void GetSizeMax (out long pcbSize);
-               void BindToObject (IBindCtx pbc, IMoniker pmkToLeft, [In] ref Guid riidResult, [MarshalAs (UnmanagedType.Interface)] out object ppvResult);
-               void BindToStorage (IBindCtx pbc, IMoniker pmkToLeft, [In] ref Guid riid, [MarshalAs (UnmanagedType.Interface)] out object ppvObj);
-               void Reduce (IBindCtx pbc, int dwReduceHowFar, ref IMoniker ppmkToLeft, out IMoniker ppmkReduced);
-               void ComposeWith (IMoniker pmkRight, [MarshalAs (UnmanagedType.Bool)] bool fOnlyIfNotGeneric, out IMoniker ppmkComposite);
-               void Enum ([MarshalAs(UnmanagedType.Bool)] bool fForward, out IEnumMoniker ppenumMoniker);
-               [PreserveSig]
-               int IsEqual (IMoniker pmkOtherMoniker);
-               void Hash (out int pdwHash);
-               [PreserveSig]
-               int IsRunning (IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning);
-               void GetTimeOfLastChange (IBindCtx pbc, IMoniker pmkToLeft, out FILETIME pFileTime);
-               void Inverse (out IMoniker ppmk);
-               void CommonPrefixWith (IMoniker pmkOther, out IMoniker ppmkPrefix);
-               void RelativePathTo (IMoniker pmkOther, out IMoniker ppmkRelPath);
-               void GetDisplayName (IBindCtx pbc, IMoniker pmkToLeft, [MarshalAs (UnmanagedType.LPWStr)] out string ppszDisplayName);
-               void ParseDisplayName (IBindCtx pbc, IMoniker pmkToLeft, [MarshalAs (UnmanagedType.LPWStr)] string pszDisplayName, out int pchEaten, out IMoniker ppmkOut);
-               [PreserveSig]
-               int IsSystemMoniker (out int pdwMksys);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/INVOKEKIND.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/INVOKEKIND.cs
deleted file mode 100644 (file)
index 348e335..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.INVOKEKIND.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Flags]
-       [Serializable]
-       public enum INVOKEKIND {
-               INVOKE_FUNC = 1,
-               INVOKE_PROPERTYGET = 2,
-               INVOKE_PROPERTYPUT = 4,
-               INVOKE_PROPERTYPUTREF = 8
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IPersistFile.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IPersistFile.cs
deleted file mode 100644 (file)
index 24e97a0..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IPersistFile.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("0000010b-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IPersistFile
-       {
-               void GetClassID (out Guid pClassID);
-               [PreserveSig]
-               int IsDirty ();
-               void Load ([MarshalAs(UnmanagedType.LPWStr)] string pszFileName, int dwMode);
-               void Save ([MarshalAs (UnmanagedType.LPWStr)] string pszFileName, [MarshalAs (UnmanagedType.Bool)] bool fRemember);
-               void SaveCompleted ([MarshalAs (UnmanagedType.LPWStr)]string pszFileName);
-               void GetCurFile ([MarshalAs(UnmanagedType.LPWStr)] out string ppszFileName);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IRunningObjectTable.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IRunningObjectTable.cs
deleted file mode 100644 (file)
index 52e37a0..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IRunningObjectTable.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("00000010-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IRunningObjectTable
-       {
-               int Register (int grfFlags, [MarshalAs (UnmanagedType.Interface)] object punkObject, IMoniker pmkObjectName);
-               void Revoke (int dwRegister);
-               [PreserveSig]
-               int IsRunning (IMoniker pmkObjectName);
-               [PreserveSig]
-               int GetObject (IMoniker pmkObjectName, [MarshalAs (UnmanagedType.Interface)] out object ppunkObject);
-               void NoteChangeTime (int dwRegister, ref FILETIME pfiletime);
-               [PreserveSig]
-               int GetTimeOfLastChange (IMoniker pmkObjectName, out FILETIME pfiletime);
-               void EnumRunning (out IEnumMoniker ppenumMoniker);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IStream.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/IStream.cs
deleted file mode 100644 (file)
index 78cccb0..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.IStream.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Runtime.InteropServices.ComTypes;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("0000000c-0000-0000-c000-000000000046")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface IStream
-       {
-               void Read ([Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pv, int cb, IntPtr pcbRead);
-               void Write ([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pv, int cb, IntPtr pcbWritten);
-               void Seek (long dlibMove, int dwOrigin, IntPtr plibNewPosition);
-               void SetSize (long libNewSize);
-               void CopyTo (IStream pstm, long cb, IntPtr pcbRead, IntPtr pcbWritten);
-               void Commit (int grfCommitFlags);
-               void Revert ();
-               void LockRegion (long libOffset, long cb, int dwLockType);
-               void UnlockRegion (long libOffset, long cb, int dwLockType);
-               void Stat (out STATSTG pstatstg, int grfStatFlag);
-               void Clone (out IStream ppstm);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeComp.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeComp.cs
deleted file mode 100644 (file)
index ad65589..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.ITypeComp.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid("00020403-0000-0000-c000-000000000046")]
-       [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-       public interface ITypeComp {
-               void Bind([MarshalAs(UnmanagedType.LPWStr)] string szName, int lHashVal, short wFlags, out ITypeInfo ppTInfo, out DESCKIND pDescKind, out BINDPTR pBindPtr);
-               void BindType([MarshalAs(UnmanagedType.LPWStr)] string szName, int lHashVal, out ITypeInfo ppTInfo, out ITypeComp ppTComp);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeInfo.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeInfo.cs
deleted file mode 100644 (file)
index 607f044..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.ITypeInfo.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid("00020401-0000-0000-c000-000000000046")]
-       [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-       public interface ITypeInfo {
-               void GetTypeAttr (out IntPtr ppTypeAttr);
-               void GetTypeComp (out ITypeComp ppTComp);
-               void GetFuncDesc (int index, out IntPtr ppFuncDesc);
-               void GetVarDesc (int index, out IntPtr ppVarDesc);
-               void GetNames (int memid, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex=2)] string[] rgBstrNames, int cMaxNames, out int pcNames);
-               void GetRefTypeOfImplType (int index, out int href);
-               void GetImplTypeFlags (int index, out IMPLTYPEFLAGS pImplTypeFlags);
-               void GetIDsOfNames ([In, MarshalAs(UnmanagedType.LPArray, ArraySubType = (UnmanagedType.LPWStr), SizeParamIndex=1)] string[] rgszNames, int cNames, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex=1)] int[] pMemId);
-               void Invoke ([MarshalAs (UnmanagedType.IUnknown)] object pvInstance, int memid, short wFlags, ref DISPPARAMS pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, out int puArgErr);
-               void GetDocumentation (int index, out string strName, out string strDocString, out int dwHelpContext, out string strHelpFile);
-               void GetDllEntry (int memid, INVOKEKIND invKind, IntPtr pBstrDllName, IntPtr pBstrName, IntPtr pwOrdinal);
-               void GetRefTypeInfo (int hRef, out ITypeInfo ppTI);             
-               void AddressOfMember (int memid, INVOKEKIND invKind, out IntPtr ppv); 
-               void CreateInstance ([MarshalAs (UnmanagedType.IUnknown)] object pUnkOuter, [In] ref Guid riid, [MarshalAs (UnmanagedType.IUnknown)] out object ppvObj);
-               void GetMops (int memid, out string pBstrMops);
-               void GetContainingTypeLib (out ITypeLib ppTLB, out int pIndex);
-               [PreserveSig]
-               void ReleaseTypeAttr (IntPtr pTypeAttr);
-               [PreserveSig]
-               void ReleaseFuncDesc (IntPtr pFuncDesc);
-               [PreserveSig]
-               void ReleaseVarDesc (IntPtr pVarDesc);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeInfo2.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeInfo2.cs
deleted file mode 100644 (file)
index 1b9544f..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.ITypeInfo2.cs
-//
-// Author:
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid("00020412-0000-0000-C000-000000000046")]
-       [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-       public interface ITypeInfo2 : ITypeInfo
-       {
-               new void AddressOfMember (int memid, INVOKEKIND invKind, out IntPtr ppv);
-               new void CreateInstance ([MarshalAs (UnmanagedType.IUnknown)] object pUnkOuter, [In] ref Guid riid, [MarshalAs (UnmanagedType.IUnknown)] out object ppvObj);
-               new void GetContainingTypeLib (out ITypeLib ppTLB, out int pIndex);
-               new void GetDllEntry (int memid, INVOKEKIND invKind, IntPtr pBstrDllName, IntPtr pBstrName, IntPtr pwOrdinal);
-               new void GetDocumentation (int index, out string strName, out string strDocString, out int dwHelpContext, out string strHelpFile);
-               new void GetIDsOfNames ([In, MarshalAs(UnmanagedType.LPArray, ArraySubType = (UnmanagedType.LPWStr), SizeParamIndex=1)] string[] rgszNames, int cNames, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex=1)] int[] pMemId);
-
-               new void GetImplTypeFlags (int index, out IMPLTYPEFLAGS pImplTypeFlags);
-               void GetTypeKind (out TYPEKIND pTypeKind);
-               void GetTypeFlags (out int pTypeFlags);
-               new void GetFuncDesc (int index, out IntPtr ppFuncDesc);
-               new void GetMops (int memid, out string pBstrMops);
-               new void GetNames (int memid, [Out, MarshalAs (UnmanagedType.LPArray, SizeParamIndex=2)] string[] rgBstrNames, int cMaxNames, out int pcNames);
-               new void GetRefTypeInfo (int hRef, out ITypeInfo ppTI);
-               new void GetRefTypeOfImplType (int index, out int href);
-               new void GetTypeAttr (out IntPtr ppTypeAttr);
-               new void GetTypeComp (out ITypeComp ppTComp);
-               new void GetVarDesc (int index, out IntPtr ppVarDesc);
-               void GetFuncIndexOfMemId (int memid, INVOKEKIND invKind, out int pFuncIndex);
-               void GetVarIndexOfMemId (int memid, out int pVarIndex);
-               void GetCustData (ref Guid guid, out object pVarVal);
-               void GetFuncCustData(int index, ref Guid guid, out object pVarVal);
-               void GetParamCustData(int indexFunc, int indexParam, ref Guid guid, out object pVarVal);
-               void GetVarCustData(int index, ref Guid guid, out object pVarVal);
-               void GetImplTypeCustData(int index, ref Guid guid, out object pVarVal);
-               [LCIDConversion (1)]
-               void GetDocumentation2(int memid, out string pbstrHelpString, out int pdwHelpStringContext, out string pbstrHelpStringDll);
-               void GetAllCustData(IntPtr pCustData);
-               void GetAllFuncCustData(int index, IntPtr pCustData);
-               void GetAllParamCustData(int indexFunc, int indexParam, IntPtr pCustData);
-               void GetAllVarCustData(int index, IntPtr pCustData);
-               void GetAllImplTypeCustData(int index, IntPtr pCustData);
-               new void Invoke ([MarshalAs (UnmanagedType.IUnknown)] object pvInstance, int memid, short wFlags, ref DISPPARAMS pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, out int puArgErr);
-               [PreserveSig]
-               new void ReleaseTypeAttr (IntPtr pTypeAttr);
-               [PreserveSig]
-               new void ReleaseFuncDesc (IntPtr pFuncDesc);
-               [PreserveSig]
-               new void ReleaseVarDesc (IntPtr pVarDesc);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeLib.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeLib.cs
deleted file mode 100644 (file)
index 8f9330d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes.ITypeLib.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-using System;
-using System.Runtime.InteropServices.ComTypes;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid("00020402-0000-0000-c000-000000000046")]
-       [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-       public interface ITypeLib { 
-               [PreserveSig]
-               int GetTypeInfoCount ();
-               void GetTypeInfo (int index, out ITypeInfo ppTI);
-               void GetTypeInfoType (int index, out TYPEKIND pTKind);
-               void GetTypeInfoOfGuid (ref Guid guid, out ITypeInfo ppTInfo);
-               void GetLibAttr (out IntPtr ppTLibAttr);
-               void GetTypeComp (out ITypeComp ppTComp); 
-               void GetDocumentation (int index, out string strName, out string strDocString, out int dwHelpContext, out string strHelpFile);
-               [return: MarshalAs (UnmanagedType.Bool)]
-               bool IsName ([MarshalAs(UnmanagedType.LPWStr)] string szNameBuf, int lHashVal);
-               void FindName ([MarshalAs(UnmanagedType.LPWStr)] string szNameBuf, int lHashVal, [Out, MarshalAs (UnmanagedType.LPArray)] ITypeInfo[] ppTInfo, [Out, MarshalAs (UnmanagedType.LPArray)] int[] rgMemId, ref short pcFound);
-               [PreserveSig]
-               void ReleaseTLibAttr (IntPtr pTLibAttr);
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeLib2.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/ITypeLib2.cs
deleted file mode 100644 (file)
index 6aae3ee..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.ITypeLib2.cs
-//
-// Author:
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [ComImport]
-       [Guid ("00020411-0000-0000-C000-000000000046")]
-       [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-       public interface ITypeLib2 : ITypeLib
-       {
-               new void FindName ([MarshalAs(UnmanagedType.LPWStr)] string szNameBuf, int lHashVal, [Out, MarshalAs (UnmanagedType.LPArray)] ITypeInfo[] ppTInfo, [Out, MarshalAs (UnmanagedType.LPArray)] int[] rgMemId, ref short pcFound);
-               void GetCustData(ref Guid guid, out object pVarVal);
-               new void GetDocumentation (int index, out string strName, out string strDocString, out int dwHelpContext, out string strHelpFile);
-               new void GetLibAttr (out IntPtr ppTLibAttr);
-               void GetLibStatistics(IntPtr pcUniqueNames, out int pcchUniqueNames);
-               [LCIDConversion(1)]
-               void GetDocumentation2(int index, out string pbstrHelpString, out int pdwHelpStringContext, out string pbstrHelpStringDll);
-               void GetAllCustData(IntPtr pCustData);
-               new void GetTypeComp (out ITypeComp ppTComp);
-               new void GetTypeInfo (int index, out ITypeInfo ppTI);
-               new void GetTypeInfoOfGuid (ref Guid guid, out ITypeInfo ppTInfo);
-               new void GetTypeInfoType (int index, out TYPEKIND pTKind);
-               [return: MarshalAs (UnmanagedType.Bool)]
-               new bool IsName ([MarshalAs(UnmanagedType.LPWStr)] string szNameBuf, int lHashVal);
-               [PreserveSig]
-               new void ReleaseTLibAttr (IntPtr pTLibAttr);
-               // undocumented
-               [PreserveSig]
-               new int GetTypeInfoCount ();
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/LIBFLAGS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/LIBFLAGS.cs
deleted file mode 100644 (file)
index c25dbb2..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.LIBFLAGS.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Flags, Serializable]
-       public enum LIBFLAGS
-       {
-               LIBFLAG_FRESTRICTED = 1,
-               LIBFLAG_FCONTROL = 2,
-               LIBFLAG_FHIDDEN = 4,
-               LIBFLAG_FHASDISKIMAGE = 8
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/PARAMDESC.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/PARAMDESC.cs
deleted file mode 100644 (file)
index ba54d8b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.PARAMDESC.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct PARAMDESC
-       {
-               public IntPtr lpVarValue;
-               public PARAMFLAG wParamFlags;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/PARAMFLAG.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/PARAMFLAG.cs
deleted file mode 100644 (file)
index 5d2af1c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.PARAMFLAG.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Flags, Serializable]
-       public enum PARAMFLAG
-       {
-               PARAMFLAG_NONE = 0,
-               PARAMFLAG_FIN = 1,
-               PARAMFLAG_FOUT = 2,
-               PARAMFLAG_FLCID = 4,
-               PARAMFLAG_FRETVAL = 8,
-               PARAMFLAG_FOPT = 16,
-               PARAMFLAG_FHASDEFAULT = 32,
-               PARAMFLAG_FHASCUSTDATA = 64
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/STATSTG.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/STATSTG.cs
deleted file mode 100644 (file)
index ffc4c1a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.STATSTG.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct STATSTG
-       {
-               public string pwcsName;
-               public int type;
-               public long cbSize;
-               public FILETIME mtime;
-               public FILETIME ctime;
-               public FILETIME atime;
-               public int grfMode;
-               public int grfLocksSupported;
-               public Guid clsid;
-               public int grfStateBits;
-               public int reserved;
-       }
-
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/SYSKIND.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/SYSKIND.cs
deleted file mode 100644 (file)
index e854f09..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.SYSKIND.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable]
-       public enum SYSKIND
-       {
-               SYS_WIN16 = 0,
-               SYS_WIN32 = 1,
-               SYS_MAC = 2,
-               SYS_WIN64 = 3
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEATTR.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEATTR.cs
deleted file mode 100644 (file)
index 9ff0bc1..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.TYPEATTR.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct TYPEATTR
-       {
-               public const int MEMBER_ID_NIL = -1;
-
-               public Guid guid;
-               public int lcid;
-               public int dwReserved;
-               public int memidConstructor;
-               public int memidDestructor;
-               public IntPtr lpstrSchema;
-               public int cbSizeInstance;
-               public TYPEKIND typekind;
-               public short cFuncs;
-               public short cVars;
-               public short cImplTypes;
-               public short cbSizeVft;
-               public short cbAlignment;
-               public TYPEFLAGS wTypeFlags;
-               public short wMajorVerNum;
-               public short wMinorVerNum;
-               public TYPEDESC tdescAlias;
-               public IDLDESC idldescType;
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEDESC.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEDESC.cs
deleted file mode 100644 (file)
index ac11106..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.TYPEDESC.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct TYPEDESC
-       {
-               public IntPtr lpValue;
-               public short vt;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEFLAGS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEFLAGS.cs
deleted file mode 100644 (file)
index 1a25108..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.TYPEFLAGS.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable, Flags]
-       public enum TYPEFLAGS
-       {
-               TYPEFLAG_FAPPOBJECT = 1,
-               TYPEFLAG_FCANCREATE = 2,
-               TYPEFLAG_FLICENSED = 4,
-               TYPEFLAG_FPREDECLID = 8,
-               TYPEFLAG_FHIDDEN = 16,
-               TYPEFLAG_FCONTROL = 32,
-               TYPEFLAG_FDUAL = 64,
-               TYPEFLAG_FNONEXTENSIBLE = 128,
-               TYPEFLAG_FOLEAUTOMATION = 256,
-               TYPEFLAG_FRESTRICTED = 512,
-               TYPEFLAG_FAGGREGATABLE = 1024,
-               TYPEFLAG_FREPLACEABLE = 2048,
-               TYPEFLAG_FDISPATCHABLE = 4096,
-               TYPEFLAG_FREVERSEBIND = 8192,
-               TYPEFLAG_FPROXY = 16384
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEKIND.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPEKIND.cs
deleted file mode 100644 (file)
index 3156769..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// System.Runtime.InteropServices.ComTypes/TYPEKIND.cs
-//
-// Paolo Molaro (lupus@ximian.com)
-// Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002 Ximian, Inc.
-
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-
-       [Serializable]
-       public enum TYPEKIND { 
-               TKIND_ENUM = 0,
-               TKIND_RECORD = 1,
-               TKIND_MODULE = 2,
-               TKIND_INTERFACE = 3,
-               TKIND_DISPATCH = 4,
-               TKIND_COCLASS = 5,
-               TKIND_ALIAS = 6,
-               TKIND_UNION = 7,
-               TKIND_MAX = 8
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPELIBATTR.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/TYPELIBATTR.cs
deleted file mode 100644 (file)
index ceacf68..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.TYPELIBATTR.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable]
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct TYPELIBATTR
-       {
-               public Guid guid;
-               public int lcid;
-               public SYSKIND syskind;
-               public short wMajorVerNum;
-               public short wMinorVerNum;
-               public LIBFLAGS wLibFlags;
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARDESC.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARDESC.cs
deleted file mode 100644 (file)
index 08fb7e6..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.VARDESC.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct VARDESC
-       {
-               public int memid;
-               public string lpstrSchema;
-               public DESCUNION desc;
-               public ELEMDESC elemdescVar;
-               public short wVarFlags;
-               public VARKIND varkind;
-
-               [StructLayout (LayoutKind.Explicit, CharSet = CharSet.Unicode)]
-               public struct DESCUNION
-               {
-                       [FieldOffset (0)]
-                       public IntPtr lpvarValue;
-                       [FieldOffset (0)]
-                       public int oInst;
-               }
-       } 
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARFLAGS.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARFLAGS.cs
deleted file mode 100644 (file)
index 5ef0007..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.VARFLAGS.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable, Flags]
-       public enum VARFLAGS
-       {
-               VARFLAG_FREADONLY = 1,
-               VARFLAG_FSOURCE = 2,
-               VARFLAG_FBINDABLE = 4,
-               VARFLAG_FREQUESTEDIT = 8,
-               VARFLAG_FDISPLAYBIND = 16,
-               VARFLAG_FDEFAULTBIND = 32,
-               VARFLAG_FHIDDEN = 64,
-               VARFLAG_FRESTRICTED = 128,
-               VARFLAG_FDEFAULTCOLLELEM = 256,
-               VARFLAG_FUIDEFAULT = 512,
-               VARFLAG_FNONBROWSABLE = 1024,
-               VARFLAG_FREPLACEABLE = 2048,
-               VARFLAG_FIMMEDIATEBIND = 4096
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARKIND.cs b/mcs/class/corlib/System.Runtime.InteropServices.ComTypes/VARKIND.cs
deleted file mode 100644 (file)
index d104208..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// System.Runtime.InteropServices.ComTypes.VARKIND.cs
-//
-// Author:
-//   Kazuki Oikawa (kazuki@panicode.com)
-//
-
-
-namespace System.Runtime.InteropServices.ComTypes
-{
-       [Serializable]
-       public enum VARKIND
-       {
-               VAR_PERINSTANCE = 0,
-               VAR_STATIC = 1,
-               VAR_CONST = 2,
-               VAR_DISPATCH = 3
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.Expando/Changelog b/mcs/class/corlib/System.Runtime.InteropServices.Expando/Changelog
deleted file mode 100644 (file)
index 18f209a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-2007-08-08  Atsushi Enomoto  <atsushi@ximian.com>
-
-       * IExpando.cs : [ComVisible]
-
-2003-11-13  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
-
-       * IExpando.cs: Added attribute
-
-2002-11-20  Alejandro Sánchez Acosta  <raciel@es.gnu.org>
-
-       * IExpando.cs added.
diff --git a/mcs/class/corlib/System.Runtime.InteropServices.Expando/IExpando.cs b/mcs/class/corlib/System.Runtime.InteropServices.Expando/IExpando.cs
deleted file mode 100644 (file)
index 1a2b283..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Runtime.InteropServices.Expando.IExpando.cs
-//
-// Author:
-//    Alejandro Sánchez Acosta (raciel@es.gnu.org)
-// 
-// (C) Alejandro Sánchez Acosta
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Reflection;
-
-namespace System.Runtime.InteropServices.Expando
-{
-       [Guid("afbf15e6-c37c-11d2-b88e-00a0c9b471b8")]
-       [System.Runtime.InteropServices.ComVisible (true)]
-       public interface IExpando : IReflect
-       {
-               FieldInfo AddField (string name);
-
-               MethodInfo AddMethod (string name, Delegate method);
-
-               PropertyInfo AddProperty(string name);
-
-               void RemoveMember(MemberInfo m);
-       }
-}
index 70d5301222185c5ebccfbf1c17c8006a6a2fa9ca..eb324b5c64e688205b4672058ac9d312360929ed 100644 (file)
@@ -65,6 +65,11 @@ namespace System.Runtime.InteropServices.WindowsRuntime
                {
                        throw new NotImplementedException ();
                }
+
+               internal static bool ReportUnhandledError (Exception e)
+               {
+                       return false;
+               }
        }
 }
 
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/AllowReversePInvokeCallsAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/AllowReversePInvokeCallsAttribute.cs
deleted file mode 100644 (file)
index 60cfe51..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute.cs
-//
-// Copyrigh 2008 Novell, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Method, AllowMultiple = false, Inherited=false)]
-       public sealed class AllowReversePInvokeCallsAttribute : Attribute {
-               public AllowReversePInvokeCallsAttribute () { }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/AutomationProxyAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/AutomationProxyAttribute.cs
deleted file mode 100644 (file)
index b7277eb..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.AutomationProxyAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
-                        AttributeTargets.Interface, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class AutomationProxyAttribute : Attribute
-       {
-               bool val;
-               
-               public AutomationProxyAttribute (bool val)
-               {
-                       this.val = val;
-               }
-
-               public bool Value {
-                       get { return val; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/BestFitMappingAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/BestFitMappingAttribute.cs
deleted file mode 100644 (file)
index 758d35b..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// System.Runtime.InteropServices.BestFitMappingAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Novell, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | 
-                        AttributeTargets.Struct | AttributeTargets.Interface,
-                        Inherited=false)]
-       [ComVisible (true)]
-       public sealed class BestFitMappingAttribute : Attribute {
-               bool bfm;
-               
-               public BestFitMappingAttribute (bool BestFitMapping)
-               {
-                       this.bfm = BestFitMapping;
-               }
-
-               public bool ThrowOnUnmappableChar = false;
-               
-               public bool BestFitMapping {
-                       get {
-                               return bfm;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/CONNECTDATA.cs b/mcs/class/corlib/System.Runtime.InteropServices/CONNECTDATA.cs
deleted file mode 100644 (file)
index 50fedf6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Runtime.InteropServices.CONNECTDATA.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [Obsolete]
-       [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode)]
-       public struct CONNECTDATA
-       {
-               [MarshalAs (UnmanagedType.Interface)]
-               public object pUnk;
-               public int dwCookie;
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ClassInterfaceAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ClassInterfaceAttribute.cs
deleted file mode 100644 (file)
index 3600cb4..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// System.Runtime.InteropServices.ClassInterfaceAttribute.cs
-//
-// Author:
-//   Nick Drochak (ndrochak@gol.com)
-//
-// (C) 2002 Nick Drochak
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage(AttributeTargets.Assembly | 
-                       AttributeTargets.Class, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class ClassInterfaceAttribute : Attribute {
-               private ClassInterfaceType ciType;
-               
-               public ClassInterfaceAttribute ( short classInterfaceType ) {
-                       ciType = (ClassInterfaceType)classInterfaceType;
-               }
-
-               public ClassInterfaceAttribute ( ClassInterfaceType classInterfaceType ) {
-                       ciType = classInterfaceType;
-               }
-
-               public ClassInterfaceType Value {
-                       get {return ciType;}
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ClassInterfaceType.cs b/mcs/class/corlib/System.Runtime.InteropServices/ClassInterfaceType.cs
deleted file mode 100644 (file)
index 5d1d825..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.Runtime.InteropServices.ClassInterfaceType.cs
-//
-// Author:
-//   Nick Drochak (ndrochak@gol.com)
-//
-// (C) 2002 Nick Drochak
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Runtime.InteropServices {
-
-       [Serializable]
-       [ComVisible (true)]
-       public enum ClassInterfaceType 
-       {
-               None = 0,
-  
-               AutoDispatch = 1,
-               AutoDual = 2
-
-       } // ClassInterfaceType
-
-} // System.Runtime.InteropServices
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/CoClassAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/CoClassAttribute.cs
deleted file mode 100644 (file)
index f813a62..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Runtime.InteropServices.CoClassAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Interface, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class CoClassAttribute : Attribute
-       {
-
-               Type klass;
-               
-               public CoClassAttribute (Type coClass)
-               {
-                       klass = coClass;
-               }
-
-               public Type CoClass {
-                       get { return klass; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComAliasNameAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComAliasNameAttribute.cs
deleted file mode 100644 (file)
index 74c3dfb..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.ComAliasNameAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-       [AttributeUsage (AttributeTargets.Property | AttributeTargets.Field |
-                        AttributeTargets.Parameter | AttributeTargets.ReturnValue,
-                        Inherited=false)]
-       [ComVisible (true)]
-       public sealed class ComAliasNameAttribute : Attribute
-       {
-               string val;
-               
-               public ComAliasNameAttribute (string alias)
-               {
-                       val = alias;
-               }
-
-               public string Value {
-                       get { return val; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComCompatibleVersionAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComCompatibleVersionAttribute.cs
deleted file mode 100644 (file)
index 566f246..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.Runtime.InteropServices.ComCompatibleVersionAttribute.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2003 Andreas Nahr
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [AttributeUsage(AttributeTargets.Assembly,      Inherited = false)]
-       [ComVisible (true)]
-       public sealed class ComCompatibleVersionAttribute : Attribute
-       {
-               private int major;
-               private int minor;
-               private int build;
-               private int revision;
-
-               public ComCompatibleVersionAttribute (int major, int minor, int build, int revision)
-               {
-                       this.major = major;
-                       this.minor = minor;
-                       this.build = build;
-                       this.revision = revision;
-               }
-
-               public int MajorVersion {
-                       get { return major; }
-               }
-
-               public int MinorVersion {
-                       get { return minor; }
-               }
-
-               public int BuildNumber {
-                       get { return build; }
-               }
-
-               public int RevisionNumber {
-                       get { return revision; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComConversionLossAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComConversionLossAttribute.cs
deleted file mode 100644 (file)
index 6e633a5..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.Runtime.InteropServices.ComConversionLossAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.All, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class ComConversionLossAttribute : Attribute
-       {
-               public ComConversionLossAttribute ()
-               {
-               }
-       }
-       
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComDefaultInterfaceAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComDefaultInterfaceAttribute.cs
deleted file mode 100644 (file)
index 330255e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// System.Runtime.InteropServices.ComDefaultInterfaceAttribute
-//
-// Author:
-//   Kazuki Oikawa  (kazuki@panicode.com)
-//
-
-using System;
-
-namespace System.Runtime.InteropServices
-{
-       [AttributeUsage (AttributeTargets.Class, Inherited = false)]
-       [ComVisible (true)]
-       public sealed class ComDefaultInterfaceAttribute : Attribute
-       {
-               Type _type;
-
-               public ComDefaultInterfaceAttribute (Type defaultInterface)
-               {
-                       _type = defaultInterface;
-               }
-
-               public Type Value { get { return _type; }}
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComEventInterfaceAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComEventInterfaceAttribute.cs
deleted file mode 100644 (file)
index 3b7000b..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Runtime.InteropServices.ComEventInterfaceAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Interface, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class ComEventInterfaceAttribute : Attribute
-       {
-               Type si, ep;
-               
-               public ComEventInterfaceAttribute (Type SourceInterface,
-                                                  Type EventProvider)
-               {
-                       si = SourceInterface;
-                       ep = EventProvider;
-               }
-
-               public Type EventProvider {
-                       get { return ep; }
-               }
-
-               public Type SourceInterface {
-                       get { return si; }
-               }
-       }
-}
-               
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComImportAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComImportAttribute.cs
deleted file mode 100644 (file)
index 7bf558e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Runtime.InteropServices.ComImportAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright 2011 Xamarin Inc. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Class |
-                        AttributeTargets.Interface, Inherited=false)]
-       [ComVisible (true)]
-#if MONOTOUCH
-       // code with [ComImport] will assert when running on device (AOT)
-       // the linker removes the attribute but it's not used, by default, on 
-       // user code. ref: assistly #2357
-       internal
-#else
-       public 
-#endif
-       sealed class ComImportAttribute : Attribute {
-
-               public ComImportAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComInterfaceType.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComInterfaceType.cs
deleted file mode 100644 (file)
index edfe6af..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Runtime.InteropServices.ComInterfaceType.cs
-//
-// Author: Duncan Mak (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [Serializable]
-       [ComVisible (true)]
-       public enum ComInterfaceType
-       {
-               InterfaceIsDual = 0,
-               InterfaceIsIUnknown = 1,
-               InterfaceIsIDispatch = 2,
-               InterfaceIsIInspectable = 3
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComRegisterFunctionAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComRegisterFunctionAttribute.cs
deleted file mode 100644 (file)
index 5007b0f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Runtime.InteropServices.ComRegisterFunctionAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Method, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class ComRegisterFunctionAttribute : Attribute
-       {
-               public ComRegisterFunctionAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComSourceInterfacesAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComSourceInterfacesAttribute.cs
deleted file mode 100644 (file)
index e03f494..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// System.Runtime.InteropServices.ComSourceInterfacesAttribute.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
-       [AttributeUsage (AttributeTargets.Class, Inherited = true),ComVisible(true)]
-       public sealed class ComSourceInterfacesAttribute : Attribute
-       {
-               private string internalValue;
-
-               public ComSourceInterfacesAttribute (string sourceInterfaces)
-               {
-                       internalValue = sourceInterfaces;
-               }
-
-               public ComSourceInterfacesAttribute (Type sourceInterface)
-               {
-                       internalValue = sourceInterface.ToString ();
-               }
-
-               public ComSourceInterfacesAttribute (Type sourceInterface1, Type sourceInterface2)
-               {
-                       internalValue = sourceInterface1.ToString () + sourceInterface2.ToString ();
-               }
-
-               public ComSourceInterfacesAttribute (Type sourceInterface1, Type sourceInterface2, Type sourceInterface3)
-               {
-                       internalValue = sourceInterface1.ToString () + sourceInterface2.ToString () +
-                               sourceInterface3.ToString ();
-               }
-
-               public ComSourceInterfacesAttribute (Type sourceInterface1, Type sourceInterface2, Type sourceInterface3, Type sourceInterface4)
-               {
-                       internalValue = sourceInterface1.ToString () + sourceInterface2.ToString () +
-                               sourceInterface3.ToString () + sourceInterface4.ToString ();
-               }
-               
-               public string Value {
-                       get {return internalValue; } 
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComUnregisterFunctionAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComUnregisterFunctionAttribute.cs
deleted file mode 100644 (file)
index 86e0f4a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Runtime.InteropServices.ComUnregisterFunctionAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Method, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class ComUnregisterFunctionAttribute : Attribute
-       {
-               public ComUnregisterFunctionAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ComVisible.cs b/mcs/class/corlib/System.Runtime.InteropServices/ComVisible.cs
deleted file mode 100644 (file)
index efb88b0..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.Runtime.InteropServices.ComVisibleAttribute.cs
-//
-// Author:
-//   Nick Drochak (ndrochak@gol.com)
-//
-// (C) 2002 Nick Drochak
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
-               | AttributeTargets.Struct | AttributeTargets.Enum |
-               AttributeTargets.Method | AttributeTargets.Property |
-               AttributeTargets.Field | AttributeTargets.Interface |
-               AttributeTargets.Delegate, Inherited=false)]
-       [ComVisible (true)]
-       [StructLayout (LayoutKind.Sequential)]
-       public sealed class ComVisibleAttribute : Attribute {
-
-               private bool Visible = false;
-
-               public ComVisibleAttribute (bool visibility)
-               {
-                       Visible = visibility;
-               }
-
-               public bool Value {
-                       get { return Visible; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/DefaultCharSetAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/DefaultCharSetAttribute.cs
deleted file mode 100644 (file)
index c2baa7e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// System.Runtime.InteropServices.DefaultCharSetAttribute
-//
-// Author:
-//   Kazuki Oikawa  (kazuki@panicode.com)
-//
-
-using System;
-using System.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
-       [AttributeUsage (AttributeTargets.Module, Inherited = false)]
-       [ComVisible (true)]
-       public sealed class DefaultCharSetAttribute : Attribute
-       {
-               CharSet _set;
-
-               public DefaultCharSetAttribute (CharSet charSet)
-               {
-                       _set = charSet;
-               }
-
-               public CharSet CharSet { get { return _set; } }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/DefaultDllImportSearchPathsAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/DefaultDllImportSearchPathsAttribute.cs
deleted file mode 100644 (file)
index 863a1f0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// DefaultDllImportSearchPathsAttribute.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2015 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Method, AllowMultiple = false)]
-       [System.Runtime.InteropServices.ComVisible (false)]
-       public sealed class DefaultDllImportSearchPathsAttribute : Attribute
-       {
-               public DefaultDllImportSearchPathsAttribute(DllImportSearchPath paths)
-               {
-                       Paths = paths;
-               }
-
-               public DllImportSearchPath Paths { get; private set; }
-       }
-}
\ No newline at end of file
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/DispIdAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/DispIdAttribute.cs
deleted file mode 100644 (file)
index 488a440..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Runtime.InteropServices.DispIdAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Method | AttributeTargets.Property |
-                        AttributeTargets.Field | AttributeTargets.Event,
-                        Inherited=false)]
-       [ComVisible (true)]
-       public sealed class DispIdAttribute : Attribute
-       {
-               int id;
-               
-               public DispIdAttribute (int dispId)
-               {
-                       id = dispId;
-               }
-
-               public int Value {
-                       get { return id; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/DllImportAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/DllImportAttribute.cs
deleted file mode 100644 (file)
index 39ac038..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// System.Runtime.InteropServices.DllImportAttribute.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Method, Inherited=false)]
-       [StructLayout (LayoutKind.Sequential)]
-       public sealed class DllImportAttribute: Attribute {
-               #region Sync with reflection.h
-               public CallingConvention CallingConvention;
-               public CharSet CharSet;
-               private string Dll;
-               public string EntryPoint;
-               public bool ExactSpelling;
-               public bool PreserveSig;
-               public bool SetLastError;
-
-               public bool BestFitMapping;
-               public bool ThrowOnUnmappableChar;
-               #endregion
-
-               public string Value {
-                       get {return Dll;}
-               }
-               
-               public DllImportAttribute (string dllName) {
-                       Dll = dllName;
-               }
-
-               
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/DllImportSearchPath.cs b/mcs/class/corlib/System.Runtime.InteropServices/DllImportSearchPath.cs
deleted file mode 100644 (file)
index 9bfa505..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// DllImportSearchPath.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2015 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [Flags]
-       public enum DllImportSearchPath
-       {
-               UseDllDirectoryForDependencies = 0x100,
-               ApplicationDirectory = 0x200,
-               UserDirectories = 0x400,
-               System32 = 0x800,
-               SafeDirectories = 0x1000,
-               AssemblyDirectory = 0x2,
-               LegacyBehavior = 0x0
-       }
-}
\ No newline at end of file
index 0e61c36b7fd57029c7db92ec042e5a68b6a15426..c9ce2f0949f58cead92740654fb9180cc6593e16 100644 (file)
@@ -30,7 +30,7 @@
 
 using System;
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/FieldOffsetAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/FieldOffsetAttribute.cs
deleted file mode 100644 (file)
index 93ffec0..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices {
-       [ComVisible (true)]
-       [AttributeUsage (AttributeTargets.Field, Inherited=false)]
-       public sealed class FieldOffsetAttribute : Attribute {
-               private int val;
-               
-               public FieldOffsetAttribute( int offset) {
-                       val = offset;
-               }
-               public int Value {
-                       get {return val;}
-               }
-               
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/GuidAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/GuidAttribute.cs
deleted file mode 100644 (file)
index 894d767..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.Runtime.InteropServices.InAttribute.cs
-//
-// Author:
-//   Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | 
-                       AttributeTargets.Struct | AttributeTargets.Enum | 
-                       AttributeTargets.Interface | AttributeTargets.Delegate,
-                       Inherited=false)]
-       [StructLayout (LayoutKind.Sequential)]
-       public sealed class GuidAttribute : Attribute {
-               
-               private string guidValue;
-               
-               public GuidAttribute (string guid) {
-                       guidValue = guid;       
-               }
-               
-               public string Value {
-                       get {return guidValue;}
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/IDispatchImplAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/IDispatchImplAttribute.cs
deleted file mode 100644 (file)
index 6004233..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.Runtime.InteropServices.IDispatchImplAttribute.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.Serialization;
-
-namespace System.Runtime.InteropServices
-{
-       [Obsolete]
-       [ComVisible (true)]
-       [AttributeUsage (AttributeTargets.Class | AttributeTargets.Assembly, Inherited = false)]
-       public sealed class IDispatchImplAttribute : Attribute
-       {
-               private IDispatchImplType Impl;
-
-               public IDispatchImplAttribute (IDispatchImplType implType)
-               {
-                       Impl = implType;
-               }
-
-               public IDispatchImplAttribute (short implType)
-               {
-                       Impl = (IDispatchImplType)implType;
-               }
-
-               public IDispatchImplType Value {
-                       get { return Impl; } 
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/IDispatchImplType.cs b/mcs/class/corlib/System.Runtime.InteropServices/IDispatchImplType.cs
deleted file mode 100644 (file)
index 9b2db8b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Runtime.InteropServices.IDispatchImplType.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [Obsolete]
-       [ComVisible (true)]
-       [Serializable]
-       public enum IDispatchImplType
-       {
-               SystemDefinedImpl = 0,
-               InternalImpl = 1,
-               CompatibleImpl = 2
-       }
-}
index 36c663cb7de4d823e2e24c591665f7e597443617..8d23dc645970f3fb69e0bcd44bb7596bc07a96f5 100644 (file)
@@ -3,6 +3,9 @@
 // Eberhard Beilharz (eb1@sil.org)
 //
 // Copyright (C) 2011 SIL International
+
+#if FEATURE_COMINTEROP
+
 using System;
 using System.Runtime.CompilerServices;
 using System.Security;
@@ -36,3 +39,5 @@ namespace System.Runtime.InteropServices
                int GetHelpContext (out uint pdwHelpContext);
        }
 }
+
+#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ImportedFromTypeLibAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ImportedFromTypeLibAttribute.cs
deleted file mode 100644 (file)
index 2a26c78..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.ImportedFromTypeLibAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices {
-       
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Assembly, Inherited=false)]
-       public sealed class ImportedFromTypeLibAttribute : Attribute
-       {
-               string TlbFile;
-               public ImportedFromTypeLibAttribute (string tlbFile)
-               {
-                       TlbFile = tlbFile;
-               }
-
-               public string Value {
-                       get { return TlbFile; }
-               }
-       } 
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/InAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/InAttribute.cs
deleted file mode 100644 (file)
index 01e8001..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.Runtime.InteropServices.InAttribute.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Parameter, Inherited=false)]
-       public sealed class InAttribute : Attribute {
-               public InAttribute () {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/InterfaceTypeAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/InterfaceTypeAttribute.cs
deleted file mode 100644 (file)
index f409191..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Runtime.InteropServices.InterfaceTypeAttribute.cs
-//
-// Author:
-//   Kevin Winchester (kwin@ns.sympatico.ca)
-//
-// (C) 2002 Kevin Winchester
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage(AttributeTargets.Interface, Inherited=false)]
-       [StructLayout (LayoutKind.Sequential)]
-       public sealed class InterfaceTypeAttribute : Attribute {
-               
-               private ComInterfaceType intType;
-               
-               public InterfaceTypeAttribute (ComInterfaceType interfaceType){
-                       intType = interfaceType;
-               }
-
-               public InterfaceTypeAttribute (short interfaceType) {
-                       intType = (ComInterfaceType)interfaceType;
-               }
-               
-               public ComInterfaceType Value {
-                       get {return intType;}
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/LCIDConversionAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/LCIDConversionAttribute.cs
deleted file mode 100644 (file)
index ff370af..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Runtime.InteropServices.LCIDConversionAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Method, Inherited=false)]
-       public sealed class LCIDConversionAttribute : Attribute
-       {
-               int id;
-               
-               public LCIDConversionAttribute (int lcid)
-               {
-                       id = lcid;
-               }
-
-               public int Value {
-                       get { return id; }
-               }
-       }
-}
index c77857c9db4dd14fc838e65332c83d1da25f0958..a58aa28cc7820b420904bbce01d868ff453a7ecc 100644 (file)
@@ -3,6 +3,9 @@
 // Eberhard Beilharz (eb1@sil.org)
 //
 // Copyright (C) 2012 SIL International
+
+#if FEATURE_COMINTEROP
+
 using System;
 using System.Runtime.CompilerServices;
 using System.Security;
@@ -61,3 +64,5 @@ namespace System.Runtime.InteropServices
                #endregion
        }
 }
+
+#endif
index b95713d4e0d013c99a68a7bc78cb4a3587728605..1b650da569d25bda48ab02c01ab63dadb89c4d9e 100644 (file)
@@ -408,10 +408,14 @@ namespace System.Runtime.InteropServices
 #if !FULL_AOT_RUNTIME
                public static int GetHRForException (Exception e)
                {
+#if FEATURE_COMINTEROP
                        var errorInfo = new ManagedErrorInfo(e);
                        SetErrorInfo (0, errorInfo);
 
                        return e.hresult;
+#else                  
+                       return -1;
+#endif
                }
 
                [MonoTODO]
@@ -574,7 +578,7 @@ namespace System.Runtime.InteropServices
                        throw new NotImplementedException ();                   
                }
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
                [Obsolete]
                [MonoTODO]
                public static string GetTypeInfoName (UCOMITypeInfo pTI)
@@ -1503,6 +1507,7 @@ namespace System.Runtime.InteropServices
                        return null;
                }
 
+#if FEATURE_COMINTEROP
                [DllImport ("oleaut32.dll", CharSet=CharSet.Unicode, EntryPoint = "SetErrorInfo")]
                static extern int _SetErrorInfo (int dwReserved,
                        [MarshalAs(UnmanagedType.Interface)] IErrorInfo pIErrorInfo);
@@ -1551,7 +1556,7 @@ namespace System.Runtime.InteropServices
                        }
                        return retVal;
                }
-
+#endif
                public static Exception GetExceptionForHR (int errorCode)
                {
                        return GetExceptionForHR (errorCode, IntPtr.Zero);
@@ -1559,7 +1564,7 @@ namespace System.Runtime.InteropServices
 
                public static Exception GetExceptionForHR (int errorCode, IntPtr errorInfo)
                {
-#if !MOBILE
+#if FEATURE_COMINTEROP
                        IErrorInfo info = null;
                        if (errorInfo != (IntPtr)(-1)) {
                                if (errorInfo == IntPtr.Zero) {
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/OptionalAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/OptionalAttribute.cs
deleted file mode 100644 (file)
index 9aa7f2f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Parameter, Inherited=false)]
-       public sealed class OptionalAttribute : Attribute {
-               public OptionalAttribute () {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/OutAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/OutAttribute.cs
deleted file mode 100644 (file)
index a8ebb10..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Runtime.InteropServices.OutAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Parameter, Inherited=false)]
-       public sealed class OutAttribute : Attribute {
-
-               public OutAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/PreserveSigAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/PreserveSigAttribute.cs
deleted file mode 100644 (file)
index c675cdb..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-// System.Runtime.InteropServices.PreserveSigAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Method, Inherited=false)]
-       public sealed class PreserveSigAttribute : Attribute
-       {
-               public PreserveSigAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/PrimaryInteropAssemblyAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/PrimaryInteropAssemblyAttribute.cs
deleted file mode 100644 (file)
index 3e56417..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Assembly, Inherited=false
-               , AllowMultiple = true
-       )]
-       public sealed class PrimaryInteropAssemblyAttribute : Attribute
-       {
-               int major, minor;
-               
-               public PrimaryInteropAssemblyAttribute (int major, int minor)
-               {
-                       this.major = major;
-                       this.minor = minor;
-               }
-
-               public int MajorVersion {
-                       get { return major; }
-               }
-
-               public int MinorVersion {
-                       get { return minor; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/ProgIdAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/ProgIdAttribute.cs
deleted file mode 100644 (file)
index 4168f15..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.ProgIdAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Class, Inherited=false)]
-       public sealed class ProgIdAttribute : Attribute
-       {
-               string pid;
-               
-               public ProgIdAttribute (string progId)
-               {
-                       pid = progId;
-               }
-
-               public string Value {
-                       get { return pid; }
-               }
-       }
-
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/SetWin32ContextInIDispatchAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/SetWin32ContextInIDispatchAttribute.cs
deleted file mode 100644 (file)
index 694b265..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute.cs
-//
-// Author:
-//   Gert Driesen (drieseng@users.sourceforge.net)
-//
-// (C) Novell, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices 
-{
-       [Obsolete]
-       [ComVisible(true)]      
-       [AttributeUsage (AttributeTargets.Assembly, Inherited = false)]
-       public sealed class SetWin32ContextInIDispatchAttribute : Attribute
-       {
-               public SetWin32ContextInIDispatchAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/StructLayoutAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/StructLayoutAttribute.cs
deleted file mode 100644 (file)
index 2770391..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible (true)]
-       [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct,
-                        Inherited=false)]
-       public sealed class StructLayoutAttribute : Attribute {
-               public CharSet CharSet = CharSet.Auto;
-               public int Pack = 8;
-               public int Size = 0;
-               private LayoutKind lkind;
-               
-               public StructLayoutAttribute( short layoutKind) {
-                       lkind = (LayoutKind)layoutKind;
-               }
-               public StructLayoutAttribute( LayoutKind layoutKind) {
-                       lkind = layoutKind;
-               }
-               public LayoutKind Value {
-                       get {return lkind;}
-               }
-               
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeIdentifierAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeIdentifierAttribute.cs
deleted file mode 100644 (file)
index 94e66d9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// System.Runtime.InteropServices.TypeIdentifierAttribute.cs
-// 
-// Name: Rodrigo Kumpera <rkumpera@novell.com>
-// 
-//
-// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-       [AttributeUsageAttribute (AttributeTargets.Struct | AttributeTargets.Enum |
-                AttributeTargets.Interface | AttributeTargets.Delegate,
-               Inherited = false)]
-       public sealed class TypeIdentifierAttribute : Attribute {
-               string scope;
-               string identifier;
-
-               public TypeIdentifierAttribute ()
-               {
-               }
-
-               public TypeIdentifierAttribute (string scope, string identifier)
-               {
-                       this.scope = scope;
-                       this.identifier = identifier;
-               }               
-
-               public string Scope {
-                       get { return scope; }
-               }
-
-               public string Identifier {
-                       get { return identifier; }
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibFuncAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibFuncAttribute.cs
deleted file mode 100644 (file)
index 215efa6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Runtime.InteropServices.TypeLibFuncAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Method, Inherited=false)]
-       public sealed class TypeLibFuncAttribute : Attribute
-       {
-               TypeLibFuncFlags flags;
-               
-               public TypeLibFuncAttribute (short flags)
-               {
-                       this.flags = (TypeLibFuncFlags) flags;
-               }
-
-               public TypeLibFuncAttribute (TypeLibFuncFlags flags)
-               {
-                       this.flags = flags;
-               }
-
-               public TypeLibFuncFlags Value {
-                       get { return flags; }
-               }
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibFuncFlags.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibFuncFlags.cs
deleted file mode 100644 (file)
index b0dddbd..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// System.Runtime.InteropServices.TypeLibFuncFlags.cs
-// 
-// Name: Duncan Mak  (duncan@ximian.com)
-// 
-// (C) Ximian, Inc.
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [Flags] [Serializable]
-       public enum TypeLibFuncFlags {
-               FRestricted = 1,
-               FSource = 2,
-               FBindable = 4,
-               FRequestEdit = 8,
-               FDisplayBind = 16,
-               FDefaultBind = 32,
-               FHidden = 64,
-               FUsesGetLastError = 128,
-               FDefaultCollelem = 256,
-               FUiDefault = 512,
-               FNonBrowsable = 1024,
-               FReplaceable = 2048,
-               FImmediateBind = 4096,
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibImportClassAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibImportClassAttribute.cs
deleted file mode 100644 (file)
index 43eb92a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.Runtime.InteropServices.TypeLibImportClassAttribute.cs
-//
-// Author:
-//   Gert Driesen (drieseng@users.sourceforge.net)
-//
-// (C) 2005 Novell
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage(AttributeTargets.Interface, Inherited=false)]
-       public sealed class TypeLibImportClassAttribute : Attribute {
-               private string _importClass;
-               
-               public TypeLibImportClassAttribute (Type importClass) {
-                       _importClass = importClass.ToString ();
-               }
-
-               public string Value {
-                       get { return _importClass; }
-               }
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibTypeAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibTypeAttribute.cs
deleted file mode 100644 (file)
index 9a8a6a8..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// System.Runtime.InteropServices.TypeLibTypeAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct |
-                        AttributeTargets.Enum | AttributeTargets.Interface, Inherited=false)]
-       public sealed class TypeLibTypeAttribute : Attribute
-       {
-               TypeLibTypeFlags flags;
-               
-               public TypeLibTypeAttribute (short flags)
-               {
-                       this.flags = (TypeLibTypeFlags) flags;
-               }
-
-               public TypeLibTypeAttribute (TypeLibTypeFlags flags)
-               {
-                       this.flags = flags;
-               }
-
-               public TypeLibTypeFlags Value {
-                       get { return flags; }
-               }
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibTypeFlags.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibTypeFlags.cs
deleted file mode 100644 (file)
index 48e141b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// System.Runtime.InteropServices.TypeLibTypeFlags.cs
-// 
-// Name: Duncan Mak  (duncan@ximian.com)
-// 
-// (C) Ximian, Inc.
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-namespace System.Runtime.InteropServices {
-       [ComVisible(true)]
-       [Flags] [Serializable]
-       public enum TypeLibTypeFlags {
-               FAppObject = 1,
-               FCanCreate = 2,
-               FLicensed = 4,
-               FPreDeclId = 8,
-               FHidden= 16,
-               FControl = 32,
-               FDual = 64,
-               FNonExtensible = 128,
-               FOleAutomation = 256,
-               FRestricted = 512,
-               FAggregatable = 1024,
-               FReplaceable = 2048,
-               FDispatchable = 4096,
-               FReverseBind = 8192,
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibVarAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibVarAttribute.cs
deleted file mode 100644 (file)
index 595f9d8..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Runtime.InteropServices.TypeLibTypeAttribute.cs
-//
-// Name: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [ComVisible(true)]
-       [AttributeUsage (AttributeTargets.Field, Inherited=false)]
-       public sealed class TypeLibVarAttribute : Attribute
-       {
-               TypeLibVarFlags flags;
-               
-               public TypeLibVarAttribute (short flags)
-               {
-                       this.flags = (TypeLibVarFlags) flags;
-               }
-
-               public TypeLibVarAttribute (TypeLibVarFlags flags)
-               {
-                       this.flags = flags;
-               }
-
-               public TypeLibVarFlags Value {
-                       get { return flags; }
-               }
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibVarFlags.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibVarFlags.cs
deleted file mode 100644 (file)
index 09030d7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// System.Runtime.InteropServices.TypeLibVarFlags.cs
-// 
-// Name: Duncan Mak  (duncan@ximian.com)
-// 
-// (C) Ximian, Inc.
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-namespace System.Runtime.InteropServices {
-       
-       [ComVisible(true)]
-       [Flags] [Serializable]
-       public enum TypeLibVarFlags {
-               FReadOnly = 1,
-               FSource = 2,
-               FBindable = 4,
-               FRequestEdit = 8,
-               FDisplayBind = 16,
-               FDefaultBind = 32,
-               FHidden = 64,
-               FRestricted = 128,
-               FDefaultCollelem = 256,
-               FUiDefault = 512,
-               FNonBrowsable = 1024,
-               FReplaceable = 2048,
-               FImmediateBind = 4096,
-       }
-}
-#endif
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/TypeLibVersionAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/TypeLibVersionAttribute.cs
deleted file mode 100644 (file)
index e4a16bf..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Runtime.InteropServices.TypeLibVersionAttribute.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2003 Andreas Nahr
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.InteropServices
-{
-       [ComVisible(true)]
-       [AttributeUsage(AttributeTargets.Assembly, Inherited = false)]
-       public sealed class TypeLibVersionAttribute : Attribute
-       {
-               private int major;
-               private int minor;
-
-               public TypeLibVersionAttribute (int major, int minor)
-               {
-                       this.major = major;
-                       this.minor = minor;
-               }
-
-               public int MajorVersion {
-                       get { return major; }
-               }
-
-               public int MinorVersion {
-                       get { return minor; }
-               }
-       }
-}
-
-
index cd0e84f3fc81d116272581d4771f4e5d0532543b..0e4a5d4592f0e15ffc21580de6833c0ca67b0620 100644 (file)
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
index 8011610ab7bcf250fc236fa0a56ef2ab359d0523..d652123058a73830f002b67d6e42898e9ba47b90 100644 (file)
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
index bb669b78e0d47ed47cdcf9dcd2befe3b6f13b757..02f4a456d4b1d1eeedb8954afc4aadc3c435e04a 100644 (file)
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/UCOMIEnumConnections.cs b/mcs/class/corlib/System.Runtime.InteropServices/UCOMIEnumConnections.cs
deleted file mode 100644 (file)
index abfb10c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.Runtime.InteropServices.UCOMIEnumConnections.cs
-//
-// Author:
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !FULL_AOT_RUNTIME
-namespace System.Runtime.InteropServices
-{
-       [Obsolete]
-       [ComImport]
-       [Guid ("b196b287-bab4-101a-b69c-00aa00341d07")]
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       public interface UCOMIEnumConnections
-       {
-               [PreserveSig]
-               int Next (int celt, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] CONNECTDATA[] rgelt, out int pceltFetched);
-               [PreserveSig]
-               int Skip (int celt);
-               [PreserveSig]
-               void Reset ();
-               void Clone (out UCOMIEnumConnections ppenum);
-       }
-}
-#endif
index 12af145c4cd4ae22756c4f5cbc5eb7823fdc91d3..eb10fe08716812160c5daa133f4c5ce826f0c96a 100644 (file)
@@ -28,7 +28,7 @@
 //
 // (C) 2002 Ximian, Inc.
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
index a8b4a1600b6429d838223683ed21783147f38dd3..5d374f12ea93616af855dcbcadf642eccbf05b90 100644 (file)
@@ -28,7 +28,7 @@
 //
 // (C) 2002 Ximian, Inc.
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
index 2b9c1ccdc0da9ae69006d80cf71dc6e0b45217ec..46137121a6db1be7833f29f802bb59fbe4d425a3 100644 (file)
@@ -28,7 +28,7 @@
 //
 // (C) 2002 Ximian, Inc.
 
-#if !FULL_AOT_RUNTIME
+#if !MOBILE
 namespace System.Runtime.InteropServices
 {
        [Obsolete]
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/UnmanagedFunctionPointerAttribute.cs b/mcs/class/corlib/System.Runtime.InteropServices/UnmanagedFunctionPointerAttribute.cs
deleted file mode 100644 (file)
index 9b73299..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute.cs
-//
-// Author:
-//   Zoltan Varga (vargaz@gmail.com)
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Runtime.InteropServices {
-
-       [AttributeUsage (AttributeTargets.Delegate, Inherited = false,AllowMultiple=false),ComVisible(true)]
-       [StructLayout (LayoutKind.Sequential)]
-       public sealed class UnmanagedFunctionPointerAttribute: Attribute {
-               #region Sync with object-internals.h
-               private CallingConvention call_conv;
-               public CharSet CharSet;
-               public bool SetLastError;
-               public bool BestFitMapping;
-               public bool ThrowOnUnmappableChar;
-               #endregion
-
-               public CallingConvention CallingConvention {
-                       get {
-                               return call_conv;
-                       }
-               }
-               
-               public UnmanagedFunctionPointerAttribute (CallingConvention callingConvention) {
-                       this.call_conv = callingConvention;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/UnmanagedType.cs b/mcs/class/corlib/System.Runtime.InteropServices/UnmanagedType.cs
deleted file mode 100644 (file)
index b2fbb14..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// UnmanagedType.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Source file: all.xml
-// URL: http://devresource.hp.com/devresource/Docs/TechPapers/CSharp/all.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Runtime.InteropServices {
-
-
-       [ComVisible(true)]
-       [Serializable]
-       public enum UnmanagedType {
-
-               Bool = 2,
-               I1 = 3,
-               U1 = 4,
-               I2 = 5,
-               U2 = 6,
-               I4 = 7,
-               U4 = 8,
-               I8 = 9,
-               U8 = 10,
-               R4 = 11,
-               R8 = 12,
-               Currency = 15,
-               BStr = 19,
-               LPStr = 20,
-               LPWStr = 21,
-               LPTStr = 22,
-               ByValTStr = 23,
-               IUnknown = 25,
-               IDispatch = 26,
-               Struct = 27,
-               Interface = 28,
-               SafeArray = 29,
-               ByValArray = 30,
-               SysInt = 31,
-               SysUInt = 32,
-               VBByRefStr = 34,
-               AnsiBStr = 35,
-               TBStr = 36,
-               VariantBool = 37,
-               FunctionPtr = 38,
-               // LPVoid = 39,
-               AsAny = 40,
-               //RPrecise = 41,
-               LPArray = 42,
-               LPStruct = 43,
-               CustomMarshaler = 44,
-               Error = 45
-       } 
-
-} 
diff --git a/mcs/class/corlib/System.Runtime.InteropServices/VarEnum.cs b/mcs/class/corlib/System.Runtime.InteropServices/VarEnum.cs
deleted file mode 100644 (file)
index afca3f6..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.InteropServices {
-       [ComVisible(true)]
-       [Serializable]
-       public enum VarEnum {
-               VT_EMPTY = 0,
-               VT_NULL = 1,
-               VT_I2 = 2,
-               VT_I4 = 3,
-               VT_R4 = 4,
-               VT_R8 = 5,
-               VT_CY = 6,
-               VT_DATE = 7,
-               VT_BSTR = 8,
-               VT_DISPATCH = 9,
-               VT_ERROR = 10,
-               VT_BOOL = 11,
-               VT_VARIANT = 12,
-               VT_UNKNOWN = 13,
-               VT_DECIMAL = 14,
-               VT_I1 = 16,
-               VT_UI1 = 17,
-               VT_UI2 = 18,
-               VT_UI4 = 19,
-               VT_I8 = 20,
-               VT_UI8 = 21,
-               VT_INT = 22,
-               VT_UINT = 23,
-               VT_VOID = 24,
-               VT_HRESULT = 25,
-               VT_PTR = 26,
-               VT_SAFEARRAY = 27,
-               VT_CARRAY = 28,
-               VT_USERDEFINED = 29,
-               VT_LPSTR = 30,
-               VT_LPWSTR = 31,
-               VT_RECORD = 36,
-               VT_FILETIME = 64,
-               VT_BLOB = 65,
-               VT_STREAM = 66,
-               VT_STORAGE = 67,
-               VT_STREAMED_OBJECT = 68,
-               VT_STORED_OBJECT = 69,
-               VT_BLOB_OBJECT = 70,
-               VT_CF = 71,
-               VT_CLSID = 72,
-               VT_VECTOR = 4096,
-               VT_ARRAY = 8192,
-               VT_BYREF = 16384
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.Reliability/CER.cs b/mcs/class/corlib/System.Runtime.Reliability/CER.cs
deleted file mode 100644 (file)
index 3a80a16..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Runtime.Reliability.Consistency.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-
-using System.Runtime.InteropServices;
-namespace System.Runtime.Reliability
-{
-       [Serializable]
-       [ComVisible (false)]
-        public enum CER
-        {
-                MayFail = 1,
-                None = 0, 
-                Success = 2
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.Reliability/ChangeLog b/mcs/class/corlib/System.Runtime.Reliability/ChangeLog
deleted file mode 100644 (file)
index 57a6f68..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-2005-03-04  Kazuki Oikawa  <kazuki@panicode.com>
-
-       * CER.cs:
-       * Consistency.cs:
-       * PrePrepareMethodAttribute.cs:
-       * ReliabilityContractAttribute.cs: Added missing attributes.
-
-2004-08-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * CriticialFinalizerObject.cs: Moved to System.Runtime.
-       ConstrainedExecution to match Fx 2.0 beta 1.
-
-2004-07-12  Duncan Mak  <duncan@ximian.com>
-
-       * CER.cs: 
-       * Consistency.cs:
-       * CriticialFinalizerObject.cs:
-       * PrePrepareMethodAttribute.cs:
-       * ReliabilityContractAttribute.cs: Added.
-
diff --git a/mcs/class/corlib/System.Runtime.Reliability/Consistency.cs b/mcs/class/corlib/System.Runtime.Reliability/Consistency.cs
deleted file mode 100644 (file)
index 5babff4..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Runtime.Reliability.Consistency.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-
-using System.Runtime.InteropServices;
-namespace System.Runtime.Reliability
-{
-       [ComVisible (false)]
-       [Serializable]
-        public enum Consistency
-        {
-                MayCorruptAppDomain = 1,
-                MayCorruptInstance = 2, 
-                MayCorruptProcess = 0,
-                WillNotCorruptState = 3
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.Reliability/PrePrepareMethodAttribute.cs b/mcs/class/corlib/System.Runtime.Reliability/PrePrepareMethodAttribute.cs
deleted file mode 100644 (file)
index 8f1c055..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Runtime.Reliability.PrePrepareMethodAttribute.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-
-using System.Runtime.InteropServices;
-namespace System.Runtime.Reliability
-{
-               [Obsolete]
-               [AttributeUsage (AttributeTargets.Constructor | AttributeTargets.Method, Inherited = false)]
-               [ComVisible (false)]
-        public sealed class PrePrepareMethodAttribute : Attribute
-        {
-                public PrePrepareMethodAttribute ()
-                {
-                }
-        }
-}
diff --git a/mcs/class/corlib/System.Runtime.Reliability/ReliabilityContractAttribute.cs b/mcs/class/corlib/System.Runtime.Reliability/ReliabilityContractAttribute.cs
deleted file mode 100644 (file)
index 59e76c5..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// System.Runtime.Reliability.ReliabilityContractAttribute.cs
-//
-// Author:
-//    Duncan Mak (duncan@ximian.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-
-using System.Runtime.InteropServices;
-namespace System.Runtime.Reliability
-{
-               [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
-                       AttributeTargets.Struct | AttributeTargets.Constructor |
-                       AttributeTargets.Method | AttributeTargets.Interface, Inherited = false)]
-               [ComVisible (false)]
-               [Obsolete]
-        public sealed class ReliabilityContractAttribute : Attribute
-        {
-                Consistency consistency;
-                CER cer;
-                
-                public ReliabilityContractAttribute ()
-                {
-                }
-
-                public ReliabilityContractAttribute (Consistency consistency, CER cer)
-                {
-                        this.consistency = consistency;
-                        this.cer = cer;
-                }
-
-                public CER CER {
-                        get { return cer; }
-                                               set { cer = value;}
-                }
-
-                public Consistency ConsistencyGuarantee {
-
-                        get { return consistency; }
-
-                        set { consistency = value; }
-                }
-        }
-}
-
index 3dcdce4733ecca97dae696a57d974965f35a6a6e..e184e3b9762a4f55d1fa653337c76b89dea528cb 100644 (file)
@@ -40,6 +40,7 @@ using System.Runtime.Remoting.Proxies;
 using System.Runtime.Remoting.Activation;
 using System.Runtime.Remoting.Messaging;
 using System.Runtime.Remoting.Lifetime;
+using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
 
@@ -57,6 +58,12 @@ namespace System.Runtime.Remoting.Contexts {
                #endregion
 #pragma warning restore 169, 414
 
+               // Name is significant; used by the runtime.
+               [ContextStatic]
+               static object[] local_slots;
+
+               static NamedDataSlot namedDataSlot;
+
                // Default server context sink chain
                static IMessageSink default_server_context_sink;
 
@@ -66,25 +73,24 @@ namespace System.Runtime.Remoting.Contexts {
                // The sink chain that has to be used by all calls exiting the context
                IMessageSink client_context_sink_chain = null;
 
-               object[] datastore;
                List<IContextProperty> context_properties;
 //             bool frozen;
                
                static int global_count;
 
-               /* Wrap this in a nested class so its not constructed during shutdown */
-               class NamedSlots {
-                       public static Hashtable namedSlots = new Hashtable ();
-               }
-
                static DynamicPropertyCollection global_dynamic_properties;
                DynamicPropertyCollection context_dynamic_properties;
                ContextCallbackObject callback_object = null;
+
+               [MethodImpl (MethodImplOptions.InternalCall)]
+               extern static void RegisterContext (Context ctx);
                
                public Context ()
                {
                        domain_id = Thread.GetDomainID();
-                       context_id = 1 + global_count++;
+                       context_id = Interlocked.Increment (ref global_count);
+
+                       RegisterContext (this);
                }
 
                ~Context ()
@@ -150,7 +156,13 @@ namespace System.Runtime.Remoting.Contexts {
                                        return rp.ObjectIdentity.ClientDynamicProperties;
                                }
                                else
+                               {
+#if FEATURE_REMOTING
                                        return obj.ObjectIdentity.ServerDynamicProperties;
+#else
+                                       throw new NotSupportedException ();
+#endif                                 
+                               }
                        }
                        else if (ctx != null && obj == null)
                        {
@@ -355,66 +367,61 @@ namespace System.Runtime.Remoting.Contexts {
                        
                        callback_object.DoCallBack (deleg);
                }
-               
+
+               static NamedDataSlot NamedDataSlot {
+                       get {
+                               if (namedDataSlot == null)
+                                       Interlocked.CompareExchange (ref namedDataSlot, new NamedDataSlot (false), null);
+
+                               return namedDataSlot;
+                       }
+               }
+
                public static LocalDataStoreSlot AllocateDataSlot ()
                {
                        return new LocalDataStoreSlot (false);
                }
-               
+
                public static LocalDataStoreSlot AllocateNamedDataSlot (string name)
                {
-                       lock (NamedSlots.namedSlots.SyncRoot)
-                       {
-                               LocalDataStoreSlot slot = AllocateDataSlot ();
-                               NamedSlots.namedSlots.Add (name, slot);
-                               return slot;
-                       }
+                       return NamedDataSlot.Allocate (name);
                }
-               
+
                public static void FreeNamedDataSlot (string name)
                {
-                       lock (NamedSlots.namedSlots.SyncRoot)
-                       {
-                               NamedSlots.namedSlots.Remove (name);
-                       }
+                       NamedDataSlot.Free (name);
                }
-               
-               public static object GetData (LocalDataStoreSlot slot)
+
+               public static LocalDataStoreSlot GetNamedDataSlot (string name)
                {
-                       Context ctx = Thread.CurrentContext;
-                       
-                       lock (ctx)
-                       {
-                               if (ctx.datastore != null && slot.slot < ctx.datastore.Length)
-                                       return ctx.datastore [slot.slot];
-                               return null;
-                       }
+                       return NamedDataSlot.Get (name);
                }
-               
-               public static LocalDataStoreSlot GetNamedDataSlot (string name)
+
+               public static object GetData (LocalDataStoreSlot slot)
                {
-                       lock (NamedSlots.namedSlots.SyncRoot)
-                       {
-                               LocalDataStoreSlot slot = NamedSlots.namedSlots [name] as LocalDataStoreSlot;
-                               if (slot == null) return AllocateNamedDataSlot (name);
-                               else return slot;
-                       }
+                       object[] slots = local_slots;
+                       if (slot == null)
+                               throw new ArgumentNullException ("slot");
+                       if (slots != null && slot.slot < slots.Length)
+                               return slots [slot.slot];
+                       return null;
                }
-               
+
                public static void SetData (LocalDataStoreSlot slot, object data)
                {
-                       Context ctx = Thread.CurrentContext;
-                       lock (ctx)
-                       {
-                               if (ctx.datastore == null) {
-                                       ctx.datastore = new object [slot.slot + 2];
-                               } else if (slot.slot >= ctx.datastore.Length) {
-                                       object[] nslots = new object [slot.slot + 2];
-                                       ctx.datastore.CopyTo (nslots, 0);
-                                       ctx.datastore = nslots;
-                               }
-                               ctx.datastore [slot.slot] = data;
+                       object[] slots = local_slots;
+                       if (slot == null)
+                               throw new ArgumentNullException ("slot");
+                       if (slots == null) {
+                               slots = new object [slot.slot + 2];
+                               local_slots = slots;
+                       } else if (slot.slot >= slots.Length) {
+                               object[] nslots = new object [slot.slot + 2];
+                               slots.CopyTo (nslots, 0);
+                               slots = nslots;
+                               local_slots = slots;
                        }
+                       slots [slot.slot] = data;
                }
        }
 
index 3de8bf6be701016b1bcb58f308fe99a681f30e27..fd154a0ec36763aa611c0d594666d3043c849e45 100644 (file)
@@ -78,7 +78,7 @@ namespace System.Runtime.Remoting.Lifetime
                {
                        Timer t = _timer;
                        _timer = null;
-                       t.Dispose();
+                       if (t != null) t.Dispose();
                }
 
                public void ManageLeases(object state)
index 2bf7557dfadf600c37896aa1a8651c55bd2a0b3b..5ff6d62f134fb610f783082e9ec0ab9407b899c5 100644 (file)
@@ -39,7 +39,7 @@ namespace System.Runtime.Remoting.Messaging {
 
 [System.Runtime.InteropServices.ComVisible (true)]
 [StructLayout (LayoutKind.Sequential)]
-public class AsyncResult : IAsyncResult, IMessageSink {
+public class AsyncResult : IAsyncResult, IMessageSink, IThreadPoolWorkItem {
 
 #pragma warning disable 169, 414, 649
        object async_state;
@@ -185,5 +185,17 @@ public class AsyncResult : IAsyncResult, IMessageSink {
                get { return call_message; }
                set { call_message = value; }
        }
+
+       void IThreadPoolWorkItem.ExecuteWorkItem()
+       {
+               Invoke ();
+       }
+
+       void IThreadPoolWorkItem.MarkAborted(ThreadAbortException tae)
+       {
+       }
+
+       [MethodImplAttribute(MethodImplOptions.InternalCall)]
+       internal extern object Invoke ();
 }
 }
index 59f2c8bbd8ee64a53fe29e349622ea8034a6da92..06f54b12cebc44afca5334119e9e1837c7f64297 100644 (file)
@@ -56,7 +56,7 @@ namespace System.Runtime.Remoting
 
                                int baseCount = 0;
                                Type baseType = type.BaseType;
-                               while (baseType != typeof (MarshalByRefObject) && baseType != typeof(object))
+                               while (baseType != typeof (MarshalByRefObject) && baseType != null)
                                {
                                        baseType = baseType.BaseType;
                                        baseCount++;
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ChangeLog b/mcs/class/corlib/System.Runtime.Versioning/ChangeLog
deleted file mode 100644 (file)
index 2497cc5..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-2009-12-03  Marek Habersack  <mhabersack@novell.com>
-
-       * FrameworkName.cs: added
-
-       * TargetFrameworkAttribute.cs: added
-
-2009-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * VersioningHelper.cs: Refactor AppDomain.Id for NET_2_1
-
-2005-10-31  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * ResourceConsumptionAttribute.cs: New. 2.0 attribute.
-       * ResourceExposureAttribute.cs: New. 2.0 attribute.
-       * ResourceScope.cs: New. 2.0 enum.
-       * VersioningHelper.cs: New. 2.0 public helper class.
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesAttribute.cs b/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesAttribute.cs
deleted file mode 100644 (file)
index d0c5f62..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// ComponentGuaranteesAttribute.cs
-//
-// Author:
-//   Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Runtime.Versioning
-{
-       [AttributeUsageAttribute (AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct |
-               AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event |
-               AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
-       public sealed class ComponentGuaranteesAttribute : Attribute
-       {
-               readonly ComponentGuaranteesOptions guarantees;
-
-               public ComponentGuaranteesAttribute (ComponentGuaranteesOptions guarantees)
-               {
-                       this.guarantees = guarantees;
-               }
-               
-               public ComponentGuaranteesOptions Guarantees {
-                       get {
-                               return guarantees;
-                       }
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesOptions.cs b/mcs/class/corlib/System.Runtime.Versioning/ComponentGuaranteesOptions.cs
deleted file mode 100644 (file)
index 70c0bbb..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ComponentGuaranteesOptions.cs
-//
-// Author:
-//   Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Runtime.Versioning
-{
-       [FlagsAttribute]
-       public enum ComponentGuaranteesOptions
-       {
-               None = 0,
-               Exchange = 1,
-               Stable = 2,
-               SideBySide = 4
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ResourceConsumptionAttribute.cs b/mcs/class/corlib/System.Runtime.Versioning/ResourceConsumptionAttribute.cs
deleted file mode 100644 (file)
index 6d70d98..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// System.Runtime.Versioning.ResourceConsumptionAttribute class
-//
-// Authors
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Diagnostics;
-
-namespace System.Runtime.Versioning {
-
-       [AttributeUsage (AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property, Inherited = false)]
-       [Conditional ("RESOURCE_ANNOTATION_WORK")]
-       public sealed class ResourceConsumptionAttribute: Attribute {
-
-               private ResourceScope resource;
-               private ResourceScope consumption;
-
-               public ResourceConsumptionAttribute (ResourceScope resourceScope)
-               {
-                       resource = resourceScope;
-                       consumption = resourceScope;
-               }
-
-               public ResourceConsumptionAttribute (ResourceScope resourceScope, ResourceScope consumptionScope)
-               {
-                       resource = resourceScope;
-                       consumption = consumptionScope;
-               }
-
-
-               public ResourceScope ConsumptionScope {
-                       get { return consumption; }
-               }
-
-               public ResourceScope ResourceScope {
-                       get { return resource; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ResourceExposureAttribute.cs b/mcs/class/corlib/System.Runtime.Versioning/ResourceExposureAttribute.cs
deleted file mode 100644 (file)
index 23b4e71..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// System.Runtime.Versioning.ResourceExposureAttribute class
-//
-// Authors
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Diagnostics;
-
-namespace System.Runtime.Versioning {
-
-       [AttributeUsage (AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field, Inherited = false)]
-       [Conditional ("RESOURCE_ANNOTATION_WORK")]
-       public sealed class ResourceExposureAttribute: Attribute {
-
-               private ResourceScope exposure;
-
-               public ResourceExposureAttribute (ResourceScope exposureLevel)
-               {
-                       exposure = exposureLevel;
-               }
-
-
-               public ResourceScope ResourceExposureLevel {
-                       get { return exposure; }
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Runtime.Versioning/ResourceScope.cs b/mcs/class/corlib/System.Runtime.Versioning/ResourceScope.cs
deleted file mode 100644 (file)
index 274dc6f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Runtime.Versioning.ResourceScope enumeration
-//
-// Authors
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.Versioning {
-
-       [Flags]
-       public enum ResourceScope {
-               None = 0,
-               Machine = 1,
-               Process = 2,
-               AppDomain = 4,
-               Library = 8,
-               Private = 16,
-               Assembly = 32
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs b/mcs/class/corlib/System.Runtime.Versioning/TargetFrameworkAttribute.cs
deleted file mode 100644 (file)
index a8f8c8f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.Runtime.Versioning.TargetFrameworkAttribute class
-//
-// Authors
-//     Marek Habersack <mhabersack@novell.com>
-//
-// Copyright (C) 2009 Novell, Inc (http://novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Runtime.Versioning
-{
-       [AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)]
-       public sealed class TargetFrameworkAttribute : Attribute
-       {
-               public string FrameworkName {
-                       get; private set;
-               }
-
-               public string FrameworkDisplayName {
-                       get; set;
-               }
-               
-               public TargetFrameworkAttribute (string frameworkName)
-               {
-                       if (frameworkName == null)
-                               throw new ArgumentNullException ("frameworkName");
-                       
-                       this.FrameworkName = frameworkName;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Runtime.Versioning/VersioningHelper.cs b/mcs/class/corlib/System.Runtime.Versioning/VersioningHelper.cs
deleted file mode 100644 (file)
index 1f7dda0..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// System.Runtime.Versioning.VersioningHelper class
-//
-// Authors
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Runtime.Versioning {
-
-       public static class VersioningHelper {
-
-               static private int GetDomainId ()
-               {
-#if NET_2_1
-                       return 0;
-#else
-                       return AppDomain.CurrentDomain.Id;
-#endif
-               }
-
-               static private int GetProcessId ()
-               {
-                       // TODO - System.Diagnostics.Process class is located in System.dll
-                       return 0;
-               }
-
-               static string SafeName (string name, bool process, bool appdomain)
-               {
-                       if (process && appdomain) {
-                               return String.Concat (name, "_", GetProcessId ().ToString (),
-                                       "_", GetDomainId ().ToString ());
-                       } else if (process) {
-                               return String.Concat (name, "_", GetProcessId ().ToString ());
-                       } else if (appdomain) {
-                               return String.Concat (name, "_", GetDomainId ().ToString ());
-                       }
-                       // nothing, return original string
-                       return name;
-               }
-
-               static private string ConvertFromMachine (string name, ResourceScope to, Type type)
-               {
-                       switch (to) {
-                       case ResourceScope.Machine:
-                               return SafeName (name, false, false);
-                       case ResourceScope.Process:
-                               return SafeName (name, true, false);
-                       case ResourceScope.AppDomain:
-                               return SafeName (name, true, true);
-                       default:
-                               throw new ArgumentException ("to");
-                       }
-               }
-
-               static private string ConvertFromProcess (string name, ResourceScope to, Type type)
-               {
-                       if ((to < ResourceScope.Process) || (to >= ResourceScope.Private))
-                               throw new ArgumentException ("to");
-                       bool ad = ((to & ResourceScope.AppDomain) == ResourceScope.AppDomain);
-                       return SafeName (name, false, ad);
-               }
-
-               static private string ConvertFromAppDomain (string name, ResourceScope to, Type type)
-               {
-                       if ((to < ResourceScope.AppDomain) || (to >= ResourceScope.Private))
-                               throw new ArgumentException ("to");
-                       return SafeName (name, false, false);
-               }
-
-               [MonoTODO ("process id is always 0")]
-               static public string MakeVersionSafeName (string name, ResourceScope from, ResourceScope to)
-               {
-                       return MakeVersionSafeName (name, from, to, null);
-               }
-
-               [MonoTODO ("type?")]
-               static public string MakeVersionSafeName (string name, ResourceScope from, ResourceScope to, Type type)
-               {
-                       if ((from & ResourceScope.Private) != 0) {
-                               to &= ~(ResourceScope.Private | ResourceScope.Assembly);
-                       } else if ((from & ResourceScope.Assembly) != 0) {
-                               to &= ~ResourceScope.Assembly;
-                       }
-                       
-                       string result = (name == null) ? String.Empty : name;
-                       switch (from) {
-                       case ResourceScope.Machine:
-                       case ResourceScope.Machine | ResourceScope.Private:
-                       case ResourceScope.Machine | ResourceScope.Assembly:
-                               return ConvertFromMachine (result, to, type);
-                       case ResourceScope.Process:
-                       case ResourceScope.Process | ResourceScope.Private:
-                       case ResourceScope.Process | ResourceScope.Assembly:
-                               return ConvertFromProcess (result, to, type);
-                       case ResourceScope.AppDomain:
-                       case ResourceScope.AppDomain | ResourceScope.Private:
-                       case ResourceScope.AppDomain | ResourceScope.Assembly:
-                               return ConvertFromAppDomain (result, to, type);
-                       default:
-                               throw new ArgumentException ("from");
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Claims/Claim.cs b/mcs/class/corlib/System.Security.Claims/Claim.cs
deleted file mode 100644 (file)
index e40023f..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// Claim.cs
-//
-// Authors:
-//  Miguel de Icaza (miguel@xamarin.com)
-//
-// Copyright 2014 Xamarin Inc
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-namespace System.Security.Claims {
-
-       [Serializable]
-       public class Claim {
-               public Claim (string type, string value)
-               : this (type, value, valueType: null, issuer: null, originalIssuer:null, subject: null)
-               {
-               }
-
-               public Claim (string type, string value, string valueType)
-               : this (type, value, valueType, issuer: null, originalIssuer: null, subject: null)
-               {
-               }
-
-               public Claim (string type, string value, string valueType, string issuer)
-               : this (type, value, valueType, issuer, originalIssuer: null, subject: null)
-               {
-               }
-               
-               public Claim (string type, string value, string valueType, string issuer, string originalIssuer)
-               : this (type, value, valueType, issuer, originalIssuer, subject: null)
-               {
-               }
-
-               public Claim (string type, string value, string valueType, string issuer, string originalIssuer, ClaimsIdentity subject)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       Properties = new Dictionary <string, string> ();
-
-                       Type = type;
-                       Value = value;
-                       ValueType = valueType == null ? ClaimValueTypes.String : valueType;
-                       Issuer = issuer == null ? ClaimsIdentity.DefaultIssuer : issuer;
-                       OriginalIssuer = originalIssuer == null ? Issuer : originalIssuer;
-                       Subject = subject;
-               }
-
-               public string Type { get; private set; }
-               public string Value { get; private set; }
-               public string ValueType { get; private set; }
-               public string Issuer { get; private set; }
-               public string OriginalIssuer { get; private set; }
-               public ClaimsIdentity Subject { get; internal set; }
-               public IDictionary<string,string> Properties { get; private set; }
-
-               // The new copy does not have a Subject
-               public virtual Claim Clone ()
-               {
-                       return Clone (null);
-               }
-
-               public virtual Claim Clone (ClaimsIdentity identity)
-               {
-                       return new Claim (Type, Value, ValueType, Issuer, OriginalIssuer, identity);
-               }
-
-               public override string ToString ()
-               {
-                       return String.Format ("{0}: {1}", Type, Value);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Claims/ClaimTypes.cs b/mcs/class/corlib/System.Security.Claims/ClaimTypes.cs
deleted file mode 100644 (file)
index 07ae8fd..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// ClaimTypes.cs
-//
-// Author:
-//     Atsushi Enomoto <atsushi@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc.  http://www.novell.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Security.Claims
-{
-       public static class ClaimTypes
-       {
-               public const string Actor = "http://schemas.xmlsoap.org/ws/2009/09/identity/claims/actor";
-
-               public const string Anonymous = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/anonymous";
-
-               public const string Authentication = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/authentication";
-
-               public const string AuthenticationInstant = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant";
-
-               public const string AuthenticationMethod = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod";
-
-               public const string AuthorizationDecision = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/authorizationdecision";
-
-               public const string CookiePath = "http://schemas.microsoft.com/ws/2008/06/identity/claims/cookiepath";
-
-               public const string Country = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country";
-
-               public const string DateOfBirth = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth";
-
-               public const string DenyOnlyPrimaryGroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarygroupsid";
-
-               public const string DenyOnlyPrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarysid";
-
-               public const string DenyOnlySid = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/denyonlysid";
-
-               public const string DenyOnlyWindowsDeviceGroup = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlywindowsdevicegroup";
-
-               public const string Dns = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dns";
-
-               public const string Dsa = "http://schemas.microsoft.com/ws/2008/06/identity/claims/dsa";
-
-               public const string Email = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
-
-               public const string Expiration = "http://schemas.microsoft.com/ws/2008/06/identity/claims/expiration";
-
-               public const string Expired = "http://schemas.microsoft.com/ws/2008/06/identity/claims/expired";
-
-               public const string Gender = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/gender";
-
-               public const string GivenName = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname";
-
-               public const string GroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid";
-
-               public const string Hash = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/hash";
-
-               public const string HomePhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/homephone";
-
-               public const string IsPersistent = "http://schemas.microsoft.com/ws/2008/06/identity/claims/ispersistent";
-
-               public const string Locality = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/locality";
-
-               public const string MobilePhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone";
-
-               public const string Name = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name";
-
-               public const string NameIdentifier = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier";
-
-               public const string OtherPhone = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/otherphone";
-
-               public const string PostalCode = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/postalcode";
-
-               public const string PrimaryGroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid";
-
-               public const string PrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid";
-
-               public const string Role = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
-
-               public const string Rsa = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa";
-
-               public const string SerialNumber = "http://schemas.microsoft.com/ws/2008/06/identity/claims/serialnumber";
-
-               public const string Sid = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sid";
-
-               public const string Spn = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/spn";
-
-               public const string StateOrProvince = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/stateorprovince";
-
-               public const string StreetAddress = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress";
-
-               public const string Surname = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname";
-
-               public const string System = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/system";
-
-               public const string Thumbprint = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/thumbprint";
-
-               public const string Upn = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn";
-
-               public const string Uri = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/uri";
-
-               public const string UserData = "http://schemas.microsoft.com/ws/2008/06/identity/claims/userdata";
-
-               public const string Version = "http://schemas.microsoft.com/ws/2008/06/identity/claims/version";
-
-               public const string Webpage = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage";
-
-               public const string WindowsAccountName = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname";
-
-               public const string WindowsDeviceClaim = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsdeviceclaim";
-
-               public const string WindowsDeviceGroup = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsdevicegroup";
-
-               public const string WindowsFqbnVersion = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsfqbnversion";
-
-               public const string WindowsSubAuthority = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowssubauthority";
-
-               public const string WindowsUserClaim = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsuserclaim";
-
-               public const string X500DistinguishedName = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/x500distinguishedname";
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Claims/ClaimValueTypes.cs b/mcs/class/corlib/System.Security.Claims/ClaimValueTypes.cs
deleted file mode 100644 (file)
index abffe8c..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Claim.cs
-//
-// Authors:
-//  Miguel de Icaza (miguel@xamarin.com)
-//
-// Copyright 2014 Xamarin Inc
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-namespace System.Security.Claims {
-
-       public static class ClaimValueTypes {
-               public const string Base64Binary = "http://www.w3.org/2001/XMLSchema#base64Binary";
-               public const string Base64Octet = "http://www.w3.org/2001/XMLSchema#base64Octet";
-               public const string Boolean = "http://www.w3.org/2001/XMLSchema#boolean";
-               public const string Date = "http://www.w3.org/2001/XMLSchema#date";
-               public const string DateTime = "http://www.w3.org/2001/XMLSchema#dateTime";
-               public const string DaytimeDuration = "http://www.w3.org/TR/2002/WD-xquery-operators-20020816#dayTimeDuration";
-               public const string DnsName = "http://schemas.xmlsoap.org/claims/dns";
-               public const string Double = "http://www.w3.org/2001/XMLSchema#double";
-               public const string DsaKeyValue = "http://www.w3.org/2000/09/xmldsig#DSAKeyValue";
-               public const string Email = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
-               public const string Fqbn = "http://www.w3.org/2001/XMLSchema#fqbn";
-               public const string HexBinary = "http://www.w3.org/2001/XMLSchema#hexBinary";
-               public const string Integer = "http://www.w3.org/2001/XMLSchema#integer";
-               public const string Integer32 = "http://www.w3.org/2001/XMLSchema#integer32";
-               public const string Integer64 = "http://www.w3.org/2001/XMLSchema#integer64";
-               public const string KeyInfo = "http://www.w3.org/2000/09/xmldsig#KeyInfo";
-               public const string Rfc822Name = "urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name";
-               public const string Rsa = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa";
-               public const string RsaKeyValue = "http://www.w3.org/2000/09/xmldsig#RSAKeyValue";
-               public const string Sid = "http://www.w3.org/2001/XMLSchema#sid";
-               public const string String = "http://www.w3.org/2001/XMLSchema#string";
-               public const string Time = "http://www.w3.org/2001/XMLSchema#time";
-               public const string UInteger32 = "http://www.w3.org/2001/XMLSchema#uinteger32";
-               public const string UInteger64 = "http://www.w3.org/2001/XMLSchema#uinteger64";
-               public const string UpnName = "http://schemas.xmlsoap.org/claims/UPN";
-               public const string X500Name = "urn:oasis:names:tc:xacml:1.0:data-type:x500Name";
-               public const string YearMonthDuration = "http://www.w3.org/TR/2002/WD-xquery-operators-20020816#yearMonthDuration";
-
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs b/mcs/class/corlib/System.Security.Claims/ClaimsIdentity.cs
deleted file mode 100644 (file)
index dd31436..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-//
-// ClaimIdentity.cs
-//
-// Authors:
-//  Miguel de Icaza (miguel@xamarin.com)
-//  Marek Safar (marek.safar@gmail.com)
-//
-// Copyright 2014 Xamarin Inc
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections.Generic;
-using System.Security.Principal;
-using System.Runtime.Serialization;
-
-namespace System.Security.Claims {
-
-       [Serializable]
-       public class ClaimsIdentity : IIdentity {
-               [NonSerializedAttribute]
-               public const string DefaultNameClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name";
-               [NonSerializedAttribute]
-               public const string DefaultRoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
-               [NonSerializedAttribute]
-               public const string DefaultIssuer = "LOCAL AUTHORITY";
-               
-               readonly List<Claim> claims;
-               ClaimsIdentity actor;
-               readonly string auth_type;
-
-               public ClaimsIdentity ()
-                       : this (claims: null, authenticationType: null, nameType: null, roleType: null)
-               { }
-               
-               public ClaimsIdentity(IEnumerable<Claim> claims)
-                       : this (claims: claims, authenticationType: null, nameType: null, roleType: null)
-               { }
-               
-               public ClaimsIdentity (string authenticationType)
-                       : this (claims: null, authenticationType: authenticationType, nameType: null, roleType: null)
-               { }
-
-               public ClaimsIdentity (IEnumerable<Claim> claims, string authenticationType) 
-                       : this (claims, authenticationType, null, null)
-               {}
-               
-               public ClaimsIdentity (string authenticationType, string nameType, string roleType)
-                       : this (claims: null, authenticationType: authenticationType, nameType: nameType, roleType: roleType)
-               { }
-               
-               public ClaimsIdentity (IIdentity identity) : this (identity: identity, claims: null)
-               {
-               }
-               
-               public ClaimsIdentity(IEnumerable<Claim> claims, string authenticationType, string nameType, string roleType)
-                       : this (identity: null, claims: claims, authenticationType: authenticationType, nameType: nameType, roleType: roleType)
-               {
-               }
-
-               public ClaimsIdentity (IIdentity identity, IEnumerable<Claim> claims)
-                       : this (identity, claims, authenticationType: null, nameType: null, roleType: null)
-               {
-               }
-               
-               public ClaimsIdentity (IIdentity identity, IEnumerable<Claim> claims, string authenticationType, string nameType, string roleType)
-               {
-                       NameClaimType = string.IsNullOrEmpty (nameType) ? DefaultNameClaimType : nameType;
-                       RoleClaimType = string.IsNullOrEmpty (roleType) ? DefaultRoleClaimType : roleType;
-                       auth_type = authenticationType;
-
-                       this.claims = new List<Claim> ();
-
-                       if (identity != null) {
-                               if (string.IsNullOrEmpty (authenticationType))
-                                       auth_type = identity.AuthenticationType;
-
-                               var ci = identity as ClaimsIdentity;
-                               if (ci != null) {
-                                       actor = ci.Actor;
-                                       BootstrapContext = ci.BootstrapContext;
-                                       foreach (var c in ci.Claims)
-                                               this.claims.Add (c);
-                               
-                                       Label = ci.Label;
-                                       NameClaimType = string.IsNullOrEmpty (nameType) ? ci.NameClaimType : nameType;
-                                       RoleClaimType = string.IsNullOrEmpty (roleType) ? ci.RoleClaimType : roleType;
-                               } else if (!string.IsNullOrEmpty (identity.Name)) {
-                                       AddDefaultClaim (identity.Name);
-                               }
-                       }
-
-                       if (claims != null) {
-                               AddClaims (claims);
-                       }
-               }
-
-               [MonoTODO]
-               protected ClaimsIdentity (SerializationInfo info)
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
-               protected ClaimsIdentity (SerializationInfo info, StreamingContext context)
-               {
-                       if (info == null)
-                               throw new ArgumentNullException ("info");
-                       throw new NotImplementedException ();
-               }
-               
-               public ClaimsIdentity Actor {
-                       get {
-                               return actor;
-                       }
-                       set {
-                               if (value == this)
-                                       throw new InvalidOperationException ("can not set the Actor property to this instance");
-
-                               actor = value;
-                       }
-               }
-
-               public virtual string AuthenticationType {
-                       get {
-                               return auth_type;
-                       }
-               }
-               public object BootstrapContext { get; set; }
-               public string Label { get; set; }
-               public virtual string Name {
-                       get {
-                               var target = NameClaimType;
-                               foreach (var c in claims){
-                                       if (c.Type == target)
-                                               return c.Value;
-                               }
-                               return null;
-                       }
-               }
-               public string NameClaimType { get; private set; }
-               public string RoleClaimType { get; private set; }
-
-               public virtual IEnumerable<Claim> Claims {
-                       get {
-                               return claims;
-                       }
-               }
-
-               public virtual bool IsAuthenticated {
-                       get {
-                               return AuthenticationType != null && AuthenticationType != "";
-                       }
-               }
-
-               public virtual void AddClaim (Claim claim)
-               {
-                       if (claim == null)
-                               throw new ArgumentNullException ("claim");
-
-                       if (claim.Subject != this)
-                               claim = claim.Clone (this);
-
-                       claims.Add (claim);
-               }
-
-               public virtual void AddClaims (IEnumerable<Claim> claims)
-               {
-                       if (claims == null)
-                               throw new ArgumentNullException ("claims");
-
-                       foreach (var c in claims)
-                               AddClaim (c);
-               }
-
-               internal void AddDefaultClaim (string identityName)
-               {
-                       this.claims.Add (new Claim (NameClaimType, identityName, "http://www.w3.org/2001/XMLSchema#string", DefaultIssuer, DefaultIssuer, this)); 
-               }
-
-               public virtual ClaimsIdentity Clone ()
-               {
-                       return new ClaimsIdentity (null, claims, AuthenticationType, NameClaimType, RoleClaimType){
-                               BootstrapContext = this.BootstrapContext,
-                               Actor = this.Actor,
-                               Label = this.Label
-                       };
-               }
-
-               public virtual IEnumerable<Claim> FindAll(Predicate<Claim> match)
-               {
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       foreach (var c in claims)
-                               if (match (c))
-                                       yield return c;
-               }
-
-               public virtual IEnumerable<Claim> FindAll (string type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       foreach (var c in claims)
-                               if (string.Equals (c.Type, type, StringComparison.OrdinalIgnoreCase))
-                                       yield return c;
-               }
-
-               public virtual Claim FindFirst (Predicate<Claim> match)
-               {
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       foreach (var c in claims)
-                               if (match (c))
-                                       return c;
-                       return null;
-               }
-
-               public virtual Claim FindFirst (string type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       foreach (var c in claims)
-                               if (string.Equals (c.Type, type, StringComparison.OrdinalIgnoreCase))
-                                       return c;
-                       return null;
-               }
-
-               public virtual bool HasClaim (Predicate<Claim> match)
-               {
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       foreach (var c in claims)
-                               if (match (c))
-                                       return true;
-                       return false;
-               }
-
-               public virtual bool HasClaim (string type, string value)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       foreach (var c in claims){
-                               if (string.Equals (c.Type, type, StringComparison.OrdinalIgnoreCase) && c.Value == value)
-                                       return true;
-                       }
-                       return false;
-               }
-
-               public virtual void RemoveClaim (Claim claim)
-               {
-                       if (!TryRemoveClaim (claim))
-                               throw new InvalidOperationException ();
-               }
-
-               [MonoTODO ("This one should return false if the claim is owned by someone else, this does not exist yet")]
-               public virtual bool TryRemoveClaim (Claim claim)
-               {
-                       if (claim == null)
-                               return true;
-                       claims.Remove (claim);
-                       return true;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs b/mcs/class/corlib/System.Security.Claims/ClaimsPrincipal.cs
deleted file mode 100755 (executable)
index b8a660f..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// ClaimPrincipal.cs
-//
-// Authors:
-//  Miguel de Icaza (miguel@xamarin.com)
-//
-// Copyright 2014 Xamarin Inc
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections.Generic;
-using System.Security.Principal;
-using System.Runtime.Serialization;
-using System.Threading;
-
-namespace System.Security.Claims {
-
-       [SerializableAttribute]
-       public class ClaimsPrincipal : IPrincipal
-       {
-               List<ClaimsIdentity> identities;
-
-               static ClaimsPrincipal ()
-               {
-                       ClaimsPrincipalSelector = DefaultClaimsPrincipal;
-               }
-
-               static ClaimsPrincipal DefaultClaimsPrincipal ()
-               {
-                       return Thread.CurrentPrincipal as ClaimsPrincipal;
-               }
-               
-               public ClaimsPrincipal ()
-               {
-                       identities =  new List<ClaimsIdentity>();
-               }
-
-               public ClaimsPrincipal (IEnumerable<ClaimsIdentity> identities)
-               {
-                       if (identities == null)
-                               throw new ArgumentNullException ("identities");
-                       
-                       this.identities = new List<ClaimsIdentity> (identities);
-               }
-
-               public ClaimsPrincipal (IIdentity identity)
-               {
-                       if (identity == null)
-                               throw new ArgumentNullException ("identity");
-
-                       identities = new List<ClaimsIdentity> ();
-                       identities.Add (identity as ClaimsIdentity ?? new ClaimsIdentity (identity));
-               }
-
-               public ClaimsPrincipal (IPrincipal principal)
-               {
-                       if (principal == null)
-                               throw new ArgumentNullException ("principal");
-                       var cp = principal as ClaimsPrincipal;
-                       if (cp != null)
-                               identities = new List<ClaimsIdentity> (cp.identities);
-                       else {
-                               identities = new List<ClaimsIdentity> ();
-                               identities.Add (new ClaimsIdentity (principal.Identity));
-                       }
-               }
-
-               [MonoTODO]
-               protected ClaimsPrincipal (SerializationInfo info, StreamingContext context)
-               {
-                       throw new NotImplementedException ();
-               }
-               
-               public virtual IEnumerable<Claim> Claims {
-                       get {
-                               foreach (var ci in identities)
-                                       foreach (var claim in ci.Claims)
-                                               yield return claim;
-                       }
-               }
-
-               public static Func<ClaimsPrincipal> ClaimsPrincipalSelector { get; set; }
-
-               public static ClaimsPrincipal Current {
-                       get {
-                               return ClaimsPrincipalSelector ();
-                       }
-               }
-
-               public virtual IEnumerable<ClaimsIdentity> Identities {
-                       get {
-                               return identities;
-                       }
-               }
-
-               public static Func<IEnumerable<ClaimsIdentity>, ClaimsIdentity> PrimaryIdentitySelector { get; set; }
-
-               public virtual IIdentity Identity {
-                       get {
-                               if (identities == null)
-                                       throw new ArgumentNullException ("Identities");
-
-                               if (PrimaryIdentitySelector != null)
-                                       return PrimaryIdentitySelector (identities);
-                                               
-                               ClaimsIdentity firstCI = null;
-                               foreach (var ident in identities){
-                                       if (ident is WindowsIdentity)
-                                               return ident;
-                                       if (firstCI == null && ident is ClaimsIdentity)
-                                               firstCI = ident as ClaimsIdentity;
-                               }
-                               return firstCI;
-                       }
-               }
-
-               public virtual void AddIdentities (IEnumerable<ClaimsIdentity> identities)
-               {
-                       if (identities == null)
-                               throw new ArgumentNullException ("identities");
-                       foreach (var id in identities)
-                               this.identities.Add (id);
-               }
-
-               public virtual void AddIdentity (ClaimsIdentity identity)
-               {
-                       if (identity == null)
-                               throw new ArgumentNullException ("identity");
-                       identities.Add (identity);
-               }
-
-               public virtual IEnumerable<Claim> FindAll (Predicate<Claim> match)
-               {
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       foreach (var claim in Claims){
-                               if (match (claim))
-                                       yield return claim;
-                       }
-               }
-
-               public virtual Claim FindFirst (Predicate<Claim> match)
-               {
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       foreach (var claim in Claims)
-                               if (match (claim))
-                                       return claim;
-                       return null;
-               }
-
-               public virtual bool HasClaim (Predicate<Claim> match)
-               {
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       foreach (var claim in Claims)
-                               if (match (claim))
-                                       return true;
-                       return false;
-               }
-
-               public virtual bool IsInRole (string role)
-               {
-                       foreach (var id in identities){
-                               if (id.HasClaim (id.RoleClaimType, role))
-                                       return true;
-                       }
-                       return false;
-               }
-
-               public virtual bool HasClaim (string type, string value)
-               {
-                       foreach(var claim in Claims){
-                               if (claim.Type == type && claim.Value == value)
-                                       return true;
-                       }
-                       return false;
-               }
-
-               public virtual Claim FindFirst (string type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       return FindFirst(x => x.Type == type);
-               }
-
-               public virtual IEnumerable<Claim> FindAll (string type)
-               {
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-                       return FindAll(x => x.Type == type);
-               }
-
-               [MonoTODO]
-               protected virtual void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       throw new NotImplementedException ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/Aes.cs b/mcs/class/corlib/System.Security.Cryptography/Aes.cs
deleted file mode 100644 (file)
index 736c1fd..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// System.Security.Cryptography.Aes.cs
-//     based on mcs/class/corlib/System.Security.Cryptography/Rijndael.cs
-//
-// Authors:
-//     Dan Lewis (dihlewis@yahoo.co.uk)
-//     Andrew Birkett (andy@nobugs.org)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002
-// Copyright (C) 2004-2006,2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   FIPS PUB 197: Advanced Encryption Standard
-       //      http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
-
-       // since 4.0 (both FX and SL) this type now resides inside mscorlib.dll and link back to System.Core.dll
-       #if MOBILE
-       // version has not changed between SL3 (System.Core) and SL4
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-       #else
-       // use 3.5 version
-       [TypeForwardedFrom ("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
-       #endif
-       public abstract class Aes : SymmetricAlgorithm {
-
-               public static new Aes Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       // The Aes base class was moved from System.Core to mscorlib - so we can't just return a new AesCryptoServiceProvider instance
-                       // note: the linker is aware of this condition
-                       return (Aes) Activator.CreateInstance (Type.GetType ("System.Security.Cryptography.AesManaged, " + Consts.AssemblySystem_Core));
-#else
-                       return Create ("System.Security.Cryptography.AesCryptoServiceProvider, " + Consts.AssemblySystem_Core);
-#endif
-               }
-
-               public static new Aes Create (string algorithmName) 
-               {
-                       return (Aes) CryptoConfig.CreateFromName (algorithmName);
-               }
-
-               protected Aes ()
-               {
-                       KeySizeValue = 256;
-                       BlockSizeValue = 128;
-                       FeedbackSizeValue = 128;
-
-                       LegalKeySizesValue = new KeySizes [1];
-                       LegalKeySizesValue [0] = new KeySizes (128, 256, 64);
-
-                       LegalBlockSizesValue = new KeySizes [1];
-                       LegalBlockSizesValue [0] = new KeySizes (128, 128, 0);
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/AsymmetricAlgorithm.cs b/mcs/class/corlib/System.Security.Cryptography/AsymmetricAlgorithm.cs
deleted file mode 100644 (file)
index 5f1591d..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// System.Security.Cryptography.AsymmetricAlgorithm Class implementation
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005, 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class AsymmetricAlgorithm : IDisposable {
-
-               protected int KeySizeValue;
-               protected KeySizes[] LegalKeySizesValue; 
-
-               protected AsymmetricAlgorithm ()
-               {
-               }
-               
-               public abstract string KeyExchangeAlgorithm {
-                       get;
-               }
-               
-               public virtual int KeySize {
-                       get { return this.KeySizeValue; }
-                       set {
-                               if (!KeySizes.IsLegalKeySize (this.LegalKeySizesValue, value))
-                                       throw new CryptographicException (Locale.GetText ("Key size not supported by algorithm."));
-                               
-                               this.KeySizeValue = value;
-                       }
-               }
-
-               public virtual KeySizes[] LegalKeySizes {
-                       get { return this.LegalKeySizesValue; }
-               }
-
-               public abstract string SignatureAlgorithm {
-                       get;
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               public void Clear () 
-               {
-                       Dispose (false);
-               }
-
-               protected virtual void Dispose (bool disposing)
-               {
-               }
-               public abstract void FromXmlString (string xmlString);
-               
-               public abstract string ToXmlString (bool includePrivateParameters);             
-               
-               public static AsymmetricAlgorithm Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new RSACryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.AsymmetricAlgorithm");
-#endif
-               }
-       
-               public static AsymmetricAlgorithm Create (string algName) 
-               {
-                       return (AsymmetricAlgorithm) CryptoConfig.CreateFromName (algName);
-               }
-
-               // parsing helper shared between DSA and RSA
-               internal static byte [] GetNamedParam (string xml, string param)
-               {
-                       string start_element = "<" + param + ">";
-                       int start = xml.IndexOf (start_element);
-                       if (start == -1)
-                               return null;
-
-                       string end_element = "</" + param + ">";
-                       int end = xml.IndexOf (end_element);
-                       if ((end == -1) || (end <= start))
-                               return null;
-
-                       start += start_element.Length;
-
-                       string base64 = xml.Substring (start, end - start);
-                       return Convert.FromBase64String (base64);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/AsymmetricKeyExchangeDeformatter.cs b/mcs/class/corlib/System.Security.Cryptography/AsymmetricKeyExchangeDeformatter.cs
deleted file mode 100644 (file)
index 4ecd370..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//\r
-// System.Security.Cryptography AsymmetricKeyExchangeDeformatter Class implementation\r
-//\r
-// Authors:\r
-//   Thomas Neidhart (tome@sbox.tugraz.at)\r
-//
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-\r
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-       \r
-       [ComVisible (true)]
-       public abstract class AsymmetricKeyExchangeDeformatter {
-               protected AsymmetricKeyExchangeDeformatter ()
-               {\r
-               }\r
-               \r
-               public abstract string Parameters {
-                       get;
-                       set;
-               }\r
-               \r
-               public abstract byte[] DecryptKeyExchange (byte[] rgb);\r
-               \r
-               public abstract void SetKey (AsymmetricAlgorithm key);\r
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/AsymmetricKeyExchangeFormatter.cs b/mcs/class/corlib/System.Security.Cryptography/AsymmetricKeyExchangeFormatter.cs
deleted file mode 100644 (file)
index e07f208..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//\r
-// System.Security.Cryptography AsymmetricKeyExchangeFormatter Class implementation\r
-//\r
-// Authors:\r
-//   Thomas Neidhart (tome@sbox.tugraz.at)\r
-//\r
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-\r
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-       \r
-       [ComVisible (true)]
-       public abstract class AsymmetricKeyExchangeFormatter {\r
-
-               protected AsymmetricKeyExchangeFormatter ()
-               {\r
-               }\r
-               \r
-               public abstract string Parameters {
-                       get;
-               }\r
-               \r
-               public abstract byte[] CreateKeyExchange (byte[] data);\r
-\r
-               public abstract byte[] CreateKeyExchange (byte[] data, Type symAlgType);\r
-\r
-               public abstract void SetKey (AsymmetricAlgorithm key);\r
-       }\r
-}\r
-\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/AsymmetricSignatureDeformatter.cs b/mcs/class/corlib/System.Security.Cryptography/AsymmetricSignatureDeformatter.cs
deleted file mode 100644 (file)
index bdb647b..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.Security.Cryptography AsymmetricSignatureDeformatter Class implementation
-//
-// Authors:
-//   Thomas Neidhart (tome@sbox.tugraz.at)
-//
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-       [ComVisible (true)]
-       public abstract class AsymmetricSignatureDeformatter {
-
-               protected AsymmetricSignatureDeformatter ()
-               {
-               }
-               
-               public abstract void SetHashAlgorithm (string strName);         
-               
-               public abstract void SetKey (AsymmetricAlgorithm key);
-               
-               public abstract bool VerifySignature (byte[] rgbHash, byte[] rgbSignature);
-
-               public virtual bool VerifySignature (HashAlgorithm hash, byte[] rgbSignature) 
-               {
-                       if (hash == null)
-                               throw new ArgumentNullException ("hash");
-
-                       SetHashAlgorithm (hash.ToString ());
-
-                       return VerifySignature (hash.Hash, rgbSignature);
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/AsymmetricSignatureFormatter.cs b/mcs/class/corlib/System.Security.Cryptography/AsymmetricSignatureFormatter.cs
deleted file mode 100644 (file)
index 34d145d..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// System.Security.Cryptography AsymmetricSignatureFormatter Class implementation
-//
-// Authors:
-//   Thomas Neidhart (tome@sbox.tugraz.at)
-//
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-       [ComVisible (true)]
-       public abstract class AsymmetricSignatureFormatter {
-
-               protected AsymmetricSignatureFormatter ()
-               {               }
-               
-               public abstract void SetHashAlgorithm (string strName);         
-               
-               public abstract void SetKey (AsymmetricAlgorithm key);
-               
-               public abstract byte[] CreateSignature (byte[] rgbHash);
-
-               public virtual byte[] CreateSignature (HashAlgorithm hash) 
-               {
-                       if (hash == null)
-                               throw new ArgumentNullException ("hash");
-
-                       SetHashAlgorithm (hash.ToString ());
-                       return CreateSignature (hash.Hash);
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/Base64Constants.cs b/mcs/class/corlib/System.Security.Cryptography/Base64Constants.cs
deleted file mode 100644 (file)
index 25c491e..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// System.Security.Cryptography.Base64Constants
-//
-// Authors:
-//     Sergey Chaban (serge@wildwestsoftware.com)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security.Cryptography {
-
-       internal static class Base64Constants {\r
-               // Pre-calculated tables\r
-\r
-               public static readonly byte[] EncodeTable = { 
-                       0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 
-                       0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 
-                       0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 
-                       0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F 
-               };\r
-\r
-               public static readonly byte[] DecodeTable = {
-                       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
-                       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
-                       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0xFF, 0xFF, 0xFF, 0x3F, 
-                       0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
-                       0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 
-                       0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
-                       0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 
-                       0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33 
-               };\r
-\r
-               // This code was used to generated the tables\r
-/*\r
-               // This is the Base64 alphabet as described in RFC 2045 (Table 1, page 25).\r
-               private static string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";\r
-\r
-               private static byte[] encodeTable;\r
-               private static byte[] decodeTable;\r
-\r
-               static Base64Constants ()\r
-               {\r
-                       int len = ALPHABET.Length;\r
-\r
-                       encodeTable = new byte [len];\r
-\r
-                       for (int i=0; i < len; i++) {\r
-                               encodeTable [i] = (byte) ALPHABET [i];\r
-                       }\r
-\r
-                       decodeTable = new byte [1 + (int)'z'];\r
-\r
-                       for (int i=0; i < decodeTable.Length; i++) {\r
-                               decodeTable [i] = Byte.MaxValue;\r
-                       }\r
-\r
-                       for (int i=0; i < len; i++) {\r
-                               char ch = ALPHABET [i];\r
-                               decodeTable [(int)ch] = (byte) i;\r
-                       }\r
-               }\r
-*/
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/CipherMode.cs b/mcs/class/corlib/System.Security.Cryptography/CipherMode.cs
deleted file mode 100644 (file)
index 553e1fc..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Security.Cryptography CipherMode enumeration
-//
-// Authors:
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//
-// Copyright 2001 by Matthew S. Ford.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [Serializable]
-       [ComVisible (true)]
-       public enum CipherMode {
-               CBC = 0x1, // Cipher Block Chaining
-               ECB, // Electronic Codebook
-               OFB, // Output Feedback
-               CFB, // Cipher Feedback
-               CTS, // Cipher Text Stealing
-       }
-}
-
index 74e4d73a1f708595d5b6c246cfe7d3d402b6328e..35a574660c91850c13e2d4d65d0ed5d1c1c54f6e 100644 (file)
@@ -41,6 +41,7 @@ using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Security.Permissions;
 using System.Text;
+using System.Security.Cryptography.X509Certificates;
 
 using Mono.Xml;
 
@@ -511,6 +512,11 @@ public partial class CryptoConfig {
                }
        }
 
+       internal static string MapNameToOID (string name, OidGroup oidGroup)
+       {
+               return MapNameToOID (name);
+       }
+
        public static string MapNameToOID (string name)
        {
                if (name == null)
@@ -527,11 +533,6 @@ public partial class CryptoConfig {
                return result;
        }
 
-       [MonoLimitation ("nothing is FIPS certified so it never make sense to restrict to this (empty) subset")]
-       public static bool AllowOnlyFipsAlgorithms {
-               get { return false; }
-       }
-
        public static void AddAlgorithm (Type algorithm, params string[] names)
        {
                if (algorithm == null)
index 32bf463ec4deeae42495f5c5f2ae381b83d0c02d..b9cc49f146459c7400eb5504861e325533978fc1 100755 (executable)
@@ -185,6 +185,11 @@ namespace System.Security.Cryptography {
                        }
                }
 
+               internal static string MapNameToOID (string name, object arg)
+               {
+                       return MapNameToOID (name);
+               }
+
                public static string MapNameToOID (string name)
                {
                        if (name == null)
index d3fda3b349ba317fc5ada3e2074880c33da3c409..f4a9d9ca41978f07345445606121a84989491a89 100644 (file)
@@ -124,6 +124,11 @@ namespace System.Security.Cryptography {
                        }
                        return num;
                }
+
+               [MonoLimitation ("nothing is FIPS certified so it never make sense to restrict to this (empty) subset")]
+               public static bool AllowOnlyFipsAlgorithms {
+                       get { return false; }
+               }
        }
 }
 
diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs b/mcs/class/corlib/System.Security.Cryptography/CryptoStream.cs
deleted file mode 100644 (file)
index c705a3d..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-//
-// System.Security.Cryptography CryptoStream.cs
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class CryptoStream : Stream {
-               private Stream _stream;
-               private ICryptoTransform _transform;
-               private CryptoStreamMode _mode;
-               private byte[] _currentBlock;
-               private bool _disposed;
-               private bool _flushedFinalBlock;
-               private int _partialCount;
-               private bool _endOfStream;
-
-               private byte[] _waitingBlock;
-               private int _waitingCount;
-
-               private byte[] _transformedBlock;
-               private int _transformedPos;
-               private int _transformedCount;
-
-               private byte[] _workingBlock;
-               private int _workingCount;
-               
-               public CryptoStream (Stream stream, ICryptoTransform transform, CryptoStreamMode mode)
-               {
-                       if (mode == CryptoStreamMode.Read) {
-                               if (!stream.CanRead)
-                                       throw new ArgumentException (Locale.GetText ("Can't read on stream"));
-                       } else if (mode == CryptoStreamMode.Write) {
-                               if (!stream.CanWrite)
-                                       throw new ArgumentException (Locale.GetText ("Can't write on stream"));
-                       } else {
-                               throw new ArgumentException ("mode");
-                       }
-                       _stream = stream;
-                       _transform = transform;
-                       _mode = mode;
-                       _disposed = false;
-                       if (transform != null) {
-                               _workingBlock = new byte [transform.InputBlockSize];
-                       }
-               }
-
-               public override bool CanRead {
-                       get { return (_mode == CryptoStreamMode.Read); }
-               }
-
-               public override bool CanSeek {
-                       get { return false; }
-               }
-
-               public override bool CanWrite {
-                       get { return (_mode == CryptoStreamMode.Write); }
-               }
-               
-               public override long Length {
-                       get { throw new NotSupportedException ("Length"); }
-               }
-
-               public override long Position {
-                       get { throw new NotSupportedException ("Position"); }
-                       set { throw new NotSupportedException ("Position"); }
-               }
-
-               public void Clear () 
-               {
-                       Close ();
-               }
-
-               public override int Read ([In,Out] byte[] buffer, int offset, int count)
-               {
-                       if (_mode != CryptoStreamMode.Read) {
-                               throw new NotSupportedException (
-                                       Locale.GetText ("not in Read mode"));
-                       }
-                       if (offset < 0) {
-                               throw new ArgumentOutOfRangeException ("offset", 
-                                       Locale.GetText ("negative"));
-                       }
-                       if (count < 0) {
-                               throw new ArgumentOutOfRangeException ("count",
-                                       Locale.GetText ("negative"));
-                       }
-                       // yes - buffer.Length will throw a NullReferenceException if buffer is null
-                       // but by doing so we match MS implementation
-                       // re-ordered to avoid integer overflow
-                       if (offset > buffer.Length - count) {
-                               throw new ArgumentException ("(offset+count)", 
-                                       Locale.GetText ("buffer overflow"));
-                       }
-                       // for some strange reason ObjectDisposedException isn't throw
-                       if (_workingBlock == null) {
-                               return 0;
-                       }
-
-                       int result = 0;
-                       if ((count == 0) || ((_transformedPos == _transformedCount) && (_endOfStream)))
-                               return result;
-
-                       if (_waitingBlock == null) {
-                               _transformedBlock = new byte [_transform.OutputBlockSize << 2];
-                               _transformedPos = 0;
-                               _transformedCount = 0;
-                               _waitingBlock = new byte [_transform.InputBlockSize];
-                               _waitingCount = _stream.Read (_waitingBlock, 0, _waitingBlock.Length);
-                       }
-                       
-                       while (count > 0) {
-                               // transformed but not yet returned
-                               int length = (_transformedCount - _transformedPos);
-
-                               // need more data - at least one full block must be available if we haven't reach the end of the stream
-                               if (length < _transform.InputBlockSize) {
-                                       int transformed = 0;
-
-                                       // load a new block
-                                       _workingCount = _stream.Read (_workingBlock, 0, _transform.InputBlockSize);
-                                       _endOfStream = (_workingCount < _transform.InputBlockSize);
-
-                                       if (!_endOfStream) {
-                                               // transform the waiting block
-                                               transformed = _transform.TransformBlock (_waitingBlock, 0, _waitingBlock.Length, _transformedBlock, _transformedCount);
-
-                                               // transfer temporary to waiting
-                                               Buffer.BlockCopy (_workingBlock, 0, _waitingBlock, 0, _workingCount);
-                                               _waitingCount = _workingCount;
-                                       }
-                                       else {
-                                               if (_workingCount > 0) {
-                                                       // transform the waiting block
-                                                       transformed = _transform.TransformBlock (_waitingBlock, 0, _waitingBlock.Length, _transformedBlock, _transformedCount);
-
-                                                       // transfer temporary to waiting
-                                                       Buffer.BlockCopy (_workingBlock, 0, _waitingBlock, 0, _workingCount);
-                                                       _waitingCount = _workingCount;
-
-                                                       length += transformed;
-                                                       _transformedCount += transformed;
-                                               }
-                                               if (!_flushedFinalBlock) {
-                                                       byte[] input = _transform.TransformFinalBlock (_waitingBlock, 0, _waitingCount);
-                                                       transformed = input.Length;
-                                                       Buffer.BlockCopy (input, 0, _transformedBlock, _transformedCount, input.Length);
-                                                       // zeroize this last block
-                                                       Array.Clear (input, 0, input.Length);
-                                                       _flushedFinalBlock = true;
-                                               }
-                                       }
-
-                                       length += transformed;
-                                       _transformedCount += transformed;
-                               }
-                               // compaction
-                               if (_transformedPos > _transform.OutputBlockSize) {
-                                       Buffer.BlockCopy (_transformedBlock, _transformedPos, _transformedBlock, 0, length);
-                                       _transformedCount -= _transformedPos;
-                                       _transformedPos = 0;
-                               }
-
-                               length = ((count < length) ? count : length);
-                               if (length > 0) {
-                                       Buffer.BlockCopy (_transformedBlock, _transformedPos, buffer, offset, length);
-                                       _transformedPos += length;
-
-                                       result += length;
-                                       offset += length;
-                                       count -= length;
-                               }
-
-                               // there may not be enough data in the stream for a 
-                               // complete block
-                               if (((length != _transform.InputBlockSize) && (_waitingCount != _transform.InputBlockSize)) || (_endOfStream)) {
-                                       count = 0;      // no more data can be read
-                               }
-                       }
-                       
-                       return result;
-               }
-
-               public override void Write (byte[] buffer, int offset, int count)
-               {
-                       if (_mode != CryptoStreamMode.Write) {
-                               throw new NotSupportedException (
-                                       Locale.GetText ("not in Write mode"));
-                       }
-                       if (offset < 0) { 
-                               throw new ArgumentOutOfRangeException ("offset", 
-                                       Locale.GetText ("negative"));
-                       }
-                       if (count < 0) {
-                               throw new ArgumentOutOfRangeException ("count", 
-                                       Locale.GetText ("negative"));
-                       }
-                       // re-ordered to avoid integer overflow
-                       if (offset > buffer.Length - count) {
-                               throw new ArgumentException ("(offset+count)", 
-                                       Locale.GetText ("buffer overflow"));
-                       }
-
-                       if (_stream == null)
-                               throw new ArgumentNullException ("inner stream was disposed");
-
-                       int buffer_length = count;
-
-                       // partial block (in progress)
-                       if ((_partialCount > 0) && (_partialCount != _transform.InputBlockSize)) {
-                               int remainder = _transform.InputBlockSize - _partialCount;
-                               remainder = ((count < remainder) ? count : remainder);
-                               Buffer.BlockCopy (buffer, offset, _workingBlock, _partialCount, remainder);
-                               _partialCount += remainder;
-                               offset += remainder;
-                               count -= remainder;
-                       }
-
-                       int bufferPos = offset;
-                       while (count > 0) {
-                               if (_partialCount == _transform.InputBlockSize) {
-                                       if (_currentBlock == null)
-                                               _currentBlock = new byte [_transform.OutputBlockSize];
-
-                                       // use partial block to avoid (re)allocation
-                                       int len = _transform.TransformBlock (_workingBlock, 0, _partialCount, _currentBlock, 0);
-                                       _stream.Write (_currentBlock, 0, len);
-                                       // reset
-                                       _partialCount = 0;
-                               }
-
-                               if (_transform.CanTransformMultipleBlocks) {
-                                       // get the biggest multiple of InputBlockSize in count (without mul or div)
-                                       int size = (count & ~(_transform.InputBlockSize - 1));
-                                       int rem = (count & (_transform.InputBlockSize - 1));
-                                       // avoid reallocating memory at each call (reuse same buffer whenever possible)
-                                       int sizeWorkingBlock = (1 + size / _transform.InputBlockSize) * _transform.OutputBlockSize;
-                                       if (_workingBlock.Length < sizeWorkingBlock) {
-                                               Array.Clear (_workingBlock, 0, _workingBlock.Length);
-                                               _workingBlock = new byte [sizeWorkingBlock];
-                                       }
-
-                                       if (size > 0) {
-                                               int len = _transform.TransformBlock (buffer, offset, size, _workingBlock, 0);
-                                               _stream.Write (_workingBlock, 0, len);
-                                       }
-
-                                       if (rem > 0)
-                                               Buffer.BlockCopy (buffer, buffer_length - rem, _workingBlock, 0, rem);
-                                       _partialCount = rem;
-                                       count = 0; // the last block, if any, is in _workingBlock
-                               } else {
-                                       int len = Math.Min (_transform.InputBlockSize - _partialCount, count);
-                                       Buffer.BlockCopy (buffer, bufferPos, _workingBlock, _partialCount, len);
-                                       bufferPos += len;
-                                       _partialCount += len;
-                                       count -= len;
-                                       // here block may be full, but we wont TransformBlock it until next iteration
-                                       // so that the last block will be called in FlushFinalBlock using TransformFinalBlock
-                               }
-                       }
-               }
-
-               public override void Flush ()
-               {
-               }
-
-               public void FlushFinalBlock ()
-               {
-                       if (_flushedFinalBlock)
-                               throw new NotSupportedException (Locale.GetText ("This method cannot be called twice."));
-                       if (_disposed)
-                               throw new NotSupportedException (Locale.GetText ("CryptoStream was disposed."));
-
-                       _flushedFinalBlock = true;
-                       byte[] finalBuffer = _transform.TransformFinalBlock (_workingBlock, 0, _partialCount);
-                       if (_stream != null && _mode == CryptoStreamMode.Write) {
-                               _stream.Write (finalBuffer, 0, finalBuffer.Length);
-                       }
-                       if (_stream is CryptoStream) {
-                               // for cascading crypto streams
-                               (_stream as CryptoStream).FlushFinalBlock ();
-                       } else {
-                               _stream.Flush ();
-                       }
-                       // zeroize
-                       Array.Clear (finalBuffer, 0, finalBuffer.Length);
-               }
-
-               public override long Seek (long offset, SeekOrigin origin)
-               {
-                       throw new NotSupportedException ("Seek");
-               }
-               
-               // LAMESPEC: Exception NotSupportedException not documented
-               public override void SetLength (long value)
-               {
-                       throw new NotSupportedException ("SetLength");
-               }
-
-               protected override void Dispose (bool disposing) 
-               {
-                       if (!_disposed) {
-                               if (disposing) {
-                                       if (!_flushedFinalBlock) {
-                                               FlushFinalBlock ();
-                                       }
-
-                                       if (_stream != null)
-                                               _stream.Close ();
-                               }
-                               _disposed = true;
-                               // always cleared for security reason
-                               if (_workingBlock != null)
-                                       Array.Clear (_workingBlock, 0, _workingBlock.Length);
-                               if (_currentBlock != null)
-                                       Array.Clear (_currentBlock, 0, _currentBlock.Length);
-                               if (disposing) {
-                                       _stream = null;
-                                       _workingBlock = null;
-                                       _currentBlock = null;
-                               }
-                       }
-               }
-               
-               public bool HasFlushedFinalBlock {
-                       get { return _flushedFinalBlock; }
-               }
-               
-               public override Task FlushAsync (CancellationToken cancellationToken)
-               {
-                       return base.FlushAsync (cancellationToken);
-               }
-               
-               public override Task<int> ReadAsync (byte[] buffer, int offset, int count, CancellationToken cancellationToken)
-               {
-                       return base.ReadAsync (buffer, offset, count, cancellationToken);
-               }
-               
-               public override Task WriteAsync (byte[] buffer, int offset, int count, CancellationToken cancellationToken)
-               {
-                       return base.WriteAsync (buffer, offset, count, cancellationToken);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptoStreamMode.cs b/mcs/class/corlib/System.Security.Cryptography/CryptoStreamMode.cs
deleted file mode 100644 (file)
index ecdce1a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Security.Cryptography CryptoStreamMode enumeration
-//
-// Authors:
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//
-// Copyright 2001 by authors.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [Serializable]
-       [ComVisible (true)]
-       public enum CryptoStreamMode {
-               Read,
-               Write
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs b/mcs/class/corlib/System.Security.Cryptography/CryptographicException.cs
deleted file mode 100644 (file)
index 0e53399..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// System.Security.Cryptography.CryptographicException.cs
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [Serializable]
-       [ComVisible (true)]
-       public class CryptographicException : SystemException, _Exception {
-               public CryptographicException ()
-                       : base (Locale.GetText ("Error occurred during a cryptographic operation."))
-               {
-                       // default to CORSEC_E_CRYPTO
-                       // defined as EMAKEHR(0x1430) in CorError.h
-                       HResult = unchecked ((int)0x80131430);
-               }
-
-               public CryptographicException (int hr)
-               {
-                       HResult = hr;
-               }
-
-               public CryptographicException (string message)
-                       : base (message)
-               {
-                       HResult = unchecked ((int)0x80131430);
-               }
-
-               public CryptographicException (string message, Exception inner)
-                       : base (message, inner)
-               {
-                       HResult = unchecked ((int)0x80131430);
-               }
-
-               public CryptographicException (string format, string insert)
-                       : base (String.Format (format, insert))
-               {
-                       HResult = unchecked ((int)0x80131430);
-               }
-
-               protected CryptographicException (SerializationInfo info, StreamingContext context)
-                       : base (info, context) 
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs b/mcs/class/corlib/System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs
deleted file mode 100644 (file)
index 3f5d52e..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// System.Security.Cryptography.CryptographicUnexpectedOperationException.cs
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Runtime.Serialization;
-
-namespace System.Security.Cryptography {
-
-       [Serializable]
-       [ComVisible (true)]
-       public class CryptographicUnexpectedOperationException : CryptographicException {
-
-               public CryptographicUnexpectedOperationException ()
-                       : base (Locale.GetText ("Unexpected error occurred during a cryptographic operation."))
-               {
-                       // Default to CORSEC_E_CRYPTO_UNEX_OPER (CorError.h)
-                       HResult = unchecked ((int)0x80131431);
-               }
-
-               public CryptographicUnexpectedOperationException (string message)
-                       : base (message)
-               {
-                       HResult = unchecked ((int)0x80131431);
-               }
-
-               public CryptographicUnexpectedOperationException (string message, Exception inner)
-                       : base (message, inner)
-               {
-                       HResult = unchecked ((int)0x80131431);
-               }
-
-               public CryptographicUnexpectedOperationException (string format, string insert)
-                       : base (String.Format(format, insert))
-               {
-                       HResult = unchecked ((int)0x80131431);
-               }
-
-               protected CryptographicUnexpectedOperationException (SerializationInfo info, StreamingContext context)
-                       : base (info, context) 
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/CspParameters.cs b/mcs/class/corlib/System.Security.Cryptography/CspParameters.cs
deleted file mode 100644 (file)
index 0df9566..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-//\r
-// System.Security.Cryptography.CspParameters.cs\r
-//\r
-// Authors:\r
-//     Thomas Neidhart (tome@sbox.tugraz.at)\r
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//\r
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Security.AccessControl;
-\r
-namespace System.Security.Cryptography {\r
-\r
-       [ComVisible (true)]
-       public sealed class CspParameters {
-\r
-               private CspProviderFlags _Flags;\r
-       \r
-               public CspParameters () 
-                       : this (1)
-               {
-               }\r
-               \r
-               public CspParameters (int dwTypeIn) 
-                       : this (dwTypeIn, null) 
-               {
-               }\r
-               \r
-               public CspParameters (int dwTypeIn, string strProviderNameIn)
-                       : this (dwTypeIn, null, null)
-               {
-               }\r
-               \r
-               public CspParameters (int dwTypeIn, string strProviderNameIn, string strContainerNameIn)\r
-               {\r
-                       ProviderType = dwTypeIn;\r
-                       ProviderName = strProviderNameIn;\r
-                       KeyContainerName = strContainerNameIn;\r
-                       \r
-                       // not defined in specs, only tested from M$ impl\r
-                       KeyNumber = -1;\r
-               }\r
-\r
-               public string KeyContainerName;\r
-               \r
-               public int KeyNumber;\r
-               \r
-               public string ProviderName;\r
-               \r
-               public int ProviderType;\r
-               \r
-               public CspProviderFlags Flags {\r
-                       get { return _Flags; }\r
-                       set { _Flags = value; }\r
-               }
-
-               private SecureString _password;
-               private IntPtr _windowHandle;
-
-               public CspParameters (int providerType, string providerName, string keyContainerName, 
-                       CryptoKeySecurity cryptoKeySecurity, IntPtr parentWindowHandle)
-                       : this (providerType, providerName, keyContainerName)
-               {
-                       if (cryptoKeySecurity != null)
-                               CryptoKeySecurity = cryptoKeySecurity;
-                       _windowHandle = parentWindowHandle;
-               }
-
-               public CspParameters (int providerType, string providerName, string keyContainerName, 
-                       CryptoKeySecurity cryptoKeySecurity, SecureString keyPassword)
-                       : this (providerType, providerName, keyContainerName)
-               {
-                       if (cryptoKeySecurity != null)
-                               CryptoKeySecurity = cryptoKeySecurity;
-                       _password = keyPassword;
-               }\r
-\r
-               internal CspParameters(CspParameters parameters)\r
-                       : this(parameters.ProviderType, parameters.ProviderName, parameters.KeyContainerName)\r
-               {\r
-                       if (parameters.CryptoKeySecurity != null)\r
-                               CryptoKeySecurity = parameters.CryptoKeySecurity;\r
-\r
-                       _Flags = parameters.Flags;\r
-                       KeyNumber = parameters.KeyNumber;\r
-                       _password = parameters.KeyPassword;\r
-                       _windowHandle = parameters.ParentWindowHandle;\r
-               }\r
-
-               [MonoTODO ("access control isn't implemented")]
-               public CryptoKeySecurity CryptoKeySecurity {
-                       get { throw new NotImplementedException (); }
-                       set { throw new NotImplementedException (); }
-               }
-
-               public SecureString KeyPassword {
-                       get { return _password; }
-                       set { _password = value; }
-               }
-
-               public IntPtr ParentWindowHandle {
-                       get { return _windowHandle; }
-                       set { _windowHandle = value; }
-               }
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/CspProviderFlags.cs b/mcs/class/corlib/System.Security.Cryptography/CspProviderFlags.cs
deleted file mode 100644 (file)
index bb40c75..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.Security.Cryptography CspProviderFlags enumeration
-//
-// Authors:
-//     Thomas Neidhart <tome@sbox.tugraz.at>
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005, 2011 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [Flags]
-       [Serializable]
-       [ComVisible (true)]
-       public enum CspProviderFlags {
-               UseMachineKeyStore = 1,
-               UseDefaultKeyContainer = 2,
-               UseExistingKey = 8,
-               NoFlags = 0,
-               NoPrompt = 64,
-               UseArchivableKey = 16,
-               UseNonExportableKey = 4,
-               UseUserProtectedKey = 32,
-               CreateEphemeralKey = 128
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/DES.cs b/mcs/class/corlib/System.Security.Cryptography/DES.cs
deleted file mode 100644 (file)
index 7c042cd..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// System.Security.Cryptography.DES.cs
-//
-// Author:
-//     Sergey Chaban (serge@wildwestsoftware.com)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-// References:
-// a.  FIPS PUB 46-3: Data Encryption Standard
-//     http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf
-
-namespace System.Security.Cryptography {
-
-[ComVisible (true)]
-public abstract class DES : SymmetricAlgorithm {
-
-       private const int keySizeByte = 8;
-
-       protected DES ()
-       {
-               KeySizeValue = 64; 
-               BlockSizeValue = 64; 
-               FeedbackSizeValue = 8;
-
-               LegalKeySizesValue = new KeySizes[1];
-               LegalKeySizesValue[0] = new KeySizes(64, 64, 0);
-
-               LegalBlockSizesValue = new KeySizes[1];
-               LegalBlockSizesValue[0] = new KeySizes(64, 64, 0);
-       }
-
-       public static new DES Create () 
-       {
-#if FULL_AOT_RUNTIME
-               return new System.Security.Cryptography.DESCryptoServiceProvider ();
-#else
-               return Create ("System.Security.Cryptography.DES");
-#endif
-       }
-
-       public static new DES Create (string algName) 
-        {
-               return (DES) CryptoConfig.CreateFromName (algName);
-       }
-
-
-       // Ek(Ek(m)) = m
-       internal static readonly byte[,] weakKeys = {
-               { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
-               { 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F },
-               { 0xE1, 0xE1, 0xE1, 0xE1, 0xF1, 0xF1, 0xF1, 0xF1 },
-               { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
-       };
-
-       // Ek1(Ek2(m)) = m
-       internal static readonly byte[,] semiWeakKeys = {
-               { 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0E }, // map to packed key 011F011F010E010E
-               { 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF0 }, // map to packed key 01E001E001F101F1
-               { 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE }, // map to packed key 01FE01FE01FE01FE
-               { 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0E, 0x00 }, // map to packed key 1F011F010E010E01
-               { 0x1E, 0xE0, 0x1E, 0xE0, 0x0E, 0xF0, 0x0E, 0xF0 }, // map to packed key 1FE01FE00EF10EF1
-               { 0x1E, 0xFE, 0x1E, 0xFE, 0x0E, 0xFE, 0x0E, 0xFE }, // map to packed key 1FFE1FFE0EFE0EFE
-               { 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00 }, // map to packed key E001E001F101F101
-               { 0xE0, 0x1E, 0xE0, 0x1E, 0xF0, 0x0E, 0xF0, 0x0E }, // map to packed key E01FE01FF10EF10E
-               { 0xE0, 0xFE, 0xE0, 0xFE, 0xF0, 0xFE, 0xF0, 0xFE }, // map to packed key E0FEE0FEF1FEF1FE
-               { 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00 }, // map to packed key FE01FE01FE01FE01
-               { 0xFE, 0x1E, 0xFE, 0x1E, 0xFE, 0x0E, 0xFE, 0x0E }, // map to packed key FE1FFE1FFE0EFE0E
-               { 0xFE, 0xE0, 0xFE, 0xE0, 0xFE, 0xF0, 0xFE, 0xF0 }, // map to packed key FEE0FEE0FEF1FEF1
-       };
-
-       public static bool IsWeakKey (byte[] rgbKey) 
-       {
-               if (rgbKey == null)
-                       throw new CryptographicException (Locale.GetText ("Null Key"));
-               if (rgbKey.Length != keySizeByte)
-                       throw new CryptographicException (Locale.GetText ("Wrong Key Length"));
-
-               // (fast) pre-check with "weak bytes"
-               for (int i=0; i < rgbKey.Length; i++) {
-                       switch (rgbKey [i] | 0x11) {
-                               case 0x11:
-                               case 0x1F:
-                               case 0xF1:
-                               case 0xFF:
-                                       break;
-                               default:
-                                       return false;
-                       }
-               }
-
-               // compare with known weak keys
-               for (int i=0; i < (weakKeys.Length >> 3); i++) {
-                       int j = 0;
-                       for (; j < rgbKey.Length; j++) {
-                               if ((rgbKey [j] ^ weakKeys [i,j]) > 1)
-                                       break;
-                       }
-                       if (j==8)
-                               return true;
-               }
-               return false;
-       }
-
-       public static bool IsSemiWeakKey (byte[] rgbKey)
-       {
-               if (rgbKey == null)
-                       throw new CryptographicException (Locale.GetText ("Null Key"));
-               if (rgbKey.Length != keySizeByte)
-                       throw new CryptographicException (Locale.GetText ("Wrong Key Length"));
-
-               // (fast) pre-check with "weak bytes"
-               for (int i=0; i < rgbKey.Length; i++) {
-                       switch (rgbKey [i] | 0x11) {
-                               case 0x11:
-                               case 0x1F:
-                               case 0xF1:
-                               case 0xFF:
-                                       break;
-                               default:
-                                       return false;
-                       }
-               }
-
-               // compare with known weak keys
-               for (int i=0; i < (semiWeakKeys.Length >> 3); i++) {
-                       int j = 0;
-                       for (; j < rgbKey.Length; j++) {
-                               if ((rgbKey [j] ^ semiWeakKeys [i,j]) > 1)
-                                       break;
-                       }
-                       if (j==8)
-                               return true;
-               }
-               return false;
-       }
-
-       public override byte[] Key {
-               get {
-                       if (KeyValue == null) {
-                               // GenerateKey is responsible to return a valid key
-                               // e.g. no weak or semi-weak keys
-                               GenerateKey ();
-                       }
-                       return (byte[]) KeyValue.Clone ();
-               }
-               set {
-                       if (value == null)
-                               throw new ArgumentNullException ("Key");
-                       if (value.Length != keySizeByte)
-                               throw new ArgumentException (Locale.GetText ("Wrong Key Length"));
-                       if (IsWeakKey (value))
-                               throw new CryptographicException (Locale.GetText ("Weak Key"));
-                       if (IsSemiWeakKey (value))
-                               throw new CryptographicException (Locale.GetText ("Semi Weak Key"));
-
-                       KeyValue = (byte[]) value.Clone ();
-               }
-       }
-}
-
-}
-
index 452b278f9c16c159e1d82d45a89cee9477925c1a..00248cd8c3eb8812a001aeeb63a5d0ba79257189 100644 (file)
@@ -655,34 +655,6 @@ namespace System.Security.Cryptography {
                                key = KeyBuilder.Key (DESTransform.KEY_BYTE_SIZE);
                        return key;
                }
-       } 
-       
-       [ComVisible (true)]
-       public sealed class DESCryptoServiceProvider : DES {
-       
-               public DESCryptoServiceProvider ()
-               {
-               }
-       
-               public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV) 
-               {
-                       return new DESTransform (this, false, rgbKey, rgbIV);
-               }
-       
-               public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV) 
-               {
-                       return new DESTransform (this, true, rgbKey, rgbIV);
-               }
-       
-               public override void GenerateIV () 
-               {
-                       IVValue = KeyBuilder.IV (DESTransform.BLOCK_BYTE_SIZE);
-               }
-       
-               public override void GenerateKey () 
-               {
-                       KeyValue = DESTransform.GetStrongKey ();
-               }
        }
 }
 
diff --git a/mcs/class/corlib/System.Security.Cryptography/DSA.cs b/mcs/class/corlib/System.Security.Cryptography/DSA.cs
deleted file mode 100644 (file)
index 73abc4d..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-// System.Security.Cryptography.DSA.cs class implementation
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005, 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Text;
-
-using Mono.Xml;
-using Mono.Security;
-
-// References:
-// a.  FIPS PUB 186-2: Digital Signature Standard (DSS) 
-//     http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class DSA : AsymmetricAlgorithm {
-
-               // Constructor visibility fixed in Fx 2.0
-               protected DSA ()
-               {
-               }
-
-               public static new DSA Create ()
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.DSACryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.DSA");
-#endif
-               }
-
-               public static new DSA Create (string algName) 
-               {
-                       return (DSA) CryptoConfig.CreateFromName (algName);
-               }
-               
-               public abstract byte[] CreateSignature (byte[] rgbHash);
-               
-               public abstract DSAParameters ExportParameters (bool includePrivateParameters);
-
-               internal void ZeroizePrivateKey (DSAParameters parameters)
-               {
-                       if (parameters.X != null)
-                               Array.Clear (parameters.X, 0, parameters.X.Length);
-               }
-
-               public override void FromXmlString (string xmlString) 
-               {
-                       if (xmlString == null)
-                               throw new ArgumentNullException ("xmlString");
-                       
-                       DSAParameters dsaParams = new DSAParameters ();
-                       try {
-                               dsaParams.P = GetNamedParam (xmlString, "P");
-                               dsaParams.Q = GetNamedParam (xmlString, "Q");
-                               dsaParams.G = GetNamedParam (xmlString, "G");
-                               dsaParams.J = GetNamedParam (xmlString, "J");
-                               dsaParams.Y = GetNamedParam (xmlString, "Y");
-                               dsaParams.X = GetNamedParam (xmlString, "X");
-                               dsaParams.Seed = GetNamedParam (xmlString, "Seed");
-                               byte[] counter = GetNamedParam (xmlString, "PgenCounter");
-                               if (counter != null) {
-                                       byte[] counter4b = new byte [4]; // always 4 bytes
-                                       Buffer.BlockCopy (counter, 0, counter4b, 0, counter.Length);
-                                       dsaParams.Counter = BitConverterLE.ToInt32 (counter4b, 0);
-                               }
-                               ImportParameters (dsaParams);
-                       }
-                       catch {
-                               ZeroizePrivateKey (dsaParams);
-                               throw;
-                       }
-                       finally {
-                               ZeroizePrivateKey (dsaParams);
-                       }
-               }
-               
-               public abstract void ImportParameters (DSAParameters parameters);
-
-               // note: using SecurityElement.ToXml wouldn't generate the same string as the MS implementation
-               public override string ToXmlString (bool includePrivateParameters)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       DSAParameters dsaParams = ExportParameters (includePrivateParameters);
-                       try {
-                               sb.Append ("<DSAKeyValue>");
-                               
-                               sb.Append ("<P>");
-                               sb.Append (Convert.ToBase64String (dsaParams.P));
-                               sb.Append ("</P>");
-                               
-                               sb.Append ("<Q>");
-                               sb.Append (Convert.ToBase64String (dsaParams.Q));
-                               sb.Append ("</Q>");
-
-                               sb.Append ("<G>");
-                               sb.Append (Convert.ToBase64String (dsaParams.G));
-                               sb.Append ("</G>");
-
-                               sb.Append ("<Y>");
-                               sb.Append (Convert.ToBase64String (dsaParams.Y));
-                               sb.Append( "</Y>");
-
-                               if (dsaParams.J != null) {
-                                       // if J wasn't imported then it's not exported and neither 
-                                       // is part of the XML output
-                                       sb.Append ("<J>");
-                                       sb.Append (Convert.ToBase64String (dsaParams.J));
-                                       sb.Append ("</J>");
-                               }
-
-                               if (dsaParams.Seed != null) {
-                                       sb.Append ("<Seed>");
-                                       sb.Append (Convert.ToBase64String (dsaParams.Seed));
-                                       sb.Append ("</Seed>");
-
-                                       sb.Append ("<PgenCounter>");
-                                       // the number of bytes is important (no matter == 0x00)
-                                       if (dsaParams.Counter != 0) {
-                                               byte[] inArr = BitConverterLE.GetBytes (dsaParams.Counter);
-                                               int l = inArr.Length;
-                                               while (inArr[l-1] == 0x00)
-                                                       l--;
-
-                                               sb.Append (Convert.ToBase64String (inArr, 0, l));
-                                       } else {
-                                               sb.Append ("AA==");     // base64 encoded 0
-                                       }
-                                       sb.Append ("</PgenCounter>");
-                               }
-
-                               if (dsaParams.X != null) {
-                                       sb.Append ("<X>");
-                                       sb.Append (Convert.ToBase64String (dsaParams.X));
-                                       sb.Append ("</X>");
-                               }
-                               else if (includePrivateParameters) {
-                                       throw new ArgumentNullException ("X");
-                               }
-
-                               sb.Append ("</DSAKeyValue>");
-                       }
-                       catch {
-                               ZeroizePrivateKey (dsaParams);
-                               throw;
-                       }
-                                               
-                       return sb.ToString ();
-               }
-               
-               public abstract bool VerifySignature (byte[] rgbHash, byte[] rgbSignature);
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/DSAParameters.cs b/mcs/class/corlib/System.Security.Cryptography/DSAParameters.cs
deleted file mode 100644 (file)
index c1aef2e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//\r
-// System.Security.Cryptography DSAParameters.cs\r
-//\r
-// Author:\r
-//   Thomas Neidhart (tome@sbox.tugraz.at)\r
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-\r
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-\r
-       [Serializable]\r
-       [ComVisible (true)]
-       public struct DSAParameters {
-\r
-               public int Counter;\r
-               \r
-               public byte[] G;\r
-               \r
-               public byte[] J;\r
-               \r
-               public byte[] P;\r
-               \r
-               public byte[] Q;\r
-               \r
-               public byte[] Seed;\r
-               \r
-               [NonSerialized]\r
-               public byte[] X;\r
-               \r
-               public byte[] Y;\r
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/DSASignatureDeformatter.cs b/mcs/class/corlib/System.Security.Cryptography/DSASignatureDeformatter.cs
deleted file mode 100644 (file)
index 6a7284a..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// System.Security.Cryptography DSASignatureDeformatter.cs
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class DSASignatureDeformatter : AsymmetricSignatureDeformatter {
-       
-               private DSA dsa;
-       
-               public DSASignatureDeformatter () : base ()
-               {
-               }
-
-               public DSASignatureDeformatter (AsymmetricAlgorithm key) : base ()
-               {
-                       SetKey (key);
-               }
-
-               public override void SetHashAlgorithm (string strName)
-               {
-                       if (strName == null)
-                               throw new ArgumentNullException ("strName");
-
-                       var instance = PKCS1.CreateFromName (strName) as SHA1;
-                       if (instance == null)
-                               throw new CryptographicUnexpectedOperationException (
-                                       Locale.GetText ("DSA requires SHA1"));
-               }
-
-               public override void SetKey (AsymmetricAlgorithm key)
-               {
-                       if (key != null) {
-                               // this will throw a InvalidCastException if this isn't
-                               // a DSA keypair
-                               dsa = (DSA) key;
-                       }
-                       else
-                               throw new ArgumentNullException ("key");
-               }
-
-               public override bool VerifySignature (byte[] rgbHash, byte[] rgbSignature)
-               {
-                       if (dsa == null) {
-                               throw new CryptographicUnexpectedOperationException (
-                                       Locale.GetText ("missing key"));
-                       }
-
-                       return dsa.VerifySignature (rgbHash, rgbSignature);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/DSASignatureFormatter.cs b/mcs/class/corlib/System.Security.Cryptography/DSASignatureFormatter.cs
deleted file mode 100644 (file)
index d4e7753..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// System.Security.Cryptography DSASignatureFormatter.cs
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class DSASignatureFormatter : AsymmetricSignatureFormatter {
-       
-               private DSA dsa;
-
-               public DSASignatureFormatter () : base ()
-               {
-               }
-
-               public DSASignatureFormatter (AsymmetricAlgorithm key) : base ()
-               {
-                       SetKey (key);
-               }
-
-               public override byte[] CreateSignature (byte[] rgbHash)
-               {
-                       if (dsa == null) {
-                               throw new CryptographicUnexpectedOperationException (
-                                       Locale.GetText ("missing key"));
-                       }
-
-                       return dsa.CreateSignature (rgbHash);
-               }
-
-               public override void SetHashAlgorithm (string strName)
-               {
-                       if (strName == null)
-                               throw new ArgumentNullException ("strName");
-
-                       var instance = PKCS1.CreateFromName (strName) as SHA1;
-                       if (instance == null)
-                               throw new CryptographicUnexpectedOperationException (
-                                       Locale.GetText ("DSA requires SHA1"));
-               }
-
-               public override void SetKey (AsymmetricAlgorithm key)
-               {
-                       if (key != null) {
-                               // this will throw a InvalidCastException if this isn't
-                               // a DSA keypair
-                               dsa = (DSA) key;
-                       }
-                       else
-                               throw new ArgumentNullException ("key");
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/DeriveBytes.cs b/mcs/class/corlib/System.Security.Cryptography/DeriveBytes.cs
deleted file mode 100644 (file)
index 5c986fe..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//\r
-// System.Security.Cryptography DeriveBytes.cs\r
-//\r
-// Author:\r
-//   Thomas Neidhart (tome@sbox.tugraz.at)\r
-//\r
-// Copyright (C) 2004-2005, 2011 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-\r
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-\r
-       [ComVisible (true)]
-       public abstract class DeriveBytes : IDisposable {
-               protected DeriveBytes ()
-               {
-               }\r
-               \r
-               public abstract byte[] GetBytes (int cb);\r
-\r
-               public abstract void Reset ();
-
-               private bool m_disposed;
-
-               public void Dispose ()
-               {
-                       Dispose(true);
-               }
-
-               protected virtual void Dispose (bool disposing)
-               {
-                       if (!m_disposed) {
-                               if (disposing) {
-                                       // dispose managed objects
-                               }
-                               m_disposed = true;
-                       }
-               }
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/FromBase64Transform.cs b/mcs/class/corlib/System.Security.Cryptography/FromBase64Transform.cs
deleted file mode 100644 (file)
index b23967e..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-//
-// System.Security.Cryptography.FromBase64Transform.cs
-//
-// Authors:
-//     Sergey Chaban (serge@wildwestsoftware.com)
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [Serializable]
-       [ComVisible (true)]
-       public enum FromBase64TransformMode : int {
-               IgnoreWhiteSpaces,
-               DoNotIgnoreWhiteSpaces
-       }
-
-       [ComVisible (true)]
-       public class FromBase64Transform : ICryptoTransform {
-
-               private FromBase64TransformMode mode;
-               private byte[] accumulator;
-               private int accPtr;
-               private bool m_disposed;
-
-               private const byte TerminatorByte = ((byte) '=');
-
-               public FromBase64Transform ()
-                       : this (FromBase64TransformMode.IgnoreWhiteSpaces)
-               {
-               }
-
-               public FromBase64Transform (FromBase64TransformMode whitespaces)
-               {
-                       this.mode = whitespaces;
-                       accumulator = new byte [4];
-                       accPtr = 0;
-                       m_disposed = false;
-               }
-
-               ~FromBase64Transform () 
-               {
-                       Dispose (false);
-               }
-
-               public bool CanTransformMultipleBlocks {
-                       get { return false; }
-               }
-
-               public virtual bool CanReuseTransform {
-                       get { return true; }
-               }
-
-               public int InputBlockSize {
-                       get { return 1; }
-               }
-
-               public int OutputBlockSize {
-                       get { return 3; }
-               }
-
-               public void Clear() 
-               {
-                       Dispose (true);
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               protected virtual void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               // zeroize data
-                               if (accumulator != null)
-                                       Array.Clear (accumulator, 0, accumulator.Length);
-
-                               // dispose unmanaged objects
-                               if (disposing) {
-                                       // dispose managed objects
-                                       accumulator = null;
-                               }
-                               m_disposed = true;
-                       }
-               }
-
-               private byte[] lookupTable; 
-
-               private byte lookup (byte input)
-               {
-                       if (input >= lookupTable.Length) {
-                               throw new FormatException (
-                                       Locale.GetText ("Invalid character in a Base-64 string."));
-                       }
-
-                       byte ret = lookupTable [input];
-                       if (ret == Byte.MaxValue) {
-                               throw new FormatException (
-                                       Locale.GetText ("Invalid character in a Base-64 string."));
-                       }
-
-                       return ret;
-               }
-
-               private int ProcessBlock (byte[] output, int offset)
-               {
-                       int rem = 0;
-                       if (accumulator [3] == TerminatorByte)
-                               rem++;
-                       if (accumulator [2] == TerminatorByte)
-                               rem++;
-
-                       lookupTable = Base64Constants.DecodeTable;
-                       int b0,b1,b2,b3;
-
-                       switch (rem) {
-                       case 0:
-                               b0 = lookup (accumulator [0]);
-                               b1 = lookup (accumulator [1]);
-                               b2 = lookup (accumulator [2]);
-                               b3 = lookup (accumulator [3]);
-                               output [offset++] = (byte) ((b0 << 2) | (b1 >> 4));
-                               output [offset++] = (byte) ((b1 << 4) | (b2 >> 2));
-                               output [offset] = (byte) ((b2 << 6) | b3);
-                               break;
-                       case 1:
-                               b0 = lookup (accumulator [0]);
-                               b1 = lookup (accumulator [1]);
-                               b2 = lookup (accumulator [2]);
-                               output [offset++] = (byte) ((b0 << 2) | (b1 >> 4));
-                               output [offset] = (byte) ((b1 << 4) | (b2 >> 2));
-                               break;
-                       case 2:
-                               b0 = lookup (accumulator [0]);
-                               b1 = lookup (accumulator [1]);
-                               output [offset] = (byte) ((b0 << 2) | (b1 >> 4));
-                               break;
-                       }
-
-                       return (3 - rem);
-               }
-
-               private void CheckInputParameters (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-                       if (inputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("inputOffset", "< 0");
-                       if (inputCount > inputBuffer.Length)
-                               throw new OutOfMemoryException ("inputCount " + Locale.GetText ("Overflow"));
-                       if (inputOffset > inputBuffer.Length - inputCount)
-                               throw new ArgumentException ("inputOffset", Locale.GetText ("Overflow"));
-                       if (inputCount < 0)
-                               throw new OverflowException ("inputCount < 0");
-               }
-
-               public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("FromBase64Transform");
-                       // LAMESPEC: undocumented exceptions
-                       CheckInputParameters (inputBuffer, inputOffset, inputCount);
-                       if ((outputBuffer == null) || (outputOffset < 0))
-                               throw new FormatException ("outputBuffer");
-
-                       int res = 0;
-
-                       while (inputCount > 0) {
-                               if (accPtr < 4) {
-                                       byte b = inputBuffer [inputOffset++];
-                                       if (mode == FromBase64TransformMode.IgnoreWhiteSpaces) {
-                                               if (!Char.IsWhiteSpace ((char) b))
-                                                       accumulator [accPtr++] = b;
-                                       } else {
-                                               // don't ignore, we'll fail if bad data is provided
-                                               accumulator [accPtr++] = b;
-                                       }
-                               }
-                               if (accPtr == 4) {
-                                       res += ProcessBlock (outputBuffer, outputOffset);
-                                       outputOffset += 3;
-                                       accPtr = 0;
-                               }
-                               inputCount--;
-                       }
-
-                       return res;
-               }
-
-               public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("FromBase64Transform");
-                       // LAMESPEC: undocumented exceptions
-                       CheckInputParameters (inputBuffer, inputOffset, inputCount);
-
-                       int ws = 0;
-                       int terminator = 0;
-                       if (mode == FromBase64TransformMode.IgnoreWhiteSpaces) {
-                               // count whitespace inside string
-                               for (int i=inputOffset, j=0; j < inputCount; i++, j++) {
-                                       if (Char.IsWhiteSpace ((char)inputBuffer [i]))
-                                               ws++;
-                               }
-                               // no more (useful) data
-                               if (ws == inputCount)
-                                       return new byte [0];
-                               // there may be whitespace after the terminator
-                               int k = inputOffset + inputCount - 1;
-                               int n = Math.Min (2, inputCount);
-                               while (n > 0) {
-                                       char c = (char) inputBuffer [k--];
-                                       if (c == '=') {
-                                               terminator++;
-                                               n--;
-                                       } else if (Char.IsWhiteSpace (c)) {
-                                               continue;
-                                       } else {
-                                               break;
-                                       }
-                               }                                               
-                       } else {
-                               if (inputBuffer [inputOffset + inputCount - 1] == TerminatorByte)
-                                       terminator++;
-                               if (inputBuffer [inputOffset + inputCount - 2] == TerminatorByte)
-                                       terminator++;
-                       }
-                       // some terminators could already be in the accumulator
-                       if ((inputCount < 4) && (terminator < 2)) {
-                               if ((accPtr > 2) && (accumulator [3] == TerminatorByte))
-                                       terminator++;
-                               if ((accPtr > 1) && (accumulator [2] == TerminatorByte))
-                                       terminator++;
-                       }
-
-                       int count = ((accPtr + inputCount - ws) >> 2) * 3 - terminator;
-                       if (count <= 0)
-                               return new byte [0];
-
-                       // allocate the "right" ammount (to avoid multiple allocation/copy)
-                       byte[] result = new byte [count];
-                       TransformBlock (inputBuffer, inputOffset, inputCount, result, 0);
-                       return result;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMAC.cs b/mcs/class/corlib/System.Security.Cryptography/HMAC.cs
deleted file mode 100644 (file)
index eb165dc..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-//
-// HMAC.cs: Generic HMAC inplementation
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       // Mostly copied from (internal) Mono.Security.Cryptography.HMACAlgorithm
-
-       // References:
-       // a.   FIPS PUB 198: The Keyed-Hash Message Authentication Code (HMAC), 2002 March.
-       //      http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf
-       // b.   Internet RFC 2104, HMAC, Keyed-Hashing for Message Authentication
-       //      (include C source for HMAC-MD5)
-       //      http://www.ietf.org/rfc/rfc2104.txt
-       // c.   IETF RFC2202: Test Cases for HMAC-MD5 and HMAC-SHA-1
-       //      (include C source for HMAC-MD5 and HAMAC-SHA1)
-       //      http://www.ietf.org/rfc/rfc2202.txt
-       // d.   ANSI X9.71, Keyed Hash Message Authentication Code.
-       //      not free :-(
-       //      http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+X9%2E71%2D2000
-
-       [ComVisible (true)]
-       public abstract class HMAC : KeyedHashAlgorithm {
-
-               private bool _disposed;
-               private string _hashName;
-               private HashAlgorithm _algo;
-               private BlockProcessor _block;
-               private int _blockSizeValue; 
-
-               // constructors
-
-               protected HMAC () 
-               {
-                       _disposed = false;
-                       _blockSizeValue = 64;
-               }
-
-               // properties
-
-               protected int BlockSizeValue {
-                       get { return _blockSizeValue; }
-                       set { _blockSizeValue = value;  }
-               }
-
-               public string HashName {
-                       get { return _hashName; }
-                       set { 
-                               _hashName = value; 
-                               _algo = HashAlgorithm.Create (_hashName);
-                       }
-               }
-
-               public override byte[] Key { 
-                       get { return (byte[]) base.Key.Clone (); }
-                       set { 
-                               if ((value != null) && (value.Length > BlockSizeValue))
-                                       base.Key = _algo.ComputeHash (value);
-                               else
-                                       base.Key = (byte[]) value.Clone();
-                       }
-               }
-
-               internal BlockProcessor Block {
-                       get {
-                               if (_block == null)
-                                       _block = new BlockProcessor (_algo, (BlockSizeValue >> 3));
-                               return _block;
-                       }
-               }
-
-               // methods
-
-               private byte[] KeySetup (byte[] key, byte padding) 
-               {
-                       byte[] buf = new byte [BlockSizeValue];
-       
-                       for (int i = 0; i < key.Length; ++i)
-                               buf [i] = (byte) ((byte) key [i] ^ padding);
-       
-                       for (int i = key.Length; i < BlockSizeValue; ++i)
-                               buf [i] = padding;
-                       
-                       return buf;
-               }
-
-               protected override void Dispose (bool disposing) 
-               {
-                       if (!_disposed) {
-                               _disposed = true;
-                               base.Dispose (disposing);
-                       }
-               }
-
-               protected override void HashCore (byte[] rgb, int ib, int cb) 
-               {
-                       if (_disposed)
-                               throw new ObjectDisposedException ("HMACSHA1");
-
-                       if (State == 0) {
-                               Initialize ();
-                               State = 1;
-                       }
-                       Block.Core (rgb, ib, cb);
-               }
-
-               protected override byte[] HashFinal () 
-               {
-                       if (_disposed)
-                               throw new ObjectDisposedException ("HMAC");
-                       State = 0;
-
-                       Block.Final ();
-                       byte[] intermediate = _algo.Hash;
-       
-                       byte[] buf = KeySetup (Key, 0x5C);
-                       _algo.Initialize ();
-                       _algo.TransformBlock (buf, 0, buf.Length, buf, 0);
-                       _algo.TransformFinalBlock (intermediate, 0, intermediate.Length);
-                       byte[] hash = _algo.Hash;
-                       _algo.Initialize ();
-                       // zeroize sensitive data
-                       Array.Clear (buf, 0, buf.Length);       
-                       Array.Clear (intermediate, 0, intermediate.Length);
-                       return hash;
-               }
-
-               public override void Initialize () 
-               {
-                       if (_disposed)
-                               throw new ObjectDisposedException ("HMAC");
-
-                       State = 0;
-                       Block.Initialize ();
-                       byte[] buf = KeySetup (Key, 0x36);
-                       _algo.Initialize ();
-                       Block.Core (buf);
-                       // zeroize key
-                       Array.Clear (buf, 0, buf.Length);
-               }
-
-#if FULL_AOT_RUNTIME
-               // Allow using HMAC without bringing (most of) the whole crypto stack (using CryptoConfig)
-               // or even without bringing all the hash algorithms (using a common switch)
-               internal void SetHash (string name, HashAlgorithm instance)
-               {
-                       _hashName = name; 
-                       _algo = instance;
-               }
-#endif
-               // static methods
-
-               public static new HMAC Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.HMACSHA1 ();
-#else
-                       return Create ("System.Security.Cryptography.HMAC");
-#endif
-               }
-
-               public static new HMAC Create (string algorithmName) 
-               {
-                       return (HMAC) CryptoConfig.CreateFromName (algorithmName);
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMACMD5.cs b/mcs/class/corlib/System.Security.Cryptography/HMACMD5.cs
deleted file mode 100644 (file)
index 0f0ea84..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// HMACMD5.cs: HMAC implementation using MD5
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   Internet RFC 2104, HMAC, Keyed-Hashing for Message Authentication
-       //      (include C source for HMAC-MD5)
-       //      http://www.ietf.org/rfc/rfc2104.txt
-       // b.   IETF RFC2202: Test Cases for HMAC-MD5 and HMAC-SHA-1
-       //      (include C source for HMAC-MD5 and HAMAC-SHA1)
-       //      http://www.ietf.org/rfc/rfc2202.txt
-       [ComVisible (true)]
-       public class HMACMD5 : HMAC {
-
-               public HMACMD5 () 
-                       : this (KeyBuilder.Key (8))
-               {
-               }
-
-               public HMACMD5 (byte[] key) : base ()
-               {
-#if FULL_AOT_RUNTIME
-                       SetHash ("MD5", new MD5CryptoServiceProvider ());
-#else
-                       HashName = "MD5";
-#endif
-                       HashSizeValue = 128;
-                       Key = key;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMACRIPEMD160.cs b/mcs/class/corlib/System.Security.Cryptography/HMACRIPEMD160.cs
deleted file mode 100644 (file)
index f36b833..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// HMACRIPEMD160.cs: HMAC implementation using RIPEMD160
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class HMACRIPEMD160 : HMAC {
-
-               public HMACRIPEMD160 () 
-                       : this (KeyBuilder.Key (64))
-               {
-               }
-
-               public HMACRIPEMD160 (byte[] key) : base () 
-               {
-#if FULL_AOT_RUNTIME
-                       SetHash ("RIPEMD160", new RIPEMD160Managed ());
-#else
-                       HashName = "RIPEMD160";
-#endif
-                       HashSizeValue = 160;
-                       Key = key;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs b/mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs
deleted file mode 100644 (file)
index c5285cd..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// HMACSHA1.cs: Handles HMAC with SHA-1
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.IO;
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   FIPS PUB 198: The Keyed-Hash Message Authentication Code (HMAC), 2002 March.
-       //      http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf
-       // b.   Internet RFC 2104, HMAC, Keyed-Hashing for Message Authentication
-       //      (include C source for HMAC-MD5)
-       //      http://www.ietf.org/rfc/rfc2104.txt
-       // c.   IETF RFC2202: Test Cases for HMAC-MD5 and HMAC-SHA-1
-       //      (include C source for HMAC-MD5 and HAMAC-SHA1)
-       //      http://www.ietf.org/rfc/rfc2202.txt
-       // d.   ANSI X9.71, Keyed Hash Message Authentication Code.
-       //      not free :-(
-       //      http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+X9%2E71%2D2000
-
-       [ComVisible (true)]
-       public class HMACSHA1 : HMAC {
-
-               public HMACSHA1 ()
-                       : this (KeyBuilder.Key (64))
-               {
-               }
-
-               public HMACSHA1 (byte[] key)
-               {
-#if FULL_AOT_RUNTIME
-                       SetHash ("SHA1", new SHA1Managed ());
-#else
-                       HashName = "SHA1";
-#endif
-                       HashSizeValue = 160;
-                       Key = key;
-               }
-
-               public HMACSHA1 (byte[] key, bool useManagedSha1)
-               {
-                       HashName = "System.Security.Cryptography.SHA1" + (useManagedSha1 ? "Managed" : "CryptoServiceProvider");
-                       HashSizeValue = 160;
-                       Key = key;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMACSHA256.cs b/mcs/class/corlib/System.Security.Cryptography/HMACSHA256.cs
deleted file mode 100644 (file)
index 0682438..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// HMACSHA256.cs: HMAC implementation using SHA256
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class HMACSHA256 : HMAC {
-
-               public HMACSHA256 () 
-                       : this (KeyBuilder.Key (64))
-               {
-               }
-
-               public HMACSHA256 (byte[] key) : base () 
-               {
-#if FULL_AOT_RUNTIME
-                       SetHash ("SHA256", new SHA256Managed ());
-#else
-                       HashName = "SHA256";
-#endif
-                       HashSizeValue = 256;
-                       Key = key;
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMACSHA384.cs b/mcs/class/corlib/System.Security.Cryptography/HMACSHA384.cs
deleted file mode 100644 (file)
index 2ff07ee..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// HMACSHA384.cs: HMAC implementation using SHA384
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class HMACSHA384 : HMAC {
-
-               private bool legacy;
-
-#if !FULL_AOT_RUNTIME
-               static bool legacy_mode;
-
-               static HMACSHA384 ()
-               {
-                       legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
-               }
-#endif
-
-               public HMACSHA384 () 
-                       : this (KeyBuilder.Key (128))
-               {
-               }
-
-               public HMACSHA384 (byte[] key)
-               {
-#if FULL_AOT_RUNTIME
-                       BlockSizeValue = 128;
-                       SetHash ("SHA384", new SHA384Managed ());
-#else
-                       ProduceLegacyHmacValues = legacy_mode;
-                       HashName = "SHA384";
-#endif
-                       HashSizeValue = 384;
-                       Key = key;
-               }
-
-               // this property will appear in the next .NET service pack
-               // http://blogs.msdn.com/shawnfa/archive/2007/01/31/please-do-not-use-the-net-2-0-hmacsha512-and-hmacsha384-classes.aspx
-               public bool ProduceLegacyHmacValues {
-                       get { return legacy; }
-                       set {
-                               legacy = value;
-                               BlockSizeValue = legacy ? 64 : 128;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/HMACSHA512.cs b/mcs/class/corlib/System.Security.Cryptography/HMACSHA512.cs
deleted file mode 100644 (file)
index abfe523..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// HMACSHA512.cs: HMAC implementation using SHA512
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public class HMACSHA512 : HMAC {
-
-               private bool legacy;
-
-#if !FULL_AOT_RUNTIME
-               static bool legacy_mode;
-
-               static HMACSHA512 ()
-               {
-                       legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
-               }
-#endif
-
-               public HMACSHA512 ()
-                       : this (KeyBuilder.Key (128))
-               {
-               }
-
-               public HMACSHA512 (byte[] key)
-               {
-#if FULL_AOT_RUNTIME
-                       BlockSizeValue = 128;
-                       SetHash ("SHA512", new SHA512Managed ());
-#else
-                       ProduceLegacyHmacValues = legacy_mode;
-                       HashName = "SHA512";
-#endif
-                       HashSizeValue = 512;
-                       Key = key;
-               }
-
-               // this property will appear in the next .NET service pack
-               // http://blogs.msdn.com/shawnfa/archive/2007/01/31/please-do-not-use-the-net-2-0-hmacsha512-and-hmacsha384-classes.aspx
-               public bool ProduceLegacyHmacValues {
-                       get { return legacy; }
-                       set {
-                               legacy = value;
-                               BlockSizeValue = legacy ? 64 : 128;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/HashAlgorithm.cs b/mcs/class/corlib/System.Security.Cryptography/HashAlgorithm.cs
deleted file mode 100644 (file)
index e8404f2..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-//
-// System.Security.Cryptography.HashAlgorithm.cs
-//
-// Authors:
-//     Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Copyright 2001 by Matthew S. Ford.
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.IO;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class HashAlgorithm : ICryptoTransform {
-
-               protected internal byte[] HashValue;
-               protected int HashSizeValue;
-               protected int State;
-               private bool disposed;
-
-               protected HashAlgorithm () 
-               {
-                       disposed = false;
-               }
-
-               public virtual bool CanTransformMultipleBlocks {
-                       get { return true; }
-               }
-
-               public virtual bool CanReuseTransform {
-                       get { return true; }
-               }
-
-               public void Clear () 
-               {
-                       // same as System.IDisposable.Dispose() which is documented
-                       Dispose (true);
-               }
-
-               public byte[] ComputeHash (byte[] buffer) 
-               {
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-
-                       return ComputeHash (buffer, 0, buffer.Length);
-               }
-
-               public byte[] ComputeHash (byte[] buffer, int offset, int count) 
-               {
-                       if (disposed)
-                               throw new ObjectDisposedException ("HashAlgorithm");
-                       if (buffer == null)
-                               throw new ArgumentNullException ("buffer");
-                       if (offset < 0)
-                               throw new ArgumentOutOfRangeException ("offset", "< 0");
-                       if (count < 0)
-                               throw new ArgumentException ("count", "< 0");
-                       // ordered to avoid possible integer overflow
-                       if (offset > buffer.Length - count) {
-                               throw new ArgumentException ("offset + count", 
-                                       Locale.GetText ("Overflow"));
-                       }
-
-                       HashCore (buffer, offset, count);
-                       HashValue = HashFinal ();
-                       Initialize ();
-                       
-                       return HashValue;
-               }
-
-               public byte[] ComputeHash (Stream inputStream) 
-               {
-                       // don't read stream unless object is ready to use
-                       if (disposed)
-                               throw new ObjectDisposedException ("HashAlgorithm");
-
-                       byte[] buffer = new byte [4096];
-                       int len = inputStream.Read (buffer, 0, 4096);
-                       while (len > 0) {
-                               HashCore (buffer, 0, len);
-                               len = inputStream.Read (buffer, 0, 4096);
-                       }
-                       HashValue = HashFinal ();
-                       Initialize ();
-                       return HashValue;
-               }
-       
-               public static HashAlgorithm Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.SHA1CryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.HashAlgorithm");
-#endif
-               }
-       
-               public static HashAlgorithm Create (string hashName)
-               {
-                       return (HashAlgorithm) CryptoConfig.CreateFromName (hashName);
-               }
-       
-               public virtual byte[] Hash {
-                       get { 
-                               if (HashValue == null) {
-                                       throw new CryptographicUnexpectedOperationException (
-                                               Locale.GetText ("No hash value computed."));
-                               }
-                               return HashValue; 
-                       }
-               }
-       
-               protected abstract void HashCore (byte[] array, int ibStart, int cbSize);
-
-               protected abstract byte[] HashFinal ();
-
-               public virtual int HashSize {
-                       get { return HashSizeValue; }
-               }
-       
-               public abstract void Initialize ();
-
-               protected virtual void Dispose (bool disposing)
-               {
-                       disposed = true;
-               }
-       
-               public virtual int InputBlockSize {
-                       get { return 1; }
-               }
-       
-               public virtual int OutputBlockSize {
-                       get { return 1; }
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               // LAMESPEC: outputBuffer is optional in 2.0 (i.e. can be null).
-               // However a null outputBuffer would throw a ExecutionEngineException under 1.x
-               public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) 
-               {
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-
-                       if (inputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("inputOffset", "< 0");
-                       if (inputCount < 0)
-                               throw new ArgumentException ("inputCount");
-
-                       // ordered to avoid possible integer overflow
-                       if ((inputOffset < 0) || (inputOffset > inputBuffer.Length - inputCount))
-                               throw new ArgumentException ("inputBuffer");
-
-                       if (outputBuffer != null) {
-                               if (outputOffset < 0) {
-                                       throw new ArgumentOutOfRangeException ("outputOffset", "< 0");
-                               }
-                               // ordered to avoid possible integer overflow
-                               if (outputOffset > outputBuffer.Length - inputCount) {
-                                       throw new ArgumentException ("outputOffset + inputCount", 
-                                               Locale.GetText ("Overflow"));
-                               }
-                       }
-
-                       HashCore (inputBuffer, inputOffset, inputCount);
-
-                       if (outputBuffer != null)
-                               Buffer.BlockCopy (inputBuffer, inputOffset, outputBuffer, outputOffset, inputCount);
-
-                       return inputCount;
-               }
-       
-               public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-                       if (inputCount < 0)
-                               throw new ArgumentException ("inputCount");
-                       // ordered to avoid possible integer overflow
-                       if (inputOffset > inputBuffer.Length - inputCount) {
-                               throw new ArgumentException ("inputOffset + inputCount", 
-                                       Locale.GetText ("Overflow"));
-                       }
-
-                       byte[] outputBuffer = new byte [inputCount];
-                       
-                       // note: other exceptions are handled by Buffer.BlockCopy
-                       Buffer.BlockCopy (inputBuffer, inputOffset, outputBuffer, 0, inputCount);
-                       
-                       HashCore (inputBuffer, inputOffset, inputCount);
-                       HashValue = HashFinal ();
-                       Initialize ();
-                       
-                       return outputBuffer;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/ICryptoTransform.cs b/mcs/class/corlib/System.Security.Cryptography/ICryptoTransform.cs
deleted file mode 100644 (file)
index eed5e8c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.Security.Cryptography ICryptoTransform interface
-//
-// Authors:
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//
-// Copyright 2001 by Matthew S. Ford.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public interface ICryptoTransform : IDisposable {
-
-               bool CanReuseTransform {
-                       get;
-               }
-
-               bool CanTransformMultipleBlocks {
-                       get;
-               }
-
-               int InputBlockSize {
-                       get;
-               }
-
-               int OutputBlockSize {
-                       get;
-               }
-
-               int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset);
-
-               byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount);
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/KeySizes.cs b/mcs/class/corlib/System.Security.Cryptography/KeySizes.cs
deleted file mode 100644 (file)
index 5c5e60d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// System.Security.Cryptography KeySizes Class implementation
-//
-// Authors:
-//     Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//     Ben Maurer (bmaurer@users.sf.net)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Copyright 2001 by Matthew S. Ford.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-#if !NET_2_1
-       [ComVisible (true)]
-#endif
-       public sealed class KeySizes {
-               private int _maxSize;
-               private int _minSize;
-               private int _skipSize;
-
-               public KeySizes (int minSize, int maxSize, int skipSize) 
-               {
-                       _maxSize = maxSize;
-                       _minSize = minSize;
-                       _skipSize = skipSize;
-               }
-               
-               public int MaxSize {
-                       get { return _maxSize; }
-               }
-               
-               public int MinSize {
-                       get { return _minSize; }
-               }
-               
-               public int SkipSize {
-                       get { return _skipSize; }
-               }
-       
-               internal bool IsLegal (int keySize) 
-               {
-                       int ks = keySize - MinSize;
-                       bool result = ((ks >= 0) && (keySize <= MaxSize));
-                       return ((SkipSize == 0) ? result : (result && (ks % SkipSize == 0)));
-               }
-
-               internal static bool IsLegalKeySize (KeySizes[] legalKeys, int size) 
-               {
-                       foreach (KeySizes legalKeySize in legalKeys) {
-                               if (legalKeySize.IsLegal (size)) 
-                                       return true;
-                       }
-                       return false;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/KeyedHashAlgorithm.cs b/mcs/class/corlib/System.Security.Cryptography/KeyedHashAlgorithm.cs
deleted file mode 100644 (file)
index abab189..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// KeyedHashAlgorithm.cs: Handles keyed hash and MAC classes.
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-[ComVisible (true)]
-public abstract class KeyedHashAlgorithm : HashAlgorithm {
-       
-       protected byte[] KeyValue;
-
-       protected KeyedHashAlgorithm () : base () 
-       {
-               // create a random 64 bits key
-       }
-
-       public virtual byte[] Key {
-               get { 
-                       return (byte[]) KeyValue.Clone (); 
-               }
-               set { 
-                       // can't change the key during a hashing ops
-                       if (State != 0) {
-                               throw new CryptographicException (
-                                       Locale.GetText ("Key can't be changed at this state."));
-                       }
-                       // zeroize current key material for security
-                       ZeroizeKey ();
-                       // copy new key
-                       KeyValue = (byte[]) value.Clone (); 
-               }
-       }
-
-       protected override void Dispose (bool disposing)
-       {
-                // zeroize key material for security
-               ZeroizeKey();
-               // dispose managed resources
-                // none so far
-               // dispose unmanaged resources 
-                // none so far
-               // calling base class HashAlgorithm
-               base.Dispose (disposing);
-       }
-
-       private void ZeroizeKey() 
-       {
-               if (KeyValue != null)
-                       Array.Clear (KeyValue, 0, KeyValue.Length);
-       }
-
-       public static new KeyedHashAlgorithm Create ()
-       {
-#if FULL_AOT_RUNTIME
-               return new System.Security.Cryptography.HMACSHA1 ();
-#else
-               return Create ("System.Security.Cryptography.KeyedHashAlgorithm");
-#endif
-       }
-
-       public static new KeyedHashAlgorithm Create (string algName)
-       {
-               return (KeyedHashAlgorithm) CryptoConfig.CreateFromName (algName);
-       }
-}
-
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/MACTripleDES.cs b/mcs/class/corlib/System.Security.Cryptography/MACTripleDES.cs
deleted file mode 100644 (file)
index cd18c94..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-// MACTripleDES.cs: Handles MAC with TripleDES
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@xamarin.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   FIPS PUB 81: DES MODES OF OPERATION 
-       //      MAC: Appendix F (MACDES not MACTripleDES but close enough ;-)
-       //      http://www.itl.nist.gov/fipspubs/fip81.htm
-       
-       // LAMESPEC: MACTripleDES == MAC-CBC using TripleDES (not MAC-CFB).
-       [ComVisible (true)]
-       public class MACTripleDES: KeyedHashAlgorithm {
-       
-               private TripleDES tdes;
-               private MACAlgorithm mac;
-               private bool m_disposed;
-       
-               public MACTripleDES ()
-               {
-                       Setup (null, null);
-               }
-       
-               public MACTripleDES (byte[] rgbKey)
-               {
-                       if (rgbKey == null)
-                               throw new ArgumentNullException ("rgbKey");
-                       Setup (null, rgbKey);
-               }
-       
-               public MACTripleDES (string strTripleDES, byte[] rgbKey) 
-               {
-                       if (rgbKey == null)
-                               throw new ArgumentNullException ("rgbKey");
-                       if (strTripleDES == null)
-                               Setup (null, rgbKey);
-                       else
-                               Setup (TripleDES.Create (strTripleDES), rgbKey);
-               }
-       
-               private void Setup (TripleDES tripleDES, byte[] rgbKey) 
-               {
-                       tdes = tripleDES ?? TripleDES.Create ();
-                       // default padding (as using in Fx 1.0 and 1.1)
-                       tdes.Padding = PaddingMode.Zeros;
-                       // if rgbKey is null we keep the randomly generated key
-                       if (rgbKey != null) {
-                               // this way we get the TripleDES key validation (like weak
-                               // and semi-weak keys)
-                               tdes.Key = rgbKey;
-                       }
-                       HashSizeValue = tdes.BlockSize;
-                       // we use Key property to get the additional validations 
-                       // (from KeyedHashAlgorithm ancestor)
-                       Key = tdes.Key;
-                       mac = new MACAlgorithm (tdes);
-                       m_disposed = false;
-               }
-
-               [ComVisible (false)]
-               public PaddingMode Padding {
-                       get { return tdes.Padding; }
-                       set { tdes.Padding = value; }
-               }
-
-               protected override void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               // note: we ALWAYS zeroize keys (disposing or not)
-       
-                               // clear our copy of the secret key
-                               if (KeyValue != null)
-                                       Array.Clear (KeyValue, 0, KeyValue.Length);
-                               // clear the secret key (inside TripleDES)
-                               if (tdes != null)
-                                       tdes.Clear ();
-       
-                               if (disposing) {
-                                       // disposed managed stuff
-                                       KeyValue = null;
-                                       tdes = null;
-                               }
-                               // ancestor
-                               base.Dispose (disposing);
-                               m_disposed = true;
-                       }
-               }
-       
-               public override void Initialize () 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("MACTripleDES");
-                       State = 0;
-                       mac.Initialize (KeyValue);
-               }
-       
-               protected override void HashCore (byte[] rgbData, int ibStart, int cbSize) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("MACTripleDES");
-                       if (State == 0) {
-                               Initialize ();
-                               State = 1;
-                       }
-                       mac.Core (rgbData, ibStart, cbSize);
-               }
-       
-               protected override byte[] HashFinal () 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("MACTripleDES");
-                       State = 0;
-                       return mac.Final ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/MD5.cs b/mcs/class/corlib/System.Security.Cryptography/MD5.cs
deleted file mode 100644 (file)
index 4d41fc7..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//\r
-// System.Security.Cryptography.MD5.cs\r
-//\r
-// Authors:\r
-//     Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)\r
-//     Sebastien Pouliot (sebastien@ximian.com)
-//\r
-// Copyright 2001 by Matthew S. Ford.\r
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)\r
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-
-       [ComVisible (true)]
-       public abstract class MD5 : HashAlgorithm {\r
-
-               // Why is it protected when others abstract hash classes are public ?\r
-               protected MD5 () \r
-               {\r
-                       HashSizeValue = 128;\r
-               }\r
-       \r
-               public static new MD5 Create () \r
-               {\r
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.MD5CryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.MD5");\r
-#endif
-               }\r
-\r
-               public static new MD5 Create (string algName) \r
-               {\r
-                       return (MD5) CryptoConfig.CreateFromName (algName);\r
-               }\r
-       }\r
-}\r
-\r
index 2ea2a222423446f93f00b0c5935e77809325f7ef..80c8cb0159b081ada83af9f915e57976bd56790b 100644 (file)
@@ -50,7 +50,7 @@ namespace System.Security.Cryptography {
                        Initialize();
                }
 
-               ~MD5CryptoServiceProvider () 
+               ~MD5CryptoServiceProvider ()
                {
                        Dispose (false);
                }
@@ -59,22 +59,20 @@ namespace System.Security.Cryptography {
                {
                        if (_ProcessingBuffer != null) {
                                Array.Clear (_ProcessingBuffer, 0, _ProcessingBuffer.Length);
-                               _ProcessingBuffer = null;
                        }
                        if (_H != null) {
                                Array.Clear (_H, 0, _H.Length);
-                               _H = null;
                        }
                        if (buff != null) {
                                Array.Clear (buff, 0, buff.Length);
-                               buff = null;
                        }
+
+                       base.Dispose (disposing);
                }
 
                protected override void HashCore (byte[] rgb, int ibStart, int cbSize) 
                {
                        int i;
-                       State = 1;
 
                        if (_ProcessingBufferCount != 0) {
                                if (cbSize < (BLOCK_SIZE_BYTES - _ProcessingBufferCount)) {
diff --git a/mcs/class/corlib/System.Security.Cryptography/MaskGenerationMethod.cs b/mcs/class/corlib/System.Security.Cryptography/MaskGenerationMethod.cs
deleted file mode 100644 (file)
index 70cf715..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// MaskGenerationMethod.cs: Handles mask generation.
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class MaskGenerationMethod {
-
-               protected MaskGenerationMethod () 
-               {
-               }
-
-               [ComVisible (true)]
-               public abstract byte[] GenerateMask (byte[] rgbSeed, int cbReturn);
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/PKCS1MaskGenerationMethod.cs b/mcs/class/corlib/System.Security.Cryptography/PKCS1MaskGenerationMethod.cs
deleted file mode 100644 (file)
index 04502bd..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// PKCS1MaskGenerationMethod.cs: Handles PKCS#1 mask generation.
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   PKCS#1: RSA Cryptography Standard 
-       //      http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html
-       
-       [ComVisible (true)]
-       public class PKCS1MaskGenerationMethod : MaskGenerationMethod {
-
-               private string hashName;
-       
-               public PKCS1MaskGenerationMethod ()
-               {
-                       hashName = "SHA1";
-               }
-       
-               public string HashName 
-               {
-                       get { return hashName; }
-                       set { hashName = ((value == null) ? "SHA1" : value); }
-               }
-       
-               // This method is not compatible with the one provided by MS in
-               // framework 1.0 and 1.1 but IS compliant with PKCS#1 v.2.1 and
-               // work for implementing OAEP
-               public override byte[] GenerateMask (byte[] rgbSeed, int cbReturn)
-               {
-                       HashAlgorithm hash = HashAlgorithm.Create (hashName);
-                       return PKCS1.MGF1 (hash, rgbSeed, cbReturn);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/PaddingMode.cs b/mcs/class/corlib/System.Security.Cryptography/PaddingMode.cs
deleted file mode 100644 (file)
index 52c71ee..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.Security.Cryptography PaddingMode enumeration
-//
-// Authors:
-//     Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Copyright 2001 by Matthew S. Ford.
-// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-       [ComVisible (true)]
-       [Serializable]
-       public enum PaddingMode {
-               None = 0x1,
-               PKCS7,
-               Zeros,
-               ANSIX923,
-               ISO10126
-       }
-}
-       
diff --git a/mcs/class/corlib/System.Security.Cryptography/PasswordDeriveBytes.cs b/mcs/class/corlib/System.Security.Cryptography/PasswordDeriveBytes.cs
deleted file mode 100644 (file)
index 57d80ea..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-//
-// PasswordDeriveBytes.cs: Handles PKCS#5 key derivation using password
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace System.Security.Cryptography {
-
-// References:
-// a.  PKCS #5 - Password-Based Cryptography Standard 
-//     http://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html
-// b.  IETF RFC2898: PKCS #5: Password-Based Cryptography Specification Version 2.0
-//     http://www.rfc-editor.org/rfc/rfc2898.txt
-
-[ComVisible (true)]
-public class PasswordDeriveBytes : DeriveBytes {
-
-       private string HashNameValue;
-       private byte[] SaltValue;
-       private int IterationsValue;
-
-       private HashAlgorithm hash;
-       private int state;
-       private byte[] password;
-       private byte[] initial;
-       private byte[] output;
-       private int position;
-       private int hashnumber;
-
-       public PasswordDeriveBytes (string strPassword, byte[] rgbSalt) 
-       {
-               Prepare (strPassword, rgbSalt, "SHA1", 100);
-       }
-
-       public PasswordDeriveBytes (string strPassword, byte[] rgbSalt, CspParameters cspParams) 
-       {
-               Prepare (strPassword, rgbSalt, "SHA1", 100);
-               if (cspParams != null) {
-                       throw new NotSupportedException (
-                               Locale.GetText ("CspParameters not supported by Mono for PasswordDeriveBytes."));
-               }
-       }
-
-       public PasswordDeriveBytes (string strPassword, byte[] rgbSalt, string strHashName, int iterations) 
-       {
-               Prepare (strPassword, rgbSalt, strHashName, iterations);
-       }
-
-       public PasswordDeriveBytes (string strPassword, byte[] rgbSalt, string strHashName, int iterations, CspParameters cspParams) 
-       {
-               Prepare (strPassword, rgbSalt, strHashName, iterations);
-               if (cspParams != null) {
-                       throw new NotSupportedException (
-                               Locale.GetText ("CspParameters not supported by Mono for PasswordDeriveBytes."));
-               }
-       }
-
-       public PasswordDeriveBytes (byte[] password, byte[] salt) 
-       {
-               Prepare (password, salt, "SHA1", 100);
-       }
-
-       public PasswordDeriveBytes (byte[] password, byte[] salt, CspParameters cspParams) 
-       {
-               Prepare (password, salt, "SHA1", 100);
-               if (cspParams != null) {
-                       throw new NotSupportedException (
-                               Locale.GetText ("CspParameters not supported by Mono for PasswordDeriveBytes."));
-               }
-       }
-
-       public PasswordDeriveBytes (byte[] password, byte[] salt, string hashName, int iterations) 
-       {
-               Prepare (password, salt, hashName, iterations);
-       }
-
-       public PasswordDeriveBytes (byte[] password, byte[] salt, string hashName, int iterations, CspParameters cspParams) 
-       {
-               Prepare (password, salt, hashName, iterations);
-               if (cspParams != null) {
-                       throw new NotSupportedException (
-                               Locale.GetText ("CspParameters not supported by Mono for PasswordDeriveBytes."));
-               }
-       }
-
-       protected override void Dispose (bool disposing)
-       {
-               // zeroize buffer
-               if (initial != null) {
-                       Array.Clear (initial, 0, initial.Length);
-                       initial = null;
-               }
-               // zeroize temporary password storage
-               if (password != null) {
-                       Array.Clear (password, 0, password.Length);
-                       password = null;
-               }
-               base.Dispose (disposing);
-       }
-
-       private void Prepare (string strPassword, byte[] rgbSalt, string strHashName, int iterations) 
-       {
-               if (strPassword == null)
-                       throw new ArgumentNullException ("strPassword");
-
-               byte[] pwd = Encoding.UTF8.GetBytes (strPassword);
-               Prepare (pwd, rgbSalt, strHashName, iterations);
-               Array.Clear (pwd, 0, pwd.Length);
-       }
-
-       private void Prepare (byte[] password, byte[] rgbSalt, string strHashName, int iterations)
-       {
-               if (password == null)
-                       throw new ArgumentNullException ("password");
-
-               this.password = (byte[]) password.Clone ();
-
-               Salt = rgbSalt;
-
-               HashName = strHashName;
-               IterationCount = iterations;
-               state = 0;
-       }
-       public string HashName {
-               get { return HashNameValue; } 
-               set {
-                       if (value == null)
-                               throw new ArgumentNullException ("HashName");
-                       if (state != 0) {
-                               throw new CryptographicException (
-                                       Locale.GetText ("Can't change this property at this stage"));
-                       }
-                       HashNameValue = value;
-               }
-       }
-
-       public int IterationCount {
-               get { return IterationsValue; }
-               set {
-                       if (value < 1)
-                               throw new ArgumentOutOfRangeException ("> 0", "IterationCount");
-                       if (state != 0) {
-                               throw new CryptographicException (
-                                       Locale.GetText ("Can't change this property at this stage"));
-                       }
-                       IterationsValue = value;
-               }
-       }
-
-       public byte[] Salt {
-               get { 
-                       if (SaltValue == null)
-                               return null;
-                       return (byte[]) SaltValue.Clone ();
-               }
-               set {
-                       if (state != 0) {
-                               throw new CryptographicException (
-                                       Locale.GetText ("Can't change this property at this stage"));
-                       }
-                       if (value != null)
-                               SaltValue = (byte[]) value.Clone ();
-                       else
-                               SaltValue = null;
-               }
-       }
-
-       public byte[] CryptDeriveKey (string algname, string alghashname, int keySize, byte[] rgbIV) 
-       {
-               if (keySize > 128) {
-                       throw new CryptographicException (
-                               Locale.GetText ("Key Size can't be greater than 128 bits"));
-               }
-               throw new NotSupportedException (
-                       Locale.GetText ("CspParameters not supported by Mono"));
-       }
-
-       // note: Key is returned - we can't zeroize it ourselve :-(
-       [Obsolete ("see Rfc2898DeriveBytes for PKCS#5 v2 support")]
- #pragma warning disable 809
-       public override byte[] GetBytes (int cb) 
-       {
- #pragma warning restore 809
-
-               if (cb < 1)
-                       throw new IndexOutOfRangeException ("cb");
-
-               if (state == 0) {
-                       // it's now impossible to change the HashName, Salt
-                       // and IterationCount
-                       Reset ();
-                       state = 1;
-               }
-
-               byte[] result = new byte [cb];
-               int cpos = 0;
-               // the initial hash (in reset) + at least one iteration
-               int iter = Math.Max (1, IterationsValue - 1);
-
-               // start with the PKCS5 key
-               if (output == null) {
-                       // calculate the PKCS5 key
-                       output = initial;
-
-                       // generate new key material
-                       for (int i = 0; i < iter - 1; i++)
-                               output = hash.ComputeHash (output);
-               }
-
-               while (cpos < cb) {
-                       byte[] output2 = null;
-                       if (hashnumber == 0) {
-                               // last iteration on output
-                               output2 = hash.ComputeHash (output);
-                       }
-                       else if (hashnumber < 1000) {
-                               string n = Convert.ToString (hashnumber);
-                               output2 = new byte [output.Length + n.Length];
-                               for (int j=0; j < n.Length; j++)
-                                       output2 [j] = (byte)(n [j]);
-                               Buffer.BlockCopy (output, 0, output2, n.Length, output.Length);
-                               // don't update output
-                               output2 = hash.ComputeHash (output2);
-                       }
-                       else {
-                               throw new CryptographicException (
-                                       Locale.GetText ("too long"));
-                       }
-
-                       int rem = output2.Length - position;
-                       int l = Math.Min (cb - cpos, rem);
-                       Buffer.BlockCopy (output2, position, result, cpos, l);
-                       cpos += l;
-                       position += l;
-                       while (position >= output2.Length) {
-                               position -= output2.Length;
-                               hashnumber++;
-                       }
-               }
-               return result;
-       }
-
-       public override void Reset () 
-       {
-               state = 0;
-               position = 0;
-               hashnumber = 0;
-
-               hash = HashAlgorithm.Create (HashNameValue);
-               if (SaltValue != null) {
-                       hash.TransformBlock (password, 0, password.Length, password, 0);
-                       hash.TransformFinalBlock (SaltValue, 0, SaltValue.Length);
-                       initial = hash.Hash;
-               }
-               else
-                       initial = hash.ComputeHash (password);
-       }
-} 
-       
-} 
diff --git a/mcs/class/corlib/System.Security.Cryptography/RC2.cs b/mcs/class/corlib/System.Security.Cryptography/RC2.cs
deleted file mode 100644 (file)
index 5b6fc54..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// System.Security.Cryptography.RC2.cs
-//
-// Authors: 
-//     Andrew Birkett (andy@nobugs.org)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   IETF RFC2286: A Description of the RC2(r) Encryption Algorithm
-       //      http://www.ietf.org/rfc/rfc2268.txt
-
-       [ComVisible (true)]
-       public abstract class RC2 : SymmetricAlgorithm {
-
-               public static new RC2 Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.RC2CryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.RC2");
-#endif
-               }
-               
-               public static new RC2 Create (string AlgName) 
-               {
-                       return (RC2) CryptoConfig.CreateFromName (AlgName);
-               }
-
-               protected int EffectiveKeySizeValue;
-
-               public virtual int EffectiveKeySize {
-                       get {
-                               if (EffectiveKeySizeValue == 0)
-                                       return KeySizeValue;
-                               else
-                                       return EffectiveKeySizeValue;
-                       }
-                       set {
-                               EffectiveKeySizeValue = value; 
-                       }
-               }
-
-               public override int KeySize {
-                       get { return base.KeySize; }
-                       set {
-                               base.KeySize = value;
-                               EffectiveKeySizeValue = value;
-                       }
-               }
-
-               protected RC2 ()
-               {
-                       KeySizeValue = 128;
-                       BlockSizeValue = 64;
-                       FeedbackSizeValue = 8;
-
-                       // The RFC allows keys of 1 to 128 bytes, but MS impl only supports
-                       // 40 to 128 bits, sigh.
-                       LegalKeySizesValue = new KeySizes [1];
-                       LegalKeySizesValue [0] = new KeySizes (40, 128, 8);
-
-                       LegalBlockSizesValue = new KeySizes [1];
-                       LegalBlockSizesValue [0] = new KeySizes (64, 64, 0);
-               }
-       }
-}
-
index 7222512b08fda4fbad064b23236919176cac8992..c9d3448f716f3103c8fa94eb17ba5b32d6a7bb1b 100644 (file)
@@ -38,53 +38,7 @@ namespace System.Security.Cryptography {
        // References:
        // a.   IETF RFC2286: A Description of the RC2(r) Encryption Algorithm
        //      http://www.ietf.org/rfc/rfc2268.txt
-       
-       [ComVisible (true)]
-       public sealed class RC2CryptoServiceProvider : RC2 {
-               private bool _useSalt;
-       
-               public RC2CryptoServiceProvider ()
-               {
-               }
-       
-               public override int EffectiveKeySize {
-                       get { return base.EffectiveKeySize; }
-                       set {
-                               if (value != KeySizeValue) {
-                                       throw new CryptographicUnexpectedOperationException (
-                                               Locale.GetText ("Effective key size must match key size for compatibility"));
-                               }
-                               base.EffectiveKeySize = value; 
-                       }
-               }
-       
-               public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV)
-               {
-                       return new RC2Transform (this, false, rgbKey, rgbIV);
-               }
-       
-               public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV)
-               {
-                       return new RC2Transform (this, true, rgbKey, rgbIV);
-               }
-       
-               public override void GenerateIV ()
-               {
-                       IVValue = KeyBuilder.IV (BlockSizeValue >> 3);
-               }
-       
-               public override void GenerateKey ()
-               {
-                       KeyValue = KeyBuilder.Key (KeySizeValue >> 3);
-               }
-               [MonoTODO ("Use salt in algorithm")]
-               [ComVisible (false)]
-               public bool UseSalt {
-                       get { return _useSalt; }
-                       set { _useSalt = value; }
-               }
-       }
-       
+
        internal class RC2Transform : SymmetricTransform {
        
                private UInt16 R0, R1, R2, R3;  // state
diff --git a/mcs/class/corlib/System.Security.Cryptography/RIPEMD160.cs b/mcs/class/corlib/System.Security.Cryptography/RIPEMD160.cs
deleted file mode 100644 (file)
index e34a154..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// RIPEMD160.cs: Defines a base class from which all RIPEMD-160 implementations inherit
-//
-// Author:
-//     Pieter Philippaerts (Pieter@mentalis.org)
-//
-// (C) 2003 The Mentalis.org Team (http://www.mentalis.org/)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       /// <summary>
-       /// Represents the abstract class from which all implementations of the <see cref="RIPEMD160"/> hash algorithm inherit.
-       /// </summary>
-       [ComVisible (true)]
-       public abstract class RIPEMD160 : HashAlgorithm {
-               /// <summary>
-               /// Initializes a new instance of <see cref="RIPEMD160"/>.
-               /// </summary>
-               protected RIPEMD160 () 
-               {
-                       this.HashSizeValue = 160;
-               }
-
-               /// <summary>
-               /// Creates an instance of the default implementation of the <see cref="RIPEMD160"/> hash algorithm.
-               /// </summary>
-               /// <returns>A new instance of the RIPEMD160 hash algorithm.</returns>
-               public static new RIPEMD160 Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.RIPEMD160Managed ();
-#else
-                       return Create ("System.Security.Cryptography.RIPEMD160");
-#endif
-               }
-
-               /// <summary>
-               /// Creates an instance of the specified implementation of the <see cref="RIPEMD160"/> hash algorithm.
-               /// </summary>
-               /// <param name="hashName">The name of the specific implementation of RIPEMD160 to use.</param>
-               /// <returns>A new instance of the specified implementation of RIPEMD160.</returns>
-               public static new RIPEMD160 Create (string hashName) 
-               {
-                       return (RIPEMD160)CryptoConfig.CreateFromName (hashName);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RIPEMD160Managed.cs b/mcs/class/corlib/System.Security.Cryptography/RIPEMD160Managed.cs
deleted file mode 100644 (file)
index 1052ee0..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-//
-// RIPEMD160Managed.cs: Implements the RIPEMD-160 hash algorithm
-//
-// Author:
-//     Pieter Philippaerts (Pieter@mentalis.org)
-//
-//   References:
-//     - http://www.esat.kuleuven.ac.be/~cosicart/ps/AB-9601/
-//
-// (C) 2003 The Mentalis.org Team (http://www.mentalis.org/)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       /// <summary>
-       /// Computes the <see cref="RIPEMD160"/> hash for the input data.
-       /// </summary>
-       [ComVisible (true)]
-       public class RIPEMD160Managed : RIPEMD160 { // not 'sealed' according to preliminary docs; this may change though
-               /// <summary>
-               /// Initializes a new instance of the <see cref="RIPEMD160Managed"/> class. This class cannot be inherited.
-               /// </summary>
-               public RIPEMD160Managed() {
-                       _X = new uint[16];
-                       _HashValue = new uint[5];
-                       _ProcessingBuffer = new byte[BLOCK_SIZE_BYTES];
-                       Initialize();
-               }
-               /// <summary>
-               /// Initializes an instance of <see cref="RIPEMD160Managed"/>.
-               /// </summary>
-               /// <exception cref="ObjectDisposedException">The RIPEMD160Managed instance has been disposed.</exception>
-               public override void Initialize() {
-                       _HashValue[0] = 0x67452301;
-                       _HashValue[1] = 0xefcdab89;
-                       _HashValue[2] = 0x98badcfe;
-                       _HashValue[3] = 0x10325476;
-                       _HashValue[4] = 0xc3d2e1f0;
-                       _Length = 0;
-                       _ProcessingBufferCount = 0;
-                       Array.Clear (_X, 0, _X.Length);
-                       Array.Clear (_ProcessingBuffer, 0, _ProcessingBuffer.Length);
-               }
-               /// <summary>
-               /// Routes data written to the object into the <see cref="RIPEMD160"/> hash algorithm for computing the hash.
-               /// </summary>
-               /// <param name="array">The array of data bytes.</param>
-               /// <param name="ibStart">The offset into the byte array from which to begin using data.</param>
-               /// <param name="cbSize">The number of bytes in the array to use as data.</param>
-               /// <exception cref="ObjectDisposedException">The <see cref="RIPEMD160Managed"/> instance has been disposed.</exception>
-               protected override void HashCore(byte[] rgb, int ibStart, int cbSize) {
-                       int i;
-                       State = 1;
-
-                       _Length += (uint)cbSize; // global length
-
-                       if (_ProcessingBufferCount != 0) {
-                               if (cbSize < (BLOCK_SIZE_BYTES - _ProcessingBufferCount)) {
-                                       System.Buffer.BlockCopy (rgb, ibStart, _ProcessingBuffer, _ProcessingBufferCount, cbSize);
-                                       _ProcessingBufferCount += cbSize;
-                                       return;
-                               } else {
-                                       i = (BLOCK_SIZE_BYTES - _ProcessingBufferCount);
-                                       System.Buffer.BlockCopy (rgb, ibStart, _ProcessingBuffer, _ProcessingBufferCount, i);
-                                       ProcessBlock (_ProcessingBuffer, 0);
-                                       _ProcessingBufferCount = 0;
-                                       ibStart += i;
-                                       cbSize -= i;
-                               }
-                       }
-
-                       for (i = 0; i < cbSize - cbSize % BLOCK_SIZE_BYTES; i += BLOCK_SIZE_BYTES) {
-                               ProcessBlock (rgb, ibStart + i);
-                       }
-
-                       if (cbSize % BLOCK_SIZE_BYTES != 0) {
-                               System.Buffer.BlockCopy (rgb, cbSize - cbSize % BLOCK_SIZE_BYTES + ibStart, _ProcessingBuffer, 0, cbSize % BLOCK_SIZE_BYTES);
-                               _ProcessingBufferCount = cbSize % BLOCK_SIZE_BYTES;
-                       }
-               }
-               /// <summary>
-               /// Returns the computed <see cref="RIPEMD160"/> hash as an array of bytes after all data has been written to the object.
-               /// </summary>
-               /// <returns>The computed hash value.</returns>
-               /// <exception cref="ObjectDisposedException">The <see cref="RIPEMD160Managed"/> instance has been disposed.</exception>
-               protected override byte[] HashFinal() {
-                       CompressFinal(_Length);
-                       byte[] hash = new byte[20];
-                       if (!BitConverter.IsLittleEndian) {
-                               for (int i = 0; i < 5; i++) {
-                                       for (int j = 0; j < 4; j++) {
-                                               hash [i*4+j] = (byte)(_HashValue [i] >> j*8);
-                                       }
-                               }
-                       } else {
-                               Buffer.BlockCopy (_HashValue, 0, hash, 0, 20);
-                       }
-                       return hash;
-               }
-
-               /// <summary>
-               /// Processes one block of data.
-               /// </summary>
-               /// <param name="buffer">The buffer with the data.</param>
-               /// <param name="offset">The offset in the buffer.</param>
-               private void ProcessBlock (byte[] buffer, int offset)
-               {
-                       if (!BitConverter.IsLittleEndian) {
-                               for (int i=0; i < _X.Length; i++) {
-                                       _X [i] = (uint)(buffer [offset])
-                                               | (((uint)(buffer [offset+1])) <<  8)
-                                               | (((uint)(buffer [offset+2])) << 16)
-                                               | (((uint)(buffer [offset+3])) << 24);
-                                       offset += 4;
-                               }
-                       } else {
-                               Buffer.BlockCopy (buffer, offset, _X, 0, 64);
-                       }
-                       Compress();
-               }
-
-               private void Compress() {
-                       uint aa = _HashValue[0],  bb = _HashValue[1],  cc = _HashValue[2],  dd = _HashValue[3],  ee = _HashValue[4];
-                       uint aaa = _HashValue[0], bbb = _HashValue[1], ccc = _HashValue[2], ddd = _HashValue[3], eee = _HashValue[4];
-                       /* round 1 */
-                       FF(ref aa, bb, ref cc, dd, ee, _X[ 0], 11);
-                       FF(ref ee, aa, ref bb, cc, dd, _X[ 1], 14);
-                       FF(ref dd, ee, ref aa, bb, cc, _X[ 2], 15);
-                       FF(ref cc, dd, ref ee, aa, bb, _X[ 3], 12);
-                       FF(ref bb, cc, ref dd, ee, aa, _X[ 4],  5);
-                       FF(ref aa, bb, ref cc, dd, ee, _X[ 5],  8);
-                       FF(ref ee, aa, ref bb, cc, dd, _X[ 6],  7);
-                       FF(ref dd, ee, ref aa, bb, cc, _X[ 7],  9);
-                       FF(ref cc, dd, ref ee, aa, bb, _X[ 8], 11);
-                       FF(ref bb, cc, ref dd, ee, aa, _X[ 9], 13);
-                       FF(ref aa, bb, ref cc, dd, ee, _X[10], 14);
-                       FF(ref ee, aa, ref bb, cc, dd, _X[11], 15);
-                       FF(ref dd, ee, ref aa, bb, cc, _X[12],  6);
-                       FF(ref cc, dd, ref ee, aa, bb, _X[13],  7);
-                       FF(ref bb, cc, ref dd, ee, aa, _X[14],  9);
-                       FF(ref aa, bb, ref cc, dd, ee, _X[15],  8);
-                       /* round 2 */
-                       GG(ref ee, aa, ref bb, cc, dd, _X[ 7],  7);
-                       GG(ref dd, ee, ref aa, bb, cc, _X[ 4],  6);
-                       GG(ref cc, dd, ref ee, aa, bb, _X[13],  8);
-                       GG(ref bb, cc, ref dd, ee, aa, _X[ 1], 13);
-                       GG(ref aa, bb, ref cc, dd, ee, _X[10], 11);
-                       GG(ref ee, aa, ref bb, cc, dd, _X[ 6],  9);
-                       GG(ref dd, ee, ref aa, bb, cc, _X[15],  7);
-                       GG(ref cc, dd, ref ee, aa, bb, _X[ 3], 15);
-                       GG(ref bb, cc, ref dd, ee, aa, _X[12],  7);
-                       GG(ref aa, bb, ref cc, dd, ee, _X[ 0], 12);
-                       GG(ref ee, aa, ref bb, cc, dd, _X[ 9], 15);
-                       GG(ref dd, ee, ref aa, bb, cc, _X[ 5],  9);
-                       GG(ref cc, dd, ref ee, aa, bb, _X[ 2], 11);
-                       GG(ref bb, cc, ref dd, ee, aa, _X[14],  7);
-                       GG(ref aa, bb, ref cc, dd, ee, _X[11], 13);
-                       GG(ref ee, aa, ref bb, cc, dd, _X[ 8], 12);
-                       /* round 3 */
-                       HH(ref dd, ee, ref aa, bb, cc, _X[ 3], 11);
-                       HH(ref cc, dd, ref ee, aa, bb, _X[10], 13);
-                       HH(ref bb, cc, ref dd, ee, aa, _X[14],  6);
-                       HH(ref aa, bb, ref cc, dd, ee, _X[ 4],  7);
-                       HH(ref ee, aa, ref bb, cc, dd, _X[ 9], 14);
-                       HH(ref dd, ee, ref aa, bb, cc, _X[15],  9);
-                       HH(ref cc, dd, ref ee, aa, bb, _X[ 8], 13);
-                       HH(ref bb, cc, ref dd, ee, aa, _X[ 1], 15);
-                       HH(ref aa, bb, ref cc, dd, ee, _X[ 2], 14);
-                       HH(ref ee, aa, ref bb, cc, dd, _X[ 7],  8);
-                       HH(ref dd, ee, ref aa, bb, cc, _X[ 0], 13);
-                       HH(ref cc, dd, ref ee, aa, bb, _X[ 6],  6);
-                       HH(ref bb, cc, ref dd, ee, aa, _X[13],  5);
-                       HH(ref aa, bb, ref cc, dd, ee, _X[11], 12);
-                       HH(ref ee, aa, ref bb, cc, dd, _X[ 5],  7);
-                       HH(ref dd, ee, ref aa, bb, cc, _X[12],  5);
-                       /* round 4 */
-                       II(ref cc, dd, ref ee, aa, bb, _X[ 1], 11);
-                       II(ref bb, cc, ref dd, ee, aa, _X[ 9], 12);
-                       II(ref aa, bb, ref cc, dd, ee, _X[11], 14);
-                       II(ref ee, aa, ref bb, cc, dd, _X[10], 15);
-                       II(ref dd, ee, ref aa, bb, cc, _X[ 0], 14);
-                       II(ref cc, dd, ref ee, aa, bb, _X[ 8], 15);
-                       II(ref bb, cc, ref dd, ee, aa, _X[12],  9);
-                       II(ref aa, bb, ref cc, dd, ee, _X[ 4],  8);
-                       II(ref ee, aa, ref bb, cc, dd, _X[13],  9);
-                       II(ref dd, ee, ref aa, bb, cc, _X[ 3], 14);
-                       II(ref cc, dd, ref ee, aa, bb, _X[ 7],  5);
-                       II(ref bb, cc, ref dd, ee, aa, _X[15],  6);
-                       II(ref aa, bb, ref cc, dd, ee, _X[14],  8);
-                       II(ref ee, aa, ref bb, cc, dd, _X[ 5],  6);
-                       II(ref dd, ee, ref aa, bb, cc, _X[ 6],  5);
-                       II(ref cc, dd, ref ee, aa, bb, _X[ 2], 12);
-                       /* round 5 */
-                       JJ(ref bb, cc, ref dd, ee, aa, _X[ 4],  9);
-                       JJ(ref aa, bb, ref cc, dd, ee, _X[ 0], 15);
-                       JJ(ref ee, aa, ref bb, cc, dd, _X[ 5],  5);
-                       JJ(ref dd, ee, ref aa, bb, cc, _X[ 9], 11);
-                       JJ(ref cc, dd, ref ee, aa, bb, _X[ 7],  6);
-                       JJ(ref bb, cc, ref dd, ee, aa, _X[12],  8);
-                       JJ(ref aa, bb, ref cc, dd, ee, _X[ 2], 13);
-                       JJ(ref ee, aa, ref bb, cc, dd, _X[10], 12);
-                       JJ(ref dd, ee, ref aa, bb, cc, _X[14],  5);
-                       JJ(ref cc, dd, ref ee, aa, bb, _X[ 1], 12);
-                       JJ(ref bb, cc, ref dd, ee, aa, _X[ 3], 13);
-                       JJ(ref aa, bb, ref cc, dd, ee, _X[ 8], 14);
-                       JJ(ref ee, aa, ref bb, cc, dd, _X[11], 11);
-                       JJ(ref dd, ee, ref aa, bb, cc, _X[ 6],  8);
-                       JJ(ref cc, dd, ref ee, aa, bb, _X[15],  5);
-                       JJ(ref bb, cc, ref dd, ee, aa, _X[13],  6);
-                       /* parallel round 1 */
-                       JJJ(ref aaa, bbb, ref ccc, ddd, eee, _X[ 5],  8);
-                       JJJ(ref eee, aaa, ref bbb, ccc, ddd, _X[14],  9);
-                       JJJ(ref ddd, eee, ref aaa, bbb, ccc, _X[ 7],  9);
-                       JJJ(ref ccc, ddd, ref eee, aaa, bbb, _X[ 0], 11);
-                       JJJ(ref bbb, ccc, ref ddd, eee, aaa, _X[ 9], 13);
-                       JJJ(ref aaa, bbb, ref ccc, ddd, eee, _X[ 2], 15);
-                       JJJ(ref eee, aaa, ref bbb, ccc, ddd, _X[11], 15);
-                       JJJ(ref ddd, eee, ref aaa, bbb, ccc, _X[ 4],  5);
-                       JJJ(ref ccc, ddd, ref eee, aaa, bbb, _X[13],  7);
-                       JJJ(ref bbb, ccc, ref ddd, eee, aaa, _X[ 6],  7);
-                       JJJ(ref aaa, bbb, ref ccc, ddd, eee, _X[15],  8);
-                       JJJ(ref eee, aaa, ref bbb, ccc, ddd, _X[ 8], 11);
-                       JJJ(ref ddd, eee, ref aaa, bbb, ccc, _X[ 1], 14);
-                       JJJ(ref ccc, ddd, ref eee, aaa, bbb, _X[10], 14);
-                       JJJ(ref bbb, ccc, ref ddd, eee, aaa, _X[ 3], 12);
-                       JJJ(ref aaa, bbb, ref ccc, ddd, eee, _X[12],  6);
-                       /* parallel round 2 */
-                       III(ref eee, aaa, ref bbb, ccc, ddd, _X[ 6],  9); 
-                       III(ref ddd, eee, ref aaa, bbb, ccc, _X[11], 13);
-                       III(ref ccc, ddd, ref eee, aaa, bbb, _X[ 3], 15);
-                       III(ref bbb, ccc, ref ddd, eee, aaa, _X[ 7],  7);
-                       III(ref aaa, bbb, ref ccc, ddd, eee, _X[ 0], 12);
-                       III(ref eee, aaa, ref bbb, ccc, ddd, _X[13],  8);
-                       III(ref ddd, eee, ref aaa, bbb, ccc, _X[ 5],  9);
-                       III(ref ccc, ddd, ref eee, aaa, bbb, _X[10], 11);
-                       III(ref bbb, ccc, ref ddd, eee, aaa, _X[14],  7);
-                       III(ref aaa, bbb, ref ccc, ddd, eee, _X[15],  7);
-                       III(ref eee, aaa, ref bbb, ccc, ddd, _X[ 8], 12);
-                       III(ref ddd, eee, ref aaa, bbb, ccc, _X[12],  7);
-                       III(ref ccc, ddd, ref eee, aaa, bbb, _X[ 4],  6);
-                       III(ref bbb, ccc, ref ddd, eee, aaa, _X[ 9], 15);
-                       III(ref aaa, bbb, ref ccc, ddd, eee, _X[ 1], 13);
-                       III(ref eee, aaa, ref bbb, ccc, ddd, _X[ 2], 11);
-                       /* parallel round 3 */
-                       HHH(ref ddd, eee, ref aaa, bbb, ccc, _X[15],  9);
-                       HHH(ref ccc, ddd, ref eee, aaa, bbb, _X[ 5],  7);
-                       HHH(ref bbb, ccc, ref ddd, eee, aaa, _X[ 1], 15);
-                       HHH(ref aaa, bbb, ref ccc, ddd, eee, _X[ 3], 11);
-                       HHH(ref eee, aaa, ref bbb, ccc, ddd, _X[ 7],  8);
-                       HHH(ref ddd, eee, ref aaa, bbb, ccc, _X[14],  6);
-                       HHH(ref ccc, ddd, ref eee, aaa, bbb, _X[ 6],  6);
-                       HHH(ref bbb, ccc, ref ddd, eee, aaa, _X[ 9], 14);
-                       HHH(ref aaa, bbb, ref ccc, ddd, eee, _X[11], 12);
-                       HHH(ref eee, aaa, ref bbb, ccc, ddd, _X[ 8], 13);
-                       HHH(ref ddd, eee, ref aaa, bbb, ccc, _X[12],  5);
-                       HHH(ref ccc, ddd, ref eee, aaa, bbb, _X[ 2], 14);
-                       HHH(ref bbb, ccc, ref ddd, eee, aaa, _X[10], 13);
-                       HHH(ref aaa, bbb, ref ccc, ddd, eee, _X[ 0], 13);
-                       HHH(ref eee, aaa, ref bbb, ccc, ddd, _X[ 4],  7);
-                       HHH(ref ddd, eee, ref aaa, bbb, ccc, _X[13],  5);
-                       /* parallel round 4 */   
-                       GGG(ref ccc, ddd, ref eee, aaa, bbb, _X[ 8], 15);
-                       GGG(ref bbb, ccc, ref ddd, eee, aaa, _X[ 6],  5);
-                       GGG(ref aaa, bbb, ref ccc, ddd, eee, _X[ 4],  8);
-                       GGG(ref eee, aaa, ref bbb, ccc, ddd, _X[ 1], 11);
-                       GGG(ref ddd, eee, ref aaa, bbb, ccc, _X[ 3], 14);
-                       GGG(ref ccc, ddd, ref eee, aaa, bbb, _X[11], 14);
-                       GGG(ref bbb, ccc, ref ddd, eee, aaa, _X[15],  6);
-                       GGG(ref aaa, bbb, ref ccc, ddd, eee, _X[ 0], 14);
-                       GGG(ref eee, aaa, ref bbb, ccc, ddd, _X[ 5],  6);
-                       GGG(ref ddd, eee, ref aaa, bbb, ccc, _X[12],  9);
-                       GGG(ref ccc, ddd, ref eee, aaa, bbb, _X[ 2], 12);
-                       GGG(ref bbb, ccc, ref ddd, eee, aaa, _X[13],  9);
-                       GGG(ref aaa, bbb, ref ccc, ddd, eee, _X[ 9], 12);
-                       GGG(ref eee, aaa, ref bbb, ccc, ddd, _X[ 7],  5);
-                       GGG(ref ddd, eee, ref aaa, bbb, ccc, _X[10], 15);
-                       GGG(ref ccc, ddd, ref eee, aaa, bbb, _X[14],  8);
-                       /* parallel round 5 */
-                       FFF(ref bbb, ccc, ref ddd, eee, aaa, _X[12],  8);
-                       FFF(ref aaa, bbb, ref ccc, ddd, eee, _X[15],  5);
-                       FFF(ref eee, aaa, ref bbb, ccc, ddd, _X[10], 12);
-                       FFF(ref ddd, eee, ref aaa, bbb, ccc, _X[ 4],  9);
-                       FFF(ref ccc, ddd, ref eee, aaa, bbb, _X[ 1], 12);
-                       FFF(ref bbb, ccc, ref ddd, eee, aaa, _X[ 5],  5);
-                       FFF(ref aaa, bbb, ref ccc, ddd, eee, _X[ 8], 14);
-                       FFF(ref eee, aaa, ref bbb, ccc, ddd, _X[ 7],  6);
-                       FFF(ref ddd, eee, ref aaa, bbb, ccc, _X[ 6],  8);
-                       FFF(ref ccc, ddd, ref eee, aaa, bbb, _X[ 2], 13);
-                       FFF(ref bbb, ccc, ref ddd, eee, aaa, _X[13],  6);
-                       FFF(ref aaa, bbb, ref ccc, ddd, eee, _X[14],  5);
-                       FFF(ref eee, aaa, ref bbb, ccc, ddd, _X[ 0], 15);
-                       FFF(ref ddd, eee, ref aaa, bbb, ccc, _X[ 3], 13);
-                       FFF(ref ccc, ddd, ref eee, aaa, bbb, _X[ 9], 11);
-                       FFF(ref bbb, ccc, ref ddd, eee, aaa, _X[11], 11);
-                       /* combine results */
-                       ddd += cc + _HashValue[1];               /* final result for _HashValue[0] */
-                       _HashValue[1] = _HashValue[2] + dd + eee;
-                       _HashValue[2] = _HashValue[3] + ee + aaa;
-                       _HashValue[3] = _HashValue[4] + aa + bbb;
-                       _HashValue[4] = _HashValue[0] + bb + ccc;
-                       _HashValue[0] = ddd;
-               }
-               private void CompressFinal(ulong length) {
-                       uint lswlen = (uint)(length & 0xFFFFFFFF);
-                       uint mswlen = (uint)(length >> 32);
-                       // clear _X
-                       Array.Clear(_X, 0, _X.Length);
-                       // put bytes from _ProcessingBuffer into _X
-                       int ptr = 0;
-                       for (uint i = 0; i < (lswlen & 63); i++) {
-                               // byte i goes into word X[i div 4] at pos.  8*(i mod 4)
-                               _X[i >> 2] ^= ((uint)_ProcessingBuffer[ptr++]) << (int)(8 * (i & 3));
-                       }
-                       // append the bit m_n == 1
-                       _X[(lswlen >> 2) & 15] ^= (uint)1 << (int)(8 * (lswlen & 3) + 7);
-                       if ((lswlen & 63) > 55) {
-                               // length goes to next block
-                               Compress();
-                               Array.Clear(_X, 0, _X.Length);
-                       }
-                       // append length in bits
-                       _X[14] = lswlen << 3;
-                       _X[15] = (lswlen >> 29) | (mswlen << 3);
-                       Compress();
-               }
-
-               // the following methods should be inlined by the compiler
-               private uint ROL(uint x, int n) {
-                       return (((x) << (n)) | ((x) >> (32-(n))));
-               }
-               private uint F(uint x, uint y, uint z) {
-                       return ((x) ^ (y) ^ (z)) ;
-               }
-               private uint G(uint x, uint y, uint z) {
-                       return (((x) & (y)) | (~(x) & (z)));
-               }
-               private uint H(uint x, uint y, uint z) {
-                       return (((x) | ~(y)) ^ (z));
-               }
-               private uint I(uint x, uint y, uint z) {
-                       return (((x) & (z)) | ((y) & ~(z)));
-               }
-               private uint J(uint x, uint y, uint z) {
-                       return ((x) ^ ((y) | ~(z)));
-               }
-               private void FF(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += F(b, c, d) + x;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void GG(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += G(b, c, d) + x + 0x5a827999;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void HH(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += H(b, c, d) + x + 0x6ed9eba1;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void II(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += I(b, c, d) + x + 0x8f1bbcdc;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void JJ(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += J(b, c, d) + x + 0xa953fd4e;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void FFF(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += F(b, c, d) + x;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void GGG(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += G(b, c, d) + x + 0x7a6d76e9;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void HHH(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += H(b, c, d) + x + 0x6d703ef3;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void III(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += I(b, c, d) + x + 0x5c4dd124;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-               private void JJJ(ref uint a, uint b, ref uint c, uint d, uint e, uint x, int s) {
-                       a += J(b, c, d) + x + 0x50a28be6;
-                       a = ROL(a, s) + e;
-                       c = ROL(c, 10);
-               }
-
-               /// <summary>
-               /// A buffer that holds the extra data.
-               /// </summary>
-               private byte[] _ProcessingBuffer;
-               /// <summary>
-               /// The X vectors.
-               /// </summary>
-               private uint[] _X;
-               /// <summary>
-               /// The current value of the hash.
-               /// </summary>
-               private uint[] _HashValue;
-               /// <summary>
-               /// The number of bytes hashed.
-               /// </summary>
-               private ulong _Length;
-
-               private int _ProcessingBufferCount; // Counts how much data we have stored that still needs processed.
-
-               private const int BLOCK_SIZE_BYTES =  64;
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSA.cs b/mcs/class/corlib/System.Security.Cryptography/RSA.cs
deleted file mode 100644 (file)
index 1a57593..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// System.Security.Cryptography.RSA.cs
-//
-// Authors:
-//     Dan Lewis (dihlewis@yahoo.co.uk)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006,2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Text;
-
-using Mono.Xml;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class RSA : AsymmetricAlgorithm {
-
-               public static new RSA Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.RSACryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.RSA");
-#endif
-               }
-
-               public static new RSA Create (string algName)
-               {
-                       return (RSA) CryptoConfig.CreateFromName (algName);
-               }
-
-               protected RSA ()
-               {
-               }
-
-               public abstract byte[] EncryptValue (byte[] rgb);
-
-               public abstract byte[] DecryptValue (byte[] rgb);
-
-               public abstract RSAParameters ExportParameters (bool includePrivateParameters);
-
-               public abstract void ImportParameters (RSAParameters parameters);
-
-               internal void ZeroizePrivateKey (RSAParameters parameters)
-               {
-                       if (parameters.P != null)
-                               Array.Clear (parameters.P, 0, parameters.P.Length);
-                       if (parameters.Q != null)
-                               Array.Clear (parameters.Q, 0, parameters.Q.Length);
-                       if (parameters.DP != null)
-                               Array.Clear (parameters.DP, 0, parameters.DP.Length);
-                       if (parameters.DQ != null)
-                               Array.Clear (parameters.DQ, 0, parameters.DQ.Length);
-                       if (parameters.InverseQ != null)
-                               Array.Clear (parameters.InverseQ, 0, parameters.InverseQ.Length);
-                       if (parameters.D != null)
-                               Array.Clear (parameters.D, 0, parameters.D.Length);
-               }
-
-               public override void FromXmlString (string xmlString) 
-               {
-                       if (xmlString == null)
-                               throw new ArgumentNullException ("xmlString");
-
-                       RSAParameters rsaParams = new RSAParameters ();
-                       try {
-                               rsaParams.P = GetNamedParam (xmlString, "P");
-                               rsaParams.Q = GetNamedParam (xmlString, "Q");
-                               rsaParams.D = GetNamedParam (xmlString, "D");
-                               rsaParams.DP = GetNamedParam (xmlString, "DP");
-                               rsaParams.DQ = GetNamedParam (xmlString, "DQ");
-                               rsaParams.InverseQ = GetNamedParam (xmlString, "InverseQ");
-                               rsaParams.Exponent = GetNamedParam (xmlString, "Exponent");
-                               rsaParams.Modulus = GetNamedParam (xmlString, "Modulus");
-                               ImportParameters (rsaParams);
-                       }
-                       catch (Exception e) {
-                               ZeroizePrivateKey (rsaParams);
-                               throw new CryptographicException (
-                                       Locale.GetText ("Couldn't decode XML"), e);
-                       }
-                       finally {
-                               ZeroizePrivateKey (rsaParams);
-                       }
-               }
-
-               public override string ToXmlString (bool includePrivateParameters) 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       RSAParameters rsaParams = ExportParameters (includePrivateParameters);
-                       try {
-                               sb.Append ("<RSAKeyValue>");
-                               
-                               sb.Append ("<Modulus>");
-                               sb.Append (Convert.ToBase64String (rsaParams.Modulus));
-                               sb.Append ("</Modulus>");
-
-                               sb.Append ("<Exponent>");
-                               sb.Append (Convert.ToBase64String (rsaParams.Exponent));
-                               sb.Append ("</Exponent>");
-
-                               if (includePrivateParameters) {
-                                       // we want an ArgumentNullException is only the D is missing, but a
-                                       // CryptographicException if other parameters (CRT) are missings
-                                       if (rsaParams.D == null) {
-                                               string msg = Locale.GetText ("Missing D parameter for the private key.");
-                                               throw new ArgumentNullException (msg);
-                                       } else if ((rsaParams.P == null) || (rsaParams.Q == null) || (rsaParams.DP == null) ||
-                                               (rsaParams.DQ == null) || (rsaParams.InverseQ == null)) {
-                                               // note: we can import a private key, using FromXmlString,
-                                               // without the CRT parameters but we export it using ToXmlString!
-                                               string msg = Locale.GetText ("Missing some CRT parameters for the private key.");
-                                               throw new CryptographicException (msg);
-                                       }
-
-                                       sb.Append ("<P>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.P));
-                                       sb.Append ("</P>");
-
-                                       sb.Append ("<Q>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.Q));
-                                       sb.Append ("</Q>");
-
-                                       sb.Append ("<DP>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.DP));
-                                       sb.Append ("</DP>");
-
-                                       sb.Append ("<DQ>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.DQ));
-                                       sb.Append ("</DQ>");
-
-                                       sb.Append ("<InverseQ>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.InverseQ));
-                                       sb.Append ("</InverseQ>");
-
-                                       sb.Append ("<D>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.D));
-                                       sb.Append ("</D>");
-                               }
-                               
-                               sb.Append ("</RSAKeyValue>");
-                       }
-                       catch {
-                               ZeroizePrivateKey (rsaParams);
-                               throw;
-                       }
-                       
-                       return sb.ToString ();
-               }
-       }
-}
index 4cd3779172c0cecba59890f2de6cb83dbb5b89ee..53667fb87dfed1dc23409f677cadaecc5236bb77 100644 (file)
@@ -168,6 +168,13 @@ namespace System.Security.Cryptography {
        
                public byte[] Decrypt (byte[] rgb, bool fOAEP) 
                {
+                       if (rgb == null)
+                               throw new ArgumentNullException("rgb");
+
+                       // size check -- must be at most the modulus size
+                       if (rgb.Length > (KeySize / 8))
+                               throw new CryptographicException(Environment.GetResourceString("Cryptography_Padding_DecDataTooBig", KeySize / 8));
+                       
                        if (m_disposed)
                                throw new ObjectDisposedException ("rsa");
                        // choose between OAEP or PKCS#1 v.1.5 padding
@@ -220,7 +227,21 @@ namespace System.Security.Cryptography {
                        if ((includePrivateParameters) && (!privateKeyExportable))
                                throw new CryptographicException ("cannot export private key");
 
-                       return rsa.ExportParameters (includePrivateParameters);
+                       var rsaParams = rsa.ExportParameters (includePrivateParameters);
+                       if (includePrivateParameters) {
+                               // we want an ArgumentNullException is only the D is missing, but a
+                               // CryptographicException if other parameters (CRT) are missings
+                               if (rsaParams.D == null) {
+                                       throw new ArgumentNullException ("Missing D parameter for the private key.");
+                               } else if ((rsaParams.P == null) || (rsaParams.Q == null) || (rsaParams.DP == null) ||
+                                       (rsaParams.DQ == null) || (rsaParams.InverseQ == null)) {
+                                       // note: we can import a private key, using FromXmlString,
+                                       // without the CRT parameters but we export it using ToXmlString!
+                                       throw new CryptographicException ("Missing some CRT parameters for the private key.");
+                               }
+                       }
+
+                       return rsaParams;
                }
        
                public override void ImportParameters (RSAParameters parameters) 
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSAOAEPKeyExchangeDeformatter.cs b/mcs/class/corlib/System.Security.Cryptography/RSAOAEPKeyExchangeDeformatter.cs
deleted file mode 100644 (file)
index ecb8f22..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// RSAOAEPKeyExchangeDeformatter.cs - Handles OAEP keyex decryption.
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography { 
-
-       [ComVisible (true)]
-       public class RSAOAEPKeyExchangeDeformatter : AsymmetricKeyExchangeDeformatter {
-       
-               private RSA rsa;
-//             private string param;
-       
-               public RSAOAEPKeyExchangeDeformatter ()
-               {
-               }
-       
-               public RSAOAEPKeyExchangeDeformatter (AsymmetricAlgorithm key) 
-               {
-                       SetKey (key);
-               }
-       
-               public override string Parameters {
-                       get { return null; }
-                       set { ; }
-               }
-       
-               public override byte[] DecryptKeyExchange (byte[] rgbData) 
-               {
-                       if (rsa == null) {
-                               string msg = Locale.GetText ("No RSA key specified");
-                               throw new CryptographicUnexpectedOperationException (msg);
-                       }
-                       SHA1 sha1 = SHA1.Create ();
-                       byte[] result = PKCS1.Decrypt_OAEP (rsa, sha1, rgbData);
-                       if (result != null)
-                               return result;
-
-                       throw new CryptographicException (Locale.GetText ("OAEP decoding error."));
-               }
-       
-               public override void SetKey (AsymmetricAlgorithm key) 
-               {
-                       rsa = (RSA)key;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSAOAEPKeyExchangeFormatter.cs b/mcs/class/corlib/System.Security.Cryptography/RSAOAEPKeyExchangeFormatter.cs
deleted file mode 100644 (file)
index 5aed063..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// RSAOAEPKeyExchangeFormatter.cs - Handles OAEP keyex encryption.
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography { 
-
-       [ComVisible (true)]
-       public class RSAOAEPKeyExchangeFormatter : AsymmetricKeyExchangeFormatter {
-       
-               private RSA rsa;
-               private RandomNumberGenerator random;
-               private byte[] param;
-       
-               public RSAOAEPKeyExchangeFormatter () 
-               {
-                       rsa = null;
-               }
-       
-               public RSAOAEPKeyExchangeFormatter (AsymmetricAlgorithm key) 
-               {
-                       SetKey (key);
-               }
-       
-               public byte[] Parameter {
-                       get { return param; }
-                       set { param = value; }
-               }
-       
-               public override string Parameters {
-                       get { return null; }
-               }
-       
-               public RandomNumberGenerator Rng {
-                       get { return random; }
-                       set { random = value; }
-               }
-       
-               public override byte[] CreateKeyExchange (byte[] rgbData) 
-               {
-                       if (random == null)
-                               random = RandomNumberGenerator.Create ();  // create default
-                       if (rsa == null) {
-                               string msg = Locale.GetText ("No RSA key specified");
-                               throw new CryptographicUnexpectedOperationException (msg);
-                       }
-                       SHA1 sha1 = SHA1.Create ();
-                       return PKCS1.Encrypt_OAEP (rsa, sha1, random, rgbData);
-               }
-       
-               public override byte[] CreateKeyExchange (byte[] rgbData, Type symAlgType) 
-               {
-                       // documentation says that symAlgType is not used !?!
-                       return CreateKeyExchange (rgbData);
-               }
-       
-               public override void SetKey (AsymmetricAlgorithm key) 
-               {
-                       rsa = (RSA) key;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSAPKCS1KeyExchangeDeformatter.cs b/mcs/class/corlib/System.Security.Cryptography/RSAPKCS1KeyExchangeDeformatter.cs
deleted file mode 100644 (file)
index 163fd30..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// RSAPKCS1KeyExchangeDeformatter.cs - Handles PKCS#1 v.1.5 keyex decryption.
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography { 
-
-       [ComVisible (true)]
-       public class RSAPKCS1KeyExchangeDeformatter : AsymmetricKeyExchangeDeformatter {
-       
-               private RSA rsa;
-//             private string param;
-               private RandomNumberGenerator random;
-       
-               public RSAPKCS1KeyExchangeDeformatter () 
-               {
-               }
-       
-               public RSAPKCS1KeyExchangeDeformatter (AsymmetricAlgorithm key) 
-               {
-                       SetKey (key);
-               }
-       
-               public override string Parameters {
-                       get { return null; }
-                       set { ; }
-               }
-       
-               public RandomNumberGenerator RNG {
-                       get { return random; }
-                       set { random = value; }
-               }
-       
-               public override byte[] DecryptKeyExchange (byte[] rgbIn) 
-               {
-                       if (rsa == null) {
-                               throw new CryptographicUnexpectedOperationException (
-                                       Locale.GetText ("No key pair available."));
-                       }
-
-                       byte[] result = PKCS1.Decrypt_v15 (rsa, rgbIn);
-                       if (result != null)
-                               return result;
-
-                       throw new CryptographicException (Locale.GetText ("PKCS1 decoding error."));
-               }
-       
-               public override void SetKey (AsymmetricAlgorithm key) 
-               {
-                       rsa = (RSA)key;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSAPKCS1KeyExchangeFormatter.cs b/mcs/class/corlib/System.Security.Cryptography/RSAPKCS1KeyExchangeFormatter.cs
deleted file mode 100644 (file)
index b3d9e27..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// RSAPKCS1KeyExchangeFormatter.cs: Handles PKCS#1 v.1.5 keyex encryption.
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-       
-       // LAMESPEC: There seems no way to select a hash algorithm. The default 
-       // algorithm, is SHA1 because the class use the PKCS1MaskGenerationMethod -
-       // which default to SHA1.
-       [ComVisible (true)]
-       public class RSAPKCS1KeyExchangeFormatter: AsymmetricKeyExchangeFormatter
-       {
-               private RSA rsa;
-               private RandomNumberGenerator random;
-       
-               public RSAPKCS1KeyExchangeFormatter ()
-               {
-               }
-       
-               public RSAPKCS1KeyExchangeFormatter (AsymmetricAlgorithm key)
-               {
-                       SetRSAKey (key);
-               }
-       
-               public RandomNumberGenerator Rng {
-                       get { return random; }
-                       set { random = value; }
-               }
-       
-               public override string Parameters {
-                       get { return "<enc:KeyEncryptionMethod enc:Algorithm=\"http://www.microsoft.com/xml/security/algorithm/PKCS1-v1.5-KeyEx\" xmlns:enc=\"http://www.microsoft.com/xml/security/encryption/v1.0\" />"; }
-               }
-       
-               public override byte[] CreateKeyExchange (byte[] rgbData)
-               {
-                       if (rgbData == null)
-                               throw new ArgumentNullException ("rgbData");
-                       if (rsa == null) {
-                               string msg = Locale.GetText ("No RSA key specified");
-                               throw new CryptographicUnexpectedOperationException (msg);
-                       }
-                       if (random == null)
-                               random = RandomNumberGenerator.Create ();  // create default
-                       return PKCS1.Encrypt_v15 (rsa, random, rgbData);
-               }
-       
-               public override byte[] CreateKeyExchange (byte[] rgbData, Type symAlgType)
-               {
-                       // documentation says that symAlgType is not used !?!
-                       return CreateKeyExchange (rgbData);
-               }
-               
-               private void SetRSAKey (AsymmetricAlgorithm key)
-               {
-                       if (key == null)
-                               throw new ArgumentNullException ("key");
-                       rsa = (RSA) key;
-               }
-                       
-               public override void SetKey (AsymmetricAlgorithm key)
-               {
-                       SetRSAKey (key);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RSAParameters.cs b/mcs/class/corlib/System.Security.Cryptography/RSAParameters.cs
deleted file mode 100644 (file)
index 00edafc..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//\r
-// System.Security.Cryptography.RSAParameters.cs\r
-//\r
-// Authors:\r
-//   Dan Lewis (dihlewis@yahoo.co.uk)\r
-//\r
-// (C) 2002\r
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-\r
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-       \r
-       [Serializable]\r
-       [ComVisible (true)]
-       public struct RSAParameters {\r
-               [NonSerialized]\r
-               public byte[] P;\r
-               [NonSerialized]\r
-               public byte[] Q;\r
-               [NonSerialized]\r
-               public byte[] D;\r
-               [NonSerialized]\r
-               public byte[] DP;\r
-               [NonSerialized]\r
-               public byte[] DQ;\r
-               [NonSerialized]\r
-               public byte[] InverseQ;\r
-\r
-               public byte[] Modulus;\r
-               public byte[] Exponent;\r
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs b/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs
deleted file mode 100644 (file)
index a8aab2b..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// System.Security.Cryptography.RandomNumberGenerator
-//
-// author:
-//   Duco Fijma (duco@lorentz.xs4all.nl)
-//
-//   (C) 2002 Duco Fijma
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-#if !NET_2_1
-       [ComVisible (true)]
-#endif
-       public abstract class RandomNumberGenerator
-       : IDisposable
-       {
-
-               protected RandomNumberGenerator ()
-               {
-               }
-
-               public static RandomNumberGenerator Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.RNGCryptoServiceProvider ();
-#else
-                       // create the default random number generator
-                       return Create ("System.Security.Cryptography.RandomNumberGenerator");
-#endif
-               }
-
-               public static RandomNumberGenerator Create (string rngName) 
-               {
-                       return (RandomNumberGenerator) (CryptoConfig.CreateFromName (rngName));
-               }
-
-               public abstract void GetBytes (byte[] data);
-
-               public virtual void GetNonZeroBytes (byte[] data)
-               {
-                       throw new NotImplementedException ();
-               }
-               
-               
-               public void Dispose ()
-               {
-                       Dispose (true);
-               }
-
-               protected virtual void Dispose (bool disposing)
-               {}
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/Rfc2898DeriveBytes.cs b/mcs/class/corlib/System.Security.Cryptography/Rfc2898DeriveBytes.cs
deleted file mode 100644 (file)
index 98e8dd3..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-//
-// Rfc2898DeriveBytes.cs: RFC2898 (PKCS#5 v2) Key derivation for Password Based Encryption 
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Runtime.InteropServices;
-using System.Text;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-    [ComVisible (true)]
-       public class Rfc2898DeriveBytes : DeriveBytes {
-
-               private const int defaultIterations = 1000;
-
-               private int _iteration;
-               private byte[] _salt;
-               private HMACSHA1 _hmac;
-               private byte[] _buffer;
-               private int _pos;
-               private int _f;
-
-               // constructors
-
-               public Rfc2898DeriveBytes (string password, byte[] salt) 
-                       : this (password, salt, defaultIterations)
-               {
-               }
-               
-               public Rfc2898DeriveBytes (string password, byte[] salt, int iterations) 
-               {
-                       if (password == null)
-                               throw new ArgumentNullException ("password");
-
-                       Salt = salt;
-                       IterationCount = iterations;
-                       _hmac = new HMACSHA1 (Encoding.UTF8.GetBytes (password));
-               }
-
-               public Rfc2898DeriveBytes (byte[] password, byte[] salt, int iterations) 
-               {
-                       if (password == null)
-                               throw new ArgumentNullException ("password");
-
-                       Salt = salt;
-                       IterationCount = iterations;
-                       _hmac = new HMACSHA1 (password);
-               }
-               
-               public Rfc2898DeriveBytes (string password, int saltSize)
-                       : this (password, saltSize, defaultIterations)
-               {
-               }
-               
-               public Rfc2898DeriveBytes (string password, int saltSize, int iterations)
-               {
-                       if (password == null)
-                               throw new ArgumentNullException ("password");
-                       if (saltSize < 0)
-                               throw new ArgumentOutOfRangeException ("invalid salt length");
-
-                       Salt = KeyBuilder.Key (saltSize);
-                       IterationCount = iterations;
-                       _hmac = new HMACSHA1 (Encoding.UTF8.GetBytes (password));
-               }
-
-               // properties
-
-               public int IterationCount { 
-                       get { return _iteration; }
-                       set {
-                               if (value < 1)
-                                       throw new ArgumentOutOfRangeException ("IterationCount < 1");
-
-                               _iteration = value; 
-                       }
-               }
-
-               public byte[] Salt { 
-                       get { return (byte[]) _salt.Clone (); }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ("Salt");
-                               if (value.Length < 8)
-                                       throw new ArgumentException ("Salt < 8 bytes");
-
-                               _salt = (byte[])value.Clone (); 
-                       }
-               }
-
-               // methods
-
-               private byte[] F (byte[] s, int c, int i) 
-               {
-                       s [s.Length - 4] = (byte)(i >> 24);
-                       s [s.Length - 3] = (byte)(i >> 16);
-                       s [s.Length - 2] = (byte)(i >> 8);
-                       s [s.Length - 1] = (byte)i;
-
-                       // this is like j=0
-                       byte[] u1 = _hmac.ComputeHash (s);
-                       byte[] data = u1;
-                       // so we start at j=1
-                       for (int j=1; j < c; j++) {
-                               byte[] un = _hmac.ComputeHash (data);
-                               // xor
-                               for (int k=0; k < 20; k++)
-                                       u1 [k] = (byte)(u1 [k] ^ un [k]);
-                               data = un;
-                       }
-                       return u1;
-               }
-
-               public override byte[] GetBytes (int cb) 
-               {
-                       if (cb < 1)
-                               throw new ArgumentOutOfRangeException ("cb");
-
-                       int l = cb / 20;        // HMACSHA1 == 160 bits == 20 bytes
-                       int r = cb % 20;        // remainder
-                       if (r != 0)
-                               l++;            // rounding up
-
-                       byte[] result = new byte [cb];
-                       int rpos = 0;
-                       if (_pos > 0) {
-                               int count = Math.Min (20 - _pos, cb);
-                               Buffer.BlockCopy (_buffer, _pos, result, 0, count);
-                               if (count >= cb)
-                                       return result;
-
-                // If we are going to go over the boundaries
-                // of the result on our l-1 iteration, reduce
-                // l to compensate.
-                if (((l-1) * 20 + count) > result.Length)
-                    l--;
-
-                               _pos = 0;
-                               rpos = count;
-                       }
-
-                       byte[] data = new byte [_salt.Length + 4];
-                       Buffer.BlockCopy (_salt, 0, data, 0, _salt.Length);
-
-                       for (int i=1; i <= l; i++) {
-                               _buffer = F (data, _iteration, ++_f);
-                               // we may not need the complete last block
-                               int count = ((i == l) ? result.Length - rpos : 20);
-                               Buffer.BlockCopy (_buffer, _pos, result, rpos, count);
-                               rpos += _pos + count;
-                               _pos = ((count == 20) ? 0 : count);
-                       }
-
-                       return result;
-               }
-               
-               public override void Reset () 
-               {
-                       _buffer = null;
-                       _pos = 0;
-                       _f = 0;
-               }
-               protected override void Dispose (bool disposing)
-               {
-                       Array.Clear (_buffer, 0, _buffer.Length);
-                       Array.Clear (_salt, 0, _salt.Length);
-                       _hmac.Clear ();
-                       base.Dispose (disposing);
-               }
-       } 
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/Rijndael.cs b/mcs/class/corlib/System.Security.Cryptography/Rijndael.cs
deleted file mode 100644 (file)
index 877f4ff..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.Security.Cryptography.Rijndael.cs
-//
-// Authors: Dan Lewis (dihlewis@yahoo.co.uk)
-//          Andrew Birkett (andy@nobugs.org)
-//
-// (C) 2002
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       // References:
-       // a.   FIPS PUB 197: Advanced Encryption Standard
-       //      http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
-
-       [ComVisible (true)]
-       public abstract class Rijndael : SymmetricAlgorithm {
-
-               public static new Rijndael Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.RijndaelManaged ();
-#else
-                       return Create ("System.Security.Cryptography.Rijndael");
-#endif
-               }
-
-               public static new Rijndael Create (string algName) 
-               {
-                       return (Rijndael) CryptoConfig.CreateFromName (algName);
-               }
-
-               protected Rijndael ()
-               {
-                       KeySizeValue = 256;
-                       BlockSizeValue = 128;
-                       FeedbackSizeValue = 128;
-       
-                       LegalKeySizesValue = new KeySizes [1];
-                       LegalKeySizesValue [0] = new KeySizes (128, 256, 64);
-
-                       LegalBlockSizesValue = new KeySizes [1];
-                       LegalBlockSizesValue [0] = new KeySizes (128, 256, 64);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RijndaelManaged.cs b/mcs/class/corlib/System.Security.Cryptography/RijndaelManaged.cs
deleted file mode 100644 (file)
index 7db3cfd..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// System.Security.Cryptography.RijndaelManaged.cs
-//
-// Authors:
-//     Mark Crichton (crichton@gimp.org)
-//     Andrew Birkett (andy@nobugs.org)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//     Kazuki Oikawa (kazuki@panicode.com)
-//
-// (C) 2002
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-       
-       // References:
-       // a.   FIPS PUB 197: Advanced Encryption Standard
-       //      http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
-       // b.   Rijndael Specification
-       //      http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael-ammended.pdf
-       
-       [ComVisible (true)]
-       public sealed class RijndaelManaged : Rijndael {
-               
-               public RijndaelManaged ()
-               {
-               }
-               
-               public override void GenerateIV ()
-               {
-                       IVValue = KeyBuilder.IV (BlockSizeValue >> 3);
-               }
-               
-               public override void GenerateKey ()
-               {
-                       KeyValue = KeyBuilder.Key (KeySizeValue >> 3);
-               }
-               
-               public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV) 
-               {
-                       return new RijndaelManagedTransform (this, false, rgbKey, rgbIV);
-               }
-               
-               public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV) 
-               {
-                       return new RijndaelManagedTransform (this, true, rgbKey, rgbIV);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/RijndaelManagedTransform.cs b/mcs/class/corlib/System.Security.Cryptography/RijndaelManagedTransform.cs
deleted file mode 100644 (file)
index ed731f8..0000000
+++ /dev/null
@@ -1,1565 +0,0 @@
-//
-// System.Security.Cryptography.RijndaelManagedTransform
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using Mono.Security.Cryptography;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       // Notes: This class is "publicly" new in Fx 2.0 but was already 
-       // existing in Fx 1.0. So this new class is only calling the old
-       // (and more general) one (RijndaelTransform)
-
-       [ComVisible (true)]
-       public sealed class RijndaelManagedTransform: ICryptoTransform, IDisposable {
-
-               private RijndaelTransform _st;
-               private int _bs;
-
-               internal RijndaelManagedTransform (Rijndael algo, bool encryption, byte[] key, byte[] iv)
-               {
-                       _st = new RijndaelTransform (algo, encryption, key, iv);
-                       _bs = algo.BlockSize;
-               }
-
-               public int BlockSizeValue {
-                       get { return _bs; }
-               }
-
-               public bool CanTransformMultipleBlocks {
-                       get { return _st.CanTransformMultipleBlocks; }
-               }
-
-               public bool CanReuseTransform {
-                       get { return _st.CanReuseTransform; }
-               }
-
-               public int InputBlockSize {
-                       get { return _st.InputBlockSize; }
-               }
-
-               public int OutputBlockSize {
-                       get { return _st.OutputBlockSize; }
-               }
-
-               public void Clear ()
-               {
-                       _st.Clear ();
-               }
-
-               [MonoTODO ("Reset does nothing since CanReuseTransform return false.")]
-               public void Reset ()
-               {
-               }
-
-               public void Dispose ()
-               {
-                       _st.Clear ();
-               }
-
-               public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-               {
-                       return _st.TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
-               }
-
-               public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       return _st.TransformFinalBlock (inputBuffer, inputOffset, inputCount);
-               }
-       }
-
-       class RijndaelTransform : SymmetricTransform {
-               private uint[] expandedKey;
-
-               private int Nb;
-               private int Nk;
-               private int Nr;
-               private int ts;
-       
-               public RijndaelTransform (Rijndael algo, bool encryption, byte[] key, byte[] iv) : base (algo, encryption, iv)
-               {
-                       if (key == null)
-                               throw new CryptographicException ("key is null");
-                       if ((iv != null) && (iv.Length != (algo.BlockSize >> 3))) {
-                               string msg = Locale.GetText ("IV length is invalid ({0} bytes), it should be {1} bytes long.",
-                                       iv.Length, (algo.BlockSize >> 3));
-                               throw new CryptographicException (msg);
-                       }
-
-                       int keySize = key.Length;
-                       if (keySize != 16 && keySize != 24 && keySize != 32) {
-                               string msg = Locale.GetText ("Key is too small ({0} bytes), it should be {1}, {2} or {3} bytes long.",
-                                       keySize, 16, 24, 32);
-                               throw new CryptographicException (msg);
-                       }
-                       keySize <<= 3; // bytes -> bits
-                       int blockSize = algo.BlockSize;
-                       if (algo.Mode == CipherMode.CFB) {
-                               if (algo.Padding == PaddingMode.None)
-                                       padmode = PaddingMode.Zeros;
-                               ts = algo.FeedbackSize >> 3;
-                       } else {
-                               ts = blockSize >> 3;
-                       }
-
-                       this.Nb = (blockSize >> 5); // div 32
-                       this.Nk = (keySize >> 5); // div 32
-       
-                       if (Nb == 8 || Nk == 8) {
-                               Nr = 14;
-                       } else if (Nb == 6 || Nk == 6) {
-                               Nr = 12;
-                       } else {
-                               Nr = 10;
-                       }
-       
-                       // Setup Expanded Key
-                       int exKeySize = Nb * (Nr+1);
-                       UInt32[] exKey = new UInt32[exKeySize];
-                       int pos = 0;
-                       for (int i=0; i < Nk; i++) {
-                               UInt32 value = ((UInt32)key [pos++] << 24);
-                               value |= ((UInt32)key[pos++] << 16);
-                               value |= ((UInt32)key[pos++] << 8);
-                               value |= ((UInt32)key[pos++]);
-                               exKey [i] = value;
-                       }
-       
-                       for (int i = Nk; i < exKeySize; i++) {
-                               UInt32 temp = exKey [i-1];
-                               if (i % Nk == 0) {
-                                       UInt32 rot = (UInt32) ((temp << 8) | ((temp >> 24) & 0xff));
-                                       temp = SubByte (rot) ^ Rcon [i / Nk];
-                               } else if (Nk > 6 && (i % Nk) == 4) {
-                                       temp = SubByte (temp);
-                               }
-                               exKey [i] = exKey [i-Nk] ^ temp;
-                       }
-
-                       if (!encryption && (algo.Mode == CipherMode.ECB || algo.Mode == CipherMode.CBC)) {
-                               for (int i = 0, k = exKeySize - Nb; i < k; i += Nb, k -= Nb) {
-                                       for (int j = 0; j < Nb; j ++) {
-                                               uint temp = exKey[i + j];
-                                               exKey[i + j] = exKey[k + j];
-                                               exKey[k + j] = temp;
-                                       }
-                               }
-
-                               for (int i = Nb; i < exKey.Length - Nb; i ++) {
-                                       exKey[i] =
-                                               iT0[SBox[(exKey[i] >> 24)]] ^
-                                               iT1[SBox[(byte)(exKey[i] >> 16)]] ^
-                                               iT2[SBox[(byte)(exKey[i] >> 8)]] ^
-                                               iT3[SBox[(byte)exKey[i]]];
-                               }
-                       }
-                       expandedKey = exKey;
-               }
-
-               public override int InputBlockSize {
-                       get { return ts; }
-               }
-               
-               public override int OutputBlockSize {
-                       get { return ts; }
-               }
-
-               public void Clear () 
-               {
-                       Dispose (true);
-               }
-       
-               // note: this method is guaranteed to be called with a valid blocksize
-               // for both input and output
-               protected override void ECB (byte[] input, byte[] output) 
-               {
-                       if (encrypt) {
-                               switch (Nb) {
-                                       case 4:
-                                               Encrypt128 (input, output, expandedKey);
-                                               return;
-                                       case 6:
-                                               Encrypt192 (input, output, expandedKey);
-                                               return;
-                                       case 8:
-                                               Encrypt256 (input, output, expandedKey);
-                                               return;
-                               }
-                       } else {
-                               switch (Nb) {
-                                       case 4:
-                                               Decrypt128 (input, output, expandedKey);
-                                               return;
-                                       case 6:
-                                               Decrypt192 (input, output, expandedKey);
-                                               return;
-                                       case 8:
-                                               Decrypt256 (input, output, expandedKey);
-                                               return;
-                               }
-                       }
-               }
-
-               // RijndaelManaged does not implement CFB like any *CryptoServiceProvider does
-               // not even AesCryptoServiceProvider, while AesManaged does not support CFB at all
-               protected override void CFB (byte[] input, byte[] output) 
-               {
-                       bool last = lastBlock && padmode == PaddingMode.Zeros;
-                       int outer = last ? FeedBackByte : BlockSizeByte / FeedBackByte;
-                       int inner = last ? Nb : FeedBackByte;
-                       if (encrypt) {
-                               for (int x = 0; x < outer; x++) {
-                                       // temp is first initialized with the IV
-                                       ECB (temp, temp2);
-                                       
-                                       for (int i = 0; i < inner; i++)
-                                               output[i + x] = (byte)(temp2[i] ^ input[i + x]);
-                                       Buffer.BlockCopy (temp, inner, temp, 0, BlockSizeByte - inner);
-                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - inner, inner);
-                               }
-                       }
-                       else {
-                               for (int x = 0; x < outer; x++) {
-                                       // we do not really decrypt this data!
-                                       encrypt = true;
-                                       // temp is first initialized with the IV
-                                       ECB (temp, temp2);
-                                       encrypt = false;
-                                       
-                                       Buffer.BlockCopy (temp, inner, temp, 0, BlockSizeByte - inner);
-                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - inner, inner);
-                                       for (int i = 0; i < inner; i++)
-                                               output[i + x] = (byte)(temp2[i] ^ input[i + x]);
-                               }
-                       }
-               }
-
-               protected override byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       var result = base.FinalEncrypt (inputBuffer, inputOffset, inputCount);
-                       if (algo.Mode != CipherMode.CFB)
-                               return result;
-
-                       switch (algo.Padding) {
-                       // RijdaelManaged treats both Zeros and None identically
-                       case PaddingMode.None:
-                       case PaddingMode.Zeros:
-                               if (inputCount != result.Length) {
-                                       byte[] part = new byte [inputCount];
-                                       Buffer.BlockCopy (result, 0, part, 0, inputCount);
-                                       return part;
-                               }
-                               break;
-                       }
-                       return result;
-               }
-
-               protected override byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       int full = (inputCount / BlockSizeByte) * BlockSizeByte;
-                       int rem = inputCount - full;
-                       if (rem == 0)
-                               return base.FinalDecrypt (inputBuffer, inputOffset, inputCount);
-
-                       if (algo.Mode != CipherMode.CFB)
-                               throw new CryptographicException ("Invalid input block size.");
-
-                       byte[] final = new byte [inputCount];
-                       full += BlockSizeByte;
-                       byte[] paddedInput = new byte [full];
-                       Buffer.BlockCopy (inputBuffer, 0, paddedInput, 0, inputCount);
-                       inputBuffer = paddedInput;
-                       inputOffset = 0;
-                       inputCount = full;
-                       var result = base.FinalDecrypt (inputBuffer, inputOffset, inputCount);
-                       Buffer.BlockCopy (result, 0, final, 0, final.Length);
-                       return final;
-               }
-
-               private UInt32 SubByte (UInt32 a)
-               {
-                       UInt32 value = 0xff & a;
-                       UInt32 result = SBox[value];
-                       value = 0xff & (a >> 8);
-                       result |= (UInt32)SBox[value] << 8;
-                       value = 0xff & (a >> 16);
-                       result |= (UInt32)SBox[value] << 16;
-                       value = 0xff & (a >> 24);
-                       return result | (UInt32)(SBox[value] << 24);
-               }
-
-               #region Encrypt
-               private void Encrypt128 (byte[] indata, byte[] outdata, uint[] ekey)
-               {
-                       uint a0, a1, a2, a3, b0, b1, b2, b3;
-                       int ei = 40;
-
-                       /* Round 0 */
-                       a0 = (((uint)indata[0] << 24) | ((uint)indata[1] << 16) | ((uint)indata[2] << 8) | (uint)indata[3]) ^ ekey[0];
-                       a1 = (((uint)indata[4] << 24) | ((uint)indata[5] << 16) | ((uint)indata[6] << 8) | (uint)indata[7]) ^ ekey[1];
-                       a2 = (((uint)indata[8] << 24) | ((uint)indata[9] << 16) | ((uint)indata[10] << 8) | (uint)indata[11]) ^ ekey[2];
-                       a3 = (((uint)indata[12] << 24) | ((uint)indata[13] << 16) | ((uint)indata[14] << 8) | (uint)indata[15]) ^ ekey[3];
-
-                       /* Round 1 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[4];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[5];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[6];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[7];
-
-                       /* Round 2 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[8];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b0] ^ ekey[9];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[10];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[11];
-
-                       /* Round 3 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[12];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[13];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[14];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[15];
-
-                       /* Round 4 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[16];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b0] ^ ekey[17];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[18];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[19];
-
-                       /* Round 5 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[20];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[21];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[22];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[23];
-
-                       /* Round 6 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[24];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b0] ^ ekey[25];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[26];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[27];
-
-                       /* Round 7 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[28];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[29];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[30];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[31];
-
-                       /* Round 8 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[32];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b0] ^ ekey[33];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[34];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[35];
-
-                       /* Round 9 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[36];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[37];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[38];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[39];
-
-                       if (Nr > 10) {
-
-                               /* Round 10 */
-                               a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[40];
-                               a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b0] ^ ekey[41];
-                               a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[42];
-                               a3 = T0[b3 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[43];
-
-                               /* Round 11 */
-                               b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[44];
-                               b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[45];
-                               b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[46];
-                               b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[47];
-
-                               ei = 48;
-
-                               if (Nr > 12) {
-
-                                       /* Round 12 */
-                                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[48];
-                                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b0] ^ ekey[49];
-                                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[50];
-                                       a3 = T0[b3 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[51];
-
-                                       /* Round 13 */
-                                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[52];
-                                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a0] ^ ekey[53];
-                                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[54];
-                                       b3 = T0[a3 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[55];
-
-                                       ei = 56;
-                               }
-                       }
-
-                       /* Final Round */
-                       outdata[0] = (byte)(SBox[b0 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[1] = (byte)(SBox[(byte)(b1 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[2] = (byte)(SBox[(byte)(b2 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[3] = (byte)(SBox[(byte)b3] ^ (byte)ekey[ei++]);
-
-                       outdata[4] = (byte)(SBox[b1 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[5] = (byte)(SBox[(byte)(b2 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[6] = (byte)(SBox[(byte)(b3 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[7] = (byte)(SBox[(byte)b0] ^ (byte)ekey[ei++]);
-
-                       outdata[8] = (byte)(SBox[b2 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[9] = (byte)(SBox[(byte)(b3 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[10] = (byte)(SBox[(byte)(b0 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[11] = (byte)(SBox[(byte)b1] ^ (byte)ekey[ei++]);
-
-                       outdata[12] = (byte)(SBox[b3 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[13] = (byte)(SBox[(byte)(b0 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[14] = (byte)(SBox[(byte)(b1 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[15] = (byte)(SBox[(byte)b2] ^ (byte)ekey[ei++]);
-               }
-               private void Encrypt192 (byte[] indata, byte[] outdata, uint[] ekey)
-               {
-                       uint a0, a1, a2, a3, a4, a5, b0, b1, b2, b3, b4, b5;
-                       int ei = 72;
-
-                       /* Round 0 */
-                       a0 = (((uint)indata[0] << 24) | ((uint)indata[1] << 16) | ((uint)indata[2] << 8) | (uint)indata[3]) ^ ekey[0];
-                       a1 = (((uint)indata[4] << 24) | ((uint)indata[5] << 16) | ((uint)indata[6] << 8) | (uint)indata[7]) ^ ekey[1];
-                       a2 = (((uint)indata[8] << 24) | ((uint)indata[9] << 16) | ((uint)indata[10] << 8) | (uint)indata[11]) ^ ekey[2];
-                       a3 = (((uint)indata[12] << 24) | ((uint)indata[13] << 16) | ((uint)indata[14] << 8) | (uint)indata[15]) ^ ekey[3];
-                       a4 = (((uint)indata[16] << 24) | ((uint)indata[17] << 16) | ((uint)indata[18] << 8) | (uint)indata[19]) ^ ekey[4];
-                       a5 = (((uint)indata[20] << 24) | ((uint)indata[21] << 16) | ((uint)indata[22] << 8) | (uint)indata[23]) ^ ekey[5];
-
-                       /* Round 1 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[6];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[7];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[8];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[9];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[10];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[11];
-
-                       /* Round 2 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[12];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[13];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[14];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b0] ^ ekey[15];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[16];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[17];
-
-                       /* Round 3 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[18];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[19];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[20];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[21];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[22];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[23];
-
-                       /* Round 4 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[24];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[25];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[26];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b0] ^ ekey[27];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[28];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[29];
-
-                       /* Round 5 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[30];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[31];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[32];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[33];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[34];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[35];
-
-                       /* Round 6 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[36];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[37];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[38];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b0] ^ ekey[39];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[40];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[41];
-
-                       /* Round 7 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[42];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[43];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[44];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[45];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[46];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[47];
-
-                       /* Round 8 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[48];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[49];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[50];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b0] ^ ekey[51];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[52];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[53];
-
-                       /* Round 9 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[54];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[55];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[56];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[57];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[58];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[59];
-
-                       /* Round 10 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[60];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[61];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[62];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b0] ^ ekey[63];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[64];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[65];
-
-                       /* Round 11 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[66];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[67];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[68];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[69];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[70];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[71];
-
-                       if (Nr > 12) {
-
-                               /* Round 12 */
-                               a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[72];
-                               a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[73];
-                               a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[74];
-                               a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b0] ^ ekey[75];
-                               a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[76];
-                               a5 = T0[b5 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[77];
-
-                               /* Round 13 */
-                               b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[78];
-                               b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[79];
-                               b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[80];
-                               b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a0] ^ ekey[81];
-                               b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[82];
-                               b5 = T0[a5 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[83];
-
-                               ei = 84;
-                       }
-
-                       /* Final Round */
-                       outdata[0] = (byte)(SBox[b0 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[1] = (byte)(SBox[(byte)(b1 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[2] = (byte)(SBox[(byte)(b2 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[3] = (byte)(SBox[(byte)b3] ^ (byte)ekey[ei++]);
-
-                       outdata[4] = (byte)(SBox[b1 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[5] = (byte)(SBox[(byte)(b2 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[6] = (byte)(SBox[(byte)(b3 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[7] = (byte)(SBox[(byte)b4] ^ (byte)ekey[ei++]);
-
-                       outdata[8] = (byte)(SBox[b2 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[9] = (byte)(SBox[(byte)(b3 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[10] = (byte)(SBox[(byte)(b4 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[11] = (byte)(SBox[(byte)b5] ^ (byte)ekey[ei++]);
-
-                       outdata[12] = (byte)(SBox[b3 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[13] = (byte)(SBox[(byte)(b4 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[14] = (byte)(SBox[(byte)(b5 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[15] = (byte)(SBox[(byte)b0] ^ (byte)ekey[ei++]);
-
-                       outdata[16] = (byte)(SBox[b4 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[17] = (byte)(SBox[(byte)(b5 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[18] = (byte)(SBox[(byte)(b0 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[19] = (byte)(SBox[(byte)b1] ^ (byte)ekey[ei++]);
-
-                       outdata[20] = (byte)(SBox[b5 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[21] = (byte)(SBox[(byte)(b0 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[22] = (byte)(SBox[(byte)(b1 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[23] = (byte)(SBox[(byte)b2] ^ (byte)ekey[ei++]);
-               }
-               private void Encrypt256 (byte[] indata, byte[] outdata, uint[] ekey)
-               {
-                       uint a0, a1, a2, a3, a4, a5, a6, a7, b0, b1, b2, b3, b4, b5, b6, b7;
-
-                       /* Round 0 */
-                       a0 = (((uint)indata[0] << 24) | ((uint)indata[1] << 16) | ((uint)indata[2] << 8) | (uint)indata[3]) ^ ekey[0];
-                       a1 = (((uint)indata[4] << 24) | ((uint)indata[5] << 16) | ((uint)indata[6] << 8) | (uint)indata[7]) ^ ekey[1];
-                       a2 = (((uint)indata[8] << 24) | ((uint)indata[9] << 16) | ((uint)indata[10] << 8) | (uint)indata[11]) ^ ekey[2];
-                       a3 = (((uint)indata[12] << 24) | ((uint)indata[13] << 16) | ((uint)indata[14] << 8) | (uint)indata[15]) ^ ekey[3];
-                       a4 = (((uint)indata[16] << 24) | ((uint)indata[17] << 16) | ((uint)indata[18] << 8) | (uint)indata[19]) ^ ekey[4];
-                       a5 = (((uint)indata[20] << 24) | ((uint)indata[21] << 16) | ((uint)indata[22] << 8) | (uint)indata[23]) ^ ekey[5];
-                       a6 = (((uint)indata[24] << 24) | ((uint)indata[25] << 16) | ((uint)indata[26] << 8) | (uint)indata[27]) ^ ekey[6];
-                       a7 = (((uint)indata[28] << 24) | ((uint)indata[29] << 16) | ((uint)indata[30] << 8) | (uint)indata[31]) ^ ekey[7];
-
-                       /* Round 1 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[8];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[9];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[10];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[11];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[12];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[13];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[14];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[15];
-
-                       /* Round 2 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[16];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[17];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b6] ^ ekey[18];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b6 >> 8)] ^ T3[(byte)b7] ^ ekey[19];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b7 >> 8)] ^ T3[(byte)b0] ^ ekey[20];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b6 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[21];
-                       a6 = T0[b6 >> 24] ^ T1[(byte)(b7 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[22];
-                       a7 = T0[b7 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[23];
-
-                       /* Round 3 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[24];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[25];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[26];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[27];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[28];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[29];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[30];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[31];
-
-                       /* Round 4 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[32];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[33];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b6] ^ ekey[34];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b6 >> 8)] ^ T3[(byte)b7] ^ ekey[35];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b7 >> 8)] ^ T3[(byte)b0] ^ ekey[36];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b6 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[37];
-                       a6 = T0[b6 >> 24] ^ T1[(byte)(b7 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[38];
-                       a7 = T0[b7 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[39];
-
-                       /* Round 5 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[40];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[41];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[42];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[43];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[44];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[45];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[46];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[47];
-
-                       /* Round 6 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[48];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[49];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b6] ^ ekey[50];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b6 >> 8)] ^ T3[(byte)b7] ^ ekey[51];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b7 >> 8)] ^ T3[(byte)b0] ^ ekey[52];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b6 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[53];
-                       a6 = T0[b6 >> 24] ^ T1[(byte)(b7 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[54];
-                       a7 = T0[b7 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[55];
-
-                       /* Round 7 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[56];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[57];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[58];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[59];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[60];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[61];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[62];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[63];
-
-                       /* Round 8 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[64];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[65];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b6] ^ ekey[66];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b6 >> 8)] ^ T3[(byte)b7] ^ ekey[67];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b7 >> 8)] ^ T3[(byte)b0] ^ ekey[68];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b6 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[69];
-                       a6 = T0[b6 >> 24] ^ T1[(byte)(b7 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[70];
-                       a7 = T0[b7 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[71];
-
-                       /* Round 9 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[72];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[73];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[74];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[75];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[76];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[77];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[78];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[79];
-
-                       /* Round 10 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[80];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[81];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b6] ^ ekey[82];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b6 >> 8)] ^ T3[(byte)b7] ^ ekey[83];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b7 >> 8)] ^ T3[(byte)b0] ^ ekey[84];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b6 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[85];
-                       a6 = T0[b6 >> 24] ^ T1[(byte)(b7 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[86];
-                       a7 = T0[b7 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[87];
-
-                       /* Round 11 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[88];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[89];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[90];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[91];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[92];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[93];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[94];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[95];
-
-                       /* Round 12 */
-                       a0 = T0[b0 >> 24] ^ T1[(byte)(b1 >> 16)] ^ T2[(byte)(b3 >> 8)] ^ T3[(byte)b4] ^ ekey[96];
-                       a1 = T0[b1 >> 24] ^ T1[(byte)(b2 >> 16)] ^ T2[(byte)(b4 >> 8)] ^ T3[(byte)b5] ^ ekey[97];
-                       a2 = T0[b2 >> 24] ^ T1[(byte)(b3 >> 16)] ^ T2[(byte)(b5 >> 8)] ^ T3[(byte)b6] ^ ekey[98];
-                       a3 = T0[b3 >> 24] ^ T1[(byte)(b4 >> 16)] ^ T2[(byte)(b6 >> 8)] ^ T3[(byte)b7] ^ ekey[99];
-                       a4 = T0[b4 >> 24] ^ T1[(byte)(b5 >> 16)] ^ T2[(byte)(b7 >> 8)] ^ T3[(byte)b0] ^ ekey[100];
-                       a5 = T0[b5 >> 24] ^ T1[(byte)(b6 >> 16)] ^ T2[(byte)(b0 >> 8)] ^ T3[(byte)b1] ^ ekey[101];
-                       a6 = T0[b6 >> 24] ^ T1[(byte)(b7 >> 16)] ^ T2[(byte)(b1 >> 8)] ^ T3[(byte)b2] ^ ekey[102];
-                       a7 = T0[b7 >> 24] ^ T1[(byte)(b0 >> 16)] ^ T2[(byte)(b2 >> 8)] ^ T3[(byte)b3] ^ ekey[103];
-
-                       /* Round 13 */
-                       b0 = T0[a0 >> 24] ^ T1[(byte)(a1 >> 16)] ^ T2[(byte)(a3 >> 8)] ^ T3[(byte)a4] ^ ekey[104];
-                       b1 = T0[a1 >> 24] ^ T1[(byte)(a2 >> 16)] ^ T2[(byte)(a4 >> 8)] ^ T3[(byte)a5] ^ ekey[105];
-                       b2 = T0[a2 >> 24] ^ T1[(byte)(a3 >> 16)] ^ T2[(byte)(a5 >> 8)] ^ T3[(byte)a6] ^ ekey[106];
-                       b3 = T0[a3 >> 24] ^ T1[(byte)(a4 >> 16)] ^ T2[(byte)(a6 >> 8)] ^ T3[(byte)a7] ^ ekey[107];
-                       b4 = T0[a4 >> 24] ^ T1[(byte)(a5 >> 16)] ^ T2[(byte)(a7 >> 8)] ^ T3[(byte)a0] ^ ekey[108];
-                       b5 = T0[a5 >> 24] ^ T1[(byte)(a6 >> 16)] ^ T2[(byte)(a0 >> 8)] ^ T3[(byte)a1] ^ ekey[109];
-                       b6 = T0[a6 >> 24] ^ T1[(byte)(a7 >> 16)] ^ T2[(byte)(a1 >> 8)] ^ T3[(byte)a2] ^ ekey[110];
-                       b7 = T0[a7 >> 24] ^ T1[(byte)(a0 >> 16)] ^ T2[(byte)(a2 >> 8)] ^ T3[(byte)a3] ^ ekey[111];
-
-                       /* Final Round */
-                       outdata[0] = (byte)(SBox[b0 >> 24] ^ (byte)(ekey[112] >> 24));
-                       outdata[1] = (byte)(SBox[(byte)(b1 >> 16)] ^ (byte)(ekey[112] >> 16));
-                       outdata[2] = (byte)(SBox[(byte)(b3 >> 8)] ^ (byte)(ekey[112] >> 8));
-                       outdata[3] = (byte)(SBox[(byte)b4] ^ (byte)ekey[112]);
-
-                       outdata[4] = (byte)(SBox[b1 >> 24] ^ (byte)(ekey[113] >> 24));
-                       outdata[5] = (byte)(SBox[(byte)(b2 >> 16)] ^ (byte)(ekey[113] >> 16));
-                       outdata[6] = (byte)(SBox[(byte)(b4 >> 8)] ^ (byte)(ekey[113] >> 8));
-                       outdata[7] = (byte)(SBox[(byte)b5] ^ (byte)ekey[113]);
-
-                       outdata[8] = (byte)(SBox[b2 >> 24] ^ (byte)(ekey[114] >> 24));
-                       outdata[9] = (byte)(SBox[(byte)(b3 >> 16)] ^ (byte)(ekey[114] >> 16));
-                       outdata[10] = (byte)(SBox[(byte)(b5 >> 8)] ^ (byte)(ekey[114] >> 8));
-                       outdata[11] = (byte)(SBox[(byte)b6] ^ (byte)ekey[114]);
-
-                       outdata[12] = (byte)(SBox[b3 >> 24] ^ (byte)(ekey[115] >> 24));
-                       outdata[13] = (byte)(SBox[(byte)(b4 >> 16)] ^ (byte)(ekey[115] >> 16));
-                       outdata[14] = (byte)(SBox[(byte)(b6 >> 8)] ^ (byte)(ekey[115] >> 8));
-                       outdata[15] = (byte)(SBox[(byte)b7] ^ (byte)ekey[115]);
-
-                       outdata[16] = (byte)(SBox[b4 >> 24] ^ (byte)(ekey[116] >> 24));
-                       outdata[17] = (byte)(SBox[(byte)(b5 >> 16)] ^ (byte)(ekey[116] >> 16));
-                       outdata[18] = (byte)(SBox[(byte)(b7 >> 8)] ^ (byte)(ekey[116] >> 8));
-                       outdata[19] = (byte)(SBox[(byte)b0] ^ (byte)ekey[116]);
-
-                       outdata[20] = (byte)(SBox[b5 >> 24] ^ (byte)(ekey[117] >> 24));
-                       outdata[21] = (byte)(SBox[(byte)(b6 >> 16)] ^ (byte)(ekey[117] >> 16));
-                       outdata[22] = (byte)(SBox[(byte)(b0 >> 8)] ^ (byte)(ekey[117] >> 8));
-                       outdata[23] = (byte)(SBox[(byte)b1] ^ (byte)ekey[117]);
-
-                       outdata[24] = (byte)(SBox[b6 >> 24] ^ (byte)(ekey[118] >> 24));
-                       outdata[25] = (byte)(SBox[(byte)(b7 >> 16)] ^ (byte)(ekey[118] >> 16));
-                       outdata[26] = (byte)(SBox[(byte)(b1 >> 8)] ^ (byte)(ekey[118] >> 8));
-                       outdata[27] = (byte)(SBox[(byte)b2] ^ (byte)ekey[118]);
-
-                       outdata[28] = (byte)(SBox[b7 >> 24] ^ (byte)(ekey[119] >> 24));
-                       outdata[29] = (byte)(SBox[(byte)(b0 >> 16)] ^ (byte)(ekey[119] >> 16));
-                       outdata[30] = (byte)(SBox[(byte)(b2 >> 8)] ^ (byte)(ekey[119] >> 8));
-                       outdata[31] = (byte)(SBox[(byte)b3] ^ (byte)ekey[119]);
-               }
-               #endregion
-
-               #region Decrypt
-               private void Decrypt128 (byte[] indata, byte[] outdata, uint[] ekey)
-               {
-                       uint a0, a1, a2, a3, b0, b1, b2, b3;
-                       int ei = 40;
-
-                       /* Round 0 */
-                       a0 = (((uint)indata[0] << 24) | ((uint)indata[1] << 16) | ((uint)indata[2] << 8) | (uint)indata[3]) ^ ekey[0];
-                       a1 = (((uint)indata[4] << 24) | ((uint)indata[5] << 16) | ((uint)indata[6] << 8) | (uint)indata[7]) ^ ekey[1];
-                       a2 = (((uint)indata[8] << 24) | ((uint)indata[9] << 16) | ((uint)indata[10] << 8) | (uint)indata[11]) ^ ekey[2];
-                       a3 = (((uint)indata[12] << 24) | ((uint)indata[13] << 16) | ((uint)indata[14] << 8) | (uint)indata[15]) ^ ekey[3];
-
-                       /* Round 1 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[4];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[5];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[6];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[7];
-
-                       /* Round 2 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[8];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[9];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b3] ^ ekey[10];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[11];
-
-                       /* Round 3 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[12];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[13];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[14];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[15];
-
-                       /* Round 4 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[16];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[17];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b3] ^ ekey[18];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[19];
-
-                       /* Round 5 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[20];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[21];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[22];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[23];
-
-                       /* Round 6 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[24];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[25];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b3] ^ ekey[26];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[27];
-
-                       /* Round 7 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[28];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[29];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[30];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[31];
-
-                       /* Round 8 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[32];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[33];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b3] ^ ekey[34];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[35];
-
-                       /* Round 9 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[36];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[37];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[38];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[39];
-
-                       if (Nr > 10) {
-
-                               /* Round 10 */
-                               a0 = iT0[b0 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[40];
-                               a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[41];
-                               a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b3] ^ ekey[42];
-                               a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[43];
-
-                               /* Round 11 */
-                               b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[44];
-                               b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[45];
-                               b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[46];
-                               b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[47];
-
-                               ei = 48;
-
-                               if (Nr > 12) {
-
-                                       /* Round 12 */
-                                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[48];
-                                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[49];
-                                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b3] ^ ekey[50];
-                                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[51];
-
-                                       /* Round 13 */
-                                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[52];
-                                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[53];
-                                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a3] ^ ekey[54];
-                                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[55];
-                                       
-                                       ei = 56;
-                               }
-                       }
-
-                       /* Final Round */
-                       outdata[0] = (byte)(iSBox[b0 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[1] = (byte)(iSBox[(byte)(b3 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[2] = (byte)(iSBox[(byte)(b2 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[3] = (byte)(iSBox[(byte)b1] ^ (byte)ekey[ei++]);
-
-                       outdata[4] = (byte)(iSBox[b1 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[5] = (byte)(iSBox[(byte)(b0 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[6] = (byte)(iSBox[(byte)(b3 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[7] = (byte)(iSBox[(byte)b2] ^ (byte)ekey[ei++]);
-
-                       outdata[8] = (byte)(iSBox[b2 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[9] = (byte)(iSBox[(byte)(b1 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[10] = (byte)(iSBox[(byte)(b0 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[11] = (byte)(iSBox[(byte)b3] ^ (byte)ekey[ei++]);
-
-                       outdata[12] = (byte)(iSBox[b3 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[13] = (byte)(iSBox[(byte)(b2 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[14] = (byte)(iSBox[(byte)(b1 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[15] = (byte)(iSBox[(byte)b0] ^ (byte)ekey[ei++]);
-               }
-               private void Decrypt192 (byte[] indata, byte[] outdata, uint[] ekey)
-               {
-                       uint a0, a1, a2, a3, a4, a5, b0, b1, b2, b3, b4, b5;
-                       int ei = 72;
-
-                       /* Round 0 */
-                       a0 = (((uint)indata[0] << 24) | ((uint)indata[1] << 16) | ((uint)indata[2] << 8) | (uint)indata[3]) ^ ekey[0];
-                       a1 = (((uint)indata[4] << 24) | ((uint)indata[5] << 16) | ((uint)indata[6] << 8) | (uint)indata[7]) ^ ekey[1];
-                       a2 = (((uint)indata[8] << 24) | ((uint)indata[9] << 16) | ((uint)indata[10] << 8) | (uint)indata[11]) ^ ekey[2];
-                       a3 = (((uint)indata[12] << 24) | ((uint)indata[13] << 16) | ((uint)indata[14] << 8) | (uint)indata[15]) ^ ekey[3];
-                       a4 = (((uint)indata[16] << 24) | ((uint)indata[17] << 16) | ((uint)indata[18] << 8) | (uint)indata[19]) ^ ekey[4];
-                       a5 = (((uint)indata[20] << 24) | ((uint)indata[21] << 16) | ((uint)indata[22] << 8) | (uint)indata[23]) ^ ekey[5];
-
-                       /* Round 1 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[6];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[7];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[8];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[9];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[10];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[11];
-
-                       /* Round 2 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[12];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[13];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b5] ^ ekey[14];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[15];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[16];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[17];
-
-                       /* Round 3 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[18];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[19];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[20];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[21];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[22];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[23];
-
-                       /* Round 4 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[24];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[25];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b5] ^ ekey[26];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[27];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[28];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[29];
-
-                       /* Round 5 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[30];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[31];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[32];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[33];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[34];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[35];
-
-                       /* Round 6 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[36];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[37];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b5] ^ ekey[38];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[39];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[40];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[41];
-
-                       /* Round 7 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[42];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[43];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[44];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[45];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[46];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[47];
-
-                       /* Round 8 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[48];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[49];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b5] ^ ekey[50];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[51];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[52];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[53];
-
-                       /* Round 9 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[54];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[55];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[56];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[57];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[58];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[59];
-
-                       /* Round 10 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[60];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[61];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b5] ^ ekey[62];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[63];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[64];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[65];
-
-                       /* Round 11 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[66];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[67];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[68];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[69];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[70];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[71];
-
-                       if (Nr > 12) {
-
-                               /* Round 12 */
-                               a0 = iT0[b0 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[72];
-                               a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[73];
-                               a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b5] ^ ekey[74];
-                               a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[75];
-                               a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[76];
-                               a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[77];
-
-                               /* Round 13 */
-                               b0 = iT0[a0 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[78];
-                               b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[79];
-                               b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a5] ^ ekey[80];
-                               b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[81];
-                               b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[82];
-                               b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[83];
-
-                               ei = 84;
-                       }
-
-                       /* Final Round */
-                       outdata[0] = (byte)(iSBox[b0 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[1] = (byte)(iSBox[(byte)(b5 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[2] = (byte)(iSBox[(byte)(b4 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[3] = (byte)(iSBox[(byte)b3] ^ (byte)ekey[ei++]);
-
-                       outdata[4] = (byte)(iSBox[b1 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[5] = (byte)(iSBox[(byte)(b0 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[6] = (byte)(iSBox[(byte)(b5 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[7] = (byte)(iSBox[(byte)b4] ^ (byte)ekey[ei++]);
-
-                       outdata[8] = (byte)(iSBox[b2 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[9] = (byte)(iSBox[(byte)(b1 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[10] = (byte)(iSBox[(byte)(b0 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[11] = (byte)(iSBox[(byte)b5] ^ (byte)ekey[ei++]);
-
-                       outdata[12] = (byte)(iSBox[b3 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[13] = (byte)(iSBox[(byte)(b2 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[14] = (byte)(iSBox[(byte)(b1 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[15] = (byte)(iSBox[(byte)b0] ^ (byte)ekey[ei++]);
-
-                       outdata[16] = (byte)(iSBox[b4 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[17] = (byte)(iSBox[(byte)(b3 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[18] = (byte)(iSBox[(byte)(b2 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[19] = (byte)(iSBox[(byte)b1] ^ (byte)ekey[ei++]);
-
-                       outdata[20] = (byte)(iSBox[b5 >> 24] ^ (byte)(ekey[ei] >> 24));
-                       outdata[21] = (byte)(iSBox[(byte)(b4 >> 16)] ^ (byte)(ekey[ei] >> 16));
-                       outdata[22] = (byte)(iSBox[(byte)(b3 >> 8)] ^ (byte)(ekey[ei] >> 8));
-                       outdata[23] = (byte)(iSBox[(byte)b2] ^ (byte)ekey[ei++]);
-               }
-               private void Decrypt256 (byte[] indata, byte[] outdata, uint[] ekey)
-               {
-                       uint a0, a1, a2, a3, a4, a5, a6, a7, b0, b1, b2, b3, b4, b5, b6, b7;
-
-                       /* Round 0 */
-                       a0 = (((uint)indata[0] << 24) | ((uint)indata[1] << 16) | ((uint)indata[2] << 8) | (uint)indata[3]) ^ ekey[0];
-                       a1 = (((uint)indata[4] << 24) | ((uint)indata[5] << 16) | ((uint)indata[6] << 8) | (uint)indata[7]) ^ ekey[1];
-                       a2 = (((uint)indata[8] << 24) | ((uint)indata[9] << 16) | ((uint)indata[10] << 8) | (uint)indata[11]) ^ ekey[2];
-                       a3 = (((uint)indata[12] << 24) | ((uint)indata[13] << 16) | ((uint)indata[14] << 8) | (uint)indata[15]) ^ ekey[3];
-                       a4 = (((uint)indata[16] << 24) | ((uint)indata[17] << 16) | ((uint)indata[18] << 8) | (uint)indata[19]) ^ ekey[4];
-                       a5 = (((uint)indata[20] << 24) | ((uint)indata[21] << 16) | ((uint)indata[22] << 8) | (uint)indata[23]) ^ ekey[5];
-                       a6 = (((uint)indata[24] << 24) | ((uint)indata[25] << 16) | ((uint)indata[26] << 8) | (uint)indata[27]) ^ ekey[6];
-                       a7 = (((uint)indata[28] << 24) | ((uint)indata[29] << 16) | ((uint)indata[30] << 8) | (uint)indata[31]) ^ ekey[7];
-
-                       /* Round 1 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[8];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[9];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[10];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[11];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[12];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[13];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[14];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[15];
-
-                       /* Round 2 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b7 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[16];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b6 >> 8)] ^ iT3[(byte)b5] ^ ekey[17];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b7 >> 8)] ^ iT3[(byte)b6] ^ ekey[18];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b7] ^ ekey[19];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[20];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[21];
-                       a6 = iT0[b6 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[22];
-                       a7 = iT0[b7 >> 24] ^ iT1[(byte)(b6 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[23];
-
-                       /* Round 3 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[24];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[25];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[26];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[27];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[28];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[29];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[30];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[31];
-
-                       /* Round 4 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b7 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[32];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b6 >> 8)] ^ iT3[(byte)b5] ^ ekey[33];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b7 >> 8)] ^ iT3[(byte)b6] ^ ekey[34];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b7] ^ ekey[35];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[36];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[37];
-                       a6 = iT0[b6 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[38];
-                       a7 = iT0[b7 >> 24] ^ iT1[(byte)(b6 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[39];
-
-                       /* Round 5 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[40];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[41];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[42];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[43];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[44];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[45];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[46];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[47];
-
-                       /* Round 6 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b7 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[48];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b6 >> 8)] ^ iT3[(byte)b5] ^ ekey[49];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b7 >> 8)] ^ iT3[(byte)b6] ^ ekey[50];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b7] ^ ekey[51];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[52];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[53];
-                       a6 = iT0[b6 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[54];
-                       a7 = iT0[b7 >> 24] ^ iT1[(byte)(b6 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[55];
-
-                       /* Round 7 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[56];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[57];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[58];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[59];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[60];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[61];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[62];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[63];
-
-                       /* Round 8 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b7 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[64];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b6 >> 8)] ^ iT3[(byte)b5] ^ ekey[65];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b7 >> 8)] ^ iT3[(byte)b6] ^ ekey[66];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b7] ^ ekey[67];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[68];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[69];
-                       a6 = iT0[b6 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[70];
-                       a7 = iT0[b7 >> 24] ^ iT1[(byte)(b6 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[71];
-
-                       /* Round 9 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[72];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[73];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[74];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[75];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[76];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[77];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[78];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[79];
-
-                       /* Round 10 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b7 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[80];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b6 >> 8)] ^ iT3[(byte)b5] ^ ekey[81];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b7 >> 8)] ^ iT3[(byte)b6] ^ ekey[82];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b7] ^ ekey[83];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[84];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[85];
-                       a6 = iT0[b6 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[86];
-                       a7 = iT0[b7 >> 24] ^ iT1[(byte)(b6 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[87];
-
-                       /* Round 11 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[88];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[89];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[90];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[91];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[92];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[93];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[94];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[95];
-
-                       /* Round 12 */
-                       a0 = iT0[b0 >> 24] ^ iT1[(byte)(b7 >> 16)] ^ iT2[(byte)(b5 >> 8)] ^ iT3[(byte)b4] ^ ekey[96];
-                       a1 = iT0[b1 >> 24] ^ iT1[(byte)(b0 >> 16)] ^ iT2[(byte)(b6 >> 8)] ^ iT3[(byte)b5] ^ ekey[97];
-                       a2 = iT0[b2 >> 24] ^ iT1[(byte)(b1 >> 16)] ^ iT2[(byte)(b7 >> 8)] ^ iT3[(byte)b6] ^ ekey[98];
-                       a3 = iT0[b3 >> 24] ^ iT1[(byte)(b2 >> 16)] ^ iT2[(byte)(b0 >> 8)] ^ iT3[(byte)b7] ^ ekey[99];
-                       a4 = iT0[b4 >> 24] ^ iT1[(byte)(b3 >> 16)] ^ iT2[(byte)(b1 >> 8)] ^ iT3[(byte)b0] ^ ekey[100];
-                       a5 = iT0[b5 >> 24] ^ iT1[(byte)(b4 >> 16)] ^ iT2[(byte)(b2 >> 8)] ^ iT3[(byte)b1] ^ ekey[101];
-                       a6 = iT0[b6 >> 24] ^ iT1[(byte)(b5 >> 16)] ^ iT2[(byte)(b3 >> 8)] ^ iT3[(byte)b2] ^ ekey[102];
-                       a7 = iT0[b7 >> 24] ^ iT1[(byte)(b6 >> 16)] ^ iT2[(byte)(b4 >> 8)] ^ iT3[(byte)b3] ^ ekey[103];
-
-                       /* Round 13 */
-                       b0 = iT0[a0 >> 24] ^ iT1[(byte)(a7 >> 16)] ^ iT2[(byte)(a5 >> 8)] ^ iT3[(byte)a4] ^ ekey[104];
-                       b1 = iT0[a1 >> 24] ^ iT1[(byte)(a0 >> 16)] ^ iT2[(byte)(a6 >> 8)] ^ iT3[(byte)a5] ^ ekey[105];
-                       b2 = iT0[a2 >> 24] ^ iT1[(byte)(a1 >> 16)] ^ iT2[(byte)(a7 >> 8)] ^ iT3[(byte)a6] ^ ekey[106];
-                       b3 = iT0[a3 >> 24] ^ iT1[(byte)(a2 >> 16)] ^ iT2[(byte)(a0 >> 8)] ^ iT3[(byte)a7] ^ ekey[107];
-                       b4 = iT0[a4 >> 24] ^ iT1[(byte)(a3 >> 16)] ^ iT2[(byte)(a1 >> 8)] ^ iT3[(byte)a0] ^ ekey[108];
-                       b5 = iT0[a5 >> 24] ^ iT1[(byte)(a4 >> 16)] ^ iT2[(byte)(a2 >> 8)] ^ iT3[(byte)a1] ^ ekey[109];
-                       b6 = iT0[a6 >> 24] ^ iT1[(byte)(a5 >> 16)] ^ iT2[(byte)(a3 >> 8)] ^ iT3[(byte)a2] ^ ekey[110];
-                       b7 = iT0[a7 >> 24] ^ iT1[(byte)(a6 >> 16)] ^ iT2[(byte)(a4 >> 8)] ^ iT3[(byte)a3] ^ ekey[111];
-
-                       /* Final Round */
-                       outdata[0] = (byte)(iSBox[b0 >> 24] ^ (byte)(ekey[112] >> 24));
-                       outdata[1] = (byte)(iSBox[(byte)(b7 >> 16)] ^ (byte)(ekey[112] >> 16));
-                       outdata[2] = (byte)(iSBox[(byte)(b5 >> 8)] ^ (byte)(ekey[112] >> 8));
-                       outdata[3] = (byte)(iSBox[(byte)b4] ^ (byte)ekey[112]);
-
-                       outdata[4] = (byte)(iSBox[b1 >> 24] ^ (byte)(ekey[113] >> 24));
-                       outdata[5] = (byte)(iSBox[(byte)(b0 >> 16)] ^ (byte)(ekey[113] >> 16));
-                       outdata[6] = (byte)(iSBox[(byte)(b6 >> 8)] ^ (byte)(ekey[113] >> 8));
-                       outdata[7] = (byte)(iSBox[(byte)b5] ^ (byte)ekey[113]);
-
-                       outdata[8] = (byte)(iSBox[b2 >> 24] ^ (byte)(ekey[114] >> 24));
-                       outdata[9] = (byte)(iSBox[(byte)(b1 >> 16)] ^ (byte)(ekey[114] >> 16));
-                       outdata[10] = (byte)(iSBox[(byte)(b7 >> 8)] ^ (byte)(ekey[114] >> 8));
-                       outdata[11] = (byte)(iSBox[(byte)b6] ^ (byte)ekey[114]);
-
-                       outdata[12] = (byte)(iSBox[b3 >> 24] ^ (byte)(ekey[115] >> 24));
-                       outdata[13] = (byte)(iSBox[(byte)(b2 >> 16)] ^ (byte)(ekey[115] >> 16));
-                       outdata[14] = (byte)(iSBox[(byte)(b0 >> 8)] ^ (byte)(ekey[115] >> 8));
-                       outdata[15] = (byte)(iSBox[(byte)b7] ^ (byte)ekey[115]);
-
-                       outdata[16] = (byte)(iSBox[b4 >> 24] ^ (byte)(ekey[116] >> 24));
-                       outdata[17] = (byte)(iSBox[(byte)(b3 >> 16)] ^ (byte)(ekey[116] >> 16));
-                       outdata[18] = (byte)(iSBox[(byte)(b1 >> 8)] ^ (byte)(ekey[116] >> 8));
-                       outdata[19] = (byte)(iSBox[(byte)b0] ^ (byte)ekey[116]);
-
-                       outdata[20] = (byte)(iSBox[b5 >> 24] ^ (byte)(ekey[117] >> 24));
-                       outdata[21] = (byte)(iSBox[(byte)(b4 >> 16)] ^ (byte)(ekey[117] >> 16));
-                       outdata[22] = (byte)(iSBox[(byte)(b2 >> 8)] ^ (byte)(ekey[117] >> 8));
-                       outdata[23] = (byte)(iSBox[(byte)b1] ^ (byte)ekey[117]);
-
-                       outdata[24] = (byte)(iSBox[b6 >> 24] ^ (byte)(ekey[118] >> 24));
-                       outdata[25] = (byte)(iSBox[(byte)(b5 >> 16)] ^ (byte)(ekey[118] >> 16));
-                       outdata[26] = (byte)(iSBox[(byte)(b3 >> 8)] ^ (byte)(ekey[118] >> 8));
-                       outdata[27] = (byte)(iSBox[(byte)b2] ^ (byte)ekey[118]);
-
-                       outdata[28] = (byte)(iSBox[b7 >> 24] ^ (byte)(ekey[119] >> 24));
-                       outdata[29] = (byte)(iSBox[(byte)(b6 >> 16)] ^ (byte)(ekey[119] >> 16));
-                       outdata[30] = (byte)(iSBox[(byte)(b4 >> 8)] ^ (byte)(ekey[119] >> 8));
-                       outdata[31] = (byte)(iSBox[(byte)b3] ^ (byte)ekey[119]);
-               }
-               #endregion
-
-               #region Constant Table
-               static readonly uint[] Rcon = new uint[] {
-                       0x00000000, 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000, 0x40000000,
-                       0x80000000, 0x1b000000, 0x36000000, 0x6c000000, 0xd8000000, 0xab000000, 0x4d000000, 0x9a000000,
-                       0x2f000000, 0x5e000000, 0xbc000000, 0x63000000, 0xc6000000, 0x97000000, 0x35000000, 0x6a000000,
-                       0xd4000000, 0xb3000000, 0x7d000000, 0xfa000000, 0xef000000, 0xc5000000
-               };
-
-               static readonly byte[] SBox = new byte[] {
-                       0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
-                       0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
-                       0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
-                       0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
-                       0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
-                       0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
-                       0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
-                       0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
-                       0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
-                       0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
-                       0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
-                       0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
-                       0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
-                       0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
-                       0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
-                       0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
-               };
-
-               static readonly byte[] iSBox = {
-                       0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb,
-                       0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb,
-                       0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
-                       0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25,
-                       0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92,
-                       0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
-                       0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06,
-                       0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b,
-                       0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
-                       0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e,
-                       0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b,
-                       0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
-                       0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f,
-                       0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef,
-                       0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
-                       0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d,
-               };
-
-               static readonly uint[] T0 = {
-                       0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,
-                       0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a,
-                       0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,
-                       0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b,
-                       0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,
-                       0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,
-                       0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5,
-                       0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f,
-                       0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,
-                       0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,
-                       0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed,
-                       0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,
-                       0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594,
-                       0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3,
-                       0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,
-                       0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d,
-                       0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739,
-                       0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,
-                       0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883,
-                       0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,
-                       0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,
-                       0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b,
-                       0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0,
-                       0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,
-                       0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,
-                       0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85,
-                       0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,
-                       0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9,
-                       0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7,
-                       0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,
-                       0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8,
-                       0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a,
-               };
-
-               static readonly uint[] T1 = {
-                       0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,
-                       0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676,
-                       0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0,
-                       0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0,
-                       0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc,
-                       0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515,
-                       0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a,
-                       0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575,
-                       0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0,
-                       0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484,
-                       0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b,
-                       0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf,
-                       0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585,
-                       0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8,
-                       0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,
-                       0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2,
-                       0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717,
-                       0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373,
-                       0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888,
-                       0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb,
-                       0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c,
-                       0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979,
-                       0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9,
-                       0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808,
-                       0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6,
-                       0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a,
-                       0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e,
-                       0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e,
-                       0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494,
-                       0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,
-                       0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868,
-                       0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616,
-               };
-
-               static readonly uint[] T2 = {
-                       0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5,
-                       0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76,
-                       0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0,
-                       0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0,
-                       0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc,
-                       0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15,
-                       0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a,
-                       0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75,
-                       0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0,
-                       0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384,
-                       0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b,
-                       0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf,
-                       0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185,
-                       0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8,
-                       0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,
-                       0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2,
-                       0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17,
-                       0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673,
-                       0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88,
-                       0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb,
-                       0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c,
-                       0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279,
-                       0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9,
-                       0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008,
-                       0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6,
-                       0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a,
-                       0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e,
-                       0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e,
-                       0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394,
-                       0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,
-                       0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068,
-                       0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16,
-               };
-
-               static readonly uint[] T3 = {
-                       0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491,
-                       0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec,
-                       0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb,
-                       0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b,
-                       0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83,
-                       0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a,
-                       0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f,
-                       0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea,
-                       0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b,
-                       0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713,
-                       0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6,
-                       0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85,
-                       0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411,
-                       0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b,
-                       0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,
-                       0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf,
-                       0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e,
-                       0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6,
-                       0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b,
-                       0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad,
-                       0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8,
-                       0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2,
-                       0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049,
-                       0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810,
-                       0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197,
-                       0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f,
-                       0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c,
-                       0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927,
-                       0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733,
-                       0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,
-                       0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0,
-                       0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c,
-               };
-
-               static readonly uint[] iT0 = {
-                       0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393,
-                       0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f,
-                       0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6,
-                       0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844,
-                       0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4,
-                       0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94,
-                       0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a,
-                       0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c,
-                       0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a,
-                       0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051,
-                       0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff,
-                       0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb,
-                       0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e,
-                       0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a,
-                       0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16,
-                       0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8,
-                       0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34,
-                       0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120,
-                       0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0,
-                       0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,
-                       0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4,
-                       0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5,
-                       0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b,
-                       0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6,
-                       0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,
-                       0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f,
-                       0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f,
-                       0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713,
-                       0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c,
-                       0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,
-                       0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541,
-                       0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742,
-               };
-
-               static readonly uint[] iT1 = {
-                       0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,
-                       0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3,
-                       0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9,
-                       0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8,
-                       0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a,
-                       0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b,
-                       0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab,
-                       0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682,
-                       0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe,
-                       0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10,
-                       0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015,
-                       0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee,
-                       0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72,
-                       0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e,
-                       0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a,
-                       0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9,
-                       0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e,
-                       0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611,
-                       0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3,
-                       0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390,
-                       0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf,
-                       0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af,
-                       0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb,
-                       0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8,
-                       0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266,
-                       0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6,
-                       0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551,
-                       0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647,
-                       0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1,
-                       0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db,
-                       0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95,
-                       0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857,
-               };
-
-               static readonly uint[] iT2 = {
-                       0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3,
-                       0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562,
-                       0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3,
-                       0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9,
-                       0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce,
-                       0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908,
-                       0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655,
-                       0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16,
-                       0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6,
-                       0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e,
-                       0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050,
-                       0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8,
-                       0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a,
-                       0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436,
-                       0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12,
-                       0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e,
-                       0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb,
-                       0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6,
-                       0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1,
-                       0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233,
-                       0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad,
-                       0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3,
-                       0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b,
-                       0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15,
-                       0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2,
-                       0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791,
-                       0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665,
-                       0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6,
-                       0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47,
-                       0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844,
-                       0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d,
-                       0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8,
-               };
-
-               static readonly uint[] iT3 = {
-                       0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b,
-                       0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5,
-                       0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b,
-                       0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e,
-                       0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d,
-                       0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9,
-                       0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66,
-                       0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced,
-                       0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4,
-                       0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd,
-                       0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60,
-                       0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79,
-                       0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c,
-                       0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24,
-                       0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c,
-                       0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814,
-                       0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b,
-                       0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084,
-                       0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077,
-                       0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22,
-                       0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f,
-                       0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582,
-                       0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb,
-                       0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef,
-                       0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035,
-                       0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17,
-                       0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46,
-                       0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d,
-                       0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a,
-                       0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678,
-                       0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff,
-                       0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0,
-               };
-               #endregion
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA1.cs b/mcs/class/corlib/System.Security.Cryptography/SHA1.cs
deleted file mode 100644 (file)
index 9cc0ca7..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//\r
-// System.Security.Cryptography.SHA1 Class implementation\r
-//\r
-// Authors:\r
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)\r
-//   Sebastien Pouliot <sebastien@ximian.com>
-//\r
-// Copyright 2001 by Matthew S. Ford.\r
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)\r
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-
-       [ComVisible (true)]
-       public abstract class SHA1 : HashAlgorithm {\r
-
-               protected SHA1 ()\r
-               {\r
-                       HashSizeValue = 160;\r
-               }\r
-       \r
-               public static new SHA1 Create () \r
-               {\r
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.SHA1CryptoServiceProvider ();
-#else
-                       return Create ("System.Security.Cryptography.SHA1");\r
-#endif
-               }\r
-\r
-               public static new SHA1 Create (string hashName) \r
-               {\r
-                       return (SHA1) CryptoConfig.CreateFromName (hashName);\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA1Managed.cs b/mcs/class/corlib/System.Security.Cryptography/SHA1Managed.cs
deleted file mode 100644 (file)
index d38005f..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// System.Security.Cryptography.SHA1Managed.cs
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-// Note:
-// The MS Framework includes two (almost) identical class for SHA1.
-//     SHA1Managed (this file) is a 100% managed implementation.
-//     SHA1CryptoServiceProvider is a wrapper on CryptoAPI.
-// Mono must provide those two class for binary compatibility.
-// In our case both class are wrappers around a managed internal class SHA1Internal.
-
-       [ComVisible (true)]
-       public class SHA1Managed : SHA1 {
-
-               private SHA1Internal sha;
-
-               public SHA1Managed () 
-               {
-                       sha = new SHA1Internal ();
-               }
-
-               protected override void HashCore (byte[] rgb, int ibStart, int cbSize) 
-               {
-                       State = 1;
-                       sha.HashCore (rgb, ibStart, cbSize);
-               }
-
-               protected override byte[] HashFinal () 
-               {
-                       State = 0;
-                       return sha.HashFinal ();
-               }
-
-               public override void Initialize () 
-               {
-                       sha.Initialize ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA256.cs b/mcs/class/corlib/System.Security.Cryptography/SHA256.cs
deleted file mode 100644 (file)
index 1af226c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//\r
-// System.Security.Cryptography SHA256 Class implementation\r
-//\r
-// Authors:\r
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)\r
-//   Sebastien Pouliot <sebastien@ximian.com>
-//\r
-// Copyright 2001 by Matthew S. Ford.\r
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)\r
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-\r
-namespace System.Security.Cryptography {\r
-
-       [ComVisible (true)]
-       public abstract class SHA256 : HashAlgorithm {\r
-
-               protected SHA256 ()
-               {\r
-                       HashSizeValue = 256;\r
-               }\r
-       \r
-               public static new SHA256 Create () \r
-               {\r
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.SHA256Managed ();
-#else
-                       return Create ("System.Security.Cryptography.SHA256");\r
-#endif
-               }\r
-       \r
-               public static new SHA256 Create (string hashName) \r
-               {\r
-                       return (SHA256) CryptoConfig.CreateFromName (hashName);\r
-               }\r
-       }\r
-}\r
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA256Managed.cs b/mcs/class/corlib/System.Security.Cryptography/SHA256Managed.cs
deleted file mode 100644 (file)
index 9f4c2b8..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// System.Security.Cryptography.SHA256Managed.cs
-//
-// Author:
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//
-// (C) 2001 
-// Copyright (C) 2004, 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-       [ComVisible (true)]
-       public class SHA256Managed : SHA256 {
-
-               private const int BLOCK_SIZE_BYTES =  64;
-               private uint[] _H;
-               private ulong count;
-               private byte[] _ProcessingBuffer;   // Used to start data when passed less than a block worth.
-               private int _ProcessingBufferCount; // Counts how much data we have stored that still needs processed.
-               private uint[] buff;
-       
-               public SHA256Managed () 
-               {
-                       _H = new uint [8];
-                       _ProcessingBuffer = new byte [BLOCK_SIZE_BYTES];
-                       buff = new uint[64];
-                       Initialize ();
-               }
-
-               protected override void HashCore (byte[] rgb, int ibStart, int cbSize) 
-               {
-                       int i;
-                       State = 1;
-
-                       if (_ProcessingBufferCount != 0) {
-                               if (cbSize < (BLOCK_SIZE_BYTES - _ProcessingBufferCount)) {
-                                       System.Buffer.BlockCopy (rgb, ibStart, _ProcessingBuffer, _ProcessingBufferCount, cbSize);
-                                       _ProcessingBufferCount += cbSize;
-                                       return;
-                               }
-                               else {
-                                       i = (BLOCK_SIZE_BYTES - _ProcessingBufferCount);
-                                       System.Buffer.BlockCopy (rgb, ibStart, _ProcessingBuffer, _ProcessingBufferCount, i);
-                                       ProcessBlock (_ProcessingBuffer, 0);
-                                       _ProcessingBufferCount = 0;
-                                       ibStart += i;
-                                       cbSize -= i;
-                               }
-                       }
-
-                       for (i = 0; i < cbSize - cbSize % BLOCK_SIZE_BYTES; i += BLOCK_SIZE_BYTES) {
-                               ProcessBlock (rgb, ibStart + i);
-                       }
-
-                       if (cbSize % BLOCK_SIZE_BYTES != 0) {
-                               System.Buffer.BlockCopy (rgb, cbSize - cbSize % BLOCK_SIZE_BYTES + ibStart, _ProcessingBuffer, 0, cbSize % BLOCK_SIZE_BYTES);
-                               _ProcessingBufferCount = cbSize % BLOCK_SIZE_BYTES;
-                       }
-               }
-       
-               protected override byte[] HashFinal () 
-               {
-                       byte[] hash = new byte[32];
-                       int i, j;
-
-                       ProcessFinalBlock (_ProcessingBuffer, 0, _ProcessingBufferCount);
-
-                       for (i=0; i<8; i++) {
-                               for (j=0; j<4; j++) {
-                                       hash[i*4+j] = (byte)(_H[i] >> (24-j*8));
-                               }
-                       }
-
-                       State = 0;
-                       return hash;
-               }
-
-               public override void Initialize () 
-               {
-                       count = 0;
-                       _ProcessingBufferCount = 0;
-               
-                       _H[0] = 0x6A09E667;
-                       _H[1] = 0xBB67AE85;
-                       _H[2] = 0x3C6EF372;
-                       _H[3] = 0xA54FF53A;
-                       _H[4] = 0x510E527F;
-                       _H[5] = 0x9B05688C;
-                       _H[6] = 0x1F83D9AB;
-                       _H[7] = 0x5BE0CD19;
-               }
-
-               private void ProcessBlock (byte[] inputBuffer, int inputOffset) 
-               {
-                       uint a, b, c, d, e, f, g, h;
-                       uint t1, t2;
-                       int i;
-                       uint[] K1 = SHAConstants.K1;
-                       uint[] buff = this.buff;
-               
-                       count += BLOCK_SIZE_BYTES;
-
-                       for (i=0; i<16; i++) {
-                               buff[i] = (uint)(((inputBuffer[inputOffset + 4 * i]) << 24)
-                                       | ((inputBuffer[inputOffset + 4 * i + 1]) << 16)
-                                       | ((inputBuffer[inputOffset + 4 * i + 2]) << 8)
-                                       | ((inputBuffer[inputOffset + 4 * i + 3])));
-                       }
-
-               
-                       for (i=16; i<64; i++) {
-                               t1 = buff[i - 15];
-                               t1 = (((t1 >> 7) | (t1 << 25)) ^ ((t1 >> 18) | (t1 << 14)) ^ (t1 >> 3));
-
-                               t2 = buff[i - 2];
-                               t2 = (((t2 >> 17) | (t2 << 15)) ^ ((t2 >> 19) | (t2 << 13)) ^ (t2 >> 10));
-                               buff[i] = t2 + buff[i - 7] + t1 + buff[i - 16];
-                       }
-
-                       a = _H[0];
-                       b = _H[1];
-                       c = _H[2];
-                       d = _H[3];
-                       e = _H[4];
-                       f = _H[5];
-                       g = _H[6];
-                       h = _H[7];
-
-                       for (i=0; i<64; i++) {
-                               t1 = h + (((e >> 6) | (e << 26)) ^ ((e >> 11) | (e << 21)) ^ ((e >> 25) | (e << 7))) + ((e & f) ^ (~e & g)) + K1[i] + buff[i];
-
-                               t2 = (((a >> 2) | (a << 30)) ^ ((a >> 13) | (a << 19)) ^ ((a >> 22) | (a << 10)));
-                               t2 = t2 + ((a & b) ^ (a & c) ^ (b & c));
-                               h = g;
-                               g = f;
-                               f = e;
-                               e = d + t1;
-                               d = c;
-                               c = b;
-                               b = a;
-                               a = t1 + t2;
-                       }
-
-                       _H[0] += a;
-                       _H[1] += b;
-                       _H[2] += c;
-                       _H[3] += d;
-                       _H[4] += e;
-                       _H[5] += f;
-                       _H[6] += g;
-                       _H[7] += h;
-               }
-       
-               private void ProcessFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       ulong total = count + (ulong)inputCount;
-                       int paddingSize = (56 - (int)(total % BLOCK_SIZE_BYTES));
-
-                       if (paddingSize < 1)
-                               paddingSize += BLOCK_SIZE_BYTES;
-
-                       byte[] fooBuffer = new byte[inputCount+paddingSize+8];
-
-                       for (int i=0; i<inputCount; i++) {
-                               fooBuffer[i] = inputBuffer[i+inputOffset];
-                       }
-
-                       fooBuffer[inputCount] = 0x80;
-                       for (int i=inputCount+1; i<inputCount+paddingSize; i++) {
-                               fooBuffer[i] = 0x00;
-                       }
-
-                       // I deal in bytes. The algorithm deals in bits.
-                       ulong size = total << 3;
-                       AddLength (size, fooBuffer, inputCount+paddingSize);
-                       ProcessBlock (fooBuffer, 0);
-
-                       if (inputCount+paddingSize+8 == 128) {
-                               ProcessBlock(fooBuffer, 64);
-                       }
-               }
-
-               internal void AddLength (ulong length, byte[] buffer, int position)
-               {
-                       buffer [position++] = (byte)(length >> 56);
-                       buffer [position++] = (byte)(length >> 48);
-                       buffer [position++] = (byte)(length >> 40);
-                       buffer [position++] = (byte)(length >> 32);
-                       buffer [position++] = (byte)(length >> 24);
-                       buffer [position++] = (byte)(length >> 16);
-                       buffer [position++] = (byte)(length >>  8);
-                       buffer [position]   = (byte)(length);
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA384.cs b/mcs/class/corlib/System.Security.Cryptography/SHA384.cs
deleted file mode 100644 (file)
index 4a6fc51..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Security.Cryptography SHA384 Class implementation
-//
-// Authors:
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//   Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright 2001 by Matthew S. Ford.
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class SHA384 : HashAlgorithm {
-
-               protected SHA384 ()
-               {
-                       HashSizeValue = 384;
-               }
-
-               public static new SHA384 Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.SHA384Managed ();
-#else
-                       return Create ("System.Security.Cryptography.SHA384");
-#endif
-               }
-       
-               public static new SHA384 Create (string hashName) 
-               {
-                       return (SHA384) CryptoConfig.CreateFromName (hashName);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA384Managed.cs b/mcs/class/corlib/System.Security.Cryptography/SHA384Managed.cs
deleted file mode 100644 (file)
index dd4aee0..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-//
-// System.Security.Cryptography.SHA384Managed.cs
-//
-// Authors:
-//     Dan Lewis (dihlewis@yahoo.co.uk)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002
-// Implementation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
-// See bouncycastle.txt for license.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-[ComVisible (true)]
-public class SHA384Managed : SHA384 {
-
-       private byte[] xBuf;
-       private int xBufOff;
-
-       private ulong byteCount1;
-       private ulong byteCount2;
-
-       private ulong H1, H2, H3, H4, H5, H6, H7, H8;
-       private ulong[] W;
-       private int wOff;
-
-       public SHA384Managed () 
-       {
-               xBuf = new byte [8];
-               W = new ulong [80];
-               Initialize (false); // limited initialization
-       }
-
-       private void Initialize (bool reuse) 
-       {
-               // SHA-384 initial hash value
-               // The first 64 bits of the fractional parts of the square roots
-               // of the 9th through 16th prime numbers
-               H1 = 0xcbbb9d5dc1059ed8L;
-               H2 = 0x629a292a367cd507L;
-               H3 = 0x9159015a3070dd17L;
-               H4 = 0x152fecd8f70e5939L;
-               H5 = 0x67332667ffc00b31L;
-               H6 = 0x8eb44a8768581511L;
-               H7 = 0xdb0c2e0d64f98fa7L;
-               H8 = 0x47b5481dbefa4fa4L;
-
-               if (reuse) {
-                       byteCount1 = 0;
-                       byteCount2 = 0;
-
-                       xBufOff = 0;
-                       for (int i = 0; i < xBuf.Length; i++) 
-                               xBuf [i] = 0;
-
-                       wOff = 0;
-                       for (int i = 0; i != W.Length; i++)
-                               W [i] = 0;
-               }
-       }
-
-       public override void Initialize () 
-       {
-               Initialize (true); // reuse instance
-       }
-
-       // protected
-
-       protected override void HashCore (byte[] rgb, int ibStart, int cbSize) 
-       {
-               // fill the current word
-               while ((xBufOff != 0) && (cbSize > 0)) {
-                       update (rgb [ibStart]);
-                       ibStart++;
-                       cbSize--;
-               }
-
-               // process whole words.
-               while (cbSize > xBuf.Length) {
-                       processWord (rgb, ibStart);
-                       ibStart += xBuf.Length;
-                       cbSize -= xBuf.Length;
-                       byteCount1 += (ulong) xBuf.Length;
-               }
-
-               // load in the remainder.
-               while (cbSize > 0) {
-                       update (rgb [ibStart]);
-                       ibStart++;
-                       cbSize--;
-               }
-       }
-
-       protected override byte[] HashFinal () 
-       {
-               adjustByteCounts ();
-
-               ulong lowBitLength = byteCount1 << 3;
-               ulong hiBitLength = byteCount2;
-
-               // add the pad bytes.
-               update ( (byte) 128);
-               while (xBufOff != 0)
-                       update ( (byte)0);
-
-               processLength (lowBitLength, hiBitLength);
-               processBlock ();
-               
-               byte[] output = new byte [48];
-               unpackWord(H1, output, 0);
-               unpackWord(H2, output, 8);
-               unpackWord(H3, output, 16);
-               unpackWord(H4, output, 24);
-               unpackWord(H5, output, 32);
-               unpackWord(H6, output, 40);
-
-               Initialize ();
-               return output;
-       }
-
-       private void update (byte input)
-       {
-               xBuf [xBufOff++] = input;
-               if (xBufOff == xBuf.Length) {
-                       processWord(xBuf, 0);
-                       xBufOff = 0;
-               }
-               byteCount1++;
-       }
-
-       private void processWord (byte[] input, int inOff)
-       {
-               W [wOff++] = ( (ulong) input [inOff] << 56)
-                       | ( (ulong) input [inOff + 1] << 48)
-                       | ( (ulong) input [inOff + 2] << 40)
-                       | ( (ulong) input [inOff + 3] << 32)
-                       | ( (ulong) input [inOff + 4] << 24)
-                       | ( (ulong) input [inOff + 5] << 16)
-                       | ( (ulong) input [inOff + 6] << 8)
-                       | ( (ulong) input [inOff + 7]); 
-               if (wOff == 16)
-                       processBlock ();
-       }
-
-       private void unpackWord (ulong word, byte[] output, int outOff)
-       {
-               output[outOff]     = (byte) (word >> 56);
-               output[outOff + 1] = (byte) (word >> 48);
-               output[outOff + 2] = (byte) (word >> 40);
-               output[outOff + 3] = (byte) (word >> 32);
-               output[outOff + 4] = (byte) (word >> 24);
-               output[outOff + 5] = (byte) (word >> 16);
-               output[outOff + 6] = (byte) (word >> 8);
-               output[outOff + 7] = (byte) word;
-       }
-
-       // adjust the byte counts so that byteCount2 represents the
-       // upper long (less 3 bits) word of the byte count.
-       private void adjustByteCounts()
-       {
-               if (byteCount1 > 0x1fffffffffffffffL) {
-                       byteCount2 += (byteCount1 >> 61);
-                       byteCount1 &= 0x1fffffffffffffffL;
-               }
-       }
-
-       private void processLength (ulong lowW, ulong hiW)
-       {
-               if (wOff > 14)
-                       processBlock ();
-               W[14] = hiW;
-               W[15] = lowW;
-       }
-
-       private void processBlock ()
-       {
-               ulong a, b, c, d, e, f, g, h;
-
-               // abcrem doesn't work on fields
-               ulong[] W = this.W;
-               ulong[] K2 = SHAConstants.K2;
-
-               adjustByteCounts ();
-               // expand 16 word block into 80 word blocks.
-               for (int t = 16; t <= 79; t++)
-               {
-                       a = W[t-15];
-                       a = ((a >> 1) | (a << 63)) ^ ((a >> 8) | (a << 56)) ^ (a >> 7);
-                       b = W[t - 2];
-                       b = ((b >> 19) | (b << 45)) ^ ((b >> 61) | (b << 3)) ^ (b >> 6);
-                       W[t] = b + W[t - 7] + a + W[t - 16];
-               }
-               // set up working variables.
-               a = H1;
-               b = H2;
-               c = H3;
-               d = H4;
-               e = H5;
-               f = H6;
-               g = H7;
-               h = H8;
-
-               for (int t = 0; t <= 79; t++)
-               {
-                       ulong T1 = ((e >> 14) | (e << 50)) ^ ((e >> 18) | (e << 46)) ^ ((e >> 41) | (e << 23));
-                       T1 += h + ((e & f) ^ ((~e) & g)) + K2[t] + W[t];
-
-                       ulong T2 = ((a >> 28) | (a << 36)) ^ ((a >> 34) | (a << 30)) ^ ((a >> 39) | (a << 25));
-                       T2 += ((a & b) ^ (a & c) ^ (b & c));
-
-                       h = g;
-                       g = f;
-                       f = e;
-                       e = d + T1;
-                       d = c;
-                       c = b;
-                       b = a;
-                       a = T1 + T2;
-               }
-
-               H1 += a;
-               H2 += b;
-               H3 += c;
-               H4 += d;
-               H5 += e;
-               H6 += f;
-               H7 += g;
-               H8 += h;
-               // reset the offset and clean out the word buffer.
-               wOff = 0;
-               for (int i = 0; i != W.Length; i++)
-                       W[i] = 0;
-       }
-}
-
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA512.cs b/mcs/class/corlib/System.Security.Cryptography/SHA512.cs
deleted file mode 100644 (file)
index 46dfb04..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Security.Cryptography SHA512 Class implementation
-//
-// Authors:
-//   Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
-//   Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright 2001 by Matthew S. Ford.
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class SHA512 : HashAlgorithm {
-
-               protected SHA512 ()
-               {
-                       HashSizeValue = 512;
-               }
-
-               public static new SHA512 Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.SHA512Managed ();
-#else
-                       return Create ("System.Security.Cryptography.SHA512");
-#endif
-               }
-       
-               public static new SHA512 Create (string hashName) 
-               {
-                       return (SHA512) CryptoConfig.CreateFromName (hashName);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHA512Managed.cs b/mcs/class/corlib/System.Security.Cryptography/SHA512Managed.cs
deleted file mode 100644 (file)
index 5a48658..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-//
-// System.Security.Cryptography.SHA512Managed.cs
-//
-// Authors:
-//     Dan Lewis (dihlewis@yahoo.co.uk)
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2002
-// Implementation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
-// See bouncycastle.txt for license.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-       
-[ComVisible (true)]
-public class SHA512Managed : SHA512 {
-
-       private byte[] xBuf;
-       private int xBufOff;
-
-       private ulong byteCount1;
-       private ulong byteCount2;
-
-       private ulong H1, H2, H3, H4, H5, H6, H7, H8;
-
-       private ulong[] W;
-       private int wOff;
-
-       public SHA512Managed () 
-       {
-               xBuf = new byte [8];
-               W = new ulong [80];
-               Initialize (false); // limited initialization
-       }
-
-       private void Initialize (bool reuse) 
-       {
-               // SHA-512 initial hash value
-               // The first 64 bits of the fractional parts of the square roots
-               // of the first eight prime numbers
-               H1 = 0x6a09e667f3bcc908L;
-               H2 = 0xbb67ae8584caa73bL;
-               H3 = 0x3c6ef372fe94f82bL;
-               H4 = 0xa54ff53a5f1d36f1L;
-               H5 = 0x510e527fade682d1L;
-               H6 = 0x9b05688c2b3e6c1fL;
-               H7 = 0x1f83d9abfb41bd6bL;
-               H8 = 0x5be0cd19137e2179L;
-
-               if (reuse) {
-                       byteCount1 = 0;
-                       byteCount2 = 0;
-
-                       xBufOff = 0;
-                       for (int i = 0; i < xBuf.Length; i++) 
-                               xBuf [i] = 0;
-
-                       wOff = 0;
-                       for (int i = 0; i != W.Length; i++)
-                               W [i] = 0;
-               }
-       }
-
-       public override void Initialize () 
-       {
-               Initialize (true); // reuse instance
-       }
-
-       // protected
-
-       protected override void HashCore (byte[] rgb, int ibStart, int cbSize) 
-       {
-               // fill the current word
-               while ((xBufOff != 0) && (cbSize > 0)) {
-                       update (rgb [ibStart]);
-                       ibStart++;
-                       cbSize--;
-               }
-
-               // process whole words.
-               while (cbSize > xBuf.Length) {
-                       processWord (rgb, ibStart);
-                       ibStart += xBuf.Length;
-                       cbSize -= xBuf.Length;
-                       byteCount1 += (ulong) xBuf.Length;
-               }
-
-               // load in the remainder.
-               while (cbSize > 0) {
-                       update (rgb [ibStart]);
-                       ibStart++;
-                       cbSize--;
-               }
-       }
-
-       protected override byte[] HashFinal () 
-       {
-               adjustByteCounts ();
-
-               ulong lowBitLength = byteCount1 << 3;
-               ulong hiBitLength = byteCount2;
-
-               // add the pad bytes.
-               update (128);
-               while (xBufOff != 0)
-                       update (0);
-
-               processLength (lowBitLength, hiBitLength);
-               processBlock ();
-       
-               byte[] output = new byte [64];
-               unpackWord(H1, output, 0);
-               unpackWord(H2, output, 8);
-               unpackWord(H3, output, 16);
-               unpackWord(H4, output, 24);
-               unpackWord(H5, output, 32);
-               unpackWord(H6, output, 40);
-               unpackWord(H7, output, 48);
-               unpackWord(H8, output, 56);
-
-               Initialize ();
-               return output;
-       }
-
-       private void update (byte input) 
-       {
-               xBuf [xBufOff++] = input;
-               if (xBufOff == xBuf.Length) {
-                       processWord(xBuf, 0);
-                       xBufOff = 0;
-               }
-               byteCount1++;
-       }
-
-       private void processWord (byte[] input, int inOff) 
-       {
-               W [wOff++] = ( (ulong) input [inOff] << 56)
-                       | ( (ulong) input [inOff + 1] << 48)
-                       | ( (ulong) input [inOff + 2] << 40)
-                       | ( (ulong) input [inOff + 3] << 32)
-                       | ( (ulong) input [inOff + 4] << 24)
-                       | ( (ulong) input [inOff + 5] << 16)
-                       | ( (ulong) input [inOff + 6] << 8)
-                       | ( (ulong) input [inOff + 7]); 
-               if (wOff == 16)
-                       processBlock ();
-       }
-
-       private void unpackWord (ulong word, byte[] output, int outOff) 
-       {
-               output[outOff]     = (byte) (word >> 56);
-               output[outOff + 1] = (byte) (word >> 48);
-               output[outOff + 2] = (byte) (word >> 40);
-               output[outOff + 3] = (byte) (word >> 32);
-               output[outOff + 4] = (byte) (word >> 24);
-               output[outOff + 5] = (byte) (word >> 16);
-               output[outOff + 6] = (byte) (word >> 8);
-               output[outOff + 7] = (byte) word;
-       }
-
-       // adjust the byte counts so that byteCount2 represents the
-       // upper long (less 3 bits) word of the byte count.
-       private void adjustByteCounts () 
-       {
-               if (byteCount1 > 0x1fffffffffffffffL) {
-                       byteCount2 += (byteCount1 >> 61);
-                       byteCount1 &= 0x1fffffffffffffffL;
-               }
-       }
-
-       private void processLength (ulong lowW, ulong hiW) 
-       {
-               if (wOff > 14)
-                       processBlock();
-               W[14] = hiW;
-               W[15] = lowW;
-       }
-
-       private void processBlock () 
-       {
-               adjustByteCounts ();
-               // expand 16 word block into 80 word blocks.
-               for (int t = 16; t <= 79; t++)
-                       W[t] = Sigma1 (W [t - 2]) + W [t - 7] + Sigma0 (W [t - 15]) + W [t - 16];
-
-               // set up working variables.
-               ulong a = H1;
-               ulong b = H2;
-               ulong c = H3;
-               ulong d = H4;
-               ulong e = H5;
-               ulong f = H6;
-               ulong g = H7;
-               ulong h = H8;
-
-               for (int t = 0; t <= 79; t++) {
-                       ulong T1 = h + Sum1 (e) + Ch (e, f, g) + SHAConstants.K2 [t] + W [t];
-                       ulong T2 = Sum0 (a) + Maj (a, b, c);
-                       h = g;
-                       g = f;
-                       f = e;
-                       e = d + T1;
-                       d = c;
-                       c = b;
-                       b = a;
-                       a = T1 + T2;
-               }
-
-               H1 += a;
-               H2 += b;
-               H3 += c;
-               H4 += d;
-               H5 += e;
-               H6 += f;
-               H7 += g;
-               H8 += h;
-               // reset the offset and clean out the word buffer.
-               wOff = 0;
-               for (int i = 0; i != W.Length; i++)
-                       W[i] = 0;
-       }
-
-       private ulong rotateRight (ulong x, int n) 
-       {
-               return (x >> n) | (x << (64 - n));
-       }
-
-       /* SHA-512 and SHA-512 functions (as for SHA-256 but for longs) */
-       private ulong Ch (ulong x, ulong y, ulong z) 
-       {
-               return ((x & y) ^ ((~x) & z));
-       }
-
-       private ulong Maj (ulong x, ulong y, ulong z) 
-       {
-               return ((x & y) ^ (x & z) ^ (y & z));
-       }
-
-       private ulong Sum0 (ulong x) 
-       {
-               return rotateRight (x, 28) ^ rotateRight (x, 34) ^ rotateRight (x, 39);
-       }
-
-       private ulong Sum1 (ulong x) 
-       {
-               return rotateRight (x, 14) ^ rotateRight (x, 18) ^ rotateRight (x, 41);
-       }
-
-       private ulong Sigma0 (ulong x) 
-       {
-               return rotateRight (x, 1) ^ rotateRight(x, 8) ^ (x >> 7);
-       }
-
-       private ulong Sigma1 (ulong x) 
-       {
-               return rotateRight (x, 19) ^ rotateRight (x, 61) ^ (x >> 6);
-       }
-}
-
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SHAConstants.cs b/mcs/class/corlib/System.Security.Cryptography/SHAConstants.cs
deleted file mode 100644 (file)
index 111d75f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// System.Security.Cryptography.SHAConstants.cs
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security.Cryptography {
-
-       internal static class SHAConstants {
-               // SHA-256 Constants
-               // Represent the first 32 bits of the fractional parts of the
-               // cube roots of the first sixty-four prime numbers
-               public readonly static uint[] K1 = {
-                       0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
-                       0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
-                       0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
-                       0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
-                       0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
-                       0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
-                       0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
-                       0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
-                       0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
-                       0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
-                       0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
-                       0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
-                       0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
-                       0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
-                       0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
-                       0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
-               };
-               
-               // SHA-384 and SHA-512 Constants
-               // Represent the first 64 bits of the fractional parts of the
-               // cube roots of the first sixty-four prime numbers
-               public readonly static ulong[] K2 = {
-                       0x428a2f98d728ae22L, 0x7137449123ef65cdL, 0xb5c0fbcfec4d3b2fL, 0xe9b5dba58189dbbcL,
-                       0x3956c25bf348b538L, 0x59f111f1b605d019L, 0x923f82a4af194f9bL, 0xab1c5ed5da6d8118L,
-                       0xd807aa98a3030242L, 0x12835b0145706fbeL, 0x243185be4ee4b28cL, 0x550c7dc3d5ffb4e2L,
-                       0x72be5d74f27b896fL, 0x80deb1fe3b1696b1L, 0x9bdc06a725c71235L, 0xc19bf174cf692694L,
-                       0xe49b69c19ef14ad2L, 0xefbe4786384f25e3L, 0x0fc19dc68b8cd5b5L, 0x240ca1cc77ac9c65L,
-                       0x2de92c6f592b0275L, 0x4a7484aa6ea6e483L, 0x5cb0a9dcbd41fbd4L, 0x76f988da831153b5L,
-                       0x983e5152ee66dfabL, 0xa831c66d2db43210L, 0xb00327c898fb213fL, 0xbf597fc7beef0ee4L,
-                       0xc6e00bf33da88fc2L, 0xd5a79147930aa725L, 0x06ca6351e003826fL, 0x142929670a0e6e70L,
-                       0x27b70a8546d22ffcL, 0x2e1b21385c26c926L, 0x4d2c6dfc5ac42aedL, 0x53380d139d95b3dfL,
-                       0x650a73548baf63deL, 0x766a0abb3c77b2a8L, 0x81c2c92e47edaee6L, 0x92722c851482353bL,
-                       0xa2bfe8a14cf10364L, 0xa81a664bbc423001L, 0xc24b8b70d0f89791L, 0xc76c51a30654be30L,
-                       0xd192e819d6ef5218L, 0xd69906245565a910L, 0xf40e35855771202aL, 0x106aa07032bbd1b8L,
-                       0x19a4c116b8d2d0c8L, 0x1e376c085141ab53L, 0x2748774cdf8eeb99L, 0x34b0bcb5e19b48a8L,
-                       0x391c0cb3c5c95a63L, 0x4ed8aa4ae3418acbL, 0x5b9cca4f7763e373L, 0x682e6ff3d6b2b8a3L,
-                       0x748f82ee5defb2fcL, 0x78a5636f43172f60L, 0x84c87814a1f0ab72L, 0x8cc702081a6439ecL,
-                       0x90befffa23631e28L, 0xa4506cebde82bde9L, 0xbef9a3f7b2c67915L, 0xc67178f2e372532bL,
-                       0xca273eceea26619cL, 0xd186b8c721c0c207L, 0xeada7dd6cde0eb1eL, 0xf57d4f7fee6ed178L,
-                       0x06f067aa72176fbaL, 0x0a637dc5a2c898a6L, 0x113f9804bef90daeL, 0x1b710b35131c471bL,
-                       0x28db77f523047d84L, 0x32caab7b40c72493L, 0x3c9ebe0a15c9bebcL, 0x431d67c49c100d4cL,
-                       0x4cc5d4becb3e42b6L, 0x597f299cfc657e2aL, 0x5fcb6fab3ad6faecL, 0x6c44198c4a475817L
-               };
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SignatureDescription.cs b/mcs/class/corlib/System.Security.Cryptography/SignatureDescription.cs
deleted file mode 100644 (file)
index 0ec8335..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-//
-// System.Security.Cryptography SignatureDescription Class implementation
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-// Notes:
-// There seems to be some (internal?) class inheriting from SignatureDescription
-// http://www.csharpfriends.com/Members/Main/Classes/get_class.aspx?assembly=mscorlib,%20Version=1.0.3300.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089&namespace=System.Security.Cryptography&class=SignatureDescription
-// Those 2 classes are returned by CryptoConfig.CreateFromName and used in XMLDSIG
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Security;
-
-namespace System.Security.Cryptography {
-       
-[ComVisible (true)]
-public class SignatureDescription {
-
-       private string _DeformatterAlgorithm;
-       private string _DigestAlgorithm;                
-       private string _FormatterAlgorithm;             
-       private string _KeyAlgorithm;           
-
-       public SignatureDescription ()
-       {
-       }
-       
-       /// LAMESPEC: ArgumentNullException is thrown (not CryptographicException)
-       public SignatureDescription (SecurityElement el) 
-       {
-               if (el == null)
-                       throw new ArgumentNullException ("el");
-
-               // thanksfully documented in VS.NET 2005
-               SecurityElement child = el.SearchForChildByTag ("Deformatter");
-               _DeformatterAlgorithm = ((child == null) ? null : child.Text);
-
-               child = el.SearchForChildByTag ("Digest");
-               _DigestAlgorithm = ((child == null) ? null : child.Text);
-
-               child = el.SearchForChildByTag ("Formatter");
-               _FormatterAlgorithm = ((child == null) ? null : child.Text);
-
-               child = el.SearchForChildByTag ("Key");
-               _KeyAlgorithm = ((child == null) ? null : child.Text);
-       }
-
-       // There are no validation of the property
-       public string DeformatterAlgorithm {
-               get { return _DeformatterAlgorithm; }
-               set { _DeformatterAlgorithm = value; }
-       }
-
-       // There are no validation of the property
-       public string DigestAlgorithm {
-               get { return _DigestAlgorithm; }
-               set { _DigestAlgorithm = value; }
-       }
-
-       // There are no validation of the property
-       public string FormatterAlgorithm {
-               get { return _FormatterAlgorithm; }
-               set { _FormatterAlgorithm = value; }
-       }
-
-       // There are no validation of the property
-       public string KeyAlgorithm {
-               get { return _KeyAlgorithm; }
-               set { _KeyAlgorithm = value; }
-       }
-
-       public virtual AsymmetricSignatureDeformatter CreateDeformatter (AsymmetricAlgorithm key) 
-       {
-               if (_DeformatterAlgorithm == null)
-                       throw new ArgumentNullException ("DeformatterAlgorithm");
-
-               // this should throw the InvalidCastException if we have an invalid class
-               // (but not if the class doesn't exist - as null is valid for AsymmetricSignatureDeformatter)
-               AsymmetricSignatureDeformatter def = (AsymmetricSignatureDeformatter) CryptoConfig.CreateFromName (_DeformatterAlgorithm);
-
-               if (_KeyAlgorithm == null)
-                       throw new NullReferenceException ("KeyAlgorithm");
-
-               def.SetKey (key);
-               return def;
-       }
-       
-       public virtual HashAlgorithm CreateDigest ()
-       {
-               if (_DigestAlgorithm == null)
-                       throw new ArgumentNullException ("DigestAlgorithm");
-
-               return (HashAlgorithm) CryptoConfig.CreateFromName (_DigestAlgorithm);
-       }
-
-       public virtual AsymmetricSignatureFormatter CreateFormatter (AsymmetricAlgorithm key)
-       {
-               if (_FormatterAlgorithm == null)
-                       throw new ArgumentNullException ("FormatterAlgorithm");
-
-               // this should throw the InvalidCastException if we have an invalid class
-               // (but not if the class doesn't exist - as null is valid for AsymmetricSignatureDeformatter)
-               AsymmetricSignatureFormatter fmt = (AsymmetricSignatureFormatter) CryptoConfig.CreateFromName (_FormatterAlgorithm);
-
-               if (_KeyAlgorithm == null)
-                       throw new NullReferenceException ("KeyAlgorithm");
-
-               fmt.SetKey (key);
-               return fmt;
-       }
-}
-
-internal class DSASignatureDescription : SignatureDescription {
-       public DSASignatureDescription () 
-       {
-               DeformatterAlgorithm = "System.Security.Cryptography.DSASignatureDeformatter";
-               DigestAlgorithm = "System.Security.Cryptography.SHA1CryptoServiceProvider";
-               FormatterAlgorithm = "System.Security.Cryptography.DSASignatureFormatter";              
-               KeyAlgorithm = "System.Security.Cryptography.DSACryptoServiceProvider";         
-       }
-}
-
-internal class RSAPKCS1SHA1SignatureDescription : SignatureDescription {
-       public RSAPKCS1SHA1SignatureDescription () 
-       {
-               DeformatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureDeformatter";
-               DigestAlgorithm = "System.Security.Cryptography.SHA1CryptoServiceProvider";
-               FormatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureFormatter";         
-               KeyAlgorithm = "System.Security.Cryptography.RSACryptoServiceProvider";         
-       }
-
-       public override AsymmetricSignatureDeformatter CreateDeformatter (AsymmetricAlgorithm key) 
-       {
-               // just to please corcompare
-               return base.CreateDeformatter (key);
-       }
-}
-       
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/SymmetricAlgorithm.cs b/mcs/class/corlib/System.Security.Cryptography/SymmetricAlgorithm.cs
deleted file mode 100644 (file)
index 88a674b..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-//
-// System.Security.Cryptography SymmetricAlgorithm Class implementation
-//
-// Authors:
-//   Thomas Neidhart (tome@sbox.tugraz.at)
-//   Sebastien Pouliot <sebastien@ximian.com>
-//
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-       [ComVisible (true)]
-       public abstract class SymmetricAlgorithm : IDisposable {
-               protected int BlockSizeValue; 
-               protected byte[] IVValue; 
-               protected int KeySizeValue; 
-               protected byte[] KeyValue; 
-               protected KeySizes[] LegalBlockSizesValue; 
-               protected KeySizes[] LegalKeySizesValue; 
-               protected int FeedbackSizeValue;
-               protected CipherMode ModeValue;
-               protected PaddingMode PaddingValue;
-               private bool m_disposed;
-
-               protected SymmetricAlgorithm ()
-               {
-                       ModeValue = CipherMode.CBC;
-                       PaddingValue = PaddingMode.PKCS7;
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               public void Clear() 
-               {
-                       Dispose (true);
-               }
-
-               protected virtual void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               // always zeroize keys
-                               if (KeyValue != null) {
-                                       // Zeroize the secret key and free
-                                       Array.Clear (KeyValue, 0, KeyValue.Length);
-                                       KeyValue = null;
-                               }
-                               // dispose unmanaged managed objects
-                               if (disposing) {
-                                       // dispose managed objects
-                               }
-                               m_disposed = true;
-                       }
-               }
-
-               public virtual int BlockSize {
-                       get { return this.BlockSizeValue; }
-                       set {
-                               if (!KeySizes.IsLegalKeySize (this.LegalBlockSizesValue, value)) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("block size not supported by algorithm"));
-                               }
-                               // re-setting the same BlockSize *doesn't* regenerate the IV
-                               if (BlockSizeValue != value) {
-                                       BlockSizeValue = value;
-                                       IVValue = null;
-                               }
-                       }
-               }
-
-               public virtual int FeedbackSize {
-                       get { return this.FeedbackSizeValue; }
-                       set {
-                               if ((value <= 0) || (value > this.BlockSizeValue)) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("feedback size larger than block size"));
-                               }
-                               if ((value & 3) != 0) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("feedback size must be a multiple of 8 (bits)"));
-                               }
-                               this.FeedbackSizeValue = value;
-                       }
-               }
-               
-               public virtual byte[] IV {
-                       get {
-                               if (this.IVValue == null)
-                                       GenerateIV();
-
-                               return (byte[]) this.IVValue.Clone ();
-                       }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ("IV");
-                               // 2.0 is stricter for IV length - which is bad for IV-less stream ciphers like RC4
-                               if ((value.Length << 3) != this.BlockSizeValue) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("IV length is different than block size"));
-                               }
-                               this.IVValue = (byte[]) value.Clone ();
-                       }
-               }
-
-               public virtual byte[] Key {
-                       get {
-                               if (this.KeyValue == null)
-                                       GenerateKey();
-
-                               return (byte[]) this.KeyValue.Clone ();
-                       }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ("Key");
-
-                               int length = (value.Length << 3);
-                               if (!KeySizes.IsLegalKeySize (this.LegalKeySizesValue, length)) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("Key size not supported by algorithm"));
-                               }
-                               this.KeySizeValue = length;
-                               this.KeyValue = (byte[]) value.Clone ();
-                       }
-               }
-               
-               public virtual int KeySize {
-                       get { return this.KeySizeValue; }
-                       set {
-                               if (!KeySizes.IsLegalKeySize (this.LegalKeySizesValue, value)) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("Key size not supported by algorithm"));
-                               }
-                               // re-setting the same KeySize *does* regenerate the key
-                               KeySizeValue = value;
-                               KeyValue = null;
-                       }
-               }
-
-               public virtual KeySizes[] LegalBlockSizes {
-                       get { return this.LegalBlockSizesValue; }
-               }
-
-               public virtual KeySizes[] LegalKeySizes {
-                       get { return this.LegalKeySizesValue; }
-               }
-
-               public virtual CipherMode Mode {
-                       get { return this.ModeValue; }
-                       set {
-                               if ((value < CipherMode.CBC) || (CipherMode.CFB < value)) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("Cipher mode not available"));
-                               }
-                               
-                               this.ModeValue = value;
-                       }
-               }
-
-               public virtual PaddingMode Padding {
-                       get { return this.PaddingValue; }
-                       set {
-                               if (!Enum.IsDefined (PaddingValue.GetType (), value)) {
-                                       throw new CryptographicException (
-                                               Locale.GetText ("Padding mode not available"));
-                               }
-                               
-                               this.PaddingValue = value;
-                       }
-               }
-
-               public virtual ICryptoTransform CreateDecryptor () 
-               {
-                       return CreateDecryptor (Key, IV);
-               }
-
-               public abstract ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV);
-
-               public virtual ICryptoTransform CreateEncryptor() 
-               {
-                       return CreateEncryptor (Key, IV);
-               }
-
-               public abstract ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV);
-
-               public abstract void GenerateIV ();
-
-               public abstract void GenerateKey ();
-
-               public bool ValidKeySize (int bitLength) 
-               {
-                       return KeySizes.IsLegalKeySize (LegalKeySizesValue, bitLength);
-               }
-               
-               // LAMESPEC: Default is Rijndael - not TripleDES
-               public static SymmetricAlgorithm Create () 
-               {
-#if FULL_AOT_RUNTIME
-                       return new System.Security.Cryptography.RijndaelManaged ();
-#else
-                       return Create ("System.Security.Cryptography.SymmetricAlgorithm");
-#endif
-               }
-
-               public static SymmetricAlgorithm Create (string algName) 
-               {
-                       return (SymmetricAlgorithm) CryptoConfig.CreateFromName (algName);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/ToBase64Transform.cs b/mcs/class/corlib/System.Security.Cryptography/ToBase64Transform.cs
deleted file mode 100644 (file)
index ddf4394..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// System.Security.Cryptography.ToBase64Transform
-//
-// Author:
-//   Sergey Chaban (serge@wildwestsoftware.com)
-//
-// (C) 2004 Novell (http://www.novell.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Security.Cryptography {
-
-       static class Base64Helper {
-
-               private const int inputBlockSize = 3;
-               private const int outputBlockSize = 4;
-
-               internal static void TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-               {
-                       byte[] lookup = Base64Constants.EncodeTable;
-                       
-                       int b1 = inputBuffer [inputOffset];
-                       int b2 = inputBuffer [inputOffset + 1];
-                       int b3 = inputBuffer [inputOffset + 2];
-                       
-                       outputBuffer [outputOffset] = lookup [b1 >> 2];
-                       outputBuffer [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
-                       outputBuffer [outputOffset+2] = lookup [((b2 << 2) & 0x3c) | (b3 >> 6)];
-                       outputBuffer [outputOffset+3] = lookup [b3 & 0x3f];
-               }
-
-               // Mono System.Convert depends on the ability to process multiple blocks                
-               internal static byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       int blockLen = inputBlockSize;
-                       int outLen = outputBlockSize;
-                       int fullBlocks = inputCount / blockLen;
-                       int tail = inputCount % blockLen;
-                       
-                       byte[] res = new byte [(inputCount != 0)
-                                              ? ((inputCount + 2) / blockLen) * outLen
-                                              : 0];
-                       
-                       int outputOffset = 0;
-                       
-                       for (int i = 0; i < fullBlocks; i++) {
-                               TransformBlock (inputBuffer, inputOffset, blockLen, res, outputOffset);
-                               inputOffset += blockLen;
-                               outputOffset += outLen;
-                       }
-                       
-                       byte[] lookup = Base64Constants.EncodeTable;
-                       int b1,b2;
-                       
-                       // When fewer than 24 input bits are available
-                       // in an input group, zero bits are added
-                       // (on the right) to form an integral number of
-                       // 6-bit groups.
-                       switch (tail) {
-                       case 0:
-                               break;
-                       case 1:
-                               b1 = inputBuffer [inputOffset];
-                               res [outputOffset] = lookup [b1 >> 2];
-                               res [outputOffset+1] = lookup [(b1 << 4) & 0x30];
-                               
-                               // padding
-                               res [outputOffset+2] = (byte)'=';
-                               res [outputOffset+3] = (byte)'=';
-                               break;
-                               
-                       case 2:
-                               b1 = inputBuffer [inputOffset];
-                               b2 = inputBuffer [inputOffset + 1];
-                               res [outputOffset] = lookup [b1 >> 2];
-                               res [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
-                               res [outputOffset+2] = lookup [(b2 << 2) & 0x3c];
-                               
-                               // one-byte padding
-                               res [outputOffset+3] = (byte)'=';
-                               break;
-                       }
-                       
-                       return res;
-               }
-       }
-
-       [ComVisible (true)]
-       public class ToBase64Transform : ICryptoTransform {
-
-               private const int inputBlockSize = 3;
-               private const int outputBlockSize = 4;
-               private bool m_disposed;
-
-               public ToBase64Transform ()
-               {
-               }
-
-               ~ToBase64Transform ()
-               {
-                       Dispose (false);
-               }
-
-               public bool CanTransformMultipleBlocks {
-                       get { return false; }
-               }
-
-               public virtual bool CanReuseTransform {
-                       get { return true; }
-               }
-
-               public int InputBlockSize {
-                       get { return inputBlockSize; }
-               }
-
-               public int OutputBlockSize {
-                       get { return outputBlockSize; }
-               }
-
-               public void Clear() 
-               {
-                       Dispose (true);
-               }
-
-               public void Dispose ()
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               protected virtual void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               // dispose unmanaged objects
-                               if (disposing) {
-                                       // dispose managed objects
-                               }
-                               m_disposed = true;
-                       }
-               }
-
-               // LAMESPEC: It's not clear from docs what should be happening 
-               // here if inputCount > InputBlockSize. It just "Converts the 
-               // specified region of the specified byte array" and that's all.
-               public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("TransformBlock");
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-                       if (outputBuffer == null)
-                               throw new ArgumentNullException ("outputBuffer");
-                       if (inputCount < 0)
-                               throw new ArgumentException ("inputCount", "< 0");
-                       if (inputCount > inputBuffer.Length)
-                               throw new ArgumentException ("inputCount", Locale.GetText ("Overflow"));
-                       if (inputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("inputOffset", "< 0");
-                       // ordered to avoid possible integer overflow
-                       if (inputOffset > inputBuffer.Length - inputCount)
-                               throw new ArgumentException ("inputOffset", Locale.GetText ("Overflow"));
-                       // ordered to avoid possible integer overflow
-                       if (outputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("outputOffset", "< 0");
-                       if (outputOffset > outputBuffer.Length - inputCount)
-                               throw new ArgumentException ("outputOffset", Locale.GetText ("Overflow"));
-/// To match MS implementation
-//                     if (inputCount != this.InputBlockSize)
-//                             throw new CryptographicException (Locale.GetText ("Invalid input length"));
-
-                       Base64Helper.TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
-                       return this.OutputBlockSize;
-               }
-
-               public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("TransformFinalBlock");
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-                       if (inputCount < 0)
-                               throw new ArgumentException ("inputCount", "< 0");
-                       if (inputOffset > inputBuffer.Length - inputCount)
-                               throw new ArgumentException ("inputCount", Locale.GetText ("Overflow"));
-                       if (inputCount > this.InputBlockSize)
-                               throw new ArgumentOutOfRangeException (Locale.GetText ("Invalid input length"));
-                       
-                       return Base64Helper.TransformFinalBlock (inputBuffer, inputOffset, inputCount);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security.Cryptography/TripleDES.cs b/mcs/class/corlib/System.Security.Cryptography/TripleDES.cs
deleted file mode 100644 (file)
index 3fa0800..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// TripleDES.cs: Handles TripleDES (abstract class)
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-// References:
-// a.  FIPS PUB 46-3: TripleDES
-//     http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf
-// b.  ANSI X9.52
-//     not free :-(
-//     http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+X9%2E52%2D1998
-
-[ComVisible (true)]
-public abstract class TripleDES : SymmetricAlgorithm {
-
-       protected TripleDES ()
-       {
-               // from SymmetricAlgorithm
-               KeySizeValue = 192;
-               BlockSizeValue = 64;
-               FeedbackSizeValue = 8;
-
-               LegalKeySizesValue = new KeySizes [1];
-               LegalKeySizesValue [0] = new KeySizes (128, 192, 64);
-
-               LegalBlockSizesValue = new KeySizes [1];
-               LegalBlockSizesValue [0] = new KeySizes (64, 64, 0);
-       }
-
-       public override byte[] Key {
-               get {
-                       if (KeyValue == null) {
-                               // generate keys as long as we get weak keys
-                               GenerateKey ();
-                               while (IsWeakKey (KeyValue))
-                                       GenerateKey ();
-                       }
-                       return (byte[]) KeyValue.Clone ();
-               }
-               set { 
-                       if (value == null)
-                               throw new ArgumentNullException ("Key");
-                       // this will check for both key size and weak keys
-                       if (IsWeakKey (value))
-                               throw new CryptographicException (Locale.GetText ("Weak Key"));
-                       KeyValue = (byte[]) value.Clone (); 
-               }
-       }
-
-       // Triple DES is DES in EDE = Encrypt - Decrypt - Encrypt
-       // with 2 keys (a,b)
-       //      EDE = Encrypt (a) - Decrypt (b) - Encrypt (a)
-        //     if a == b then TripleDES == DES(a) (hence weak key)
-        // with 3 keys (a,b,c)
-       //      EDE = Encrypt (a) - Decrypt (b) - Encrypt (c)
-       //      if ( a == b ) then TripleDES == DES(c) (hence weak key)
-       //      if ( b == c ) then TripleDES == DES(a) (hence weak key)
-       public static bool IsWeakKey (byte[] rgbKey)
-       {
-               if (rgbKey == null)
-                       throw new CryptographicException (Locale.GetText ("Null Key"));
-               // 128 bits (16 bytes) is 3 DES with 2 keys
-               if (rgbKey.Length == 16) {
-                       // weak if first half == second half
-                       for (int i = 0; i < 8; i++)
-                               if (rgbKey [i] != rgbKey [i+8])
-                                       return false;
-               }
-               // 192 bits (24 bytes) is 3 DES with 3 keys
-               else if (rgbKey.Length == 24) {
-                       bool bFirstCase = true; 
-                       // weak if first third == second third
-                       for (int i = 0; i < 8; i++) {
-                               if (rgbKey [i] != rgbKey [i+8]) {
-                                       bFirstCase = false;
-                                       break;
-                               }
-                       }
-                       // weak if second third == third third 
-                       if (!bFirstCase) {
-                               for (int i = 8; i < 16; i++)
-                                       if (rgbKey [i] != rgbKey [i+8])
-                                               return false;
-                       }
-               }
-               else
-                       throw new CryptographicException (Locale.GetText ("Wrong Key Length"));
-
-               return true;
-       }
-
-       public static new TripleDES Create ()
-       {
-#if FULL_AOT_RUNTIME
-               return new System.Security.Cryptography.TripleDESCryptoServiceProvider ();
-#else
-               return Create ("System.Security.Cryptography.TripleDES");
-#endif
-       }
-
-       public static new TripleDES Create (string str)
-       {
-               return (TripleDES) CryptoConfig.CreateFromName (str);
-       }
-}
-
-}
-
index ed8b1393304e889fb0351ce4c4bb134474f55146..6c66f945e9bc3af0fcc2447fce9508ceafa5db1f 100644 (file)
@@ -39,34 +39,6 @@ namespace System.Security.Cryptography {
        //      not free :-(
        //      http://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI+X9%2E52%2D1998
        
-       [ComVisible (true)]
-       public sealed class TripleDESCryptoServiceProvider : TripleDES {
-       
-               public TripleDESCryptoServiceProvider ()
-               {
-               }
-       
-               public override void GenerateIV () 
-               {
-                       IVValue = KeyBuilder.IV (BlockSizeValue >> 3);
-               }
-               
-               public override void GenerateKey () 
-               {
-                       KeyValue = TripleDESTransform.GetStrongKey ();
-               }
-               
-               public override ICryptoTransform CreateDecryptor (byte[] rgbKey, byte[] rgbIV) 
-               {
-                       return new TripleDESTransform (this, false, rgbKey, rgbIV);
-               }
-               
-               public override ICryptoTransform CreateEncryptor (byte[] rgbKey, byte[] rgbIV) 
-               {
-                       return new TripleDESTransform (this, true, rgbKey, rgbIV);
-               }
-       }
-       
        // TripleDES is just DES-EDE
        internal class TripleDESTransform : SymmetricTransform {
        
index db004052e61c2a1cd3269dec934fe07ea6327769..f8653aad20aa9dbc99d80f3d206c214bd6f889f3 100644 (file)
@@ -150,6 +150,12 @@ namespace System.Security.Policy {
                                assemblyEvidenceList.Clear ();
                }
 
+        [ComVisible(false)]
+        public Evidence Clone ()
+        {
+            return new Evidence(this);
+        }              
+
                [Obsolete]
                public void CopyTo (Array array, int index) 
                {
diff --git a/mcs/class/corlib/System.Security.Principal/GenericIdentity.cs b/mcs/class/corlib/System.Security.Principal/GenericIdentity.cs
deleted file mode 100644 (file)
index 23069f6..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// System.Security.Principal.GenericIdentity.cs
-//
-// Authors:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Marek Safar (marek.safar@gmail.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Collections.Generic;
-using System.Security.Claims;
-
-namespace System.Security.Principal {
-
-       [Serializable]
-       [ComVisible (true)]
-       public class GenericIdentity :
-               ClaimsIdentity
-       {
-
-               // field names are serialization compatible with .net
-               private string m_name;
-               private string m_type;
-               
-               public GenericIdentity (string name, string type)
-               {
-                       if (name == null)
-                               throw new ArgumentNullException ("name");
-
-                       if (type == null)
-                               throw new ArgumentNullException ("type");
-
-                       m_name = name;
-                       m_type = type;
-
-                       AddDefaultClaim (name);
-               }
-
-               public GenericIdentity (string name)
-                       : this (name, String.Empty)
-               {
-               }
-
-               protected GenericIdentity (GenericIdentity identity)
-                       : base (identity)
-               {
-               }
-
-               override
-               public string AuthenticationType {
-                       get {
-                               return m_type;
-                       }
-               }
-
-               override
-               public string Name {
-                       get {
-                               return m_name;
-                       }
-               }
-
-               override
-               public bool IsAuthenticated {
-                       get {
-                               return (m_name.Length > 0);
-                       }
-               }
-
-               public override IEnumerable<Claim> Claims {
-                       get {
-                               return base.Claims;
-                       }
-               }
-       }
-}
index 7f2eef3e1e4eb098e1f5fb239ec01cc833d4bdf7..0ce7736f57432c0bbe1981d60cba712af09d597b 100644 (file)
@@ -33,6 +33,7 @@ using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Runtime.Serialization;
 using System.Security.Permissions;
+using System.Security.Claims;
 
 namespace System.Security.Principal {
 
@@ -113,6 +114,15 @@ namespace System.Security.Principal {
                        _info = info;
                }
 
+               internal WindowsIdentity (ClaimsIdentity claimsIdentity, IntPtr userToken)
+                       : base (claimsIdentity)
+               {
+                       if (userToken != IntPtr.Zero && userToken.ToInt64() > 0)
+                       {
+                               SetToken (userToken);
+                       }
+               }
+
                [ComVisible (false)]
                public void Dispose ()
                {
@@ -269,6 +279,16 @@ namespace System.Security.Principal {
                        info.AddValue ("m_isAuthenticated", _authenticated);
                }
 
+               internal ClaimsIdentity CloneAsBase ()
+               {
+                       return base.Clone();
+               }
+
+               internal IntPtr GetTokenInternal ()
+               {
+                       return _token;
+               }
+
                private void SetToken (IntPtr token) 
                {
                        if (Environment.IsUnix) {
diff --git a/mcs/class/corlib/System.Security/AllowPartiallyTrustedCallersAttribute.cs b/mcs/class/corlib/System.Security/AllowPartiallyTrustedCallersAttribute.cs
deleted file mode 100644 (file)
index cbe0765..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.Security.AllowPartiallyTrustedCallersAttribute implementation
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003, 2004 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security {
-
-       [ComVisible (true)]
-       [AttributeUsage (AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
-       public sealed class AllowPartiallyTrustedCallersAttribute : Attribute {
-
-               public AllowPartiallyTrustedCallersAttribute ()
-                       : base ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security/SecurityCriticalAttribute.cs b/mcs/class/corlib/System.Security/SecurityCriticalAttribute.cs
deleted file mode 100644 (file)
index ed01b54..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// System.Security.SecurityCriticalAttribute implementation
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005, 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security {
-
-#if NET_2_1
-
-       [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct |
-               AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property |
-               AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate,
-               AllowMultiple=false, Inherited=false)]
-       public sealed class SecurityCriticalAttribute : Attribute {
-
-               public SecurityCriticalAttribute ()
-               {
-               }
-       }
-
-#else
-       [MonoTODO ("Only supported by the runtime when CoreCLR is enabled")]
-       [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct |
-               AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method |
-               AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Delegate,
-               AllowMultiple=false, Inherited=false)]
-       public sealed class SecurityCriticalAttribute : Attribute {
-
-               private SecurityCriticalScope _scope;
-
-               public SecurityCriticalAttribute ()
-                       : base ()
-               {
-                       _scope = SecurityCriticalScope.Explicit;
-               }
-
-               public SecurityCriticalAttribute (SecurityCriticalScope scope)
-                       : base ()
-               {
-                       switch (scope) {
-                       case SecurityCriticalScope.Everything:
-                               _scope = SecurityCriticalScope.Everything;
-                               break;
-                       default:
-                               // that includes all bad enums values
-                               _scope = SecurityCriticalScope.Explicit;
-                               break;
-                       }
-               }
-
-               [Obsolete]
-               public SecurityCriticalScope Scope {
-                       get { return _scope; }
-               }
-       }
-#endif
-}
diff --git a/mcs/class/corlib/System.Security/SecurityCriticalScope.cs b/mcs/class/corlib/System.Security/SecurityCriticalScope.cs
deleted file mode 100644 (file)
index 37be161..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// System.Security.SecurityCriticalScope enum
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security {
-
-       [Obsolete]
-       public enum SecurityCriticalScope {
-               Explicit,
-               Everything
-       }
-}
-
index ca0513ba86a37a1b191f2ac6ad4f8c9c771834e0..0212e8b390aef94b94350eb0187c84191b78ee35 100644 (file)
@@ -33,11 +33,19 @@ using System.Globalization;
 using System.Collections;
 using System.Runtime.InteropServices;
 using System.Text;
+using System.Diagnostics.Contracts;
 
 using Mono.Xml;
 
 namespace System.Security {
 
+    internal enum SecurityElementType
+    {
+        Regular = 0,
+        Format = 1,
+        Comment = 2
+    }
+
        [ComVisible (true)]
        [Serializable]
        public sealed class SecurityElement 
@@ -454,5 +462,64 @@ namespace System.Security {
                        }
                        return null;
                }
+
+               internal string m_strTag {
+                       get {
+                               return tag;
+                       }
+               }
+
+               internal string m_strText {
+                       get {
+                               return text;
+                       }
+                       set {
+                               text = value;
+                       }
+               }
+
+               internal ArrayList m_lAttributes {
+                       get {
+                               return attributes;
+                       }
+               }
+
+               internal ArrayList InternalChildren {
+                       get {
+                               return children;
+                       }
+               }
+
+        internal String SearchForTextOfLocalName(String strLocalName) 
+        {
+            // Search on each child in order and each
+            // child's child, depth-first
+            
+            if (strLocalName == null)
+                throw new ArgumentNullException( "strLocalName" );
+            Contract.EndContractBlock();
+                
+            // Note: we don't check for a valid tag here because
+            // an invalid tag simply won't be found.    
+            
+            // First we check this.
+            
+            if (tag == null) return null;            
+            if (tag.Equals( strLocalName ) || tag.EndsWith( ":" + strLocalName, StringComparison.Ordinal ))
+                return Unescape( text );               
+            if (children == null)
+                return null;
+
+            IEnumerator enumerator = children.GetEnumerator();
+
+            while (enumerator.MoveNext())
+            {
+                String current = ((SecurityElement)enumerator.Current).SearchForTextOfLocalName( strLocalName );
+            
+                if (current != null)
+                    return current;
+            }
+            return null;            
+        }              
        }
 }
index 6d7770e1131059600c640211eb5c754272bbfcd7..e7535bd89cd05a9ba450ea1ddca19ffdfde284aa 100644 (file)
@@ -42,17 +42,6 @@ namespace System.Security {
                public int index;
        }
 
-       // Must match MonoSecurityFrame in /mono/mini/declsec.h
-#pragma warning disable 649    
-       internal class RuntimeSecurityFrame {
-               public AppDomain domain;
-               public MethodInfo method;
-               public RuntimeDeclSecurityEntry assert;
-               public RuntimeDeclSecurityEntry deny;
-               public RuntimeDeclSecurityEntry permitonly;
-       }
-#pragma warning restore 649    
-
        internal struct SecurityFrame {
 
                private AppDomain _domain;
@@ -61,22 +50,6 @@ namespace System.Security {
                private PermissionSet _deny;
                private PermissionSet _permitonly;
 
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               extern static RuntimeSecurityFrame _GetSecurityFrame (int skip);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               extern static Array _GetSecurityStack (int skip);
-
-               internal SecurityFrame (RuntimeSecurityFrame frame)
-               {
-                       _domain = null;
-                       _method = null;
-                       _assert = null;
-                       _deny = null;
-                       _permitonly = null;
-                       InitFromRuntimeFrame (frame);
-               }
-
                internal SecurityFrame (int skip)
                {
                        _domain = null;
@@ -85,27 +58,7 @@ namespace System.Security {
                        _deny = null;
                        _permitonly = null;
 
-                       InitFromRuntimeFrame (_GetSecurityFrame (skip + 2));
-
-                       // TODO - add the imperative informations into the frame
-               }
-
-               // Note: SecurityManager.Decode implements a cache - so not every call
-               // ends up making an icall
-               internal void InitFromRuntimeFrame (RuntimeSecurityFrame frame)
-               {
-                       _domain = frame.domain;
-                       _method = frame.method;
-
-                       if (frame.assert.size > 0) {
-                               _assert = SecurityManager.Decode (frame.assert.blob, frame.assert.size);
-                       }
-                       if (frame.deny.size > 0) {
-                               _deny = SecurityManager.Decode (frame.deny.blob, frame.deny.size);
-                       }
-                       if (frame.permitonly.size > 0) {
-                               _permitonly = SecurityManager.Decode (frame.permitonly.blob, frame.permitonly.size);
-                       }
+                       throw new NotImplementedException ();
                }
 
                public Assembly Assembly {
@@ -172,20 +125,7 @@ namespace System.Security {
 
                static public ArrayList GetStack (int skipFrames)
                {
-                       /* _GetSecurityFrame () creates cross-domain references, leading to gc crashes */
                        return new ArrayList ();
-                       /*
-                       Array stack = _GetSecurityStack (skipFrames+2);
-                       ArrayList al = new ArrayList ();
-                       for (int i = 0; i < stack.Length; i++) {
-                               object o = stack.GetValue (i);
-                               // null are unused slots allocated in the runtime
-                               if (o == null)
-                                       break;
-                               al.Add (new SecurityFrame ((RuntimeSecurityFrame)o));
-                       }
-                       return al;
-                       */
                }
        }
 }
diff --git a/mcs/class/corlib/System.Security/SecurityRuleSet.cs b/mcs/class/corlib/System.Security/SecurityRuleSet.cs
deleted file mode 100644 (file)
index f67e35c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Security.SecurityRuleSet.cs
-//
-// Author:
-//   Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Security {
-
-       public enum SecurityRuleSet : byte
-       {
-               None    = 0,
-               Level1  = 1,
-               Level2  = 2
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security/SecurityRulesAttribute.cs b/mcs/class/corlib/System.Security/SecurityRulesAttribute.cs
deleted file mode 100644 (file)
index b6ed53f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.Security.SecurityRulesAttribute.cs
-//
-// Author:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System.Security {
-
-       [AttributeUsage (AttributeTargets.Assembly, AllowMultiple=false)]
-       public sealed class SecurityRulesAttribute : Attribute
-       {
-               public SecurityRulesAttribute (SecurityRuleSet ruleSet)
-               {
-                       RuleSet = ruleSet;
-               }
-               
-               public SecurityRuleSet RuleSet { get; private set; }
-               
-               public bool SkipVerificationInFullTrust { get; set; }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security/SecuritySafeCriticalAttribute.cs b/mcs/class/corlib/System.Security/SecuritySafeCriticalAttribute.cs
deleted file mode 100644 (file)
index 06d0807..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.Security.SecuritySafeCriticalAttribute implementation
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005,2007,2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security {
-
-       [MonoTODO ("Only supported by the runtime when CoreCLR is enabled")]
-       [AttributeUsage (AttributeTargets.Delegate | AttributeTargets.Interface | AttributeTargets.Field | AttributeTargets.Method |
-                       AttributeTargets.Constructor | AttributeTargets.Enum | AttributeTargets.Struct | AttributeTargets.Class, AllowMultiple=false, Inherited=false)]
-       public sealed class SecuritySafeCriticalAttribute : Attribute {
-
-               public SecuritySafeCriticalAttribute ()
-               {
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System.Security/SecurityTransparentAttribute.cs b/mcs/class/corlib/System.Security/SecurityTransparentAttribute.cs
deleted file mode 100644 (file)
index 92e94ca..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.Security.SecurityTransparentAttribute implementation
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005, 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security {
-
-       [MonoTODO ("Only supported by the runtime when CoreCLR is enabled")]
-       [AttributeUsage (AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
-       public sealed class SecurityTransparentAttribute : Attribute {
-
-               public SecurityTransparentAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security/SecurityTreatAsSafeAttribute.cs b/mcs/class/corlib/System.Security/SecurityTreatAsSafeAttribute.cs
deleted file mode 100644 (file)
index b86b369..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.Security.SecurityTreatAsSafeAttribute implementation
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Security {
-
-       [AttributeUsage (AttributeTargets.Delegate | AttributeTargets.Interface | AttributeTargets.Field |
-               AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Enum | AttributeTargets.Struct |
-               AttributeTargets.Class | AttributeTargets.Assembly,
-               AllowMultiple=false, Inherited=false)]
-       [Obsolete ("Use the SecuritySafeCriticalAttribute instead")]
-       [MonoTODO ("Not supported by the runtime")]
-       public sealed class SecurityTreatAsSafeAttribute : Attribute {
-
-               public SecurityTreatAsSafeAttribute ()
-                       : base ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System.Security/SuppressUnmanagedCodeSecurityAttribute.cs b/mcs/class/corlib/System.Security/SuppressUnmanagedCodeSecurityAttribute.cs
deleted file mode 100644 (file)
index defe471..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.Security.SuppressUnmanagedCodeSecurityAttribute.cs
-//
-// Author:
-//   Nick Drochak(ndrochak@gol.com)
-//
-// (C) Nick Drochak
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security {
-
-       [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method | 
-               AttributeTargets.Interface | AttributeTargets.Delegate, 
-               AllowMultiple=true, Inherited=false)]
-       [ComVisible (true)]
-       public sealed class SuppressUnmanagedCodeSecurityAttribute : Attribute {
-       }
-}
diff --git a/mcs/class/corlib/System.Security/UnverifiableCodeAttribute.cs b/mcs/class/corlib/System.Security/UnverifiableCodeAttribute.cs
deleted file mode 100644 (file)
index 6c130c8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.Security.UnverifiableCodeAttribute.cs
-//
-// Author:
-//   Nick Drochak(ndrochak@gol.com)
-//
-// (C) Nick Drochak
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System.Security {
-
-       [ComVisible (true)]
-       [AttributeUsage (AttributeTargets.Module, AllowMultiple=true, Inherited=false)]
-       public sealed class UnverifiableCodeAttribute : Attribute {
-       }
-}
diff --git a/mcs/class/corlib/System.Threading/LockRecursionException.cs b/mcs/class/corlib/System.Threading/LockRecursionException.cs
deleted file mode 100644 (file)
index 8a4f4bb..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * System.Threading.LockRecursionException
- *
- * Author(s)
- *     Marek Safar <marek.safar@gmail.com>
- *
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com).
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-
-using System;
-using System.Runtime.Serialization;
-using System.Runtime.CompilerServices;
-
-namespace System.Threading
-{
-       [Serializable]
-#if !MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public class LockRecursionException : Exception
-       {
-               public LockRecursionException () 
-                       : base ()
-               {
-               }
-
-               public LockRecursionException (string message) 
-                       : base (message)
-               {
-               }
-
-               public LockRecursionException (string message, Exception innerException) 
-                       : base (message, innerException)
-               {
-               }
-
-               protected LockRecursionException (SerializationInfo info, StreamingContext context)
-                        : base (info, context)
-               {
-               }
-       }
-}
-
index 4c9d31624a76726c302a66f652780ae864b96cc4..0931fb8b930027ef2569cacccbffce6dd2de7616 100644 (file)
@@ -34,9 +34,15 @@ namespace System.Threading
 {
        sealed class NamedDataSlot
        {
+               bool thread_local;
                // Stores a hash keyed by strings of LocalDataStoreSlot objects
                Dictionary<string, LocalDataStoreSlot> datastorehash;
 
+               public NamedDataSlot (bool thread_local)
+               {
+                       this.thread_local = thread_local;
+               }
+
                public LocalDataStoreSlot Allocate (string name)
                {               
                        lock (this) {
@@ -49,7 +55,7 @@ namespace System.Threading
                                        throw new ArgumentException ("Named data slot already added");
                                }
                        
-                               var slot = new LocalDataStoreSlot (true);
+                               var slot = new LocalDataStoreSlot (thread_local);
                                datastorehash.Add (name, slot);
                                return slot;
                        }
@@ -63,7 +69,7 @@ namespace System.Threading
 
                                LocalDataStoreSlot slot;
                                if (!datastorehash.TryGetValue (name, out slot)) {
-                                       slot = new LocalDataStoreSlot (true);
+                                       slot = new LocalDataStoreSlot (thread_local);
                                        datastorehash.Add (name, slot);
                                }
                        
@@ -83,4 +89,4 @@ namespace System.Threading
                        }
                }
        }
-}
\ No newline at end of file
+}
index 4be83d2cd58c9807089f4146144911f26f85ccce..a104619cf12e7ac2ff7fdf542c44054a86cdf833 100644 (file)
@@ -67,7 +67,6 @@ namespace System.Threading {
                private IntPtr start_notify;
                private IntPtr stack_ptr;
                private UIntPtr static_data; /* GC-tracked */
-               private IntPtr jit_data;
                private IntPtr runtime_thread_info;
                /* current System.Runtime.Remoting.Contexts.Context instance
                   keep as an object to avoid triggering its class constructor when not needed */
@@ -78,14 +77,9 @@ namespace System.Threading {
                internal int _serialized_principal_version;
                private IntPtr appdomain_refs;
                private int interruption_requested;
-               private IntPtr suspend_event;
-               private IntPtr suspended_event;
-               private IntPtr resume_event;
                private IntPtr synch_cs;
                internal bool threadpool_thread;
-               private bool thread_dump_requested;
                private bool thread_interrupt_requested;
-               private IntPtr end_stack;
                /* These are used from managed code */
                internal int stack_size;
                internal byte apartment_state;
@@ -95,14 +89,12 @@ namespace System.Threading {
                private IntPtr manage_callback;
                private IntPtr interrupt_on_stop;
                private IntPtr flags;
-               private IntPtr android_tid;
                private IntPtr thread_pinning_ref;
-               private int ignore_next_signal;
+               private IntPtr async_invoke_method;
                /* 
                 * These fields are used to avoid having to increment corlib versions
                 * when a new field is added to the unmanaged MonoThread structure.
                 */
-               private IntPtr unused0;
                private IntPtr unused1;
                private IntPtr unused2;
                #endregion
@@ -336,7 +328,7 @@ namespace System.Threading {
                static NamedDataSlot NamedDataSlot {
                        get {
                                if (namedDataSlot == null)
-                                       Interlocked.CompareExchange (ref namedDataSlot, new NamedDataSlot (), null);
+                                       Interlocked.CompareExchange (ref namedDataSlot, new NamedDataSlot (true), null);
 
                                return namedDataSlot;
                        }
@@ -622,7 +614,13 @@ namespace System.Threading {
                }
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               internal extern object GetAbortExceptionState ();
+               extern object GetAbortExceptionState ();
+
+               internal object AbortReason {
+                       get {
+                               return GetAbortExceptionState ();
+                       }
+               }
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private extern static void Interrupt_internal (InternalThread thread);
diff --git a/mcs/class/corlib/System.Threading/ThreadAbortException.cs b/mcs/class/corlib/System.Threading/ThreadAbortException.cs
deleted file mode 100644 (file)
index 19e5cba..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// System.Threading.ThreadAbortException.cs
-//
-// Author:
-//   Dick Porter (dick@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.Threading
-{
-       [Serializable]
-       [ComVisible (true)]
-       public sealed class ThreadAbortException : SystemException
-       {
-               private ThreadAbortException () : base ("Thread was being aborted")
-               {
-                       HResult = unchecked ((int) 0x80131530);
-               }
-
-               private ThreadAbortException (SerializationInfo info, StreamingContext sc) : base (info, sc)
-               {
-               }
-
-#if !NET_2_1
-               public object ExceptionState {
-                       get {
-                               return Thread.CurrentThread.GetAbortExceptionState ();
-                       }
-               }
-#endif
-       }
-}
diff --git a/mcs/class/corlib/System.Threading/ThreadInterruptedException.cs b/mcs/class/corlib/System.Threading/ThreadInterruptedException.cs
deleted file mode 100644 (file)
index 9bcb6f7..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.Threading.ThreadInterruptedException.cs
-//
-// Author:
-//   Dick Porter (dick@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System.Threading
-{
-       [Serializable]
-       [ComVisible (true)]
-       public class ThreadInterruptedException : SystemException
-       {
-               public ThreadInterruptedException()
-                       : base ("Thread interrupted") {
-               }
-
-               public ThreadInterruptedException(string message)
-                       : base (message) {
-               }
-
-               protected ThreadInterruptedException(SerializationInfo info, StreamingContext context)
-                       : base (info, context) {
-               }
-
-               public ThreadInterruptedException(string message, Exception innerException)
-                       : base (message, innerException) {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/Action.cs b/mcs/class/corlib/System/Action.cs
deleted file mode 100644 (file)
index 438f7fc..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Action.cs
-//
-// Authors:
-//  Ben Maurer (bmaurer@ximian.com)
-//  Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2004, 2010 Novell
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-
-namespace System
-{
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate void Action ();
-       
-       public delegate void Action <in T> (T obj);
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate void Action <in T1, in T2> (T1 arg1, T2 arg2);
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate void Action <in T1, in T2, in T3> (T1 arg1, T2 arg2, T3 arg3);
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate void Action <in T1, in T2, in T3, in T4> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
-       
-       public delegate void Action <in T1, in T2, in T3, in T4, in T5> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
-       public delegate void Action <in T1, in T2, in T3, in T4, in T5, in T6> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
-       public delegate void Action <in T1, in T2, in T3, in T4, in T5, in T6, in T7> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
-       public delegate void Action <in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
-}
index 75e3d6a855fb792cbb38121ea95bec8dec8deba9..ae59c7c9c5a2461bc442b66fc36115adf2c3314d 100644 (file)
@@ -36,7 +36,6 @@ namespace System {
 
                static readonly Func<SynchronizationContext> getDefaultSyncContext;
                static readonly Func<string> getDefaultTimeZone;
-               static readonly Func<TimeZone> getCurrentSystemTimeZone;
 
                static AndroidPlatform ()
                {
@@ -51,11 +50,6 @@ namespace System {
                                Delegate.CreateDelegate (typeof(Func<string>), 
                                                androidRuntime.GetMethod ("GetDefaultTimeZone",
                                                        System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic));
-
-                       MethodInfo mi = androidRuntime.GetMethod ("GetCurrentSystemTimeZone",
-                                       System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
-                       if (mi != null)
-                               getCurrentSystemTimeZone = (Func<TimeZone>) Delegate.CreateDelegate (typeof(Func<TimeZone>), mi);
                }
 
                internal static SynchronizationContext GetDefaultSyncContext ()
@@ -67,13 +61,6 @@ namespace System {
                {
                        return getDefaultTimeZone ();
                }
-
-               internal static TimeZone GetCurrentSystemTimeZone ()
-               {
-                       if (getCurrentSystemTimeZone == null)
-                               return null;
-                       return getCurrentSystemTimeZone ();
-               }
        }
 }
 #endif
diff --git a/mcs/class/corlib/System/ApplicationId.cs b/mcs/class/corlib/System/ApplicationId.cs
deleted file mode 100644 (file)
index b867591..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-//
-// System.ApplicationId class
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace System {
-
-       [Serializable]
-       [ComVisible (true)]
-       public sealed class ApplicationId {
-
-               private byte[] _token;
-               private string _name;
-               private Version _version;
-               private string _proc;
-               private string _culture;
-
-               public ApplicationId (byte[] publicKeyToken, string name, Version version, string processorArchitecture, string culture)
-               {
-                       if (publicKeyToken == null)
-                               throw new ArgumentNullException ("publicKeyToken");
-                       if (name == null)
-                               throw new ArgumentNullException ("name");
-                       if (version == null)
-                               throw new ArgumentNullException ("version");
-
-                       _token = (byte[]) publicKeyToken.Clone ();
-                       _name = name;
-                       _version = version;
-                       _proc = processorArchitecture;
-                       _culture = culture;
-               }
-
-               // properties
-
-               public string Culture {
-                       get { return _culture; }
-               }
-
-               public string Name {
-                       get { return _name; }
-               }
-
-               public string ProcessorArchitecture {
-                       get { return _proc; }
-               }
-
-               public byte[] PublicKeyToken {
-                       get { return (byte[]) _token.Clone (); }
-               }
-
-               public Version Version {
-                       get { return _version; }
-               }
-
-               // methods
-
-               public ApplicationId Copy () 
-               {
-                       return new ApplicationId (_token, _name, _version, _proc, _culture);
-               }
-
-               public override bool Equals (object o)
-               {
-                       if (o == null)
-                               return false;
-                       ApplicationId appid = (o as ApplicationId);
-                       if (appid == null)
-                               return false;
-                       if (_name != appid._name)
-                               return false;
-                       if (_proc != appid._proc)
-                               return false;
-                       if (_culture != appid._culture)
-                               return false;
-                       if (!_version.Equals (appid._version))
-                               return false;
-                       if (_token.Length != appid._token.Length)
-                               return false;
-                       for (int i=0; i < _token.Length; i++)
-                               if (_token [i] != appid._token [i])
-                                       return false;
-                       return true;
-               }
-
-               public override int GetHashCode ()
-               {
-                       int code = _name.GetHashCode () ^ _version.GetHashCode ();
-                       for (int i=0; i < _token.Length; i++)
-                               code ^= _token [i];
-                       // ProcessorArchitecture and Culture aren't part of the hash code
-                       // Confirmed by Microsoft in FDBK13339
-                       return code;
-               }
-
-               public override string ToString ()
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (_name);
-                       if (_culture != null)
-                               sb.AppendFormat (", culture=\"{0}\"", _culture);
-                       sb.AppendFormat (", version=\"{0}\", publicKeyToken=\"", _version);
-                       for (int i=0; i < _token.Length; i++)
-                               sb.Append (_token [i].ToString ("X2"));
-                       if (_proc != null)
-                               sb.AppendFormat ("\", processorArchitecture =\"{0}\"", _proc);
-                       else
-                               sb.Append ("\"");
-                       return sb.ToString ();
-               }
-       }
-}
index b4afbe2eb84bd10203be62dc732b40647bd43a0f..9c263400572cc9681d3fba5d8ad1ce6f5c579a1c 100644 (file)
@@ -3045,7 +3045,7 @@ namespace System
                        if (count < 0 || startIndex < array.GetLowerBound (0) || startIndex - 1 > array.GetUpperBound (0) - count)
                                throw new ArgumentOutOfRangeException ();
 
-                       return EqualityComparer<T>.Default.IndexOf (array, value, startIndex, startIndex + count);
+                       return EqualityComparer<T>.Default.IndexOf (array, value, startIndex, count);
                }
                
                public static int LastIndexOf<T> (T [] array, T value)
diff --git a/mcs/class/corlib/System/AsyncCallback.cs b/mcs/class/corlib/System/AsyncCallback.cs
deleted file mode 100644 (file)
index 3f2bf73..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.AsyncCallback.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System
-{
-       [System.Runtime.InteropServices.ComVisible (true)]
-       [Serializable]
-       public delegate void AsyncCallback (IAsyncResult ar);
-}
diff --git a/mcs/class/corlib/System/AttributeTargets.cs b/mcs/class/corlib/System/AttributeTargets.cs
deleted file mode 100644 (file)
index 3a023d3..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// System.AttributeTargets.cs
-//
-// This code was automatically generated from
-// ECMA CLI XML Library Specification.
-// Generator: libgen.xsl [1.0; (C) Sergey Chaban (serge@wildwestsoftware.com)]
-// Created: Fri, 7 Sep 2001 16:31:48 UTC
-// Source file: AllTypes.xml
-// URL: http://msdn.microsoft.com/net/ecma/AllTypes.xml
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System {
-
-       [ComVisible (true)]
-       [Serializable]
-       [Flags]
-       public enum AttributeTargets
-       {
-               Assembly = 0x00000001,
-               Module = 0x00000002,
-               Class = 0x00000004,
-               Struct = 0x00000008,
-               Enum = 0x00000010,
-               Constructor = 0x00000020,
-               Method = 0x00000040,
-               Property = 0x00000080,
-               Field = 0x00000100,
-               Event = 0x00000200,
-               Interface = 0x00000400,
-               Parameter = 0x00000800,
-               Delegate = 0x00001000,
-               ReturnValue = 0x00002000,
-
-               GenericParameter = 0x00004000,
-               All = Assembly | Module | Class | Struct | Enum | Constructor |
-                       Method | Property | Field | Event | Interface | Parameter | Delegate | ReturnValue | GenericParameter
-       }
-}
-
diff --git a/mcs/class/corlib/System/BadImageFormatException.cs b/mcs/class/corlib/System/BadImageFormatException.cs
deleted file mode 100644 (file)
index a6db337..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-//
-// System.BadImageFormatException.cs
-//
-// Authors:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Duncan Mak (duncan@ximian.com)
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-// (C) 2001 Ximian, Inc.
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace System
-{
-       [Serializable]
-       [ComVisible (true)]
-       public class BadImageFormatException : SystemException
-       {
-               const int Result = unchecked ((int)0x8007000B);
-
-               // Fields
-               private string fileName;
-               private string fusionLog;
-
-               // Constructors
-               public BadImageFormatException ()
-                       : base (Locale.GetText ("Format of the executable (.exe) or library (.dll) is invalid."))
-               {
-                       HResult = Result;
-               }
-
-               public BadImageFormatException (string message)
-                       : base (message)
-               {
-                       HResult = Result;
-               }
-
-               protected BadImageFormatException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-                       fileName = info.GetString ("BadImageFormat_FileName");
-                       fusionLog = info.GetString ("BadImageFormat_FusionLog");
-               }
-
-               public BadImageFormatException (string message, Exception inner)
-                       : base (message, inner)
-               {
-                       HResult = Result;
-               }
-
-               public BadImageFormatException (string message, string fileName)
-                       : base (message)
-               {
-                       this.fileName = fileName;
-                       HResult = Result;
-               }
-
-               public BadImageFormatException (string message, string fileName, Exception inner)
-                       : base (message, inner)
-               {
-                       this.fileName = fileName;
-                       HResult = Result;
-               }
-
-               // Properties
-               public override string Message
-               {
-                       get {
-                               if (base.message == null) {
-                                       return string.Format (
-                                               "Could not load file or assembly '{0}' or one of"
-                                               + " its dependencies. An attempt was made to load"
-                                               + " a program with an incorrect format.", fileName);
-                               }
-                               return base.Message;
-                       }
-               }
-
-               public string FileName
-               {
-                       get { return fileName; }
-               }
-
-               [MonoTODO ("Probably not entirely correct. fusionLog needs to be set somehow (we are probably missing internal constuctor)")]
-               public string FusionLog {
-                       // note: MS runtime throws a SecurityException when the Exception is created
-                       // but a FileLoadException once the exception as been thrown. Mono always
-                       // throw a SecurityException in both case (anyway fusionLog is currently empty)
-                       [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
-                       get { return fusionLog; }
-               }
-
-               // Methods
-               public override void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       base.GetObjectData (info, context);
-                       info.AddValue ("BadImageFormat_FileName", fileName);
-                       info.AddValue ("BadImageFormat_FusionLog", fusionLog);
-               }
-
-               public override string ToString ()
-               {
-                       StringBuilder sb = new StringBuilder (GetType ().FullName);
-                       sb.AppendFormat (": {0}", Message);
-
-                       if (fileName != null && fileName.Length > 0) {
-                               sb.Append (Environment.NewLine);
-                               sb.AppendFormat ("File name: '{0}'", fileName);
-                       }
-
-                       if (this.InnerException != null)
-                               sb.AppendFormat (" ---> {0}", InnerException);
-
-                       if (this.StackTrace != null) {
-                               sb.Append (Environment.NewLine);
-                               sb.Append (StackTrace);
-                       }
-
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/Buffer.cs b/mcs/class/corlib/System/Buffer.cs
deleted file mode 100644 (file)
index 3f4960d..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-//
-// System.Buffer.cs
-//
-// Authors:
-//   Paolo Molaro (lupus@ximian.com)
-//   Dan Lewis (dihlewis@yahoo.co.uk)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Diagnostics.Contracts;
-
-namespace System {
-       [ComVisible (true)]
-       public static class Buffer {
-
-               public static int ByteLength (Array array)
-               {
-                       // note: the other methods in this class also use ByteLength to test for
-                       // null and non-primitive arguments as a side-effect.
-
-                       if (array == null)
-                               throw new ArgumentNullException ("array");
-
-                       int length = ByteLengthInternal (array);
-                       if (length < 0)
-                               throw new ArgumentException (Locale.GetText ("Object must be an array of primitives."));
-
-                       return length;
-               }
-
-               public static byte GetByte (Array array, int index)
-               {
-                       if (index < 0 || index >= ByteLength (array))
-                               throw new ArgumentOutOfRangeException ("index", Locale.GetText(
-                                       "Value must be non-negative and less than the size of the collection."));
-
-                       return GetByteInternal (array, index);
-               }
-
-               public static void SetByte (Array array, int index, byte value)
-               {
-                       if (index < 0 || index >= ByteLength (array))
-                               throw new ArgumentOutOfRangeException ("index", Locale.GetText(
-                                       "Value must be non-negative and less than the size of the collection."));
-
-                       SetByteInternal (array, index, value);
-               }
-
-               public static void BlockCopy (Array src, int srcOffset, Array dst, int dstOffset, int count)
-               {
-                       if (src == null)
-                               throw new ArgumentNullException ("src");
-
-                       if (dst == null)
-                               throw new ArgumentNullException ("dst");
-
-                       if (srcOffset < 0)
-                               throw new ArgumentOutOfRangeException ("srcOffset", Locale.GetText(
-                                       "Non-negative number required."));
-
-                       if (dstOffset < 0)
-                               throw new ArgumentOutOfRangeException ("dstOffset", Locale.GetText (
-                                       "Non-negative number required."));
-
-                       if (count < 0)
-                               throw new ArgumentOutOfRangeException ("count", Locale.GetText (
-                                       "Non-negative number required."));
-
-                       // We do the checks in unmanaged code for performance reasons
-                       bool res = BlockCopyInternal (src, srcOffset, dst, dstOffset, count);
-                       if (!res) {
-                               // watch for integer overflow
-                               if ((srcOffset > ByteLength (src) - count) || (dstOffset > ByteLength (dst) - count))
-                                       throw new ArgumentException (Locale.GetText (
-                                               "Offset and length were out of bounds for the array or count is greater than " + 
-                                               "the number of elements from index to the end of the source collection."));
-                       }
-               }
-
-               // private
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern static int ByteLengthInternal (Array array);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern static byte GetByteInternal (Array array, int index);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern static void SetByteInternal (Array array, int index, int value);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal extern static bool BlockCopyInternal (Array src, int src_offset, Array dest, int dest_offset, int count);
-
-               internal static bool InternalBlockCopy (Array src, int src_offset, Array dest, int dest_offset, int count)
-               {
-                       return BlockCopyInternal (src, src_offset, dest, dest_offset, count);
-               }
-
-               internal unsafe static void ZeroMemory (byte* src, long len)
-               {
-                       while(len-- > 0)
-                               *(src + len) = 0;
-               }
-
-        internal unsafe static void Memcpy (byte* pDest, int destIndex, byte[] src, int srcIndex, int len)
-        {
-            Contract.Assert( (srcIndex >= 0) && (destIndex >= 0) && (len >= 0), "Index and length must be non-negative!");        
-            Contract.Assert(src.Length - srcIndex >= len, "not enough bytes in src");
-            // If dest has 0 elements, the fixed statement will throw an 
-            // IndexOutOfRangeException.  Special-case 0-byte copies.
-            if (len==0)
-                return;
-            fixed(byte* pSrc = src) {
-                Memcpy(pDest + destIndex, pSrc + srcIndex, len);
-            }
-        }
-
-        internal unsafe static void Memcpy(byte[] dest, int destIndex, byte* src, int srcIndex, int len) {
-            Contract.Assert( (srcIndex >= 0) && (destIndex >= 0) && (len >= 0), "Index and length must be non-negative!");
-            Contract.Assert(dest.Length - destIndex >= len, "not enough bytes in dest");
-            // If dest has 0 elements, the fixed statement will throw an 
-            // IndexOutOfRangeException.  Special-case 0-byte copies.
-            if (len==0)
-                return;
-            fixed(byte* pDest = dest) {
-                Memcpy(pDest + destIndex, src + srcIndex, len);
-            }
-        }
-
-               internal static unsafe void memcpy4 (byte *dest, byte *src, int size) {
-                       /*while (size >= 32) {
-                               // using long is better than int and slower than double
-                               // FIXME: enable this only on correct alignment or on platforms
-                               // that can tolerate unaligned reads/writes of doubles
-                               ((double*)dest) [0] = ((double*)src) [0];
-                               ((double*)dest) [1] = ((double*)src) [1];
-                               ((double*)dest) [2] = ((double*)src) [2];
-                               ((double*)dest) [3] = ((double*)src) [3];
-                               dest += 32;
-                               src += 32;
-                               size -= 32;
-                       }*/
-                       while (size >= 16) {
-                               ((int*)dest) [0] = ((int*)src) [0];
-                               ((int*)dest) [1] = ((int*)src) [1];
-                               ((int*)dest) [2] = ((int*)src) [2];
-                               ((int*)dest) [3] = ((int*)src) [3];
-                               dest += 16;
-                               src += 16;
-                               size -= 16;
-                       }
-                       while (size >= 4) {
-                               ((int*)dest) [0] = ((int*)src) [0];
-                               dest += 4;
-                               src += 4;
-                               size -= 4;
-                       }
-                       while (size > 0) {
-                               ((byte*)dest) [0] = ((byte*)src) [0];
-                               dest += 1;
-                               src += 1;
-                               --size;
-                       }
-               }
-               internal static unsafe void memcpy2 (byte *dest, byte *src, int size) {
-                       while (size >= 8) {
-                               ((short*)dest) [0] = ((short*)src) [0];
-                               ((short*)dest) [1] = ((short*)src) [1];
-                               ((short*)dest) [2] = ((short*)src) [2];
-                               ((short*)dest) [3] = ((short*)src) [3];
-                               dest += 8;
-                               src += 8;
-                               size -= 8;
-                       }
-                       while (size >= 2) {
-                               ((short*)dest) [0] = ((short*)src) [0];
-                               dest += 2;
-                               src += 2;
-                               size -= 2;
-                       }
-                       if (size > 0)
-                               ((byte*)dest) [0] = ((byte*)src) [0];
-               }
-               static unsafe void memcpy1 (byte *dest, byte *src, int size) {
-                       while (size >= 8) {
-                               ((byte*)dest) [0] = ((byte*)src) [0];
-                               ((byte*)dest) [1] = ((byte*)src) [1];
-                               ((byte*)dest) [2] = ((byte*)src) [2];
-                               ((byte*)dest) [3] = ((byte*)src) [3];
-                               ((byte*)dest) [4] = ((byte*)src) [4];
-                               ((byte*)dest) [5] = ((byte*)src) [5];
-                               ((byte*)dest) [6] = ((byte*)src) [6];
-                               ((byte*)dest) [7] = ((byte*)src) [7];
-                               dest += 8;
-                               src += 8;
-                               size -= 8;
-                       }
-                       while (size >= 2) {
-                               ((byte*)dest) [0] = ((byte*)src) [0];
-                               ((byte*)dest) [1] = ((byte*)src) [1];
-                               dest += 2;
-                               src += 2;
-                               size -= 2;
-                       }
-                       if (size > 0)
-                               ((byte*)dest) [0] = ((byte*)src) [0];
-               }
-
-               internal static unsafe void Memcpy (byte *dest, byte *src, int size) {
-                       // FIXME: if pointers are not aligned, try to align them
-                       // so a faster routine can be used. Handle the case where
-                       // the pointers can't be reduced to have the same alignment
-                       // (just ignore the issue on x86?)
-                       if ((((int)dest | (int)src) & 3) != 0) {
-                               if (((int)dest & 1) != 0 && ((int)src & 1) != 0 && size >= 1) {
-                                       dest [0] = src [0];
-                                       ++dest;
-                                       ++src;
-                                       --size;
-                               }
-                               if (((int)dest & 2) != 0 && ((int)src & 2) != 0 && size >= 2) {
-                                       ((short*)dest) [0] = ((short*)src) [0];
-                                       dest += 2;
-                                       src += 2;
-                                       size -= 2;
-                               }
-                               if ((((int)dest | (int)src) & 1) != 0) {
-                                       memcpy1 (dest, src, size);
-                                       return;
-                               }
-                               if ((((int)dest | (int)src) & 2) != 0) {
-                                       memcpy2 (dest, src, size);
-                                       return;
-                               }
-                       }
-                       memcpy4 (dest, src, size);
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/CLSCompliantAttribute.cs b/mcs/class/corlib/System/CLSCompliantAttribute.cs
deleted file mode 100644 (file)
index 37d317d..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.CLSCompliantAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       /// <summary>
-       ///   Used to indicate if an element of a program is CLS compliant.
-       /// </summary>
-       [AttributeUsage (AttributeTargets.All)]
-       [Serializable]
-       [ComVisible (true)]
-       public sealed class CLSCompliantAttribute : Attribute
-       {
-               bool is_compliant;
-
-               public CLSCompliantAttribute (bool isCompliant)
-               {
-                       this.is_compliant = isCompliant;
-               }
-
-               public bool IsCompliant {
-                       get {
-                               return is_compliant;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/Comparison.cs b/mcs/class/corlib/System/Comparison.cs
deleted file mode 100644 (file)
index f15ba11..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Comparison.cs
-//
-// Authors:
-//  Ben Maurer (bmaurer@ximian.com)
-//  Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2004 Novell
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System
-{
-       public delegate int Comparison <in T> (T x, T y);
-}
-
diff --git a/mcs/class/corlib/System/ConsoleCancelEventArgs.cs b/mcs/class/corlib/System/ConsoleCancelEventArgs.cs
deleted file mode 100644 (file)
index 8684879..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// System.ConsoleCancelEventArgs
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-       [Serializable]
-       public sealed class ConsoleCancelEventArgs : EventArgs {
-               bool cancel;
-               ConsoleSpecialKey specialKey;
-
-               internal ConsoleCancelEventArgs (ConsoleSpecialKey key)
-               {
-                       specialKey = key;
-               }
-
-               public bool Cancel {
-                       get { return cancel; }
-                       set { cancel = value; }
-               }
-
-               public ConsoleSpecialKey SpecialKey {
-                       get { return specialKey; }
-               }
-       }
-}
-
diff --git a/mcs/class/corlib/System/ConsoleCancelEventHandler.cs b/mcs/class/corlib/System/ConsoleCancelEventHandler.cs
deleted file mode 100644 (file)
index 027072f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// System.ConsoleCancelEventHandler
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System {
-       public delegate void ConsoleCancelEventHandler (object sender, ConsoleCancelEventArgs e);
-}
-
diff --git a/mcs/class/corlib/System/ConsoleColor.cs b/mcs/class/corlib/System/ConsoleColor.cs
deleted file mode 100644 (file)
index e148296..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// System.ConsoleColor
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System {
-       [Serializable]
-       public enum ConsoleColor {
-               Black,
-               DarkBlue,
-               DarkGreen,
-               DarkCyan,
-               DarkRed,
-               DarkMagenta,
-               DarkYellow,
-               Gray,
-               DarkGray,
-               Blue,
-               Green,
-               Cyan,
-               Red,
-               Magenta,
-               Yellow,
-               White
-       }
-}
-
diff --git a/mcs/class/corlib/System/ConsoleKey.cs b/mcs/class/corlib/System/ConsoleKey.cs
deleted file mode 100644 (file)
index 78660b5..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// System.ConsoleKey
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System {
-
-       [Serializable]
-       public enum ConsoleKey {
-               Backspace = 8,
-               Tab = 9,
-               Clear = 12,
-               Enter = 13,
-               Pause = 19,
-               Escape = 27,
-               Spacebar = 32,
-               PageUp = 33,
-               PageDown = 34,
-               End = 35,
-               Home = 36,
-               LeftArrow = 37,
-               UpArrow = 38,
-               RightArrow = 39,
-               DownArrow = 40,
-               Select = 41,
-               Print = 42,
-               Execute = 43,
-               PrintScreen = 44,
-               Insert = 45,
-               Delete = 46,
-               Help = 47,
-               D0 = 48,
-               D1 = 49,
-               D2 = 50,
-               D3 = 51,
-               D4 = 52,
-               D5 = 53,
-               D6 = 54,
-               D7 = 55,
-               D8 = 56,
-               D9 = 57,
-               A = 65,
-               B = 66,
-               C = 67,
-               D = 68,
-               E = 69,
-               F = 70,
-               G = 71,
-               H = 72,
-               I = 73,
-               J = 74,
-               K = 75,
-               L = 76,
-               M = 77,
-               N = 78,
-               O = 79,
-               P = 80,
-               Q = 81,
-               R = 82,
-               S = 83,
-               T = 84,
-               U = 85,
-               V = 86,
-               W = 87,
-               X = 88,
-               Y = 89,
-               Z = 90,
-               LeftWindows = 91,
-               RightWindows = 92,
-               Applications = 93,
-               Sleep = 95,
-               NumPad0 = 96,
-               NumPad1 = 97,
-               NumPad2 = 98,
-               NumPad3 = 99,
-               NumPad4 = 100,
-               NumPad5 = 101,
-               NumPad6 = 102,
-               NumPad7 = 103,
-               NumPad8 = 104,
-               NumPad9 = 105,
-               Multiply = 106,
-               Add = 107,
-               Separator = 108,
-               Subtract = 109,
-               Decimal = 110,
-               Divide = 111,
-               F1 = 112,
-               F2 = 113,
-               F3 = 114,
-               F4 = 115,
-               F5 = 116,
-               F6 = 117,
-               F7 = 118,
-               F8 = 119,
-               F9 = 120,
-               F10 = 121,
-               F11 = 122,
-               F12 = 123,
-               F13 = 124,
-               F14 = 125,
-               F15 = 126,
-               F16 = 127,
-               F17 = 128,
-               F18 = 129,
-               F19 = 130,
-               F20 = 131,
-               F21 = 132,
-               F22 = 133,
-               F23 = 134,
-               F24 = 135,
-               BrowserBack = 166,
-               BrowserForward = 167,
-               BrowserRefresh = 168,
-               BrowserStop = 169,
-               BrowserSearch = 170,
-               BrowserFavorites = 171,
-               BrowserHome = 172,
-               VolumeMute = 173,
-               VolumeDown = 174,
-               VolumeUp = 175,
-               MediaNext = 176,
-               MediaPrevious = 177,
-               MediaStop = 178,
-               MediaPlay = 179,
-               LaunchMail = 180,
-               LaunchMediaSelect = 181,
-               LaunchApp1 = 182,
-               LaunchApp2 = 183,
-               Oem1 = 186,
-               OemPlus = 187,
-               OemComma = 188,
-               OemMinus = 189,
-               OemPeriod = 190,
-               Oem2 = 191,
-               Oem3 = 192,
-               Oem4 = 219,
-               Oem5 = 220,
-               Oem6 = 221,
-               Oem7 = 222,
-               Oem8 = 223,
-               Oem102 = 226,
-               Process = 229,
-               Packet = 231,
-               Attention = 246,
-               CrSel = 247,
-               ExSel = 248,
-               EraseEndOfFile = 249,
-               Play = 250,
-               Zoom = 251,
-               NoName = 252,
-               Pa1 = 253,
-               OemClear = 254,
-       }
-}
-
diff --git a/mcs/class/corlib/System/ConsoleKeyInfo.cs b/mcs/class/corlib/System/ConsoleKeyInfo.cs
deleted file mode 100644 (file)
index 961cb94..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-//
-// System.ConsoleKeyInfo.cs
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System {
-       [Serializable]
-       public struct ConsoleKeyInfo {
-               internal static ConsoleKeyInfo Empty = new ConsoleKeyInfo ('\0', 0, false, false, false);
-               ConsoleKey _key;
-               char _keyChar;
-               ConsoleModifiers _mods;
-
-               public ConsoleKeyInfo (char keyChar, ConsoleKey key, bool shift, bool alt, bool control)
-               {
-                       _key = key;
-                       _keyChar = keyChar;
-                       _mods = 0;
-                       SetModifiers (shift, alt, control);
-               }
-
-               internal ConsoleKeyInfo (ConsoleKeyInfo other)
-               {
-                       _key = other._key;
-                       _keyChar = other._keyChar;
-                       _mods = other._mods;
-               }
-
-               internal void SetKey (ConsoleKey key)
-               {
-                       _key = key;
-               }
-
-               internal void SetKeyChar (char keyChar)
-               {
-                       _keyChar = keyChar;
-               }
-
-               internal void SetModifiers (bool shift, bool alt, bool control)
-               {
-                       _mods = (shift) ? ConsoleModifiers.Shift : 0;
-                       _mods |= (alt) ? ConsoleModifiers.Alt : 0;
-                       _mods |= (control) ? ConsoleModifiers.Control : 0;
-               }
-
-               public ConsoleKey Key 
-               {
-                       get { return _key; }
-               }
-
-               public char KeyChar 
-               {
-                       get { return _keyChar; }
-               }
-
-               public ConsoleModifiers Modifiers 
-               {
-                       get { return _mods; }
-               }
-
-               public override bool Equals (object value)
-               {
-                       if (!(value is ConsoleKeyInfo))
-                               return false;
-
-                       return Equals ((ConsoleKeyInfo) value);
-               }
-
-               public static bool operator == (ConsoleKeyInfo a, ConsoleKeyInfo b)
-               {
-                       return a.Equals (b);
-               }
-
-               public static bool operator != (ConsoleKeyInfo a, ConsoleKeyInfo b)
-               {
-                       return !a.Equals (b);
-               }
-
-               public bool Equals (ConsoleKeyInfo obj)
-               {
-                       return _key == obj._key && _keyChar == obj._keyChar && _mods == obj._mods;
-               }
-
-               public override int GetHashCode ()
-               {
-                       return _key.GetHashCode () ^ _keyChar.GetHashCode () ^ _mods.GetHashCode ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/ConsoleModifiers.cs b/mcs/class/corlib/System/ConsoleModifiers.cs
deleted file mode 100644 (file)
index da71626..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// System.ConsoleModifiers
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System {
-       [Flags]
-       [Serializable]
-       public enum ConsoleModifiers {
-               Alt = 1,
-               Shift = 2,
-               Control = 4
-       }
-}
-
diff --git a/mcs/class/corlib/System/ConsoleSpecialKey.cs b/mcs/class/corlib/System/ConsoleSpecialKey.cs
deleted file mode 100644 (file)
index 2d08ba4..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// System.ConsoleSpecialKey
-//
-// Authors:
-//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-namespace System {
-       [Serializable]
-       public enum ConsoleSpecialKey {
-               ControlC,
-               ControlBreak
-       }
-}
-
-
diff --git a/mcs/class/corlib/System/ContextBoundObject.cs b/mcs/class/corlib/System/ContextBoundObject.cs
deleted file mode 100644 (file)
index ca954d6..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.ContextBoundObject.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [Serializable]
-       [ComVisible (true)]
-       public abstract class ContextBoundObject : MarshalByRefObject
-       {
-               protected ContextBoundObject ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/ContextStaticAttribute.cs b/mcs/class/corlib/System/ContextStaticAttribute.cs
deleted file mode 100644 (file)
index 9593d24..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.ContextStaticAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       /// <summary>
-       ///   The ContextStatic attribute is used to flag fields as being unique
-       /// </summary>
-       [AttributeUsage (AttributeTargets.Field, Inherited=false)]
-       [Serializable]
-       [ComVisible (true)]
-       public class ContextStaticAttribute : Attribute
-       {
-               public ContextStaticAttribute ()
-                       : base ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/Converter.cs b/mcs/class/corlib/System/Converter.cs
deleted file mode 100644 (file)
index 07e5618..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Converter.cs
-//
-// Authors:
-//  Ben Maurer (bmaurer@ximian.com)
-//  Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2004 Novell
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System
-{
-       public delegate TOutput Converter <in TInput, out TOutput> (TInput input);
-}
index bd2835cae43bc124ccb96b0da0e6b15d05529a8b..c2f92a7f73b7a3abfd16bf12c62bd8bdca95375d 100644 (file)
@@ -123,9 +123,6 @@ namespace System
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                internal static extern Delegate CreateDelegate_internal (Type type, object target, MethodInfo info, bool throwOnBindFailure);
 
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal extern void SetMulticastInvoke ();
-
                private static bool arg_type_match (Type delArgType, Type argType) {
                        bool match = delArgType == argType;
 
@@ -186,11 +183,12 @@ namespace System
 
                        MethodInfo invoke = type.GetMethod ("Invoke");
 
-                       if (!return_type_match (invoke.ReturnType, method.ReturnType))
+                       if (!return_type_match (invoke.ReturnType, method.ReturnType)) {
                                if (throwOnBindFailure)
                                        throw new ArgumentException ("method return type is incompatible");
                                else
                                        return null;
+                       }
 
                        ParameterInfo[] delargs = invoke.GetParametersInternal ();
                        ParameterInfo[] args = method.GetParametersInternal ();
@@ -224,11 +222,12 @@ namespace System
                                                argLengthMatch = args.Length == delargs.Length + 1;
                                }
                        }
-                       if (!argLengthMatch)
+                       if (!argLengthMatch) {
                                if (throwOnBindFailure)
                                        throw new ArgumentException ("method argument length mismatch");
                                else
                                        return null;
+                       }
 
                        bool argsMatch;
                        DelegateData delegate_data = new DelegateData ();
@@ -274,11 +273,12 @@ namespace System
                                }
                        }
 
-                       if (!argsMatch)
+                       if (!argsMatch) {
                                if (throwOnBindFailure)
                                        throw new ArgumentException ("method arguments are incompatible");
                                else
                                        return null;
+                       }
 
                        Delegate d = CreateDelegate_internal (type, target, method, throwOnBindFailure);
                        if (d != null)
@@ -614,5 +614,9 @@ namespace System
                {
                        return CreateDelegate_internal (type, firstArgument, method, true);
                }
+
+               /* Internal call largely inspired from MS Delegate.InternalAllocLike */
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               internal extern static MulticastDelegate AllocDelegateLike_internal (Delegate d);
        }
 }
index ddbd37a5e27b405a9485c8495f309cbec47840cd..087b3258da75058c2da52ccb6e8a18b124fce398 100644 (file)
@@ -57,7 +57,7 @@ namespace System {
                 * of icalls, do not require an increment.
                 */
 #pragma warning disable 169
-               private const int mono_corlib_version = 125;
+               private const int mono_corlib_version = 132;
 #pragma warning restore 169
 
                [ComVisible (true)]
diff --git a/mcs/class/corlib/System/EventArgs.cs b/mcs/class/corlib/System/EventArgs.cs
deleted file mode 100644 (file)
index 6d903ec..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.EventArgs.cs 
-//
-// Author:
-//   Michael Lambert (michaellambert@email.com)
-//
-// (C) 2001 Michael Lambert, All Rights Reserved
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [Serializable]
-       [ComVisible (true)]
-       public class EventArgs
-       {
-               public static readonly EventArgs Empty = new EventArgs ();
-
-               public EventArgs ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/EventHandler.cs b/mcs/class/corlib/System/EventHandler.cs
deleted file mode 100644 (file)
index 4d67067..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// System.EventHandler.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Marek Safar (marek.safar@gmail.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       [Serializable]
-       public delegate void EventHandler<TEventArgs> (object sender, TEventArgs e)
-       ;
-
-       [Serializable]
-       [System.Runtime.InteropServices.ComVisible (true)]
-       public delegate void EventHandler (object sender, EventArgs e);
-}
index 23e4469433b04aade86e7e1e090c3dd105fd147f..e9adda3a1be581bcbf5693cc2e50fe8c448e53b8 100644 (file)
@@ -57,7 +57,7 @@ namespace System
                   (vtable/MRGCTX) of the frames. */
                IntPtr [] trace_ips;
                Exception inner_exception;
-               internal string message;
+               internal string _message;
                string help_link;
                string class_name;
                string stack_trace;
@@ -80,7 +80,7 @@ namespace System
 
                public Exception (string message)
                {
-                       this.message = message;
+                       this._message = message;
                }
 
                protected Exception (SerializationInfo info, StreamingContext context)
@@ -89,7 +89,7 @@ namespace System
                                throw new ArgumentNullException ("info");
 
                        class_name          = info.GetString ("ClassName");
-                       message             = info.GetString ("Message");
+                       _message             = info.GetString ("Message");
                        help_link           = info.GetString ("HelpURL");
                        stack_trace         = info.GetString ("StackTraceString");
                        _remoteStackTraceString  = info.GetString ("RemoteStackTraceString");
@@ -108,7 +108,7 @@ namespace System
                public Exception (string message, Exception innerException)
                {
                        inner_exception = innerException;
-                       this.message = message;
+                       this._message = message;
                }
 
                public Exception InnerException {
@@ -132,7 +132,7 @@ namespace System
 
                internal void SetMessage (string s)
                {
-                       message = s;
+                       _message = s;
                }
 
                internal void SetStackTrace (string s)
@@ -150,11 +150,11 @@ namespace System
 
                public virtual string Message {
                        get {
-                               if (message == null)
-                                       message = string.Format (Locale.GetText ("Exception of type '{0}' was thrown."),
+                               if (_message == null)
+                                       _message = string.Format (Locale.GetText ("Exception of type '{0}' was thrown."),
                                                ClassName);
 
-                               return message;
+                               return _message;
                        }
                }
                
@@ -190,41 +190,6 @@ namespace System
                        }
                }
 
-               bool AddFrames (StringBuilder sb, string newline, string unknown, StackTrace st)
-               {
-                       int i;
-                       for (i = 0; i < st.FrameCount; i++) {
-                               StackFrame frame = st.GetFrame (i);
-                               if (i == 0)
-                                       sb.AppendFormat ("  {0} ", Locale.GetText ("at"));
-                               else
-                                       sb.Append (newline);
-
-                               if (frame.GetMethod () == null) {
-                                       string internal_name = frame.GetInternalMethodName ();
-                                       if (internal_name != null)
-                                               sb.Append (internal_name);
-                                       else
-                                               sb.AppendFormat ("<0x{0:x5} + 0x{1:x5}> {2}", frame.GetMethodAddress (), frame.GetNativeOffset (), unknown);
-                               } else {
-                                       GetFullNameForStackTrace (sb, frame.GetMethod ());
-
-                                       if (frame.GetILOffset () == -1) {
-                                               sb.AppendFormat (" <0x{0:x5} + 0x{1:x5}> ", frame.GetMethodAddress (), frame.GetNativeOffset ());
-                                               if (frame.GetMethodIndex () != 0xffffff)
-                                                       sb.AppendFormat ("{0} ", frame.GetMethodIndex ());
-                                       } else {
-                                               sb.AppendFormat (" [0x{0:x5}] ", frame.GetILOffset ());
-                                       }
-
-                                       sb.AppendFormat ("in {0}:{1} ", frame.GetSecureFileName (),
-                                                                        frame.GetFileLineNumber ());
-                               }
-                       }
-
-                       return i != 0;
-               }
-
                public virtual string StackTrace {
                        get {
                                if (stack_trace != null)
@@ -236,13 +201,10 @@ namespace System
 
                                StringBuilder sb = new StringBuilder ();
 
-                               string newline = String.Format ("{0}  {1} ", Environment.NewLine, Locale.GetText ("at"));
-                               string unknown = Locale.GetText ("<unknown method>");
-
                                // Add traces captured using ExceptionDispatchInfo
                                if (captured_traces != null) {
                                        foreach (var t in captured_traces) {
-                                               if (!AddFrames (sb, newline, unknown, t))
+                                               if (!t.AddFrames (sb, true))
                                                        continue;
 
                                                sb.Append (Environment.NewLine);
@@ -252,7 +214,7 @@ namespace System
                                }
 
                                StackTrace st = new StackTrace (this, 0, true, true);
-                               AddFrames (sb, newline, unknown, st);
+                               st.AddFrames (sb, true);
 
                                stack_trace = sb.ToString ();
 
@@ -302,7 +264,7 @@ namespace System
                                throw new ArgumentNullException ("info");
 
                        info.AddValue ("ClassName", ClassName);
-                       info.AddValue ("Message", message);
+                       info.AddValue ("Message", _message);
                        info.AddValue ("InnerException", inner_exception);
                        info.AddValue ("HelpURL", help_link);
                        info.AddValue ("StackTraceString", StackTrace);
@@ -349,71 +311,10 @@ namespace System
                        return this;
                }
 
-               internal static void GetFullNameForStackTrace (StringBuilder sb, MethodBase mi)
-               {
-                       var declaringType = mi.DeclaringType;
-                       if (declaringType.IsGenericType && !declaringType.IsGenericTypeDefinition)
-                               declaringType = declaringType.GetGenericTypeDefinition ();
-
-                       // Get generic definition
-                       var bindingflags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
-                       foreach (var m in declaringType.GetMethods (bindingflags)) {
-                               if (m.MetadataToken == mi.MetadataToken) {
-                                       mi = m;
-                                       break;
-                               }
-                       }
-
-                       sb.Append (declaringType.ToString ());
-
-                       sb.Append (".");
-                       sb.Append (mi.Name);
-
-                       if (mi.IsGenericMethod) {
-                               Type[] gen_params = mi.GetGenericArguments ();
-                               sb.Append ("[");
-                               for (int j = 0; j < gen_params.Length; j++) {
-                                       if (j > 0)
-                                               sb.Append (",");
-                                       sb.Append (gen_params [j].Name);
-                               }
-                               sb.Append ("]");
-                       }
-
-                       ParameterInfo[] p = mi.GetParametersInternal ();
-
-                       sb.Append (" (");
-                       for (int i = 0; i < p.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append (", ");
-
-                               Type pt = p[i].ParameterType;
-                               if (pt.IsGenericType && ! pt.IsGenericTypeDefinition)
-                                       pt = pt.GetGenericTypeDefinition ();
-
-                               if (pt.IsClass && !String.IsNullOrEmpty (pt.Namespace)) {
-                                       sb.Append (pt.Namespace);
-                                       sb.Append (".");
-                               }
-                               sb.Append (pt.Name);
-                               if (p [i].Name != null) {
-                                       sb.Append (" ");
-                                       sb.Append (p [i].Name);
-                               }
-                       }
-                       sb.Append (")");
-               }
-
                // For ExceptionDispatchInfo
                internal void RestoreExceptionDispatchInfo (System.Runtime.ExceptionServices.ExceptionDispatchInfo exceptionDispatchInfo)
                {
-                       if (captured_traces != null) {
-                               Array.Resize (ref captured_traces, captured_traces.Length + 1);
-                       } else {
-                               captured_traces = new StackTrace [1];
-                       }
-                       captured_traces [captured_traces.Length - 1] = new StackTrace (this, 0, true, true);
-
+                       captured_traces = (StackTrace[]) exceptionDispatchInfo.BinaryStackTraceArray;
                        trace_ips = null;
                }
 
diff --git a/mcs/class/corlib/System/FlagsAttribute.cs b/mcs/class/corlib/System/FlagsAttribute.cs
deleted file mode 100644 (file)
index cab0eec..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// System.FlagsAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-       /// <summary>
-       ///   The FlagsAttribute tags enumerations as bitfields.
-       /// </summary>
-       ///
-       /// <remarks>
-       ///   The FlagsAttribute can be used to tag an enumeration to be 
-       ///   a bit field.  This will allow the compiler and visual tools
-       ///   to treat the bits in an enumeration as a set of flags.
-       /// </remarks>
-
-       [AttributeUsage (AttributeTargets.Enum, Inherited=false)]
-       [Serializable]
-       [ComVisible (true)]
-       public class FlagsAttribute : Attribute {
-
-               // No methods.
-               
-       }
-}
diff --git a/mcs/class/corlib/System/Funcs.cs b/mcs/class/corlib/System/Funcs.cs
deleted file mode 100644 (file)
index df011e8..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// System.Func.cs
-//
-// Authors:
-//      Alejandro Serrano "Serras" (trupill@yahoo.es)
-//     Marek Safar (marek.safar@gmail.com)
-//
-
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR TArg PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-//
-
-using System.Runtime.CompilerServices;
-
-namespace System {
-
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate TResult Func<out TResult> ();
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate TResult Func<in T, out TResult> (T arg);
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate TResult Func<in T1, in T2, out TResult> (T1 arg1, T2 arg2);
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate TResult Func<in T1, in T2, in T3, out TResult> (T1 arg1, T2 arg2, T3 arg3);
-       
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public delegate TResult Func<in T1, in T2, in T3, in T4, out TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4);
-       
-       public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, out TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
-       public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, out TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
-       public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, out TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
-       public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, out TResult> (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
-}
index be979f692bf9d38a039227eb50e0b48c3363f8f0..753855f7a7775786c377950c9b6d17fa8b8d4e31 100644 (file)
@@ -30,7 +30,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if !MONOTOUCH
+#if !(MONOTOUCH && FULL_AOT_RUNTIME)
 
 using System.Security.Cryptography;
 
diff --git a/mcs/class/corlib/System/IAppDomainSetup.cs b/mcs/class/corlib/System/IAppDomainSetup.cs
deleted file mode 100644 (file)
index c4e6a7a..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// System.IAppDomainSetup.cs
-//
-// Author:
-//   Dietmar Maurer (dietmar@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System {
-
-       [InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-       [Guid ("27FFF232-A7A8-40DD-8D4A-734AD59FCD41")]
-       [ComVisible(true)]
-       public interface IAppDomainSetup {
-
-               string ApplicationBase { get; set; }
-
-               string ApplicationName { get; set; }
-
-               string CachePath { get; set; }
-
-               string ConfigurationFile { get; set; }
-
-               string DynamicBase { get; set; }
-
-               string LicenseFile { get; set; }
-
-               string PrivateBinPath { get; set; }
-
-               string PrivateBinPathProbe { get; set; }
-
-               string ShadowCopyDirectories { get; set; }
-
-               string ShadowCopyFiles { get; set; }
-       }
-}
diff --git a/mcs/class/corlib/System/IApplicationDescription.cs b/mcs/class/corlib/System/IApplicationDescription.cs
deleted file mode 100644 (file)
index 95f2967..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// System.IApplicationDescription interface
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       public interface IApplicationDescription : ICloneable {
-
-               string ApplicationCodeBase {
-                       get;
-               }
-
-               string ApplicationManifest {
-                       get;
-               }
-
-               string ApplicationManifestPath {
-                       get;
-               }
-
-               string DeploymentCodeBase {
-                       get;
-               }
-
-               string DeploymentManifest {
-                       get;
-               }
-
-               string DeploymentManifestPath {
-                       get;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/IAsyncResult.cs b/mcs/class/corlib/System/IAsyncResult.cs
deleted file mode 100644 (file)
index 94062b8..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-//------------------------------------------------------------------------------
-// 
-// System.IAsyncResult.cs 
-//
-// Copyright (C) 2001 Michael Lambert, All Rights Reserved
-// 
-// Author:         Michael Lambert, michaellambert@email.com
-// Created:        Mon 08/24/2001 
-//
-//------------------------------------------------------------------------------
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Threading;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-namespace System {
-
-       [ComVisible(true)]
-       public interface IAsyncResult
-       {
-               object AsyncState
-               {
-                       get;
-               }
-
-               WaitHandle AsyncWaitHandle
-               {
-                       get;
-               }
-
-               bool CompletedSynchronously
-               {
-                       get;
-               }
-
-               bool IsCompleted
-               {
-                       get;
-               }
-       }
-       
-} // Namespace System
-
-
diff --git a/mcs/class/corlib/System/ICloneable.cs b/mcs/class/corlib/System/ICloneable.cs
deleted file mode 100644 (file)
index 931f534..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.ICloneable.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-       [ComVisible(true)]
-#if INSIDE_CORLIB
-       public
-#else
-       internal
-#endif
-       interface ICloneable {
-               object Clone ();
-       }
-}
diff --git a/mcs/class/corlib/System/IComparable.cs b/mcs/class/corlib/System/IComparable.cs
deleted file mode 100644 (file)
index c533002..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// System.IComparable.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//   Marek Safar (marek.safar@gmail.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-       [ComVisible(true)]
-       public interface IComparable {
-               int CompareTo (object obj);
-       }
-       
-       public interface IComparable <in T> {
-               int CompareTo (T other);
-       }
-}
diff --git a/mcs/class/corlib/System/IConvertible.cs b/mcs/class/corlib/System/IConvertible.cs
deleted file mode 100644 (file)
index 3816252..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// System.IConvertible.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-//
-// Functions Implementing this interface should check out 
-// System.Convert. Most of these methods are implemented 
-// there for all these data types.
-//
-// System.Convert has ToType helper method for the object 
-// ToType (Type conversionType, IFormatProvider provider)
-// method. In most cases you can specify your ToType function
-// as calling 
-//
-// public Type value; // value of this data type
-// public object ToType(Type conversionType, IFormatProvider provider) {
-//    Convert.ToType (value, conversionType, provider);
-// } 
-// 
-// Which is just a wrapper for your ToType methods.
-//
-// See http://lists.ximian.com/archives/public/mono-list/2001-July/000525.html
-// for more discussion on the topic
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-    [ComVisible(true)]
-    [CLSCompliant(false)]
-    public interface IConvertible {
-       
-       TypeCode GetTypeCode ();
-       
-       bool     ToBoolean  (IFormatProvider provider);
-       byte     ToByte     (IFormatProvider provider);
-       char     ToChar     (IFormatProvider provider);
-       DateTime ToDateTime (IFormatProvider provider);
-       decimal  ToDecimal  (IFormatProvider provider);
-       double   ToDouble   (IFormatProvider provider);
-       short    ToInt16    (IFormatProvider provider);
-       int      ToInt32    (IFormatProvider provider);
-       long     ToInt64    (IFormatProvider provider);
-       sbyte    ToSByte    (IFormatProvider provider);
-       float    ToSingle   (IFormatProvider provider);
-       string   ToString   (IFormatProvider provider);
-       object   ToType     (Type conversionType, IFormatProvider provider);
-       ushort   ToUInt16   (IFormatProvider provider);
-       uint     ToUInt32   (IFormatProvider provider);
-       ulong    ToUInt64   (IFormatProvider provider);
-    }
-}
diff --git a/mcs/class/corlib/System/ICustomFormatter.cs b/mcs/class/corlib/System/ICustomFormatter.cs
deleted file mode 100644 (file)
index 876c5ce..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.ICustomFormatter.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-        [ComVisible(true)]
-       public interface ICustomFormatter {
-               string Format (string format, object arg, IFormatProvider formatProvider);
-       }
-}
diff --git a/mcs/class/corlib/System/IDisposable.cs b/mcs/class/corlib/System/IDisposable.cs
deleted file mode 100644 (file)
index 9c1859a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// System.IDisposable.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-        [ComVisible(true)]
-       public interface IDisposable {
-
-               void Dispose ();
-               
-       }
-}
diff --git a/mcs/class/corlib/System/IEquatable.cs b/mcs/class/corlib/System/IEquatable.cs
deleted file mode 100644 (file)
index c4092d9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// System.IEquatable.cs
-//
-// Author:
-//   Ben Maurer <bmaurer@novell.com>
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-       public interface IEquatable <T> {
-               bool Equals (T other);
-       }
-}
diff --git a/mcs/class/corlib/System/IFormatProvider.cs b/mcs/class/corlib/System/IFormatProvider.cs
deleted file mode 100644 (file)
index 26afc9e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.IFormatProvider.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-        [ComVisible(true)]
-       public interface IFormatProvider {
-               object GetFormat (Type formatType);
-       }
-}
diff --git a/mcs/class/corlib/System/IFormattable.cs b/mcs/class/corlib/System/IFormattable.cs
deleted file mode 100644 (file)
index 30a8670..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// System.IFormattable.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System {
-
-        [ComVisible(true)]
-       public interface IFormattable {
-               string ToString (string format, IFormatProvider formatProvider);
-       }
-}
diff --git a/mcs/class/corlib/System/IHostContext.cs b/mcs/class/corlib/System/IHostContext.cs
deleted file mode 100644 (file)
index 841fa08..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// System.IHostContext interface
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-
-       public interface IHostContext {
-
-               bool AssumeTrust {
-                       get;
-               }
-
-               bool ExclusiveGrant {
-                       get;
-               }
-
-               bool IsFirstTimeInstall {
-                       get;
-               }
-
-               bool NoPrompt {
-                       get;
-               }
-
-               bool Persist {
-                       get;
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/IObservable.cs b/mcs/class/corlib/System/IObservable.cs
deleted file mode 100644 (file)
index 5274dbb..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IObservable.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System
-{
-       public interface IObservable<out T>
-       {
-               IDisposable Subscribe (IObserver<T> observer);
-       }
-}
-
diff --git a/mcs/class/corlib/System/IObserver.cs b/mcs/class/corlib/System/IObserver.cs
deleted file mode 100644 (file)
index f6aaf6b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// IObserver.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System
-{
-       public interface IObserver<in T>
-       {
-               void OnCompleted ();
-               void OnError (Exception error);
-               void OnNext(T value);
-       }
-}
-
diff --git a/mcs/class/corlib/System/IProgress.cs b/mcs/class/corlib/System/IProgress.cs
deleted file mode 100644 (file)
index 690f62d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IProgress.cs
-//
-// Authors:
-//     Marek Safar  <marek.safar@gmail.com>
-//
-// Copyright (C) 2011 Xamarin, Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-namespace System
-{
-       public interface IProgress<in T>
-       {
-               void Report (T value);
-       }
-}
-
diff --git a/mcs/class/corlib/System/IServiceProvider.cs b/mcs/class/corlib/System/IServiceProvider.cs
deleted file mode 100644 (file)
index d9d0faa..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// System.IServiceProvider.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       public interface IServiceProvider
-       {
-               object GetService (Type serviceType);
-       }
-}
diff --git a/mcs/class/corlib/System/InvalidTimeZoneException.cs b/mcs/class/corlib/System/InvalidTimeZoneException.cs
deleted file mode 100644 (file)
index 27dd66a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * System.InvalidimeZoneException
- *
- * Author(s)
- *     Stephane Delcroix <stephane@delcroix.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-using System.Runtime.CompilerServices;
-
-namespace System
-{
-       [Serializable]
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public
-       class InvalidTimeZoneException : Exception
-       {
-               public InvalidTimeZoneException () : base ()
-               {}
-
-               public InvalidTimeZoneException (string message) : base (message)
-               {}
-
-               public InvalidTimeZoneException (string message, Exception innerException) : base (message, innerException)
-               {}
-
-               protected InvalidTimeZoneException (Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext context) : base (info, context)
-               {}
-       }
-}
diff --git a/mcs/class/corlib/System/LoaderOptimization.cs b/mcs/class/corlib/System/LoaderOptimization.cs
deleted file mode 100644 (file)
index 885ee07..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// System.LoaderOptimization.cs
-//
-// Author:
-//   Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [ComVisible (true)]
-       [Serializable]
-       public enum LoaderOptimization
-       {
-               NotSpecified = 0,
-               SingleDomain = 1,
-               MultiDomain = 2,
-               MultiDomainHost = 3,
-
-               [Obsolete]
-               DomainMask = 3,
-
-               [Obsolete]
-               DisallowBindings = 4
-       }
-}
diff --git a/mcs/class/corlib/System/LoaderOptimizationAttribute.cs b/mcs/class/corlib/System/LoaderOptimizationAttribute.cs
deleted file mode 100644 (file)
index c817f15..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// System.LoaderOptimizationAttribute.cs
-//
-// Author: 
-//   Duncan Mak (duncan@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [AttributeUsage (AttributeTargets.Method)]
-       [ComVisible (true)]
-       public sealed class LoaderOptimizationAttribute : Attribute
-       {
-               private LoaderOptimization lo;
-               
-               // Constructors
-               public LoaderOptimizationAttribute (byte value)
-               {
-                       lo = (LoaderOptimization) value;
-               }
-
-               public LoaderOptimizationAttribute (LoaderOptimization value)
-               {
-                       lo = value;
-               }
-
-               // Properties
-               public LoaderOptimization Value {
-                       get { return lo; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/MTAThreadAttribute.cs b/mcs/class/corlib/System/MTAThreadAttribute.cs
deleted file mode 100644 (file)
index d684ee9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.MTAThreadAttribute.cs
-//
-// Author: Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [AttributeUsage (AttributeTargets.Method)]
-       [ComVisible (true)]
-       public sealed class MTAThreadAttribute : Attribute
-       {
-               // Constructors
-               public MTAThreadAttribute () : base ()
-               {
-               }
-       }
-}
index 1a869578a1c6088679c5d428434bf0a420aacbeb..4941e7cea50f29760f44417f5a6b6d727b597524 100644 (file)
@@ -43,8 +43,7 @@ namespace System
        [StructLayout (LayoutKind.Sequential)]
        public abstract class MulticastDelegate : Delegate
        {
-               MulticastDelegate prev;
-               MulticastDelegate kpm_next;
+               Delegate[] delegates;
 
                protected MulticastDelegate (object target, string method)
                        : base (target, method)
@@ -61,13 +60,18 @@ namespace System
                        base.GetObjectData  (info, context);
                }
 
-
                protected sealed override object DynamicInvokeImpl (object[] args)
                {
-                       if (prev != null)
-                               prev.DynamicInvokeImpl (args);
-
-                       return base.DynamicInvokeImpl (args);
+                       if (delegates == null) {
+                               return base.DynamicInvokeImpl (args);
+                       } else {
+                               object r;
+                               int i = 0, len = delegates.Length;
+                               do {
+                                       r = delegates [i].DynamicInvoke (args);
+                               } while (++i < len);
+                               return r;
+                       }
                }
 
                // <remarks>
@@ -83,19 +87,21 @@ namespace System
                        if (d == null)
                                return false;
 
-                       MulticastDelegate this_prev = this.prev;
-                       MulticastDelegate obj_prev = d.prev;
+                       if (delegates == null && d.delegates == null) {
+                               return true;
+                       } else if (delegates == null ^ d.delegates == null) {
+                               return false;
+                       } else {
+                               if (delegates.Length != d.delegates.Length)
+                                       return false;
 
-                       do {
-                               if (this_prev == null)
-                                       return obj_prev == null;
+                               for (int i = 0; i < delegates.Length; ++i) {
+                                       if (!delegates [i].Equals (d.delegates [i]))
+                                               return false;
+                               }
 
-                               if (!this_prev.Compare (obj_prev))
-                                       return false;
-                               
-                               this_prev = this_prev.prev;
-                               obj_prev = obj_prev.prev;
-                       } while (true);
+                               return true;
+                       }
                }
 
                //
@@ -112,27 +118,10 @@ namespace System
                // </summary>
                public sealed override Delegate[] GetInvocationList ()
                {
-                       MulticastDelegate d;
-                       d = (MulticastDelegate) this.Clone ();
-                       for (d.kpm_next = null; d.prev != null; d = d.prev)
-                               d.prev.kpm_next = d;
-
-                       if (d.kpm_next == null) {
-                               MulticastDelegate other = (MulticastDelegate) d.Clone ();
-                               other.prev = null;
-                               other.kpm_next = null;                          
-                               return new Delegate [1] { other };
-                       }
-
-                       var list = new List<Delegate> ();
-                       for (; d != null; d = d.kpm_next) {
-                               MulticastDelegate other = (MulticastDelegate) d.Clone ();
-                               other.prev = null;
-                               other.kpm_next = null;
-                               list.Add (other);
-                       }
-
-                       return list.ToArray ();
+                       if (delegates != null)
+                               return (Delegate[]) delegates.Clone ();
+                       else
+                               return new Delegate[1] { this };
                }
 
                // <summary>
@@ -146,133 +135,118 @@ namespace System
                        if (follow == null)
                                return this;
 
-                       MulticastDelegate combined, orig, clone;
+                       MulticastDelegate other = (MulticastDelegate) follow;
 
-                       if (this.GetType() != follow.GetType ())
-                               throw new ArgumentException (Locale.GetText ("Incompatible Delegate Types. First is {0} second is {1}.", this.GetType ().FullName, follow.GetType ().FullName));
+                       MulticastDelegate ret = AllocDelegateLike_internal (this);
 
-                       combined = (MulticastDelegate)follow.Clone ();
-                       combined.SetMulticastInvoke ();
+                       if (delegates == null && other.delegates == null) {
+                               ret.delegates = new Delegate [2] { this, other };
+                       } else if (delegates == null) {
+                               ret.delegates = new Delegate [1 + other.delegates.Length];
 
-                       for (clone = combined, orig = ((MulticastDelegate)follow).prev; orig != null; orig = orig.prev) {
-                               
-                               clone.prev = (MulticastDelegate)orig.Clone ();
-                               clone = clone.prev;
-                       }
-
-                       clone.SetMulticastInvoke ();
-                       clone.prev = (MulticastDelegate)this.Clone ();
+                               ret.delegates [0] = this;
+                               Array.Copy (other.delegates, 0, ret.delegates, 1, other.delegates.Length);
+                       } else if (other.delegates == null) {
+                               ret.delegates = new Delegate [delegates.Length + 1];
 
-                       for (clone = clone.prev, orig = this.prev; orig != null; orig = orig.prev) {
+                               Array.Copy (delegates, 0, ret.delegates, 0, delegates.Length);
+                               ret.delegates [ret.delegates.Length - 1] = other;
+                       } else {
+                               ret.delegates = new Delegate [delegates.Length + other.delegates.Length];
 
-                               clone.prev = (MulticastDelegate)orig.Clone ();
-                               clone = clone.prev;
+                               Array.Copy (delegates, 0, ret.delegates, 0, delegates.Length);
+                               Array.Copy (other.delegates, 0, ret.delegates, delegates.Length, other.delegates.Length);
                        }
 
-                       return combined;
+                       return ret;
                }
 
-               private bool BaseEquals (MulticastDelegate value)
+               protected sealed override Delegate RemoveImpl (Delegate value)
                {
-                       return base.Equals (value);
-               }
+                       if (value == null)
+                               return this;
 
-               /* 
-                * Perform a slightly crippled version of
-                * Knuth-Pratt-Morris over MulticastDelegate chains.
-                * Border values are set as pointers in kpm_next;
-                * Generally, KPM border arrays are length n+1 for
-                * strings of n. This one works with length n at the
-                * expense of a few additional comparisions.
-                */
-               private static MulticastDelegate KPM (MulticastDelegate needle, MulticastDelegate haystack,
-                                                     out MulticastDelegate tail)
-               {
-                       MulticastDelegate nx, hx;
-
-                       // preprocess
-                       hx = needle;
-                       nx = needle.kpm_next = null;
-                       do {
-                               while ((nx != null) && (!nx.BaseEquals (hx)))
-                                       nx = nx.kpm_next;
-
-                               hx = hx.prev;
-                               if (hx == null)
-                                       break;
-                                       
-                               nx = nx == null ? needle : nx.prev;
-                               if (hx.BaseEquals (nx))
-                                       hx.kpm_next = nx.kpm_next;
-                               else
-                                       hx.kpm_next = nx;
-
-                       } while (true);
-
-                       // match
-                       MulticastDelegate match = haystack;
-                       nx = needle;
-                       hx = haystack;
-                       do {
-                               while (nx != null && !nx.BaseEquals (hx)) {
-                                       nx = nx.kpm_next;
-                                       match = match.prev;
+                       MulticastDelegate other = (MulticastDelegate) value;
+
+                       if (delegates == null && other.delegates == null) {
+                               /* if they are not equal and the current one is not
+                                * a multicastdelegate then we cannot delete it */
+                               return this.Equals (other) ? null : this;
+                       } else if (delegates == null) {
+                               foreach (var d in other.delegates) {
+                                       if (this.Equals (d))
+                                               return null;
+                               }
+                               return this;
+                       } else if (other.delegates == null) {
+                               int idx = Array.LastIndexOf (delegates, other);
+                               if (idx == -1)
+                                       return this;
+
+                               if (delegates.Length <= 1) {
+                                       /* delegates.Length should never be equal or
+                                        * lower than 1, it should be 2 or greater */
+                                       throw new InvalidOperationException ();
                                }
 
-                               nx = nx == null ? needle : nx.prev;
-                               if (nx == null) {
-                                       // bingo
-                                       tail = hx.prev;
-                                       return match;
+                               if (delegates.Length == 2)
+                                       return delegates [idx == 0 ? 1 : 0];
+
+                               MulticastDelegate ret = AllocDelegateLike_internal (this);
+                               ret.delegates = new Delegate [delegates.Length - 1];
+
+                               Array.Copy (delegates, ret.delegates, idx);
+                               Array.Copy (delegates, idx + 1, ret.delegates, idx, delegates.Length - idx - 1);
+
+                               return ret;
+                       } else {
+                               /* wild case : remove MulticastDelegate from MulticastDelegate
+                                * complexity is O(m * n), with n the number of elements in
+                                * this.delegates and m the number of elements in other.delegates */
+                               MulticastDelegate ret = AllocDelegateLike_internal (this);
+                               ret.delegates = new Delegate [delegates.Length];
+
+                               /* we should use a set with O(1) lookup complexity
+                                * but HashSet is implemented in System.Core.dll */
+                               List<Delegate> other_delegates = new List<Delegate> ();
+                               for (int i = 0; i < other.delegates.Length; ++i)
+                                       other_delegates.Add (other.delegates [i]);
+
+                               int idx = delegates.Length;
+
+                               /* we need to remove elements from the end to the beginning, as
+                                * the addition and removal of delegates behaves like a stack */
+                               for (int i = delegates.Length - 1; i >= 0; --i) {
+                                       /* if delegates[i] is not in other_delegates,
+                                        * then we can safely add it to ret.delegates
+                                        * otherwise we remove it from other_delegates */
+                                       if (!other_delegates.Remove (delegates [i]))
+                                               ret.delegates [--idx] = delegates [i];
                                }
 
-                               hx = hx.prev;
-                       } while (hx != null);
+                               /* the elements are at the end of the array, we
+                                * need to move them back to the beginning of it */
+                               int count = delegates.Length - idx;
+                               Array.Copy (ret.delegates, idx, ret.delegates, 0, count);
 
-                       tail = null;
-                       return null;
-               }
+                               if (count == 0)
+                                       return null;
 
-               protected sealed override Delegate RemoveImpl (Delegate value)
-               {
-                       if (value == null)
-                               return this;
+                               if (count == 1)
+                                       return ret.delegates [0];
 
-                       // match this with value
-                       MulticastDelegate head, tail;
-                       head = KPM ((MulticastDelegate)value, this, out tail);
-                       if (head == null)
-                               return this;
+                               if (count != delegates.Length)
+                                       Array.Resize (ref ret.delegates, count);
 
-                       // duplicate chain without head..tail
-                       MulticastDelegate prev = null, retval = null, orig;
-                       for (orig = this; (object)orig != (object)head; orig = orig.prev) {
-                               MulticastDelegate clone = (MulticastDelegate)orig.Clone ();
-                               if (prev != null)
-                                       prev.prev = clone;
-                               else
-                                       retval = clone;
-                               prev = clone;
+                               return ret;
                        }
-                       for (orig = tail; (object)orig != null; orig = orig.prev) {
-                               MulticastDelegate clone = (MulticastDelegate)orig.Clone ();
-                               if (prev != null)
-                                       prev.prev = clone;
-                               else
-                                       retval = clone;
-                               prev = clone;
-                       }
-                       if (prev != null)
-                               prev.prev = null;
-
-                       return retval;
                }
 
                public static bool operator == (MulticastDelegate d1, MulticastDelegate d2)
                {
                        if (d1 == null)
-                               return d2 == null;
-                               
+                               return d2 == null;
+
                        return d1.Equals (d2);
                }
                
@@ -280,7 +254,7 @@ namespace System
                {
                        if (d1 == null)
                                return d2 != null;
-                       
+
                        return !d1.Equals (d2);
                }
        }
diff --git a/mcs/class/corlib/System/NonSerializedAttribute.cs b/mcs/class/corlib/System/NonSerializedAttribute.cs
deleted file mode 100644 (file)
index e5e2eea..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// System.NonSerializedAttribute.cs
-//
-// Author:
-//   Paolo Molaro (lupus@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [ComVisible (true)]
-       [AttributeUsage (AttributeTargets.Field, Inherited=false)]
-       public sealed class NonSerializedAttribute : Attribute
-       {
-               public NonSerializedAttribute ()
-               {
-               }
-       }
-}
index 4ffabc85a30ca39319c5d8555afdc3d68c362196..ecec3b508b2c32b309de3bfa33770b20c04d9d07 100644 (file)
 using System.Runtime.InteropServices;
 using System.Text;
 namespace System {
-       class NullConsoleDriver : IConsoleDriver {
+       class NullConsoleDriver : IConsoleDriver
+       {
+               static readonly ConsoleKeyInfo EmptyConsoleKeyInfo = new ConsoleKeyInfo ('\0', 0, false, false, false);
+
                public ConsoleColor BackgroundColor {
                        get { return ConsoleColor.Black; }
                        set {
@@ -151,7 +154,7 @@ namespace System {
 
                public ConsoleKeyInfo ReadKey (bool intercept)
                {
-                       return ConsoleKeyInfo.Empty;
+                       return EmptyConsoleKeyInfo;
                }
 
                public void ResetColor ()
diff --git a/mcs/class/corlib/System/ObsoleteAttribute.cs b/mcs/class/corlib/System/ObsoleteAttribute.cs
deleted file mode 100644 (file)
index 942bbbc..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// System.ObsoleteAttribute.cs
-//
-// Author:
-//   Duncan Mak  (duncan@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct |
-               AttributeTargets.Enum | AttributeTargets.Constructor |
-               AttributeTargets.Method | AttributeTargets.Property |
-               AttributeTargets.Field | AttributeTargets.Event |
-               AttributeTargets.Interface | AttributeTargets.Delegate,
-               Inherited=false)]
-       [Serializable]
-       [ComVisible (true)]
-       public sealed class ObsoleteAttribute : Attribute
-       {
-               private string _message;
-               private bool _error;
-
-               //       Constructors
-               public ObsoleteAttribute ()
-                       : base ()
-               {
-               }
-
-               public ObsoleteAttribute (string message)
-               {
-                       _message = message;
-               }
-
-               public ObsoleteAttribute (string message, bool error)
-               {
-                       _message = message;
-                       _error = error;
-               }
-
-               // Properties
-               public string Message {
-                       get { return _message; }
-               }
-
-               public bool IsError {
-                       get { return _error; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/ParamArrayAttribute.cs b/mcs/class/corlib/System/ParamArrayAttribute.cs
deleted file mode 100644 (file)
index 4084798..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// System.ParamArrayAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       /// <summary>
-       ///   Used to flag that the method will take a variable number
-       ///   of arguments
-       /// </summary>
-       [AttributeUsage (AttributeTargets.Parameter)]
-       [ComVisible (true)]
-       public sealed class ParamArrayAttribute : Attribute
-       {
-               public ParamArrayAttribute ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/Predicate.cs b/mcs/class/corlib/System/Predicate.cs
deleted file mode 100644 (file)
index 66086b0..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// System.Predicate.cs
-//
-// Authors:
-//  Ben Maurer (bmaurer@ximian.com)
-//  Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2004 Novell
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System
-{
-       public delegate bool Predicate <in T> (T obj);
-}
-
diff --git a/mcs/class/corlib/System/STAThreadAttribute.cs b/mcs/class/corlib/System/STAThreadAttribute.cs
deleted file mode 100644 (file)
index 754ad34..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// System.STAThreadAttribute.cs
-//
-// Author:
-//   Duncan Mak (duncan@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [AttributeUsage (AttributeTargets.Method)]
-       [ComVisible (true)]
-       public sealed class STAThreadAttribute : Attribute
-       {
-               // Constructors
-               public STAThreadAttribute ()
-                       : base ()
-               {
-               }
-       }
-}
diff --git a/mcs/class/corlib/System/SerializableAttribute.cs b/mcs/class/corlib/System/SerializableAttribute.cs
deleted file mode 100644 (file)
index cfbb766..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// System.SerializableAttribute.cs
-//
-// Author:
-//   Miguel de Icaza (miguel@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       /// <summary>
-       ///   Serialization Attribute for classes. 
-       /// </summary>
-       
-       /// <remarks>
-       ///   Use SerializableAttribute to mark classes that do not implement
-       ///   the ISerializable interface but that want to be serialized.
-       ///
-       ///   Failing to do so will cause the system to throw an exception.
-       ///
-       ///   When a class is market with the SerializableAttribute, all the
-       ///   fields are automatically serialized with the exception of those
-       ///   that are tagged with the NonSerializedAttribute.
-       ///
-       ///   SerializableAttribute should only be used for classes that contain
-       ///   simple data types that can be serialized and deserialized by the
-       ///   runtime (typically you would use NonSerializedAttribute on data
-       ///   that can be reconstructed at any point: like caches or precomputed
-       ///   tables). 
-       /// </remarks>
-
-       [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct 
-               | AttributeTargets.Enum | AttributeTargets.Delegate, 
-               Inherited=false)]
-       [ComVisible (true)]
-       public sealed class SerializableAttribute : Attribute
-       {
-       }
-}
index f4b03396225bc510f824640e6c8a482d5ba2928e..6424d4fb79a74e81837f8e64d441f228384725a6 100644 (file)
@@ -229,7 +229,7 @@ namespace System {
                                length++;
 
                        byte [] result = new byte [length];
-                       Buffer.BlockCopyInternal (buffer, offset, result, 0, length);
+                       Buffer.InternalBlockCopy (buffer, offset, result, 0, length);
                        return result;
                }
 
diff --git a/mcs/class/corlib/System/ThreadStaticAttribute.cs b/mcs/class/corlib/System/ThreadStaticAttribute.cs
deleted file mode 100644 (file)
index 3c13c3d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// System.ThreadStaticAttribute.cs
-//
-// Author:
-//   Duncan Mak (duncan@ximian.com)
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [AttributeUsage (AttributeTargets.Field, Inherited=false)]
-       [Serializable]
-       [ComVisible (true)]
-       public class ThreadStaticAttribute : Attribute
-       {
-               // Constructors
-               public ThreadStaticAttribute ()
-                       : base ()
-               {
-               }
-       }
-}
index 61d088a6593af1fcf408f27cc668e0cbfa384bd3..1cfa2ee9bcc3ecc73cacc8acac49ad997e890cde 100644 (file)
@@ -73,11 +73,7 @@ namespace System
                                
                                lock (tz_lock) {
                                        if (tz == null || Math.Abs (now - timezone_check) > TimeSpan.TicksPerMinute) {
-#if MONODROID
-                                               tz = AndroidPlatform.GetCurrentSystemTimeZone ();
-                                               if (tz == null)
-#endif
-                                                       tz = new CurrentSystemTimeZone (now);
+                                               tz = new CurrentSystemTimeZone ();
                                                timezone_check = now;
 
                                                currentTimeZone = tz;
@@ -169,205 +165,50 @@ namespace System
                {
                        currentTimeZone = null;
                }
-
-               //
-               // This routine returns the TimeDiff that would have to be
-               // added to "time" to turn it into a local time.   This would
-               // be equivalent to call ToLocalTime.
-               //
-               // There is one important consideration:
-               //
-               //    This information is only valid during the minute it
-               //    was called.
-               //
-               //    This only works with a real time, not one of the boundary
-               //    cases like DateTime.MaxValue, so validation must be done
-               //    before.
-               // 
-               //    This is intended to be used by DateTime.Now
-               //
-               // We use a minute, just to be conservative and cope with
-               // any potential time zones that might be defined in the future
-               // that might not nicely fit in hour or half-hour steps. 
-               //    
-               internal TimeSpan GetLocalTimeDiff (DateTime time)
-               {
-                       return GetLocalTimeDiff (time, GetUtcOffset (time));
-               }
-
-               //
-               // This routine is intended to be called by GetLocalTimeDiff(DatetTime)
-               // or by ToLocalTime after validation has been performed
-               //
-               // time is the time to map, utc_offset is the utc_offset that
-               // has been computed for calling GetUtcOffset on time.
-               //
-               // When called by GetLocalTime, utc_offset is assumed to come
-               // from a time constructed by new DateTime (DateTime.GetNow ()), that
-               // is a valid time.
-               //
-               // When called by ToLocalTime ranges are checked before this is
-               // called.
-               //
-               internal TimeSpan GetLocalTimeDiff (DateTime time, TimeSpan utc_offset)
-               {
-                       DaylightTime dlt = GetDaylightChanges (time.Year);
-
-                       if (dlt.Delta.Ticks == 0)
-                               return utc_offset;
-
-                       DateTime local = time.Add (utc_offset);
-                       if (local < dlt.End && dlt.End.Subtract (dlt.Delta) <= local)
-                               return utc_offset;
-
-                       if (local >= dlt.Start && dlt.Start.Add (dlt.Delta) > local)
-                               return utc_offset - dlt.Delta;
-
-                       return GetUtcOffset (local);
-               }
        }
 
        [Serializable]
-       internal class CurrentSystemTimeZone : TimeZone, IDeserializationCallback {
+       internal class CurrentSystemTimeZone : TimeZone {
 
-               // Fields
-               private string m_standardName;
-               private string m_daylightName;
-
-               // A yearwise cache of DaylightTime.
-               private Dictionary<int, DaylightTime> m_CachedDaylightChanges = new Dictionary<int, DaylightTime> (1);
-
-               internal enum TimeZoneData
-               {
-                       DaylightSavingStartIdx,
-                       DaylightSavingEndIdx,
-                       UtcOffsetIdx,
-                       AdditionalDaylightOffsetIdx
-               };
-
-               internal enum TimeZoneNames
-               {
-                       StandardNameIdx,
-                       DaylightNameIdx
-               };
-
-               // Internal method to get timezone data.
-               //    data[0]:  start of daylight saving time (in DateTime ticks).
-               //    data[1]:  end of daylight saving time (in DateTime ticks).
-               //    data[2]:  utcoffset (in TimeSpan ticks).
-               //    data[3]:  additional offset when daylight saving (in TimeSpan ticks).
-               //    name[0]:  name of this timezone when not daylight saving.
-               //    name[1]:  name of this timezone when daylight saving.
-               [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private static extern bool GetTimeZoneData (int year, out Int64[] data, out string[] names);
+               readonly  TimeZoneInfo  LocalTimeZone;
 
                // Constructor
                internal CurrentSystemTimeZone ()
                {
+                       LocalTimeZone = TimeZoneInfo.Local;
                }
 
-               //
-               // Initialized by the constructor
-               //
-               static int this_year;
-               static DaylightTime this_year_dlt;
-               
-               //
-               // The "lnow" parameter must be the current time, I could have moved
-               // the code here, but I do not want to interfere with serialization
-               // which is why I kept the other constructor around
-               //
-               internal CurrentSystemTimeZone (long lnow)
-               {
-                       Int64[] data;
-                       string[] names;
-
-                       DateTime now = new DateTime (lnow);
-                       if (!GetTimeZoneData (now.Year, out data, out names))
-                               throw new NotSupportedException (Locale.GetText ("Can't get timezone name."));
-
-                       m_standardName = Locale.GetText (names[(int)TimeZoneNames.StandardNameIdx]);
-                       m_daylightName = Locale.GetText (names[(int)TimeZoneNames.DaylightNameIdx]);
-
-                       DaylightTime dlt = GetDaylightTimeFromData (data);
-                       m_CachedDaylightChanges.Add (now.Year, dlt);
-                       OnDeserialization (dlt);
-               }
-
-               // Properties
                public override string DaylightName {
-                       get { return m_daylightName; }
+                       get {
+                               return LocalTimeZone.DaylightName;
+                       }
                }
 
                public override string StandardName {
-                       get { return m_standardName; }
+                       get {
+                               return LocalTimeZone.StandardName;
+                       }
                }
 
-               // Methods
-               public override DaylightTime GetDaylightChanges (int year)
+               public override System.Globalization.DaylightTime GetDaylightChanges (int year)
                {
-                       if (year < 1 || year > 9999)
-                               throw new ArgumentOutOfRangeException ("year", year +
-                                       Locale.GetText (" is not in a range between 1 and 9999."));
-
-                       //
-                       // First we try the case for this year, very common, and is used
-                       // by DateTime.Now (a popular call) indirectly.
-                       //
-                       if (year == this_year)
-                               return this_year_dlt;
-                       
-                       lock (m_CachedDaylightChanges) {
-                               DaylightTime dlt;
-                               if (!m_CachedDaylightChanges.TryGetValue (year, out dlt)) {
-                                       Int64[] data;
-                                       string[] names;
-
-                                       if (!GetTimeZoneData (year, out data, out names))
-                                               throw new ArgumentException (Locale.GetText ("Can't get timezone data for " + year));
-
-                                       dlt = GetDaylightTimeFromData (data);
-                                       m_CachedDaylightChanges.Add (year, dlt);
-                               }
-                               return dlt;
-                       }
+                       return LocalTimeZone.GetDaylightChanges (year);
                }
 
-               public override TimeSpan GetUtcOffset (DateTime time)
+               public override TimeSpan GetUtcOffset (DateTime dateTime)
                {
-                       if (time.Kind == DateTimeKind.Utc)
+                       if (dateTime.Kind == DateTimeKind.Utc)
                                return TimeSpan.Zero;
 
-                       return TimeZoneInfo.Local.GetUtcOffset (time);
-               }
-
-               void IDeserializationCallback.OnDeserialization (object sender)
-               {
-                       OnDeserialization (null);
+                       return LocalTimeZone.GetUtcOffset (dateTime);
                }
 
-               private void OnDeserialization (DaylightTime dlt)
+               public override bool IsDaylightSavingTime (DateTime dateTime)
                {
-                       if (dlt == null) {
-                               Int64[] data;
-                               string[] names;
-
-                               this_year = DateTime.Now.Year;
-                               if (!GetTimeZoneData (this_year, out data, out names))
-                                       throw new ArgumentException (Locale.GetText ("Can't get timezone data for " + this_year));
-                               dlt = GetDaylightTimeFromData (data);
-                       } else
-                               this_year = dlt.Start.Year;
-                       
-                       this_year_dlt = dlt;
-               }
+                       if (dateTime.Kind == DateTimeKind.Utc)
+                               return false;
 
-               private DaylightTime GetDaylightTimeFromData (long[] data)
-               {
-                       return new DaylightTime (new DateTime (data[(int)TimeZoneData.DaylightSavingStartIdx]),
-                               new DateTime (data[(int)TimeZoneData.DaylightSavingEndIdx]),
-                               new TimeSpan (data[(int)TimeZoneData.AdditionalDaylightOffsetIdx]));
+                       return LocalTimeZone.IsDaylightSavingTime (dateTime);
                }
-
        }
 }
diff --git a/mcs/class/corlib/System/TimeZoneInfo.AdjustmentRule.cs b/mcs/class/corlib/System/TimeZoneInfo.AdjustmentRule.cs
deleted file mode 100644 (file)
index 3afac77..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * System.TimeZoneInfo.AdjustmentRule
- *
- * Author(s)
- *     Stephane Delcroix <stephane@delcroix.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-
-namespace System
-{
-       public
-       sealed partial class TimeZoneInfo {
-               [SerializableAttribute]
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-               public sealed class AdjustmentRule : IEquatable<TimeZoneInfo.AdjustmentRule>, ISerializable, IDeserializationCallback
-               {
-                       DateTime dateEnd;
-                       public DateTime DateEnd {
-                               get { return dateEnd; } 
-                       }
-
-                       DateTime dateStart;
-                       public DateTime DateStart {
-                               get { return dateStart; }
-                       }
-
-                       TimeSpan daylightDelta;
-                       public TimeSpan DaylightDelta {
-                               get { return daylightDelta; }
-                       }
-
-                       TransitionTime daylightTransitionEnd;
-                       public TransitionTime DaylightTransitionEnd {
-                               get { return daylightTransitionEnd; }
-                       }
-
-                       TransitionTime daylightTransitionStart;
-                       public TransitionTime DaylightTransitionStart {
-                               get { return daylightTransitionStart; }
-                       }
-
-                       public static AdjustmentRule CreateAdjustmentRule (
-                               DateTime dateStart,
-                               DateTime dateEnd,
-                               TimeSpan daylightDelta,
-                               TransitionTime daylightTransitionStart,
-                               TransitionTime daylightTransitionEnd)
-                       {
-                               return new AdjustmentRule (dateStart, dateEnd, daylightDelta, daylightTransitionStart, daylightTransitionEnd);
-                       }
-
-                       private AdjustmentRule (SerializationInfo info, StreamingContext context)
-                       {
-                               if (info == null)
-                                       throw new ArgumentNullException ("info");
-                               dateStart = (DateTime) info.GetValue ("DateStart", typeof (DateTime));
-                               dateEnd = (DateTime) info.GetValue ("DateEnd", typeof (DateTime));
-                               daylightDelta = (TimeSpan) info.GetValue ("DaylightDelta", typeof (TimeSpan));
-                               daylightTransitionStart = (TimeZoneInfo.TransitionTime) info.GetValue ("DaylightTransitionStart", typeof (TimeZoneInfo.TransitionTime));
-                               daylightTransitionEnd = (TimeZoneInfo.TransitionTime) info.GetValue ("DaylightTransitionEnd", typeof (TimeZoneInfo.TransitionTime));
-                       }
-                       
-                       private AdjustmentRule (
-                               DateTime dateStart,
-                               DateTime dateEnd,
-                               TimeSpan daylightDelta,
-                               TransitionTime daylightTransitionStart,
-                               TransitionTime daylightTransitionEnd)
-                       {
-                               if (dateStart.Kind != DateTimeKind.Unspecified || dateEnd.Kind != DateTimeKind.Unspecified)
-                                       throw new ArgumentException ("the Kind property of dateStart or dateEnd parameter does not equal DateTimeKind.Unspecified");
-
-                               if (daylightTransitionStart == daylightTransitionEnd)
-                                       throw new ArgumentException ("daylightTransitionStart parameter cannot equal daylightTransitionEnd parameter");
-
-                               if (dateStart.Ticks % TimeSpan.TicksPerDay != 0 || dateEnd.Ticks % TimeSpan.TicksPerDay != 0)
-                                       throw new ArgumentException ("dateStart or dateEnd parameter includes a time of day value");
-
-                               if (dateEnd < dateStart)
-                                       throw new ArgumentOutOfRangeException ("dateEnd is earlier than dateStart");
-
-                               if (daylightDelta > new TimeSpan (14, 0, 0) || daylightDelta < new TimeSpan (-14, 0, 0))
-                                       throw new ArgumentOutOfRangeException ("daylightDelta is less than -14 or greater than 14 hours");
-
-                               if (daylightDelta.Ticks % TimeSpan.TicksPerSecond != 0)
-                                       throw new ArgumentOutOfRangeException ("daylightDelta parameter does not represent a whole number of seconds");
-
-                               this.dateStart = dateStart;
-                               this.dateEnd = dateEnd;
-                               this.daylightDelta = daylightDelta;
-                               this.daylightTransitionStart = daylightTransitionStart;
-                               this.daylightTransitionEnd = daylightTransitionEnd;
-                       }
-
-                       public bool Equals (TimeZoneInfo.AdjustmentRule other)
-                       {
-                               return dateStart == other.dateStart &&
-                                       dateEnd == other.dateEnd &&
-                                       daylightDelta == other.daylightDelta && 
-                                       daylightTransitionStart == other.daylightTransitionStart &&
-                                       daylightTransitionEnd == other.daylightTransitionEnd;
-                       }
-
-                       public override int GetHashCode ()
-                       {
-                               return dateStart.GetHashCode () ^ 
-                                       dateEnd.GetHashCode () ^
-                                       daylightDelta.GetHashCode () ^
-                                       daylightTransitionStart.GetHashCode () ^
-                                       daylightTransitionEnd.GetHashCode ();
-                       }
-                                       
-                       void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
-                       {
-                               if (info == null)
-                                       throw new ArgumentNullException ("info");
-                               info.AddValue ("DateStart", DateStart);
-                               info.AddValue ("DateEnd", DateEnd);
-                               info.AddValue ("DaylightDelta", DaylightDelta);
-                               info.AddValue ("DaylightTransitionStart", DaylightTransitionStart);
-                               info.AddValue ("DaylightTransitionEnd", DaylightTransitionEnd);
-                       }
-                       void IDeserializationCallback.OnDeserialization (object sender)
-                       {
-                               try {
-                                       TimeZoneInfo.AdjustmentRule.Validate (dateStart, dateEnd, daylightDelta, 
-                                                                             daylightTransitionStart, daylightTransitionEnd);
-                               } catch (ArgumentException ex) {
-                                       throw new SerializationException ("invalid serialization data", ex);
-                               }
-                       }
-
-                       private static void Validate (
-                               DateTime dateStart,
-                               DateTime dateEnd,
-                               TimeSpan daylightDelta,
-                               TransitionTime daylightTransitionStart,
-                               TransitionTime daylightTransitionEnd)
-                       {
-                               if (dateStart.Kind != DateTimeKind.Unspecified || dateEnd.Kind != DateTimeKind.Unspecified)
-                                       throw new ArgumentException ("the Kind property of dateStart or dateEnd parameter does not equal DateTimeKind.Unspecified");
-
-                               if (daylightTransitionStart == daylightTransitionEnd)
-                                       throw new ArgumentException ("daylightTransitionStart parameter cannot equal daylightTransitionEnd parameter");
-
-                               if (dateStart.Ticks % TimeSpan.TicksPerDay != 0 || dateEnd.Ticks % TimeSpan.TicksPerDay != 0)
-                                       throw new ArgumentException ("dateStart or dateEnd parameter includes a time of day value");
-
-                               if (dateEnd < dateStart)
-                                       throw new ArgumentOutOfRangeException ("dateEnd is earlier than dateStart");
-
-                               if (daylightDelta > new TimeSpan (14, 0, 0) || daylightDelta < new TimeSpan (-14, 0, 0))
-                                       throw new ArgumentOutOfRangeException ("daylightDelta is less than -14 or greater than 14 hours");
-
-                               if (daylightDelta.Ticks % TimeSpan.TicksPerSecond != 0)
-                                       throw new ArgumentOutOfRangeException ("daylightDelta parameter does not represent a whole number of seconds");
-                       }
-               }
-       }
-}
index fa727cce0c6da443dedf1a24efc0693ee3219747..fef235786947d13e8cc9c9eb1f2e127afd05b53e 100644 (file)
@@ -70,7 +70,7 @@ namespace System {
                        IntPtr data = monotouch_timezone_get_data (name, ref size);
                        if (size <= 0) {
                                if (throw_on_error)
-                                       throw new TimeZoneNotFoundException ();
+                                       throw new TimeZoneNotFoundException (name);
                                return null;
                        }
 
diff --git a/mcs/class/corlib/System/TimeZoneInfo.TransitionTime.cs b/mcs/class/corlib/System/TimeZoneInfo.TransitionTime.cs
deleted file mode 100644 (file)
index 37a7064..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * System.TimeZoneInfo.TransitionTime
- *
- * Author(s)
- *     Stephane Delcroix <stephane@delcroix.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-
-namespace System
-{
-       public
-       sealed partial class TimeZoneInfo
-       {
-               [SerializableAttribute]
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-               public struct TransitionTime : IEquatable<TimeZoneInfo.TransitionTime>, ISerializable, IDeserializationCallback
-               {
-                       DateTime timeOfDay;
-                       public DateTime TimeOfDay {
-                               get { return timeOfDay; }
-                       }
-
-                       int month;
-                       public int Month {
-                               get { return month; }
-                       }
-
-                       int day;
-                       public int Day {
-                               get { 
-#if STRICT
-                                       if (!isFixedDateRule)
-                                               throw new Exception ("Day property is not valid for floating date rules");
-#endif
-                                       return day; 
-                               }
-                       }
-
-                       int week;
-                       public int Week {
-                               get { 
-#if STRICT
-                                       if (isFixedDateRule)
-                                               throw new Exception ("Week property is not valid for fixed date rules");
-#endif
-               
-                                       return week; 
-                               }
-                       }
-
-                       DayOfWeek dayOfWeek;
-                       public DayOfWeek DayOfWeek {
-                               get { 
-#if STRICT
-                                       if (isFixedDateRule)
-                                               throw new Exception ("DayOfWeek property is not valid for fixed date rules");
-#endif
-       
-                                       return dayOfWeek; 
-                               }
-                       }
-
-                       bool isFixedDateRule;
-                       public bool IsFixedDateRule {
-                               get { return isFixedDateRule; }
-                       }
-
-                       public static TransitionTime CreateFixedDateRule (
-                               DateTime timeOfDay, 
-                               int month, 
-                               int day)
-                       {
-                               return new TransitionTime (timeOfDay, month, day);
-                       }
-
-                       public static TransitionTime CreateFloatingDateRule (
-                               DateTime timeOfDay,
-                               int month,
-                               int week,
-                               DayOfWeek dayOfWeek)
-                       {
-                               return new TransitionTime (timeOfDay, month, week, dayOfWeek);
-                       }
-
-                       private TransitionTime (SerializationInfo info, StreamingContext context)
-                       {
-                               if (info == null)
-                                       throw new ArgumentNullException ("info");
-                               timeOfDay = (DateTime) info.GetValue ("TimeOfDay", typeof (DateTime));
-                               month = (byte) info.GetValue ("Month", typeof (byte));
-                               week = (byte) info.GetValue ("Week", typeof (byte));
-                               day = (byte) info.GetValue ("Day", typeof (byte));
-                               dayOfWeek = (DayOfWeek) info.GetValue ("DayOfWeek", typeof (DayOfWeek));
-                               isFixedDateRule = (bool) info.GetValue ("IsFixedDateRule", typeof (bool));
-
-                               if (isFixedDateRule)
-                               {
-                                       week = -1;
-                                       dayOfWeek = (DayOfWeek) (-1);
-                               }
-                               if (!isFixedDateRule)                   
-                                       day = -1;
-                       }
-
-                       private TransitionTime (
-                               DateTime timeOfDay,
-                               int month,
-                               int day) : this (timeOfDay, month)
-                       {
-                               if (day < 1 || day > 31)
-                                       throw new ArgumentOutOfRangeException ("day parameter is less than 1 or greater than 31");
-
-                               this.day = day; 
-                               this.isFixedDateRule = true;
-                       }
-
-                       private TransitionTime (
-                               DateTime timeOfDay,
-                               int month,
-                               int week,
-                               DayOfWeek dayOfWeek)  : this (timeOfDay, month)
-                       {
-                               if (week < 1 || week > 5)
-                                       throw new ArgumentOutOfRangeException ("week parameter is less than 1 or greater than 5");
-
-                               if (dayOfWeek != DayOfWeek.Sunday &&
-                                               dayOfWeek != DayOfWeek.Monday &&
-                                               dayOfWeek != DayOfWeek.Tuesday &&
-                                               dayOfWeek != DayOfWeek.Wednesday &&
-                                               dayOfWeek != DayOfWeek.Thursday &&
-                                               dayOfWeek != DayOfWeek.Friday &&
-                                               dayOfWeek != DayOfWeek.Saturday)
-                                       throw new ArgumentOutOfRangeException ("dayOfWeek parameter is not a member od DayOfWeek enumeration");
-
-                               this.week = week;
-                               this.dayOfWeek = dayOfWeek;
-                               this.isFixedDateRule = false;
-                       }
-
-                       private TransitionTime (
-                               DateTime timeOfDay,
-                               int month)
-                       {
-                               if (timeOfDay.Year != 1 || timeOfDay.Month != 1 || timeOfDay.Day != 1)
-                                       throw new ArgumentException ("timeOfDay parameter has a non-default date component");
-
-                               if (timeOfDay.Kind != DateTimeKind.Unspecified)
-                                       throw new ArgumentException ("timeOfDay parameter Kind's property is not DateTimeKind.Unspecified");
-
-                               if (timeOfDay.Ticks % TimeSpan.TicksPerMillisecond != 0)
-                                       throw new ArgumentException ("timeOfDay parameter does not represent a whole number of milliseconds");
-
-                               if (month < 1 || month > 12)
-                                       throw new ArgumentOutOfRangeException ("month parameter is less than 1 or greater than 12");
-                               
-                               this.timeOfDay = timeOfDay;
-                               this.month = month;
-
-                               this.week = -1;
-                               this.dayOfWeek = (System.DayOfWeek)(-1);
-                               this.day = -1;
-                               this.isFixedDateRule = false;
-                       }
-
-                       public static bool operator == (TransitionTime t1, TransitionTime t2)
-                       {
-                               return ( t1.day == t2.day &&
-                                               t1.dayOfWeek == t2.dayOfWeek &&
-                                               t1.isFixedDateRule == t2.isFixedDateRule &&
-                                               t1.month == t2.month &&
-                                               t1.timeOfDay == t2.timeOfDay &&
-                                               t1.week == t2.week);    
-                       }
-
-                       public static bool operator != (TransitionTime t1, TransitionTime t2)
-                       {
-                               return !(t1 == t2);
-                       }
-
-
-                       void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
-                       {
-                               if (info == null)
-                                       throw new ArgumentNullException ("info");
-                               info.AddValue ("TimeOfDay", TimeOfDay);
-                               info.AddValue ("Month", System.Convert.ToByte(Month));
-                               if (week > -1)
-                                       info.AddValue ("Week", System.Convert.ToByte(week));
-                               else 
-                                       info.AddValue ("Week", (byte) 1);
-                               if (day > -1)
-                                       info.AddValue ("Day", System.Convert.ToByte(day));
-                               else
-                                       info.AddValue ("Day", (byte) 1);
-                               if (dayOfWeek !=  ((System.DayOfWeek) (-1)))
-                                       info.AddValue ("DayOfWeek", dayOfWeek);
-                               else
-                                       info.AddValue ("DayOfWeek", DayOfWeek.Sunday);
-                               info.AddValue ("IsFixedDateRule", IsFixedDateRule);
-                       }       
-       
-                       public override bool Equals (object obj)
-                       {
-                               if (obj is TransitionTime)
-                                       return this == (TransitionTime) obj;
-                               return false;
-                       }
-
-                       public bool Equals (TimeZoneInfo.TransitionTime other)
-                       {
-                               return this == other;
-                       }
-
-                       public override int GetHashCode ()
-                       {
-                               return (day ^ (int)dayOfWeek ^ month ^ (int)timeOfDay.Ticks ^ week);
-                       }
-
-                       void IDeserializationCallback.OnDeserialization (object sender)
-                       {
-                               try {
-                                       TimeZoneInfo.TransitionTime.Validate (timeOfDay, month, week, day, dayOfWeek, isFixedDateRule);
-                               } catch (ArgumentException ex) {
-                                       throw new SerializationException ("invalid serialization data", ex);
-                               }
-                       }
-
-                       private static void Validate (DateTime timeOfDay, int month,int week, int day, DayOfWeek dayOfWeek, bool isFixedDateRule)
-                       {
-                               if (timeOfDay.Year != 1 || timeOfDay.Month != 1 || timeOfDay.Day != 1)
-                                       throw new ArgumentException ("timeOfDay parameter has a non-default date component");
-
-                               if (timeOfDay.Kind != DateTimeKind.Unspecified)
-                                       throw new ArgumentException ("timeOfDay parameter Kind's property is not DateTimeKind.Unspecified");
-
-                               if (timeOfDay.Ticks % TimeSpan.TicksPerMillisecond != 0)
-                                       throw new ArgumentException ("timeOfDay parameter does not represent a whole number of milliseconds");
-
-                               if (day < 1 || day > 31) {
-                                       if (!(!isFixedDateRule && day == -1))
-                                               throw new ArgumentOutOfRangeException ("day parameter is less than 1 or greater than 31");
-                               }
-
-                               if (week < 1 || week > 5) {
-                                       if (!(isFixedDateRule && week == -1))
-                                               throw new ArgumentOutOfRangeException ("week parameter is less than 1 or greater than 5");
-                               }
-
-                               if (month < 1 || month > 12)
-                                       throw new ArgumentOutOfRangeException ("month parameter is less than 1 or greater than 12");
-
-                               if (dayOfWeek != DayOfWeek.Sunday &&
-                                               dayOfWeek != DayOfWeek.Monday &&
-                                               dayOfWeek != DayOfWeek.Tuesday &&
-                                               dayOfWeek != DayOfWeek.Wednesday &&
-                                               dayOfWeek != DayOfWeek.Thursday &&
-                                               dayOfWeek != DayOfWeek.Friday &&
-                                               dayOfWeek != DayOfWeek.Saturday) {
-                                       if (!(isFixedDateRule && dayOfWeek == (DayOfWeek) (-1)))
-                                               throw new ArgumentOutOfRangeException ("dayOfWeek parameter is not a member od DayOfWeek enumeration");
-                               }
-                       }
-               }
-       }
-}
index 3c0b535b43b0575a82dc606a44501ce8b9ffb74d..4b82ab77416132a00d4a844f23d3a0f21ae453a8 100644 (file)
@@ -45,14 +45,7 @@ using Microsoft.Win32;
 
 namespace System
 {
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       [SerializableAttribute]
-       public
-       sealed partial class TimeZoneInfo : IEquatable<TimeZoneInfo>, ISerializable, IDeserializationCallback
+       partial class TimeZoneInfo
        {
                TimeSpan baseUtcOffset;
                public TimeSpan BaseUtcOffset {
@@ -598,7 +591,7 @@ namespace System
 
                public AdjustmentRule [] GetAdjustmentRules ()
                {
-                       if (!supportsDaylightSavingTime)
+                       if (!supportsDaylightSavingTime || adjustmentRules == null)
                                return new AdjustmentRule [0];
                        else
                                return (AdjustmentRule []) adjustmentRules.Clone ();
@@ -887,6 +880,68 @@ namespace System
                        throw new NotImplementedException ();
                }
 
+               internal DaylightTime GetDaylightChanges (int year)
+               {
+                       DateTime start = DateTime.MinValue, end = DateTime.MinValue;
+                       TimeSpan delta = new TimeSpan ();
+
+                       if (transitions != null) {
+                               end = DateTime.MaxValue;
+                               for (var i =  transitions.Count - 1; i >= 0; i--) {
+                                       var pair = transitions [i];
+                                       DateTime ttime = pair.Key;
+                                       TimeType ttype = pair.Value;
+
+                                       if (ttype.IsDst) {
+                                               // DaylightTime.Delta is relative to the current BaseUtcOffset.
+                                               var d =  new TimeSpan (0, 0, ttype.Offset) - BaseUtcOffset;
+                                               // Handle DST gradients
+                                               if (start != DateTime.MinValue && delta != d)
+                                                       end = start;
+
+                                               start = ttime;
+                                               delta = d;
+
+                                               if (ttime.Year <= year)
+                                                       break;
+                                       } else {
+                                               if (ttime.Year < year)
+                                                       break;
+
+                                               end = ttime;
+                                               start = DateTime.MinValue;
+                                       }
+                               }
+
+                               // DaylightTime.Start is relative to the Standard time.
+                               if (start != DateTime.MinValue)
+                                       start += BaseUtcOffset;
+
+                               // DaylightTime.End is relative to the DST time.
+                               if (end != DateTime.MaxValue)
+                                       end += BaseUtcOffset + delta;
+                       } else {
+                               AdjustmentRule rule = null;
+                               foreach (var r in GetAdjustmentRules ()) {
+                                       if (r.DateEnd.Year < year)
+                                               continue;
+                                       if (r.DateStart.Year > year)
+                                               break;
+                                       rule = r;
+                               }
+                               if (rule != null) {
+                                       start = TransitionPoint (rule.DaylightTransitionStart, year);
+                                       end = TransitionPoint (rule.DaylightTransitionEnd, year);
+                                       delta = rule.DaylightDelta;
+                               }
+                       }
+
+                       if (start == DateTime.MinValue || end == DateTime.MinValue)
+                               return new DaylightTime (new DateTime (), new DateTime (), new TimeSpan ());
+
+                       return new DaylightTime (start, end, delta);
+               }
+
                public bool IsInvalidTime (DateTime dateTime)
                {
                        if (dateTime.Kind == DateTimeKind.Utc)
@@ -1240,8 +1295,12 @@ namespace System
                                } else {
                                        if (daylightDisplayName != ttype.Name)
                                                daylightDisplayName = ttype.Name;
-                                       if (dstDelta.TotalSeconds != ttype.Offset - baseUtcOffset.TotalSeconds)
-                                               dstDelta = new TimeSpan(0, 0, ttype.Offset) - baseUtcOffset;
+                                       if (dstDelta.TotalSeconds != ttype.Offset - baseUtcOffset.TotalSeconds) {
+                                               // Round to nearest minute, since it's not possible to create an adjustment rule
+                                               // with sub-minute precision ("The TimeSpan parameter cannot be specified more precisely than whole minutes.")
+                                               // This happens with Europe/Dublin, which had an offset of 34 minutes and 39 seconds in 1916.
+                                               dstDelta = new TimeSpan (0, 0, ttype.Offset - ttype.Offset % 60) - baseUtcOffset;
+                                       }
 
                                        dst_start = ttime;
                                        dst_observed = true;
@@ -1260,8 +1319,10 @@ namespace System
                                tz = CreateCustomTimeZone (id, baseUtcOffset, id, standardDisplayName, daylightDisplayName, ValidateRules (adjustmentRules).ToArray ());
                        }
 
-                       if (storeTransition)
+                       if (storeTransition && transitions.Count > 0) {
                                tz.transitions = transitions;
+                               tz.supportsDaylightSavingTime = true;
+                       }
 
                        return tz;
                }
diff --git a/mcs/class/corlib/System/TimeZoneNotFoundException.cs b/mcs/class/corlib/System/TimeZoneNotFoundException.cs
deleted file mode 100644 (file)
index 1333d97..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * System.TimeZoneNotFoundException
- *
- * Author(s)
- *     Stephane Delcroix <stephane@delcroix.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-using System.Runtime.CompilerServices;
-
-namespace System
-{
-       [Serializable]
-#if MOBILE
-       [TypeForwardedFrom (Consts.AssemblySystem_Core)]
-#else
-       [TypeForwardedFrom (Consts.AssemblySystemCore_3_5)]
-#endif
-       public
-       class TimeZoneNotFoundException : Exception
-       {
-               public TimeZoneNotFoundException () : base ()
-               {}
-
-               public TimeZoneNotFoundException (string message) : base (message)
-               {}
-
-               public TimeZoneNotFoundException (string message, Exception innerException) : base (message, innerException)
-               {}
-
-               protected TimeZoneNotFoundException (Runtime.Serialization.SerializationInfo info, Runtime.Serialization.StreamingContext context) : base (info, context)
-               {}
-       }
-}
diff --git a/mcs/class/corlib/System/TypeLoadException.cs b/mcs/class/corlib/System/TypeLoadException.cs
deleted file mode 100644 (file)
index f963ae1..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// System.TypeLoadException.cs
-//
-// Authors:
-//   Sean MacIsaac (macisaac@ximian.com)
-//   Duncan Mak  (duncan@ximian.com)
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.Serialization;
-using System.Runtime.InteropServices;
-
-namespace System
-{
-       [Serializable]
-       [ComVisible (true)]
-       [StructLayout (LayoutKind.Sequential)]
-       public class TypeLoadException : SystemException
-       {
-               const int Result = unchecked ((int)0x80131522);
-               
-               // Fields
-               private string className, assemblyName;
-
-               // Constructors
-               public TypeLoadException ()
-                       : base (Locale.GetText ("A type load exception has occurred."))
-               {
-                       HResult = Result;
-               }
-
-               public TypeLoadException (string message)
-                       : base (message)
-               {
-                       HResult = Result;
-               }
-
-               public TypeLoadException (string message, Exception inner)
-                       : base (message, inner)
-               {
-                       HResult = Result;
-               }
-
-               internal TypeLoadException (string className, string assemblyName) : this ()
-               {
-                       this.className = className;
-                       this.assemblyName = assemblyName;
-               }
-
-               protected TypeLoadException (SerializationInfo info, StreamingContext context)
-                       : base (info, context)
-               {
-                       if (info == null)
-                               throw new ArgumentNullException ("info");
-
-                       className = info.GetString ("TypeLoadClassName");
-                       assemblyName = info.GetString ("TypeLoadAssemblyName");
-               }
-
-               // Properties
-               public override string Message {
-                       get {
-                               if (className != null) {
-                                       if ((assemblyName != null) && (assemblyName != String.Empty))
-                                               return String.Format ("Could not load type '{0}' from assembly '{1}'.", className, assemblyName);
-                                       else
-                                               return String.Format ("Could not load type '{0}'.", className);
-                               }
-                               else
-                                       return base.Message;
-                       }
-               }
-
-               public string TypeName {
-                       get { 
-                               if (className == null)
-                                       return String.Empty;
-                               else
-                                       return className;
-                       }
-               }
-
-               // Methods
-               public override void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       if (info == null)
-                               throw new ArgumentNullException ("info");
-
-                       base.GetObjectData (info, context);
-                       info.AddValue ("TypeLoadClassName", className, typeof (string)); 
-                       info.AddValue ("TypeLoadAssemblyName", assemblyName, typeof (string)); 
-                       info.AddValue ("TypeLoadMessageArg", "", typeof (string)); 
-                       info.AddValue ("TypeLoadResourceID", 0, typeof (int)); 
-               }
-       }
-}
index 8ac242b346e64ac4cfc6b37d96b88765f6c9470a..e2b4380be7e54598cd3f30d5ec1b7fae35f732df 100644 (file)
@@ -168,7 +168,7 @@ namespace System
                                vt = (short)VarEnum.VT_BSTR;
                                bstrVal = Marshal.StringToBSTR(((BStrWrapper)obj).WrappedObject);
                        }
-#if !FULL_AOT_RUNTIME
+#if FEATURE_COMINTEROP
                        else if (t == typeof (UnknownWrapper))
                        {
                                vt = (short)VarEnum.VT_UNKNOWN;
@@ -182,7 +182,7 @@ namespace System
 #endif
                        else
                        {
-#if FULL_AOT_RUNTIME
+#if !FEATURE_COMINTEROP
                                throw new NotImplementedException(string.Format("Variant couldn't handle object of type {0}", obj.GetType()));
 #else
                                try 
@@ -301,7 +301,7 @@ namespace System
                        case VarEnum.VT_BSTR:
                                obj = Marshal.PtrToStringBSTR(bstrVal);
                                break;
-#if !FULL_AOT_RUNTIME
+#if FEATURE_COMINTEROP
                        case VarEnum.VT_UNKNOWN:
                        case VarEnum.VT_DISPATCH:
                                if (pdispVal != IntPtr.Zero)
@@ -324,10 +324,12 @@ namespace System
                        if ((VarEnum)vt == VarEnum.VT_BSTR) {
                                Marshal.FreeBSTR (bstrVal);
                        }
+#if !DISABLE_COM
                        else if ((VarEnum)vt == VarEnum.VT_DISPATCH || (VarEnum)vt == VarEnum.VT_UNKNOWN) {
                                if (pdispVal != IntPtr.Zero)
                                        Marshal.Release (pdispVal);
                        }
+#endif
                }
        }
 
index a361fbc50f8ff913da46beffb9d8fdb30541f765..892e722b990fa64a107f6d39bb74115f4a87be96 100644 (file)
@@ -633,6 +633,60 @@ namespace MonoTests.System.Collections.Generic {
                        }
                }
 
+#if !MOBILE
+               [Test]
+               public void SerializationCompatibilty ()
+               {
+                       /* Serialization output from .net 
+
+                       var dict = new Dictionary<string, string> ();
+                       dict.Add ("key", "value");
+
+                       var dictSerializedStream = new MemoryStream ();
+                       fmt.Serialize (dictSerializedStream, dict);
+
+                       dictSerializedStream.Seek (0, SeekOrigin.Begin);
+                       var res = Convert.ToBase64String (dictSerializedStream.ToArray (), Base64FormattingOptions.InsertLineBreaks);
+
+                       */
+
+                       var x = "AAEAAAD/////AQAAAAAAAAAEAQAAAOIBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlv" +
+                               "bmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJl" +
+                               "PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uU3RyaW5n" +
+                               "LCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv" +
+                               "a2VuPWI3N2E1YzU2MTkzNGUwODldXQQAAAAHVmVyc2lvbghDb21wYXJlcghIYXNoU2l6ZQ1LZXlW" +
+                               "YWx1ZVBhaXJzAAMAAwiSAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNFcXVhbGl0" +
+                               "eUNvbXBhcmVyYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1" +
+                               "bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCOYBU3lzdGVt" +
+                               "LkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1zY29y" +
+                               "bGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3" +
+                               "YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAs" +
+                               "IEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dW10BAAAA" + 
+                               "CQIAAAADAAAACQMAAAAEAgAAAJIBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0Vx" +
+                               "dWFsaXR5Q29tcGFyZXJgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAu" + 
+                               "MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0AAAAA" + 
+                               "BwMAAAAAAQAAAAEAAAAD5AFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJg" + 
+                               "MltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0" + 
+                               "cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbU3lzdGVtLlN0cmluZywgbXNj" + 
+                               "b3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1i" + 
+                               "NzdhNWM1NjE5MzRlMDg5XV0E/P///+QBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFs" + 
+                               "dWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1" + 
+                               "cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1N5c3RlbS5TdHJp" + 
+                               "bmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5" + 
+                               "VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAANrZXkFdmFsdWUBAQYFAAAAA2tleQYGAAAABXZh" + 
+                               "bHVlCw==";
+
+                       var dict = new Dictionary<string, string> ();
+                       dict.Add ("key", "value");
+               
+                       BinaryFormatter fmt = new BinaryFormatter ();
+                       var mdict = (Dictionary<string, string>) fmt.Deserialize (new MemoryStream (Convert.FromBase64String (x)));
+
+                       Assert.AreEqual (1, dict.Count);
+                       Assert.AreEqual (dict.Comparer.GetType (), mdict.Comparer.GetType ());
+               }
+#endif
+
                [Test]
                public void ZeroCapacity ()
                {
index 5a0fd3b6a253da373385e2652435f3db626a6e8a..e238781bcb73f4cce4f887eb2c9bc9ef37bda514 100644 (file)
@@ -37,6 +37,11 @@ namespace MonoTests.System.Collections.Generic {
 
        [TestFixture]
        public class EqualityComparerTest {
+               enum E
+               {
+                       A,
+                       B
+               }
 
                [Test]
                public void Default_GetHashCode_Null ()
@@ -59,6 +64,13 @@ namespace MonoTests.System.Collections.Generic {
                        IEqualityComparer comparer = EqualityComparer<object>.Default;
                        Assert.IsTrue (comparer.Equals (null, null));
                }
+
+               [Test]
+               public void EnumComparison ()
+               {
+                       Assert.IsFalse (EqualityComparer<E>.Default.Equals (E.A, E.B));
+                       Assert.IsFalse (EqualityComparer<object>.Default.Equals (E.A, E.B));
+               }
        }
 }
 
index 3b7438453719cdaa66c66564ec60c24fcc90a6e2..48a8e76b63d2e9f318fa91ed934f417b125a3c75 100644 (file)
@@ -225,6 +225,15 @@ namespace MonoTests.System.Globalization
                        Assert.Fail ("InvariantCulture not found in the array from GetCultures()");
                }
 
+               [Test]
+               public void GetAllCultures_Specific ()
+               {
+                       CultureInfo [] infos = CultureInfo.GetCultures (CultureTypes.SpecificCultures);
+                       foreach (CultureInfo ci in infos) {
+                               Assert.IsNotNull (ci.DateTimeFormat);
+                       }
+               }
+
                [Test]
 #if !NET_4_0
                [ExpectedException (typeof (NotSupportedException))]
index 499c6b840962a7bcd4cc843079baad5580cae9c4..b7227d972c3c0f20fa68c9f187f3403720fa144a 100644 (file)
@@ -42,6 +42,7 @@ using System.Threading;
 using System.Runtime.Serialization;
 using System.Security;
 using System.Linq;
+using System.Resources;
 
 namespace MonoTests.System.Reflection
 {
@@ -464,6 +465,63 @@ namespace MonoTests.System.Reflection
                        }
                }
 
+               [Test]
+               public void SateliteAssemblyForInMemoryAssembly ()
+               {
+                       string assemblyFileName = Path.Combine (
+                               Path.GetTempPath (), "AssemblyLocation1.dll");
+
+                       try {
+                               AssemblyName assemblyName = new AssemblyName ();
+                               assemblyName.Name = "AssemblyLocation1";
+
+                               AssemblyBuilder ab = AppDomain.CurrentDomain
+                                       .DefineDynamicAssembly (assemblyName,
+                                               AssemblyBuilderAccess.Save,
+                                               Path.GetTempPath ());
+
+                               ModuleBuilder moduleBuilder = ab.DefineDynamicModule (assemblyName.Name, assemblyName.Name + ".dll");
+                               TypeBuilder typeBuilder = moduleBuilder.DefineType ("Program", TypeAttributes.Public);
+
+                               MethodBuilder methodBuilder = typeBuilder.DefineMethod ("TestCall", MethodAttributes.Public | MethodAttributes.Static, typeof(void), Type.EmptyTypes);
+                               ILGenerator gen = methodBuilder.GetILGenerator ();
+
+                               //
+                               //      var resourceManager = new ResourceManager (typeof (Program));
+                               //      resourceManager.GetString ("test");
+                               //
+                               gen.Emit (OpCodes.Ldtoken, typeBuilder);
+                               gen.Emit (OpCodes.Call, typeof(Type).GetMethod ("GetTypeFromHandle"));
+                               gen.Emit (OpCodes.Newobj, typeof(ResourceManager).GetConstructor (new Type[] { typeof(Type) }));
+                               gen.Emit (OpCodes.Ldstr, "test");
+                               gen.Emit (OpCodes.Callvirt, typeof(ResourceManager).GetMethod ("GetString", new Type[] { typeof(string) }));
+                               gen.Emit (OpCodes.Pop);
+                               gen.Emit (OpCodes.Ret);
+
+                               typeBuilder.CreateType ();
+
+                               ab.Save (Path.GetFileName (assemblyFileName));
+
+                               using (FileStream fs = File.OpenRead (assemblyFileName)) {
+                                       byte[] buffer = new byte[fs.Length];
+                                       fs.Read (buffer, 0, buffer.Length);
+                                       Assembly assembly = Assembly.Load (buffer);
+
+                                       var mm = assembly.GetType ("Program").GetMethod ("TestCall");
+                                       try {
+                                               mm.Invoke (null, null);
+                                               Assert.Fail ();
+                                       } catch (TargetInvocationException e) {
+                                               Assert.IsTrue (e.InnerException is MissingManifestResourceException);
+                                       }
+
+                                       fs.Close ();
+                               }
+                       } finally {
+                               File.Delete (assemblyFileName);
+                       }
+               }
+
                [Test]
                [Category ("NotWorking")]
                public void bug78464 ()
index a6ad35550cc7155c8d40d5afb482261514e85a27..410c4c239a04855130a82a91d6d61931f2610a46 100644 (file)
@@ -58,13 +58,13 @@ namespace MonoTests.System.Reflection
 
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst=100)]
                public string f2;
-
+#if FEATURE_COMINTEROP
                [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof (Marshal1), MarshalCookie="5")]
                public int f3;
 
                [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof (Marshal1), MarshalCookie = "5")]
                public object f4;
-
+#endif
                [Obsolete]
                public int f5;
        }
@@ -170,6 +170,15 @@ namespace MonoTests.System.Reflection
                        }
                }
 
+               [Test]
+               public void FieldInfoModule ()
+               {
+                       Type type = typeof (FieldInfoTest);
+                       FieldInfo field = type.GetField ("i");
+
+                       Assert.AreEqual (type.Module, field.Module);
+               }
+
                [Test]
                public void GetCustomAttributes ()
                {
@@ -347,10 +356,12 @@ namespace MonoTests.System.Reflection
                        Assert.AreEqual (UnmanagedType.ByValTStr, attr.Value, "#E2");
                        Assert.AreEqual (100, attr.SizeConst, "#E3");
 
+#if FEATURE_COMINTEROP
                        attrs = typeof (Class2).GetField ("f3").GetCustomAttributes (true);
                        Assert.AreEqual (1, attrs.Length, "#F1");
                        attr = (MarshalAsAttribute) attrs [0];
                        Assert.AreEqual (UnmanagedType.CustomMarshaler, attr.Value, "#F2");
+
                        Assert.AreEqual ("5", attr.MarshalCookie, "#F3");
                        Assert.AreEqual (typeof (Marshal1), Type.GetType (attr.MarshalType), "#F4");
 
@@ -375,6 +386,7 @@ namespace MonoTests.System.Reflection
                        Assert.AreEqual (UnmanagedType.CustomMarshaler, attr.Value, "#I2");
                        Assert.AreEqual ("5", attr.MarshalCookie, "#I3");
                        Assert.AreEqual (typeof (Marshal1), Type.GetType (attr.MarshalType), "#I4");
+#endif
                }
 
                // Disable "field not used warning", this is intended.
index 423c7c0670d9d915f1a031208f0cc87b21740af1..c01c5e6da216b40e9a632fe9b2e296ab4626a932 100644 (file)
@@ -261,11 +261,11 @@ namespace MonoTests.System.Reflection
                }
 #endif
 
-               class TestAttribute : Attribute
+               class TestParamAttribute : Attribute
                {
                }
 
-               public static int TestCustomAttribute_Method ([Test] string arg)
+               public static int TestCustomAttribute_Method ([TestParamAttribute] string arg)
                {
                        return arg.Length;
                }
index c37ffea83ee0ef8863964386de58a77365e9bb50..88690944df3851ad2a9d846b0fbbae50723d8eb5 100644 (file)
@@ -90,6 +90,7 @@ namespace MonoTests.System.Resources
                }
 
                [Test]
+               [Category ("MobileNotWorking")]
                [ExpectedException (typeof (BadImageFormatException))]
                public void ConstructorString_Bad ()
                {
index 3be96507bf4bf421fcaea062f5461051a09f5177..fb7d0e57f7c3d3a3801b30f20fe4df8787cf1ada 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_4_5
-
 using System;
 using NUnit.Framework;
 using System.Runtime.ExceptionServices;
@@ -91,10 +89,40 @@ namespace MonoTests.System.Runtime.ExceptionServices
                                Assert.Fail ("#0");
                        } catch (OperationCanceledException e) {
                                Assert.IsFalse (e.StackTrace.Contains ("---"));
+                               Assert.AreEqual (2, e.StackTrace.Split (new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).Length);
                        }
                }
 
+               [Test]
+               public void LastThrowWins ()
+               {
+                       Exception e;
+                       try {
+                               throw new Exception ("test");
+                       } catch (Exception e2) {
+                               e = e2;
+                       }
+
+                       var edi = ExceptionDispatchInfo.Capture (e);
+
+                       try {
+                               edi.Throw ();
+                       } catch {
+                       }
+
+                       try {
+                               edi.Throw ();
+                       } catch (Exception ex) {
+                       }
+
+                       try {
+                               edi.Throw ();
+                       } catch (Exception ex) {
+                               var split = ex.StackTrace.Split (new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
+                               Assert.AreEqual (4, split.Length, "#1");
+                               Assert.IsTrue (split [1].Contains ("---"), "#2");
+                       }
+               }
        }
 }
 
-#endif
\ No newline at end of file
index 48e686ab8ddf840fa0d270485df8d622ae447611..e15cb30a839f080416f2678485a48cebfea7784b 100644 (file)
@@ -28,8 +28,8 @@ namespace MonoTests.System.Runtime.Serialization
                MemoryStream ms;
                string uri;
 
+#if FEATURE_REMOTING
                [Test]
-               [Category ("MobileNotWorking")]
                public void TestSerialization ()
                {
                        MethodTester mt = new MethodTester();
@@ -41,6 +41,7 @@ namespace MonoTests.System.Runtime.Serialization
 
                        RemotingServices.Disconnect (mt);
                }
+#endif
 
 #if !MONOTOUCH
                [Test]
@@ -77,6 +78,7 @@ namespace MonoTests.System.Runtime.Serialization
                        return 2;
                }
 
+#if FEATURE_REMOTING
                void WriteData ()
                {
                        StreamingContext context = new StreamingContext (StreamingContextStates.Other);
@@ -148,7 +150,7 @@ namespace MonoTests.System.Runtime.Serialization
                        CheckMessages ("MethodCall", originalMsgData, ProcessMessages (null, calls));
                        CheckMessages ("MethodResponse", originalMsgData, ProcessMessages (null, resps));
                }
-
+#endif
                BinderTester_A CreateBinderTestData ()
                {
                        BinderTester_A bta = new BinderTester_A();
index b20c0c8cf07dc35e3526ef29a1a17f8330365fae..7f3320e9c92023d5a019523ce8e54ae32deede79 100644 (file)
@@ -316,15 +316,17 @@ namespace MonoTests.System.Security.Cryptography {
                                byte[] buffer = new byte [8];
                                cs = new CryptoStream (s, encryptor, CryptoStreamMode.Read);
                                cs.Clear ();
-                               Assert.AreEqual (0, cs.Read (buffer, 0, 8), "Read from disposed");
+                               try {
+                                       cs.Read (buffer, 0, 8);
+                                       Assert.Fail ();
+                               } catch (NotSupportedException) {
+                               }
                        }
                }
                
 #if !NET_2_1
                [Test]
-               // MS BUG [ExpectedException (typeof (ObjectDisposedException))]
-               [Category ("NotWorking")]
-               [ExpectedException (typeof (IndexOutOfRangeException))]
+               [ExpectedException (typeof (NotSupportedException))]
                public void Read_Disposed_Break () 
                {
                        // do no corrupt readStream in further tests
@@ -419,11 +421,8 @@ namespace MonoTests.System.Security.Cryptography {
                        cs.Read (buffer, Int32.MaxValue, 4);
                }
                
-#if !NET_2_1
                [Test]
-               // MS BUG [ExpectedException (typeof (ObjectDisposedException))]
-               [Category ("NotWorking")]
-               [ExpectedException (typeof (IndexOutOfRangeException))]
+               [ExpectedException (typeof (NotSupportedException))]
                public void Write_Disposed () 
                {
                        // do no corrupt writeStream in further tests
@@ -434,7 +433,6 @@ namespace MonoTests.System.Security.Cryptography {
                                cs.Write (buffer, 0, 8);
                        }
                }
-#endif
                
                [Test]
                [ExpectedException (typeof (NotSupportedException))]
@@ -819,7 +817,6 @@ namespace MonoTests.System.Security.Cryptography {
                        Assert.AreEqual ("ximian", Encoding.Unicode.GetString (data, 0, len), "Unicode DES Roundtrip");
                }
 
-               [Category ("NotWorking")]
                [Test]
                public void DecryptPartial_TransformFinalBlock_2Pass () 
                {
@@ -846,7 +843,6 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                // based on http://www.c-sharpcorner.com/Code/2002/May/FileEncryption.asp
-               [Category ("NotWorking")]
                [Test]
                public void WriteByteReadByte () 
                {
@@ -1238,7 +1234,6 @@ namespace MonoTests.System.Security.Cryptography {
                        byte[] digest = hash.Hash;
                        Assert.AreEqual ("71-04-12-D1-95-01-CF-F9-8D-8F-F8-0D-F9-AA-11-7D", BitConverter.ToString (digest), "Hash");
                }
-               [Category ("NotWorking")]
                [Test]
                public void CascadedCryptoStream_Read () 
                {
diff --git a/mcs/class/corlib/Test/System.Security.Cryptography/CspParametersTest.cs b/mcs/class/corlib/Test/System.Security.Cryptography/CspParametersTest.cs
new file mode 100644 (file)
index 0000000..11e8177
--- /dev/null
@@ -0,0 +1,45 @@
+//
+// CspParametersTest.cs - NUnit Test Cases for CspParameters
+//
+// Author:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2015 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Security.Cryptography;
+
+namespace MonoTests.System.Security.Cryptography {
+
+       [TestFixture]
+       public class CspParametersTest {
+
+               [Test]
+               public void Ctor () 
+               {
+                       var cp = new CspParameters ();
+                       Assert.AreEqual (24, cp.ProviderType);
+               }
+       }
+}
index 18e26afb2972a0faae2f3b170611f2c892e05579..a609ce74e2d66c52a0e9328db266a4dc05877678 100644 (file)
@@ -326,17 +326,14 @@ public class DSACryptoServiceProviderTest {
                Assert.IsFalse (emptyDSA.VerifySignature (hash, sign));
        }
                
-#if !NET_2_1
        [Test]
-       [Category ("NotWorking")]
+       [ExpectedException (typeof (ObjectDisposedException))]
        public void ImportDisposed ()
        {
                DSACryptoServiceProvider import = new DSACryptoServiceProvider (minKeySize);
                import.Clear ();
                import.ImportParameters (AllTests.GetKey (false));
-               // no exception from Fx 2.0 +
        }
-#endif
 
        [Test]
        [ExpectedException (typeof (ObjectDisposedException))]
index 0ad8e954406917ef87151de6d4be2f8adaff41cc..52ca9506b0ebe2982b64883e5a95979acad024e7 100644 (file)
@@ -229,7 +229,7 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                [Test]
-               [ExpectedException (typeof (OverflowException))]
+               [ExpectedException (typeof (ArgumentException))]
                public void TransformBlock_InputCount_Negative () 
                {
                        byte[] input = new byte [16];
@@ -240,7 +240,7 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                [Test]
-               [ExpectedException (typeof (OutOfMemoryException))]
+               [ExpectedException (typeof (ArgumentException))]
                public void TransformBlock_InputCount_Overflow () 
                {
                        byte[] input = new byte [16];
@@ -312,7 +312,7 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                [Test]
-               [ExpectedException (typeof (OverflowException))]
+               [ExpectedException (typeof (ArgumentException))]
                public void TransformFinalBlock_InputCount_Negative () 
                {
                        byte[] input = new byte [16];
@@ -322,7 +322,7 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                [Test]
-               [ExpectedException (typeof (OutOfMemoryException))]
+               [ExpectedException (typeof (ArgumentException))]
                public void TransformFinalBlock_InputCount_Overflow () 
                {
                        byte[] input = new byte [16];
index d8d9ac8c3524209a5a1350820576473404ef248f..31401da3fec0a4538a95676837cf7134ccd10d17 100644 (file)
@@ -666,7 +666,7 @@ public class PasswordDeriveBytesTest {
        public void CryptDeriveKey_TooLongKey () 
        {
                PasswordDeriveBytes pd = new PasswordDeriveBytes ("password", null, "MD5", 1000);
-               pd.CryptDeriveKey ("AlgName", "MD5", 256, new byte [8]);
+               pd.CryptDeriveKey ("AlgName", "MD5", -256, new byte [8]);
        }
                
 #if !NET_2_1
index 56f9a9be336792de7e413077cd16fe66c94338ef..8a20b9add458b2d2ed9ff7c097f7a140479c7215 100644 (file)
@@ -843,6 +843,20 @@ public class RSACryptoServiceProviderTest {
                rsa.ToXmlString (true);
        }
 
+       [Test]
+       [ExpectedException (typeof (CryptographicException))]
+       public void ExportWithoutCRT_2 () 
+       {
+               try {
+                       rsa = new RSACryptoServiceProvider ();
+                       rsa.FromXmlString (MonoXml384woCRT);
+               }
+               catch {
+               }
+               // exception is HERE!
+               rsa.ExportParameters (true);
+       }
+
        // Validate that we can sign with every keypair and verify the signature
        // With Windows this means that we can use Mono keypairs to sign and verify.
        // For Mono this doesn't mean much.
index ab26551a6c0806a63f89039aa193214a54beecc2..bee89257a043d82fd1261223335293a7c44dbfd4 100644 (file)
@@ -197,7 +197,7 @@ public class RSAPKCS1KeyExchangeDeformatterTest {
        }
 
        [Test]
-       [ExpectedException (typeof (CryptographicException))]
+       [ExpectedException (typeof (CryptographicUnexpectedOperationException))]
        public void Bug79320 ()
        {
                string s = "hdphq/mn8goBi43YGPkmOfPj5vXjHrKPJkT4mLT3l+XzLttHMLC4/yBYkuzlXtbrl2jtAJRb6oA8UcQFalUMnCa09LDZrgNU2yySn7YbiG8raSq7u2nfDCbPu+c8T9fyHxrCHrX0zeqqImX33csIn6rIrQZ8HKcMsoQso4qtS2A=";
index 4eefc45a4b3d9456f9a47fd8f66a459f95895f87..0d55842687f9882a74b217ac972688c08123a85d 100644 (file)
@@ -322,5 +322,15 @@ namespace MonoTests.System.Security.Cryptography {
                        rsa.FromXmlString (xml);
                        Assert.AreEqual (xmlPublic, rsa.ToXmlString (false), "Embedded");
                }
+
+               [Test]
+               public void FromXmlString_Namespaced ()
+               {
+                       string rsakey = "<RSAKeyValue><Modulus>sjanng8QA1Puw5S563eglnZgwlQOMcLgAZWHVmWVzAfUotsKc+9HhLpobPdjPsjdJE64Jbx/1oQdjMtx5z9ty+5dlW5fausb4UbFfLSH38Nci/k/qasHCphiuJMtqCYNBYvisf/2rUsj0d5nSxvNNtp37SRbIZ7bDFpmp53kAJU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
+                       string dsrsakey = "<ds:RSAKeyValue><ds:Modulus>sjanng8QA1Puw5S563eglnZgwlQOMcLgAZWHVmWVzAfUotsKc+9HhLpobPdjPsjdJE64Jbx/1oQdjMtx5z9ty+5dlW5fausb4UbFfLSH38Nci/k/qasHCphiuJMtqCYNBYvisf/2rUsj0d5nSxvNNtp37SRbIZ7bDFpmp53kAJU=</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue>";
+                       RSA rsa = RSA.Create();
+                       rsa.FromXmlString (rsakey);
+                       rsa.FromXmlString (dsrsakey);
+               }
        }
 }
index dc204e6c59906d284f686d802ac2d7005c8912cb..934bbbe6d6bc509a5cf2780dec77a30cdab18d71 100644 (file)
@@ -75,7 +75,6 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                [Test]
-               [ExpectedException (typeof (ObjectDisposedException))]
                public void TransformBlock_Dispose () 
                {
                        byte[] input = new byte [3];
@@ -112,7 +111,6 @@ namespace MonoTests.System.Security.Cryptography {
                }
 
                [Test]
-               [ExpectedException (typeof (ObjectDisposedException))]
                public void TransformFinalBlock_Dispose () 
                {
                        byte[] input = new byte [3];
index bd3b8706192f2227952faaacad7cbeaa5aa8db22..450d5ae719af6278900a1edb13478ba8bf5513e6 100644 (file)
@@ -76,11 +76,7 @@ namespace MonoTests.System.Security {
                        AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
                        Assert.IsFalse (aua.AllowMultiple, "AllowMultiple");
                        Assert.IsFalse (aua.Inherited, "Inherited");
-#if NET_4_0 && !MOBILE
                        AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Delegate);
-#else
-                       AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate);
-#endif
                        Assert.AreEqual (at, aua.ValidOn, "ValidOn");
                }
        }
index 160b9b98df29899dc9d770d6ade3b7142c759963..75ebb2abc1ce48888f920843772b9fa107d1b7af 100644 (file)
@@ -828,6 +828,22 @@ namespace MonoTests.System
                        Assert.IsFalse (Attribute.IsDefined (typeof (AttributeTest), typeof(SerializableAttribute), true), "#2");
                }
 
+               [YourCustomAttribute (0)]
+               [Serializable]
+               [MyCustomAttribute ("")]
+               class ClassForOrderIsImportant
+               {
+               }
+
+               [Test]
+               public void OrderIsImportant ()
+               {
+                       var custom = typeof (ClassForOrderIsImportant).GetCustomAttributes (false);
+                       Assert.IsTrue (custom [0].GetType () == typeof (YourCustomAttribute));
+                       Assert.IsTrue (custom [1].GetType () == typeof (MyCustomAttribute));
+                       Assert.IsTrue (custom [2].GetType () == typeof (SerializableAttribute));
+               }
+
 #if !MONOTOUCH
                [Test]
                public void GetCustomAttributeOnNewSreTypes ()
index c97a0a31b7e8efef77818a2016c941aecbb73fcb..f9dc5929d3107412fcd6141a8da70093abad780d 100644 (file)
@@ -4711,6 +4711,86 @@ namespace MonoTests.System {
                        Convert.ToUInt64 ("-", 16);
                }
 
+               [Test]
+               public void ToInt64_Base10_MaxValue ()
+               {
+                       Assert.AreEqual (Int64.MaxValue, Convert.ToInt64 (Int64.MaxValue.ToString(), 10));
+               }
+
+               [Test]
+               [ExpectedException (typeof (OverflowException))]
+               public void ToInt64_Base10_MaxValueOverflow ()
+               {
+                       var overflowValue = ((UInt64) Int64.MaxValue) + 1;
+                       Convert.ToInt64 (overflowValue.ToString (), 10);
+               }
+
+               [Test]
+               public void ToInt64_Base10_MinValue ()
+               {
+                       Assert.AreEqual (Int64.MinValue, Convert.ToInt64 (Int64.MinValue.ToString(), 10));
+               }
+
+               [Test]
+               [ExpectedException (typeof (OverflowException))]
+               public void ToInt64_Base10_MinValueOverflow ()
+               {
+                       var overflowValue = ((UInt64) Int64.MaxValue) + 2;
+                       Convert.ToInt64 ("-" + overflowValue.ToString (), 10);
+               }
+
+               [Test]
+               public void ToInt64_Base16_MaxValue ()
+               {
+                       Assert.AreEqual (Int64.MaxValue, Convert.ToInt64 (Int64.MaxValue.ToString("x"), 16));
+               }
+
+               [Test]
+               public void ToInt64_Base16_MaxValueOverflow ()
+               {
+                       var overflowValue = ((UInt64) Int64.MaxValue) + 1;
+                       Assert.AreEqual (-9223372036854775808, Convert.ToInt64 (overflowValue.ToString("x"), 16));
+               }
+
+               [Test]
+               [ExpectedException (typeof (OverflowException))]
+               public void ToInt64_Base16_MaxValueOverflow2 ()
+               {
+                       Convert.ToInt64 (UInt64.MaxValue.ToString ("x") + "0", 16);
+               }
+
+               [Test]
+               public void ToInt64_Base16_MinValue ()
+               {
+                       Assert.AreEqual (Int64.MinValue, Convert.ToInt64 (Int64.MinValue.ToString ("x"), 16));
+               }
+
+               [Test]
+               public void ToUInt64_Base10_MaxValue ()
+               {
+                       Assert.AreEqual (UInt64.MaxValue, Convert.ToUInt64 (UInt64.MaxValue.ToString (), 10));
+               }
+
+               [Test]
+               [ExpectedException (typeof (OverflowException))]
+               public void ToUInt64_Base10_MaxValueOverflow ()
+               {
+                       Convert.ToUInt64 (UInt64.MaxValue.ToString () + "0", 10);
+               }
+
+               [Test]
+               public void ToUInt64_Base16_MaxValue ()
+               {
+                       Assert.AreEqual (UInt64.MaxValue, Convert.ToUInt64 (UInt64.MaxValue.ToString ("x"), 16));
+               }
+
+               [Test]
+               [ExpectedException (typeof (OverflowException))]
+               public void ToUInt64_Base16_MaxValueOverflow ()
+               {
+                       Convert.ToInt64 (UInt64.MaxValue.ToString ("x") + "0", 16);
+               }
+
                [Test] // bug #481687
                public void ChangeType_Value_IConvertible ()
                {
index 843f48ca330f57c859aebe41697dae1c9d0c49b6..2458b9831a608b1993d7e8682370f6bad6132a17 100644 (file)
@@ -1069,6 +1069,27 @@ namespace MonoTests.System
                        action_int (42);
                }
 
+               struct FooStruct {
+                       public int i, j, k, l;
+
+                       public int GetProp (int a, int b, int c, int d) {
+                               return i;
+                       }
+               }
+
+               delegate int ByRefDelegate (ref FooStruct s, int a, int b, int c, int d);
+
+#if MONOTOUCH
+               [Category ("NotWorking")]
+#endif
+               [Test]
+               public void CallVirtVType ()
+               {
+                       var action = (ByRefDelegate)Delegate.CreateDelegate (typeof (ByRefDelegate), null, typeof (FooStruct).GetMethod ("GetProp"));
+                       var s = new FooStruct () { i = 42 };
+                       Assert.AreEqual (42, action (ref s, 1, 2, 3, 4));
+               }
+
                class Foo {
 
                        public void Bar ()
index fda910f99ee12b59c4c1827d5df2b2d6b267126e..74570292985d0e3c02e90e5d03a21dd4521dbb03 100644 (file)
@@ -651,6 +651,13 @@ public class StringTest
                }
        }
 
+       [Test]
+       [ExpectedException (typeof (ArgumentOutOfRangeException))]
+       public void CompareOrdinal_InvalidCount()
+       {
+               string.CompareOrdinal ("a", 0, "b", 0, -1);
+       }
+
        [Test]
        public void CompareOrdinalWithOffset ()
        {
index 940b1290ea323a4c12dc25ef5ff342acb7672a18..62ae67cfc814755576e69e8a862864bc5bc71e36 100644 (file)
@@ -55,16 +55,17 @@ namespace MonoTests.System
                        }
                
                        [Test]
-                       [ExpectedException (typeof (ArgumentOutOfRangeException))]
                        public void EndBeforeStart ()
                        {
-                               if (Environment.OSVersion.Platform != PlatformID.Unix)
-                                       throw new ArgumentOutOfRangeException ();;
                                DateTime dateStart = new DateTime (2007,01,01);
                                DateTime dateEnd = new DateTime (2006,01,01);
                                TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
                                TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
-                               TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
+                               try {
+                                       TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (1,0,0), daylightTransitionStart, daylightTransitionEnd);
+                                       Assert.Fail ();
+                               } catch (ArgumentException) {
+                               }
                        }
                
                        [Test]
@@ -79,7 +80,6 @@ namespace MonoTests.System
                        }
                
                        [Test]
-                       [ExpectedException (typeof (ArgumentOutOfRangeException))]
                        public void DeltaNotInSeconds ()
                        {
                                if (Environment.OSVersion.Platform != PlatformID.Unix)
@@ -88,7 +88,11 @@ namespace MonoTests.System
                                DateTime dateEnd = new DateTime (2008,01,01);
                                TimeZoneInfo.TransitionTime daylightTransitionStart = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 03, 11);
                                TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
-                               TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart, daylightTransitionEnd);
+                               try {
+                                       TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart, daylightTransitionEnd);
+                                       Assert.Fail ();
+                               } catch (ArgumentException) {
+                               }
                        }
                }
        
index 14c1246a4e6b50c2bec1fd30200a12aa26aaa51d..73bed53d10f0686626a00ea00d3e2d7de1edbcda 100644 (file)
@@ -802,6 +802,16 @@ namespace MonoTests.System
                                }               
                        }
                #endif
+
+                       [Test]
+                       public void Dublin ()
+                       {
+                               if (Environment.OSVersion.Platform != PlatformID.Unix)
+                                       Assert.Ignore ();
+                               // Europe/Dublin has a DST offset of 34 minutes and 39 seconds in 1916.
+                               TimeZoneInfo.FindSystemTimeZoneById ("Europe/Dublin");
+                       }
+
                }
                
                [TestFixture]
index 965d2e078e36d3f267b9fcfead09bdca0e99d02b..19e2cb5c49d3fc7bfcf57f254ff011b9159aa9c7 100644 (file)
@@ -27,13 +27,13 @@ public class TimeZoneTest {
                Assert.AreEqual("CEST", t1.DaylightName, "A02");
        
                DaylightTime d1 = t1.GetDaylightChanges (2002);
-               Assert.AreEqual("03/31/2002 02:00:00", d1.Start.ToString ("G"), "A03");
-               Assert.AreEqual("10/27/2002 03:00:00", d1.End.ToString ("G"), "A04");
+               Assert.AreEqual("03/31/2002 02:00:00", d1.Start.ToString ("G", CultureInfo.InvariantCulture), "A03");
+               Assert.AreEqual("10/27/2002 03:00:00", d1.End.ToString ("G", CultureInfo.InvariantCulture), "A04");
                Assert.AreEqual(36000000000L, d1.Delta.Ticks, "A05");
        
                DaylightTime d2 = t1.GetDaylightChanges (1996);
-               Assert.AreEqual("03/31/1996 02:00:00", d2.Start.ToString ("G"), "A06");
-               Assert.AreEqual("10/27/1996 03:00:00", d2.End.ToString ("G"), "A07");
+               Assert.AreEqual("03/31/1996 02:00:00", d2.Start.ToString ("G", CultureInfo.InvariantCulture), "A06");
+               Assert.AreEqual("10/27/1996 03:00:00", d2.End.ToString ("G", CultureInfo.InvariantCulture), "A07");
                Assert.AreEqual(36000000000L, d2.Delta.Ticks, "A08");
        
                DateTime d3 = new DateTime (2002,2,25);
@@ -46,6 +46,11 @@ public class TimeZoneTest {
                Assert.AreEqual(36000000000L, t1.GetUtcOffset (d3).Ticks, "A12");
                Assert.AreEqual(72000000000L, t1.GetUtcOffset (d4).Ticks, "A13");
                Assert.AreEqual(36000000000L, t1.GetUtcOffset (d5).Ticks, "A14");
+
+               // Test TimeZone methods with UTC DateTime in DST.
+               DateTime d6 = d4.ToUniversalTime ();
+               Assert.AreEqual(false, t1.IsDaylightSavingTime (d6), "A15");
+               Assert.AreEqual(0, t1.GetUtcOffset (d6).Ticks, "A16");
        }
 
        private void EST (TimeZone t1) 
@@ -55,25 +60,31 @@ public class TimeZoneTest {
                //Assert.AreEqual("Eastern Daylight Time", t1.DaylightName, "B02");
 
                DaylightTime d1 = t1.GetDaylightChanges (2002);
-               Assert.AreEqual("04/07/2002 02:00:00", d1.Start.ToString ("G"), "B03");
-               Assert.AreEqual("10/27/2002 02:00:00", d1.End.ToString ("G"), "B04");
+               Assert.AreEqual("04/07/2002 02:00:00", d1.Start.ToString ("G", CultureInfo.InvariantCulture), "B03");
+               Assert.AreEqual("10/27/2002 02:00:00", d1.End.ToString ("G", CultureInfo.InvariantCulture), "B04");
                Assert.AreEqual(36000000000L, d1.Delta.Ticks, "B05");
 
                DaylightTime d2 = t1.GetDaylightChanges (1996);
-               Assert.AreEqual("04/07/1996 02:00:00", d2.Start.ToString ("G"), "B06");
-               Assert.AreEqual("10/27/1996 02:00:00", d2.End.ToString ("G"), "B07");
+               Assert.AreEqual("04/07/1996 02:00:00", d2.Start.ToString ("G", CultureInfo.InvariantCulture), "B06");
+               Assert.AreEqual("10/27/1996 02:00:00", d2.End.ToString ("G", CultureInfo.InvariantCulture), "B07");
                Assert.AreEqual(36000000000L, d2.Delta.Ticks, "B08");
 
                DateTime d3 = new DateTime (2002,2,25);
                Assert.AreEqual(false, t1.IsDaylightSavingTime (d3), "B09");
                DateTime d4 = new DateTime (2002,4,8);
                Assert.AreEqual(true, t1.IsDaylightSavingTime (d4), "B10");
+               
                DateTime d5 = new DateTime (2002,11,4);
                Assert.AreEqual(false, t1.IsDaylightSavingTime (d5), "B11");
 
                Assert.AreEqual(-180000000000L, t1.GetUtcOffset (d3).Ticks, "B12");
                Assert.AreEqual(-144000000000L, t1.GetUtcOffset (d4).Ticks, "B13");
                Assert.AreEqual(-180000000000L, t1.GetUtcOffset (d5).Ticks, "B14");
+
+               // Test TimeZone methods with UTC DateTime in DST.
+               DateTime d6 = d4.ToUniversalTime ();
+               Assert.AreEqual(false, t1.IsDaylightSavingTime (d6), "B15");
+               Assert.AreEqual(0, t1.GetUtcOffset (d6).Ticks, "B16");
        }
 
        private void TST (TimeZone t1) 
@@ -101,13 +112,13 @@ public class TimeZoneTest {
                Assert.IsTrue("BST" == t1.DaylightName || "IST" == t1.DaylightName, "D02");
        
                DaylightTime d1 = t1.GetDaylightChanges (2002);
-               Assert.AreEqual("03/31/2002 01:00:00", d1.Start.ToString ("G"), "D03");
-               Assert.AreEqual("10/27/2002 02:00:00", d1.End.ToString ("G"), "D04");
+               Assert.AreEqual("03/31/2002 01:00:00", d1.Start.ToString ("G", CultureInfo.InvariantCulture), "D03");
+               Assert.AreEqual("10/27/2002 02:00:00", d1.End.ToString ("G", CultureInfo.InvariantCulture), "D04");
                Assert.AreEqual(36000000000L, d1.Delta.Ticks, "D05");
        
                DaylightTime d2 = t1.GetDaylightChanges (1996);
-               Assert.AreEqual("03/31/1996 01:00:00", d2.Start.ToString ("G"), "D06");
-               Assert.AreEqual("10/27/1996 02:00:00", d2.End.ToString ("G"), "D07");
+               Assert.AreEqual("03/31/1996 01:00:00", d2.Start.ToString ("G", CultureInfo.InvariantCulture), "D06");
+               Assert.AreEqual("10/27/1996 02:00:00", d2.End.ToString ("G", CultureInfo.InvariantCulture), "D07");
                Assert.AreEqual(36000000000L, d2.Delta.Ticks, "D08");
        
                DateTime d3 = new DateTime (2002,2,25);
@@ -120,6 +131,11 @@ public class TimeZoneTest {
                Assert.AreEqual(0L, t1.GetUtcOffset (d3).Ticks, "D12");
                Assert.AreEqual(36000000000L, t1.GetUtcOffset (d4).Ticks, "D13");
                Assert.AreEqual(0L, t1.GetUtcOffset (d5).Ticks, "D14");
+
+               // Test TimeZone methods with UTC DateTime in DST.
+               DateTime d6 = d4.ToUniversalTime ();
+               Assert.AreEqual(false, t1.IsDaylightSavingTime (d6), "D15");
+               Assert.AreEqual(0, t1.GetUtcOffset (d6).Ticks, "D16");
        }
 
        private void NZST(TimeZone t1) {
@@ -127,13 +143,13 @@ public class TimeZoneTest {
                Assert.AreEqual("NZDT", t1.DaylightName, "E02");
 
                DaylightTime d1 = t1.GetDaylightChanges (2013);
-               Assert.AreEqual("09/29/2013 02:00:00", d1.Start.ToString ("G"), "E03");
-               Assert.AreEqual("04/07/2013 03:00:00", d1.End.ToString ("G"), "E04");
+               Assert.AreEqual("09/29/2013 02:00:00", d1.Start.ToString ("G", CultureInfo.InvariantCulture), "E03");
+               Assert.AreEqual("04/07/2013 03:00:00", d1.End.ToString ("G", CultureInfo.InvariantCulture), "E04");
                Assert.AreEqual(36000000000L, d1.Delta.Ticks, "E05");
 
                DaylightTime d2 = t1.GetDaylightChanges (2001);
-               Assert.AreEqual("10/07/2001 02:00:00", d2.Start.ToString ("G"), "E06");
-               Assert.AreEqual("03/18/2001 03:00:00", d2.End.ToString ("G"), "E07");
+               Assert.AreEqual("10/07/2001 02:00:00", d2.Start.ToString ("G", CultureInfo.InvariantCulture), "E06");
+               Assert.AreEqual("03/18/2001 03:00:00", d2.End.ToString ("G", CultureInfo.InvariantCulture), "E07");
                Assert.AreEqual(36000000000L, d2.Delta.Ticks, "E08");
 
                DateTime d3 = new DateTime(2013,02,15);
@@ -146,10 +162,14 @@ public class TimeZoneTest {
                Assert.AreEqual(36000000000L /*hour*/ * 13L, t1.GetUtcOffset (d3).Ticks, "E12");
                Assert.AreEqual(36000000000L /*hour*/ * 12L, t1.GetUtcOffset (d4).Ticks, "E13");
                Assert.AreEqual(36000000000L /*hour*/ * 13L, t1.GetUtcOffset (d5).Ticks, "E14");
+
+               // Test TimeZone methods with UTC DateTime in DST.
+               DateTime d6 = d5.ToUniversalTime ();
+               Assert.AreEqual(false, t1.IsDaylightSavingTime (d6), "E15");
+               Assert.AreEqual(0, t1.GetUtcOffset (d6).Ticks, "E16");
        }
 
        [Test]
-       [Culture ("")]
        public void TestCtors ()
        {
                TimeZone t1 = TimeZone.CurrentTimeZone;
index b308e9eed298f9c6ef85a5bf7631d9adc46fb648..9f87bcd74d19a29f1b4e41b2d7171f2c1af2835c 100644 (file)
@@ -3058,6 +3058,9 @@ namespace MonoTests.System
                }
 
                [Test]
+#if MONOTOUCH
+               [ExpectedException (typeof (NotSupportedException))]
+#endif
                public void MakeGenericType_NestedUserDefinedType ()
                {
                        Type ut = new UserType (new UserType (typeof (int)));
@@ -3072,6 +3075,9 @@ namespace MonoTests.System
                }
                
                [Test]
+#if MONOTOUCH
+               [ExpectedException (typeof (NotSupportedException))]
+#endif
                public void TestMakeGenericType_UserDefinedType_DotNet20SP1 () 
                {
                        Type ut = new UserType(typeof(int));
index 079fc0d66883314d199d1a016145dd715de2c239..19a34311a569d1e44b2ad75153722f0d253676b4 100644 (file)
@@ -13,13 +13,6 @@ Microsoft.Win32/RegistryView.cs
 Microsoft.Win32/UnixRegistryApi.cs
 Microsoft.Win32/Win32RegistryApi.cs
 Microsoft.Win32/Win32ResultCode.cs
-Microsoft.Win32.SafeHandles/CriticalHandleZeroOrMinusOneIsInvalid.cs
-Microsoft.Win32.SafeHandles/CriticalHandleMinusOneIsInvalid.cs
-Microsoft.Win32.SafeHandles/SafeHandleZeroOrMinusOneIsInvalid.cs
-Microsoft.Win32.SafeHandles/SafeHandleMinusOneIsInvalid.cs
-Microsoft.Win32.SafeHandles/SafeFileHandle.cs
-Microsoft.Win32.SafeHandles/SafeRegistryHandle.cs
-Microsoft.Win32.SafeHandles/SafeWaitHandle.cs
 Mono.Globalization.Unicode/CodePointIndexer.cs
 Mono.Globalization.Unicode/MSCompatUnicodeTable.cs
 Mono.Globalization.Unicode/MSCompatUnicodeTableUtil.cs
@@ -88,31 +81,16 @@ System/AppDomain.cs
 System/AppDomainInitializer.cs
 System/AppDomainManager.cs
 System/AppDomainSetup.cs
-System/ApplicationId.cs
 System/ApplicationIdentity.cs
 System/ArgIterator.cs
 System/Array.cs
 System/AssemblyLoadEventArgs.cs
 System/AssemblyLoadEventHandler.cs
-System/AsyncCallback.cs
-System/AttributeTargets.cs
-System/BadImageFormatException.cs
-System/Buffer.cs
-System/CLSCompliantAttribute.cs
 System/CStreamReader.cs
 System/CStreamWriter.cs
 System/Console.cs
 System/Console.iOS.cs
-System/ConsoleCancelEventArgs.cs
-System/ConsoleCancelEventHandler.cs
-System/ConsoleColor.cs
 System/ConsoleDriver.cs
-System/ConsoleKey.cs
-System/ConsoleKeyInfo.cs
-System/ConsoleModifiers.cs
-System/ConsoleSpecialKey.cs
-System/ContextBoundObject.cs
-System/ContextStaticAttribute.cs
 System/ControlCharacters.cs
 System/CrossAppDomainDelegate.cs
 System/Delegate.cs
@@ -122,36 +100,15 @@ System/Double.cs
 System/EmptyArray.cs
 System/Environment.cs
 System/EnvironmentVariableTarget.cs
-System/EventArgs.cs
-System/EventHandler.cs
 System/Exception.cs
-System/FlagsAttribute.cs
-System/Funcs.cs
 System/GC.cs
 System/GCCollectionMode.cs
 System/GCNotificationStatus.cs
 System/Guid.cs
 System/Guid.MonoTouch.cs
-System/IAppDomainSetup.cs
-System/IAsyncResult.cs
-System/IObservable.cs
-System/IObserver.cs
-System/ICloneable.cs
-System/IComparable.cs
-System/IEquatable.cs
 System/IConsoleDriver.cs
-System/IConvertible.cs
-System/ICustomFormatter.cs
-System/IDisposable.cs
-System/IFormatProvider.cs
-System/IFormattable.cs
 System/IntPtr.cs
-System/InvalidTimeZoneException.cs
-System/IProgress.cs
-System/IServiceProvider.cs
 System/KnownTerminals.cs
-System/LoaderOptimization.cs
-System/LoaderOptimizationAttribute.cs
 System/LocalDataStoreSlot.cs
 System/MarshalByRefObject.cs
 System/Math.cs
@@ -161,16 +118,12 @@ System/MonoCustomAttrs.cs
 System/MonoListItem.cs
 System/MonoType.cs
 System/MonoTouchAOTHelper.cs
-System/MTAThreadAttribute.cs
 System/MulticastDelegate.cs
-System/NonSerializedAttribute.cs
 System/NullConsoleDriver.cs
 System/Nullable.cs
 System/NumberFormatter.cs
 System/Object.cs
-System/ObsoleteAttribute.cs
 System/OperatingSystem.cs
-System/ParamArrayAttribute.cs
 System/PlatformID.cs
 System/ResolveEventArgs.cs
 System/ResolveEventHandler.cs
@@ -179,28 +132,21 @@ System/RuntimeFieldHandle.cs
 System/RuntimeMethodHandle.cs
 System/RuntimeTypeHandle.cs
 System/ModuleHandle.cs
-System/SerializableAttribute.cs
 System/Single.cs
-System/STAThreadAttribute.cs
 System/StringComparison.cs
 System/TermInfoBooleans.cs
 System/TermInfoDriver.cs
 System/TermInfoNumbers.cs
 System/TermInfoReader.cs
 System/TermInfoStrings.cs
-System/ThreadStaticAttribute.cs
 System/TimeZone.cs
 System/TimeZoneInfo.cs
-System/TimeZoneInfo.AdjustmentRule.cs
 System/TimeZoneInfo.Android.cs
 System/TimeZoneInfo.MonoTouch.cs
 System/TimeZoneInfo.Serialization.cs
-System/TimeZoneInfo.TransitionTime.cs
-System/TimeZoneNotFoundException.cs
 ../../build/common/MonoTODOAttribute.cs
 System/TypeSpec.cs
 System/TypeCode.cs
-System/TypeLoadException.cs
 System/UIntPtr.cs
 System/ValueType.cs
 System/Variant.cs
@@ -208,7 +154,6 @@ System/Void.cs
 System/WeakReference.cs
 System/WeakReference_T.cs
 System/WindowsConsoleDriver.cs
-System/_AppDomain.cs
 System/__ComObject.cs
 System.Configuration.Assemblies/AssemblyHash.cs
 System.Configuration.Assemblies/AssemblyHashAlgorithm.cs
@@ -242,44 +187,31 @@ System.Diagnostics.SymbolStore/SymbolToken.cs
 System.Diagnostics.SymbolStore/SymDocumentType.cs
 System.Diagnostics.SymbolStore/SymLanguageType.cs
 System.Diagnostics.SymbolStore/SymLanguageVendor.cs
-System.Globalization/CalendarAlgorithmType.cs
-System.Globalization/CalendarWeekRule.cs
 System.Globalization/CultureInfo.cs
-System.Globalization/DateTimeStyles.cs
-System.Globalization/DigitShapes.cs
-System.Globalization/GregorianCalendarTypes.cs
 System.Globalization/IdnMapping.cs
 System.Globalization/RegionInfo.cs
 System.Globalization/RegionInfo.MonoTouch.cs
-System.Globalization/TextInfo.cs
 System.IO/Directory.cs
 System.IO/DirectoryInfo.cs
-System.IO/DirectoryNotFoundException.cs
 System.IO/DriveInfo.cs
-System.IO/DriveNotFoundException.cs
 System.IO/DriveType.cs
-System.IO/EndOfStreamException.cs
 System.IO/File.cs
 System.IO/FileAccess.cs
 System.IO/FileAttributes.cs
 System.IO/FileInfo.cs
-System.IO/FileLoadException.cs
 System.IO/FileMode.cs
-System.IO/FileNotFoundException.cs
 System.IO/FileOptions.cs
 System.IO/FileShare.cs
 System.IO/FileStream.cs
 System.IO/FileStreamAsyncResult.cs
 System.IO/FileSystemInfo.cs
 System.IO/HGlobalUnmanagedMemoryStream.cs
-System.IO/IOException.cs
 System.IO/LogcatTextWriter.cs
 System.IO/MonoIO.cs
 System.IO/MonoIOError.cs
 System.IO/MonoFileType.cs
 System.IO/MonoIOStat.cs
 System.IO/Path.cs
-System.IO/PathTooLongException.cs
 System.IO/SearchOption.cs
 System.IO/SearchPattern.cs
 System.IO/SeekOrigin.cs
@@ -381,11 +313,6 @@ System.Runtime/GCSettings.cs
 System.Runtime/MemoryFailPoint.cs
 System.Runtime.CompilerServices/ConditionalWeakTable.cs
 System.Runtime.CompilerServices/RuntimeHelpers.cs
-System.Runtime.ConstrainedExecution/CriticialFinalizerObject.cs
-System.Runtime.ConstrainedExecution/CER.cs
-System.Runtime.ConstrainedExecution/Consistency.cs
-System.Runtime.ConstrainedExecution/PrePrepareMethodAttribute.cs
-System.Runtime.ConstrainedExecution/ReliabilityContractAttribute.cs
 System.Runtime.Hosting/ActivationArguments.cs
 System.Runtime.Hosting/ApplicationActivator.cs
 System.Runtime.InteropServices/_Activator.cs
@@ -419,64 +346,37 @@ System.Runtime.InteropServices/_SignatureHelper.cs
 System.Runtime.InteropServices/_Thread.cs
 System.Runtime.InteropServices/_Type.cs
 System.Runtime.InteropServices/_TypeBuilder.cs
-System.Runtime.InteropServices/AllowReversePInvokeCallsAttribute.cs
 System.Runtime.InteropServices/ArrayWithOffset.cs
 System.Runtime.InteropServices/AssemblyRegistrationFlags.cs
-System.Runtime.InteropServices/AutomationProxyAttribute.cs
-System.Runtime.InteropServices/BestFitMappingAttribute.cs
 System.Runtime.InteropServices/BIND_OPTS.cs
 System.Runtime.InteropServices/BINDPTR.cs
 System.Runtime.InteropServices/BStrWrapper.cs
 System.Runtime.InteropServices/CALLCONV.cs
 System.Runtime.InteropServices/CallingConvention.cs
 System.Runtime.InteropServices/CharSet.cs
-System.Runtime.InteropServices/ClassInterfaceAttribute.cs
-System.Runtime.InteropServices/ClassInterfaceType.cs
-System.Runtime.InteropServices/CoClassAttribute.cs
-System.Runtime.InteropServices/ComAliasNameAttribute.cs
-System.Runtime.InteropServices/ComCompatibleVersionAttribute.cs
-System.Runtime.InteropServices/ComConversionLossAttribute.cs
-System.Runtime.InteropServices/ComDefaultInterfaceAttribute.cs
 System.Runtime.InteropServices/COMException.cs
-System.Runtime.InteropServices/ComEventInterfaceAttribute.cs
-System.Runtime.InteropServices/ComImportAttribute.cs
-System.Runtime.InteropServices/ComInterfaceType.cs
 System.Runtime.InteropServices/ComMemberType.cs
-System.Runtime.InteropServices/ComRegisterFunctionAttribute.cs
-System.Runtime.InteropServices/ComSourceInterfacesAttribute.cs
-System.Runtime.InteropServices/ComUnregisterFunctionAttribute.cs
-System.Runtime.InteropServices/ComVisible.cs
-System.Runtime.InteropServices/CONNECTDATA.cs
 System.Runtime.InteropServices/CriticalHandle.cs
 System.Runtime.InteropServices/CurrencyWrapper.cs
-System.Runtime.InteropServices/DefaultCharSetAttribute.cs
-System.Runtime.InteropServices/DllImportSearchPath.cs
-System.Runtime.InteropServices/DefaultDllImportSearchPathsAttribute.cs
 System.Runtime.InteropServices/DESCKIND.cs
 System.Runtime.InteropServices/DispatchWrapper.cs
 System.Runtime.InteropServices/DISPPARAMS.cs
-System.Runtime.InteropServices/DispIdAttribute.cs
-System.Runtime.InteropServices/DllImportAttribute.cs
 System.Runtime.InteropServices/ELEMDESC.cs
 System.Runtime.InteropServices/ErrorWrapper.cs
 System.Runtime.InteropServices/EXCEPINFO.cs
 System.Runtime.InteropServices/ExporterEventKind.cs
 System.Runtime.InteropServices/ExtensibleClassFactory.cs
 System.Runtime.InteropServices/ExternalException.cs
-System.Runtime.InteropServices/FieldOffsetAttribute.cs
 System.Runtime.InteropServices/FILETIME.cs
 System.Runtime.InteropServices/FUNCDESC.cs
 System.Runtime.InteropServices/FUNCFLAGS.cs
 System.Runtime.InteropServices/FUNCKIND.cs
 System.Runtime.InteropServices/GCHandle.cs
 System.Runtime.InteropServices/GCHandleType.cs
-System.Runtime.InteropServices/GuidAttribute.cs
 System.Runtime.InteropServices/HandleRef.cs
 System.Runtime.InteropServices/ICustomAdapter.cs
 System.Runtime.InteropServices/ICustomFactory.cs
 System.Runtime.InteropServices/ICustomMarshaler.cs
-System.Runtime.InteropServices/IDispatchImplAttribute.cs
-System.Runtime.InteropServices/IDispatchImplType.cs
 System.Runtime.InteropServices/IDLDESC.cs
 System.Runtime.InteropServices/IDLFLAG.cs
 System.Runtime.InteropServices/IErrorInfo.cs
@@ -487,13 +387,9 @@ System.Runtime.InteropServices/ITypeLibConverter.cs
 System.Runtime.InteropServices/ITypeLibExporterNameProvider.cs
 System.Runtime.InteropServices/ITypeLibExporterNotifySink.cs
 System.Runtime.InteropServices/ITypeLibImporterNotifySink.cs
-System.Runtime.InteropServices/ImportedFromTypeLibAttribute.cs
 System.Runtime.InteropServices/ImporterEventKind.cs
-System.Runtime.InteropServices/InAttribute.cs
-System.Runtime.InteropServices/InterfaceTypeAttribute.cs
 System.Runtime.InteropServices/InvalidComObjectException.cs
 System.Runtime.InteropServices/InvalidOleVariantTypeException.cs
-System.Runtime.InteropServices/LCIDConversionAttribute.cs
 System.Runtime.InteropServices/LIBFLAGS.cs
 System.Runtime.InteropServices/LayoutKind.cs
 System.Runtime.InteropServices/ManagedErrorInfo.cs
@@ -501,48 +397,31 @@ System.Runtime.InteropServices/Marshal.cs
 System.Runtime.InteropServices/MarshalAsAttribute.cs
 System.Runtime.InteropServices/MarshalDirectiveException.cs
 System.Runtime.InteropServices/ObjectCreationDelegate.cs
-System.Runtime.InteropServices/OptionalAttribute.cs
-System.Runtime.InteropServices/OutAttribute.cs
 System.Runtime.InteropServices/PARAMDESC.cs
 System.Runtime.InteropServices/PARAMFLAG.cs
-System.Runtime.InteropServices/PreserveSigAttribute.cs
-System.Runtime.InteropServices/PrimaryInteropAssemblyAttribute.cs
 System.Runtime.InteropServices/RegistrationClassContext.cs
 System.Runtime.InteropServices/RegistrationConnectionType.cs
 System.Runtime.InteropServices/SEHException.cs
 System.Runtime.InteropServices/STATSTG.cs
-System.Runtime.InteropServices/ProgIdAttribute.cs
 System.Runtime.InteropServices/RegistrationServices.cs
 System.Runtime.InteropServices/RuntimeEnvironment.cs
 System.Runtime.InteropServices/SafeArrayRankMismatchException.cs
 System.Runtime.InteropServices/SafeArrayTypeMismatchException.cs
 System.Runtime.InteropServices/SafeBuffer.cs
 System.Runtime.InteropServices/SafeHandle.cs
-System.Runtime.InteropServices/SetWin32ContextInIDispatchAttribute.cs
-System.Runtime.InteropServices/StructLayoutAttribute.cs
 System.Runtime.InteropServices/SYSKIND.cs
 System.Runtime.InteropServices/TYPEATTR.cs
 System.Runtime.InteropServices/TYPEDESC.cs
 System.Runtime.InteropServices/TYPEFLAGS.cs
 System.Runtime.InteropServices/TYPEKIND.cs
 System.Runtime.InteropServices/TYPELIBATTR.cs
-System.Runtime.InteropServices/TypeIdentifierAttribute.cs
 System.Runtime.InteropServices/TypeLibConverter.cs
 System.Runtime.InteropServices/TypeLibExporterFlags.cs
-System.Runtime.InteropServices/TypeLibFuncAttribute.cs
-System.Runtime.InteropServices/TypeLibFuncFlags.cs
-System.Runtime.InteropServices/TypeLibImportClassAttribute.cs
 System.Runtime.InteropServices/TypeLibImporterFlags.cs
-System.Runtime.InteropServices/TypeLibTypeAttribute.cs
-System.Runtime.InteropServices/TypeLibTypeFlags.cs
-System.Runtime.InteropServices/TypeLibVarAttribute.cs
-System.Runtime.InteropServices/TypeLibVarFlags.cs
-System.Runtime.InteropServices/TypeLibVersionAttribute.cs
 System.Runtime.InteropServices/UCOMIBindCtx.cs
 System.Runtime.InteropServices/UCOMIConnectionPoint.cs
 System.Runtime.InteropServices/UCOMIConnectionPointContainer.cs
 System.Runtime.InteropServices/UCOMIEnumConnectionPoints.cs
-System.Runtime.InteropServices/UCOMIEnumConnections.cs
 System.Runtime.InteropServices/UCOMIEnumMoniker.cs
 System.Runtime.InteropServices/UCOMIEnumString.cs
 System.Runtime.InteropServices/UCOMIEnumVARIANT.cs
@@ -554,59 +433,10 @@ System.Runtime.InteropServices/UCOMITypeComp.cs
 System.Runtime.InteropServices/UCOMITypeInfo.cs
 System.Runtime.InteropServices/UCOMITypeLib.cs
 System.Runtime.InteropServices/UnknownWrapper.cs
-System.Runtime.InteropServices/UnmanagedFunctionPointerAttribute.cs
-System.Runtime.InteropServices/UnmanagedType.cs
 System.Runtime.InteropServices/VARDESC.cs
-System.Runtime.InteropServices/VarEnum.cs
 System.Runtime.InteropServices/VARFLAGS.cs
 System.Runtime.InteropServices/VariantWrapper.cs
-System.Runtime.InteropServices.ComTypes/BINDPTR.cs
-System.Runtime.InteropServices.ComTypes/BIND_OPTS.cs
-System.Runtime.InteropServices.ComTypes/CALLCONV.cs
-System.Runtime.InteropServices.ComTypes/CONNECTDATA.cs
-System.Runtime.InteropServices.ComTypes/DESCKIND.cs
-System.Runtime.InteropServices.ComTypes/DISPPARAMS.cs
-System.Runtime.InteropServices.ComTypes/ELEMDESC.cs
-System.Runtime.InteropServices.ComTypes/EXCEPINFO.cs
-System.Runtime.InteropServices.ComTypes/FILETIME.cs
-System.Runtime.InteropServices.ComTypes/FUNCDESC.cs
-System.Runtime.InteropServices.ComTypes/FUNCFLAGS.cs
-System.Runtime.InteropServices.ComTypes/FUNCKIND.cs
-System.Runtime.InteropServices.ComTypes/IBindCtx.cs
-System.Runtime.InteropServices.ComTypes/IConnectionPoint.cs
-System.Runtime.InteropServices.ComTypes/IConnectionPointContainer.cs
-System.Runtime.InteropServices.ComTypes/IDLDESC.cs
-System.Runtime.InteropServices.ComTypes/IDLFLAG.cs
-System.Runtime.InteropServices.ComTypes/IEnumConnectionPoints.cs
-System.Runtime.InteropServices.ComTypes/IEnumConnections.cs
-System.Runtime.InteropServices.ComTypes/IEnumMoniker.cs
-System.Runtime.InteropServices.ComTypes/IEnumString.cs
-System.Runtime.InteropServices.ComTypes/IEnumVARIANT.cs
-System.Runtime.InteropServices.ComTypes/IMoniker.cs
-System.Runtime.InteropServices.ComTypes/IMPLTYPEFLAGS.cs
-System.Runtime.InteropServices.ComTypes/INVOKEKIND.cs
-System.Runtime.InteropServices.ComTypes/IPersistFile.cs
-System.Runtime.InteropServices.ComTypes/IRunningObjectTable.cs
-System.Runtime.InteropServices.ComTypes/IStream.cs
-System.Runtime.InteropServices.ComTypes/ITypeComp.cs
-System.Runtime.InteropServices.ComTypes/ITypeInfo.cs
-System.Runtime.InteropServices.ComTypes/ITypeInfo2.cs
-System.Runtime.InteropServices.ComTypes/ITypeLib.cs
-System.Runtime.InteropServices.ComTypes/ITypeLib2.cs
-System.Runtime.InteropServices.ComTypes/LIBFLAGS.cs
-System.Runtime.InteropServices.ComTypes/PARAMDESC.cs
-System.Runtime.InteropServices.ComTypes/PARAMFLAG.cs
-System.Runtime.InteropServices.ComTypes/STATSTG.cs
-System.Runtime.InteropServices.ComTypes/SYSKIND.cs
-System.Runtime.InteropServices.ComTypes/TYPEATTR.cs
-System.Runtime.InteropServices.ComTypes/TYPEDESC.cs
-System.Runtime.InteropServices.ComTypes/TYPEFLAGS.cs
-System.Runtime.InteropServices.ComTypes/TYPEKIND.cs
-System.Runtime.InteropServices.ComTypes/TYPELIBATTR.cs
-System.Runtime.InteropServices.ComTypes/VARDESC.cs
-System.Runtime.InteropServices.ComTypes/VARFLAGS.cs
-System.Runtime.InteropServices.ComTypes/VARKIND.cs
-System.Runtime.InteropServices.Expando/IExpando.cs
+
 System.Runtime.InteropServices.WindowsRuntime/DefaultInterfaceAttribute.cs
 System.Runtime.InteropServices.WindowsRuntime/DesignerNamespaceResolveEventArgs.cs
 System.Runtime.InteropServices.WindowsRuntime/EventRegistrationToken.cs
@@ -798,14 +628,6 @@ System.Runtime.Remoting.Services/EnterpriseServicesHelper.cs
 System.Runtime.Remoting.Services/ITrackingHandler.cs
 System.Runtime.Remoting.Services/TrackingServices.cs
 System.Runtime.Versioning/CompatibilitySwitch.cs
-System.Runtime.Versioning/ComponentGuaranteesAttribute.cs
-System.Runtime.Versioning/ComponentGuaranteesOptions.cs
-System.Runtime.Versioning/ResourceConsumptionAttribute.cs
-System.Runtime.Versioning/ResourceExposureAttribute.cs
-System.Runtime.Versioning/ResourceScope.cs
-System.Runtime.Versioning/TargetFrameworkAttribute.cs
-System.Runtime.Versioning/VersioningHelper.cs
-System.Security/AllowPartiallyTrustedCallersAttribute.cs
 System.Security/CodeAccessPermission.cs
 System.Security/HostProtectionException.cs
 System.Security/HostSecurityManager.cs
@@ -822,22 +644,13 @@ System.Security/PolicyLevelType.cs
 System.Security/SecureString.cs
 System.Security/SecurityContext.cs
 System.Security/SecurityContextSource.cs
-System.Security/SecurityCriticalAttribute.cs
-System.Security/SecurityCriticalScope.cs
 System.Security/SecurityElement.cs
 System.Security/SecurityFrame.cs
 System.Security/SecurityException.cs
 System.Security/SecurityManager.cs
 System.Security/SecurityManager_mobile.cs
-System.Security/SecurityRuleSet.cs
-System.Security/SecurityRulesAttribute.cs
-System.Security/SecuritySafeCriticalAttribute.cs
 System.Security/SecurityState.cs
-System.Security/SecurityTransparentAttribute.cs
-System.Security/SecurityTreatAsSafeAttribute.cs
 System.Security/SecurityZone.cs
-System.Security/SuppressUnmanagedCodeSecurityAttribute.cs
-System.Security/UnverifiableCodeAttribute.cs
 System.Security/VerificationException.cs
 System.Security/XmlSyntaxException.cs
 System.Security.AccessControl/AccessControlActions.cs
@@ -908,92 +721,22 @@ System.Security.AccessControl/ResourceType.cs
 System.Security.AccessControl/SddlAccessRight.cs
 System.Security.AccessControl/SecurityInfos.cs
 System.Security.AccessControl/SystemAcl.cs
-System.Security.Cryptography/Aes.cs
-System.Security.Claims/Claim.cs
-System.Security.Claims/ClaimsIdentity.cs
-System.Security.Claims/ClaimsPrincipal.cs
-System.Security.Claims/ClaimTypes.cs
-System.Security.Claims/ClaimValueTypes.cs
-System.Security.Cryptography/AsymmetricAlgorithm.cs
-System.Security.Cryptography/AsymmetricKeyExchangeDeformatter.cs
-System.Security.Cryptography/AsymmetricKeyExchangeFormatter.cs
-System.Security.Cryptography/AsymmetricSignatureDeformatter.cs
-System.Security.Cryptography/AsymmetricSignatureFormatter.cs
-System.Security.Cryptography/Base64Constants.cs
-System.Security.Cryptography/CipherMode.cs
 System.Security.Cryptography/CryptoAPITransform.cs
 System.Security.Cryptography/CryptoConfig.cs
 System.Security.Cryptography/CryptoConfig_2_1.cs
 System.Security.Cryptography/CryptoConfig.fullaot.cs
-System.Security.Cryptography/CryptographicException.cs
-System.Security.Cryptography/CryptographicUnexpectedOperationExcpetion.cs
-System.Security.Cryptography/CryptoStream.cs
-System.Security.Cryptography/CryptoStreamMode.cs
 System.Security.Cryptography/CspKeyContainerInfo.cs
-System.Security.Cryptography/CspParameters.cs
-System.Security.Cryptography/CspProviderFlags.cs
-System.Security.Cryptography/DeriveBytes.cs
-System.Security.Cryptography/DES.cs
 System.Security.Cryptography/DESCryptoServiceProvider.cs
-System.Security.Cryptography/DSA.cs
 System.Security.Cryptography/DSACryptoServiceProvider.cs
-System.Security.Cryptography/DSAParameters.cs
-System.Security.Cryptography/DSASignatureDeformatter.cs
-System.Security.Cryptography/DSASignatureFormatter.cs
-System.Security.Cryptography/FromBase64Transform.cs
-System.Security.Cryptography/HashAlgorithm.cs
-System.Security.Cryptography/HMAC.cs
-System.Security.Cryptography/HMACMD5.cs
-System.Security.Cryptography/HMACRIPEMD160.cs
-System.Security.Cryptography/HMACSHA1.cs
-System.Security.Cryptography/HMACSHA256.cs
-System.Security.Cryptography/HMACSHA384.cs
-System.Security.Cryptography/HMACSHA512.cs
-System.Security.Cryptography/ICryptoTransform.cs
 System.Security.Cryptography/ICspAsymmetricAlgorithm.cs
-System.Security.Cryptography/KeyedHashAlgorithm.cs
 System.Security.Cryptography/KeyNumber.cs
-System.Security.Cryptography/KeySizes.cs
-System.Security.Cryptography/MACTripleDES.cs
-System.Security.Cryptography/MaskGenerationMethod.cs
-System.Security.Cryptography/MD5.cs
 System.Security.Cryptography/MD5CryptoServiceProvider.cs
-System.Security.Cryptography/PaddingMode.cs
-System.Security.Cryptography/PasswordDeriveBytes.cs
-System.Security.Cryptography/PKCS1MaskGenerationMethod.cs
-System.Security.Cryptography/RandomNumberGenerator.cs
-System.Security.Cryptography/RC2.cs
 System.Security.Cryptography/RC2CryptoServiceProvider.cs
-System.Security.Cryptography/Rfc2898DeriveBytes.cs
-System.Security.Cryptography/Rijndael.cs
-System.Security.Cryptography/RijndaelManaged.cs
-System.Security.Cryptography/RijndaelManagedTransform.cs
-System.Security.Cryptography/RIPEMD160.cs
-System.Security.Cryptography/RIPEMD160Managed.cs
 System.Security.Cryptography/RNGCryptoServiceProvider.cs
-System.Security.Cryptography/RSA.cs
 System.Security.Cryptography/RSACryptoServiceProvider.cs
-System.Security.Cryptography/RSAOAEPKeyExchangeDeformatter.cs
-System.Security.Cryptography/RSAOAEPKeyExchangeFormatter.cs
-System.Security.Cryptography/RSAParameters.cs
-System.Security.Cryptography/RSAPKCS1KeyExchangeDeformatter.cs
-System.Security.Cryptography/RSAPKCS1KeyExchangeFormatter.cs
 System.Security.Cryptography/RSAPKCS1SignatureDeformatter.cs
 System.Security.Cryptography/RSAPKCS1SignatureFormatter.cs
-System.Security.Cryptography/SHA1.cs
 System.Security.Cryptography/SHA1CryptoServiceProvider.cs
-System.Security.Cryptography/SHA1Managed.cs
-System.Security.Cryptography/SHA256.cs
-System.Security.Cryptography/SHA256Managed.cs
-System.Security.Cryptography/SHA384.cs
-System.Security.Cryptography/SHA384Managed.cs
-System.Security.Cryptography/SHA512.cs
-System.Security.Cryptography/SHA512Managed.cs
-System.Security.Cryptography/SHAConstants.cs
-System.Security.Cryptography/SignatureDescription.cs
-System.Security.Cryptography/SymmetricAlgorithm.cs
-System.Security.Cryptography/ToBase64Transform.cs
-System.Security.Cryptography/TripleDES.cs
 System.Security.Cryptography/TripleDESCryptoServiceProvider.cs
 System.Security.Cryptography.X509Certificates/X509Certificate.cs
 System.Security.Cryptography.X509Certificates/X509Certificate20.cs
@@ -1103,7 +846,6 @@ System.Security.Policy/Url.cs
 System.Security.Policy/UrlMembershipCondition.cs
 System.Security.Policy/Zone.cs
 System.Security.Policy/ZoneMembershipCondition.cs
-System.Security.Principal/GenericIdentity.cs
 System.Security.Principal/GenericPrincipal.cs
 System.Security.Principal/IdentityNotMappedException.cs
 System.Security.Principal/IdentityReferenceCollection.cs
@@ -1135,7 +877,6 @@ System.Threading/HostExecutionContextManager.cs
 System.Threading/Interlocked.cs
 System.Threading/LockCookie.cs
 System.Threading/LockQueue.cs
-System.Threading/LockRecursionException.cs
 System.Threading/Monitor.cs
 System.Threading/Mutex.cs
 System.Threading/NamedDataSlot.cs
@@ -1144,22 +885,13 @@ System.Threading/NativeOverlapped.cs
 System.Threading/Overlapped.cs
 System.Threading/ReaderWriterLock.cs
 System.Threading/RegisteredWaitHandle.cs
-../System/System.Threading/SemaphoreFullException.cs
 System.Threading/SynchronizationContext.cs
 System.Threading/Thread.cs
-System.Threading/ThreadAbortException.cs
-System.Threading/ThreadInterruptedException.cs
 System.Threading/ThreadPool.cs
 System.Threading/Timer.cs
 System.Threading/TimerCallback.cs
 System.Threading/Volatile.cs
 System.Threading/WaitHandle.cs
-System/Action.cs
-System/Comparison.cs
-System/Converter.cs
-System/Predicate.cs
-System.Collections.Generic/Comparer.cs
-System.Collections.Generic/EqualityComparer.cs
 
 System.Threading.Tasks/DecoupledTask.cs
 ../Mono.Parallel/Mono.Threading/AtomicBoolean.cs
@@ -1176,7 +908,6 @@ ReferenceSources/Environment.cs
 ReferenceSources/ExecutionContext.cs
 ReferenceSources/HashHelpers.cs
 ReferenceSources/ParseNumbers.cs
-ReferenceSources/TimeZoneInfoOptions.cs
 ReferenceSources/AppDomain.cs
 ReferenceSources/CLRConfig.cs
 ReferenceSources/JitHelpers.cs
@@ -1185,32 +916,52 @@ ReferenceSources/EncodingTable.cs
 ReferenceSources/TypeNameParser.cs
 ReferenceSources/RuntimeType.cs
 ReferenceSources/RemotingFieldCachedData.cs
-ReferenceSources/MonoRuntimeWorkItem.cs
 ReferenceSources/MethodBase.cs
 ReferenceSources/RuntimeHandles.cs
 ReferenceSources/CompareInfo.cs
+ReferenceSources/TypeBuilderInstantiation.cs
+ReferenceSources/Buffer.cs
+ReferenceSources/TextInfo.cs
+ReferenceSources/win32native.cs
+ReferenceSources/SharedStatics.cs
 
 ../../../external/referencesource/mscorlib/system/__filters.cs
 ../../../external/referencesource/mscorlib/system/__hresults.cs
 ../../../external/referencesource/mscorlib/system/accessviolationexception.cs
+../../../external/referencesource/mscorlib/system/action.cs
 ../../../external/referencesource/mscorlib/system/activator.cs
 ../../../external/referencesource/mscorlib/system/AggregateException.cs
+../../../external/referencesource/mscorlib/system/appdomainattributes.cs
 ../../../external/referencesource/mscorlib/system/appdomainunloadedexception.cs
 ../../../external/referencesource/mscorlib/system/applicationexception.cs
+../../../external/referencesource/mscorlib/system/applicationid.cs
 ../../../external/referencesource/mscorlib/system/argumentexception.cs
 ../../../external/referencesource/mscorlib/system/argumentnullexception.cs
 ../../../external/referencesource/mscorlib/system/argumentoutofrangeexception.cs
 ../../../external/referencesource/mscorlib/system/arithmeticexception.cs
 ../../../external/referencesource/mscorlib/system/arraysegment.cs
 ../../../external/referencesource/mscorlib/system/arraytypemismatchexception.cs
+../../../external/referencesource/mscorlib/system/asynccallback.cs
 ../../../external/referencesource/mscorlib/system/attribute.cs
+../../../external/referencesource/mscorlib/system/attributetargets.cs
 ../../../external/referencesource/mscorlib/system/attributeusageattribute.cs
+../../../external/referencesource/mscorlib/system/badimageformatexception.cs
 ../../../external/referencesource/mscorlib/system/bitconverter.cs
 ../../../external/referencesource/mscorlib/system/boolean.cs
+../../../external/referencesource/mscorlib/system/buffer.cs
 ../../../external/referencesource/mscorlib/system/byte.cs
 ../../../external/referencesource/mscorlib/system/cannotunloadappdomainexception.cs
 ../../../external/referencesource/mscorlib/system/char.cs
 ../../../external/referencesource/mscorlib/system/charenumerator.cs
+../../../external/referencesource/mscorlib/system/consolecanceleventargs.cs
+../../../external/referencesource/mscorlib/system/consolecolor.cs
+../../../external/referencesource/mscorlib/system/consolekey.cs
+../../../external/referencesource/mscorlib/system/consolekeyinfo.cs
+../../../external/referencesource/mscorlib/system/consolemodifiers.cs
+../../../external/referencesource/mscorlib/system/consolespecialkey.cs
+../../../external/referencesource/mscorlib/system/contextboundobject.cs
+../../../external/referencesource/mscorlib/system/contextstaticattribute.cs
+../../../external/referencesource/mscorlib/system/clscompliantattribute.cs
 ../../../external/referencesource/mscorlib/system/contextmarshalexception.cs
 ../../../external/referencesource/mscorlib/system/convert.cs
 ../../../external/referencesource/mscorlib/system/datamisalignedexception.cs
@@ -1227,10 +978,24 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/empty.cs
 ../../../external/referencesource/mscorlib/system/enum.cs
 ../../../external/referencesource/mscorlib/system/entrypointnotfoundexception.cs
+../../../external/referencesource/mscorlib/system/eventargs.cs
+../../../external/referencesource/mscorlib/system/eventhandler.cs
 ../../../external/referencesource/mscorlib/system/executionengineexception.cs
 ../../../external/referencesource/mscorlib/system/fieldaccessexception.cs
+../../../external/referencesource/mscorlib/system/flagsattribute.cs
 ../../../external/referencesource/mscorlib/system/formatexception.cs
 ../../../external/referencesource/mscorlib/system/guid.cs
+../../../external/referencesource/mscorlib/system/iappdomain.cs
+../../../external/referencesource/mscorlib/system/iappdomainsetup.cs
+../../../external/referencesource/mscorlib/system/iasyncresult.cs
+../../../external/referencesource/mscorlib/system/icloneable.cs
+../../../external/referencesource/mscorlib/system/icomparable.cs
+../../../external/referencesource/mscorlib/system/iconvertible.cs
+../../../external/referencesource/mscorlib/system/icustomformatter.cs
+../../../external/referencesource/mscorlib/system/idisposable.cs
+../../../external/referencesource/mscorlib/system/iequatable.cs
+../../../external/referencesource/mscorlib/system/iformatprovider.cs
+../../../external/referencesource/mscorlib/system/iformattable.cs
 ../../../external/referencesource/mscorlib/system/invalidcastexception.cs
 ../../../external/referencesource/mscorlib/system/indexoutofrangeexception.cs
 ../../../external/referencesource/mscorlib/system/invalidoperationexception.cs
@@ -1240,23 +1005,31 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/int16.cs
 ../../../external/referencesource/mscorlib/system/int32.cs
 ../../../external/referencesource/mscorlib/system/int64.cs
+../../../external/referencesource/mscorlib/system/iobservable.cs
+../../../external/referencesource/mscorlib/system/iobserver.cs
+../../../external/referencesource/mscorlib/system/iprogress.cs
+../../../external/referencesource/mscorlib/system/iserviceobjectprovider.cs
+../../../external/referencesource/mscorlib/system/invalidtimezoneexception.cs
 ../../../external/referencesource/mscorlib/system/Lazy.cs
 ../../../external/referencesource/mscorlib/system/memberaccessexception.cs
 ../../../external/referencesource/mscorlib/system/methodaccessexception.cs
+../../../external/referencesource/mscorlib/system/midpointrounding.cs
 ../../../external/referencesource/mscorlib/system/missingfieldexception.cs
 ../../../external/referencesource/mscorlib/system/missingmemberexception.cs
 ../../../external/referencesource/mscorlib/system/missingmethodexception.cs
 ../../../external/referencesource/mscorlib/system/multicastnotsupportedexception.cs
+../../../external/referencesource/mscorlib/system/nonserializedattribute.cs
 ../../../external/referencesource/mscorlib/system/notfinitenumberexception.cs
 ../../../external/referencesource/mscorlib/system/notimplementedexception.cs
 ../../../external/referencesource/mscorlib/system/notsupportedexception.cs
-../../../external/referencesource/mscorlib/system/midpointrounding.cs
 ../../../external/referencesource/mscorlib/system/nullreferenceexception.cs
 ../../../external/referencesource/mscorlib/system/number.cs
 ../../../external/referencesource/mscorlib/system/objectdisposedexception.cs
+../../../external/referencesource/mscorlib/system/obsoleteattribute.cs
 ../../../external/referencesource/mscorlib/system/operationcanceledexception.cs
 ../../../external/referencesource/mscorlib/system/outofmemoryexception.cs
 ../../../external/referencesource/mscorlib/system/overflowexception.cs
+../../../external/referencesource/mscorlib/system/paramarrayattribute.cs
 ../../../external/referencesource/mscorlib/system/platformnotsupportedexception.cs
 ../../../external/referencesource/mscorlib/system/progress.cs
 ../../../external/referencesource/mscorlib/system/random.cs
@@ -1264,6 +1037,7 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/resid.cs
 ../../../external/referencesource/mscorlib/system/rttype.cs
 ../../../external/referencesource/mscorlib/system/sbyte.cs
+../../../external/referencesource/mscorlib/system/serializableattribute.cs
 ../../../external/referencesource/mscorlib/system/stackoverflowexception.cs
 ../../../external/referencesource/mscorlib/system/string.cs
 ../../../external/referencesource/mscorlib/system/stringcomparer.cs
@@ -1271,11 +1045,16 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/systemexception.cs
 ../../../external/referencesource/mscorlib/system/timeoutexception.cs
 ../../../external/referencesource/mscorlib/system/timespan.cs
+../../../external/referencesource/mscorlib/system/threadattributes.cs
+../../../external/referencesource/mscorlib/system/threadstaticattribute.cs
 ../../../external/referencesource/mscorlib/system/throwhelper.cs
+../../../external/referencesource/mscorlib/system/timezoneinfo.cs
+../../../external/referencesource/mscorlib/system/timezonenotfoundexception.cs
 ../../../external/referencesource/mscorlib/system/tuple.cs
 ../../../external/referencesource/mscorlib/system/type.cs
 ../../../external/referencesource/mscorlib/system/typeaccessexception.cs
 ../../../external/referencesource/mscorlib/system/typeinitializationexception.cs
+../../../external/referencesource/mscorlib/system/typeloadexception.cs
 ../../../external/referencesource/mscorlib/system/typedreference.cs
 ../../../external/referencesource/mscorlib/system/typeunloadedexception.cs
 ../../../external/referencesource/mscorlib/system/uint16.cs
@@ -1322,8 +1101,10 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/collections/stack.cs
 ../../../external/referencesource/mscorlib/system/collections/structuralcomparisons.cs
 
+../../../external/referencesource/mscorlib/system/collections/generic/comparer.cs
 ../../../external/referencesource/mscorlib/system/collections/generic/debugview.cs
 ../../../external/referencesource/mscorlib/system/collections/generic/dictionary.cs
+../../../external/referencesource/mscorlib/system/collections/generic/equalitycomparer.cs
 ../../../external/referencesource/mscorlib/system/collections/generic/icollection.cs
 ../../../external/referencesource/mscorlib/system/collections/generic/icomparer.cs
 ../../../external/referencesource/mscorlib/system/collections/generic/idictionary.cs
@@ -1359,7 +1140,9 @@ ReferenceSources/CompareInfo.cs
 
 ../../../external/referencesource/mscorlib/system/globalization/bidicategory.cs
 ../../../external/referencesource/mscorlib/system/globalization/calendar.cs
+../../../external/referencesource/mscorlib/system/globalization/calendaralgorithmtype.cs
 ../../../external/referencesource/mscorlib/system/globalization/calendardata.cs
+../../../external/referencesource/mscorlib/system/globalization/calendarweekrule.cs
 ../../../external/referencesource/mscorlib/system/globalization/charunicodeinfo.cs
 ../../../external/referencesource/mscorlib/system/globalization/chineselunisolarcalendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/compareinfo.cs
@@ -1370,10 +1153,13 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/globalization/datetimeformatinfo.cs
 ../../../external/referencesource/mscorlib/system/globalization/datetimeformatinfoscanner.cs
 ../../../external/referencesource/mscorlib/system/globalization/datetimeparse.cs
+../../../external/referencesource/mscorlib/system/globalization/datetimestyles.cs
+../../../external/referencesource/mscorlib/system/globalization/digitshapes.cs
 ../../../external/referencesource/mscorlib/system/globalization/eastasianlunisolarcalendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/globalizationassembly.cs
 ../../../external/referencesource/mscorlib/system/globalization/gregoriancalendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/gregoriancalendarhelper.cs
+../../../external/referencesource/mscorlib/system/globalization/gregoriancalendartypes.cs
 ../../../external/referencesource/mscorlib/system/globalization/hebrewcalendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/hebrewnumber.cs
 ../../../external/referencesource/mscorlib/system/globalization/hijricalendar.cs
@@ -1392,15 +1178,24 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/globalization/textelementenumerator.cs
 ../../../external/referencesource/mscorlib/system/globalization/timespanformat.cs
 ../../../external/referencesource/mscorlib/system/globalization/timespanparse.cs
+../../../external/referencesource/mscorlib/system/globalization/textinfo.cs
 ../../../external/referencesource/mscorlib/system/globalization/thaibuddhistcalendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/umalquracalendar.cs
 ../../../external/referencesource/mscorlib/system/globalization/unicodecategory.cs
 
 ../../../external/referencesource/mscorlib/system/io/__error.cs
+../../../external/referencesource/mscorlib/system/io/__hresults.cs
 ../../../external/referencesource/mscorlib/system/io/binaryreader.cs
 ../../../external/referencesource/mscorlib/system/io/binarywriter.cs
 ../../../external/referencesource/mscorlib/system/io/bufferedstream.cs
+../../../external/referencesource/mscorlib/system/io/directorynotfoundexception.cs
+../../../external/referencesource/mscorlib/system/io/drivenotfoundexception.cs
+../../../external/referencesource/mscorlib/system/io/endofstreamexception.cs
+../../../external/referencesource/mscorlib/system/io/ioexception.cs
+../../../external/referencesource/mscorlib/system/io/fileloadexception.cs
+../../../external/referencesource/mscorlib/system/io/filenotfoundexception.cs
 ../../../external/referencesource/mscorlib/system/io/memorystream.cs
+../../../external/referencesource/mscorlib/system/io/pathtoolongexception.cs
 ../../../external/referencesource/mscorlib/system/io/pinnedbuffermemorystream.cs
 ../../../external/referencesource/mscorlib/system/io/stream.cs
 ../../../external/referencesource/mscorlib/system/io/streamreader.cs
@@ -1431,6 +1226,7 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/reflection/ireflect.cs
 ../../../external/referencesource/mscorlib/system/reflection/ireflectabletype.cs
 ../../../external/referencesource/mscorlib/system/reflection/manifestresourceinfo.cs
+../../../external/referencesource/mscorlib/system/reflection/mdimport.cs
 ../../../external/referencesource/mscorlib/system/reflection/memberfilter.cs
 ../../../external/referencesource/mscorlib/system/reflection/memberinfo.cs
 ../../../external/referencesource/mscorlib/system/reflection/memberinfoserializationholder.cs
@@ -1480,9 +1276,36 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionnotification.cs
 ../../../external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs
 
-../../../external/referencesource/mscorlib/system/runtime/versioning/binarycompatibility.cs
-../../../external/referencesource/mscorlib/system/runtime/versioning/multitargetinghelpers.cs
-../../../external/referencesource/mscorlib/system/runtime/versioning/targetframeworkid.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/attributes.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ucomienumconnections.cs
+
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ibindctx.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/iconnectionpoint.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/iconnectionpointcontainer.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienumconnectionpoints.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienumconnections.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienumerable.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienumerator.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienummoniker.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienumstring.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ienumvariant.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/iexpando.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/imoniker.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ipersistfile.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/ireflect.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/irunningobjecttable.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/istream.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/itypecomp.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/itypeinfo.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/itypeinfo2.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/itypelib.cs
+../../../external/referencesource/mscorlib/system/runtime/interopservices/ComTypes/itypelib2.cs
+
+../../../external/referencesource/mscorlib/system/runtime/interopservices/expando/iexpando.cs
+
+../../../external/referencesource/mscorlib//system/runtime/reliability/criticalfinalizerobject.cs
+../../../external/referencesource/mscorlib//system/runtime/reliability/prepreparemethodattribute.cs
+../../../external/referencesource/mscorlib//system/runtime/reliability/reliabilitycontractattribute.cs
 
 ../../../external/referencesource/mscorlib/system/runtime/compilerservices/accessedthroughpropertyattribute.cs
 ../../../external/referencesource/mscorlib/system/runtime/compilerservices/assemblyattributesgohere.cs
@@ -1542,6 +1365,83 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/runtime/compilerservices/unsafevaluetypeattribute.cs
 ../../../external/referencesource/mscorlib/system/runtime/compilerservices/YieldAwaitable.cs
 
+../../../external/referencesource/mscorlib/system/security/attributes.cs
+../../../external/referencesource/mscorlib/system/security/securitydocument.cs
+
+../../../external/referencesource/mscorlib/system/security/claims/Claim.cs
+../../../external/referencesource/mscorlib/system/security/claims/ClaimsIdentity.cs
+../../../external/referencesource/mscorlib/system/security/claims/ClaimsPrincipal.cs
+../../../external/referencesource/mscorlib/system/security/claims/ClaimTypes.cs
+../../../external/referencesource/mscorlib/system/security/claims/ClaimValueTypes.cs
+../../../external/referencesource/mscorlib/system/security/claims/RoleClaimProvider.cs
+
+../../../external/referencesource/mscorlib/system/security/cryptography/aes.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/asymmetricalgorithm.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/asymmetrickeyexchangedeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/asymmetrickeyexchangeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/asymmetricsignaturedeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/asymmetricsignatureformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/base64transforms.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/crypto.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/cryptoapitransform.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/cryptostream.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/derivebytes.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/des.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/descryptoserviceprovider.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/dsa.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/dsasignaturedeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/dsasignatureformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hashalgorithm.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmac.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmacmd5.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmacripemd160.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmacsha1.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmacsha256.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmacsha384.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/hmacsha512.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/icryptotransform.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/keyedhashalgorithm.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/mactripledes.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/maskgenerationmethod.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/md5.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/passwordderivebytes.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/pkcs1maskgenerationmethod.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/randomnumbergenerator.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rc2.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rc2cryptoserviceprovider.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rfc2898derivebytes.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rijndael.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rijndaelmanaged.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rijndaelmanagedtransform.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/ripemd160.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/ripemd160managed.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rsa.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rsaoaepkeyexchangedeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rsaoaepkeyexchangeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rsapkcs1keyexchangedeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/rsapkcs1keyexchangeformatter.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha1.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha1managed.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha256.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha256managed.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha384.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha384managed.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha512.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/sha512managed.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/signaturedescription.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/symmetricalgorithm.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/tripledes.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/tripledescryptoserviceprovider.cs
+../../../external/referencesource/mscorlib/system/security/cryptography/utils.cs
+
+../../../external/referencesource/mscorlib/system/security/cryptography/x509certificates/x509utils.cs
+
+../../../external/referencesource/mscorlib/system/security/principal/genericidentity.cs
+
+../../../external/referencesource/mscorlib/system/security/util/hex.cs
+../../../external/referencesource/mscorlib/system/security/util/parser.cs
+../../../external/referencesource/mscorlib/system/security/util/tokenizer.cs
+
 ../../../external/referencesource/mscorlib/system/text/asciiencoding.cs
 ../../../external/referencesource/mscorlib/system/text/codepageencoding.cs
 ../../../external/referencesource/mscorlib/system/text/decoderbestfitfallback.cs
@@ -1614,6 +1514,13 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/runtime/serialization/formatters/soapfault.cs
 ../../../external/referencesource/mscorlib/system/runtime/serialization/formatters/soapmessage.cs
 
+../../../external/referencesource/mscorlib/system/runtime/versioning/binarycompatibility.cs
+../../../external/referencesource/mscorlib/system/runtime/versioning/componentguaranteesattribute.cs
+../../../external/referencesource/mscorlib/system/runtime/versioning/multitargetinghelpers.cs
+../../../external/referencesource/mscorlib/system/runtime/versioning/resourceattributes.cs
+../../../external/referencesource/mscorlib/system/runtime/versioning/targetframeworkattribute.cs
+../../../external/referencesource/mscorlib/system/runtime/versioning/targetframeworkid.cs
+
 ../../../external/referencesource/mscorlib/system/threading/abandonedmutexexception.cs
 ../../../external/referencesource/mscorlib/system/threading/apartmentstate.cs
 ../../../external/referencesource/mscorlib/system/threading/autoresetevent.cs
@@ -1623,14 +1530,18 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/threading/CountdownEvent.cs
 ../../../external/referencesource/mscorlib/system/threading/eventresetmode.cs
 ../../../external/referencesource/mscorlib/system/threading/LazyInitializer.cs
+../../../external/referencesource/mscorlib/system/threading/lockrecursionexception.cs
 ../../../external/referencesource/mscorlib/system/threading/manualresetevent.cs
 ../../../external/referencesource/mscorlib/system/threading/ManualResetEventSlim.cs
 ../../../external/referencesource/mscorlib/system/threading/parameterizedthreadstart.cs
+../../../external/referencesource/mscorlib/system/threading/semaphorefullexception.cs
 ../../../external/referencesource/mscorlib/system/threading/SemaphoreSlim.cs
 ../../../external/referencesource/mscorlib/system/threading/sendorpostcallback.cs
 ../../../external/referencesource/mscorlib/system/threading/SpinLock.cs
 ../../../external/referencesource/mscorlib/system/threading/SpinWait.cs
 ../../../external/referencesource/mscorlib/system/threading/synchronizationlockexception.cs
+../../../external/referencesource/mscorlib/system/threading/threadabortexception.cs
+../../../external/referencesource/mscorlib/system/threading/threadinterruptedexception.cs
 ../../../external/referencesource/mscorlib/system/threading/threadpriority.cs
 ../../../external/referencesource/mscorlib/system/threading/threadstart.cs
 ../../../external/referencesource/mscorlib/system/threading/threadstartexception.cs
@@ -1659,5 +1570,10 @@ ReferenceSources/CompareInfo.cs
 ../../../external/referencesource/mscorlib/system/threading/Tasks/ProducerConsumerQueues.cs
 ../../../external/referencesource/mscorlib/system/threading/Tasks/TaskToApm.cs
 
+../../../external/referencesource/mscorlib/microsoft/win32/safehandles/safefilehandle.cs
+../../../external/referencesource/mscorlib/microsoft/win32/safehandles/saferegistryhandle.cs
+../../../external/referencesource/mscorlib/microsoft/win32/safehandles/safewaithandle.cs
+../../../external/referencesource/mscorlib/microsoft/win32/safehandles/win32safehandles.cs
+
 ReferenceSources/String.cs
 ReferenceSources/Type.cs
index 8d2cafa883a0123b6290e4a75299f7b7571935fa..0efa920e17539a27f0f498e4b13893e485fb1bfc 100644 (file)
@@ -245,6 +245,7 @@ System.Security.Cryptography/CipherModeTest.cs
 System.Security.Cryptography/CfbTest.cs
 System.Security.Cryptography/CryptoConfigTest.cs
 System.Security.Cryptography/CryptoStreamTest.cs
+System.Security.Cryptography/CspParametersTest.cs
 System.Security.Cryptography/CspProviderFlagsTest.cs
 System.Security.Cryptography/DesCfbTest.cs
 System.Security.Cryptography/DESCryptoServiceProviderTest.cs
index 04353c4546900bc12021ea0b7fa92a0fa6ea1eaa..560c9619a3fdabeee46209521a7c11071c10bb25 100644 (file)
@@ -101,7 +101,7 @@ namespace Monodoc.Generators.Html
                {
                        if (ecma_transform == null) {
                                ecma_transform = new XslCompiledTransform ();
-                               var assembly = System.Reflection.Assembly.GetCallingAssembly ();
+                               var assembly = System.Reflection.Assembly.GetAssembly (typeof (Ecma2Html));
                        
                                Stream stream = assembly.GetManifestResourceStream ("mono-ecma-css.xsl");
                                XmlReader xml_reader = new XmlTextReader (stream);
index bafc0baf3fc182717c86d9d7fc14cbdc50e0822c..3585b4842b6c2e3286bcaeeb87c451ec8578e2a4 100644 (file)
@@ -17,7 +17,7 @@ namespace Monodoc.Generators.Html
                        get {
                                if (css_ecmaspec != null)
                                        return css_ecmaspec;
-                               System.Reflection.Assembly assembly = System.Reflection.Assembly.GetCallingAssembly ();
+                               System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly (typeof (Ecmaspec2Html));
                                Stream str_css = assembly.GetManifestResourceStream ("ecmaspec.css");
                                css_ecmaspec = (new StreamReader (str_css)).ReadToEnd ();
                                return css_ecmaspec;
@@ -46,7 +46,7 @@ namespace Monodoc.Generators.Html
                {
                        if (ecma_transform == null){
                                ecma_transform = new XslTransform ();
-                               System.Reflection.Assembly assembly = System.Reflection.Assembly.GetCallingAssembly ();
+                               System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly (typeof (Ecmaspec2Html));
                                Stream stream;
                                stream = assembly.GetManifestResourceStream ("ecmaspec-html-css.xsl");
 
index ee6a95b993c87b0edff23e3e970ae949a19afd58..cb34b98850981503d572f6c3c1a0959a55671e0d 100644 (file)
@@ -15,7 +15,7 @@ namespace Monodoc.Generators.Html
                public Toc2Html ()
                {
                        transform = new XslTransform ();
-                       var assembly = Assembly.GetCallingAssembly ();
+                       var assembly = Assembly.GetAssembly (typeof (Toc2Html));
                        var stream = assembly.GetManifestResourceStream ("toc-html.xsl");
                        XmlReader xml_reader = new XmlTextReader (stream);
                        transform.Load (xml_reader, null, null);
index a14f96f208a34c766d684648faa0b742fe5caa9b..e4b660ba5df7fe8b8eaa8444984c58caf7a16344 100644 (file)
@@ -4,10 +4,16 @@ include ../../build/rules.make
 
 all-local:
 
+PROFILE_DIR=$(DESTDIR)$(mono_libdir)/mono/
+
 install-local:
-       $(MKINSTALLDIRS) $(DESTDIR)$(LIBRARY_INSTALL_DIR)
-       $(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.0/* $(DESTDIR)$(LIBRARY_INSTALL_DIR)
+       $(MKINSTALLDIRS) $(PROFILE_DIR)/2.0
+       $(MKINSTALLDIRS) $(PROFILE_DIR)/3.5
+       $(MKINSTALLDIRS) $(PROFILE_DIR)/4.0
+       $(INSTALL_LIB) ../../../external/binary-reference-assemblies/v2.0/* $(PROFILE_DIR)/2.0
+       $(INSTALL_LIB) ../../../external/binary-reference-assemblies/v3.5/* $(PROFILE_DIR)/3.5
+       $(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.0/* $(PROFILE_DIR)/4.0
 
-DISTFILES = $(wildcard ../../../external/binary-reference-assemblies/v4.0/*) Makefile
+DISTFILES = $(wildcard ../../../external/binary-reference-assemblies/v4.0/*) $(wildcard ../../../external/binary-reference-assemblies/v3.5/*) $(wildcard ../../../external/binary-reference-assemblies/v2.0/*) Makefile
 
 dist-local: dist-default
diff --git a/mcs/errors/cs0104-5.cs b/mcs/errors/cs0104-5.cs
new file mode 100644 (file)
index 0000000..295e443
--- /dev/null
@@ -0,0 +1,35 @@
+// CS0104: `N' is an ambiguous reference between `C.N' and `A.T.N'
+// Line: 32
+
+namespace A
+{
+       public class T
+       {
+               public class N
+               {
+
+               }
+       }
+}
+
+namespace C
+{
+       struct N
+       {
+
+       }
+}
+
+namespace B
+{
+       using static A.T;
+       using C;
+
+       static class Program
+       {
+               static void Main ()
+               {
+                       var u = new N ();
+               }
+       }
+}
diff --git a/mcs/errors/cs0200-7.cs b/mcs/errors/cs0200-7.cs
new file mode 100644 (file)
index 0000000..3e01495
--- /dev/null
@@ -0,0 +1,14 @@
+// CS0200: Property or indexer `MyClass.Type' cannot be assigned to (it is read-only)
+// Line: 12
+
+using System;
+
+ public class MyClass
+ {
+       Type Type { get; }
+
+       public void Test ()
+       {
+               Type = typeof (string);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0246-35.cs b/mcs/errors/cs0246-35.cs
new file mode 100644 (file)
index 0000000..79f1c78
--- /dev/null
@@ -0,0 +1,23 @@
+// CS0246: The type or namespace name `B' could not be found. Are you missing an assembly reference?
+// Line: 21
+
+using static A;
+
+class A : B
+{
+}
+
+class P
+{
+       public class N<T>
+       {
+       }
+}
+
+class Test
+{
+       public static void Main ()
+       {
+               var n = default (N<int>);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0815-8.cs b/mcs/errors/cs0815-8.cs
new file mode 100644 (file)
index 0000000..31ed659
--- /dev/null
@@ -0,0 +1,13 @@
+// CS0815: An implicitly typed local variable declaration cannot be initialized with `anonymous method'
+// Line: 11
+
+using System;
+using System.Threading.Tasks;
+
+class X
+{
+       public static void Main ()
+       {
+               Task.Run(async () => { var a = async () => { }; Console.WriteLine(a); });
+       }
+}
\ No newline at end of file
index d8f5630f68bc5542e54de41d788792b5f4953fc7..80468e43ccafa8f01bc755e7b7cc99e671580807 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>MultiByte</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 12bf992bbcca22df81e61c6adde66b10d3216f3a..010418e470dc7d302d18501c3480ae023d4e12b7 100644 (file)
@@ -1188,6 +1188,9 @@ namespace Mono.CSharp {
                        if (compatibles.TryGetValue (type, out am))
                                return am;
 
+                       if (type == InternalType.ErrorType)
+                               return null;
+
                        TypeSpec delegate_type = CompatibleChecks (ec, type);
                        if (delegate_type == null)
                                return null;
index d7d370893c6af08c8361f1596be6794f3f14533e..f1723d2352a868dbdc1e6f016fa884b9516d67c7 100644 (file)
@@ -2864,8 +2864,16 @@ namespace Mono.CSharp {
 
                                                                pe.Getter = pe.PropertyInfo.Get;
                                                        } else {
-                                                               if (!pe.PropertyInfo.HasSet || !pe.PropertyInfo.Set.IsAccessible (rc))
+                                                               if (rc.HasSet (ResolveContext.Options.ConstructorScope) && pe.IsAutoPropertyAccess &&
+                                                                       pe.PropertyInfo.DeclaringType == rc.CurrentType && pe.IsStatic == rc.IsStatic) {
+                                                                       var p = (Property) pe.PropertyInfo.MemberDefinition;
+                                                                       return new FieldExpr (p.BackingField, loc);
+                                                               }
+
+                                                               if (!pe.PropertyInfo.HasSet || !pe.PropertyInfo.Set.IsAccessible (rc)) {
+                                                                       variable_found = true;
                                                                        break;
+                                                               }
 
                                                                pe.Setter = pe.PropertyInfo.Set;
                                                        }
@@ -4727,6 +4735,9 @@ namespace Mono.CSharp {
                                var cand_param = candidate_pd.FixedParameters [j];
                                var best_param = best_pd.FixedParameters [j];
 
+                               if (cand_param.HasDefaultValue != best_param.HasDefaultValue)
+                                       return cand_param.HasDefaultValue;
+
                                if (candidate_pd.Count == best_pd.Count) {
                                        //
                                        // LAMESPEC:
@@ -4734,8 +4745,6 @@ namespace Mono.CSharp {
                                        // void Foo (int i = 0) is better than void Foo (params int[]) for Foo ()
                                        // void Foo (string[] s, string value = null) is better than Foo (string s, params string[]) for Foo (null) or Foo ()
                                        //
-                                       if (cand_param.HasDefaultValue != best_param.HasDefaultValue)
-                                               return cand_param.HasDefaultValue;
 
                                        if (cand_param.HasDefaultValue) {
                                                ++j;
@@ -4749,8 +4758,7 @@ namespace Mono.CSharp {
                                        // void Foo (string s, int i = 0) <-> Foo (string s, byte i = 0)
                                        // void Foo (string s, params int[]) <-> Foo (string s, params byte[])
                                        //
-                                       if (cand_param.HasDefaultValue && best_param.HasDefaultValue)
-                                               return false;
+                                       return false;
                                }
 
                                break;
@@ -6439,8 +6447,13 @@ namespace Mono.CSharp {
                                        return;
                                }
 
-                               if (TypeSpec.IsValueType (InstanceExpression.Type) && InstanceExpression is VariableReference)
+                               if (TypeSpec.IsValueType (InstanceExpression.Type)) {
+                                       var le = SkipLeftValueTypeAccess (InstanceExpression);
+                                       if (le != null)
+                                               le.FlowAnalysis (fc);
+
                                        return;
+                               }
                        }
 
                        base.FlowAnalysis (fc);
@@ -6449,6 +6462,24 @@ namespace Mono.CSharp {
                                fc.ConditionalAccessEnd ();
                }
 
+               static Expression SkipLeftValueTypeAccess (Expression expr)
+               {
+                       if (!TypeSpec.IsValueType (expr.Type))
+                               return expr;
+
+                       if (expr is VariableReference)
+                               return null;
+
+                       var fe = expr as FieldExpr;
+                       if (fe == null)
+                               return expr;
+
+                       if (fe.InstanceExpression == null)
+                               return expr;
+
+                       return SkipLeftValueTypeAccess (fe.InstanceExpression);
+               }
+
                public override int GetHashCode ()
                {
                        return spec.GetHashCode ();
@@ -7600,6 +7631,7 @@ namespace Mono.CSharp {
                                ec.Report.Error (815, loc,
                                        "An implicitly typed local variable declaration cannot be initialized with `{0}'",
                                        type.GetSignatureForError ());
+                               type = InternalType.ErrorType;
                                return false;
                        }
 
index f4df8c9c44375d7f0307ed0c4fffedf1ce231ca6..40eb0068b2db9dfdf56910b7d64900fa828a6aff 100644 (file)
@@ -11437,19 +11437,19 @@ namespace Mono.CSharp
        //
        public class StackAlloc : Expression {
                TypeSpec otype;
-               Expression t;
+               Expression texpr;
                Expression count;
                
                public StackAlloc (Expression type, Expression count, Location l)
                {
-                       t = type;
+                       texpr = type;
                        this.count = count;
                        loc = l;
                }
 
                public Expression TypeExpression {
                        get {
-                               return this.t;
+                               return texpr;
                        }
                }
 
@@ -11490,7 +11490,7 @@ namespace Mono.CSharp
                                ec.Report.Error (255, loc, "Cannot use stackalloc in finally or catch");
                        }
 
-                       otype = t.ResolveAsType (ec);
+                       otype = texpr.ResolveAsType (ec);
                        if (otype == null)
                                return null;
 
@@ -11522,7 +11522,7 @@ namespace Mono.CSharp
                {
                        StackAlloc target = (StackAlloc) t;
                        target.count = count.Clone (clonectx);
-                       target.t = t.Clone (clonectx);
+                       target.texpr = texpr.Clone (clonectx);
                }
                
                public override object Accept (StructuralVisitor visitor)
index 98254207136904fa18e8867abc8b3fe401c1cf0e..630548ce8d28a7665d7f15a4a23e2820e0eaa862 100644 (file)
@@ -209,14 +209,14 @@ namespace Mono.CSharp
                                Constant c = field_type.Kind == MemberKind.MissingType ?
                                        new NullConstant (InternalType.ErrorType, Location.Null) :
                                        CreateConstantFromValue (field_type, fi);
-                               return new ConstSpec (declaringType, definition, field_type, fi, mod, c);
+                               return new ConstSpec (declaringType, definition, field_type, fi, mod | Modifiers.STATIC, c);
                        }
 
                        if ((fa & FieldAttributes.InitOnly) != 0) {
                                if (field_type.BuiltinType == BuiltinTypeSpec.Type.Decimal) {
                                        var dc = ReadDecimalConstant (CustomAttributeData.GetCustomAttributes (fi));
                                        if (dc != null)
-                                               return new ConstSpec (declaringType, definition, field_type, fi, mod, dc);
+                                               return new ConstSpec (declaringType, definition, field_type, fi, mod | Modifiers.STATIC, dc);
                                }
 
                                mod |= Modifiers.READONLY;
index 262f55e7b53f37b34f383ffb509c289294af4411..00afac6c6042b510041e02e6389fc06b07881527 100644 (file)
@@ -745,29 +745,31 @@ namespace Mono.CSharp
                        this.assembly = assembly;
                }
 
-               public void LoadGetResourceStrings (string fileName)
+               public void LoadGetResourceStrings (List<string> fileNames)
                {
-                       if (!File.Exists (fileName)) {
-                               Report.Error (1566, "Error reading resource file `{0}'", fileName);
-                               return;
-                       }
+                       foreach (var fileName in fileNames) {
+                               if (!File.Exists (fileName)) {
+                                       Report.Error (1566, "Error reading resource file `{0}'", fileName);
+                                       return;
+                               }
 
-                       foreach (var l in File.ReadLines (fileName)) {
-                               if (GetResourceStrings == null)
-                                       GetResourceStrings = new Dictionary<string, string> ();
+                               foreach (var l in File.ReadLines (fileName)) {
+                                       if (GetResourceStrings == null)
+                                               GetResourceStrings = new Dictionary<string, string> ();
 
-                               var line = l.Trim ();
-                               if (line.Length == 0 || line [0] == '#' || line [0] == ';')
-                                       continue;
+                                       var line = l.Trim ();
+                                       if (line.Length == 0 || line [0] == '#' || line [0] == ';')
+                                               continue;
                                
-                               var epos = line.IndexOf ('=');
-                               if (epos < 0)
-                                       continue;
+                                       var epos = line.IndexOf ('=');
+                                       if (epos < 0)
+                                               continue;
 
-                               var key = line.Substring (0, epos).Trim ();
-                               var value = line.Substring (epos + 1).Trim ();
+                                       var key = line.Substring (0, epos).Trim ();
+                                       var value = line.Substring (epos + 1).Trim ();
 
-                               GetResourceStrings [key] = value;
+                                       GetResourceStrings [key] = value;
+                               }
                        }
                }
        }
index 4549efbc3ff846832841a6010713570a2c8ecc27..bed7f9e5e7164b027a3101870220ffc2ee03859a 100644 (file)
@@ -1147,10 +1147,7 @@ namespace Mono.CSharp {
                                var better = Namespace.IsImportedTypeOverride (Module, texpr_match.Type, texpr_fne.Type);
                                if (better == null) {
                                        if (mode == LookupMode.Normal) {
-                                               Compiler.Report.SymbolRelatedToPreviousError (texpr_match.Type);
-                                               Compiler.Report.SymbolRelatedToPreviousError (texpr_fne.Type);
-                                               Compiler.Report.Error (104, loc, "`{0}' is an ambiguous reference between `{1}' and `{2}'",
-                                                       name, texpr_match.GetSignatureForError (), texpr_fne.GetSignatureForError ());
+                                               Error_AmbiguousReference (name, texpr_match, texpr_fne, loc);
                                        }
 
                                        return match;
@@ -1160,9 +1157,56 @@ namespace Mono.CSharp {
                                        match = texpr_fne;
                        }
 
+                       if (types_using_table != null) {
+                               foreach (var using_type in types_using_table) {
+                                       var members = MemberCache.FindMembers (using_type, name, true);
+                                       if (members == null)
+                                               continue;
+
+                                       foreach (var member in members) {
+                                               if (arity > 0 && member.Arity != arity)
+                                                       continue;
+                                               
+                                               if ((member.Kind & MemberKind.NestedMask) != 0) {
+                                                       // non-static nested type is included with using static
+                                               } else {
+                                                       if ((member.Modifiers & Modifiers.STATIC) == 0)
+                                                               continue;
+
+                                                       if ((member.Modifiers & Modifiers.METHOD_EXTENSION) != 0)
+                                                               continue;
+
+                                                       if (mode == LookupMode.Normal)
+                                                               throw new NotImplementedException ();
+                                                       
+                                                       return null;
+                                               }
+
+                                               fne = new TypeExpression ((TypeSpec) member, loc);
+                                               if (match == null) {
+                                                       match = fne;
+                                                       continue;
+                                               }
+
+                                               if (mode == LookupMode.Normal) {
+                                                       Error_AmbiguousReference (name, match, fne, loc);
+                                               }
+                                       }
+                               }
+                       }
+
                        return match;
                }
 
+               void Error_AmbiguousReference (string name, FullNamedExpression a, FullNamedExpression b, Location loc)
+               {
+                       var report = Compiler.Report;
+                       report.SymbolRelatedToPreviousError (a.Type);
+                       report.SymbolRelatedToPreviousError (b.Type);
+                       report.Error (104, loc, "`{0}' is an ambiguous reference between `{1}' and `{2}'",
+                               name, a.GetSignatureForError (), b.GetSignatureForError ());
+               }
+
                public static Expression LookupStaticUsings (IMemberContext mc, string name, int arity, Location loc)
                {
                        for (var m = mc.CurrentMemberDefinition; m != null; m = m.Parent) {
@@ -1175,26 +1219,27 @@ namespace Mono.CSharp {
                                if (nc.types_using_table != null) {
                                        foreach (var using_type in nc.types_using_table) {
                                                var members = MemberCache.FindMembers (using_type, name, true);
-                                               if (members != null) {
-                                                       foreach (var member in members) {
-                                                               if ((member.Kind & MemberKind.NestedMask) != 0) {
-                                                                       // non-static nested type is included with using static
-                                                               } else {
-                                                                       if ((member.Modifiers & Modifiers.STATIC) == 0)
-                                                                               continue;
-
-                                                                       if ((member.Modifiers & Modifiers.METHOD_EXTENSION) != 0)
-                                                                               continue;
-                                                               }
-
-                                                               if (arity > 0 && member.Arity != arity)
+                                               if (members == null)
+                                                       continue;
+                                               
+                                               foreach (var member in members) {
+                                                       if ((member.Kind & MemberKind.NestedMask) != 0) {
+                                                               // non-static nested type is included with using static
+                                                       } else {
+                                                               if ((member.Modifiers & Modifiers.STATIC) == 0)
                                                                        continue;
 
-                                                               if (candidates == null)
-                                                                       candidates = new List<MemberSpec> ();
-
-                                                               candidates.Add (member);
+                                                               if ((member.Modifiers & Modifiers.METHOD_EXTENSION) != 0)
+                                                                       continue;
                                                        }
+
+                                                       if (arity > 0 && member.Arity != arity)
+                                                               continue;
+
+                                                       if (candidates == null)
+                                                               candidates = new List<MemberSpec> ();
+
+                                                       candidates.Add (member);
                                                }
                                        }
                                }
index 1d46ab2dab8b87ed13f9e871bd5459a3ee07f6a4..7d95e44efdb433bcd01ea8229d9b719af3b86099 100644 (file)
@@ -548,19 +548,21 @@ namespace Mono.CSharp
                        }
 
                        if (Set == null) {
-                               if ((ModFlags & Modifiers.SEALED) != 0 && base_prop.HasSet && !base_prop.Set.IsAccessible (this)) {
-                                       // TODO: Should be different error code but csc uses for some reason same
-                                       Report.SymbolRelatedToPreviousError (base_prop);
-                                       Report.Error (546, Location,
-                                               "`{0}': cannot override because `{1}' does not have accessible set accessor",
-                                               GetSignatureForError (), base_prop.GetSignatureForError ());
-                                       ok = false;
-                               }
+                               if (base_prop.HasSet) {
+                                       if ((ModFlags & Modifiers.SEALED) != 0 && !base_prop.Set.IsAccessible (this)) {
+                                               // TODO: Should be different error code but csc uses for some reason same
+                                               Report.SymbolRelatedToPreviousError (base_prop);
+                                               Report.Error (546, Location,
+                                                       "`{0}': cannot override because `{1}' does not have accessible set accessor",
+                                                       GetSignatureForError (), base_prop.GetSignatureForError ());
+                                               ok = false;
+                                       }
 
-                               if ((ModFlags & Modifiers.AutoProperty) != 0) {
-                                       Report.Error (8080, Location, "`{0}': Auto-implemented properties must override all accessors of the overridden property",
-                                               GetSignatureForError ());
-                                       ok = false;
+                                       if ((ModFlags & Modifiers.AutoProperty) != 0) {
+                                               Report.Error (8080, Location, "`{0}': Auto-implemented properties must override all accessors of the overridden property",
+                                                       GetSignatureForError ());
+                                               ok = false;
+                                       }
                                }
                        } else {
                                if (!base_prop.HasSet) {
index 42156d77ba9ab630a1abc513ac49c84cb28aee97..9b366d636d852ef5040f9d0d6d145a2b542dfbc1 100644 (file)
@@ -150,7 +150,7 @@ namespace Mono.CSharp {
                public bool BreakOnInternalError;
                #endregion
 
-               public string GetResourceStrings;
+               public List<string> GetResourceStrings;
 
                public bool ShowFullPaths;
 
@@ -1485,7 +1485,10 @@ namespace Mono.CSharp {
                                                return ParseResult.Error;
                                        }
 
-                                       settings.GetResourceStrings = file;
+                                       if (settings.GetResourceStrings == null)
+                                               settings.GetResourceStrings = new List<string> ();
+
+                                       settings.GetResourceStrings.Add (file);
                                        return ParseResult.Success;
                                }
 
index 8125cf19eb77cf71d5780ae8ef564c26ab11e570..9aae43597609c4c2a99b1d7639266a6823bccd86 100644 (file)
@@ -3352,12 +3352,26 @@ namespace Mono.CSharp {
                                                                }
 
                                                                if (parent_storey_block.AnonymousMethodStorey == null) {
-                                                                       pb.StateMachine.AddCapturedThisField (ec, null);
-                                                                       b.HasCapturedThis = true;
+                                                                       if (pb.StateMachine.HoistedThis == null) {
+                                                                               pb.StateMachine.AddCapturedThisField (ec, null);
+                                                                               b.HasCapturedThis = true;
+                                                                       }
+
                                                                        continue;
                                                                }
 
-                                                               pb.StateMachine.AddParentStoreyReference (ec, storey);
+                                                               var parent_this_block = pb;
+                                                               while (parent_this_block.Parent != null) {
+                                                                       parent_this_block = parent_this_block.Parent.ParametersBlock;
+                                                                       if (parent_this_block.StateMachine != null) {
+                                                                               break;
+                                                                       }
+                                                               }
+
+                                                               //
+                                                               // Add reference to closest storey which holds captured this
+                                                               //
+                                                               pb.StateMachine.AddParentStoreyReference (ec, parent_this_block.StateMachine ?? storey);
                                                        }
 
                                                        //
index 6484043543afeb1b25e41905f882f715ae519e2f..2b48661f53923066ef52f1fd15ed5495a815d817 100644 (file)
@@ -17,9 +17,9 @@ public class Test
                object [] field_atts = fields[0].GetCustomAttributes (false);
                if (field_atts.Length != 2)
                        return 2;
-               if (field_atts[0].GetType() != typeof (DebuggerBrowsableAttribute))
+               if (field_atts[1].GetType() != typeof (DebuggerBrowsableAttribute))
                        return 3;
-               if (field_atts[1].GetType() != typeof (CompilerGeneratedAttribute))
+               if (field_atts[0].GetType() != typeof (CompilerGeneratedAttribute))
                        return 4;
                        
                if (fields [0].Name != "<Foo>k__BackingField")
diff --git a/mcs/tests/gtest-autoproperty-17.cs b/mcs/tests/gtest-autoproperty-17.cs
new file mode 100644 (file)
index 0000000..1897e33
--- /dev/null
@@ -0,0 +1,18 @@
+using System;
+
+class MainClass
+{
+       abstract public class Bar
+       {
+               abstract public bool Condition { get; }
+       }
+
+       class Baz: Bar
+       {
+               public override bool Condition { get; } = true;
+       }
+
+       public static void Main (string[] args)
+       {
+       }
+}
diff --git a/mcs/tests/gtest-autoproperty-18.cs b/mcs/tests/gtest-autoproperty-18.cs
new file mode 100644 (file)
index 0000000..d1e47f7
--- /dev/null
@@ -0,0 +1,33 @@
+using System;
+
+public class A
+{
+       public int Type { get; }
+
+       public A ()
+       {
+               Type = 2;
+       }
+}
+
+public class B
+{
+       static int Type { get; }
+
+       static B ()
+       {
+               Type = 1;
+       }
+
+       static int Main ()
+       {
+               if (Type != 1)
+                       return 1;
+
+               var a = new A ();
+               if (a.Type != 2)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
index cfbe860a7dc9e52dc174bc43b2879ecf1843a62c..7117ab291e7ce6b4fed42288979c4a60936c1279 100644 (file)
@@ -59,20 +59,30 @@ public class Program
 
        static int Test_6 (params object[] o)
        {
-               return 0;
+               return 1;
        }
 
        static int Test_6 (int i = 1, params object[] a)
        {
-               return 1;
+               return 0;
        }
 
        static int Test_7 (bool b, params object[] o)
        {
-               return 0;
+               return 1;
        }
 
        static int Test_7 (bool b, int i = 1, params object[] a)
+       {
+               return 0;
+       }
+
+       static int Test_8 (Type t, bool b = false, int x = 0)
+       {
+               return 0;
+       }
+
+       static int Test_8 (Type t, params int[] x)
        {
                return 1;
        }
@@ -100,6 +110,9 @@ public class Program
                if (Test_7 (false) != 0)
                        return 7;
 
+               if (Test_8 (typeof (bool)) != 0)
+                       return 8;
+
                Console.WriteLine ("ok");
                return 0;
        }
diff --git a/mcs/tests/test-923.cs b/mcs/tests/test-923.cs
new file mode 100644 (file)
index 0000000..17710cd
--- /dev/null
@@ -0,0 +1,37 @@
+using System;
+
+public struct Location
+{
+       public int x;
+       public int y;
+}
+
+public struct LocationWrapper
+{
+       public Location location;
+}
+
+class Program
+{
+       static void Main ()
+       {
+       }
+
+       public static void Test (out Location location)
+       {
+               location.x = 0;
+               location.y = location.x;
+       }
+
+       public static void Test (LocationWrapper member)
+       {
+               member.location.x = 0;
+               member.location.y = member.location.x;
+       }
+
+       public static void Test (out LocationWrapper member)
+       {
+               member.location.x = 0;
+               member.location.y = member.location.x;
+       }
+}
\ No newline at end of file
index 2376311430a67850f0652e333238936258707279..d0fe4b7a07a7e3867f65815af18f0fe09b435a9a 100644 (file)
@@ -26,9 +26,12 @@ public class C
                Test (delegate () {
                        int i = *v.GetUnsafeValue ();
                });
+
+               Test (delegate () {
+                       byte* buffer = stackalloc byte[8192];
+               });
        }
        
-       
        public static void Main ()
        {
                Exception diffException;
diff --git a/mcs/tests/test-async-78.cs b/mcs/tests/test-async-78.cs
new file mode 100644 (file)
index 0000000..bc23893
--- /dev/null
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+public static class ExceptionHelper
+{
+       public static async Task ConditionalCatchExceptThreadAbortAsync (Func<Task>
+               funcTask, Action<Exception> conditionalCatchAction)
+       {
+               funcTask ();
+               return;
+       }
+}
+
+class ATask
+{
+       readonly object _asyncTaskCancellationSource = new object ();
+
+       readonly object aname;
+
+       public async Task<bool> OnDoWorkAsync ()
+       {
+               await ExceptionHelper.ConditionalCatchExceptThreadAbortAsync (
+                       async () => {
+                               if (_asyncTaskCancellationSource != null) {
+                                       string item = null;
+
+                                       await ExceptionHelper.ConditionalCatchExceptThreadAbortAsync (
+                                               async () => {
+                                                       Console.WriteLine (aname);
+                                               },
+                                               (e) => {
+                                                       Console.WriteLine (item);
+                                               }
+                                       );
+                               }
+                       },
+                       null
+                       );
+
+               return true;
+       }
+}
+
+public class Tests
+{
+       public static void Main ()
+       {
+               var a = new ATask ();
+               var res = a.OnDoWorkAsync ().Result;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-static-using-08.cs b/mcs/tests/test-static-using-08.cs
new file mode 100644 (file)
index 0000000..f146050
--- /dev/null
@@ -0,0 +1,17 @@
+using static A;
+//using N = System.Int32;
+
+class A
+{
+       public class N
+       {
+       }
+}
+
+class Test
+{
+       public static void Main ()
+       {
+               N n = default (N); // Am I Int32 or A.N
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-static-using-09-lib.cs b/mcs/tests/test-static-using-09-lib.cs
new file mode 100644 (file)
index 0000000..cd0468b
--- /dev/null
@@ -0,0 +1,6 @@
+// Compiler options: -t:library
+
+public static class Constants
+{
+       public const long One = 1;
+}
\ No newline at end of file
diff --git a/mcs/tests/test-static-using-09.cs b/mcs/tests/test-static-using-09.cs
new file mode 100644 (file)
index 0000000..993fd8d
--- /dev/null
@@ -0,0 +1,11 @@
+// Compiler options: -r:test-static-using-09-lib.dll
+
+using static Constants;
+
+static class Program
+{
+       static void Main ()
+       {
+               System.Console.WriteLine (One);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-static-using-10.cs b/mcs/tests/test-static-using-10.cs
new file mode 100644 (file)
index 0000000..50f9d35
--- /dev/null
@@ -0,0 +1,24 @@
+namespace A
+{
+       public class T
+       {
+               public class N
+               {
+
+               }
+       }
+}
+
+namespace B
+{
+       using static A.T;
+
+       static class Program
+       {
+               static void Main ()
+               {
+                       var t = typeof (N);
+                       var u = new N ();
+               }
+       }
+}
index 9e8bdce22c8c3bf8b2306fbd846654fbcf1f7cf5..e16164b873a807fc7288d68672a55871e935e5f9 100644 (file)
       </method>
     </type>
   </test>
+  <test name="gtest-autoproperty-17.cs">
+    <type name="MainClass">
+      <method name="Void Main(System.String[])" attrs="150">
+        <size>2</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass+Bar">
+      <method name="Boolean get_Condition()" attrs="3526">
+        <size>0</size>
+      </method>
+      <method name="Void .ctor()" attrs="6276">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="MainClass+Baz">
+      <method name="Boolean get_Condition()" attrs="2246">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>14</size>
+      </method>
+    </type>
+  </test>
+  <test name="gtest-autoproperty-18.cs">
+    <type name="A">
+      <method name="Int32 get_Type()" attrs="2182">
+        <size>14</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>15</size>
+      </method>
+    </type>
+    <type name="B">
+      <method name="Int32 get_Type()" attrs="2193">
+        <size>13</size>
+      </method>
+      <method name="Int32 Main()" attrs="145">
+        <size>53</size>
+      </method>
+      <method name="Void .cctor()" attrs="6289">
+        <size>8</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="gtest-collectioninit-01.cs">
     <type name="Test">
       <method name="Void TestList(System.Collections.Generic.List`1[System.Int32], Int32)" attrs="145">
         <size>10</size>
       </method>
       <method name="Int32 Main()" attrs="150">
-        <size>161</size>
+        <size>192</size>
       </method>
       <method name="Void .ctor()" attrs="6278">
         <size>7</size>
       </method>
+      <method name="Int32 Test_8(System.Type, Boolean, Int32)" attrs="145">
+        <size>10</size>
+      </method>
+      <method name="Int32 Test_8(System.Type, Int32[])" attrs="145">
+        <size>10</size>
+      </method>
     </type>
   </test>
   <test name="gtest-optional-10.cs">
       </method>
     </type>
   </test>
+  <test name="test-923.cs">
+    <type name="Program">
+      <method name="Void Main()" attrs="145">
+        <size>2</size>
+      </method>
+      <method name="Void Test(Location ByRef)" attrs="150">
+        <size>21</size>
+      </method>
+      <method name="Void Test(LocationWrapper)" attrs="150">
+        <size>39</size>
+      </method>
+      <method name="Void Test(LocationWrapper ByRef)" attrs="150">
+        <size>36</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
   <test name="test-93.cs">
     <type name="N1.C">
       <method name="Void .ctor()" attrs="6278">
     </type>
     <type name="C">
       <method name="Void UnsafeTests()" attrs="145">
-        <size>36</size>
+        <size>70</size>
       </method>
       <method name="Void Main()" attrs="150">
         <size>99</size>
       </method>
     </type>
     <type name="C">
-      <method name="Void &lt;Main&gt;m__0()" attrs="145">
+      <method name="Void &lt;UnsafeTests&gt;m__0()" attrs="145">
+        <size>12</size>
+      </method>
+      <method name="Void &lt;Main&gt;m__1()" attrs="145">
         <size>17</size>
       </method>
     </type>
       </method>
     </type>
   </test>
+  <test name="test-async-78.cs">
+    <type name="ExceptionHelper">
+      <method name="System.Threading.Tasks.Task ConditionalCatchExceptThreadAbortAsync(System.Func`1[System.Threading.Tasks.Task], System.Action`1[System.Exception])" attrs="150">
+        <size>41</size>
+      </method>
+    </type>
+    <type name="ATask">
+      <method name="System.Threading.Tasks.Task`1[System.Boolean] OnDoWorkAsync()" attrs="134">
+        <size>41</size>
+      </method>
+      <method name="System.Threading.Tasks.Task &lt;OnDoWorkAsync&gt;m__0()" attrs="129">
+        <size>41</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>18</size>
+      </method>
+    </type>
+    <type name="Tests">
+      <method name="Void Main()" attrs="150">
+        <size>20</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="ExceptionHelper+&lt;ConditionalCatchExceptThreadAbortAsync&gt;c__async0">
+      <method name="Void MoveNext()" attrs="486">
+        <size>73</size>
+      </method>
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">
+        <size>13</size>
+      </method>
+    </type>
+    <type name="ATask+&lt;OnDoWorkAsync&gt;c__async0">
+      <method name="Void MoveNext()" attrs="486">
+        <size>182</size>
+      </method>
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">
+        <size>13</size>
+      </method>
+    </type>
+    <type name="ATask+&lt;OnDoWorkAsync&gt;c__async4">
+      <method name="Void MoveNext()" attrs="486">
+        <size>248</size>
+      </method>
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">
+        <size>13</size>
+      </method>
+    </type>
+    <type name="ATask+&lt;OnDoWorkAsync&gt;c__async4+&lt;OnDoWorkAsync&gt;c__AnonStorey7">
+      <method name="System.Threading.Tasks.Task &lt;&gt;m__0()" attrs="131">
+        <size>46</size>
+      </method>
+      <method name="Void &lt;&gt;m__1(System.Exception)" attrs="131">
+        <size>13</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="ATask+&lt;OnDoWorkAsync&gt;c__async4+&lt;OnDoWorkAsync&gt;c__AnonStorey7+&lt;OnDoWorkAsync&gt;c__async6">
+      <method name="Void MoveNext()" attrs="486">
+        <size>82</size>
+      </method>
+      <method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">
+        <size>13</size>
+      </method>
+    </type>
+  </test>
   <test name="test-cls-00.cs">
     <type name="CLSCLass_6">
       <method name="Void add_Disposed(Delegate)" attrs="2182">
       <method name="Void set_PropNullable(System.Nullable`1[System.Byte])" attrs="2182">
         <size>8</size>
       </method>
+      <method name="System.Object get_PropReference()" attrs="2182">
+        <size>14</size>
+      </method>
+      <method name="Void set_PropReference(System.Object)" attrs="2182">
+        <size>8</size>
+      </method>
       <method name="Void add_ev1(System.Action)" attrs="2182">
         <size>42</size>
       </method>
       </method>
     </type>
     <type name="C">
-      <method name="Int32 Main()" attrs="145">
-        <size>64</size>
-      </method>
-      <method name="Void .ctor()" attrs="6278">
-        <size>7</size>
-      </method>
       <method name="Int32 TestProperty()" attrs="145">
         <size>359</size>
       </method>
       <method name="Int32 TestField()" attrs="145">
         <size>351</size>
       </method>
-    </type>
-    <type name="CI">
-      <method name="System.Object get_PropReference()" attrs="2182">
-        <size>14</size>
+      <method name="Int32 Main()" attrs="145">
+        <size>64</size>
       </method>
-      <method name="Void set_PropReference(System.Object)" attrs="2182">
-        <size>8</size>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
       </method>
     </type>
   </test>
       </method>
     </type>
   </test>
+  <test name="test-static-using-08.cs">
+    <type name="A">
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A+N">
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="Test">
+      <method name="Void Main()" attrs="150">
+        <size>4</size>
+      </method>
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-static-using-09.cs">
+    <type name="Program">
+      <method name="Void Main()" attrs="145">
+        <size>9</size>
+      </method>
+    </type>
+  </test>
+  <test name="test-static-using-10.cs">
+    <type name="A.T">
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="A.T+N">
+      <method name="Void .ctor()" attrs="6278">
+        <size>7</size>
+      </method>
+    </type>
+    <type name="B.Program">
+      <method name="Void Main()" attrs="145">
+        <size>19</size>
+      </method>
+    </type>
+  </test>
   <test name="test-var-01.cs">
     <type name="Test">
       <method name="Int32 Main()" attrs="150">
index a50197439918bd280557f4a0613c8d719111411a..72e905b8c58e3586a7d1bb9de5ba9bfd1873442a 100644 (file)
@@ -22,14 +22,14 @@ namespace Xamarin.ApiDiff
                public ApiChange AppendAdded (string text, bool breaking = false)
                {
                        if (breaking)
-                               Member.Append ("<u>");
+                               Member.Append ("<span style='text-decoration: underline'>");
                        if (State.Colorize)
-                               Member.Append ("<font color='green'>");
+                               Member.Append ("<span style='color:green'>");
                        Member.Append (text);
                        if (State.Colorize)
-                               Member.Append ("</font>");
+                               Member.Append ("</span>");
                        if (breaking)
-                               Member.Append ("</u>");
+                               Member.Append ("</span>");
                        Breaking |= breaking;
                        AnyChange = true;
                        return this;
@@ -37,13 +37,13 @@ namespace Xamarin.ApiDiff
 
                public ApiChange AppendRemoved (string text, bool breaking = true)
                {
-                       Member.Append ("<s>");
+                       Member.Append ("<span style='text-decoration: line-through'>");
                        if (State.Colorize && breaking)
-                               Member.Append ("<font color='red'>");
+                               Member.Append ("<span style='color:red'>");
                        Member.Append (text);
                        if (State.Colorize && breaking)
-                               Member.Append ("</font>");
-                       Member.Append ("</s>");
+                               Member.Append ("</span>");
+                       Member.Append ("</span>");
                        Breaking |= breaking;
                        AnyChange = true;
                        return this;
@@ -68,8 +68,14 @@ namespace Xamarin.ApiDiff
                {
                        if (!change.AnyChange) {
                                // This is most likely because the rendering doesn't take into account something that's different (solution: fix rendering).
-                               if (!change.HasIgnoredChanges)
-                                       Console.WriteLine ("Comparison resulting in no changes (src: {2} dst: {3}) :\n{0}\n{1}\n\n", source.ToString (), target.ToString (), source.GetMethodAttributes (), target.GetMethodAttributes ());
+                               if (!change.HasIgnoredChanges) {
+                                       var isField = source.Name.LocalName == "field";
+                                       if (isField) {
+                                               Console.WriteLine ("Comparison resulting in no changes (src: {2} dst: {3}) :\n{0}\n{1}\n\n", source.ToString (), target.ToString (), source.GetFieldAttributes (), target.GetFieldAttributes ());
+                                       } else {
+                                               Console.WriteLine ("Comparison resulting in no changes (src: {2} dst: {3}) :\n{0}\n{1}\n\n", source.ToString (), target.ToString (), source.GetMethodAttributes (), target.GetMethodAttributes ());
+                                       }
+                               }
                                return;
                        }
 
index dae6c09ca49111cd27e99f4ac5c96d6cb612f134..761f87a5552472fa51199f84daa48f8a369dbd87 100644 (file)
@@ -73,13 +73,9 @@ namespace Xamarin.ApiDiff {
                        if (State.IgnoreNew.Any (re => re.IsMatch (name)))
                                return;
                        Output.WriteLine ("<h3>New Type {0}.{1}</h3>", State.Namespace, name);
-                       Output.WriteLine ("<pre>");
-                       if (State.Colorize)
-                               Output.WriteLine ("<font color='green'>");
+                       Output.WriteLine (State.Colorize ? "<pre style='color: green'>" : "<pre>");
                        State.Indent = 0;
                        AddedInner (target);
-                       if (State.Colorize)
-                               Output.WriteLine ("</font>");
                        Output.WriteLine ("</pre>");
                }
 
@@ -237,7 +233,10 @@ namespace Xamarin.ApiDiff {
 
                public override void Removed (XElement source)
                {
-                       Output.WriteLine ("<h3>Removed Type {0}.{1}", State.Namespace, GetTypeName (source));
+                       var style = string.Empty;
+                       if (State.Colorize)
+                               style = "style='color: red'";
+                       Output.Write ("<h3>Removed Type <span {0}>{1}.{2}</span></h3>", style, State.Namespace, GetTypeName (source));
                }
 
                public virtual string GetTypeName (XElement type)
index c8a6e0a777262a1b43807f0decb5a5a58d315484..bb4f6c6b075289e6256d3033099e6f9d84fc5b1e 100644 (file)
@@ -45,6 +45,17 @@ namespace Xamarin.ApiDiff {
 
                void RenderFieldAttributes (FieldAttributes source, FieldAttributes target, ApiChange change)
                {
+                       var srcNotSerialized = (source & FieldAttributes.NotSerialized) == FieldAttributes.NotSerialized;
+                       var tgtNotSerialized = (target & FieldAttributes.NotSerialized) == FieldAttributes.NotSerialized;
+                       if (srcNotSerialized != tgtNotSerialized) {
+                               // this is not a breaking change, so only render it if it changed.
+                               if (srcNotSerialized) {
+                                       change.AppendRemoved ("[NonSerialized]\n");
+                               } else {
+                                       change.AppendAdded ("[NonSerialized]\n");
+                               }
+                       }
+
                        // the visibility values are the same for MethodAttributes and FieldAttributes, so just use the same method.
                        RenderVisibility ((MethodAttributes) source, (MethodAttributes) target, change);
                        // same for the static flag
@@ -178,9 +189,8 @@ namespace Xamarin.ApiDiff {
                {
                        first = true;
                        if (State.BaseType == "System.Enum") {
-                               Output.WriteLine ("<p>Added value{0}:</p><pre>", list.Count () > 1 ? "s" : String.Empty);
-                               if (State.Colorize)
-                                       Output.Write ("<font color='green'>");
+                               Output.WriteLine ("<p>Added value{0}:</p>", list.Count () > 1 ? "s" : String.Empty);
+                               Output.WriteLine (State.Colorize ? "<pre style='color: green'>" : "<pre>");
                        } else {
                                base.BeforeAdding (list);
                        }
@@ -190,9 +200,8 @@ namespace Xamarin.ApiDiff {
                {
                        first = true;
                        if (State.BaseType == "System.Enum") {
-                               Output.WriteLine ("<p>Removed value{0}:</p><pre>", list.Count () > 1 ? "s" : String.Empty);
-                               if (State.Colorize)
-                                       Output.Write ("<font color='red'>");
+                               Output.WriteLine ("<p>Removed value{0}:</p>", list.Count () > 1 ? "s" : String.Empty);
+                               Output.WriteLine (State.Colorize ? "<pre style='color: red'>" : "<pre>");
                        } else {
                                base.BeforeRemoving (list);
                        }
index a3a0e57d8c9490aa189890c621c24c29d902a826..d18efe5f70369084497d5295b53cd50f43799489 100644 (file)
@@ -182,9 +182,8 @@ namespace Xamarin.ApiDiff {
                public virtual void BeforeAdding (IEnumerable<XElement> list)
                {
                        first = true;
-                       Output.WriteLine ("<p>Added {0}:</p><pre>", list.Count () > 1 ? GroupName : ElementName);
-                       if (State.Colorize)
-                               Output.Write ("<font color='green'>");
+                       Output.WriteLine ("<p>Added {0}:</p>", list.Count () > 1 ? GroupName : ElementName);
+                       Output.WriteLine (State.Colorize ? "<pre style='color: green'>" : "<pre>");
                }
 
                public override void Added (XElement target)
@@ -198,9 +197,7 @@ namespace Xamarin.ApiDiff {
 
                public virtual void AfterAdding ()
                {
-                       if (State.Colorize)
-                               Output.Write ("</font>");
-                       Output.WriteLine ("</pre>");
+                       Output.WriteLine ("</pre>");;
                }
 
                public override void Modified (XElement source, XElement target, ApiChanges change)
@@ -210,9 +207,8 @@ namespace Xamarin.ApiDiff {
                public virtual void BeforeRemoving (IEnumerable<XElement> list)
                {
                        first = true;
-                       Output.WriteLine ("<p>Removed {0}:</p>\n<pre>", list.Count () > 1 ? GroupName : ElementName);
-                       if (State.Colorize)
-                               Output.Write ("<font color='red'>");
+                       Output.WriteLine ("<p>Removed {0}:</p>\n", list.Count () > 1 ? GroupName : ElementName);
+                       Output.WriteLine (State.Colorize ? "<pre style='color: red'>" : "<pre>");
                }
 
                public override void Removed (XElement source)
@@ -226,9 +222,7 @@ namespace Xamarin.ApiDiff {
 
                public virtual void AfterRemoving ()
                {
-                       if (State.Colorize)
-                               Output.Write ("</font>");
-                       Output.WriteLine ("</pre>");
+                       Output.WriteLine ("</pre>");;
                }
 
                string RenderGenericParameter (XElement gp)
@@ -427,6 +421,17 @@ namespace Xamarin.ApiDiff {
                                change.AnyChange = false;
                                change.HasIgnoredChanges = true;
                        }
+
+                       var tgtSecurity = (source & MethodAttributes.HasSecurity) == MethodAttributes.HasSecurity;
+                       var srcSecurity = (target & MethodAttributes.HasSecurity) == MethodAttributes.HasSecurity;
+
+                       if (tgtSecurity != srcSecurity)
+                               change.HasIgnoredChanges = true;
+
+                       var srcPInvoke = (source & MethodAttributes.PinvokeImpl) == MethodAttributes.PinvokeImpl;
+                       var tgtPInvoke = (target & MethodAttributes.PinvokeImpl) == MethodAttributes.PinvokeImpl;
+                       if (srcPInvoke != tgtPInvoke)
+                               change.HasIgnoredChanges = true;
                }
 
                protected string GetVisibility (MethodAttributes attr)
@@ -542,14 +547,14 @@ namespace Xamarin.ApiDiff {
                                var change = new ApiChange ();
                                change.Header = "Obsoleted " + GroupName;
                                if (State.Colorize)
-                                       change.Append ("<font color='gray'>");
+                                       change.Append ("<span style='color:gray'>");
                                change.Append ("[Obsolete (");
                                if (tgtObsolete != string.Empty)
                                        change.Append ("\"").Append (tgtObsolete).Append ("\"");
                                change.Append ("]\n");
                                change.Append (GetDescription (target));
                                if (State.Colorize)
-                                       change.Append ("</font>");
+                                       change.Append ("</span>");
                                change.AnyChange = true;
                                changes.Add (source, target, change);
                        } else if (tgtObsolete == null) {
index 4fbd864d994a858fd0b151698bb74c134d2e4637..f51dd231bb9297696a629b6590cd87974c1aeeb6 100644 (file)
@@ -136,6 +136,36 @@ namespace Xamarin.ApiDiff {
                        }
                }
 
+               void RenderIndexers (List<XElement> srcIndexers, List<XElement> tgtIndexers, ApiChange change)
+               {
+                       change.Append ("this [");
+                       for (int i = 0; i < srcIndexers.Count; i++) {
+                               var source = srcIndexers [i];
+                               var target = tgtIndexers [i];
+
+                               if (i > 0)
+                                       change.Append (", ");
+
+                               var srcType = source.GetTypeName ("type");
+                               var tgtType = target.GetTypeName ("type");
+                               if (srcType == tgtType) {
+                                       change.Append (tgtType);
+                               } else {
+                                       change.AppendModified (srcType, tgtType, true);
+                               }
+                               change.Append (" ");
+
+                               var srcName = source.GetAttribute ("name");
+                               var tgtName = target.GetAttribute ("name");
+                               if (srcName == tgtName) {
+                                       change.Append (tgtName);
+                               } else {
+                                       change.AppendModified (srcName, tgtName, true);
+                               }
+                       }
+                       change.Append ("]");
+               }
+
                public override bool Equals (XElement source, XElement target, ApiChanges changes)
                {
                        if (base.Equals (source, target, changes))
@@ -146,11 +176,24 @@ namespace Xamarin.ApiDiff {
                        GetAccessors (source, out srcGetter, out srcSetter);
                        GetAccessors (target, out tgtGetter, out tgtSetter);
 
+                       List<XElement> srcIndexers = null;
+                       List<XElement> tgtIndexers = null;
+                       bool isIndexer = false;
+                       if (srcGetter != null) {
+                               srcIndexers = srcGetter.DescendantList ("parameters", "parameter");
+                               tgtIndexers = tgtGetter.DescendantList ("parameters", "parameter");
+                               isIndexer = srcIndexers != null && srcIndexers.Count > 0;
+                       }
+
                        var change = new ApiChange ();
                        change.Header = "Modified " + GroupName;
                        RenderMethodAttributes (GetMethodAttributes (srcGetter, srcSetter), GetMethodAttributes (tgtGetter, tgtSetter), change);
                        RenderPropertyType (source, target, change);
-                       RenderName (source, target, change);
+                       if (isIndexer) {
+                               RenderIndexers (srcIndexers, tgtIndexers, change);
+                       } else {
+                               RenderName (source, target, change);
+                       }
                        RenderGenericParameters (source, target, change);
                        RenderAccessors (srcGetter, tgtGetter, srcSetter, tgtSetter, change);
 
index b6276ac2490d3fa84f7b6297386aa13378685406..20e63171588d6f96cfe645fb72fafa11864437b4 100644 (file)
@@ -204,18 +204,72 @@ namespace Mono.Linker.Steps {
                        MarkCustomAttributeFields (ca, type);
                }
 
-               void MarkCustomAttributeProperties (CustomAttribute ca, TypeDefinition attribute)
+               protected void MarkSecurityDeclarations (ISecurityDeclarationProvider provider)
+               {
+                       // most security declarations are removed (if linked) but user code might still have some
+                       // and if the attribtues references types then they need to be marked too
+                       if ((provider == null) || !provider.HasSecurityDeclarations)
+                               return;
+
+                       foreach (var sd in provider.SecurityDeclarations)
+                               MarkSecurityDeclaration (sd);
+               }
+
+               protected virtual void MarkSecurityDeclaration (SecurityDeclaration sd)
+               {
+                       if (!sd.HasSecurityAttributes)
+                               return;
+                       
+                       foreach (var sa in sd.SecurityAttributes)
+                               MarkSecurityAttribute (sa);
+               }
+
+               protected virtual void MarkSecurityAttribute (SecurityAttribute sa)
+               {
+                       TypeReference security_type = sa.AttributeType;
+                       TypeDefinition type = security_type.Resolve ();
+                       if (type == null)
+                               throw new ResolutionException (security_type);
+                       
+                       MarkType (security_type);
+                       MarkSecurityAttributeProperties (sa, type);
+                       MarkSecurityAttributeFields (sa, type);
+               }
+
+               protected void MarkSecurityAttributeProperties (SecurityAttribute sa, TypeDefinition attribute)
+               {
+                       if (!sa.HasProperties)
+                               return;
+
+                       foreach (var named_argument in sa.Properties)
+                               MarkCustomAttributeProperty (named_argument, attribute);
+               }
+
+               protected void MarkSecurityAttributeFields (SecurityAttribute sa, TypeDefinition attribute)
+               {
+                       if (!sa.HasFields)
+                               return;
+
+                       foreach (var named_argument in sa.Fields)
+                               MarkCustomAttributeField (named_argument, attribute);
+               }
+
+               protected void MarkCustomAttributeProperties (CustomAttribute ca, TypeDefinition attribute)
                {
                        if (!ca.HasProperties)
                                return;
 
-                       foreach (var named_argument in ca.Properties) {
-                               PropertyDefinition property = GetProperty (attribute, named_argument.Name);
-                               if (property != null)
-                                       MarkMethod (property.SetMethod);
+                       foreach (var named_argument in ca.Properties)
+                               MarkCustomAttributeProperty (named_argument, attribute);
+               }
 
-                               MarkIfType (named_argument.Argument);
-                       }
+               protected void MarkCustomAttributeProperty (CustomAttributeNamedArgument namedArgument, TypeDefinition attribute)
+               {
+                       PropertyDefinition property = GetProperty (attribute, namedArgument.Name);
+                       if (property != null)
+                               MarkMethod (property.SetMethod);
+
+                       MarkIfType (namedArgument.Argument);
                }
 
                PropertyDefinition GetProperty (TypeDefinition type, string propertyname)
@@ -231,18 +285,22 @@ namespace Mono.Linker.Steps {
                        return null;
                }
 
-               void MarkCustomAttributeFields (CustomAttribute ca, TypeDefinition attribute)
+               protected void MarkCustomAttributeFields (CustomAttribute ca, TypeDefinition attribute)
                {
                        if (!ca.HasFields)
                                return;
 
-                       foreach (var named_argument in ca.Fields) {
-                               FieldDefinition field = GetField (attribute, named_argument.Name);
-                               if (field != null)
-                                       MarkField (field);
+                       foreach (var named_argument in ca.Fields)
+                               MarkCustomAttributeField (named_argument, attribute);
+               }
 
-                               MarkIfType (named_argument.Argument);
-                       }
+               protected void MarkCustomAttributeField (CustomAttributeNamedArgument namedArgument, TypeDefinition attribute)
+               {
+                       FieldDefinition field = GetField (attribute, namedArgument.Name);
+                       if (field != null)
+                               MarkField (field);
+
+                       MarkIfType (namedArgument.Argument);
                }
 
                FieldDefinition GetField (TypeDefinition type, string fieldname)
@@ -288,9 +346,25 @@ namespace Mono.Linker.Steps {
                // even if we (just before saving) will resolve all type references (bug #26752)
                void MarkWithResolvedScope (TypeReference type)
                {
-                       // we cannot set the Scope of a TypeSpecification so there's no point in resolving it
-                       if ((type == null) || (type is TypeSpecification))
+                       if (type == null)
+                               return;
+
+                       // a GenericInstanceType can could contains generic arguments with scope that
+                       // needs to be updated out of the PCL facade (bug #28823)
+                       var git = (type as GenericInstanceType);
+                       if ((git != null) && git.HasGenericArguments) {
+                               foreach (var ga in git.GenericArguments)
+                                       MarkWithResolvedScope (ga);
+                               return;
+                       }
+                       // we cannot set the Scope of a TypeSpecification but it's element type can be set
+                       // e.g. System.String[] -> System.String
+                       var ts = (type as TypeSpecification);
+                       if (ts != null) {
+                               MarkWithResolvedScope (ts.GetElementType ());
                                return;
+                       }
+
                        var td = type.Resolve ();
                        if (td != null)
                                type.Scope = td.Scope;
@@ -306,7 +380,7 @@ namespace Mono.Linker.Steps {
                        return false;
                }
 
-               void MarkAssembly (AssemblyDefinition assembly)
+               protected void MarkAssembly (AssemblyDefinition assembly)
                {
                        if (CheckProcessed (assembly))
                                return;
@@ -314,6 +388,7 @@ namespace Mono.Linker.Steps {
                        ProcessModule (assembly);
 
                        MarkCustomAttributes (assembly);
+                       MarkSecurityDeclarations (assembly);
 
                        foreach (ModuleDefinition module in assembly.Modules)
                                MarkCustomAttributes (module);
@@ -412,6 +487,7 @@ namespace Mono.Linker.Steps {
                        MarkType (type.BaseType);
                        MarkType (type.DeclaringType);
                        MarkCustomAttributes (type);
+                       MarkSecurityDeclarations (type);
 
                        if (IsMulticastDelegate (type)) {
                                MarkMethodCollection (type.Methods);
@@ -845,6 +921,7 @@ namespace Mono.Linker.Steps {
 
                        MarkType (method.DeclaringType);
                        MarkCustomAttributes (method);
+                       MarkSecurityDeclarations (method);
 
                        MarkGenericParameterProvider (method);
 
index d7be23ac9e33dbbd87eb856657dcb727a6e5d837..808d09255fee42e448b185b621eed23aa55de6cc 100644 (file)
@@ -100,7 +100,8 @@ namespace Mono.Linker.Steps {
                        var references = assembly.MainModule.AssemblyReferences;
                        for (int i = 0; i < references.Count; i++) {
                                var reference = references [i];
-                               if (!AreSameReference (reference, target.Name))
+                               var r = Context.Resolver.Resolve (reference);
+                               if (!AreSameReference (r.Name, target.Name))
                                        continue;
 
                                references.RemoveAt (i);
index 113ea7ed6fe818704cf2efd8d254dd2408600662..2fc8018c7b492d35bf26e46193ca5acadfc1d5b7 100644 (file)
@@ -77,7 +77,7 @@ namespace Symbolicate
                        {
 
                                if (methodGetMethodFullName == null)
-                                       methodGetMethodFullName = typeof (Exception).GetMethod ("GetFullNameForStackTrace", BindingFlags.NonPublic | BindingFlags.Static);
+                                       methodGetMethodFullName = typeof (StackTrace).GetMethod ("GetFullNameForStackTrace", BindingFlags.NonPublic | BindingFlags.Static);
 
                                if (methodGetMethodFullName == null)
                                        throw new Exception ("System.Exception.GetFullNameForStackTrace could not be found, make sure you have an updated mono installed.");
index 4be186fbcb7e90e09422b40d751f327fc385ef74..6fc37c34271a59f7da5163add23b049f802fdfa5 100644 (file)
@@ -8,3 +8,9 @@ LOCAL_MCS_FLAGS += -d:NO_AUTHENTICODE,STATIC,NO_SYMBOL_WRITER
 CLEAN_FILES = monop.exe monop2.exe *.mdb
 
 include ../../build/executable.make
+
+run-test-local : basic-tests
+
+basic-tests:
+       for type in System.Array System.String 'System.Collections.Generic.List`1'; do \
+       echo $$type; $(RUNTIME) $(build_lib) $$type >/dev/null || exit 1; done
\ No newline at end of file
index 9fe98ed6d19ffb59b9cb48b4569c19b4190bd86f..1f0b253321a1b771b9f72c59e3e90b3c839f90cc 100644 (file)
@@ -301,10 +301,10 @@ class MonoP {
 
        static Options options = new Options ();
        
-       static void Main (string [] args)
+       static int Main (string [] args)
        {
                if (!options.ProcessArgs (args))
-                       return;
+                       return 1;
                
                if (options.Style == null)
                        mscorlib = universe.LoadFile (typeof (int).Assembly.Location);
@@ -318,14 +318,14 @@ class MonoP {
 
                        if (options.ShowAll){
                                ShowAll (assembly, options.ShowPrivate, options.FilterObsolete);
-                               return;
+                               return 0;
                        } else {
                                if (options.Type == null) {
                                        if (options.PrintRefs)
                                                PrintRefs (assembly);
                                        else
                                                PrintTypes (assembly, options.ShowPrivate, options.FilterObsolete);
-                                       return;
+                                       return 0;
                                }
                        }
                }
@@ -348,7 +348,7 @@ class MonoP {
                        if (count > 1){
                                Console.WriteLine ("Found " + count + " types that match:");
                                Console.WriteLine (matches);
-                               return;
+                               return 0;
                        }
                }
                        
@@ -394,7 +394,7 @@ class MonoP {
        notfound:
                if (t == null) {
                        Console.WriteLine ("Could not find {0}", tname);
-                       return;
+                       return 1;
                }
        found:
                //
@@ -406,6 +406,7 @@ class MonoP {
 
                if (message != null)
                        Console.WriteLine (message);
+               return 0;
        }
 }
 
index 63b2359b3dd2bf09dfd902604fa2e9b007a6b00b..1e1dc25ae6d3f75dfbe02b9f8860b0a55acae1bb 100644 (file)
@@ -42,6 +42,19 @@ using System.Reflection;
 #endif
 
 namespace Mono.CSharp {
+
+public static class TypeExtensions {
+       public static string GetNamespace (this Type t)
+       {
+               // IKVM crashes here with a null ref sometimes
+               try {
+                       return t.Namespace;
+               } catch {
+                       return null;
+               }
+       }
+}
+       
 public class Outline {
        bool declared_only;
        bool show_private;
@@ -636,7 +649,7 @@ public class Outline {
                if (!type.StartsWith ("System.")) {
                        if (type.IndexOf (".") == -1)
                                return type;
-                       if (t.Namespace == this.t.Namespace)
+                       if (t.GetNamespace () == this.t.GetNamespace ())
                                return t.Name;
                        return type;
                }
@@ -745,7 +758,8 @@ public class Outline {
                }
 
                if (!recursed) {
-                       string ns = t.Namespace;
+                       string ns;
+                       ns = t.GetNamespace ();
                        if ((ns != null) && (ns != "")) {
                                sb.Append (ns);
                                sb.Append (".");
index 852f797939ccfff99dcdc91b86c68021235c568f..479f0c125b578ac2df1faafbf280ef0292559978 100644 (file)
@@ -158,8 +158,14 @@ namespace Microsoft.Cci.Pdb {
 
     internal decimal ReadDecimal() {
       int[] bits = new int[4];
-      this.ReadInt32(bits);
-      return new decimal(bits);
+      this.ReadInt32 (bits);
+      try {
+        bool sign = (bits[3] & 0x80000000) != 0;
+        byte scale = (byte)((bits[3] >> 16) & 0x7F);
+        return new decimal (bits[0], bits[1], bits[2], sign, scale);
+      } catch (ArgumentException) {
+        return new decimal ();
+      }
     }
 
     internal void ReadBString(out string value) {
index 05c24763cdeaed4ac7bfc12aa0b87e441e5792e0..67b0d2f8832ef1883406862a15a7f8eea8f5f537 100644 (file)
@@ -41,8 +41,12 @@ install-bin-data:
 install-frameworks:
        $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v$(FRAMEWORK_VERSION)/RedistList
        $(INSTALL_DATA) frameworks/net_$(FRAMEWORK_VERSION).xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v$(FRAMEWORK_VERSION)/RedistList/FrameworkList.xml
+       $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v2.0/RedistList
+       $(INSTALL_DATA) frameworks/net_2.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v2.0/RedistList/FrameworkList.xml
        $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.0/RedistList
        $(INSTALL_DATA) frameworks/net_3.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.0/RedistList/FrameworkList.xml
+       $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.5/RedistList
+       $(INSTALL_DATA) frameworks/net_3.5.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v3.5/RedistList/FrameworkList.xml
        $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/RedistList
        $(INSTALL_DATA) frameworks/net_4.0.xml $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/RedistList/FrameworkList.xml
        $(MKINSTALLDIRS) $(DESTDIR)$(NETFRAMEWORK_DIR)/v4.0/Profile/Client/RedistList
@@ -54,9 +58,11 @@ install-pcl-targets:
        $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.0
        $(INSTALL_DATA) targets/Microsoft.Portable.Common.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.0/Microsoft.Portable.Common.targets
        $(INSTALL_DATA) targets/Microsoft.Portable.CSharp_4.0.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.0/Microsoft.Portable.CSharp.targets
+       $(INSTALL_DATA) targets/Microsoft.Portable.VisualBasic_4.0.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.0/Microsoft.Portable.VisualBasic.targets
        $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.5
        $(INSTALL_DATA) targets/Microsoft.Portable.Common.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.5/Microsoft.Portable.Common.targets
        $(INSTALL_DATA) targets/Microsoft.Portable.CSharp_4.5.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.5/Microsoft.Portable.CSharp.targets
+       $(INSTALL_DATA) targets/Microsoft.Portable.VisualBasic_4.5.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/v4.5/Microsoft.Portable.VisualBasic.targets
        $(INSTALL_DATA) targets/Microsoft.Portable.Core.targets $(DESTDIR)$(PORTABLE_TARGETS_DIR)/Microsoft.Portable.Core.targets
        $(INSTALL_DATA) targets/Microsoft.Portable.Core.props $(DESTDIR)$(PORTABLE_TARGETS_DIR)/Microsoft.Portable.Core.props
 
@@ -99,6 +105,8 @@ EXTRA_DISTFILES = \
        frameworks/net_4.5.1.xml \
        targets/Microsoft.Portable.CSharp_4.0.targets \
        targets/Microsoft.Portable.CSharp_4.5.targets \
+       targets/Microsoft.Portable.VisualBasic_4.0.targets \
+       targets/Microsoft.Portable.VisualBasic_4.5.targets \
        targets/Microsoft.Portable.Common.targets \
        targets/Microsoft.Portable.Core.targets \
        targets/Microsoft.Portable.Core.props \
index 14047e5e8584240940b7a2df446782c58a872c92..2155da3f2774c3b5b148f65f1fb38082402c521a 100644 (file)
@@ -8,6 +8,7 @@
        <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
+       <UsingTask TaskName="Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"       AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
index b5cede2e44825f95653fc8fe21ea08728f349f3c..01964063c0f816152a271f79b580b1139aa4d190 100644 (file)
@@ -7,6 +7,7 @@
        <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
+       <UsingTask TaskName="Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"       AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
index fadb882f9f9400fd9684c257f2bd02f30be37c6d..fc9ec9cd119d6bbab5b9ab3ab321225a375c99f9 100644 (file)
@@ -7,6 +7,7 @@
        <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+       <UsingTask TaskName="Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"       AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
index 68fcc7708fed1d172f3725ef6ea8041146aed5c3..7df9a2928a15ab03a0508bfbe231880262fa3217 100644 (file)
@@ -8,6 +8,7 @@
        <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+       <UsingTask TaskName="Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"       AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
index 1063058785d6a70ada1fab267c698e829747addd..b183750f9e2d3c504d182c263b2084a98a5c0a50 100644 (file)
@@ -8,6 +8,7 @@
        <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
+       <UsingTask TaskName="Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"       AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
index aba4cfa286e0bf687be52c8918a83d261189b0fc..dc2b0e6d61f20b86ba043739a30b2e2f42230fcd 100644 (file)
@@ -1,5 +1,4 @@
 ï»¿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName" AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <PropertyGroup>
                <DefaultLanguageSourceExtension>.vb</DefaultLanguageSourceExtension>
                <Language>VB</Language>
                        OptionExplicit="$(OptionExplicit)"
                        OptionStrict="$(OptionStrict)"
                        OptionStrictType="$(OptionStrictType)"
+                       OptionInfer="$(OptionInfer)"
                        OutputAssembly="@(IntermediateAssembly)"
                        Platform="$(PlatformTarget)"
-                       References="@(ResolvedFiles)"
+                       References="@(ReferencePath)"
                        RemoveIntegerChecks="$(RemoveIntegerChecks)"
                        Resources="@(ManifestResourceWithNoCulture);@(ManifestNonResxWithNoCultureOnDisk);@(CompiledLicenseFile)"
                        ResponseFiles="$(CompilerResponseFile)"
@@ -77,6 +77,7 @@
                        TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
                        UseHostCompilerIfAvailable="$(UseHostCompilerIfAvailable)"
                        Utf8Output="$(Utf8Output)"
+                       VBRuntime="$(VBRuntime)"
                        Verbosity="$(VbcVerbosity)"
                        WarningsAsErrors="$(WarningsAsErrors)"
                        WarningsNotAsErrors="$(WarningsNotAsErrors)"
diff --git a/mcs/tools/xbuild/targets/Microsoft.Portable.VisualBasic_4.0.targets b/mcs/tools/xbuild/targets/Microsoft.Portable.VisualBasic_4.0.targets
new file mode 100644 (file)
index 0000000..bf58fee
--- /dev/null
@@ -0,0 +1,5 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+       <Import Project="..\Microsoft.Portable.Core.props" />
+       <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
+       <Import Project="..\Microsoft.Portable.Core.targets" />
+</Project>
diff --git a/mcs/tools/xbuild/targets/Microsoft.Portable.VisualBasic_4.5.targets b/mcs/tools/xbuild/targets/Microsoft.Portable.VisualBasic_4.5.targets
new file mode 100644 (file)
index 0000000..bf58fee
--- /dev/null
@@ -0,0 +1,5 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+       <Import Project="..\Microsoft.Portable.Core.props" />
+       <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
+       <Import Project="..\Microsoft.Portable.Core.targets" />
+</Project>
diff --git a/mono-core.spec.in b/mono-core.spec.in
deleted file mode 100644 (file)
index 04c4e32..0000000
+++ /dev/null
@@ -1,1518 +0,0 @@
-%{!?ext_man: %define ext_man .gz}
-%define llvm no
-%define sgen yes
-
-%ifnarch %ix86 x86_64
-%define llvm no
-%endif
-
-%ifnarch %ix86 x86_64 s390x
-%define sgen no
-%endif
-
-Name:           mono-core
-License:        LGPL v2.1 only
-Group:          Development/Languages/Mono
-Summary:        A .NET Runtime Environment
-Url:            http://www.mono-project.com
-Version:        @VERSION@
-Release:        0
-Source0:        mono-%{version}.tar.bz2
-BuildRequires:  bison
-%if 0%{?suse_version}
-BuildRequires:  fdupes
-BuildRequires:  xorg-x11-libX11-devel
-%else
-BuildRequires: libX11-devel
-%endif
-BuildRequires:  gcc-c++
-BuildRequires:  pkgconfig
-BuildRequires:  zlib-devel
-%ifnarch ia64
-BuildRequires:  valgrind-devel
-%endif
-%if %llvm == yes
-BuildRequires:  llvm-mono-devel
-%endif
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-Obsoletes:      mono
-Obsoletes:      mono-cairo
-Obsoletes:      mono-drawing
-Obsoletes:      mono-ikvm
-Obsoletes:      mono-posix
-Obsoletes:      mono-xml-relaxng
-Obsoletes:      mono-ziplib
-Provides:       mono = %{version}-%{release}
-Provides:       mono-cairo
-Provides:       mono-drawing
-Provides:       mono-ikvm
-Provides:       mono-posix
-Provides:       mono-xml-relaxng
-Provides:       mono-ziplib
-# This version of mono has issues with the following versions of apps:
-#  (not because of regressions, but because bugfixes in mono uncover bugs in the apps)
-Conflicts:      banshee < 1.0
-Conflicts:      f-spot < 0.4
-Conflicts:      helix-banshee < 1.0
-Conflicts:      mono-addins < 0.3.1
-%if 0%{?suse_version}
-Recommends:     libgdiplus0 >= 2.6
-%endif
-%if %llvm == yes
-Recommends:     libmono-llvm0 = %{version}-%{release}
-%endif
-Provides:       mono(Commons.Xml.Relaxng) = 1.0.5000.0
-Provides:       mono(CustomMarshalers) = 1.0.5000.0
-Provides:       mono(I18N) = 1.0.5000.0
-Provides:       mono(I18N.West) = 1.0.5000.0
-Provides:       mono(ICSharpCode.SharpZipLib) = 0.6.0.0
-Provides:       mono(ICSharpCode.SharpZipLib) = 0.84.0.0
-Provides:       mono(Mono.Cairo) = 1.0.5000.0
-Provides:       mono(Mono.CompilerServices.SymbolWriter) = 1.0.5000.0
-Provides:       mono(Mono.Posix) = 1.0.5000.0
-Provides:       mono(Mono.Security) = 1.0.5000.0
-Provides:       mono(System) = 1.0.5000.0
-Provides:       mono(System.Security) = 1.0.5000.0
-Provides:       mono(System.Xml) = 1.0.5000.0
-Provides:       mono(mscorlib) = 1.0.5000.0
-
-%define _use_internal_dependency_generator 0
-%define __find_provides env sh -c 'filelist=($(cat)) && { printf "%s\\n" "${filelist[@]}" | /usr/lib/rpm/find-provides && printf "%s\\n" "${filelist[@]}" | prefix=%{buildroot}%{_prefix} %{buildroot}%{_bindir}/mono-find-provides ; } | sort | uniq'
-%define __find_requires env sh -c 'filelist=($(cat)) && { printf "%s\\n" "${filelist[@]}" | /usr/lib/rpm/find-requires && printf "%s\\n" "${filelist[@]}" | prefix=%{buildroot}%{_prefix} %{buildroot}%{_bindir}/mono-find-requires ; } | sort | uniq'
-
-%description
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-%prep
-%setup -q -n mono-%{version}
-
-%build
-# These are only needed if there are patches to the runtime
-#rm -f libgc/libtool.m4
-#autoreconf --force --install
-#autoreconf --force --install libgc
-export CFLAGS=" $RPM_OPT_FLAGS -fno-strict-aliasing"
-# distro specific configure options
-%if %llvm == yes
-export PATH=/opt/novell/llvm-mono/bin:$PATH
-%endif
-%configure \
-  --target=%{_host} \
-  --with-sgen=%{sgen} \
-%if %llvm == yes
-  --enable-loadedllvm \
-  --disable-system-aot \
-%endif
-%ifnarch %ix86 x86_64
-  --disable-system-aot \
-%endif
-  --with-ikvm=yes \
-  --with-moonlight=no
-#make # We are not -jN safe! %{?jobs:-j%jobs}
-# We are now !
-make get-monolite-latest
-make %{?_smp_mflags}
-
-%install
-make install DESTDIR=%buildroot
-# remove .la files (they are generally bad news)
-rm -f %buildroot%_libdir/*.la
-# remove Windows-only stuff
-rm -rf %buildroot%_prefix/lib/mono/*/Mono.Security.Win32*
-rm -f %buildroot%_libdir/libMonoSupportW.*
-# remove .a files for libraries that are really only for us
-rm -f %buildroot%_libdir/libMonoPosixHelper.a
-rm -f %buildroot%_libdir/libikvm-native.a
-rm -f %buildroot%_libdir/libmono-llvm.a
-# remove libgc cruft
-rm -rf %buildroot%_datadir/libgc-mono
-# remove stuff that we don't package
-rm -f %buildroot%_bindir/cilc
-rm -f %buildroot%_mandir/man1/cilc.1*
-rm -f %buildroot%_prefix/lib/mono/*/browsercaps-updater.exe*
-rm -f %buildroot%_prefix/lib/mono/*/culevel.exe*
-rm -f %buildroot%_prefix/lib/mono/2.0/cilc.exe*
-# brp-compress doesn't search _mandir
-# so we cheat it
-ln -s . %buildroot%_prefix%_prefix
-RPM_BUILD_ROOT=%buildroot%_prefix /usr/lib/rpm/brp-compress
-rm %buildroot%_prefix%_prefix
-%if 0%{?suse_version}
-%fdupes %buildroot%_prefix
-%endif
-%find_lang mcs
-
-%clean
-rm -rf %buildroot
-
-%files -f mcs.lang
-%defattr(-, root, root)
-%doc AUTHORS COPYING.LIB ChangeLog NEWS README.md
-%config %_sysconfdir/mono/2.0/machine.config
-%config %_sysconfdir/mono/2.0/settings.map
-%config %_sysconfdir/mono/4.0/machine.config
-%config %_sysconfdir/mono/4.0/settings.map
-%config %_sysconfdir/mono/4.5/machine.config
-%config %_sysconfdir/mono/4.5/settings.map
-%config %_sysconfdir/mono/config
-%dir %_prefix/lib/mono
-%dir %_prefix/lib/mono/2.0
-%dir %_prefix/lib/mono/3.5
-%dir %_prefix/lib/mono/4.0
-%dir %_prefix/lib/mono/4.5
-%dir %_prefix/lib/mono/compat-2.0
-%dir %_prefix/lib/mono/gac
-%dir %_sysconfdir/mono
-%dir %_sysconfdir/mono/2.0
-%dir %_sysconfdir/mono/4.0
-%dir %_sysconfdir/mono/4.5
-%_bindir/al
-%_bindir/al2
-%_bindir/certmgr
-%_bindir/chktrust
-%_bindir/crlupdate
-%_bindir/csharp
-%_bindir/dmcs
-%_bindir/gacutil
-%_bindir/gacutil2
-%_bindir/ikdasm
-%_bindir/mcs
-%_bindir/mono
-%_bindir/mono-configuration-crypto
-%if %sgen == yes
-%_bindir/mono-sgen
-%endif
-%_bindir/mono-boehm
-%_bindir/mono-test-install
-%_bindir/mozroots
-%_bindir/peverify
-%_bindir/setreg
-%_bindir/sn
-%_libdir/libMonoPosixHelper.so*
-%_libdir/libikvm-native.so
-%_mandir/man1/certmgr.1%ext_man
-%_mandir/man1/chktrust.1%ext_man
-%_mandir/man1/crlupdate.1%ext_man
-%_mandir/man1/csharp.1%ext_man
-%_mandir/man1/gacutil.1%ext_man
-%_mandir/man1/mcs.1%ext_man
-%_mandir/man1/mono-configuration-crypto.1%ext_man
-%_mandir/man1/mono.1%ext_man
-%_mandir/man1/mozroots.1%ext_man
-%_mandir/man1/setreg.1%ext_man
-%_mandir/man1/sn.1%ext_man
-%_mandir/man5/mono-config.5%ext_man
-%_prefix/lib/mono/2.0/Commons.Xml.Relaxng.dll
-%_prefix/lib/mono/2.0/CustomMarshalers.dll
-%_prefix/lib/mono/2.0/I18N.West.dll
-%_prefix/lib/mono/2.0/I18N.dll
-%_prefix/lib/mono/2.0/ICSharpCode.SharpZipLib.dll
-%_prefix/lib/mono/2.0/Microsoft.VisualC.dll
-%_prefix/lib/mono/2.0/Mono.C5.dll
-%_prefix/lib/mono/2.0/Mono.CSharp.dll
-%_prefix/lib/mono/2.0/Mono.Cairo.dll
-%_prefix/lib/mono/2.0/Mono.CompilerServices.SymbolWriter.dll
-%_prefix/lib/mono/2.0/Mono.Management.dll
-%_prefix/lib/mono/2.0/Mono.Posix.dll
-%_prefix/lib/mono/2.0/Mono.Security.dll
-%_prefix/lib/mono/2.0/Mono.Simd.dll
-%_prefix/lib/mono/2.0/Mono.Tasklets.dll
-%_prefix/lib/mono/2.0/System.Configuration.dll
-%_prefix/lib/mono/2.0/System.Core.dll
-%_prefix/lib/mono/2.0/System.Drawing.dll
-%_prefix/lib/mono/2.0/System.Net.dll
-%_prefix/lib/mono/2.0/System.Security.dll
-%_prefix/lib/mono/2.0/System.Xml.Linq.dll
-%_prefix/lib/mono/2.0/System.Xml.dll
-%_prefix/lib/mono/2.0/System.dll
-%_prefix/lib/mono/2.0/System.Json.dll
-%_prefix/lib/mono/2.0/al.exe*
-%_prefix/lib/mono/2.0/cscompmgd.dll
-%_prefix/lib/mono/2.0/gacutil.exe*
-%_prefix/lib/mono/2.0/mscorlib.dll*
-%_prefix/lib/mono/4.0/Commons.Xml.Relaxng.dll
-%_prefix/lib/mono/4.0/CustomMarshalers.dll
-%_prefix/lib/mono/4.0/I18N.West.dll
-%_prefix/lib/mono/4.0/I18N.dll
-%_prefix/lib/mono/4.0/ICSharpCode.SharpZipLib.dll
-%_prefix/lib/mono/4.0/Microsoft.CSharp.dll
-%_prefix/lib/mono/4.0/Microsoft.VisualC.dll
-%_prefix/lib/mono/4.0/Mono.C5.dll
-%_prefix/lib/mono/4.0/Mono.CSharp.dll
-%_prefix/lib/mono/4.0/Mono.Cairo.dll
-%_prefix/lib/mono/4.0/Mono.CompilerServices.SymbolWriter.dll
-%_prefix/lib/mono/4.0/Mono.Management.dll
-%_prefix/lib/mono/4.0/Mono.Parallel.dll
-%_prefix/lib/mono/4.0/Mono.Posix.dll
-%_prefix/lib/mono/4.0/Mono.Security.dll
-%_prefix/lib/mono/4.0/Mono.Simd.dll
-%_prefix/lib/mono/4.0/Mono.Tasklets.dll
-%_prefix/lib/mono/4.0/System.Configuration.dll
-%_prefix/lib/mono/4.0/System.Core.dll
-%_prefix/lib/mono/4.0/System.Drawing.dll
-%_prefix/lib/mono/4.0/System.Dynamic.dll
-%_prefix/lib/mono/4.0/System.Json.dll
-%_prefix/lib/mono/4.0/System.Json.Microsoft.dll
-%_prefix/lib/mono/4.0/System.Net.dll
-%_prefix/lib/mono/4.0/System.Numerics.dll
-%_prefix/lib/mono/4.0/System.Security.dll
-%_prefix/lib/mono/4.0/System.Xml.Linq.dll
-%_prefix/lib/mono/4.0/System.Xml.dll
-%_prefix/lib/mono/4.0/System.dll
-%_prefix/lib/mono/4.5/al.exe*
-%_prefix/lib/mono/4.5/certmgr.exe*
-%_prefix/lib/mono/4.5/chktrust.exe*
-%_prefix/lib/mono/4.5/crlupdate.exe*
-%_prefix/lib/mono/4.0/cscompmgd.dll
-%_prefix/lib/mono/4.5/csharp.exe*
-%_prefix/lib/mono/4.5/gacutil.exe*
-%_prefix/lib/mono/4.5/ikdasm.exe*
-%_prefix/lib/mono/4.5/mcs.exe*
-%_prefix/lib/mono/4.5/mozroots.exe*
-%_prefix/lib/mono/4.0/mscorlib.dll*
-%_prefix/lib/mono/4.5/setreg.exe*
-%_prefix/lib/mono/4.5/sn.exe*
-%_prefix/lib/mono/4.5/Commons.Xml.Relaxng.dll
-%_prefix/lib/mono/4.5/CustomMarshalers.dll
-%_prefix/lib/mono/4.5/I18N.CJK.dll
-%_prefix/lib/mono/4.5/I18N.MidEast.dll
-%_prefix/lib/mono/4.5/I18N.Other.dll
-%_prefix/lib/mono/4.5/I18N.Rare.dll
-%_prefix/lib/mono/4.5/I18N.West.dll
-%_prefix/lib/mono/4.5/I18N.dll
-%_prefix/lib/mono/4.5/IBM.Data.DB2.dll
-%_prefix/lib/mono/4.5/ICSharpCode.SharpZipLib.dll
-%_prefix/lib/mono/4.5/Microsoft.CSharp.dll
-%_prefix/lib/mono/4.5/Microsoft.VisualC.dll
-%_prefix/lib/mono/4.5/Mono.C5.dll
-%_prefix/lib/mono/4.5/Mono.CSharp.dll
-%_prefix/lib/mono/4.5/Mono.Cairo.dll
-%_prefix/lib/mono/4.5/Mono.CompilerServices.SymbolWriter.dll
-%_prefix/lib/mono/4.5/Mono.Management.dll
-%_prefix/lib/mono/4.5/Mono.Parallel.dll
-%_prefix/lib/mono/4.5/Mono.Posix.dll
-%_prefix/lib/mono/4.5/Mono.Security.dll
-%_prefix/lib/mono/4.5/Mono.Simd.dll
-%_prefix/lib/mono/4.5/Mono.Tasklets.dll
-%_prefix/lib/mono/4.5/System.Configuration.dll
-%_prefix/lib/mono/4.5/System.Core.dll
-%_prefix/lib/mono/4.5/System.Drawing.dll
-%_prefix/lib/mono/4.5/System.Dynamic.dll
-%_prefix/lib/mono/4.5/System.IO.Compression.dll
-%_prefix/lib/mono/4.5/System.IO.Compression.FileSystem.dll
-%_prefix/lib/mono/4.5/System.Json.dll
-%_prefix/lib/mono/4.5/System.Json.Microsoft.dll
-%_prefix/lib/mono/4.5/System.Net.dll
-%_prefix/lib/mono/4.5/System.Net.Http.dll
-%_prefix/lib/mono/4.5/System.Net.Http.WebRequest.dll
-%_prefix/lib/mono/4.5/System.Numerics.dll
-%_prefix/lib/mono/4.5/System.Security.dll
-%_prefix/lib/mono/4.5/System.Threading.Tasks.Dataflow.dll
-%_prefix/lib/mono/4.5/System.Xml.Linq.dll
-%_prefix/lib/mono/4.5/System.Xml.dll
-%_prefix/lib/mono/4.5/System.dll
-%_prefix/lib/mono/4.5/cscompmgd.dll
-%_prefix/lib/mono/4.5/mscorlib.dll*
-%_prefix/lib/mono/4.5/System.Windows.dll
-%_prefix/lib/mono/4.5/System.Xml.Serialization.dll
-%_prefix/lib/mono/4.5/Facades/*.dll
-%_prefix/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll
-%_prefix/lib/mono/gac/Commons.Xml.Relaxng
-%_prefix/lib/mono/gac/CustomMarshalers
-%_prefix/lib/mono/gac/I18N
-%_prefix/lib/mono/gac/I18N.West
-%_prefix/lib/mono/gac/ICSharpCode.SharpZipLib
-%_prefix/lib/mono/gac/Microsoft.CSharp
-%_prefix/lib/mono/gac/Microsoft.VisualC
-%_prefix/lib/mono/gac/Mono.C5
-%_prefix/lib/mono/gac/Mono.CSharp
-%_prefix/lib/mono/gac/Mono.Cairo
-%_prefix/lib/mono/gac/Mono.Cecil
-%_prefix/lib/mono/gac/Mono.Cecil.Mdb
-%_prefix/lib/mono/gac/Mono.CompilerServices.SymbolWriter
-%_prefix/lib/mono/gac/Mono.Management
-%_prefix/lib/mono/gac/Mono.Parallel
-%_prefix/lib/mono/gac/Mono.Posix
-%_prefix/lib/mono/gac/Mono.Security
-%_prefix/lib/mono/gac/Mono.Simd
-%_prefix/lib/mono/gac/Mono.Tasklets
-%_prefix/lib/mono/gac/System
-%_prefix/lib/mono/gac/System.Configuration
-%_prefix/lib/mono/gac/System.Core
-%_prefix/lib/mono/gac/System.Drawing
-%_prefix/lib/mono/gac/System.Dynamic
-%_prefix/lib/mono/gac/System.IO.Compression
-%_prefix/lib/mono/gac/System.IO.Compression.FileSystem
-%_prefix/lib/mono/gac/System.Net
-%_prefix/lib/mono/gac/System.Net.Http
-%_prefix/lib/mono/gac/System.Net.Http.WebRequest
-%_prefix/lib/mono/gac/System.Numerics
-%_prefix/lib/mono/gac/System.Security
-%_prefix/lib/mono/gac/System.Threading.Tasks.Dataflow
-%_prefix/lib/mono/gac/System.Xml
-%_prefix/lib/mono/gac/System.Xml.Linq
-%_prefix/lib/mono/gac/System.Json
-%_prefix/lib/mono/gac/System.Json.Microsoft
-%_prefix/lib/mono/gac/System.Windows
-%_prefix/lib/mono/gac/System.Xml.Serialization
-%_prefix/lib/mono/gac/cscompmgd
-%_prefix/lib/mono/mono-configuration-crypto
-
-%package -n libmono-2_0-1
-License:        LGPL v2.1 only
-Summary:       A Library for embedding Mono in your Application
-Group:          Development/Libraries/C and C++
-
-%description -n libmono-2_0-1
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-A Library for embedding Mono in your Application.
-
-%files -n libmono-2_0-1
-%defattr(-, root, root)
-%_libdir/libmono-2.0.so.1*
-
-%post -n libmono-2_0-1 -p /sbin/ldconfig
-
-%postun -n libmono-2_0-1 -p /sbin/ldconfig
-
-%package -n libmono-2_0-devel
-License:        LGPL v2.1 only
-Summary:       Development files for libmono
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-
-%description -n libmono-2_0-devel
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Development files for libmono.
-
-%files -n libmono-2_0-devel
-%defattr(-, root, root)
-%_bindir/mono-gdb.py
-%_includedir/mono-2.0
-%_libdir/libmono-2.0.a
-%_libdir/libmono-2.0.so
-%_libdir/pkgconfig/mono-2.pc
-
-%if %sgen == yes
-%package -n libmonosgen-2_0-1
-License:        LGPL v2.1 only
-Summary:       A Library for embedding Mono in your Application (sgen version)
-Group:          Development/Libraries/C and C++
-
-%description -n libmonosgen-2_0-1
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-A Library for embedding Mono in your Application (sgen version).
-
-%files -n libmonosgen-2_0-1
-%defattr(-, root, root)
-%_libdir/libmonosgen-2.0.so.1*
-
-%post -n libmonosgen-2_0-1 -p /sbin/ldconfig
-
-%postun -n libmonosgen-2_0-1 -p /sbin/ldconfig
-
-%package -n libmonosgen-2_0-devel
-License:        LGPL v2.1 only
-Summary:       Development files for libmonosgen
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       libmono-2_0-devel
-
-%description -n libmonosgen-2_0-devel
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Development files for libmonosgen.
-
-%files -n libmonosgen-2_0-devel
-%defattr(-, root, root)
-%_bindir/mono-sgen-gdb.py
-%_libdir/libmonosgen-2.0.a
-%_libdir/libmonosgen-2.0.so
-%_libdir/pkgconfig/monosgen-2.pc
-%endif
-
-%package -n libmonoboehm-2_0-1
-License:        LGPL v2.1 only
-Summary:       A Library for embedding Mono in your Application (boehm version)
-Group:          Development/Libraries/C and C++
-
-%description -n libmonoboehm-2_0-1
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-A Library for embedding Mono in your Application (boehm version).
-
-%files -n libmonoboehm-2_0-1
-%defattr(-, root, root)
-%_libdir/libmonoboehm-2.0.so.1*
-
-%post -n libmonoboehm-2_0-1 -p /sbin/ldconfig
-
-%postun -n libmonoboehm-2_0-1 -p /sbin/ldconfig
-
-%package -n libmonoboehm-2_0-devel
-License:        LGPL v2.1 only
-Summary:       Development files for libmonosgen
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       libmono-2_0-devel
-
-%description -n libmonoboehm-2_0-devel
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Development files for libmonoboehm.
-
-%files -n libmonoboehm-2_0-devel
-%defattr(-, root, root)
-%_libdir/libmonoboehm-2.0.a
-%_libdir/libmonoboehm-2.0.so
-
-%if %llvm == yes
-%package -n libmono-llvm0
-License:        LGPL v2.1 only
-Summary:       Loadable LLVM libary for mono
-Group:          Development/Libraries/C and C++
-
-%description -n libmono-llvm0
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Loadable LLVM libary for mono.
-
-%files -n libmono-llvm0
-%defattr(-, root, root)
-%_libdir/libmono-llvm.so*
-
-%post -n libmono-llvm0 -p /sbin/ldconfig
-
-%postun -n libmono-llvm0 -p /sbin/ldconfig
-%endif
-
-%package -n mono-locale-extras
-License:        LGPL v2.1 only
-Summary:        Extra locale information
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Provides:       mono(I18N.CJK) = 1.0.5000.0
-Provides:       mono(I18N.MidEast) = 1.0.5000.0
-Provides:       mono(I18N.Other) = 1.0.5000.0
-Provides:       mono(I18N.Rare) = 1.0.5000.0
-
-%description -n mono-locale-extras
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Extra locale information.
-
-%files -n mono-locale-extras
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/I18N.CJK.dll
-%_prefix/lib/mono/2.0/I18N.MidEast.dll
-%_prefix/lib/mono/2.0/I18N.Other.dll
-%_prefix/lib/mono/2.0/I18N.Rare.dll
-%_prefix/lib/mono/4.0/I18N.CJK.dll
-%_prefix/lib/mono/4.0/I18N.MidEast.dll
-%_prefix/lib/mono/4.0/I18N.Other.dll
-%_prefix/lib/mono/4.0/I18N.Rare.dll
-%_prefix/lib/mono/4.5/I18N.CJK.dll
-%_prefix/lib/mono/4.5/I18N.MidEast.dll
-%_prefix/lib/mono/4.5/I18N.Other.dll
-%_prefix/lib/mono/4.5/I18N.Rare.dll
-%_prefix/lib/mono/gac/I18N.CJK
-%_prefix/lib/mono/gac/I18N.MidEast
-%_prefix/lib/mono/gac/I18N.Other
-%_prefix/lib/mono/gac/I18N.Rare
-
-%package -n mono-data
-License:        LGPL v2.1 only
-Summary:        Database connectivity for Mono
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Obsoletes:      mono-directory
-Obsoletes:      mono-ms-enterprise
-Obsoletes:      mono-novell-directory
-Provides:       mono-directory
-Provides:       mono-ms-enterprise
-Provides:       mono-novell-directory
-Provides:       mono(Mono.Data.Tds) = 1.0.5000.0
-Provides:       mono(Novell.Directory.Ldap) = 1.0.5000.0
-Provides:       mono(System.Data) = 1.0.5000.0
-Provides:       mono(System.DirectoryServices) = 1.0.5000.0
-Provides:       mono(System.DirectoryServices.Protocols) = 1.0.5000.0
-Provides:       mono(System.EnterpriseServices) = 1.0.5000.0
-
-%description -n mono-data
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Database connectivity for Mono.
-
-%files -n mono-data
-%defattr(-, root, root)
-%_bindir/sqlmetal
-%_bindir/sqlsharp
-%_mandir/man1/sqlsharp.1%ext_man
-%_prefix/lib/mono/2.0/Mono.Data.Tds.dll
-%_prefix/lib/mono/2.0/Novell.Directory.Ldap.dll
-%_prefix/lib/mono/2.0/System.Data.DataSetExtensions.dll
-%_prefix/lib/mono/2.0/System.Data.Linq.dll
-%_prefix/lib/mono/2.0/System.Data.dll
-%_prefix/lib/mono/2.0/System.DirectoryServices.dll
-%_prefix/lib/mono/2.0/System.DirectoryServices.Protocols.dll
-%_prefix/lib/mono/2.0/System.EnterpriseServices.dll
-%_prefix/lib/mono/2.0/System.Runtime.Serialization.dll
-%_prefix/lib/mono/2.0/System.Transactions.dll
-%_prefix/lib/mono/4.0/Mono.Data.Tds.dll
-%_prefix/lib/mono/4.0/Novell.Directory.Ldap.dll
-%_prefix/lib/mono/4.0/System.Data.DataSetExtensions.dll
-%_prefix/lib/mono/4.0/System.Data.Linq.dll
-%_prefix/lib/mono/4.0/System.Data.dll
-%_prefix/lib/mono/4.0/System.DirectoryServices.dll
-%_prefix/lib/mono/4.0/System.DirectoryServices.Protocols.dll
-%_prefix/lib/mono/4.0/System.EnterpriseServices.dll
-%_prefix/lib/mono/4.0/System.Runtime.Serialization.dll
-%_prefix/lib/mono/4.0/System.Transactions.dll
-%_prefix/lib/mono/4.0/WebMatrix.Data.dll
-%_prefix/lib/mono/4.5/Mono.Data.Tds.dll
-%_prefix/lib/mono/4.5/Novell.Directory.Ldap.dll
-%_prefix/lib/mono/4.5/System.Data.DataSetExtensions.dll
-%_prefix/lib/mono/4.5/System.Data.Linq.dll
-%_prefix/lib/mono/4.5/System.Data.dll
-%_prefix/lib/mono/4.5/System.DirectoryServices.dll
-%_prefix/lib/mono/4.5/System.DirectoryServices.Protocols.dll
-%_prefix/lib/mono/4.5/System.EnterpriseServices.dll
-%_prefix/lib/mono/4.5/System.Runtime.Serialization.dll
-%_prefix/lib/mono/4.5/System.Transactions.dll
-%_prefix/lib/mono/4.5/WebMatrix.Data.dll
-%_prefix/lib/mono/4.5/EntityFramework.dll
-%_prefix/lib/mono/4.5/EntityFramework.SqlServer.dll
-%_prefix/lib/mono/4.5/sqlmetal.exe*
-%_prefix/lib/mono/4.5/sqlsharp.exe*
-%_prefix/lib/mono/gac/Mono.Data.Tds
-%_prefix/lib/mono/gac/Novell.Directory.Ldap
-%_prefix/lib/mono/gac/System.Data
-%_prefix/lib/mono/gac/System.Data.DataSetExtensions
-%_prefix/lib/mono/gac/System.Data.Linq
-%_prefix/lib/mono/gac/System.DirectoryServices
-%_prefix/lib/mono/gac/System.DirectoryServices.Protocols
-%_prefix/lib/mono/gac/System.EnterpriseServices
-%_prefix/lib/mono/gac/System.Runtime.Serialization
-%_prefix/lib/mono/gac/System.Transactions
-%_prefix/lib/mono/gac/WebMatrix.Data
-%_prefix/lib/mono/gac/EntityFramework
-%_prefix/lib/mono/gac/EntityFramework.SqlServer
-
-%package -n mono-winforms
-License:        LGPL v2.1 only
-Summary:        Mono's Windows Forms implementation
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Provides:       mono-window-forms
-Obsoletes:      mono-window-forms
-Provides:       mono(Accessibility) = 1.0.5000.0
-Provides:       mono(System.Design) = 1.0.5000.0
-Provides:       mono(System.Drawing) = 1.0.5000.0
-Provides:       mono(System.Drawing.Design) = 1.0.5000.0
-Provides:       mono(System.Windows.Forms) = 1.0.5000.0
-
-%description -n mono-winforms
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Mono's Windows Forms implementation.
-
-%files -n mono-winforms
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/Accessibility.dll
-%_prefix/lib/mono/2.0/Mono.WebBrowser.dll
-%_prefix/lib/mono/2.0/System.Design.dll
-%_prefix/lib/mono/2.0/System.Drawing.Design.dll
-%_prefix/lib/mono/2.0/System.Windows.Forms.dll
-%_prefix/lib/mono/4.0/Accessibility.dll
-%_prefix/lib/mono/4.0/Mono.WebBrowser.dll
-%_prefix/lib/mono/4.0/System.Design.dll
-%_prefix/lib/mono/4.0/System.Drawing.Design.dll
-%_prefix/lib/mono/4.0/System.Windows.Forms.DataVisualization.dll
-%_prefix/lib/mono/4.0/System.Windows.Forms.dll
-%_prefix/lib/mono/4.5/Accessibility.dll
-%_prefix/lib/mono/4.5/Mono.WebBrowser.dll
-%_prefix/lib/mono/4.5/System.Design.dll
-%_prefix/lib/mono/4.5/System.Drawing.Design.dll
-%_prefix/lib/mono/4.5/System.Windows.Forms.DataVisualization.dll
-%_prefix/lib/mono/4.5/System.Windows.Forms.dll
-%_prefix/lib/mono/gac/Accessibility
-%_prefix/lib/mono/gac/Mono.WebBrowser
-%_prefix/lib/mono/gac/System.Design
-%_prefix/lib/mono/gac/System.Drawing.Design
-%_prefix/lib/mono/gac/System.Windows.Forms
-%_prefix/lib/mono/gac/System.Windows.Forms.DataVisualization
-
-%package -n ibm-data-db2
-License:        LGPL v2.1 only
-Summary:        Database connectivity for DB2
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-
-%description -n ibm-data-db2
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Database connectivity for DB2.
-
-%files -n ibm-data-db2
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/IBM.Data.DB2.dll
-%_prefix/lib/mono/4.0/IBM.Data.DB2.dll
-%_prefix/lib/mono/4.5/IBM.Data.DB2.dll
-%_prefix/lib/mono/gac/IBM.Data.DB2
-
-%package -n mono-extras
-License:        LGPL v2.1 only
-Summary:        Extra packages
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Obsoletes:      mono-ms-extras
-Provides:       mono-ms-extras
-Provides:       mono(Mono.Messaging) = 1.0.5000.0
-Provides:       mono(Mono.Messaging.RabbitMQ) = 1.0.5000.0
-Provides:       mono(RabbitMQ.Client) = 1.0.5000.0
-Provides:       mono(System.Configuration.Install) = 1.0.5000.0
-Provides:       mono(System.Management) = 1.0.5000.0
-Provides:       mono(System.Messaging) = 1.0.5000.0
-Provides:       mono(System.ServiceProcess) = 1.0.5000.0
-Provides:       mono(mono-service) = 1.0.5000.0
-
-%description -n mono-extras
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Extra packages.
-
-%files -n mono-extras
-%defattr(-, root, root)
-%_bindir/mono-service
-%_bindir/mono-service2
-%_mandir/man1/mono-service.1%ext_man
-%_prefix/lib/mono/2.0/Mono.Messaging.RabbitMQ.dll
-%_prefix/lib/mono/2.0/Mono.Messaging.dll
-%_prefix/lib/mono/2.0/RabbitMQ.Client.Apigen.exe*
-%_prefix/lib/mono/2.0/RabbitMQ.Client.dll
-%_prefix/lib/mono/2.0/System.Configuration.Install.dll
-%_prefix/lib/mono/2.0/System.Management.dll
-%_prefix/lib/mono/2.0/System.Messaging.dll
-%_prefix/lib/mono/2.0/System.ServiceProcess.dll
-%_prefix/lib/mono/2.0/mono-service.exe*
-%_prefix/lib/mono/4.0/Mono.Messaging.RabbitMQ.dll
-%_prefix/lib/mono/4.0/Mono.Messaging.dll
-%_prefix/lib/mono/4.0/RabbitMQ.Client.Apigen.exe*
-%_prefix/lib/mono/4.0/RabbitMQ.Client.dll
-%_prefix/lib/mono/4.0/System.Configuration.Install.dll
-%_prefix/lib/mono/4.0/System.Management.dll
-%_prefix/lib/mono/4.0/System.Messaging.dll
-%_prefix/lib/mono/4.0/System.Runtime.Caching.dll
-%_prefix/lib/mono/4.0/System.ServiceProcess.dll
-%_prefix/lib/mono/4.0/System.Xaml.dll
-%_prefix/lib/mono/4.5/installutil.exe*
-%_prefix/lib/mono/4.5/mono-service.exe*
-%_prefix/lib/mono/4.5/Mono.Messaging.RabbitMQ.dll
-%_prefix/lib/mono/4.5/Mono.Messaging.dll
-%_prefix/lib/mono/4.5/RabbitMQ.Client.Apigen.exe*
-%_prefix/lib/mono/4.5/RabbitMQ.Client.dll
-%_prefix/lib/mono/4.5/System.Configuration.Install.dll
-%_prefix/lib/mono/4.5/System.Management.dll
-%_prefix/lib/mono/4.5/System.Messaging.dll
-%_prefix/lib/mono/4.5/System.Runtime.Caching.dll
-%_prefix/lib/mono/4.5/System.ServiceProcess.dll
-%_prefix/lib/mono/4.5/System.Xaml.dll
-%_prefix/lib/mono/gac/Mono.Messaging
-%_prefix/lib/mono/gac/Mono.Messaging.RabbitMQ
-%_prefix/lib/mono/gac/RabbitMQ.Client
-%_prefix/lib/mono/gac/System.Configuration.Install
-%_prefix/lib/mono/gac/System.Management
-%_prefix/lib/mono/gac/System.Messaging
-%_prefix/lib/mono/gac/System.Runtime.Caching
-%_prefix/lib/mono/gac/System.ServiceProcess
-%_prefix/lib/mono/gac/System.Xaml
-%_prefix/lib/mono/gac/mono-service
-
-%package -n mono-data-sqlite
-License:        LGPL v2.1 only
-Summary:        Database connectivity for Mono
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       mono-data == %version-%release
-Provides:       mono(Mono.Data.Sqlite) = 1.0.5000.0
-
-%description -n mono-data-sqlite
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Database connectivity for Mono.
-
-%files -n mono-data-sqlite
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/Mono.Data.Sqlite.dll
-%_prefix/lib/mono/4.0/Mono.Data.Sqlite.dll
-%_prefix/lib/mono/4.5/Mono.Data.Sqlite.dll
-%_prefix/lib/mono/gac/Mono.Data.Sqlite
-
-%package -n mono-wcf
-License:        MIT License (or similar) ; Ms-Pl
-Summary:        Mono implementation of WCF, Windows Communication Foundation
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-
-%description -n mono-wcf
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Mono implementation of WCF, Windows Communication Foundation
-
-%files -n mono-wcf
-%defattr(-, root, root)
-%_bindir/svcutil
-%_libdir/pkgconfig/wcf.pc
-%_prefix/lib/mono/2.0/System.Data.Services.dll
-%_prefix/lib/mono/2.0/System.IdentityModel.Selectors.dll
-%_prefix/lib/mono/2.0/System.IdentityModel.dll
-%_prefix/lib/mono/2.0/System.ServiceModel.Web.dll
-%_prefix/lib/mono/2.0/System.ServiceModel.dll
-%_prefix/lib/mono/4.0/System.Data.Services.dll
-%_prefix/lib/mono/4.0/System.IdentityModel.Selectors.dll
-%_prefix/lib/mono/4.0/System.IdentityModel.dll
-%_prefix/lib/mono/4.0/System.Runtime.DurableInstancing.dll
-%_prefix/lib/mono/4.0/System.ServiceModel.Activation.dll
-%_prefix/lib/mono/4.0/System.ServiceModel.Discovery.dll
-%_prefix/lib/mono/4.0/System.ServiceModel.Routing.dll
-%_prefix/lib/mono/4.0/System.ServiceModel.Web.dll
-%_prefix/lib/mono/4.0/System.ServiceModel.dll
-%_prefix/lib/mono/4.5/System.Data.Services.dll
-%_prefix/lib/mono/4.5/System.IdentityModel.Selectors.dll
-%_prefix/lib/mono/4.5/System.IdentityModel.dll
-%_prefix/lib/mono/4.5/System.Runtime.DurableInstancing.dll
-%_prefix/lib/mono/4.5/System.ServiceModel.Activation.dll
-%_prefix/lib/mono/4.5/System.ServiceModel.Discovery.dll
-%_prefix/lib/mono/4.5/System.ServiceModel.Routing.dll
-%_prefix/lib/mono/4.5/System.ServiceModel.Web.dll
-%_prefix/lib/mono/4.5/System.ServiceModel.dll
-%_prefix/lib/mono/4.5/svcutil.exe*
-%_prefix/lib/mono/gac/System.Data.Services
-%_prefix/lib/mono/gac/System.IdentityModel
-%_prefix/lib/mono/gac/System.IdentityModel.Selectors
-%_prefix/lib/mono/gac/System.Runtime.DurableInstancing
-%_prefix/lib/mono/gac/System.ServiceModel
-%_prefix/lib/mono/gac/System.ServiceModel.Activation
-%_prefix/lib/mono/gac/System.ServiceModel.Discovery
-%_prefix/lib/mono/gac/System.ServiceModel.Routing
-%_prefix/lib/mono/gac/System.ServiceModel.Web
-
-%package -n mono-winfxcore
-License:        MIT License (or similar) ; Ms-Pl
-Summary:        Mono implementation of core WinFX APIs
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-
-%description -n mono-winfxcore
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Mono implementation of core WinFX APIs
-
-%files -n mono-winfxcore
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/System.Data.Services.Client.dll*
-%_prefix/lib/mono/2.0/WindowsBase.dll*
-%_prefix/lib/mono/4.0/System.Data.Services.Client.dll*
-%_prefix/lib/mono/4.0/WindowsBase.dll*
-%_prefix/lib/mono/4.5/System.Data.Services.Client.dll*
-%_prefix/lib/mono/4.5/WindowsBase.dll*
-%_prefix/lib/mono/gac/System.Data.Services.Client
-%_prefix/lib/mono/gac/WindowsBase
-
-%package -n mono-web
-License:        MIT License (or similar) ; Ms-Pl
-Summary:        Mono implementation of ASP.NET, Remoting and Web Services
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Obsoletes:      mono-remoting
-Obsoletes:      mono-web-forms
-Obsoletes:      mono-web-services
-Provides:       mono-remoting
-Provides:       mono-web-forms
-Provides:       mono-web-services
-Provides:       mono(Mono.Http) = 1.0.5000.0
-Provides:       mono(System.Runtime.Remoting) = 1.0.5000.0
-Provides:       mono(System.Runtime.Serialization.Formatters.Soap) = 1.0.5000.0
-Provides:       mono(System.Web) = 1.0.5000.0
-Provides:       mono(System.Web.Services) = 1.0.5000.0
-
-%description -n mono-web
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Mono implementation of ASP.NET, Remoting and Web Services.
-
-%files -n mono-web
-%defattr(-, root, root)
-%config %_sysconfdir/mono/2.0/Browsers
-%config %_sysconfdir/mono/2.0/DefaultWsdlHelpGenerator.aspx
-%config %_sysconfdir/mono/2.0/web.config
-%config %_sysconfdir/mono/4.0/Browsers
-%config %_sysconfdir/mono/4.0/DefaultWsdlHelpGenerator.aspx
-%config %_sysconfdir/mono/4.0/web.config
-%config %_sysconfdir/mono/4.5/Browsers
-%config %_sysconfdir/mono/4.5/DefaultWsdlHelpGenerator.aspx
-%config %_sysconfdir/mono/4.5/web.config
-%config %_sysconfdir/mono/browscap.ini
-%config %_sysconfdir/mono/mconfig/config.xml
-%dir %_sysconfdir/mono/mconfig
-%_bindir/disco
-%_bindir/mconfig
-%_bindir/soapsuds
-%_bindir/wsdl
-%_bindir/wsdl2
-%_bindir/xsd
-%_libdir/pkgconfig/aspnetwebstack.pc
-%_mandir/man1/disco.1%ext_man
-%_mandir/man1/mconfig.1%ext_man
-%_mandir/man1/soapsuds.1%ext_man
-%_mandir/man1/wsdl.1%ext_man
-%_mandir/man1/xsd.1%ext_man
-%_prefix/lib/mono/2.0/Mono.Http.dll
-%_prefix/lib/mono/2.0/System.ComponentModel.DataAnnotations.dll
-%_prefix/lib/mono/2.0/System.Runtime.Remoting.dll
-%_prefix/lib/mono/2.0/System.Runtime.Serialization.Formatters.Soap.dll
-%_prefix/lib/mono/2.0/System.Web.Abstractions.dll
-%_prefix/lib/mono/2.0/System.Web.Routing.dll
-%_prefix/lib/mono/2.0/System.Web.Services.dll
-%_prefix/lib/mono/2.0/System.Web.dll
-%_prefix/lib/mono/2.0/wsdl.exe*
-%_prefix/lib/mono/2.0/xsd.exe*
-%_prefix/lib/mono/4.0/Microsoft.Web.Infrastructure.dll
-%_prefix/lib/mono/4.0/Mono.Http.dll
-%_prefix/lib/mono/4.0/System.ComponentModel.Composition.dll
-%_prefix/lib/mono/4.0/System.ComponentModel.DataAnnotations.dll
-%_prefix/lib/mono/4.0/System.Runtime.Remoting.dll
-%_prefix/lib/mono/4.0/System.Runtime.Serialization.Formatters.Soap.dll
-%_prefix/lib/mono/4.0/System.Web.Abstractions.dll
-%_prefix/lib/mono/4.0/System.Web.ApplicationServices.dll
-%_prefix/lib/mono/4.0/System.Web.Routing.dll
-%_prefix/lib/mono/4.0/System.Web.Services.dll
-%_prefix/lib/mono/4.0/System.Web.dll
-%_prefix/lib/mono/4.5/Mono.Http.dll
-%_prefix/lib/mono/4.5/System.ComponentModel.Composition.dll
-%_prefix/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll
-%_prefix/lib/mono/4.5/System.Net.Http.Formatting.dll
-%_prefix/lib/mono/4.5/System.Runtime.Remoting.dll
-%_prefix/lib/mono/4.5/System.Runtime.Serialization.Formatters.Soap.dll
-%_prefix/lib/mono/4.5/System.Web.Abstractions.dll
-%_prefix/lib/mono/4.5/System.Web.ApplicationServices.dll
-%_prefix/lib/mono/4.5/System.Web.Http.dll
-%_prefix/lib/mono/4.5/System.Web.Http.SelfHost.dll
-%_prefix/lib/mono/4.5/System.Web.Http.WebHost.dll
-%_prefix/lib/mono/4.5/System.Web.Routing.dll
-%_prefix/lib/mono/4.5/System.Web.Razor.dll
-%_prefix/lib/mono/4.5/System.Web.Services.dll
-%_prefix/lib/mono/4.5/System.Web.WebPages.Deployment.dll
-%_prefix/lib/mono/4.5/System.Web.WebPages.Razor.dll
-%_prefix/lib/mono/4.5/System.Web.WebPages.dll
-%_prefix/lib/mono/4.5/System.Web.dll
-%_prefix/lib/mono/4.5/disco.exe*
-%_prefix/lib/mono/4.5/mconfig.exe*
-%_prefix/lib/mono/4.5/soapsuds.exe*
-%_prefix/lib/mono/4.5/wsdl.exe*
-%_prefix/lib/mono/4.5/xsd.exe*
-%_prefix/lib/mono/4.5/Microsoft.Web.Infrastructure.dll
-%_prefix/lib/mono/gac/Microsoft.Web.Infrastructure
-%_prefix/lib/mono/gac/Mono.Http
-%_prefix/lib/mono/gac/System.ComponentModel.Composition
-%_prefix/lib/mono/gac/System.ComponentModel.DataAnnotations
-%_prefix/lib/mono/gac/System.Net.Http.Formatting
-%_prefix/lib/mono/gac/System.Runtime.Remoting
-%_prefix/lib/mono/gac/System.Runtime.Serialization.Formatters.Soap
-%_prefix/lib/mono/gac/System.Web
-%_prefix/lib/mono/gac/System.Web.Abstractions
-%_prefix/lib/mono/gac/System.Web.ApplicationServices
-%_prefix/lib/mono/gac/System.Web.Http
-%_prefix/lib/mono/gac/System.Web.Http.SelfHost
-%_prefix/lib/mono/gac/System.Web.Http.WebHost
-%_prefix/lib/mono/gac/System.Web.Routing
-%_prefix/lib/mono/gac/System.Web.Razor
-%_prefix/lib/mono/gac/System.Web.Services
-%_prefix/lib/mono/gac/System.Web.WebPages.Deployment
-%_prefix/lib/mono/gac/System.Web.WebPages.Razor
-%_prefix/lib/mono/gac/System.Web.WebPages
-
-%package -n mono-mvc
-License:        MIT License (or similar) ; Ms-Pl
-Summary:        Mono implementation of ASP.NET MVC
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-
-%description -n mono-mvc
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Mono implementation of ASP.NET MVC.
-
-%files -n mono-mvc
-%defattr(-, root, root)
-%_libdir/pkgconfig/system.web.extensions.design_1.0.pc
-%_libdir/pkgconfig/system.web.extensions_1.0.pc
-%_libdir/pkgconfig/system.web.mvc.pc
-%_libdir/pkgconfig/system.web.mvc2.pc
-%_libdir/pkgconfig/system.web.mvc3.pc
-%_prefix/lib/mono/2.0/System.Web.DynamicData.dll
-%_prefix/lib/mono/2.0/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/2.0/System.Web.Extensions.dll
-%_prefix/lib/mono/2.0/System.Web.Mvc.dll
-%_prefix/lib/mono/4.0/System.Web.DynamicData.dll
-%_prefix/lib/mono/4.0/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/4.0/System.Web.Extensions.dll
-%_prefix/lib/mono/4.5/System.Web.DynamicData.dll
-%_prefix/lib/mono/4.5/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/4.5/System.Web.Extensions.dll
-%_prefix/lib/mono/4.5/System.Web.Mvc.dll
-%_prefix/lib/mono/compat-2.0/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/compat-2.0/System.Web.Extensions.dll
-%_prefix/lib/mono/compat-2.0/System.Web.Mvc.dll
-%_prefix/lib/mono/gac/System.Web.DynamicData
-%_prefix/lib/mono/gac/System.Web.Extensions
-%_prefix/lib/mono/gac/System.Web.Extensions.Design
-%_prefix/lib/mono/gac/System.Web.Mvc
-
-%package -n mono-data-oracle
-License:        LGPL v2.1 only
-Summary:        Database connectivity for Mono
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       mono-data == %version-%release
-Provides:       mono(System.Data.OracleClient) = 1.0.5000.0
-
-%description -n mono-data-oracle
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Database connectivity for Mono.
-
-%files -n mono-data-oracle
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/System.Data.OracleClient.dll
-%_prefix/lib/mono/4.0/System.Data.OracleClient.dll
-%_prefix/lib/mono/4.5/System.Data.OracleClient.dll
-%_prefix/lib/mono/gac/System.Data.OracleClient
-
-%package -n mono-data-postgresql
-License:        LGPL v2.1 only
-Summary:        Database connectivity for Mono
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       mono-data == %version-%release
-Provides:       mono(Npgsql) = 1.0.5000.0
-
-%description -n mono-data-postgresql
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Database connectivity for Mono.
-
-%files -n mono-data-postgresql
-%defattr(-, root, root)
-%_prefix/lib/mono/2.0/Npgsql.dll
-%_prefix/lib/mono/4.0/Npgsql.dll
-%_prefix/lib/mono/4.5/Npgsql.dll
-%_prefix/lib/mono/gac/Npgsql
-
-%package -n mono-rx-core
-License:        MIT License (or similar) ; Apache License 2.0
-Summary:        Reactive Extensions for Mono core libraries
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Provides:       mono(System.Reactive.Interfaces) = 1.0.5000.0
-
-%description -n mono-rx-core
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Reactive Extensions for Mono, core packages, which don't depend on
-desktop-specific features.
-
-%files -n mono-rx-core
-%defattr(-, root, root)
-%_libdir/pkgconfig/reactive.pc
-%_prefix/lib/mono/4.5/System.Reactive.Core.dll
-%_prefix/lib/mono/4.5/System.Reactive.Debugger.dll
-%_prefix/lib/mono/4.5/System.Reactive.Experimental.dll
-%_prefix/lib/mono/4.5/System.Reactive.Interfaces.dll
-%_prefix/lib/mono/4.5/System.Reactive.Linq.dll
-%_prefix/lib/mono/4.5/System.Reactive.Observable.Aliases.dll
-%_prefix/lib/mono/4.5/System.Reactive.PlatformServices.dll
-%_prefix/lib/mono/4.5/System.Reactive.Providers.dll
-%_prefix/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
-%_prefix/lib/mono/gac/System.Reactive.Core
-%_prefix/lib/mono/gac/System.Reactive.Debugger
-%_prefix/lib/mono/gac/System.Reactive.Experimental
-%_prefix/lib/mono/gac/System.Reactive.Interfaces
-%_prefix/lib/mono/gac/System.Reactive.Linq
-%_prefix/lib/mono/gac/System.Reactive.Observable.Aliases
-%_prefix/lib/mono/gac/System.Reactive.PlatformServices
-%_prefix/lib/mono/gac/System.Reactive.Providers
-%_prefix/lib/mono/gac/System.Reactive.Runtime.Remoting
-
-%package -n mono-rx-desktop
-License:        MIT License (or similar) ; Apache License 2.0
-Summary:        Reactive Extensions for Mono desktop-specific libraries
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       mono-rx-core == %version-%release
-Provides:       mono(System.Reactive.Interfaces) = 1.0.5000.0
-
-%description -n mono-rx-desktop
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Reactive Extensions for Mono, desktop-specific packages (winforms,
-windows threading).
-
-%files -n mono-rx-desktop
-%defattr(-, root, root)
-%_prefix/lib/mono/4.5/System.Reactive.Windows.Forms.dll
-%_prefix/lib/mono/4.5/System.Reactive.Windows.Threading.dll
-%_prefix/lib/mono/gac/System.Reactive.Windows.Forms
-%_prefix/lib/mono/gac/System.Reactive.Windows.Threading
-
-%package -n mono-nunit
-License:        LGPL v2.1 only
-Summary:        NUnit Testing Framework
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-
-%description -n mono-nunit
-NUnit is a unit-testing framework for all .Net languages.  Initially
-ported from JUnit, the current release, version 2.2,  is the fourth
-major release of this  Unit based unit testing tool for Microsoft .NET.
-It is written entirely in C# and  has been completely redesigned to
-take advantage of many .NET language            features, for example
-custom attributes and other reflection related capabilities. NUnit
-brings xUnit to all .NET languages.
-
-%files -n mono-nunit
-%defattr(-, root, root)
-%_libdir/pkgconfig/mono-nunit.pc
-%_prefix/bin/nunit-console
-%_prefix/bin/nunit-console2
-%_prefix/bin/nunit-console4
-%_prefix/lib/mono/2.0/nunit-console-runner.dll
-%_prefix/lib/mono/2.0/nunit-console.exe*
-%_prefix/lib/mono/2.0/nunit.core.dll
-%_prefix/lib/mono/2.0/nunit.core.extensions.dll
-%_prefix/lib/mono/2.0/nunit.core.interfaces.dll
-%_prefix/lib/mono/2.0/nunit.framework.dll
-%_prefix/lib/mono/2.0/nunit.framework.extensions.dll
-%_prefix/lib/mono/2.0/nunit.mocks.dll
-%_prefix/lib/mono/2.0/nunit.util.dll
-%_prefix/lib/mono/4.5/nunit-console-runner.dll
-%_prefix/lib/mono/4.5/nunit-console.exe*
-%_prefix/lib/mono/4.5/nunit.core.dll
-%_prefix/lib/mono/4.5/nunit.core.extensions.dll
-%_prefix/lib/mono/4.5/nunit.core.interfaces.dll
-%_prefix/lib/mono/4.5/nunit.framework.dll
-%_prefix/lib/mono/4.5/nunit.framework.extensions.dll
-%_prefix/lib/mono/4.5/nunit.mocks.dll
-%_prefix/lib/mono/4.5/nunit.util.dll
-%_prefix/lib/mono/gac/nunit-console-runner
-%_prefix/lib/mono/gac/nunit.core
-%_prefix/lib/mono/gac/nunit.core.extensions
-%_prefix/lib/mono/gac/nunit.core.interfaces
-%_prefix/lib/mono/gac/nunit.framework
-%_prefix/lib/mono/gac/nunit.framework.extensions
-%_prefix/lib/mono/gac/nunit.mocks
-%_prefix/lib/mono/gac/nunit.util
-
-%package -n mono-devel
-License:        LGPL v2.1 only
-Summary:        Mono development tools
-Group:          Development/Languages/Mono
-Requires:       mono-core == %version-%release
-Requires:       libgdiplus0
-Requires:       pkgconfig
-Provides:       mono-xbuild
-# Required because they are referenced by .pc files
-Requires:       mono-data == %version-%release
-Requires:       mono-data-oracle == %version-%release
-Requires:       mono-extras == %version-%release
-Requires:       mono-web == %version-%release
-Requires:       mono-winforms == %version-%release
-# We build natively on ppc64 now
-%ifarch ppc64
-Provides:       mono-biarchcompat
-Obsoletes:      mono-biarchcompat
-%endif
-Provides:       mono(PEAPI) = 1.0.5000.0
-Provides:       mono(resgen) = 1.0.5000.0
-
-%description -n mono-devel
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. This package contains compilers and
-other tools needed to develop .NET applications.
-
-Mono development tools.
-
-%post -n mono-devel -p /sbin/ldconfig
-
-%postun -n mono-devel -p /sbin/ldconfig
-
-%files -n mono-devel
-%defattr(-, root, root)
-%_bindir/caspol
-%_bindir/ccrewrite
-%_bindir/cccheck
-%_bindir/cert2spc
-%_bindir/dtd2rng
-%_bindir/dtd2xsd
-%_bindir/genxs
-%_bindir/httpcfg
-%_bindir/ilasm
-%_bindir/installvst
-%_bindir/lc
-%_bindir/macpack
-%_bindir/makecert
-%_bindir/mkbundle
-%_bindir/mono-api-info
-%_bindir/mono-cil-strip
-%_bindir/mono-find-provides
-%_bindir/mono-find-requires
-%_bindir/mono-heapviz
-%_bindir/mono-shlib-cop
-%_bindir/mono-xmltool
-%_bindir/monodis
-%_bindir/monograph
-%_bindir/monolinker
-%_bindir/monop
-%_bindir/monop2
-%_bindir/mprof-report
-%_bindir/pdb2mdb
-%_bindir/pedump
-%_bindir/permview
-%_bindir/prj2make
-%_bindir/resgen
-%_bindir/resgen2
-%_bindir/secutil
-%_bindir/sgen
-%_bindir/signcode
-%_bindir/xbuild
-%_bindir/mdbrebase
-%dir %_datadir/mono-2.0
-%dir %_datadir/mono-2.0/mono
-%dir %_datadir/mono-2.0/mono/cil
-%_datadir/mono-2.0/mono/cil/cil-opcodes.xml
-%_libdir/libmono-profiler-*.*
-%_libdir/pkgconfig/cecil.pc
-%_libdir/pkgconfig/dotnet.pc
-%_libdir/pkgconfig/dotnet35.pc
-%_libdir/pkgconfig/mono-cairo.pc
-%_libdir/pkgconfig/mono-lineeditor.pc
-%_libdir/pkgconfig/mono-options.pc
-%_libdir/pkgconfig/mono.pc
-%_libdir/pkgconfig/xbuild12.pc
-%_mandir/man1/al.1%ext_man
-%_mandir/man1/ccrewrite.1%ext_man
-%_mandir/man1/cccheck.1%ext_man
-%_mandir/man1/cert2spc.1%ext_man
-%_mandir/man1/dtd2xsd.1%ext_man
-%_mandir/man1/genxs.1%ext_man
-%_mandir/man1/httpcfg.1%ext_man
-%_mandir/man1/ilasm.1%ext_man
-%_mandir/man1/lc.1%ext_man
-%_mandir/man1/macpack.1%ext_man
-%_mandir/man1/makecert.1%ext_man
-%_mandir/man1/mkbundle.1%ext_man
-%_mandir/man1/mono-api-info.1%ext_man
-%_mandir/man1/mono-cil-strip.1%ext_man
-%_mandir/man1/mono-shlib-cop.1%ext_man
-%_mandir/man1/mono-xmltool.1%ext_man
-%_mandir/man1/monodis.1%ext_man
-%_mandir/man1/monolinker.1%ext_man
-%_mandir/man1/monop.1%ext_man
-%_mandir/man1/mprof-report.1%ext_man
-%_mandir/man1/pdb2mdb.1%ext_man
-%_mandir/man1/permview.1%ext_man
-%_mandir/man1/prj2make.1%ext_man
-%_mandir/man1/resgen.1%ext_man
-%_mandir/man1/secutil.1%ext_man
-%_mandir/man1/sgen.1%ext_man
-%_mandir/man1/signcode.1%ext_man
-%_mandir/man1/xbuild.1%ext_man
-%_prefix/lib/mono-source-libs
-%_prefix/lib/mono/2.0/MSBuild
-%_prefix/lib/mono/2.0/Microsoft.Build.Engine.dll
-%_prefix/lib/mono/2.0/Microsoft.Build.Framework.dll
-%_prefix/lib/mono/2.0/Microsoft.Build.Tasks.dll
-%_prefix/lib/mono/2.0/Microsoft.Build.Utilities.dll
-%_prefix/lib/mono/2.0/Microsoft.Build.xsd
-%_prefix/lib/mono/2.0/Microsoft.CSharp.targets
-%_prefix/lib/mono/2.0/Microsoft.Common.targets
-%_prefix/lib/mono/2.0/Microsoft.Common.tasks
-%_prefix/lib/mono/2.0/Microsoft.VisualBasic.targets
-%_prefix/lib/mono/2.0/Mono.Debugger.Soft.dll
-%_prefix/lib/mono/2.0/Mono.XBuild.Tasks.dll
-%_prefix/lib/mono/2.0/PEAPI.dll
-%_prefix/lib/mono/2.0/genxs.exe*
-%_prefix/lib/mono/2.0/ilasm.exe*
-%_prefix/lib/mono/2.0/mkbundle.exe*
-%_prefix/lib/mono/2.0/monolinker.*
-%_prefix/lib/mono/2.0/monop.exe*
-%_prefix/lib/mono/2.0/resgen.exe*
-%_prefix/lib/mono/2.0/xbuild.exe*
-%_prefix/lib/mono/2.0/xbuild.rsp
-%_prefix/lib/mono/3.5/MSBuild
-%_prefix/lib/mono/3.5/Microsoft.Build.Engine.dll
-%_prefix/lib/mono/3.5/Microsoft.Build.Framework.dll
-%_prefix/lib/mono/3.5/Microsoft.Build.Tasks.v3.5.dll
-%_prefix/lib/mono/3.5/Microsoft.Build.Utilities.v3.5.dll
-%_prefix/lib/mono/3.5/Microsoft.Build.xsd
-%_prefix/lib/mono/3.5/Microsoft.CSharp.targets
-%_prefix/lib/mono/3.5/Microsoft.Common.targets
-%_prefix/lib/mono/3.5/Microsoft.Common.tasks
-%_prefix/lib/mono/3.5/Microsoft.VisualBasic.targets
-%_prefix/lib/mono/3.5/Mono.XBuild.Tasks.dll
-%_prefix/lib/mono/3.5/xbuild.exe*
-%_prefix/lib/mono/3.5/xbuild.rsp
-%_prefix/lib/mono/4.0/Microsoft.Build.dll
-%_prefix/lib/mono/4.0/Microsoft.Build.Engine.dll
-%_prefix/lib/mono/4.0/Microsoft.Build.Framework.dll
-%_prefix/lib/mono/4.0/Microsoft.Build.Tasks.v4.0.dll
-%_prefix/lib/mono/4.0/Microsoft.Build.Utilities.v4.0.dll
-%_prefix/lib/mono/4.0/Mono.Debugger.Soft.dll
-%_prefix/lib/mono/4.0/Mono.XBuild.Tasks.dll
-%_prefix/lib/mono/4.0/PEAPI.dll
-%_prefix/lib/mono/4.5/MSBuild
-%_prefix/lib/mono/4.5/Microsoft.Build.dll
-%_prefix/lib/mono/4.5/Microsoft.Build.Engine.dll
-%_prefix/lib/mono/4.5/Microsoft.Build.Framework.dll
-%_prefix/lib/mono/4.5/Microsoft.Build.Tasks.v4.0.dll
-%_prefix/lib/mono/4.5/Microsoft.Build.Utilities.v4.0.dll
-%_prefix/lib/mono/4.5/Microsoft.Build.xsd
-%_prefix/lib/mono/4.5/Microsoft.CSharp.targets
-%_prefix/lib/mono/4.5/Microsoft.Common.targets
-%_prefix/lib/mono/4.5/Microsoft.Common.tasks
-%_prefix/lib/mono/4.5/Microsoft.VisualBasic.targets
-%_prefix/lib/mono/4.5/Mono.Debugger.Soft.dll
-%_prefix/lib/mono/4.5/Mono.CodeContracts.dll
-%_prefix/lib/mono/4.5/Mono.XBuild.Tasks.dll
-%_prefix/lib/mono/4.5/PEAPI.dll
-%_prefix/lib/mono/4.5/caspol.exe*
-%_prefix/lib/mono/4.5/cccheck.exe*
-%_prefix/lib/mono/4.5/ccrewrite.exe*
-%_prefix/lib/mono/4.5/cert2spc.exe*
-%_prefix/lib/mono/4.5/dtd2rng.exe*
-%_prefix/lib/mono/4.5/dtd2xsd.exe*
-%_prefix/lib/mono/4.5/genxs.exe*
-%_prefix/lib/mono/4.5/httpcfg.exe*
-%_prefix/lib/mono/4.5/ictool.exe*
-%_prefix/lib/mono/4.5/ilasm.exe*
-%_prefix/lib/mono/4.5/installvst.exe*
-%_prefix/lib/mono/4.5/lc.exe*
-%_prefix/lib/mono/4.5/macpack.exe*
-%_prefix/lib/mono/4.5/makecert.exe*
-%_prefix/lib/mono/4.5/mkbundle.exe*
-%_prefix/lib/mono/4.5/mono-api-info.exe*
-%_prefix/lib/mono/4.5/mono-cil-strip.exe*
-%_prefix/lib/mono/4.5/mono-shlib-cop.exe*
-%_prefix/lib/mono/4.5/mono-xmltool.exe*
-%_prefix/lib/mono/4.5/monolinker.*
-%_prefix/lib/mono/4.5/monop.exe*
-%_prefix/lib/mono/4.5/pdb2mdb.exe*
-%_prefix/lib/mono/4.5/permview.exe*
-%_prefix/lib/mono/4.5/resgen.exe*
-%_prefix/lib/mono/4.5/secutil.exe*
-%_prefix/lib/mono/4.5/sgen.exe*
-%_prefix/lib/mono/4.5/signcode.exe*
-%_prefix/lib/mono/4.5/xbuild.exe*
-%_prefix/lib/mono/4.5/xbuild.rsp
-%_prefix/lib/mono/4.5/mdbrebase.exe*
-%_prefix/lib/mono/gac/Microsoft.Build
-%_prefix/lib/mono/gac/Microsoft.Build.Engine
-%_prefix/lib/mono/gac/Microsoft.Build.Framework
-%_prefix/lib/mono/gac/Microsoft.Build.Tasks
-%_prefix/lib/mono/gac/Microsoft.Build.Tasks.v3.5
-%_prefix/lib/mono/gac/Microsoft.Build.Tasks.v4.0
-%_prefix/lib/mono/gac/Microsoft.Build.Tasks.v12.0
-%_prefix/lib/mono/gac/Microsoft.Build.Utilities
-%_prefix/lib/mono/gac/Microsoft.Build.Utilities.v3.5
-%_prefix/lib/mono/gac/Microsoft.Build.Utilities.v4.0
-%_prefix/lib/mono/gac/Microsoft.Build.Utilities.v12.0
-%_prefix/lib/mono/gac/Mono.CodeContracts
-%_prefix/lib/mono/gac/Mono.Debugger.Soft
-%_prefix/lib/mono/gac/Mono.XBuild.Tasks
-%_prefix/lib/mono/gac/PEAPI
-%_prefix/lib/mono/xbuild
-%_prefix/lib/mono/xbuild-frameworks
-
-%package -n monodoc-core
-License:        LGPL v2.1 only
-Summary:        Monodoc - Documentation tools for C# code
-Group:          Development/Tools/Other
-Requires:       mono-core == %version-%release
-Obsoletes:      monodoc
-Provides:       monodoc
-# Added to uncompress and compare documentation used by build-compare
-Requires:       unzip
-
-%description -n monodoc-core
-Monodoc-core contains documentation tools for C#.
-
-%files -n monodoc-core
-%defattr(-, root, root)
-%_bindir/mdassembler
-%_bindir/mdoc
-%_bindir/mdoc-assemble
-%_bindir/mdoc-export-html
-%_bindir/mdoc-export-msxdoc
-%_bindir/mdoc-update
-%_bindir/mdoc-validate
-%_bindir/mdvalidater
-%_bindir/mod
-%_bindir/monodocer
-%_bindir/monodocs2html
-%_bindir/monodocs2slashdoc
-%_libdir/pkgconfig/monodoc.pc
-%_mandir/man1/mdassembler.1%ext_man
-%_mandir/man1/mdoc-assemble.1%ext_man
-%_mandir/man1/mdoc-export-html.1%ext_man
-%_mandir/man1/mdoc-export-msxdoc.1%ext_man
-%_mandir/man1/mdoc-update.1%ext_man
-%_mandir/man1/mdoc-validate.1%ext_man
-%_mandir/man1/mdoc.1%ext_man
-%_mandir/man1/mdvalidater.1%ext_man
-%_mandir/man1/monodocer.1%ext_man
-%_mandir/man1/monodocs2html.1%ext_man
-%_mandir/man5/mdoc.5%ext_man
-%_prefix/lib/mono/4.5/mdoc.exe*
-%_prefix/lib/mono/4.5/mod.exe*
-%_prefix/lib/mono/4.0/monodoc.dll*
-%_prefix/lib/mono/gac/monodoc
-%_prefix/lib/mono/monodoc
-%_prefix/lib/monodoc
-
-%package -n mono-complete
-License:        LGPL v2.1 only
-Summary:        Install everything built from the mono source tree
-Group:          Development/Languages/Mono
-Requires:       mono-core = %version-%release
-Requires:       ibm-data-db2 = %version-%release
-Requires:       libmono-2_0-1 = %version-%release
-Requires:       libmono-2_0-devel = %version-%release
-%if %llvm == yes
-Requires:       libmono-llvm0 = %version-%release
-%endif
-%if %sgen == yes
-Requires:       libmonosgen-2_0-1 = %version-%release
-Requires:       libmonosgen-2_0-devel = %version-%release
-%endif
-Requires:       mono-data = %version-%release
-Requires:       mono-data-oracle = %version-%release
-Requires:       mono-data-postgresql = %version-%release
-Requires:       mono-data-sqlite = %version-%release
-Requires:       mono-devel = %version-%release
-Requires:       mono-extras = %version-%release
-Requires:       mono-locale-extras = %version-%release
-Requires:       mono-nunit = %version-%release
-Requires:       mono-wcf = %version-%release
-Requires:       mono-web = %version-%release
-Requires:       mono-winforms = %version-%release
-Requires:       mono-winfxcore = %version-%release
-Requires:       monodoc-core = %version-%release
-
-%description -n mono-complete
-The Mono Project is an open development initiative that is working to
-develop an open source, Unix version of the .NET development platform.
-Its objective is to enable Unix developers to build and deploy
-cross-platform .NET applications. The project will implement various
-technologies that have been submitted to the ECMA for standardization.
-
-Install everything built from the mono source tree.  Note that this does
-not install anything from outside the mono source (XSP, mono-basic, etc.).
-
-%files -n mono-complete
-%defattr(-, root, root)
-%dir %_prefix/lib/mono/compat-2.0
-
-%changelog
index e2af5ccabfc561a67d947a84bbe64d40fb7d64ca..ef41dfeef5c4c27a659ea515e327bfa2c09c9ebf 100644 (file)
@@ -1,8 +1,12 @@
+if SUPPORT_SGEN
+sgen_dirs = sgen
+endif
+
 if CROSS_COMPILING
-SUBDIRS = arch utils io-layer cil metadata mini dis profiler
+SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis profiler
 else
 if INSTALL_MONOTOUCH
-SUBDIRS = utils io-layer metadata arch mini profiler
+SUBDIRS = utils io-layer metadata arch $(sgen_dirs) mini profiler
 
 monotouch-do-build:
        @list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -26,7 +30,7 @@ monotouch-do-clean:
          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
     done;
 else
-SUBDIRS = arch utils io-layer cil metadata mini dis tests unit-tests benchmark profiler
+SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler
 endif
 endif
-DIST_SUBDIRS = arch utils io-layer cil metadata mini dis tests unit-tests benchmark profiler
+DIST_SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler
index 8c9244d33331cbab54ed00150db8918e6423e4e0..cd3df077ff64502059fea31dc138f0528c5b03c4 100644 (file)
@@ -759,6 +759,7 @@ typedef struct {
 #define s390_clgr(c, r1, r2)           S390_RRE(c, 0xb921, r1, r2)
 #define s390_clgrj(c, r1, r2, m, v)    S390_RIE_2(c, 0xec65, r1, r2, m, v)
 #define s390_clgrb(c, r1, r2, m3, b, d)        S390_RRS(c, 0xece5, r1, r2, m3, b, d)
+#define s390_cli(c, b, d, v)           S390_SI(c, 0x95, b, d, v)
 #define s390_clib(c, r, i, m, b, d)    S390_RIS(c, 0xecff, r, i, m, b, d)
 #define s390_clij(c, r, i, b)          S390_RIE_3(c, 0xec7f, r, i, m, d)
 #define s390_clr(c, r1, r2)            S390_RR(c, 0x15, r1, r2)
@@ -915,6 +916,7 @@ typedef struct {
 #define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
 #define s390_mvcl(c, r1, r2)           S390_RR(c, 0x0e, r1, r2)
 #define s390_mvcle(c, r1, r3, d2, b2)  S390_RS_1(c, 0xa8, r1, r3, d2, b2)
+#define s390_mvi(c, b, d, v)           S390_SI(c, 0x92, b, d, v)
 #define s390_n(c, r, x, b, d)          S390_RX(c, 0x54, r, x, b, d)
 #define s390_nc(c, l, b1, d1, b2, d2)  S390_SS_1(c, 0xd4, l, b1, d1, b2, d2)
 #define s390_ng(c, r, x, b, d)         S390_RXY(c, 0xe380, r, x, b, d)
@@ -996,6 +998,10 @@ typedef struct {
 #define s390_sty(c, r, x, b, d)                S390_RXY(c, 0xe350, r, x, b, d)
 #define s390_tcdb(c, r, x, b, d)       S390_RXE(c, 0xed11, r, x, b, d)
 #define s390_tceb(c, r, x, b, d)       S390_RXE(c, 0xed10, r, x, b, d)
+#define s390_tmhh(c, r, m)             S390_RI(c, 0xa73, r, m)
+#define s390_tmhl(c, r, m)             S390_RI(c, 0xa72, r, m)
+#define s390_tmlh(c, r, m)             S390_RI(c, 0xa70, r, m)
+#define s390_tmll(c, r, m)             S390_RI(c, 0xa71, r, m)
 #define s390_x(c, r, x, b, d)          S390_RX(c, 0x57, r, x, b, d)
 #define s390_xihf(c, r, v)             S390_RIL_1(c, 0xc06, r, v)
 #define s390_xilf(c, r, v)             S390_RIL_1(c, 0xc07, r, v)
index 6d6875b6742d7db93f39464bb2561ca356117aad..40f0dbf95524a9372405cbce3eef665f45f8da8f 100644 (file)
@@ -6,6 +6,7 @@ endif
 
 if SUPPORT_SGEN
 metadata_lib=$(top_builddir)/mono/metadata/libmonoruntimesgen-static.la
+gc_lib=$(top_builddir)/mono/sgen/libmonosgen-static.la
 else
 metadata_lib=$(top_builddir)/mono/metadata/libmonoruntime-static.a
 gc_lib=$(LIBGC_STATIC_LIBS)
@@ -13,10 +14,10 @@ endif
 
 runtime_lib=   \
        $(metadata_lib) \
+       $(gc_lib)       \
        $(top_builddir)/mono/io-layer/libwapi.la        \
        $(top_builddir)/mono/utils/libmonoutils.la \
-       $(GLIB_LIBS) $(LIBICONV) \
-       $(gc_lib)
+       $(GLIB_LIBS) $(LIBICONV)
 
 if DISABLE_EXECUTABLES
 bin_PROGRAMS =
diff --git a/mono/dis/TODO b/mono/dis/TODO
deleted file mode 100644 (file)
index fb42dc0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-* Write test cases
-
-       Write test cases to stress test TypeSpec.  This is done by
-       creating arrays of various dimensions, sizes, and lower
-       bounds.
index bca6a11439994e29a73e8d85316ed73b1d308707..47e31071494b9df89ae82ae2fea109eaa4ab91ee 100644 (file)
@@ -28,7 +28,6 @@ OTHER_H = \
        semaphores.h    \
        sockets.h       \
        status.h        \
-       system.h        \
        threads.h       \
        timefuncs.h     \
        types.h         \
@@ -83,8 +82,6 @@ OTHER_SRC = \
        socket-private.h        \
        socket-wrappers.h       \
        status.h                \
-       system.c                \
-       system.h                \
        threads.h               \
        thread-private.h        \
        timefuncs.c             \
index ac064054bd10240cc24a53c8c139e8595a27764e..c6657dea405fae40128ca2d373287dabc312e384 100644 (file)
@@ -1503,6 +1503,13 @@ static int timedwait_signal_poll_cond (pthread_cond_t *cond, mono_mutex_t *mutex
        int ret;
 
        if (!alertable) {
+               /*
+                * pthread_cond_(timed)wait() can return 0 even if the condition was not
+                * signalled.  This happens at least on Darwin.  We surface this, i.e., we
+                * get spurious wake-ups.
+                *
+                * http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_cond_wait.html
+                */
                if (timeout)
                        ret=mono_cond_timedwait (cond, mutex, timeout);
                else
index 6b21f056ca26eef00e231f6fbbd461d8b5b4f36c..a3cbe2abfee3419be56e504891aa2e749f9ed3cf 100755 (executable)
 #if defined(__WIN32__) || defined(_WIN32)
 /* Native win32 */
 #define __USE_W32_SOCKETS
-#if (_WIN32_WINNT < 0x0502)
-/* GetProcessId is available on Windows XP SP1 and later.
- * Windows SDK declares it unconditionally.
- * MinGW declares for Windows XP and later.
- * Declare as __GetProcessId for unsupported targets. */
-#define GetProcessId __GetProcessId
-#endif
+#include <winsock2.h>
 #include <windows.h>
 #include <winbase.h>
-#include <winsock2.h>
 /*
  * The mingw version says:
  * /usr/i686-pc-mingw32/sys-root/mingw/include/ws2tcpip.h:38:2: error: #error "ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead."
 #endif
 #include <psapi.h>
 #include <shlobj.h>
-#include <mswsock.h>
-#if (_WIN32_WINNT < 0x0502)
-#undef GetProcessId
+/*
+ * Workaround for missing WSAPOLLFD typedef in mingw's winsock2.h that is required for mswsock.h below.
+ * Remove once http://sourceforge.net/p/mingw/bugs/1980/ is fixed.
+ */
+#if defined(__MINGW_MAJOR_VERSION) && __MINGW_MAJOR_VERSION == 4 
+typedef struct pollfd {
+  SOCKET fd;
+  short  events;
+  short  revents;
+} WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD;
 #endif
+#include <mswsock.h>
 #else  /* EVERYONE ELSE */
 #include "mono/io-layer/wapi.h"
 #include "mono/io-layer/uglify.h"
index 913a08570a4706be089a033700e4e79c98011e03..cdb191f3171efc1ad6582ad4201bd023a61f65ca 100644 (file)
@@ -90,6 +90,7 @@
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-mutex.h>
 #include <mono/utils/mono-signal-handler.h>
+#include <mono/utils/mono-proclib.h>
 
 /* The process' environment strings */
 #if defined(__APPLE__) && !defined (__arm__) && !defined (__aarch64__)
@@ -838,7 +839,6 @@ gboolean CreateProcess (const gunichar2 *appname, const gunichar2 *cmdline,
        } else {
                if (!is_executable (prog)) {
                        DEBUG ("%s: Executable permisson not set on %s", __func__, prog);
-                       g_free (prog);
                        SetLastError (ERROR_ACCESS_DENIED);
                        goto free_strings;
                }
@@ -1309,11 +1309,19 @@ GetProcessTimes (gpointer process, WapiFileTime *create_time,
                /* Not sure if w32 allows NULLs here or not */
                return FALSE;
        
-       if (WAPI_IS_PSEUDO_PROCESS_HANDLE (process))
-               /* This is a pseudo handle, so just fail for now
-                */
-               return FALSE;
-       
+       if (WAPI_IS_PSEUDO_PROCESS_HANDLE (process)) {
+               gpointer pid = GINT_TO_POINTER (WAPI_HANDLE_TO_PID(process));
+               gint64 start_ticks, user_ticks, kernel_ticks;
+
+               mono_process_get_times (pid, &start_ticks, &user_ticks, &kernel_ticks);
+
+               _wapi_guint64_to_filetime (start_ticks, create_time);
+               _wapi_guint64_to_filetime (user_ticks, kernel_time);
+               _wapi_guint64_to_filetime (kernel_ticks, user_time);
+
+               return TRUE;
+       }
+
        process_handle = lookup_process_handle (process);
        if (!process_handle) {
                DEBUG ("%s: Can't find process %p", __func__, process);
diff --git a/mono/io-layer/system.c b/mono/io-layer/system.c
deleted file mode 100644 (file)
index 3a336ce..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * system.c:  System information
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2002 Ximian, Inc.
- */
-
-#include <config.h>
-#include <glib.h>
-#include <sys/time.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "mono/io-layer/wapi.h"
-
-void GetSystemInfo(WapiSystemInfo *info)
-{
-       info->dwPageSize=getpagesize();
-
-       /* Fill in the rest of this junk. Maybe with libgtop */
-#ifdef _SC_NPROCESSORS_ONLN
-       info->dwNumberOfProcessors = sysconf (_SC_NPROCESSORS_ONLN);
-       if (info->dwNumberOfProcessors <= 0)
-               info->dwNumberOfProcessors = 1;
-#else
-       info->dwNumberOfProcessors = 1;
-#endif
-}
-
-
diff --git a/mono/io-layer/system.h b/mono/io-layer/system.h
deleted file mode 100644 (file)
index 390b177..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * system.h:  System information
- *
- * Author:
- *     Dick Porter (dick@ximian.com)
- *
- * (C) 2002 Ximian, Inc.
- */
-
-#ifndef _WAPI_SYSTEM_H_
-#define _WAPI_SYSTEM_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-typedef struct _WapiSystemInfo WapiSystemInfo;
-
-struct _WapiSystemInfo 
-{
-       union _anon_union
-       {
-               guint32 dwOemId;
-               struct _anon_struct
-               {
-                       guint16 wProcessorArchitecture;
-                       guint16 wReserved;
-               } _anon_struct;
-       } _anon_union;
-       
-       guint32 dwPageSize;
-       gpointer lpMinimumApplicationAddress;
-       gpointer lpMaximumApplicationAddress;
-       guint32 /*_PTR?*/ dwActiveProcessorMask;
-       guint32 dwNumberOfProcessors;
-       guint32 dwProcessorType;
-       guint32 dwAllocationGranularity;
-       guint16 wProcessorLevel;
-       guint16 wProcessorRevision;
-};
-
-extern void GetSystemInfo(WapiSystemInfo *info);
-
-G_END_DECLS
-#endif /* _WAPI_SYSTEM_H_ */
index d2dbcbfaf1cd0944af16160cf53f03953d87ca74..13b6bd1401f0b9192d258690f512272d7176e71e 100644 (file)
@@ -30,7 +30,6 @@ extern gsize GetCurrentThreadId(void); /* NB return is 32bit in MS API */
 extern void Sleep(guint32 ms);
 extern guint32 SleepEx(guint32 ms, gboolean alertable);
 
-void wapi_interrupt_thread (gpointer handle);
 void wapi_clear_interruption (void);
 gboolean wapi_thread_set_wait_handle (gpointer handle);
 void wapi_thread_clear_wait_handle (gpointer handle);
index 120ce31774778abc0c355b050e52d54b1fe7353e..aa847569cb898c8e9087a5b285955d7cf53e85ae 100644 (file)
@@ -63,8 +63,6 @@ typedef WapiLargeInteger LARGE_INTEGER;
 typedef WapiLargeInteger *PLARGE_INTEGER;
 typedef WapiULargeInteger ULARGE_INTEGER;
 typedef WapiULargeInteger *PULARGE_INTEGER;
-typedef WapiSystemInfo SYSTEM_INFO;
-typedef WapiSystemInfo *LPSYSTEM_INFO;
 typedef WapiFloatingSaveArea FLOATING_SAVE_AREA;
 typedef WapiFloatingSaveArea *PFLOATING_SAVE_AREA;
 typedef WapiContext CONTEXT;
index 6b4467aefbdf447524495d4640fb95df16282a8b..6db10c716ab4b526b485d03e429b550b75965df8 100644 (file)
@@ -12,6 +12,9 @@
  * wapi_<funcname>.
  */
 
+#define GetLastError wapi_GetLastError
+#define SetLastError wapi_SetLastError
+#define TransmitFile wapi_TransmitFile
 #define GetThreadContext wapi_GetThreadContext
 #define CreateEvent wapi_CreateEvent 
 #define PulseEvent wapi_PulseEvent 
index e2c9639c3d4a57df5634e3a18c0542c4a11ae450..c2a89920c3469295084603cbc06377c335b92199 100644 (file)
@@ -26,7 +26,6 @@
 #include <mono/io-layer/semaphores.h>
 #include <mono/io-layer/sockets.h>
 #include <mono/io-layer/status.h>
-#include <mono/io-layer/system.h>
 #include <mono/io-layer/threads.h>
 #include <mono/io-layer/timefuncs.h>
 #include <mono/io-layer/versioninfo.h>
index 98a932b7e259eaf09de77597a67e5ebd8b2b6ae9..90a8cc4ffa855b6690c0895b78f9778b096f8b1b 100644 (file)
@@ -341,15 +341,6 @@ _wapi_thread_apc_pending (gpointer handle)
  * call the wait function again. This essentially means that the target thread will
  * busy wait until it is ready to process the interruption.
  */
-void
-wapi_interrupt_thread (gpointer thread_handle)
-{
-       gpointer wait_handle;
-
-       wait_handle = wapi_prepare_interrupt_thread (thread_handle);
-       wapi_finish_interrupt_thread (wait_handle);
-}
-
 gpointer
 wapi_prepare_interrupt_thread (gpointer thread_handle)
 {
index 0a6e4067d19b5f9fdf0d342c92d98c5d7c8f4919..0602bb5cd80297d2c030d4106f72de0321a996dc 100644 (file)
@@ -117,6 +117,8 @@ common_sources = \
        debug-helpers.c         \
        debug-mono-symfile.h    \
        debug-mono-symfile.c    \
+       debug-mono-ppdb.h       \
+       debug-mono-ppdb.c       \
        decimal-ms.c            \
        decimal-ms.h            \
        domain-internals.h      \
@@ -129,7 +131,6 @@ common_sources = \
        filewatcher.c           \
        filewatcher.h           \
        gc-internal.h           \
-       gc-memfuncs.c           \
        icall.c                 \
        icall-def.h             \
        image.c                 \
@@ -226,6 +227,7 @@ common_sources = \
 gc_dependent_sources = \
        appdomain.c     \
        domain.c        \
+       gc-stats.c      \
        gc.c            \
        monitor.c       \
        mono-hash.c     \
@@ -239,59 +241,17 @@ sgen_sources = \
        sgen-os-posix.c         \
        sgen-os-mach.c          \
        sgen-os-win32.c         \
-       sgen-gc.c               \
-       sgen-internal.c         \
-       sgen-marksweep.c        \
-       sgen-los.c              \
-       sgen-protocol.c \
        sgen-bridge.c           \
        sgen-bridge.h           \
+       sgen-bridge-internal.h  \
        sgen-old-bridge.c               \
        sgen-new-bridge.c               \
        sgen-tarjan-bridge.c            \
        sgen-toggleref.c                \
        sgen-toggleref.h                \
-       sgen-gc.h               \
-       sgen-conf.h             \
-       sgen-archdep.h          \
-       sgen-cardtable.c        \
-       sgen-cardtable.h        \
-       sgen-pointer-queue.c    \
-       sgen-pointer-queue.h    \
-       sgen-pinning.c  \
-       sgen-pinning.h  \
-       sgen-pinning-stats.c    \
-       sgen-workers.c  \
-       sgen-workers.h  \
-       sgen-gray.c     \
-       sgen-gray.h     \
-       sgen-major-copy-object.h \
-       sgen-minor-copy-object.h \
-       sgen-copy-object.h \
-       sgen-marksweep-scan-object-concurrent.h \
-       sgen-minor-scan-object.h \
-       sgen-marksweep-drain-gray-stack.h       \
-       sgen-protocol.h         \
-       sgen-protocol-def.h             \
-       sgen-scan-object.h      \
-       sgen-nursery-allocator.c        \
-       sgen-hash-table.c       \
-       sgen-hash-table.h       \
-       sgen-descriptor.c               \
-       sgen-descriptor.h               \
-       sgen-alloc.c            \
-       sgen-debug.c            \
-       sgen-simple-nursery.c   \
-       sgen-split-nursery.c    \
-       sgen-memory-governor.c  \
-       sgen-memory-governor.h  \
        sgen-stw.c                              \
-       sgen-fin-weak-hash.c    \
-       sgen-layout-stats.c     \
-       sgen-layout-stats.h     \
-       sgen-qsort.c    \
-       sgen-qsort.h    \
-       sgen-tagged-pointer.h
+       sgen-mono.c             \
+       sgen-client-mono.h
 
 libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(null_gc_sources) $(boehm_sources)
 libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES)
@@ -365,5 +325,6 @@ endif
 endif
 endif
 
-EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources) runtime.h \
-               tpool-poll.c tpool-epoll.c tpool-kqueue.c
+EXTRA_DIST = $(win32_sources) $(unix_sources) $(null_sources) runtime.h \
+               tpool-poll.c tpool-epoll.c tpool-kqueue.c \
+               threadpool-ms-io-poll.c threadpool-ms-io-epoll.c threadpool-ms-io-kqueue.c
diff --git a/mono/metadata/TODO b/mono/metadata/TODO
deleted file mode 100644 (file)
index f37fd65..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-* Uniform names
-
-       We have a mess of names in the icall.c file, we need to sort that out.
index b959cb96b044c12c25bc6400171af99f58e92842..ceb60e7a001fe5f3c25f87cc4d5ab75e507f0f06 100644 (file)
@@ -78,7 +78,7 @@
  * Changes which are already detected at runtime, like the addition
  * of icalls, do not require an increment.
  */
-#define MONO_CORLIB_VERSION 125
+#define MONO_CORLIB_VERSION 132
 
 typedef struct
 {
@@ -262,8 +262,6 @@ mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
        mono_mutex_init_recursive (&mono_strtod_mutex);
        
        mono_thread_attach (domain);
-       mono_context_init (domain);
-       mono_context_set (domain->default_context);
 
        mono_type_initialization_init ();
 
@@ -273,6 +271,10 @@ mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
        /* GC init has to happen after thread init */
        mono_gc_init ();
 
+       /* contexts use GC handles, so they must be initialized after the GC */
+       mono_context_init (domain);
+       mono_context_set (domain->default_context);
+
 #ifndef DISABLE_SOCKETS
        mono_network_init ();
 #endif
@@ -340,6 +342,7 @@ mono_context_init (MonoDomain *domain)
        context = (MonoAppContext *) mono_object_new_pinned (domain, class);
        context->domain_id = domain->domain_id;
        context->context_id = 0;
+       ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext (context);
        domain->default_context = context;
 }
 
@@ -2360,6 +2363,18 @@ mono_domain_unload (MonoDomain *domain)
                mono_raise_exception ((MonoException*)exc);
 }
 
+static guint32
+guarded_wait (HANDLE handle, guint32 timeout, gboolean alertable)
+{
+       guint32 result;
+
+       MONO_PREPARE_BLOCKING
+       result = WaitForSingleObjectEx (handle, timeout, alertable);
+       MONO_FINISH_BLOCKING
+
+       return result;
+}
+
 /*
  * mono_domain_unload:
  * @domain: The domain to unload
@@ -2446,7 +2461,7 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
        g_free (name);
 
        /* Wait for the thread */       
-       while (!thread_data->done && WaitForSingleObjectEx (thread_handle, INFINITE, TRUE) == WAIT_IO_COMPLETION) {
+       while (!thread_data->done && guarded_wait (thread_handle, INFINITE, TRUE) == WAIT_IO_COMPLETION) {
                if (mono_thread_internal_has_appdomain_ref (mono_thread_internal_current (), domain) && (mono_thread_interruption_requested ())) {
                        /* The unload thread tries to abort us */
                        /* The icall wrapper will execute the abort */
index a82195d0e171bc51ec60eca87d5cc732aa21228c..646700eb95858a6fba57bddbd338e70a81b0a2e7 100644 (file)
@@ -75,6 +75,9 @@ static char **extra_gac_paths = NULL;
  * The integer number is an index in the MonoRuntimeInfo structure, whose
  * values can be found in domain.c - supported_runtimes. Look there
  * to understand what remapping will be made.
+ *
+ * .NET version can be found at https://github.com/dotnet/coreclr/blob/master/src/inc/fxretarget.h#L99
+ *
  */
 static const AssemblyVersionMap framework_assemblies [] = {
        {"Accessibility", 0},
@@ -103,6 +106,7 @@ static const AssemblyVersionMap framework_assemblies [] = {
        {"Npgsql", 0},
        {"PEAPI", 0},
        {"System", 0},
+       {"System.ComponentModel.Composition", 2},
        {"System.ComponentModel.DataAnnotations", 2},
        {"System.Configuration", 0},
        {"System.Configuration.Install", 0},
@@ -118,6 +122,8 @@ static const AssemblyVersionMap framework_assemblies [] = {
        {"System.Drawing", 0},
        {"System.Drawing.Design", 0},
        {"System.EnterpriseServices", 0},
+       {"System.IdentityModel", 3},
+       {"System.IdentityModel.Selectors", 3},
        {"System.Management", 0},
        {"System.Messaging", 0},
        {"System.Net", 2},
@@ -125,6 +131,7 @@ static const AssemblyVersionMap framework_assemblies [] = {
        {"System.Runtime.Serialization", 3},
        {"System.Runtime.Serialization.Formatters.Soap", 0},
        {"System.Security", 0},
+       {"System.ServiceModel", 3},
        {"System.ServiceModel.Web", 2},
        {"System.ServiceProcess", 0},
        {"System.Transactions", 0},
index 3d0e3ab31389b3bacea4e1cff3c039119a7b8a52..dcc3c8425955e8aa0db7b0f603e68c8904bdef21 100644 (file)
@@ -94,9 +94,21 @@ typedef enum {
        MONO_TABLE_NESTEDCLASS,
        MONO_TABLE_GENERICPARAM, /* 0x2a */
        MONO_TABLE_METHODSPEC,
-       MONO_TABLE_GENERICPARAMCONSTRAINT
+       MONO_TABLE_GENERICPARAMCONSTRAINT,
+       MONO_TABLE_UNUSED8,
+       MONO_TABLE_UNUSED9,
+       MONO_TABLE_UNUSED10,
+       /* Portable PDB tables */
+       MONO_TABLE_DOCUMENT, /* 0x30 */
+       MONO_TABLE_METHODBODY,
+       MONO_TABLE_LOCALSCOPE,
+       MONO_TABLE_LOCALVARIABLE,
+       MONO_TABLE_LOCALCONSTANT,
+       MONO_TABLE_IMPORTSCOPE,
+       MONO_TABLE_ASYNCMETHOD,
+       MONO_TABLE_CUSTOMDEBUGINFORMATION
 
-#define MONO_TABLE_LAST MONO_TABLE_GENERICPARAMCONSTRAINT
+#define MONO_TABLE_LAST MONO_TABLE_CUSTOMDEBUGINFORMATION
 #define MONO_TABLE_NUM (MONO_TABLE_LAST + 1)
 
 } MonoMetaTableEnum;
index 36080792d107ea526d24586b69dd865113d6cf60..a36cad20fa98334b213c70499ed605e4fb6327b2 100644 (file)
@@ -19,6 +19,7 @@
 #define MONO_DEFAULT_SUPERTABLE_SIZE 6
 
 extern gboolean mono_print_vtable;
+extern gboolean mono_align_small_structs;
 
 typedef struct _MonoMethodWrapper MonoMethodWrapper;
 typedef struct _MonoMethodInflated MonoMethodInflated;
@@ -195,8 +196,6 @@ struct _MonoEvent {
 /* type of exception being "on hold" for later processing (see exception_type) */
 enum {
        MONO_EXCEPTION_NONE = 0,
-       MONO_EXCEPTION_SECURITY_LINKDEMAND = 1,
-       MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND = 2,
        MONO_EXCEPTION_INVALID_PROGRAM = 3,
        MONO_EXCEPTION_UNVERIFIABLE_IL = 4,
        MONO_EXCEPTION_MISSING_METHOD = 5,
@@ -567,10 +566,10 @@ struct _MonoGenericParam {
        MonoGenericContainer *owner;
        guint16 num;
        /*
-        * If != 0, this is a generated generic param used by the JIT to implement generic
+        * If != NULL, this is a generated generic param used by the JIT to implement generic
         * sharing.
         */
-       MonoTypeEnum gshared_constraint;
+       MonoType *gshared_constraint;
        /* 
         * If owner is NULL, or owner is 'owned' by this gparam,
         * then this is the image whose mempool this struct was allocated from.
@@ -1062,7 +1061,6 @@ mono_inflate_generic_signature (MonoMethodSignature *sig, MonoGenericContext *co
 
 typedef struct {
        MonoImage *corlib;
-       MonoImage *system;
        MonoClass *object_class;
        MonoClass *byte_class;
        MonoClass *void_class;
@@ -1091,6 +1089,7 @@ typedef struct {
        MonoClass *methodhandle_class;
        MonoClass *systemtype_class;
        MonoClass *monotype_class;
+       MonoClass *runtimetype_class;
        MonoClass *exception_class;
        MonoClass *threadabortexception_class;
        MonoClass *thread_class;
@@ -1301,6 +1300,9 @@ MONO_API void mono_object_describe_fields (MonoObject *obj);
 MONO_API void mono_value_describe_fields  (MonoClass* klass, const char* addr);
 MONO_API void mono_class_describe_statics (MonoClass* klass);
 
+/* method debugging functions, for use inside gdb */
+MONO_API void mono_method_print_code (MonoMethod *method);
+
 /*Enum validation related functions*/
 MONO_API gboolean
 mono_type_is_valid_enum_basetype (MonoType * type);
@@ -1406,6 +1408,9 @@ mono_class_get_checked (MonoImage *image, guint32 type_token, MonoError *error);
 MonoClass *
 mono_class_get_and_inflate_typespec_checked (MonoImage *image, guint32 type_token, MonoGenericContext *context, MonoError *error);
 
+MonoClass *
+mono_class_from_name_checked (MonoImage *image, const char* name_space, const char *name, MonoError *error);
+
 MonoClass *
 mono_class_from_name_case_checked (MonoImage *image, const char* name_space, const char *name, MonoError *error);
 
index 4148bec95083759ff96f247783820d91be3ccdb6..dcf15c3b1ce2408951fcaeef09dc395eefdd6720 100644 (file)
@@ -47,6 +47,7 @@
 MonoStats mono_stats;
 
 gboolean mono_print_vtable = FALSE;
+gboolean mono_align_small_structs = FALSE;
 
 /* Statistics */
 guint32 inflated_classes, inflated_classes_size, inflated_methods_size;
@@ -196,13 +197,13 @@ mono_class_from_typeref_checked (MonoImage *image, guint32 type_token, MonoError
                The defacto behavior is that it's just a typedef in disguise.
                */
                /* a typedef in disguise */
-               res = mono_class_from_name (image, nspace, name); /*FIXME proper error handling*/
+               res = mono_class_from_name_checked (image, nspace, name, error);
                goto done;
 
        case MONO_RESOLUTION_SCOPE_MODULEREF:
                module = mono_image_load_module (image, idx);
                if (module)
-                       res = mono_class_from_name (module, nspace, name); /*FIXME proper error handling*/
+                       res = mono_class_from_name_checked (module, nspace, name, error);
                goto done;
 
        case MONO_RESOLUTION_SCOPE_TYPEREF: {
@@ -266,8 +267,7 @@ mono_class_from_typeref_checked (MonoImage *image, guint32 type_token, MonoError
                return NULL;
        }
 
-       /* FIXME this leaks loader errors */
-       res = mono_class_from_name (image->references [idx - 1]->image, nspace, name);
+       res = mono_class_from_name_checked (image->references [idx - 1]->image, nspace, name, error);
 
 done:
        /* Generic case, should be avoided for when a better error is possible. */
@@ -1767,7 +1767,7 @@ mono_type_get_basic_type_from_generic (MonoType *type)
 {
        /* When we do generic sharing we let type variables stand for reference/primitive types. */
        if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) &&
-               (!type->data.generic_param->gshared_constraint || type->data.generic_param->gshared_constraint == MONO_TYPE_OBJECT))
+               (!type->data.generic_param->gshared_constraint || type->data.generic_param->gshared_constraint->type == MONO_TYPE_OBJECT))
                return &mono_defaults.object_class->byval_arg;
        return type;
 }
@@ -2044,12 +2044,17 @@ mono_class_layout_fields (MonoClass *class)
 
        if (layout != TYPE_ATTRIBUTE_EXPLICIT_LAYOUT) {
                /*
+                * This leads to all kinds of problems with nested structs, so only
+                * enable it when a MONO_DEBUG property is set.
+                *
                 * For small structs, set min_align to at least the struct size to improve
                 * performance, and since the JIT memset/memcpy code assumes this and generates 
                 * unaligned accesses otherwise. See #78990 for a testcase.
                 */
-               if (class->instance_size <= sizeof (MonoObject) + sizeof (gpointer))
-                       class->min_align = MAX (class->min_align, class->instance_size - sizeof (MonoObject));
+               if (mono_align_small_structs) {
+                       if (class->instance_size <= sizeof (MonoObject) + sizeof (gpointer))
+                               class->min_align = MAX (class->min_align, class->instance_size - sizeof (MonoObject));
+               }
        }
 
        mono_memory_barrier ();
@@ -3910,7 +3915,8 @@ is_wcf_hack_disabled (void)
 }
 
 static gboolean
-check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *cm, gboolean require_newslot, gboolean interface_is_explicitly_implemented_by_class, gboolean slot_is_empty, gboolean security_enabled) {
+check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *cm, gboolean require_newslot, gboolean interface_is_explicitly_implemented_by_class, gboolean slot_is_empty)
+{
        MonoMethodSignature *cmsig, *imsig;
        if (strcmp (im->name, cm->name) == 0) {
                if (! (cm->flags & METHOD_ATTRIBUTE_PUBLIC)) {
@@ -3945,11 +3951,6 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                        return FALSE;
                }
                TRACE_INTERFACE_VTABLE (printf ("[SECURITY CHECKS]"));
-               /* CAS - SecurityAction.InheritanceDemand on interface */
-               if (security_enabled && (im->flags & METHOD_ATTRIBUTE_HAS_SECURITY)) {
-                       mono_secman_inheritancedemand_method (cm, im);
-               }
-
                if (mono_security_core_clr_enabled ())
                        mono_security_core_clr_check_override (class, cm, im);
 
@@ -4031,11 +4032,6 @@ check_interface_method_override (MonoClass *class, MonoMethod *im, MonoMethod *c
                }
                
                TRACE_INTERFACE_VTABLE (printf ("[SECURITY CHECKS (INJECTED CASE)]"));
-               /* CAS - SecurityAction.InheritanceDemand on interface */
-               if (security_enabled && (im->flags & METHOD_ATTRIBUTE_HAS_SECURITY)) {
-                       mono_secman_inheritancedemand_method (cm, im);
-               }
-
                if (mono_security_core_clr_enabled ())
                        mono_security_core_clr_check_override (class, cm, im);
 
@@ -4268,7 +4264,6 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
        int i, max_vtsize = 0, max_iid, cur_slot = 0;
        GPtrArray *ifaces = NULL;
        GHashTable *override_map = NULL;
-       gboolean security_enabled = mono_security_enabled ();
        MonoMethod *cm;
 #if (DEBUG_INTERFACE_VTABLE_CODE|TRACE_INTERFACE_VTABLE_CODE)
        int first_non_interface_slot;
@@ -4512,7 +4507,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                for (l = virt_methods; l; l = l->next) {
                                        cm = l->data;
                                        TRACE_INTERFACE_VTABLE (printf ("    For slot %d ('%s'.'%s':'%s'), trying method '%s'.'%s':'%s'... [EXPLICIT IMPLEMENTATION = %d][SLOT IS NULL = %d]", im_slot, ic->name_space, ic->name, im->name, cm->klass->name_space, cm->klass->name, cm->name, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL)));
-                                       if (check_interface_method_override (class, im, cm, TRUE, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL), security_enabled)) {
+                                       if (check_interface_method_override (class, im, cm, TRUE, interface_is_explicitly_implemented_by_class, (vtable [im_slot] == NULL))) {
                                                TRACE_INTERFACE_VTABLE (printf ("[check ok]: ASSIGNING"));
                                                vtable [im_slot] = cm;
                                                /* Why do we need this? */
@@ -4533,7 +4528,7 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                                MonoMethod *cm = parent->vtable [cm_index];
                                                
                                                TRACE_INTERFACE_VTABLE ((cm != NULL) && printf ("    For slot %d ('%s'.'%s':'%s'), trying (ancestor) method '%s'.'%s':'%s'... ", im_slot, ic->name_space, ic->name, im->name, cm->klass->name_space, cm->klass->name, cm->name));
-                                               if ((cm != NULL) && check_interface_method_override (class, im, cm, FALSE, FALSE, TRUE, security_enabled)) {
+                                               if ((cm != NULL) && check_interface_method_override (class, im, cm, FALSE, FALSE, TRUE)) {
                                                        TRACE_INTERFACE_VTABLE (printf ("[everything ok]: ASSIGNING"));
                                                        vtable [im_slot] = cm;
                                                        /* Why do we need this? */
@@ -4611,11 +4606,6 @@ mono_class_setup_vtable_general (MonoClass *class, MonoMethod **overrides, int o
                                        if (!strcmp(cm->name, m1->name) && 
                                            mono_metadata_signature_equal (cmsig, m1sig)) {
 
-                                               /* CAS - SecurityAction.InheritanceDemand */
-                                               if (security_enabled && (m1->flags & METHOD_ATTRIBUTE_HAS_SECURITY)) {
-                                                       mono_secman_inheritancedemand_method (cm, m1);
-                                               }
-
                                                if (mono_security_core_clr_enabled ())
                                                        mono_security_core_clr_check_override (class, cm, m1);
 
@@ -5105,11 +5095,6 @@ mono_class_init (MonoClass *class)
                }
        }
 
-       /* CAS - SecurityAction.InheritanceDemand */
-       if (mono_security_enabled () && class->parent && (class->parent->flags & TYPE_ATTRIBUTE_HAS_SECURITY)) {
-               mono_secman_inheritancedemand_class (class, class->parent);
-       }
-
        mono_stats.initialized_class_count++;
 
        if (class->generic_class && !class->generic_class->is_dynamic) {
@@ -6051,7 +6036,13 @@ mono_generic_class_get_class (MonoGenericClass *gclass)
        mono_generic_class_setup_parent (klass, gklass);
 
        if (gclass->is_dynamic) {
-               klass->inited = 1;
+               /*
+                * We don't need to do any init workf with unbaked typebuilders. Generic instances created at this point will be later unregistered and/or fixed.
+                * This is to avoid work that would probably give wrong results as fields change as we build the TypeBuilder.
+                * See remove_instantiations_of_and_ensure_contents in reflection.c and its usage in reflection.c to understand the fixup stage of SRE banking.
+               */
+               if (!gklass->wastypebuilder)
+                       klass->inited = 1;
 
                mono_class_setup_supertypes (klass);
 
@@ -6185,19 +6176,31 @@ make_generic_param_class (MonoGenericParam *param, MonoImage *image, gboolean is
 static MonoClass *
 get_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, gboolean take_lock)
 {
-       int n = mono_generic_param_num (param) | ((guint32)param->gshared_constraint << 16);
+       int n = mono_generic_param_num (param);
        MonoImage *image = param->image;
+       MonoClass *klass = NULL;
        GHashTable *ht;
 
        g_assert (image);
 
+       if (param->gshared_constraint) {
+               ht = is_mvar ? image->mvar_cache_constrained : image->var_cache_constrained;
+               if (ht) {
+                       if (take_lock)
+                               mono_image_lock (image);
+                       klass = g_hash_table_lookup (ht, param);
+                       if (take_lock)
+                               mono_image_unlock (image);
+               }
+               return klass;
+       }
+
        if (n < FAST_CACHE_SIZE) {
                if (is_mvar)
                        return image->mvar_cache_fast ? image->mvar_cache_fast [n] : NULL;
                else
                        return image->var_cache_fast ? image->var_cache_fast [n] : NULL;
        } else {
-               MonoClass *klass = NULL;
                ht = is_mvar ? image->mvar_cache_slow : image->var_cache_slow;
                if (ht) {
                        if (take_lock)
@@ -6216,12 +6219,23 @@ get_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, gboolean take_
 static void
 set_anon_gparam_class (MonoGenericParam *param, gboolean is_mvar, MonoClass *klass)
 {
-       int n = mono_generic_param_num (param) | ((guint32)param->gshared_constraint << 16);
+       int n = mono_generic_param_num (param);
        MonoImage *image = param->image;
 
        g_assert (image);
 
-       if (n < FAST_CACHE_SIZE) {
+       if (param->gshared_constraint) {
+               GHashTable *ht = is_mvar ? image->mvar_cache_constrained : image->var_cache_constrained;
+               if (!ht) {
+                       ht = g_hash_table_new ((GHashFunc)mono_metadata_generic_param_hash, (GEqualFunc)mono_metadata_generic_param_equal);
+                       mono_memory_barrier ();
+                       if (is_mvar)
+                               image->mvar_cache_constrained = ht;
+                       else
+                               image->var_cache_constrained = ht;
+               }
+               g_hash_table_insert (ht, param, klass);
+       } else if (n < FAST_CACHE_SIZE) {
                if (is_mvar) {
                        /* Requires locking to avoid droping an already published class */
                        if (!image->mvar_cache_fast)
@@ -7676,23 +7690,9 @@ search_modules (MonoImage *image, const char *name_space, const char *name)
        return NULL;
 }
 
-/**
- * mono_class_from_name:
- * @image: The MonoImage where the type is looked up in
- * @name_space: the type namespace
- * @name: the type short name.
- *
- * Obtains a MonoClass with a given namespace and a given name which
- * is located in the given MonoImage.
- *
- * To reference nested classes, use the "/" character as a separator.
- * For example use "Foo/Bar" to reference the class Bar that is nested
- * inside Foo, like this: "class Foo { class Bar {} }".
- */
 MonoClass *
-mono_class_from_name (MonoImage *image, const char* name_space, const char *name)
+mono_class_from_name_checked (MonoImage *image, const char* name_space, const char *name, MonoError *error)
 {
-       MonoError error;
        GHashTable *nspace_table;
        MonoImage *loaded_image;
        guint32 token = 0;
@@ -7701,6 +7701,8 @@ mono_class_from_name (MonoImage *image, const char* name_space, const char *name
        char *nested;
        char buf [1024];
 
+       mono_error_init (error);
+
        if ((nested = strchr (name, '/'))) {
                int pos = nested - name;
                int len = strlen (name);
@@ -7794,14 +7796,37 @@ mono_class_from_name (MonoImage *image, const char* name_space, const char *name
 
        token = MONO_TOKEN_TYPE_DEF | token;
 
-       class = mono_class_get_checked (image, token, &error);
+       class = mono_class_get_checked (image, token, error);
+       if (nested)
+               return return_nested_in (class, nested);
+       return class;
+}
+
+/**
+ * mono_class_from_name:
+ * @image: The MonoImage where the type is looked up in
+ * @name_space: the type namespace
+ * @name: the type short name.
+ *
+ * Obtains a MonoClass with a given namespace and a given name which
+ * is located in the given MonoImage.
+ *
+ * To reference nested classes, use the "/" character as a separator.
+ * For example use "Foo/Bar" to reference the class Bar that is nested
+ * inside Foo, like this: "class Foo { class Bar {} }".
+ */
+MonoClass *
+mono_class_from_name (MonoImage *image, const char* name_space, const char *name)
+{
+       MonoError error;
+       MonoClass *klass;
+
+       klass = mono_class_from_name_checked (image, name_space, name, &error);
        if (!mono_error_ok (&error)) {
                mono_loader_set_error_from_mono_error (&error);
                mono_error_cleanup (&error); /* FIXME Don't swallow the error */
        }
-       if (nested)
-               return return_nested_in (class, nested);
-       return class;
+       return klass;
 }
 
 /**
@@ -9738,24 +9763,6 @@ mono_class_get_exception_for_failure (MonoClass *klass)
        gpointer exception_data = mono_class_get_exception_data (klass);
 
        switch (klass->exception_type) {
-#ifndef DISABLE_SECURITY
-       case MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND: {
-               MonoDomain *domain = mono_domain_get ();
-               MonoSecurityManager* secman = mono_security_manager_get_methods ();
-               MonoMethod *method = exception_data;
-               guint32 error = (method) ? MONO_METADATA_INHERITANCEDEMAND_METHOD : MONO_METADATA_INHERITANCEDEMAND_CLASS;
-               MonoObject *exc = NULL;
-               gpointer args [4];
-
-               args [0] = &error;
-               args [1] = mono_assembly_get_object (domain, mono_image_get_assembly (klass->image));
-               args [2] = mono_type_get_object (domain, &klass->byval_arg);
-               args [3] = (method) ? mono_method_get_object (domain, method, NULL) : NULL;
-
-               mono_runtime_invoke (secman->inheritsecurityexception, NULL, args, &exc);
-               return (MonoException*) exc;
-       }
-#endif
        case MONO_EXCEPTION_TYPE_LOAD: {
                MonoString *name;
                MonoException *ex;
index 022822021400fd160ab63f4d0965ac6421cc25c8..dd64b249703eb62873c90b21d8af5697f375ccc8 100644 (file)
@@ -225,8 +225,6 @@ do_console_cancel_event (void)
        MonoClass *klass;
        MonoDelegate *load_value;
        MonoMethod *method;
-       MonoMethodMessage *msg;
-       MonoMethod *im;
        MonoVTable *vtable;
 
        /* FIXME: this should likely iterate all the domains, instead */
@@ -252,9 +250,8 @@ do_console_cancel_event (void)
        klass = load_value->object.vtable->klass;
        method = mono_class_get_method_from_name (klass, "BeginInvoke", -1);
        g_assert (method != NULL);
-       im = mono_get_delegate_invoke (method->klass);
-       msg = mono_method_call_message_new (method, NULL, im, NULL, NULL);
-       mono_thread_pool_add ((MonoObject *) load_value, msg, NULL, NULL);
+
+       mono_thread_pool_begin_invoke (domain, (MonoObject*) load_value, method, NULL);
 }
 
 static int need_cancel = FALSE;
index d4027a01f5d2ce1dba0898d4f064b99ffbcc5c30..0a34822260d09e773e8b67a05e17705e4ea9e5fc 100644 (file)
@@ -1022,3 +1022,25 @@ mono_class_describe_statics (MonoClass* klass)
                }
        }
 }
+
+/**
+ * mono_print_method_code
+ * @MonoMethod: a pointer to the method
+ *
+ * This method is used from a debugger to print the code of the method.
+ *
+ * This prints the IL code of the method in the standard output.
+ */
+void
+mono_method_print_code (MonoMethod *method)
+{
+       char *code;
+       MonoMethodHeader *header = mono_method_get_header (method);
+       if (!header) {
+               printf ("METHOD HEADER NOT FOUND\n");
+               return;
+       }
+       code = mono_disasm_code (0, method, header->code, header->code + header->code_size);
+       printf ("CODE FOR %s:\n%s\n", mono_method_full_name (method, TRUE), code);
+       g_free (code);
+}
diff --git a/mono/metadata/debug-mono-ppdb.c b/mono/metadata/debug-mono-ppdb.c
new file mode 100644 (file)
index 0000000..660ffee
--- /dev/null
@@ -0,0 +1,479 @@
+/*
+ * debug-mono-ppdb.c: Support for the portable PDB symbol
+ * file format
+ *
+ *
+ * Author:
+ *     Mono Project (http://www.mono-project.com)
+ *
+ * Copyright 2015 Xamarin Inc (http://www.xamarin.com)
+ */
+
+#include <config.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <mono/metadata/metadata.h>
+#include <mono/metadata/tabledefs.h>
+#include <mono/metadata/tokentype.h>
+#include <mono/metadata/debug-helpers.h>
+#include <mono/metadata/mono-debug.h>
+#include <mono/metadata/debug-mono-symfile.h>
+#include <mono/metadata/mono-debug-debugger.h>
+#include <mono/metadata/mono-endian.h>
+#include <mono/metadata/metadata-internals.h>
+#include <mono/metadata/class-internals.h>
+
+#include "debug-mono-ppdb.h"
+
+struct _MonoPPDBFile {
+       MonoImage *image;
+       GHashTable *doc_cache;
+};
+
+MonoPPDBFile*
+mono_ppdb_load_file (MonoImage *image)
+{
+       MonoImage *ppdb_image;
+       const char *filename;
+       char *s, *ppdb_filename;
+       MonoImageOpenStatus status;
+       MonoTableInfo *tables;
+       guint32 cols [MONO_MODULE_SIZE];
+       const char *guid, *ppdb_guid;
+       MonoPPDBFile *ppdb;
+
+       /* ppdb files drop the .exe/.dll extension */
+       filename = mono_image_get_filename (image);
+       if (strlen (filename) > 4 && (!strcmp (filename + strlen (filename) - 4, ".exe"))) {
+               s = g_strdup (filename);
+               s [strlen (filename) - 4] = '\0';
+               ppdb_filename = g_strdup_printf ("%s.pdb", s);
+               g_free (s);
+       } else {
+               ppdb_filename = g_strdup_printf ("%s.pdb", filename);
+       }
+
+       ppdb_image = mono_image_open_metadata_only (ppdb_filename, &status);
+       if (!ppdb_image)
+               return NULL;
+
+       /* Check that the images match */
+       tables = image->tables;
+       g_assert (tables [MONO_TABLE_MODULE].rows);
+       mono_metadata_decode_row (&tables [MONO_TABLE_MODULE], 0, cols, MONO_MODULE_SIZE);
+       guid = mono_metadata_guid_heap (image, cols [MONO_MODULE_MVID]);
+
+       tables = ppdb_image->tables;
+       g_assert (tables [MONO_TABLE_MODULE].rows);
+       mono_metadata_decode_row (&tables [MONO_TABLE_MODULE], 0, cols, MONO_MODULE_SIZE);
+       ppdb_guid = mono_metadata_guid_heap (ppdb_image, cols [MONO_MODULE_MVID]);
+
+       if (memcmp (guid, ppdb_guid, 16) != 0) {
+               g_warning ("Symbol file %s doesn't match image %s", ppdb_image->name,
+                                  image->name);
+               mono_image_close (ppdb_image);
+               return NULL;
+       }
+
+       ppdb = g_new0 (MonoPPDBFile, 1);
+       ppdb->image = ppdb_image;
+
+       return ppdb;
+}
+
+void
+mono_ppdb_close (MonoDebugHandle *handle)
+{
+       MonoPPDBFile *ppdb = handle->ppdb;
+
+       mono_image_close (ppdb->image);
+       if (ppdb->doc_cache)
+               g_hash_table_destroy (ppdb->doc_cache);
+       g_free (ppdb);
+}
+
+MonoDebugMethodInfo *
+mono_ppdb_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
+{
+       MonoDebugMethodInfo *minfo;
+
+       if (handle->image != mono_class_get_image (mono_method_get_class (method)))
+               return NULL;
+
+       // FIXME: Cache
+
+       // FIXME: Methods without tokens
+
+       minfo = g_new0 (MonoDebugMethodInfo, 1);
+       minfo->index = 0;
+       minfo->method = method;
+       minfo->handle = handle;
+
+       return minfo;
+}
+
+static MonoDebugSourceInfo*
+get_docinfo (MonoPPDBFile *ppdb, MonoImage *image, int docidx)
+{
+       MonoTableInfo *tables = image->tables;
+       guint32 cols [MONO_DOCUMENT_SIZE];
+       const char *ptr;
+       const char *start;
+       const char *part_ptr;
+       int size, part_size, partidx, nparts;
+       char sep;
+       GString *s;
+       MonoDebugSourceInfo *res;
+
+       // FIXME: Cache
+
+       mono_metadata_decode_row (&tables [MONO_TABLE_DOCUMENT], docidx-1, cols, MONO_DOCUMENT_SIZE);
+
+       ptr = mono_metadata_blob_heap (image, cols [MONO_DOCUMENT_NAME]);
+       size = mono_metadata_decode_blob_size (ptr, &ptr);
+       start = ptr;
+
+       // FIXME: UTF8
+       sep = ptr [0];
+       ptr ++;
+
+       s = g_string_new ("");
+
+       nparts = 0;
+       while (ptr < start + size) {
+               partidx = mono_metadata_decode_value (ptr, &ptr);
+               if (nparts)
+                       g_string_append_c (s, sep);
+               if (partidx) {
+                       part_ptr = mono_metadata_blob_heap (image, partidx);
+                       part_size = mono_metadata_decode_blob_size (part_ptr, &part_ptr);
+
+                       // FIXME: UTF8
+                       g_string_append_len (s, part_ptr, part_size);
+               }
+               nparts ++;
+       }
+
+       res = g_new0 (MonoDebugSourceInfo, 1);
+       res->source_file = g_string_free (s, FALSE);
+       res->guid = NULL;
+       res->hash = (guint8*)mono_metadata_blob_heap (image, cols [MONO_DOCUMENT_HASH]);
+
+       return res;
+}
+
+static char*
+get_docname (MonoPPDBFile *ppdb, MonoImage *image, int docidx)
+{
+       MonoDebugSourceInfo *info;
+
+       info = get_docinfo (ppdb, image, docidx);
+       return g_strdup (info->source_file);
+}
+
+/**
+ * mono_ppdb_lookup_location:
+ * @minfo: A `MonoDebugMethodInfo' which can be retrieved by
+ *         mono_debug_lookup_method().
+ * @offset: IL offset within the corresponding method's CIL code.
+ *
+ * This function is similar to mono_debug_lookup_location(), but we
+ * already looked up the method and also already did the
+ * `native address -> IL offset' mapping.
+ */
+MonoDebugSourceLocation *
+mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset)
+{
+       MonoPPDBFile *ppdb = minfo->handle->ppdb;
+       MonoImage *image = ppdb->image;
+       MonoMethod *method = minfo->method;
+       MonoTableInfo *tables = image->tables;
+       guint32 cols [MONO_METHODBODY_SIZE];
+       const char *ptr;
+       const char *end;
+       char *docname;
+       int idx, size, docidx, iloffset, delta_il, delta_lines, delta_cols, start_line, start_col, adv_line, adv_col;
+       MonoDebugSourceLocation *location;
+
+       g_assert (method->token);
+
+       idx = mono_metadata_token_index (method->token);
+
+       mono_metadata_decode_row (&tables [MONO_TABLE_METHODBODY], idx-1, cols, MONO_METHODBODY_SIZE);
+
+       // FIXME:
+       g_assert (cols [MONO_METHODBODY_SEQ_POINTS]);
+
+       ptr = mono_metadata_blob_heap (image, cols [MONO_METHODBODY_SEQ_POINTS]);
+       size = mono_metadata_decode_blob_size (ptr, &ptr);
+       end = ptr + size;
+
+       /* First record */
+       docidx = mono_metadata_decode_value (ptr, &ptr);
+       docname = get_docname (ppdb, image, docidx);
+       iloffset = mono_metadata_decode_value (ptr, &ptr);
+       delta_lines = mono_metadata_decode_value (ptr, &ptr);
+       if (delta_lines == 0)
+               delta_cols = mono_metadata_decode_value (ptr, &ptr);
+       else
+               delta_cols = mono_metadata_decode_signed_value (ptr, &ptr);
+       start_line = mono_metadata_decode_value (ptr, &ptr);
+       start_col = mono_metadata_decode_value (ptr, &ptr);
+
+       while (ptr < end) {
+               if (iloffset > offset)
+                       break;
+
+               delta_il = mono_metadata_decode_value (ptr, &ptr);
+               if (delta_il == 0)
+                       // FIXME:
+                       g_assert_not_reached ();
+
+               delta_lines = mono_metadata_decode_value (ptr, &ptr);
+               if (delta_lines == 0)
+                       delta_cols = mono_metadata_decode_value (ptr, &ptr);
+               else
+                       delta_cols = mono_metadata_decode_signed_value (ptr, &ptr);
+               if (delta_lines == 0 && delta_cols == 0)
+                       // FIXME:
+                       g_assert_not_reached ();
+               adv_line = mono_metadata_decode_signed_value (ptr, &ptr);
+               adv_col = mono_metadata_decode_signed_value (ptr, &ptr);
+
+               if (iloffset + delta_il > offset)
+                       break;
+
+               iloffset += delta_il;
+               start_line += adv_line;
+               start_col += adv_col;
+       }
+
+       location = g_new0 (MonoDebugSourceLocation, 1);
+       location->source_file = docname;
+       location->row = start_line;
+       location->il_offset = iloffset;
+
+       return location;
+}
+
+void
+mono_ppdb_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points)
+{
+       MonoPPDBFile *ppdb = minfo->handle->ppdb;
+       MonoImage *image = ppdb->image;
+       MonoMethod *method = minfo->method;
+       MonoTableInfo *tables = image->tables;
+       guint32 cols [MONO_METHODBODY_SIZE];
+       const char *ptr;
+       const char *end;
+       MonoDebugSourceInfo *docinfo;
+       int i, method_idx, size, docidx, iloffset, delta_il, delta_lines, delta_cols, start_line, start_col, adv_line, adv_col;
+       GArray *sps;
+       MonoSymSeqPoint sp;
+       GPtrArray *sfiles = NULL;
+       GPtrArray *sindexes = NULL;
+
+       if (source_file)
+               *source_file = NULL;
+       if (source_file_list)
+               *source_file_list = NULL;
+       if (source_files)
+               *source_files = NULL;
+       if (seq_points)
+               *seq_points = NULL;
+       if (n_seq_points)
+               *n_seq_points = 0;
+
+       if (source_file_list)
+               *source_file_list = sfiles = g_ptr_array_new ();
+       if (source_files)
+               sindexes = g_ptr_array_new ();
+
+       if (!method->token)
+               return;
+
+       method_idx = mono_metadata_token_index (method->token);
+
+       mono_metadata_decode_row (&tables [MONO_TABLE_METHODBODY], method_idx-1, cols, MONO_METHODBODY_SIZE);
+
+       if (!cols [MONO_METHODBODY_SEQ_POINTS])
+               return;
+
+       ptr = mono_metadata_blob_heap (image, cols [MONO_METHODBODY_SEQ_POINTS]);
+       size = mono_metadata_decode_blob_size (ptr, &ptr);
+       end = ptr + size;
+
+       sps = g_array_new (FALSE, TRUE, sizeof (MonoSymSeqPoint));
+
+       /* First record */
+       docidx = mono_metadata_decode_value (ptr, &ptr);
+       docinfo = get_docinfo (ppdb, image, docidx);
+       iloffset = mono_metadata_decode_value (ptr, &ptr);
+       delta_lines = mono_metadata_decode_value (ptr, &ptr);
+       if (delta_lines == 0)
+               delta_cols = mono_metadata_decode_value (ptr, &ptr);
+       else
+               delta_cols = mono_metadata_decode_signed_value (ptr, &ptr);
+       start_line = mono_metadata_decode_value (ptr, &ptr);
+       start_col = mono_metadata_decode_value (ptr, &ptr);
+
+       if (sfiles)
+               g_ptr_array_add (sfiles, docinfo);
+       if (source_files)
+               g_ptr_array_add (sindexes, GUINT_TO_POINTER (sfiles->len - 1));
+
+       memset (&sp, 0, sizeof (sp));
+       sp.il_offset = iloffset;
+       sp.line = start_line;
+       sp.column = start_col;
+       sp.end_line = start_line + delta_lines;
+       sp.end_column = start_col + delta_cols;
+
+       g_array_append_val (sps, sp);
+
+       while (ptr < end) {
+               delta_il = mono_metadata_decode_value (ptr, &ptr);
+               if (delta_il == 0) {
+                       /* subsequent-document-record */
+                       docidx = mono_metadata_decode_value (ptr, &ptr);
+                       docinfo = get_docinfo (ppdb, image, docidx);
+                       if (sfiles)
+                               g_ptr_array_add (sfiles, docinfo);
+                       continue;
+               }
+               delta_lines = mono_metadata_decode_value (ptr, &ptr);
+               if (delta_lines == 0)
+                       delta_cols = mono_metadata_decode_value (ptr, &ptr);
+               else
+                       delta_cols = mono_metadata_decode_signed_value (ptr, &ptr);
+
+               if (delta_lines == 0 && delta_cols == 0) {
+                       /* Hidden sequence point */
+                       // FIXME: This seems to be followed by garbage
+                       continue;
+               }
+
+               adv_line = mono_metadata_decode_signed_value (ptr, &ptr);
+               adv_col = mono_metadata_decode_signed_value (ptr, &ptr);
+
+               iloffset += delta_il;
+               start_line += adv_line;
+               start_col += adv_col;
+
+               memset (&sp, 0, sizeof (sp));
+               sp.il_offset = iloffset;
+               sp.line = start_line;
+               sp.column = start_col;
+               sp.end_line = start_line + delta_lines;
+               sp.end_column = start_col + delta_cols;
+
+               g_array_append_val (sps, sp);
+               if (source_files)
+                       g_ptr_array_add (sindexes, GUINT_TO_POINTER (sfiles->len - 1));
+       }
+
+       if (n_seq_points) {
+               *n_seq_points = sps->len;
+               g_assert (seq_points);
+               *seq_points = g_new (MonoSymSeqPoint, sps->len);
+               memcpy (*seq_points, sps->data, sps->len * sizeof (MonoSymSeqPoint));
+       }
+
+       if (source_file)
+               *source_file = g_strdup (((MonoDebugSourceInfo*)g_ptr_array_index (sfiles, 0))->source_file);
+       if (source_files) {
+               *source_files = g_new (int, sps->len);
+               for (i = 0; i < sps->len; ++i)
+                       (*source_files)[i] = GPOINTER_TO_INT (g_ptr_array_index (sindexes, i));
+               g_ptr_array_free (sindexes, TRUE);
+       }
+
+       g_array_free (sps, TRUE);
+}
+
+MonoDebugLocalsInfo*
+mono_ppdb_lookup_locals (MonoDebugMethodInfo *minfo)
+{
+       MonoPPDBFile *ppdb = minfo->handle->ppdb;
+       MonoImage *image = ppdb->image;
+       MonoTableInfo *tables = image->tables;
+       MonoMethod *method = minfo->method;
+       guint32 cols [MONO_LOCALSCOPE_SIZE];
+       guint32 locals_cols [MONO_LOCALVARIABLE_SIZE];
+       int i, lindex, sindex, method_idx, start_scope_idx, scope_idx, locals_idx, locals_end_idx, nscopes;
+       MonoDebugLocalsInfo *res;
+       MonoMethodSignature *sig;
+
+       if (!method->token)
+               return NULL;
+
+       sig = mono_method_signature (method);
+       if (!sig)
+               return NULL;
+
+       method_idx = mono_metadata_token_index (method->token);
+
+       start_scope_idx = mono_metadata_localscope_from_methoddef (image, method_idx);
+
+       if (!start_scope_idx)
+               return NULL;
+
+       /* Compute number of locals and scopes */
+       scope_idx = start_scope_idx;
+       mono_metadata_decode_row (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1, cols, MONO_LOCALSCOPE_SIZE);
+       locals_idx = cols [MONO_LOCALSCOPE_VARIABLELIST];
+       while (TRUE) {
+               mono_metadata_decode_row (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1, cols, MONO_LOCALSCOPE_SIZE);
+               if (cols [MONO_LOCALSCOPE_METHOD] != method_idx)
+                       break;
+               scope_idx ++;
+       }
+       nscopes = scope_idx - start_scope_idx;
+       if (scope_idx == tables [MONO_TABLE_LOCALSCOPE].rows) {
+               // FIXME:
+               g_assert_not_reached ();
+               locals_end_idx = -1;
+       } else {
+               locals_end_idx = cols [MONO_LOCALSCOPE_VARIABLELIST];
+       }
+
+       res = g_new0 (MonoDebugLocalsInfo, 1);
+       res->num_blocks = nscopes;
+       res->code_blocks = g_new0 (MonoDebugCodeBlock, res->num_blocks);
+       res->num_locals = locals_end_idx - locals_idx;
+       res->locals = g_new0 (MonoDebugLocalVar, res->num_locals);
+
+       lindex = 0;
+       for (sindex = 0; sindex < nscopes; ++sindex) {
+               scope_idx = start_scope_idx + sindex;
+               mono_metadata_decode_row (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1, cols, MONO_LOCALSCOPE_SIZE);
+
+               locals_idx = cols [MONO_LOCALSCOPE_VARIABLELIST];
+               if (scope_idx == tables [MONO_TABLE_LOCALSCOPE].rows) {
+                       // FIXME:
+                       g_assert_not_reached ();
+               } else {
+                       locals_end_idx = mono_metadata_decode_row_col (&tables [MONO_TABLE_LOCALSCOPE], scope_idx-1 + 1, MONO_LOCALSCOPE_VARIABLELIST);
+               }
+
+               res->code_blocks [sindex].start_offset = cols [MONO_LOCALSCOPE_STARTOFFSET];
+               res->code_blocks [sindex].end_offset = cols [MONO_LOCALSCOPE_STARTOFFSET] + cols [MONO_LOCALSCOPE_LENGTH];
+
+               //printf ("Scope: %s %d %d %d-%d\n", mono_method_full_name (method, 1), cols [MONO_LOCALSCOPE_STARTOFFSET], cols [MONO_LOCALSCOPE_LENGTH], locals_idx, locals_end_idx);
+
+               for (i = locals_idx; i < locals_end_idx; ++i) {
+                       mono_metadata_decode_row (&tables [MONO_TABLE_LOCALVARIABLE], i - 1, locals_cols, MONO_LOCALVARIABLE_SIZE);
+
+                       res->locals [lindex].name = g_strdup (mono_metadata_string_heap (image, locals_cols [MONO_LOCALVARIABLE_NAME]));
+                       res->locals [lindex].index = locals_cols [MONO_LOCALVARIABLE_INDEX];
+                       res->locals [lindex].block = &res->code_blocks [sindex];
+                       lindex ++;
+
+                       //printf ("\t %s %d\n", mono_metadata_string_heap (image, locals_cols [MONO_LOCALVARIABLE_NAME]), locals_cols [MONO_LOCALVARIABLE_INDEX]);
+               }
+       }
+
+       return res;
+}
diff --git a/mono/metadata/debug-mono-ppdb.h b/mono/metadata/debug-mono-ppdb.h
new file mode 100644 (file)
index 0000000..d90120e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * debug-mono-ppdb.c: Support for the portable PDB symbol
+ * file format
+ *
+ *
+ * Author:
+ *     Mono Project (http://www.mono-project.com)
+ *
+ * Copyright 2015 Xamarin Inc (http://www.xamarin.com)
+ */
+
+#ifndef __MONO_METADATA_DEBUG_MONO_PPDB_H__
+#define __MONO_METADATA_DEBUG_MONO_PPDB_H__
+
+#include <config.h>
+#include <mono/metadata/metadata-internals.h>
+#include <mono/metadata/mono-debug.h>
+
+MonoPPDBFile*
+mono_ppdb_load_file (MonoImage *image);
+
+void
+mono_ppdb_close (MonoDebugHandle *handle);
+
+MonoDebugMethodInfo *
+mono_ppdb_lookup_method (MonoDebugHandle *handle, MonoMethod *method);
+
+MonoDebugSourceLocation *
+mono_ppdb_lookup_location (MonoDebugMethodInfo *minfo, uint32_t offset);
+
+void
+mono_ppdb_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points);
+
+MonoDebugLocalsInfo*
+mono_ppdb_lookup_locals (MonoDebugMethodInfo *minfo);
+
+#endif
index 977c71d69a0692e51d17322bb1e23f8b8bf0563e..39c348cd7be38615dd5a94bcbdfa7c331aa227d1 100644 (file)
@@ -114,7 +114,7 @@ load_symfile (MonoDebugHandle *handle, MonoSymbolFile *symfile, mono_bool in_the
        if (strcmp (handle->image->guid, guid)) {
                if (!in_the_debugger)
                        g_warning ("Symbol file %s doesn't match image %s", symfile->filename,
-                                  handle->image_file);
+                                  handle->image->name);
                if (guid)
                        g_free (guid);
                return FALSE;
@@ -153,6 +153,7 @@ mono_debug_open_mono_symbols (MonoDebugHandle *handle, const uint8_t *raw_conten
                symfile->was_loaded_from_memory = TRUE;
        } else {
                MonoFileMap *f;
+
                symfile->filename = g_strdup_printf ("%s.mdb", mono_image_get_filename (handle->image));
                symfile->was_loaded_from_memory = FALSE;
                if ((f = mono_file_map_open (symfile->filename))) {
@@ -500,43 +501,35 @@ method_get_lnt_flags (MonoDebugMethodInfo *minfo)
 }
 
 /*
- * mono_debug_symfile_get_line_numbers_full:
+ * mono_debug_symfile_get_seq_points:
  *
  * On return, SOURCE_FILE_LIST will point to a GPtrArray of MonoDebugSourceFile
  * structures, and SOURCE_FILES will contain indexes into this array.
  * The MonoDebugSourceFile structures are owned by this module.
  */
 void
-mono_debug_symfile_get_line_numbers_full (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int *n_il_offsets, int **il_offsets, int **line_numbers, int **column_numbers, int **source_files, int **end_line_numbers, int **end_column_numbers)
+mono_debug_symfile_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points)
 {
        // FIXME: Unify this with mono_debug_symfile_lookup_location
        MonoSymbolFile *symfile;
        const unsigned char *ptr;
        StatementMachine stm;
-       uint32_t i, j;
+       uint32_t i, j, n;
        LineNumberTableFlags flags;
        GPtrArray *il_offset_array, *line_number_array, *source_file_array, *hidden_array;
        gboolean has_column_info, has_end_info;
-       gboolean column_info_read = FALSE;
+       MonoSymSeqPoint *sps;
 
        if (source_file_list)
                *source_file_list = NULL;
-       if (n_il_offsets)
-               *n_il_offsets = 0;
-       if (il_offsets)
-               *il_offsets = NULL;
+       if (seq_points)
+               *seq_points = NULL;
+       if (n_seq_points)
+               *n_seq_points = 0;
        if (source_files)
                *source_files = NULL;
        if (source_file)
                *source_file = NULL;
-       if (line_numbers)
-               *line_numbers = NULL;
-       if (column_numbers)
-               *column_numbers = NULL;
-       if (end_line_numbers)
-               *end_line_numbers = NULL;
-       if (end_column_numbers)
-               *end_column_numbers = NULL;
 
        if ((symfile = minfo->handle->symfile) == NULL)
                return;
@@ -662,63 +655,61 @@ mono_debug_symfile_get_line_numbers_full (MonoDebugMethodInfo *minfo, char **sou
                }
        }                               
 
-       if (n_il_offsets) {
-               *n_il_offsets = il_offset_array->len;
+       if (n_seq_points) {
+               g_assert (seq_points);
+
+               n = il_offset_array->len;
                for (i = 0; i < il_offset_array->len; i++) {
                        if (GPOINTER_TO_UINT (g_ptr_array_index (hidden_array, i))) {
-                               (*n_il_offsets)--;
-                       }
-               }
-       }
-       if (il_offsets && line_numbers) {
-               *il_offsets = g_malloc (*n_il_offsets * sizeof (int));
-               *line_numbers = g_malloc (*n_il_offsets * sizeof (int));
-               j = 0;
-               for (i = 0; i < il_offset_array->len; ++i) {
-                       if (!GPOINTER_TO_UINT (g_ptr_array_index (hidden_array, i))) {
-                               (*il_offsets)[j] = GPOINTER_TO_UINT (g_ptr_array_index (il_offset_array, i));
-                               (*line_numbers)[j] = GPOINTER_TO_UINT (g_ptr_array_index (line_number_array, i));
-                               j++;
+                               n --;
                        }
                }
-       }
 
-       if (column_numbers && has_column_info) {
-               column_info_read = TRUE;
-               *column_numbers = g_malloc (*n_il_offsets * sizeof (int));
+               *n_seq_points = n;
+               *seq_points = sps = g_new0 (MonoSymSeqPoint, n);
                j = 0;
                for (i = 0; i < il_offset_array->len; ++i) {
-                       int column = read_leb128 (ptr, &ptr);
+                       MonoSymSeqPoint *sp = &(sps [j]);
                        if (!GPOINTER_TO_UINT (g_ptr_array_index (hidden_array, i))) {
-                               (*column_numbers) [j] = column;
-                               j++;
+                               sp->il_offset = GPOINTER_TO_UINT (g_ptr_array_index (il_offset_array, i));
+                               sp->line = GPOINTER_TO_UINT (g_ptr_array_index (line_number_array, i));
+                               sp->column = -1;
+                               sp->end_line = -1;
+                               sp->end_column = -1;
+                               j ++;
                        }
                }
-       }
-
-       if (has_end_info && end_line_numbers) {
-               g_assert (end_column_numbers);
-               *end_line_numbers = g_malloc (*n_il_offsets * sizeof (int));
-               *end_column_numbers = g_malloc (*n_il_offsets * sizeof (int));
-               if (has_column_info && !column_info_read) {
-                       for (i = 0; i < il_offset_array->len; ++i)
-                               read_leb128 (ptr, &ptr);
-               }
-               j = 0;
-               for (i = 0; i < il_offset_array->len; ++i) {
-                       int end_row, end_column = -1;
 
-                       end_row = read_leb128 (ptr, &ptr);
-                       if (end_row != 0xffffff) {
-                               end_row += GPOINTER_TO_UINT (g_ptr_array_index (line_number_array, i));
-                               end_column = read_leb128 (ptr, &ptr);
+               if (has_column_info) {
+                       j = 0;
+                       for (i = 0; i < il_offset_array->len; ++i) {
+                               MonoSymSeqPoint *sp = &(sps [j]);
+                               int column = read_leb128 (ptr, &ptr);
                                if (!GPOINTER_TO_UINT (g_ptr_array_index (hidden_array, i))) {
-                                       (*end_line_numbers)[j] = end_row;
-                                       (*end_column_numbers)[j] = end_column;
+                                       sp->column = column;
                                        j++;
                                }
                        }
                }
+
+               if (has_end_info) {
+                       j = 0;
+                       for (i = 0; i < il_offset_array->len; ++i) {
+                               MonoSymSeqPoint *sp = &(sps [j]);
+                               int end_row, end_column = -1;
+
+                               end_row = read_leb128 (ptr, &ptr);
+                               if (end_row != 0xffffff) {
+                                       end_row += GPOINTER_TO_UINT (g_ptr_array_index (line_number_array, i));
+                                       end_column = read_leb128 (ptr, &ptr);
+                                       if (!GPOINTER_TO_UINT (g_ptr_array_index (hidden_array, i))) {
+                                               sp->end_line = end_row;
+                                               sp->end_column = end_column;
+                                               j++;
+                                       }
+                               }
+                       }
+               }
        }
 
        g_ptr_array_free (il_offset_array, TRUE);
@@ -729,35 +720,6 @@ mono_debug_symfile_get_line_numbers_full (MonoDebugMethodInfo *minfo, char **sou
        return;
 }
 
-/*
- * mono_debug_symfile_get_line_numbers:
- *
- *   All the output parameters can be NULL.
- */ 
-void
-mono_debug_symfile_get_line_numbers (MonoDebugMethodInfo *minfo, char **source_file, int *n_il_offsets, int **il_offsets, int **line_numbers)
-{
-       mono_debug_symfile_get_line_numbers_full (minfo, source_file, NULL, n_il_offsets, il_offsets, line_numbers, NULL, NULL, NULL, NULL);
-}
-       
-int32_t
-_mono_debug_address_from_il_offset (MonoDebugMethodJitInfo *jit, uint32_t il_offset)
-{
-       int i;
-
-       if (!jit || !jit->line_numbers)
-               return -1;
-
-       for (i = jit->num_line_numbers - 1; i >= 0; i--) {
-               MonoDebugLineNumberEntry lne = jit->line_numbers [i];
-
-               if (lne.il_offset <= il_offset)
-                       return lne.native_offset;
-       }
-
-       return 0;
-}
-
 static int
 compare_method (const void *key, const void *object)
 {
@@ -872,20 +834,3 @@ mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo)
 
        return res;
 }
-
-/*
- * mono_debug_symfile_free_locals:
- *
- *   Free all the data allocated by mono_debug_symfile_lookup_locals ().
- */
-void
-mono_debug_symfile_free_locals (MonoDebugLocalsInfo *info)
-{
-       int i;
-
-       for (i = 0; i < info->num_locals; ++i)
-               g_free (info->locals [i].name);
-       g_free (info->locals);
-       g_free (info->code_blocks);
-       g_free (info);
-}
index 6d9a3c20d34b988dc34f4dd17dde9cd6d78e038c..684168994b43e3f6952476f075fa02a230fea3f7 100644 (file)
@@ -116,6 +116,12 @@ typedef struct {
        guint8 *guid, *hash;
 } MonoDebugSourceInfo;
 
+typedef struct {
+       int il_offset;
+       int line, column;
+       int end_line, end_column;
+} MonoSymSeqPoint;
+
 #define MONO_SYMBOL_FILE_MAJOR_VERSION         50
 #define MONO_SYMBOL_FILE_MINOR_VERSION         0
 #define MONO_SYMBOL_FILE_MAGIC                 0x45e82623fd7fa614ULL
@@ -141,10 +147,6 @@ mono_debug_symfile_lookup_location (MonoDebugMethodInfo      *minfo,
 MONO_API void
 mono_debug_symfile_free_location   (MonoDebugSourceLocation  *location);
 
-int32_t
-_mono_debug_address_from_il_offset (MonoDebugMethodJitInfo   *jit,
-                                   uint32_t                  il_offset);
-
 MONO_API MonoDebugMethodInfo *
 mono_debug_symfile_lookup_method   (MonoDebugHandle          *handle,
                                    MonoMethod               *method);
@@ -152,14 +154,8 @@ mono_debug_symfile_lookup_method   (MonoDebugHandle          *handle,
 MONO_API MonoDebugLocalsInfo*
 mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo);
 
-MONO_API void
-mono_debug_symfile_free_locals (MonoDebugLocalsInfo *info);
-
-MONO_API void
-mono_debug_symfile_get_line_numbers (MonoDebugMethodInfo *minfo, char **source_file, int *n_il_offsets, int **il_offsets, int **line_numbers);
-
-MONO_API void
-mono_debug_symfile_get_line_numbers_full (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int *n_il_offsets, int **il_offsets, int **line_numbers, int **column_numbers, int **source_files, int **end_line_numbers, int **end_column_numbers);
+void
+mono_debug_symfile_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points);
 
 gboolean
 mono_debug_image_has_debug_info (MonoImage *image);
index 47a4ed06ca805dbd598e47cb196a27f210192d64..9330f0fb57b5bb2d6f3d7212a1850ef948fb3333 100644 (file)
@@ -55,8 +55,13 @@ static const uint32_t ten_to_ten_div_4 = 2500000000U;
 #define DECIMAL_LO32(dec)        ((dec).v.v.Lo32)
 #define DECIMAL_MID32(dec)       ((dec).v.v.Mid32)
 #define DECIMAL_HI32(dec)        ((dec).Hi32)
-#define DECIMAL_LO64_GET(dec)    ((dec).v.Lo64)
-#define DECIMAL_LO64_SET(dec,value)   {(dec).v.Lo64 = value; }
+#if G_BYTE_ORDER != G_LITTLE_ENDIAN
+# define DECIMAL_LO64_GET(dec)   (((uint64_t)((dec).v.v.Mid32) << 32) | (dec).v.v.Lo32)
+# define DECIMAL_LO64_SET(dec,value)   {(dec).v.v.Lo32 = (value); (dec).v.v.Mid32 = ((value) >> 32); }
+#else
+# define DECIMAL_LO64_GET(dec)    ((dec).v.Lo64)
+# define DECIMAL_LO64_SET(dec,value)   {(dec).v.Lo64 = value; }
+#endif
 
 #define DECIMAL_SETZERO(dec) {DECIMAL_LO32(dec) = 0; DECIMAL_MID32(dec) = 0; DECIMAL_HI32(dec) = 0; DECIMAL_SIGNSCALE(dec) = 0;}
 #define COPYDEC(dest, src) {DECIMAL_SIGNSCALE(dest) = DECIMAL_SIGNSCALE(src); DECIMAL_HI32(dest) = DECIMAL_HI32(src); \
@@ -2215,6 +2220,8 @@ mono_decimal_compare (MonoDecimal *left, MonoDecimal *right)
        uint32_t   right_sign;
        MonoDecimal result;
 
+       result.Hi32 = 0;        // Just to shut up the compiler
+
        // First check signs and whether either are zero.  If both are
        // non-zero and of the same sign, just use subtraction to compare.
        //
index 317db53276f91980f8cdc758f9a9fac8d589b570..ac694af2f1831a3ae9d2cd848d79558df67256e2 100644 (file)
@@ -184,21 +184,17 @@ typedef struct
 } MonoArchEHJitInfo;
 
 typedef struct {
-       gboolean    cas_inited:1;
-       gboolean    cas_class_assert:1;
-       gboolean    cas_class_deny:1;
-       gboolean    cas_class_permitonly:1;
-       gboolean    cas_method_assert:1;
-       gboolean    cas_method_deny:1;
-       gboolean    cas_method_permitonly:1;
-} MonoMethodCasInfo;
+       /* Relative to code_start */
+       int thunks_offset;
+       int thunks_size;
+} MonoThunkJitInfo;
 
 typedef enum {
        JIT_INFO_NONE = 0,
-       JIT_INFO_HAS_CAS_INFO = (1 << 0),
-       JIT_INFO_HAS_GENERIC_JIT_INFO = (1 << 1),
-       JIT_INFO_HAS_TRY_BLOCK_HOLES = (1 << 2),
-       JIT_INFO_HAS_ARCH_EH_INFO = (1 << 3)
+       JIT_INFO_HAS_GENERIC_JIT_INFO = (1 << 0),
+       JIT_INFO_HAS_TRY_BLOCK_HOLES = (1 << 1),
+       JIT_INFO_HAS_ARCH_EH_INFO = (1 << 2),
+       JIT_INFO_HAS_THUNK_INFO = (1 << 3)
 } MonoJitInfoFlags;
 
 struct _MonoJitInfo {
@@ -210,6 +206,7 @@ struct _MonoJitInfo {
                MonoMethod *method;
                MonoImage *image;
                gpointer aot_info;
+               gpointer tramp_info;
        } d;
        struct _MonoJitInfo *next_jit_code_hash;
        gpointer    code_start;
@@ -218,10 +215,10 @@ struct _MonoJitInfo {
        guint32     num_clauses:15;
        /* Whenever the code is domain neutral or 'shared' */
        gboolean    domain_neutral:1;
-       gboolean    has_cas_info:1;
        gboolean    has_generic_jit_info:1;
        gboolean    has_try_block_holes:1;
        gboolean    has_arch_eh_info:1;
+       gboolean    has_thunk_info:1;
        gboolean    from_aot:1;
        gboolean    from_llvm:1;
        gboolean    dbg_attrs_inited:1;
@@ -230,6 +227,11 @@ struct _MonoJitInfo {
        gboolean    async:1;
        gboolean    dbg_step_through:1;
        gboolean    dbg_non_user_code:1;
+       /*
+        * Whenever this jit info refers to a trampoline.
+        * d.tramp_info contains additional data in this case.
+        */
+       gboolean    is_trampoline:1;
 
        /* FIXME: Embed this after the structure later*/
        gpointer    gc_info; /* Currently only used by SGen */
@@ -238,6 +240,7 @@ struct _MonoJitInfo {
        /* There is an optional MonoGenericJitInfo after the clauses */
        /* There is an optional MonoTryBlockHoleTableJitInfo after MonoGenericJitInfo clauses*/
        /* There is an optional MonoArchEHJitInfo after MonoTryBlockHoleTableJitInfo */
+       /* There is an optional MonoThunkJitInfo after MonoArchEHJitInfo */
 };
 
 #define MONO_SIZEOF_JIT_INFO (offsetof (struct _MonoJitInfo, clauses))
@@ -544,8 +547,8 @@ mono_jit_info_get_try_block_hole_table_info (MonoJitInfo *ji);
 MonoArchEHJitInfo*
 mono_jit_info_get_arch_eh_info (MonoJitInfo *ji);
 
-MonoMethodCasInfo*
-mono_jit_info_get_cas_info (MonoJitInfo *ji);
+MonoThunkJitInfo*
+mono_jit_info_get_thunk_info (MonoJitInfo *ji);
 
 /* 
  * Installs a new function which is used to return a MonoJitInfo for a method inside
@@ -685,7 +688,7 @@ void mono_reflection_cleanup_domain (MonoDomain *domain);
 
 void mono_assembly_cleanup_domain_bindings (guint32 domain_id);
 
-MonoJitInfo* mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_aot);
+MonoJitInfo* mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_aot, gboolean allow_trampolines);
 
 void mono_enable_debug_domain_unload (gboolean enable);
 
index 801d58e41629f0b6beefca40b87d97271b9d2ba1..f022b5764970c4a0210ad8b9d8aac7447d93c91a 100755 (executable)
@@ -600,9 +600,6 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
        }
        mono_defaults.corlib = mono_assembly_get_image (ass);
 
-       /* might be NULL if System.dll is not yet loaded */
-       mono_defaults.system = mono_image_loaded ("System");
-
        mono_defaults.object_class = mono_class_from_name (
                 mono_defaults.corlib, "System", "Object");
        g_assert (mono_defaults.object_class != 0);
@@ -716,6 +713,10 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
                 mono_defaults.corlib, "System", "MonoType");
        g_assert (mono_defaults.monotype_class != 0);
 
+       mono_defaults.runtimetype_class = mono_class_from_name (
+                mono_defaults.corlib, "System", "RuntimeType");
+       g_assert (mono_defaults.runtimetype_class != 0);
+
        mono_defaults.exception_class = mono_class_from_name (
                 mono_defaults.corlib, "System", "Exception");
        g_assert (mono_defaults.exception_class != 0);
@@ -1875,27 +1876,6 @@ mono_get_runtime_info (void)
        return current_runtime;
 }
 
-gchar *
-mono_debugger_check_runtime_version (const char *filename)
-{
-       const MonoRuntimeInfo* runtimes [G_N_ELEMENTS (supported_runtimes) + 1];
-       const MonoRuntimeInfo *rinfo;
-       MonoImage *image;
-
-       get_runtimes_from_exe (filename, &image, runtimes);
-       rinfo = runtimes [0];
-
-       if (!rinfo)
-               return g_strdup_printf ("Cannot get runtime version from assembly `%s'", filename);
-
-       if (rinfo != current_runtime)
-               return g_strdup_printf ("The Mono Debugger is currently using the `%s' runtime, but "
-                                       "the assembly `%s' requires version `%s'", current_runtime->runtime_version,
-                                       filename, rinfo->runtime_version);
-
-       return NULL;
-}
-
 /**
  * mono_framework_version:
  *
@@ -1922,9 +1902,9 @@ mono_get_aot_cache_config (void)
 void
 mono_domain_lock (MonoDomain *domain)
 {
-       MONO_PREPARE_BLOCKING
+       MONO_TRY_BLOCKING
        mono_locks_acquire (&(domain)->lock, DomainLock);
-       MONO_FINISH_BLOCKING
+       MONO_FINISH_TRY_BLOCKING
 }
 
 void
index e4b2bd75d6d38df474fa2cb11d08c8351c8ab3a2..227b3cc96971a800e71c7a85bae27f3c8dcd2859 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <config.h>
 
-#ifndef TARGET_WIN32
+#ifndef HOST_WIN32
 
 #include <glib.h>
 #include <string.h>
index 78203ad47a81c5b53c252604e07d0f65e6ec3f05..56d598ee7f21523345f5187b5f8e09cf00eab753 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <config.h>
 
-#ifdef TARGET_WIN32
+#ifdef HOST_WIN32
 
 #include <glib.h>
 #include <string.h>
index 956ed92b73f305ec94da20bc76147853dfad3204..167e5f71ee0a88c3a073d87405a1598c9b5134bd 100644 (file)
 #include <glib.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/sgen/gc-internal-agnostic.h>
 #include <mono/utils/gc_wrapper.h>
 
-typedef struct {
-       guint minor_gc_count;
-       guint major_gc_count;
-       guint64 minor_gc_time;
-       guint64 major_gc_time;
-       guint64 major_gc_time_concurrent;
-} GCStats;
-
 #define mono_domain_finalizers_lock(domain) mono_mutex_lock (&(domain)->finalizable_objects_hash_lock);
 #define mono_domain_finalizers_unlock(domain) mono_mutex_unlock (&(domain)->finalizable_objects_hash_lock);
 
@@ -71,8 +64,6 @@ typedef struct {
 /* useful until we keep track of gc-references in corlib etc. */
 #define IS_GC_REFERENCE(t) (mono_gc_is_moving () ? FALSE : ((t)->type == MONO_TYPE_U && class->image == mono_defaults.corlib))
 
-extern GCStats gc_stats;
-
 void   mono_object_register_finalizer               (MonoObject  *obj);
 void   ves_icall_System_GC_InternalCollect          (int          generation);
 gint64 ves_icall_System_GC_GetTotalMemory           (MonoBoolean  forceCollection);
@@ -100,12 +91,6 @@ extern void mono_gc_cleanup (void);
  */
 extern gboolean mono_gc_is_gc_thread (void);
 
-/*
- * Try to register a foreign thread with the GC, if we fail or the backend
- * can't cope with this concept - we return FALSE.
- */
-extern gboolean mono_gc_register_thread (void *baseptr);
-
 extern gboolean mono_gc_is_finalizer_internal_thread (MonoInternalThread *thread);
 
 extern void mono_gc_set_stack_end (void *stack_end);
@@ -113,10 +98,10 @@ extern void mono_gc_set_stack_end (void *stack_end);
 /* only valid after the RECLAIM_START GC event and before RECLAIM_END
  * Not exported in public headers, but can be linked to (unsupported).
  */
-extern MONO_API gboolean mono_object_is_alive (MonoObject* obj);
-extern MONO_API gboolean mono_gc_is_finalizer_thread (MonoThread *thread);
-extern MONO_API gpointer mono_gc_out_of_memory (size_t size);
-extern MONO_API void     mono_gc_enable_events (void);
+gboolean mono_object_is_alive (MonoObject* obj);
+gboolean mono_gc_is_finalizer_thread (MonoThread *thread);
+gpointer mono_gc_out_of_memory (size_t size);
+void     mono_gc_enable_events (void);
 
 /* disappearing link functionality */
 void        mono_gc_weak_link_add    (void **link_addr, MonoObject *obj, gboolean track);
@@ -130,13 +115,7 @@ gboolean    mono_gc_ephemeron_array_add (MonoObject *obj);
 gboolean    mono_gc_set_allow_synchronous_major (gboolean flag);
 
 MonoBoolean
-GCHandle_CheckCurrentDomain (guint32 gchandle);
-
-/* simple interface for data structures needed in the runtime */
-void* mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits);
-
-/* Return a root descriptor for a root with all refs */
-void* mono_gc_make_root_descr_all_refs (int numbits);
+mono_gc_GCHandle_CheckCurrentDomain (guint32 gchandle);
 
 /* User defined marking function */
 /* It should work like this:
@@ -147,7 +126,7 @@ typedef void (*MonoGCMarkFunc)     (void **addr, void *gc_data);
 typedef void (*MonoGCRootMarkFunc) (void *addr, MonoGCMarkFunc mark_func, void *gc_data);
 
 /* Create a descriptor with a user defined marking function */
-MONO_API void *mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
+void *mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
 
 /* Return whenever user defined marking functions are supported */
 gboolean mono_gc_user_markers_supported (void);
@@ -179,8 +158,6 @@ void* mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_lengt
 void* mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uintptr_t bounds_size);
 void* mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len);
 void* mono_gc_make_descr_for_string (gsize *bitmap, int numbits);
-void* mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size);
-void* mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_t elem_size);
 
 void  mono_gc_register_for_finalization (MonoObject *obj, void *user_data);
 void  mono_gc_add_memory_pressure (gint64 value);
@@ -271,6 +248,11 @@ typedef struct {
         *   using precise marking by calling mono_gc_scan_object ().
         */
        void (*thread_mark_func) (gpointer user_data, guint8 *stack_start, guint8 *stack_end, gboolean precise, void *gc_data);
+       /*
+        * Function called for debugging to get the current managed method for
+        * tracking the provenances of objects.
+        */
+       gpointer (*get_provenance_func) (void);
 } MonoGCCallbacks;
 
 /* Set the callback functions callable by the GC */
@@ -285,9 +267,6 @@ void mono_gc_conservatively_scan_area (void *start, void *end);
 /* Scan OBJ, returning its new address */
 void *mono_gc_scan_object (void *obj, void *gc_data);
 
-/* Return the bitmap encoded by a descriptor */
-gsize* mono_gc_get_bitmap_for_descr (void *descr, int *numbits);
-
 /* Return the suspend signal number used by the GC to suspend threads,
    or -1 if not applicable. */
 int mono_gc_get_suspend_signal (void);
@@ -338,12 +317,8 @@ void mono_gc_register_mach_exception_thread (pthread_t thread);
 pthread_t mono_gc_get_mach_exception_thread (void);
 #endif
 
-gboolean mono_gc_parse_environment_string_extract_number (const char *str, size_t *out);
-
 gboolean mono_gc_precise_stack_mark_enabled (void);
 
-FILE *mono_gc_get_logfile (void);
-
 typedef struct _RefQueueEntry RefQueueEntry;
 
 struct _RefQueueEntry {
@@ -378,15 +353,6 @@ MONO_API void mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *ca
 BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved);
 #endif
 
-/*
-Those functions must be used when it's possible that either destination is not
-word aligned or size is not a multiple of word size.
-*/
-void mono_gc_bzero_atomic (void *dest, size_t size);
-void mono_gc_bzero_aligned (void *dest, size_t size);
-void mono_gc_memmove_atomic (void *dest, const void *src, size_t size);
-void mono_gc_memmove_aligned (void *dest, const void *src, size_t size);
-
 guint mono_gc_get_vtable_bits (MonoClass *klass);
 
 void mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size);
diff --git a/mono/metadata/gc-memfuncs.c b/mono/metadata/gc-memfuncs.c
deleted file mode 100644 (file)
index 1b3d6b2..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * test-sgen-qsort.c: Our own bzero/memmove.
- *
- * Copyright (C) 2013 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * SGen cannot deal with invalid pointers on the heap or in registered roots.  Sometimes we
- * need to copy or zero out memory in code that might be interrupted by collections.  To
- * guarantee that those operations will not result in invalid pointers, we must do it
- * word-atomically.
- *
- * libc's bzero() and memcpy()/memmove() functions do not guarantee word-atomicity, even in
- * cases where one would assume so.  For instance, some implementations (like Darwin's on
- * x86) have variants of memcpy() using vector instructions.  Those may copy bytewise for
- * the region preceding the first vector-aligned address.  That region could be
- * word-aligned, but it would still be copied byte-wise.
- *
- * All our memory writes here are to "volatile" locations.  This is so that C compilers
- * don't "optimize" our code back to calls to bzero()/memmove().  LLVM, specifically, will
- * do that.
- */
-
-#include <config.h>
-
-#include "metadata/gc-internal.h"
-
-#define ptr_mask ((sizeof (void*) - 1))
-#define _toi(ptr) ((size_t)ptr)
-#define unaligned_bytes(ptr) (_toi(ptr) & ptr_mask)
-#define align_down(ptr) ((void*)(_toi(ptr) & ~ptr_mask))
-#define align_up(ptr) ((void*) ((_toi(ptr) + ptr_mask) & ~ptr_mask))
-#if SIZEOF_VOID_P == 4
-#define bytes_to_words(n)      ((size_t)(n) >> 2)
-#elif SIZEOF_VOID_P == 8
-#define bytes_to_words(n)      ((size_t)(n) >> 3)
-#else
-#error We only support 32 and 64 bit architectures.
-#endif
-
-#define BZERO_WORDS(dest,words) do {                   \
-               void * volatile *__d = (void* volatile*)(dest);         \
-               int __n = (words);                      \
-               int __i;                                \
-               for (__i = 0; __i < __n; ++__i)         \
-                       __d [__i] = NULL;               \
-       } while (0)
-
-
-/**
- * mono_gc_bzero_aligned:
- * @dest: address to start to clear
- * @size: size of the region to clear
- *
- * Zero @size bytes starting at @dest.
- * The address of @dest MUST be aligned to word boundaries
- *
- * FIXME borrow faster code from some BSD libc or bionic
- */
-void
-mono_gc_bzero_aligned (void *dest, size_t size)
-{
-       volatile char *d = (char*)dest;
-       size_t tail_bytes, word_bytes;
-
-       g_assert (unaligned_bytes (dest) == 0);
-
-       /* copy all words with memmove */
-       word_bytes = (size_t)align_down (size);
-       switch (word_bytes) {
-       case sizeof (void*) * 1:
-               BZERO_WORDS (d, 1);
-               break;
-       case sizeof (void*) * 2:
-               BZERO_WORDS (d, 2);
-               break;
-       case sizeof (void*) * 3:
-               BZERO_WORDS (d, 3);
-               break;
-       case sizeof (void*) * 4:
-               BZERO_WORDS (d, 4);
-               break;
-       default:
-               BZERO_WORDS (d, bytes_to_words (word_bytes));
-       }
-
-       tail_bytes = unaligned_bytes (size);
-       if (tail_bytes) {
-               d += word_bytes;
-               do {
-                       *d++ = 0;
-               } while (--tail_bytes);
-       }
-}
-
-/**
- * mono_gc_bzero_atomic:
- * @dest: address to start to clear
- * @size: size of the region to clear
- *
- * Zero @size bytes starting at @dest.
- *
- * Use this to zero memory without word tearing when dest is aligned.
- */
-void
-mono_gc_bzero_atomic (void *dest, size_t size)
-{
-       if (unaligned_bytes (dest))
-               memset (dest, 0, size);
-       else
-               mono_gc_bzero_aligned (dest, size);
-}
-
-#define MEMMOVE_WORDS_UPWARD(dest,src,words) do {      \
-               void * volatile *__d = (void* volatile*)(dest);         \
-               void **__s = (void**)(src);             \
-               int __n = (int)(words);                 \
-               int __i;                                \
-               for (__i = 0; __i < __n; ++__i)         \
-                       __d [__i] = __s [__i];          \
-       } while (0)
-
-#define MEMMOVE_WORDS_DOWNWARD(dest,src,words) do {    \
-               void * volatile *__d = (void* volatile*)(dest);         \
-               void **__s = (void**)(src);             \
-               int __n = (int)(words);                 \
-               int __i;                                \
-               for (__i = __n - 1; __i >= 0; --__i)    \
-                       __d [__i] = __s [__i];          \
-       } while (0)
-
-
-/**
- * mono_gc_memmove_aligned:
- * @dest: destination of the move
- * @src: source
- * @size: size of the block to move
- *
- * Move @size bytes from @src to @dest.
- *
- * Use this to copy memory without word tearing when both pointers are aligned
- */void
-mono_gc_memmove_aligned (void *dest, const void *src, size_t size)
-{
-       g_assert (unaligned_bytes (dest) == 0);
-       g_assert (unaligned_bytes (src) == 0);
-
-       /*
-       If we're copying less than a word we don't need to worry about word tearing
-       so we bailout to memmove early.
-       */
-       if (size < sizeof(void*)) {
-               memmove (dest, src, size);
-               return;
-       }
-
-       /*
-        * A bit of explanation on why we align only dest before doing word copies.
-        * Pointers to managed objects must always be stored in word aligned addresses, so
-        * even if dest is misaligned, src will be by the same amount - this ensure proper atomicity of reads.
-        *
-        * We don't need to case when source and destination have different alignments since we only do word stores
-        * using memmove, which must handle it.
-        */
-       if (dest > src && ((size_t)((char*)dest - (char*)src) < size)) { /*backward copy*/
-                       volatile char *p = (char*)dest + size;
-                       char *s = (char*)src + size;
-                       char *start = (char*)dest;
-                       char *align_end = MAX((char*)dest, (char*)align_down (p));
-                       char *word_start;
-                       size_t bytes_to_memmove;
-
-                       while (p > align_end)
-                               *--p = *--s;
-
-                       word_start = align_up (start);
-                       bytes_to_memmove = p - word_start;
-                       p -= bytes_to_memmove;
-                       s -= bytes_to_memmove;
-                       MEMMOVE_WORDS_DOWNWARD (p, s, bytes_to_words (bytes_to_memmove));
-       } else {
-               volatile char *d = (char*)dest;
-               const char *s = (const char*)src;
-               size_t tail_bytes;
-
-               /* copy all words with memmove */
-               MEMMOVE_WORDS_UPWARD (d, s, bytes_to_words (align_down (size)));
-
-               tail_bytes = unaligned_bytes (size);
-               if (tail_bytes) {
-                       d += (size_t)align_down (size);
-                       s += (size_t)align_down (size);
-                       do {
-                               *d++ = *s++;
-                       } while (--tail_bytes);
-               }
-       }
-}
-
-/**
- * mono_gc_memmove_atomic:
- * @dest: destination of the move
- * @src: source
- * @size: size of the block to move
- *
- * Move @size bytes from @src to @dest.
- *
- * Use this to copy memory without word tearing when both pointers are aligned
- */
-void
-mono_gc_memmove_atomic (void *dest, const void *src, size_t size)
-{
-       if (unaligned_bytes (_toi (dest) | _toi (src)))
-               memmove (dest, src, size);
-       else
-               mono_gc_memmove_aligned (dest, src, size);
-}
diff --git a/mono/metadata/gc-stats.c b/mono/metadata/gc-stats.c
new file mode 100644 (file)
index 0000000..20e7cae
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * gc-stats.c: GC statistics.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "mono/sgen/gc-internal-agnostic.h"
+
+/*
+ * Due to a bug in the linker on Darwin we need to initialize this struct, or there will be
+ * "undefined symbol" errors.
+ */
+GCStats gc_stats = {};
index 30179bd9fbaa61bd00f982b0db376fcd16b1ebbd..05e440cff6474a8493a80d175c329895d640745c 100644 (file)
@@ -11,7 +11,6 @@
 #include <config.h>
 #include <glib.h>
 #include <string.h>
-#include <errno.h>
 
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/mono-gc.h>
@@ -26,7 +25,7 @@
 #include <mono/metadata/threadpool.h>
 #include <mono/metadata/threadpool-internals.h>
 #include <mono/metadata/threads-types.h>
-#include <mono/metadata/sgen-conf.h>
+#include <mono/sgen/sgen-conf.h>
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/marshal.h> /* for mono_delegate_free_ftnptr () */
@@ -35,6 +34,7 @@
 #include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-counters.h>
+#include <mono/utils/mono-time.h>
 #include <mono/utils/dtrace.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/atomic.h>
@@ -70,6 +70,10 @@ static mono_mutex_t reference_queue_mutex;
 static GSList *domains_to_finalize= NULL;
 static MonoMList *threads_to_finalize = NULL;
 
+static gboolean finalizer_thread_exited;
+/* Uses finalizer_mutex */
+static mono_cond_t exited_cond;
+
 static MonoInternalThread *gc_thread;
 
 static void object_register_finalizer (MonoObject *obj, void (*callback)(void *, void*));
@@ -81,10 +85,19 @@ static void mono_reference_queue_cleanup (void);
 static void reference_queue_clear_for_domain (MonoDomain *domain);
 #ifndef HAVE_NULL_GC
 static HANDLE pending_done_event;
-static HANDLE shutdown_event;
 #endif
 
-GCStats gc_stats;
+static guint32
+guarded_wait (HANDLE handle, guint32 timeout, gboolean alertable)
+{
+       guint32 result;
+
+       MONO_PREPARE_BLOCKING
+       result = WaitForSingleObjectEx (handle, timeout, alertable);
+       MONO_FINISH_BLOCKING
+
+       return result;
+}
 
 static void
 add_thread_to_finalize (MonoInternalThread *thread)
@@ -399,7 +412,7 @@ mono_domain_finalize (MonoDomain *domain, guint32 timeout)
                timeout = INFINITE;
 
        while (TRUE) {
-               res = WaitForSingleObjectEx (done_event, timeout, TRUE);
+               res = guarded_wait (done_event, timeout, TRUE);
                /* printf ("WAIT RES: %d.\n", res); */
 
                if (res == WAIT_IO_COMPLETION) {
@@ -497,7 +510,7 @@ ves_icall_System_GC_WaitForPendingFinalizers (void)
        ResetEvent (pending_done_event);
        mono_gc_finalize_notify ();
        /* g_print ("Waiting for pending finalizers....\n"); */
-       WaitForSingleObjectEx (pending_done_event, INFINITE, TRUE);
+       guarded_wait (pending_done_event, INFINITE, TRUE);
        /* g_print ("Done pending....\n"); */
 #endif
 }
@@ -977,7 +990,7 @@ mono_gchandle_free_domain (MonoDomain *domain)
 }
 
 MonoBoolean
-GCHandle_CheckCurrentDomain (guint32 gchandle)
+mono_gc_GCHandle_CheckCurrentDomain (guint32 gchandle)
 {
        return mono_gchandle_is_in_domain (gchandle, mono_domain_get ());
 }
@@ -1086,6 +1099,7 @@ finalizer_thread (gpointer unused)
 
                g_assert (mono_domain_get () == mono_get_root_domain ());
                mono_gc_set_skip_thread (TRUE);
+               MONO_PREPARE_BLOCKING
 
                if (wait) {
                /* An alertable wait is required so this thread can be suspended on windows */
@@ -1096,6 +1110,7 @@ finalizer_thread (gpointer unused)
 #endif
                }
                wait = TRUE;
+               MONO_FINISH_BLOCKING
                mono_gc_set_skip_thread (FALSE);
 
                mono_threads_perform_thread_dump ();
@@ -1140,7 +1155,11 @@ finalizer_thread (gpointer unused)
 #endif
        }
 
-       SetEvent (shutdown_event);
+       mono_finalizer_lock ();
+       finalizer_thread_exited = TRUE;
+       mono_cond_signal (&exited_cond);
+       mono_finalizer_unlock ();
+
        return 0;
 }
 
@@ -1180,11 +1199,10 @@ mono_gc_init (void)
        }
        
        finalizer_event = CreateEvent (NULL, FALSE, FALSE, NULL);
+       g_assert (finalizer_event);
        pending_done_event = CreateEvent (NULL, TRUE, FALSE, NULL);
-       shutdown_event = CreateEvent (NULL, TRUE, FALSE, NULL);
-       if (finalizer_event == NULL || pending_done_event == NULL || shutdown_event == NULL) {
-               g_assert_not_reached ();
-       }
+       g_assert (pending_done_event);
+       mono_cond_init (&exited_cond, 0);
 #ifdef MONO_HAS_SEMAPHORES
        MONO_SEM_INIT (&finalizer_sem, 0);
 #endif
@@ -1202,15 +1220,32 @@ mono_gc_cleanup (void)
 #endif
 
        if (!gc_disabled) {
-               ResetEvent (shutdown_event);
                finished = TRUE;
                if (mono_thread_internal_current () != gc_thread) {
                        gboolean timed_out = FALSE;
+                       guint32 start_ticks = mono_msec_ticks ();
+                       guint32 end_ticks = start_ticks + 2000;
 
                        mono_gc_finalize_notify ();
                        /* Finishing the finalizer thread, so wait a little bit... */
                        /* MS seems to wait for about 2 seconds */
-                       if (WaitForSingleObjectEx (shutdown_event, 2000, FALSE) == WAIT_TIMEOUT) {
+                       while (!finalizer_thread_exited) {
+                               guint32 current_ticks = mono_msec_ticks ();
+                               guint32 timeout;
+
+                               if (current_ticks >= end_ticks)
+                                       break;
+                               else
+                                       timeout = end_ticks - current_ticks;
+                               MONO_PREPARE_BLOCKING;
+                               mono_finalizer_lock ();
+                               if (!finalizer_thread_exited)
+                                       mono_cond_timedwait_ms (&exited_cond, &finalizer_mutex, timeout);
+                               mono_finalizer_unlock ();
+                               MONO_FINISH_BLOCKING;
+                       }
+
+                       if (!finalizer_thread_exited) {
                                int ret;
 
                                /* Set a flag which the finalizer thread can check */
@@ -1220,7 +1255,7 @@ mono_gc_cleanup (void)
                                mono_thread_internal_stop (gc_thread);
 
                                /* Wait for it to stop */
-                               ret = WaitForSingleObjectEx (gc_thread->handle, 100, TRUE);
+                               ret = guarded_wait (gc_thread->handle, 100, TRUE);
 
                                if (ret == WAIT_TIMEOUT) {
                                        /* 
@@ -1237,7 +1272,7 @@ mono_gc_cleanup (void)
                                int ret;
 
                                /* Wait for the thread to actually exit */
-                               ret = WaitForSingleObjectEx (gc_thread->handle, INFINITE, TRUE);
+                               ret = guarded_wait (gc_thread->handle, INFINITE, TRUE);
                                g_assert (ret == WAIT_OBJECT_0);
 
                                mono_thread_join (GUINT_TO_POINTER (gc_thread->tid));
@@ -1314,76 +1349,6 @@ mono_gc_get_mach_exception_thread (void)
 }
 #endif
 
-/**
- * mono_gc_parse_environment_string_extract_number:
- *
- * @str: points to the first digit of the number
- * @out: pointer to the variable that will receive the value
- *
- * Tries to extract a number from the passed string, taking in to account m, k
- * and g suffixes
- *
- * Returns true if passing was successful
- */
-gboolean
-mono_gc_parse_environment_string_extract_number (const char *str, size_t *out)
-{
-       char *endptr;
-       int len = strlen (str), shift = 0;
-       size_t val;
-       gboolean is_suffix = FALSE;
-       char suffix;
-
-       if (!len)
-               return FALSE;
-
-       suffix = str [len - 1];
-
-       switch (suffix) {
-               case 'g':
-               case 'G':
-                       shift += 10;
-               case 'm':
-               case 'M':
-                       shift += 10;
-               case 'k':
-               case 'K':
-                       shift += 10;
-                       is_suffix = TRUE;
-                       break;
-               default:
-                       if (!isdigit (suffix))
-                               return FALSE;
-                       break;
-       }
-
-       errno = 0;
-       val = strtol (str, &endptr, 10);
-
-       if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
-                       || (errno != 0 && val == 0) || (endptr == str))
-               return FALSE;
-
-       if (is_suffix) {
-               size_t unshifted;
-
-               if (val < 0)    /* negative numbers cannot be suffixed */
-                       return FALSE;
-               if (*(endptr + 1)) /* Invalid string. */
-                       return FALSE;
-
-               unshifted = (size_t)val;
-               val <<= shift;
-               if (val < 0)    /* overflow */
-                       return FALSE;
-               if (((size_t)val >> shift) != unshifted) /* value too large */
-                       return FALSE;
-       }
-
-       *out = val;
-       return TRUE;
-}
-
 #ifndef HAVE_SGEN_GC
 void*
 mono_gc_alloc_mature (MonoVTable *vtable)
index 87bb85e566447bb2dec2f28fb270b6035a4fb0e1..1f65a7b2cc49311ee0da89c5a6eb4b2c672f4bbe 100644 (file)
@@ -105,10 +105,10 @@ ICALL(ARRAY_12, "SetValue",         ves_icall_System_Array_SetValue)
 ICALL(ARRAY_13, "SetValueImpl",     ves_icall_System_Array_SetValueImpl)
 
 ICALL_TYPE(BUFFER, "System.Buffer", BUFFER_1)
-ICALL(BUFFER_1, "BlockCopyInternal", ves_icall_System_Buffer_BlockCopyInternal)
-ICALL(BUFFER_2, "ByteLengthInternal", ves_icall_System_Buffer_ByteLengthInternal)
-ICALL(BUFFER_3, "GetByteInternal", ves_icall_System_Buffer_GetByteInternal)
-ICALL(BUFFER_4, "SetByteInternal", ves_icall_System_Buffer_SetByteInternal)
+ICALL(BUFFER_1, "InternalBlockCopy", ves_icall_System_Buffer_BlockCopyInternal)
+ICALL(BUFFER_2, "_ByteLength", ves_icall_System_Buffer_ByteLengthInternal)
+ICALL(BUFFER_3, "_GetByte", ves_icall_System_Buffer_GetByteInternal)
+ICALL(BUFFER_4, "_SetByte", ves_icall_System_Buffer_SetByteInternal)
 
 ICALL_TYPE (COMPO_W, "System.ComponentModel.Win32Exception", COMPO_W_1)
 ICALL (COMPO_W_1, "W32ErrorMessage", ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage)
@@ -129,9 +129,6 @@ ICALL(CONSOLE_3, "SetBreak", ves_icall_System_ConsoleDriver_SetBreak )
 ICALL(CONSOLE_4, "SetEcho", ves_icall_System_ConsoleDriver_SetEcho )
 ICALL(CONSOLE_5, "TtySetup", ves_icall_System_ConsoleDriver_TtySetup )
 
-ICALL_TYPE(TZONE, "System.CurrentSystemTimeZone", TZONE_1)
-ICALL(TZONE_1, "GetTimeZoneData", ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData)
-
 ICALL_TYPE(DTIME, "System.DateTime", DTIME_1)
 ICALL(DTIME_1, "GetSystemTimeAsFileTime", mono_100ns_datetime)
 
@@ -153,8 +150,8 @@ ICALL(DECIMAL_13, "ToSingle", mono_decimal_to_float)
 #endif
 
 ICALL_TYPE(DELEGATE, "System.Delegate", DELEGATE_1)
-ICALL(DELEGATE_1, "CreateDelegate_internal", ves_icall_System_Delegate_CreateDelegate_internal)
-ICALL(DELEGATE_2, "SetMulticastInvoke", ves_icall_System_Delegate_SetMulticastInvoke)
+ICALL(DELEGATE_1, "AllocDelegateLike_internal", ves_icall_System_Delegate_AllocDelegateLike_internal)
+ICALL(DELEGATE_2, "CreateDelegate_internal", ves_icall_System_Delegate_CreateDelegate_internal)
 
 ICALL_TYPE(DEBUGR, "System.Diagnostics.Debugger", DEBUGR_1)
 ICALL(DEBUGR_1, "IsAttached_internal", ves_icall_System_Diagnostics_Debugger_IsAttached_internal)
@@ -413,9 +410,6 @@ ICALL_TYPE(MAC_IFACE_PROPS, "System.Net.NetworkInformation.MacOsIPInterfacePrope
 ICALL(MAC_IFACE_PROPS_1, "ParseRouteInfo_internal", ves_icall_System_Net_NetworkInformation_MacOsIPInterfaceProperties_ParseRouteInfo_internal)
 #endif
 
-ICALL_TYPE(MSRWI, "System.Net.Sockets.MonoSocketRuntimeWorkItem", MSRWI_1)
-ICALL(MSRWI_1, "ExecuteWorkItem", ves_icall_System_Net_Sockets_MonoSocketRuntimeWorkItem_ExecuteWorkItem)
-
 ICALL_TYPE(SOCK, "System.Net.Sockets.Socket", SOCK_1)
 ICALL(SOCK_1, "Accept_internal(intptr,int&,bool)", ves_icall_System_Net_Sockets_Socket_Accept_internal)
 ICALL(SOCK_2, "Available_internal(intptr,int&)", ves_icall_System_Net_Sockets_Socket_Available_internal)
@@ -426,22 +420,22 @@ ICALL(SOCK_6, "Connect_internal(intptr,System.Net.SocketAddress,int&)", ves_ical
 ICALL (SOCK_6a, "Disconnect_internal(intptr,bool,int&)", ves_icall_System_Net_Sockets_Socket_Disconnect_internal)
 ICALL(SOCK_7, "GetSocketOption_arr_internal(intptr,System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,byte[]&,int&)", ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal)
 ICALL(SOCK_8, "GetSocketOption_obj_internal(intptr,System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,object&,int&)", ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal)
+ICALL(SOCK_21, "IOControl_internal(intptr,int,byte[],byte[],int&)", ves_icall_System_Net_Sockets_Socket_IOControl_internal)
 ICALL(SOCK_9, "Listen_internal(intptr,int,int&)", ves_icall_System_Net_Sockets_Socket_Listen_internal)
 ICALL(SOCK_10, "LocalEndPoint_internal(intptr,int,int&)", ves_icall_System_Net_Sockets_Socket_LocalEndPoint_internal)
 ICALL(SOCK_11, "Poll_internal", ves_icall_System_Net_Sockets_Socket_Poll_internal)
+ICALL(SOCK_13, "ReceiveFrom_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,System.Net.SocketAddress&,int&)", ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal)
 ICALL(SOCK_11a, "Receive_internal(intptr,System.Net.Sockets.Socket/WSABUF[],System.Net.Sockets.SocketFlags,int&)", ves_icall_System_Net_Sockets_Socket_Receive_array_internal)
 ICALL(SOCK_12, "Receive_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,int&)", ves_icall_System_Net_Sockets_Socket_Receive_internal)
-ICALL(SOCK_13, "RecvFrom_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,System.Net.SocketAddress&,int&)", ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
 ICALL(SOCK_14, "RemoteEndPoint_internal(intptr,int,int&)", ves_icall_System_Net_Sockets_Socket_RemoteEndPoint_internal)
 ICALL(SOCK_15, "Select_internal(System.Net.Sockets.Socket[]&,int,int&)", ves_icall_System_Net_Sockets_Socket_Select_internal)
-ICALL(SOCK_15a, "SendFile(intptr,string,byte[],byte[],System.Net.Sockets.TransmitFileOptions)", ves_icall_System_Net_Sockets_Socket_SendFile)
+ICALL(SOCK_15a, "SendFile_internal(intptr,string,byte[],byte[],System.Net.Sockets.TransmitFileOptions)", ves_icall_System_Net_Sockets_Socket_SendFile_internal)
 ICALL(SOCK_16, "SendTo_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,System.Net.SocketAddress,int&)", ves_icall_System_Net_Sockets_Socket_SendTo_internal)
 ICALL(SOCK_16a, "Send_internal(intptr,System.Net.Sockets.Socket/WSABUF[],System.Net.Sockets.SocketFlags,int&)", ves_icall_System_Net_Sockets_Socket_Send_array_internal)
 ICALL(SOCK_17, "Send_internal(intptr,byte[],int,int,System.Net.Sockets.SocketFlags,int&)", ves_icall_System_Net_Sockets_Socket_Send_internal)
 ICALL(SOCK_18, "SetSocketOption_internal(intptr,System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,object,byte[],int,int&)", ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal)
 ICALL(SOCK_19, "Shutdown_internal(intptr,System.Net.Sockets.SocketShutdown,int&)", ves_icall_System_Net_Sockets_Socket_Shutdown_internal)
 ICALL(SOCK_20, "Socket_internal(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,int&)", ves_icall_System_Net_Sockets_Socket_Socket_internal)
-ICALL(SOCK_21, "WSAIoctl(intptr,int,byte[],byte[],int&)", ves_icall_System_Net_Sockets_Socket_WSAIoctl)
 ICALL(SOCK_21a, "cancel_blocking_socket_operation", icall_cancel_blocking_socket_operation)
 ICALL(SOCK_22, "socket_pool_queue", icall_append_io_job)
 
@@ -599,10 +593,10 @@ ICALL(MGENCL_6, "register_with_runtime", mono_reflection_register_with_runtime)
 ICALL_TYPE(MGENM, "System.Reflection.MonoGenericMethod", MGENM_1)
 ICALL(MGENM_1, "get_ReflectedType", ves_icall_MonoGenericMethod_get_ReflectedType)
 
-ICALL_TYPE(MMETH, "System.Reflection.MonoMethod", MMETH_1)
-ICALL(MMETH_1, "GetDllImportAttribute", ves_icall_MonoMethod_GetDllImportAttribute)
+ICALL_TYPE(MMETH, "System.Reflection.MonoMethod", MMETH_2)
 ICALL(MMETH_2, "GetGenericArguments", ves_icall_MonoMethod_GetGenericArguments)
 ICALL(MMETH_3, "GetGenericMethodDefinition_impl", ves_icall_MonoMethod_GetGenericMethodDefinition)
+ICALL(MMETH_11, "GetPInvoke", ves_icall_MonoMethod_GetPInvoke)
 ICALL(MMETH_4, "InternalInvoke", ves_icall_InternalInvoke)
 ICALL(MMETH_5, "MakeGenericMethod_impl", mono_reflection_bind_generic_method_parameters)
 ICALL(MMETH_6, "get_IsGenericMethod", ves_icall_MonoMethod_get_IsGenericMethod)
@@ -640,7 +634,7 @@ ICALL(RUNH_5h, "SufficientExecutionStack", ves_icall_System_Runtime_CompilerServ
 ICALL(RUNH_6, "get_OffsetToStringData", ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_GetOffsetToStringData)
 
 ICALL_TYPE(GCH, "System.Runtime.InteropServices.GCHandle", GCH_1)
-ICALL(GCH_1, "CheckCurrentDomain", GCHandle_CheckCurrentDomain)
+ICALL(GCH_1, "CheckCurrentDomain", mono_gc_GCHandle_CheckCurrentDomain)
 ICALL(GCH_2, "FreeHandle", ves_icall_System_GCHandle_FreeHandle)
 ICALL(GCH_3, "GetAddrOfPinnedObject", ves_icall_System_GCHandle_GetAddrOfPinnedObject)
 ICALL(GCH_4, "GetTarget", ves_icall_System_GCHandle_GetTarget)
@@ -707,6 +701,12 @@ ICALL_TYPE(ACTS, "System.Runtime.Remoting.Activation.ActivationServices", ACTS_1
 ICALL(ACTS_1, "AllocateUninitializedClassInstance", ves_icall_System_Runtime_Activation_ActivationServices_AllocateUninitializedClassInstance)
 ICALL(ACTS_2, "EnableProxyActivation", ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation)
 
+ICALL_TYPE(CONTEXT, "System.Runtime.Remoting.Contexts.Context", CONTEXT_1)
+ICALL(CONTEXT_1, "RegisterContext", ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext)
+
+ICALL_TYPE(ARES, "System.Runtime.Remoting.Messaging.AsyncResult", ARES_1)
+ICALL(ARES_1, "Invoke", ves_icall_System_Runtime_Remoting_Messaging_AsyncResult_Invoke)
+
 ICALL_TYPE(MONOMM, "System.Runtime.Remoting.Messaging.MonoMethodMessage", MONOMM_1)
 ICALL(MONOMM_1, "InitMessage", ves_icall_MonoMethodMessage_InitMessage)
 
@@ -721,6 +721,10 @@ ICALL(REMSER_1, "InternalExecute", ves_icall_InternalExecute)
 ICALL(REMSER_2, "IsTransparentProxy", ves_icall_IsTransparentProxy)
 #endif
 
+ICALL_TYPE(RVH, "System.Runtime.Versioning.VersioningHelper", RVH_1)
+ICALL(RVH_1, "GetCurrentProcessId", ves_icall_System_Diagnostics_Process_GetPid_internal)
+ICALL(RVH_2, "GetRuntimeId", ves_icall_System_Runtime_Versioning_VersioningHelper_GetRuntimeId)
+
 ICALL_TYPE(RFH, "System.RuntimeFieldHandle", RFH_1)
 ICALL(RFH_1, "SetValueDirect", ves_icall_System_RuntimeFieldHandle_SetValueDirect)
 ICALL(RFH_2, "SetValueInternal", ves_icall_MonoField_SetValueInternal)
@@ -733,7 +737,7 @@ ICALL(RT_1, "CreateInstanceInternal", ves_icall_System_Activator_CreateInstanceI
 ICALL(RT_2, "GetConstructors_internal", ves_icall_Type_GetConstructors_internal)
 ICALL(RT_3, "GetEvents_internal", ves_icall_Type_GetEvents_internal)
 ICALL(RT_5, "GetFields_internal", ves_icall_Type_GetFields_internal)
-ICALL(RT_6, "GetGenericArguments", ves_icall_MonoType_GetGenericArguments)
+ICALL(RT_6, "GetGenericArgumentsInternal", ves_icall_MonoType_GetGenericArguments)
 ICALL(RT_7, "GetGenericParameterAttributes", ves_icall_Type_GetGenericParameterAttributes)
 ICALL(RT_8, "GetGenericParameterConstraints_impl", ves_icall_Type_GetGenericParameterConstraints)
 ICALL(RT_9, "GetGenericParameterPosition", ves_icall_Type_GetGenericParameterPosition)
@@ -744,6 +748,8 @@ ICALL(RT_13, "GetNestedTypes_internal", ves_icall_Type_GetNestedTypes)
 ICALL(RT_14, "GetPacking", ves_icall_Type_GetPacking)
 ICALL(RT_15, "GetPropertiesByName", ves_icall_Type_GetPropertiesByName)
 ICALL(RT_16, "GetTypeCodeImplInternal", ves_icall_type_GetTypeCodeInternal)
+ICALL(RT_28, "IsTypeExportedToWindowsRuntime", ves_icall_System_RuntimeType_IsTypeExportedToWindowsRuntime)
+ICALL(RT_29, "IsWindowsRuntimeObjectType", ves_icall_System_RuntimeType_IsWindowsRuntimeObjectType)
 ICALL(RT_17, "MakeGenericType", ves_icall_Type_MakeGenericType)
 ICALL(RT_18, "MakePointerType", ves_icall_Type_MakePointerType)
 ICALL(RT_19, "getFullName", ves_icall_System_MonoType_getFullName)
@@ -886,9 +892,6 @@ ICALL(MONIT_6, "Monitor_try_enter", ves_icall_System_Threading_Monitor_Monitor_t
 ICALL(MONIT_7, "Monitor_wait", ves_icall_System_Threading_Monitor_Monitor_wait)
 ICALL(MONIT_9, "try_enter_with_atomic_var", ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var)
 
-ICALL_TYPE(MRWI, "System.Threading.MonoRuntimeWorkItem", MRWI_1)
-ICALL(MRWI_1, "ExecuteWorkItem", ves_icall_System_Threading_MonoRuntimeWorkItem_ExecuteWorkItem)
-
 ICALL_TYPE(MUTEX, "System.Threading.Mutex", MUTEX_1)
 ICALL(MUTEX_1, "CreateMutex_internal(bool,string,bool&)", ves_icall_System_Threading_Mutex_CreateMutex_internal)
 ICALL(MUTEX_2, "OpenMutex_internal(string,System.Security.AccessControl.MutexRights,System.IO.MonoIOError&)", ves_icall_System_Threading_Mutex_OpenMutex_internal)
index 056e76eada46bdee71cbe5c52eaecf6548181f40..f6daa4f7eb00c4259239331a1eec5bd0891ebeb8 100644 (file)
@@ -2293,31 +2293,38 @@ ves_icall_MonoType_GetArrayRank (MonoReflectionType *type)
        return class->rank;
 }
 
+static MonoArray*
+create_type_array (MonoDomain *domain, MonoBoolean runtimeTypeArray, int count)
+{
+       MonoArray *res;
+       res = mono_array_new (domain, runtimeTypeArray ? mono_defaults.runtimetype_class : mono_defaults.systemtype_class, count);
+       return res;
+}
+
 ICALL_EXPORT MonoArray*
-ves_icall_MonoType_GetGenericArguments (MonoReflectionType *type)
+ves_icall_MonoType_GetGenericArguments (MonoReflectionType *type, MonoBoolean runtimeTypeArray)
 {
        MonoArray *res;
        MonoClass *klass, *pklass;
        MonoDomain *domain = mono_object_domain (type);
-       MonoVTable *array_vtable = mono_class_vtable_full (domain, mono_array_class_get_cached (mono_defaults.systemtype_class, 1), TRUE);
        int i;
 
        klass = mono_class_from_mono_type (type->type);
 
        if (klass->generic_container) {
                MonoGenericContainer *container = klass->generic_container;
-               res = mono_array_new_specific (array_vtable, container->type_argc);
+               res = create_type_array (domain, runtimeTypeArray, container->type_argc);
                for (i = 0; i < container->type_argc; ++i) {
                        pklass = mono_class_from_generic_parameter (mono_generic_container_get_param (container, i), klass->image, FALSE);
                        mono_array_setref (res, i, mono_type_get_object (domain, &pklass->byval_arg));
                }
        } else if (klass->generic_class) {
                MonoGenericInst *inst = klass->generic_class->context.class_inst;
-               res = mono_array_new_specific (array_vtable, inst->type_argc);
+               res = create_type_array (domain, runtimeTypeArray, inst->type_argc);
                for (i = 0; i < inst->type_argc; ++i)
                        mono_array_setref (res, i, mono_type_get_object (domain, inst->type_argv [i]));
        } else {
-               res = mono_array_new_specific (array_vtable, 0);
+               res = NULL;
        }
        return res;
 }
@@ -2498,8 +2505,6 @@ ves_icall_MonoType_GetCorrespondingInflatedMethod (MonoReflectionType *type,
         return NULL;
 }
 
-
-
 ICALL_EXPORT MonoReflectionMethod *
 ves_icall_MonoType_get_DeclaringMethod (MonoReflectionType *ref_type)
 {
@@ -2518,14 +2523,26 @@ ves_icall_MonoType_get_DeclaringMethod (MonoReflectionType *ref_type)
        return mono_method_get_object (mono_object_domain (ref_type), method, method->klass);
 }
 
-ICALL_EXPORT MonoReflectionDllImportAttribute*
-ves_icall_MonoMethod_GetDllImportAttribute (MonoMethod *method)
+ICALL_EXPORT MonoBoolean
+ves_icall_System_RuntimeType_IsTypeExportedToWindowsRuntime (void)
+{
+       mono_set_pending_exception (mono_get_exception_not_implemented (NULL));
+       return FALSE;
+}
+
+ICALL_EXPORT MonoBoolean
+ves_icall_System_RuntimeType_IsWindowsRuntimeObjectType (void)
+{
+       mono_set_pending_exception (mono_get_exception_not_implemented (NULL));
+       return FALSE;
+}
+
+ICALL_EXPORT void
+ves_icall_MonoMethod_GetPInvoke (MonoReflectionMethod *method, int* flags, MonoString** entry_point, MonoString** dll_name)
 {
-       static MonoClass *DllImportAttributeClass = NULL;
        MonoDomain *domain = mono_domain_get ();
-       MonoReflectionDllImportAttribute *attr;
-       MonoImage *image = method->klass->image;
-       MonoMethodPInvoke *piinfo = (MonoMethodPInvoke *)method;
+       MonoImage *image = method->method->klass->image;
+       MonoMethodPInvoke *piinfo = (MonoMethodPInvoke *)method->method;
        MonoTableInfo *tables = image->tables;
        MonoTableInfo *im = &tables [MONO_TABLE_IMPLMAP];
        MonoTableInfo *mr = &tables [MONO_TABLE_MODULEREF];
@@ -2533,22 +2550,10 @@ ves_icall_MonoMethod_GetDllImportAttribute (MonoMethod *method)
        guint32 scope_token;
        const char *import = NULL;
        const char *scope = NULL;
-       guint32 flags;
-
-       if (!(method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL))
-               return NULL;
 
-       if (!DllImportAttributeClass) {
-               DllImportAttributeClass = 
-                       mono_class_from_name (mono_defaults.corlib,
-                                                                 "System.Runtime.InteropServices", "DllImportAttribute");
-               g_assert (DllImportAttributeClass);
-       }
-                                                                                                               
-       if (image_is_dynamic (method->klass->image)) {
+       if (image_is_dynamic (image)) {
                MonoReflectionMethodAux *method_aux = 
-                       g_hash_table_lookup (
-                                                                         ((MonoDynamicImage*)method->klass->image)->method_aux_hash, method);
+                       g_hash_table_lookup (((MonoDynamicImage*)image)->method_aux_hash, method->method);
                if (method_aux) {
                        import = method_aux->dllentry;
                        scope = method_aux->dll;
@@ -2556,7 +2561,7 @@ ves_icall_MonoMethod_GetDllImportAttribute (MonoMethod *method)
 
                if (!import || !scope) {
                        mono_set_pending_exception (mono_get_exception_argument ("method", "System.Reflection.Emit method with invalid pinvoke information"));
-                       return NULL;
+                       return;
                }
        }
        else {
@@ -2569,23 +2574,10 @@ ves_icall_MonoMethod_GetDllImportAttribute (MonoMethod *method)
                        scope = mono_metadata_string_heap (image, scope_token);
                }
        }
-       flags = piinfo->piflags;
        
-       attr = (MonoReflectionDllImportAttribute*)mono_object_new (domain, DllImportAttributeClass);
-
-       MONO_OBJECT_SETREF (attr, dll, mono_string_new (domain, scope));
-       MONO_OBJECT_SETREF (attr, entry_point, mono_string_new (domain, import));
-       attr->call_conv = (flags & 0x700) >> 8;
-       attr->charset = ((flags & 0x6) >> 1) + 1;
-       if (attr->charset == 1)
-               attr->charset = 2;
-       attr->exact_spelling = (flags & 0x1) != 0;
-       attr->set_last_error = (flags & 0x40) != 0;
-       attr->best_fit_mapping = (flags & 0x30) == 0x10;
-       attr->throw_on_unmappable = (flags & 0x3000) == 0x1000;
-       attr->preserve_sig = FALSE;
-
-       return attr;
+       *flags = piinfo->piflags;
+       *entry_point = mono_string_new (domain, import);
+       *dll_name = mono_string_new (domain, scope);
 }
 
 ICALL_EXPORT MonoReflectionMethod *
@@ -2783,15 +2775,19 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this, MonoAr
 
                if (m->klass->rank == pcount) {
                        /* Only lengths provided. */
-                       lower_bounds = NULL;
+                       return (MonoObject*)mono_array_new_full (mono_object_domain (params), m->klass, lengths, NULL);
                } else {
                        g_assert (pcount == (m->klass->rank * 2));
-                       /* lower bounds are first. */
-                       lower_bounds = (intptr_t*)lengths;
-                       lengths += m->klass->rank;
-               }
+                       /* The arguments are lower-bound-length pairs */
+                       lower_bounds = g_alloca (sizeof (intptr_t) * pcount);
+
+                       for (i = 0; i < pcount / 2; ++i) {
+                               lower_bounds [i] = *(int32_t*) ((char*)mono_array_get (params, gpointer, (i * 2)) + sizeof (MonoObject));
+                               lengths [i] = *(int32_t*) ((char*)mono_array_get (params, gpointer, (i * 2) + 1) + sizeof (MonoObject));
+                       }
 
-               return (MonoObject*)mono_array_new_full (mono_object_domain (params), m->klass, lengths, lower_bounds);
+                       return (MonoObject*)mono_array_new_full (mono_object_domain (params), m->klass, lengths, lower_bounds);
+               }
        }
        return mono_runtime_invoke_array (m, obj, params, NULL);
 }
@@ -4003,10 +3999,6 @@ ves_icall_System_Reflection_Assembly_InternalGetType (MonoReflectionAssembly *as
        if (type->type == MONO_TYPE_CLASS) {
                MonoClass *klass = mono_type_get_class (type);
 
-               if (mono_security_enabled () && !klass->exception_type)
-                       /* Some security problems are detected during generic vtable construction */
-                       mono_class_setup_vtable (klass);
-
                /* need to report exceptions ? */
                if (throwOnError && klass->exception_type) {
                        /* report SecurityException (or others) that occured when loading the assembly */
@@ -4014,8 +4006,6 @@ ves_icall_System_Reflection_Assembly_InternalGetType (MonoReflectionAssembly *as
                        mono_loader_clear_error ();
                        mono_set_pending_exception (exc);
                        return NULL;
-               } else if (mono_security_enabled () && klass->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) {
-                       return NULL;
                }
        }
 
@@ -5622,262 +5612,17 @@ ves_icall_System_Delegate_CreateDelegate_internal (MonoReflectionType *type, Mon
        return delegate;
 }
 
-ICALL_EXPORT void
-ves_icall_System_Delegate_SetMulticastInvoke (MonoDelegate *this)
+ICALL_EXPORT MonoMulticastDelegate *
+ves_icall_System_Delegate_AllocDelegateLike_internal (MonoDelegate *delegate)
 {
-       /* Reset the invoke impl to the default one */
-       this->invoke_impl = mono_runtime_create_delegate_trampoline (this->object.vtable->klass);
-}
+       MonoMulticastDelegate *ret;
 
-/*
- * Magic number to convert a time which is relative to
- * Jan 1, 1970 into a value which is relative to Jan 1, 0001.
- */
-#define        EPOCH_ADJUST    ((guint64)62135596800LL)
+       g_assert (mono_class_has_parent (mono_object_class (delegate), mono_defaults.multicastdelegate_class));
 
-/*
- * Magic number to convert FILETIME base Jan 1, 1601 to DateTime - base Jan, 1, 0001
- */
-#define FILETIME_ADJUST ((guint64)504911232000000000LL)
+       ret = (MonoMulticastDelegate*) mono_object_new (mono_object_domain (delegate), mono_object_class (delegate));
+       ret->delegate.invoke_impl = mono_runtime_create_delegate_trampoline (mono_object_class (delegate));
 
-#ifdef HOST_WIN32
-/* convert a SYSTEMTIME which is of the form "last thursday in october" to a real date */
-static void
-convert_to_absolute_date(SYSTEMTIME *date)
-{
-#define IS_LEAP(y) ((y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0))
-       static int days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-       static int leap_days_in_month[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-       /* from the calendar FAQ */
-       int a = (14 - date->wMonth) / 12;
-       int y = date->wYear - a;
-       int m = date->wMonth + 12 * a - 2;
-       int d = (1 + y + y/4 - y/100 + y/400 + (31*m)/12) % 7;
-
-       /* d is now the day of the week for the first of the month (0 == Sunday) */
-
-       int day_of_week = date->wDayOfWeek;
-
-       /* set day_in_month to the first day in the month which falls on day_of_week */    
-       int day_in_month = 1 + (day_of_week - d);
-       if (day_in_month <= 0)
-               day_in_month += 7;
-
-       /* wDay is 1 for first weekday in month, 2 for 2nd ... 5 means last - so work that out allowing for days in the month */
-       date->wDay = day_in_month + (date->wDay - 1) * 7;
-       if (date->wDay > (IS_LEAP(date->wYear) ? leap_days_in_month[date->wMonth - 1] : days_in_month[date->wMonth - 1]))
-               date->wDay -= 7;
-}
-#endif
-
-#ifndef HOST_WIN32
-/*
- * Return's the offset from GMT of a local time.
- * 
- *  tm is a local time
- *  t  is the same local time as seconds.
- */
-static int 
-gmt_offset(struct tm *tm, time_t t)
-{
-#if defined (HAVE_TM_GMTOFF)
-       return tm->tm_gmtoff;
-#else
-       struct tm g;
-       time_t t2;
-       g = *gmtime(&t);
-       g.tm_isdst = tm->tm_isdst;
-       t2 = mktime(&g);
-       return (int)difftime(t, t2);
-#endif
-}
-#endif
-/*
- * This is heavily based on zdump.c from glibc 2.2.
- *
- *  * data[0]:  start of daylight saving time (in DateTime ticks).
- *  * data[1]:  end of daylight saving time (in DateTime ticks).
- *  * data[2]:  utcoffset (in TimeSpan ticks).
- *  * data[3]:  additional offset when daylight saving (in TimeSpan ticks).
- *  * name[0]:  name of this timezone when not daylight saving.
- *  * name[1]:  name of this timezone when daylight saving.
- *
- *  FIXME: This only works with "standard" Unix dates (years between 1900 and 2100) while
- *         the class library allows years between 1 and 9999.
- *
- *  Returns true on success and zero on failure.
- */
-ICALL_EXPORT guint32
-ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData (guint32 year, MonoArray **data, MonoArray **names)
-{
-#ifndef HOST_WIN32
-       MonoDomain *domain = mono_domain_get ();
-       struct tm start, tt;
-       time_t t;
-
-       long int gmtoff, gmtoff_after, gmtoff_st, gmtoff_ds;
-       int day, transitioned;
-       char tzone [64];
-
-       gmtoff_st = gmtoff_ds = transitioned = 0;
-
-       MONO_CHECK_ARG_NULL (data, 0);
-       MONO_CHECK_ARG_NULL (names, 0);
-
-       mono_gc_wbarrier_generic_store (data, (MonoObject*) mono_array_new (domain, mono_defaults.int64_class, 4));
-       mono_gc_wbarrier_generic_store (names, (MonoObject*) mono_array_new (domain, mono_defaults.string_class, 2));
-
-       /* 
-        * no info is better than crashing: we'll need our own tz data
-        * to make this work properly, anyway. The range is probably
-        * reduced to 1970 .. 2037 because that is what mktime is
-        * guaranteed to support (we get into an infinite loop
-        * otherwise).
-        */
-
-       memset (&start, 0, sizeof (start));
-
-       start.tm_mday = 1;
-       start.tm_year = year-1900;
-
-       t = mktime (&start);
-
-       if ((year < 1970) || (year > 2037) || (t == -1)) {
-               t = time (NULL);
-               tt = *localtime (&t);
-               strftime (tzone, sizeof (tzone), "%Z", &tt);
-               mono_array_setref ((*names), 0, mono_string_new (domain, tzone));
-               mono_array_setref ((*names), 1, mono_string_new (domain, tzone));
-               return 1;
-       }
-
-       gmtoff = gmt_offset (&start, t);
-
-       /* For each day of the year, calculate the tm_gmtoff. */
-       for (day = 0; day < 365 && transitioned < 2; day++) {
-
-               t += 3600*24;
-               tt = *localtime (&t);
-
-        gmtoff_after = gmt_offset(&tt, t);
-
-               /* Daylight saving starts or ends here. */
-               if (gmtoff_after != gmtoff) {
-                       struct tm tt1;
-                       time_t t1;
-
-                       /* Try to find the exact hour when daylight saving starts/ends. */
-                       t1 = t;
-                       do {
-                               t1 -= 3600;
-                               tt1 = *localtime (&t1);
-                       } while (gmt_offset (&tt1, t1) != gmtoff);
-
-                       /* Try to find the exact minute when daylight saving starts/ends. */
-                       do {
-                               t1 += 60;
-                               tt1 = *localtime (&t1);
-                       } while (gmt_offset (&tt1, t1) == gmtoff);
-                       t1+=gmtoff;
-                       strftime (tzone, sizeof (tzone), "%Z", &tt);
-                       
-                       /* Write data, if we're already in daylight saving, we're done. */
-                       if (tt.tm_isdst) {
-                               mono_array_setref ((*names), 1, mono_string_new (domain, tzone));
-                               mono_array_set ((*data), gint64, 0, ((gint64)t1 + EPOCH_ADJUST) * 10000000L);
-                               if (gmtoff_ds == 0) {
-                                       gmtoff_st = gmtoff;
-                                       gmtoff_ds = gmtoff_after;
-                               }
-                               transitioned++;
-                       } else {
-                               mono_array_setref ((*names), 0, mono_string_new (domain, tzone));
-                               mono_array_set ((*data), gint64, 1, ((gint64)t1 + EPOCH_ADJUST) * 10000000L);
-                               if (gmtoff_ds == 0) {
-                                       gmtoff_st = gmtoff_after;
-                                       gmtoff_ds = gmtoff;
-                               }
-                               transitioned++;
-                       }
-
-                       /* This is only set once when we enter daylight saving. */
-                       if (tt1.tm_isdst) {
-                               mono_array_set ((*data), gint64, 2, (gint64)gmtoff_st * 10000000L);
-                               mono_array_set ((*data), gint64, 3, (gint64)(gmtoff_ds - gmtoff_st) * 10000000L);
-                       }
-                       gmtoff = gmt_offset (&tt, t);
-               }
-       }
-
-       if (transitioned < 2) {
-               strftime (tzone, sizeof (tzone), "%Z", &tt);
-               mono_array_setref ((*names), 0, mono_string_new (domain, tzone));
-               mono_array_setref ((*names), 1, mono_string_new (domain, tzone));
-               mono_array_set ((*data), gint64, 0, 0);
-               mono_array_set ((*data), gint64, 1, 0);
-               mono_array_set ((*data), gint64, 2, (gint64) gmtoff * 10000000L);
-               mono_array_set ((*data), gint64, 3, 0);
-       }
-
-       return 1;
-#else
-       MonoDomain *domain = mono_domain_get ();
-       TIME_ZONE_INFORMATION tz_info;
-       FILETIME ft;
-       int i;
-       int err, tz_id;
-
-       tz_id = GetTimeZoneInformation (&tz_info);
-       if (tz_id == TIME_ZONE_ID_INVALID)
-               return 0;
-
-       MONO_CHECK_ARG_NULL (data, 0);
-       MONO_CHECK_ARG_NULL (names, 0);
-
-       mono_gc_wbarrier_generic_store (data, mono_array_new (domain, mono_defaults.int64_class, 4));
-       mono_gc_wbarrier_generic_store (names, mono_array_new (domain, mono_defaults.string_class, 2));
-
-       for (i = 0; i < 32; ++i)
-               if (!tz_info.DaylightName [i])
-                       break;
-       mono_array_setref ((*names), 1, mono_string_new_utf16 (domain, tz_info.DaylightName, i));
-       for (i = 0; i < 32; ++i)
-               if (!tz_info.StandardName [i])
-                       break;
-       mono_array_setref ((*names), 0, mono_string_new_utf16 (domain, tz_info.StandardName, i));
-
-       if ((year <= 1601) || (year > 30827)) {
-               /*
-                * According to MSDN, the MS time functions can't handle dates outside
-                * this interval.
-                */
-               return 1;
-       }
-
-       /* even if the timezone has no daylight savings it may have Bias (e.g. GMT+13 it seems) */
-       if (tz_id != TIME_ZONE_ID_UNKNOWN) {
-               tz_info.StandardDate.wYear = year;
-               convert_to_absolute_date(&tz_info.StandardDate);
-               err = SystemTimeToFileTime (&tz_info.StandardDate, &ft);
-               //g_assert(err);
-               if (err == 0)
-                       return 0;
-               
-               mono_array_set ((*data), gint64, 1, FILETIME_ADJUST + (((guint64)ft.dwHighDateTime<<32) | ft.dwLowDateTime));
-               tz_info.DaylightDate.wYear = year;
-               convert_to_absolute_date(&tz_info.DaylightDate);
-               err = SystemTimeToFileTime (&tz_info.DaylightDate, &ft);
-               //g_assert(err);
-               if (err == 0)
-                       return 0;
-               
-               mono_array_set ((*data), gint64, 0, FILETIME_ADJUST + (((guint64)ft.dwHighDateTime<<32) | ft.dwLowDateTime));
-       }
-       mono_array_set ((*data), gint64, 2, (tz_info.Bias + tz_info.StandardBias) * -600000000LL);
-       mono_array_set ((*data), gint64, 3, (tz_info.DaylightBias - tz_info.StandardBias) * -600000000LL);
-
-       return 1;
-#endif
+       return ret;
 }
 
 /* System.Buffer */
@@ -6461,6 +6206,12 @@ ves_icall_System_Environment_BroadcastSettingChange (void)
 #endif
 }
 
+ICALL_EXPORT gint32
+ves_icall_System_Runtime_Versioning_VersioningHelper_GetRuntimeId (void)
+{
+       return 9;
+}
+
 ICALL_EXPORT void
 ves_icall_MonoMethodMessage_InitMessage (MonoMethodMessage *this, 
                                         MonoReflectionMethod *method,
@@ -6658,12 +6409,12 @@ get_bundled_app_config (void)
        MonoDomain *domain;
        MonoString *file;
        gchar *config_file_name, *config_file_path;
-       gsize len;
+       gsize len, config_file_path_length, config_ext_length;
        gchar *module;
 
        domain = mono_domain_get ();
        file = domain->setup->configuration_file;
-       if (!file)
+       if (!file || file->length == 0)
                return NULL;
 
        // Retrieve config file and remove the extension
@@ -6671,7 +6422,13 @@ get_bundled_app_config (void)
        config_file_path = mono_portability_find_file (config_file_name, TRUE);
        if (!config_file_path)
                config_file_path = config_file_name;
-       len = strlen (config_file_path) - strlen (".config");
+
+       config_file_path_length = strlen (config_file_path);
+       config_ext_length = strlen (".config");
+       if (config_file_path_length <= config_ext_length)
+               return NULL;
+
+       len = config_file_path_length - config_ext_length;
        module = g_malloc0 (len + 1);
        memcpy (module, config_file_path, len);
        // Get the config file from the module name
@@ -6996,8 +6753,8 @@ mono_TypedReference_MakeTypedReferenceInternal (MonoObject *target, MonoArray *f
        MonoTypedRef res;
        MonoReflectionField *f;
        MonoClass *klass;
-       MonoType *ftype;
-       guint8 *p;
+       MonoType *ftype = NULL;
+       guint8 *p = NULL;
        int i;
 
        memset (&res, 0, sizeof (res));
@@ -7315,7 +7072,7 @@ ves_icall_System_StackFrame_GetILOffsetFromFile (MonoString *path, guint32 metho
        guint32 il_offset;
        char *path_str = mono_string_to_utf8 (path);
 
-       if (!seq_point_data_get_il_offset (path_str, method_token, method_index, native_offset, &il_offset))
+       if (!mono_seq_point_data_get_il_offset (path_str, method_token, method_index, native_offset, &il_offset))
                il_offset = -1;
 
        g_free (path_str);
index 1e9596cff5d1b321602945115e868ffdb90d2a83..705874ef88aa4a24fc32cb3f9d23ba1610643506 100644 (file)
@@ -65,7 +65,7 @@ struct ImageUnloadHook {
        gpointer user_data;
 };
 
-GSList *image_unload_hooks;
+static GSList *image_unload_hooks;
 
 void
 mono_install_image_unload_hook (MonoImageUnloadFunc func, gpointer user_data)
@@ -118,7 +118,10 @@ mono_cli_rva_image_map (MonoImage *image, guint32 addr)
        const int top = iinfo->cli_section_count;
        MonoSectionTable *tables = iinfo->cli_section_tables;
        int i;
-       
+
+       if (image->metadata_only)
+               return addr;
+
        for (i = 0; i < top; i++){
                if ((addr >= tables->st_virtual_address) &&
                    (addr < tables->st_virtual_address + tables->st_raw_data_size)){
@@ -495,7 +498,7 @@ load_tables (MonoImage *image)
                        continue;
                }
                if (table > MONO_TABLE_LAST) {
-                       g_warning("bits in valid must be zero above 0x2d (II - 23.1.6)");
+                       g_warning("bits in valid must be zero above 0x37 (II - 23.1.6)");
                } else {
                        image->tables [table].rows = read32 (rows);
                }
@@ -949,12 +952,14 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status,
        if (care_about_pecoff == FALSE)
                goto done;
 
-       if (!mono_verifier_verify_pe_data (image, &errors))
-               goto invalid_image;
+       if (!image->metadata_only) {
+               if (!mono_verifier_verify_pe_data (image, &errors))
+                       goto invalid_image;
+
+               if (!mono_image_load_pe_data (image))
+                       goto invalid_image;
+       }
 
-       if (!mono_image_load_pe_data (image))
-               goto invalid_image;
-       
        if (care_about_cli == FALSE) {
                goto done;
        }
@@ -992,7 +997,7 @@ invalid_image:
 
 static MonoImage *
 do_mono_image_open (const char *fname, MonoImageOpenStatus *status,
-                   gboolean care_about_cli, gboolean care_about_pecoff, gboolean refonly)
+                                       gboolean care_about_cli, gboolean care_about_pecoff, gboolean refonly, gboolean metadata_only)
 {
        MonoCLIImageInfo *iinfo;
        MonoImage *image;
@@ -1035,6 +1040,7 @@ do_mono_image_open (const char *fname, MonoImageOpenStatus *status,
        image->image_info = iinfo;
        image->name = mono_path_resolve_symlinks (fname);
        image->ref_only = refonly;
+       image->metadata_only = metadata_only;
        image->ref_count = 1;
        /* if MONO_SECURITY_MODE_CORE_CLR is set then determine if this image is platform code */
        image->core_clr_platform_code = mono_security_core_clr_determine_platform_image (image);
@@ -1306,7 +1312,7 @@ mono_image_open_full (const char *fname, MonoImageOpenStatus *status, gboolean r
        }
        mono_images_unlock ();
 
-       image = do_mono_image_open (fname, status, TRUE, TRUE, refonly);
+       image = do_mono_image_open (fname, status, TRUE, TRUE, refonly, FALSE);
        if (image == NULL)
                return NULL;
 
@@ -1345,7 +1351,7 @@ mono_pe_file_open (const char *fname, MonoImageOpenStatus *status)
 {
        g_return_val_if_fail (fname != NULL, NULL);
        
-       return(do_mono_image_open (fname, status, FALSE, TRUE, FALSE));
+       return do_mono_image_open (fname, status, FALSE, TRUE, FALSE, FALSE);
 }
 
 /**
@@ -1362,7 +1368,18 @@ mono_image_open_raw (const char *fname, MonoImageOpenStatus *status)
 {
        g_return_val_if_fail (fname != NULL, NULL);
        
-       return(do_mono_image_open (fname, status, FALSE, FALSE, FALSE));
+       return do_mono_image_open (fname, status, FALSE, FALSE, FALSE, FALSE);
+}
+
+/*
+ * mono_image_open_metadata_only:
+ *
+ *   Open an image which contains metadata only without a PE header.
+ */
+MonoImage *
+mono_image_open_metadata_only (const char *fname, MonoImageOpenStatus *status)
+{
+       return do_mono_image_open (fname, status, TRUE, TRUE, FALSE, TRUE);
 }
 
 void
@@ -1642,8 +1659,9 @@ mono_image_close_except_pools (MonoImage *image)
        free_hash (image->thunk_invoke_cache);
        free_hash (image->var_cache_slow);
        free_hash (image->mvar_cache_slow);
+       free_hash (image->var_cache_constrained);
+       free_hash (image->mvar_cache_constrained);
        free_hash (image->wrapper_param_names);
-       free_hash (image->native_wrapper_aot_cache);
        free_hash (image->pinvoke_scopes);
        free_hash (image->pinvoke_scope_filenames);
        for (i = 0; i < image->gshared_types_len; ++i)
index cc0b76622fb8458887eece9a0b021608ab7d49cc..be78f82c43c73bd26763c78fbe3c0a4725357fc9 100644 (file)
@@ -266,12 +266,13 @@ jit_info_table_find (MonoJitInfoTable *table, MonoThreadHazardPointers *hp, gint
  *
  * If TRY_AOT is FALSE, avoid loading information for missing methods from AOT images, which is currently not async safe.
  * In this case, only those AOT methods will be found whose jit info is already loaded.
+ * If ALLOW_TRAMPOLINES is TRUE, this can return a MonoJitInfo which represents a trampoline (ji->is_trampoline is true).
  * ASYNC SAFETY: When called in an async context (mono_thread_info_is_async_context ()), this is async safe.
  * In this case, the returned MonoJitInfo might not have metadata information, in particular,
  * mono_jit_info_get_method () could fail.
  */
 MonoJitInfo*
-mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_aot)
+mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_aot, gboolean allow_trampolines)
 {
        MonoJitInfoTable *table;
        MonoJitInfo *ji, *module_ji;
@@ -292,6 +293,8 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
        ji = jit_info_table_find (table, hp, (gint8*)addr);
        if (hp)
                mono_hazard_pointer_clear (hp, JIT_INFO_TABLE_HAZARD_INDEX);
+       if (ji && ji->is_trampoline && !allow_trampolines)
+               return NULL;
        if (ji)
                return ji;
 
@@ -304,6 +307,9 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
                if (hp)
                        mono_hazard_pointer_clear (hp, JIT_INFO_TABLE_HAZARD_INDEX);
        }
+
+       if (ji && ji->is_trampoline && !allow_trampolines)
+               return NULL;
        
        return ji;
 }
@@ -311,7 +317,7 @@ mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_
 MonoJitInfo*
 mono_jit_info_table_find (MonoDomain *domain, char *addr)
 {
-       return mono_jit_info_table_find_internal (domain, addr, TRUE);
+       return mono_jit_info_table_find_internal (domain, addr, TRUE, FALSE);
 }
 
 static G_GNUC_UNUSED void
@@ -772,14 +778,14 @@ mono_jit_info_size (MonoJitInfoFlags flags, int num_clauses, int num_holes)
        int size = MONO_SIZEOF_JIT_INFO;
 
        size += num_clauses * sizeof (MonoJitExceptionInfo);
-       if (flags & JIT_INFO_HAS_CAS_INFO)
-               size += sizeof (MonoMethodCasInfo);
        if (flags & JIT_INFO_HAS_GENERIC_JIT_INFO)
                size += sizeof (MonoGenericJitInfo);
        if (flags & JIT_INFO_HAS_TRY_BLOCK_HOLES)
                size += sizeof (MonoTryBlockHoleTableJitInfo) + num_holes * sizeof (MonoTryBlockHoleJitInfo);
        if (flags & JIT_INFO_HAS_ARCH_EH_INFO)
                size += sizeof (MonoArchEHJitInfo);
+       if (flags & JIT_INFO_HAS_THUNK_INFO)
+               size += sizeof (MonoThunkJitInfo);
        return size;
 }
 
@@ -791,14 +797,14 @@ mono_jit_info_init (MonoJitInfo *ji, MonoMethod *method, guint8 *code, int code_
        ji->code_start = code;
        ji->code_size = code_size;
        ji->num_clauses = num_clauses;
-       if (flags & JIT_INFO_HAS_CAS_INFO)
-               ji->has_cas_info = 1;
        if (flags & JIT_INFO_HAS_GENERIC_JIT_INFO)
                ji->has_generic_jit_info = 1;
        if (flags & JIT_INFO_HAS_TRY_BLOCK_HOLES)
                ji->has_try_block_holes = 1;
        if (flags & JIT_INFO_HAS_ARCH_EH_INFO)
                ji->has_arch_eh_info = 1;
+       if (flags & JIT_INFO_HAS_THUNK_INFO)
+               ji->has_thunk_info = 1;
 }
 
 gpointer
@@ -817,6 +823,7 @@ MonoMethod*
 mono_jit_info_get_method (MonoJitInfo* ji)
 {
        g_assert (!ji->async);
+       g_assert (!ji->is_trampoline);
        return ji->d.method;
 }
 
@@ -928,10 +935,10 @@ mono_jit_info_get_arch_eh_info (MonoJitInfo *ji)
        }
 }
 
-MonoMethodCasInfo*
-mono_jit_info_get_cas_info (MonoJitInfo *ji)
+MonoThunkJitInfo*
+mono_jit_info_get_thunk_info (MonoJitInfo *ji)
 {
-       if (ji->has_cas_info) {
+       if (ji->has_thunk_info) {
                char *ptr = (char*)&ji->clauses [ji->num_clauses];
                if (ji->has_generic_jit_info)
                        ptr += sizeof (MonoGenericJitInfo);
@@ -939,7 +946,7 @@ mono_jit_info_get_cas_info (MonoJitInfo *ji)
                        ptr += try_block_hole_table_size (ji);
                if (ji->has_arch_eh_info)
                        ptr += sizeof (MonoArchEHJitInfo);
-               return (MonoMethodCasInfo*)ptr;
+               return (MonoThunkJitInfo*)ptr;
        } else {
                return NULL;
        }
index 9d7a46496f2af6341471cbd9e2517b7455690c44..05cc3f7f83358d9caa035fb1985d7caf4a648938 100644 (file)
@@ -2455,9 +2455,9 @@ static gboolean loader_lock_track_ownership = FALSE;
 void
 mono_loader_lock (void)
 {
-       MONO_PREPARE_BLOCKING
+       MONO_TRY_BLOCKING
        mono_locks_acquire (&loader_mutex, LoaderLock);
-       MONO_FINISH_BLOCKING
+       MONO_FINISH_TRY_BLOCKING
                
        if (G_UNLIKELY (loader_lock_track_ownership)) {
                mono_native_tls_set_value (loader_lock_nest_id, GUINT_TO_POINTER (GPOINTER_TO_UINT (mono_native_tls_get_value (loader_lock_nest_id)) + 1));
index 82e29ad5ffa824c959a3219b73541276de8ee810..7c49bf4f59706b42bf1dfedccf81f32775626d32 100644 (file)
@@ -19,7 +19,8 @@ typedef enum {
        AssemblyBindingLock,
        MarshalLock,
        ClassesLock,
-       LoaderGlobalDataLock
+       LoaderGlobalDataLock,
+       ThreadsLock,
 } RuntimeLocks;
 
 #ifdef LOCK_TRACER
diff --git a/mono/metadata/make-bundle.pl b/mono/metadata/make-bundle.pl
deleted file mode 100755 (executable)
index fff9a87..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2003 Ximian, Inc.
-# Paolo Molaro (lupus@ximian.com)
-#
-# Create an header file to be included in the mono libraries to
-# bundle assemblies inside the runtime.
-# The template file contains a list of assemblies, one per line,
-# with the name followed by a ':' and the filename.
-# Lines starting with '#' and empty lines are ignored.
-# See sample-bundle for an example.
-# We need to use an assembly file because gcc can't handle large arrays:-(
-
-if ($#ARGV != 2) {
-       die "Usage: make-bundle.pl template headerfile.h asm-file\n";
-}
-
-my $template = $ARGV [0];
-my $header = $ARGV [1];
-my $output = $ARGV [2];
-my %assemblies = ();
-
-my $line = 0;
-open (T, $template) || die "Cannot open bundle template: $!\n";
-while (<T>) {
-       ++$line;
-       next if (/^\s*#/);
-       next if (/^\s*$/);
-       if (/^([a-zA-Z0-9-.]+):\s*(.+?)\s*$/) {
-               my ($name, $filename) = ($1, $2);
-               if (exists $assemblies {$name}) {
-                       die "Assembly $name defined multiple times.\n";
-               } else {
-                       $assemblies {$name} = $filename;
-               }
-       } else {
-               die "Unknown format at line $line: $_";
-       }
-}
-close (T);
-
-open (O, ">$output.tmp") || die "Cannot open $output: $!\n";
-open (H, ">$header.tmp") || die "Cannot open $output: $!\n";
-print H <<"EOF";
-/* File generated by make-bundle: do not edit! */
-
-#ifndef __MONO_BUNDLE_H__
-#define __MONO_BUNDLE_H__
-
-typedef struct {
-       const char *name;
-       const unsigned char *data;
-       const unsigned int size;
-} MonoBundledAssembly;
-
-EOF
-
-my $bundle_entries = "";
-
-foreach my $name (sort keys %assemblies) {
-       my $file = $assemblies {$name};
-       my ($nread, $buf, $i, $cname, $need_eol, $size);
-       $cname = $name;
-       $cname =~ s/[-.]/_/g;
-       open (F, $file) || die "Cannot open $file: $!\n";
-       $size = -s F;
-#      print O "/* assembly $name from $file */\n";
-#      print O "static const unsigned char assembly_data_$cname [] = {\n";
-       print O ".globl assembly_data_$cname\n";
-       print O "\t.section .rodata\n";
-       print O "\t.align 32\n";
-       print O "\t.type assembly_data_$cname, \@object\n";
-       print O "\t.size assembly_data_$cname, $size\n";
-       print O "assembly_data_$cname:\n";
-       print H "extern const unsigned char assembly_data_$cname [];\n";
-       print H "static const MonoBundledAssembly assembly_bundle_$cname = {\"$name\", assembly_data_$cname, $size};\n";
-       $bundle_entries .= "\t&assembly_bundle_$cname,\n";
-       $need_eol = 0;
-       print "Adding assembly '$name' from $file...\n";
-       while (($n = sysread (F, $buf, 32))) {
-               for ($i = 0; $i < $n; ++$i) {
-                       print O "\t.byte ", ord (substr ($buf, $i, 1)), "\n";
-               }
-#              print O ",\n" if ($need_eol);
-#              $need_eol = 1;
-#              print O "\t";
-#              for ($i = 0; $i < $n; ++$i) {
-#                      print O ", " if $i > 0;
-#                      print O ord (substr ($buf, $i, 1));
-#              }
-       }
-#      print O "\n};\n\n";
-       close (F);
-}
-
-print H "\nstatic const MonoBundledAssembly* bundled_assemblies [] = {\n";
-print H $bundle_entries;
-print H "\tNULL\n";
-print H "};\n\n";
-print H "#endif /* __MONO_BUNDLE_H__ */\n";
-close (O);
-close (H);
-rename ("$header.tmp", $header);
-rename ("$output.tmp", $output);
-
index c68f78d2e9de449e582c4fd988db9895cf1e6766..f2300aff49a53ddf5c45e72dcaf2d255d34aee0f 100644 (file)
@@ -2055,17 +2055,13 @@ mono_marshal_emit_thread_force_interrupt_checkpoint (MonoMethodBuilder *mb)
 static MonoAsyncResult *
 mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params)
 {
-       MonoMethodMessage *msg;
-       MonoDelegate *async_callback;
        MonoMulticastDelegate *mcast_delegate;
-       MonoObject *state;
-       MonoMethod *im;
        MonoClass *klass;
-       MonoMethod *method = NULL, *method2 = NULL;
+       MonoMethod *method;
 
        g_assert (delegate);
        mcast_delegate = (MonoMulticastDelegate *) delegate;
-       if (mcast_delegate->prev != NULL)
+       if (mcast_delegate->delegates != NULL)
                mono_raise_exception (mono_get_exception_argument (NULL, "The delegate must have only one target"));
 
 #ifndef DISABLE_REMOTING
@@ -2077,6 +2073,9 @@ mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params)
                        /* If the target is a proxy, make a direct call. Is proxy's work
                        // to make the call asynchronous.
                        */
+                       MonoMethodMessage *msg;
+                       MonoDelegate *async_callback;
+                       MonoObject *state;
                        MonoAsyncResult *ares;
                        MonoObject *exc;
                        MonoArray *out_args;
@@ -2100,16 +2099,12 @@ mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params)
 
        klass = delegate->object.vtable->klass;
 
-       method = mono_get_delegate_invoke (klass);
-       method2 = mono_class_get_method_from_name (klass, "BeginInvoke", -1);
-       if (method2)
-               method = method2;
-       g_assert (method != NULL);
-
-       im = mono_get_delegate_invoke (method->klass);
-       msg = mono_method_call_message_new (method, params, im, &async_callback, &state);
+       method = mono_class_get_method_from_name (klass, "BeginInvoke", -1);
+       if (!method)
+               method = mono_get_delegate_invoke (klass);
+       g_assert (method);
 
-       return mono_thread_pool_add ((MonoObject *)delegate, msg, async_callback, state);
+       return mono_thread_pool_begin_invoke (mono_domain_get (), (MonoObject*) delegate, method, params);
 }
 
 #ifndef DISABLE_JIT
@@ -2824,7 +2819,7 @@ mono_delegate_end_invoke (MonoDelegate *delegate, gpointer *params)
        } else
 #endif
        {
-               res = mono_thread_pool_finish (ares, &out_args, &exc);
+               res = mono_thread_pool_end_invoke (ares, &out_args, &exc);
        }
 
        if (exc) {
@@ -3032,8 +3027,8 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
        gpointer cache_key = NULL;
        SignaturePointerPair key;
        SignaturePointerPair *new_key;
-       int local_prev, local_target;
-       int pos0;
+       int local_i, local_len, local_delegates, local_d, local_target, local_res;
+       int pos0, pos1, pos2;
        char *name;
        MonoClass *target_class = NULL;
        gboolean closed_over_null = FALSE;
@@ -3043,6 +3038,7 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
        WrapperInfo *info;
        WrapperSubtype subtype = WRAPPER_SUBTYPE_NONE;
        gboolean found;
+       gboolean void_ret;
 
        g_assert (method && method->klass->parent == mono_defaults.multicastdelegate_class &&
                  !strcmp (method->name, "Invoke"));
@@ -3158,53 +3154,50 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
        g_free (name);
 
 #ifndef DISABLE_JIT
+       void_ret = sig->ret->type == MONO_TYPE_VOID && !method->string_ctor;
+
        /* allocate local 0 (object) */
+       local_i = mono_mb_add_local (mb, &mono_defaults.int32_class->byval_arg);
+       local_len = mono_mb_add_local (mb, &mono_defaults.int32_class->byval_arg);
+       local_delegates = mono_mb_add_local (mb, &mono_defaults.array_class->byval_arg);
+       local_d = mono_mb_add_local (mb, &mono_defaults.multicastdelegate_class->byval_arg);
        local_target = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg);
-       local_prev = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg);
+
+       if (!void_ret)
+               local_res = mono_mb_add_local (mb, &mono_class_from_mono_type (sig->ret)->byval_arg);
 
        g_assert (sig->hasthis);
-       
+
        /*
-        * if (prev != null)
-         *     prev.Invoke( args .. );
-        * return this.<target>( args .. );
-         */
-       
+        * {type: sig->ret} res;
+        * if (delegates == null) {
+        *     return this.<target> ( args .. );
+        * } else {
+        *     int i = 0, len = this.delegates.Length;
+        *     do {
+        *         res = this.delegates [i].Invoke ( args .. );
+        *     } while (++i < len);
+        *     return res;
+        * }
+        */
+
        /* this wrapper can be used in unmanaged-managed transitions */
        emit_thread_interrupt_checkpoint (mb);
-       
-       /* get this->prev */
+
+       /* delegates = this.delegates */
        mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoMulticastDelegate, prev));
+       mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoMulticastDelegate, delegates));
        mono_mb_emit_byte (mb, CEE_LDIND_REF);
-       mono_mb_emit_stloc (mb, local_prev);
-       mono_mb_emit_ldloc (mb, local_prev);
-
-       /* if prev != null */
-       pos0 = mono_mb_emit_branch (mb, CEE_BRFALSE);
+       mono_mb_emit_stloc (mb, local_delegates);
 
-       /* then recurse */
 
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
+       /* if (delegates == null) */
+       mono_mb_emit_ldloc (mb, local_delegates);
+       pos2 = mono_mb_emit_branch (mb, CEE_BRTRUE);
 
-       mono_mb_emit_ldloc (mb, local_prev);
-       for (i = 0; i < sig->param_count; i++)
-               mono_mb_emit_ldarg (mb, i + 1);
-       if (ctx) {
-               MonoError error;
-               mono_mb_emit_op (mb, CEE_CALLVIRT, mono_class_inflate_generic_method_checked (method, &container->context, &error));
-               g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
-       } else {
-               mono_mb_emit_op (mb, CEE_CALLVIRT, method);
-       }
-       if (sig->ret->type != MONO_TYPE_VOID)
-               mono_mb_emit_byte (mb, CEE_POP);
+       /* return target.<target_method|method_ptr> ( args .. ); */
 
-       /* continued or prev == null */
-       mono_mb_patch_branch (mb, pos0);
-
-       /* get this->target */
+       /* target = d.target; */
        mono_mb_emit_ldarg (mb, 0);
        mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoDelegate, target));
        mono_mb_emit_byte (mb, CEE_LDIND_REF);
@@ -3238,11 +3231,18 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
 
        if (callvirt) {
                if (!closed_over_null) {
-                       mono_mb_emit_ldarg (mb, 1);
-                       mono_mb_emit_op (mb, CEE_CASTCLASS, target_class);
-                       for (i = 1; i < sig->param_count; ++i)
-                               mono_mb_emit_ldarg (mb, i + 1);
-                       mono_mb_emit_op (mb, CEE_CALLVIRT, target_method);
+                       if (target_class->valuetype) {
+                               mono_mb_emit_ldarg (mb, 1);
+                               for (i = 1; i < sig->param_count; ++i)
+                                       mono_mb_emit_ldarg (mb, i + 1);
+                               mono_mb_emit_op (mb, CEE_CALL, target_method);
+                       } else {
+                               mono_mb_emit_ldarg (mb, 1);
+                               mono_mb_emit_op (mb, CEE_CASTCLASS, target_class);
+                               for (i = 1; i < sig->param_count; ++i)
+                                       mono_mb_emit_ldarg (mb, i + 1);
+                               mono_mb_emit_op (mb, CEE_CALLVIRT, target_method);
+                       }
                } else {
                        mono_mb_emit_byte (mb, CEE_LDNULL);
                        for (i = 0; i < sig->param_count; ++i)
@@ -3265,6 +3265,54 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
 
        mono_mb_emit_byte (mb, CEE_RET);
 
+       /* else [delegates != null] */
+       mono_mb_patch_branch (mb, pos2);
+
+       /* len = delegates.Length; */
+       mono_mb_emit_ldloc (mb, local_delegates);
+       mono_mb_emit_byte (mb, CEE_LDLEN);
+       mono_mb_emit_byte (mb, CEE_CONV_I4);
+       mono_mb_emit_stloc (mb, local_len);
+
+       /* i = 0; */
+       mono_mb_emit_icon (mb, 0);
+       mono_mb_emit_stloc (mb, local_i);
+
+       pos1 = mono_mb_get_label (mb);
+
+       /* d = delegates [i]; */
+       mono_mb_emit_ldloc (mb, local_delegates);
+       mono_mb_emit_ldloc (mb, local_i);
+       mono_mb_emit_byte (mb, CEE_LDELEM_REF);
+       mono_mb_emit_stloc (mb, local_d);
+
+       /* res = d.Invoke ( args .. ); */
+       mono_mb_emit_ldloc (mb, local_d);
+       for (i = 0; i < sig->param_count; i++)
+               mono_mb_emit_ldarg (mb, i + 1);
+       if (!ctx) {
+               mono_mb_emit_op (mb, CEE_CALLVIRT, method);
+       } else {
+               MonoError error;
+               mono_mb_emit_op (mb, CEE_CALLVIRT, mono_class_inflate_generic_method_checked (method, &container->context, &error));
+               g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
+       }
+       if (!void_ret)
+               mono_mb_emit_stloc (mb, local_res);
+
+       /* i += 1 */
+       mono_mb_emit_add_to_local (mb, local_i, 1);
+
+       /* i < l */
+       mono_mb_emit_ldloc (mb, local_i);
+       mono_mb_emit_ldloc (mb, local_len);
+       mono_mb_emit_branch_label (mb, CEE_BLT, pos1);
+
+       /* return res */
+       if (!void_ret)
+               mono_mb_emit_ldloc (mb, local_res);
+       mono_mb_emit_byte (mb, CEE_RET);
+
        mb->skip_visibility = 1;
 #endif /* DISABLE_JIT */
 
@@ -3289,6 +3337,8 @@ mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt
        }
        mono_mb_free (mb);
 
+       /* mono_method_print_code (res); */
+
        return res;     
 }
 
@@ -7173,13 +7223,6 @@ mono_marshal_emit_native_wrapper (MonoImage *image, MonoMethodBuilder *mb, MonoM
 }
 #endif /* DISABLE_JIT */
 
-
-G_GNUC_UNUSED static void
-code_for (MonoMethod *method) {
-       MonoMethodHeader *header = mono_method_get_header (method);
-       printf ("CODE FOR %s: \n%s.\n", mono_method_full_name (method, TRUE), mono_disasm_code (0, method, header->code, header->code + header->code_size));
-}
-
 /**
  * mono_marshal_get_native_wrapper:
  * @method: The MonoMethod to wrap.
@@ -7402,7 +7445,7 @@ mono_marshal_get_native_wrapper (MonoMethod *method, gboolean check_exceptions,
        g_free (mspecs);
 #endif
 
-       /* code_for (res); */
+       /* mono_method_print_code (res); */
 
        return res;
 }
@@ -7606,7 +7649,7 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
 #ifdef USE_COOP_GC
        /* local 4, the local to be used when calling the reset_blocking funcs */
        /* tons of code hardcode 3 to be the return var */
-       coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int32_class->byval_arg);
+       coop_gc_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
 #endif
 
        mono_mb_emit_icon (mb, 0);
@@ -7977,7 +8020,7 @@ mono_marshal_get_managed_wrapper (MonoMethod *method, MonoClass *delegate_klass,
                        mono_metadata_free_marshal_spec (mspecs [i]);
        g_free (mspecs);
 
-       /* code_for (res); */
+       /* mono_method_print_code (res); */
 
        return res;
 }
@@ -8871,7 +8914,7 @@ mono_marshal_get_unbox_wrapper (MonoMethod *method)
                                                                                 mb, sig, sig->param_count + 16);
        mono_mb_free (mb);
 
-       /* code_for (res); */
+       /* mono_method_print_code (res); */
 
        return res;     
 }
index afaf812d778cbce27b04b5be8a030019af078bd9..b1ea15c1f22a611073b76af96b4ffc94dc614d2f 100644 (file)
@@ -11,7 +11,7 @@ g_list_prepend_mempool (MonoMemPool *mp, GList *list, gpointer data)
 {
        GList *new_list;
        
-       new_list = mono_mempool_alloc (mp, sizeof (GList));
+       new_list = (GList *) mono_mempool_alloc (mp, sizeof (GList));
        new_list->data = data;
        new_list->prev = list ? list->prev : NULL;
     new_list->next = list;
@@ -29,7 +29,7 @@ g_slist_prepend_mempool (MonoMemPool *mp, GSList *list, gpointer  data)
 {
        GSList *new_list;
        
-       new_list = mono_mempool_alloc (mp, sizeof (GSList));
+       new_list = (GSList *) mono_mempool_alloc (mp, sizeof (GSList));
        new_list->data = data;
        new_list->next = list;
 
@@ -42,7 +42,7 @@ g_slist_append_mempool (MonoMemPool *mp, GSList *list, gpointer data)
        GSList *new_list;
        GSList *last;
 
-       new_list = mono_mempool_alloc (mp, sizeof (GSList));
+       new_list = (GSList *) mono_mempool_alloc (mp, sizeof (GSList));
        new_list->data = data;
        new_list->next = NULL;
 
index e171606ed4c974217d6a878d6dda67f3306c391f..8e68399cfa43daa517bfc98e1c53b430182eaf52 100644 (file)
@@ -159,6 +159,9 @@ struct _MonoImage {
        /* Whenever this image contains uncompressed metadata */
        guint8 uncompressed_metadata : 1;
 
+       /* Whenever this image contains metadata only without PE data */
+       guint8 metadata_only : 1;
+
        guint8 checked_module_cctor : 1;
        guint8 has_module_cctor : 1;
 
@@ -333,6 +336,8 @@ struct _MonoImage {
        MonoClass **mvar_cache_fast;
        GHashTable *var_cache_slow;
        GHashTable *mvar_cache_slow;
+       GHashTable *var_cache_constrained;
+       GHashTable *mvar_cache_constrained;
 
        /* Maps malloc-ed char* pinvoke scope -> MonoDl* */
        GHashTable *pinvoke_scopes;
@@ -666,11 +671,6 @@ mono_metadata_parse_type_full               (MonoImage             *image,
                                             const char            *ptr,
                                             const char           **rptr);
 
-MonoMethodSignature *
-mono_metadata_parse_signature_full          (MonoImage             *image,
-                                            MonoGenericContainer  *generic_container,
-                                            guint32                token);
-
 MONO_API MonoMethodSignature *
 mono_metadata_parse_method_signature_full   (MonoImage             *image,
                                             MonoGenericContainer  *generic_container,
@@ -715,6 +715,12 @@ mono_metadata_lookup_generic_class          (MonoClass                *gclass,
 
 MonoGenericInst * mono_metadata_inflate_generic_inst  (MonoGenericInst *ginst, MonoGenericContext *context, MonoError *error);
 
+guint
+mono_metadata_generic_param_hash (MonoGenericParam *p);
+
+gboolean
+mono_metadata_generic_param_equal (MonoGenericParam *p1, MonoGenericParam *p2);
+
 void mono_dynamic_stream_reset  (MonoDynamicStream* stream);
 void mono_assembly_addref       (MonoAssembly *assembly);
 void mono_assembly_load_friends (MonoAssembly* ass);
@@ -794,6 +800,8 @@ void mono_image_load_names (MonoImage *image);
 
 MonoImage *mono_image_open_raw (const char *fname, MonoImageOpenStatus *status);
 
+MonoImage *mono_image_open_metadata_only (const char *fname, MonoImageOpenStatus *status);
+
 MonoException *mono_get_exception_field_access_msg (const char *msg);
 
 MonoException *mono_get_exception_method_access_msg (const char *msg);
@@ -815,5 +823,8 @@ mono_method_get_signature_checked (MonoMethod *method, MonoImage *image, guint32
 MonoMethod *
 mono_get_method_checked (MonoImage *image, guint32 token, MonoClass *klass, MonoGenericContext *context, MonoError *error);
 
+guint32
+mono_metadata_localscope_from_methoddef (MonoImage *meta, guint32 index);
+
 #endif /* __MONO_METADATA_INTERNALS_H__ */
 
index 138cb114b002d6625d832cc4e30c017104c84f67..5697b59d3380fd4e18ed4fb82b3d808ace99e8c3 100644 (file)
@@ -48,7 +48,6 @@ static void free_generic_class (MonoGenericClass *ginst);
 static void free_inflated_method (MonoMethodInflated *method);
 static void free_inflated_signature (MonoInflatedMethodSignature *sig);
 static void mono_metadata_field_info_full (MonoImage *meta, guint32 index, guint32 *offset, guint32 *rva, MonoMarshalSpec **marshal_spec, gboolean alloc_from_image);
-static guint mono_metadata_generic_param_hash (MonoGenericParam *p);
 
 /*
  * This enumeration is used to describe the data types in the metadata
@@ -369,7 +368,33 @@ const static unsigned char TableSchemas [] = {
        MONO_MT_TDOR_IDX,   /* "Constraint" }, */
        MONO_MT_END,
 
-#define NULL_SCHEMA_OFFSET GEN_CONSTRAINT_SCHEMA_OFFSET + 3
+#define DOCUMENT_SCHEMA_OFFSET GEN_CONSTRAINT_SCHEMA_OFFSET + 3
+       MONO_MT_BLOB_IDX,   /* Name */
+       MONO_MT_GUID_IDX,   /* HashAlgorithm */
+       MONO_MT_BLOB_IDX,   /* Hash */
+       MONO_MT_GUID_IDX,   /* Language */
+       MONO_MT_END,
+
+#define METHODBODY_SCHEMA_OFFSET DOCUMENT_SCHEMA_OFFSET + 5
+       MONO_MT_BLOB_IDX,   /* SequencePoints */
+       MONO_MT_END,
+
+#define LOCALSCOPE_SCHEMA_OFFSET METHODBODY_SCHEMA_OFFSET + 2
+       MONO_MT_TABLE_IDX,   /* Method */
+       MONO_MT_TABLE_IDX,   /* ImportScope */
+       MONO_MT_TABLE_IDX,   /* VariableList */
+       MONO_MT_TABLE_IDX,   /* ConstantList */
+       MONO_MT_UINT32,      /* StartOffset */
+       MONO_MT_UINT32,      /* Length */
+       MONO_MT_END,
+
+#define LOCALVARIABLE_SCHEMA_OFFSET LOCALSCOPE_SCHEMA_OFFSET + 7
+       MONO_MT_UINT16,      /* Attributes */
+       MONO_MT_UINT16,      /* Index */
+       MONO_MT_STRING_IDX,  /* Name */
+       MONO_MT_END,
+
+#define NULL_SCHEMA_OFFSET LOCALVARIABLE_SCHEMA_OFFSET + 4
        MONO_MT_END
 };
 
@@ -420,7 +445,14 @@ table_description [] = {
        NESTED_CLASS_SCHEMA_OFFSET,
        GENPARAM_SCHEMA_OFFSET, /* 0x2a */
        METHOD_SPEC_SCHEMA_OFFSET,
-       GEN_CONSTRAINT_SCHEMA_OFFSET
+       GEN_CONSTRAINT_SCHEMA_OFFSET,
+       NULL_SCHEMA_OFFSET,
+       NULL_SCHEMA_OFFSET,
+       NULL_SCHEMA_OFFSET,
+       DOCUMENT_SCHEMA_OFFSET, /* 0x30 */
+       METHODBODY_SCHEMA_OFFSET,
+       LOCALSCOPE_SCHEMA_OFFSET,
+       LOCALVARIABLE_SCHEMA_OFFSET
 };
 
 #ifdef HAVE_ARRAY_ELEM_INIT
@@ -483,8 +515,8 @@ finite maps tag{ t0, ..tn-1} is defined below. Note that to decode a physical ro
 inverse of this mapping.
 
  */
-#define rtsize(s,b) (((s) < (1 << (b)) ? 2 : 4))
-#define idx_size(tableidx) (meta->tables [(tableidx)].rows < 65536 ? 2 : 4)
+#define rtsize(meta,s,b) (((s) < (1 << (b)) ? 2 : 4))
+#define idx_size(meta,tableidx) ((meta)->tables [(tableidx)].rows < 65536 ? 2 : 4)
 
 /* Reference: Partition II - 23.2.6 */
 /*
@@ -537,82 +569,101 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        switch (tableindex) {
                        case MONO_TABLE_ASSEMBLYREFOS:
                                g_assert (i == 3);
-                               field_size = idx_size (MONO_TABLE_ASSEMBLYREF); break;
+                               field_size = idx_size (meta, MONO_TABLE_ASSEMBLYREF); break;
                        case MONO_TABLE_ASSEMBLYREFPROCESSOR:
                                g_assert (i == 1);
-                               field_size = idx_size (MONO_TABLE_ASSEMBLYREF); break;
+                               field_size = idx_size (meta, MONO_TABLE_ASSEMBLYREF); break;
                        case MONO_TABLE_CLASSLAYOUT:
                                g_assert (i == 2);
-                               field_size = idx_size (MONO_TABLE_TYPEDEF); break;
+                               field_size = idx_size (meta, MONO_TABLE_TYPEDEF); break;
                        case MONO_TABLE_EVENTMAP:
                                g_assert (i == 0 || i == 1);
-                               field_size = i ? idx_size (MONO_TABLE_EVENT):
-                                       idx_size(MONO_TABLE_TYPEDEF); 
+                               field_size = i ? idx_size (meta, MONO_TABLE_EVENT):
+                                       idx_size (meta, MONO_TABLE_TYPEDEF);
                                break;
                        case MONO_TABLE_EVENT_POINTER:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_EVENT); break;
+                               field_size = idx_size (meta, MONO_TABLE_EVENT); break;
                        case MONO_TABLE_EXPORTEDTYPE:
                                g_assert (i == 1);
                                /* the index is in another metadata file, so it must be 4 */
                                field_size = 4; break;
                        case MONO_TABLE_FIELDLAYOUT:
                                g_assert (i == 1);
-                               field_size = idx_size (MONO_TABLE_FIELD); break;
+                               field_size = idx_size (meta, MONO_TABLE_FIELD); break;
                        case MONO_TABLE_FIELDRVA:
                                g_assert (i == 1);
-                               field_size = idx_size (MONO_TABLE_FIELD); break;
+                               field_size = idx_size (meta, MONO_TABLE_FIELD); break;
                        case MONO_TABLE_FIELD_POINTER:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_FIELD); break;
+                               field_size = idx_size (meta, MONO_TABLE_FIELD); break;
                        case MONO_TABLE_IMPLMAP:
                                g_assert (i == 3);
-                               field_size = idx_size (MONO_TABLE_MODULEREF); break;
+                               field_size = idx_size (meta, MONO_TABLE_MODULEREF); break;
                        case MONO_TABLE_INTERFACEIMPL:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_TYPEDEF); break;
+                               field_size = idx_size (meta, MONO_TABLE_TYPEDEF); break;
                        case MONO_TABLE_METHOD:
                                g_assert (i == 5);
-                               field_size = idx_size (MONO_TABLE_PARAM); break;
+                               field_size = idx_size (meta, MONO_TABLE_PARAM); break;
                        case MONO_TABLE_METHODIMPL:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_TYPEDEF); break;
+                               field_size = idx_size (meta, MONO_TABLE_TYPEDEF); break;
                        case MONO_TABLE_METHODSEMANTICS:
                                g_assert (i == 1);
-                               field_size = idx_size (MONO_TABLE_METHOD); break;
+                               field_size = idx_size (meta, MONO_TABLE_METHOD); break;
                        case MONO_TABLE_METHOD_POINTER:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_METHOD); break;
+                               field_size = idx_size (meta, MONO_TABLE_METHOD); break;
                        case MONO_TABLE_NESTEDCLASS:
                                g_assert (i == 0 || i == 1);
-                               field_size = idx_size (MONO_TABLE_TYPEDEF); break;
+                               field_size = idx_size (meta, MONO_TABLE_TYPEDEF); break;
                        case MONO_TABLE_PARAM_POINTER:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_PARAM); break;
+                               field_size = idx_size (meta, MONO_TABLE_PARAM); break;
                        case MONO_TABLE_PROPERTYMAP:
                                g_assert (i == 0 || i == 1);
-                               field_size = i ? idx_size (MONO_TABLE_PROPERTY):
-                                       idx_size(MONO_TABLE_TYPEDEF); 
+                               field_size = i ? idx_size (meta, MONO_TABLE_PROPERTY):
+                                       idx_size (meta, MONO_TABLE_TYPEDEF);
                                break;
                        case MONO_TABLE_PROPERTY_POINTER:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_PROPERTY); break;
+                               field_size = idx_size (meta, MONO_TABLE_PROPERTY); break;
                        case MONO_TABLE_TYPEDEF:
                                g_assert (i == 4 || i == 5);
-                               field_size = i == 4 ? idx_size (MONO_TABLE_FIELD):
-                                       idx_size(MONO_TABLE_METHOD);
+                               field_size = i == 4 ? idx_size (meta, MONO_TABLE_FIELD):
+                                       idx_size (meta, MONO_TABLE_METHOD);
                                break;
                        case MONO_TABLE_GENERICPARAM:
                                g_assert (i == 2);
                                n = MAX (meta->tables [MONO_TABLE_METHOD].rows, meta->tables [MONO_TABLE_TYPEDEF].rows);
                                /*This is a coded token for 2 tables, so takes 1 bit */
-                               field_size = rtsize (n, 16 - MONO_TYPEORMETHOD_BITS);
+                               field_size = rtsize (meta, n, 16 - MONO_TYPEORMETHOD_BITS);
                                break;
                        case MONO_TABLE_GENERICPARAMCONSTRAINT:
                                g_assert (i == 0);
-                               field_size = idx_size (MONO_TABLE_GENERICPARAM);
+                               field_size = idx_size (meta, MONO_TABLE_GENERICPARAM);
+                               break;
+                       case MONO_TABLE_LOCALSCOPE:
+                               switch (i) {
+                               case 0:
+                                       // FIXME: This table is in another file
+                                       field_size = idx_size (meta, MONO_TABLE_METHOD);
+                                       break;
+                               case 1:
+                                       field_size = idx_size (meta, MONO_TABLE_IMPORTSCOPE);
+                                       break;
+                               case 2:
+                                       field_size = idx_size (meta, MONO_TABLE_LOCALVARIABLE);
+                                       break;
+                               case 3:
+                                       field_size = idx_size (meta, MONO_TABLE_LOCALCONSTANT);
+                                       break;
+                               default:
+                                       g_assert_not_reached ();
+                                       break;
+                               }
                                break;
-                               
                        default:
                                g_error ("Can't handle MONO_MT_TABLE_IDX for table %d element %d", tableindex, i);
                        }
@@ -627,7 +678,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_PROPERTY].rows);
 
                        /* 2 bits to encode tag */
-                       field_size = rtsize (n, 16-2);
+                       field_size = rtsize (meta, n, 16-2);
                        break;
 
                        /*
@@ -667,7 +718,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_MANIFESTRESOURCE].rows);
 
                        /* 5 bits to encode */
-                       field_size = rtsize (n, 16-5);
+                       field_size = rtsize (meta, n, 16-5);
                        break;
 
                        /*
@@ -688,7 +739,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_MEMBERREF].rows);
 
                        /* 3 bits to encode */
-                       field_size = rtsize (n, 16-3);
+                       field_size = rtsize (meta, n, 16-3);
                        break;
 
                        /*
@@ -700,7 +751,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_ASSEMBLY].rows);
 
                        /* 2 bits to encode */
-                       field_size = rtsize (n, 16-2);
+                       field_size = rtsize (meta, n, 16-2);
                        break;
 
                        /*
@@ -712,7 +763,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_EXPORTEDTYPE].rows);
 
                        /* 2 bits to encode tag */
-                       field_size = rtsize (n, 16-2);
+                       field_size = rtsize (meta, n, 16-2);
                        break;
 
                        /*
@@ -723,7 +774,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                                 meta->tables [MONO_TABLE_PARAM].rows);
 
                        /* 1 bit used to encode tag */
-                       field_size = rtsize (n, 16-1);
+                       field_size = rtsize (meta, n, 16-1);
                        break;
 
                        /*
@@ -734,7 +785,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                                 meta->tables [MONO_TABLE_METHOD].rows);
 
                        /* 1 bit used to encode tag */
-                       field_size = rtsize (n, 16-1);
+                       field_size = rtsize (meta, n, 16-1);
                        break;
 
                        /*
@@ -748,7 +799,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_TYPESPEC].rows);
 
                        /* 2 bits to encode */
-                       field_size = rtsize (n, 16-2);
+                       field_size = rtsize (meta, n, 16-2);
                        break;
 
                        /*
@@ -762,7 +813,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_TYPESPEC].rows);
 
                        /* 3 bits to encode */
-                       field_size = rtsize (n, 16 - 3);
+                       field_size = rtsize (meta, n, 16 - 3);
                        break;
                        
                        /*
@@ -773,7 +824,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                                 meta->tables [MONO_TABLE_MEMBERREF].rows);
 
                        /* 1 bit used to encode tag */
-                       field_size = rtsize (n, 16-1);
+                       field_size = rtsize (meta, n, 16-1);
                        break;
                        
                        /*
@@ -784,7 +835,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                                 meta->tables [MONO_TABLE_EVENT].rows);
 
                        /* 1 bit used to encode tag */
-                       field_size = rtsize (n, 16-1);
+                       field_size = rtsize (meta, n, 16-1);
                        break;
 
                        /*
@@ -797,7 +848,7 @@ mono_metadata_compute_size (MonoImage *meta, int tableindex, guint32 *result_bit
                        n = MAX (n, meta->tables [MONO_TABLE_TYPEREF].rows);
 
                        /* 2 bits used to encode tag (ECMA spec claims 3) */
-                       field_size = rtsize (n, 16 - 2);
+                       field_size = rtsize (meta, n, 16 - 2);
                        break;
                }
 
@@ -1746,20 +1797,18 @@ mono_metadata_get_param_attrs (MonoImage *m, int def, int param_count)
        return pattrs;
 }
 
+
 /*
- * mono_metadata_parse_signature_full:
+ * mono_metadata_parse_signature:
  * @image: metadata context
- * @generic_container: generic container
  * @toke: metadata token
  *
  * Decode a method signature stored in the STANDALONESIG table
  *
- * LOCKING: Assumes the loader lock is held.
- *
  * Returns: a MonoMethodSignature describing the signature.
  */
 MonoMethodSignature*
-mono_metadata_parse_signature_full (MonoImage *image, MonoGenericContainer *generic_container, guint32 token)
+mono_metadata_parse_signature (MonoImage *image, guint32 token)
 {
        MonoError error;
        MonoMethodSignature *ret;
@@ -1778,29 +1827,11 @@ mono_metadata_parse_signature_full (MonoImage *image, MonoGenericContainer *gene
        ptr = mono_metadata_blob_heap (image, sig);
        mono_metadata_decode_blob_size (ptr, &ptr);
 
-       ret = mono_metadata_parse_method_signature_full (image, generic_container, 0, ptr, NULL, &error);
-       if (!ret) {
-               mono_loader_set_error_from_mono_error (&error);
-               mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
-       }
+       ret = mono_metadata_parse_method_signature_full (image, NULL, 0, ptr, NULL, &error);
+       mono_error_cleanup (&error); /*FIXME don't swallow the error message*/
        return ret;
 }
 
-/*
- * mono_metadata_parse_signature:
- * @image: metadata context
- * @toke: metadata token
- *
- * Decode a method signature stored in the STANDALONESIG table
- *
- * Returns: a MonoMethodSignature describing the signature.
- */
-MonoMethodSignature*
-mono_metadata_parse_signature (MonoImage *image, guint32 token)
-{
-       return mono_metadata_parse_signature_full (image, NULL, token);
-}
-
 /*
  * mono_metadata_signature_alloc:
  * @image: metadata context
@@ -4314,6 +4345,38 @@ mono_metadata_declsec_from_index (MonoImage *meta, guint32 index)
        return loc.result;
 }
 
+/*
+ * mono_metadata_localscope_from_methoddef:
+ * @meta: metadata context
+ * @index: methoddef index
+ * 
+ * Returns: the 1-based index into the LocalScope table of the first
+ * scope which belongs to the method described by @index.
+ * Returns 0 if no such row is found.
+ */
+guint32
+mono_metadata_localscope_from_methoddef (MonoImage *meta, guint32 index)
+{
+       MonoTableInfo *tdef = &meta->tables [MONO_TABLE_LOCALSCOPE];
+       locator_t loc;
+
+       if (!tdef->base)
+               return 0;
+
+       loc.idx = index;
+       loc.col_idx = MONO_LOCALSCOPE_METHOD;
+       loc.t = tdef;
+
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+               return 0;
+
+       /* Find the first entry by searching backwards */
+       while ((loc.result > 0) && (mono_metadata_decode_row_col (tdef, loc.result - 1, MONO_LOCALSCOPE_METHOD) == index))
+               loc.result --;
+
+       return loc.result + 1;
+}
+
 #ifdef DEBUG
 static void
 mono_backtrace (int limit)
@@ -4449,12 +4512,12 @@ mono_type_size (MonoType *t, int *align)
        }
        case MONO_TYPE_VAR:
        case MONO_TYPE_MVAR:
-               if (t->data.generic_param->gshared_constraint == 0 || t->data.generic_param->gshared_constraint == MONO_TYPE_VALUETYPE) {
+               if (!t->data.generic_param->gshared_constraint || t->data.generic_param->gshared_constraint->type == MONO_TYPE_VALUETYPE) {
                        *align = MONO_ABI_ALIGNOF (gpointer);
                        return sizeof (gpointer);
                } else {
                        /* The gparam can only match types given by gshared_constraint */
-                       simple_type = t->data.generic_param->gshared_constraint;
+                       return mono_type_size (t->data.generic_param->gshared_constraint, align);
                        goto again;
                }
        default:
@@ -4500,7 +4563,6 @@ mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open)
        }
 
        simple_type = t->type;
- again:
        switch (simple_type) {
        case MONO_TYPE_BOOLEAN:
        case MONO_TYPE_CHAR:
@@ -4524,13 +4586,12 @@ mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open)
        case MONO_TYPE_VAR:
        case MONO_TYPE_MVAR:
                g_assert (allow_open);
-               if (t->data.generic_param->gshared_constraint == 0 || t->data.generic_param->gshared_constraint == MONO_TYPE_VALUETYPE) {
+               if (!t->data.generic_param->gshared_constraint || t->data.generic_param->gshared_constraint->type == MONO_TYPE_VALUETYPE) {
                        *align = stack_slot_align;
                        return stack_slot_size;
                } else {
                        /* The gparam can only match types given by gshared_constraint */
-                       simple_type = t->data.generic_param->gshared_constraint;
-                       goto again;
+                       return mono_type_stack_size_internal (t->data.generic_param->gshared_constraint, align, allow_open);
                }
        case MONO_TYPE_TYPEDBYREF:
                *align = stack_slot_align;
@@ -4719,13 +4780,15 @@ mono_metadata_type_hash (MonoType *t1)
        }
 }
 
-static guint
+guint
 mono_metadata_generic_param_hash (MonoGenericParam *p)
 {
        guint hash;
        MonoGenericParamInfo *info;
 
-       hash = (mono_generic_param_num (p) << 2) | p->gshared_constraint;
+       hash = (mono_generic_param_num (p) << 2);
+       if (p->gshared_constraint)
+               hash = ((hash << 5) - hash) ^ mono_metadata_type_hash (p->gshared_constraint);
        info = mono_generic_param_info (p);
        /* Can't hash on the owner klass/method, since those might not be set when this is called */
        if (info)
@@ -4734,14 +4797,19 @@ mono_metadata_generic_param_hash (MonoGenericParam *p)
 }
 
 static gboolean
-mono_metadata_generic_param_equal (MonoGenericParam *p1, MonoGenericParam *p2, gboolean signature_only)
+mono_metadata_generic_param_equal_internal (MonoGenericParam *p1, MonoGenericParam *p2, gboolean signature_only)
 {
        if (p1 == p2)
                return TRUE;
        if (mono_generic_param_num (p1) != mono_generic_param_num (p2))
                return FALSE;
-       if (p1->gshared_constraint != p2->gshared_constraint)
-               return FALSE;
+       if (p1->gshared_constraint && p2->gshared_constraint) {
+               if (!mono_metadata_type_equal (p1->gshared_constraint, p2->gshared_constraint))
+                       return FALSE;
+       } else {
+               if (p1->gshared_constraint != p2->gshared_constraint)
+                       return FALSE;
+       }
 
        /*
         * We have to compare the image as well because if we didn't,
@@ -4767,6 +4835,12 @@ mono_metadata_generic_param_equal (MonoGenericParam *p1, MonoGenericParam *p2, g
        return signature_only;
 }
 
+gboolean
+mono_metadata_generic_param_equal (MonoGenericParam *p1, MonoGenericParam *p2)
+{
+       return mono_metadata_generic_param_equal_internal (p1, p2, TRUE);
+}
+
 static gboolean
 mono_metadata_class_equal (MonoClass *c1, MonoClass *c2, gboolean signature_only)
 {
@@ -4779,10 +4853,10 @@ mono_metadata_class_equal (MonoClass *c1, MonoClass *c2, gboolean signature_only
        if (c1->generic_container && c2->generic_class)
                return _mono_metadata_generic_class_container_equal (c2->generic_class, c1, signature_only);
        if ((c1->byval_arg.type == MONO_TYPE_VAR) && (c2->byval_arg.type == MONO_TYPE_VAR))
-               return mono_metadata_generic_param_equal (
+               return mono_metadata_generic_param_equal_internal (
                        c1->byval_arg.data.generic_param, c2->byval_arg.data.generic_param, signature_only);
        if ((c1->byval_arg.type == MONO_TYPE_MVAR) && (c2->byval_arg.type == MONO_TYPE_MVAR))
-               return mono_metadata_generic_param_equal (
+               return mono_metadata_generic_param_equal_internal (
                        c1->byval_arg.data.generic_param, c2->byval_arg.data.generic_param, signature_only);
        if (signature_only &&
            (c1->byval_arg.type == MONO_TYPE_SZARRAY) && (c2->byval_arg.type == MONO_TYPE_SZARRAY))
@@ -4872,10 +4946,10 @@ do_mono_metadata_type_equal (MonoType *t1, MonoType *t2, gboolean signature_only
                return _mono_metadata_generic_class_equal (
                        t1->data.generic_class, t2->data.generic_class, signature_only);
        case MONO_TYPE_VAR:
-               return mono_metadata_generic_param_equal (
+               return mono_metadata_generic_param_equal_internal (
                        t1->data.generic_param, t2->data.generic_param, signature_only);
        case MONO_TYPE_MVAR:
-               return mono_metadata_generic_param_equal (
+               return mono_metadata_generic_param_equal_internal (
                        t1->data.generic_param, t2->data.generic_param, signature_only);
        case MONO_TYPE_FNPTR:
                return mono_metadata_fnptr_equal (t1->data.method, t2->data.method, signature_only);
index f75606c501039317808607c7bdfaccbfe8930a97..36a42db0bf7d13c23d3969b39cc8195831eb52d3 100644 (file)
@@ -153,7 +153,19 @@ mono_monitor_cleanup (void)
        for (mon = monitor_freelist; mon; mon = mon->data)
                mon->wait_list = (gpointer)-1;
 
-       /* FIXME: This still crashes with sgen (async_read.exe) */
+       /*
+        * FIXME: This still crashes with sgen (async_read.exe)
+        *
+        * In mini_cleanup() we first call mono_runtime_cleanup(), which calls
+        * mono_monitor_cleanup(), which is supposed to free all monitor memory.
+        *
+        * Later in mini_cleanup(), we call mono_domain_free(), which calls
+        * mono_gc_clear_domain(), which frees all weak links associated with objects.
+        * Those weak links reside in the monitor structures, which we've freed earlier.
+        *
+        * Unless we fix this dependency in the shutdown sequence this code has to remain
+        * disabled, or at least the call to g_free().
+        */
        /*
        for (marray = monitor_allocated; marray; marray = next) {
                int i;
@@ -1133,7 +1145,9 @@ ves_icall_System_Threading_Monitor_Monitor_wait (MonoObject *obj, guint32 ms)
                /* Poll the event again, just in case it was signalled
                 * while we were trying to regain the monitor lock
                 */
+               MONO_PREPARE_BLOCKING
                ret = WaitForSingleObjectEx (event, 0, FALSE);
+               MONO_FINISH_BLOCKING
        }
 
        /* Pulse will have popped our event from the queue if it signalled
index 166c9ab63856ec6c3a3ed517aa69c15cf6ddf15e..6b04225241975cb6f86e66766f536c637d8ec821 100644 (file)
 #include <mono/metadata/debug-mono-symfile.h>
 #include <mono/utils/mono-compiler.h>
 
-
-void            mono_debugger_initialize                    (void);
-
 void            mono_debugger_lock                          (void);
 void            mono_debugger_unlock                        (void);
 
-gchar *
-mono_debugger_check_runtime_version (const char *filename);
+void
+mono_debug_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points);
+
+MONO_API void
+mono_debug_free_locals (MonoDebugLocalsInfo *info);
 
 #endif /* __MONO_DEBUG_DEBUGGER_H__ */
index a62305b104639e2e8d559b41a1d42de68dd36198..fb12af22a48bae251ef9ac7ed750a952ce00b87f 100644 (file)
@@ -20,6 +20,7 @@
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/mempool.h>
+#include <mono/metadata/debug-mono-ppdb.h>
 #include <string.h>
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
@@ -59,7 +60,6 @@ static GHashTable *data_table_hash;
 
 static mono_mutex_t debugger_lock_mutex;
 
-static int initialized = 0;
 static gboolean is_attached = FALSE;
 
 static MonoDebugHandle     *mono_debug_open_image      (MonoImage *image, const guint8 *raw_contents, int size);
@@ -111,6 +111,8 @@ lookup_data_table (MonoDomain *domain)
 static void
 free_debug_handle (MonoDebugHandle *handle)
 {
+       if (handle->ppdb)
+               mono_ppdb_close (handle);
        if (handle->symfile)
                mono_debug_close_mono_symbol_file (handle->symfile);
        /* decrease the refcount added with mono_image_addref () */
@@ -135,7 +137,7 @@ mono_debug_init (MonoDebugFormat format)
        mono_debug_initialized = TRUE;
        mono_debug_format = format;
 
-       mono_debugger_initialize ();
+       mono_mutex_init_recursive (&debugger_lock_mutex);
 
        mono_debugger_lock ();
 
@@ -259,8 +261,11 @@ mono_debug_open_image (MonoImage *image, const guint8 *raw_contents, int size)
        handle->image = image;
        mono_image_addref (image);
 
-       handle->symfile = mono_debug_open_mono_symbols (
-               handle, raw_contents, size, FALSE);
+       /* Try a ppdb file first */
+       handle->ppdb = mono_ppdb_load_file (handle->image);
+
+       if (!handle->ppdb)
+               handle->symfile = mono_debug_open_mono_symbols (handle, raw_contents, size, FALSE);
 
        g_hash_table_insert (mono_debug_handles, image, handle);
 
@@ -298,7 +303,9 @@ lookup_method_func (gpointer key, gpointer value, gpointer user_data)
        if (data->minfo)
                return;
 
-       if (handle->symfile)
+       if (handle->ppdb)
+               data->minfo = mono_ppdb_lookup_method (handle, data->method);
+       else if (handle->symfile)
                data->minfo = mono_debug_symfile_lookup_method (handle, data->method);
 }
 
@@ -744,7 +751,12 @@ mono_debug_lookup_source_location (MonoMethod *method, guint32 address, MonoDoma
 
        mono_debugger_lock ();
        minfo = mono_debug_lookup_method_internal (method);
-       if (!minfo || !minfo->handle || !minfo->handle->symfile || !mono_debug_symfile_is_loaded (minfo->handle->symfile)) {
+       if (!minfo || !minfo->handle) {
+               mono_debugger_unlock ();
+               return NULL;
+       }
+
+       if (!minfo->handle->ppdb && (!minfo->handle->symfile || !mono_debug_symfile_is_loaded (minfo->handle->symfile))) {
                mono_debugger_unlock ();
                return NULL;
        }
@@ -755,7 +767,10 @@ mono_debug_lookup_source_location (MonoMethod *method, guint32 address, MonoDoma
                return NULL;
        }
 
-       location = mono_debug_symfile_lookup_location (minfo, offset);
+       if (minfo->handle->ppdb)
+               location = mono_ppdb_lookup_location (minfo, offset);
+       else
+               location = mono_debug_symfile_lookup_location (minfo, offset);
        mono_debugger_unlock ();
        return location;
 }
@@ -764,7 +779,7 @@ mono_debug_lookup_source_location (MonoMethod *method, guint32 address, MonoDoma
  * mono_debug_lookup_locals:
  *
  *   Return information about the local variables of MINFO.
- * The result should be freed using mono_debug_symfile_free_locals ().
+ * The result should be freed using mono_debug_free_locals ().
  */
 MonoDebugLocalsInfo*
 mono_debug_lookup_locals (MonoMethod *method)
@@ -777,17 +792,41 @@ mono_debug_lookup_locals (MonoMethod *method)
 
        mono_debugger_lock ();
        minfo = mono_debug_lookup_method_internal (method);
-       if (!minfo || !minfo->handle || !minfo->handle->symfile || !mono_debug_symfile_is_loaded (minfo->handle->symfile)) {
+       if (!minfo || !minfo->handle) {
                mono_debugger_unlock ();
                return NULL;
        }
 
-       res = mono_debug_symfile_lookup_locals (minfo);
+       if (minfo->handle->ppdb) {
+               res = mono_ppdb_lookup_locals (minfo);
+       } else {
+               if (!minfo->handle->symfile || !mono_debug_symfile_is_loaded (minfo->handle->symfile))
+                       res = NULL;
+               else
+                       res = mono_debug_symfile_lookup_locals (minfo);
+       }
        mono_debugger_unlock ();
 
        return res;
 }
 
+/*
+ * mono_debug_free_locals:
+ *
+ *   Free all the data allocated by mono_debug_lookup_locals ().
+ */
+void
+mono_debug_free_locals (MonoDebugLocalsInfo *info)
+{
+       int i;
+
+       for (i = 0; i < info->num_locals; ++i)
+               g_free (info->locals [i].name);
+       g_free (info->locals);
+       g_free (info->code_blocks);
+       g_free (info);
+}
+
 /**
  * mono_debug_free_source_location:
  * @location: A `MonoDebugSourceLocation'.
@@ -907,24 +946,17 @@ open_symfile_from_bundle (MonoImage *image)
 void
 mono_debugger_lock (void)
 {
-       g_assert (initialized);
+       g_assert (mono_debug_initialized);
        mono_mutex_lock (&debugger_lock_mutex);
 }
 
 void
 mono_debugger_unlock (void)
 {
-       g_assert (initialized);
+       g_assert (mono_debug_initialized);
        mono_mutex_unlock (&debugger_lock_mutex);
 }
 
-void
-mono_debugger_initialize ()
-{
-       mono_mutex_init_recursive (&debugger_lock_mutex);
-       initialized = 1;
-}
-
 /**
  * mono_debug_enabled:
  *
@@ -935,3 +967,12 @@ mono_debug_enabled (void)
 {
        return mono_debug_format != MONO_DEBUG_FORMAT_NONE;
 }
+
+void
+mono_debug_get_seq_points (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int **source_files, MonoSymSeqPoint **seq_points, int *n_seq_points)
+{
+       if (minfo->handle->ppdb)
+               mono_ppdb_get_seq_points (minfo, source_file, source_file_list, source_files, seq_points, n_seq_points);
+       else
+               mono_debug_symfile_get_seq_points (minfo, source_file, source_file_list, source_files, seq_points, n_seq_points);
+}
index 839ae2c547f00a2ea1a8f37cc956c9a95bbf5843..c2134bb2e03770a6238a2fb3ddd3b112fccb079d 100644 (file)
@@ -16,6 +16,7 @@ typedef struct _MonoSymbolTable                       MonoSymbolTable;
 typedef struct _MonoDebugDataTable             MonoDebugDataTable;
 
 typedef struct _MonoSymbolFile                 MonoSymbolFile;
+typedef struct _MonoPPDBFile                   MonoPPDBFile;
 
 typedef struct _MonoDebugHandle                        MonoDebugHandle;
 
@@ -74,6 +75,7 @@ struct _MonoDebugHandle {
        MonoImage *image;
        MonoDebugDataTable *type_table;
        MonoSymbolFile *symfile;
+       MonoPPDBFile *ppdb;
 };
 
 struct _MonoDebugMethodJitInfo {
index 343b97194a2144e4bb4104c6cc07f03014af20ab..acc2590193fc74fac651b5f5a2237834460584be 100644 (file)
@@ -14,7 +14,49 @@ typedef union {
        unsigned char cval [8];
 } mono_rdouble;
 
-#if NO_UNALIGNED_ACCESS
+#if defined(__s390x__)
+
+#define read16(x)      s390x_read16(*(guint16 *)(x))
+#define read32(x)      s390x_read32(*(guint32 *)(x))
+#define read64(x)      s390x_read64(*(guint64 *)(x))
+
+static __inline__ guint16
+s390x_read16(guint16 x)
+{
+       guint16 ret;
+
+       __asm__ ("      lrvr    %0,%1\n"
+                "      sra     %0,16\n"
+                : "=r" (ret) : "r" (x));
+
+       return(ret);
+}
+
+static __inline__ guint32
+s390x_read32(guint32 x)
+{
+       guint32 ret;
+
+       __asm__ ("      lrvr    %0,%1\n"
+                : "=r" (ret) : "r" (x));
+
+       return(ret);
+}
+
+static __inline__ guint64
+s390x_read64(guint64 x)
+{
+       guint64 ret;
+
+       __asm__ ("      lrvgr   %0,%1\n"
+                : "=r" (ret) : "r" (x));
+
+       return(ret);
+}
+
+#else
+
+# if NO_UNALIGNED_ACCESS
 
 guint16 mono_read16 (const unsigned char *x);
 guint32 mono_read32 (const unsigned char *x);
@@ -24,12 +66,14 @@ guint64 mono_read64 (const unsigned char *x);
 #define read32(x) (mono_read32 ((const unsigned char *)(x)))
 #define read64(x) (mono_read64 ((const unsigned char *)(x)))
 
-#else
+# else
 
 #define read16(x) GUINT16_FROM_LE (*((const guint16 *) (x)))
 #define read32(x) GUINT32_FROM_LE (*((const guint32 *) (x)))
 #define read64(x) GUINT64_FROM_LE (*((const guint64 *) (x)))
 
+# endif
+
 #endif
 
 #define readr4(x,dest) \
diff --git a/mono/metadata/monosn.c b/mono/metadata/monosn.c
deleted file mode 100644 (file)
index c9114c4..0000000
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * monosn.c: Mono String Name Utility
- *
- * Author:
- *   Paolo Molaro (lupus@ximian.com)
- *
- * Copyright 2002-2003 Ximian, Inc (http://www.ximian.com)
- * Copyright 2004-2009 Novell, Inc (http://www.novell.com)
- *
- */
-#include <mono/metadata/class.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/tokentype.h>
-#include <mono/metadata/appdomain.h>
-#include <mono/metadata/assembly.h>
-#include "mono/utils/mono-digest.h"
-/* trim headers */
-
-#include <string.h>
-#include <ctype.h>
-
-#define RSA1_MAGIC     0x32415351
-#define RSA2_MAGIC     0x32415352
-#define PRIVKEY_MAGIC  0x00000207
-#define PUBKEY_MAGIC   0x00008004
-
-typedef struct {
-       guchar type, version;
-       guint16 reserved1;
-       guint32 algid;
-} MonoKeyHeader;
-
-typedef struct {
-       MonoKeyHeader header;
-       guint32 bitlen;
-       guint32 exponent;
-       guchar  modulus [MONO_ZERO_LEN_ARRAY];
-} MonoRSAPubHeader;
-
-static void
-print_data (const char *data, int len)
-{
-       int i;
-       for (i = 0; i < len; ++i) {
-               if (i && !(i % 32))
-                       printf ("\n");
-               printf ("%02x", data [i] & 0xff);
-       }
-       printf ("\n");
-}
-
-static int
-show_token (const char *file, int is_assembly, int show_pubkey) {
-       char token [20];
-       if (!is_assembly) {
-               char *pubkey;
-               gsize len;
-               if (!g_file_get_contents (file, &pubkey, &len, NULL)) {
-                       printf ("Cannot load file: %s\n", file);
-                       return 2;
-               }
-               mono_digest_get_public_token (token, pubkey, len);
-               if (show_pubkey) {
-                       printf ("Public key is\n");
-                       print_data (pubkey, len);
-               }
-               g_free (pubkey);
-       } else {
-               MonoImage *image;
-               const char *pubkey;
-               guint32 len;
-
-               mono_metadata_init ();
-        mono_images_init ();
-        mono_assemblies_init ();
-        mono_loader_init ();
-
-               image = mono_image_open (file, NULL);
-               if (!image) {
-                       printf ("Cannot open image file: %s\n", file);
-                       return 2;
-               }
-               pubkey = mono_image_get_public_key (image, &len);
-               if (!pubkey) {
-                       printf ("%s does not represent a strongly named assembly\n", mono_image_get_name(image));
-                       mono_image_close (image);
-                       return 2;
-               }
-               if (show_pubkey) {
-                       printf ("Public key is\n");
-                       print_data (pubkey, len);
-               }
-               mono_digest_get_public_token (token, pubkey, len);
-               mono_image_close (image);
-       }
-       printf ("Public key token is ");
-       print_data (token, 8);
-       return 0;
-}
-
-static int
-extract_data_to_file (int pubk, const char *assembly, const char *outfile) {
-       MonoImage *image;
-       FILE *file;
-       const char *pubkey;
-       guint32 len;
-       
-       image = mono_image_open (assembly, NULL);
-       if (!image) {
-               printf ("Cannot open image file: %s\n", assembly);
-               return 2;
-       }
-       if (pubk)
-               pubkey = mono_image_get_public_key (image, &len);
-       else
-               pubkey = mono_image_get_strong_name (image, &len);
-       if (!pubkey) {
-               printf ("%s does not represent a strongly named assembly\n", mono_image_get_name(image));
-               mono_image_close (image);
-               return 2;
-       }
-       if (!(file = fopen (outfile, "wb"))) {
-               printf ("Cannot open output file: %s\n", outfile);
-               return 2;
-       }
-       fwrite (pubkey, len, 1, file);
-       fclose (file);
-       mono_image_close (image);
-       return 0;
-}
-
-const static guint8 asciitable [128] = {
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0x3e, 0xff, 0xff, 0xff, 0x3f,
-       0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
-       0x3a, 0x3b, 0x3c, 0x3d, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-       0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
-       0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
-       0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
-       0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
-       0x19, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,
-       0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
-       0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
-       0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
-       0x31, 0x32, 0x33, 0xff, 0xff, 0xff,
-       0xff, 0xff
-};
-
-/* data is changed in place */
-static char*
-pem_decode (guchar *data, int len, int *rlen) {
-       guchar *p, *s;
-       int b64len, i, rem = 0, full;
-       int b0, b1, b2, b3, offset, dlen;
-
-       p = strstr (data, "-----BEGIN");
-       s = strstr (data, "\n-----END");
-       if (!p || !s)
-               return NULL;
-       while (*p != '\n') p++;
-       *s = 0;
-       s = data = p;
-       while (*p) {
-               if (isalnum (*p) || *p == '+' || *p == '=' || *p == '/') {
-                       *s++ = *p++;
-               } else {
-                       p++;
-               }
-       }
-       *s = 0;
-       b64len = s - data;
-
-       full = b64len >> 2;
-       if (data [b64len - 1] == '=') {
-               full--;
-               rem++;
-       }
-       if (data [b64len - 2] == '=')
-               rem++;
-       offset = 0;
-       p = data;
-       for (i = 0; i < full; ++i) {
-               b0 = asciitable [data [offset++]];
-               b1 = asciitable [data [offset++]];
-               b2 = asciitable [data [offset++]];
-               b3 = asciitable [data [offset++]];
-
-               *p++ = (b0 << 2) | (b1 >> 4);
-               *p++ = (b1 << 4) | (b2 >> 2);
-               *p++ = (b2 << 6) | b3;
-       }
-       dlen = full * 3;
-       switch (rem) {
-       case 1:
-               b0 = asciitable [data [offset++]];
-               b1 = asciitable [data [offset++]];
-               b2 = asciitable [data [offset++]];
-
-               *p++ = (b0 << 2) | (b1 >> 4);
-               *p++ = (b1 << 4) | (b2 >> 2);
-               dlen += 2;
-               break;
-       case 2:
-               b0 = asciitable [data [offset++]];
-               b1 = asciitable [data [offset++]];
-
-               *p++ = (b0 << 2) | (b1 >> 4);
-               dlen++;
-               break;
-       }
-       *rlen = dlen;
-       return data;
-}
-
-enum {
-       DER_INTEGER = 2,
-       DER_BITSTRING = 3,
-       DER_NULL = 5,
-       DER_OBJID = 6,
-       DER_SEQUENCE = 16,
-       DER_INVALID = -1,
-       DER_END = -2
-};
-
-static int
-der_get_next (guchar *data, int dlen, int offset, int *len, guchar **rdata)
-{
-       int i, l, type, val;
-
-       if (offset + 1 >= dlen)
-               return DER_END;
-
-       type = data [offset++] & 0x1f;
-       if (data [offset] == 0x80) /* not supported */
-               return DER_INVALID;
-       l = 0;
-       if (data [offset] & 0x80) {
-               val = data [offset++] & 0x7f;
-               for (i = 0; i < val; ++i) {
-                       l = (l << 8) | data [offset++];
-               }
-       } else {
-               l = data [offset++];
-       }
-       *len = l;
-       *rdata = data + offset;
-       return type;
-}
-
-static void
-dump_asn1 (guchar *key, int len) {
-       int type, offset, elen;
-       guchar *edata;
-
-       offset = 0;
-       while ((type = der_get_next (key, len, offset, &elen, &edata)) >= 0) {
-               switch (type) {
-               case DER_SEQUENCE:
-                       g_print ("seq (%d) at %d\n", elen, offset);
-                       dump_asn1 (edata, elen);
-                       offset = elen + edata - key;
-                       break;
-               case DER_BITSTRING:
-                       g_print ("bits (%d) at %p + %d\n", elen, edata, offset);
-                       dump_asn1 (edata + 1, elen);
-                       offset = 1 + elen + edata - key;
-                       break;
-               case DER_INTEGER:
-                       g_print ("int (%d) at %d\n", elen, offset);
-                       offset = elen + edata - key;
-                       break;
-               case DER_NULL:
-                       g_print ("null (%d) at %d\n", elen, offset);
-                       offset = elen + edata - key;
-                       break;
-               case DER_OBJID:
-                       g_print ("objid (%d) at %d\n", elen, offset);
-                       offset = elen + edata - key;
-                       break;
-               default:
-                       return;
-               }
-       }
-}
-
-static guint32
-get_der_int (guchar *data, int len)
-{
-       guint32 val = 0;
-       int i;
-       for (i = 0; i < len; ++i)
-               val = (val << 8) | data [i];
-       return val;
-}
-
-static void
-mem_reverse (guchar *p, int len) {
-       int i, t;
-
-       for (i = 0; i < len/2; ++i) {
-               t = p [i];
-               p [i] = p [len - i - 1];
-               p [len - i - 1] = t;
-       }
-}
-
-static int
-convert_der_key (guchar *key, int len, guchar **ret, int *retlen)
-{
-       int type, offset, val, elen;
-       guchar *r, *edata;
-
-       offset = 0;
-       type = der_get_next (key, len, offset, &elen, &edata);
-       if (type != DER_SEQUENCE)
-               return 1;
-       key = edata;
-       len = elen;
-       type = der_get_next (key, len, offset, &elen, &edata);
-       if (type == DER_INTEGER) {
-               int i;
-               guchar *ints [6];
-               int lengths [6];
-               guchar *p;
-               /* a private RSA key */
-               val = get_der_int (edata, elen);
-               if (val != 0)
-                       return 2;
-               offset = elen + edata - key;
-               /* the modulus */
-               type = der_get_next (key, len, offset, &elen, &edata);
-               if (type != DER_INTEGER)
-                       return 2;
-               offset = elen + edata - key;
-               if ((elen & 1) && *edata == 0) {
-                       edata ++;
-                       elen--;
-               }
-               r = g_new0 (guchar, elen*4 + elen/2 + 20);
-               r [0] = 0x7; r [1] = 0x2; r [5] = 0x24;
-               r [8] = 0x52; r [9] = 0x53; r [10] = 0x41; r [11] = 0x32;
-               *(guint32*)(r + 12) = elen * 8;
-               memcpy (r + 20, edata, elen);
-               mem_reverse (r + 20, elen);
-               p = r + 20 + elen;
-               /* the exponent */
-               type = der_get_next (key, len, offset, &elen, &edata);
-               if (type != DER_INTEGER)
-                       return 2;
-               offset = elen + edata - key;
-               val = get_der_int (edata, elen);
-               *(guint32*)(r + 16) = val;
-               for (i = 0; i < 6; i++) {
-                       type = der_get_next (key, len, offset, &elen, &edata);
-                       if (type != DER_INTEGER)
-                               return 2;
-                       offset = elen + edata - key;
-                       if ((elen & 1) && *edata == 0) {
-                               edata++;
-                               elen--;
-                       }
-                       ints [i] = edata;
-                       lengths [i] = elen;
-                       g_print ("len: %d\n", elen);
-               }
-               /* prime1 */
-               g_print ("prime1 at %d (%d)\n", p-r, lengths [1]);
-               memcpy (p, ints [1], lengths [1]);
-               mem_reverse (p, lengths [1]);
-               p += lengths [1];
-               /* prime2 */
-               g_print ("prime2 at %d (%d)\n", p-r, lengths [2]);
-               memcpy (p, ints [2], lengths [2]);
-               mem_reverse (p, lengths [2]);
-               p += lengths [2];
-               /* exponent1 */
-               g_print ("exp1 at %d (%d)\n", p-r, lengths [3]);
-               memcpy (p, ints [3], lengths [3]);
-               mem_reverse (p, lengths [3]);
-               p += lengths [3];
-               /* exponent2 */
-               g_print ("exp2 at %d (%d)\n", p-r, lengths [4]);
-               memcpy (p, ints [4], lengths [4]);
-               mem_reverse (p, lengths [4]);
-               p += lengths [4];
-               /* coeff */
-               g_print ("coeff at %d (%d)\n", p-r, lengths [5]);
-               memcpy (p, ints [5], lengths [5]);
-               mem_reverse (p, lengths [5]);
-               p += lengths [5];
-               /* private exponent */
-               g_print ("prive at %d (%d)\n", p-r, lengths [0]);
-               memcpy (p, ints [0], lengths [0]);
-               mem_reverse (p, lengths [0]);
-               p += lengths [0];
-               *ret = r;
-               *retlen = p-r;
-               return 0;
-       }
-       return 1;
-}
-
-static int
-convert_format (const char *from, const char *outfile) {
-       guchar *key, *bindata, *keyout;
-       gsize len;
-       int binlen, ret, lenout;
-       FILE *file;
-       
-       if (!g_file_get_contents (from, (gchar**) &key, &len, NULL)) {
-               printf ("Cannot load file: %s\n", from);
-               return 2;
-       }
-
-       if (*key == 0 || *key == 0x24) {
-               g_free (key);
-               printf ("Cannot convert to pem format yet\n");
-               return 2;
-       }
-       bindata = pem_decode (key, len, &binlen);
-       if (!(file = fopen (outfile, "wb"))) {
-               g_free (key);
-               printf ("Cannot open output file: %s\n", outfile);
-               return 2;
-       }
-       dump_asn1 (bindata, binlen);
-       ret = convert_der_key (bindata, binlen, &keyout, &lenout);
-       if (!ret) {
-               fwrite (keyout, lenout, 1, file);
-               g_free (keyout);
-       } else {
-               printf ("Cannot convert key\n");
-       }
-       fclose (file);
-       g_free (key);
-       return ret;
-}
-
-static int
-get_digest (const char *from, const char *outfile)
-{
-       guchar *ass;
-       guchar digest [20];
-       gsize len;
-       guint32 snpos, snsize;
-       FILE *file;
-       MonoImage *image;
-       MonoSHA1Context sha1;
-       
-       image = mono_image_open (from, NULL);
-       if (!image) {
-               printf ("Cannot open image file: %s\n", from);
-               return 2;
-       }
-       snpos = mono_image_strong_name_position (image, &snsize);
-       if (!snpos) {
-               /*printf ("%s does not represent a strongly named assembly\n", from);
-               mono_image_close (image);
-               return 2;*/
-               snsize = 0;
-       }
-       
-       if (!g_file_get_contents (from, (gchar**) &ass, &len, NULL)) {
-               printf ("Cannot load file: %s\n", from);
-               mono_image_close (image);
-               return 2;
-       }
-       /* 
-        * FIXME: we may need to set the STRONGNAMESIGNED flag in the cli header 
-        * before taking the sha1 digest of the image.
-        */
-       mono_sha1_init (&sha1);
-       mono_sha1_update (&sha1, ass, snpos);
-       mono_sha1_update (&sha1, ass + snpos + snsize, len - snsize - snpos);
-       mono_sha1_final (&sha1, digest);
-
-       mono_image_close (image);
-       g_free (ass);
-       if (!(file = fopen (outfile, "wb"))) {
-               printf ("Cannot open output file: %s\n", outfile);
-               return 2;
-       }
-       fwrite (digest, 20, 1, file);
-       fclose (file);
-       return 0;
-}
-
-static void 
-help (int err) {
-       printf ("monosn: Mono Strong Name Utility\nUsage: monosn option [arguments]\n");
-       printf ("Available options:\n");
-       printf ("\t-C keyin keyout   Convert key file format from PEM to cryptoAPI (or the reverse).\n");
-       printf ("\t-e assembly file  Extract the public key from assembly to file.\n");
-       printf ("\t-E assembly file  Extract the strong name from assembly to file.\n");
-       printf ("\t-r assembly file  Extract the sha1 digest from assembly to file.\n");
-       printf ("\t-t[p] file        Display the public key token from file.\n");
-       printf ("\t-T[p] assembly    Display the public key token from assembly.\n");
-       exit (err);
-}
-
-int 
-main (int argc, char *argv[]) {
-       int opt;
-       
-       if (argc < 2 || argv [1] [0] != '-')
-               help (1);
-
-       opt = argv [1] [1];
-       switch (opt) {
-       case 'C':
-               if (argc != 4)
-                       help (1);
-               return convert_format (argv [2], argv [3]);
-       case 'e':
-               if (argc != 4)
-                       help (1);
-               return extract_data_to_file (1, argv [2], argv [3]);
-       case 'E':
-               if (argc != 4)
-                       help (1);
-               return extract_data_to_file (0, argv [2], argv [3]);
-       case 'h':
-       case '?':
-               help (0);
-               return 0;
-       case 'r':
-               if (argc != 4)
-                       help (1);
-               return get_digest (argv [2], argv [3]);
-       case 't':
-               if (argc != 3)
-                       help (1);
-               return show_token (argv [2], 0, argv [1] [2] == 'p');
-       case 'T':
-               if (argc != 3)
-                       help (1);
-               return show_token (argv [2], 1, argv [1] [2] == 'p');
-       default:
-               help (1);
-       }
-       return 0;
-}
-
index 15be4b4a5c2444aed6eaf2012eb4c557cfec8e28..05c563bad344be1e286755c3c185f5af1f9513a3 100644 (file)
@@ -266,12 +266,6 @@ typedef struct {
        MonoString *param_name;
 } MonoArgumentException;
 
-typedef struct {
-       MonoSystemException base;
-       MonoString *msg;
-       MonoString *type_name;
-} MonoTypeLoadException;
-
 typedef struct {
        MonoObject   object;
        MonoObject  *async_state;
@@ -401,7 +395,6 @@ struct _MonoInternalThread {
        HANDLE      start_notify;
        gpointer stack_ptr;
        gpointer *static_data;
-       gpointer dead_field_remove_me; /* This used to be jit_data, but that was moved to MonoThreadInfo. */
        void *thread_info; /*This is MonoThreadInfo*, but to simplify dependencies, let's make it a void* here. */
        MonoAppContext *current_appcontext;
        MonoException *pending_exception;
@@ -411,14 +404,9 @@ struct _MonoInternalThread {
        gpointer appdomain_refs;
        /* This is modified using atomic ops, so keep it a gint32 */
        gint32 interruption_requested;
-       gpointer suspend_event;
-       gpointer suspended_event;
-       gpointer resume_event;
        mono_mutex_t *synch_cs;
        MonoBoolean threadpool_thread;
-       MonoBoolean thread_dump_requested;
        MonoBoolean thread_interrupt_requested;
-       gpointer end_stack; /* This is only used when running in the debugger. */
        int stack_size;
        guint8  apartment_state;
        gint32 critical_region_level;
@@ -427,9 +415,7 @@ struct _MonoInternalThread {
        MonoThreadManageCallback manage_callback;
        gpointer interrupt_on_stop;
        gsize    flags;
-       gpointer android_tid;
        gpointer thread_pinning_ref;
-       gint32 ignore_next_signal;
        MonoMethod *async_invoke_method;
        /* 
         * These fields are used to avoid having to increment corlib versions
@@ -652,6 +638,9 @@ mono_async_result_new           (MonoDomain *domain, HANDLE handle,
 MonoObject *
 mono_async_result_invoke    (MonoAsyncResult *ares, MonoObject **exc);
 
+MonoObject *
+ves_icall_System_Runtime_Remoting_Messaging_AsyncResult_Invoke (MonoAsyncResult *this);
+
 MonoWaitHandle *
 mono_wait_handle_new       (MonoDomain *domain, HANDLE handle);
 
@@ -807,7 +796,7 @@ struct _MonoDelegate {
 typedef struct _MonoMulticastDelegate MonoMulticastDelegate;
 struct _MonoMulticastDelegate {
        MonoDelegate delegate;
-       MonoMulticastDelegate *prev;
+       MonoArray *delegates;
 };
 
 struct _MonoReflectionField {
@@ -1286,27 +1275,13 @@ typedef struct {
        gint16 size_param_index;
 } MonoReflectionMarshalAsAttribute;
 
-
 typedef struct {
        MonoObject object;
        gint32 call_conv;
        gint32 charset;
-       MonoString *dll;
-       MonoString *entry_point;
-       MonoBoolean exact_spelling;
-       MonoBoolean preserve_sig;
-       MonoBoolean set_last_error;
        MonoBoolean best_fit_mapping;
        MonoBoolean throw_on_unmappable;
-} MonoReflectionDllImportAttribute;
-
-typedef struct {
-       MonoObject object;
-       gint32 call_conv;
-       gint32 charset;
        MonoBoolean set_last_error;
-       MonoBoolean best_fit_mapping;
-       MonoBoolean throw_on_unmappable;
 } MonoReflectionUnmanagedFunctionPointerAttribute;
 
 typedef struct {
index ec6eb18540d8c7ce10b89079eafc851c7718d4aa..caa734e1ffb48e3a479fe5c2993104fa3ba5be13 100644 (file)
@@ -76,7 +76,7 @@ DECL_OFFSET(MonoInternalThread, tid)
 DECL_OFFSET(MonoInternalThread, small_id)
 DECL_OFFSET(MonoInternalThread, static_data)
 
-DECL_OFFSET(MonoMulticastDelegate, prev)
+DECL_OFFSET(MonoMulticastDelegate, delegates)
 
 DECL_OFFSET(MonoTransparentProxy, rp)
 DECL_OFFSET(MonoTransparentProxy, remote_class)
@@ -141,7 +141,13 @@ DECL_OFFSET(MonoContinuation, return_sp)
 DECL_OFFSET(MonoContinuation, lmf)
 DECL_OFFSET(MonoContinuation, return_ip)
 
-#ifdef TARGET_X86
+DECL_OFFSET(MonoDelegateTrampInfo, invoke_impl)
+DECL_OFFSET(MonoDelegateTrampInfo, method_ptr)
+
+// Architecture-specific offsets
+// -----------------------------
+
+#if defined(TARGET_X86)
 DECL_OFFSET(MonoContext, eax)
 DECL_OFFSET(MonoContext, ebx)
 DECL_OFFSET(MonoContext, ecx)
@@ -160,38 +166,7 @@ DECL_OFFSET(MonoLMF, edi)
 DECL_OFFSET(MonoLMF, esi)
 DECL_OFFSET(MonoLMF, ebp)
 DECL_OFFSET(MonoLMF, eip)
-#endif
-
-#if defined(TARGET_ARM) || defined(TARGET_ARM64)
-DECL_OFFSET (MonoContext, pc)
-DECL_OFFSET (MonoContext, regs)
-DECL_OFFSET (MonoContext, fregs)
-
-DECL_OFFSET(MonoLMF, method)
-DECL_OFFSET(MonoLMF, lmf_addr)
-
-DECL_OFFSET(SeqPointInfo, bp_addrs)
-DECL_OFFSET(SeqPointInfo, ss_trigger_page)
-
-DECL_OFFSET(DynCallArgs, res)
-DECL_OFFSET(DynCallArgs, res2)
-#endif
-
-#if defined(TARGET_ARM)
-DECL_OFFSET(MonoLMF, sp)
-DECL_OFFSET(MonoLMF, fp)
-DECL_OFFSET(MonoLMF, ip)
-DECL_OFFSET(MonoLMF, iregs)
-DECL_OFFSET(MonoLMF, fregs)
-#elif defined(TARGET_ARM64)
-DECL_OFFSET(MonoLMF, pc)
-DECL_OFFSET(MonoLMF, gregs)
-DECL_OFFSET(DynCallArgs, fpregs)
-DECL_OFFSET(DynCallArgs, n_fpargs)
-DECL_OFFSET(DynCallArgs, n_fpret)
-#endif
-
-#ifdef TARGET_AMD64
+#elif defined(TARGET_AMD64)
 DECL_OFFSET(MonoContext, rax)
 DECL_OFFSET(MonoContext, rcx)
 DECL_OFFSET(MonoContext, rdx)
@@ -203,6 +178,7 @@ DECL_OFFSET(MonoContext, rsp)
 DECL_OFFSET(MonoContext, r8)
 DECL_OFFSET(MonoContext, r9)
 DECL_OFFSET(MonoContext, r10)
+DECL_OFFSET(MonoContext, r11)
 DECL_OFFSET(MonoContext, r12)
 DECL_OFFSET(MonoContext, r13)
 DECL_OFFSET(MonoContext, r14)
@@ -217,22 +193,53 @@ DECL_OFFSET(MonoLMF, rsp)
 DECL_OFFSET(MonoLMF, rbp)
 DECL_OFFSET(MonoLMF, rip)
 
-DECL_OFFSET(SeqPointInfo, bp_addrs)
 DECL_OFFSET(DynCallArgs, res)
-DECL_OFFSET(SeqPointInfo, ss_trigger_page)
 
 DECL_OFFSET(MonoLMFTramp, regs)
 DECL_OFFSET(MonoLMFTramp, lmf_addr)
+#elif defined(TARGET_ARM)
+DECL_OFFSET(MonoLMF, sp)
+DECL_OFFSET(MonoLMF, fp)
+DECL_OFFSET(MonoLMF, ip)
+DECL_OFFSET(MonoLMF, iregs)
+DECL_OFFSET(MonoLMF, fregs)
+#elif defined(TARGET_ARM64)
+DECL_OFFSET(MonoLMF, pc)
+DECL_OFFSET(MonoLMF, gregs)
+DECL_OFFSET(DynCallArgs, fpregs)
+DECL_OFFSET(DynCallArgs, n_fpargs)
+DECL_OFFSET(DynCallArgs, n_fpret)
+#endif
 
+// Shared architecture offfsets
+// ----------------------------
+
+#if defined(TARGET_ARM) || defined(TARGET_ARM64)
+DECL_OFFSET (MonoContext, pc)
+DECL_OFFSET (MonoContext, regs)
+DECL_OFFSET (MonoContext, fregs)
+
+DECL_OFFSET(MonoLMF, method)
+DECL_OFFSET(MonoLMF, lmf_addr)
+
+DECL_OFFSET(SeqPointInfo, ss_trigger_page)
+
+DECL_OFFSET(DynCallArgs, res)
+DECL_OFFSET(DynCallArgs, res2)
 #endif
-       
-DECL_OFFSET(MonoDelegateTrampInfo, invoke_impl)
-DECL_OFFSET(MonoDelegateTrampInfo, method_ptr)
 
+#if defined(TARGET_AMD64) || defined(TARGET_ARM64)
+DECL_OFFSET(SeqPointInfo, ss_tramp_addr)
 #endif
 
+#if defined(TARGET_AMD64) || defined(TARGET_ARM) || defined(TARGET_ARM64)
+DECL_OFFSET(SeqPointInfo, bp_addrs)
 #endif
 
+#endif //DISABLE_JIT_OFFSETS
+
+#endif //USED_CROSS_COMPILER_OFFSETS
+
 #undef DECL_OFFSET
 #undef DECL_OFFSET2
 #undef DECL_ALIGN
index 76460f4d2c3f68f6801fafd3a15969fdde26a1b2..b56dd2c82654d5527158b61fb5d1d8fb33086b82 100644 (file)
@@ -148,9 +148,9 @@ static mono_mutex_t type_initialization_section;
 static void
 mono_type_init_lock (TypeInitializationLock *lock)
 {
-       MONO_PREPARE_BLOCKING
+       MONO_TRY_BLOCKING
        mono_mutex_lock (&lock->initialization_section);
-       MONO_FINISH_BLOCKING
+       MONO_FINISH_TRY_BLOCKING
 }
 
 static void
@@ -530,8 +530,7 @@ default_delegate_trampoline (MonoDomain *domain, MonoClass *klass)
 static MonoTrampoline arch_create_jit_trampoline = default_trampoline;
 static MonoJumpTrampoline arch_create_jump_trampoline = default_jump_trampoline;
 static MonoDelegateTrampoline arch_create_delegate_trampoline = default_delegate_trampoline;
-static MonoImtThunkBuilder imt_thunk_builder = NULL;
-#define ARCH_USE_IMT (imt_thunk_builder != NULL)
+static MonoImtThunkBuilder imt_thunk_builder;
 #if (MONO_IMT_SIZE > 32)
 #error "MONO_IMT_SIZE cannot be larger than 32"
 #endif
@@ -1417,7 +1416,7 @@ build_imt_slots (MonoClass *klass, MonoVTable *vt, MonoDomain *domain, gpointer*
                                 * The IMT thunk might be called with an instance of one of the 
                                 * generic virtual methods, so has to fallback to the IMT trampoline.
                                 */
-                               imt [i] = initialize_imt_slot (vt, domain, imt_builder [i], callbacks.get_imt_trampoline ? callbacks.get_imt_trampoline (i) : NULL);
+                               imt [i] = initialize_imt_slot (vt, domain, imt_builder [i], callbacks.get_imt_trampoline (i));
                        } else {
                                imt [i] = initialize_imt_slot (vt, domain, imt_builder [i], NULL);
                        }
@@ -1965,16 +1964,12 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        if (class_size)
                vtable_slots++;
 
-       if (ARCH_USE_IMT) {
-               if (class->interface_offsets_count) {
-                       imt_table_bytes = sizeof (gpointer) * (MONO_IMT_SIZE);
-                       mono_stats.imt_number_of_tables++;
-                       mono_stats.imt_tables_size += imt_table_bytes;
-               } else {
-                       imt_table_bytes = 0;
-               }
+       if (class->interface_offsets_count) {
+               imt_table_bytes = sizeof (gpointer) * (MONO_IMT_SIZE);
+               mono_stats.imt_number_of_tables++;
+               mono_stats.imt_tables_size += imt_table_bytes;
        } else {
-               imt_table_bytes = sizeof (gpointer) * (class->max_interface_id + 1);
+               imt_table_bytes = 0;
        }
 
        vtable_size = imt_table_bytes + MONO_SIZEOF_VTABLE + vtable_slots * sizeof (gpointer);
@@ -2106,15 +2101,6 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        
        //printf ("Initializing VT for class %s (interface_offsets_count = %d)\n",
        //              class->name, class->interface_offsets_count);
-       
-       if (! ARCH_USE_IMT) {
-               /* initialize interface offsets */
-               for (i = 0; i < class->interface_offsets_count; ++i) {
-                       int interface_id = class->interfaces_packed [i]->interface_id;
-                       int slot = class->interface_offsets_packed [i];
-                       interface_offsets [class->max_interface_id - interface_id] = &(vt->vtable [slot]);
-               }
-       }
 
        /* Initialize vtable */
        if (callbacks.get_vtable_trampoline) {
@@ -2133,15 +2119,10 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                }
        }
 
-       if (ARCH_USE_IMT && imt_table_bytes) {
+       if (imt_table_bytes) {
                /* Now that the vtable is full, we can actually fill up the IMT */
-               if (callbacks.get_imt_trampoline) {
-                       /* lazy construction of the IMT entries enabled */
                        for (i = 0; i < MONO_IMT_SIZE; ++i)
                                interface_offsets [i] = callbacks.get_imt_trampoline (i);
-               } else {
-                       build_imt (class, vt, domain, interface_offsets, NULL);
-               }
        }
 
        /*
@@ -2216,10 +2197,6 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        mono_domain_unlock (domain);
        mono_loader_unlock ();
 
-       /* Initialization is now complete, we can throw if the InheritanceDemand aren't satisfied */
-       if (mono_security_enabled () && (class->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) && raise_on_error)
-               mono_raise_exception (mono_class_get_exception_for_failure (class));
-
        /* make sure the parent is initialized */
        /*FIXME shouldn't this fail the current type?*/
        if (class->parent)
@@ -2297,13 +2274,9 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
                if (iclass->max_interface_id > max_interface_id) max_interface_id = iclass->max_interface_id;
        }
 
-       if (ARCH_USE_IMT) {
-               imt_table_bytes = sizeof (gpointer) * MONO_IMT_SIZE;
-               mono_stats.imt_number_of_tables++;
-               mono_stats.imt_tables_size += imt_table_bytes;
-       } else {
-               imt_table_bytes = sizeof (gpointer) * (max_interface_id + 1);
-       }
+       imt_table_bytes = sizeof (gpointer) * MONO_IMT_SIZE;
+       mono_stats.imt_number_of_tables++;
+       mono_stats.imt_tables_size += imt_table_bytes;
 
        vtsize = imt_table_bytes + MONO_SIZEOF_VTABLE + class->vtable_size * sizeof (gpointer);
 
@@ -2349,14 +2322,6 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
        bitmap = mono_domain_alloc0 (domain, bsize);
 #endif
 
-       if (! ARCH_USE_IMT) {
-               /* initialize interface offsets */
-               for (i = 0; i < class->interface_offsets_count; ++i) {
-                       int interface_id = class->interfaces_packed [i]->interface_id;
-                       int slot = class->interface_offsets_packed [i];
-                       interface_offsets [class->max_interface_id - interface_id] = &(pvt->vtable [slot]);
-               }
-       }
        for (i = 0; i < class->interface_offsets_count; ++i) {
                int interface_id = class->interfaces_packed [i]->interface_id;
                bitmap [interface_id >> 3] |= (1 << (interface_id & 7));
@@ -2373,9 +2338,6 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
                for (list_item = extra_interfaces; list_item != NULL; list_item=list_item->next) {
                        interf = list_item->data;
                        
-                       if (! ARCH_USE_IMT) {
-                               interface_offsets [max_interface_id - interf->interface_id] = &pvt->vtable [slot];
-                       }
                        bitmap [interf->interface_id >> 3] |= (1 << (interf->interface_id & 7));
 
                        iter = NULL;
@@ -2385,17 +2347,12 @@ mono_class_proxy_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mono
                        
                        slot += mono_class_num_methods (interf);
                }
-               if (! ARCH_USE_IMT) {
-                       g_slist_free (extra_interfaces);
-               }
        }
 
-       if (ARCH_USE_IMT) {
-               /* Now that the vtable is full, we can actually fill up the IMT */
-               build_imt (class, pvt, domain, interface_offsets, extra_interfaces);
-               if (extra_interfaces) {
-                       g_slist_free (extra_interfaces);
-               }
+       /* Now that the vtable is full, we can actually fill up the IMT */
+       build_imt (class, pvt, domain, interface_offsets, extra_interfaces);
+       if (extra_interfaces) {
+               g_slist_free (extra_interfaces);
        }
 
 #ifdef COMPRESSED_INTERFACE_BITMAP
@@ -4662,13 +4619,9 @@ mono_object_clone (MonoObject *obj)
 
        o = mono_object_allocate (size, obj->vtable);
 
-       if (obj->vtable->klass->has_references) {
-               mono_gc_wbarrier_object_copy (o, obj);
-       } else {
-               int size = obj->vtable->klass->instance_size;
-               /* do not copy the sync state */
-               mono_gc_memmove_atomic ((char*)o + sizeof (MonoObject), (char*)obj + sizeof (MonoObject), size - sizeof (MonoObject));
-       }
+       /* If the object doesn't contain references this will do a simple memmove. */
+       mono_gc_wbarrier_object_copy (o, obj);
+
        if (G_UNLIKELY (profile_allocs))
                mono_profiler_allocation (o, obj->vtable->klass);
 
@@ -6100,6 +6053,16 @@ mono_async_result_invoke (MonoAsyncResult *ares, MonoObject **exc)
        return res;
 }
 
+MonoObject *
+ves_icall_System_Runtime_Remoting_Messaging_AsyncResult_Invoke (MonoAsyncResult *this)
+{
+       MonoObject *exc = NULL;
+       MonoObject *res = mono_async_result_invoke (this, &exc);
+       if (exc)
+               mono_raise_exception ((MonoException*) exc);
+       return res;
+}
+
 void
 mono_message_init (MonoDomain *domain,
                   MonoMethodMessage *this, 
@@ -6312,6 +6275,9 @@ mono_print_unhandled_exception (MonoObject *exc)
        if (exc == (MonoObject*)mono_object_domain (exc)->out_of_memory_ex) {
                message = g_strdup ("OutOfMemoryException");
                free_message = TRUE;
+       } else if (exc == (MonoObject*)mono_object_domain (exc)->stack_overflow_ex) {
+               message = g_strdup ("StackOverflowException"); //if we OVF, we can't expect to have stack space to JIT Exception::ToString.
+               free_message = TRUE;
        } else {
                
                if (((MonoException*)exc)->native_trace_ips) {
@@ -6372,6 +6338,8 @@ mono_delegate_ctor_with_method (MonoObject *this, MonoObject *target, gpointer a
        g_assert (this);
        g_assert (addr);
 
+       g_assert (mono_class_has_parent (mono_object_class (this), mono_defaults.multicastdelegate_class));
+
        if (method)
                delegate->method = method;
 
index f4d4e3044d3cb534194740d93bf2da54933b5bc4..86e7d187d34121735941b9dd30b33119254bad86 100644 (file)
@@ -692,12 +692,15 @@ MonoBoolean ves_icall_System_Diagnostics_Process_WaitForExit_internal (MonoObjec
 {
        guint32 ret;
        
+       MONO_PREPARE_BLOCKING
        if(ms<0) {
                /* Wait forever */
                ret=WaitForSingleObjectEx (process, INFINITE, TRUE);
        } else {
                ret=WaitForSingleObjectEx (process, ms, TRUE);
        }
+       MONO_FINISH_BLOCKING
+
        if(ret==WAIT_OBJECT_0) {
                return(TRUE);
        } else {
index b82a3c23e59fbac10149d110ad67950d24674792..d085e1c008e29a830f876bc7655a531ae86e8695 100644 (file)
@@ -8705,6 +8705,7 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
        MonoCustomAttrInfo *ainfo;
        GList *tmp, *list = NULL;
        const char *data;
+       MonoCustomAttrEntry* attr;
 
        ca = &image->tables [MONO_TABLE_CUSTOMATTRIBUTE];
 
@@ -8724,7 +8725,7 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
        ainfo = g_malloc0 (MONO_SIZEOF_CUSTOM_ATTR_INFO + sizeof (MonoCustomAttrEntry) * len);
        ainfo->num_attrs = len;
        ainfo->image = image;
-       for (i = 0, tmp = list; i < len; ++i, tmp = tmp->next) {
+       for (i = len, tmp = list; i != 0; --i, tmp = tmp->next) {
                mono_metadata_decode_row (ca, GPOINTER_TO_UINT (tmp->data), cols, MONO_CUSTOM_ATTR_SIZE);
                mtoken = cols [MONO_CUSTOM_ATTR_TYPE] >> MONO_CUSTOM_ATTR_TYPE_BITS;
                switch (cols [MONO_CUSTOM_ATTR_TYPE] & MONO_CUSTOM_ATTR_TYPE_MASK) {
@@ -8738,8 +8739,9 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
                        g_error ("Unknown table for custom attr type %08x", cols [MONO_CUSTOM_ATTR_TYPE]);
                        break;
                }
-               ainfo->attrs [i].ctor = mono_get_method (image, mtoken, NULL);
-               if (!ainfo->attrs [i].ctor) {
+               attr = &ainfo->attrs [i - 1];
+               attr->ctor = mono_get_method (image, mtoken, NULL);
+               if (!attr->ctor) {
                        g_warning ("Can't find custom attr constructor image: %s mtoken: 0x%08x", image->name, mtoken);
                        g_list_free (list);
                        g_free (ainfo);
@@ -8754,8 +8756,8 @@ mono_custom_attrs_from_index (MonoImage *image, guint32 idx)
                        return NULL;
                }
                data = mono_metadata_blob_heap (image, cols [MONO_CUSTOM_ATTR_VALUE]);
-               ainfo->attrs [i].data_size = mono_metadata_decode_value (data, &data);
-               ainfo->attrs [i].data = (guchar*)data;
+               attr->data_size = mono_metadata_decode_value (data, &data);
+               attr->data = (guchar*)data;
        }
        g_list_free (list);
 
index 74fbf6b35c5aa791a7e9d511b220d329b655174f..ccca123d00e372dbd30f25e19839e920cd3a807e 100644 (file)
@@ -308,6 +308,36 @@ enum {
        MONO_GENPARCONSTRAINT_SIZE
 };
 
+enum {
+       MONO_DOCUMENT_NAME,
+       MONO_DOCUMENT_HASHALG,
+       MONO_DOCUMENT_HASH,
+       MONO_DOCUMENT_LANGUAGE,
+       MONO_DOCUMENT_SIZE
+};
+
+enum {
+       MONO_METHODBODY_SEQ_POINTS,
+       MONO_METHODBODY_SIZE
+};
+
+enum {
+       MONO_LOCALSCOPE_METHOD,
+       MONO_LOCALSCOPE_IMPORTSCOPE,
+       MONO_LOCALSCOPE_VARIABLELIST,
+       MONO_LOCALSCOPE_CONSTANTLIST,
+       MONO_LOCALSCOPE_STARTOFFSET,
+       MONO_LOCALSCOPE_LENGTH,
+       MONO_LOCALSCOPE_SIZE
+};
+
+enum {
+       MONO_LOCALVARIABLE_ATTRIBUTES,
+       MONO_LOCALVARIABLE_INDEX,
+       MONO_LOCALVARIABLE_NAME,
+       MONO_LOCALVARIABLE_SIZE
+};
+
 /*
  * Coded Tokens
  * The _BITS entry is for the bits used in the token.
diff --git a/mono/metadata/sample-bundle b/mono/metadata/sample-bundle
deleted file mode 100644 (file)
index ef8bbb3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# sample bundle template for use with the configure option --with-bundle=...
-
-console: ../tests/console.exe
-mscorlib: /usr/local/lib/corlib.dll
-
index 9aec02998bc7334502880d57a1dc3c7d2d5a83f8..abdeb14cb746a51173b1b3b9f9f5c58803d6d762 100644 (file)
@@ -10,9 +10,6 @@
 #include "security-manager.h"
 
 static MonoSecurityMode mono_security_mode = MONO_SECURITY_MODE_NONE;
-static MonoBoolean mono_security_manager_activated = FALSE;
-static MonoBoolean mono_security_manager_enabled = TRUE;
-static MonoBoolean mono_security_manager_execution = TRUE;
 
 void
 mono_security_set_mode (MonoSecurityMode mode)
@@ -26,22 +23,6 @@ mono_security_get_mode (void)
        return mono_security_mode;
 }
 
-/*
- * Note: The security manager is activate once when executing the Mono. This 
- * is not meant to be a turn on/off runtime switch.
- */
-void
-mono_activate_security_manager (void)
-{
-       mono_security_manager_activated = TRUE;
-}
-
-gboolean
-mono_is_security_manager_active (void)
-{
-       return mono_security_manager_activated;
-}
-
 #ifndef DISABLE_SECURITY
 
 static MonoSecurityManager secman;
@@ -59,120 +40,10 @@ mono_security_manager_get_methods (void)
        g_assert (secman.securitymanager);
        if (!secman.securitymanager->inited)
                mono_class_init (secman.securitymanager);
-               
-       secman.demand = mono_class_get_method_from_name (secman.securitymanager,
-               "InternalDemand", 2);   
-       g_assert (secman.demand);
-
-       secman.demandchoice = mono_class_get_method_from_name (secman.securitymanager,
-               "InternalDemandChoice", 2);     
-       g_assert (secman.demandchoice);
-
-       secman.demandunmanaged = mono_class_get_method_from_name (secman.securitymanager,
-               "DemandUnmanaged", 0);
-       g_assert (secman.demandunmanaged);
-
-       secman.inheritancedemand = mono_class_get_method_from_name (secman.securitymanager,
-               "InheritanceDemand", 3);        
-       g_assert (secman.inheritancedemand);
-
-       secman.inheritsecurityexception = mono_class_get_method_from_name (secman.securitymanager,
-               "InheritanceDemandSecurityException", 4);       
-       g_assert (secman.inheritsecurityexception);
-
-       secman.linkdemand = mono_class_get_method_from_name (secman.securitymanager,
-               "LinkDemand", 3);
-       g_assert (secman.linkdemand);
-
-       secman.linkdemandunmanaged = mono_class_get_method_from_name (secman.securitymanager,
-               "LinkDemandUnmanaged", 1);
-       g_assert (secman.linkdemandunmanaged);
-
-       secman.linkdemandfulltrust = mono_class_get_method_from_name (secman.securitymanager,
-               "LinkDemandFullTrust", 1);
-       g_assert (secman.linkdemandfulltrust);
-
-       secman.linkdemandsecurityexception = mono_class_get_method_from_name (secman.securitymanager,
-               "LinkDemandSecurityException", 2);
-       g_assert (secman.linkdemandsecurityexception);
-
-       secman.allowpartiallytrustedcallers = mono_class_from_name (mono_defaults.corlib, "System.Security", 
-               "AllowPartiallyTrustedCallersAttribute");
-       g_assert (secman.allowpartiallytrustedcallers);
-
-       secman.suppressunmanagedcodesecurity = mono_class_from_name (mono_defaults.corlib, "System.Security", 
-               "SuppressUnmanagedCodeSecurityAttribute");
-       g_assert (secman.suppressunmanagedcodesecurity);
 
        return &secman;
 }
 
-static gboolean
-mono_secman_inheritance_check (MonoClass *klass, MonoDeclSecurityActions *demands)
-{
-       MonoSecurityManager* secman = mono_security_manager_get_methods ();
-       MonoDomain *domain = mono_domain_get ();
-       MonoAssembly *assembly = mono_image_get_assembly (klass->image);
-       MonoReflectionAssembly *refass = mono_assembly_get_object (domain, assembly);
-       MonoObject *res;
-       gpointer args [3];
-
-       args [0] = domain->domain;
-       args [1] = refass;
-       args [2] = demands;
-
-       res = mono_runtime_invoke (secman->inheritancedemand, NULL, args, NULL);
-       return (*(MonoBoolean *) mono_object_unbox (res));
-}
-
-void
-mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent)
-{
-       MonoDeclSecurityActions demands;
-
-       /* don't hide previous results -and- don't calc everything for nothing */
-       if (klass->exception_type != 0)
-               return;
-
-       /* short-circuit corlib as it is fully trusted (within itself)
-        * and because this cause major recursion headaches */
-       if ((klass->image == mono_defaults.corlib) && (parent->image == mono_defaults.corlib))
-               return;
-
-       /* Check if there are an InheritanceDemand on the parent class */
-       if (mono_declsec_get_inheritdemands_class (parent, &demands)) {
-               /* If so check the demands on the klass (inheritor) */
-               if (!mono_secman_inheritance_check (klass, &demands)) {
-                       /* Keep flags in MonoClass to be able to throw a SecurityException later (if required) */
-                       mono_class_set_failure (klass, MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND, NULL);
-               }
-       }
-}
-
-void
-mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base)
-{
-       MonoDeclSecurityActions demands;
-
-       /* don't hide previous results -and- don't calc everything for nothing */
-       if (override->klass->exception_type != 0)
-               return;
-
-       /* short-circuit corlib as it is fully trusted (within itself)
-        * and because this cause major recursion headaches */
-       if ((override->klass->image == mono_defaults.corlib) && (base->klass->image == mono_defaults.corlib))
-               return;
-
-       /* Check if there are an InheritanceDemand on the base (virtual) method */
-       if (mono_declsec_get_inheritdemands_method (base, &demands)) {
-               /* If so check the demands on the overriding method */
-               if (!mono_secman_inheritance_check (override->klass, &demands)) {
-                       /* Keep flags in MonoClass to be able to throw a SecurityException later (if required) */
-                       mono_class_set_failure (override->klass, MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND, base);
-               }
-       }
-}
-
 #else
 
 MonoSecurityManager*
@@ -181,16 +52,6 @@ mono_security_manager_get_methods (void)
        return NULL;
 }
 
-void
-mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent)
-{
-}
-
-void
-mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base)
-{
-}
-
 #endif /* DISABLE_SECURITY */
 
 /*
@@ -230,10 +91,8 @@ mono_get_context_capture_method (void)
 {
        static MonoMethod *method = NULL;
 
-       if (!mono_security_manager_activated) {
-               if (mono_image_get_assembly (mono_defaults.corlib)->aname.major < 2)
-                       return NULL;
-       }
+       if (mono_image_get_assembly (mono_defaults.corlib)->aname.major < 2)
+               return NULL;
 
        /* older corlib revisions won't have the class (nor the method) */
        if (mono_defaults.executioncontext_class && !method) {
@@ -250,59 +109,30 @@ mono_get_context_capture_method (void)
 MonoBoolean
 ves_icall_System_Security_SecurityManager_get_SecurityEnabled (void)
 {
-       if (!mono_security_manager_activated) {
-               /* SecurityManager is internal for Moonlight and SecurityEnabled is used to know if CoreCLR is active
-                * (e.g. plugin executing in the browser) or not (e.g. smcs compiling source code with corlib 2.1)
-                */
-               return (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR);
-       }
-       return mono_security_manager_enabled;
+       /* SecurityManager is internal for Moonlight and SecurityEnabled is used to know if CoreCLR is active
+        * (e.g. plugin executing in the browser) or not (e.g. smcs compiling source code with corlib 2.1)
+        */
+       return (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR);
 }
 
 void
 ves_icall_System_Security_SecurityManager_set_SecurityEnabled (MonoBoolean value)
 {
-       /* value can be changed only if the security manager is activated */
-       if (mono_security_manager_activated) {
-               mono_security_manager_enabled = value;
-       }
 }
 
 MonoBoolean
 ves_icall_System_Security_SecurityManager_get_CheckExecutionRights (void)
 {
-       if (!mono_security_manager_activated)
-               return FALSE;
-       return mono_security_manager_execution;
+       return FALSE;
 }
 
 void
 ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoolean value)
 {
-       /* value can be changed only id the security manager is activated */
-       if (mono_security_manager_activated) {
-               mono_security_manager_execution = value;
-       }
 }
 
 MonoBoolean
 ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (MonoReflectionMethod *m, MonoDeclSecurityActions *kactions, MonoDeclSecurityActions *mactions)
 {
-       MonoMethod *method = m->method;
-       /* we want the original as the wrapper is "free" of the security informations */
-       if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE || method->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED) {
-               method = mono_marshal_method_from_wrapper (method);
-       }
-
-       mono_class_init (method->klass);
-
-       /* if either the method or it's class has security (any type) */
-       if ((method->flags & METHOD_ATTRIBUTE_HAS_SECURITY) || (method->klass->flags & TYPE_ATTRIBUTE_HAS_SECURITY)) {
-               memset (kactions, 0, sizeof (MonoDeclSecurityActions));
-               memset (mactions, 0, sizeof (MonoDeclSecurityActions));
-
-               /* get any linkdemand (either on the method or it's class) */
-               return mono_declsec_get_linkdemands (method, kactions, mactions);
-       }
        return FALSE;
 }
index dd2f17d5b27691007634ec0eff094c031ec70267..f08924f647b05ac2b751ec0a546d86cf1e960069 100644 (file)
@@ -41,40 +41,20 @@ enum {
 typedef enum {
        MONO_SECURITY_MODE_NONE,
        MONO_SECURITY_MODE_CORE_CLR,
-       MONO_SECURITY_MODE_CAS,
-       MONO_SECURITY_MODE_SMCS_HACK
 } MonoSecurityMode;
 
 /* Structures */
 
 typedef struct {
        MonoClass *securitymanager;             /* System.Security.SecurityManager */
-       MonoMethod *demand;                     /* SecurityManager.InternalDemand */
-       MonoMethod *demandchoice;               /* SecurityManager.InternalDemandChoice */
-       MonoMethod *demandunmanaged;            /* SecurityManager.DemandUnmanaged */
-       MonoMethod *inheritancedemand;          /* SecurityManager.InheritanceDemand */
-       MonoMethod *inheritsecurityexception;   /* SecurityManager.InheritanceDemandSecurityException */
-       MonoMethod *linkdemand;                 /* SecurityManager.LinkDemand */
-       MonoMethod *linkdemandfulltrust;        /* SecurityManager.LinkDemandFullTrust */
-       MonoMethod *linkdemandunmanaged;        /* SecurityManager.LinkDemandUnmanaged */
-       MonoMethod *linkdemandsecurityexception;/* SecurityManager.LinkDemandSecurityException */
-
-       MonoClass *allowpartiallytrustedcallers;        /* System.Security.AllowPartiallyTrustedCallersAttribute */
-       MonoClass *suppressunmanagedcodesecurity;       /* System.Security.SuppressUnmanagedCodeSecurityAttribute */
 } MonoSecurityManager;
 
 gboolean mono_is_ecma_key (const char *publickey, int size);
 MonoMethod* mono_get_context_capture_method (void);
 
-void mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent);
-void mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base);
-
-/* Initialization/utility functions */
-void mono_activate_security_manager (void);
 MonoSecurityManager* mono_security_manager_get_methods (void);
 
 /* Security mode */
-gboolean mono_is_security_manager_active (void);
 void mono_security_set_mode (MonoSecurityMode mode);
 MonoSecurityMode mono_security_get_mode (void);
 
@@ -86,15 +66,9 @@ void ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoo
 MonoBoolean ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (MonoReflectionMethod *m, MonoDeclSecurityActions *kactions, MonoDeclSecurityActions *mactions);
 
 #ifndef DISABLE_SECURITY
-#define mono_security_enabled() (mono_is_security_manager_active ())
-#define mono_security_cas_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_CAS)
 #define mono_security_core_clr_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_CORE_CLR)
-#define mono_security_smcs_hack_enabled() (mono_security_get_mode () == MONO_SECURITY_MODE_SMCS_HACK)
 #else
-#define mono_security_enabled() (FALSE)
-#define mono_security_cas_enabled() (FALSE)
 #define mono_security_core_clr_enabled() (FALSE)
-#define mono_security_smcs_hack_enabled() (FALSE)
 #endif
 
 #endif /* _MONO_METADATA_SECURITY_MANAGER_H_ */
index 391a1b63c6ad7cdd008f0c0c9978a603c2a2fa23..b8b1bcdb6f45dc7115067857bf3362efe2c8cd13 100644 (file)
@@ -95,7 +95,7 @@ seq_point_info_inflate (MonoSeqPointInfo *info)
 }
 
 MonoSeqPointInfo*
-seq_point_info_new (int len, gboolean alloc_data, guint8 *data, gboolean has_debug_data, int *out_size)
+mono_seq_point_info_new (int len, gboolean alloc_data, guint8 *data, gboolean has_debug_data, int *out_size)
 {
        MonoSeqPointInfo *info;
        guint8 *info_ptr;
@@ -128,7 +128,7 @@ seq_point_info_new (int len, gboolean alloc_data, guint8 *data, gboolean has_deb
 }
 
 void
-seq_point_info_free (gpointer ptr)
+mono_seq_point_info_free (gpointer ptr)
 {
        MonoSeqPointInfo* info = (MonoSeqPointInfo*) ptr;
        g_free (info);
@@ -168,7 +168,7 @@ seq_point_read (SeqPoint* seq_point, guint8* ptr, guint8* buffer_ptr, gboolean h
 }
 
 gboolean
-seq_point_info_add_seq_point (GByteArray* array, SeqPoint *sp, SeqPoint *last_seq_point, GSList *next, gboolean has_debug_data)
+mono_seq_point_info_add_seq_point (GByteArray* array, SeqPoint *sp, SeqPoint *last_seq_point, GSList *next, gboolean has_debug_data)
 {
        int il_delta, native_delta;
        GSList *l;
@@ -218,11 +218,11 @@ seq_point_info_add_seq_point (GByteArray* array, SeqPoint *sp, SeqPoint *last_se
 }
 
 gboolean
-seq_point_find_next_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point)
+mono_seq_point_find_next_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point)
 {
        SeqPointIterator it;
-       seq_point_iterator_init (&it, info);
-       while (seq_point_iterator_next (&it)) {
+       mono_seq_point_iterator_init (&it, info);
+       while (mono_seq_point_iterator_next (&it)) {
                if (it.seq_point.native_offset >= native_offset) {
                        memcpy (seq_point, &it.seq_point, sizeof (SeqPoint));
                        return TRUE;
@@ -233,13 +233,13 @@ seq_point_find_next_by_native_offset (MonoSeqPointInfo* info, int native_offset,
 }
 
 gboolean
-seq_point_find_prev_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point)
+mono_seq_point_find_prev_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point)
 {
        SeqPoint prev_seq_point;
        gboolean  is_first = TRUE;
        SeqPointIterator it;
-       seq_point_iterator_init (&it, info);
-       while (seq_point_iterator_next (&it) && it.seq_point.native_offset <= native_offset) {
+       mono_seq_point_iterator_init (&it, info);
+       while (mono_seq_point_iterator_next (&it) && it.seq_point.native_offset <= native_offset) {
                memcpy (&prev_seq_point, &it.seq_point, sizeof (SeqPoint));
                is_first = FALSE;
        }
@@ -253,11 +253,11 @@ seq_point_find_prev_by_native_offset (MonoSeqPointInfo* info, int native_offset,
 }
 
 gboolean
-seq_point_find_by_il_offset (MonoSeqPointInfo* info, int il_offset, SeqPoint* seq_point)
+mono_seq_point_find_by_il_offset (MonoSeqPointInfo* info, int il_offset, SeqPoint* seq_point)
 {
        SeqPointIterator it;
-       seq_point_iterator_init (&it, info);
-       while (seq_point_iterator_next (&it)) {
+       mono_seq_point_iterator_init (&it, info);
+       while (mono_seq_point_iterator_next (&it)) {
                if (it.seq_point.il_offset == il_offset) {
                        memcpy (seq_point, &it.seq_point, sizeof (SeqPoint));
                        return TRUE;
@@ -268,7 +268,7 @@ seq_point_find_by_il_offset (MonoSeqPointInfo* info, int il_offset, SeqPoint* se
 }
 
 void
-seq_point_init_next (MonoSeqPointInfo* info, SeqPoint sp, SeqPoint* next)
+mono_seq_point_init_next (MonoSeqPointInfo* info, SeqPoint sp, SeqPoint* next)
 {
        int i;
        guint8* ptr;
@@ -278,8 +278,8 @@ seq_point_init_next (MonoSeqPointInfo* info, SeqPoint sp, SeqPoint* next)
 
        g_assert (info_inflated.has_debug_data);
 
-       seq_point_iterator_init (&it, info);
-       while (seq_point_iterator_next (&it))
+       mono_seq_point_iterator_init (&it, info);
+       while (mono_seq_point_iterator_next (&it))
                g_array_append_vals (seq_points, &it.seq_point, 1);
 
        ptr = info_inflated.data + sp.next_offset;
@@ -294,7 +294,7 @@ seq_point_init_next (MonoSeqPointInfo* info, SeqPoint sp, SeqPoint* next)
 }
 
 gboolean
-seq_point_iterator_next (SeqPointIterator* it)
+mono_seq_point_iterator_next (SeqPointIterator* it)
 {
        if (it->ptr >= it->end)
                return FALSE;
@@ -305,7 +305,7 @@ seq_point_iterator_next (SeqPointIterator* it)
 }
 
 void
-seq_point_iterator_init (SeqPointIterator* it, MonoSeqPointInfo* info)
+mono_seq_point_iterator_init (SeqPointIterator* it, MonoSeqPointInfo* info)
 {
        SeqPointInfoInflated info_inflated = seq_point_info_inflate (info);
        it->ptr = info_inflated.data;
@@ -316,7 +316,7 @@ seq_point_iterator_init (SeqPointIterator* it, MonoSeqPointInfo* info)
 }
 
 int
-seq_point_info_write (MonoSeqPointInfo* info, guint8* buffer)
+mono_seq_point_info_write (MonoSeqPointInfo* info, guint8* buffer)
 {
        guint8* buffer0 = buffer;
        SeqPointInfoInflated info_inflated = seq_point_info_inflate (info);
@@ -332,7 +332,7 @@ seq_point_info_write (MonoSeqPointInfo* info, guint8* buffer)
 }
 
 int
-seq_point_info_read (MonoSeqPointInfo** info, guint8* buffer, gboolean copy)
+mono_seq_point_info_read (MonoSeqPointInfo** info, guint8* buffer, gboolean copy)
 {
        guint8* buffer0 = buffer;
        int size, info_size;
@@ -341,7 +341,7 @@ seq_point_info_read (MonoSeqPointInfo** info, guint8* buffer, gboolean copy)
        has_debug_data = decode_var_int (buffer, &buffer);
 
        size = decode_var_int (buffer, &buffer);
-       (*info) = seq_point_info_new (size, copy, buffer, has_debug_data, &info_size);
+       (*info) = mono_seq_point_info_new (size, copy, buffer, has_debug_data, &info_size);
        buffer += size;
 
        return buffer - buffer0;
@@ -351,7 +351,7 @@ seq_point_info_read (MonoSeqPointInfo** info, guint8* buffer, gboolean copy)
  * Returns the maximum size of mono_seq_point_info_write.
  */
 int
-seq_point_info_get_write_size (MonoSeqPointInfo* info)
+mono_seq_point_info_get_write_size (MonoSeqPointInfo* info)
 {
        SeqPointInfoInflated info_inflated = seq_point_info_inflate (info);
 
@@ -368,7 +368,7 @@ seq_point_info_get_write_size (MonoSeqPointInfo* info)
  */
 
 void
-seq_point_data_init (SeqPointData *data, int entry_capacity)
+mono_seq_point_data_init (SeqPointData *data, int entry_capacity)
 {
        data->entry_count = 0;
        data->entry_capacity = entry_capacity;
@@ -376,7 +376,7 @@ seq_point_data_init (SeqPointData *data, int entry_capacity)
 }
 
 void
-seq_point_data_free (SeqPointData *data)
+mono_seq_point_data_free (SeqPointData *data)
 {
        int i;
        for (i=0; i<data->entry_count; i++) {
@@ -387,7 +387,7 @@ seq_point_data_free (SeqPointData *data)
 }
 
 gboolean
-seq_point_data_read (SeqPointData *data, char *path)
+mono_seq_point_data_read (SeqPointData *data, char *path)
 {
        guint8 *buffer, *buffer_orig;
        int entry_count, i;
@@ -407,13 +407,13 @@ seq_point_data_read (SeqPointData *data, char *path)
        fclose(f);
 
        entry_count = decode_var_int (buffer, &buffer);
-       seq_point_data_init (data, entry_count);
+       mono_seq_point_data_init (data, entry_count);
        data->entry_count = entry_count;
 
        for (i=0; i<entry_count; i++) {
                data->entries [i].method_token = decode_var_int (buffer, &buffer);
                data->entries [i].method_index = decode_var_int (buffer, &buffer);
-               buffer += seq_point_info_read (&data->entries [i].seq_points, buffer, TRUE);
+               buffer += mono_seq_point_info_read (&data->entries [i].seq_points, buffer, TRUE);
                data->entries [i].free_seq_points = TRUE;
        }
 
@@ -422,7 +422,7 @@ seq_point_data_read (SeqPointData *data, char *path)
 }
 
 gboolean
-seq_point_data_write (SeqPointData *data, char *path)
+mono_seq_point_data_write (SeqPointData *data, char *path)
 {
        guint8 *buffer, *buffer_orig;
        FILE *f;
@@ -433,7 +433,7 @@ seq_point_data_write (SeqPointData *data, char *path)
                return FALSE;
 
        for (i=0; i<data->entry_count; i++) {
-               size += seq_point_info_get_write_size (data->entries [i].seq_points);
+               size += mono_seq_point_info_get_write_size (data->entries [i].seq_points);
        }
        // Add size of entry_count and native_base_offsets
        size += 4 + data->entry_count * 4;
@@ -445,7 +445,7 @@ seq_point_data_write (SeqPointData *data, char *path)
        for (i=0; i<data->entry_count; i++) {
                encode_var_int (buffer, &buffer, data->entries [i].method_token);
                encode_var_int (buffer, &buffer, data->entries [i].method_index);
-               buffer += seq_point_info_write (data->entries [i].seq_points, buffer);
+               buffer += mono_seq_point_info_write (data->entries [i].seq_points, buffer);
        }
 
        fwrite (buffer_orig, 1, buffer - buffer_orig, f);
@@ -455,7 +455,7 @@ seq_point_data_write (SeqPointData *data, char *path)
 }
 
 void
-seq_point_data_add (SeqPointData *data, guint32 method_token, guint32 method_index, MonoSeqPointInfo* info)
+mono_seq_point_data_add (SeqPointData *data, guint32 method_token, guint32 method_index, MonoSeqPointInfo* info)
 {
        int i;
 
@@ -468,7 +468,7 @@ seq_point_data_add (SeqPointData *data, guint32 method_token, guint32 method_ind
 }
 
 gboolean
-seq_point_data_get (SeqPointData *data, guint32 method_token, guint32 method_index, MonoSeqPointInfo** info)
+mono_seq_point_data_get (SeqPointData *data, guint32 method_token, guint32 method_index, MonoSeqPointInfo** info)
 {
        int i;
 
@@ -482,19 +482,19 @@ seq_point_data_get (SeqPointData *data, guint32 method_token, guint32 method_ind
 }
 
 gboolean
-seq_point_data_get_il_offset (char *path, guint32 method_token, guint32 method_index, guint32 native_offset, guint32 *il_offset)
+mono_seq_point_data_get_il_offset (char *path, guint32 method_token, guint32 method_index, guint32 native_offset, guint32 *il_offset)
 {
        SeqPointData sp_data;
        MonoSeqPointInfo *seq_points;
        SeqPoint sp;
 
-       if (!seq_point_data_read (&sp_data, path))
+       if (!mono_seq_point_data_read (&sp_data, path))
                return FALSE;
 
-       if (!seq_point_data_get (&sp_data, method_token, method_index, &seq_points))
+       if (!mono_seq_point_data_get (&sp_data, method_token, method_index, &seq_points))
                return FALSE;
 
-       if (!seq_point_find_prev_by_native_offset (seq_points, native_offset, &sp))
+       if (!mono_seq_point_find_prev_by_native_offset (seq_points, native_offset, &sp))
                return FALSE;
 
        *il_offset = sp.il_offset;
index 730770001783454cd3a7caca36c8b0ca83cc95bc..babdea43c861f9efa0580747ec19822f0a90ff0f 100644 (file)
@@ -40,40 +40,40 @@ typedef struct {
 } SeqPointIterator;
 
 void
-seq_point_info_free (gpointer info);
+mono_seq_point_info_free (gpointer info);
 
 gboolean
-seq_point_iterator_next (SeqPointIterator* it);
+mono_seq_point_iterator_next (SeqPointIterator* it);
 
 void
-seq_point_iterator_init (SeqPointIterator* it, MonoSeqPointInfo* info);
+mono_seq_point_iterator_init (SeqPointIterator* it, MonoSeqPointInfo* info);
 
 void
-seq_point_init_next (MonoSeqPointInfo* info, SeqPoint sp, SeqPoint* next);
+mono_seq_point_init_next (MonoSeqPointInfo* info, SeqPoint sp, SeqPoint* next);
 
 int
-seq_point_info_write (MonoSeqPointInfo* info, guint8* buffer);
+mono_seq_point_info_write (MonoSeqPointInfo* info, guint8* buffer);
 
 int
-seq_point_info_read (MonoSeqPointInfo** info, guint8* buffer, gboolean copy);
+mono_seq_point_info_read (MonoSeqPointInfo** info, guint8* buffer, gboolean copy);
 
 int
-seq_point_info_get_write_size (MonoSeqPointInfo* info);
+mono_seq_point_info_get_write_size (MonoSeqPointInfo* info);
 
 gboolean
-seq_point_info_add_seq_point (GByteArray* array, SeqPoint *sp, SeqPoint *last_seq_point, GSList *next, gboolean has_debug_data);
+mono_seq_point_info_add_seq_point (GByteArray* array, SeqPoint *sp, SeqPoint *last_seq_point, GSList *next, gboolean has_debug_data);
 
 MonoSeqPointInfo*
-seq_point_info_new (int len, gboolean alloc_data, guint8 *data, gboolean has_debug_data, int *out_size);
+mono_seq_point_info_new (int len, gboolean alloc_data, guint8 *data, gboolean has_debug_data, int *out_size);
 
 gboolean
-seq_point_find_prev_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point);
+mono_seq_point_find_prev_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point);
 
 gboolean
-seq_point_find_next_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point);
+mono_seq_point_find_next_by_native_offset (MonoSeqPointInfo* info, int native_offset, SeqPoint* seq_point);
 
 gboolean
-seq_point_find_by_il_offset (MonoSeqPointInfo* info, int il_offset, SeqPoint* seq_point);
+mono_seq_point_find_by_il_offset (MonoSeqPointInfo* info, int il_offset, SeqPoint* seq_point);
 
 /*
  * SeqPointData struct and functions
@@ -94,24 +94,24 @@ typedef struct {
 } SeqPointData;
 
 void
-seq_point_data_init (SeqPointData *data, int entry_capacity);
+mono_seq_point_data_init (SeqPointData *data, int entry_capacity);
 
 void
-seq_point_data_free (SeqPointData *data);
+mono_seq_point_data_free (SeqPointData *data);
 
 gboolean
-seq_point_data_read (SeqPointData *data, char *path);
+mono_seq_point_data_read (SeqPointData *data, char *path);
 
 gboolean
-seq_point_data_write (SeqPointData *data, char *path);
+mono_seq_point_data_write (SeqPointData *data, char *path);
 
 void
-seq_point_data_add (SeqPointData *data, guint32 methodToken, guint32 methodIndex, MonoSeqPointInfo* info);
+mono_seq_point_data_add (SeqPointData *data, guint32 methodToken, guint32 methodIndex, MonoSeqPointInfo* info);
 
 gboolean
-seq_point_data_get (SeqPointData *data, guint32 methodToken, guint32 methodIndex, MonoSeqPointInfo** info);
+mono_seq_point_data_get (SeqPointData *data, guint32 methodToken, guint32 methodIndex, MonoSeqPointInfo** info);
 
 gboolean
-seq_point_data_get_il_offset (char *path, guint32 methodToken, guint32 methodIndex, guint32 native_offset, guint32 *il_offset);
+mono_seq_point_data_get_il_offset (char *path, guint32 methodToken, guint32 methodIndex, guint32 native_offset, guint32 *il_offset);
 
-#endif /* __MONO_SEQ_POINTS_DATA_H__ */
\ No newline at end of file
+#endif /* __MONO_SEQ_POINTS_DATA_H__ */
diff --git a/mono/metadata/sgen-alloc.c b/mono/metadata/sgen-alloc.c
deleted file mode 100644 (file)
index 45b756c..0000000
+++ /dev/null
@@ -1,1246 +0,0 @@
-/*
- * sgen-alloc.c: Object allocation routines + managed allocators
- *
- * Author:
- *     Paolo Molaro (lupus@ximian.com)
- *  Rodrigo Kumpera (kumpera@gmail.com)
- *
- * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright 2011 Xamarin, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * ######################################################################
- * ########  Object allocation
- * ######################################################################
- * This section of code deals with allocating memory for objects.
- * There are several ways:
- * *) allocate large objects
- * *) allocate normal objects
- * *) fast lock-free allocation
- * *) allocation of pinned objects
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/profiler-private.h"
-#include "metadata/marshal.h"
-#include "metadata/method-builder.h"
-#include "metadata/abi-details.h"
-#include "utils/mono-memory-model.h"
-#include "utils/mono-counters.h"
-
-#define ALIGN_UP               SGEN_ALIGN_UP
-#define ALLOC_ALIGN            SGEN_ALLOC_ALIGN
-#define MAX_SMALL_OBJ_SIZE     SGEN_MAX_SMALL_OBJ_SIZE
-#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
-
-#define OPDEF(a,b,c,d,e,f,g,h,i,j) \
-       a = i,
-
-enum {
-#include "mono/cil/opcode.def"
-       CEE_LAST
-};
-
-#undef OPDEF
-
-static gboolean use_managed_allocator = TRUE;
-
-#ifdef HEAVY_STATISTICS
-static guint64 stat_objects_alloced = 0;
-static guint64 stat_bytes_alloced = 0;
-static guint64 stat_bytes_alloced_los = 0;
-
-#endif
-
-/*
- * Allocation is done from a Thread Local Allocation Buffer (TLAB). TLABs are allocated
- * from nursery fragments.
- * tlab_next is the pointer to the space inside the TLAB where the next object will 
- * be allocated.
- * tlab_temp_end is the pointer to the end of the temporary space reserved for
- * the allocation: it allows us to set the scan starts at reasonable intervals.
- * tlab_real_end points to the end of the TLAB.
- */
-
-/*
- * FIXME: What is faster, a TLS variable pointing to a structure, or separate TLS 
- * variables for next+temp_end ?
- */
-#ifdef HAVE_KW_THREAD
-static __thread char *tlab_start;
-static __thread char *tlab_next;
-static __thread char *tlab_temp_end;
-static __thread char *tlab_real_end;
-/* Used by the managed allocator/wbarrier */
-static __thread char **tlab_next_addr MONO_ATTR_USED;
-#endif
-
-#ifdef HAVE_KW_THREAD
-#define TLAB_START     tlab_start
-#define TLAB_NEXT      tlab_next
-#define TLAB_TEMP_END  tlab_temp_end
-#define TLAB_REAL_END  tlab_real_end
-#else
-#define TLAB_START     (__thread_info__->tlab_start)
-#define TLAB_NEXT      (__thread_info__->tlab_next)
-#define TLAB_TEMP_END  (__thread_info__->tlab_temp_end)
-#define TLAB_REAL_END  (__thread_info__->tlab_real_end)
-#endif
-
-static void*
-alloc_degraded (MonoVTable *vtable, size_t size, gboolean for_mature)
-{
-       static int last_major_gc_warned = -1;
-       static int num_degraded = 0;
-
-       void *p;
-
-       if (!for_mature) {
-               if (last_major_gc_warned < gc_stats.major_gc_count) {
-                       ++num_degraded;
-                       if (num_degraded == 1 || num_degraded == 3)
-                               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Degraded allocation.  Consider increasing nursery-size if the warning persists.");
-                       else if (num_degraded == 10)
-                               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Repeated degraded allocation.  Consider increasing nursery-size.");
-                       last_major_gc_warned = gc_stats.major_gc_count;
-               }
-               SGEN_ATOMIC_ADD_P (degraded_mode, size);
-               sgen_ensure_free_space (size);
-       } else {
-               if (sgen_need_major_collection (size))
-                       sgen_perform_collection (size, GENERATION_OLD, "mature allocation failure", !for_mature);
-       }
-
-
-       p = major_collector.alloc_degraded (vtable, size);
-
-       if (for_mature) {
-               MONO_GC_MAJOR_OBJ_ALLOC_MATURE ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-       } else {
-               binary_protocol_alloc_degraded (p, vtable, size);
-               MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-       }
-
-       return p;
-}
-
-static void
-zero_tlab_if_necessary (void *p, size_t size)
-{
-       if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION || nursery_clear_policy == CLEAR_AT_TLAB_CREATION_DEBUG) {
-               memset (p, 0, size);
-       } else {
-               /*
-                * This function is called for all allocations in
-                * TLABs.  TLABs originate from fragments, which are
-                * initialized to be faux arrays.  The remainder of
-                * the fragments are zeroed out at initialization for
-                * CLEAR_AT_GC, so here we just need to make sure that
-                * the array header is zeroed.  Since we don't know
-                * whether we're called for the start of a fragment or
-                * for somewhere in between, we zero in any case, just
-                * to make sure.
-                */
-
-               if (size >= sizeof (MonoArray))
-                       memset (p, 0, sizeof (MonoArray));
-               else {
-                       static guint8 zeros [sizeof (MonoArray)];
-
-                       SGEN_ASSERT (0, !memcmp (p, zeros, size), "TLAB segment must be zeroed out.");
-               }
-       }
-}
-
-/*
- * Provide a variant that takes just the vtable for small fixed-size objects.
- * The aligned size is already computed and stored in vt->gc_descr.
- * Note: every SGEN_SCAN_START_SIZE or so we are given the chance to do some special
- * processing. We can keep track of where objects start, for example,
- * so when we scan the thread stacks for pinned objects, we can start
- * a search for the pinned object in SGEN_SCAN_START_SIZE chunks.
- */
-static void*
-mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
-{
-       /* FIXME: handle OOM */
-       void **p;
-       char *new_next;
-       size_t real_size = size;
-       TLAB_ACCESS_INIT;
-       
-       CANARIFY_SIZE(size);
-
-       HEAVY_STAT (++stat_objects_alloced);
-       if (real_size <= SGEN_MAX_SMALL_OBJ_SIZE)
-               HEAVY_STAT (stat_bytes_alloced += size);
-       else
-               HEAVY_STAT (stat_bytes_alloced_los += size);
-
-       size = ALIGN_UP (size);
-
-       g_assert (vtable->gc_descr);
-
-       if (G_UNLIKELY (has_per_allocation_action)) {
-               static int alloc_count;
-               int current_alloc = InterlockedIncrement (&alloc_count);
-
-               if (collect_before_allocs) {
-                       if (((current_alloc % collect_before_allocs) == 0) && nursery_section) {
-                               sgen_perform_collection (0, GENERATION_NURSERY, "collect-before-alloc-triggered", TRUE);
-                               if (!degraded_mode && sgen_can_alloc_size (size) && real_size <= SGEN_MAX_SMALL_OBJ_SIZE) {
-                                       // FIXME:
-                                       g_assert_not_reached ();
-                               }
-                       }
-               } else if (verify_before_allocs) {
-                       if ((current_alloc % verify_before_allocs) == 0)
-                               sgen_check_whole_heap_stw ();
-               }
-       }
-
-       /*
-        * We must already have the lock here instead of after the
-        * fast path because we might be interrupted in the fast path
-        * (after confirming that new_next < TLAB_TEMP_END) by the GC,
-        * and we'll end up allocating an object in a fragment which
-        * no longer belongs to us.
-        *
-        * The managed allocator does not do this, but it's treated
-        * specially by the world-stopping code.
-        */
-
-       if (real_size > SGEN_MAX_SMALL_OBJ_SIZE) {
-               p = sgen_los_alloc_large_inner (vtable, ALIGN_UP (real_size));
-       } else {
-               /* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
-
-               p = (void**)TLAB_NEXT;
-               /* FIXME: handle overflow */
-               new_next = (char*)p + size;
-               TLAB_NEXT = new_next;
-
-               if (G_LIKELY (new_next < TLAB_TEMP_END)) {
-                       /* Fast path */
-
-                       /* 
-                        * FIXME: We might need a memory barrier here so the change to tlab_next is 
-                        * visible before the vtable store.
-                        */
-
-                       CANARIFY_ALLOC(p,real_size);
-                       SGEN_LOG (6, "Allocated object %p, vtable: %p (%s), size: %zd", p, vtable, vtable->klass->name, size);
-                       binary_protocol_alloc (p , vtable, size);
-                       if (G_UNLIKELY (MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ()))
-                               MONO_GC_NURSERY_OBJ_ALLOC ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-                       g_assert (*p == NULL);
-                       mono_atomic_store_seq (p, vtable);
-
-                       return p;
-               }
-
-               /* Slow path */
-
-               /* there are two cases: the object is too big or we run out of space in the TLAB */
-               /* we also reach here when the thread does its first allocation after a minor 
-                * collection, since the tlab_ variables are initialized to NULL.
-                * there can be another case (from ORP), if we cooperate with the runtime a bit:
-                * objects that need finalizers can have the high bit set in their size
-                * so the above check fails and we can readily add the object to the queue.
-                * This avoids taking again the GC lock when registering, but this is moot when
-                * doing thread-local allocation, so it may not be a good idea.
-                */
-               if (TLAB_NEXT >= TLAB_REAL_END) {
-                       int available_in_tlab;
-                       /* 
-                        * Run out of space in the TLAB. When this happens, some amount of space
-                        * remains in the TLAB, but not enough to satisfy the current allocation
-                        * request. Currently, we retire the TLAB in all cases, later we could
-                        * keep it if the remaining space is above a treshold, and satisfy the
-                        * allocation directly from the nursery.
-                        */
-                       TLAB_NEXT -= size;
-                       /* when running in degraded mode, we continue allocing that way
-                        * for a while, to decrease the number of useless nursery collections.
-                        */
-                       if (degraded_mode && degraded_mode < DEFAULT_NURSERY_SIZE)
-                               return alloc_degraded (vtable, size, FALSE);
-
-                       available_in_tlab = (int)(TLAB_REAL_END - TLAB_NEXT);//We'll never have tlabs > 2Gb
-                       if (size > tlab_size || available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
-                               /* Allocate directly from the nursery */
-                               p = sgen_nursery_alloc (size);
-                               if (!p) {
-                                       /*
-                                        * We couldn't allocate from the nursery, so we try
-                                        * collecting.  Even after the collection, we might
-                                        * still not have enough memory to allocate the
-                                        * object.  The reason will most likely be that we've
-                                        * run out of memory, but there is the theoretical
-                                        * possibility that other threads might have consumed
-                                        * the freed up memory ahead of us.
-                                        *
-                                        * What we do in this case is allocate degraded, i.e.,
-                                        * from the major heap.
-                                        *
-                                        * Ideally we'd like to detect the case of other
-                                        * threads allocating ahead of us and loop (if we
-                                        * always loop we will loop endlessly in the case of
-                                        * OOM).
-                                        */
-                                       sgen_ensure_free_space (real_size);
-                                       if (!degraded_mode)
-                                               p = sgen_nursery_alloc (size);
-                               }
-                               if (!p)
-                                       return alloc_degraded (vtable, size, FALSE);
-
-                               zero_tlab_if_necessary (p, size);
-                       } else {
-                               size_t alloc_size = 0;
-                               if (TLAB_START)
-                                       SGEN_LOG (3, "Retire TLAB: %p-%p [%ld]", TLAB_START, TLAB_REAL_END, (long)(TLAB_REAL_END - TLAB_NEXT - size));
-                               sgen_nursery_retire_region (p, available_in_tlab);
-
-                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
-                               if (!p) {
-                                       /* See comment above in similar case. */
-                                       sgen_ensure_free_space (tlab_size);
-                                       if (!degraded_mode)
-                                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
-                               }
-                               if (!p)
-                                       return alloc_degraded (vtable, size, FALSE);
-
-                               /* Allocate a new TLAB from the current nursery fragment */
-                               TLAB_START = (char*)p;
-                               TLAB_NEXT = TLAB_START;
-                               TLAB_REAL_END = TLAB_START + alloc_size;
-                               TLAB_TEMP_END = TLAB_START + MIN (SGEN_SCAN_START_SIZE, alloc_size);
-
-                               zero_tlab_if_necessary (TLAB_START, alloc_size);
-
-                               /* Allocate from the TLAB */
-                               p = (void*)TLAB_NEXT;
-                               TLAB_NEXT += size;
-                               sgen_set_nursery_scan_start ((char*)p);
-                       }
-               } else {
-                       /* Reached tlab_temp_end */
-
-                       /* record the scan start so we can find pinned objects more easily */
-                       sgen_set_nursery_scan_start ((char*)p);
-                       /* we just bump tlab_temp_end as well */
-                       TLAB_TEMP_END = MIN (TLAB_REAL_END, TLAB_NEXT + SGEN_SCAN_START_SIZE);
-                       SGEN_LOG (5, "Expanding local alloc: %p-%p", TLAB_NEXT, TLAB_TEMP_END);
-               }
-               CANARIFY_ALLOC(p,real_size);
-       }
-
-       if (G_LIKELY (p)) {
-               SGEN_LOG (6, "Allocated object %p, vtable: %p (%s), size: %zd", p, vtable, vtable->klass->name, size);
-               binary_protocol_alloc (p, vtable, size);
-               if (G_UNLIKELY (MONO_GC_MAJOR_OBJ_ALLOC_LARGE_ENABLED ()|| MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ())) {
-                       if (real_size > SGEN_MAX_SMALL_OBJ_SIZE)
-                               MONO_GC_MAJOR_OBJ_ALLOC_LARGE ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-                       else
-                               MONO_GC_NURSERY_OBJ_ALLOC ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-               }
-               mono_atomic_store_seq (p, vtable);
-       }
-
-       return p;
-}
-
-static void*
-mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size)
-{
-       void **p;
-       char *new_next;
-       size_t real_size = size;
-       TLAB_ACCESS_INIT;
-
-       CANARIFY_SIZE(size);
-
-       size = ALIGN_UP (size);
-       SGEN_ASSERT (9, real_size >= sizeof (MonoObject), "Object too small");
-
-       g_assert (vtable->gc_descr);
-       if (real_size > SGEN_MAX_SMALL_OBJ_SIZE)
-               return NULL;
-
-       if (G_UNLIKELY (size > tlab_size)) {
-               /* Allocate directly from the nursery */
-               p = sgen_nursery_alloc (size);
-               if (!p)
-                       return NULL;
-               sgen_set_nursery_scan_start ((char*)p);
-
-               /*FIXME we should use weak memory ops here. Should help specially on x86. */
-               zero_tlab_if_necessary (p, size);
-       } else {
-               int available_in_tlab;
-               char *real_end;
-               /* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
-
-               p = (void**)TLAB_NEXT;
-               /* FIXME: handle overflow */
-               new_next = (char*)p + size;
-
-               real_end = TLAB_REAL_END;
-               available_in_tlab = (int)(real_end - (char*)p);//We'll never have tlabs > 2Gb
-
-               if (G_LIKELY (new_next < real_end)) {
-                       TLAB_NEXT = new_next;
-
-                       /* Second case, we overflowed temp end */
-                       if (G_UNLIKELY (new_next >= TLAB_TEMP_END)) {
-                               sgen_set_nursery_scan_start (new_next);
-                               /* we just bump tlab_temp_end as well */
-                               TLAB_TEMP_END = MIN (TLAB_REAL_END, TLAB_NEXT + SGEN_SCAN_START_SIZE);
-                               SGEN_LOG (5, "Expanding local alloc: %p-%p", TLAB_NEXT, TLAB_TEMP_END);
-                       }
-               } else if (available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
-                       /* Allocate directly from the nursery */
-                       p = sgen_nursery_alloc (size);
-                       if (!p)
-                               return NULL;
-
-                       zero_tlab_if_necessary (p, size);
-               } else {
-                       size_t alloc_size = 0;
-
-                       sgen_nursery_retire_region (p, available_in_tlab);
-                       new_next = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
-                       p = (void**)new_next;
-                       if (!p)
-                               return NULL;
-
-                       TLAB_START = (char*)new_next;
-                       TLAB_NEXT = new_next + size;
-                       TLAB_REAL_END = new_next + alloc_size;
-                       TLAB_TEMP_END = new_next + MIN (SGEN_SCAN_START_SIZE, alloc_size);
-                       sgen_set_nursery_scan_start ((char*)p);
-
-                       zero_tlab_if_necessary (new_next, alloc_size);
-
-                       MONO_GC_NURSERY_TLAB_ALLOC ((mword)new_next, alloc_size);
-               }
-       }
-
-       HEAVY_STAT (++stat_objects_alloced);
-       HEAVY_STAT (stat_bytes_alloced += size);
-
-       CANARIFY_ALLOC(p,real_size);
-       SGEN_LOG (6, "Allocated object %p, vtable: %p (%s), size: %zd", p, vtable, vtable->klass->name, size);
-       binary_protocol_alloc (p, vtable, size);
-       if (G_UNLIKELY (MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ()))
-               MONO_GC_NURSERY_OBJ_ALLOC ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-       g_assert (*p == NULL); /* FIXME disable this in non debug builds */
-
-       mono_atomic_store_seq (p, vtable);
-
-       return p;
-}
-
-void*
-mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
-{
-       void *res;
-       TLAB_ACCESS_INIT;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return NULL;
-
-#ifndef DISABLE_CRITICAL_REGION
-
-       if (G_UNLIKELY (has_per_allocation_action)) {
-               static int alloc_count;
-               int current_alloc = InterlockedIncrement (&alloc_count);
-
-               if (verify_before_allocs) {
-                       if ((current_alloc % verify_before_allocs) == 0)
-                               sgen_check_whole_heap_stw ();
-               }
-               if (collect_before_allocs) {
-                       if (((current_alloc % collect_before_allocs) == 0) && nursery_section) {
-                               LOCK_GC;
-                               sgen_perform_collection (0, GENERATION_NURSERY, "collect-before-alloc-triggered", TRUE);
-                               UNLOCK_GC;
-                       }
-               }
-       }
-
-       ENTER_CRITICAL_REGION;
-       res = mono_gc_try_alloc_obj_nolock (vtable, size);
-       if (res) {
-               EXIT_CRITICAL_REGION;
-               return res;
-       }
-       EXIT_CRITICAL_REGION;
-#endif
-       LOCK_GC;
-       res = mono_gc_alloc_obj_nolock (vtable, size);
-       UNLOCK_GC;
-       if (G_UNLIKELY (!res))
-               return mono_gc_out_of_memory (size);
-       return res;
-}
-
-void*
-mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
-{
-       MonoArray *arr;
-       TLAB_ACCESS_INIT;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return NULL;
-
-#ifndef DISABLE_CRITICAL_REGION
-       ENTER_CRITICAL_REGION;
-       arr = mono_gc_try_alloc_obj_nolock (vtable, size);
-       if (arr) {
-               /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
-               arr->max_length = (mono_array_size_t)max_length;
-               EXIT_CRITICAL_REGION;
-               goto done;
-       }
-       EXIT_CRITICAL_REGION;
-#endif
-
-       LOCK_GC;
-
-       arr = mono_gc_alloc_obj_nolock (vtable, size);
-       if (G_UNLIKELY (!arr)) {
-               UNLOCK_GC;
-               return mono_gc_out_of_memory (size);
-       }
-
-       arr->max_length = (mono_array_size_t)max_length;
-
-
-       UNLOCK_GC;
-
- done:
-       SGEN_ASSERT (6, SGEN_ALIGN_UP (size) == SGEN_ALIGN_UP (sgen_par_object_get_size (vtable, (MonoObject*)arr)), "Vector has incorrect size.");
-       return arr;
-}
-
-void*
-mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uintptr_t bounds_size)
-{
-       MonoArray *arr;
-       MonoArrayBounds *bounds;
-       TLAB_ACCESS_INIT;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return NULL;
-
-#ifndef DISABLE_CRITICAL_REGION
-       ENTER_CRITICAL_REGION;
-       arr = mono_gc_try_alloc_obj_nolock (vtable, size);
-       if (arr) {
-               /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
-               arr->max_length = (mono_array_size_t)max_length;
-
-               bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
-               arr->bounds = bounds;
-               EXIT_CRITICAL_REGION;
-               goto done;
-       }
-       EXIT_CRITICAL_REGION;
-#endif
-
-       LOCK_GC;
-
-       arr = mono_gc_alloc_obj_nolock (vtable, size);
-       if (G_UNLIKELY (!arr)) {
-               UNLOCK_GC;
-               return mono_gc_out_of_memory (size);
-       }
-
-       arr->max_length = (mono_array_size_t)max_length;
-
-       bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
-       arr->bounds = bounds;
-
-       UNLOCK_GC;
-
- done:
-       SGEN_ASSERT (6, SGEN_ALIGN_UP (size) == SGEN_ALIGN_UP (sgen_par_object_get_size (vtable, (MonoObject*)arr)), "Array has incorrect size.");
-       return arr;
-}
-
-void*
-mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
-{
-       MonoString *str;
-       TLAB_ACCESS_INIT;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return NULL;
-
-#ifndef DISABLE_CRITICAL_REGION
-       ENTER_CRITICAL_REGION;
-       str = mono_gc_try_alloc_obj_nolock (vtable, size);
-       if (str) {
-               /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
-               str->length = len;
-               EXIT_CRITICAL_REGION;
-               return str;
-       }
-       EXIT_CRITICAL_REGION;
-#endif
-
-       LOCK_GC;
-
-       str = mono_gc_alloc_obj_nolock (vtable, size);
-       if (G_UNLIKELY (!str)) {
-               UNLOCK_GC;
-               return mono_gc_out_of_memory (size);
-       }
-
-       str->length = len;
-
-       UNLOCK_GC;
-
-       return str;
-}
-
-/*
- * To be used for interned strings and possibly MonoThread, reflection handles.
- * We may want to explicitly free these objects.
- */
-void*
-mono_gc_alloc_pinned_obj (MonoVTable *vtable, size_t size)
-{
-       void **p;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return NULL;
-       size = ALIGN_UP (size);
-
-       LOCK_GC;
-
-       if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
-               /* large objects are always pinned anyway */
-               p = sgen_los_alloc_large_inner (vtable, size);
-       } else {
-               SGEN_ASSERT (9, vtable->klass->inited, "class %s:%s is not initialized", vtable->klass->name_space, vtable->klass->name);
-               p = major_collector.alloc_small_pinned_obj (vtable, size, SGEN_VTABLE_HAS_REFERENCES (vtable));
-       }
-       if (G_LIKELY (p)) {
-               SGEN_LOG (6, "Allocated pinned object %p, vtable: %p (%s), size: %zd", p, vtable, vtable->klass->name, size);
-               if (size > SGEN_MAX_SMALL_OBJ_SIZE)
-                       MONO_GC_MAJOR_OBJ_ALLOC_LARGE ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-               else
-                       MONO_GC_MAJOR_OBJ_ALLOC_PINNED ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
-               binary_protocol_alloc_pinned (p, vtable, size);
-       }
-       UNLOCK_GC;
-       return p;
-}
-
-void*
-mono_gc_alloc_mature (MonoVTable *vtable)
-{
-       void **res;
-       size_t size = vtable->klass->instance_size;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return NULL;
-       size = ALIGN_UP (size);
-
-       LOCK_GC;
-       res = alloc_degraded (vtable, size, TRUE);
-       UNLOCK_GC;
-       if (G_UNLIKELY (vtable->klass->has_finalize))
-               mono_object_register_finalizer ((MonoObject*)res);
-
-       return res;
-}
-
-void*
-mono_gc_alloc_fixed (size_t size, void *descr)
-{
-       /* FIXME: do a single allocation */
-       void *res = calloc (1, size);
-       if (!res)
-               return NULL;
-       if (!mono_gc_register_root (res, size, descr)) {
-               free (res);
-               res = NULL;
-       }
-       return res;
-}
-
-void
-mono_gc_free_fixed (void* addr)
-{
-       mono_gc_deregister_root (addr);
-       free (addr);
-}
-
-void
-sgen_init_tlab_info (SgenThreadInfo* info)
-{
-#ifndef HAVE_KW_THREAD
-       SgenThreadInfo *__thread_info__ = info;
-#endif
-
-       info->tlab_start_addr = &TLAB_START;
-       info->tlab_next_addr = &TLAB_NEXT;
-       info->tlab_temp_end_addr = &TLAB_TEMP_END;
-       info->tlab_real_end_addr = &TLAB_REAL_END;
-
-#ifdef HAVE_KW_THREAD
-       tlab_next_addr = &tlab_next;
-#endif
-}
-
-/*
- * Clear the thread local TLAB variables for all threads.
- */
-void
-sgen_clear_tlabs (void)
-{
-       SgenThreadInfo *info;
-
-       FOREACH_THREAD (info) {
-               /* A new TLAB will be allocated when the thread does its first allocation */
-               *info->tlab_start_addr = NULL;
-               *info->tlab_next_addr = NULL;
-               *info->tlab_temp_end_addr = NULL;
-               *info->tlab_real_end_addr = NULL;
-       } END_FOREACH_THREAD
-}
-
-static MonoMethod* alloc_method_cache [ATYPE_NUM];
-
-#ifdef MANAGED_ALLOCATION
-/* FIXME: Do this in the JIT, where specialized allocation sequences can be created
- * for each class. This is currently not easy to do, as it is hard to generate basic 
- * blocks + branches, but it is easy with the linear IL codebase.
- *
- * For this to work we'd need to solve the TLAB race, first.  Now we
- * require the allocator to be in a few known methods to make sure
- * that they are executed atomically via the restart mechanism.
- */
-static MonoMethod*
-create_allocator (int atype)
-{
-       int p_var, size_var;
-       guint32 slowpath_branch, max_size_branch;
-       MonoMethodBuilder *mb;
-       MonoMethod *res;
-       MonoMethodSignature *csig;
-       static gboolean registered = FALSE;
-       int tlab_next_addr_var, new_next_var;
-       int num_params, i;
-       const char *name = NULL;
-       AllocatorWrapperInfo *info;
-
-#ifdef HAVE_KW_THREAD
-       int tlab_next_addr_offset = -1;
-       int tlab_temp_end_offset = -1;
-
-       MONO_THREAD_VAR_OFFSET (tlab_next_addr, tlab_next_addr_offset);
-       MONO_THREAD_VAR_OFFSET (tlab_temp_end, tlab_temp_end_offset);
-
-       mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_NEXT_ADDR, tlab_next_addr_offset);
-       mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_TEMP_END, tlab_temp_end_offset);
-
-       g_assert (tlab_next_addr_offset != -1);
-       g_assert (tlab_temp_end_offset != -1);
-#endif
-
-       if (!registered) {
-               mono_register_jit_icall (mono_gc_alloc_obj, "mono_gc_alloc_obj", mono_create_icall_signature ("object ptr int"), FALSE);
-               mono_register_jit_icall (mono_gc_alloc_vector, "mono_gc_alloc_vector", mono_create_icall_signature ("object ptr int int"), FALSE);
-               mono_register_jit_icall (mono_gc_alloc_string, "mono_gc_alloc_string", mono_create_icall_signature ("object ptr int int32"), FALSE);
-               registered = TRUE;
-       }
-
-       if (atype == ATYPE_SMALL) {
-               num_params = 2;
-               name = "AllocSmall";
-       } else if (atype == ATYPE_NORMAL) {
-               num_params = 1;
-               name = "Alloc";
-       } else if (atype == ATYPE_VECTOR) {
-               num_params = 2;
-               name = "AllocVector";
-       } else if (atype == ATYPE_STRING) {
-               num_params = 2;
-               name = "AllocString";
-       } else {
-               g_assert_not_reached ();
-       }
-
-       csig = mono_metadata_signature_alloc (mono_defaults.corlib, num_params);
-       if (atype == ATYPE_STRING) {
-               csig->ret = &mono_defaults.string_class->byval_arg;
-               csig->params [0] = &mono_defaults.int_class->byval_arg;
-               csig->params [1] = &mono_defaults.int32_class->byval_arg;
-       } else {
-               csig->ret = &mono_defaults.object_class->byval_arg;
-               for (i = 0; i < num_params; ++i)
-                       csig->params [i] = &mono_defaults.int_class->byval_arg;
-       }
-
-       mb = mono_mb_new (mono_defaults.object_class, name, MONO_WRAPPER_ALLOC);
-
-#ifndef DISABLE_JIT
-       size_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-       if (atype == ATYPE_SMALL) {
-               /* size_var = size_arg */
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_stloc (mb, size_var);
-       } else if (atype == ATYPE_NORMAL) {
-               /* size = vtable->klass->instance_size; */
-               mono_mb_emit_ldarg (mb, 0);
-               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoVTable, klass));
-               mono_mb_emit_byte (mb, CEE_ADD);
-               mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoClass, instance_size));
-               mono_mb_emit_byte (mb, CEE_ADD);
-               /* FIXME: assert instance_size stays a 4 byte integer */
-               mono_mb_emit_byte (mb, CEE_LDIND_U4);
-               mono_mb_emit_byte (mb, CEE_CONV_I);
-               mono_mb_emit_stloc (mb, size_var);
-       } else if (atype == ATYPE_VECTOR) {
-               MonoExceptionClause *clause;
-               int pos, pos_leave, pos_error;
-               MonoClass *oom_exc_class;
-               MonoMethod *ctor;
-
-               /*
-                * n > MONO_ARRAY_MAX_INDEX => OutOfMemoryException
-                * n < 0                    => OverflowException
-                *
-                * We can do an unsigned comparison to catch both cases, then in the error
-                * case compare signed to distinguish between them.
-                */
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_icon (mb, MONO_ARRAY_MAX_INDEX);
-               mono_mb_emit_byte (mb, CEE_CONV_U);
-               pos = mono_mb_emit_short_branch (mb, CEE_BLE_UN_S);
-
-               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-               mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_icon (mb, 0);
-               pos_error = mono_mb_emit_short_branch (mb, CEE_BLT_S);
-               mono_mb_emit_exception (mb, "OutOfMemoryException", NULL);
-               mono_mb_patch_short_branch (mb, pos_error);
-               mono_mb_emit_exception (mb, "OverflowException", NULL);
-
-               mono_mb_patch_short_branch (mb, pos);
-
-               clause = mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
-               clause->try_offset = mono_mb_get_label (mb);
-
-               /* vtable->klass->sizes.element_size */
-               mono_mb_emit_ldarg (mb, 0);
-               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoVTable, klass));
-               mono_mb_emit_byte (mb, CEE_ADD);
-               mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoClass, sizes));
-               mono_mb_emit_byte (mb, CEE_ADD);
-               mono_mb_emit_byte (mb, CEE_LDIND_U4);
-               mono_mb_emit_byte (mb, CEE_CONV_I);
-
-               /* * n */
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_byte (mb, CEE_MUL_OVF_UN);
-               /* + sizeof (MonoArray) */
-               mono_mb_emit_icon (mb, sizeof (MonoArray));
-               mono_mb_emit_byte (mb, CEE_ADD_OVF_UN);
-               mono_mb_emit_stloc (mb, size_var);
-
-               pos_leave = mono_mb_emit_branch (mb, CEE_LEAVE);
-
-               /* catch */
-               clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
-               clause->try_len = mono_mb_get_pos (mb) - clause->try_offset;
-               clause->data.catch_class = mono_class_from_name (mono_defaults.corlib,
-                               "System", "OverflowException");
-               g_assert (clause->data.catch_class);
-               clause->handler_offset = mono_mb_get_label (mb);
-
-               oom_exc_class = mono_class_from_name (mono_defaults.corlib,
-                               "System", "OutOfMemoryException");
-               g_assert (oom_exc_class);
-               ctor = mono_class_get_method_from_name (oom_exc_class, ".ctor", 0);
-               g_assert (ctor);
-
-               mono_mb_emit_byte (mb, CEE_POP);
-               mono_mb_emit_op (mb, CEE_NEWOBJ, ctor);
-               mono_mb_emit_byte (mb, CEE_THROW);
-
-               clause->handler_len = mono_mb_get_pos (mb) - clause->handler_offset;
-               mono_mb_set_clauses (mb, 1, clause);
-               mono_mb_patch_branch (mb, pos_leave);
-               /* end catch */
-       } else if (atype == ATYPE_STRING) {
-               int pos;
-
-               /*
-                * a string allocator method takes the args: (vtable, len)
-                *
-                * bytes = offsetof (MonoString, chars) + ((len + 1) * 2)
-                *
-                * condition:
-                *
-                * bytes <= INT32_MAX - (SGEN_ALLOC_ALIGN - 1)
-                *
-                * therefore:
-                *
-                * offsetof (MonoString, chars) + ((len + 1) * 2) <= INT32_MAX - (SGEN_ALLOC_ALIGN - 1)
-                * len <= (INT32_MAX - (SGEN_ALLOC_ALIGN - 1) - offsetof (MonoString, chars)) / 2 - 1
-                */
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_icon (mb, (INT32_MAX - (SGEN_ALLOC_ALIGN - 1) - MONO_STRUCT_OFFSET (MonoString, chars)) / 2 - 1);
-               pos = mono_mb_emit_short_branch (mb, MONO_CEE_BLE_UN_S);
-
-               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-               mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
-               mono_mb_emit_exception (mb, "OutOfMemoryException", NULL);
-               mono_mb_patch_short_branch (mb, pos);
-
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_icon (mb, 1);
-               mono_mb_emit_byte (mb, MONO_CEE_SHL);
-               //WE manually fold the above + 2 here
-               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoString, chars) + 2);
-               mono_mb_emit_byte (mb, CEE_ADD);
-               mono_mb_emit_stloc (mb, size_var);
-       } else {
-               g_assert_not_reached ();
-       }
-
-       if (atype != ATYPE_SMALL) {
-               /* size += ALLOC_ALIGN - 1; */
-               mono_mb_emit_ldloc (mb, size_var);
-               mono_mb_emit_icon (mb, ALLOC_ALIGN - 1);
-               mono_mb_emit_byte (mb, CEE_ADD);
-               /* size &= ~(ALLOC_ALIGN - 1); */
-               mono_mb_emit_icon (mb, ~(ALLOC_ALIGN - 1));
-               mono_mb_emit_byte (mb, CEE_AND);
-               mono_mb_emit_stloc (mb, size_var);
-       }
-
-       /* if (size > MAX_SMALL_OBJ_SIZE) goto slowpath */
-       if (atype != ATYPE_SMALL) {
-               mono_mb_emit_ldloc (mb, size_var);
-               mono_mb_emit_icon (mb, MAX_SMALL_OBJ_SIZE);
-               max_size_branch = mono_mb_emit_short_branch (mb, MONO_CEE_BGT_UN_S);
-       }
-
-       /*
-        * We need to modify tlab_next, but the JIT only supports reading, so we read
-        * another tls var holding its address instead.
-        */
-
-       /* tlab_next_addr (local) = tlab_next_addr (TLS var) */
-       tlab_next_addr_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-       EMIT_TLS_ACCESS_NEXT_ADDR (mb);
-       mono_mb_emit_stloc (mb, tlab_next_addr_var);
-
-       /* p = (void**)tlab_next; */
-       p_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-       mono_mb_emit_ldloc (mb, tlab_next_addr_var);
-       mono_mb_emit_byte (mb, CEE_LDIND_I);
-       mono_mb_emit_stloc (mb, p_var);
-       
-       /* new_next = (char*)p + size; */
-       new_next_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-       mono_mb_emit_ldloc (mb, p_var);
-       mono_mb_emit_ldloc (mb, size_var);
-       mono_mb_emit_byte (mb, CEE_CONV_I);
-       mono_mb_emit_byte (mb, CEE_ADD);
-       mono_mb_emit_stloc (mb, new_next_var);
-
-       /* if (G_LIKELY (new_next < tlab_temp_end)) */
-       mono_mb_emit_ldloc (mb, new_next_var);
-       EMIT_TLS_ACCESS_TEMP_END (mb);
-       slowpath_branch = mono_mb_emit_short_branch (mb, MONO_CEE_BLT_UN_S);
-
-       /* Slowpath */
-       if (atype != ATYPE_SMALL)
-               mono_mb_patch_short_branch (mb, max_size_branch);
-
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
-
-       /* FIXME: mono_gc_alloc_obj takes a 'size_t' as an argument, not an int32 */
-       mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_ldloc (mb, size_var);
-       if (atype == ATYPE_NORMAL || atype == ATYPE_SMALL) {
-               mono_mb_emit_icall (mb, mono_gc_alloc_obj);
-       } else if (atype == ATYPE_VECTOR) {
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_icall (mb, mono_gc_alloc_vector);
-       } else if (atype == ATYPE_STRING) {
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_icall (mb, mono_gc_alloc_string);
-       } else {
-               g_assert_not_reached ();
-       }
-       mono_mb_emit_byte (mb, CEE_RET);
-
-       /* Fastpath */
-       mono_mb_patch_short_branch (mb, slowpath_branch);
-
-       /* FIXME: Memory barrier */
-
-       /* tlab_next = new_next */
-       mono_mb_emit_ldloc (mb, tlab_next_addr_var);
-       mono_mb_emit_ldloc (mb, new_next_var);
-       mono_mb_emit_byte (mb, CEE_STIND_I);
-
-       /*The tlab store must be visible before the the vtable store. This could be replaced with a DDS but doing it with IL would be tricky. */
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_MEMORY_BARRIER);
-       mono_mb_emit_i4 (mb, MONO_MEMORY_BARRIER_REL);
-
-       /* *p = vtable; */
-       mono_mb_emit_ldloc (mb, p_var);
-       mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_byte (mb, CEE_STIND_I);
-
-       if (atype == ATYPE_VECTOR) {
-               /* arr->max_length = max_length; */
-               mono_mb_emit_ldloc (mb, p_var);
-               mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoArray, max_length));
-               mono_mb_emit_ldarg (mb, 1);
-#ifdef MONO_BIG_ARRAYS
-               mono_mb_emit_byte (mb, CEE_STIND_I);
-#else
-               mono_mb_emit_byte (mb, CEE_STIND_I4);
-#endif
-       } else  if (atype == ATYPE_STRING) {
-               /* need to set length and clear the last char */
-               /* s->length = len; */
-               mono_mb_emit_ldloc (mb, p_var);
-               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoString, length));
-               mono_mb_emit_byte (mb, MONO_CEE_ADD);
-               mono_mb_emit_ldarg (mb, 1);
-               mono_mb_emit_byte (mb, MONO_CEE_STIND_I4);
-               /* s->chars [len] = 0; */
-               mono_mb_emit_ldloc (mb, p_var);
-               mono_mb_emit_ldloc (mb, size_var);
-               mono_mb_emit_icon (mb, 2);
-               mono_mb_emit_byte (mb, MONO_CEE_SUB);
-               mono_mb_emit_byte (mb, MONO_CEE_ADD);
-               mono_mb_emit_icon (mb, 0);
-               mono_mb_emit_byte (mb, MONO_CEE_STIND_I2);
-       }
-
-       /*
-       We must make sure both vtable and max_length are globaly visible before returning to managed land.
-       */
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_MEMORY_BARRIER);
-       mono_mb_emit_i4 (mb, MONO_MEMORY_BARRIER_REL);
-
-       /* return p */
-       mono_mb_emit_ldloc (mb, p_var);
-       mono_mb_emit_byte (mb, CEE_RET);
-#endif
-
-       res = mono_mb_create_method (mb, csig, 8);
-       mono_mb_free (mb);
-       mono_method_get_header (res)->init_locals = FALSE;
-
-       info = mono_image_alloc0 (mono_defaults.corlib, sizeof (AllocatorWrapperInfo));
-       info->gc_name = "sgen";
-       info->alloc_type = atype;
-       mono_marshal_set_wrapper_info (res, info);
-
-       return res;
-}
-#endif
-
-int
-mono_gc_get_aligned_size_for_allocator (int size)
-{
-       int aligned_size = size;
-       aligned_size += ALLOC_ALIGN - 1;
-       aligned_size &= ~(ALLOC_ALIGN - 1);
-       return aligned_size;
-}
-
-/*
- * Generate an allocator method implementing the fast path of mono_gc_alloc_obj ().
- * The signature of the called method is:
- *     object allocate (MonoVTable *vtable)
- */
-MonoMethod*
-mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box, gboolean known_instance_size)
-{
-#ifdef MANAGED_ALLOCATION
-
-#ifdef HAVE_KW_THREAD
-       int tlab_next_offset = -1;
-       int tlab_temp_end_offset = -1;
-       MONO_THREAD_VAR_OFFSET (tlab_next, tlab_next_offset);
-       MONO_THREAD_VAR_OFFSET (tlab_temp_end, tlab_temp_end_offset);
-
-       if (tlab_next_offset == -1 || tlab_temp_end_offset == -1)
-               return NULL;
-#endif
-       if (collect_before_allocs)
-               return NULL;
-       if (!mono_runtime_has_tls_get ())
-               return NULL;
-       if (klass->instance_size > tlab_size)
-               return NULL;
-       if (known_instance_size && ALIGN_TO (klass->instance_size, ALLOC_ALIGN) >= MAX_SMALL_OBJ_SIZE)
-               return NULL;
-
-       if (klass->has_finalize || mono_class_is_marshalbyref (klass) || (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS))
-               return NULL;
-       if (klass->rank)
-               return NULL;
-       if (klass->byval_arg.type == MONO_TYPE_STRING)
-               return mono_gc_get_managed_allocator_by_type (ATYPE_STRING);
-       /* Generic classes have dynamic field and can go above MAX_SMALL_OBJ_SIZE. */
-       if (known_instance_size)
-               return mono_gc_get_managed_allocator_by_type (ATYPE_SMALL);
-       else
-               return mono_gc_get_managed_allocator_by_type (ATYPE_NORMAL);
-#else
-       return NULL;
-#endif
-}
-
-MonoMethod*
-mono_gc_get_managed_array_allocator (MonoClass *klass)
-{
-#ifdef MANAGED_ALLOCATION
-#ifdef HAVE_KW_THREAD
-       int tlab_next_offset = -1;
-       int tlab_temp_end_offset = -1;
-       MONO_THREAD_VAR_OFFSET (tlab_next, tlab_next_offset);
-       MONO_THREAD_VAR_OFFSET (tlab_temp_end, tlab_temp_end_offset);
-
-       if (tlab_next_offset == -1 || tlab_temp_end_offset == -1)
-               return NULL;
-#endif
-
-       if (klass->rank != 1)
-               return NULL;
-       if (!mono_runtime_has_tls_get ())
-               return NULL;
-       if (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS)
-               return NULL;
-       if (has_per_allocation_action)
-               return NULL;
-       g_assert (!mono_class_has_finalizer (klass) && !mono_class_is_marshalbyref (klass));
-
-       return mono_gc_get_managed_allocator_by_type (ATYPE_VECTOR);
-#else
-       return NULL;
-#endif
-}
-
-void
-sgen_set_use_managed_allocator (gboolean flag)
-{
-       use_managed_allocator = flag;
-}
-
-MonoMethod*
-mono_gc_get_managed_allocator_by_type (int atype)
-{
-#ifdef MANAGED_ALLOCATION
-       MonoMethod *res;
-
-       if (!use_managed_allocator)
-               return NULL;
-
-       if (!mono_runtime_has_tls_get ())
-               return NULL;
-
-       res = alloc_method_cache [atype];
-       if (res)
-               return res;
-
-       res = create_allocator (atype);
-       LOCK_GC;
-       if (alloc_method_cache [atype]) {
-               mono_free_method (res);
-               res = alloc_method_cache [atype];
-       } else {
-               mono_memory_barrier ();
-               alloc_method_cache [atype] = res;
-       }
-       UNLOCK_GC;
-
-       return res;
-#else
-       return NULL;
-#endif
-}
-
-guint32
-mono_gc_get_managed_allocator_types (void)
-{
-       return ATYPE_NUM;
-}
-
-gboolean
-sgen_is_managed_allocator (MonoMethod *method)
-{
-       int i;
-
-       for (i = 0; i < ATYPE_NUM; ++i)
-               if (method == alloc_method_cache [i])
-                       return TRUE;
-       return FALSE;
-}
-
-gboolean
-sgen_has_managed_allocator (void)
-{
-       int i;
-
-       for (i = 0; i < ATYPE_NUM; ++i)
-               if (alloc_method_cache [i])
-                       return TRUE;
-       return FALSE;
-}      
-
-#ifdef HEAVY_STATISTICS
-void
-sgen_alloc_init_heavy_stats (void)
-{
-       mono_counters_register ("# objects allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_alloced);    
-       mono_counters_register ("bytes allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_bytes_alloced);
-       mono_counters_register ("bytes allocated in LOS", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_bytes_alloced_los);
-}
-#endif
-
-#endif /*HAVE_SGEN_GC*/
diff --git a/mono/metadata/sgen-archdep.h b/mono/metadata/sgen-archdep.h
deleted file mode 100644 (file)
index 410ba6a..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * sgen-archdep.h: Architecture dependent parts of SGen.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGENARCHDEP_H__
-#define __MONO_SGENARCHDEP_H__
-
-#include <mono/utils/mono-context.h>
-
-/*
- * Define either USE_MONO_CTX, or
- * ARCH_SIGCTX_SP/ARCH_SIGCTX_IP/ARCH_STORE_REGS/ARCH_COPY_SIGCTX_REGS.
- * Define ARCH_NUM_REGS to be the number of general registers in MonoContext, or the
- * number of registers stored by ARCH_STORE_REGS.
- */
-
-#if defined(MONO_CROSS_COMPILE)
-
-#define REDZONE_SIZE   0
-
-#define ARCH_NUM_REGS 0
-#define ARCH_STORE_REGS(ptr)
-#define ARCH_SIGCTX_SP(ctx) NULL
-#define ARCH_SIGCTX_IP(ctx) NULL
-#define ARCH_COPY_SIGCTX_REGS(a,ctx)
-
-#elif defined(TARGET_X86)
-
-#define REDZONE_SIZE   0
-
-#define ARCH_NUM_REGS 8
-
-#ifndef MONO_ARCH_HAS_MONO_CONTEXT
-#error 0
-#endif
-
-#define USE_MONO_CTX
-
-#elif defined(TARGET_AMD64)
-
-#define REDZONE_SIZE   128
-
-#define ARCH_NUM_REGS 16
-#define USE_MONO_CTX
-
-#elif defined(TARGET_POWERPC)
-
-#define REDZONE_SIZE   224
-
-#define ARCH_NUM_REGS 32
-#ifdef __APPLE__
-#define ARCH_STORE_REGS(ptr)   \
-       __asm__ __volatile__(   \
-               "stmw r0, 0(%0)\n"      \
-               :                       \
-               : "b" (ptr)             \
-       )
-#else
-#define ARCH_STORE_REGS(ptr)   \
-       __asm__ __volatile__(   \
-               "stmw 0, 0(%0)\n"       \
-               :                       \
-               : "b" (ptr)             \
-       )
-#endif
-#define ARCH_SIGCTX_SP(ctx)    (UCONTEXT_REG_Rn((ctx), 1))
-#define ARCH_SIGCTX_IP(ctx)    (UCONTEXT_REG_NIP((ctx)))
-#define ARCH_COPY_SIGCTX_REGS(a,ctx) do {      \
-       int __i;        \
-       for (__i = 0; __i < 32; ++__i)  \
-               ((a)[__i]) = (gpointer) UCONTEXT_REG_Rn((ctx), __i);    \
-       } while (0)
-
-/* MS_BLOCK_SIZE must be a multiple of the system pagesize, which for some
-   archs is 64k.  */
-#if defined(TARGET_POWERPC64) && _CALL_ELF == 2
-#define ARCH_MIN_MS_BLOCK_SIZE (64*1024)
-#define ARCH_MIN_MS_BLOCK_SIZE_SHIFT   16
-#endif
-
-#elif defined(TARGET_ARM)
-
-#define REDZONE_SIZE   0
-#define USE_MONO_CTX
-
-/* We dont store ip, sp */
-#define ARCH_NUM_REGS 14
-
-#elif defined(TARGET_ARM64)
-
-#ifdef __linux__
-#define REDZONE_SIZE    0
-#elif defined(__APPLE__)
-#define REDZONE_SIZE   128
-#else
-#error "Not implemented."
-#endif
-#define USE_MONO_CTX
-#define ARCH_NUM_REGS 31
-
-#elif defined(__mips__)
-
-#define REDZONE_SIZE   0
-
-#define USE_MONO_CTX
-#define ARCH_NUM_REGS 32
-
-#elif defined(__s390x__)
-
-#define REDZONE_SIZE   0
-
-#define USE_MONO_CTX
-#define ARCH_NUM_REGS 16       
-
-#elif defined(__sparc__)
-
-#define REDZONE_SIZE   0
-
-/* Don't bother with %g0 (%r0), it's always hard-coded to zero */
-#define ARCH_NUM_REGS 15       
-#ifdef __sparcv9
-#define ARCH_STORE_REGS(ptr)   \
-       __asm__ __volatile__(   \
-               "st %%g1,[%0]\n\t"      \
-               "st %%g2,[%0+0x08]\n\t" \
-               "st %%g3,[%0+0x10]\n\t" \
-               "st %%g4,[%0+0x18]\n\t" \
-               "st %%g5,[%0+0x20]\n\t" \
-               "st %%g6,[%0+0x28]\n\t" \
-               "st %%g7,[%0+0x30]\n\t" \
-               "st %%o0,[%0+0x38]\n\t" \
-               "st %%o1,[%0+0x40]\n\t" \
-               "st %%o2,[%0+0x48]\n\t" \
-               "st %%o3,[%0+0x50]\n\t" \
-               "st %%o4,[%0+0x58]\n\t" \
-               "st %%o5,[%0+0x60]\n\t" \
-               "st %%o6,[%0+0x68]\n\t" \
-               "st %%o7,[%0+0x70]\n\t" \
-               :                       \
-               : "r" (ptr)             \
-               : "memory"                      \
-       )
-#else
-#define ARCH_STORE_REGS(ptr)   \
-       __asm__ __volatile__(   \
-               "st %%g1,[%0]\n\t"      \
-               "st %%g2,[%0+0x04]\n\t" \
-               "st %%g3,[%0+0x08]\n\t" \
-               "st %%g4,[%0+0x0c]\n\t" \
-               "st %%g5,[%0+0x10]\n\t" \
-               "st %%g6,[%0+0x14]\n\t" \
-               "st %%g7,[%0+0x18]\n\t" \
-               "st %%o0,[%0+0x1c]\n\t" \
-               "st %%o1,[%0+0x20]\n\t" \
-               "st %%o2,[%0+0x24]\n\t" \
-               "st %%o3,[%0+0x28]\n\t" \
-               "st %%o4,[%0+0x2c]\n\t" \
-               "st %%o5,[%0+0x30]\n\t" \
-               "st %%o6,[%0+0x34]\n\t" \
-               "st %%o7,[%0+0x38]\n\t" \
-               :                       \
-               : "r" (ptr)             \
-               : "memory"                      \
-       )
-#endif
-
-#ifndef REG_SP
-#define REG_SP REG_O6
-#endif
-
-#define ARCH_SIGCTX_SP(ctx)    (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_SP])
-#define ARCH_SIGCTX_IP(ctx)    (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_PC])
-#define ARCH_COPY_SIGCTX_REGS(a,ctx) do {      \
-       (a)[0] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G1]);        \
-       (a)[1] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G2]);        \
-       (a)[2] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G3]);        \
-       (a)[3] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G4]);        \
-       (a)[4] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G5]);        \
-       (a)[5] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G6]);        \
-       (a)[6] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G7]);        \
-       (a)[7] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O0]);        \
-       (a)[8] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O1]);        \
-       (a)[9] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O2]);        \
-       (a)[10] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O3]);       \
-       (a)[11] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O4]);       \
-       (a)[12] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O5]);       \
-       (a)[13] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O6]);       \
-       (a)[14] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O7]);       \
-       } while (0)
-
-#endif
-
-#endif /* __MONO_SGENARCHDEP_H__ */
diff --git a/mono/metadata/sgen-bridge-internal.h b/mono/metadata/sgen-bridge-internal.h
new file mode 100644 (file)
index 0000000..824e5d4
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * sgen-bridge-internal.h: The cross-GC bridge.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGENBRIDGEINTERNAL_H__
+#define __MONO_SGENBRIDGEINTERNAL_H__
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include "mono/utils/mono-compiler.h"
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/metadata/sgen-bridge.h"
+
+extern gboolean bridge_processing_in_progress;
+extern MonoGCBridgeCallbacks bridge_callbacks;
+
+gboolean sgen_need_bridge_processing (void);
+void sgen_bridge_reset_data (void);
+void sgen_bridge_processing_stw_step (void);
+void sgen_bridge_processing_finish (int generation);
+gboolean sgen_is_bridge_object (GCObject *obj);
+MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *klass);
+void sgen_bridge_register_finalized_object (GCObject *object);
+void sgen_bridge_describe_pointer (GCObject *object);
+
+gboolean sgen_is_bridge_object (GCObject *obj);
+void sgen_mark_bridge_object (GCObject *obj);
+
+gboolean sgen_bridge_handle_gc_debug (const char *opt);
+void sgen_bridge_print_gc_debug_usage (void);
+
+typedef struct {
+       void (*reset_data) (void);
+       void (*processing_stw_step) (void);
+       void (*processing_build_callback_data) (int generation);
+       void (*processing_after_callback) (int generation);
+       MonoGCBridgeObjectKind (*class_kind) (MonoClass *class);
+       void (*register_finalized_object) (GCObject *object);
+       void (*describe_pointer) (GCObject *object);
+       void (*enable_accounting) (void);
+       void (*set_dump_prefix) (const char *prefix);
+
+       /*
+        * These are set by processing_build_callback_data().
+        */
+       int num_sccs;
+       MonoGCBridgeSCC **api_sccs;
+
+       int num_xrefs;
+       MonoGCBridgeXRef *api_xrefs;
+} SgenBridgeProcessor;
+
+void sgen_old_bridge_init (SgenBridgeProcessor *collector);
+void sgen_new_bridge_init (SgenBridgeProcessor *collector);
+void sgen_tarjan_bridge_init (SgenBridgeProcessor *collector);
+void sgen_set_bridge_implementation (const char *name);
+void sgen_bridge_set_dump_prefix (const char *prefix);
+
+#endif
+
+#endif
index 86478b00b8cf1f86e85574ae7a57120db4256265..47f4f94db5c2fd6c7faaaf703771972a1415fc76 100644 (file)
 
 #include <stdlib.h>
 
-#include "sgen-gc.h"
-#include "sgen-bridge.h"
-#include "sgen-hash-table.h"
-#include "sgen-qsort.h"
+#include "sgen/sgen-gc.h"
+#include "sgen-bridge-internal.h"
+#include "sgen/sgen-hash-table.h"
+#include "sgen/sgen-qsort.h"
 #include "utils/mono-logger-internal.h"
-#include "utils/mono-time.h"
-#include "utils/mono-compiler.h"
 
 MonoGCBridgeCallbacks bridge_callbacks;
 static SgenBridgeProcessor bridge_processor;
@@ -108,7 +106,7 @@ sgen_set_bridge_implementation (const char *name)
 }
 
 gboolean
-sgen_is_bridge_object (MonoObject *obj)
+sgen_is_bridge_object (GCObject *obj)
 {
        if ((obj->vtable->gc_bits & SGEN_GC_BIT_BRIDGE_OBJECT) != SGEN_GC_BIT_BRIDGE_OBJECT)
                return FALSE;
@@ -150,14 +148,14 @@ sgen_bridge_processing_stw_step (void)
                compare_to_bridge_processor.processing_stw_step ();
 }
 
-static mono_bool
-is_bridge_object_alive (MonoObject *obj, void *data)
+static gboolean
+is_bridge_object_dead (GCObject *obj, void *data)
 {
        SgenHashTable *table = data;
        unsigned char *value = sgen_hash_table_lookup (table, obj);
        if (!value)
-               return TRUE;
-       return *value;
+               return FALSE;
+       return !*value;
 }
 
 static void
@@ -181,9 +179,9 @@ null_weak_links_to_dead_objects (SgenBridgeProcessor *processor, int generation)
        }
 
        /* Null weak links to dead objects. */
-       sgen_null_links_with_predicate (GENERATION_NURSERY, is_bridge_object_alive, &alive_hash);
+       sgen_null_links_if (is_bridge_object_dead, &alive_hash, GENERATION_NURSERY);
        if (generation == GENERATION_OLD)
-               sgen_null_links_with_predicate (GENERATION_OLD, is_bridge_object_alive, &alive_hash);
+               sgen_null_links_if (is_bridge_object_dead, &alive_hash, GENERATION_OLD);
 
        sgen_hash_table_clean (&alive_hash);
 }
@@ -212,6 +210,167 @@ free_callback_data (SgenBridgeProcessor *processor)
        processor->api_xrefs = NULL;
 }
 
+static int
+compare_xrefs (const void *a_ptr, const void *b_ptr)
+{
+       const MonoGCBridgeXRef *a = a_ptr;
+       const MonoGCBridgeXRef *b = b_ptr;
+
+       if (a->src_scc_index < b->src_scc_index)
+               return -1;
+       if (a->src_scc_index > b->src_scc_index)
+               return 1;
+
+       if (a->dst_scc_index < b->dst_scc_index)
+               return -1;
+       if (a->dst_scc_index > b->dst_scc_index)
+               return 1;
+
+       return 0;
+}
+
+/*
+static void
+dump_processor_state (SgenBridgeProcessor *p)
+{
+       int i;
+
+       printf ("------\n");
+       printf ("SCCS %d\n", p->num_sccs);
+       for (i = 0; i < p->num_sccs; ++i) {
+               int j;
+               MonoGCBridgeSCC *scc = p->api_sccs [i];
+               printf ("\tSCC %d:", i);
+               for (j = 0; j < scc->num_objs; ++j) {
+                       MonoObject *obj = scc->objs [j];
+                       printf (" %p", obj);
+               }
+               printf ("\n");
+       }
+
+       printf ("XREFS %d\n", p->num_xrefs);
+       for (i = 0; i < p->num_xrefs; ++i)
+               printf ("\t%d -> %d\n", p->api_xrefs [i].src_scc_index, p->api_xrefs [i].dst_scc_index);
+
+       printf ("-------\n");
+}
+*/
+
+static gboolean
+sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcessor *b)
+{
+       int i;
+       SgenHashTable obj_to_a_scc = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_DEBUG, INTERNAL_MEM_BRIDGE_DEBUG, sizeof (int), mono_aligned_addr_hash, NULL);
+       SgenHashTable b_scc_to_a_scc = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_DEBUG, INTERNAL_MEM_BRIDGE_DEBUG, sizeof (int), g_direct_hash, NULL);
+       MonoGCBridgeXRef *a_xrefs, *b_xrefs;
+       size_t xrefs_alloc_size;
+
+       // dump_processor_state (a);
+       // dump_processor_state (b);
+
+       if (a->num_sccs != b->num_sccs)
+               g_error ("SCCS count expected %d but got %d", a->num_sccs, b->num_sccs);
+       if (a->num_xrefs != b->num_xrefs)
+               g_error ("SCCS count expected %d but got %d", a->num_xrefs, b->num_xrefs);
+
+       /*
+        * First we build a hash of each object in `a` to its respective SCC index within
+        * `a`.  Along the way we also assert that no object is more than one SCC.
+        */
+       for (i = 0; i < a->num_sccs; ++i) {
+               int j;
+               MonoGCBridgeSCC *scc = a->api_sccs [i];
+
+               g_assert (scc->num_objs > 0);
+
+               for (j = 0; j < scc->num_objs; ++j) {
+                       GCObject *obj = scc->objs [j];
+                       gboolean new_entry = sgen_hash_table_replace (&obj_to_a_scc, obj, &i, NULL);
+                       g_assert (new_entry);
+               }
+       }
+
+       /*
+        * Now we check whether each of the objects in `b` are in `a`, and whether the SCCs
+        * of `b` contain the same sets of objects as those of `a`.
+        *
+        * While we're doing this, build a hash table to map from `b` SCC indexes to `a` SCC
+        * indexes.
+        */
+       for (i = 0; i < b->num_sccs; ++i) {
+               MonoGCBridgeSCC *scc = b->api_sccs [i];
+               MonoGCBridgeSCC *a_scc;
+               int *a_scc_index_ptr;
+               int a_scc_index;
+               int j;
+               gboolean new_entry;
+
+               g_assert (scc->num_objs > 0);
+               a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [0]);
+               g_assert (a_scc_index_ptr);
+               a_scc_index = *a_scc_index_ptr;
+
+               //g_print ("A SCC %d -> B SCC %d\n", a_scc_index, i);
+
+               a_scc = a->api_sccs [a_scc_index];
+               g_assert (a_scc->num_objs == scc->num_objs);
+
+               for (j = 1; j < scc->num_objs; ++j) {
+                       a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [j]);
+                       g_assert (a_scc_index_ptr);
+                       g_assert (*a_scc_index_ptr == a_scc_index);
+               }
+
+               new_entry = sgen_hash_table_replace (&b_scc_to_a_scc, GINT_TO_POINTER (i), &a_scc_index, NULL);
+               g_assert (new_entry);
+       }
+
+       /*
+        * Finally, check that we have the same xrefs.  We do this by making copies of both
+        * xref arrays, and replacing the SCC indexes in the copy for `b` with the
+        * corresponding indexes in `a`.  Then we sort both arrays and assert that they're
+        * the same.
+        *
+        * At the same time, check that no xref is self-referential and that there are no
+        * duplicate ones.
+        */
+
+       xrefs_alloc_size = a->num_xrefs * sizeof (MonoGCBridgeXRef);
+       a_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
+       b_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
+
+       memcpy (a_xrefs, a->api_xrefs, xrefs_alloc_size);
+       for (i = 0; i < b->num_xrefs; ++i) {
+               MonoGCBridgeXRef *xref = &b->api_xrefs [i];
+               int *scc_index_ptr;
+
+               g_assert (xref->src_scc_index != xref->dst_scc_index);
+
+               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->src_scc_index));
+               g_assert (scc_index_ptr);
+               b_xrefs [i].src_scc_index = *scc_index_ptr;
+
+               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->dst_scc_index));
+               g_assert (scc_index_ptr);
+               b_xrefs [i].dst_scc_index = *scc_index_ptr;
+       }
+
+       qsort (a_xrefs, a->num_xrefs, sizeof (MonoGCBridgeXRef), compare_xrefs);
+       qsort (b_xrefs, a->num_xrefs, sizeof (MonoGCBridgeXRef), compare_xrefs);
+
+       for (i = 0; i < a->num_xrefs; ++i) {
+               g_assert (a_xrefs [i].src_scc_index == b_xrefs [i].src_scc_index);
+               g_assert (a_xrefs [i].dst_scc_index == b_xrefs [i].dst_scc_index);
+       }
+
+       sgen_hash_table_clean (&obj_to_a_scc);
+       sgen_hash_table_clean (&b_scc_to_a_scc);
+       sgen_free_internal_dynamic (a_xrefs, xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG);
+       sgen_free_internal_dynamic (b_xrefs, xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG);
+
+       return TRUE;
+}
+
 void
 sgen_bridge_processing_finish (int generation)
 {
@@ -251,7 +410,7 @@ sgen_bridge_class_kind (MonoClass *class)
 }
 
 void
-sgen_bridge_register_finalized_object (MonoObject *obj)
+sgen_bridge_register_finalized_object (GCObject *obj)
 {
        bridge_processor.register_finalized_object (obj);
        if (compare_bridge_processors ())
@@ -259,7 +418,7 @@ sgen_bridge_register_finalized_object (MonoObject *obj)
 }
 
 void
-sgen_bridge_describe_pointer (MonoObject *obj)
+sgen_bridge_describe_pointer (GCObject *obj)
 {
        if (bridge_processor.describe_pointer)
                bridge_processor.describe_pointer (obj);
diff --git a/mono/metadata/sgen-cardtable.c b/mono/metadata/sgen-cardtable.c
deleted file mode 100644 (file)
index 3b57a1a..0000000
+++ /dev/null
@@ -1,791 +0,0 @@
-/*
- * sgen-cardtable.c: Card table implementation for sgen
- *
- * Author:
- *     Rodrigo Kumpera (rkumpera@novell.com)
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-layout-stats.h"
-#include "utils/mono-counters.h"
-#include "utils/mono-time.h"
-#include "utils/mono-memory-model.h"
-
-//#define CARDTABLE_STATS
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_MMAN_H
-#include <sys/mman.h>
-#endif
-#include <sys/types.h>
-
-#define ARRAY_OBJ_INDEX(ptr,array,elem_size) (((char*)(ptr) - ((char*)(array) + G_STRUCT_OFFSET (MonoArray, vector))) / (elem_size))
-
-guint8 *sgen_cardtable;
-
-static gboolean need_mod_union;
-
-#ifdef HEAVY_STATISTICS
-guint64 marked_cards;
-guint64 scanned_cards;
-guint64 scanned_objects;
-guint64 remarked_cards;
-
-static guint64 los_marked_cards;
-static guint64 large_objects;
-static guint64 bloby_objects;
-static guint64 los_array_cards;
-static guint64 los_array_remsets;
-
-#endif
-static guint64 major_card_scan_time;
-static guint64 los_card_scan_time;
-
-static guint64 last_major_scan_time;
-static guint64 last_los_scan_time;
-
-static void sgen_card_tables_collect_stats (gboolean begin);
-
-
-/*WARNING: This function returns the number of cards regardless of overflow in case of overlapping cards.*/
-static mword
-cards_in_range (mword address, mword size)
-{
-       mword end = address + MAX (1, size) - 1;
-       return (end >> CARD_BITS) - (address >> CARD_BITS) + 1;
-}
-
-static void
-sgen_card_table_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
-{
-       *(void**)field_ptr = value;
-       if (need_mod_union || sgen_ptr_in_nursery (value))
-               sgen_card_table_mark_address ((mword)field_ptr);
-       sgen_dummy_use (value);
-}
-
-static void
-sgen_card_table_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
-{
-       *(void**)slot_ptr = value;
-       if (need_mod_union || sgen_ptr_in_nursery (value))
-               sgen_card_table_mark_address ((mword)slot_ptr);
-       sgen_dummy_use (value); 
-}
-
-static void
-sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
-{
-       gpointer *dest = dest_ptr;
-       gpointer *src = src_ptr;
-
-       /*overlapping that required backward copying*/
-       if (src < dest && (src + count) > dest) {
-               gpointer *start = dest;
-               dest += count - 1;
-               src += count - 1;
-
-               for (; dest >= start; --src, --dest) {
-                       gpointer value = *src;
-                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
-                       if (need_mod_union || sgen_ptr_in_nursery (value))
-                               sgen_card_table_mark_address ((mword)dest);
-                       sgen_dummy_use (value);
-               }
-       } else {
-               gpointer *end = dest + count;
-               for (; dest < end; ++src, ++dest) {
-                       gpointer value = *src;
-                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
-                       if (need_mod_union || sgen_ptr_in_nursery (value))
-                               sgen_card_table_mark_address ((mword)dest);
-                       sgen_dummy_use (value);
-               }
-       }       
-}
-
-static void
-sgen_card_table_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *klass)
-{
-       size_t element_size = mono_class_value_size (klass, NULL);
-       size_t size = count * element_size;
-
-#ifdef DISABLE_CRITICAL_REGION
-       LOCK_GC;
-#else
-       TLAB_ACCESS_INIT;
-       ENTER_CRITICAL_REGION;
-#endif
-       mono_gc_memmove_atomic (dest, src, size);
-       sgen_card_table_mark_range ((mword)dest, size);
-#ifdef DISABLE_CRITICAL_REGION
-       UNLOCK_GC;
-#else
-       EXIT_CRITICAL_REGION;
-#endif
-}
-
-static void
-sgen_card_table_wbarrier_object_copy (MonoObject* obj, MonoObject *src)
-{
-       int size = mono_object_class (obj)->instance_size;
-
-#ifdef DISABLE_CRITICAL_REGION
-       LOCK_GC;
-#else
-       TLAB_ACCESS_INIT;
-       ENTER_CRITICAL_REGION;
-#endif
-       mono_gc_memmove_aligned ((char*)obj + sizeof (MonoObject), (char*)src + sizeof (MonoObject),
-                       size - sizeof (MonoObject));
-       sgen_card_table_mark_range ((mword)obj, size);
-#ifdef DISABLE_CRITICAL_REGION
-       UNLOCK_GC;
-#else
-       EXIT_CRITICAL_REGION;
-#endif 
-}
-
-static void
-sgen_card_table_wbarrier_generic_nostore (gpointer ptr)
-{
-       sgen_card_table_mark_address ((mword)ptr);      
-}
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-
-guint8 *sgen_shadow_cardtable;
-
-#define SGEN_SHADOW_CARDTABLE_END (sgen_shadow_cardtable + CARD_COUNT_IN_BYTES)
-#define SGEN_CARDTABLE_END (sgen_cardtable + CARD_COUNT_IN_BYTES)
-
-static gboolean
-sgen_card_table_region_begin_scanning (mword start, mword size)
-{
-       mword end = start + size;
-       /*XXX this can be improved to work on words and have a single loop induction var */
-       while (start < end) {
-               if (sgen_card_table_card_begin_scanning (start))
-                       return TRUE;
-               start += CARD_SIZE_IN_BYTES;
-       }
-       return FALSE;
-}
-
-#else
-
-static gboolean
-sgen_card_table_region_begin_scanning (mword start, mword size)
-{
-       gboolean res = FALSE;
-       guint8 *card = sgen_card_table_get_card_address (start);
-       guint8 *end = card + cards_in_range (start, size);
-
-       /*XXX this can be improved to work on words and have a branchless body */
-       while (card != end) {
-               if (*card++) {
-                       res = TRUE;
-                       break;
-               }
-       }
-
-       memset (sgen_card_table_get_card_address (start), 0, size >> CARD_BITS);
-
-       return res;
-}
-
-#endif
-
-/*FIXME this assumes that major blocks are multiple of 4K which is pretty reasonable */
-gboolean
-sgen_card_table_get_card_data (guint8 *data_dest, mword address, mword cards)
-{
-       mword *start = (mword*)sgen_card_table_get_card_scan_address (address);
-       mword *dest = (mword*)data_dest;
-       mword *end = (mword*)(data_dest + cards);
-       mword mask = 0;
-
-       for (; dest < end; ++dest, ++start) {
-               mword v = *start;
-               *dest = v;
-               mask |= v;
-
-#ifndef SGEN_HAVE_OVERLAPPING_CARDS
-               *start = 0;
-#endif
-       }
-
-       return mask != 0;
-}
-
-void*
-sgen_card_table_align_pointer (void *ptr)
-{
-       return (void*)((mword)ptr & ~(CARD_SIZE_IN_BYTES - 1));
-}
-
-void
-sgen_card_table_mark_range (mword address, mword size)
-{
-       memset (sgen_card_table_get_card_address (address), 1, cards_in_range (address, size));
-}
-
-static gboolean
-sgen_card_table_is_range_marked (guint8 *cards, mword address, mword size)
-{
-       guint8 *end = cards + cards_in_range (address, size);
-
-       /*This is safe since this function is only called by code that only passes continuous card blocks*/
-       while (cards != end) {
-               if (*cards++)
-                       return TRUE;
-       }
-       return FALSE;
-
-}
-
-static void
-sgen_card_table_record_pointer (gpointer address)
-{
-       *sgen_card_table_get_card_address ((mword)address) = 1;
-}
-
-static gboolean
-sgen_card_table_find_address (char *addr)
-{
-       return sgen_card_table_address_is_marked ((mword)addr);
-}
-
-static gboolean
-sgen_card_table_find_address_with_cards (char *cards_start, guint8 *cards, char *addr)
-{
-       cards_start = sgen_card_table_align_pointer (cards_start);
-       return cards [(addr - cards_start) >> CARD_BITS];
-}
-
-static void
-update_mod_union (guint8 *dest, gboolean init, guint8 *start_card, size_t num_cards)
-{
-       if (init) {
-               memcpy (dest, start_card, num_cards);
-       } else {
-               int i;
-               for (i = 0; i < num_cards; ++i)
-                       dest [i] |= start_card [i];
-       }
-}
-
-static guint8*
-alloc_mod_union (size_t num_cards)
-{
-       return sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
-}
-
-guint8*
-sgen_card_table_update_mod_union_from_cards (guint8 *dest, guint8 *start_card, size_t num_cards)
-{
-       gboolean init = dest == NULL;
-
-       if (init)
-               dest = alloc_mod_union (num_cards);
-
-       update_mod_union (dest, init, start_card, num_cards);
-
-       return dest;
-}
-
-guint8*
-sgen_card_table_update_mod_union (guint8 *dest, char *obj, mword obj_size, size_t *out_num_cards)
-{
-       guint8 *start_card = sgen_card_table_get_card_address ((mword)obj);
-#ifndef SGEN_HAVE_OVERLAPPING_CARDS
-       guint8 *end_card = sgen_card_table_get_card_address ((mword)obj + obj_size - 1) + 1;
-#endif
-       size_t num_cards;
-       guint8 *result = NULL;
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-       size_t rest;
-
-       rest = num_cards = cards_in_range ((mword) obj, obj_size);
-
-       while (start_card + rest > SGEN_CARDTABLE_END) {
-               size_t count = SGEN_CARDTABLE_END - start_card;
-               dest = sgen_card_table_update_mod_union_from_cards (dest, start_card, count);
-               if (!result)
-                       result = dest;
-               dest += count;
-               rest -= count;
-               start_card = sgen_cardtable;
-       }
-       num_cards = rest;
-#else
-       num_cards = end_card - start_card;
-#endif
-
-       dest = sgen_card_table_update_mod_union_from_cards (dest, start_card, num_cards);
-       if (!result)
-               result = dest;
-
-       if (out_num_cards)
-               *out_num_cards = num_cards;
-
-       return result;
-}
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-
-static void
-move_cards_to_shadow_table (mword start, mword size)
-{
-       guint8 *from = sgen_card_table_get_card_address (start);
-       guint8 *to = sgen_card_table_get_shadow_card_address (start);
-       size_t bytes = cards_in_range (start, size);
-
-       if (bytes >= CARD_COUNT_IN_BYTES) {
-               memcpy (sgen_shadow_cardtable, sgen_cardtable, CARD_COUNT_IN_BYTES);
-       } else if (to + bytes > SGEN_SHADOW_CARDTABLE_END) {
-               size_t first_chunk = SGEN_SHADOW_CARDTABLE_END - to;
-               size_t second_chunk = MIN (CARD_COUNT_IN_BYTES, bytes) - first_chunk;
-
-               memcpy (to, from, first_chunk);
-               memcpy (sgen_shadow_cardtable, sgen_cardtable, second_chunk);
-       } else {
-               memcpy (to, from, bytes);
-       }
-}
-
-static void
-clear_cards (mword start, mword size)
-{
-       guint8 *addr = sgen_card_table_get_card_address (start);
-       size_t bytes = cards_in_range (start, size);
-
-       if (bytes >= CARD_COUNT_IN_BYTES) {
-               memset (sgen_cardtable, 0, CARD_COUNT_IN_BYTES);
-       } else if (addr + bytes > SGEN_CARDTABLE_END) {
-               size_t first_chunk = SGEN_CARDTABLE_END - addr;
-
-               memset (addr, 0, first_chunk);
-               memset (sgen_cardtable, 0, bytes - first_chunk);
-       } else {
-               memset (addr, 0, bytes);
-       }
-}
-
-
-#else
-
-static void
-clear_cards (mword start, mword size)
-{
-       memset (sgen_card_table_get_card_address (start), 0, cards_in_range (start, size));
-}
-
-
-#endif
-
-static void
-sgen_card_table_clear_cards (void)
-{
-       /*XXX we could do this in 2 ways. using mincore or iterating over all sections/los objects */
-       sgen_major_collector_iterate_live_block_ranges (clear_cards);
-       sgen_los_iterate_live_block_ranges (clear_cards);
-}
-
-static void
-sgen_card_table_finish_minor_collection (void)
-{
-       sgen_card_tables_collect_stats (FALSE);
-}
-
-static void
-sgen_card_table_scan_remsets (SgenGrayQueue *queue)
-{
-       SGEN_TV_DECLARE (atv);
-       SGEN_TV_DECLARE (btv);
-
-       sgen_card_tables_collect_stats (TRUE);
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-       /*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
-       /*First we copy*/
-       sgen_major_collector_iterate_live_block_ranges (move_cards_to_shadow_table);
-       sgen_los_iterate_live_block_ranges (move_cards_to_shadow_table);
-
-       /*Then we clear*/
-       sgen_card_table_clear_cards ();
-#endif
-       SGEN_TV_GETTIME (atv);
-       sgen_major_collector_scan_card_table (queue);
-       SGEN_TV_GETTIME (btv);
-       last_major_scan_time = SGEN_TV_ELAPSED (atv, btv); 
-       major_card_scan_time += last_major_scan_time;
-       sgen_los_scan_card_table (FALSE, queue);
-       SGEN_TV_GETTIME (atv);
-       last_los_scan_time = SGEN_TV_ELAPSED (btv, atv);
-       los_card_scan_time += last_los_scan_time;
-}
-
-guint8*
-mono_gc_get_card_table (int *shift_bits, gpointer *mask)
-{
-#ifndef MANAGED_WBARRIER
-       return NULL;
-#else
-       if (!sgen_cardtable)
-               return NULL;
-
-       *shift_bits = CARD_BITS;
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-       *mask = (gpointer)CARD_MASK;
-#else
-       *mask = NULL;
-#endif
-
-       return sgen_cardtable;
-#endif
-}
-
-gboolean
-mono_gc_card_table_nursery_check (void)
-{
-       return !major_collector.is_concurrent;
-}
-
-#if 0
-void
-sgen_card_table_dump_obj_card (char *object, size_t size, void *dummy)
-{
-       guint8 *start = sgen_card_table_get_card_scan_address (object);
-       guint8 *end = start + cards_in_range (object, size);
-       int cnt = 0;
-       printf ("--obj %p %d cards [%p %p]--", object, size, start, end);
-       for (; start < end; ++start) {
-               if (cnt == 0)
-                       printf ("\n\t[%p] ", start);
-               printf ("%x ", *start);
-               ++cnt;
-               if (cnt == 8)
-                       cnt = 0;
-       }
-       printf ("\n");
-}
-#endif
-
-#define MWORD_MASK (sizeof (mword) - 1)
-
-static inline int
-find_card_offset (mword card)
-{
-/*XXX Use assembly as this generates some pretty bad code */
-#if defined(__i386__) && defined(__GNUC__)
-       return  (__builtin_ffs (card) - 1) / 8;
-#elif defined(__x86_64__) && defined(__GNUC__)
-       return (__builtin_ffsll (card) - 1) / 8;
-#elif defined(__s390x__)
-       return (__builtin_ffsll (GUINT64_TO_LE(card)) - 1) / 8;
-#else
-       int i;
-       guint8 *ptr = (guint8 *) &card;
-       for (i = 0; i < sizeof (mword); ++i) {
-               if (ptr[i])
-                       return i;
-       }
-       return 0;
-#endif
-}
-
-static guint8*
-find_next_card (guint8 *card_data, guint8 *end)
-{
-       mword *cards, *cards_end;
-       mword card;
-
-       while ((((mword)card_data) & MWORD_MASK) && card_data < end) {
-               if (*card_data)
-                       return card_data;
-               ++card_data;
-       }
-
-       if (card_data == end)
-               return end;
-
-       cards = (mword*)card_data;
-       cards_end = (mword*)((mword)end & ~MWORD_MASK);
-       while (cards < cards_end) {
-               card = *cards;
-               if (card)
-                       return (guint8*)cards + find_card_offset (card);
-               ++cards;
-       }
-
-       card_data = (guint8*)cards_end;
-       while (card_data < end) {
-               if (*card_data)
-                       return card_data;
-               ++card_data;
-       }
-
-       return end;
-}
-
-void
-sgen_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboolean mod_union, SgenGrayQueue *queue)
-{
-       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
-       MonoClass *klass = vt->klass;
-
-       HEAVY_STAT (++large_objects);
-
-       if (!SGEN_VTABLE_HAS_REFERENCES (vt)) {
-               sgen_object_layout_scanned_bitmap (0);
-               return;
-       }
-
-       if (vt->rank) {
-               guint8 *card_data, *card_base;
-               guint8 *card_data_end;
-               char *obj_start = sgen_card_table_align_pointer (obj);
-               mword obj_size = sgen_par_object_get_size (vt, (MonoObject*)obj);
-               char *obj_end = obj + obj_size;
-               size_t card_count;
-               size_t extra_idx = 0;
-
-               MonoArray *arr = (MonoArray*)obj;
-               mword desc = (mword)klass->element_class->gc_descr;
-               int elem_size = mono_array_element_size (klass);
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-               guint8 *overflow_scan_end = NULL;
-#endif
-
-#ifdef SGEN_OBJECT_LAYOUT_STATISTICS
-               if (klass->element_class->valuetype)
-                       sgen_object_layout_scanned_vtype_array ();
-               else
-                       sgen_object_layout_scanned_ref_array ();
-#endif
-
-               if (cards)
-                       card_data = cards;
-               else
-                       card_data = sgen_card_table_get_card_scan_address ((mword)obj);
-
-               card_base = card_data;
-               card_count = cards_in_range ((mword)obj, obj_size);
-               card_data_end = card_data + card_count;
-
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-               /*Check for overflow and if so, setup to scan in two steps*/
-               if (!cards && card_data_end >= SGEN_SHADOW_CARDTABLE_END) {
-                       overflow_scan_end = sgen_shadow_cardtable + (card_data_end - SGEN_SHADOW_CARDTABLE_END);
-                       card_data_end = SGEN_SHADOW_CARDTABLE_END;
-               }
-
-LOOP_HEAD:
-#endif
-
-               card_data = find_next_card (card_data, card_data_end);
-               for (; card_data < card_data_end; card_data = find_next_card (card_data + 1, card_data_end)) {
-                       size_t index;
-                       size_t idx = (card_data - card_base) + extra_idx;
-                       char *start = (char*)(obj_start + idx * CARD_SIZE_IN_BYTES);
-                       char *card_end = start + CARD_SIZE_IN_BYTES;
-                       char *first_elem, *elem;
-
-                       HEAVY_STAT (++los_marked_cards);
-
-                       if (!cards)
-                               sgen_card_table_prepare_card_for_scanning (card_data);
-
-                       card_end = MIN (card_end, obj_end);
-
-                       if (start <= (char*)arr->vector)
-                               index = 0;
-                       else
-                               index = ARRAY_OBJ_INDEX (start, obj, elem_size);
-
-                       elem = first_elem = (char*)mono_array_addr_with_size_fast ((MonoArray*)obj, elem_size, index);
-                       if (klass->element_class->valuetype) {
-                               ScanVTypeFunc scan_vtype_func = sgen_get_current_object_ops ()->scan_vtype;
-
-                               for (; elem < card_end; elem += elem_size)
-                                       scan_vtype_func (elem, desc, queue BINARY_PROTOCOL_ARG (elem_size));
-                       } else {
-                               CopyOrMarkObjectFunc copy_func = sgen_get_current_object_ops ()->copy_or_mark_object;
-
-                               HEAVY_STAT (++los_array_cards);
-                               for (; elem < card_end; elem += SIZEOF_VOID_P) {
-                                       gpointer new, old = *(gpointer*)elem;
-                                       if ((mod_union && old) || G_UNLIKELY (sgen_ptr_in_nursery (old))) {
-                                               HEAVY_STAT (++los_array_remsets);
-                                               copy_func ((void**)elem, queue);
-                                               new = *(gpointer*)elem;
-                                               if (G_UNLIKELY (sgen_ptr_in_nursery (new)))
-                                                       sgen_add_to_global_remset (elem, new);
-                                       }
-                               }
-                       }
-
-                       binary_protocol_card_scan (first_elem, elem - first_elem);
-               }
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-               if (overflow_scan_end) {
-                       extra_idx = card_data - card_base;
-                       card_base = card_data = sgen_shadow_cardtable;
-                       card_data_end = overflow_scan_end;
-                       overflow_scan_end = NULL;
-                       goto LOOP_HEAD;
-               }
-#endif
-
-       } else {
-               HEAVY_STAT (++bloby_objects);
-               if (cards) {
-                       if (sgen_card_table_is_range_marked (cards, (mword)obj, block_obj_size))
-                               sgen_get_current_object_ops ()->scan_object (obj, sgen_obj_get_descriptor (obj), queue);
-               } else if (sgen_card_table_region_begin_scanning ((mword)obj, block_obj_size)) {
-                       sgen_get_current_object_ops ()->scan_object (obj, sgen_obj_get_descriptor (obj), queue);
-               }
-
-               binary_protocol_card_scan (obj, sgen_safe_object_get_size ((MonoObject*)obj));
-       }
-}
-
-#ifdef CARDTABLE_STATS
-
-typedef struct {
-       int total, marked, remarked, gc_marked; 
-} card_stats;
-
-static card_stats major_stats, los_stats;
-static card_stats *cur_stats;
-
-static void
-count_marked_cards (mword start, mword size)
-{
-       mword end = start + size;
-       while (start <= end) {
-               guint8 card = *sgen_card_table_get_card_address (start);
-               ++cur_stats->total;
-               if (card)
-                       ++cur_stats->marked;
-               if (card == 2)
-                       ++cur_stats->gc_marked;
-               start += CARD_SIZE_IN_BYTES;
-       }
-}
-
-static void
-count_remarked_cards (mword start, mword size)
-{
-       mword end = start + size;
-       while (start <= end) {
-               if (sgen_card_table_address_is_marked (start)) {
-                       ++cur_stats->remarked;
-                       *sgen_card_table_get_card_address (start) = 2;
-               }
-               start += CARD_SIZE_IN_BYTES;
-       }
-}
-
-#endif
-
-static void
-sgen_card_tables_collect_stats (gboolean begin)
-{
-#ifdef CARDTABLE_STATS
-       if (begin) {
-               memset (&major_stats, 0, sizeof (card_stats));
-               memset (&los_stats, 0, sizeof (card_stats));
-               cur_stats = &major_stats;
-               sgen_major_collector_iterate_live_block_ranges (count_marked_cards);
-               cur_stats = &los_stats;
-               sgen_los_iterate_live_block_ranges (count_marked_cards);
-       } else {
-               cur_stats = &major_stats;
-               sgen_major_collector_iterate_live_block_ranges (count_remarked_cards);
-               cur_stats = &los_stats;
-               sgen_los_iterate_live_block_ranges (count_remarked_cards);
-               printf ("cards major (t %d m %d g %d r %d)  los (t %d m %d g %d r %d) major_scan %.2fms los_scan %.2fms\n", 
-                       major_stats.total, major_stats.marked, major_stats.gc_marked, major_stats.remarked,
-                       los_stats.total, los_stats.marked, los_stats.gc_marked, los_stats.remarked,
-                       last_major_scan_time / 10000.0f, last_los_scan_time / 10000.0f);
-       }
-#endif
-}
-
-void
-sgen_card_table_init (SgenRememberedSet *remset)
-{
-       sgen_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "card table");
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-       sgen_shadow_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "shadow card table");
-#endif
-
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("marked cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &marked_cards);
-       mono_counters_register ("scanned cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &scanned_cards);
-       mono_counters_register ("remarked cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &remarked_cards);
-
-       mono_counters_register ("los marked cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &los_marked_cards);
-       mono_counters_register ("los array cards scanned ", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &los_array_cards);
-       mono_counters_register ("los array remsets", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &los_array_remsets);
-       mono_counters_register ("cardtable scanned objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &scanned_objects);
-       mono_counters_register ("cardtable large objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &large_objects);
-       mono_counters_register ("cardtable bloby objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &bloby_objects);
-#endif
-       mono_counters_register ("cardtable major scan time", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &major_card_scan_time);
-       mono_counters_register ("cardtable los scan time", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &los_card_scan_time);
-
-
-       remset->wbarrier_set_field = sgen_card_table_wbarrier_set_field;
-       remset->wbarrier_set_arrayref = sgen_card_table_wbarrier_set_arrayref;
-       remset->wbarrier_arrayref_copy = sgen_card_table_wbarrier_arrayref_copy;
-       remset->wbarrier_value_copy = sgen_card_table_wbarrier_value_copy;
-       remset->wbarrier_object_copy = sgen_card_table_wbarrier_object_copy;
-       remset->wbarrier_generic_nostore = sgen_card_table_wbarrier_generic_nostore;
-       remset->record_pointer = sgen_card_table_record_pointer;
-
-       remset->scan_remsets = sgen_card_table_scan_remsets;
-
-       remset->finish_minor_collection = sgen_card_table_finish_minor_collection;
-       remset->clear_cards = sgen_card_table_clear_cards;
-
-       remset->find_address = sgen_card_table_find_address;
-       remset->find_address_with_cards = sgen_card_table_find_address_with_cards;
-
-       need_mod_union = sgen_get_major_collector ()->is_concurrent;
-}
-
-#endif /*HAVE_SGEN_GC*/
diff --git a/mono/metadata/sgen-cardtable.h b/mono/metadata/sgen-cardtable.h
deleted file mode 100644 (file)
index 578d5ba..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-#ifndef __MONO_SGEN_CARD_TABLE_INLINES_H__
-#define __MONO_SGEN_CARD_TABLE_INLINES_H__
-
-void sgen_card_table_reset_region (mword start, mword end);
-void* sgen_card_table_align_pointer (void *ptr);
-void sgen_card_table_mark_range (mword address, mword size);
-void sgen_cardtable_scan_object (char *obj, mword obj_size, guint8 *cards,
-               gboolean mod_union, SgenGrayQueue *queue);
-
-gboolean sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards);
-
-guint8* sgen_card_table_update_mod_union_from_cards (guint8 *dest, guint8 *start_card, size_t num_cards);
-guint8* sgen_card_table_update_mod_union (guint8 *dest, char *obj, mword obj_size, size_t *out_num_cards);
-
-void sgen_card_table_init (SgenRememberedSet *remset);
-
-/*How many bytes a single card covers*/
-#define CARD_BITS 9
-
-/* How many bits of the address space is covered by the card table.
- * If this value is smaller than the number of address bits, card aliasing is required.
- */
-#define CARD_TABLE_BITS 32
-
-#define CARD_SIZE_IN_BYTES (1 << CARD_BITS)
-#define CARD_COUNT_BITS (CARD_TABLE_BITS - CARD_BITS)
-#define CARD_COUNT_IN_BYTES (1 << CARD_COUNT_BITS)
-#define CARD_MASK ((1 << CARD_COUNT_BITS) - 1)
-
-#if SIZEOF_VOID_P * 8 > CARD_TABLE_BITS
-#define SGEN_HAVE_OVERLAPPING_CARDS    1
-#endif
-
-extern guint8 *sgen_cardtable;
-
-
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-
-static inline guint8*
-sgen_card_table_get_card_address (mword address)
-{
-       return sgen_cardtable + ((address >> CARD_BITS) & CARD_MASK);
-}
-
-extern guint8 *sgen_shadow_cardtable;
-
-static inline guint8*
-sgen_card_table_get_shadow_card_address (mword address)
-{
-       return sgen_shadow_cardtable + ((address >> CARD_BITS) & CARD_MASK);
-}
-
-static inline gboolean
-sgen_card_table_card_begin_scanning (mword address)
-{
-       return *sgen_card_table_get_shadow_card_address (address) != 0;
-}
-
-static inline void
-sgen_card_table_prepare_card_for_scanning (guint8 *card)
-{
-}
-
-#define sgen_card_table_get_card_scan_address sgen_card_table_get_shadow_card_address
-
-#else
-
-static inline guint8*
-sgen_card_table_get_card_address (mword address)
-{
-       return sgen_cardtable + (address >> CARD_BITS);
-}
-
-static inline gboolean
-sgen_card_table_card_begin_scanning (mword address)
-{
-       guint8 *card = sgen_card_table_get_card_address (address);
-       gboolean res = *card;
-       *card = 0;
-       return res;
-}
-
-static inline void
-sgen_card_table_prepare_card_for_scanning (guint8 *card)
-{
-       *card = 0;
-}
-
-#define sgen_card_table_get_card_scan_address sgen_card_table_get_card_address
-
-#endif
-
-static inline gboolean
-sgen_card_table_address_is_marked (mword address)
-{
-       return *sgen_card_table_get_card_address (address) != 0;
-}
-
-static inline void
-sgen_card_table_mark_address (mword address)
-{
-       *sgen_card_table_get_card_address (address) = 1;
-}
-
-#endif
diff --git a/mono/metadata/sgen-client-mono.h b/mono/metadata/sgen-client-mono.h
new file mode 100644 (file)
index 0000000..eb52ac9
--- /dev/null
@@ -0,0 +1,703 @@
+/*
+ * sgen-client-mono.h: Mono's client definitions for SGen.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef SGEN_DEFINE_OBJECT_VTABLE
+
+#include "sgen/sgen-archdep.h"
+#include "utils/mono-threads.h"
+#include "utils/mono-mmap.h"
+#include "metadata/object-internals.h"
+
+typedef MonoObject GCObject;
+typedef MonoVTable GCVTable;
+
+/* FIXME: This should return a GCVTable* and be a function. */
+#define SGEN_LOAD_VTABLE_UNCHECKED(obj)        ((void*)(((GCObject*)(obj))->vtable))
+
+static inline mword
+sgen_vtable_get_descriptor (GCVTable *vtable)
+{
+       return (mword)vtable->gc_descr;
+}
+
+static mword /*__attribute__((noinline)) not sure if this hint is a good idea*/
+sgen_client_slow_object_get_size (GCVTable *vtable, GCObject* o)
+{
+       MonoClass *klass = ((MonoVTable*)vtable)->klass;
+
+       /*
+        * We depend on mono_string_length_fast and
+        * mono_array_length_fast not using the object's vtable.
+        */
+       if (klass == mono_defaults.string_class) {
+               return G_STRUCT_OFFSET (MonoString, chars) + 2 * mono_string_length_fast ((MonoString*) o) + 2;
+       } else if (klass->rank) {
+               MonoArray *array = (MonoArray*)o;
+               size_t size = sizeof (MonoArray) + klass->sizes.element_size * mono_array_length_fast (array);
+               if (G_UNLIKELY (array->bounds)) {
+                       size += sizeof (mono_array_size_t) - 1;
+                       size &= ~(sizeof (mono_array_size_t) - 1);
+                       size += sizeof (MonoArrayBounds) * klass->rank;
+               }
+               return size;
+       } else {
+               /* from a created object: the class must be inited already */
+               return klass->instance_size;
+       }
+}
+
+/*
+ * This function can be called on an object whose first word, the
+ * vtable field, is not intact.  This is necessary for the parallel
+ * collector.
+ */
+static MONO_NEVER_INLINE mword
+sgen_client_par_object_get_size (GCVTable *vtable, GCObject* o)
+{
+       mword descr = sgen_vtable_get_descriptor (vtable);
+       mword type = descr & DESC_TYPE_MASK;
+
+       if (type == DESC_TYPE_RUN_LENGTH || type == DESC_TYPE_SMALL_PTRFREE) {
+               mword size = descr & 0xfff8;
+               SGEN_ASSERT (9, size >= sizeof (MonoObject), "Run length object size to small");
+               return size;
+       } else if (descr == SGEN_DESC_STRING) {
+               return G_STRUCT_OFFSET (MonoString, chars) + 2 * mono_string_length_fast ((MonoString*) o) + 2;
+       } else if (type == DESC_TYPE_VECTOR) {
+               int element_size = ((descr) >> VECTOR_ELSIZE_SHIFT) & MAX_ELEMENT_SIZE;
+               MonoArray *array = (MonoArray*)o;
+               size_t size = sizeof (MonoArray) + element_size * mono_array_length_fast (array);
+
+               /*
+                * Non-vector arrays with a single dimension whose lower bound is zero are
+                * allocated without bounds.
+                */
+               if ((descr & VECTOR_KIND_ARRAY) && array->bounds) {
+                       size += sizeof (mono_array_size_t) - 1;
+                       size &= ~(sizeof (mono_array_size_t) - 1);
+                       size += sizeof (MonoArrayBounds) * ((MonoVTable*)vtable)->klass->rank;
+               }
+               return size;
+       }
+
+       return sgen_client_slow_object_get_size (vtable, o);
+}
+
+typedef struct _SgenClientThreadInfo SgenClientThreadInfo;
+struct _SgenClientThreadInfo {
+       MonoThreadInfo info;
+
+       /*
+        * `skip` is set to TRUE when STW fails to suspend a thread, most probably because
+        * the underlying thread is dead.
+       */
+       gboolean skip, suspend_done;
+       volatile int in_critical_region;
+
+       gpointer stopped_ip;    /* only valid if the thread is stopped */
+       MonoDomain *stopped_domain; /* dsto */
+
+       /*
+       This is set the argument of mono_gc_set_skip_thread.
+
+       A thread that knowingly holds no managed state can call this
+       function around blocking loops to reduce the GC burden by not
+       been scanned.
+       */
+       gboolean gc_disabled;
+
+#ifdef SGEN_POSIX_STW
+       /* This is -1 until the first suspend. */
+       int signal;
+       /* FIXME: kill this, we only use signals on systems that have rt-posix, which doesn't have issues with duplicates. */
+       unsigned int stop_count; /* to catch duplicate signals. */
+#endif
+
+       gpointer runtime_data;
+
+       void *stack_end;
+       void *stack_start;
+       void *stack_start_limit;
+
+       /*FIXME pretty please finish killing ARCH_NUM_REGS */
+#ifdef USE_MONO_CTX
+       MonoContext ctx;                /* ditto */
+#else
+       gpointer regs[ARCH_NUM_REGS];       /* ditto */
+#endif
+};
+
+#else
+
+#include "metadata/profiler-private.h"
+#include "utils/dtrace.h"
+#include "utils/mono-counters.h"
+#include "utils/mono-logger-internal.h"
+#include "utils/mono-time.h"
+#include "utils/mono-semaphore.h"
+#include "metadata/sgen-bridge-internal.h"
+
+extern void mono_sgen_register_moved_object (void *obj, void *destination);
+extern void mono_sgen_gc_event_moves (void);
+
+extern void mono_sgen_init_stw (void);
+
+enum {
+       INTERNAL_MEM_EPHEMERON_LINK = INTERNAL_MEM_FIRST_CLIENT,
+       INTERNAL_MEM_MAX
+};
+
+#define SGEN_CLIENT_OBJECT_HEADER_SIZE         (sizeof (GCObject))
+#define SGEN_CLIENT_MINIMUM_OBJECT_SIZE                SGEN_CLIENT_OBJECT_HEADER_SIZE
+
+static MONO_ALWAYS_INLINE size_t G_GNUC_UNUSED
+sgen_client_array_element_size (GCVTable *gc_vtable)
+{
+       MonoVTable *vt = (MonoVTable*)gc_vtable;
+       return mono_array_element_size (vt->klass);
+}
+
+static MONO_ALWAYS_INLINE G_GNUC_UNUSED char*
+sgen_client_array_data_start (GCObject *obj)
+{
+       return (char*)(obj) +  G_STRUCT_OFFSET (MonoArray, vector);
+}
+
+static MONO_ALWAYS_INLINE size_t G_GNUC_UNUSED
+sgen_client_array_length (GCObject *obj)
+{
+       return mono_array_length_fast ((MonoArray*)obj);
+}
+
+static MONO_ALWAYS_INLINE gboolean G_GNUC_UNUSED
+sgen_client_object_is_array_fill (GCObject *o)
+{
+       return ((MonoObject*)o)->synchronisation == GINT_TO_POINTER (-1);
+}
+
+static MONO_ALWAYS_INLINE void G_GNUC_UNUSED
+sgen_client_pre_copy_checks (char *destination, GCVTable *gc_vtable, void *obj, mword objsize)
+{
+       MonoVTable *vt = (MonoVTable*)gc_vtable;
+       SGEN_ASSERT (9, vt->klass->inited, "vtable %p for class %s:%s was not initialized", vt, vt->klass->name_space, vt->klass->name);
+}
+
+static MONO_ALWAYS_INLINE void G_GNUC_UNUSED
+sgen_client_update_copied_object (char *destination, GCVTable *gc_vtable, void *obj, mword objsize)
+{
+       MonoVTable *vt = (MonoVTable*)gc_vtable;
+       if (G_UNLIKELY (vt->rank && ((MonoArray*)obj)->bounds)) {
+               MonoArray *array = (MonoArray*)destination;
+               array->bounds = (MonoArrayBounds*)((char*)destination + ((char*)((MonoArray*)obj)->bounds - (char*)obj));
+               SGEN_LOG (9, "Array instance %p: size: %lu, rank: %d, length: %lu", array, (unsigned long)objsize, vt->rank, (unsigned long)mono_array_length (array));
+       }
+
+       if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
+               mono_sgen_register_moved_object (obj, destination);
+}
+
+#ifdef XDOMAIN_CHECKS_IN_WBARRIER
+extern gboolean sgen_mono_xdomain_checks;
+
+#define sgen_client_wbarrier_generic_nostore_check(ptr) do {           \
+               /* FIXME: ptr_in_heap must be called with the GC lock held */ \
+               if (sgen_mono_xdomain_checks && *(MonoObject**)ptr && ptr_in_heap (ptr)) { \
+                       char *start = find_object_for_ptr (ptr);        \
+                       MonoObject *value = *(MonoObject**)ptr;         \
+                       LOCK_GC;                                        \
+                       SGEN_ASSERT (0, start, "Write barrier outside an object?"); \
+                       if (start) {                                    \
+                               MonoObject *obj = (MonoObject*)start;   \
+                               if (obj->vtable->domain != value->vtable->domain) \
+                                       SGEN_ASSERT (0, is_xdomain_ref_allowed (ptr, start, obj->vtable->domain), "Cross-domain ref not allowed"); \
+                       }                                               \
+                       UNLOCK_GC;                                      \
+               }                                                       \
+       } while (0)
+#else
+#define sgen_client_wbarrier_generic_nostore_check(ptr)
+#endif
+
+static gboolean G_GNUC_UNUSED
+sgen_client_object_has_critical_finalizer (GCObject *obj)
+{
+       MonoClass *class;
+
+       if (!mono_defaults.critical_finalizer_object)
+               return FALSE;
+
+       class = ((MonoVTable*)SGEN_LOAD_VTABLE (obj))->klass;
+
+       return mono_class_has_parent_fast (class, mono_defaults.critical_finalizer_object);
+}
+
+const char* sgen_client_vtable_get_namespace (GCVTable *vtable);
+const char* sgen_client_vtable_get_name (GCVTable *vtable);
+
+static gboolean G_GNUC_UNUSED
+sgen_client_bridge_need_processing (void)
+{
+       return sgen_need_bridge_processing ();
+}
+
+static void G_GNUC_UNUSED
+sgen_client_bridge_reset_data (void)
+{
+       sgen_bridge_reset_data ();
+}
+
+static void G_GNUC_UNUSED
+sgen_client_bridge_processing_stw_step (void)
+{
+       sgen_bridge_processing_stw_step ();
+}
+
+static void G_GNUC_UNUSED
+sgen_client_bridge_wait_for_processing (void)
+{
+       mono_gc_wait_for_bridge_processing ();
+}
+
+static void G_GNUC_UNUSED
+sgen_client_bridge_processing_finish (int generation)
+{
+       sgen_bridge_processing_finish (generation);
+}
+
+static gboolean G_GNUC_UNUSED
+sgen_client_bridge_is_bridge_object (GCObject *obj)
+{
+       return sgen_is_bridge_object (obj);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_bridge_register_finalized_object (GCObject *object)
+{
+       sgen_bridge_register_finalized_object (object);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_collection_requested (int generation, size_t requested_size, gboolean force)
+{
+       MONO_GC_REQUESTED (generation, requested_size, force);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_collection_begin (int minor_gc_count, int generation)
+{
+       MONO_GC_BEGIN (generation);
+
+       mono_profiler_gc_event (MONO_GC_EVENT_START, generation);
+
+#ifndef DISABLE_PERFCOUNTERS
+       if (generation == GENERATION_NURSERY)
+               mono_perfcounters->gc_collections0++;
+       else
+               mono_perfcounters->gc_collections1++;
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_collection_end (int minor_gc_count, int generation, long long num_objects_scanned, long long num_unique_objects_scanned)
+{
+       MONO_GC_END (generation);
+
+       mono_profiler_gc_event (MONO_GC_EVENT_END, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_concurrent_start (void)
+{
+       MONO_GC_CONCURRENT_START_BEGIN (GENERATION_OLD);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_concurrent_update (void)
+{
+       MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN (GENERATION_OLD, sgen_get_major_collector ()->get_and_reset_num_major_objects_marked ());
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_concurrent_finish (void)
+{
+       MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN (GENERATION_OLD, sgen_get_major_collector ()->get_and_reset_num_major_objects_marked ());
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_sweep_begin (int generation, int full_sweep)
+{
+       MONO_GC_SWEEP_BEGIN (generation, full_sweep);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_sweep_end (int generation, int full_sweep)
+{
+       MONO_GC_SWEEP_END (generation, full_sweep);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_world_stopping (int generation, long long timestamp, gpointer thread)
+{
+       MONO_GC_WORLD_STOP_BEGIN ();
+
+       mono_profiler_gc_event (MONO_GC_EVENT_PRE_STOP_WORLD, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_world_stopped (int generation, long long timestamp, long long total_major_cards, long long marked_major_cards, long long total_los_cards, long long marked_los_cards)
+{
+       MONO_GC_WORLD_STOP_END ();
+
+       mono_profiler_gc_event (MONO_GC_EVENT_POST_STOP_WORLD, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_world_restarting (int generation, long long timestamp, long long total_major_cards, long long marked_major_cards, long long total_los_cards, long long marked_los_cards)
+{
+       MONO_GC_WORLD_RESTART_BEGIN (generation);
+
+       mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_world_restarted (int generation, long long timestamp)
+{
+       MONO_GC_WORLD_RESTART_END (generation);
+
+       mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_block_alloc (gpointer addr, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_block_free (gpointer addr, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_block_set_state (gpointer addr, size_t size, int old, int new)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_mark_start (int generation)
+{
+       mono_profiler_gc_event (MONO_GC_EVENT_MARK_START, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_mark_end (int generation)
+{
+       mono_profiler_gc_event (MONO_GC_EVENT_MARK_END, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_reclaim_start (int generation)
+{
+       mono_profiler_gc_event (MONO_GC_EVENT_RECLAIM_START, generation);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_reclaim_end (int generation)
+{
+       mono_profiler_gc_event (MONO_GC_EVENT_RECLAIM_END, generation);
+}
+
+static void
+mono_binary_protocol_alloc_generic (gpointer obj, gpointer vtable, size_t size, gboolean pinned)
+{
+#ifdef ENABLE_DTRACE
+       const char *namespace = sgen_client_vtable_get_namespace (vtable);
+       const char *name = sgen_client_vtable_get_name (vtable);
+
+       if (sgen_ptr_in_nursery (obj)) {
+               if (G_UNLIKELY (MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ()))
+                       MONO_GC_NURSERY_OBJ_ALLOC ((mword)obj, size, namespace, name);
+       } else {
+               if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
+                       if (G_UNLIKELY (MONO_GC_MAJOR_OBJ_ALLOC_LARGE_ENABLED ()))
+                               MONO_GC_MAJOR_OBJ_ALLOC_LARGE ((mword)obj, size, namespace, name);
+               } else if (pinned) {
+                       MONO_GC_MAJOR_OBJ_ALLOC_PINNED ((mword)obj, size, namespace, name);
+               }
+       }
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_alloc (gpointer obj, gpointer vtable, size_t size, gpointer provenance)
+{
+       mono_binary_protocol_alloc_generic (obj, vtable, size, FALSE);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_alloc_pinned (gpointer obj, gpointer vtable, size_t size, gpointer provenance)
+{
+       mono_binary_protocol_alloc_generic (obj, vtable, size, TRUE);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_alloc_degraded (gpointer obj, gpointer vtable, size_t size, gpointer provenance)
+{
+       MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED ((mword)obj, size, sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_card_scan (gpointer start, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_pin_stage (gpointer addr_ptr, gpointer addr)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_cement_stage (gpointer addr)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_pin (gpointer obj, gpointer vtable, size_t size)
+{
+#ifdef ENABLE_DTRACE
+       if (G_UNLIKELY (MONO_GC_OBJ_PINNED_ENABLED ())) {
+               int gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD;
+               MONO_GC_OBJ_PINNED ((mword)obj,
+                               sgen_safe_object_get_size (obj),
+                               sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable), gen);
+       }
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_mark (gpointer obj, gpointer vtable, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_scan_begin (gpointer obj, gpointer vtable, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_scan_vtype_begin (gpointer obj, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_scan_process_reference (gpointer obj, gpointer ptr, gpointer value)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_scan_stack (gpointer thread, gpointer stack_start, gpointer stack_end, int skip_reason)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_wbarrier (gpointer ptr, gpointer value, gpointer value_vtable)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_cement (gpointer ptr, gpointer vtable, size_t size)
+{
+#ifdef ENABLE_DTRACE
+       if (G_UNLIKELY (MONO_GC_OBJ_CEMENTED_ENABLED())) {
+               MONO_GC_OBJ_CEMENTED ((mword)ptr, sgen_safe_object_get_size ((GCObject*)ptr),
+                               sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+       }
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_copy (gpointer from, gpointer to, gpointer vtable, size_t size)
+{
+#ifdef ENABLE_DTRACE
+       if (G_UNLIKELY (MONO_GC_OBJ_MOVED_ENABLED ())) {
+               int dest_gen = sgen_ptr_in_nursery (to) ? GENERATION_NURSERY : GENERATION_OLD;
+               int src_gen = sgen_ptr_in_nursery (from) ? GENERATION_NURSERY : GENERATION_OLD;
+               MONO_GC_OBJ_MOVED ((mword)to, (mword)from, dest_gen, src_gen, size, sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+       }
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_global_remset (gpointer ptr, gpointer value, gpointer value_vtable)
+{
+#ifdef ENABLE_DTRACE
+       if (G_UNLIKELY (MONO_GC_GLOBAL_REMSET_ADD_ENABLED ())) {
+               MONO_GC_GLOBAL_REMSET_ADD ((mword)ptr, (mword)value, sgen_safe_object_get_size (value),
+                               sgen_client_vtable_get_namespace (value_vtable), sgen_client_vtable_get_name (value_vtable));
+       }
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_ptr_update (gpointer ptr, gpointer old_value, gpointer new_value, gpointer vtable, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_cleanup (gpointer ptr, gpointer vtable, size_t size)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_dislink_update (gpointer link, gpointer obj, gboolean track, gboolean staged)
+{
+#ifdef ENABLE_DTRACE
+       if (MONO_GC_WEAK_UPDATE_ENABLED ()) {
+               GCVTable *vt = obj ? (GCVTable*)SGEN_LOAD_VTABLE (obj) : NULL;
+               MONO_GC_WEAK_UPDATE ((mword)link,
+                               (mword)obj,
+                               obj ? (mword)sgen_safe_object_get_size (obj) : (mword)0,
+                               obj ? sgen_client_vtable_get_namespace (vt) : NULL,
+                               obj ? sgen_client_vtable_get_name (vt) : NULL,
+                               track ? 1 : 0);
+       }
+#endif
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_dislink_update_staged (gpointer link, gpointer obj, gboolean track, int index)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_empty (gpointer start, size_t size)
+{
+       if (sgen_ptr_in_nursery (start))
+               MONO_GC_NURSERY_SWEPT ((mword)start, size);
+       else
+               MONO_GC_MAJOR_SWEPT ((mword)start, size);
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_thread_suspend (gpointer thread, gpointer stopped_ip)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_thread_restart (gpointer thread)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_thread_register (gpointer thread)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_thread_unregister (gpointer thread)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_missing_remset (gpointer obj, gpointer obj_vtable, int offset, gpointer value, gpointer value_vtable, gboolean value_pinned)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_cement_reset (void)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_domain_unload_begin (gpointer domain)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_domain_unload_end (gpointer domain)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_gray_enqueue (gpointer queue, gpointer cursor, gpointer value)
+{
+}
+
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_gray_dequeue (gpointer queue, gpointer cursor, gpointer value)
+{
+}
+
+int sgen_thread_handshake (BOOL suspend);
+gboolean sgen_suspend_thread (SgenThreadInfo *info);
+gboolean sgen_resume_thread (SgenThreadInfo *info);
+void sgen_wait_for_suspend_ack (int count);
+
+#ifdef HAVE_KW_THREAD
+extern __thread SgenThreadInfo *sgen_thread_info;
+#define TLAB_ACCESS_INIT
+#define IN_CRITICAL_REGION sgen_thread_info->client_info.in_critical_region
+#else
+extern MonoNativeTlsKey thread_info_key;
+#define TLAB_ACCESS_INIT       SgenThreadInfo *__thread_info__ = mono_native_tls_get_value (thread_info_key)
+#define IN_CRITICAL_REGION (__thread_info__->client_info.in_critical_region)
+#endif
+
+#ifndef DISABLE_CRITICAL_REGION
+
+#ifdef HAVE_KW_THREAD
+#define IN_CRITICAL_REGION sgen_thread_info->client_info.in_critical_region
+#else
+#define IN_CRITICAL_REGION (__thread_info__->client_info.in_critical_region)
+#endif
+
+/* Enter must be visible before anything is done in the critical region. */
+#define ENTER_CRITICAL_REGION do { mono_atomic_store_acquire (&IN_CRITICAL_REGION, 1); } while (0)
+
+/* Exit must make sure all critical regions stores are visible before it signal the end of the region. 
+ * We don't need to emit a full barrier since we
+ */
+#define EXIT_CRITICAL_REGION  do { mono_atomic_store_release (&IN_CRITICAL_REGION, 0); } while (0)
+
+#endif
+
+#define SGEN_TV_DECLARE(name) gint64 name
+#define SGEN_TV_GETTIME(tv) tv = mono_100ns_ticks ()
+#define SGEN_TV_ELAPSED(start,end) ((long)(end-start))
+
+typedef MonoSemType SgenSemaphore;
+
+#define SGEN_SEMAPHORE_INIT(sem,initial)       MONO_SEM_INIT ((sem), (initial))
+#define SGEN_SEMAPHORE_POST(sem)               MONO_SEM_POST ((sem))
+#define SGEN_SEMAPHORE_WAIT(sem)               MONO_SEM_WAIT ((sem))
+
+gboolean sgen_has_critical_method (void);
+gboolean sgen_is_critical_method (MonoMethod *method);
+
+void sgen_set_use_managed_allocator (gboolean flag);
+gboolean sgen_is_managed_allocator (MonoMethod *method);
+gboolean sgen_has_managed_allocator (void);
+
+void sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type);
+
+#endif
diff --git a/mono/metadata/sgen-conf.h b/mono/metadata/sgen-conf.h
deleted file mode 100644 (file)
index 1cfcffb..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * sgen-conf.h: Tunable parameters and debugging switches.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGENCONF_H__
-#define __MONO_SGENCONF_H__
-
-#include <glib.h>
-
-/*Basic defines and static tunables */
-
-#if SIZEOF_VOID_P == 4
-typedef guint32 mword;
-#else
-typedef guint64 mword;
-#endif
-
-
-/*
- * Turning on heavy statistics will turn off the managed allocator and
- * the managed write barrier.
- */
-// #define HEAVY_STATISTICS
-
-#ifdef HEAVY_STATISTICS
-#define HEAVY_STAT(x)  x
-#else
-#define HEAVY_STAT(x)
-#endif
-
-/*
- * Define this to allow the user to change the nursery size by
- * specifying its value in the MONO_GC_PARAMS environmental
- * variable. See mono_gc_base_init for details.
- */
-#define USER_CONFIG 1
-
-/*
- * The binary protocol enables logging a lot of the GC ativity in a way that is not very
- * intrusive and produces a compact file that can be searched using a custom tool.  This
- * option enables very fine-grained binary protocol events, which will make the GC a tiny
- * bit less efficient even if no binary protocol file is generated.
- */
-//#define SGEN_HEAVY_BINARY_PROTOCOL
-
-/*
- * This enables checks whenever objects are enqueued in gray queues.
- * Right now the only check done is that we never enqueue nursery
- * pointers in the concurrent collector.
- */
-//#define SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-
-/*
- * This keeps track of where a gray object queue section is and
- * whether it is where it should be.
- */
-//#define SGEN_CHECK_GRAY_OBJECT_SECTIONS
-
-/*
- * Enable this to check every reference update for null references and whether the update is
- * made in a worker thread.  In only a few cases do we potentially update references by
- * writing nulls, so we assert in all the cases where it's not allowed.  The concurrent
- * collector's worker thread is not allowed to update references at all, so we also assert
- * that we're not in the worker thread.
- */
-//#define SGEN_CHECK_UPDATE_REFERENCE
-
-/*
- * Define this and use the "xdomain-checks" MONO_GC_DEBUG option to
- * have cross-domain checks in the write barrier.
- */
-//#define XDOMAIN_CHECKS_IN_WBARRIER
-
-/*
- * Define this to get number of objects marked information in the
- * concurrent GC DTrace probes.  Has a small performance impact, so
- * it's disabled by default.
- */
-//#define SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
-
-/*
- * Object layout statistics gather a histogram of reference locations
- * over all scanned objects.  We use this information to improve GC
- * descriptors to speed up scanning.  This does not provide any
- * troubleshooting assistance (unless you are troubled in highly
- * unusual ways) and makes scanning slower.
- */
-//#define SGEN_OBJECT_LAYOUT_STATISTICS
-
-#ifndef SGEN_HEAVY_BINARY_PROTOCOL
-#ifndef HEAVY_STATISTICS
-#define MANAGED_ALLOCATION
-#ifndef XDOMAIN_CHECKS_IN_WBARRIER
-#define MANAGED_WBARRIER
-#endif
-#endif
-#endif
-
-/*
- * Maximum level of debug to enable on this build.
- * Making this a constant enables us to put logging in a lot of places and
- * not pay its cost on release builds.
- */
-#define SGEN_MAX_DEBUG_LEVEL 2
-
-/*
- * Maximum level of asserts to enable on this build.
- * FIXME replace all magic numbers with defines.
- */
-#define SGEN_MAX_ASSERT_LEVEL 5
-
-
-#define GC_BITS_PER_WORD (sizeof (mword) * 8)
-
-/*Size of the section used by the copying GC. */
-#define SGEN_SIZEOF_GC_MEM_SECTION     ((sizeof (GCMemSection) + 7) & ~7)
-
-/*
- * to quickly find the head of an object pinned by a conservative
- * address we keep track of the objects allocated for each
- * SGEN_SCAN_START_SIZE memory chunk in the nursery or other memory
- * sections. Larger values have less memory overhead and bigger
- * runtime cost. 4-8 KB are reasonable values.
- */
-#define SGEN_SCAN_START_SIZE (4096*2)
-
-/*
- * Objects bigger then this go into the large object space.  This size has a few
- * constraints.  At least two of them must fit into a major heap block.  It must also play
- * well with the run length GC descriptor, which encodes the object size.
- */
-#define SGEN_MAX_SMALL_OBJ_SIZE 8000
-
-/*
- * This is the maximum ammount of memory we're willing to waste in order to speed up allocation.
- * Wastage comes in thre forms:
- *
- * -when building the nursery fragment list, small regions are discarded;
- * -when allocating memory from a fragment if it ends up below the threshold, we remove it from the fragment list; and
- * -when allocating a new tlab, we discard the remaining space of the old one
- *
- * Increasing this value speeds up allocation but will cause more frequent nursery collections as less space will be used.
- * Descreasing this value will cause allocation to be slower since we'll have to cycle thru more fragments.
- * 512 annedoctally keeps wastage under control and doesn't impact allocation performance too much. 
-*/
-#define SGEN_MAX_NURSERY_WASTE 512
-
-
-/*
- * Minimum allowance for nursery allocations, as a multiple of the size of nursery.
- *
- * We allow at least this much allocation to happen to the major heap from multiple
- * minor collections before triggering a major collection.
- *
- * Bigger values increases throughput by allowing more garbage to sit in the major heap.
- * Smaller values leads to better memory effiency but more frequent major collections.
- */
-#define SGEN_DEFAULT_ALLOWANCE_NURSERY_SIZE_RATIO 4.0
-
-#define SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO 1.0
-#define SGEN_MAX_ALLOWANCE_NURSERY_SIZE_RATIO 10.0
-
-/*
- * Default ratio of memory we want to release in a major collection in relation to the the current heap size.
- *
- * A major collection target is to free a given amount of memory. This amount is a ratio of the major heap size.
- *
- * Values above 0.5 cause the heap to agressively grow when it's small and waste memory when it's big.
- * Lower values will produce more reasonable sized heaps when it's small, but will be suboptimal at large
- * sizes as they will use a small fraction only.
- *
- */
-#define SGEN_DEFAULT_SAVE_TARGET_RATIO 0.5
-
-#define SGEN_MIN_SAVE_TARGET_RATIO 0.1
-#define SGEN_MAX_SAVE_TARGET_RATIO 2.0
-
-/*
- * Configurable cementing parameters.
- *
- * If there are too many pinned nursery objects with many references
- * from the major heap, the hash table size must be increased.
- *
- * The threshold is the number of references from the major heap to a
- * pinned nursery object which triggers cementing: if there are more
- * than that number of references, the pinned object is cemented until
- * the next major collection.
- */
-#define SGEN_CEMENT_HASH_SHIFT 6
-#define SGEN_CEMENT_HASH_SIZE  (1 << SGEN_CEMENT_HASH_SHIFT)
-#define SGEN_CEMENT_HASH(hv)   (((hv) ^ ((hv) >> SGEN_CEMENT_HASH_SHIFT)) & (SGEN_CEMENT_HASH_SIZE - 1))
-#define SGEN_CEMENT_THRESHOLD  1000
-
-#endif
diff --git a/mono/metadata/sgen-copy-object.h b/mono/metadata/sgen-copy-object.h
deleted file mode 100644 (file)
index c5589f6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * sgen-copy-object.h: This is where objects are copied.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "mono/utils/mono-compiler.h"
-
-extern guint64 stat_copy_object_called_nursery;
-extern guint64 stat_objects_copied_nursery;
-
-extern guint64 stat_nursery_copy_object_failed_from_space;
-extern guint64 stat_nursery_copy_object_failed_forwarded;
-extern guint64 stat_nursery_copy_object_failed_pinned;
-
-extern guint64 stat_slots_allocated_in_vain;
-
-/*
- * Copies an object and enqueues it if a queue is given.
- *
- * This function can be used even if the vtable of obj is not valid
- * anymore, which is the case in the parallel collector.
- */
-static MONO_ALWAYS_INLINE void
-par_copy_object_no_checks (char *destination, MonoVTable *vt, void *obj, mword objsize, SgenGrayQueue *queue)
-{
-       SGEN_ASSERT (9, vt->klass->inited, "vtable %p for class %s:%s was not initialized", vt, vt->klass->name_space, vt->klass->name);
-       SGEN_LOG (9, " (to %p, %s size: %lu)", destination, ((MonoObject*)obj)->vtable->klass->name, (unsigned long)objsize);
-       binary_protocol_copy (obj, destination, vt, objsize);
-
-#ifdef ENABLE_DTRACE
-       if (G_UNLIKELY (MONO_GC_OBJ_MOVED_ENABLED ())) {
-               int dest_gen = sgen_ptr_in_nursery (destination) ? GENERATION_NURSERY : GENERATION_OLD;
-               int src_gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD;
-               MONO_GC_OBJ_MOVED ((mword)destination, (mword)obj, dest_gen, src_gen, objsize, vt->klass->name_space, vt->klass->name);
-       }
-#endif
-
-       memcpy (destination + sizeof (mword), (char*)obj + sizeof (mword), objsize - sizeof (mword));
-
-       /* adjust array->bounds */
-       SGEN_ASSERT (9, vt->gc_descr, "vtable %p for class %s:%s has no gc descriptor", vt, vt->klass->name_space, vt->klass->name);
-
-       if (G_UNLIKELY (vt->rank && ((MonoArray*)obj)->bounds)) {
-               MonoArray *array = (MonoArray*)destination;
-               array->bounds = (MonoArrayBounds*)((char*)destination + ((char*)((MonoArray*)obj)->bounds - (char*)obj));
-               SGEN_LOG (9, "Array instance %p: size: %lu, rank: %d, length: %lu", array, (unsigned long)objsize, vt->rank, (unsigned long)mono_array_length (array));
-       }
-       if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
-               sgen_register_moved_object (obj, destination);
-       obj = destination;
-       if (queue) {
-               SGEN_LOG (9, "Enqueuing gray object %p (%s)", obj, sgen_safe_name (obj));
-               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_vtable_get_descriptor (vt));
-       }
-}
-
-/*
- * This can return OBJ itself on OOM.
- */
-static MONO_NEVER_INLINE void*
-copy_object_no_checks (void *obj, SgenGrayQueue *queue)
-{
-       MonoVTable *vt = ((MonoObject*)obj)->vtable;
-       gboolean has_references = SGEN_VTABLE_HAS_REFERENCES (vt);
-       mword objsize = SGEN_ALIGN_UP (sgen_par_object_get_size (vt, (MonoObject*)obj));
-       /* FIXME: Does this not mark the newly allocated object? */
-       char *destination = COLLECTOR_SERIAL_ALLOC_FOR_PROMOTION (vt, obj, objsize, has_references);
-
-       if (G_UNLIKELY (!destination)) {
-               /* FIXME: Is this path ever tested? */
-               collector_pin_object (obj, queue);
-               sgen_set_pinned_from_failed_allocation (objsize);
-               return obj;
-       }
-
-       if (!has_references)
-               queue = NULL;
-
-       par_copy_object_no_checks (destination, vt, obj, objsize, queue);
-       /* FIXME: mark mod union cards if necessary */
-
-       /* set the forwarding pointer */
-       SGEN_FORWARD_OBJECT (obj, destination);
-
-       return destination;
-}
diff --git a/mono/metadata/sgen-debug.c b/mono/metadata/sgen-debug.c
deleted file mode 100644 (file)
index 08d953a..0000000
+++ /dev/null
@@ -1,1146 +0,0 @@
-/*
- * sgen-debug.c: Collector debugging
- *
- * Author:
- *     Paolo Molaro (lupus@ximian.com)
- *  Rodrigo Kumpera (kumpera@gmail.com)
- *
- * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright 2011 Xamarin, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/sgen-pinning.h"
-#include "metadata/threadpool-internals.h"
-
-#define LOAD_VTABLE    SGEN_LOAD_VTABLE
-
-#define object_is_forwarded    SGEN_OBJECT_IS_FORWARDED
-#define object_is_pinned       SGEN_OBJECT_IS_PINNED
-#define safe_object_get_size   sgen_safe_object_get_size
-
-void describe_ptr (char *ptr);
-void check_object (char *start);
-
-/*
- * ######################################################################
- * ########  Collector debugging
- * ######################################################################
- */
-
-const char*descriptor_types [] = {
-       "INVALID",
-       "run length",
-       "bitmap",
-       "small pointer-free",
-       "complex",
-       "vector",
-       "complex arrray",
-       "complex pointer-free"
-};
-
-static char* describe_nursery_ptr (char *ptr, gboolean need_setup);
-
-static void
-describe_pointer (char *ptr, gboolean need_setup)
-{
-       MonoVTable *vtable;
-       mword desc;
-       int type;
-       char *start;
-       char *forwarded;
-       mword size;
-
- restart:
-       if (sgen_ptr_in_nursery (ptr)) {
-               start = describe_nursery_ptr (ptr, need_setup);
-               if (!start)
-                       return;
-               ptr = start;
-               vtable = (MonoVTable*)LOAD_VTABLE (ptr);
-       } else {
-               if (sgen_ptr_is_in_los (ptr, &start)) {
-                       if (ptr == start)
-                               printf ("Pointer is the start of object %p in LOS space.\n", start);
-                       else
-                               printf ("Pointer is at offset 0x%x of object %p in LOS space.\n", (int)(ptr - start), start);
-                       ptr = start;
-                       mono_sgen_los_describe_pointer (ptr);
-                       vtable = (MonoVTable*)LOAD_VTABLE (ptr);
-               } else if (major_collector.ptr_is_in_non_pinned_space (ptr, &start)) {
-                       if (ptr == start)
-                               printf ("Pointer is the start of object %p in oldspace.\n", start);
-                       else if (start)
-                               printf ("Pointer is at offset 0x%x of object %p in oldspace.\n", (int)(ptr - start), start);
-                       else
-                               printf ("Pointer inside oldspace.\n");
-                       if (start)
-                               ptr = start;
-                       vtable = major_collector.describe_pointer (ptr);
-               } else if (major_collector.obj_is_from_pinned_alloc (ptr)) {
-                       // FIXME: Handle pointers to the inside of objects
-                       printf ("Pointer is inside a pinned chunk.\n");
-                       vtable = (MonoVTable*)LOAD_VTABLE (ptr);
-               } else {
-                       printf ("Pointer unknown.\n");
-                       return;
-               }
-       }
-
-       if (object_is_pinned (ptr))
-               printf ("Object is pinned.\n");
-
-       if ((forwarded = object_is_forwarded (ptr))) {
-               printf ("Object is forwarded to %p:\n", forwarded);
-               ptr = forwarded;
-               goto restart;
-       }
-
-       printf ("VTable: %p\n", vtable);
-       if (vtable == NULL) {
-               printf ("VTable is invalid (empty).\n");
-               goto bridge;
-       }
-       if (sgen_ptr_in_nursery (vtable)) {
-               printf ("VTable is invalid (points inside nursery).\n");
-               goto bridge;
-       }
-       printf ("Class: %s\n", vtable->klass->name);
-
-       desc = ((GCVTable*)vtable)->desc;
-       printf ("Descriptor: %lx\n", (long)desc);
-
-       type = desc & DESC_TYPE_MASK;
-       printf ("Descriptor type: %d (%s)\n", type, descriptor_types [type]);
-
-       size = sgen_safe_object_get_size ((MonoObject*)ptr);
-       printf ("Size: %d\n", (int)size);
-
- bridge:
-       sgen_bridge_describe_pointer ((MonoObject*)ptr);
-}
-
-void
-describe_ptr (char *ptr)
-{
-       describe_pointer (ptr, TRUE);
-}
-
-static gboolean missing_remsets;
-
-/*
- * We let a missing remset slide if the target object is pinned,
- * because the store might have happened but the remset not yet added,
- * but in that case the target must be pinned.  We might theoretically
- * miss some missing remsets this way, but it's very unlikely.
- */
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {    \
-       if (*(ptr) && sgen_ptr_in_nursery ((char*)*(ptr))) { \
-               if (!sgen_get_remset ()->find_address ((char*)(ptr)) && !sgen_cement_lookup (*(ptr))) { \
-                       SGEN_LOG (0, "Oldspace->newspace reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \
-                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
-                       if (!object_is_pinned (*(ptr)))                                                         \
-                               missing_remsets = TRUE;                                                                 \
-               }                                                                                                                               \
-       }                                                                                                                                       \
-       } while (0)
-
-/*
- * Check that each object reference which points into the nursery can
- * be found in the remembered sets.
- */
-static void
-check_consistency_callback (char *start, size_t size, void *dummy)
-{
-       MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (start);
-       mword desc = sgen_vtable_get_descriptor (vt);
-       SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", start, vt, vt->klass->name);
-
-#include "sgen-scan-object.h"
-}
-
-/*
- * Perform consistency check of the heap.
- *
- * Assumes the world is stopped.
- */
-void
-sgen_check_consistency (void)
-{
-       // Need to add more checks
-
-       missing_remsets = FALSE;
-
-       SGEN_LOG (1, "Begin heap consistency check...");
-
-       // Check that oldspace->newspace pointers are registered with the collector
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)check_consistency_callback, NULL);
-
-       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_consistency_callback, NULL);
-
-       SGEN_LOG (1, "Heap consistency check done.");
-
-       if (!binary_protocol_is_enabled ())
-               g_assert (!missing_remsets);
-}
-
-static gboolean
-is_major_or_los_object_marked (char *obj)
-{
-       if (sgen_safe_object_get_size ((MonoObject*)obj) > SGEN_MAX_SMALL_OBJ_SIZE) {
-               return sgen_los_object_is_pinned (obj);
-       } else {
-               return sgen_get_major_collector ()->is_object_live (obj);
-       }
-}
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {    \
-       if (*(ptr) && !sgen_ptr_in_nursery ((char*)*(ptr)) && !is_major_or_los_object_marked ((char*)*(ptr))) { \
-               if (!sgen_get_remset ()->find_address_with_cards (start, cards, (char*)(ptr))) { \
-                       SGEN_LOG (0, "major->major reference %p at offset %td in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), ((MonoObject*)(obj))->vtable->klass->name_space, ((MonoObject*)(obj))->vtable->klass->name); \
-                       binary_protocol_missing_remset ((obj), (gpointer)LOAD_VTABLE ((obj)), (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
-                       missing_remsets = TRUE;                         \
-               }                                                                                                                               \
-       }                                                                                                                                       \
-       } while (0)
-
-static void
-check_mod_union_callback (char *start, size_t size, void *dummy)
-{
-       gboolean in_los = (gboolean) (size_t) dummy;
-       MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (start);
-       mword desc = sgen_vtable_get_descriptor (vt);
-       guint8 *cards;
-       SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", start, vt, vt->klass->name);
-
-       if (!is_major_or_los_object_marked (start))
-               return;
-
-       if (in_los)
-               cards = sgen_los_header_for_object (start)->cardtable_mod_union;
-       else
-               cards = sgen_get_major_collector ()->get_cardtable_mod_union_for_object (start);
-
-       SGEN_ASSERT (0, cards, "we must have mod union for marked major objects");
-
-#include "sgen-scan-object.h"
-}
-
-void
-sgen_check_mod_union_consistency (void)
-{
-       missing_remsets = FALSE;
-
-       major_collector.iterate_objects (ITERATE_OBJECTS_ALL, (IterateObjectCallbackFunc)check_mod_union_callback, (void*)FALSE);
-
-       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_mod_union_callback, (void*)TRUE);
-
-       if (!binary_protocol_is_enabled ())
-               g_assert (!missing_remsets);
-}
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {                                    \
-               if (*(ptr) && !LOAD_VTABLE (*(ptr)))                                            \
-                       g_error ("Could not load vtable for obj %p slot %d (size %d)", obj, (char*)ptr - (char*)obj, safe_object_get_size ((MonoObject*)obj));          \
-       } while (0)
-
-static void
-check_major_refs_callback (char *start, size_t size, void *dummy)
-{
-       mword desc = sgen_obj_get_descriptor (start);
-
-#include "sgen-scan-object.h"
-}
-
-void
-sgen_check_major_refs (void)
-{
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)check_major_refs_callback, NULL);
-       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_major_refs_callback, NULL);
-}
-
-/* Check that the reference is valid */
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {    \
-               if (*(ptr)) {   \
-                       g_assert (sgen_safe_name (*(ptr)) != NULL);     \
-               }       \
-       } while (0)
-
-/*
- * check_object:
- *
- *   Perform consistency check on an object. Currently we only check that the
- * reference fields are valid.
- */
-void
-check_object (char *start)
-{
-       mword desc;
-
-       if (!start)
-               return;
-
-       desc = sgen_obj_get_descriptor (start);
-
-#include "sgen-scan-object.h"
-}
-
-
-static char **valid_nursery_objects;
-static int valid_nursery_object_count;
-static gboolean broken_heap;
-
-static void 
-setup_mono_sgen_scan_area_with_callback (char *object, size_t size, void *data)
-{
-       valid_nursery_objects [valid_nursery_object_count++] = object;
-}
-
-static void
-setup_valid_nursery_objects (void)
-{
-       if (!valid_nursery_objects)
-               valid_nursery_objects = sgen_alloc_os_memory (DEFAULT_NURSERY_SIZE, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging data");
-       valid_nursery_object_count = 0;
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, setup_mono_sgen_scan_area_with_callback, NULL, FALSE);
-}
-
-static gboolean
-find_object_in_nursery_dump (char *object)
-{
-       int first = 0, last = valid_nursery_object_count;
-       while (first < last) {
-               int middle = first + ((last - first) >> 1);
-               if (object == valid_nursery_objects [middle])
-                       return TRUE;
-
-               if (object < valid_nursery_objects [middle])
-                       last = middle;
-               else
-                       first = middle + 1;
-       }
-       g_assert (first == last);
-       return FALSE;
-}
-
-static void
-iterate_valid_nursery_objects (IterateObjectCallbackFunc callback, void *data)
-{
-       int i;
-       for (i = 0; i < valid_nursery_object_count; ++i) {
-               char *obj = valid_nursery_objects [i];
-               callback (obj, safe_object_get_size ((MonoObject*)obj), data);
-       }
-}
-
-static char*
-describe_nursery_ptr (char *ptr, gboolean need_setup)
-{
-       int i;
-
-       if (need_setup)
-               setup_valid_nursery_objects ();
-
-       for (i = 0; i < valid_nursery_object_count; ++i) {
-               if (valid_nursery_objects [i] >= ptr)
-                       break;
-       }
-
-       if (i >= valid_nursery_object_count || valid_nursery_objects [i] + safe_object_get_size ((MonoObject *)valid_nursery_objects [i]) < ptr) {
-               SGEN_LOG (0, "nursery-ptr (unalloc'd-memory)\n");
-               return NULL;
-       } else {
-               char *obj = valid_nursery_objects [i];
-               if (obj == ptr)
-                       SGEN_LOG (0, "nursery-ptr\n");
-               else
-                       SGEN_LOG (0, "nursery-ptr (interior-ptr offset %td)\n", ptr - obj);
-               return obj;
-       }
-}
-
-static gboolean
-is_valid_object_pointer (char *object)
-{
-       if (sgen_ptr_in_nursery (object))
-               return find_object_in_nursery_dump (object);
-       
-       if (sgen_los_is_valid_object (object))
-               return TRUE;
-
-       if (major_collector.is_valid_object (object))
-               return TRUE;
-       return FALSE;
-}
-
-static void
-bad_pointer_spew (char *obj, char **slot)
-{
-       char *ptr = *slot;
-       MonoVTable *vtable = (MonoVTable*)LOAD_VTABLE (obj);
-
-       SGEN_LOG (0, "Invalid object pointer %p at offset %td in object %p (%s.%s):", ptr,
-               (char*)slot - obj,
-               obj, vtable->klass->name_space, vtable->klass->name);
-       describe_pointer (ptr, FALSE);
-       broken_heap = TRUE;
-}
-
-static void
-missing_remset_spew (char *obj, char **slot)
-{
-       char *ptr = *slot;
-       MonoVTable *vtable = (MonoVTable*)LOAD_VTABLE (obj);
-
-       SGEN_LOG (0, "Oldspace->newspace reference %p at offset %td in object %p (%s.%s) not found in remsets.",
-               ptr, (char*)slot - obj, obj, 
-               vtable->klass->name_space, vtable->klass->name);
-
-       broken_heap = TRUE;
-}
-
-/*
-FIXME Flag missing remsets due to pinning as non fatal
-*/
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {    \
-               if (*(char**)ptr) {     \
-                       if (!is_valid_object_pointer (*(char**)ptr)) {  \
-                               bad_pointer_spew ((char*)obj, (char**)ptr);     \
-                       } else if (!sgen_ptr_in_nursery (obj) && sgen_ptr_in_nursery ((char*)*ptr)) {   \
-                               if (!sgen_get_remset ()->find_address ((char*)(ptr)) && !sgen_cement_lookup ((char*)*(ptr)) && (!allow_missing_pinned || !SGEN_OBJECT_IS_PINNED ((char*)*(ptr)))) \
-                               missing_remset_spew ((char*)obj, (char**)ptr);  \
-                       }       \
-        } \
-       } while (0)
-
-static void
-verify_object_pointers_callback (char *start, size_t size, void *data)
-{
-       gboolean allow_missing_pinned = (gboolean) (size_t) data;
-       mword desc = sgen_obj_get_descriptor (start);
-
-#include "sgen-scan-object.h"
-}
-
-/*
-FIXME:
--This heap checker is racy regarding inlined write barriers and other JIT tricks that
-depend on OP_DUMMY_USE.
-*/
-void
-sgen_check_whole_heap (gboolean allow_missing_pinned)
-{
-       setup_valid_nursery_objects ();
-
-       broken_heap = FALSE;
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned, FALSE);
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned);
-       sgen_los_iterate_objects (verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned);
-
-       g_assert (!broken_heap);
-}
-
-static gboolean
-ptr_in_heap (char *object)
-{
-       if (sgen_ptr_in_nursery (object))
-               return TRUE;
-       
-       if (sgen_los_is_valid_object (object))
-               return TRUE;
-
-       if (major_collector.is_valid_object (object))
-               return TRUE;
-       return FALSE;
-}
-
-/*
- * sgen_check_objref:
- *   Do consistency checks on the object reference OBJ. Assert on failure.
- */
-void
-sgen_check_objref (char *obj)
-{
-       g_assert (ptr_in_heap (obj));
-}
-
-static void
-find_pinning_ref_from_thread (char *obj, size_t size)
-{
-       int j;
-       SgenThreadInfo *info;
-       char *endobj = obj + size;
-
-       FOREACH_THREAD (info) {
-               char **start = (char**)info->stack_start;
-               if (info->skip)
-                       continue;
-               while (start < (char**)info->stack_end) {
-                       if (*start >= obj && *start < endobj) {
-                               SGEN_LOG (0, "Object %p referenced in thread %p (id %p) at %p, stack: %p-%p", obj, info, (gpointer)mono_thread_info_get_tid (info), start, info->stack_start, info->stack_end);
-                       }
-                       start++;
-               }
-
-               for (j = 0; j < ARCH_NUM_REGS; ++j) {
-#ifdef USE_MONO_CTX
-                       mword w = ((mword*)&info->ctx) [j];
-#else
-                       mword w = (mword)&info->regs [j];
-#endif
-
-                       if (w >= (mword)obj && w < (mword)obj + size)
-                               SGEN_LOG (0, "Object %p referenced in saved reg %d of thread %p (id %p)", obj, j, info, (gpointer)mono_thread_info_get_tid (info));
-               } END_FOREACH_THREAD
-       }
-}
-
-/*
- * Debugging function: find in the conservative roots where @obj is being pinned.
- */
-static G_GNUC_UNUSED void
-find_pinning_reference (char *obj, size_t size)
-{
-       char **start;
-       RootRecord *root;
-       char *endobj = obj + size;
-
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_NORMAL], start, root) {
-               /* if desc is non-null it has precise info */
-               if (!root->root_desc) {
-                       while (start < (char**)root->end_root) {
-                               if (*start >= obj && *start < endobj) {
-                                       SGEN_LOG (0, "Object %p referenced in pinned roots %p-%p\n", obj, start, root->end_root);
-                               }
-                               start++;
-                       }
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-
-       find_pinning_ref_from_thread (obj, size);
-}
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {                                    \
-               char* __target = *(char**)ptr;                          \
-               if (__target) {                                         \
-                       if (sgen_ptr_in_nursery (__target)) {           \
-                               g_assert (!SGEN_OBJECT_IS_FORWARDED (__target)); \
-                       } else {                                        \
-                               mword __size = sgen_safe_object_get_size ((MonoObject*)__target); \
-                               if (__size <= SGEN_MAX_SMALL_OBJ_SIZE)  \
-                                       g_assert (major_collector.is_object_live (__target)); \
-                               else                                    \
-                                       g_assert (sgen_los_object_is_pinned (__target)); \
-                       }                                               \
-               }                                                       \
-       } while (0)
-
-static void
-check_marked_callback (char *start, size_t size, void *dummy)
-{
-       gboolean flag = (gboolean) (size_t) dummy;
-       mword desc;
-
-       if (sgen_ptr_in_nursery (start)) {
-               if (flag)
-                       SGEN_ASSERT (0, SGEN_OBJECT_IS_PINNED (start), "All objects remaining in the nursery must be pinned");
-       } else if (flag) {
-               if (!sgen_los_object_is_pinned (start))
-                       return;
-       } else {
-               if (!major_collector.is_object_live (start))
-                       return;
-       }
-
-       desc = sgen_obj_get_descriptor_safe (start);
-
-#include "sgen-scan-object.h"
-}
-
-void
-sgen_check_heap_marked (gboolean nursery_must_be_pinned)
-{
-       setup_valid_nursery_objects ();
-
-       iterate_valid_nursery_objects (check_marked_callback, (void*)(size_t)nursery_must_be_pinned);
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, check_marked_callback, (void*)FALSE);
-       sgen_los_iterate_objects (check_marked_callback, (void*)TRUE);
-}
-
-static void
-check_nursery_objects_pinned_callback (char *obj, size_t size, void *data /* ScanCopyContext *ctx */)
-{
-       gboolean pinned = (gboolean) (size_t) data;
-
-       g_assert (!SGEN_OBJECT_IS_FORWARDED (obj));
-       if (pinned)
-               g_assert (SGEN_OBJECT_IS_PINNED (obj));
-       else
-               g_assert (!SGEN_OBJECT_IS_PINNED (obj));
-}
-
-void
-sgen_check_nursery_objects_pinned (gboolean pinned)
-{
-       sgen_clear_nursery_fragments ();
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                       (IterateObjectCallbackFunc)check_nursery_objects_pinned_callback, (void*) (size_t) pinned /* (void*)&ctx */, FALSE);
-}
-
-static gboolean scan_object_for_specific_ref_precise = TRUE;
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj) do {               \
-       if ((MonoObject*)*(ptr) == key) {       \
-       g_print ("found ref to %p in object %p (%s) at offset %td\n",   \
-                       key, (obj), sgen_safe_name ((obj)), ((char*)(ptr) - (char*)(obj))); \
-       }                                                               \
-       } while (0)
-
-static void
-scan_object_for_specific_ref (char *start, MonoObject *key)
-{
-       char *forwarded;
-
-       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (start)))
-               start = forwarded;
-
-       if (scan_object_for_specific_ref_precise) {
-               mword desc = sgen_obj_get_descriptor_safe (start);
-               #include "sgen-scan-object.h"
-       } else {
-               mword *words = (mword*)start;
-               size_t size = safe_object_get_size ((MonoObject*)start);
-               int i;
-               for (i = 0; i < size / sizeof (mword); ++i) {
-                       if (words [i] == (mword)key) {
-                               g_print ("found possible ref to %p in object %p (%s) at offset %td\n",
-                                               key, start, sgen_safe_name (start), i * sizeof (mword));
-                       }
-               }
-       }
-}
-
-static void
-scan_object_for_specific_ref_callback (char *obj, size_t size, MonoObject *key)
-{
-       scan_object_for_specific_ref (obj, key);
-}
-
-static void
-check_root_obj_specific_ref (RootRecord *root, MonoObject *key, MonoObject *obj)
-{
-       if (key != obj)
-               return;
-       g_print ("found ref to %p in root record %p\n", key, root);
-}
-
-static MonoObject *check_key = NULL;
-static RootRecord *check_root = NULL;
-
-static void
-check_root_obj_specific_ref_from_marker (void **obj, void *gc_data)
-{
-       check_root_obj_specific_ref (check_root, check_key, *obj);
-}
-
-static void
-scan_roots_for_specific_ref (MonoObject *key, int root_type)
-{
-       void **start_root;
-       RootRecord *root;
-       check_key = key;
-
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
-               mword desc = root->root_desc;
-
-               check_root = root;
-
-               switch (desc & ROOT_DESC_TYPE_MASK) {
-               case ROOT_DESC_BITMAP:
-                       desc >>= ROOT_DESC_TYPE_SHIFT;
-                       while (desc) {
-                               if (desc & 1)
-                                       check_root_obj_specific_ref (root, key, *start_root);
-                               desc >>= 1;
-                               start_root++;
-                       }
-                       return;
-               case ROOT_DESC_COMPLEX: {
-                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-                       int bwords = (int) ((*bitmap_data) - 1);
-                       void **start_run = start_root;
-                       bitmap_data++;
-                       while (bwords-- > 0) {
-                               gsize bmap = *bitmap_data++;
-                               void **objptr = start_run;
-                               while (bmap) {
-                                       if (bmap & 1)
-                                               check_root_obj_specific_ref (root, key, *objptr);
-                                       bmap >>= 1;
-                                       ++objptr;
-                               }
-                               start_run += GC_BITS_PER_WORD;
-                       }
-                       break;
-               }
-               case ROOT_DESC_USER: {
-                       MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
-                       marker (start_root, check_root_obj_specific_ref_from_marker, NULL);
-                       break;
-               }
-               case ROOT_DESC_RUN_LEN:
-                       g_assert_not_reached ();
-               default:
-                       g_assert_not_reached ();
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-
-       check_key = NULL;
-       check_root = NULL;
-}
-
-void
-mono_gc_scan_for_specific_ref (MonoObject *key, gboolean precise)
-{
-       void **ptr;
-       RootRecord *root;
-
-       scan_object_for_specific_ref_precise = precise;
-
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                       (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key, TRUE);
-
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
-
-       sgen_los_iterate_objects ((IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
-
-       scan_roots_for_specific_ref (key, ROOT_TYPE_NORMAL);
-       scan_roots_for_specific_ref (key, ROOT_TYPE_WBARRIER);
-
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], ptr, root) {
-               while (ptr < (void**)root->end_root) {
-                       check_root_obj_specific_ref (root, *ptr, key);
-                       ++ptr;
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-}
-
-static MonoDomain *check_domain = NULL;
-
-static void
-check_obj_not_in_domain (void **o)
-{
-       g_assert (((MonoObject*)(*o))->vtable->domain != check_domain);
-}
-
-
-static void
-check_obj_not_in_domain_callback (void **o, void *gc_data)
-{
-       g_assert (((MonoObject*)(*o))->vtable->domain != check_domain);
-}
-
-void
-sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
-{
-       void **start_root;
-       RootRecord *root;
-       check_domain = domain;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
-               mword desc = root->root_desc;
-
-               /* The MonoDomain struct is allowed to hold
-                  references to objects in its own domain. */
-               if (start_root == (void**)domain)
-                       continue;
-
-               switch (desc & ROOT_DESC_TYPE_MASK) {
-               case ROOT_DESC_BITMAP:
-                       desc >>= ROOT_DESC_TYPE_SHIFT;
-                       while (desc) {
-                               if ((desc & 1) && *start_root)
-                                       check_obj_not_in_domain (*start_root);
-                               desc >>= 1;
-                               start_root++;
-                       }
-                       break;
-               case ROOT_DESC_COMPLEX: {
-                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-                       int bwords = (int)((*bitmap_data) - 1);
-                       void **start_run = start_root;
-                       bitmap_data++;
-                       while (bwords-- > 0) {
-                               gsize bmap = *bitmap_data++;
-                               void **objptr = start_run;
-                               while (bmap) {
-                                       if ((bmap & 1) && *objptr)
-                                               check_obj_not_in_domain (*objptr);
-                                       bmap >>= 1;
-                                       ++objptr;
-                               }
-                               start_run += GC_BITS_PER_WORD;
-                       }
-                       break;
-               }
-               case ROOT_DESC_USER: {
-                       MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
-                       marker (start_root, check_obj_not_in_domain_callback, NULL);
-                       break;
-               }
-               case ROOT_DESC_RUN_LEN:
-                       g_assert_not_reached ();
-               default:
-                       g_assert_not_reached ();
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-
-       check_domain = NULL;
-}
-
-static gboolean
-is_xdomain_ref_allowed (gpointer *ptr, char *obj, MonoDomain *domain)
-{
-       MonoObject *o = (MonoObject*)(obj);
-       MonoObject *ref = (MonoObject*)*(ptr);
-       size_t offset = (char*)(ptr) - (char*)o;
-
-       if (o->vtable->klass == mono_defaults.thread_class && offset == G_STRUCT_OFFSET (MonoThread, internal_thread))
-               return TRUE;
-       if (o->vtable->klass == mono_defaults.internal_thread_class && offset == G_STRUCT_OFFSET (MonoInternalThread, current_appcontext))
-               return TRUE;
-
-#ifndef DISABLE_REMOTING
-       if (mono_defaults.real_proxy_class->supertypes && mono_class_has_parent_fast (o->vtable->klass, mono_defaults.real_proxy_class) &&
-                       offset == G_STRUCT_OFFSET (MonoRealProxy, unwrapped_server))
-               return TRUE;
-#endif
-       /* Thread.cached_culture_info */
-       if (!strcmp (ref->vtable->klass->name_space, "System.Globalization") &&
-                       !strcmp (ref->vtable->klass->name, "CultureInfo") &&
-                       !strcmp(o->vtable->klass->name_space, "System") &&
-                       !strcmp(o->vtable->klass->name, "Object[]"))
-               return TRUE;
-       /*
-        *  at System.IO.MemoryStream.InternalConstructor (byte[],int,int,bool,bool) [0x0004d] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.IO/MemoryStream.cs:121
-        * at System.IO.MemoryStream..ctor (byte[]) [0x00017] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.IO/MemoryStream.cs:81
-        * at (wrapper remoting-invoke-with-check) System.IO.MemoryStream..ctor (byte[]) <IL 0x00020, 0xffffffff>
-        * at System.Runtime.Remoting.Messaging.CADMethodCallMessage.GetArguments () [0x0000d] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.Runtime.Remoting.Messaging/CADMessages.cs:327
-        * at System.Runtime.Remoting.Messaging.MethodCall..ctor (System.Runtime.Remoting.Messaging.CADMethodCallMessage) [0x00017] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.Runtime.Remoting.Messaging/MethodCall.cs:87
-        * at System.AppDomain.ProcessMessageInDomain (byte[],System.Runtime.Remoting.Messaging.CADMethodCallMessage,byte[]&,System.Runtime.Remoting.Messaging.CADMethodReturnMessage&) [0x00018] in /home/schani/Work/novell/trunk/mcs/class/corlib/System/AppDomain.cs:1213
-        * at (wrapper remoting-invoke-with-check) System.AppDomain.ProcessMessageInDomain (byte[],System.Runtime.Remoting.Messaging.CADMethodCallMessage,byte[]&,System.Runtime.Remoting.Messaging.CADMethodReturnMessage&) <IL 0x0003d, 0xffffffff>
-        * at System.Runtime.Remoting.Channels.CrossAppDomainSink.ProcessMessageInDomain (byte[],System.Runtime.Remoting.Messaging.CADMethodCallMessage) [0x00008] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.Runtime.Remoting.Channels/CrossAppDomainChannel.cs:198
-        * at (wrapper runtime-invoke) object.runtime_invoke_CrossAppDomainSink/ProcessMessageRes_object_object (object,intptr,intptr,intptr) <IL 0x0004c, 0xffffffff>
-        */
-       if (!strcmp (ref->vtable->klass->name_space, "System") &&
-                       !strcmp (ref->vtable->klass->name, "Byte[]") &&
-                       !strcmp (o->vtable->klass->name_space, "System.IO") &&
-                       !strcmp (o->vtable->klass->name, "MemoryStream"))
-               return TRUE;
-       /* append_job() in threadpool.c */
-       if (!strcmp (ref->vtable->klass->name_space, "System.Runtime.Remoting.Messaging") &&
-                       !strcmp (ref->vtable->klass->name, "AsyncResult") &&
-                       !strcmp (o->vtable->klass->name_space, "System") &&
-                       !strcmp (o->vtable->klass->name, "Object[]") &&
-                       mono_thread_pool_is_queue_array ((MonoArray*) o))
-               return TRUE;
-       return FALSE;
-}
-
-static void
-check_reference_for_xdomain (gpointer *ptr, char *obj, MonoDomain *domain)
-{
-       MonoObject *o = (MonoObject*)(obj);
-       MonoObject *ref = (MonoObject*)*(ptr);
-       size_t offset = (char*)(ptr) - (char*)o;
-       MonoClass *class;
-       MonoClassField *field;
-       char *str;
-
-       if (!ref || ref->vtable->domain == domain)
-               return;
-       if (is_xdomain_ref_allowed (ptr, obj, domain))
-               return;
-
-       field = NULL;
-       for (class = o->vtable->klass; class; class = class->parent) {
-               int i;
-
-               for (i = 0; i < class->field.count; ++i) {
-                       if (class->fields[i].offset == offset) {
-                               field = &class->fields[i];
-                               break;
-                       }
-               }
-               if (field)
-                       break;
-       }
-
-       if (ref->vtable->klass == mono_defaults.string_class)
-               str = mono_string_to_utf8 ((MonoString*)ref);
-       else
-               str = NULL;
-       g_print ("xdomain reference in %p (%s.%s) at offset %d (%s) to %p (%s.%s) (%s)  -  pointed to by:\n",
-                       o, o->vtable->klass->name_space, o->vtable->klass->name,
-                       offset, field ? field->name : "",
-                       ref, ref->vtable->klass->name_space, ref->vtable->klass->name, str ? str : "");
-       mono_gc_scan_for_specific_ref (o, TRUE);
-       if (str)
-               g_free (str);
-}
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    check_reference_for_xdomain ((ptr), (obj), domain)
-
-static void
-scan_object_for_xdomain_refs (char *start, mword size, void *data)
-{
-       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (start);
-       MonoDomain *domain = vt->domain;
-       mword desc = sgen_vtable_get_descriptor (vt);
-
-       #include "sgen-scan-object.h"
-}
-
-void
-sgen_check_for_xdomain_refs (void)
-{
-       LOSObject *bigobj;
-
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                       (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL, FALSE);
-
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
-
-       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
-               scan_object_for_xdomain_refs (bigobj->data, sgen_los_object_size (bigobj), NULL);
-}
-
-static int
-compare_xrefs (const void *a_ptr, const void *b_ptr)
-{
-       const MonoGCBridgeXRef *a = a_ptr;
-       const MonoGCBridgeXRef *b = b_ptr;
-
-       if (a->src_scc_index < b->src_scc_index)
-               return -1;
-       if (a->src_scc_index > b->src_scc_index)
-               return 1;
-
-       if (a->dst_scc_index < b->dst_scc_index)
-               return -1;
-       if (a->dst_scc_index > b->dst_scc_index)
-               return 1;
-
-       return 0;
-}
-
-/*
-static void
-dump_processor_state (SgenBridgeProcessor *p)
-{
-       int i;
-
-       printf ("------\n");
-       printf ("SCCS %d\n", p->num_sccs);
-       for (i = 0; i < p->num_sccs; ++i) {
-               int j;
-               MonoGCBridgeSCC *scc = p->api_sccs [i];
-               printf ("\tSCC %d:", i);
-               for (j = 0; j < scc->num_objs; ++j) {
-                       MonoObject *obj = scc->objs [j];
-                       printf (" %p", obj);
-               }
-               printf ("\n");
-       }
-
-       printf ("XREFS %d\n", p->num_xrefs);
-       for (i = 0; i < p->num_xrefs; ++i)
-               printf ("\t%d -> %d\n", p->api_xrefs [i].src_scc_index, p->api_xrefs [i].dst_scc_index);
-
-       printf ("-------\n");
-}
-*/
-
-gboolean
-sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcessor *b)
-{
-       int i;
-       SgenHashTable obj_to_a_scc = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_DEBUG, INTERNAL_MEM_BRIDGE_DEBUG, sizeof (int), mono_aligned_addr_hash, NULL);
-       SgenHashTable b_scc_to_a_scc = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_BRIDGE_DEBUG, INTERNAL_MEM_BRIDGE_DEBUG, sizeof (int), g_direct_hash, NULL);
-       MonoGCBridgeXRef *a_xrefs, *b_xrefs;
-       size_t xrefs_alloc_size;
-
-       // dump_processor_state (a);
-       // dump_processor_state (b);
-
-       if (a->num_sccs != b->num_sccs)
-               g_error ("SCCS count expected %d but got %d", a->num_sccs, b->num_sccs);
-       if (a->num_xrefs != b->num_xrefs)
-               g_error ("SCCS count expected %d but got %d", a->num_xrefs, b->num_xrefs);
-
-       /*
-        * First we build a hash of each object in `a` to its respective SCC index within
-        * `a`.  Along the way we also assert that no object is more than one SCC.
-        */
-       for (i = 0; i < a->num_sccs; ++i) {
-               int j;
-               MonoGCBridgeSCC *scc = a->api_sccs [i];
-
-               g_assert (scc->num_objs > 0);
-
-               for (j = 0; j < scc->num_objs; ++j) {
-                       MonoObject *obj = scc->objs [j];
-                       gboolean new_entry = sgen_hash_table_replace (&obj_to_a_scc, obj, &i, NULL);
-                       g_assert (new_entry);
-               }
-       }
-
-       /*
-        * Now we check whether each of the objects in `b` are in `a`, and whether the SCCs
-        * of `b` contain the same sets of objects as those of `a`.
-        *
-        * While we're doing this, build a hash table to map from `b` SCC indexes to `a` SCC
-        * indexes.
-        */
-       for (i = 0; i < b->num_sccs; ++i) {
-               MonoGCBridgeSCC *scc = b->api_sccs [i];
-               MonoGCBridgeSCC *a_scc;
-               int *a_scc_index_ptr;
-               int a_scc_index;
-               int j;
-               gboolean new_entry;
-
-               g_assert (scc->num_objs > 0);
-               a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [0]);
-               g_assert (a_scc_index_ptr);
-               a_scc_index = *a_scc_index_ptr;
-
-               //g_print ("A SCC %d -> B SCC %d\n", a_scc_index, i);
-
-               a_scc = a->api_sccs [a_scc_index];
-               g_assert (a_scc->num_objs == scc->num_objs);
-
-               for (j = 1; j < scc->num_objs; ++j) {
-                       a_scc_index_ptr = sgen_hash_table_lookup (&obj_to_a_scc, scc->objs [j]);
-                       g_assert (a_scc_index_ptr);
-                       g_assert (*a_scc_index_ptr == a_scc_index);
-               }
-
-               new_entry = sgen_hash_table_replace (&b_scc_to_a_scc, GINT_TO_POINTER (i), &a_scc_index, NULL);
-               g_assert (new_entry);
-       }
-
-       /*
-        * Finally, check that we have the same xrefs.  We do this by making copies of both
-        * xref arrays, and replacing the SCC indexes in the copy for `b` with the
-        * corresponding indexes in `a`.  Then we sort both arrays and assert that they're
-        * the same.
-        *
-        * At the same time, check that no xref is self-referential and that there are no
-        * duplicate ones.
-        */
-
-       xrefs_alloc_size = a->num_xrefs * sizeof (MonoGCBridgeXRef);
-       a_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
-       b_xrefs = sgen_alloc_internal_dynamic (xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG, TRUE);
-
-       memcpy (a_xrefs, a->api_xrefs, xrefs_alloc_size);
-       for (i = 0; i < b->num_xrefs; ++i) {
-               MonoGCBridgeXRef *xref = &b->api_xrefs [i];
-               int *scc_index_ptr;
-
-               g_assert (xref->src_scc_index != xref->dst_scc_index);
-
-               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->src_scc_index));
-               g_assert (scc_index_ptr);
-               b_xrefs [i].src_scc_index = *scc_index_ptr;
-
-               scc_index_ptr = sgen_hash_table_lookup (&b_scc_to_a_scc, GINT_TO_POINTER (xref->dst_scc_index));
-               g_assert (scc_index_ptr);
-               b_xrefs [i].dst_scc_index = *scc_index_ptr;
-       }
-
-       qsort (a_xrefs, a->num_xrefs, sizeof (MonoGCBridgeXRef), compare_xrefs);
-       qsort (b_xrefs, a->num_xrefs, sizeof (MonoGCBridgeXRef), compare_xrefs);
-
-       for (i = 0; i < a->num_xrefs; ++i) {
-               g_assert (a_xrefs [i].src_scc_index == b_xrefs [i].src_scc_index);
-               g_assert (a_xrefs [i].dst_scc_index == b_xrefs [i].dst_scc_index);
-       }
-
-       sgen_hash_table_clean (&obj_to_a_scc);
-       sgen_hash_table_clean (&b_scc_to_a_scc);
-       sgen_free_internal_dynamic (a_xrefs, xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG);
-       sgen_free_internal_dynamic (b_xrefs, xrefs_alloc_size, INTERNAL_MEM_BRIDGE_DEBUG);
-
-       return TRUE;
-}
-
-static char *found_obj;
-
-static void
-find_object_for_ptr_callback (char *obj, size_t size, void *user_data)
-{
-       char *ptr = user_data;
-
-       if (ptr >= obj && ptr < obj + size) {
-               g_assert (!found_obj);
-               found_obj = obj;
-       }
-}
-
-/* for use in the debugger */
-char*
-sgen_find_object_for_ptr (char *ptr)
-{
-       if (ptr >= nursery_section->data && ptr < nursery_section->end_data) {
-               found_obj = NULL;
-               sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                               find_object_for_ptr_callback, ptr, TRUE);
-               if (found_obj)
-                       return found_obj;
-       }
-
-       found_obj = NULL;
-       sgen_los_iterate_objects (find_object_for_ptr_callback, ptr);
-       if (found_obj)
-               return found_obj;
-
-       /*
-        * Very inefficient, but this is debugging code, supposed to
-        * be called from gdb, so we don't care.
-        */
-       found_obj = NULL;
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, find_object_for_ptr_callback, ptr);
-       return found_obj;
-}
-
-#endif /*HAVE_SGEN_GC*/
diff --git a/mono/metadata/sgen-descriptor.c b/mono/metadata/sgen-descriptor.c
deleted file mode 100644 (file)
index 7171d45..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * sgen-descriptor.c: GC descriptors describe object layout.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#ifdef HAVE_SEMAPHORE_H
-#include <semaphore.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#ifdef __MACH__
-#undef _XOPEN_SOURCE
-#endif
-#ifdef __MACH__
-#define _XOPEN_SOURCE
-#endif
-
-#include "utils/mono-counters.h"
-#include "metadata/sgen-gc.h"
-
-#define MAX_USER_DESCRIPTORS 16
-
-#define MAKE_ROOT_DESC(type,val) ((type) | ((val) << ROOT_DESC_TYPE_SHIFT))
-#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
-
-
-static gsize* complex_descriptors = NULL;
-static int complex_descriptors_size = 0;
-static int complex_descriptors_next = 0;
-static MonoGCRootMarkFunc user_descriptors [MAX_USER_DESCRIPTORS];
-static int user_descriptors_next = 0;
-static void *all_ref_root_descrs [32];
-
-#ifdef HEAVY_STATISTICS
-static guint64 stat_scanned_count_per_descriptor [DESC_TYPE_MAX];
-static guint64 stat_copied_count_per_descriptor [DESC_TYPE_MAX];
-#endif
-
-static int
-alloc_complex_descriptor (gsize *bitmap, int numbits)
-{
-       int nwords, res, i;
-
-       numbits = ALIGN_TO (numbits, GC_BITS_PER_WORD);
-       nwords = numbits / GC_BITS_PER_WORD + 1;
-
-       sgen_gc_lock ();
-       res = complex_descriptors_next;
-       /* linear search, so we don't have duplicates with domain load/unload
-        * this should not be performance critical or we'd have bigger issues
-        * (the number and size of complex descriptors should be small).
-        */
-       for (i = 0; i < complex_descriptors_next; ) {
-               if (complex_descriptors [i] == nwords) {
-                       int j, found = TRUE;
-                       for (j = 0; j < nwords - 1; ++j) {
-                               if (complex_descriptors [i + 1 + j] != bitmap [j]) {
-                                       found = FALSE;
-                                       break;
-                               }
-                       }
-                       if (found) {
-                               sgen_gc_unlock ();
-                               return i;
-                       }
-               }
-               i += (int)complex_descriptors [i];
-       }
-       if (complex_descriptors_next + nwords > complex_descriptors_size) {
-               int new_size = complex_descriptors_size * 2 + nwords;
-               complex_descriptors = g_realloc (complex_descriptors, new_size * sizeof (gsize));
-               complex_descriptors_size = new_size;
-       }
-       SGEN_LOG (6, "Complex descriptor %d, size: %d (total desc memory: %d)", res, nwords, complex_descriptors_size);
-       complex_descriptors_next += nwords;
-       complex_descriptors [res] = nwords;
-       for (i = 0; i < nwords - 1; ++i) {
-               complex_descriptors [res + 1 + i] = bitmap [i];
-               SGEN_LOG (6, "\tvalue: %p", (void*)complex_descriptors [res + 1 + i]);
-       }
-       sgen_gc_unlock ();
-       return res;
-}
-
-gsize*
-sgen_get_complex_descriptor (mword desc)
-{
-       return complex_descriptors + (desc >> LOW_TYPE_BITS);
-}
-
-/*
- * Descriptor builders.
- */
-void*
-mono_gc_make_descr_for_string (gsize *bitmap, int numbits)
-{
-       return (void*)SGEN_DESC_STRING;
-}
-
-void*
-mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size)
-{
-       int first_set = -1, num_set = 0, last_set = -1, i;
-       mword desc = 0;
-       size_t stored_size = obj_size;
-
-       stored_size += SGEN_ALLOC_ALIGN - 1;
-       stored_size &= ~(SGEN_ALLOC_ALIGN - 1);
-
-       for (i = 0; i < numbits; ++i) {
-               if (bitmap [i / GC_BITS_PER_WORD] & ((gsize)1 << (i % GC_BITS_PER_WORD))) {
-                       if (first_set < 0)
-                               first_set = i;
-                       last_set = i;
-                       num_set++;
-               }
-       }
-
-       if (first_set < 0) {
-               SGEN_LOG (6, "Ptrfree descriptor %p, size: %zd", (void*)desc, stored_size);
-               if (stored_size <= MAX_RUNLEN_OBJECT_SIZE && stored_size <= SGEN_MAX_SMALL_OBJ_SIZE)
-                       return (void*)(DESC_TYPE_SMALL_PTRFREE | stored_size);
-               return (void*)DESC_TYPE_COMPLEX_PTRFREE;
-       }
-
-       g_assert (!(stored_size & 0x7));
-
-       SGEN_ASSERT (5, stored_size == SGEN_ALIGN_UP (stored_size), "Size is not aligned");
-
-       /* we know the 2-word header is ptr-free */
-       if (last_set < BITMAP_NUM_BITS + OBJECT_HEADER_WORDS && stored_size <= SGEN_MAX_SMALL_OBJ_SIZE) {
-               desc = DESC_TYPE_BITMAP | ((*bitmap >> OBJECT_HEADER_WORDS) << LOW_TYPE_BITS);
-               SGEN_LOG (6, "Largebitmap descriptor %p, size: %zd, last set: %d", (void*)desc, stored_size, last_set);
-               return (void*) desc;
-       }
-
-       if (stored_size <= MAX_RUNLEN_OBJECT_SIZE && stored_size <= SGEN_MAX_SMALL_OBJ_SIZE) {
-               /* check run-length encoding first: one byte offset, one byte number of pointers
-                * on 64 bit archs, we can have 3 runs, just one on 32.
-                * It may be better to use nibbles.
-                */
-               if (first_set < 256 && num_set < 256 && (first_set + num_set == last_set + 1)) {
-                       desc = DESC_TYPE_RUN_LENGTH | stored_size | (first_set << 16) | (num_set << 24);
-                       SGEN_LOG (6, "Runlen descriptor %p, size: %zd, first set: %d, num set: %d", (void*)desc, stored_size, first_set, num_set);
-                       return (void*) desc;
-               }
-       }
-
-       /* it's a complex object ... */
-       desc = DESC_TYPE_COMPLEX | (alloc_complex_descriptor (bitmap, last_set + 1) << LOW_TYPE_BITS);
-       return (void*) desc;
-}
-
-/* If the array holds references, numbits == 1 and the first bit is set in elem_bitmap */
-void*
-mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_t elem_size)
-{
-       int first_set = -1, num_set = 0, last_set = -1, i;
-       mword desc = DESC_TYPE_VECTOR | (vector ? VECTOR_KIND_SZARRAY : VECTOR_KIND_ARRAY);
-       for (i = 0; i < numbits; ++i) {
-               if (elem_bitmap [i / GC_BITS_PER_WORD] & ((gsize)1 << (i % GC_BITS_PER_WORD))) {
-                       if (first_set < 0)
-                               first_set = i;
-                       last_set = i;
-                       num_set++;
-               }
-       }
-
-       if (first_set < 0) {
-               if (elem_size <= MAX_ELEMENT_SIZE)
-                       return (void*)(desc | VECTOR_SUBTYPE_PTRFREE | (elem_size << VECTOR_ELSIZE_SHIFT));
-               return (void*)DESC_TYPE_COMPLEX_PTRFREE;
-       }
-
-       if (elem_size <= MAX_ELEMENT_SIZE) {
-               desc |= elem_size << VECTOR_ELSIZE_SHIFT;
-               if (!num_set) {
-                       return (void*)(desc | VECTOR_SUBTYPE_PTRFREE);
-               }
-               /* Note: we also handle structs with just ref fields */
-               if (num_set * sizeof (gpointer) == elem_size) {
-                       return (void*)(desc | VECTOR_SUBTYPE_REFS | ((gssize)(-1) << 16));
-               }
-               /* FIXME: try run-len first */
-               /* Note: we can't skip the object header here, because it's not present */
-               if (last_set < VECTOR_BITMAP_SIZE) {
-                       return (void*)(desc | VECTOR_SUBTYPE_BITMAP | (*elem_bitmap << 16));
-               }
-       }
-       /* it's am array of complex structs ... */
-       desc = DESC_TYPE_COMPLEX_ARR;
-       desc |= alloc_complex_descriptor (elem_bitmap, last_set + 1) << LOW_TYPE_BITS;
-       return (void*) desc;
-}
-
-/* Return the bitmap encoded by a descriptor */
-gsize*
-mono_gc_get_bitmap_for_descr (void *descr, int *numbits)
-{
-       mword d = (mword)descr;
-       gsize *bitmap;
-
-       switch (d & DESC_TYPE_MASK) {
-       case DESC_TYPE_RUN_LENGTH: {            
-               int first_set = (d >> 16) & 0xff;
-               int num_set = (d >> 24) & 0xff;
-               int i;
-
-               bitmap = g_new0 (gsize, (first_set + num_set + 7) / 8);
-
-               for (i = first_set; i < first_set + num_set; ++i)
-                       bitmap [i / GC_BITS_PER_WORD] |= ((gsize)1 << (i % GC_BITS_PER_WORD));
-
-               *numbits = first_set + num_set;
-
-               return bitmap;
-       }
-
-       case DESC_TYPE_BITMAP: {
-               gsize bmap = (d >> LOW_TYPE_BITS) << OBJECT_HEADER_WORDS;
-
-               bitmap = g_new0 (gsize, 1);
-               bitmap [0] = bmap;
-               *numbits = 0;
-               while (bmap) {
-                       (*numbits) ++;
-                       bmap >>= 1;
-               }
-               return bitmap;
-       }
-
-       case DESC_TYPE_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor (d);
-               int bwords = (int)(*bitmap_data) - 1;//Max scalar object size is 1Mb, which means up to 32k descriptor words
-               int i;
-
-               bitmap = g_new0 (gsize, bwords);
-               *numbits = bwords * GC_BITS_PER_WORD;
-
-               for (i = 0; i < bwords; ++i) {
-                       bitmap [i] = bitmap_data [i + 1];
-               }
-
-               return bitmap;
-       }
-
-       default:
-               g_assert_not_reached ();
-       }
-}
-
-void*
-mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
-{
-       if (numbits == 0) {
-               return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, 0);
-       } else if (numbits < ((sizeof (*bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) {
-               return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, bitmap [0]);
-       } else {
-               mword complex = alloc_complex_descriptor (bitmap, numbits);
-               return (void*)MAKE_ROOT_DESC (ROOT_DESC_COMPLEX, complex);
-       }
-}
-
-void*
-mono_gc_make_root_descr_all_refs (int numbits)
-{
-       gsize *gc_bitmap;
-       void *descr;
-       int num_bytes = numbits / 8;
-
-       if (numbits < 32 && all_ref_root_descrs [numbits])
-               return all_ref_root_descrs [numbits];
-
-       gc_bitmap = g_malloc0 (ALIGN_TO (ALIGN_TO (numbits, 8) + 1, sizeof (gsize)));
-       memset (gc_bitmap, 0xff, num_bytes);
-       if (numbits < ((sizeof (*gc_bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) 
-               gc_bitmap[0] = GUINT64_TO_LE(gc_bitmap[0]);
-       else if (numbits && num_bytes % (sizeof (*gc_bitmap)))
-               gc_bitmap[num_bytes / 8] = GUINT64_TO_LE(gc_bitmap [num_bytes / 8]);
-       if (numbits % 8)
-               gc_bitmap [numbits / 8] = (1 << (numbits % 8)) - 1;
-       descr = mono_gc_make_descr_from_bitmap (gc_bitmap, numbits);
-       g_free (gc_bitmap);
-
-       if (numbits < 32)
-               all_ref_root_descrs [numbits] = descr;
-
-       return descr;
-}
-
-void*
-mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker)
-{
-       void *descr;
-
-       g_assert (user_descriptors_next < MAX_USER_DESCRIPTORS);
-       descr = (void*)MAKE_ROOT_DESC (ROOT_DESC_USER, (mword)user_descriptors_next);
-       user_descriptors [user_descriptors_next ++] = marker;
-
-       return descr;
-}
-
-void*
-sgen_get_complex_descriptor_bitmap (mword desc)
-{
-       return complex_descriptors + (desc >> ROOT_DESC_TYPE_SHIFT);
-}
-
-MonoGCRootMarkFunc
-sgen_get_user_descriptor_func (mword desc)
-{
-       return user_descriptors [desc >> ROOT_DESC_TYPE_SHIFT];
-}
-
-#ifdef HEAVY_STATISTICS
-void
-sgen_descriptor_count_scanned_object (mword desc)
-{
-       int type = desc & DESC_TYPE_MASK;
-       SGEN_ASSERT (0, type, "Descriptor type can't be zero");
-       ++stat_scanned_count_per_descriptor [type - 1];
-}
-
-void
-sgen_descriptor_count_copied_object (mword desc)
-{
-       int type = desc & DESC_TYPE_MASK;
-       SGEN_ASSERT (0, type, "Descriptor type can't be zero");
-       ++stat_copied_count_per_descriptor [type - 1];
-}
-#endif
-
-void
-sgen_init_descriptors (void)
-{
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("# scanned RUN_LENGTH", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_RUN_LENGTH - 1]);
-       mono_counters_register ("# scanned SMALL_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_SMALL_PTRFREE - 1]);
-       mono_counters_register ("# scanned COMPLEX", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_COMPLEX - 1]);
-       mono_counters_register ("# scanned VECTOR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_VECTOR - 1]);
-       mono_counters_register ("# scanned BITMAP", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_BITMAP - 1]);
-       mono_counters_register ("# scanned COMPLEX_ARR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_COMPLEX_ARR - 1]);
-       mono_counters_register ("# scanned COMPLEX_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_COMPLEX_PTRFREE - 1]);
-
-       mono_counters_register ("# copied RUN_LENGTH", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_RUN_LENGTH - 1]);
-       mono_counters_register ("# copied SMALL_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_SMALL_PTRFREE - 1]);
-       mono_counters_register ("# copied COMPLEX", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_COMPLEX - 1]);
-       mono_counters_register ("# copied VECTOR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_VECTOR - 1]);
-       mono_counters_register ("# copied BITMAP", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_BITMAP - 1]);
-       mono_counters_register ("# copied COMPLEX_ARR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_COMPLEX_ARR - 1]);
-       mono_counters_register ("# copied COMPLEX_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_COMPLEX_PTRFREE - 1]);
-#endif
-}
-
-#endif
diff --git a/mono/metadata/sgen-descriptor.h b/mono/metadata/sgen-descriptor.h
deleted file mode 100644 (file)
index cf516e5..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * sgen-descriptor.h: GC descriptors describe object layout.
-
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- *
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGEN_DESCRIPTOR_H__
-#define __MONO_SGEN_DESCRIPTOR_H__
-
-#include <mono/metadata/gc-internal.h>
-#include <mono/metadata/sgen-conf.h>
-
-
-/*
- * ######################################################################
- * ########  GC descriptors
- * ######################################################################
- * Used to quickly get the info the GC needs about an object: size and
- * where the references are held.
- */
-#define OBJECT_HEADER_WORDS (sizeof(MonoObject)/sizeof(gpointer))
-#define LOW_TYPE_BITS 3
-#define DESC_TYPE_MASK ((1 << LOW_TYPE_BITS) - 1)
-#define MAX_RUNLEN_OBJECT_SIZE 0xFFFF
-#define VECTOR_INFO_SHIFT 14
-#define VECTOR_KIND_SHIFT 13
-#define VECTOR_ELSIZE_SHIFT 3
-#define VECTOR_BITMAP_SHIFT 16
-#define VECTOR_BITMAP_SIZE (GC_BITS_PER_WORD - VECTOR_BITMAP_SHIFT)
-#define BITMAP_NUM_BITS (GC_BITS_PER_WORD - LOW_TYPE_BITS)
-#define MAX_ELEMENT_SIZE 0x3ff
-#define VECTOR_SUBTYPE_PTRFREE (DESC_TYPE_V_PTRFREE << VECTOR_INFO_SHIFT)
-#define VECTOR_SUBTYPE_REFS    (DESC_TYPE_V_REFS << VECTOR_INFO_SHIFT)
-#define VECTOR_SUBTYPE_BITMAP  (DESC_TYPE_V_BITMAP << VECTOR_INFO_SHIFT)
-
-#define VECTOR_KIND_SZARRAY  (DESC_TYPE_V_SZARRAY << VECTOR_KIND_SHIFT)
-#define VECTOR_KIND_ARRAY  (DESC_TYPE_V_ARRAY << VECTOR_KIND_SHIFT)
-
-/*
- * Objects are aligned to 8 bytes boundaries.
- *
- * A descriptor is a pointer in MonoVTable, so 32 or 64 bits of size.
- * The low 3 bits define the type of the descriptor. The other bits
- * depend on the type.
- *
- * It's important to be able to quickly identify two properties of classes from their
- * descriptors: whether they are small enough to live in the regular major heap (size <=
- * SGEN_MAX_SMALL_OBJ_SIZE), and whether they contain references.
- *
- * To that end we have three descriptor types that only apply to small classes: RUN_LENGTH,
- * BITMAP, and SMALL_PTRFREE.  We also have the type COMPLEX_PTRFREE, which applies to
- * classes that are either not small or of unknown size (those being strings and arrays).
- * The lowest two bits of the SMALL_PTRFREE and COMPLEX_PTRFREE tags are the same, so we can
- * quickly check for references.
- *
- * As a general rule the 13 remaining low bits define the size, either
- * of the whole object or of the elements in the arrays. While for objects
- * the size is already in bytes, for arrays we need to shift, because
- * array elements might be smaller than 8 bytes. In case of arrays, we
- * use two bits to describe what the additional high bits represents,
- * so the default behaviour can handle element sizes less than 2048 bytes.
- * The high 16 bits, if 0 it means the object is pointer-free.
- * This design should make it easy and fast to skip over ptr-free data.
- * The first 4 types should cover >95% of the objects.
- * Note that since the size of objects is limited to 64K, larger objects
- * will be allocated in the large object heap.
- * If we want 4-bytes alignment, we need to put vector and small bitmap
- * inside complex.
- *
- * We don't use 0 so that 0 isn't a valid GC descriptor.  No deep reason for this other than
- * to be able to identify a non-inited descriptor for debugging.
- */
-enum {
-       /* Keep in sync with `descriptor_types` in sgen-debug.c! */
-       DESC_TYPE_RUN_LENGTH = 1,   /* 16 bits aligned byte size | 1-3 (offset, numptr) bytes tuples */
-       DESC_TYPE_BITMAP = 2,       /* | 29-61 bitmap bits */
-       DESC_TYPE_SMALL_PTRFREE = 3,
-       DESC_TYPE_MAX_SMALL_OBJ = 3,
-       DESC_TYPE_COMPLEX = 4,      /* index for bitmap into complex_descriptors */
-       DESC_TYPE_VECTOR = 5,       /* 10 bits element size | 1 bit kind | 2 bits desc | element desc */
-       DESC_TYPE_COMPLEX_ARR = 6,  /* index for bitmap into complex_descriptors */
-       DESC_TYPE_COMPLEX_PTRFREE = 7, /* Nothing, used to encode large ptr objects and strings. */
-       DESC_TYPE_MAX = 7,
-
-       DESC_TYPE_PTRFREE_MASK = 3,
-       DESC_TYPE_PTRFREE_BITS = 3
-};
-
-/* values for array kind */
-enum {
-       DESC_TYPE_V_SZARRAY = 0, /*vector with no bounds data */
-       DESC_TYPE_V_ARRAY = 1, /* array with bounds data */
-};
-
-/* subtypes for arrays and vectors */
-enum {
-       DESC_TYPE_V_PTRFREE = 0,/* there are no refs: keep first so it has a zero value  */
-       DESC_TYPE_V_REFS,       /* all the array elements are refs */
-       DESC_TYPE_V_RUN_LEN,    /* elements are run-length encoded as DESC_TYPE_RUN_LENGTH */
-       DESC_TYPE_V_BITMAP      /* elements are as the bitmap in DESC_TYPE_SMALL_BITMAP */
-};
-
-#define SGEN_DESC_STRING       (DESC_TYPE_COMPLEX_PTRFREE | (1 << LOW_TYPE_BITS))
-
-/* Root bitmap descriptors are simpler: the lower three bits describe the type
- * and we either have 30/62 bitmap bits or nibble-based run-length,
- * or a complex descriptor, or a user defined marker function.
- */
-enum {
-       ROOT_DESC_CONSERVATIVE, /* 0, so matches NULL value */
-       ROOT_DESC_BITMAP,
-       ROOT_DESC_RUN_LEN, 
-       ROOT_DESC_COMPLEX,
-       ROOT_DESC_USER,
-       ROOT_DESC_TYPE_MASK = 0x7,
-       ROOT_DESC_TYPE_SHIFT = 3,
-};
-
-gsize* sgen_get_complex_descriptor (mword desc);
-void* sgen_get_complex_descriptor_bitmap (mword desc);
-MonoGCRootMarkFunc sgen_get_user_descriptor_func (mword desc);
-
-void sgen_init_descriptors (void);
-
-#ifdef HEAVY_STATISTICS
-void sgen_descriptor_count_scanned_object (mword desc);
-void sgen_descriptor_count_copied_object (mword desc);
-#endif
-
-static inline gboolean
-sgen_gc_descr_has_references (mword desc)
-{
-       /* This covers SMALL_PTRFREE and COMPLEX_PTRFREE */
-       if ((desc & DESC_TYPE_PTRFREE_MASK) == DESC_TYPE_PTRFREE_BITS)
-               return FALSE;
-
-       /*The array is ptr-free*/
-       if ((desc & 0xC007) == (DESC_TYPE_VECTOR | VECTOR_SUBTYPE_PTRFREE))
-               return FALSE;
-
-       return TRUE;
-}
-
-#define SGEN_VTABLE_HAS_REFERENCES(vt) (sgen_gc_descr_has_references ((mword)((MonoVTable*)(vt))->gc_descr))
-#define SGEN_CLASS_HAS_REFERENCES(c)   (sgen_gc_descr_has_references ((mword)(c)->gc_descr))
-#define SGEN_OBJECT_HAS_REFERENCES(o)  (SGEN_VTABLE_HAS_REFERENCES (SGEN_LOAD_VTABLE ((o))))
-
-/* helper macros to scan and traverse objects, macros because we resue them in many functions */
-#ifdef __GNUC__
-#define PREFETCH_READ(addr)    __builtin_prefetch ((addr), 0, 1)
-#define PREFETCH_WRITE(addr)   __builtin_prefetch ((addr), 1, 1)
-#else
-#define PREFETCH_READ(addr)
-#define PREFETCH_WRITE(addr)
-#endif
-
-#if defined(__GNUC__) && SIZEOF_VOID_P==4
-#define GNUC_BUILTIN_CTZ(bmap) __builtin_ctz(bmap)
-#elif defined(__GNUC__) && SIZEOF_VOID_P==8
-#define GNUC_BUILTIN_CTZ(bmap) __builtin_ctzl(bmap)
-#endif
-
-/* code using these macros must define a HANDLE_PTR(ptr) macro that does the work */
-#define OBJ_RUN_LEN_FOREACH_PTR(desc,obj)      do {    \
-               if ((desc) & 0xffff0000) {      \
-                       /* there are pointers */        \
-                       void **_objptr_end;     \
-                       void **_objptr = (void**)(obj); \
-                       _objptr += ((desc) >> 16) & 0xff;       \
-                       _objptr_end = _objptr + (((desc) >> 24) & 0xff);        \
-                       while (_objptr < _objptr_end) { \
-                               HANDLE_PTR (_objptr, (obj));    \
-                               _objptr++;      \
-                       };      \
-               }       \
-       } while (0)
-
-/* a bitmap desc means that there are pointer references or we'd have
- * choosen run-length, instead: add an assert to check.
- */
-#ifdef __GNUC__
-#define OBJ_BITMAP_FOREACH_PTR(desc,obj)       do {            \
-               /* there are pointers */                        \
-               void **_objptr = (void**)(obj);                 \
-               gsize _bmap = (desc) >> LOW_TYPE_BITS;          \
-               _objptr += OBJECT_HEADER_WORDS;                 \
-               do {                                            \
-                       int _index = GNUC_BUILTIN_CTZ (_bmap);  \
-                       _objptr += _index;                      \
-                       _bmap >>= (_index + 1);                 \
-                       HANDLE_PTR (_objptr, (obj));            \
-                       ++_objptr;                              \
-               } while (_bmap);                                \
-       } while (0)
-#else
-#define OBJ_BITMAP_FOREACH_PTR(desc,obj)       do {    \
-               /* there are pointers */        \
-               void **_objptr = (void**)(obj); \
-               gsize _bmap = (desc) >> LOW_TYPE_BITS;  \
-               _objptr += OBJECT_HEADER_WORDS; \
-               do {    \
-                       if ((_bmap & 1)) {      \
-                               HANDLE_PTR (_objptr, (obj));    \
-                       }       \
-                       _bmap >>= 1;    \
-                       ++_objptr;      \
-               } while (_bmap);        \
-       } while (0)
-#endif
-
-#define OBJ_COMPLEX_FOREACH_PTR(vt,obj)        do {    \
-               /* there are pointers */        \
-               void **_objptr = (void**)(obj); \
-               gsize *bitmap_data = sgen_get_complex_descriptor ((desc)); \
-               gsize bwords = (*bitmap_data) - 1;      \
-               void **start_run = _objptr;     \
-               bitmap_data++;  \
-               if (0) {        \
-                       MonoObject *myobj = (MonoObject*)obj;   \
-                       g_print ("found %d at %p (0x%zx): %s.%s\n", bwords, (obj), (desc), myobj->vtable->klass->name_space, myobj->vtable->klass->name); \
-               }       \
-               while (bwords-- > 0) {  \
-                       gsize _bmap = *bitmap_data++;   \
-                       _objptr = start_run;    \
-                       /*g_print ("bitmap: 0x%x/%d at %p\n", _bmap, bwords, _objptr);*/        \
-                       while (_bmap) { \
-                               if ((_bmap & 1)) {      \
-                                       HANDLE_PTR (_objptr, (obj));    \
-                               }       \
-                               _bmap >>= 1;    \
-                               ++_objptr;      \
-                       }       \
-                       start_run += GC_BITS_PER_WORD;  \
-               }       \
-       } while (0)
-
-/* this one is untested */
-#define OBJ_COMPLEX_ARR_FOREACH_PTR(desc,obj)  do {    \
-               /* there are pointers */        \
-               GCVTable *vt = (GCVTable*)SGEN_LOAD_VTABLE (obj); \
-               gsize *mbitmap_data = sgen_get_complex_descriptor ((desc)); \
-               gsize mbwords = (*mbitmap_data++) - 1;  \
-               gsize el_size = mono_array_element_size (vt->klass);    \
-               char *e_start = (char*)(obj) +  G_STRUCT_OFFSET (MonoArray, vector);    \
-               char *e_end = e_start + el_size * mono_array_length_fast ((MonoArray*)(obj));   \
-               if (0)                                                  \
-                        g_print ("found %d at %p (0x%zx): %s.%s\n", mbwords, (obj), (desc), (vt)->klass->name_space, (vt)->klass->name); \
-               while (e_start < e_end) {       \
-                       void **_objptr = (void**)e_start;       \
-                       gsize *bitmap_data = mbitmap_data;      \
-                       gsize bwords = mbwords; \
-                       while (bwords-- > 0) {  \
-                               gsize _bmap = *bitmap_data++;   \
-                               void **start_run = _objptr;     \
-                               /*g_print ("bitmap: 0x%x\n", _bmap);*/  \
-                               while (_bmap) { \
-                                       if ((_bmap & 1)) {      \
-                                               HANDLE_PTR (_objptr, (obj));    \
-                                       }       \
-                                       _bmap >>= 1;    \
-                                       ++_objptr;      \
-                               }       \
-                               _objptr = start_run + GC_BITS_PER_WORD; \
-                       }       \
-                       e_start += el_size;     \
-               }       \
-       } while (0)
-
-#define OBJ_VECTOR_FOREACH_PTR(desc,obj)       do {    \
-               /* note: 0xffffc000 excludes DESC_TYPE_V_PTRFREE */     \
-               if ((desc) & 0xffffc000) {                              \
-                       int el_size = ((desc) >> 3) & MAX_ELEMENT_SIZE; \
-                       /* there are pointers */        \
-                       int etype = (desc) & 0xc000;                    \
-                       if (etype == (DESC_TYPE_V_REFS << 14)) {        \
-                               void **p = (void**)((char*)(obj) + G_STRUCT_OFFSET (MonoArray, vector));        \
-                               void **end_refs = (void**)((char*)p + el_size * mono_array_length_fast ((MonoArray*)(obj)));    \
-                               /* Note: this code can handle also arrays of struct with only references in them */     \
-                               while (p < end_refs) {  \
-                                       HANDLE_PTR (p, (obj));  \
-                                       ++p;    \
-                               }       \
-                       } else if (etype == DESC_TYPE_V_RUN_LEN << 14) {        \
-                               int offset = ((desc) >> 16) & 0xff;     \
-                               int num_refs = ((desc) >> 24) & 0xff;   \
-                               char *e_start = (char*)(obj) + G_STRUCT_OFFSET (MonoArray, vector);     \
-                               char *e_end = e_start + el_size * mono_array_length_fast ((MonoArray*)(obj));   \
-                               while (e_start < e_end) {       \
-                                       void **p = (void**)e_start;     \
-                                       int i;  \
-                                       p += offset;    \
-                                       for (i = 0; i < num_refs; ++i) {        \
-                                               HANDLE_PTR (p + i, (obj));      \
-                                       }       \
-                                       e_start += el_size;     \
-                               }       \
-                       } else if (etype == DESC_TYPE_V_BITMAP << 14) { \
-                               char *e_start = (char*)(obj) +  G_STRUCT_OFFSET (MonoArray, vector);    \
-                               char *e_end = e_start + el_size * mono_array_length_fast ((MonoArray*)(obj));   \
-                               while (e_start < e_end) {       \
-                                       void **p = (void**)e_start;     \
-                                       gsize _bmap = (desc) >> 16;     \
-                                       /* Note: there is no object header here to skip */      \
-                                       while (_bmap) { \
-                                               if ((_bmap & 1)) {      \
-                                                       HANDLE_PTR (p, (obj));  \
-                                               }       \
-                                               _bmap >>= 1;    \
-                                               ++p;    \
-                                       }       \
-                                       e_start += el_size;     \
-                               }       \
-                       }       \
-               }       \
-       } while (0)
-
-
-#endif
diff --git a/mono/metadata/sgen-fin-weak-hash.c b/mono/metadata/sgen-fin-weak-hash.c
deleted file mode 100644 (file)
index 1ae6ff6..0000000
+++ /dev/null
@@ -1,919 +0,0 @@
-/*
- * sgen-fin-weak-hash.c: Finalizers and weak links.
- *
- * Author:
- *     Paolo Molaro (lupus@ximian.com)
- *  Rodrigo Kumpera (kumpera@gmail.com)
- *
- * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright 2011 Xamarin, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-gray.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-pointer-queue.h"
-#include "utils/dtrace.h"
-#include "utils/mono-counters.h"
-
-#define ptr_in_nursery sgen_ptr_in_nursery
-
-typedef SgenGrayQueue GrayQueue;
-
-int num_ready_finalizers = 0;
-static int no_finalize = 0;
-
-#define DISLINK_OBJECT(l)      (REVEAL_POINTER (*(void**)(l)))
-#define DISLINK_TRACK(l)       ((~(size_t)(*(void**)(l))) & 1)
-
-/*
- * The finalizable hash has the object as the key, the 
- * disappearing_link hash, has the link address as key.
- *
- * Copyright 2011 Xamarin Inc.
- */
-
-#define TAG_MASK ((mword)0x1)
-
-static inline MonoObject*
-tagged_object_get_object (MonoObject *object)
-{
-       return (MonoObject*)(((mword)object) & ~TAG_MASK);
-}
-
-static inline int
-tagged_object_get_tag (MonoObject *object)
-{
-       return ((mword)object) & TAG_MASK;
-}
-
-static inline MonoObject*
-tagged_object_apply (void *object, int tag_bits)
-{
-       return (MonoObject*)((mword)object | (mword)tag_bits);
-}
-
-static int
-tagged_object_hash (MonoObject *o)
-{
-       return mono_aligned_addr_hash (tagged_object_get_object (o));
-}
-
-static gboolean
-tagged_object_equals (MonoObject *a, MonoObject *b)
-{
-       return tagged_object_get_object (a) == tagged_object_get_object (b);
-}
-
-static SgenHashTable minor_finalizable_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_FIN_TABLE, INTERNAL_MEM_FINALIZE_ENTRY, 0, (GHashFunc)tagged_object_hash, (GEqualFunc)tagged_object_equals);
-static SgenHashTable major_finalizable_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_FIN_TABLE, INTERNAL_MEM_FINALIZE_ENTRY, 0, (GHashFunc)tagged_object_hash, (GEqualFunc)tagged_object_equals);
-
-static SgenHashTable*
-get_finalize_entry_hash_table (int generation)
-{
-       switch (generation) {
-       case GENERATION_NURSERY: return &minor_finalizable_hash;
-       case GENERATION_OLD: return &major_finalizable_hash;
-       default: g_assert_not_reached ();
-       }
-}
-
-#define BRIDGE_OBJECT_MARKED 0x1
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_mark_bridge_object (MonoObject *obj)
-{
-       SgenHashTable *hash_table = get_finalize_entry_hash_table (ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD);
-
-       sgen_hash_table_set_key (hash_table, obj, tagged_object_apply (obj, BRIDGE_OBJECT_MARKED));
-}
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_collect_bridge_objects (int generation, ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       GrayQueue *queue = ctx.queue;
-       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
-       MonoObject *object;
-       gpointer dummy G_GNUC_UNUSED;
-       char *copy;
-       SgenPointerQueue moved_fin_objects;
-
-       sgen_pointer_queue_init (&moved_fin_objects, INTERNAL_MEM_TEMPORARY);
-
-       if (no_finalize)
-               return;
-
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
-               int tag = tagged_object_get_tag (object);
-               object = tagged_object_get_object (object);
-
-               /* Bridge code told us to ignore this one */
-               if (tag == BRIDGE_OBJECT_MARKED)
-                       continue;
-
-               /* Object is a bridge object and major heap says it's dead  */
-               if (major_collector.is_object_live ((char*)object))
-                       continue;
-
-               /* Nursery says the object is dead. */
-               if (!sgen_gc_is_object_ready_for_finalization (object))
-                       continue;
-
-               if (!sgen_is_bridge_object (object))
-                       continue;
-
-               copy = (char*)object;
-               copy_func ((void**)&copy, queue);
-
-               sgen_bridge_register_finalized_object ((MonoObject*)copy);
-               
-               if (hash_table == &minor_finalizable_hash && !ptr_in_nursery (copy)) {
-                       /* remove from the list */
-                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-
-                       /* insert it into the major hash */
-                       sgen_hash_table_replace (&major_finalizable_hash, tagged_object_apply (copy, tag), NULL, NULL);
-
-                       SGEN_LOG (5, "Promoting finalization of object %p (%s) (was at %p) to major table", copy, sgen_safe_name (copy), object);
-
-                       continue;
-               } else if (copy != (char*)object) {
-                       /* update pointer */
-                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-
-                       /* register for reinsertion */
-                       sgen_pointer_queue_add (&moved_fin_objects, tagged_object_apply (copy, tag));
-
-                       SGEN_LOG (5, "Updating object for finalization: %p (%s) (was at %p)", copy, sgen_safe_name (copy), object);
-
-                       continue;
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-
-       while (!sgen_pointer_queue_is_empty (&moved_fin_objects)) {
-               sgen_hash_table_replace (hash_table, sgen_pointer_queue_pop (&moved_fin_objects), NULL, NULL);
-       }
-
-       sgen_pointer_queue_free (&moved_fin_objects);
-}
-
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_finalize_in_range (int generation, ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       GrayQueue *queue = ctx.queue;
-       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
-       MonoObject *object;
-       gpointer dummy G_GNUC_UNUSED;
-       SgenPointerQueue moved_fin_objects;
-
-       sgen_pointer_queue_init (&moved_fin_objects, INTERNAL_MEM_TEMPORARY);
-
-       if (no_finalize)
-               return;
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
-               int tag = tagged_object_get_tag (object);
-               object = tagged_object_get_object (object);
-               if (!major_collector.is_object_live ((char*)object)) {
-                       gboolean is_fin_ready = sgen_gc_is_object_ready_for_finalization (object);
-                       MonoObject *copy = object;
-                       copy_func ((void**)&copy, queue);
-                       if (is_fin_ready) {
-                               /* remove and put in fin_ready_list */
-                               SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-                               num_ready_finalizers++;
-                               sgen_queue_finalization_entry (copy);
-                               /* Make it survive */
-                               SGEN_LOG (5, "Queueing object for finalization: %p (%s) (was at %p) (%d/%d)", copy, sgen_safe_name (copy), object, num_ready_finalizers, sgen_hash_table_num_entries (hash_table));
-                               continue;
-                       } else {
-                               if (hash_table == &minor_finalizable_hash && !ptr_in_nursery (copy)) {
-                                       /* remove from the list */
-                                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-
-                                       /* insert it into the major hash */
-                                       sgen_hash_table_replace (&major_finalizable_hash, tagged_object_apply (copy, tag), NULL, NULL);
-
-                                       SGEN_LOG (5, "Promoting finalization of object %p (%s) (was at %p) to major table", copy, sgen_safe_name (copy), object);
-
-                                       continue;
-                               } else if (copy != object) {
-                                       /* update pointer */
-                                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-
-                                       /* register for reinsertion */
-                                       sgen_pointer_queue_add (&moved_fin_objects, tagged_object_apply (copy, tag));
-
-                                       SGEN_LOG (5, "Updating object for finalization: %p (%s) (was at %p)", copy, sgen_safe_name (copy), object);
-
-                                       continue;
-                               }
-                       }
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-
-       while (!sgen_pointer_queue_is_empty (&moved_fin_objects)) {
-               sgen_hash_table_replace (hash_table, sgen_pointer_queue_pop (&moved_fin_objects), NULL, NULL);
-       }
-
-       sgen_pointer_queue_free (&moved_fin_objects);
-}
-
-/* LOCKING: requires that the GC lock is held */
-static void
-register_for_finalization (MonoObject *obj, void *user_data, int generation)
-{
-       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
-
-       if (no_finalize)
-               return;
-
-       g_assert (user_data == NULL || user_data == mono_gc_run_finalize);
-
-       if (user_data) {
-               if (sgen_hash_table_replace (hash_table, obj, NULL, NULL))
-                       SGEN_LOG (5, "Added finalizer for object: %p (%s) (%d) to %s table", obj, obj->vtable->klass->name, hash_table->num_entries, sgen_generation_name (generation));
-       } else {
-               if (sgen_hash_table_remove (hash_table, obj, NULL))
-                       SGEN_LOG (5, "Removed finalizer for object: %p (%s) (%d)", obj, obj->vtable->klass->name, hash_table->num_entries);
-       }
-}
-
-/*
- * We're using (mostly) non-locking staging queues for finalizers and weak links to speed
- * up registering them.  Otherwise we'd have to take the GC lock.
- *
- * The queues are arrays of `StageEntry`, plus a `next_entry` index.  Threads add entries to
- * the queue via `add_stage_entry()` in a linear fashion until it fills up, in which case
- * `process_stage_entries()` is called to drain it.  A garbage collection will also drain
- * the queues via the same function.  That implies that `add_stage_entry()`, since it
- * doesn't take a lock, must be able to run concurrently with `process_stage_entries()`,
- * though it doesn't have to make progress while the queue is drained.  In fact, once it
- * detects that the queue is being drained, it blocks until the draining is done.
- *
- * The protocol must guarantee that entries in the queue are causally ordered, otherwise two
- * entries for the same location might get switched, resulting in the earlier one being
- * committed and the later one ignored.
- *
- * `next_entry` is the index of the next entry to be filled, or `-1` if the queue is
- * currently being drained.  Each entry has a state:
- *
- * `STAGE_ENTRY_FREE`: The entry is free.  Its data fields must be `NULL`.
- *
- * `STAGE_ENTRY_BUSY`: The entry is currently being filled in.
- *
- * `STAGE_ENTRY_USED`: The entry is completely filled in and must be processed in the next
- * draining round.
- *
- * `STAGE_ENTRY_INVALID`: The entry was busy during queue draining and therefore
- * invalidated.  Entries that are `BUSY` can obviously not be processed during a drain, but
- * we can't leave them in place because new entries might be inserted before them, including
- * from the same thread, violating causality.  An alternative would be not to reset
- * `next_entry` to `0` after a drain, but to the index of the last `BUSY` entry plus one,
- * but that can potentially waste the whole queue.
- *
- * State transitions:
- *
- * | from    | to      | filler? | drainer? |
- * +---------+---------+---------+----------+
- * | FREE    | BUSY    | X       |          |
- * | BUSY    | FREE    | X       |          |
- * | BUSY    | USED    | X       |          |
- * | BUSY    | INVALID |         | X        |
- * | USED    | FREE    |         | X        |
- * | INVALID | FREE    | X       |          |
- *
- * `next_entry` can be incremented either by the filler thread that set the corresponding
- * entry to `BUSY`, or by another filler thread that's trying to get a `FREE` slot.  If that
- * other thread wasn't allowed to increment, it would block on the first filler thread.
- *
- * An entry's state, once it's set from `FREE` to `BUSY` by a filler thread, can only be
- * changed by that same thread or by the drained.  The drainer can only set a `BUSY` thread
- * to `INVALID`, so it needs to be set to `FREE` again by the original filler thread.
- */
-
-#define STAGE_ENTRY_FREE       0
-#define STAGE_ENTRY_BUSY       1
-#define STAGE_ENTRY_USED       2
-#define STAGE_ENTRY_INVALID    3
-
-typedef struct {
-       volatile gint32 state;
-       MonoObject *obj;
-       void *user_data;
-} StageEntry;
-
-#define NUM_FIN_STAGE_ENTRIES  1024
-
-static volatile gint32 next_fin_stage_entry = 0;
-static StageEntry fin_stage_entries [NUM_FIN_STAGE_ENTRIES];
-
-/*
- * This is used to lock the stage when processing is forced, i.e. when it's triggered by a
- * garbage collection.  In that case, the world is already stopped and there's only one
- * thread operating on the queue.
- */
-static void
-lock_stage_for_processing (volatile gint32 *next_entry)
-{
-       *next_entry = -1;
-}
-
-/*
- * When processing is triggered by an overflow, we don't want to take the GC lock
- * immediately, and then set `next_index` to `-1`, because another thread might have drained
- * the queue in the mean time.  Instead, we make sure the overflow is still there, we
- * atomically set `next_index`, and only once that happened do we take the GC lock.
- */
-static gboolean
-try_lock_stage_for_processing (int num_entries, volatile gint32 *next_entry)
-{
-       gint32 old = *next_entry;
-       if (old < num_entries)
-               return FALSE;
-       return InterlockedCompareExchange (next_entry, -1, old) == old;
-}
-
-/* LOCKING: requires that the GC lock is held */
-static void
-process_stage_entries (int num_entries, volatile gint32 *next_entry, StageEntry *entries, void (*process_func) (MonoObject*, void*, int))
-{
-       int i;
-
-       /*
-        * This can happen if after setting `next_index` to `-1` in
-        * `try_lock_stage_for_processing()`, a GC was triggered, which then drained the
-        * queue and reset `next_entry`.
-        *
-        * We have the GC lock now, so if it's still `-1`, we can't be interrupted by a GC.
-        */
-       if (*next_entry != -1)
-               return;
-
-       for (i = 0; i < num_entries; ++i) {
-               gint32 state;
-
-       retry:
-               state = entries [i].state;
-
-               switch (state) {
-               case STAGE_ENTRY_FREE:
-               case STAGE_ENTRY_INVALID:
-                       continue;
-               case STAGE_ENTRY_BUSY:
-                       /* BUSY -> INVALID */
-                       /*
-                        * This must be done atomically, because the filler thread can set
-                        * the entry to `USED`, in which case we must process it, so we must
-                        * detect that eventuality.
-                        */
-                       if (InterlockedCompareExchange (&entries [i].state, STAGE_ENTRY_INVALID, STAGE_ENTRY_BUSY) != STAGE_ENTRY_BUSY)
-                               goto retry;
-                       continue;
-               case STAGE_ENTRY_USED:
-                       break;
-               default:
-                       SGEN_ASSERT (0, FALSE, "Invalid stage entry state");
-                       break;
-               }
-
-               /* state is USED */
-
-               process_func (entries [i].obj, entries [i].user_data, i);
-
-               entries [i].obj = NULL;
-               entries [i].user_data = NULL;
-
-               mono_memory_write_barrier ();
-
-               /* USED -> FREE */
-               /*
-                * This transition only happens here, so we don't have to do it atomically.
-                */
-               entries [i].state = STAGE_ENTRY_FREE;
-       }
-
-       mono_memory_write_barrier ();
-
-       *next_entry = 0;
-}
-
-#ifdef HEAVY_STATISTICS
-static guint64 stat_overflow_abort = 0;
-static guint64 stat_wait_for_processing = 0;
-static guint64 stat_increment_other_thread = 0;
-static guint64 stat_index_decremented = 0;
-static guint64 stat_entry_invalidated = 0;
-static guint64 stat_success = 0;
-#endif
-
-static int
-add_stage_entry (int num_entries, volatile gint32 *next_entry, StageEntry *entries, MonoObject *obj, void *user_data)
-{
-       gint32 index, new_next_entry, old_next_entry;
-       gint32 previous_state;
-
- retry:
-       for (;;) {
-               index = *next_entry;
-               if (index >= num_entries) {
-                       HEAVY_STAT (++stat_overflow_abort);
-                       return -1;
-               }
-               if (index < 0) {
-                       /*
-                        * Backed-off waiting is way more efficient than even using a
-                        * dedicated lock for this.
-                        */
-                       while ((index = *next_entry) < 0) {
-                               /*
-                                * This seems like a good value.  Determined by timing
-                                * sgen-weakref-stress.exe.
-                                */
-                               g_usleep (200);
-                               HEAVY_STAT (++stat_wait_for_processing);
-                       }
-                       continue;
-               }
-               /* FREE -> BUSY */
-               if (entries [index].state != STAGE_ENTRY_FREE ||
-                               InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_FREE) != STAGE_ENTRY_FREE) {
-                       /*
-                        * If we can't get the entry it must be because another thread got
-                        * it first.  We don't want to wait for that thread to increment
-                        * `next_entry`, so we try to do it ourselves.  Whether we succeed
-                        * or not, we start over.
-                        */
-                       if (*next_entry == index) {
-                               InterlockedCompareExchange (next_entry, index + 1, index);
-                               //g_print ("tried increment for other thread\n");
-                               HEAVY_STAT (++stat_increment_other_thread);
-                       }
-                       continue;
-               }
-               /* state is BUSY now */
-               mono_memory_write_barrier ();
-               /*
-                * Incrementing `next_entry` must happen after setting the state to `BUSY`.
-                * If it were the other way around, it would be possible that after a filler
-                * incremented the index, other threads fill up the queue, the queue is
-                * drained, the original filler finally fills in the slot, but `next_entry`
-                * ends up at the start of the queue, and new entries are written in the
-                * queue in front of, not behind, the original filler's entry.
-                *
-                * We don't actually require that the CAS succeeds, but we do require that
-                * the value of `next_entry` is not lower than our index.  Since the drainer
-                * sets it to `-1`, that also takes care of the case that the drainer is
-                * currently running.
-                */
-               old_next_entry = InterlockedCompareExchange (next_entry, index + 1, index);
-               if (old_next_entry < index) {
-                       /* BUSY -> FREE */
-                       /* INVALID -> FREE */
-                       /*
-                        * The state might still be `BUSY`, or the drainer could have set it
-                        * to `INVALID`.  In either case, there's no point in CASing.  Set
-                        * it to `FREE` and start over.
-                        */
-                       entries [index].state = STAGE_ENTRY_FREE;
-                       HEAVY_STAT (++stat_index_decremented);
-                       continue;
-               }
-               break;
-       }
-
-       SGEN_ASSERT (0, index >= 0 && index < num_entries, "Invalid index");
-
-       entries [index].obj = obj;
-       entries [index].user_data = user_data;
-
-       mono_memory_write_barrier ();
-
-       new_next_entry = *next_entry;
-       mono_memory_read_barrier ();
-       /* BUSY -> USED */
-       /*
-        * A `BUSY` entry will either still be `BUSY` or the drainer will have set it to
-        * `INVALID`.  In the former case, we set it to `USED` and we're finished.  In the
-        * latter case, we reset it to `FREE` and start over.
-        */
-       previous_state = InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_USED, STAGE_ENTRY_BUSY);
-       if (previous_state == STAGE_ENTRY_BUSY) {
-               SGEN_ASSERT (0, new_next_entry >= index || new_next_entry < 0, "Invalid next entry index - as long as we're busy, other thread can only increment or invalidate it");
-               HEAVY_STAT (++stat_success);
-               return index;
-       }
-
-       SGEN_ASSERT (0, previous_state == STAGE_ENTRY_INVALID, "Invalid state transition - other thread can only make busy state invalid");
-       entries [index].obj = NULL;
-       entries [index].user_data = NULL;
-       mono_memory_write_barrier ();
-       /* INVALID -> FREE */
-       entries [index].state = STAGE_ENTRY_FREE;
-
-       HEAVY_STAT (++stat_entry_invalidated);
-
-       goto retry;
-}
-
-/* LOCKING: requires that the GC lock is held */
-static void
-process_fin_stage_entry (MonoObject *obj, void *user_data, int index)
-{
-       if (ptr_in_nursery (obj))
-               register_for_finalization (obj, user_data, GENERATION_NURSERY);
-       else
-               register_for_finalization (obj, user_data, GENERATION_OLD);
-}
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_process_fin_stage_entries (void)
-{
-       lock_stage_for_processing (&next_fin_stage_entry);
-       process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
-}
-
-void
-mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
-{
-       while (add_stage_entry (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, obj, user_data) == -1) {
-               if (try_lock_stage_for_processing (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry)) {
-                       LOCK_GC;
-                       process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
-                       UNLOCK_GC;
-               }
-       }
-}
-
-/* LOCKING: requires that the GC lock is held */
-static int
-finalizers_for_domain (MonoDomain *domain, MonoObject **out_array, int out_size,
-       SgenHashTable *hash_table)
-{
-       MonoObject *object;
-       gpointer dummy G_GNUC_UNUSED;
-       int count;
-
-       if (no_finalize || !out_size || !out_array)
-               return 0;
-       count = 0;
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
-               object = tagged_object_get_object (object);
-
-               if (mono_object_domain (object) == domain) {
-                       /* remove and put in out_array */
-                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-                       out_array [count ++] = object;
-                       SGEN_LOG (5, "Collecting object for finalization: %p (%s) (%d/%d)", object, sgen_safe_name (object), num_ready_finalizers, sgen_hash_table_num_entries (hash_table));
-                       if (count == out_size)
-                               return count;
-                       continue;
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-       return count;
-}
-
-/**
- * mono_gc_finalizers_for_domain:
- * @domain: the unloading appdomain
- * @out_array: output array
- * @out_size: size of output array
- *
- * Store inside @out_array up to @out_size objects that belong to the unloading
- * appdomain @domain. Returns the number of stored items. Can be called repeteadly
- * until it returns 0.
- * The items are removed from the finalizer data structure, so the caller is supposed
- * to finalize them.
- * @out_array should be on the stack to allow the GC to know the objects are still alive.
- */
-int
-mono_gc_finalizers_for_domain (MonoDomain *domain, MonoObject **out_array, int out_size)
-{
-       int result;
-
-       LOCK_GC;
-       sgen_process_fin_stage_entries ();
-       result = finalizers_for_domain (domain, out_array, out_size, &minor_finalizable_hash);
-       if (result < out_size) {
-               result += finalizers_for_domain (domain, out_array + result, out_size - result,
-                       &major_finalizable_hash);
-       }
-       UNLOCK_GC;
-
-       return result;
-}
-
-static SgenHashTable minor_disappearing_link_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_DISLINK_TABLE, INTERNAL_MEM_DISLINK, 0, mono_aligned_addr_hash, NULL);
-static SgenHashTable major_disappearing_link_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_DISLINK_TABLE, INTERNAL_MEM_DISLINK, 0, mono_aligned_addr_hash, NULL);
-
-static SgenHashTable*
-get_dislink_hash_table (int generation)
-{
-       switch (generation) {
-       case GENERATION_NURSERY: return &minor_disappearing_link_hash;
-       case GENERATION_OLD: return &major_disappearing_link_hash;
-       default: g_assert_not_reached ();
-       }
-}
-
-/* LOCKING: assumes the GC lock is held */
-static void
-add_or_remove_disappearing_link (MonoObject *obj, void **link, int generation)
-{
-       SgenHashTable *hash_table = get_dislink_hash_table (generation);
-
-       if (!obj) {
-               if (sgen_hash_table_remove (hash_table, link, NULL)) {
-                       SGEN_LOG (5, "Removed dislink %p (%d) from %s table",
-                                       link, hash_table->num_entries, sgen_generation_name (generation));
-               }
-               return;
-       }
-
-       sgen_hash_table_replace (hash_table, link, NULL, NULL);
-       SGEN_LOG (5, "Added dislink for object: %p (%s) at %p to %s table",
-                       obj, obj->vtable->klass->name, link, sgen_generation_name (generation));
-}
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       GrayQueue *queue = ctx.queue;
-       void **link;
-       gpointer dummy G_GNUC_UNUSED;
-       SgenHashTable *hash = get_dislink_hash_table (generation);
-
-       SGEN_HASH_TABLE_FOREACH (hash, link, dummy) {
-               char *object;
-               gboolean track;
-
-               /*
-               We null a weak link before unregistering it, so it's possible that a thread is
-               suspended right in between setting the content to null and staging the unregister.
-
-               The rest of this code cannot handle null links as DISLINK_OBJECT (NULL) produces an invalid address.
-
-               We should simply skip the entry as the staged removal will take place during the next GC.
-               */
-               if (!*link) {
-                       SGEN_LOG (5, "Dislink %p was externally nullified", link);
-                       continue;
-               }
-
-               track = DISLINK_TRACK (link);
-               /*
-                * Tracked references are processed after
-                * finalization handling whereas standard weak
-                * references are processed before.  If an
-                * object is still not marked after finalization
-                * handling it means that it either doesn't have
-                * a finalizer or the finalizer has already run,
-                * so we must null a tracking reference.
-                */
-               if (track != before_finalization) {
-                       object = DISLINK_OBJECT (link);
-                       /*
-                       We should guard against a null object been hidden. This can sometimes happen.
-                       */
-                       if (!object) {
-                               SGEN_LOG (5, "Dislink %p with a hidden null object", link);
-                               continue;
-                       }
-
-                       if (!major_collector.is_object_live (object)) {
-                               if (sgen_gc_is_object_ready_for_finalization (object)) {
-                                       *link = NULL;
-                                       binary_protocol_dislink_update (link, NULL, 0, 0);
-                                       SGEN_LOG (5, "Dislink nullified at %p to GCed object %p", link, object);
-                                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-                                       continue;
-                               } else {
-                                       char *copy = object;
-                                       copy_func ((void**)&copy, queue);
-
-                                       /* Update pointer if it's moved.  If the object
-                                        * has been moved out of the nursery, we need to
-                                        * remove the link from the minor hash table to
-                                        * the major one.
-                                        *
-                                        * FIXME: what if an object is moved earlier?
-                                        */
-
-                                       if (hash == &minor_disappearing_link_hash && !ptr_in_nursery (copy)) {
-                                               SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-
-                                               g_assert (copy);
-                                               *link = HIDE_POINTER (copy, track);
-                                               add_or_remove_disappearing_link ((MonoObject*)copy, link, GENERATION_OLD);
-                                               binary_protocol_dislink_update (link, copy, track, 0);
-
-                                               SGEN_LOG (5, "Upgraded dislink at %p to major because object %p moved to %p", link, object, copy);
-
-                                               continue;
-                                       } else {
-                                               *link = HIDE_POINTER (copy, track);
-                                               binary_protocol_dislink_update (link, copy, track, 0);
-                                               SGEN_LOG (5, "Updated dislink at %p to %p", link, DISLINK_OBJECT (link));
-                                       }
-                               }
-                       }
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-}
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_null_links_for_domain (MonoDomain *domain, int generation)
-{
-       void **link;
-       gpointer dummy G_GNUC_UNUSED;
-       SgenHashTable *hash = get_dislink_hash_table (generation);
-       SGEN_HASH_TABLE_FOREACH (hash, link, dummy) {
-               char *object = DISLINK_OBJECT (link);
-
-               if (object)
-                       SGEN_ASSERT (0, ((MonoObject*)object)->vtable, "Can't have objects without vtables.");
-
-               if (*link && object && ((MonoObject*)object)->vtable->domain == domain) {
-                       *link = NULL;
-                       binary_protocol_dislink_update (link, NULL, 0, 0);
-                       /*
-                        * This can happen if finalizers are not ran, i.e. Environment.Exit ()
-                        * is called from finalizer like in finalizer-abort.cs.
-                        */
-                       SGEN_LOG (5, "Disappearing link %p not freed", link);
-
-                       /*
-                        * FIXME: Why don't we free the entry here?
-                        */
-                       SGEN_HASH_TABLE_FOREACH_REMOVE (FALSE);
-
-                       continue;
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-}
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_null_links_with_predicate (int generation, WeakLinkAlivePredicateFunc predicate, void *data)
-{
-       void **link;
-       gpointer dummy G_GNUC_UNUSED;
-       SgenHashTable *hash = get_dislink_hash_table (generation);
-       SGEN_HASH_TABLE_FOREACH (hash, link, dummy) {
-               char *object = DISLINK_OBJECT (link);
-               mono_bool is_alive;
-
-               if (!*link)
-                       continue;
-               is_alive = predicate ((MonoObject*)object, data);
-
-               if (!is_alive) {
-                       *link = NULL;
-                       binary_protocol_dislink_update (link, NULL, 0, 0);
-                       SGEN_LOG (5, "Dislink nullified by predicate at %p to GCed object %p", link, object);
-                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-                       continue;
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;
-}
-
-void
-sgen_remove_finalizers_for_domain (MonoDomain *domain, int generation)
-{
-       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
-       MonoObject *object;
-       gpointer dummy G_GNUC_UNUSED;
-
-       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
-               object = tagged_object_get_object (object);
-
-               if (mono_object_domain (object) == domain) {
-                       SGEN_LOG (5, "Unregistering finalizer for object: %p (%s)", object, sgen_safe_name (object));
-
-                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
-                       continue;
-               }
-       } SGEN_HASH_TABLE_FOREACH_END;  
-}
-
-/* LOCKING: requires that the GC lock is held */
-static void
-process_dislink_stage_entry (MonoObject *obj, void *_link, int index)
-{
-       void **link = _link;
-
-       if (index >= 0)
-               binary_protocol_dislink_process_staged (link, obj, index);
-
-       add_or_remove_disappearing_link (NULL, link, GENERATION_NURSERY);
-       add_or_remove_disappearing_link (NULL, link, GENERATION_OLD);
-       if (obj) {
-               if (ptr_in_nursery (obj))
-                       add_or_remove_disappearing_link (obj, link, GENERATION_NURSERY);
-               else
-                       add_or_remove_disappearing_link (obj, link, GENERATION_OLD);
-       }
-}
-
-#define NUM_DISLINK_STAGE_ENTRIES      1024
-
-static volatile gint32 next_dislink_stage_entry = 0;
-static StageEntry dislink_stage_entries [NUM_DISLINK_STAGE_ENTRIES];
-
-/* LOCKING: requires that the GC lock is held */
-void
-sgen_process_dislink_stage_entries (void)
-{
-       lock_stage_for_processing (&next_dislink_stage_entry);
-       process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
-}
-
-void
-sgen_register_disappearing_link (MonoObject *obj, void **link, gboolean track, gboolean in_gc)
-{
-
-#ifdef ENABLE_DTRACE
-       if (MONO_GC_WEAK_UPDATE_ENABLED ()) {
-               MonoVTable *vt = obj ? (MonoVTable*)SGEN_LOAD_VTABLE (obj) : NULL;
-               MONO_GC_WEAK_UPDATE ((mword)link,
-                               *link ? (mword)DISLINK_OBJECT (link) : (mword)0,
-                               (mword)obj,
-                               obj ? (mword)sgen_safe_object_get_size (obj) : (mword)0,
-                               obj ? vt->klass->name_space : NULL,
-                               obj ? vt->klass->name : NULL,
-                               track ? 1 : 0);
-       }
-#endif
-
-       if (obj)
-               *link = HIDE_POINTER (obj, track);
-       else
-               *link = NULL;
-
-#if 1
-       if (in_gc) {
-               binary_protocol_dislink_update (link, obj, track, 0);
-               process_dislink_stage_entry (obj, link, -1);
-       } else {
-               int index;
-               binary_protocol_dislink_update (link, obj, track, 1);
-               while ((index = add_stage_entry (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, obj, link)) == -1) {
-                       if (try_lock_stage_for_processing (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry)) {
-                               LOCK_GC;
-                               process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
-                               UNLOCK_GC;
-                       }
-               }
-               binary_protocol_dislink_update_staged (link, obj, track, index);
-       }
-#else
-       if (!in_gc)
-               LOCK_GC;
-       binary_protocol_dislink_update (link, obj, track, 0);
-       process_dislink_stage_entry (obj, link, -1);
-       if (!in_gc)
-               UNLOCK_GC;
-#endif
-}
-
-void
-sgen_init_fin_weak_hash (void)
-{
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("FinWeak Successes", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_success);
-       mono_counters_register ("FinWeak Overflow aborts", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_overflow_abort);
-       mono_counters_register ("FinWeak Wait for processing", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wait_for_processing);
-       mono_counters_register ("FinWeak Increment other thread", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_increment_other_thread);
-       mono_counters_register ("FinWeak Index decremented", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_index_decremented);
-       mono_counters_register ("FinWeak Entry invalidated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_entry_invalidated);
-#endif
-}
-
-#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-gc.c b/mono/metadata/sgen-gc.c
deleted file mode 100644 (file)
index 532e1f7..0000000
+++ /dev/null
@@ -1,5398 +0,0 @@
-/*
- * sgen-gc.c: Simple generational GC.
- *
- * Author:
- *     Paolo Molaro (lupus@ximian.com)
- *  Rodrigo Kumpera (kumpera@gmail.com)
- *
- * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- *
- * Thread start/stop adapted from Boehm's GC:
- * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
- * Copyright (c) 1996 by Silicon Graphics.  All rights reserved.
- * Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
- * Copyright (c) 2000-2004 by Hewlett-Packard Company.  All rights reserved.
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Important: allocation provides always zeroed memory, having to do
- * a memset after allocation is deadly for performance.
- * Memory usage at startup is currently as follows:
- * 64 KB pinned space
- * 64 KB internal space
- * size of nursery
- * We should provide a small memory config with half the sizes
- *
- * We currently try to make as few mono assumptions as possible:
- * 1) 2-word header with no GC pointers in it (first vtable, second to store the
- *    forwarding ptr)
- * 2) gc descriptor is the second word in the vtable (first word in the class)
- * 3) 8 byte alignment is the minimum and enough (not true for special structures (SIMD), FIXME)
- * 4) there is a function to get an object's size and the number of
- *    elements in an array.
- * 5) we know the special way bounds are allocated for complex arrays
- * 6) we know about proxies and how to treat them when domains are unloaded
- *
- * Always try to keep stack usage to a minimum: no recursive behaviour
- * and no large stack allocs.
- *
- * General description.
- * Objects are initially allocated in a nursery using a fast bump-pointer technique.
- * When the nursery is full we start a nursery collection: this is performed with a
- * copying GC.
- * When the old generation is full we start a copying GC of the old generation as well:
- * this will be changed to mark&sweep with copying when fragmentation becomes to severe
- * in the future.  Maybe we'll even do both during the same collection like IMMIX.
- *
- * The things that complicate this description are:
- * *) pinned objects: we can't move them so we need to keep track of them
- * *) no precise info of the thread stacks and registers: we need to be able to
- *    quickly find the objects that may be referenced conservatively and pin them
- *    (this makes the first issues more important)
- * *) large objects are too expensive to be dealt with using copying GC: we handle them
- *    with mark/sweep during major collections
- * *) some objects need to not move even if they are small (interned strings, Type handles):
- *    we use mark/sweep for them, too: they are not allocated in the nursery, but inside
- *    PinnedChunks regions
- */
-
-/*
- * TODO:
-
- *) we could have a function pointer in MonoClass to implement
-  customized write barriers for value types
-
- *) investigate the stuff needed to advance a thread to a GC-safe
-  point (single-stepping, read from unmapped memory etc) and implement it.
-  This would enable us to inline allocations and write barriers, for example,
-  or at least parts of them, like the write barrier checks.
-  We may need this also for handling precise info on stacks, even simple things
-  as having uninitialized data on the stack and having to wait for the prolog
-  to zero it. Not an issue for the last frame that we scan conservatively.
-  We could always not trust the value in the slots anyway.
-
- *) modify the jit to save info about references in stack locations:
-  this can be done just for locals as a start, so that at least
-  part of the stack is handled precisely.
-
- *) test/fix endianess issues
-
- *) Implement a card table as the write barrier instead of remembered
-    sets?  Card tables are not easy to implement with our current
-    memory layout.  We have several different kinds of major heap
-    objects: Small objects in regular blocks, small objects in pinned
-    chunks and LOS objects.  If we just have a pointer we have no way
-    to tell which kind of object it points into, therefore we cannot
-    know where its card table is.  The least we have to do to make
-    this happen is to get rid of write barriers for indirect stores.
-    (See next item)
-
- *) Get rid of write barriers for indirect stores.  We can do this by
-    telling the GC to wbarrier-register an object once we do an ldloca
-    or ldelema on it, and to unregister it once it's not used anymore
-    (it can only travel downwards on the stack).  The problem with
-    unregistering is that it needs to happen eventually no matter
-    what, even if exceptions are thrown, the thread aborts, etc.
-    Rodrigo suggested that we could do only the registering part and
-    let the collector find out (pessimistically) when it's safe to
-    unregister, namely when the stack pointer of the thread that
-    registered the object is higher than it was when the registering
-    happened.  This might make for a good first implementation to get
-    some data on performance.
-
- *) Some sort of blacklist support?  Blacklists is a concept from the
-    Boehm GC: if during a conservative scan we find pointers to an
-    area which we might use as heap, we mark that area as unusable, so
-    pointer retention by random pinning pointers is reduced.
-
- *) experiment with max small object size (very small right now - 2kb,
-    because it's tied to the max freelist size)
-
-  *) add an option to mmap the whole heap in one chunk: it makes for many
-     simplifications in the checks (put the nursery at the top and just use a single
-     check for inclusion/exclusion): the issue this has is that on 32 bit systems it's
-     not flexible (too much of the address space may be used by default or we can't
-     increase the heap as needed) and we'd need a race-free mechanism to return memory
-     back to the system (mprotect(PROT_NONE) will still keep the memory allocated if it
-     was written to, munmap is needed, but the following mmap may not find the same segment
-     free...)
-
- *) memzero the major fragments after restarting the world and optionally a smaller
-    chunk at a time
-
- *) investigate having fragment zeroing threads
-
- *) separate locks for finalization and other minor stuff to reduce
-    lock contention
-
- *) try a different copying order to improve memory locality
-
- *) a thread abort after a store but before the write barrier will
-    prevent the write barrier from executing
-
- *) specialized dynamically generated markers/copiers
-
- *) Dynamically adjust TLAB size to the number of threads.  If we have
-    too many threads that do allocation, we might need smaller TLABs,
-    and we might get better performance with larger TLABs if we only
-    have a handful of threads.  We could sum up the space left in all
-    assigned TLABs and if that's more than some percentage of the
-    nursery size, reduce the TLAB size.
-
- *) Explore placing unreachable objects on unused nursery memory.
-       Instead of memset'ng a region to zero, place an int[] covering it.
-       A good place to start is add_nursery_frag. The tricky thing here is
-       placing those objects atomically outside of a collection.
-
- *) Allocation should use asymmetric Dekker synchronization:
-       http://blogs.oracle.com/dave/resource/Asymmetric-Dekker-Synchronization.txt
-       This should help weak consistency archs.
- */
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#ifdef __MACH__
-#undef _XOPEN_SOURCE
-#define _XOPEN_SOURCE
-#define _DARWIN_C_SOURCE
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#ifdef HAVE_PTHREAD_NP_H
-#include <pthread_np.h>
-#endif
-#ifdef HAVE_SEMAPHORE_H
-#include <semaphore.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-
-#include "metadata/sgen-gc.h"
-#include "metadata/metadata-internals.h"
-#include "metadata/class-internals.h"
-#include "metadata/gc-internal.h"
-#include "metadata/object-internals.h"
-#include "metadata/threads.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-archdep.h"
-#include "metadata/sgen-bridge.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/sgen-hash-table.h"
-#include "metadata/mono-gc.h"
-#include "metadata/method-builder.h"
-#include "metadata/profiler-private.h"
-#include "metadata/monitor.h"
-#include "metadata/mempool-internals.h"
-#include "metadata/marshal.h"
-#include "metadata/runtime.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-pinning.h"
-#include "metadata/sgen-workers.h"
-#include "metadata/sgen-layout-stats.h"
-#include "utils/mono-mmap.h"
-#include "utils/mono-time.h"
-#include "utils/mono-semaphore.h"
-#include "utils/mono-counters.h"
-#include "utils/mono-proclib.h"
-#include "utils/mono-memory-model.h"
-#include "utils/mono-logger-internal.h"
-#include "utils/dtrace.h"
-
-#include <mono/utils/mono-logger-internal.h>
-#include <mono/utils/memcheck.h>
-
-#if defined(__MACH__)
-#include "utils/mach-support.h"
-#endif
-
-#define OPDEF(a,b,c,d,e,f,g,h,i,j) \
-       a = i,
-
-enum {
-#include "mono/cil/opcode.def"
-       CEE_LAST
-};
-
-#undef OPDEF
-
-#undef pthread_create
-#undef pthread_join
-#undef pthread_detach
-
-/*
- * ######################################################################
- * ########  Types and constants used by the GC.
- * ######################################################################
- */
-
-/* 0 means not initialized, 1 is initialized, -1 means in progress */
-static int gc_initialized = 0;
-/* If set, check if we need to do something every X allocations */
-gboolean has_per_allocation_action;
-/* If set, do a heap check every X allocation */
-guint32 verify_before_allocs = 0;
-/* If set, do a minor collection before every X allocation */
-guint32 collect_before_allocs = 0;
-/* If set, do a whole heap check before each collection */
-static gboolean whole_heap_check_before_collection = FALSE;
-/* If set, do a heap consistency check before each minor collection */
-static gboolean consistency_check_at_minor_collection = FALSE;
-/* If set, do a mod union consistency check before each finishing collection pause */
-static gboolean mod_union_consistency_check = FALSE;
-/* If set, check whether mark bits are consistent after major collections */
-static gboolean check_mark_bits_after_major_collection = FALSE;
-/* If set, check that all nursery objects are pinned/not pinned, depending on context */
-static gboolean check_nursery_objects_pinned = FALSE;
-/* If set, do a few checks when the concurrent collector is used */
-static gboolean do_concurrent_checks = FALSE;
-/* If set, check that there are no references to the domain left at domain unload */
-static gboolean xdomain_checks = FALSE;
-/* If not null, dump the heap after each collection into this file */
-static FILE *heap_dump_file = NULL;
-/* If set, mark stacks conservatively, even if precise marking is possible */
-static gboolean conservative_stack_mark = FALSE;
-/* If set, do a plausibility check on the scan_starts before and after
-   each collection */
-static gboolean do_scan_starts_check = FALSE;
-
-/*
- * If the major collector is concurrent and this is FALSE, we will
- * never initiate a synchronous major collection, unless requested via
- * GC.Collect().
- */
-static gboolean allow_synchronous_major = TRUE;
-static gboolean disable_minor_collections = FALSE;
-static gboolean disable_major_collections = FALSE;
-gboolean do_pin_stats = FALSE;
-static gboolean do_verify_nursery = FALSE;
-static gboolean do_dump_nursery_content = FALSE;
-static gboolean enable_nursery_canaries = FALSE;
-
-#ifdef HEAVY_STATISTICS
-guint64 stat_objects_alloced_degraded = 0;
-guint64 stat_bytes_alloced_degraded = 0;
-
-guint64 stat_copy_object_called_nursery = 0;
-guint64 stat_objects_copied_nursery = 0;
-guint64 stat_copy_object_called_major = 0;
-guint64 stat_objects_copied_major = 0;
-
-guint64 stat_scan_object_called_nursery = 0;
-guint64 stat_scan_object_called_major = 0;
-
-guint64 stat_slots_allocated_in_vain;
-
-guint64 stat_nursery_copy_object_failed_from_space = 0;
-guint64 stat_nursery_copy_object_failed_forwarded = 0;
-guint64 stat_nursery_copy_object_failed_pinned = 0;
-guint64 stat_nursery_copy_object_failed_to_space = 0;
-
-static int stat_wbarrier_add_to_global_remset = 0;
-static int stat_wbarrier_set_field = 0;
-static int stat_wbarrier_set_arrayref = 0;
-static int stat_wbarrier_arrayref_copy = 0;
-static int stat_wbarrier_generic_store = 0;
-static int stat_wbarrier_generic_store_atomic = 0;
-static int stat_wbarrier_set_root = 0;
-static int stat_wbarrier_value_copy = 0;
-static int stat_wbarrier_object_copy = 0;
-#endif
-
-static guint64 stat_pinned_objects = 0;
-
-static guint64 time_minor_pre_collection_fragment_clear = 0;
-static guint64 time_minor_pinning = 0;
-static guint64 time_minor_scan_remsets = 0;
-static guint64 time_minor_scan_pinned = 0;
-static guint64 time_minor_scan_registered_roots = 0;
-static guint64 time_minor_scan_thread_data = 0;
-static guint64 time_minor_finish_gray_stack = 0;
-static guint64 time_minor_fragment_creation = 0;
-
-static guint64 time_major_pre_collection_fragment_clear = 0;
-static guint64 time_major_pinning = 0;
-static guint64 time_major_scan_pinned = 0;
-static guint64 time_major_scan_registered_roots = 0;
-static guint64 time_major_scan_thread_data = 0;
-static guint64 time_major_scan_alloc_pinned = 0;
-static guint64 time_major_scan_finalized = 0;
-static guint64 time_major_scan_big_objects = 0;
-static guint64 time_major_finish_gray_stack = 0;
-static guint64 time_major_free_bigobjs = 0;
-static guint64 time_major_los_sweep = 0;
-static guint64 time_major_sweep = 0;
-static guint64 time_major_fragment_creation = 0;
-
-static guint64 time_max = 0;
-
-static SGEN_TV_DECLARE (time_major_conc_collection_start);
-static SGEN_TV_DECLARE (time_major_conc_collection_end);
-
-static SGEN_TV_DECLARE (last_minor_collection_start_tv);
-static SGEN_TV_DECLARE (last_minor_collection_end_tv);
-
-int gc_debug_level = 0;
-FILE* gc_debug_file;
-
-static MonoGCFinalizerCallbacks fin_callbacks;
-
-/*
-void
-mono_gc_flush_info (void)
-{
-       fflush (gc_debug_file);
-}
-*/
-
-#define TV_DECLARE SGEN_TV_DECLARE
-#define TV_GETTIME SGEN_TV_GETTIME
-#define TV_ELAPSED SGEN_TV_ELAPSED
-
-SGEN_TV_DECLARE (sgen_init_timestamp);
-
-#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
-
-NurseryClearPolicy nursery_clear_policy = CLEAR_AT_TLAB_CREATION;
-
-#define object_is_forwarded    SGEN_OBJECT_IS_FORWARDED
-#define object_is_pinned       SGEN_OBJECT_IS_PINNED
-#define pin_object             SGEN_PIN_OBJECT
-
-#define ptr_in_nursery sgen_ptr_in_nursery
-
-#define LOAD_VTABLE    SGEN_LOAD_VTABLE
-
-static const char*
-safe_name (void* obj)
-{
-       MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj);
-       return vt->klass->name;
-}
-
-gboolean
-nursery_canaries_enabled (void)
-{
-       return enable_nursery_canaries;
-}
-
-#define safe_object_get_size   sgen_safe_object_get_size
-
-const char*
-sgen_safe_name (void* obj)
-{
-       return safe_name (obj);
-}
-
-/*
- * ######################################################################
- * ########  Global data.
- * ######################################################################
- */
-LOCK_DECLARE (gc_mutex);
-gboolean sgen_try_free_some_memory;
-
-#define SCAN_START_SIZE        SGEN_SCAN_START_SIZE
-
-static mword pagesize = 4096;
-size_t degraded_mode = 0;
-
-static mword bytes_pinned_from_failed_allocation = 0;
-
-GCMemSection *nursery_section = NULL;
-static volatile mword lowest_heap_address = ~(mword)0;
-static volatile mword highest_heap_address = 0;
-
-LOCK_DECLARE (sgen_interruption_mutex);
-
-typedef struct _FinalizeReadyEntry FinalizeReadyEntry;
-struct _FinalizeReadyEntry {
-       FinalizeReadyEntry *next;
-       void *object;
-};
-
-typedef struct _EphemeronLinkNode EphemeronLinkNode;
-
-struct _EphemeronLinkNode {
-       EphemeronLinkNode *next;
-       char *array;
-};
-
-typedef struct {
-       void *key;
-       void *value;
-} Ephemeron;
-
-int current_collection_generation = -1;
-volatile gboolean concurrent_collection_in_progress = FALSE;
-
-/* objects that are ready to be finalized */
-static FinalizeReadyEntry *fin_ready_list = NULL;
-static FinalizeReadyEntry *critical_fin_list = NULL;
-
-static EphemeronLinkNode *ephemeron_list;
-
-/* registered roots: the key to the hash is the root start address */
-/* 
- * Different kinds of roots are kept separate to speed up pin_from_roots () for example.
- */
-SgenHashTable roots_hash [ROOT_TYPE_NUM] = {
-       SGEN_HASH_TABLE_INIT (INTERNAL_MEM_ROOTS_TABLE, INTERNAL_MEM_ROOT_RECORD, sizeof (RootRecord), mono_aligned_addr_hash, NULL),
-       SGEN_HASH_TABLE_INIT (INTERNAL_MEM_ROOTS_TABLE, INTERNAL_MEM_ROOT_RECORD, sizeof (RootRecord), mono_aligned_addr_hash, NULL),
-       SGEN_HASH_TABLE_INIT (INTERNAL_MEM_ROOTS_TABLE, INTERNAL_MEM_ROOT_RECORD, sizeof (RootRecord), mono_aligned_addr_hash, NULL)
-};
-static mword roots_size = 0; /* amount of memory in the root set */
-
-#define GC_ROOT_NUM 32
-typedef struct {
-       int count;              /* must be the first field */
-       void *objects [GC_ROOT_NUM];
-       int root_types [GC_ROOT_NUM];
-       uintptr_t extra_info [GC_ROOT_NUM];
-} GCRootReport;
-
-static void
-notify_gc_roots (GCRootReport *report)
-{
-       if (!report->count)
-               return;
-       mono_profiler_gc_roots (report->count, report->objects, report->root_types, report->extra_info);
-       report->count = 0;
-}
-
-static void
-add_profile_gc_root (GCRootReport *report, void *object, int rtype, uintptr_t extra_info)
-{
-       if (report->count == GC_ROOT_NUM)
-               notify_gc_roots (report);
-       report->objects [report->count] = object;
-       report->root_types [report->count] = rtype;
-       report->extra_info [report->count++] = (uintptr_t)((MonoVTable*)LOAD_VTABLE (object))->klass;
-}
-
-MonoNativeTlsKey thread_info_key;
-
-#ifdef HAVE_KW_THREAD
-__thread SgenThreadInfo *sgen_thread_info;
-__thread char *stack_end;
-#endif
-
-/* The size of a TLAB */
-/* The bigger the value, the less often we have to go to the slow path to allocate a new 
- * one, but the more space is wasted by threads not allocating much memory.
- * FIXME: Tune this.
- * FIXME: Make this self-tuning for each thread.
- */
-guint32 tlab_size = (1024 * 4);
-
-#define MAX_SMALL_OBJ_SIZE     SGEN_MAX_SMALL_OBJ_SIZE
-
-/* Functions supplied by the runtime to be called by the GC */
-static MonoGCCallbacks gc_callbacks;
-
-#define ALLOC_ALIGN            SGEN_ALLOC_ALIGN
-
-#define ALIGN_UP               SGEN_ALIGN_UP
-
-#define MOVED_OBJECTS_NUM 64
-static void *moved_objects [MOVED_OBJECTS_NUM];
-static int moved_objects_idx = 0;
-
-/* Vtable of the objects used to fill out nursery fragments before a collection */
-static MonoVTable *array_fill_vtable;
-
-#ifdef SGEN_DEBUG_INTERNAL_ALLOC
-MonoNativeThreadId main_gc_thread = NULL;
-#endif
-
-/*Object was pinned during the current collection*/
-static mword objects_pinned;
-
-/*
- * ######################################################################
- * ########  Macros and function declarations.
- * ######################################################################
- */
-
-typedef SgenGrayQueue GrayQueue;
-
-/* forward declarations */
-static void scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise, GrayQueue *queue);
-static void scan_from_registered_roots (char *addr_start, char *addr_end, int root_type, ScanCopyContext ctx);
-static void scan_finalizer_entries (FinalizeReadyEntry *list, ScanCopyContext ctx);
-static void report_finalizer_roots (void);
-static void report_registered_roots (void);
-
-static void pin_from_roots (void *start_nursery, void *end_nursery, GrayQueue *queue);
-static void finish_gray_stack (int generation, GrayQueue *queue);
-
-void mono_gc_scan_for_specific_ref (MonoObject *key, gboolean precise);
-
-
-static void init_stats (void);
-
-static int mark_ephemerons_in_range (ScanCopyContext ctx);
-static void clear_unreachable_ephemerons (ScanCopyContext ctx);
-static void null_ephemerons_for_domain (MonoDomain *domain);
-
-SgenObjectOperations current_object_ops;
-SgenMajorCollector major_collector;
-SgenMinorCollector sgen_minor_collector;
-static GrayQueue gray_queue;
-
-static SgenRememberedSet remset;
-
-/* The gray queue to use from the main collection thread. */
-#define WORKERS_DISTRIBUTE_GRAY_QUEUE  (&gray_queue)
-
-/*
- * The gray queue a worker job must use.  If we're not parallel or
- * concurrent, we use the main gray queue.
- */
-static SgenGrayQueue*
-sgen_workers_get_job_gray_queue (WorkerData *worker_data)
-{
-       return worker_data ? &worker_data->private_gray_queue : WORKERS_DISTRIBUTE_GRAY_QUEUE;
-}
-
-static void
-gray_queue_redirect (SgenGrayQueue *queue)
-{
-       gboolean wake = FALSE;
-
-       for (;;) {
-               GrayQueueSection *section = sgen_gray_object_dequeue_section (queue);
-               if (!section)
-                       break;
-               sgen_section_gray_queue_enqueue (queue->alloc_prepare_data, section);
-               wake = TRUE;
-       }
-
-       if (wake) {
-               g_assert (concurrent_collection_in_progress);
-               if (sgen_workers_have_started ()) {
-                       sgen_workers_ensure_awake ();
-               } else {
-                       if (concurrent_collection_in_progress)
-                               g_assert (current_collection_generation == -1);
-               }
-       }
-}
-
-static void
-gray_queue_enable_redirect (SgenGrayQueue *queue)
-{
-       if (!concurrent_collection_in_progress)
-               return;
-
-       sgen_gray_queue_set_alloc_prepare (queue, gray_queue_redirect, sgen_workers_get_distribute_section_gray_queue ());
-       gray_queue_redirect (queue);
-}
-
-void
-sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags)
-{
-       while (start < end) {
-               size_t size;
-               char *obj;
-
-               if (!*(void**)start) {
-                       start += sizeof (void*); /* should be ALLOC_ALIGN, really */
-                       continue;
-               }
-
-               if (allow_flags) {
-                       if (!(obj = SGEN_OBJECT_IS_FORWARDED (start)))
-                               obj = start;
-               } else {
-                       obj = start;
-               }
-
-               if ((MonoVTable*)SGEN_LOAD_VTABLE (obj) != array_fill_vtable) {
-                       CHECK_CANARY_FOR_OBJECT (obj);
-                       size = ALIGN_UP (safe_object_get_size ((MonoObject*)obj));
-                       callback (obj, size, data);
-                       CANARIFY_SIZE (size);
-               } else {
-                       size = ALIGN_UP (safe_object_get_size ((MonoObject*)obj));
-               }
-
-               start += size;
-       }
-}
-
-static gboolean
-need_remove_object_for_domain (char *start, MonoDomain *domain)
-{
-       if (mono_object_domain (start) == domain) {
-               SGEN_LOG (4, "Need to cleanup object %p", start);
-               binary_protocol_cleanup (start, (gpointer)LOAD_VTABLE (start), safe_object_get_size ((MonoObject*)start));
-               return TRUE;
-       }
-       return FALSE;
-}
-
-static void
-process_object_for_domain_clearing (char *start, MonoDomain *domain)
-{
-       GCVTable *vt = (GCVTable*)LOAD_VTABLE (start);
-       if (vt->klass == mono_defaults.internal_thread_class)
-               g_assert (mono_object_domain (start) == mono_get_root_domain ());
-       /* The object could be a proxy for an object in the domain
-          we're deleting. */
-#ifndef DISABLE_REMOTING
-       if (mono_defaults.real_proxy_class->supertypes && mono_class_has_parent_fast (vt->klass, mono_defaults.real_proxy_class)) {
-               MonoObject *server = ((MonoRealProxy*)start)->unwrapped_server;
-
-               /* The server could already have been zeroed out, so
-                  we need to check for that, too. */
-               if (server && (!LOAD_VTABLE (server) || mono_object_domain (server) == domain)) {
-                       SGEN_LOG (4, "Cleaning up remote pointer in %p to object %p", start, server);
-                       ((MonoRealProxy*)start)->unwrapped_server = NULL;
-               }
-       }
-#endif
-}
-
-static gboolean
-clear_domain_process_object (char *obj, MonoDomain *domain)
-{
-       gboolean remove;
-
-       process_object_for_domain_clearing (obj, domain);
-       remove = need_remove_object_for_domain (obj, domain);
-
-       if (remove && ((MonoObject*)obj)->synchronisation) {
-               void **dislink = mono_monitor_get_object_monitor_weak_link ((MonoObject*)obj);
-               if (dislink)
-                       sgen_register_disappearing_link (NULL, dislink, FALSE, TRUE);
-       }
-
-       return remove;
-}
-
-static void
-clear_domain_process_minor_object_callback (char *obj, size_t size, MonoDomain *domain)
-{
-       if (clear_domain_process_object (obj, domain)) {
-               CANARIFY_SIZE (size);
-               memset (obj, 0, size);
-       }
-}
-
-static void
-clear_domain_process_major_object_callback (char *obj, size_t size, MonoDomain *domain)
-{
-       clear_domain_process_object (obj, domain);
-}
-
-static void
-clear_domain_free_major_non_pinned_object_callback (char *obj, size_t size, MonoDomain *domain)
-{
-       if (need_remove_object_for_domain (obj, domain))
-               major_collector.free_non_pinned_object (obj, size);
-}
-
-static void
-clear_domain_free_major_pinned_object_callback (char *obj, size_t size, MonoDomain *domain)
-{
-       if (need_remove_object_for_domain (obj, domain))
-               major_collector.free_pinned_object (obj, size);
-}
-
-/*
- * When appdomains are unloaded we can easily remove objects that have finalizers,
- * but all the others could still be present in random places on the heap.
- * We need a sweep to get rid of them even though it's going to be costly
- * with big heaps.
- * The reason we need to remove them is because we access the vtable and class
- * structures to know the object size and the reference bitmap: once the domain is
- * unloaded the point to random memory.
- */
-void
-mono_gc_clear_domain (MonoDomain * domain)
-{
-       LOSObject *bigobj, *prev;
-       int i;
-
-       LOCK_GC;
-
-       binary_protocol_domain_unload_begin (domain);
-
-       sgen_stop_world (0);
-
-       if (concurrent_collection_in_progress)
-               sgen_perform_collection (0, GENERATION_OLD, "clear domain", TRUE);
-       g_assert (!concurrent_collection_in_progress);
-
-       sgen_process_fin_stage_entries ();
-       sgen_process_dislink_stage_entries ();
-
-       sgen_clear_nursery_fragments ();
-
-       if (xdomain_checks && domain != mono_get_root_domain ()) {
-               sgen_scan_for_registered_roots_in_domain (domain, ROOT_TYPE_NORMAL);
-               sgen_scan_for_registered_roots_in_domain (domain, ROOT_TYPE_WBARRIER);
-               sgen_check_for_xdomain_refs ();
-       }
-
-       /*Ephemerons and dislinks must be processed before LOS since they might end up pointing
-       to memory returned to the OS.*/
-       null_ephemerons_for_domain (domain);
-
-       for (i = GENERATION_NURSERY; i < GENERATION_MAX; ++i)
-               sgen_null_links_for_domain (domain, i);
-
-       for (i = GENERATION_NURSERY; i < GENERATION_MAX; ++i)
-               sgen_remove_finalizers_for_domain (domain, i);
-
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                       (IterateObjectCallbackFunc)clear_domain_process_minor_object_callback, domain, FALSE);
-
-       /* We need two passes over major and large objects because
-          freeing such objects might give their memory back to the OS
-          (in the case of large objects) or obliterate its vtable
-          (pinned objects with major-copying or pinned and non-pinned
-          objects with major-mark&sweep), but we might need to
-          dereference a pointer from an object to another object if
-          the first object is a proxy. */
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)clear_domain_process_major_object_callback, domain);
-       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
-               clear_domain_process_object (bigobj->data, domain);
-
-       prev = NULL;
-       for (bigobj = los_object_list; bigobj;) {
-               if (need_remove_object_for_domain (bigobj->data, domain)) {
-                       LOSObject *to_free = bigobj;
-                       if (prev)
-                               prev->next = bigobj->next;
-                       else
-                               los_object_list = bigobj->next;
-                       bigobj = bigobj->next;
-                       SGEN_LOG (4, "Freeing large object %p", bigobj->data);
-                       sgen_los_free_object (to_free);
-                       continue;
-               }
-               prev = bigobj;
-               bigobj = bigobj->next;
-       }
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_NON_PINNED, (IterateObjectCallbackFunc)clear_domain_free_major_non_pinned_object_callback, domain);
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_PINNED, (IterateObjectCallbackFunc)clear_domain_free_major_pinned_object_callback, domain);
-
-       if (domain == mono_get_root_domain ()) {
-               if (G_UNLIKELY (do_pin_stats))
-                       sgen_pin_stats_print_class_stats ();
-               sgen_object_layout_dump (stdout);
-       }
-
-       sgen_restart_world (0, NULL);
-
-       binary_protocol_domain_unload_end (domain);
-       binary_protocol_flush_buffers (FALSE);
-
-       UNLOCK_GC;
-}
-
-/*
- * sgen_add_to_global_remset:
- *
- *   The global remset contains locations which point into newspace after
- * a minor collection. This can happen if the objects they point to are pinned.
- *
- * LOCKING: If called from a parallel collector, the global remset
- * lock must be held.  For serial collectors that is not necessary.
- */
-void
-sgen_add_to_global_remset (gpointer ptr, gpointer obj)
-{
-       SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Target pointer of global remset must be in the nursery");
-
-       HEAVY_STAT (++stat_wbarrier_add_to_global_remset);
-
-       if (!major_collector.is_concurrent) {
-               SGEN_ASSERT (5, current_collection_generation != -1, "Global remsets can only be added during collections");
-       } else {
-               if (current_collection_generation == -1)
-                       SGEN_ASSERT (5, sgen_concurrent_collection_in_progress (), "Global remsets outside of collection pauses can only be added by the concurrent collector");
-       }
-
-       if (!object_is_pinned (obj))
-               SGEN_ASSERT (5, sgen_minor_collector.is_split || sgen_concurrent_collection_in_progress (), "Non-pinned objects can only remain in nursery if it is a split nursery");
-       else if (sgen_cement_lookup_or_register (obj))
-               return;
-
-       remset.record_pointer (ptr);
-
-       if (G_UNLIKELY (do_pin_stats))
-               sgen_pin_stats_register_global_remset (obj);
-
-       SGEN_LOG (8, "Adding global remset for %p", ptr);
-       binary_protocol_global_remset (ptr, obj, (gpointer)SGEN_LOAD_VTABLE (obj));
-
-
-#ifdef ENABLE_DTRACE
-       if (G_UNLIKELY (MONO_GC_GLOBAL_REMSET_ADD_ENABLED ())) {
-               MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj);
-               MONO_GC_GLOBAL_REMSET_ADD ((mword)ptr, (mword)obj, sgen_safe_object_get_size (obj),
-                               vt->klass->name_space, vt->klass->name);
-       }
-#endif
-}
-
-/*
- * sgen_drain_gray_stack:
- *
- *   Scan objects in the gray stack until the stack is empty. This should be called
- * frequently after each object is copied, to achieve better locality and cache
- * usage.
- *
- * max_objs is the maximum number of objects to scan, or -1 to scan until the stack is
- * empty.
- */
-gboolean
-sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx)
-{
-       ScanObjectFunc scan_func = ctx.scan_func;
-       GrayQueue *queue = ctx.queue;
-
-       if (current_collection_generation == GENERATION_OLD && major_collector.drain_gray_stack)
-               return major_collector.drain_gray_stack (ctx);
-
-       do {
-               int i;
-               for (i = 0; i != max_objs; ++i) {
-                       char *obj;
-                       mword desc;
-                       GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
-                       if (!obj)
-                               return TRUE;
-                       SGEN_LOG (9, "Precise gray object scan %p (%s)", obj, safe_name (obj));
-                       scan_func (obj, desc, queue);
-               }
-       } while (max_objs < 0);
-       return FALSE;
-}
-
-/*
- * Addresses in the pin queue are already sorted. This function finds
- * the object header for each address and pins the object. The
- * addresses must be inside the nursery section.  The (start of the)
- * address array is overwritten with the addresses of the actually
- * pinned objects.  Return the number of pinned objects.
- */
-static int
-pin_objects_from_nursery_pin_queue (ScanCopyContext ctx)
-{
-       GCMemSection *section = nursery_section;
-       void **start =  sgen_pinning_get_entry (section->pin_queue_first_entry);
-       void **end = sgen_pinning_get_entry (section->pin_queue_last_entry);
-       void *start_nursery = section->data;
-       void *end_nursery = section->next_data;
-       void *last = NULL;
-       int count = 0;
-       void *search_start;
-       void *addr;
-       void *pinning_front = start_nursery;
-       size_t idx;
-       void **definitely_pinned = start;
-       ScanObjectFunc scan_func = ctx.scan_func;
-       SgenGrayQueue *queue = ctx.queue;
-
-       sgen_nursery_allocator_prepare_for_pinning ();
-
-       while (start < end) {
-               void *obj_to_pin = NULL;
-               size_t obj_to_pin_size = 0;
-               mword desc;
-
-               addr = *start;
-
-               SGEN_ASSERT (0, addr >= start_nursery && addr < end_nursery, "Potential pinning address out of range");
-               SGEN_ASSERT (0, addr >= last, "Pin queue not sorted");
-
-               if (addr == last) {
-                       ++start;
-                       continue;
-               }
-
-               SGEN_LOG (5, "Considering pinning addr %p", addr);
-               /* We've already processed everything up to pinning_front. */
-               if (addr < pinning_front) {
-                       start++;
-                       continue;
-               }
-
-               /*
-                * Find the closest scan start <= addr.  We might search backward in the
-                * scan_starts array because entries might be NULL.  In the worst case we
-                * start at start_nursery.
-                */
-               idx = ((char*)addr - (char*)section->data) / SCAN_START_SIZE;
-               SGEN_ASSERT (0, idx < section->num_scan_start, "Scan start index out of range");
-               search_start = (void*)section->scan_starts [idx];
-               if (!search_start || search_start > addr) {
-                       while (idx) {
-                               --idx;
-                               search_start = section->scan_starts [idx];
-                               if (search_start && search_start <= addr)
-                                       break;
-                       }
-                       if (!search_start || search_start > addr)
-                               search_start = start_nursery;
-               }
-
-               /*
-                * If the pinning front is closer than the scan start we found, start
-                * searching at the front.
-                */
-               if (search_start < pinning_front)
-                       search_start = pinning_front;
-
-               /*
-                * Now addr should be in an object a short distance from search_start.
-                *
-                * search_start must point to zeroed mem or point to an object.
-                */
-               do {
-                       size_t obj_size, canarified_obj_size;
-
-                       /* Skip zeros. */
-                       if (!*(void**)search_start) {
-                               search_start = (void*)ALIGN_UP ((mword)search_start + sizeof (gpointer));
-                               /* The loop condition makes sure we don't overrun addr. */
-                               continue;
-                       }
-
-                       canarified_obj_size = obj_size = ALIGN_UP (safe_object_get_size ((MonoObject*)search_start));
-
-                       /*
-                        * Filler arrays are marked by an invalid sync word.  We don't
-                        * consider them for pinning.  They are not delimited by canaries,
-                        * either.
-                        */
-                       if (((MonoObject*)search_start)->synchronisation != GINT_TO_POINTER (-1)) {
-                               CHECK_CANARY_FOR_OBJECT (search_start);
-                               CANARIFY_SIZE (canarified_obj_size);
-
-                               if (addr >= search_start && (char*)addr < (char*)search_start + obj_size) {
-                                       /* This is the object we're looking for. */
-                                       obj_to_pin = search_start;
-                                       obj_to_pin_size = canarified_obj_size;
-                                       break;
-                               }
-                       }
-
-                       /* Skip to the next object */
-                       search_start = (void*)((char*)search_start + canarified_obj_size);
-               } while (search_start <= addr);
-
-               /* We've searched past the address we were looking for. */
-               if (!obj_to_pin) {
-                       pinning_front = search_start;
-                       goto next_pin_queue_entry;
-               }
-
-               /*
-                * We've found an object to pin.  It might still be a dummy array, but we
-                * can advance the pinning front in any case.
-                */
-               pinning_front = (char*)obj_to_pin + obj_to_pin_size;
-
-               /*
-                * If this is a dummy array marking the beginning of a nursery
-                * fragment, we don't pin it.
-                */
-               if (((MonoObject*)obj_to_pin)->synchronisation == GINT_TO_POINTER (-1))
-                       goto next_pin_queue_entry;
-
-               /*
-                * Finally - pin the object!
-                */
-               desc = sgen_obj_get_descriptor_safe (obj_to_pin);
-               if (scan_func) {
-                       scan_func (obj_to_pin, desc, queue);
-               } else {
-                       SGEN_LOG (4, "Pinned object %p, vtable %p (%s), count %d\n",
-                                       obj_to_pin, *(void**)obj_to_pin, safe_name (obj_to_pin), count);
-                       binary_protocol_pin (obj_to_pin,
-                                       (gpointer)LOAD_VTABLE (obj_to_pin),
-                                       safe_object_get_size (obj_to_pin));
-
-#ifdef ENABLE_DTRACE
-                       if (G_UNLIKELY (MONO_GC_OBJ_PINNED_ENABLED ())) {
-                               int gen = sgen_ptr_in_nursery (obj_to_pin) ? GENERATION_NURSERY : GENERATION_OLD;
-                               MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj_to_pin);
-                               MONO_GC_OBJ_PINNED ((mword)obj_to_pin,
-                                               sgen_safe_object_get_size (obj_to_pin),
-                                               vt->klass->name_space, vt->klass->name, gen);
-                       }
-#endif
-
-                       pin_object (obj_to_pin);
-                       GRAY_OBJECT_ENQUEUE (queue, obj_to_pin, desc);
-                       if (G_UNLIKELY (do_pin_stats))
-                               sgen_pin_stats_register_object (obj_to_pin, obj_to_pin_size);
-                       definitely_pinned [count] = obj_to_pin;
-                       count++;
-               }
-
-       next_pin_queue_entry:
-               last = addr;
-               ++start;
-       }
-       //printf ("effective pinned: %d (at the end: %d)\n", count, (char*)end_nursery - (char*)last);
-       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS) {
-               GCRootReport report;
-               report.count = 0;
-               for (idx = 0; idx < count; ++idx)
-                       add_profile_gc_root (&report, definitely_pinned [idx], MONO_PROFILE_GC_ROOT_PINNING | MONO_PROFILE_GC_ROOT_MISC, 0);
-               notify_gc_roots (&report);
-       }
-       stat_pinned_objects += count;
-       return count;
-}
-
-static void
-pin_objects_in_nursery (ScanCopyContext ctx)
-{
-       size_t reduced_to;
-
-       if (nursery_section->pin_queue_first_entry == nursery_section->pin_queue_last_entry)
-               return;
-
-       reduced_to = pin_objects_from_nursery_pin_queue (ctx);
-       nursery_section->pin_queue_last_entry = nursery_section->pin_queue_first_entry + reduced_to;
-}
-
-/*
- * This function is only ever called (via `collector_pin_object()` in `sgen-copy-object.h`)
- * when we can't promote an object because we're out of memory.
- */
-void
-sgen_pin_object (void *object, GrayQueue *queue)
-{
-       /*
-        * All pinned objects are assumed to have been staged, so we need to stage as well.
-        * Also, the count of staged objects shows that "late pinning" happened.
-        */
-       sgen_pin_stage_ptr (object);
-
-       SGEN_PIN_OBJECT (object);
-       binary_protocol_pin (object, (gpointer)LOAD_VTABLE (object), safe_object_get_size (object));
-
-       ++objects_pinned;
-       if (G_UNLIKELY (do_pin_stats))
-               sgen_pin_stats_register_object (object, safe_object_get_size (object));
-
-       GRAY_OBJECT_ENQUEUE (queue, object, sgen_obj_get_descriptor_safe (object));
-
-#ifdef ENABLE_DTRACE
-       if (G_UNLIKELY (MONO_GC_OBJ_PINNED_ENABLED ())) {
-               int gen = sgen_ptr_in_nursery (object) ? GENERATION_NURSERY : GENERATION_OLD;
-               MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (object);
-               MONO_GC_OBJ_PINNED ((mword)object, sgen_safe_object_get_size (object), vt->klass->name_space, vt->klass->name, gen);
-       }
-#endif
-}
-
-/* Sort the addresses in array in increasing order.
- * Done using a by-the book heap sort. Which has decent and stable performance, is pretty cache efficient.
- */
-void
-sgen_sort_addresses (void **array, size_t size)
-{
-       size_t i;
-       void *tmp;
-
-       for (i = 1; i < size; ++i) {
-               size_t child = i;
-               while (child > 0) {
-                       size_t parent = (child - 1) / 2;
-
-                       if (array [parent] >= array [child])
-                               break;
-
-                       tmp = array [parent];
-                       array [parent] = array [child];
-                       array [child] = tmp;
-
-                       child = parent;
-               }
-       }
-
-       for (i = size - 1; i > 0; --i) {
-               size_t end, root;
-               tmp = array [i];
-               array [i] = array [0];
-               array [0] = tmp;
-
-               end = i - 1;
-               root = 0;
-
-               while (root * 2 + 1 <= end) {
-                       size_t child = root * 2 + 1;
-
-                       if (child < end && array [child] < array [child + 1])
-                               ++child;
-                       if (array [root] >= array [child])
-                               break;
-
-                       tmp = array [root];
-                       array [root] = array [child];
-                       array [child] = tmp;
-
-                       root = child;
-               }
-       }
-}
-
-/* 
- * Scan the memory between start and end and queue values which could be pointers
- * to the area between start_nursery and end_nursery for later consideration.
- * Typically used for thread stacks.
- */
-static void
-conservatively_pin_objects_from (void **start, void **end, void *start_nursery, void *end_nursery, int pin_type)
-{
-       int count = 0;
-
-#ifdef VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE
-       VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE (start, (char*)end - (char*)start);
-#endif
-
-       while (start < end) {
-               if (*start >= start_nursery && *start < end_nursery) {
-                       /*
-                        * *start can point to the middle of an object
-                        * note: should we handle pointing at the end of an object?
-                        * pinning in C# code disallows pointing at the end of an object
-                        * but there is some small chance that an optimizing C compiler
-                        * may keep the only reference to an object by pointing
-                        * at the end of it. We ignore this small chance for now.
-                        * Pointers to the end of an object are indistinguishable
-                        * from pointers to the start of the next object in memory
-                        * so if we allow that we'd need to pin two objects...
-                        * We queue the pointer in an array, the
-                        * array will then be sorted and uniqued. This way
-                        * we can coalesce several pinning pointers and it should
-                        * be faster since we'd do a memory scan with increasing
-                        * addresses. Note: we can align the address to the allocation
-                        * alignment, so the unique process is more effective.
-                        */
-                       mword addr = (mword)*start;
-                       addr &= ~(ALLOC_ALIGN - 1);
-                       if (addr >= (mword)start_nursery && addr < (mword)end_nursery) {
-                               SGEN_LOG (6, "Pinning address %p from %p", (void*)addr, start);
-                               sgen_pin_stage_ptr ((void*)addr);
-                               binary_protocol_pin_stage (start, (void*)addr);
-                               count++;
-                       }
-                       if (G_UNLIKELY (do_pin_stats)) { 
-                               if (ptr_in_nursery ((void*)addr))
-                                       sgen_pin_stats_register_address ((char*)addr, pin_type);
-                       }
-               }
-               start++;
-       }
-       if (count)
-               SGEN_LOG (7, "found %d potential pinned heap pointers", count);
-}
-
-/*
- * The first thing we do in a collection is to identify pinned objects.
- * This function considers all the areas of memory that need to be
- * conservatively scanned.
- */
-static void
-pin_from_roots (void *start_nursery, void *end_nursery, GrayQueue *queue)
-{
-       void **start_root;
-       RootRecord *root;
-       SGEN_LOG (2, "Scanning pinned roots (%d bytes, %d/%d entries)", (int)roots_size, roots_hash [ROOT_TYPE_NORMAL].num_entries, roots_hash [ROOT_TYPE_PINNED].num_entries);
-       /* objects pinned from the API are inside these roots */
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], start_root, root) {
-               SGEN_LOG (6, "Pinned roots %p-%p", start_root, root->end_root);
-               conservatively_pin_objects_from (start_root, (void**)root->end_root, start_nursery, end_nursery, PIN_TYPE_OTHER);
-       } SGEN_HASH_TABLE_FOREACH_END;
-       /* now deal with the thread stacks
-        * in the future we should be able to conservatively scan only:
-        * *) the cpu registers
-        * *) the unmanaged stack frames
-        * *) the _last_ managed stack frame
-        * *) pointers slots in managed frames
-        */
-       scan_thread_data (start_nursery, end_nursery, FALSE, queue);
-}
-
-static void
-unpin_objects_from_queue (SgenGrayQueue *queue)
-{
-       for (;;) {
-               char *addr;
-               mword desc;
-               GRAY_OBJECT_DEQUEUE (queue, &addr, &desc);
-               if (!addr)
-                       break;
-               g_assert (SGEN_OBJECT_IS_PINNED (addr));
-               SGEN_UNPIN_OBJECT (addr);
-       }
-}
-
-typedef struct {
-       CopyOrMarkObjectFunc func;
-       GrayQueue *queue;
-} UserCopyOrMarkData;
-
-static void
-single_arg_user_copy_or_mark (void **obj, void *gc_data)
-{
-       UserCopyOrMarkData *data = gc_data;
-
-       data->func (obj, data->queue);
-}
-
-/*
- * The memory area from start_root to end_root contains pointers to objects.
- * Their position is precisely described by @desc (this means that the pointer
- * can be either NULL or the pointer to the start of an object).
- * This functions copies them to to_space updates them.
- *
- * This function is not thread-safe!
- */
-static void
-precisely_scan_objects_from (void** start_root, void** end_root, char* n_start, char *n_end, mword desc, ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       SgenGrayQueue *queue = ctx.queue;
-
-       switch (desc & ROOT_DESC_TYPE_MASK) {
-       case ROOT_DESC_BITMAP:
-               desc >>= ROOT_DESC_TYPE_SHIFT;
-               while (desc) {
-                       if ((desc & 1) && *start_root) {
-                               copy_func (start_root, queue);
-                               SGEN_LOG (9, "Overwrote root at %p with %p", start_root, *start_root);
-                       }
-                       desc >>= 1;
-                       start_root++;
-               }
-               return;
-       case ROOT_DESC_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-               gsize bwords = (*bitmap_data) - 1;
-               void **start_run = start_root;
-               bitmap_data++;
-               while (bwords-- > 0) {
-                       gsize bmap = *bitmap_data++;
-                       void **objptr = start_run;
-                       while (bmap) {
-                               if ((bmap & 1) && *objptr) {
-                                       copy_func (objptr, queue);
-                                       SGEN_LOG (9, "Overwrote root at %p with %p", objptr, *objptr);
-                               }
-                               bmap >>= 1;
-                               ++objptr;
-                       }
-                       start_run += GC_BITS_PER_WORD;
-               }
-               break;
-       }
-       case ROOT_DESC_USER: {
-               UserCopyOrMarkData data = { copy_func, queue };
-               MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
-               marker (start_root, single_arg_user_copy_or_mark, &data);
-               break;
-       }
-       case ROOT_DESC_RUN_LEN:
-               g_assert_not_reached ();
-       default:
-               g_assert_not_reached ();
-       }
-}
-
-static void
-reset_heap_boundaries (void)
-{
-       lowest_heap_address = ~(mword)0;
-       highest_heap_address = 0;
-}
-
-void
-sgen_update_heap_boundaries (mword low, mword high)
-{
-       mword old;
-
-       do {
-               old = lowest_heap_address;
-               if (low >= old)
-                       break;
-       } while (SGEN_CAS_PTR ((gpointer*)&lowest_heap_address, (gpointer)low, (gpointer)old) != (gpointer)old);
-
-       do {
-               old = highest_heap_address;
-               if (high <= old)
-                       break;
-       } while (SGEN_CAS_PTR ((gpointer*)&highest_heap_address, (gpointer)high, (gpointer)old) != (gpointer)old);
-}
-
-/*
- * Allocate and setup the data structures needed to be able to allocate objects
- * in the nursery. The nursery is stored in nursery_section.
- */
-static void
-alloc_nursery (void)
-{
-       GCMemSection *section;
-       char *data;
-       size_t scan_starts;
-       size_t alloc_size;
-
-       if (nursery_section)
-               return;
-       SGEN_LOG (2, "Allocating nursery size: %zu", (size_t)sgen_nursery_size);
-       /* later we will alloc a larger area for the nursery but only activate
-        * what we need. The rest will be used as expansion if we have too many pinned
-        * objects in the existing nursery.
-        */
-       /* FIXME: handle OOM */
-       section = sgen_alloc_internal (INTERNAL_MEM_SECTION);
-
-       alloc_size = sgen_nursery_size;
-
-       /* If there isn't enough space even for the nursery we should simply abort. */
-       g_assert (sgen_memgov_try_alloc_space (alloc_size, SPACE_NURSERY));
-
-       data = major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
-       sgen_update_heap_boundaries ((mword)data, (mword)(data + sgen_nursery_size));
-       SGEN_LOG (4, "Expanding nursery size (%p-%p): %lu, total: %lu", data, data + alloc_size, (unsigned long)sgen_nursery_size, (unsigned long)mono_gc_get_heap_size ());
-       section->data = section->next_data = data;
-       section->size = alloc_size;
-       section->end_data = data + sgen_nursery_size;
-       scan_starts = (alloc_size + SCAN_START_SIZE - 1) / SCAN_START_SIZE;
-       section->scan_starts = sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS, TRUE);
-       section->num_scan_start = scan_starts;
-
-       nursery_section = section;
-
-       sgen_nursery_allocator_set_nursery_bounds (data, data + sgen_nursery_size);
-}
-
-void*
-mono_gc_get_nursery (int *shift_bits, size_t *size)
-{
-       *size = sgen_nursery_size;
-       *shift_bits = DEFAULT_NURSERY_BITS;
-       return sgen_get_nursery_start ();
-}
-
-void
-mono_gc_set_current_thread_appdomain (MonoDomain *domain)
-{
-       SgenThreadInfo *info = mono_thread_info_current ();
-
-       /* Could be called from sgen_thread_unregister () with a NULL info */
-       if (domain) {
-               g_assert (info);
-               info->stopped_domain = domain;
-       }
-}
-
-gboolean
-mono_gc_precise_stack_mark_enabled (void)
-{
-       return !conservative_stack_mark;
-}
-
-FILE *
-mono_gc_get_logfile (void)
-{
-       return gc_debug_file;
-}
-
-static void
-report_finalizer_roots_list (FinalizeReadyEntry *list)
-{
-       GCRootReport report;
-       FinalizeReadyEntry *fin;
-
-       report.count = 0;
-       for (fin = list; fin; fin = fin->next) {
-               if (!fin->object)
-                       continue;
-               add_profile_gc_root (&report, fin->object, MONO_PROFILE_GC_ROOT_FINALIZER, 0);
-       }
-       notify_gc_roots (&report);
-}
-
-static void
-report_finalizer_roots (void)
-{
-       report_finalizer_roots_list (fin_ready_list);
-       report_finalizer_roots_list (critical_fin_list);
-}
-
-static GCRootReport *root_report;
-
-static void
-single_arg_report_root (void **obj, void *gc_data)
-{
-       if (*obj)
-               add_profile_gc_root (root_report, *obj, MONO_PROFILE_GC_ROOT_OTHER, 0);
-}
-
-static void
-precisely_report_roots_from (GCRootReport *report, void** start_root, void** end_root, mword desc)
-{
-       switch (desc & ROOT_DESC_TYPE_MASK) {
-       case ROOT_DESC_BITMAP:
-               desc >>= ROOT_DESC_TYPE_SHIFT;
-               while (desc) {
-                       if ((desc & 1) && *start_root) {
-                               add_profile_gc_root (report, *start_root, MONO_PROFILE_GC_ROOT_OTHER, 0);
-                       }
-                       desc >>= 1;
-                       start_root++;
-               }
-               return;
-       case ROOT_DESC_COMPLEX: {
-               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
-               gsize bwords = (*bitmap_data) - 1;
-               void **start_run = start_root;
-               bitmap_data++;
-               while (bwords-- > 0) {
-                       gsize bmap = *bitmap_data++;
-                       void **objptr = start_run;
-                       while (bmap) {
-                               if ((bmap & 1) && *objptr) {
-                                       add_profile_gc_root (report, *objptr, MONO_PROFILE_GC_ROOT_OTHER, 0);
-                               }
-                               bmap >>= 1;
-                               ++objptr;
-                       }
-                       start_run += GC_BITS_PER_WORD;
-               }
-               break;
-       }
-       case ROOT_DESC_USER: {
-               MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
-               root_report = report;
-               marker (start_root, single_arg_report_root, NULL);
-               break;
-       }
-       case ROOT_DESC_RUN_LEN:
-               g_assert_not_reached ();
-       default:
-               g_assert_not_reached ();
-       }
-}
-
-static void
-report_registered_roots_by_type (int root_type)
-{
-       GCRootReport report;
-       void **start_root;
-       RootRecord *root;
-       report.count = 0;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
-               SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
-               precisely_report_roots_from (&report, start_root, (void**)root->end_root, root->root_desc);
-       } SGEN_HASH_TABLE_FOREACH_END;
-       notify_gc_roots (&report);
-}
-
-static void
-report_registered_roots (void)
-{
-       report_registered_roots_by_type (ROOT_TYPE_NORMAL);
-       report_registered_roots_by_type (ROOT_TYPE_WBARRIER);
-}
-
-static void
-scan_finalizer_entries (FinalizeReadyEntry *list, ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       SgenGrayQueue *queue = ctx.queue;
-       FinalizeReadyEntry *fin;
-
-       for (fin = list; fin; fin = fin->next) {
-               if (!fin->object)
-                       continue;
-               SGEN_LOG (5, "Scan of fin ready object: %p (%s)\n", fin->object, safe_name (fin->object));
-               copy_func (&fin->object, queue);
-       }
-}
-
-static const char*
-generation_name (int generation)
-{
-       switch (generation) {
-       case GENERATION_NURSERY: return "nursery";
-       case GENERATION_OLD: return "old";
-       default: g_assert_not_reached ();
-       }
-}
-
-const char*
-sgen_generation_name (int generation)
-{
-       return generation_name (generation);
-}
-
-SgenObjectOperations *
-sgen_get_current_object_ops (void){
-       return &current_object_ops;
-}
-
-
-static void
-finish_gray_stack (int generation, GrayQueue *queue)
-{
-       TV_DECLARE (atv);
-       TV_DECLARE (btv);
-       int done_with_ephemerons, ephemeron_rounds = 0;
-       CopyOrMarkObjectFunc copy_func = current_object_ops.copy_or_mark_object;
-       ScanObjectFunc scan_func = current_object_ops.scan_object;
-       ScanCopyContext ctx = { scan_func, copy_func, queue };
-       char *start_addr = generation == GENERATION_NURSERY ? sgen_get_nursery_start () : NULL;
-       char *end_addr = generation == GENERATION_NURSERY ? sgen_get_nursery_end () : (char*)-1;
-
-       /*
-        * We copied all the reachable objects. Now it's the time to copy
-        * the objects that were not referenced by the roots, but by the copied objects.
-        * we built a stack of objects pointed to by gray_start: they are
-        * additional roots and we may add more items as we go.
-        * We loop until gray_start == gray_objects which means no more objects have
-        * been added. Note this is iterative: no recursion is involved.
-        * We need to walk the LO list as well in search of marked big objects
-        * (use a flag since this is needed only on major collections). We need to loop
-        * here as well, so keep a counter of marked LO (increasing it in copy_object).
-        *   To achieve better cache locality and cache usage, we drain the gray stack 
-        * frequently, after each object is copied, and just finish the work here.
-        */
-       sgen_drain_gray_stack (-1, ctx);
-       TV_GETTIME (atv);
-       SGEN_LOG (2, "%s generation done", generation_name (generation));
-
-       /*
-       Reset bridge data, we might have lingering data from a previous collection if this is a major
-       collection trigged by minor overflow.
-
-       We must reset the gathered bridges since their original block might be evacuated due to major
-       fragmentation in the meanwhile and the bridge code should not have to deal with that.
-       */
-       if (sgen_need_bridge_processing ())
-               sgen_bridge_reset_data ();
-
-       /*
-        * Walk the ephemeron tables marking all values with reachable keys. This must be completely done
-        * before processing finalizable objects and non-tracking weak links to avoid finalizing/clearing
-        * objects that are in fact reachable.
-        */
-       done_with_ephemerons = 0;
-       do {
-               done_with_ephemerons = mark_ephemerons_in_range (ctx);
-               sgen_drain_gray_stack (-1, ctx);
-               ++ephemeron_rounds;
-       } while (!done_with_ephemerons);
-
-       sgen_mark_togglerefs (start_addr, end_addr, ctx);
-
-       if (sgen_need_bridge_processing ()) {
-               /*Make sure the gray stack is empty before we process bridge objects so we get liveness right*/
-               sgen_drain_gray_stack (-1, ctx);
-               sgen_collect_bridge_objects (generation, ctx);
-               if (generation == GENERATION_OLD)
-                       sgen_collect_bridge_objects (GENERATION_NURSERY, ctx);
-
-               /*
-               Do the first bridge step here, as the collector liveness state will become useless after that.
-
-               An important optimization is to only proccess the possibly dead part of the object graph and skip
-               over all live objects as we transitively know everything they point must be alive too.
-
-               The above invariant is completely wrong if we let the gray queue be drained and mark/copy everything.
-
-               This has the unfortunate side effect of making overflow collections perform the first step twice, but
-               given we now have heuristics that perform major GC in anticipation of minor overflows this should not
-               be a big deal.
-               */
-               sgen_bridge_processing_stw_step ();
-       }
-
-       /*
-       Make sure we drain the gray stack before processing disappearing links and finalizers.
-       If we don't make sure it is empty we might wrongly see a live object as dead.
-       */
-       sgen_drain_gray_stack (-1, ctx);
-
-       /*
-       We must clear weak links that don't track resurrection before processing object ready for
-       finalization so they can be cleared before that.
-       */
-       sgen_null_link_in_range (generation, TRUE, ctx);
-       if (generation == GENERATION_OLD)
-               sgen_null_link_in_range (GENERATION_NURSERY, TRUE, ctx);
-
-
-       /* walk the finalization queue and move also the objects that need to be
-        * finalized: use the finalized objects as new roots so the objects they depend
-        * on are also not reclaimed. As with the roots above, only objects in the nursery
-        * are marked/copied.
-        */
-       sgen_finalize_in_range (generation, ctx);
-       if (generation == GENERATION_OLD)
-               sgen_finalize_in_range (GENERATION_NURSERY, ctx);
-       /* drain the new stack that might have been created */
-       SGEN_LOG (6, "Precise scan of gray area post fin");
-       sgen_drain_gray_stack (-1, ctx);
-
-       /*
-        * This must be done again after processing finalizable objects since CWL slots are cleared only after the key is finalized.
-        */
-       done_with_ephemerons = 0;
-       do {
-               done_with_ephemerons = mark_ephemerons_in_range (ctx);
-               sgen_drain_gray_stack (-1, ctx);
-               ++ephemeron_rounds;
-       } while (!done_with_ephemerons);
-
-       /*
-        * Clear ephemeron pairs with unreachable keys.
-        * We pass the copy func so we can figure out if an array was promoted or not.
-        */
-       clear_unreachable_ephemerons (ctx);
-
-       /*
-        * We clear togglerefs only after all possible chances of revival are done. 
-        * This is semantically more inline with what users expect and it allows for
-        * user finalizers to correctly interact with TR objects.
-       */
-       sgen_clear_togglerefs (start_addr, end_addr, ctx);
-
-       TV_GETTIME (btv);
-       SGEN_LOG (2, "Finalize queue handling scan for %s generation: %d usecs %d ephemeron rounds", generation_name (generation), TV_ELAPSED (atv, btv), ephemeron_rounds);
-
-       /*
-        * handle disappearing links
-        * Note we do this after checking the finalization queue because if an object
-        * survives (at least long enough to be finalized) we don't clear the link.
-        * This also deals with a possible issue with the monitor reclamation: with the Boehm
-        * GC a finalized object my lose the monitor because it is cleared before the finalizer is
-        * called.
-        */
-       g_assert (sgen_gray_object_queue_is_empty (queue));
-       for (;;) {
-               sgen_null_link_in_range (generation, FALSE, ctx);
-               if (generation == GENERATION_OLD)
-                       sgen_null_link_in_range (GENERATION_NURSERY, FALSE, ctx);
-               if (sgen_gray_object_queue_is_empty (queue))
-                       break;
-               sgen_drain_gray_stack (-1, ctx);
-       }
-
-       g_assert (sgen_gray_object_queue_is_empty (queue));
-
-       sgen_gray_object_queue_trim_free_list (queue);
-}
-
-void
-sgen_check_section_scan_starts (GCMemSection *section)
-{
-       size_t i;
-       for (i = 0; i < section->num_scan_start; ++i) {
-               if (section->scan_starts [i]) {
-                       mword size = safe_object_get_size ((MonoObject*) section->scan_starts [i]);
-                       g_assert (size >= sizeof (MonoObject) && size <= MAX_SMALL_OBJ_SIZE);
-               }
-       }
-}
-
-static void
-check_scan_starts (void)
-{
-       if (!do_scan_starts_check)
-               return;
-       sgen_check_section_scan_starts (nursery_section);
-       major_collector.check_scan_starts ();
-}
-
-static void
-scan_from_registered_roots (char *addr_start, char *addr_end, int root_type, ScanCopyContext ctx)
-{
-       void **start_root;
-       RootRecord *root;
-       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
-               SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
-               precisely_scan_objects_from (start_root, (void**)root->end_root, addr_start, addr_end, root->root_desc, ctx);
-       } SGEN_HASH_TABLE_FOREACH_END;
-}
-
-void
-sgen_dump_occupied (char *start, char *end, char *section_start)
-{
-       fprintf (heap_dump_file, "<occupied offset=\"%td\" size=\"%td\"/>\n", start - section_start, end - start);
-}
-
-void
-sgen_dump_section (GCMemSection *section, const char *type)
-{
-       char *start = section->data;
-       char *end = section->data + section->size;
-       char *occ_start = NULL;
-       GCVTable *vt;
-       char *old_start G_GNUC_UNUSED = NULL; /* just for debugging */
-
-       fprintf (heap_dump_file, "<section type=\"%s\" size=\"%lu\">\n", type, (unsigned long)section->size);
-
-       while (start < end) {
-               guint size;
-               MonoClass *class G_GNUC_UNUSED;
-
-               if (!*(void**)start) {
-                       if (occ_start) {
-                               sgen_dump_occupied (occ_start, start, section->data);
-                               occ_start = NULL;
-                       }
-                       start += sizeof (void*); /* should be ALLOC_ALIGN, really */
-                       continue;
-               }
-               g_assert (start < section->next_data);
-
-               if (!occ_start)
-                       occ_start = start;
-
-               vt = (GCVTable*)LOAD_VTABLE (start);
-               class = vt->klass;
-
-               size = ALIGN_UP (safe_object_get_size ((MonoObject*) start));
-
-               /*
-               fprintf (heap_dump_file, "<object offset=\"%d\" class=\"%s.%s\" size=\"%d\"/>\n",
-                               start - section->data,
-                               vt->klass->name_space, vt->klass->name,
-                               size);
-               */
-
-               old_start = start;
-               start += size;
-       }
-       if (occ_start)
-               sgen_dump_occupied (occ_start, start, section->data);
-
-       fprintf (heap_dump_file, "</section>\n");
-}
-
-static void
-dump_object (MonoObject *obj, gboolean dump_location)
-{
-       static char class_name [1024];
-
-       MonoClass *class = mono_object_class (obj);
-       int i, j;
-
-       /*
-        * Python's XML parser is too stupid to parse angle brackets
-        * in strings, so we just ignore them;
-        */
-       i = j = 0;
-       while (class->name [i] && j < sizeof (class_name) - 1) {
-               if (!strchr ("<>\"", class->name [i]))
-                       class_name [j++] = class->name [i];
-               ++i;
-       }
-       g_assert (j < sizeof (class_name));
-       class_name [j] = 0;
-
-       fprintf (heap_dump_file, "<object class=\"%s.%s\" size=\"%zd\"",
-                       class->name_space, class_name,
-                       safe_object_get_size (obj));
-       if (dump_location) {
-               const char *location;
-               if (ptr_in_nursery (obj))
-                       location = "nursery";
-               else if (safe_object_get_size (obj) <= MAX_SMALL_OBJ_SIZE)
-                       location = "major";
-               else
-                       location = "LOS";
-               fprintf (heap_dump_file, " location=\"%s\"", location);
-       }
-       fprintf (heap_dump_file, "/>\n");
-}
-
-static void
-dump_heap (const char *type, int num, const char *reason)
-{
-       ObjectList *list;
-       LOSObject *bigobj;
-
-       fprintf (heap_dump_file, "<collection type=\"%s\" num=\"%d\"", type, num);
-       if (reason)
-               fprintf (heap_dump_file, " reason=\"%s\"", reason);
-       fprintf (heap_dump_file, ">\n");
-       fprintf (heap_dump_file, "<other-mem-usage type=\"mempools\" size=\"%ld\"/>\n", mono_mempool_get_bytes_allocated ());
-       sgen_dump_internal_mem_usage (heap_dump_file);
-       fprintf (heap_dump_file, "<pinned type=\"stack\" bytes=\"%zu\"/>\n", sgen_pin_stats_get_pinned_byte_count (PIN_TYPE_STACK));
-       /* fprintf (heap_dump_file, "<pinned type=\"static-data\" bytes=\"%d\"/>\n", pinned_byte_counts [PIN_TYPE_STATIC_DATA]); */
-       fprintf (heap_dump_file, "<pinned type=\"other\" bytes=\"%zu\"/>\n", sgen_pin_stats_get_pinned_byte_count (PIN_TYPE_OTHER));
-
-       fprintf (heap_dump_file, "<pinned-objects>\n");
-       for (list = sgen_pin_stats_get_object_list (); list; list = list->next)
-               dump_object (list->obj, TRUE);
-       fprintf (heap_dump_file, "</pinned-objects>\n");
-
-       sgen_dump_section (nursery_section, "nursery");
-
-       major_collector.dump_heap (heap_dump_file);
-
-       fprintf (heap_dump_file, "<los>\n");
-       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
-               dump_object ((MonoObject*)bigobj->data, FALSE);
-       fprintf (heap_dump_file, "</los>\n");
-
-       fprintf (heap_dump_file, "</collection>\n");
-}
-
-void
-sgen_register_moved_object (void *obj, void *destination)
-{
-       g_assert (mono_profiler_events & MONO_PROFILE_GC_MOVES);
-
-       if (moved_objects_idx == MOVED_OBJECTS_NUM) {
-               mono_profiler_gc_moves (moved_objects, moved_objects_idx);
-               moved_objects_idx = 0;
-       }
-       moved_objects [moved_objects_idx++] = obj;
-       moved_objects [moved_objects_idx++] = destination;
-}
-
-static void
-init_stats (void)
-{
-       static gboolean inited = FALSE;
-
-       if (inited)
-               return;
-
-       mono_counters_register ("Collection max time",  MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME | MONO_COUNTER_MONOTONIC, &time_max);
-
-       mono_counters_register ("Minor fragment clear", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_pre_collection_fragment_clear);
-       mono_counters_register ("Minor pinning", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_pinning);
-       mono_counters_register ("Minor scan remembered set", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_remsets);
-       mono_counters_register ("Minor scan pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_pinned);
-       mono_counters_register ("Minor scan registered roots", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_registered_roots);
-       mono_counters_register ("Minor scan thread data", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_thread_data);
-       mono_counters_register ("Minor finish gray stack", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_finish_gray_stack);
-       mono_counters_register ("Minor fragment creation", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_fragment_creation);
-
-       mono_counters_register ("Major fragment clear", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_pre_collection_fragment_clear);
-       mono_counters_register ("Major pinning", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_pinning);
-       mono_counters_register ("Major scan pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_pinned);
-       mono_counters_register ("Major scan registered roots", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_registered_roots);
-       mono_counters_register ("Major scan thread data", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_thread_data);
-       mono_counters_register ("Major scan alloc_pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_alloc_pinned);
-       mono_counters_register ("Major scan finalized", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_finalized);
-       mono_counters_register ("Major scan big objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_big_objects);
-       mono_counters_register ("Major finish gray stack", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_finish_gray_stack);
-       mono_counters_register ("Major free big objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_free_bigobjs);
-       mono_counters_register ("Major LOS sweep", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_los_sweep);
-       mono_counters_register ("Major sweep", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_sweep);
-       mono_counters_register ("Major fragment creation", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_fragment_creation);
-
-       mono_counters_register ("Number of pinned objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_pinned_objects);
-
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("WBarrier remember pointer", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_add_to_global_remset);
-       mono_counters_register ("WBarrier set field", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_set_field);
-       mono_counters_register ("WBarrier set arrayref", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_set_arrayref);
-       mono_counters_register ("WBarrier arrayref copy", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_arrayref_copy);
-       mono_counters_register ("WBarrier generic store called", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_generic_store);
-       mono_counters_register ("WBarrier generic atomic store called", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_generic_store_atomic);
-       mono_counters_register ("WBarrier set root", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_set_root);
-       mono_counters_register ("WBarrier value copy", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_value_copy);
-       mono_counters_register ("WBarrier object copy", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_object_copy);
-
-       mono_counters_register ("# objects allocated degraded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_alloced_degraded);
-       mono_counters_register ("bytes allocated degraded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_bytes_alloced_degraded);
-
-       mono_counters_register ("# copy_object() called (nursery)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copy_object_called_nursery);
-       mono_counters_register ("# objects copied (nursery)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_copied_nursery);
-       mono_counters_register ("# copy_object() called (major)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copy_object_called_major);
-       mono_counters_register ("# objects copied (major)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_copied_major);
-
-       mono_counters_register ("# scan_object() called (nursery)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scan_object_called_nursery);
-       mono_counters_register ("# scan_object() called (major)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scan_object_called_major);
-
-       mono_counters_register ("Slots allocated in vain", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_slots_allocated_in_vain);
-
-       mono_counters_register ("# nursery copy_object() failed from space", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_from_space);
-       mono_counters_register ("# nursery copy_object() failed forwarded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_forwarded);
-       mono_counters_register ("# nursery copy_object() failed pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_pinned);
-       mono_counters_register ("# nursery copy_object() failed to space", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_to_space);
-
-       sgen_nursery_allocator_init_heavy_stats ();
-       sgen_alloc_init_heavy_stats ();
-#endif
-
-       inited = TRUE;
-}
-
-
-static void
-reset_pinned_from_failed_allocation (void)
-{
-       bytes_pinned_from_failed_allocation = 0;
-}
-
-void
-sgen_set_pinned_from_failed_allocation (mword objsize)
-{
-       bytes_pinned_from_failed_allocation += objsize;
-}
-
-gboolean
-sgen_collection_is_concurrent (void)
-{
-       switch (current_collection_generation) {
-       case GENERATION_NURSERY:
-               return FALSE;
-       case GENERATION_OLD:
-               return concurrent_collection_in_progress;
-       default:
-               g_error ("Invalid current generation %d", current_collection_generation);
-       }
-}
-
-gboolean
-sgen_concurrent_collection_in_progress (void)
-{
-       return concurrent_collection_in_progress;
-}
-
-static void
-job_remembered_set_scan (WorkerData *worker_data, void *dummy)
-{
-       remset.scan_remsets (sgen_workers_get_job_gray_queue (worker_data));
-}
-
-typedef struct
-{
-       CopyOrMarkObjectFunc copy_or_mark_func;
-       ScanObjectFunc scan_func;
-       char *heap_start;
-       char *heap_end;
-       int root_type;
-} ScanFromRegisteredRootsJobData;
-
-static void
-job_scan_from_registered_roots (WorkerData *worker_data, void *job_data_untyped)
-{
-       ScanFromRegisteredRootsJobData *job_data = job_data_untyped;
-       ScanCopyContext ctx = { job_data->scan_func, job_data->copy_or_mark_func,
-               sgen_workers_get_job_gray_queue (worker_data) };
-
-       scan_from_registered_roots (job_data->heap_start, job_data->heap_end, job_data->root_type, ctx);
-       sgen_free_internal_dynamic (job_data, sizeof (ScanFromRegisteredRootsJobData), INTERNAL_MEM_WORKER_JOB_DATA);
-}
-
-typedef struct
-{
-       char *heap_start;
-       char *heap_end;
-} ScanThreadDataJobData;
-
-static void
-job_scan_thread_data (WorkerData *worker_data, void *job_data_untyped)
-{
-       ScanThreadDataJobData *job_data = job_data_untyped;
-
-       scan_thread_data (job_data->heap_start, job_data->heap_end, TRUE,
-                       sgen_workers_get_job_gray_queue (worker_data));
-       sgen_free_internal_dynamic (job_data, sizeof (ScanThreadDataJobData), INTERNAL_MEM_WORKER_JOB_DATA);
-}
-
-static void
-job_scan_finalizer_entries (WorkerData *worker_data, void *job_data_untyped)
-{
-       FinalizeReadyEntry *list = job_data_untyped;
-       ScanCopyContext ctx = { NULL, current_object_ops.copy_or_mark_object, sgen_workers_get_job_gray_queue (worker_data) };
-
-       scan_finalizer_entries (list, ctx);
-}
-
-static void
-job_scan_major_mod_union_cardtable (WorkerData *worker_data, void *job_data_untyped)
-{
-       g_assert (concurrent_collection_in_progress);
-       major_collector.scan_card_table (TRUE, sgen_workers_get_job_gray_queue (worker_data));
-}
-
-static void
-job_scan_los_mod_union_cardtable (WorkerData *worker_data, void *job_data_untyped)
-{
-       g_assert (concurrent_collection_in_progress);
-       sgen_los_scan_card_table (TRUE, sgen_workers_get_job_gray_queue (worker_data));
-}
-
-static void
-verify_scan_starts (char *start, char *end)
-{
-       size_t i;
-
-       for (i = 0; i < nursery_section->num_scan_start; ++i) {
-               char *addr = nursery_section->scan_starts [i];
-               if (addr > start && addr < end)
-                       SGEN_LOG (1, "NFC-BAD SCAN START [%zu] %p for obj [%p %p]", i, addr, start, end);
-       }
-}
-
-static void
-verify_nursery (void)
-{
-       char *start, *end, *cur, *hole_start;
-
-       if (!do_verify_nursery)
-               return;
-               
-       if (nursery_canaries_enabled ())
-               SGEN_LOG (1, "Checking nursery canaries...");
-
-       /*This cleans up unused fragments */
-       sgen_nursery_allocator_prepare_for_pinning ();
-
-       hole_start = start = cur = sgen_get_nursery_start ();
-       end = sgen_get_nursery_end ();
-
-       while (cur < end) {
-               size_t ss, size;
-
-               if (!*(void**)cur) {
-                       cur += sizeof (void*);
-                       continue;
-               }
-
-               if (object_is_forwarded (cur))
-                       SGEN_LOG (1, "FORWARDED OBJ %p", cur);
-               else if (object_is_pinned (cur))
-                       SGEN_LOG (1, "PINNED OBJ %p", cur);
-
-               ss = safe_object_get_size ((MonoObject*)cur);
-               size = ALIGN_UP (safe_object_get_size ((MonoObject*)cur));
-               verify_scan_starts (cur, cur + size);
-               if (do_dump_nursery_content) {
-                       if (cur > hole_start)
-                               SGEN_LOG (1, "HOLE [%p %p %d]", hole_start, cur, (int)(cur - hole_start));
-                       SGEN_LOG (1, "OBJ  [%p %p %d %d %s %d]", cur, cur + size, (int)size, (int)ss, sgen_safe_name ((MonoObject*)cur), (gpointer)LOAD_VTABLE (cur) == sgen_get_array_fill_vtable ());
-               }
-               if (nursery_canaries_enabled () && (MonoVTable*)SGEN_LOAD_VTABLE (cur) != array_fill_vtable) {
-                       CHECK_CANARY_FOR_OBJECT (cur);
-                       CANARIFY_SIZE (size);
-               }
-               cur += size;
-               hole_start = cur;
-       }
-}
-
-/*
- * Checks that no objects in the nursery are fowarded or pinned.  This
- * is a precondition to restarting the mutator while doing a
- * concurrent collection.  Note that we don't clear fragments because
- * we depend on that having happened earlier.
- */
-static void
-check_nursery_is_clean (void)
-{
-       char *end, *cur;
-
-       cur = sgen_get_nursery_start ();
-       end = sgen_get_nursery_end ();
-
-       while (cur < end) {
-               size_t size;
-
-               if (!*(void**)cur) {
-                       cur += sizeof (void*);
-                       continue;
-               }
-
-               g_assert (!object_is_forwarded (cur));
-               g_assert (!object_is_pinned (cur));
-
-               size = ALIGN_UP (safe_object_get_size ((MonoObject*)cur));
-               verify_scan_starts (cur, cur + size);
-
-               cur += size;
-       }
-}
-
-static void
-init_gray_queue (void)
-{
-       if (sgen_collection_is_concurrent ())
-               sgen_workers_init_distribute_gray_queue ();
-       sgen_gray_object_queue_init (&gray_queue, NULL);
-}
-
-/*
- * Perform a nursery collection.
- *
- * Return whether any objects were late-pinned due to being out of memory.
- */
-static gboolean
-collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
-{
-       gboolean needs_major;
-       size_t max_garbage_amount;
-       char *nursery_next;
-       ScanFromRegisteredRootsJobData *scrrjd_normal, *scrrjd_wbarrier;
-       ScanThreadDataJobData *stdjd;
-       mword fragment_total;
-       ScanCopyContext ctx;
-       TV_DECLARE (atv);
-       TV_DECLARE (btv);
-
-       if (disable_minor_collections)
-               return TRUE;
-
-       TV_GETTIME (last_minor_collection_start_tv);
-       atv = last_minor_collection_start_tv;
-
-       MONO_GC_BEGIN (GENERATION_NURSERY);
-       binary_protocol_collection_begin (gc_stats.minor_gc_count, GENERATION_NURSERY);
-
-       verify_nursery ();
-
-#ifndef DISABLE_PERFCOUNTERS
-       mono_perfcounters->gc_collections0++;
-#endif
-
-       current_collection_generation = GENERATION_NURSERY;
-       current_object_ops = sgen_minor_collector.serial_ops;
-
-       reset_pinned_from_failed_allocation ();
-
-       check_scan_starts ();
-
-       sgen_nursery_alloc_prepare_for_minor ();
-
-       degraded_mode = 0;
-       objects_pinned = 0;
-       nursery_next = sgen_nursery_alloc_get_upper_alloc_bound ();
-       /* FIXME: optimize later to use the higher address where an object can be present */
-       nursery_next = MAX (nursery_next, sgen_get_nursery_end ());
-
-       SGEN_LOG (1, "Start nursery collection %d %p-%p, size: %d", gc_stats.minor_gc_count, sgen_get_nursery_start (), nursery_next, (int)(nursery_next - sgen_get_nursery_start ()));
-       max_garbage_amount = nursery_next - sgen_get_nursery_start ();
-       g_assert (nursery_section->size >= max_garbage_amount);
-
-       /* world must be stopped already */
-       TV_GETTIME (btv);
-       time_minor_pre_collection_fragment_clear += TV_ELAPSED (atv, btv);
-
-       if (xdomain_checks) {
-               sgen_clear_nursery_fragments ();
-               sgen_check_for_xdomain_refs ();
-       }
-
-       nursery_section->next_data = nursery_next;
-
-       major_collector.start_nursery_collection ();
-
-       sgen_memgov_minor_collection_start ();
-
-       init_gray_queue ();
-
-       gc_stats.minor_gc_count ++;
-
-       if (whole_heap_check_before_collection) {
-               sgen_clear_nursery_fragments ();
-               sgen_check_whole_heap (finish_up_concurrent_mark);
-       }
-       if (consistency_check_at_minor_collection)
-               sgen_check_consistency ();
-
-       MONO_GC_CHECKPOINT_1 (GENERATION_NURSERY);
-
-       sgen_process_fin_stage_entries ();
-       sgen_process_dislink_stage_entries ();
-
-       MONO_GC_CHECKPOINT_2 (GENERATION_NURSERY);
-
-       /* pin from pinned handles */
-       sgen_init_pinning ();
-       mono_profiler_gc_event (MONO_GC_EVENT_MARK_START, 0);
-       pin_from_roots (sgen_get_nursery_start (), nursery_next, WORKERS_DISTRIBUTE_GRAY_QUEUE);
-       /* pin cemented objects */
-       sgen_pin_cemented_objects ();
-       /* identify pinned objects */
-       sgen_optimize_pin_queue ();
-       sgen_pinning_setup_section (nursery_section);
-       ctx.scan_func = NULL;
-       ctx.copy_func = NULL;
-       ctx.queue = WORKERS_DISTRIBUTE_GRAY_QUEUE;
-       pin_objects_in_nursery (ctx);
-       sgen_pinning_trim_queue_to_section (nursery_section);
-
-       TV_GETTIME (atv);
-       time_minor_pinning += TV_ELAPSED (btv, atv);
-       SGEN_LOG (2, "Finding pinned pointers: %zd in %d usecs", sgen_get_pinned_count (), TV_ELAPSED (btv, atv));
-       SGEN_LOG (4, "Start scan with %zd pinned objects", sgen_get_pinned_count ());
-
-       MONO_GC_CHECKPOINT_3 (GENERATION_NURSERY);
-
-       /*
-        * FIXME: When we finish a concurrent collection we do a nursery collection first,
-        * as part of which we scan the card table.  Then, later, we scan the mod union
-        * cardtable.  We should only have to do one.
-        */
-       sgen_workers_enqueue_job ("scan remset", job_remembered_set_scan, NULL);
-
-       /* we don't have complete write barrier yet, so we scan all the old generation sections */
-       TV_GETTIME (btv);
-       time_minor_scan_remsets += TV_ELAPSED (atv, btv);
-       SGEN_LOG (2, "Old generation scan: %d usecs", TV_ELAPSED (atv, btv));
-
-       MONO_GC_CHECKPOINT_4 (GENERATION_NURSERY);
-
-       /* FIXME: why is this here? */
-       ctx.scan_func = current_object_ops.scan_object;
-       ctx.copy_func = NULL;
-       ctx.queue = &gray_queue;
-       sgen_drain_gray_stack (-1, ctx);
-
-       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
-               report_registered_roots ();
-       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
-               report_finalizer_roots ();
-       TV_GETTIME (atv);
-       time_minor_scan_pinned += TV_ELAPSED (btv, atv);
-
-       MONO_GC_CHECKPOINT_5 (GENERATION_NURSERY);
-
-       /* registered roots, this includes static fields */
-       scrrjd_normal = sgen_alloc_internal_dynamic (sizeof (ScanFromRegisteredRootsJobData), INTERNAL_MEM_WORKER_JOB_DATA, TRUE);
-       scrrjd_normal->copy_or_mark_func = current_object_ops.copy_or_mark_object;
-       scrrjd_normal->scan_func = current_object_ops.scan_object;
-       scrrjd_normal->heap_start = sgen_get_nursery_start ();
-       scrrjd_normal->heap_end = nursery_next;
-       scrrjd_normal->root_type = ROOT_TYPE_NORMAL;
-       sgen_workers_enqueue_job ("scan from registered roots normal", job_scan_from_registered_roots, scrrjd_normal);
-
-       scrrjd_wbarrier = sgen_alloc_internal_dynamic (sizeof (ScanFromRegisteredRootsJobData), INTERNAL_MEM_WORKER_JOB_DATA, TRUE);
-       scrrjd_wbarrier->copy_or_mark_func = current_object_ops.copy_or_mark_object;
-       scrrjd_wbarrier->scan_func = current_object_ops.scan_object;
-       scrrjd_wbarrier->heap_start = sgen_get_nursery_start ();
-       scrrjd_wbarrier->heap_end = nursery_next;
-       scrrjd_wbarrier->root_type = ROOT_TYPE_WBARRIER;
-       sgen_workers_enqueue_job ("scan from registered roots wbarrier", job_scan_from_registered_roots, scrrjd_wbarrier);
-
-       TV_GETTIME (btv);
-       time_minor_scan_registered_roots += TV_ELAPSED (atv, btv);
-
-       MONO_GC_CHECKPOINT_6 (GENERATION_NURSERY);
-
-       /* thread data */
-       stdjd = sgen_alloc_internal_dynamic (sizeof (ScanThreadDataJobData), INTERNAL_MEM_WORKER_JOB_DATA, TRUE);
-       stdjd->heap_start = sgen_get_nursery_start ();
-       stdjd->heap_end = nursery_next;
-       sgen_workers_enqueue_job ("scan thread data", job_scan_thread_data, stdjd);
-
-       TV_GETTIME (atv);
-       time_minor_scan_thread_data += TV_ELAPSED (btv, atv);
-       btv = atv;
-
-       MONO_GC_CHECKPOINT_7 (GENERATION_NURSERY);
-
-       g_assert (!sgen_collection_is_concurrent ());
-
-       /* Scan the list of objects ready for finalization. If */
-       sgen_workers_enqueue_job ("scan finalizer entries", job_scan_finalizer_entries, fin_ready_list);
-       sgen_workers_enqueue_job ("scan criticial finalizer entries", job_scan_finalizer_entries, critical_fin_list);
-
-       MONO_GC_CHECKPOINT_8 (GENERATION_NURSERY);
-
-       finish_gray_stack (GENERATION_NURSERY, &gray_queue);
-       TV_GETTIME (atv);
-       time_minor_finish_gray_stack += TV_ELAPSED (btv, atv);
-       mono_profiler_gc_event (MONO_GC_EVENT_MARK_END, 0);
-
-       MONO_GC_CHECKPOINT_9 (GENERATION_NURSERY);
-
-       /*
-        * The (single-threaded) finalization code might have done
-        * some copying/marking so we can only reset the GC thread's
-        * worker data here instead of earlier when we joined the
-        * workers.
-        */
-       sgen_workers_reset_data ();
-
-       if (objects_pinned) {
-               sgen_optimize_pin_queue ();
-               sgen_pinning_setup_section (nursery_section);
-       }
-
-       /* walk the pin_queue, build up the fragment list of free memory, unmark
-        * pinned objects as we go, memzero() the empty fragments so they are ready for the
-        * next allocations.
-        */
-       mono_profiler_gc_event (MONO_GC_EVENT_RECLAIM_START, 0);
-       fragment_total = sgen_build_nursery_fragments (nursery_section, unpin_queue);
-       if (!fragment_total)
-               degraded_mode = 1;
-
-       /* Clear TLABs for all threads */
-       sgen_clear_tlabs ();
-
-       mono_profiler_gc_event (MONO_GC_EVENT_RECLAIM_END, 0);
-       TV_GETTIME (btv);
-       time_minor_fragment_creation += TV_ELAPSED (atv, btv);
-       SGEN_LOG (2, "Fragment creation: %d usecs, %lu bytes available", TV_ELAPSED (atv, btv), (unsigned long)fragment_total);
-
-       if (consistency_check_at_minor_collection)
-               sgen_check_major_refs ();
-
-       major_collector.finish_nursery_collection ();
-
-       TV_GETTIME (last_minor_collection_end_tv);
-       gc_stats.minor_gc_time += TV_ELAPSED (last_minor_collection_start_tv, last_minor_collection_end_tv);
-
-       if (heap_dump_file)
-               dump_heap ("minor", gc_stats.minor_gc_count - 1, NULL);
-
-       /* prepare the pin queue for the next collection */
-       sgen_finish_pinning ();
-       if (fin_ready_list || critical_fin_list) {
-               SGEN_LOG (4, "Finalizer-thread wakeup: ready %d", num_ready_finalizers);
-               mono_gc_finalize_notify ();
-       }
-       sgen_pin_stats_reset ();
-       /* clear cemented hash */
-       sgen_cement_clear_below_threshold ();
-
-       g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
-
-       remset.finish_minor_collection ();
-
-       check_scan_starts ();
-
-       binary_protocol_flush_buffers (FALSE);
-
-       sgen_memgov_minor_collection_end ();
-
-       /*objects are late pinned because of lack of memory, so a major is a good call*/
-       needs_major = objects_pinned > 0;
-       current_collection_generation = -1;
-       objects_pinned = 0;
-
-       MONO_GC_END (GENERATION_NURSERY);
-       binary_protocol_collection_end (gc_stats.minor_gc_count - 1, GENERATION_NURSERY, 0, 0);
-
-       if (check_nursery_objects_pinned && !sgen_minor_collector.is_split)
-               sgen_check_nursery_objects_pinned (unpin_queue != NULL);
-
-       return needs_major;
-}
-
-static void
-scan_nursery_objects_callback (char *obj, size_t size, ScanCopyContext *ctx)
-{
-       /*
-        * This is called on all objects in the nursery, including pinned ones, so we need
-        * to use sgen_obj_get_descriptor_safe(), which masks out the vtable tag bits.
-        */
-       ctx->scan_func (obj, sgen_obj_get_descriptor_safe (obj), ctx->queue);
-}
-
-static void
-scan_nursery_objects (ScanCopyContext ctx)
-{
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
-                       (IterateObjectCallbackFunc)scan_nursery_objects_callback, (void*)&ctx, FALSE);
-}
-
-static void
-major_copy_or_mark_from_roots (size_t *old_next_pin_slot, gboolean start_concurrent_mark, gboolean finish_up_concurrent_mark, gboolean scan_mod_union, gboolean scan_whole_nursery)
-{
-       LOSObject *bigobj;
-       TV_DECLARE (atv);
-       TV_DECLARE (btv);
-       /* FIXME: only use these values for the precise scan
-        * note that to_space pointers should be excluded anyway...
-        */
-       char *heap_start = NULL;
-       char *heap_end = (char*)-1;
-       gboolean profile_roots = mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS;
-       GCRootReport root_report = { 0 };
-       ScanFromRegisteredRootsJobData *scrrjd_normal, *scrrjd_wbarrier;
-       ScanThreadDataJobData *stdjd;
-       ScanCopyContext ctx;
-
-       if (concurrent_collection_in_progress) {
-               /*This cleans up unused fragments */
-               sgen_nursery_allocator_prepare_for_pinning ();
-
-               if (do_concurrent_checks)
-                       check_nursery_is_clean ();
-       } else {
-               /* The concurrent collector doesn't touch the nursery. */
-               sgen_nursery_alloc_prepare_for_major ();
-       }
-
-       init_gray_queue ();
-
-       TV_GETTIME (atv);
-
-       /* Pinning depends on this */
-       sgen_clear_nursery_fragments ();
-
-       if (whole_heap_check_before_collection)
-               sgen_check_whole_heap (finish_up_concurrent_mark);
-
-       TV_GETTIME (btv);
-       time_major_pre_collection_fragment_clear += TV_ELAPSED (atv, btv);
-
-       if (!sgen_collection_is_concurrent ())
-               nursery_section->next_data = sgen_get_nursery_end ();
-       /* we should also coalesce scanning from sections close to each other
-        * and deal with pointers outside of the sections later.
-        */
-
-       objects_pinned = 0;
-
-       if (xdomain_checks) {
-               sgen_clear_nursery_fragments ();
-               sgen_check_for_xdomain_refs ();
-       }
-
-       if (!concurrent_collection_in_progress) {
-               /* Remsets are not useful for a major collection */
-               remset.clear_cards ();
-       }
-
-       sgen_process_fin_stage_entries ();
-       sgen_process_dislink_stage_entries ();
-
-       TV_GETTIME (atv);
-       sgen_init_pinning ();
-       SGEN_LOG (6, "Collecting pinned addresses");
-       pin_from_roots ((void*)lowest_heap_address, (void*)highest_heap_address, WORKERS_DISTRIBUTE_GRAY_QUEUE);
-
-       if (!concurrent_collection_in_progress || finish_up_concurrent_mark) {
-               if (major_collector.is_concurrent) {
-                       /*
-                        * The concurrent major collector cannot evict
-                        * yet, so we need to pin cemented objects to
-                        * not break some asserts.
-                        *
-                        * FIXME: We could evict now!
-                        */
-                       sgen_pin_cemented_objects ();
-               }
-       }
-
-       sgen_optimize_pin_queue ();
-
-       /*
-        * pin_queue now contains all candidate pointers, sorted and
-        * uniqued.  We must do two passes now to figure out which
-        * objects are pinned.
-        *
-        * The first is to find within the pin_queue the area for each
-        * section.  This requires that the pin_queue be sorted.  We
-        * also process the LOS objects and pinned chunks here.
-        *
-        * The second, destructive, pass is to reduce the section
-        * areas to pointers to the actually pinned objects.
-        */
-       SGEN_LOG (6, "Pinning from sections");
-       /* first pass for the sections */
-       sgen_find_section_pin_queue_start_end (nursery_section);
-       /* identify possible pointers to the insize of large objects */
-       SGEN_LOG (6, "Pinning from large objects");
-       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next) {
-               size_t dummy;
-               if (sgen_find_optimized_pin_queue_area (bigobj->data, (char*)bigobj->data + sgen_los_object_size (bigobj), &dummy, &dummy)) {
-                       binary_protocol_pin (bigobj->data, (gpointer)LOAD_VTABLE (bigobj->data), safe_object_get_size (((MonoObject*)(bigobj->data))));
-
-#ifdef ENABLE_DTRACE
-                       if (G_UNLIKELY (MONO_GC_OBJ_PINNED_ENABLED ())) {
-                               MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (bigobj->data);
-                               MONO_GC_OBJ_PINNED ((mword)bigobj->data, sgen_safe_object_get_size ((MonoObject*)bigobj->data), vt->klass->name_space, vt->klass->name, GENERATION_OLD);
-                       }
-#endif
-
-                       if (sgen_los_object_is_pinned (bigobj->data)) {
-                               g_assert (finish_up_concurrent_mark);
-                               continue;
-                       }
-                       sgen_los_pin_object (bigobj->data);
-                       if (SGEN_OBJECT_HAS_REFERENCES (bigobj->data))
-                               GRAY_OBJECT_ENQUEUE (WORKERS_DISTRIBUTE_GRAY_QUEUE, bigobj->data, sgen_obj_get_descriptor (bigobj->data));
-                       if (G_UNLIKELY (do_pin_stats))
-                               sgen_pin_stats_register_object ((char*) bigobj->data, safe_object_get_size ((MonoObject*) bigobj->data));
-                       SGEN_LOG (6, "Marked large object %p (%s) size: %lu from roots", bigobj->data, safe_name (bigobj->data), (unsigned long)sgen_los_object_size (bigobj));
-
-                       if (profile_roots)
-                               add_profile_gc_root (&root_report, bigobj->data, MONO_PROFILE_GC_ROOT_PINNING | MONO_PROFILE_GC_ROOT_MISC, 0);
-               }
-       }
-       if (profile_roots)
-               notify_gc_roots (&root_report);
-       /* second pass for the sections */
-       ctx.scan_func = concurrent_collection_in_progress ? current_object_ops.scan_object : NULL;
-       ctx.copy_func = NULL;
-       ctx.queue = WORKERS_DISTRIBUTE_GRAY_QUEUE;
-
-       /*
-        * Concurrent mark never follows references into the nursery.  In the start and
-        * finish pauses we must scan live nursery objects, though.
-        *
-        * In the finish pause we do this conservatively by scanning all nursery objects.
-        * Previously we would only scan pinned objects here.  We assumed that all objects
-        * that were pinned during the nursery collection immediately preceding this finish
-        * mark would be pinned again here.  Due to the way we get the stack end for the GC
-        * thread, however, that's not necessarily the case: we scan part of the stack used
-        * by the GC itself, which changes constantly, so pinning isn't entirely
-        * deterministic.
-        *
-        * The split nursery also complicates things because non-pinned objects can survive
-        * in the nursery.  That's why we need to do a full scan of the nursery for it, too.
-        *
-        * In the future we shouldn't do a preceding nursery collection at all and instead
-        * do the finish pause with promotion from the nursery.
-        *
-        * A further complication arises when we have late-pinned objects from the preceding
-        * nursery collection.  Those are the result of being out of memory when trying to
-        * evacuate objects.  They won't be found from the roots, so we just scan the whole
-        * nursery.
-        *
-        * Non-concurrent mark evacuates from the nursery, so it's
-        * sufficient to just scan pinned nursery objects.
-        */
-       if (scan_whole_nursery || finish_up_concurrent_mark || (concurrent_collection_in_progress && sgen_minor_collector.is_split)) {
-               scan_nursery_objects (ctx);
-       } else {
-               pin_objects_in_nursery (ctx);
-               if (check_nursery_objects_pinned && !sgen_minor_collector.is_split)
-                       sgen_check_nursery_objects_pinned (!concurrent_collection_in_progress || finish_up_concurrent_mark);
-       }
-
-       major_collector.pin_objects (WORKERS_DISTRIBUTE_GRAY_QUEUE);
-       if (old_next_pin_slot)
-               *old_next_pin_slot = sgen_get_pinned_count ();
-
-       TV_GETTIME (btv);
-       time_major_pinning += TV_ELAPSED (atv, btv);
-       SGEN_LOG (2, "Finding pinned pointers: %zd in %d usecs", sgen_get_pinned_count (), TV_ELAPSED (atv, btv));
-       SGEN_LOG (4, "Start scan with %zd pinned objects", sgen_get_pinned_count ());
-
-       major_collector.init_to_space ();
-
-       /*
-        * The concurrent collector doesn't move objects, neither on
-        * the major heap nor in the nursery, so we can mark even
-        * before pinning has finished.  For the non-concurrent
-        * collector we start the workers after pinning.
-        */
-       if (start_concurrent_mark) {
-               sgen_workers_start_all_workers ();
-               gray_queue_enable_redirect (WORKERS_DISTRIBUTE_GRAY_QUEUE);
-       }
-
-#ifdef SGEN_DEBUG_INTERNAL_ALLOC
-       main_gc_thread = mono_native_thread_self ();
-#endif
-
-       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
-               report_registered_roots ();
-       TV_GETTIME (atv);
-       time_major_scan_pinned += TV_ELAPSED (btv, atv);
-
-       /* registered roots, this includes static fields */
-       scrrjd_normal = sgen_alloc_internal_dynamic (sizeof (ScanFromRegisteredRootsJobData), INTERNAL_MEM_WORKER_JOB_DATA, TRUE);
-       scrrjd_normal->copy_or_mark_func = current_object_ops.copy_or_mark_object;
-       scrrjd_normal->scan_func = current_object_ops.scan_object;
-       scrrjd_normal->heap_start = heap_start;
-       scrrjd_normal->heap_end = heap_end;
-       scrrjd_normal->root_type = ROOT_TYPE_NORMAL;
-       sgen_workers_enqueue_job ("scan from registered roots normal", job_scan_from_registered_roots, scrrjd_normal);
-
-       scrrjd_wbarrier = sgen_alloc_internal_dynamic (sizeof (ScanFromRegisteredRootsJobData), INTERNAL_MEM_WORKER_JOB_DATA, TRUE);
-       scrrjd_wbarrier->copy_or_mark_func = current_object_ops.copy_or_mark_object;
-       scrrjd_wbarrier->scan_func = current_object_ops.scan_object;
-       scrrjd_wbarrier->heap_start = heap_start;
-       scrrjd_wbarrier->heap_end = heap_end;
-       scrrjd_wbarrier->root_type = ROOT_TYPE_WBARRIER;
-       sgen_workers_enqueue_job ("scan from registered roots wbarrier", job_scan_from_registered_roots, scrrjd_wbarrier);
-
-       TV_GETTIME (btv);
-       time_major_scan_registered_roots += TV_ELAPSED (atv, btv);
-
-       /* Threads */
-       stdjd = sgen_alloc_internal_dynamic (sizeof (ScanThreadDataJobData), INTERNAL_MEM_WORKER_JOB_DATA, TRUE);
-       stdjd->heap_start = heap_start;
-       stdjd->heap_end = heap_end;
-       sgen_workers_enqueue_job ("scan thread data", job_scan_thread_data, stdjd);
-
-       TV_GETTIME (atv);
-       time_major_scan_thread_data += TV_ELAPSED (btv, atv);
-
-       TV_GETTIME (btv);
-       time_major_scan_alloc_pinned += TV_ELAPSED (atv, btv);
-
-       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
-               report_finalizer_roots ();
-
-       /* scan the list of objects ready for finalization */
-       sgen_workers_enqueue_job ("scan finalizer entries", job_scan_finalizer_entries, fin_ready_list);
-       sgen_workers_enqueue_job ("scan critical finalizer entries", job_scan_finalizer_entries, critical_fin_list);
-
-       if (scan_mod_union) {
-               g_assert (finish_up_concurrent_mark);
-
-               /* Mod union card table */
-               sgen_workers_enqueue_job ("scan mod union cardtable", job_scan_major_mod_union_cardtable, NULL);
-               sgen_workers_enqueue_job ("scan LOS mod union cardtable", job_scan_los_mod_union_cardtable, NULL);
-       }
-
-       TV_GETTIME (atv);
-       time_major_scan_finalized += TV_ELAPSED (btv, atv);
-       SGEN_LOG (2, "Root scan: %d usecs", TV_ELAPSED (btv, atv));
-
-       TV_GETTIME (btv);
-       time_major_scan_big_objects += TV_ELAPSED (atv, btv);
-}
-
-static void
-major_finish_copy_or_mark (void)
-{
-       if (!concurrent_collection_in_progress)
-               return;
-
-       /*
-        * Prepare the pin queue for the next collection.  Since pinning runs on the worker
-        * threads we must wait for the jobs to finish before we can reset it.
-        */
-       sgen_workers_wait_for_jobs_finished ();
-       sgen_finish_pinning ();
-
-       sgen_pin_stats_reset ();
-
-       if (do_concurrent_checks)
-               check_nursery_is_clean ();
-}
-
-static void
-major_start_collection (gboolean concurrent, size_t *old_next_pin_slot)
-{
-       MONO_GC_BEGIN (GENERATION_OLD);
-       binary_protocol_collection_begin (gc_stats.major_gc_count, GENERATION_OLD);
-
-       current_collection_generation = GENERATION_OLD;
-#ifndef DISABLE_PERFCOUNTERS
-       mono_perfcounters->gc_collections1++;
-#endif
-
-       g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
-
-       sgen_cement_reset ();
-
-       if (concurrent) {
-               g_assert (major_collector.is_concurrent);
-               concurrent_collection_in_progress = TRUE;
-
-               current_object_ops = major_collector.major_concurrent_ops;
-       } else {
-               current_object_ops = major_collector.major_ops;
-       }
-
-       reset_pinned_from_failed_allocation ();
-
-       sgen_memgov_major_collection_start ();
-
-       //count_ref_nonref_objs ();
-       //consistency_check ();
-
-       check_scan_starts ();
-
-       degraded_mode = 0;
-       SGEN_LOG (1, "Start major collection %d", gc_stats.major_gc_count);
-       gc_stats.major_gc_count ++;
-
-       if (major_collector.start_major_collection)
-               major_collector.start_major_collection ();
-
-       major_copy_or_mark_from_roots (old_next_pin_slot, concurrent, FALSE, FALSE, FALSE);
-       major_finish_copy_or_mark ();
-}
-
-static void
-wait_for_workers_to_finish (void)
-{
-       while (!sgen_workers_all_done ())
-               g_usleep (200);
-}
-
-static void
-major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean scan_whole_nursery)
-{
-       ScannedObjectCounts counts;
-       LOSObject *bigobj, *prevbo;
-       TV_DECLARE (atv);
-       TV_DECLARE (btv);
-
-       TV_GETTIME (btv);
-
-       if (concurrent_collection_in_progress) {
-               sgen_workers_signal_start_nursery_collection_and_wait ();
-
-               current_object_ops = major_collector.major_concurrent_ops;
-
-               major_copy_or_mark_from_roots (NULL, FALSE, TRUE, TRUE, scan_whole_nursery);
-
-               sgen_workers_signal_finish_nursery_collection ();
-
-               major_finish_copy_or_mark ();
-               gray_queue_enable_redirect (WORKERS_DISTRIBUTE_GRAY_QUEUE);
-
-               sgen_workers_join ();
-
-               SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&gray_queue), "Why is the gray queue not empty after workers have finished working?");
-
-#ifdef SGEN_DEBUG_INTERNAL_ALLOC
-               main_gc_thread = NULL;
-#endif
-
-               if (do_concurrent_checks)
-                       check_nursery_is_clean ();
-       } else {
-               SGEN_ASSERT (0, !scan_whole_nursery, "scan_whole_nursery only applies to concurrent collections");
-               current_object_ops = major_collector.major_ops;
-       }
-
-       /*
-        * The workers have stopped so we need to finish gray queue
-        * work that might result from finalization in the main GC
-        * thread.  Redirection must therefore be turned off.
-        */
-       sgen_gray_object_queue_disable_alloc_prepare (&gray_queue);
-       g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
-
-       /* all the objects in the heap */
-       finish_gray_stack (GENERATION_OLD, &gray_queue);
-       TV_GETTIME (atv);
-       time_major_finish_gray_stack += TV_ELAPSED (btv, atv);
-
-       SGEN_ASSERT (0, sgen_workers_all_done (), "Can't have workers working after joining");
-
-       /*
-        * The (single-threaded) finalization code might have done
-        * some copying/marking so we can only reset the GC thread's
-        * worker data here instead of earlier when we joined the
-        * workers.
-        */
-       sgen_workers_reset_data ();
-
-       if (objects_pinned) {
-               g_assert (!concurrent_collection_in_progress);
-
-               /*
-                * This is slow, but we just OOM'd.
-                *
-                * See comment at `sgen_pin_queue_clear_discarded_entries` for how the pin
-                * queue is laid out at this point.
-                */
-               sgen_pin_queue_clear_discarded_entries (nursery_section, old_next_pin_slot);
-               /*
-                * We need to reestablish all pinned nursery objects in the pin queue
-                * because they're needed for fragment creation.  Unpinning happens by
-                * walking the whole queue, so it's not necessary to reestablish where major
-                * heap block pins are - all we care is that they're still in there
-                * somewhere.
-                */
-               sgen_optimize_pin_queue ();
-               sgen_find_section_pin_queue_start_end (nursery_section);
-               objects_pinned = 0;
-       }
-
-       reset_heap_boundaries ();
-       sgen_update_heap_boundaries ((mword)sgen_get_nursery_start (), (mword)sgen_get_nursery_end ());
-
-       if (!concurrent_collection_in_progress) {
-               /* walk the pin_queue, build up the fragment list of free memory, unmark
-                * pinned objects as we go, memzero() the empty fragments so they are ready for the
-                * next allocations.
-                */
-               if (!sgen_build_nursery_fragments (nursery_section, NULL))
-                       degraded_mode = 1;
-
-               /* prepare the pin queue for the next collection */
-               sgen_finish_pinning ();
-
-               /* Clear TLABs for all threads */
-               sgen_clear_tlabs ();
-
-               sgen_pin_stats_reset ();
-       }
-
-       sgen_cement_clear_below_threshold ();
-
-       if (check_mark_bits_after_major_collection)
-               sgen_check_heap_marked (concurrent_collection_in_progress);
-
-       TV_GETTIME (btv);
-       time_major_fragment_creation += TV_ELAPSED (atv, btv);
-
-
-       MONO_GC_SWEEP_BEGIN (GENERATION_OLD, !major_collector.sweeps_lazily);
-
-       /* sweep the big objects list */
-       prevbo = NULL;
-       for (bigobj = los_object_list; bigobj;) {
-               g_assert (!object_is_pinned (bigobj->data));
-               if (sgen_los_object_is_pinned (bigobj->data)) {
-                       sgen_los_unpin_object (bigobj->data);
-                       sgen_update_heap_boundaries ((mword)bigobj->data, (mword)bigobj->data + sgen_los_object_size (bigobj));
-               } else {
-                       LOSObject *to_free;
-                       /* not referenced anywhere, so we can free it */
-                       if (prevbo)
-                               prevbo->next = bigobj->next;
-                       else
-                               los_object_list = bigobj->next;
-                       to_free = bigobj;
-                       bigobj = bigobj->next;
-                       sgen_los_free_object (to_free);
-                       continue;
-               }
-               prevbo = bigobj;
-               bigobj = bigobj->next;
-       }
-
-       TV_GETTIME (atv);
-       time_major_free_bigobjs += TV_ELAPSED (btv, atv);
-
-       sgen_los_sweep ();
-
-       TV_GETTIME (btv);
-       time_major_los_sweep += TV_ELAPSED (atv, btv);
-
-       major_collector.sweep ();
-
-       MONO_GC_SWEEP_END (GENERATION_OLD, !major_collector.sweeps_lazily);
-
-       TV_GETTIME (atv);
-       time_major_sweep += TV_ELAPSED (btv, atv);
-
-       if (heap_dump_file)
-               dump_heap ("major", gc_stats.major_gc_count - 1, reason);
-
-       if (fin_ready_list || critical_fin_list) {
-               SGEN_LOG (4, "Finalizer-thread wakeup: ready %d", num_ready_finalizers);
-               mono_gc_finalize_notify ();
-       }
-
-       g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
-
-       sgen_memgov_major_collection_end ();
-       current_collection_generation = -1;
-
-       memset (&counts, 0, sizeof (ScannedObjectCounts));
-       major_collector.finish_major_collection (&counts);
-
-       g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
-
-       SGEN_ASSERT (0, sgen_workers_all_done (), "Can't have workers working after major collection has finished");
-       if (concurrent_collection_in_progress)
-               concurrent_collection_in_progress = FALSE;
-
-       check_scan_starts ();
-
-       binary_protocol_flush_buffers (FALSE);
-
-       //consistency_check ();
-
-       MONO_GC_END (GENERATION_OLD);
-       binary_protocol_collection_end (gc_stats.major_gc_count - 1, GENERATION_OLD, counts.num_scanned_objects, counts.num_unique_scanned_objects);
-}
-
-static gboolean
-major_do_collection (const char *reason)
-{
-       TV_DECLARE (time_start);
-       TV_DECLARE (time_end);
-       size_t old_next_pin_slot;
-
-       if (disable_major_collections)
-               return FALSE;
-
-       if (major_collector.get_and_reset_num_major_objects_marked) {
-               long long num_marked = major_collector.get_and_reset_num_major_objects_marked ();
-               g_assert (!num_marked);
-       }
-
-       /* world must be stopped already */
-       TV_GETTIME (time_start);
-
-       major_start_collection (FALSE, &old_next_pin_slot);
-       major_finish_collection (reason, old_next_pin_slot, FALSE);
-
-       TV_GETTIME (time_end);
-       gc_stats.major_gc_time += TV_ELAPSED (time_start, time_end);
-
-       /* FIXME: also report this to the user, preferably in gc-end. */
-       if (major_collector.get_and_reset_num_major_objects_marked)
-               major_collector.get_and_reset_num_major_objects_marked ();
-
-       return bytes_pinned_from_failed_allocation > 0;
-}
-
-static void
-major_start_concurrent_collection (const char *reason)
-{
-       TV_DECLARE (time_start);
-       TV_DECLARE (time_end);
-       long long num_objects_marked;
-
-       if (disable_major_collections)
-               return;
-
-       TV_GETTIME (time_start);
-       SGEN_TV_GETTIME (time_major_conc_collection_start);
-
-       num_objects_marked = major_collector.get_and_reset_num_major_objects_marked ();
-       g_assert (num_objects_marked == 0);
-
-       MONO_GC_CONCURRENT_START_BEGIN (GENERATION_OLD);
-       binary_protocol_concurrent_start ();
-
-       // FIXME: store reason and pass it when finishing
-       major_start_collection (TRUE, NULL);
-
-       gray_queue_redirect (&gray_queue);
-
-       num_objects_marked = major_collector.get_and_reset_num_major_objects_marked ();
-       MONO_GC_CONCURRENT_START_END (GENERATION_OLD, num_objects_marked);
-
-       TV_GETTIME (time_end);
-       gc_stats.major_gc_time += TV_ELAPSED (time_start, time_end);
-
-       current_collection_generation = -1;
-}
-
-/*
- * Returns whether the major collection has finished.
- */
-static gboolean
-major_should_finish_concurrent_collection (void)
-{
-       SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&gray_queue), "Why is the gray queue not empty before we have started doing anything?");
-       return sgen_workers_all_done ();
-}
-
-static void
-major_update_concurrent_collection (void)
-{
-       TV_DECLARE (total_start);
-       TV_DECLARE (total_end);
-
-       TV_GETTIME (total_start);
-
-       MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN (GENERATION_OLD, major_collector.get_and_reset_num_major_objects_marked ());
-       binary_protocol_concurrent_update ();
-
-       major_collector.update_cardtable_mod_union ();
-       sgen_los_update_cardtable_mod_union ();
-
-       MONO_GC_CONCURRENT_UPDATE_END (GENERATION_OLD, major_collector.get_and_reset_num_major_objects_marked ());
-
-       TV_GETTIME (total_end);
-       gc_stats.major_gc_time += TV_ELAPSED (total_start, total_end);
-}
-
-static void
-major_finish_concurrent_collection (void)
-{
-       TV_DECLARE (total_start);
-       TV_DECLARE (total_end);
-       gboolean late_pinned;
-       SgenGrayQueue unpin_queue;
-       memset (&unpin_queue, 0, sizeof (unpin_queue));
-
-       TV_GETTIME (total_start);
-
-       MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN (GENERATION_OLD, major_collector.get_and_reset_num_major_objects_marked ());
-       binary_protocol_concurrent_finish ();
-
-       /*
-        * The major collector can add global remsets which are processed in the finishing
-        * nursery collection, below.  That implies that the workers must have finished
-        * marking before the nursery collection is allowed to run, otherwise we might miss
-        * some remsets.
-        */
-       wait_for_workers_to_finish ();
-
-       SGEN_TV_GETTIME (time_major_conc_collection_end);
-       gc_stats.major_gc_time_concurrent += SGEN_TV_ELAPSED (time_major_conc_collection_start, time_major_conc_collection_end);
-
-       major_collector.update_cardtable_mod_union ();
-       sgen_los_update_cardtable_mod_union ();
-
-       late_pinned = collect_nursery (&unpin_queue, TRUE);
-
-       if (mod_union_consistency_check)
-               sgen_check_mod_union_consistency ();
-
-       current_collection_generation = GENERATION_OLD;
-       major_finish_collection ("finishing", -1, late_pinned);
-
-       if (whole_heap_check_before_collection)
-               sgen_check_whole_heap (FALSE);
-
-       unpin_objects_from_queue (&unpin_queue);
-       sgen_gray_object_queue_deinit (&unpin_queue);
-
-       MONO_GC_CONCURRENT_FINISH_END (GENERATION_OLD, major_collector.get_and_reset_num_major_objects_marked ());
-
-       TV_GETTIME (total_end);
-       gc_stats.major_gc_time += TV_ELAPSED (total_start, total_end) - TV_ELAPSED (last_minor_collection_start_tv, last_minor_collection_end_tv);
-
-       current_collection_generation = -1;
-}
-
-/*
- * Ensure an allocation request for @size will succeed by freeing enough memory.
- *
- * LOCKING: The GC lock MUST be held.
- */
-void
-sgen_ensure_free_space (size_t size)
-{
-       int generation_to_collect = -1;
-       const char *reason = NULL;
-
-
-       if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
-               if (sgen_need_major_collection (size)) {
-                       reason = "LOS overflow";
-                       generation_to_collect = GENERATION_OLD;
-               }
-       } else {
-               if (degraded_mode) {
-                       if (sgen_need_major_collection (size)) {
-                               reason = "Degraded mode overflow";
-                               generation_to_collect = GENERATION_OLD;
-                       }
-               } else if (sgen_need_major_collection (size)) {
-                       reason = "Minor allowance";
-                       generation_to_collect = GENERATION_OLD;
-               } else {
-                       generation_to_collect = GENERATION_NURSERY;
-                       reason = "Nursery full";                        
-               }
-       }
-
-       if (generation_to_collect == -1) {
-               if (concurrent_collection_in_progress && sgen_workers_all_done ()) {
-                       generation_to_collect = GENERATION_OLD;
-                       reason = "Finish concurrent collection";
-               }
-       }
-
-       if (generation_to_collect == -1)
-               return;
-       sgen_perform_collection (size, generation_to_collect, reason, FALSE);
-}
-
-/*
- * LOCKING: Assumes the GC lock is held.
- */
-void
-sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
-{
-       TV_DECLARE (gc_start);
-       TV_DECLARE (gc_end);
-       TV_DECLARE (gc_total_start);
-       TV_DECLARE (gc_total_end);
-       GGTimingInfo infos [2];
-       int overflow_generation_to_collect = -1;
-       int oldest_generation_collected = generation_to_collect;
-       const char *overflow_reason = NULL;
-
-       MONO_GC_REQUESTED (generation_to_collect, requested_size, wait_to_finish ? 1 : 0);
-       if (wait_to_finish)
-               binary_protocol_collection_force (generation_to_collect);
-
-       SGEN_ASSERT (0, generation_to_collect == GENERATION_NURSERY || generation_to_collect == GENERATION_OLD, "What generation is this?");
-
-       mono_profiler_gc_event (MONO_GC_EVENT_START, generation_to_collect);
-
-       TV_GETTIME (gc_start);
-
-       sgen_stop_world (generation_to_collect);
-
-       TV_GETTIME (gc_total_start);
-
-       if (concurrent_collection_in_progress) {
-               /*
-                * We update the concurrent collection.  If it finished, we're done.  If
-                * not, and we've been asked to do a nursery collection, we do that.
-                */
-               gboolean finish = major_should_finish_concurrent_collection () || (wait_to_finish && generation_to_collect == GENERATION_OLD);
-
-               if (finish) {
-                       major_finish_concurrent_collection ();
-                       oldest_generation_collected = GENERATION_OLD;
-               } else {
-                       sgen_workers_signal_start_nursery_collection_and_wait ();
-
-                       major_update_concurrent_collection ();
-                       if (generation_to_collect == GENERATION_NURSERY)
-                               collect_nursery (NULL, FALSE);
-
-                       sgen_workers_signal_finish_nursery_collection ();
-               }
-
-               goto done;
-       }
-
-       /*
-        * If we've been asked to do a major collection, and the major collector wants to
-        * run synchronously (to evacuate), we set the flag to do that.
-        */
-       if (generation_to_collect == GENERATION_OLD &&
-                       allow_synchronous_major &&
-                       major_collector.want_synchronous_collection &&
-                       *major_collector.want_synchronous_collection) {
-               wait_to_finish = TRUE;
-       }
-
-       SGEN_ASSERT (0, !concurrent_collection_in_progress, "Why did this not get handled above?");
-
-       /*
-        * There's no concurrent collection in progress.  Collect the generation we're asked
-        * to collect.  If the major collector is concurrent and we're not forced to wait,
-        * start a concurrent collection.
-        */
-       // FIXME: extract overflow reason
-       if (generation_to_collect == GENERATION_NURSERY) {
-               if (collect_nursery (NULL, FALSE)) {
-                       overflow_generation_to_collect = GENERATION_OLD;
-                       overflow_reason = "Minor overflow";
-               }
-       } else {
-               if (major_collector.is_concurrent && !wait_to_finish) {
-                       collect_nursery (NULL, FALSE);
-                       major_start_concurrent_collection (reason);
-                       // FIXME: set infos[0] properly
-                       goto done;
-               }
-
-               if (major_do_collection (reason)) {
-                       overflow_generation_to_collect = GENERATION_NURSERY;
-                       overflow_reason = "Excessive pinning";
-               }
-       }
-
-       TV_GETTIME (gc_end);
-
-       memset (infos, 0, sizeof (infos));
-       infos [0].generation = generation_to_collect;
-       infos [0].reason = reason;
-       infos [0].is_overflow = FALSE;
-       infos [1].generation = -1;
-       infos [0].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
-
-       SGEN_ASSERT (0, !concurrent_collection_in_progress, "Why did this not get handled above?");
-
-       if (overflow_generation_to_collect != -1) {
-               /*
-                * We need to do an overflow collection, either because we ran out of memory
-                * or the nursery is fully pinned.
-                */
-
-               mono_profiler_gc_event (MONO_GC_EVENT_START, overflow_generation_to_collect);
-               infos [1].generation = overflow_generation_to_collect;
-               infos [1].reason = overflow_reason;
-               infos [1].is_overflow = TRUE;
-               infos [1].total_time = gc_end;
-
-               if (overflow_generation_to_collect == GENERATION_NURSERY)
-                       collect_nursery (NULL, FALSE);
-               else
-                       major_do_collection (overflow_reason);
-
-               TV_GETTIME (gc_end);
-               infos [1].total_time = SGEN_TV_ELAPSED (infos [1].total_time, gc_end);
-
-               /* keep events symmetric */
-               mono_profiler_gc_event (MONO_GC_EVENT_END, overflow_generation_to_collect);
-
-               oldest_generation_collected = MAX (oldest_generation_collected, overflow_generation_to_collect);
-       }
-
-       SGEN_LOG (2, "Heap size: %lu, LOS size: %lu", (unsigned long)mono_gc_get_heap_size (), (unsigned long)los_memory_usage);
-
-       /* this also sets the proper pointers for the next allocation */
-       if (generation_to_collect == GENERATION_NURSERY && !sgen_can_alloc_size (requested_size)) {
-               /* TypeBuilder and MonoMethod are killing mcs with fragmentation */
-               SGEN_LOG (1, "nursery collection didn't find enough room for %zd alloc (%zd pinned)", requested_size, sgen_get_pinned_count ());
-               sgen_dump_pin_queue ();
-               degraded_mode = 1;
-       }
-
- done:
-       g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
-
-       TV_GETTIME (gc_total_end);
-       time_max = MAX (time_max, TV_ELAPSED (gc_total_start, gc_total_end));
-
-       sgen_restart_world (oldest_generation_collected, infos);
-
-       mono_profiler_gc_event (MONO_GC_EVENT_END, generation_to_collect);
-}
-
-/*
- * ######################################################################
- * ########  Memory allocation from the OS
- * ######################################################################
- * This section of code deals with getting memory from the OS and
- * allocating memory for GC-internal data structures.
- * Internal memory can be handled with a freelist for small objects.
- */
-
-/*
- * Debug reporting.
- */
-G_GNUC_UNUSED static void
-report_internal_mem_usage (void)
-{
-       printf ("Internal memory usage:\n");
-       sgen_report_internal_mem_usage ();
-       printf ("Pinned memory usage:\n");
-       major_collector.report_pinned_memory_usage ();
-}
-
-/*
- * ######################################################################
- * ########  Finalization support
- * ######################################################################
- */
-
-static inline gboolean
-sgen_major_is_object_alive (void *object)
-{
-       mword objsize;
-
-       /* Oldgen objects can be pinned and forwarded too */
-       if (SGEN_OBJECT_IS_PINNED (object) || SGEN_OBJECT_IS_FORWARDED (object))
-               return TRUE;
-
-       /*
-        * FIXME: major_collector.is_object_live() also calculates the
-        * size.  Avoid the double calculation.
-        */
-       objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size ((MonoObject*)object));
-       if (objsize > SGEN_MAX_SMALL_OBJ_SIZE)
-               return sgen_los_object_is_pinned (object);
-
-       return major_collector.is_object_live (object);
-}
-
-/*
- * If the object has been forwarded it means it's still referenced from a root. 
- * If it is pinned it's still alive as well.
- * A LOS object is only alive if we have pinned it.
- * Return TRUE if @obj is ready to be finalized.
- */
-static inline gboolean
-sgen_is_object_alive (void *object)
-{
-       if (ptr_in_nursery (object))
-               return sgen_nursery_is_object_alive (object);
-
-       return sgen_major_is_object_alive (object);
-}
-
-/*
- * This function returns true if @object is either alive or it belongs to the old gen
- * and we're currently doing a minor collection.
- */
-static inline int
-sgen_is_object_alive_for_current_gen (char *object)
-{
-       if (ptr_in_nursery (object))
-               return sgen_nursery_is_object_alive (object);
-
-       if (current_collection_generation == GENERATION_NURSERY)
-               return TRUE;
-
-       return sgen_major_is_object_alive (object);
-}
-
-/*
- * This function returns true if @object is either alive and belongs to the
- * current collection - major collections are full heap, so old gen objects
- * are never alive during a minor collection.
- */
-static inline int
-sgen_is_object_alive_and_on_current_collection (char *object)
-{
-       if (ptr_in_nursery (object))
-               return sgen_nursery_is_object_alive (object);
-
-       if (current_collection_generation == GENERATION_NURSERY)
-               return FALSE;
-
-       return sgen_major_is_object_alive (object);
-}
-
-
-gboolean
-sgen_gc_is_object_ready_for_finalization (void *object)
-{
-       return !sgen_is_object_alive (object);
-}
-
-static gboolean
-has_critical_finalizer (MonoObject *obj)
-{
-       MonoClass *class;
-
-       if (!mono_defaults.critical_finalizer_object)
-               return FALSE;
-
-       class = ((MonoVTable*)LOAD_VTABLE (obj))->klass;
-
-       return mono_class_has_parent_fast (class, mono_defaults.critical_finalizer_object);
-}
-
-static gboolean
-is_finalization_aware (MonoObject *obj)
-{
-       MonoVTable *vt = ((MonoVTable*)LOAD_VTABLE (obj));
-       return (vt->gc_bits & SGEN_GC_BIT_FINALIZER_AWARE) == SGEN_GC_BIT_FINALIZER_AWARE;
-}
-
-void
-sgen_queue_finalization_entry (MonoObject *obj)
-{
-       FinalizeReadyEntry *entry = sgen_alloc_internal (INTERNAL_MEM_FINALIZE_READY_ENTRY);
-       gboolean critical = has_critical_finalizer (obj);
-       entry->object = obj;
-       if (critical) {
-               entry->next = critical_fin_list;
-               critical_fin_list = entry;
-       } else {
-               entry->next = fin_ready_list;
-               fin_ready_list = entry;
-       }
-
-       if (fin_callbacks.object_queued_for_finalization && is_finalization_aware (obj))
-               fin_callbacks.object_queued_for_finalization (obj);
-
-#ifdef ENABLE_DTRACE
-       if (G_UNLIKELY (MONO_GC_FINALIZE_ENQUEUE_ENABLED ())) {
-               int gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD;
-               MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (obj);
-               MONO_GC_FINALIZE_ENQUEUE ((mword)obj, sgen_safe_object_get_size (obj),
-                               vt->klass->name_space, vt->klass->name, gen, critical);
-       }
-#endif
-}
-
-gboolean
-sgen_object_is_live (void *obj)
-{
-       return sgen_is_object_alive_and_on_current_collection (obj);
-}
-
-/* LOCKING: requires that the GC lock is held */
-static void
-null_ephemerons_for_domain (MonoDomain *domain)
-{
-       EphemeronLinkNode *current = ephemeron_list, *prev = NULL;
-
-       while (current) {
-               MonoObject *object = (MonoObject*)current->array;
-
-               if (object)
-                       SGEN_ASSERT (0, object->vtable, "Can't have objects without vtables.");
-
-               if (object && object->vtable->domain == domain) {
-                       EphemeronLinkNode *tmp = current;
-
-                       if (prev)
-                               prev->next = current->next;
-                       else
-                               ephemeron_list = current->next;
-
-                       current = current->next;
-                       sgen_free_internal (tmp, INTERNAL_MEM_EPHEMERON_LINK);
-               } else {
-                       prev = current;
-                       current = current->next;
-               }
-       }
-}
-
-/* LOCKING: requires that the GC lock is held */
-static void
-clear_unreachable_ephemerons (ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       GrayQueue *queue = ctx.queue;
-       EphemeronLinkNode *current = ephemeron_list, *prev = NULL;
-       MonoArray *array;
-       Ephemeron *cur, *array_end;
-       char *tombstone;
-
-       while (current) {
-               char *object = current->array;
-
-               if (!sgen_is_object_alive_for_current_gen (object)) {
-                       EphemeronLinkNode *tmp = current;
-
-                       SGEN_LOG (5, "Dead Ephemeron array at %p", object);
-
-                       if (prev)
-                               prev->next = current->next;
-                       else
-                               ephemeron_list = current->next;
-
-                       current = current->next;
-                       sgen_free_internal (tmp, INTERNAL_MEM_EPHEMERON_LINK);
-
-                       continue;
-               }
-
-               copy_func ((void**)&object, queue);
-               current->array = object;
-
-               SGEN_LOG (5, "Clearing unreachable entries for ephemeron array at %p", object);
-
-               array = (MonoArray*)object;
-               cur = mono_array_addr (array, Ephemeron, 0);
-               array_end = cur + mono_array_length_fast (array);
-               tombstone = (char*)((MonoVTable*)LOAD_VTABLE (object))->domain->ephemeron_tombstone;
-
-               for (; cur < array_end; ++cur) {
-                       char *key = (char*)cur->key;
-
-                       if (!key || key == tombstone)
-                               continue;
-
-                       SGEN_LOG (5, "[%td] key %p (%s) value %p (%s)", cur - mono_array_addr (array, Ephemeron, 0),
-                               key, sgen_is_object_alive_for_current_gen (key) ? "reachable" : "unreachable",
-                               cur->value, cur->value && sgen_is_object_alive_for_current_gen (cur->value) ? "reachable" : "unreachable");
-
-                       if (!sgen_is_object_alive_for_current_gen (key)) {
-                               cur->key = tombstone;
-                               cur->value = NULL;
-                               continue;
-                       }
-               }
-               prev = current;
-               current = current->next;
-       }
-}
-
-/*
-LOCKING: requires that the GC lock is held
-
-Limitations: We scan all ephemerons on every collection since the current design doesn't allow for a simple nursery/mature split.
-*/
-static int
-mark_ephemerons_in_range (ScanCopyContext ctx)
-{
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
-       GrayQueue *queue = ctx.queue;
-       int nothing_marked = 1;
-       EphemeronLinkNode *current = ephemeron_list;
-       MonoArray *array;
-       Ephemeron *cur, *array_end;
-       char *tombstone;
-
-       for (current = ephemeron_list; current; current = current->next) {
-               char *object = current->array;
-               SGEN_LOG (5, "Ephemeron array at %p", object);
-
-               /*It has to be alive*/
-               if (!sgen_is_object_alive_for_current_gen (object)) {
-                       SGEN_LOG (5, "\tnot reachable");
-                       continue;
-               }
-
-               copy_func ((void**)&object, queue);
-
-               array = (MonoArray*)object;
-               cur = mono_array_addr (array, Ephemeron, 0);
-               array_end = cur + mono_array_length_fast (array);
-               tombstone = (char*)((MonoVTable*)LOAD_VTABLE (object))->domain->ephemeron_tombstone;
-
-               for (; cur < array_end; ++cur) {
-                       char *key = cur->key;
-
-                       if (!key || key == tombstone)
-                               continue;
-
-                       SGEN_LOG (5, "[%td] key %p (%s) value %p (%s)", cur - mono_array_addr (array, Ephemeron, 0),
-                               key, sgen_is_object_alive_for_current_gen (key) ? "reachable" : "unreachable",
-                               cur->value, cur->value && sgen_is_object_alive_for_current_gen (cur->value) ? "reachable" : "unreachable");
-
-                       if (sgen_is_object_alive_for_current_gen (key)) {
-                               char *value = cur->value;
-
-                               copy_func ((void**)&cur->key, queue);
-                               if (value) {
-                                       if (!sgen_is_object_alive_for_current_gen (value))
-                                               nothing_marked = 0;
-                                       copy_func ((void**)&cur->value, queue);
-                               }
-                       }
-               }
-       }
-
-       SGEN_LOG (5, "Ephemeron run finished. Is it done %d", nothing_marked);
-       return nothing_marked;
-}
-
-int
-mono_gc_invoke_finalizers (void)
-{
-       FinalizeReadyEntry *entry = NULL;
-       gboolean entry_is_critical = FALSE;
-       int count = 0;
-       void *obj;
-       /* FIXME: batch to reduce lock contention */
-       while (fin_ready_list || critical_fin_list) {
-               LOCK_GC;
-
-               if (entry) {
-                       FinalizeReadyEntry **list = entry_is_critical ? &critical_fin_list : &fin_ready_list;
-
-                       /* We have finalized entry in the last
-                          interation, now we need to remove it from
-                          the list. */
-                       if (*list == entry)
-                               *list = entry->next;
-                       else {
-                               FinalizeReadyEntry *e = *list;
-                               while (e->next != entry)
-                                       e = e->next;
-                               e->next = entry->next;
-                       }
-                       sgen_free_internal (entry, INTERNAL_MEM_FINALIZE_READY_ENTRY);
-                       entry = NULL;
-               }
-
-               /* Now look for the first non-null entry. */
-               for (entry = fin_ready_list; entry && !entry->object; entry = entry->next)
-                       ;
-               if (entry) {
-                       entry_is_critical = FALSE;
-               } else {
-                       entry_is_critical = TRUE;
-                       for (entry = critical_fin_list; entry && !entry->object; entry = entry->next)
-                               ;
-               }
-
-               if (entry) {
-                       g_assert (entry->object);
-                       num_ready_finalizers--;
-                       obj = entry->object;
-                       entry->object = NULL;
-                       SGEN_LOG (7, "Finalizing object %p (%s)", obj, safe_name (obj));
-               }
-
-               UNLOCK_GC;
-
-               if (!entry)
-                       break;
-
-               g_assert (entry->object == NULL);
-               count++;
-               /* the object is on the stack so it is pinned */
-               /*g_print ("Calling finalizer for object: %p (%s)\n", entry->object, safe_name (entry->object));*/
-               mono_gc_run_finalize (obj, NULL);
-       }
-       g_assert (!entry);
-       return count;
-}
-
-gboolean
-mono_gc_pending_finalizers (void)
-{
-       return fin_ready_list || critical_fin_list;
-}
-
-/*
- * ######################################################################
- * ########  registered roots support
- * ######################################################################
- */
-
-/*
- * We do not coalesce roots.
- */
-static int
-mono_gc_register_root_inner (char *start, size_t size, void *descr, int root_type)
-{
-       RootRecord new_root;
-       int i;
-       LOCK_GC;
-       for (i = 0; i < ROOT_TYPE_NUM; ++i) {
-               RootRecord *root = sgen_hash_table_lookup (&roots_hash [i], start);
-               /* we allow changing the size and the descriptor (for thread statics etc) */
-               if (root) {
-                       size_t old_size = root->end_root - start;
-                       root->end_root = start + size;
-                       g_assert (((root->root_desc != 0) && (descr != NULL)) ||
-                                         ((root->root_desc == 0) && (descr == NULL)));
-                       root->root_desc = (mword)descr;
-                       roots_size += size;
-                       roots_size -= old_size;
-                       UNLOCK_GC;
-                       return TRUE;
-               }
-       }
-
-       new_root.end_root = start + size;
-       new_root.root_desc = (mword)descr;
-
-       sgen_hash_table_replace (&roots_hash [root_type], start, &new_root, NULL);
-       roots_size += size;
-
-       SGEN_LOG (3, "Added root for range: %p-%p, descr: %p  (%d/%d bytes)", start, new_root.end_root, descr, (int)size, (int)roots_size);
-
-       UNLOCK_GC;
-       return TRUE;
-}
-
-int
-mono_gc_register_root (char *start, size_t size, void *descr)
-{
-       return mono_gc_register_root_inner (start, size, descr, descr ? ROOT_TYPE_NORMAL : ROOT_TYPE_PINNED);
-}
-
-int
-mono_gc_register_root_wbarrier (char *start, size_t size, void *descr)
-{
-       return mono_gc_register_root_inner (start, size, descr, ROOT_TYPE_WBARRIER);
-}
-
-void
-mono_gc_deregister_root (char* addr)
-{
-       int root_type;
-       RootRecord root;
-
-       LOCK_GC;
-       for (root_type = 0; root_type < ROOT_TYPE_NUM; ++root_type) {
-               if (sgen_hash_table_remove (&roots_hash [root_type], addr, &root))
-                       roots_size -= (root.end_root - addr);
-       }
-       UNLOCK_GC;
-}
-
-/*
- * ######################################################################
- * ########  Thread handling (stop/start code)
- * ######################################################################
- */
-
-unsigned int sgen_global_stop_count = 0;
-
-int
-sgen_get_current_collection_generation (void)
-{
-       return current_collection_generation;
-}
-
-void
-mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks)
-{
-       gc_callbacks = *callbacks;
-}
-
-MonoGCCallbacks *
-mono_gc_get_gc_callbacks ()
-{
-       return &gc_callbacks;
-}
-
-/* Variables holding start/end nursery so it won't have to be passed at every call */
-static void *scan_area_arg_start, *scan_area_arg_end;
-
-void
-mono_gc_conservatively_scan_area (void *start, void *end)
-{
-       conservatively_pin_objects_from (start, end, scan_area_arg_start, scan_area_arg_end, PIN_TYPE_STACK);
-}
-
-void*
-mono_gc_scan_object (void *obj, void *gc_data)
-{
-       UserCopyOrMarkData *data = gc_data;
-       current_object_ops.copy_or_mark_object (&obj, data->queue);
-       return obj;
-}
-
-/*
- * Mark from thread stacks and registers.
- */
-static void
-scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise, GrayQueue *queue)
-{
-       SgenThreadInfo *info;
-
-       scan_area_arg_start = start_nursery;
-       scan_area_arg_end = end_nursery;
-
-       FOREACH_THREAD (info) {
-               if (info->skip) {
-                       SGEN_LOG (3, "Skipping dead thread %p, range: %p-%p, size: %td", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start);
-                       continue;
-               }
-               if (info->gc_disabled) {
-                       SGEN_LOG (3, "GC disabled for thread %p, range: %p-%p, size: %td", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start);
-                       continue;
-               }
-               if (!mono_thread_info_is_live (info)) {
-                       SGEN_LOG (3, "Skipping non-running thread %p, range: %p-%p, size: %td (state %x)", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, info->info.thread_state);
-                       continue;
-               }
-               g_assert (info->suspend_done);
-               SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %td, pinned=%zd", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, sgen_get_pinned_count ());
-               if (gc_callbacks.thread_mark_func && !conservative_stack_mark) {
-                       UserCopyOrMarkData data = { NULL, queue };
-                       gc_callbacks.thread_mark_func (info->runtime_data, info->stack_start, info->stack_end, precise, &data);
-               } else if (!precise) {
-                       if (!conservative_stack_mark) {
-                               fprintf (stderr, "Precise stack mark not supported - disabling.\n");
-                               conservative_stack_mark = TRUE;
-                       }
-                       conservatively_pin_objects_from (info->stack_start, info->stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
-               }
-
-               if (!precise) {
-#ifdef USE_MONO_CTX
-                       conservatively_pin_objects_from ((void**)&info->ctx, (void**)&info->ctx + ARCH_NUM_REGS,
-                               start_nursery, end_nursery, PIN_TYPE_STACK);
-#else
-                       conservatively_pin_objects_from ((void**)&info->regs, (void**)&info->regs + ARCH_NUM_REGS,
-                                       start_nursery, end_nursery, PIN_TYPE_STACK);
-#endif
-               }
-       } END_FOREACH_THREAD
-}
-
-static gboolean
-ptr_on_stack (void *ptr)
-{
-       gpointer stack_start = &stack_start;
-       SgenThreadInfo *info = mono_thread_info_current ();
-
-       if (ptr >= stack_start && ptr < (gpointer)info->stack_end)
-               return TRUE;
-       return FALSE;
-}
-
-static void*
-sgen_thread_register (SgenThreadInfo* info, void *addr)
-{
-       size_t stsize = 0;
-       guint8 *staddr = NULL;
-
-#ifndef HAVE_KW_THREAD
-       info->tlab_start = info->tlab_next = info->tlab_temp_end = info->tlab_real_end = NULL;
-
-       g_assert (!mono_native_tls_get_value (thread_info_key));
-       mono_native_tls_set_value (thread_info_key, info);
-#else
-       sgen_thread_info = info;
-#endif
-
-#ifdef SGEN_POSIX_STW
-       info->stop_count = -1;
-       info->signal = 0;
-#endif
-       info->skip = 0;
-       info->stack_start = NULL;
-       info->stopped_ip = NULL;
-       info->stopped_domain = NULL;
-#ifdef USE_MONO_CTX
-       memset (&info->ctx, 0, sizeof (MonoContext));
-#else
-       memset (&info->regs, 0, sizeof (info->regs));
-#endif
-
-       sgen_init_tlab_info (info);
-
-       binary_protocol_thread_register ((gpointer)mono_thread_info_get_tid (info));
-
-       /* On win32, stack_start_limit should be 0, since the stack can grow dynamically */
-       mono_thread_info_get_stack_bounds (&staddr, &stsize);
-       if (staddr) {
-#ifndef HOST_WIN32
-               info->stack_start_limit = staddr;
-#endif
-               info->stack_end = staddr + stsize;
-       } else {
-               gsize stack_bottom = (gsize)addr;
-               stack_bottom += 4095;
-               stack_bottom &= ~4095;
-               info->stack_end = (char*)stack_bottom;
-       }
-
-#ifdef HAVE_KW_THREAD
-       stack_end = info->stack_end;
-#endif
-
-       SGEN_LOG (3, "registered thread %p (%p) stack end %p", info, (gpointer)mono_thread_info_get_tid (info), info->stack_end);
-
-       if (gc_callbacks.thread_attach_func)
-               info->runtime_data = gc_callbacks.thread_attach_func ();
-       return info;
-}
-
-static void
-sgen_thread_detach (SgenThreadInfo *p)
-{
-       /* If a delegate is passed to native code and invoked on a thread we dont
-        * know about, the jit will register it with mono_jit_thread_attach, but
-        * we have no way of knowing when that thread goes away.  SGen has a TSD
-        * so we assume that if the domain is still registered, we can detach
-        * the thread
-        */
-       if (mono_domain_get ())
-               mono_thread_detach_internal (mono_thread_internal_current ());
-}
-
-static void
-sgen_thread_unregister (SgenThreadInfo *p)
-{
-       MonoNativeThreadId tid;
-
-       tid = mono_thread_info_get_tid (p);
-       binary_protocol_thread_unregister ((gpointer)tid);
-       SGEN_LOG (3, "unregister thread %p (%p)", p, (gpointer)tid);
-
-#ifndef HAVE_KW_THREAD
-       mono_native_tls_set_value (thread_info_key, NULL);
-#else
-       sgen_thread_info = NULL;
-#endif
-
-       if (p->info.runtime_thread)
-               mono_threads_add_joinable_thread ((gpointer)tid);
-
-       if (gc_callbacks.thread_detach_func) {
-               gc_callbacks.thread_detach_func (p->runtime_data);
-               p->runtime_data = NULL;
-       }
-}
-
-
-static void
-sgen_thread_attach (SgenThreadInfo *info)
-{
-       LOCK_GC;
-       /*this is odd, can we get attached before the gc is inited?*/
-       init_stats ();
-       UNLOCK_GC;
-       
-       if (gc_callbacks.thread_attach_func && !info->runtime_data)
-               info->runtime_data = gc_callbacks.thread_attach_func ();
-}
-gboolean
-mono_gc_register_thread (void *baseptr)
-{
-       return mono_thread_info_attach (baseptr) != NULL;
-}
-
-/*
- * mono_gc_set_stack_end:
- *
- *   Set the end of the current threads stack to STACK_END. The stack space between 
- * STACK_END and the real end of the threads stack will not be scanned during collections.
- */
-void
-mono_gc_set_stack_end (void *stack_end)
-{
-       SgenThreadInfo *info;
-
-       LOCK_GC;
-       info = mono_thread_info_current ();
-       if (info) {
-               g_assert (stack_end < info->stack_end);
-               info->stack_end = stack_end;
-       }
-       UNLOCK_GC;
-}
-
-#if USE_PTHREAD_INTERCEPT
-
-
-int
-mono_gc_pthread_create (pthread_t *new_thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)
-{
-       return pthread_create (new_thread, attr, start_routine, arg);
-}
-
-int
-mono_gc_pthread_join (pthread_t thread, void **retval)
-{
-       return pthread_join (thread, retval);
-}
-
-int
-mono_gc_pthread_detach (pthread_t thread)
-{
-       return pthread_detach (thread);
-}
-
-void
-mono_gc_pthread_exit (void *retval) 
-{
-       mono_thread_info_detach ();
-       pthread_exit (retval);
-       g_assert_not_reached ();
-}
-
-#endif /* USE_PTHREAD_INTERCEPT */
-
-/*
- * ######################################################################
- * ########  Write barriers
- * ######################################################################
- */
-
-/*
- * Note: the write barriers first do the needed GC work and then do the actual store:
- * this way the value is visible to the conservative GC scan after the write barrier
- * itself. If a GC interrupts the barrier in the middle, value will be kept alive by
- * the conservative scan, otherwise by the remembered set scan.
- */
-void
-mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
-{
-       HEAVY_STAT (++stat_wbarrier_set_field);
-       if (ptr_in_nursery (field_ptr)) {
-               *(void**)field_ptr = value;
-               return;
-       }
-       SGEN_LOG (8, "Adding remset at %p", field_ptr);
-       if (value)
-               binary_protocol_wbarrier (field_ptr, value, value->vtable);
-
-       remset.wbarrier_set_field (obj, field_ptr, value);
-}
-
-void
-mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
-{
-       HEAVY_STAT (++stat_wbarrier_set_arrayref);
-       if (ptr_in_nursery (slot_ptr)) {
-               *(void**)slot_ptr = value;
-               return;
-       }
-       SGEN_LOG (8, "Adding remset at %p", slot_ptr);
-       if (value)
-               binary_protocol_wbarrier (slot_ptr, value, value->vtable);
-
-       remset.wbarrier_set_arrayref (arr, slot_ptr, value);
-}
-
-void
-mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
-{
-       HEAVY_STAT (++stat_wbarrier_arrayref_copy);
-       /*This check can be done without taking a lock since dest_ptr array is pinned*/
-       if (ptr_in_nursery (dest_ptr) || count <= 0) {
-               mono_gc_memmove_aligned (dest_ptr, src_ptr, count * sizeof (gpointer));
-               return;
-       }
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       if (binary_protocol_is_heavy_enabled ()) {
-               int i;
-               for (i = 0; i < count; ++i) {
-                       gpointer dest = (gpointer*)dest_ptr + i;
-                       gpointer obj = *((gpointer*)src_ptr + i);
-                       if (obj)
-                               binary_protocol_wbarrier (dest, obj, (gpointer)LOAD_VTABLE (obj));
-               }
-       }
-#endif
-
-       remset.wbarrier_arrayref_copy (dest_ptr, src_ptr, count);
-}
-
-void
-mono_gc_wbarrier_generic_nostore (gpointer ptr)
-{
-       gpointer obj;
-
-       HEAVY_STAT (++stat_wbarrier_generic_store);
-
-#ifdef XDOMAIN_CHECKS_IN_WBARRIER
-       /* FIXME: ptr_in_heap must be called with the GC lock held */
-       if (xdomain_checks && *(MonoObject**)ptr && ptr_in_heap (ptr)) {
-               char *start = sgen_find_object_for_ptr (ptr);
-               MonoObject *value = *(MonoObject**)ptr;
-               LOCK_GC;
-               g_assert (start);
-               if (start) {
-                       MonoObject *obj = (MonoObject*)start;
-                       if (obj->vtable->domain != value->vtable->domain)
-                               g_assert (is_xdomain_ref_allowed (ptr, start, obj->vtable->domain));
-               }
-               UNLOCK_GC;
-       }
-#endif
-
-       obj = *(gpointer*)ptr;
-       if (obj)
-               binary_protocol_wbarrier (ptr, obj, (gpointer)LOAD_VTABLE (obj));
-
-       if (ptr_in_nursery (ptr) || ptr_on_stack (ptr)) {
-               SGEN_LOG (8, "Skipping remset at %p", ptr);
-               return;
-       }
-
-       /*
-        * We need to record old->old pointer locations for the
-        * concurrent collector.
-        */
-       if (!ptr_in_nursery (obj) && !concurrent_collection_in_progress) {
-               SGEN_LOG (8, "Skipping remset at %p", ptr);
-               return;
-       }
-
-       SGEN_LOG (8, "Adding remset at %p", ptr);
-
-       remset.wbarrier_generic_nostore (ptr);
-}
-
-void
-mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
-{
-       SGEN_LOG (8, "Wbarrier store at %p to %p (%s)", ptr, value, value ? safe_name (value) : "null");
-       SGEN_UPDATE_REFERENCE_ALLOW_NULL (ptr, value);
-       if (ptr_in_nursery (value))
-               mono_gc_wbarrier_generic_nostore (ptr);
-       sgen_dummy_use (value);
-}
-
-/* Same as mono_gc_wbarrier_generic_store () but performs the store
- * as an atomic operation with release semantics.
- */
-void
-mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
-{
-       HEAVY_STAT (++stat_wbarrier_generic_store_atomic);
-
-       SGEN_LOG (8, "Wbarrier atomic store at %p to %p (%s)", ptr, value, value ? safe_name (value) : "null");
-
-       InterlockedWritePointer (ptr, value);
-
-       if (ptr_in_nursery (value))
-               mono_gc_wbarrier_generic_nostore (ptr);
-
-       sgen_dummy_use (value);
-}
-
-void mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
-{
-       mword *dest = _dest;
-       mword *src = _src;
-
-       while (size) {
-               if (bitmap & 0x1)
-                       mono_gc_wbarrier_generic_store (dest, (MonoObject*)*src);
-               else
-                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, *src);
-               ++src;
-               ++dest;
-               size -= SIZEOF_VOID_P;
-               bitmap >>= 1;
-       }
-}
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj) do {                                       \
-               gpointer o = *(gpointer*)(ptr);                         \
-               if ((o)) {                                              \
-                       gpointer d = ((char*)dest) + ((char*)(ptr) - (char*)(obj)); \
-                       binary_protocol_wbarrier (d, o, (gpointer) LOAD_VTABLE (o)); \
-               }                                                       \
-       } while (0)
-
-static void
-scan_object_for_binary_protocol_copy_wbarrier (gpointer dest, char *start, mword desc)
-{
-#define SCAN_OBJECT_NOVTABLE
-#include "sgen-scan-object.h"
-}
-#endif
-
-void
-mono_gc_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *klass)
-{
-       HEAVY_STAT (++stat_wbarrier_value_copy);
-       g_assert (klass->valuetype);
-
-       SGEN_LOG (8, "Adding value remset at %p, count %d, descr %p for class %s (%p)", dest, count, klass->gc_descr, klass->name, klass);
-
-       if (ptr_in_nursery (dest) || ptr_on_stack (dest) || !SGEN_CLASS_HAS_REFERENCES (klass)) {
-               size_t element_size = mono_class_value_size (klass, NULL);
-               size_t size = count * element_size;
-               mono_gc_memmove_atomic (dest, src, size);               
-               return;
-       }
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       if (binary_protocol_is_heavy_enabled ()) {
-               size_t element_size = mono_class_value_size (klass, NULL);
-               int i;
-               for (i = 0; i < count; ++i) {
-                       scan_object_for_binary_protocol_copy_wbarrier ((char*)dest + i * element_size,
-                                       (char*)src + i * element_size - sizeof (MonoObject),
-                                       (mword) klass->gc_descr);
-               }
-       }
-#endif
-
-       remset.wbarrier_value_copy (dest, src, count, klass);
-}
-
-/**
- * mono_gc_wbarrier_object_copy:
- *
- * Write barrier to call when obj is the result of a clone or copy of an object.
- */
-void
-mono_gc_wbarrier_object_copy (MonoObject* obj, MonoObject *src)
-{
-       int size;
-
-       HEAVY_STAT (++stat_wbarrier_object_copy);
-
-       if (ptr_in_nursery (obj) || ptr_on_stack (obj)) {
-               size = mono_object_class (obj)->instance_size;
-               mono_gc_memmove_aligned ((char*)obj + sizeof (MonoObject), (char*)src + sizeof (MonoObject),
-                               size - sizeof (MonoObject));
-               return; 
-       }
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       if (binary_protocol_is_heavy_enabled ())
-               scan_object_for_binary_protocol_copy_wbarrier (obj, (char*)src, (mword) src->vtable->gc_descr);
-#endif
-
-       remset.wbarrier_object_copy (obj, src);
-}
-
-
-/*
- * ######################################################################
- * ########  Other mono public interface functions.
- * ######################################################################
- */
-
-#define REFS_SIZE 128
-typedef struct {
-       void *data;
-       MonoGCReferences callback;
-       int flags;
-       int count;
-       int called;
-       MonoObject *refs [REFS_SIZE];
-       uintptr_t offsets [REFS_SIZE];
-} HeapWalkInfo;
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {    \
-               if (*(ptr)) {   \
-                       if (hwi->count == REFS_SIZE) {  \
-                               hwi->callback ((MonoObject*)start, mono_object_class (start), hwi->called? 0: size, hwi->count, hwi->refs, hwi->offsets, hwi->data);    \
-                               hwi->count = 0; \
-                               hwi->called = 1;        \
-                       }       \
-                       hwi->offsets [hwi->count] = (char*)(ptr)-(char*)start;  \
-                       hwi->refs [hwi->count++] = *(ptr);      \
-               }       \
-       } while (0)
-
-static void
-collect_references (HeapWalkInfo *hwi, char *start, size_t size)
-{
-       mword desc = sgen_obj_get_descriptor (start);
-
-#include "sgen-scan-object.h"
-}
-
-static void
-walk_references (char *start, size_t size, void *data)
-{
-       HeapWalkInfo *hwi = data;
-       hwi->called = 0;
-       hwi->count = 0;
-       collect_references (hwi, start, size);
-       if (hwi->count || !hwi->called)
-               hwi->callback ((MonoObject*)start, mono_object_class (start), hwi->called? 0: size, hwi->count, hwi->refs, hwi->offsets, hwi->data);
-}
-
-/**
- * mono_gc_walk_heap:
- * @flags: flags for future use
- * @callback: a function pointer called for each object in the heap
- * @data: a user data pointer that is passed to callback
- *
- * This function can be used to iterate over all the live objects in the heap:
- * for each object, @callback is invoked, providing info about the object's
- * location in memory, its class, its size and the objects it references.
- * For each referenced object it's offset from the object address is
- * reported in the offsets array.
- * The object references may be buffered, so the callback may be invoked
- * multiple times for the same object: in all but the first call, the size
- * argument will be zero.
- * Note that this function can be only called in the #MONO_GC_EVENT_PRE_START_WORLD
- * profiler event handler.
- *
- * Returns: a non-zero value if the GC doesn't support heap walking
- */
-int
-mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data)
-{
-       HeapWalkInfo hwi;
-
-       hwi.flags = flags;
-       hwi.callback = callback;
-       hwi.data = data;
-
-       sgen_clear_nursery_fragments ();
-       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, walk_references, &hwi, FALSE);
-
-       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, walk_references, &hwi);
-       sgen_los_iterate_objects (walk_references, &hwi);
-
-       return 0;
-}
-
-void
-mono_gc_collect (int generation)
-{
-       LOCK_GC;
-       if (generation > 1)
-               generation = 1;
-       sgen_perform_collection (0, generation, "user request", TRUE);
-       UNLOCK_GC;
-}
-
-int
-mono_gc_max_generation (void)
-{
-       return 1;
-}
-
-int
-mono_gc_collection_count (int generation)
-{
-       if (generation == 0)
-               return gc_stats.minor_gc_count;
-       return gc_stats.major_gc_count;
-}
-
-int64_t
-mono_gc_get_used_size (void)
-{
-       gint64 tot = 0;
-       LOCK_GC;
-       tot = los_memory_usage;
-       tot += nursery_section->next_data - nursery_section->data;
-       tot += major_collector.get_used_size ();
-       /* FIXME: account for pinned objects */
-       UNLOCK_GC;
-       return tot;
-}
-
-int
-mono_gc_get_los_limit (void)
-{
-       return MAX_SMALL_OBJ_SIZE;
-}
-
-void
-mono_gc_set_string_length (MonoString *str, gint32 new_length)
-{
-       mono_unichar2 *new_end = str->chars + new_length;
-       
-       /* zero the discarded string. This null-delimits the string and allows 
-        * the space to be reclaimed by SGen. */
-        
-       if (nursery_canaries_enabled () && sgen_ptr_in_nursery (str)) {
-               CHECK_CANARY_FOR_OBJECT (str);
-               memset (new_end, 0, (str->length - new_length + 1) * sizeof (mono_unichar2) + CANARY_SIZE);
-               memcpy (new_end + 1 , CANARY_STRING, CANARY_SIZE);
-       } else {
-               memset (new_end, 0, (str->length - new_length + 1) * sizeof (mono_unichar2));
-       }
-       
-       str->length = new_length;
-}
-
-gboolean
-mono_gc_user_markers_supported (void)
-{
-       return TRUE;
-}
-
-gboolean
-mono_object_is_alive (MonoObject* o)
-{
-       return TRUE;
-}
-
-int
-mono_gc_get_generation (MonoObject *obj)
-{
-       if (ptr_in_nursery (obj))
-               return 0;
-       return 1;
-}
-
-void
-mono_gc_enable_events (void)
-{
-}
-
-void
-mono_gc_weak_link_add (void **link_addr, MonoObject *obj, gboolean track)
-{
-       sgen_register_disappearing_link (obj, link_addr, track, FALSE);
-}
-
-void
-mono_gc_weak_link_remove (void **link_addr, gboolean track)
-{
-       sgen_register_disappearing_link (NULL, link_addr, track, FALSE);
-}
-
-MonoObject*
-mono_gc_weak_link_get (void **link_addr)
-{
-       void * volatile *link_addr_volatile;
-       void *ptr;
-       MonoObject *obj;
- retry:
-       link_addr_volatile = link_addr;
-       ptr = (void*)*link_addr_volatile;
-       /*
-        * At this point we have a hidden pointer.  If the GC runs
-        * here, it will not recognize the hidden pointer as a
-        * reference, and if the object behind it is not referenced
-        * elsewhere, it will be freed.  Once the world is restarted
-        * we reveal the pointer, giving us a pointer to a freed
-        * object.  To make sure we don't return it, we load the
-        * hidden pointer again.  If it's still the same, we can be
-        * sure the object reference is valid.
-        */
-       if (ptr)
-               obj = (MonoObject*) REVEAL_POINTER (ptr);
-       else
-               return NULL;
-
-       mono_memory_barrier ();
-
-       /*
-        * During the second bridge processing step the world is
-        * running again.  That step processes all weak links once
-        * more to null those that refer to dead objects.  Before that
-        * is completed, those links must not be followed, so we
-        * conservatively wait for bridge processing when any weak
-        * link is dereferenced.
-        */
-       if (G_UNLIKELY (bridge_processing_in_progress))
-               mono_gc_wait_for_bridge_processing ();
-
-       if ((void*)*link_addr_volatile != ptr)
-               goto retry;
-
-       return obj;
-}
-
-gboolean
-mono_gc_ephemeron_array_add (MonoObject *obj)
-{
-       EphemeronLinkNode *node;
-
-       LOCK_GC;
-
-       node = sgen_alloc_internal (INTERNAL_MEM_EPHEMERON_LINK);
-       if (!node) {
-               UNLOCK_GC;
-               return FALSE;
-       }
-       node->array = (char*)obj;
-       node->next = ephemeron_list;
-       ephemeron_list = node;
-
-       SGEN_LOG (5, "Registered ephemeron array %p", obj);
-
-       UNLOCK_GC;
-       return TRUE;
-}
-
-gboolean
-mono_gc_set_allow_synchronous_major (gboolean flag)
-{
-       if (!major_collector.is_concurrent)
-               return flag;
-
-       allow_synchronous_major = flag;
-       return TRUE;
-}
-
-void*
-mono_gc_invoke_with_gc_lock (MonoGCLockedCallbackFunc func, void *data)
-{
-       void *result;
-       LOCK_INTERRUPTION;
-       result = func (data);
-       UNLOCK_INTERRUPTION;
-       return result;
-}
-
-gboolean
-mono_gc_is_gc_thread (void)
-{
-       gboolean result;
-       LOCK_GC;
-       result = mono_thread_info_current () != NULL;
-       UNLOCK_GC;
-       return result;
-}
-
-static gboolean
-is_critical_method (MonoMethod *method)
-{
-       return mono_runtime_is_critical_method (method) || sgen_is_critical_method (method);
-}
-
-void
-sgen_env_var_error (const char *env_var, const char *fallback, const char *description_format, ...)
-{
-       va_list ap;
-
-       va_start (ap, description_format);
-
-       fprintf (stderr, "Warning: In environment variable `%s': ", env_var);
-       vfprintf (stderr, description_format, ap);
-       if (fallback)
-               fprintf (stderr, " - %s", fallback);
-       fprintf (stderr, "\n");
-
-       va_end (ap);
-}
-
-static gboolean
-parse_double_in_interval (const char *env_var, const char *opt_name, const char *opt, double min, double max, double *result)
-{
-       char *endptr;
-       double val = strtod (opt, &endptr);
-       if (endptr == opt) {
-               sgen_env_var_error (env_var, "Using default value.", "`%s` must be a number.", opt_name);
-               return FALSE;
-       }
-       else if (val < min || val > max) {
-               sgen_env_var_error (env_var, "Using default value.", "`%s` must be between %.2f - %.2f.", opt_name, min, max);
-               return FALSE;
-       }
-       *result = val;
-       return TRUE;
-}
-
-static gboolean
-thread_in_critical_region (SgenThreadInfo *info)
-{
-       return info->in_critical_region;
-}
-
-void
-mono_gc_base_init (void)
-{
-       MonoThreadInfoCallbacks cb;
-       const char *env;
-       char **opts, **ptr;
-       char *major_collector_opt = NULL;
-       char *minor_collector_opt = NULL;
-       size_t max_heap = 0;
-       size_t soft_limit = 0;
-       int result;
-       int dummy;
-       gboolean debug_print_allowance = FALSE;
-       double allowance_ratio = 0, save_target = 0;
-       gboolean cement_enabled = TRUE;
-
-       mono_counters_init ();
-
-       do {
-               result = InterlockedCompareExchange (&gc_initialized, -1, 0);
-               switch (result) {
-               case 1:
-                       /* already inited */
-                       return;
-               case -1:
-                       /* being inited by another thread */
-                       g_usleep (1000);
-                       break;
-               case 0:
-                       /* we will init it */
-                       break;
-               default:
-                       g_assert_not_reached ();
-               }
-       } while (result != 0);
-
-       SGEN_TV_GETTIME (sgen_init_timestamp);
-
-       LOCK_INIT (gc_mutex);
-
-       pagesize = mono_pagesize ();
-       gc_debug_file = stderr;
-
-       cb.thread_register = sgen_thread_register;
-       cb.thread_detach = sgen_thread_detach;
-       cb.thread_unregister = sgen_thread_unregister;
-       cb.thread_attach = sgen_thread_attach;
-       cb.mono_method_is_critical = (gpointer)is_critical_method;
-       cb.mono_thread_in_critical_region = thread_in_critical_region;
-#ifndef HOST_WIN32
-       cb.thread_exit = mono_gc_pthread_exit;
-       cb.mono_gc_pthread_create = (gpointer)mono_gc_pthread_create;
-#endif
-
-       mono_threads_init (&cb, sizeof (SgenThreadInfo));
-
-       LOCK_INIT (sgen_interruption_mutex);
-
-       if ((env = g_getenv (MONO_GC_PARAMS_NAME))) {
-               opts = g_strsplit (env, ",", -1);
-               for (ptr = opts; *ptr; ++ptr) {
-                       char *opt = *ptr;
-                       if (g_str_has_prefix (opt, "major=")) {
-                               opt = strchr (opt, '=') + 1;
-                               major_collector_opt = g_strdup (opt);
-                       } else if (g_str_has_prefix (opt, "minor=")) {
-                               opt = strchr (opt, '=') + 1;
-                               minor_collector_opt = g_strdup (opt);
-                       }
-               }
-       } else {
-               opts = NULL;
-       }
-
-       init_stats ();
-       sgen_init_internal_allocator ();
-       sgen_init_nursery_allocator ();
-       sgen_init_fin_weak_hash ();
-       sgen_init_stw ();
-       sgen_init_hash_table ();
-       sgen_init_descriptors ();
-       sgen_init_gray_queues ();
-
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_SECTION, SGEN_SIZEOF_GC_MEM_SECTION);
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_FINALIZE_READY_ENTRY, sizeof (FinalizeReadyEntry));
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_GRAY_QUEUE, sizeof (GrayQueueSection));
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_EPHEMERON_LINK, sizeof (EphemeronLinkNode));
-
-#ifndef HAVE_KW_THREAD
-       mono_native_tls_alloc (&thread_info_key, NULL);
-#if defined(__APPLE__) || defined (HOST_WIN32)
-       /* 
-        * CEE_MONO_TLS requires the tls offset, not the key, so the code below only works on darwin,
-        * where the two are the same.
-        */
-       mono_tls_key_set_offset (TLS_KEY_SGEN_THREAD_INFO, thread_info_key);
-#endif
-#else
-       {
-               int tls_offset = -1;
-               MONO_THREAD_VAR_OFFSET (sgen_thread_info, tls_offset);
-               mono_tls_key_set_offset (TLS_KEY_SGEN_THREAD_INFO, tls_offset);
-       }
-#endif
-
-       /*
-        * This needs to happen before any internal allocations because
-        * it inits the small id which is required for hazard pointer
-        * operations.
-        */
-       sgen_os_init ();
-
-       mono_thread_info_attach (&dummy);
-
-       if (!minor_collector_opt) {
-               sgen_simple_nursery_init (&sgen_minor_collector);
-       } else {
-               if (!strcmp (minor_collector_opt, "simple")) {
-               use_simple_nursery:
-                       sgen_simple_nursery_init (&sgen_minor_collector);
-               } else if (!strcmp (minor_collector_opt, "split")) {
-                       sgen_split_nursery_init (&sgen_minor_collector);
-               } else {
-                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using `simple` instead.", "Unknown minor collector `%s'.", minor_collector_opt);
-                       goto use_simple_nursery;
-               }
-       }
-
-       if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep")) {
-       use_marksweep_major:
-               sgen_marksweep_init (&major_collector);
-       } else if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep-conc")) {
-               sgen_marksweep_conc_init (&major_collector);
-       } else {
-               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using `marksweep` instead.", "Unknown major collector `%s'.", major_collector_opt);
-               goto use_marksweep_major;
-       }
-
-       ///* Keep this the default for now */
-       /* Precise marking is broken on all supported targets. Disable until fixed. */
-       conservative_stack_mark = TRUE;
-
-       sgen_nursery_size = DEFAULT_NURSERY_SIZE;
-
-       if (major_collector.is_concurrent)
-               cement_enabled = FALSE;
-
-       if (opts) {
-               gboolean usage_printed = FALSE;
-
-               for (ptr = opts; *ptr; ++ptr) {
-                       char *opt = *ptr;
-                       if (!strcmp (opt, ""))
-                               continue;
-                       if (g_str_has_prefix (opt, "major="))
-                               continue;
-                       if (g_str_has_prefix (opt, "minor="))
-                               continue;
-                       if (g_str_has_prefix (opt, "max-heap-size=")) {
-                               size_t max_heap_candidate = 0;
-                               opt = strchr (opt, '=') + 1;
-                               if (*opt && mono_gc_parse_environment_string_extract_number (opt, &max_heap_candidate)) {
-                                       max_heap = (max_heap_candidate + mono_pagesize () - 1) & ~(size_t)(mono_pagesize () - 1);
-                                       if (max_heap != max_heap_candidate)
-                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Rounding up.", "`max-heap-size` size must be a multiple of %d.", mono_pagesize ());
-                               } else {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, NULL, "`max-heap-size` must be an integer.");
-                               }
-                               continue;
-                       }
-                       if (g_str_has_prefix (opt, "soft-heap-limit=")) {
-                               opt = strchr (opt, '=') + 1;
-                               if (*opt && mono_gc_parse_environment_string_extract_number (opt, &soft_limit)) {
-                                       if (soft_limit <= 0) {
-                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, NULL, "`soft-heap-limit` must be positive.");
-                                               soft_limit = 0;
-                                       }
-                               } else {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, NULL, "`soft-heap-limit` must be an integer.");
-                               }
-                               continue;
-                       }
-                       if (g_str_has_prefix (opt, "stack-mark=")) {
-                               opt = strchr (opt, '=') + 1;
-                               if (!strcmp (opt, "precise")) {
-                                       conservative_stack_mark = FALSE;
-                               } else if (!strcmp (opt, "conservative")) {
-                                       conservative_stack_mark = TRUE;
-                               } else {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, conservative_stack_mark ? "Using `conservative`." : "Using `precise`.",
-                                                       "Invalid value `%s` for `stack-mark` option, possible values are: `precise`, `conservative`.", opt);
-                               }
-                               continue;
-                       }
-                       if (g_str_has_prefix (opt, "bridge-implementation=")) {
-                               opt = strchr (opt, '=') + 1;
-                               sgen_set_bridge_implementation (opt);
-                               continue;
-                       }
-                       if (g_str_has_prefix (opt, "toggleref-test")) {
-                               sgen_register_test_toggleref_callback ();
-                               continue;
-                       }
-
-#ifdef USER_CONFIG
-                       if (g_str_has_prefix (opt, "nursery-size=")) {
-                               size_t val;
-                               opt = strchr (opt, '=') + 1;
-                               if (*opt && mono_gc_parse_environment_string_extract_number (opt, &val)) {
-                                       if ((val & (val - 1))) {
-                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`nursery-size` must be a power of two.");
-                                               continue;
-                                       }
-
-                                       if (val < SGEN_MAX_NURSERY_WASTE) {
-                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.",
-                                                               "`nursery-size` must be at least %d bytes.", SGEN_MAX_NURSERY_WASTE);
-                                               continue;
-                                       }
-
-                                       sgen_nursery_size = val;
-                                       sgen_nursery_bits = 0;
-                                       while (ONE_P << (++ sgen_nursery_bits) != sgen_nursery_size)
-                                               ;
-                               } else {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`nursery-size` must be an integer.");
-                                       continue;
-                               }
-                               continue;
-                       }
-#endif
-                       if (g_str_has_prefix (opt, "save-target-ratio=")) {
-                               double val;
-                               opt = strchr (opt, '=') + 1;
-                               if (parse_double_in_interval (MONO_GC_PARAMS_NAME, "save-target-ratio", opt,
-                                               SGEN_MIN_SAVE_TARGET_RATIO, SGEN_MAX_SAVE_TARGET_RATIO, &val)) {
-                                       save_target = val;
-                               }
-                               continue;
-                       }
-                       if (g_str_has_prefix (opt, "default-allowance-ratio=")) {
-                               double val;
-                               opt = strchr (opt, '=') + 1;
-                               if (parse_double_in_interval (MONO_GC_PARAMS_NAME, "default-allowance-ratio", opt,
-                                               SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO, SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO, &val)) {
-                                       allowance_ratio = val;
-                               }
-                               continue;
-                       }
-                       if (g_str_has_prefix (opt, "allow-synchronous-major=")) {
-                               if (!major_collector.is_concurrent) {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "`allow-synchronous-major` is only valid for the concurrent major collector.");
-                                       continue;
-                               }
-
-                               opt = strchr (opt, '=') + 1;
-
-                               if (!strcmp (opt, "yes")) {
-                                       allow_synchronous_major = TRUE;
-                               } else if (!strcmp (opt, "no")) {
-                                       allow_synchronous_major = FALSE;
-                               } else {
-                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`allow-synchronous-major` must be either `yes' or `no'.");
-                                       continue;
-                               }
-                       }
-
-                       if (!strcmp (opt, "cementing")) {
-                               cement_enabled = TRUE;
-                               continue;
-                       }
-                       if (!strcmp (opt, "no-cementing")) {
-                               cement_enabled = FALSE;
-                               continue;
-                       }
-
-                       if (major_collector.handle_gc_param && major_collector.handle_gc_param (opt))
-                               continue;
-
-                       if (sgen_minor_collector.handle_gc_param && sgen_minor_collector.handle_gc_param (opt))
-                               continue;
-
-                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "Unknown option `%s`.", opt);
-
-                       if (usage_printed)
-                               continue;
-
-                       fprintf (stderr, "\n%s must be a comma-delimited list of one or more of the following:\n", MONO_GC_PARAMS_NAME);
-                       fprintf (stderr, "  max-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
-                       fprintf (stderr, "  soft-heap-limit=n (where N is an integer, possibly with a k, m or a g suffix)\n");
-                       fprintf (stderr, "  nursery-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
-                       fprintf (stderr, "  major=COLLECTOR (where COLLECTOR is `marksweep', `marksweep-conc', `marksweep-par')\n");
-                       fprintf (stderr, "  minor=COLLECTOR (where COLLECTOR is `simple' or `split')\n");
-                       fprintf (stderr, "  wbarrier=WBARRIER (where WBARRIER is `remset' or `cardtable')\n");
-                       fprintf (stderr, "  stack-mark=MARK-METHOD (where MARK-METHOD is 'precise' or 'conservative')\n");
-                       fprintf (stderr, "  [no-]cementing\n");
-                       if (major_collector.is_concurrent)
-                               fprintf (stderr, "  allow-synchronous-major=FLAG (where FLAG is `yes' or `no')\n");
-                       if (major_collector.print_gc_param_usage)
-                               major_collector.print_gc_param_usage ();
-                       if (sgen_minor_collector.print_gc_param_usage)
-                               sgen_minor_collector.print_gc_param_usage ();
-                       fprintf (stderr, " Experimental options:\n");
-                       fprintf (stderr, "  save-target-ratio=R (where R must be between %.2f - %.2f).\n", SGEN_MIN_SAVE_TARGET_RATIO, SGEN_MAX_SAVE_TARGET_RATIO);
-                       fprintf (stderr, "  default-allowance-ratio=R (where R must be between %.2f - %.2f).\n", SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO, SGEN_MAX_ALLOWANCE_NURSERY_SIZE_RATIO);
-                       fprintf (stderr, "\n");
-
-                       usage_printed = TRUE;
-               }
-               g_strfreev (opts);
-       }
-
-       if (major_collector.is_concurrent)
-               sgen_workers_init (1);
-
-       if (major_collector_opt)
-               g_free (major_collector_opt);
-
-       if (minor_collector_opt)
-               g_free (minor_collector_opt);
-
-       alloc_nursery ();
-
-       if (major_collector.is_concurrent && cement_enabled) {
-               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "`cementing` is not supported on concurrent major collectors.");
-               cement_enabled = FALSE;
-       }
-
-       sgen_cement_init (cement_enabled);
-
-       if ((env = g_getenv (MONO_GC_DEBUG_NAME))) {
-               gboolean usage_printed = FALSE;
-
-               opts = g_strsplit (env, ",", -1);
-               for (ptr = opts; ptr && *ptr; ptr ++) {
-                       char *opt = *ptr;
-                       if (!strcmp (opt, ""))
-                               continue;
-                       if (opt [0] >= '0' && opt [0] <= '9') {
-                               gc_debug_level = atoi (opt);
-                               opt++;
-                               if (opt [0] == ':')
-                                       opt++;
-                               if (opt [0]) {
-                                       char *rf = g_strdup_printf ("%s.%d", opt, mono_process_current_pid ());
-                                       gc_debug_file = fopen (rf, "wb");
-                                       if (!gc_debug_file)
-                                               gc_debug_file = stderr;
-                                       g_free (rf);
-                               }
-                       } else if (!strcmp (opt, "print-allowance")) {
-                               debug_print_allowance = TRUE;
-                       } else if (!strcmp (opt, "print-pinning")) {
-                               do_pin_stats = TRUE;
-                       } else if (!strcmp (opt, "verify-before-allocs")) {
-                               verify_before_allocs = 1;
-                               has_per_allocation_action = TRUE;
-                       } else if (g_str_has_prefix (opt, "verify-before-allocs=")) {
-                               char *arg = strchr (opt, '=') + 1;
-                               verify_before_allocs = atoi (arg);
-                               has_per_allocation_action = TRUE;
-                       } else if (!strcmp (opt, "collect-before-allocs")) {
-                               collect_before_allocs = 1;
-                               has_per_allocation_action = TRUE;
-                       } else if (g_str_has_prefix (opt, "collect-before-allocs=")) {
-                               char *arg = strchr (opt, '=') + 1;
-                               has_per_allocation_action = TRUE;
-                               collect_before_allocs = atoi (arg);
-                       } else if (!strcmp (opt, "verify-before-collections")) {
-                               whole_heap_check_before_collection = TRUE;
-                       } else if (!strcmp (opt, "check-at-minor-collections")) {
-                               consistency_check_at_minor_collection = TRUE;
-                               nursery_clear_policy = CLEAR_AT_GC;
-                       } else if (!strcmp (opt, "mod-union-consistency-check")) {
-                               if (!major_collector.is_concurrent) {
-                                       sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "`mod-union-consistency-check` only works with concurrent major collector.");
-                                       continue;
-                               }
-                               mod_union_consistency_check = TRUE;
-                       } else if (!strcmp (opt, "check-mark-bits")) {
-                               check_mark_bits_after_major_collection = TRUE;
-                       } else if (!strcmp (opt, "check-nursery-pinned")) {
-                               check_nursery_objects_pinned = TRUE;
-                       } else if (!strcmp (opt, "xdomain-checks")) {
-                               xdomain_checks = TRUE;
-                       } else if (!strcmp (opt, "clear-at-gc")) {
-                               nursery_clear_policy = CLEAR_AT_GC;
-                       } else if (!strcmp (opt, "clear-nursery-at-gc")) {
-                               nursery_clear_policy = CLEAR_AT_GC;
-                       } else if (!strcmp (opt, "clear-at-tlab-creation")) {
-                               nursery_clear_policy = CLEAR_AT_TLAB_CREATION;
-                       } else if (!strcmp (opt, "debug-clear-at-tlab-creation")) {
-                               nursery_clear_policy = CLEAR_AT_TLAB_CREATION_DEBUG;
-                       } else if (!strcmp (opt, "check-scan-starts")) {
-                               do_scan_starts_check = TRUE;
-                       } else if (!strcmp (opt, "verify-nursery-at-minor-gc")) {
-                               do_verify_nursery = TRUE;
-                       } else if (!strcmp (opt, "check-concurrent")) {
-                               if (!major_collector.is_concurrent) {
-                                       sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "`check-concurrent` only works with concurrent major collectors.");
-                                       continue;
-                               }
-                               do_concurrent_checks = TRUE;
-                       } else if (!strcmp (opt, "dump-nursery-at-minor-gc")) {
-                               do_dump_nursery_content = TRUE;
-                       } else if (!strcmp (opt, "no-managed-allocator")) {
-                               sgen_set_use_managed_allocator (FALSE);
-                       } else if (!strcmp (opt, "disable-minor")) {
-                               disable_minor_collections = TRUE;
-                       } else if (!strcmp (opt, "disable-major")) {
-                               disable_major_collections = TRUE;
-                       } else if (g_str_has_prefix (opt, "heap-dump=")) {
-                               char *filename = strchr (opt, '=') + 1;
-                               nursery_clear_policy = CLEAR_AT_GC;
-                               heap_dump_file = fopen (filename, "w");
-                               if (heap_dump_file) {
-                                       fprintf (heap_dump_file, "<sgen-dump>\n");
-                                       do_pin_stats = TRUE;
-                               }
-                       } else if (g_str_has_prefix (opt, "binary-protocol=")) {
-                               char *filename = strchr (opt, '=') + 1;
-                               char *colon = strrchr (filename, ':');
-                               size_t limit = -1;
-                               if (colon) {
-                                       if (!mono_gc_parse_environment_string_extract_number (colon + 1, &limit)) {
-                                               sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring limit.", "Binary protocol file size limit must be an integer.");
-                                               limit = -1;
-                                       }
-                                       *colon = '\0';
-                               }
-                               binary_protocol_init (filename, (long long)limit);
-                       } else if (!strcmp (opt, "nursery-canaries")) {
-                               do_verify_nursery = TRUE;
-                               sgen_set_use_managed_allocator (FALSE);
-                               enable_nursery_canaries = TRUE;
-                       } else if (!strcmp (opt, "do-not-finalize")) {
-                               do_not_finalize = TRUE;
-                       } else if (!strcmp (opt, "log-finalizers")) {
-                               log_finalizers = TRUE;
-                       } else if (!sgen_bridge_handle_gc_debug (opt)) {
-                               sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "Unknown option `%s`.", opt);
-
-                               if (usage_printed)
-                                       continue;
-
-                               fprintf (stderr, "\n%s must be of the format [<l>[:<filename>]|<option>]+ where <l> is a debug level 0-9.\n", MONO_GC_DEBUG_NAME);
-                               fprintf (stderr, "Valid <option>s are:\n");
-                               fprintf (stderr, "  collect-before-allocs[=<n>]\n");
-                               fprintf (stderr, "  verify-before-allocs[=<n>]\n");
-                               fprintf (stderr, "  check-at-minor-collections\n");
-                               fprintf (stderr, "  check-mark-bits\n");
-                               fprintf (stderr, "  check-nursery-pinned\n");
-                               fprintf (stderr, "  verify-before-collections\n");
-                               fprintf (stderr, "  verify-nursery-at-minor-gc\n");
-                               fprintf (stderr, "  dump-nursery-at-minor-gc\n");
-                               fprintf (stderr, "  disable-minor\n");
-                               fprintf (stderr, "  disable-major\n");
-                               fprintf (stderr, "  xdomain-checks\n");
-                               fprintf (stderr, "  check-concurrent\n");
-                               fprintf (stderr, "  clear-[nursery-]at-gc\n");
-                               fprintf (stderr, "  clear-at-tlab-creation\n");
-                               fprintf (stderr, "  debug-clear-at-tlab-creation\n");
-                               fprintf (stderr, "  check-scan-starts\n");
-                               fprintf (stderr, "  no-managed-allocator\n");
-                               fprintf (stderr, "  print-allowance\n");
-                               fprintf (stderr, "  print-pinning\n");
-                               fprintf (stderr, "  heap-dump=<filename>\n");
-                               fprintf (stderr, "  binary-protocol=<filename>[:<file-size-limit>]\n");
-                               fprintf (stderr, "  nursery-canaries\n");
-                               fprintf (stderr, "  do-not-finalize\n");
-                               fprintf (stderr, "  log-finalizers\n");
-                               sgen_bridge_print_gc_debug_usage ();
-                               fprintf (stderr, "\n");
-
-                               usage_printed = TRUE;
-                       }
-               }
-               g_strfreev (opts);
-       }
-
-       if (check_mark_bits_after_major_collection)
-               nursery_clear_policy = CLEAR_AT_GC;
-
-       if (major_collector.post_param_init)
-               major_collector.post_param_init (&major_collector);
-
-       sgen_memgov_init (max_heap, soft_limit, debug_print_allowance, allowance_ratio, save_target);
-
-       memset (&remset, 0, sizeof (remset));
-
-       sgen_card_table_init (&remset);
-
-       gc_initialized = 1;
-}
-
-const char *
-mono_gc_get_gc_name (void)
-{
-       return "sgen";
-}
-
-static MonoMethod *write_barrier_conc_method;
-static MonoMethod *write_barrier_noconc_method;
-
-gboolean
-sgen_is_critical_method (MonoMethod *method)
-{
-       return (method == write_barrier_conc_method || method == write_barrier_noconc_method || sgen_is_managed_allocator (method));
-}
-
-gboolean
-sgen_has_critical_method (void)
-{
-       return write_barrier_conc_method || write_barrier_noconc_method || sgen_has_managed_allocator ();
-}
-
-#ifndef DISABLE_JIT
-
-static void
-emit_nursery_check (MonoMethodBuilder *mb, int *nursery_check_return_labels, gboolean is_concurrent)
-{
-       int shifted_nursery_start = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-
-       memset (nursery_check_return_labels, 0, sizeof (int) * 2);
-       // if (ptr_in_nursery (ptr)) return;
-       /*
-        * Masking out the bits might be faster, but we would have to use 64 bit
-        * immediates, which might be slower.
-        */
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_LDPTR_NURSERY_START);
-       mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
-       mono_mb_emit_byte (mb, CEE_SHR_UN);
-       mono_mb_emit_stloc (mb, shifted_nursery_start);
-
-       mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
-       mono_mb_emit_byte (mb, CEE_SHR_UN);
-       mono_mb_emit_ldloc (mb, shifted_nursery_start);
-       nursery_check_return_labels [0] = mono_mb_emit_branch (mb, CEE_BEQ);
-
-       if (!is_concurrent) {
-               // if (!ptr_in_nursery (*ptr)) return;
-               mono_mb_emit_ldarg (mb, 0);
-               mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
-               mono_mb_emit_byte (mb, CEE_SHR_UN);
-               mono_mb_emit_ldloc (mb, shifted_nursery_start);
-               nursery_check_return_labels [1] = mono_mb_emit_branch (mb, CEE_BNE_UN);
-       }
-}
-#endif
-
-MonoMethod*
-mono_gc_get_specific_write_barrier (gboolean is_concurrent)
-{
-       MonoMethod *res;
-       MonoMethodBuilder *mb;
-       MonoMethodSignature *sig;
-       MonoMethod **write_barrier_method_addr;
-#ifdef MANAGED_WBARRIER
-       int i, nursery_check_labels [2];
-
-#ifdef HAVE_KW_THREAD
-       int stack_end_offset = -1;
-
-       MONO_THREAD_VAR_OFFSET (stack_end, stack_end_offset);
-       g_assert (stack_end_offset != -1);
-#endif
-#endif
-
-       // FIXME: Maybe create a separate version for ctors (the branch would be
-       // correctly predicted more times)
-       if (is_concurrent)
-               write_barrier_method_addr = &write_barrier_conc_method;
-       else
-               write_barrier_method_addr = &write_barrier_noconc_method;
-
-       if (*write_barrier_method_addr)
-               return *write_barrier_method_addr;
-
-       /* Create the IL version of mono_gc_barrier_generic_store () */
-       sig = mono_metadata_signature_alloc (mono_defaults.corlib, 1);
-       sig->ret = &mono_defaults.void_class->byval_arg;
-       sig->params [0] = &mono_defaults.int_class->byval_arg;
-
-       if (is_concurrent)
-               mb = mono_mb_new (mono_defaults.object_class, "wbarrier_conc", MONO_WRAPPER_WRITE_BARRIER);
-       else
-               mb = mono_mb_new (mono_defaults.object_class, "wbarrier_noconc", MONO_WRAPPER_WRITE_BARRIER);
-
-#ifndef DISABLE_JIT
-#ifdef MANAGED_WBARRIER
-       emit_nursery_check (mb, nursery_check_labels, is_concurrent);
-       /*
-       addr = sgen_cardtable + ((address >> CARD_BITS) & CARD_MASK)
-       *addr = 1;
-
-       sgen_cardtable:
-               LDC_PTR sgen_cardtable
-
-       address >> CARD_BITS
-               LDARG_0
-               LDC_I4 CARD_BITS
-               SHR_UN
-       if (SGEN_HAVE_OVERLAPPING_CARDS) {
-               LDC_PTR card_table_mask
-               AND
-       }
-       AND
-       ldc_i4_1
-       stind_i1
-       */
-       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
-       mono_mb_emit_byte (mb, CEE_MONO_LDPTR_CARD_TABLE);
-       mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_icon (mb, CARD_BITS);
-       mono_mb_emit_byte (mb, CEE_SHR_UN);
-       mono_mb_emit_byte (mb, CEE_CONV_I);
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-#if SIZEOF_VOID_P == 8
-       mono_mb_emit_icon8 (mb, CARD_MASK);
-#else
-       mono_mb_emit_icon (mb, CARD_MASK);
-#endif
-       mono_mb_emit_byte (mb, CEE_CONV_I);
-       mono_mb_emit_byte (mb, CEE_AND);
-#endif
-       mono_mb_emit_byte (mb, CEE_ADD);
-       mono_mb_emit_icon (mb, 1);
-       mono_mb_emit_byte (mb, CEE_STIND_I1);
-
-       // return;
-       for (i = 0; i < 2; ++i) {
-               if (nursery_check_labels [i])
-                       mono_mb_patch_branch (mb, nursery_check_labels [i]);
-       }
-       mono_mb_emit_byte (mb, CEE_RET);
-#else
-       mono_mb_emit_ldarg (mb, 0);
-       mono_mb_emit_icall (mb, mono_gc_wbarrier_generic_nostore);
-       mono_mb_emit_byte (mb, CEE_RET);
-#endif
-#endif
-       res = mono_mb_create_method (mb, sig, 16);
-       mono_mb_free (mb);
-
-       LOCK_GC;
-       if (*write_barrier_method_addr) {
-               /* Already created */
-               mono_free_method (res);
-       } else {
-               /* double-checked locking */
-               mono_memory_barrier ();
-               *write_barrier_method_addr = res;
-       }
-       UNLOCK_GC;
-
-       return *write_barrier_method_addr;
-}
-
-MonoMethod*
-mono_gc_get_write_barrier (void)
-{
-       return mono_gc_get_specific_write_barrier (major_collector.is_concurrent);
-}
-
-char*
-mono_gc_get_description (void)
-{
-       return g_strdup ("sgen");
-}
-
-void
-mono_gc_set_desktop_mode (void)
-{
-}
-
-gboolean
-mono_gc_is_moving (void)
-{
-       return TRUE;
-}
-
-gboolean
-mono_gc_is_disabled (void)
-{
-       return FALSE;
-}
-
-#ifdef HOST_WIN32
-BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved)
-{
-       return TRUE;
-}
-#endif
-
-NurseryClearPolicy
-sgen_get_nursery_clear_policy (void)
-{
-       return nursery_clear_policy;
-}
-
-MonoVTable*
-sgen_get_array_fill_vtable (void)
-{
-       if (!array_fill_vtable) {
-               static MonoClass klass;
-               static char _vtable[sizeof(MonoVTable)+8];
-               MonoVTable* vtable = (MonoVTable*) ALIGN_TO(_vtable, 8);
-               gsize bmap;
-
-               MonoDomain *domain = mono_get_root_domain ();
-               g_assert (domain);
-
-               klass.element_class = mono_defaults.byte_class;
-               klass.rank = 1;
-               klass.instance_size = sizeof (MonoArray);
-               klass.sizes.element_size = 1;
-               klass.name = "array_filler_type";
-
-               vtable->klass = &klass;
-               bmap = 0;
-               vtable->gc_descr = mono_gc_make_descr_for_array (TRUE, &bmap, 0, 1);
-               vtable->rank = 1;
-
-               array_fill_vtable = vtable;
-       }
-       return array_fill_vtable;
-}
-
-void
-sgen_gc_lock (void)
-{
-       LOCK_GC;
-}
-
-void
-sgen_gc_unlock (void)
-{
-       gboolean try_free = sgen_try_free_some_memory;
-       sgen_try_free_some_memory = FALSE;
-       mono_mutex_unlock (&gc_mutex);
-       MONO_GC_UNLOCKED ();
-       if (try_free)
-               mono_thread_hazardous_try_free_some ();
-}
-
-void
-sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
-{
-       major_collector.iterate_live_block_ranges (callback);
-}
-
-void
-sgen_major_collector_scan_card_table (SgenGrayQueue *queue)
-{
-       major_collector.scan_card_table (FALSE, queue);
-}
-
-SgenMajorCollector*
-sgen_get_major_collector (void)
-{
-       return &major_collector;
-}
-
-void mono_gc_set_skip_thread (gboolean skip)
-{
-       SgenThreadInfo *info = mono_thread_info_current ();
-
-       LOCK_GC;
-       info->gc_disabled = skip;
-       UNLOCK_GC;
-}
-
-SgenRememberedSet*
-sgen_get_remset (void)
-{
-       return &remset;
-}
-
-guint
-mono_gc_get_vtable_bits (MonoClass *class)
-{
-       guint res = 0;
-       /* FIXME move this to the bridge code */
-       if (sgen_need_bridge_processing ()) {
-               switch (sgen_bridge_class_kind (class)) {
-               case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS:
-               case GC_BRIDGE_OPAQUE_BRIDGE_CLASS:
-                       res = SGEN_GC_BIT_BRIDGE_OBJECT;
-                       break;
-               case GC_BRIDGE_OPAQUE_CLASS:
-                       res = SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT;
-                       break;
-               case GC_BRIDGE_TRANSPARENT_CLASS:
-                       break;
-               }
-       }
-       if (fin_callbacks.is_class_finalization_aware) {
-               if (fin_callbacks.is_class_finalization_aware (class))
-                       res |= SGEN_GC_BIT_FINALIZER_AWARE;
-       }
-       return res;
-}
-
-void
-mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size)
-{
-       // FIXME:
-}
-
-
-void
-sgen_check_whole_heap_stw (void)
-{
-       sgen_stop_world (0);
-       sgen_clear_nursery_fragments ();
-       sgen_check_whole_heap (FALSE);
-       sgen_restart_world (0, NULL);
-}
-
-void
-sgen_gc_event_moves (void)
-{
-       if (moved_objects_idx) {
-               mono_profiler_gc_moves (moved_objects, moved_objects_idx);
-               moved_objects_idx = 0;
-       }
-}
-
-gint64
-sgen_timestamp (void)
-{
-       SGEN_TV_DECLARE (timestamp);
-       SGEN_TV_GETTIME (timestamp);
-       return SGEN_TV_ELAPSED (sgen_init_timestamp, timestamp);
-}
-
-void
-mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks)
-{
-       if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION)
-               g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version);
-
-       fin_callbacks = *callbacks;
-}
-
-
-
-
-
-#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-gc.h b/mono/metadata/sgen-gc.h
deleted file mode 100644 (file)
index f9c0967..0000000
+++ /dev/null
@@ -1,1220 +0,0 @@
-/*
- * sgen-gc.c: Simple generational GC.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGENGC_H__
-#define __MONO_SGENGC_H__
-
-/* pthread impl */
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-typedef struct _SgenThreadInfo SgenThreadInfo;
-#undef THREAD_INFO_TYPE
-#define THREAD_INFO_TYPE SgenThreadInfo
-
-#include <glib.h>
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#include <mono/utils/mono-compiler.h>
-#include <mono/utils/mono-threads.h>
-#include <mono/utils/dtrace.h>
-#include <mono/utils/mono-logger-internal.h>
-#include <mono/utils/atomic.h>
-#include <mono/utils/mono-mutex.h>
-#include <mono/metadata/class-internals.h>
-#include <mono/metadata/object-internals.h>
-#include <mono/metadata/sgen-conf.h>
-#include <mono/metadata/sgen-archdep.h>
-#include <mono/metadata/sgen-descriptor.h>
-#include <mono/metadata/sgen-gray.h>
-#include <mono/metadata/sgen-hash-table.h>
-#include <mono/metadata/sgen-bridge.h>
-#include <mono/metadata/sgen-protocol.h>
-
-/* The method used to clear the nursery */
-/* Clearing at nursery collections is the safest, but has bad interactions with caches.
- * Clearing at TLAB creation is much faster, but more complex and it might expose hard
- * to find bugs.
- */
-typedef enum {
-       CLEAR_AT_GC,
-       CLEAR_AT_TLAB_CREATION,
-       CLEAR_AT_TLAB_CREATION_DEBUG
-} NurseryClearPolicy;
-
-NurseryClearPolicy sgen_get_nursery_clear_policy (void);
-
-#define SGEN_TV_DECLARE(name) gint64 name
-#define SGEN_TV_GETTIME(tv) tv = mono_100ns_ticks ()
-#define SGEN_TV_ELAPSED(start,end) (int)((end-start))
-
-#if !defined(__MACH__) && !MONO_MACH_ARCH_SUPPORTED && defined(HAVE_PTHREAD_KILL)
-#define SGEN_POSIX_STW 1
-#endif
-
-/* eventually share with MonoThread? */
-/*
- * This structure extends the MonoThreadInfo structure.
- */
-struct _SgenThreadInfo {
-       MonoThreadInfo info;
-       /*
-       This is set to TRUE when STW fails to suspend a thread, most probably because the
-       underlying thread is dead.
-       */
-       gboolean skip, suspend_done;
-       volatile int in_critical_region;
-
-       /*
-       This is set the argument of mono_gc_set_skip_thread.
-
-       A thread that knowingly holds no managed state can call this
-       function around blocking loops to reduce the GC burden by not
-       been scanned.
-       */
-       gboolean gc_disabled;
-       void *stack_end;
-       void *stack_start;
-       void *stack_start_limit;
-       char **tlab_next_addr;
-       char **tlab_start_addr;
-       char **tlab_temp_end_addr;
-       char **tlab_real_end_addr;
-       gpointer runtime_data;
-
-#ifdef SGEN_POSIX_STW
-       /* This is -1 until the first suspend. */
-       int signal;
-       /* FIXME: kill this, we only use signals on systems that have rt-posix, which doesn't have issues with duplicates. */
-       unsigned int stop_count; /* to catch duplicate signals. */
-#endif
-
-       gpointer stopped_ip;    /* only valid if the thread is stopped */
-       MonoDomain *stopped_domain; /* dsto */
-
-       /*FIXME pretty please finish killing ARCH_NUM_REGS */
-#ifdef USE_MONO_CTX
-       MonoContext ctx;                /* ditto */
-#else
-       gpointer regs[ARCH_NUM_REGS];       /* ditto */
-#endif
-
-#ifndef HAVE_KW_THREAD
-       char *tlab_start;
-       char *tlab_next;
-       char *tlab_temp_end;
-       char *tlab_real_end;
-#endif
-};
-
-/*
- * The nursery section uses this struct.
- */
-typedef struct _GCMemSection GCMemSection;
-struct _GCMemSection {
-       char *data;
-       mword size;
-       /* pointer where more data could be allocated if it fits */
-       char *next_data;
-       char *end_data;
-       /*
-        * scan starts is an array of pointers to objects equally spaced in the allocation area
-        * They let use quickly find pinned objects from pinning pointers.
-        */
-       char **scan_starts;
-       /* in major collections indexes in the pin_queue for objects that pin this section */
-       size_t pin_queue_first_entry;
-       size_t pin_queue_last_entry;
-       size_t num_scan_start;
-};
-
-/*
- * Recursion is not allowed for the thread lock.
- */
-#define LOCK_DECLARE(name) mono_mutex_t name
-/* if changing LOCK_INIT to something that isn't idempotent, look at
-   its use in mono_gc_base_init in sgen-gc.c */
-#define LOCK_INIT(name)        mono_mutex_init (&(name))
-#define LOCK_GC do {                                           \
-               MONO_PREPARE_BLOCKING   \
-               mono_mutex_lock (&gc_mutex);                    \
-               MONO_GC_LOCKED ();                              \
-               MONO_FINISH_BLOCKING    \
-       } while (0)
-#define UNLOCK_GC do { sgen_gc_unlock (); } while (0)
-
-extern LOCK_DECLARE (sgen_interruption_mutex);
-
-#define LOCK_INTERRUPTION mono_mutex_lock (&sgen_interruption_mutex)
-#define UNLOCK_INTERRUPTION mono_mutex_unlock (&sgen_interruption_mutex)
-
-/* FIXME: Use InterlockedAdd & InterlockedAdd64 to reduce the CAS cost. */
-#define SGEN_CAS_PTR   InterlockedCompareExchangePointer
-#define SGEN_ATOMIC_ADD(x,i)   do {                                    \
-               int __old_x;                                            \
-               do {                                                    \
-                       __old_x = (x);                                  \
-               } while (InterlockedCompareExchange (&(x), __old_x + (i), __old_x) != __old_x); \
-       } while (0)
-#define SGEN_ATOMIC_ADD_P(x,i) do { \
-               size_t __old_x;                                            \
-               do {                                                    \
-                       __old_x = (x);                                  \
-               } while (InterlockedCompareExchangePointer ((void**)&(x), (void*)(__old_x + (i)), (void*)__old_x) != (void*)__old_x); \
-       } while (0)
-
-
-#ifndef HOST_WIN32
-/* we intercept pthread_create calls to know which threads exist */
-#define USE_PTHREAD_INTERCEPT 1
-#endif
-
-#ifdef HEAVY_STATISTICS
-extern guint64 stat_objects_alloced_degraded;
-extern guint64 stat_bytes_alloced_degraded;
-extern guint64 stat_copy_object_called_major;
-extern guint64 stat_objects_copied_major;
-#endif
-
-#define SGEN_ASSERT(level, a, ...) do {        \
-       if (G_UNLIKELY ((level) <= SGEN_MAX_ASSERT_LEVEL && !(a))) {    \
-               g_error (__VA_ARGS__);  \
-} } while (0)
-
-
-#define SGEN_LOG(level, format, ...) do {      \
-       if (G_UNLIKELY ((level) <= SGEN_MAX_DEBUG_LEVEL && (level) <= gc_debug_level)) {        \
-               mono_gc_printf (gc_debug_file, format, ##__VA_ARGS__);  \
-} } while (0)
-
-#define SGEN_COND_LOG(level, cond, format, ...) do {   \
-       if (G_UNLIKELY ((level) <= SGEN_MAX_DEBUG_LEVEL && (level) <= gc_debug_level)) {        \
-               if (cond)       \
-                       mono_gc_printf (gc_debug_file, format, ##__VA_ARGS__);  \
-} } while (0)
-
-extern int gc_debug_level;
-extern FILE* gc_debug_file;
-
-extern int current_collection_generation;
-
-extern unsigned int sgen_global_stop_count;
-
-extern gboolean bridge_processing_in_progress;
-extern MonoGCBridgeCallbacks bridge_callbacks;
-
-extern int num_ready_finalizers;
-
-#define SGEN_ALLOC_ALIGN               8
-#define SGEN_ALLOC_ALIGN_BITS  3
-
-/* s must be non-negative */
-#define SGEN_CAN_ALIGN_UP(s)           ((s) <= SIZE_MAX - (SGEN_ALLOC_ALIGN - 1))
-#define SGEN_ALIGN_UP(s)               (((s)+(SGEN_ALLOC_ALIGN-1)) & ~(SGEN_ALLOC_ALIGN-1))
-
-#if SIZEOF_VOID_P == 4
-#define ONE_P 1
-#else
-#define ONE_P 1ll
-#endif
-
-/*
- * The link pointer is hidden by negating each bit.  We use the lowest
- * bit of the link (before negation) to store whether it needs
- * resurrection tracking.
- */
-#define HIDE_POINTER(p,t)      ((gpointer)(~((size_t)(p)|((t)?1:0))))
-#define REVEAL_POINTER(p)      ((gpointer)((~(size_t)(p))&~3L))
-
-#define SGEN_PTR_IN_NURSERY(p,bits,start,end)  (((mword)(p) & ~((1 << (bits)) - 1)) == (mword)(start))
-
-#ifdef USER_CONFIG
-
-/* good sizes are 512KB-1MB: larger ones increase a lot memzeroing time */
-#define DEFAULT_NURSERY_SIZE (sgen_nursery_size)
-extern size_t sgen_nursery_size;
-/* The number of trailing 0 bits in DEFAULT_NURSERY_SIZE */
-#define DEFAULT_NURSERY_BITS (sgen_nursery_bits)
-extern int sgen_nursery_bits;
-
-#else
-
-#define DEFAULT_NURSERY_SIZE (4*1024*1024)
-#define DEFAULT_NURSERY_BITS 22
-
-#endif
-
-extern char *sgen_nursery_start;
-extern char *sgen_nursery_end;
-
-static inline MONO_ALWAYS_INLINE gboolean
-sgen_ptr_in_nursery (void *p)
-{
-       return SGEN_PTR_IN_NURSERY ((p), DEFAULT_NURSERY_BITS, sgen_nursery_start, sgen_nursery_end);
-}
-
-static inline MONO_ALWAYS_INLINE char*
-sgen_get_nursery_start (void)
-{
-       return sgen_nursery_start;
-}
-
-static inline MONO_ALWAYS_INLINE char*
-sgen_get_nursery_end (void)
-{
-       return sgen_nursery_end;
-}
-
-/* Structure that corresponds to a MonoVTable: desc is a mword so requires
- * no cast from a pointer to an integer
- */
-typedef struct {
-       MonoClass *klass;
-       mword desc;
-} GCVTable;
-
-/*
- * We use the lowest three bits in the vtable pointer of objects to tag whether they're
- * forwarded, pinned, and/or cemented.  These are the valid states:
- *
- * | State            | bits |
- * |------------------+------+
- * | default          |  000 |
- * | forwarded        |  001 |
- * | pinned           |  010 |
- * | pinned, cemented |  110 |
- *
- * We store them in the vtable slot because the bits are used in the sync block for other
- * purposes: if we merge them and alloc the sync blocks aligned to 8 bytes, we can change
- * this and use bit 3 in the syncblock (with the lower two bits both set for forwarded, that
- * would be an invalid combination for the monitor and hash code).
- */
-
-#include "sgen-tagged-pointer.h"
-
-#define SGEN_VTABLE_BITS_MASK  SGEN_TAGGED_POINTER_MASK
-
-#define SGEN_POINTER_IS_TAGGED_FORWARDED(p)    SGEN_POINTER_IS_TAGGED_1((p))
-#define SGEN_POINTER_TAG_FORWARDED(p)          SGEN_POINTER_TAG_1((p))
-
-#define SGEN_POINTER_IS_TAGGED_PINNED(p)       SGEN_POINTER_IS_TAGGED_2((p))
-#define SGEN_POINTER_TAG_PINNED(p)             SGEN_POINTER_TAG_2((p))
-
-#define SGEN_POINTER_IS_TAGGED_CEMENTED(p)     SGEN_POINTER_IS_TAGGED_4((p))
-#define SGEN_POINTER_TAG_CEMENTED(p)           SGEN_POINTER_TAG_4((p))
-
-#define SGEN_POINTER_UNTAG_VTABLE(p)           SGEN_POINTER_UNTAG_ALL((p))
-
-/* returns NULL if not forwarded, or the forwarded address */
-#define SGEN_VTABLE_IS_FORWARDED(vtable) (SGEN_POINTER_IS_TAGGED_FORWARDED ((vtable)) ? SGEN_POINTER_UNTAG_VTABLE ((vtable)) : NULL)
-#define SGEN_OBJECT_IS_FORWARDED(obj) (SGEN_VTABLE_IS_FORWARDED (((mword*)(obj))[0]))
-
-#define SGEN_VTABLE_IS_PINNED(vtable) SGEN_POINTER_IS_TAGGED_PINNED ((vtable))
-#define SGEN_OBJECT_IS_PINNED(obj) (SGEN_VTABLE_IS_PINNED (((mword*)(obj))[0]))
-
-#define SGEN_OBJECT_IS_CEMENTED(obj) (SGEN_POINTER_IS_TAGGED_CEMENTED (((mword*)(obj))[0]))
-
-/* set the forwarded address fw_addr for object obj */
-#define SGEN_FORWARD_OBJECT(obj,fw_addr) do {                          \
-               *(void**)(obj) = SGEN_POINTER_TAG_FORWARDED ((fw_addr));        \
-       } while (0)
-#define SGEN_PIN_OBJECT(obj) do {      \
-               *(void**)(obj) = SGEN_POINTER_TAG_PINNED (*(void**)(obj)); \
-       } while (0)
-#define SGEN_CEMENT_OBJECT(obj) do {   \
-               *(void**)(obj) = SGEN_POINTER_TAG_CEMENTED (*(void**)(obj)); \
-       } while (0)
-/* Unpins and uncements */
-#define SGEN_UNPIN_OBJECT(obj) do {    \
-               *(void**)(obj) = SGEN_POINTER_UNTAG_VTABLE (*(void**)(obj)); \
-       } while (0)
-
-/*
- * Since we set bits in the vtable, use the macro to load it from the pointer to
- * an object that is potentially pinned.
- */
-#define SGEN_LOAD_VTABLE(addr) SGEN_POINTER_UNTAG_ALL (*(void**)(addr))
-
-/*
-List of what each bit on of the vtable gc bits means. 
-*/
-enum {
-       SGEN_GC_BIT_BRIDGE_OBJECT = 1,
-       SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT = 2,
-       SGEN_GC_BIT_FINALIZER_AWARE = 4,
-};
-
-/* the runtime can register areas of memory as roots: we keep two lists of roots,
- * a pinned root set for conservatively scanned roots and a normal one for
- * precisely scanned roots (currently implemented as a single list).
- */
-typedef struct _RootRecord RootRecord;
-struct _RootRecord {
-       char *end_root;
-       mword root_desc;
-};
-
-enum {
-       ROOT_TYPE_NORMAL = 0, /* "normal" roots */
-       ROOT_TYPE_PINNED = 1, /* roots without a GC descriptor */
-       ROOT_TYPE_WBARRIER = 2, /* roots with a write barrier */
-       ROOT_TYPE_NUM
-};
-
-extern SgenHashTable roots_hash [ROOT_TYPE_NUM];
-
-typedef void (*IterateObjectCallbackFunc) (char*, size_t, void*);
-
-int sgen_thread_handshake (BOOL suspend);
-gboolean sgen_suspend_thread (SgenThreadInfo *info);
-gboolean sgen_resume_thread (SgenThreadInfo *info);
-void sgen_wait_for_suspend_ack (int count);
-void sgen_os_init (void);
-
-gboolean sgen_is_worker_thread (MonoNativeThreadId thread);
-
-void sgen_update_heap_boundaries (mword low, mword high);
-
-void sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags);
-void sgen_check_section_scan_starts (GCMemSection *section);
-
-/* Keep in sync with description_for_type() in sgen-internal.c! */
-enum {
-       INTERNAL_MEM_PIN_QUEUE,
-       INTERNAL_MEM_FRAGMENT,
-       INTERNAL_MEM_SECTION,
-       INTERNAL_MEM_SCAN_STARTS,
-       INTERNAL_MEM_FIN_TABLE,
-       INTERNAL_MEM_FINALIZE_ENTRY,
-       INTERNAL_MEM_FINALIZE_READY_ENTRY,
-       INTERNAL_MEM_DISLINK_TABLE,
-       INTERNAL_MEM_DISLINK,
-       INTERNAL_MEM_ROOTS_TABLE,
-       INTERNAL_MEM_ROOT_RECORD,
-       INTERNAL_MEM_STATISTICS,
-       INTERNAL_MEM_STAT_PINNED_CLASS,
-       INTERNAL_MEM_STAT_REMSET_CLASS,
-       INTERNAL_MEM_GRAY_QUEUE,
-       INTERNAL_MEM_MS_TABLES,
-       INTERNAL_MEM_MS_BLOCK_INFO,
-       INTERNAL_MEM_MS_BLOCK_INFO_SORT,
-       INTERNAL_MEM_EPHEMERON_LINK,
-       INTERNAL_MEM_WORKER_DATA,
-       INTERNAL_MEM_WORKER_JOB_DATA,
-       INTERNAL_MEM_BRIDGE_DATA,
-       INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE,
-       INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE_ENTRY,
-       INTERNAL_MEM_BRIDGE_HASH_TABLE,
-       INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY,
-       INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE,
-       INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE_ENTRY,
-       INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE,
-       INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE_ENTRY,
-       INTERNAL_MEM_TARJAN_OBJ_BUCKET,
-       INTERNAL_MEM_BRIDGE_DEBUG,
-       INTERNAL_MEM_JOB_QUEUE_ENTRY,
-       INTERNAL_MEM_TOGGLEREF_DATA,
-       INTERNAL_MEM_CARDTABLE_MOD_UNION,
-       INTERNAL_MEM_BINARY_PROTOCOL,
-       INTERNAL_MEM_TEMPORARY,
-       INTERNAL_MEM_MAX
-};
-
-enum {
-       GENERATION_NURSERY,
-       GENERATION_OLD,
-       GENERATION_MAX
-};
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-#define BINARY_PROTOCOL_ARG(x) ,x
-#else
-#define BINARY_PROTOCOL_ARG(x)
-#endif
-
-void sgen_init_internal_allocator (void);
-
-typedef struct _ObjectList ObjectList;
-struct _ObjectList {
-       MonoObject *obj;
-       ObjectList *next;
-};
-
-typedef void (*CopyOrMarkObjectFunc) (void**, SgenGrayQueue*);
-typedef void (*ScanObjectFunc) (char *obj, mword desc, SgenGrayQueue*);
-typedef void (*ScanVTypeFunc) (char*, mword desc, SgenGrayQueue* BINARY_PROTOCOL_ARG (size_t size));
-
-typedef struct
-{
-       ScanObjectFunc scan_func;
-       CopyOrMarkObjectFunc copy_func;
-       SgenGrayQueue *queue;
-} ScanCopyContext;
-
-void sgen_report_internal_mem_usage (void);
-void sgen_dump_internal_mem_usage (FILE *heap_dump_file);
-void sgen_dump_section (GCMemSection *section, const char *type);
-void sgen_dump_occupied (char *start, char *end, char *section_start);
-
-void sgen_register_moved_object (void *obj, void *destination);
-
-void sgen_register_fixed_internal_mem_type (int type, size_t size);
-
-void* sgen_alloc_internal (int type);
-void sgen_free_internal (void *addr, int type);
-
-void* sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure);
-void sgen_free_internal_dynamic (void *addr, size_t size, int type);
-
-void sgen_pin_stats_register_object (char *obj, size_t size);
-void sgen_pin_stats_register_global_remset (char *obj);
-void sgen_pin_stats_print_class_stats (void);
-
-void sgen_sort_addresses (void **array, size_t size);
-void sgen_add_to_global_remset (gpointer ptr, gpointer obj);
-
-int sgen_get_current_collection_generation (void);
-gboolean sgen_collection_is_concurrent (void);
-gboolean sgen_concurrent_collection_in_progress (void);
-
-typedef struct {
-       CopyOrMarkObjectFunc copy_or_mark_object;
-       ScanObjectFunc scan_object;
-       ScanVTypeFunc scan_vtype;
-       /*FIXME add allocation function? */
-} SgenObjectOperations;
-
-SgenObjectOperations *sgen_get_current_object_ops (void);
-
-typedef struct _SgenFragment SgenFragment;
-
-struct _SgenFragment {
-       SgenFragment *next;
-       char *fragment_start;
-       char *fragment_next; /* the current soft limit for allocation */
-       char *fragment_end;
-       SgenFragment *next_in_order; /* We use a different entry for all active fragments so we can avoid SMR. */
-};
-
-typedef struct {
-       SgenFragment *alloc_head; /* List head to be used when allocating memory. Walk with fragment_next. */
-       SgenFragment *region_head; /* List head of the region used by this allocator. Walk with next_in_order. */
-} SgenFragmentAllocator;
-
-void sgen_fragment_allocator_add (SgenFragmentAllocator *allocator, char *start, char *end);
-void sgen_fragment_allocator_release (SgenFragmentAllocator *allocator);
-void* sgen_fragment_allocator_serial_alloc (SgenFragmentAllocator *allocator, size_t size);
-void* sgen_fragment_allocator_par_alloc (SgenFragmentAllocator *allocator, size_t size);
-void* sgen_fragment_allocator_serial_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size);
-void* sgen_fragment_allocator_par_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size);
-SgenFragment* sgen_fragment_allocator_alloc (void);
-void sgen_clear_allocator_fragments (SgenFragmentAllocator *allocator);
-void sgen_clear_range (char *start, char *end);
-
-
-/*
-This is a space/speed compromise as we need to make sure the from/to space check is both O(1)
-and only hit cache hot memory. On a 4Mb nursery it requires 1024 bytes, or 3% of your average
-L1 cache. On small configs with a 512kb nursery, this goes to 0.4%.
-
-Experimental results on how much space we waste with a 4Mb nursery:
-
-Note that the wastage applies to the half nursery, or 2Mb:
-
-Test 1 (compiling corlib):
-9: avg: 3.1k
-8: avg: 1.6k
-
-*/
-#define SGEN_TO_SPACE_GRANULE_BITS 9
-#define SGEN_TO_SPACE_GRANULE_IN_BYTES (1 << SGEN_TO_SPACE_GRANULE_BITS)
-
-extern char *sgen_space_bitmap;
-extern size_t sgen_space_bitmap_size;
-
-static inline gboolean
-sgen_nursery_is_to_space (char *object)
-{
-       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       size_t byte = idx >> 3;
-       size_t bit = idx & 0x7;
-
-       SGEN_ASSERT (4, sgen_ptr_in_nursery (object), "object %p is not in nursery [%p - %p]", object, sgen_get_nursery_start (), sgen_get_nursery_end ());
-       SGEN_ASSERT (4, byte < sgen_space_bitmap_size, "byte index %d out of range", byte, sgen_space_bitmap_size);
-
-       return (sgen_space_bitmap [byte] & (1 << bit)) != 0;
-}
-
-static inline gboolean
-sgen_nursery_is_from_space (char *object)
-{
-       return !sgen_nursery_is_to_space (object);
-}
-
-static inline gboolean
-sgen_nursery_is_object_alive (char *obj)
-{
-       /* FIXME put this asserts under a non default level */
-       g_assert (sgen_ptr_in_nursery (obj));
-
-       if (sgen_nursery_is_to_space (obj))
-               return TRUE;
-
-       if (SGEN_OBJECT_IS_PINNED (obj) || SGEN_OBJECT_IS_FORWARDED (obj))
-               return TRUE;
-
-       return FALSE;
-}
-
-typedef struct {
-       gboolean is_split;
-
-       char* (*alloc_for_promotion) (MonoVTable *vtable, char *obj, size_t objsize, gboolean has_references);
-
-       SgenObjectOperations serial_ops;
-
-       void (*prepare_to_space) (char *to_space_bitmap, size_t space_bitmap_size);
-       void (*clear_fragments) (void);
-       SgenFragment* (*build_fragments_get_exclude_head) (void);
-       void (*build_fragments_release_exclude_head) (void);
-       void (*build_fragments_finish) (SgenFragmentAllocator *allocator);
-       void (*init_nursery) (SgenFragmentAllocator *allocator, char *start, char *end);
-
-       gboolean (*handle_gc_param) (const char *opt); /* Optional */
-       void (*print_gc_param_usage) (void); /* Optional */
-} SgenMinorCollector;
-
-extern SgenMinorCollector sgen_minor_collector;
-
-void sgen_simple_nursery_init (SgenMinorCollector *collector);
-void sgen_split_nursery_init (SgenMinorCollector *collector);
-
-/* Updating references */
-
-#ifdef SGEN_CHECK_UPDATE_REFERENCE
-static inline void
-sgen_update_reference (void **p, void *o, gboolean allow_null)
-{
-       if (!allow_null)
-               SGEN_ASSERT (0, o, "Cannot update a reference with a NULL pointer");
-       SGEN_ASSERT (0, !sgen_is_worker_thread (mono_native_thread_id_get ()), "Can't update a reference in the worker thread");
-       *p = o;
-}
-
-#define SGEN_UPDATE_REFERENCE_ALLOW_NULL(p,o)  sgen_update_reference ((void**)(p), (void*)(o), TRUE)
-#define SGEN_UPDATE_REFERENCE(p,o)             sgen_update_reference ((void**)(p), (void*)(o), FALSE)
-#else
-#define SGEN_UPDATE_REFERENCE_ALLOW_NULL(p,o)  (*(void**)(p) = (void*)(o))
-#define SGEN_UPDATE_REFERENCE(p,o)             SGEN_UPDATE_REFERENCE_ALLOW_NULL ((p), (o))
-#endif
-
-/* Major collector */
-
-typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
-void sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
-
-typedef enum {
-       ITERATE_OBJECTS_SWEEP = 1,
-       ITERATE_OBJECTS_NON_PINNED = 2,
-       ITERATE_OBJECTS_PINNED = 4,
-       ITERATE_OBJECTS_ALL = ITERATE_OBJECTS_NON_PINNED | ITERATE_OBJECTS_PINNED,
-       ITERATE_OBJECTS_SWEEP_NON_PINNED = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_NON_PINNED,
-       ITERATE_OBJECTS_SWEEP_PINNED = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_PINNED,
-       ITERATE_OBJECTS_SWEEP_ALL = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_NON_PINNED | ITERATE_OBJECTS_PINNED
-} IterateObjectsFlags;
-
-typedef struct
-{
-       size_t num_scanned_objects;
-       size_t num_unique_scanned_objects;
-} ScannedObjectCounts;
-
-typedef struct _SgenMajorCollector SgenMajorCollector;
-struct _SgenMajorCollector {
-       size_t section_size;
-       gboolean is_concurrent;
-       gboolean supports_cardtable;
-       gboolean sweeps_lazily;
-
-       /*
-        * This is set to TRUE by the sweep if the next major
-        * collection should be synchronous (for evacuation).  For
-        * non-concurrent collectors, this should be NULL.
-        */
-       gboolean *want_synchronous_collection;
-
-       void* (*alloc_heap) (mword nursery_size, mword nursery_align, int nursery_bits);
-       gboolean (*is_object_live) (char *obj);
-       void* (*alloc_small_pinned_obj) (MonoVTable *vtable, size_t size, gboolean has_references);
-       void* (*alloc_degraded) (MonoVTable *vtable, size_t size);
-
-       SgenObjectOperations major_ops;
-       SgenObjectOperations major_concurrent_ops;
-
-       void* (*alloc_object) (MonoVTable *vtable, size_t size, gboolean has_references);
-       void (*free_pinned_object) (char *obj, size_t size);
-       void (*iterate_objects) (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data);
-       void (*free_non_pinned_object) (char *obj, size_t size);
-       void (*pin_objects) (SgenGrayQueue *queue);
-       void (*pin_major_object) (char *obj, SgenGrayQueue *queue);
-       void (*scan_card_table) (gboolean mod_union, SgenGrayQueue *queue);
-       void (*iterate_live_block_ranges) (sgen_cardtable_block_callback callback);
-       void (*update_cardtable_mod_union) (void);
-       void (*init_to_space) (void);
-       void (*sweep) (void);
-       gboolean (*have_finished_sweeping) (void);
-       void (*free_swept_blocks) (void);
-       void (*check_scan_starts) (void);
-       void (*dump_heap) (FILE *heap_dump_file);
-       gint64 (*get_used_size) (void);
-       void (*start_nursery_collection) (void);
-       void (*finish_nursery_collection) (void);
-       void (*start_major_collection) (void);
-       void (*finish_major_collection) (ScannedObjectCounts *counts);
-       gboolean (*drain_gray_stack) (ScanCopyContext ctx);
-       gboolean (*ptr_is_in_non_pinned_space) (char *ptr, char **start);
-       gboolean (*obj_is_from_pinned_alloc) (char *obj);
-       void (*report_pinned_memory_usage) (void);
-       size_t (*get_num_major_sections) (void);
-       gboolean (*handle_gc_param) (const char *opt);
-       void (*print_gc_param_usage) (void);
-       gboolean (*is_worker_thread) (MonoNativeThreadId thread);
-       void (*post_param_init) (SgenMajorCollector *collector);
-       void* (*alloc_worker_data) (void);
-       void (*init_worker_thread) (void *data);
-       void (*reset_worker_data) (void *data);
-       gboolean (*is_valid_object) (char *object);
-       MonoVTable* (*describe_pointer) (char *pointer);
-       guint8* (*get_cardtable_mod_union_for_object) (char *object);
-       long long (*get_and_reset_num_major_objects_marked) (void);
-       void (*count_cards) (long long *num_total_cards, long long *num_marked_cards);
-};
-
-extern SgenMajorCollector major_collector;
-
-void sgen_marksweep_init (SgenMajorCollector *collector);
-void sgen_marksweep_fixed_init (SgenMajorCollector *collector);
-void sgen_marksweep_par_init (SgenMajorCollector *collector);
-void sgen_marksweep_fixed_par_init (SgenMajorCollector *collector);
-void sgen_marksweep_conc_init (SgenMajorCollector *collector);
-SgenMajorCollector* sgen_get_major_collector (void);
-
-
-typedef struct _SgenRememberedSet {
-       void (*wbarrier_set_field) (MonoObject *obj, gpointer field_ptr, MonoObject* value);
-       void (*wbarrier_set_arrayref) (MonoArray *arr, gpointer slot_ptr, MonoObject* value);
-       void (*wbarrier_arrayref_copy) (gpointer dest_ptr, gpointer src_ptr, int count);
-       void (*wbarrier_value_copy) (gpointer dest, gpointer src, int count, MonoClass *klass);
-       void (*wbarrier_object_copy) (MonoObject* obj, MonoObject *src);
-       void (*wbarrier_generic_nostore) (gpointer ptr);
-       void (*record_pointer) (gpointer ptr);
-
-       void (*scan_remsets) (SgenGrayQueue *queue);
-
-       void (*clear_cards) (void);
-
-       void (*finish_minor_collection) (void);
-       gboolean (*find_address) (char *addr);
-       gboolean (*find_address_with_cards) (char *cards_start, guint8 *cards, char *addr);
-} SgenRememberedSet;
-
-SgenRememberedSet *sgen_get_remset (void);
-
-static mword /*__attribute__((noinline)) not sure if this hint is a good idea*/
-slow_object_get_size (MonoVTable *vtable, MonoObject* o)
-{
-       MonoClass *klass = vtable->klass;
-
-       /*
-        * We depend on mono_string_length_fast and
-        * mono_array_length_fast not using the object's vtable.
-        */
-       if (klass == mono_defaults.string_class) {
-               return G_STRUCT_OFFSET (MonoString, chars) + 2 * mono_string_length_fast ((MonoString*) o) + 2;
-       } else if (klass->rank) {
-               MonoArray *array = (MonoArray*)o;
-               size_t size = sizeof (MonoArray) + klass->sizes.element_size * mono_array_length_fast (array);
-               if (G_UNLIKELY (array->bounds)) {
-                       size += sizeof (mono_array_size_t) - 1;
-                       size &= ~(sizeof (mono_array_size_t) - 1);
-                       size += sizeof (MonoArrayBounds) * klass->rank;
-               }
-               return size;
-       } else {
-               /* from a created object: the class must be inited already */
-               return klass->instance_size;
-       }
-}
-
-static inline mword
-sgen_vtable_get_descriptor (MonoVTable *vtable)
-{
-       return (mword)vtable->gc_descr;
-}
-
-static inline mword
-sgen_obj_get_descriptor (char *obj)
-{
-       MonoVTable *vtable = ((MonoObject*)obj)->vtable;
-       SGEN_ASSERT (9, !SGEN_POINTER_IS_TAGGED_ANY (vtable), "Object can't be tagged");
-       return sgen_vtable_get_descriptor (vtable);
-}
-
-static inline mword
-sgen_obj_get_descriptor_safe (char *obj)
-{
-       MonoVTable *vtable = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
-       return sgen_vtable_get_descriptor (vtable);
-}
-
-/*
- * This function can be called on an object whose first word, the
- * vtable field, is not intact.  This is necessary for the parallel
- * collector.
- */
-static MONO_NEVER_INLINE mword
-sgen_par_object_get_size (MonoVTable *vtable, MonoObject* o)
-{
-       mword descr = (mword)vtable->gc_descr;
-       mword type = descr & DESC_TYPE_MASK;
-
-       if (type == DESC_TYPE_RUN_LENGTH || type == DESC_TYPE_SMALL_PTRFREE) {
-               mword size = descr & 0xfff8;
-               SGEN_ASSERT (9, size >= sizeof (MonoObject), "Run length object size to small");
-               return size;
-       } else if (descr == SGEN_DESC_STRING) {
-               return G_STRUCT_OFFSET (MonoString, chars) + 2 * mono_string_length_fast ((MonoString*) o) + 2;
-       } else if (type == DESC_TYPE_VECTOR) {
-               int element_size = ((descr) >> VECTOR_ELSIZE_SHIFT) & MAX_ELEMENT_SIZE;
-               MonoArray *array = (MonoArray*)o;
-               size_t size = sizeof (MonoArray) + element_size * mono_array_length_fast (array);
-
-               /*
-                * Non-vector arrays with a single dimension whose lower bound is zero are
-                * allocated without bounds.
-                */
-               if ((descr & VECTOR_KIND_ARRAY) && array->bounds) {
-                       size += sizeof (mono_array_size_t) - 1;
-                       size &= ~(sizeof (mono_array_size_t) - 1);
-                       size += sizeof (MonoArrayBounds) * vtable->klass->rank;
-               }
-               return size;
-       }
-
-       return slow_object_get_size (vtable, o);
-}
-
-static inline mword
-sgen_safe_object_get_size (MonoObject *obj)
-{
-       char *forwarded;
-
-       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj)))
-               obj = (MonoObject*)forwarded;
-
-       return sgen_par_object_get_size ((MonoVTable*)SGEN_LOAD_VTABLE (obj), obj);
-}
-
-/*
- * This variant guarantees to return the exact size of the object
- * before alignment. Needed for canary support.
- */
-static inline guint
-sgen_safe_object_get_size_unaligned (MonoObject *obj)
-{
-       char *forwarded;
-
-       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
-               obj = (MonoObject*)forwarded;
-       }
-
-       return slow_object_get_size ((MonoVTable*)SGEN_LOAD_VTABLE (obj), obj);
-}
-
-const char* sgen_safe_name (void* obj);
-
-gboolean sgen_object_is_live (void *obj);
-
-void  sgen_init_fin_weak_hash (void);
-
-gboolean sgen_need_bridge_processing (void);
-void sgen_bridge_reset_data (void);
-void sgen_bridge_processing_stw_step (void);
-void sgen_bridge_processing_finish (int generation);
-void sgen_register_test_bridge_callbacks (const char *bridge_class_name);
-gboolean sgen_is_bridge_object (MonoObject *obj);
-MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *klass);
-void sgen_mark_bridge_object (MonoObject *obj);
-void sgen_bridge_register_finalized_object (MonoObject *object);
-void sgen_bridge_describe_pointer (MonoObject *object);
-
-void sgen_mark_togglerefs (char *start, char *end, ScanCopyContext ctx);
-void sgen_clear_togglerefs (char *start, char *end, ScanCopyContext ctx);
-
-void sgen_process_togglerefs (void);
-void sgen_register_test_toggleref_callback (void);
-
-gboolean sgen_is_bridge_object (MonoObject *obj);
-void sgen_mark_bridge_object (MonoObject *obj);
-
-gboolean sgen_bridge_handle_gc_debug (const char *opt);
-void sgen_bridge_print_gc_debug_usage (void);
-
-typedef struct {
-       void (*reset_data) (void);
-       void (*processing_stw_step) (void);
-       void (*processing_build_callback_data) (int generation);
-       void (*processing_after_callback) (int generation);
-       MonoGCBridgeObjectKind (*class_kind) (MonoClass *class);
-       void (*register_finalized_object) (MonoObject *object);
-       void (*describe_pointer) (MonoObject *object);
-       void (*enable_accounting) (void);
-       void (*set_dump_prefix) (const char *prefix);
-
-       /*
-        * These are set by processing_build_callback_data().
-        */
-       int num_sccs;
-       MonoGCBridgeSCC **api_sccs;
-
-       int num_xrefs;
-       MonoGCBridgeXRef *api_xrefs;
-} SgenBridgeProcessor;
-
-void sgen_old_bridge_init (SgenBridgeProcessor *collector);
-void sgen_new_bridge_init (SgenBridgeProcessor *collector);
-void sgen_tarjan_bridge_init (SgenBridgeProcessor *collector);
-void sgen_set_bridge_implementation (const char *name);
-void sgen_bridge_set_dump_prefix (const char *prefix);
-
-gboolean sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcessor *b);
-
-typedef mono_bool (*WeakLinkAlivePredicateFunc) (MonoObject*, void*);
-
-void sgen_null_links_with_predicate (int generation, WeakLinkAlivePredicateFunc predicate, void *data);
-
-gboolean sgen_gc_is_object_ready_for_finalization (void *object);
-void sgen_gc_lock (void);
-void sgen_gc_unlock (void);
-void sgen_gc_event_moves (void);
-
-void sgen_queue_finalization_entry (MonoObject *obj);
-const char* sgen_generation_name (int generation);
-
-void sgen_collect_bridge_objects (int generation, ScanCopyContext ctx);
-void sgen_finalize_in_range (int generation, ScanCopyContext ctx);
-void sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyContext ctx);
-void sgen_null_links_for_domain (MonoDomain *domain, int generation);
-void sgen_remove_finalizers_for_domain (MonoDomain *domain, int generation);
-void sgen_process_fin_stage_entries (void);
-void sgen_process_dislink_stage_entries (void);
-void sgen_register_disappearing_link (MonoObject *obj, void **link, gboolean track, gboolean in_gc);
-
-gboolean sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx);
-
-enum {
-       SPACE_NURSERY,
-       SPACE_MAJOR,
-       SPACE_LOS
-};
-
-void sgen_pin_object (void *object, SgenGrayQueue *queue);
-void sgen_set_pinned_from_failed_allocation (mword objsize);
-
-void sgen_ensure_free_space (size_t size);
-void sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish);
-gboolean sgen_has_critical_method (void);
-gboolean sgen_is_critical_method (MonoMethod *method);
-
-/* STW */
-
-typedef struct {
-       int generation;
-       const char *reason;
-       gboolean is_overflow;
-       SGEN_TV_DECLARE (total_time);
-       SGEN_TV_DECLARE (stw_time);
-       SGEN_TV_DECLARE (bridge_time);
-} GGTimingInfo;
-
-int sgen_stop_world (int generation);
-int sgen_restart_world (int generation, GGTimingInfo *timing);
-void sgen_init_stw (void);
-
-/* LOS */
-
-typedef struct _LOSObject LOSObject;
-struct _LOSObject {
-       LOSObject *next;
-       mword size; /* this is the object size, lowest bit used for pin/mark */
-       guint8 *cardtable_mod_union; /* only used by the concurrent collector */
-#if SIZEOF_VOID_P < 8
-       mword dummy;            /* to align object to sizeof (double) */
-#endif
-       char data [MONO_ZERO_LEN_ARRAY];
-};
-
-extern LOSObject *los_object_list;
-extern mword los_memory_usage;
-
-void sgen_los_free_object (LOSObject *obj);
-void* sgen_los_alloc_large_inner (MonoVTable *vtable, size_t size);
-void sgen_los_sweep (void);
-gboolean sgen_ptr_is_in_los (char *ptr, char **start);
-void sgen_los_iterate_objects (IterateObjectCallbackFunc cb, void *user_data);
-void sgen_los_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
-void sgen_los_scan_card_table (gboolean mod_union, SgenGrayQueue *queue);
-void sgen_los_update_cardtable_mod_union (void);
-void sgen_los_count_cards (long long *num_total_cards, long long *num_marked_cards);
-void sgen_major_collector_scan_card_table (SgenGrayQueue *queue);
-gboolean sgen_los_is_valid_object (char *object);
-gboolean mono_sgen_los_describe_pointer (char *ptr);
-LOSObject* sgen_los_header_for_object (char *data);
-mword sgen_los_object_size (LOSObject *obj);
-void sgen_los_pin_object (char *obj);
-void sgen_los_unpin_object (char *obj);
-gboolean sgen_los_object_is_pinned (char *obj);
-
-
-/* nursery allocator */
-
-void sgen_clear_nursery_fragments (void);
-void sgen_nursery_allocator_prepare_for_pinning (void);
-void sgen_nursery_allocator_set_nursery_bounds (char *nursery_start, char *nursery_end);
-mword sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpin_queue);
-void sgen_init_nursery_allocator (void);
-void sgen_nursery_allocator_init_heavy_stats (void);
-void sgen_alloc_init_heavy_stats (void);
-char* sgen_nursery_alloc_get_upper_alloc_bound (void);
-void* sgen_nursery_alloc (size_t size);
-void* sgen_nursery_alloc_range (size_t size, size_t min_size, size_t *out_alloc_size);
-MonoVTable* sgen_get_array_fill_vtable (void);
-gboolean sgen_can_alloc_size (size_t size);
-void sgen_nursery_retire_region (void *address, ptrdiff_t size);
-
-void sgen_nursery_alloc_prepare_for_minor (void);
-void sgen_nursery_alloc_prepare_for_major (void);
-
-char* sgen_alloc_for_promotion (char *obj, size_t objsize, gboolean has_references);
-
-/* TLS Data */
-
-extern MonoNativeTlsKey thread_info_key;
-
-#ifdef HAVE_KW_THREAD
-extern __thread SgenThreadInfo *sgen_thread_info;
-extern __thread char *stack_end;
-#endif
-
-#ifdef HAVE_KW_THREAD
-#define TLAB_ACCESS_INIT
-#define IN_CRITICAL_REGION sgen_thread_info->in_critical_region
-#else
-#define TLAB_ACCESS_INIT       SgenThreadInfo *__thread_info__ = mono_native_tls_get_value (thread_info_key)
-#define IN_CRITICAL_REGION (__thread_info__->in_critical_region)
-#endif
-
-#ifndef DISABLE_CRITICAL_REGION
-
-#ifdef HAVE_KW_THREAD
-#define IN_CRITICAL_REGION sgen_thread_info->in_critical_region
-#else
-#define IN_CRITICAL_REGION (__thread_info__->in_critical_region)
-#endif
-
-/* Enter must be visible before anything is done in the critical region. */
-#define ENTER_CRITICAL_REGION do { mono_atomic_store_acquire (&IN_CRITICAL_REGION, 1); } while (0)
-
-/* Exit must make sure all critical regions stores are visible before it signal the end of the region. 
- * We don't need to emit a full barrier since we
- */
-#define EXIT_CRITICAL_REGION  do { mono_atomic_store_release (&IN_CRITICAL_REGION, 0); } while (0)
-
-#endif
-
-#ifdef HAVE_KW_THREAD
-
-#define EMIT_TLS_ACCESS_NEXT_ADDR(mb)  do {    \
-       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
-       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
-       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_TLAB_NEXT_ADDR);            \
-       } while (0)
-
-#define EMIT_TLS_ACCESS_TEMP_END(mb)   do {    \
-       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
-       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
-       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_TLAB_TEMP_END);             \
-       } while (0)
-
-#else
-
-#if defined(__APPLE__) || defined (HOST_WIN32)
-#define EMIT_TLS_ACCESS_NEXT_ADDR(mb)  do {    \
-       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
-       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
-       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO);       \
-       mono_mb_emit_icon ((mb), MONO_STRUCT_OFFSET (SgenThreadInfo, tlab_next_addr));  \
-       mono_mb_emit_byte ((mb), CEE_ADD);              \
-       mono_mb_emit_byte ((mb), CEE_LDIND_I);          \
-       } while (0)
-
-#define EMIT_TLS_ACCESS_TEMP_END(mb)   do {    \
-       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
-       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
-       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO);       \
-       mono_mb_emit_icon ((mb), MONO_STRUCT_OFFSET (SgenThreadInfo, tlab_temp_end));   \
-       mono_mb_emit_byte ((mb), CEE_ADD);              \
-       mono_mb_emit_byte ((mb), CEE_LDIND_I);          \
-       } while (0)
-
-#else
-#define EMIT_TLS_ACCESS_NEXT_ADDR(mb)  do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0)
-#define EMIT_TLS_ACCESS_TEMP_END(mb)   do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0)
-#endif
-
-#endif
-
-/* Other globals */
-
-extern GCMemSection *nursery_section;
-extern guint32 collect_before_allocs;
-extern guint32 verify_before_allocs;
-extern gboolean has_per_allocation_action;
-extern size_t degraded_mode;
-extern int default_nursery_size;
-extern guint32 tlab_size;
-extern NurseryClearPolicy nursery_clear_policy;
-extern gboolean sgen_try_free_some_memory;
-
-extern LOCK_DECLARE (gc_mutex);
-
-extern int do_pin_stats;
-
-/* Nursery helpers. */
-
-static inline void
-sgen_set_nursery_scan_start (char *p)
-{
-       size_t idx = (p - (char*)nursery_section->data) / SGEN_SCAN_START_SIZE;
-       char *old = nursery_section->scan_starts [idx];
-       if (!old || old > p)
-               nursery_section->scan_starts [idx] = p;
-}
-
-
-/* Object Allocation */
-
-typedef enum {
-       ATYPE_NORMAL,
-       ATYPE_VECTOR,
-       ATYPE_SMALL,
-       ATYPE_STRING,
-       ATYPE_NUM
-} SgenAllocatorType;
-
-void sgen_init_tlab_info (SgenThreadInfo* info);
-void sgen_clear_tlabs (void);
-void sgen_set_use_managed_allocator (gboolean flag);
-gboolean sgen_is_managed_allocator (MonoMethod *method);
-gboolean sgen_has_managed_allocator (void);
-
-/* Debug support */
-
-void sgen_check_consistency (void);
-void sgen_check_mod_union_consistency (void);
-void sgen_check_major_refs (void);
-void sgen_check_whole_heap (gboolean allow_missing_pinning);
-void sgen_check_whole_heap_stw (void);
-void sgen_check_objref (char *obj);
-void sgen_check_heap_marked (gboolean nursery_must_be_pinned);
-void sgen_check_nursery_objects_pinned (gboolean pinned);
-void sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type);
-void sgen_check_for_xdomain_refs (void);
-char* sgen_find_object_for_ptr (char *ptr);
-
-void mono_gc_scan_for_specific_ref (MonoObject *key, gboolean precise);
-
-/* Write barrier support */
-
-/*
- * This causes the compile to extend the liveness of 'v' till the call to dummy_use
- */
-static inline void
-sgen_dummy_use (gpointer v) {
-#if defined(__GNUC__)
-       __asm__ volatile ("" : "=r"(v) : "r"(v));
-#elif defined(_MSC_VER)
-       static volatile gpointer ptr;
-       ptr = v;
-#else
-#error "Implement sgen_dummy_use for your compiler"
-#endif
-}
-
-/* Environment variable parsing */
-
-#define MONO_GC_PARAMS_NAME    "MONO_GC_PARAMS"
-#define MONO_GC_DEBUG_NAME     "MONO_GC_DEBUG"
-
-gboolean sgen_parse_environment_string_extract_number (const char *str, size_t *out);
-void sgen_env_var_error (const char *env_var, const char *fallback, const char *description_format, ...);
-
-/* Utilities */
-
-void sgen_qsort (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*));
-gint64 sgen_timestamp (void);
-
-/*
- * Canary (guard word) support
- * Notes:
- * - CANARY_SIZE must be multiple of word size in bytes
- * - Canary space is not included on checks against SGEN_MAX_SMALL_OBJ_SIZE
- */
-gboolean nursery_canaries_enabled (void);
-
-#define CANARY_SIZE 8
-#define CANARY_STRING  "koupepia"
-
-#define CANARIFY_SIZE(size) if (nursery_canaries_enabled ()) { \
-                       size = size + CANARY_SIZE;      \
-               }
-
-#define CANARIFY_ALLOC(addr,size) if (nursery_canaries_enabled ()) {   \
-                               memcpy ((char*) (addr) + (size), CANARY_STRING, CANARY_SIZE);   \
-                       }
-
-#define CANARY_VALID(addr) (strncmp ((char*) (addr), CANARY_STRING, CANARY_SIZE) == 0)
-
-#define CHECK_CANARY_FOR_OBJECT(addr) if (nursery_canaries_enabled ()) {       \
-                               char* canary_ptr = (char*) (addr) + sgen_safe_object_get_size_unaligned ((MonoObject *) (addr));        \
-                               if (!CANARY_VALID(canary_ptr)) {        \
-                                       char canary_copy[CANARY_SIZE +1];       \
-                                       strncpy (canary_copy, canary_ptr, CANARY_SIZE); \
-                                       canary_copy[CANARY_SIZE] = 0;   \
-                                       g_error ("CORRUPT CANARY:\naddr->%p\ntype->%s\nexcepted->'%s'\nfound->'%s'\n", (char*) addr, ((MonoObject*)addr)->vtable->klass->name, CANARY_STRING, canary_copy);     \
-                               } }
-                                
-#endif /* HAVE_SGEN_GC */
-
-#endif /* __MONO_SGENGC_H__ */
diff --git a/mono/metadata/sgen-gray.c b/mono/metadata/sgen-gray.c
deleted file mode 100644 (file)
index 6407ef8..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * sgen-gray.c: Gray queue management.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "utils/mono-counters.h"
-#include "sgen-protocol.h"
-
-#ifdef HEAVY_STATISTICS
-guint64 stat_gray_queue_section_alloc;
-guint64 stat_gray_queue_section_free;
-guint64 stat_gray_queue_enqueue_fast_path;
-guint64 stat_gray_queue_dequeue_fast_path;
-guint64 stat_gray_queue_enqueue_slow_path;
-guint64 stat_gray_queue_dequeue_slow_path;
-#endif
-
-#define GRAY_QUEUE_LENGTH_LIMIT        64
-
-#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
-#define STATE_TRANSITION(s,o,n)        do {                                    \
-               int __old = (o);                                        \
-               if (InterlockedCompareExchange ((volatile int*)&(s)->state, (n), __old) != __old) \
-                       g_assert_not_reached ();                        \
-       } while (0)
-#define STATE_SET(s,v)         (s)->state = (v)
-#define STATE_ASSERT(s,v)      g_assert ((s)->state == (v))
-#else
-#define STATE_TRANSITION(s,o,n)
-#define STATE_SET(s,v)
-#define STATE_ASSERT(s,v)
-#endif
-
-void
-sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue)
-{
-       GrayQueueSection *section;
-
-       HEAVY_STAT (stat_gray_queue_section_alloc ++);
-
-       if (queue->alloc_prepare_func)
-               queue->alloc_prepare_func (queue);
-
-       if (queue->free_list) {
-               /* Use the previously allocated queue sections if possible */
-               section = queue->free_list;
-               queue->free_list = section->next;
-               STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
-       } else {
-               /* Allocate a new section */
-               section = sgen_alloc_internal (INTERNAL_MEM_GRAY_QUEUE);
-               STATE_SET (section, GRAY_QUEUE_SECTION_STATE_FLOATING);
-       }
-
-       section->size = SGEN_GRAY_QUEUE_SECTION_SIZE;
-
-       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
-
-       /* Link it with the others */
-       section->next = queue->first;
-       queue->first = section;
-       queue->cursor = section->entries - 1;
-}
-
-void
-sgen_gray_object_free_queue_section (GrayQueueSection *section)
-{
-       HEAVY_STAT (stat_gray_queue_section_free ++);
-
-       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_FREED);
-       sgen_free_internal (section, INTERNAL_MEM_GRAY_QUEUE);
-}
-
-/*
- * The following two functions are called in the inner loops of the
- * collector, so they need to be as fast as possible.  We have macros
- * for them in sgen-gc.h.
- */
-
-void
-sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj, mword desc)
-{
-       GrayQueueEntry entry = SGEN_GRAY_QUEUE_ENTRY (obj, desc);
-
-       HEAVY_STAT (stat_gray_queue_enqueue_slow_path ++);
-
-       SGEN_ASSERT (9, obj, "enqueueing a null object");
-       //sgen_check_objref (obj);
-
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       if (queue->enqueue_check_func)
-               queue->enqueue_check_func (obj);
-#endif
-
-       if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) {
-               if (queue->first) {
-                       /* Set the current section size back to default, might have been changed by sgen_gray_object_dequeue_section */
-                       queue->first->size = SGEN_GRAY_QUEUE_SECTION_SIZE;
-               }
-
-               sgen_gray_object_alloc_queue_section (queue);
-       }
-       STATE_ASSERT (queue->first, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
-       SGEN_ASSERT (9, queue->cursor <= GRAY_LAST_CURSOR_POSITION (queue->first), "gray queue %p overflow, first %p, cursor %p", queue, queue->first, queue->cursor);
-       *++queue->cursor = entry;
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       binary_protocol_gray_enqueue (queue, queue->cursor, obj);
-#endif
-}
-
-GrayQueueEntry
-sgen_gray_object_dequeue (SgenGrayQueue *queue)
-{
-       GrayQueueEntry entry;
-
-       HEAVY_STAT (stat_gray_queue_dequeue_slow_path ++);
-
-       if (sgen_gray_object_queue_is_empty (queue)) {
-               entry.obj = NULL;
-               return entry;
-       }
-
-       STATE_ASSERT (queue->first, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
-       SGEN_ASSERT (9, queue->cursor >= GRAY_FIRST_CURSOR_POSITION (queue->first), "gray queue %p underflow, first %p, cursor %d", queue, queue->first, queue->cursor);
-
-       entry = *queue->cursor--;
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       binary_protocol_gray_dequeue (queue, queue->cursor + 1, entry.obj);
-#endif
-
-       if (G_UNLIKELY (queue->cursor < GRAY_FIRST_CURSOR_POSITION (queue->first))) {
-               GrayQueueSection *section = queue->first;
-               queue->first = section->next;
-               section->next = queue->free_list;
-
-               STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FREE_LIST);
-
-               queue->free_list = section;
-               queue->cursor = queue->first ? queue->first->entries + queue->first->size - 1 : NULL;
-       }
-
-       return entry;
-}
-
-GrayQueueSection*
-sgen_gray_object_dequeue_section (SgenGrayQueue *queue)
-{
-       GrayQueueSection *section;
-
-       if (!queue->first)
-               return NULL;
-
-       section = queue->first;
-       queue->first = section->next;
-
-       section->next = NULL;
-       section->size = queue->cursor - section->entries + 1;
-
-       queue->cursor = queue->first ? queue->first->entries + queue->first->size - 1 : NULL;
-
-       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FLOATING);
-
-       return section;
-}
-
-void
-sgen_gray_object_enqueue_section (SgenGrayQueue *queue, GrayQueueSection *section)
-{
-       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
-
-       if (queue->first)
-               queue->first->size = queue->cursor - queue->first->entries + 1;
-
-       section->next = queue->first;
-       queue->first = section;
-       queue->cursor = queue->first->entries + queue->first->size - 1;
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       if (queue->enqueue_check_func) {
-               int i;
-               for (i = 0; i < section->size; ++i)
-                       queue->enqueue_check_func (section->entries [i].obj);
-       }
-#endif
-}
-
-void
-sgen_gray_object_queue_trim_free_list (SgenGrayQueue *queue)
-{
-       GrayQueueSection *section, *next;
-       int i = 0;
-       for (section = queue->free_list; section && i < GRAY_QUEUE_LENGTH_LIMIT - 1; section = section->next) {
-               STATE_ASSERT (section, GRAY_QUEUE_SECTION_STATE_FREE_LIST);
-               i ++;
-       }
-       if (!section)
-               return;
-       while (section->next) {
-               next = section->next;
-               section->next = next->next;
-               STATE_TRANSITION (next, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
-               sgen_gray_object_free_queue_section (next);
-       }
-}
-
-void
-sgen_gray_object_queue_init (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func)
-{
-       g_assert (sgen_gray_object_queue_is_empty (queue));
-
-       queue->alloc_prepare_func = NULL;
-       queue->alloc_prepare_data = NULL;
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       queue->enqueue_check_func = enqueue_check_func;
-#endif
-
-       /* Free the extra sections allocated during the last collection */
-       sgen_gray_object_queue_trim_free_list (queue);
-}
-
-static void
-invalid_prepare_func (SgenGrayQueue *queue)
-{
-       g_assert_not_reached ();
-}
-
-void
-sgen_gray_object_queue_init_invalid (SgenGrayQueue *queue)
-{
-       sgen_gray_object_queue_init (queue, FALSE);
-       queue->alloc_prepare_func = invalid_prepare_func;
-       queue->alloc_prepare_data = NULL;
-}
-
-void
-sgen_gray_queue_set_alloc_prepare (SgenGrayQueue *queue, GrayQueueAllocPrepareFunc alloc_prepare_func, void *data)
-{
-       SGEN_ASSERT (0, !queue->alloc_prepare_func && !queue->alloc_prepare_data, "Can't set gray queue alloc-prepare twice");
-       queue->alloc_prepare_func = alloc_prepare_func;
-       queue->alloc_prepare_data = data;
-}
-
-void
-sgen_gray_object_queue_init_with_alloc_prepare (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func,
-               GrayQueueAllocPrepareFunc alloc_prepare_func, void *data)
-{
-       sgen_gray_object_queue_init (queue, enqueue_check_func);
-       sgen_gray_queue_set_alloc_prepare (queue, alloc_prepare_func, data);
-}
-
-void
-sgen_gray_object_queue_deinit (SgenGrayQueue *queue)
-{
-       g_assert (!queue->first);
-       while (queue->free_list) {
-               GrayQueueSection *next = queue->free_list->next;
-               STATE_TRANSITION (queue->free_list, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
-               sgen_gray_object_free_queue_section (queue->free_list);
-               queue->free_list = next;
-       }
-}
-
-void
-sgen_gray_object_queue_disable_alloc_prepare (SgenGrayQueue *queue)
-{
-       queue->alloc_prepare_func = NULL;
-       queue->alloc_prepare_data = NULL;
-}
-
-static void
-lock_section_queue (SgenSectionGrayQueue *queue)
-{
-       if (!queue->locked)
-               return;
-
-       mono_mutex_lock (&queue->lock);
-}
-
-static void
-unlock_section_queue (SgenSectionGrayQueue *queue)
-{
-       if (!queue->locked)
-               return;
-
-       mono_mutex_unlock (&queue->lock);
-}
-
-void
-sgen_section_gray_queue_init (SgenSectionGrayQueue *queue, gboolean locked, GrayQueueEnqueueCheckFunc enqueue_check_func)
-{
-       g_assert (sgen_section_gray_queue_is_empty (queue));
-
-       queue->locked = locked;
-       if (locked) {
-               mono_mutex_init_recursive (&queue->lock);
-       }
-
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       queue->enqueue_check_func = enqueue_check_func;
-#endif
-}
-
-gboolean
-sgen_section_gray_queue_is_empty (SgenSectionGrayQueue *queue)
-{
-       return !queue->first;
-}
-
-GrayQueueSection*
-sgen_section_gray_queue_dequeue (SgenSectionGrayQueue *queue)
-{
-       GrayQueueSection *section;
-
-       lock_section_queue (queue);
-
-       if (queue->first) {
-               section = queue->first;
-               queue->first = section->next;
-
-               STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FLOATING);
-
-               section->next = NULL;
-       } else {
-               section = NULL;
-       }
-
-       unlock_section_queue (queue);
-
-       return section;
-}
-
-void
-sgen_section_gray_queue_enqueue (SgenSectionGrayQueue *queue, GrayQueueSection *section)
-{
-       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
-
-       lock_section_queue (queue);
-
-       section->next = queue->first;
-       queue->first = section;
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       if (queue->enqueue_check_func) {
-               int i;
-               for (i = 0; i < section->size; ++i)
-                       queue->enqueue_check_func (section->entries [i].obj);
-       }
-#endif
-
-       unlock_section_queue (queue);
-}
-
-void
-sgen_init_gray_queues (void)
-{
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("Gray Queue alloc section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_section_alloc);
-       mono_counters_register ("Gray Queue free section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_section_free);
-       mono_counters_register ("Gray Queue enqueue fast path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_enqueue_fast_path);
-       mono_counters_register ("Gray Queue dequeue fast path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_dequeue_fast_path);
-       mono_counters_register ("Gray Queue enqueue slow path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_enqueue_slow_path);
-       mono_counters_register ("Gray Queue dequeue slow path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_dequeue_slow_path);
-#endif
-}
-#endif
diff --git a/mono/metadata/sgen-gray.h b/mono/metadata/sgen-gray.h
deleted file mode 100644 (file)
index f222c55..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * sgen-gray.h: Gray queue management.
- *
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGEN_GRAY_H__
-#define __MONO_SGEN_GRAY_H__
-
-#include "metadata/sgen-protocol.h"
-
-/*
- * This gray queue has to be as optimized as possible, because it is in the core of
- * the mark/copy phase of the garbage collector. The memory access has then to be as
- * cache friendly as possible. That's why we use a cursor based implementation.
- * 
- * This simply consist in maintaining a pointer to the current element in the
- * queue. In addition to using this cursor, we use a simple linked list of arrays,
- * called sections, so that we have the cache friendliness of arrays without having
- * the cost of memory reallocation of a dynaic array, not the cost of memory
- * indirection of a linked list.
- * 
- * This implementation also allows the dequeuing of a whole section at a time. This is
- * for example used in the parallel GC because it would be too costly to take one element 
- * at a time. This imply the main constraint that, because we don't carry the cursor
- * with the section, we still have to store the index of the last element. This is done 
- * through the 'size' field on the section, which default value is it's maximum value
- * SGEN_GRAY_QUEUE_SECTION_SIZE. This field is updated in multiple cases :
- *  - section allocation : default value
- *  - object push : default value if we fill the current queue first
- *  - section dequeue : position of the cursor in the dequeued section
- *  - section enqueue : position of the cursor in the previously first section in the queue
- * 
- * The previous implementation was an index based access where we would store the index
- * of the last element in the section. This was less efficient because we would have
- * to make 1 memory access for the index value, 1 for the base address of the objects
- * array and another 1 for the actual value in the array.
- */
-
-/* SGEN_GRAY_QUEUE_HEADER_SIZE is number of machine words */
-#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
-#define SGEN_GRAY_QUEUE_HEADER_SIZE    4
-#else
-#define SGEN_GRAY_QUEUE_HEADER_SIZE    2
-#endif
-
-#define SGEN_GRAY_QUEUE_SECTION_SIZE   (128 - SGEN_GRAY_QUEUE_HEADER_SIZE)
-
-#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
-typedef enum {
-       GRAY_QUEUE_SECTION_STATE_FLOATING,
-       GRAY_QUEUE_SECTION_STATE_ENQUEUED,
-       GRAY_QUEUE_SECTION_STATE_FREE_LIST,
-       GRAY_QUEUE_SECTION_STATE_FREED
-} GrayQueueSectionState;
-#endif
-
-typedef struct _GrayQueueEntry GrayQueueEntry;
-struct _GrayQueueEntry {
-       char *obj;
-       mword desc;
-};
-
-#define SGEN_GRAY_QUEUE_ENTRY(obj,desc)        { (obj), (desc) }
-
-/*
- * This is a stack now instead of a queue, so the most recently added items are removed
- * first, improving cache locality, and keeping the stack size manageable.
- */
-typedef struct _GrayQueueSection GrayQueueSection;
-struct _GrayQueueSection {
-#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
-       /*
-        * The dummy is here so that the state doesn't get overwritten
-        * by the internal allocator once the section is freed.
-        */
-       int dummy;
-       GrayQueueSectionState state;
-#endif
-       int size;
-       GrayQueueSection *next;
-       GrayQueueEntry entries [SGEN_GRAY_QUEUE_SECTION_SIZE];
-};
-
-typedef struct _SgenGrayQueue SgenGrayQueue;
-
-typedef void (*GrayQueueAllocPrepareFunc) (SgenGrayQueue*);
-typedef void (*GrayQueueEnqueueCheckFunc) (char*);
-
-struct _SgenGrayQueue {
-       GrayQueueEntry *cursor;
-       GrayQueueSection *first;
-       GrayQueueSection *free_list;
-       GrayQueueAllocPrepareFunc alloc_prepare_func;
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       GrayQueueEnqueueCheckFunc enqueue_check_func;
-#endif
-       void *alloc_prepare_data;
-};
-
-typedef struct _SgenSectionGrayQueue SgenSectionGrayQueue;
-
-struct _SgenSectionGrayQueue {
-       GrayQueueSection *first;
-       gboolean locked;
-       mono_mutex_t lock;
-#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
-       GrayQueueEnqueueCheckFunc enqueue_check_func;
-#endif
-};
-
-#define GRAY_LAST_CURSOR_POSITION(s) ((s)->entries + SGEN_GRAY_QUEUE_SECTION_SIZE - 1)
-#define GRAY_FIRST_CURSOR_POSITION(s) ((s)->entries)
-
-#ifdef HEAVY_STATISTICS
-extern guint64 stat_gray_queue_section_alloc;
-extern guint64 stat_gray_queue_section_free;
-extern guint64 stat_gray_queue_enqueue_fast_path;
-extern guint64 stat_gray_queue_dequeue_fast_path;
-extern guint64 stat_gray_queue_enqueue_slow_path;
-extern guint64 stat_gray_queue_dequeue_slow_path;
-#endif
-
-void sgen_init_gray_queues (void);
-
-void sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj, mword desc);
-GrayQueueEntry sgen_gray_object_dequeue (SgenGrayQueue *queue);
-GrayQueueSection* sgen_gray_object_dequeue_section (SgenGrayQueue *queue);
-void sgen_gray_object_enqueue_section (SgenGrayQueue *queue, GrayQueueSection *section);
-void sgen_gray_object_queue_trim_free_list (SgenGrayQueue *queue);
-void sgen_gray_object_queue_init (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func);
-void sgen_gray_object_queue_init_invalid (SgenGrayQueue *queue);
-void sgen_gray_queue_set_alloc_prepare (SgenGrayQueue *queue, GrayQueueAllocPrepareFunc alloc_prepare_func, void *data);
-void sgen_gray_object_queue_init_with_alloc_prepare (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func,
-               GrayQueueAllocPrepareFunc func, void *data);
-void sgen_gray_object_queue_deinit (SgenGrayQueue *queue);
-void sgen_gray_object_queue_disable_alloc_prepare (SgenGrayQueue *queue);
-void sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue);
-void sgen_gray_object_free_queue_section (GrayQueueSection *section);
-
-void sgen_section_gray_queue_init (SgenSectionGrayQueue *queue, gboolean locked,
-               GrayQueueEnqueueCheckFunc enqueue_check_func);
-gboolean sgen_section_gray_queue_is_empty (SgenSectionGrayQueue *queue);
-GrayQueueSection* sgen_section_gray_queue_dequeue (SgenSectionGrayQueue *queue);
-void sgen_section_gray_queue_enqueue (SgenSectionGrayQueue *queue, GrayQueueSection *section);
-
-gboolean sgen_gray_object_fill_prefetch (SgenGrayQueue *queue);
-
-static inline gboolean
-sgen_gray_object_queue_is_empty (SgenGrayQueue *queue)
-{
-       return queue->first == NULL;
-}
-
-static inline MONO_ALWAYS_INLINE void
-GRAY_OBJECT_ENQUEUE (SgenGrayQueue *queue, char* obj, mword desc)
-{
-#if SGEN_MAX_DEBUG_LEVEL >= 9
-       sgen_gray_object_enqueue (queue, obj, desc);
-#else
-       if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) {
-               sgen_gray_object_enqueue (queue, obj, desc);
-       } else {
-               GrayQueueEntry entry = SGEN_GRAY_QUEUE_ENTRY (obj, desc);
-
-               HEAVY_STAT (stat_gray_queue_enqueue_fast_path ++);
-
-               *++queue->cursor = entry;
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-               binary_protocol_gray_enqueue (queue, queue->cursor, obj);
-#endif
-       }
-#endif
-}
-
-static inline MONO_ALWAYS_INLINE void
-GRAY_OBJECT_DEQUEUE (SgenGrayQueue *queue, char** obj, mword *desc)
-{
-       GrayQueueEntry entry;
-#if SGEN_MAX_DEBUG_LEVEL >= 9
-       entry = sgen_gray_object_dequeue (queue);
-       *obj = entry.obj;
-       *desc = entry.desc;
-#else
-       if (!queue->first) {
-               HEAVY_STAT (stat_gray_queue_dequeue_fast_path ++);
-
-               *obj = NULL;
-       } else if (G_UNLIKELY (queue->cursor == GRAY_FIRST_CURSOR_POSITION (queue->first))) {
-               entry = sgen_gray_object_dequeue (queue);
-               *obj = entry.obj;
-               *desc = entry.desc;
-       } else {
-               HEAVY_STAT (stat_gray_queue_dequeue_fast_path ++);
-
-               entry = *queue->cursor--;
-               *obj = entry.obj;
-               *desc = entry.desc;
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-               binary_protocol_gray_dequeue (queue, queue->cursor + 1, *obj);
-#endif
-       }
-#endif
-}
-
-#endif
diff --git a/mono/metadata/sgen-hash-table.c b/mono/metadata/sgen-hash-table.c
deleted file mode 100644 (file)
index 176a563..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * sgen-hash-table.c
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include <mono/metadata/sgen-gc.h>
-#include <mono/metadata/sgen-hash-table.h>
-#include <mono/utils/mono-counters.h>
-
-#ifdef HEAVY_STATISTICS
-static guint64 stat_lookups;
-static guint64 stat_lookup_iterations;
-static guint64 stat_lookup_max_iterations;
-#endif
-
-static void
-rehash (SgenHashTable *hash_table)
-{
-       SgenHashTableEntry **old_hash = hash_table->table;
-       guint old_hash_size = hash_table->size;
-       guint i, hash, new_size;
-       SgenHashTableEntry **new_hash;
-       SgenHashTableEntry *entry, *next;
-
-       if (!old_hash) {
-               sgen_register_fixed_internal_mem_type (hash_table->entry_mem_type,
-                               sizeof (SgenHashTableEntry*) + sizeof (gpointer) + hash_table->data_size);
-               new_size = 13;
-       } else {
-               new_size = g_spaced_primes_closest (hash_table->num_entries);
-       }
-
-       new_hash = sgen_alloc_internal_dynamic (new_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type, TRUE);
-       for (i = 0; i < old_hash_size; ++i) {
-               for (entry = old_hash [i]; entry; entry = next) {
-                       hash = hash_table->hash_func (entry->key) % new_size;
-                       next = entry->next;
-                       entry->next = new_hash [hash];
-                       new_hash [hash] = entry;
-               }
-       }
-       sgen_free_internal_dynamic (old_hash, old_hash_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type);
-       hash_table->table = new_hash;
-       hash_table->size = new_size;
-}
-
-static void
-rehash_if_necessary (SgenHashTable *hash_table)
-{
-       if (hash_table->num_entries >= hash_table->size * 2)
-               rehash (hash_table);
-
-       SGEN_ASSERT (1, hash_table->size, "rehash guarantees size > 0");
-}
-
-static SgenHashTableEntry*
-lookup (SgenHashTable *hash_table, gpointer key, guint *_hash)
-{
-       SgenHashTableEntry *entry;
-       guint hash;
-       GEqualFunc equal = hash_table->equal_func;
-#ifdef HEAVY_STATISTICS
-       guint64 iterations = 0;
-       ++stat_lookups;
-#endif
-
-       if (!hash_table->size)
-               return NULL;
-
-       hash = hash_table->hash_func (key) % hash_table->size;
-       if (_hash)
-               *_hash = hash;
-
-       for (entry = hash_table->table [hash]; entry; entry = entry->next) {
-#ifdef HEAVY_STATISTICS
-               ++stat_lookup_iterations;
-               ++iterations;
-               if (iterations > stat_lookup_max_iterations)
-                       stat_lookup_max_iterations = iterations;
-#endif
-               if ((equal && equal (entry->key, key)) || (!equal && entry->key == key))
-                       return entry;
-       }
-       return NULL;
-}
-
-gpointer
-sgen_hash_table_lookup (SgenHashTable *hash_table, gpointer key)
-{
-       SgenHashTableEntry *entry = lookup (hash_table, key, NULL);
-       if (!entry)
-               return NULL;
-       return entry->data;
-}
-
-gboolean
-sgen_hash_table_replace (SgenHashTable *hash_table, gpointer key, gpointer new_value, gpointer old_value)
-{
-       guint hash;
-       SgenHashTableEntry *entry;
-
-       rehash_if_necessary (hash_table);
-       entry = lookup (hash_table, key, &hash);
-
-       if (entry) {
-               if (old_value)
-                       memcpy (old_value, entry->data, hash_table->data_size); 
-               memcpy (entry->data, new_value, hash_table->data_size);
-               return FALSE;
-       }
-
-       entry = sgen_alloc_internal (hash_table->entry_mem_type);
-       entry->key = key;
-       memcpy (entry->data, new_value, hash_table->data_size);
-
-       entry->next = hash_table->table [hash];
-       hash_table->table [hash] = entry;
-
-       hash_table->num_entries++;
-
-       return TRUE;
-}
-
-gboolean
-sgen_hash_table_set_value (SgenHashTable *hash_table, gpointer key, gpointer new_value, gpointer old_value)
-{
-       guint hash;
-       SgenHashTableEntry *entry;
-
-       entry = lookup (hash_table, key, &hash);
-
-       if (entry) {
-               if (old_value)
-                       memcpy (old_value, entry->data, hash_table->data_size);
-               memcpy (entry->data, new_value, hash_table->data_size);
-               return TRUE;
-       }
-
-       return FALSE;
-}
-
-gboolean
-sgen_hash_table_set_key (SgenHashTable *hash_table, gpointer old_key, gpointer new_key)
-{
-       guint hash;
-       SgenHashTableEntry *entry;
-
-       entry = lookup (hash_table, old_key, &hash);
-
-       if (entry) {
-               entry->key = new_key;
-               return TRUE;
-       }
-
-       return FALSE;
-}
-
-gboolean
-sgen_hash_table_remove (SgenHashTable *hash_table, gpointer key, gpointer data_return)
-{
-       SgenHashTableEntry *entry, *prev;
-       guint hash;
-       GEqualFunc equal = hash_table->equal_func;
-
-       rehash_if_necessary (hash_table);
-       hash = hash_table->hash_func (key) % hash_table->size;
-
-       prev = NULL;
-       for (entry = hash_table->table [hash]; entry; entry = entry->next) {
-               if ((equal && equal (entry->key, key)) || (!equal && entry->key == key)) {
-                       if (prev)
-                               prev->next = entry->next;
-                       else
-                               hash_table->table [hash] = entry->next;
-
-                       hash_table->num_entries--;
-
-                       if (data_return)
-                               memcpy (data_return, entry->data, hash_table->data_size);
-
-                       sgen_free_internal (entry, hash_table->entry_mem_type);
-
-                       return TRUE;
-               }
-               prev = entry;
-       }
-
-       return FALSE;
-}
-
-void
-sgen_hash_table_clean (SgenHashTable *hash_table)
-{
-       guint i;
-
-       if (!hash_table->size) {
-               SGEN_ASSERT (1, !hash_table->table, "clean should reset hash_table->table");
-               SGEN_ASSERT (1, !hash_table->num_entries, "clean should reset hash_table->num_entries");
-               return;
-       }
-
-       for (i = 0; i < hash_table->size; ++i) {
-               SgenHashTableEntry *entry = hash_table->table [i];
-               while (entry) {
-                       SgenHashTableEntry *next = entry->next;
-                       sgen_free_internal (entry, hash_table->entry_mem_type);
-                       entry = next;
-               }
-       }
-
-       sgen_free_internal_dynamic (hash_table->table, hash_table->size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type);
-
-       hash_table->table = NULL;
-       hash_table->size = 0;
-       hash_table->num_entries = 0;
-}
-
-void
-sgen_init_hash_table (void)
-{
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("Hash table lookups", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_lookups);
-       mono_counters_register ("Hash table lookup iterations", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_lookup_iterations);
-       mono_counters_register ("Hash table lookup max iterations", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_lookup_max_iterations);
-#endif
-}
-
-#endif
diff --git a/mono/metadata/sgen-hash-table.h b/mono/metadata/sgen-hash-table.h
deleted file mode 100644 (file)
index e6cfe43..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef __MONO_SGENHASHTABLE_H__
-#define __MONO_SGENHASHTABLE_H__
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include <glib.h>
-
-/* hash tables */
-
-typedef struct _SgenHashTableEntry SgenHashTableEntry;
-struct _SgenHashTableEntry {
-       SgenHashTableEntry *next;
-       gpointer key;
-       char data [MONO_ZERO_LEN_ARRAY]; /* data is pointer-aligned */
-};
-
-typedef struct {
-       int table_mem_type;
-       int entry_mem_type;
-       size_t data_size;
-       GHashFunc hash_func;
-       GEqualFunc equal_func;
-       SgenHashTableEntry **table;
-       guint size;
-       guint num_entries;
-} SgenHashTable;
-
-#define SGEN_HASH_TABLE_INIT(table_type,entry_type,data_size,hash_func,equal_func)     { (table_type), (entry_type), (data_size), (hash_func), (equal_func), NULL, 0, 0 }
-#define SGEN_HASH_TABLE_ENTRY_SIZE(data_size)                  ((data_size) + sizeof (SgenHashTableEntry*) + sizeof (gpointer))
-
-gpointer sgen_hash_table_lookup (SgenHashTable *table, gpointer key);
-gboolean sgen_hash_table_replace (SgenHashTable *table, gpointer key, gpointer new_value, gpointer old_value);
-gboolean sgen_hash_table_set_value (SgenHashTable *table, gpointer key, gpointer new_value, gpointer old_value);
-gboolean sgen_hash_table_set_key (SgenHashTable *hash_table, gpointer old_key, gpointer new_key);
-gboolean sgen_hash_table_remove (SgenHashTable *table, gpointer key, gpointer data_return);
-
-void sgen_hash_table_clean (SgenHashTable *table);
-
-void sgen_init_hash_table (void);
-
-#define sgen_hash_table_num_entries(h) ((h)->num_entries)
-
-#define sgen_hash_table_key_for_value_pointer(v)       (((SgenHashTableEntry*)((char*)(v) - G_STRUCT_OFFSET (SgenHashTableEntry, data)))->key)
-
-#define SGEN_HASH_TABLE_FOREACH(h,k,v) do {                            \
-               SgenHashTable *__hash_table = (h);                      \
-               SgenHashTableEntry **__table = __hash_table->table;     \
-               guint __i;                                              \
-               for (__i = 0; __i < (h)->size; ++__i) {                 \
-                       SgenHashTableEntry **__iter, **__next;                  \
-                       for (__iter = &__table [__i]; *__iter; __iter = __next) {       \
-                               SgenHashTableEntry *__entry = *__iter;  \
-                               __next = &__entry->next;        \
-                               (k) = __entry->key;                     \
-                               (v) = (gpointer)__entry->data;
-
-/* The loop must be continue'd after using this! */
-#define SGEN_HASH_TABLE_FOREACH_REMOVE(free)   do {                    \
-               *__iter = *__next;      \
-               __next = __iter;        \
-               --__hash_table->num_entries;                            \
-               if ((free))                                             \
-                       sgen_free_internal (__entry, __hash_table->entry_mem_type); \
-       } while (0)
-
-#define SGEN_HASH_TABLE_FOREACH_SET_KEY(k)     ((__entry)->key = (k))
-
-#define SGEN_HASH_TABLE_FOREACH_END                                    \
-                       }                                               \
-               }                                                       \
-       } while (0)
-
-#endif
-
-#endif
diff --git a/mono/metadata/sgen-internal.c b/mono/metadata/sgen-internal.c
deleted file mode 100644 (file)
index f5b8995..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * sgen-internal.c: Internal lock-free memory allocator.
- *
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include "utils/mono-counters.h"
-#include "metadata/sgen-gc.h"
-#include "utils/mono-mmap.h"
-#include "utils/lock-free-alloc.h"
-#include "metadata/sgen-memory-governor.h"
-
-/* keep each size a multiple of ALLOC_ALIGN */
-#if SIZEOF_VOID_P == 4
-static const int allocator_sizes [] = {
-          8,   16,   24,   32,   40,   48,   64,   80,
-         96,  128,  160,  192,  224,  248,  296,  320,
-        384,  448,  504,  528,  584,  680,  816, 1088,
-       1360, 2044, 2336, 2728, 3272, 4092, 5456, 8188 };
-#else
-static const int allocator_sizes [] = {
-          8,   16,   24,   32,   40,   48,   64,   80,
-         96,  128,  160,  192,  224,  248,  320,  328,
-        384,  448,  528,  584,  680,  816, 1016, 1088,
-       1360, 2040, 2336, 2728, 3272, 4088, 5456, 8184 };
-#endif
-
-#define NUM_ALLOCATORS (sizeof (allocator_sizes) / sizeof (int))
-
-static int allocator_block_sizes [NUM_ALLOCATORS];
-
-static MonoLockFreeAllocSizeClass size_classes [NUM_ALLOCATORS];
-static MonoLockFreeAllocator allocators [NUM_ALLOCATORS];
-
-#ifdef HEAVY_STATISTICS
-static int allocator_sizes_stats [NUM_ALLOCATORS];
-#endif
-
-static size_t
-block_size (size_t slot_size)
-{
-       static int pagesize = -1;
-
-       int size;
-
-       if (pagesize == -1)
-               pagesize = mono_pagesize ();
-
-       for (size = pagesize; size < LOCK_FREE_ALLOC_SB_MAX_SIZE; size <<= 1) {
-               if (slot_size * 2 <= LOCK_FREE_ALLOC_SB_USABLE_SIZE (size))
-                       return size;
-       }
-       return LOCK_FREE_ALLOC_SB_MAX_SIZE;
-}
-
-/*
- * Find the allocator index for memory chunks that can contain @size
- * objects.
- */
-static int
-index_for_size (size_t size)
-{
-       int slot;
-       /* do a binary search or lookup table later. */
-       for (slot = 0; slot < NUM_ALLOCATORS; ++slot) {
-               if (allocator_sizes [slot] >= size)
-                       return slot;
-       }
-       g_assert_not_reached ();
-       return -1;
-}
-
-/*
- * Allocator indexes for the fixed INTERNAL_MEM_XXX types.  -1 if that
- * type is dynamic.
- */
-static int fixed_type_allocator_indexes [INTERNAL_MEM_MAX];
-
-void
-sgen_register_fixed_internal_mem_type (int type, size_t size)
-{
-       int slot;
-
-       g_assert (type >= 0 && type < INTERNAL_MEM_MAX);
-       g_assert (size <= allocator_sizes [NUM_ALLOCATORS - 1]);
-
-       slot = index_for_size (size);
-       g_assert (slot >= 0);
-
-       if (fixed_type_allocator_indexes [type] == -1)
-               fixed_type_allocator_indexes [type] = slot;
-       else
-               g_assert (fixed_type_allocator_indexes [type] == slot);
-}
-
-static const char*
-description_for_type (int type)
-{
-       switch (type) {
-       case INTERNAL_MEM_PIN_QUEUE: return "pin-queue";
-       case INTERNAL_MEM_FRAGMENT: return "fragment";
-       case INTERNAL_MEM_SECTION: return "section";
-       case INTERNAL_MEM_SCAN_STARTS: return "scan-starts";
-       case INTERNAL_MEM_FIN_TABLE: return "fin-table";
-       case INTERNAL_MEM_FINALIZE_ENTRY: return "finalize-entry";
-       case INTERNAL_MEM_FINALIZE_READY_ENTRY: return "finalize-ready-entry";
-       case INTERNAL_MEM_DISLINK_TABLE: return "dislink-table";
-       case INTERNAL_MEM_DISLINK: return "dislink";
-       case INTERNAL_MEM_ROOTS_TABLE: return "roots-table";
-       case INTERNAL_MEM_ROOT_RECORD: return "root-record";
-       case INTERNAL_MEM_STATISTICS: return "statistics";
-       case INTERNAL_MEM_STAT_PINNED_CLASS: return "pinned-class";
-       case INTERNAL_MEM_STAT_REMSET_CLASS: return "remset-class";
-       case INTERNAL_MEM_GRAY_QUEUE: return "gray-queue";
-       case INTERNAL_MEM_MS_TABLES: return "marksweep-tables";
-       case INTERNAL_MEM_MS_BLOCK_INFO: return "marksweep-block-info";
-       case INTERNAL_MEM_MS_BLOCK_INFO_SORT: return "marksweep-block-info-sort";
-       case INTERNAL_MEM_EPHEMERON_LINK: return "ephemeron-link";
-       case INTERNAL_MEM_WORKER_DATA: return "worker-data";
-       case INTERNAL_MEM_WORKER_JOB_DATA: return "worker-job-data";
-       case INTERNAL_MEM_BRIDGE_DATA: return "bridge-data";
-       case INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE: return "old-bridge-hash-table";
-       case INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE_ENTRY: return "old-bridge-hash-table-entry";
-       case INTERNAL_MEM_BRIDGE_HASH_TABLE: return "bridge-hash-table";
-       case INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY: return "bridge-hash-table-entry";
-       case INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE: return "tarjan-bridge-hash-table";
-       case INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE_ENTRY: return "tarjan-bridge-hash-table-entry";
-       case INTERNAL_MEM_TARJAN_OBJ_BUCKET: return "tarjan-bridge-object-buckets";
-       case INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE: return "bridge-alive-hash-table";
-       case INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE_ENTRY: return "bridge-alive-hash-table-entry";
-       case INTERNAL_MEM_BRIDGE_DEBUG: return "bridge-debug";
-       case INTERNAL_MEM_JOB_QUEUE_ENTRY: return "job-queue-entry";
-       case INTERNAL_MEM_TOGGLEREF_DATA: return "toggleref-data";
-       case INTERNAL_MEM_CARDTABLE_MOD_UNION: return "cardtable-mod-union";
-       case INTERNAL_MEM_BINARY_PROTOCOL: return "binary-protocol";
-       case INTERNAL_MEM_TEMPORARY: return "temporary";
-       default:
-               g_assert_not_reached ();
-       }
-}
-
-void*
-sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure)
-{
-       int index;
-       void *p;
-
-       if (size > allocator_sizes [NUM_ALLOCATORS - 1]) {
-               p = sgen_alloc_os_memory (size, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, NULL);
-               if (!p)
-                       sgen_assert_memory_alloc (NULL, size, description_for_type (type));
-       } else {
-               index = index_for_size (size);
-
-#ifdef HEAVY_STATISTICS
-               ++ allocator_sizes_stats [index];
-#endif
-
-               p = mono_lock_free_alloc (&allocators [index]);
-               if (!p)
-                       sgen_assert_memory_alloc (NULL, size, description_for_type (type));
-               memset (p, 0, size);
-       }
-
-       MONO_GC_INTERNAL_ALLOC ((mword)p, size, type);
-       return p;
-}
-
-void
-sgen_free_internal_dynamic (void *addr, size_t size, int type)
-{
-       if (!addr)
-               return;
-
-       if (size > allocator_sizes [NUM_ALLOCATORS - 1])
-               sgen_free_os_memory (addr, size, SGEN_ALLOC_INTERNAL);
-       else
-               mono_lock_free_free (addr, block_size (size));
-
-       MONO_GC_INTERNAL_DEALLOC ((mword)addr, size, type);
-}
-
-void*
-sgen_alloc_internal (int type)
-{
-       int index, size;
-       void *p;
-
-       index = fixed_type_allocator_indexes [type];
-       g_assert (index >= 0 && index < NUM_ALLOCATORS);
-
-#ifdef HEAVY_STATISTICS
-       ++ allocator_sizes_stats [index];
-#endif
-
-       size = allocator_sizes [index];
-
-       p = mono_lock_free_alloc (&allocators [index]);
-       memset (p, 0, size);
-
-       MONO_GC_INTERNAL_ALLOC ((mword)p, size, type);
-
-       return p;
-}
-
-void
-sgen_free_internal (void *addr, int type)
-{
-       int index;
-
-       if (!addr)
-               return;
-
-       index = fixed_type_allocator_indexes [type];
-       g_assert (index >= 0 && index < NUM_ALLOCATORS);
-
-       mono_lock_free_free (addr, allocator_block_sizes [index]);
-
-       if (MONO_GC_INTERNAL_DEALLOC_ENABLED ()) {
-               int size G_GNUC_UNUSED = allocator_sizes [index];
-               MONO_GC_INTERNAL_DEALLOC ((mword)addr, size, type);
-       }
-}
-
-void
-sgen_dump_internal_mem_usage (FILE *heap_dump_file)
-{
-       /*
-       int i;
-
-       fprintf (heap_dump_file, "<other-mem-usage type=\"large-internal\" size=\"%lld\"/>\n", large_internal_bytes_alloced);
-       fprintf (heap_dump_file, "<other-mem-usage type=\"pinned-chunks\" size=\"%lld\"/>\n", pinned_chunk_bytes_alloced);
-       for (i = 0; i < INTERNAL_MEM_MAX; ++i) {
-               fprintf (heap_dump_file, "<other-mem-usage type=\"%s\" size=\"%ld\"/>\n",
-                               description_for_type (i), unmanaged_allocator.small_internal_mem_bytes [i]);
-       }
-       */
-}
-
-void
-sgen_report_internal_mem_usage (void)
-{
-       int i G_GNUC_UNUSED;
-#ifdef HEAVY_STATISTICS
-       printf ("size -> # allocations\n");
-       for (i = 0; i < NUM_ALLOCATORS; ++i)
-               printf ("%d -> %d\n", allocator_sizes [i], allocator_sizes_stats [i]);
-#endif
-}
-
-void
-sgen_init_internal_allocator (void)
-{
-       int i, size;
-
-       for (i = 0; i < INTERNAL_MEM_MAX; ++i)
-               fixed_type_allocator_indexes [i] = -1;
-
-       for (i = 0; i < NUM_ALLOCATORS; ++i) {
-               allocator_block_sizes [i] = block_size (allocator_sizes [i]);
-               mono_lock_free_allocator_init_size_class (&size_classes [i], allocator_sizes [i], allocator_block_sizes [i]);
-               mono_lock_free_allocator_init_allocator (&allocators [i], &size_classes [i]);
-       }
-
-       for (size = mono_pagesize (); size <= LOCK_FREE_ALLOC_SB_MAX_SIZE; size <<= 1) {
-               int max_size = LOCK_FREE_ALLOC_SB_USABLE_SIZE (size) / 2;
-               /*
-                * we assert that allocator_sizes contains the biggest possible object size
-                * per block (4K => 4080 / 2 = 2040, 8k => 8176 / 2 = 4088, 16k => 16368 / 2 = 8184 on 64bits),
-                * so that we do not get different block sizes for sizes that should go to the same one
-                */
-               g_assert (allocator_sizes [index_for_size (max_size)] == max_size);
-       }
-}
-
-#endif
diff --git a/mono/metadata/sgen-layout-stats.c b/mono/metadata/sgen-layout-stats.c
deleted file mode 100644 (file)
index 8342bff..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright Xamarin Inc (http://www.xamarin.com)
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-layout-stats.h"
-
-#ifdef SGEN_OBJECT_LAYOUT_STATISTICS
-
-#define NUM_HISTOGRAM_ENTRIES  (1 << SGEN_OBJECT_LAYOUT_BITMAP_BITS)
-
-static unsigned long histogram [NUM_HISTOGRAM_ENTRIES];
-static unsigned long count_bitmap_overflow;
-static unsigned long count_ref_array;
-static unsigned long count_vtype_array;
-
-void
-sgen_object_layout_scanned_bitmap (unsigned int bitmap)
-{
-       g_assert (!(bitmap >> SGEN_OBJECT_LAYOUT_BITMAP_BITS));
-       ++histogram [bitmap];
-}
-
-void
-sgen_object_layout_scanned_bitmap_overflow (void)
-{
-       ++count_bitmap_overflow;
-}
-
-void
-sgen_object_layout_scanned_ref_array (void)
-{
-       ++count_ref_array;
-}
-
-void
-sgen_object_layout_scanned_vtype_array (void)
-{
-       ++count_vtype_array;
-}
-
-void
-sgen_object_layout_dump (FILE *out)
-{
-       int i;
-
-       for (i = 0; i < NUM_HISTOGRAM_ENTRIES; ++i) {
-               if (!histogram [i])
-                       continue;
-               fprintf (out, "%d %lu\n", i, histogram [i]);
-       }
-       fprintf (out, "bitmap-overflow %lu\n", count_bitmap_overflow);
-       fprintf (out, "ref-array %lu\n", count_ref_array);
-       fprintf (out, "vtype-array %lu\n", count_vtype_array);
-}
-
-#endif
-#endif
diff --git a/mono/metadata/sgen-layout-stats.h b/mono/metadata/sgen-layout-stats.h
deleted file mode 100644 (file)
index 7692a99..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright Xamarin Inc (http://www.xamarin.com)
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-#ifndef __MONO_SGEN_LAYOUT_STATS_H__
-#define __MONO_SGEN_LAYOUT_STATS_H__
-
-#ifdef SGEN_OBJECT_LAYOUT_STATISTICS
-
-#define SGEN_OBJECT_LAYOUT_BITMAP_BITS 16
-
-void sgen_object_layout_scanned_bitmap (unsigned int bitmap);
-void sgen_object_layout_scanned_bitmap_overflow (void);
-void sgen_object_layout_scanned_ref_array (void);
-void sgen_object_layout_scanned_vtype_array (void);
-
-void sgen_object_layout_dump (FILE *out);
-
-#define SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP   unsigned int __object_layout_bitmap = 0
-#define SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP(o,p) do {            \
-               int __index = ((void**)(p)) - ((void**)(((char*)(o)) + sizeof (MonoObject))); \
-               if (__index >= SGEN_OBJECT_LAYOUT_BITMAP_BITS)          \
-                       __object_layout_bitmap = (unsigned int)-1;      \
-               else if (__object_layout_bitmap != (unsigned int)-1)    \
-                       __object_layout_bitmap |= (1 << __index);       \
-       } while (0)
-#define SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP do {               \
-               if (__object_layout_bitmap == (unsigned int)-1)         \
-                       sgen_object_layout_scanned_bitmap_overflow ();  \
-               else                                                    \
-                       sgen_object_layout_scanned_bitmap (__object_layout_bitmap); \
-       } while (0)
-
-#else
-
-#define sgen_object_layout_scanned_bitmap(bitmap)
-#define sgen_object_layout_scanned_bitmap_overflow()
-#define sgen_object_layout_scanned_ref_array()
-#define sgen_object_layout_scanned_vtype_array()
-
-#define sgen_object_layout_dump(out)
-
-#define SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP
-#define SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP(o,p)
-#define SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP
-
-#endif
-
-#endif
diff --git a/mono/metadata/sgen-los.c b/mono/metadata/sgen-los.c
deleted file mode 100644 (file)
index de12002..0000000
+++ /dev/null
@@ -1,647 +0,0 @@
-/*
- * sgen-los.c: Large objects space.
- *
- * Author:
- *     Paolo Molaro (lupus@ximian.com)
- *
- * Copyright 2005-2010 Novell, Inc (http://www.novell.com)
- *
- * Thread start/stop adapted from Boehm's GC:
- * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
- * Copyright (c) 1996 by Silicon Graphics.  All rights reserved.
- * Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
- * Copyright (c) 2000-2004 by Hewlett-Packard Company.  All rights reserved.
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-memory-governor.h"
-#include "utils/mono-mmap.h"
-#include "utils/mono-compiler.h"
-
-#define LOS_SECTION_SIZE       (1024 * 1024)
-
-/*
- * This shouldn't be much smaller or larger than MAX_SMALL_OBJ_SIZE.
- * Must be at least sizeof (LOSSection).
- */
-#define LOS_CHUNK_SIZE         4096
-#define LOS_CHUNK_BITS         12
-
-/* Largest object that can be allocated in a section. */
-#define LOS_SECTION_OBJECT_LIMIT       (LOS_SECTION_SIZE - LOS_CHUNK_SIZE - sizeof (LOSObject))
-//#define LOS_SECTION_OBJECT_LIMIT     0
-#define LOS_SECTION_NUM_CHUNKS         ((LOS_SECTION_SIZE >> LOS_CHUNK_BITS) - 1)
-
-#define LOS_SECTION_FOR_OBJ(obj)       ((LOSSection*)((mword)(obj) & ~(mword)(LOS_SECTION_SIZE - 1)))
-#define LOS_CHUNK_INDEX(obj,section)   (((char*)(obj) - (char*)(section)) >> LOS_CHUNK_BITS)
-
-#define LOS_NUM_FAST_SIZES             32
-
-typedef struct _LOSFreeChunks LOSFreeChunks;
-struct _LOSFreeChunks {
-       LOSFreeChunks *next_size;
-       size_t size;
-};
-
-typedef struct _LOSSection LOSSection;
-struct _LOSSection {
-       LOSSection *next;
-       size_t num_free_chunks;
-       unsigned char *free_chunk_map;
-};
-
-LOSObject *los_object_list = NULL;
-mword los_memory_usage = 0;
-
-static LOSSection *los_sections = NULL;
-static LOSFreeChunks *los_fast_free_lists [LOS_NUM_FAST_SIZES]; /* 0 is for larger sizes */
-static mword los_num_objects = 0;
-static int los_num_sections = 0;
-
-//#define USE_MALLOC
-//#define LOS_CONSISTENCY_CHECK
-//#define LOS_DUMMY
-
-#ifdef LOS_DUMMY
-#define LOS_SEGMENT_SIZE       (4096 * 1024)
-
-static char *los_segment = NULL;
-static int los_segment_index = 0;
-#endif
-
-#ifdef LOS_CONSISTENCY_CHECK
-static void
-los_consistency_check (void)
-{
-       LOSSection *section;
-       LOSObject *obj;
-       int i;
-       mword memory_usage = 0;
-
-       for (obj = los_object_list; obj; obj = obj->next) {
-               char *end = obj->data + obj->size;
-               int start_index, num_chunks;
-
-               memory_usage += obj->size;
-
-               if (obj->size > LOS_SECTION_OBJECT_LIMIT)
-                       continue;
-
-               section = LOS_SECTION_FOR_OBJ (obj);
-
-               g_assert (end <= (char*)section + LOS_SECTION_SIZE);
-
-               start_index = LOS_CHUNK_INDEX (obj, section);
-               num_chunks = (obj->size + sizeof (LOSObject) + LOS_CHUNK_SIZE - 1) >> LOS_CHUNK_BITS;
-               for (i = start_index; i < start_index + num_chunks; ++i)
-                       g_assert (!section->free_chunk_map [i]);
-       }
-
-       for (i = 0; i < LOS_NUM_FAST_SIZES; ++i) {
-               LOSFreeChunks *size_chunks;
-               for (size_chunks = los_fast_free_lists [i]; size_chunks; size_chunks = size_chunks->next_size) {
-                       LOSSection *section = LOS_SECTION_FOR_OBJ (size_chunks);
-                       int j, num_chunks, start_index;
-
-                       if (i == 0)
-                               g_assert (size_chunks->size >= LOS_NUM_FAST_SIZES * LOS_CHUNK_SIZE);
-                       else
-                               g_assert (size_chunks->size == i * LOS_CHUNK_SIZE);
-
-                       num_chunks = size_chunks->size >> LOS_CHUNK_BITS;
-                       start_index = LOS_CHUNK_INDEX (size_chunks, section);
-                       for (j = start_index; j < start_index + num_chunks; ++j)
-                               g_assert (section->free_chunk_map [j]);
-               }
-       }
-
-       g_assert (los_memory_usage == memory_usage);
-}
-#endif
-
-static void
-add_free_chunk (LOSFreeChunks *free_chunks, size_t size)
-{
-       size_t num_chunks = size >> LOS_CHUNK_BITS;
-
-       free_chunks->size = size;
-
-       if (num_chunks >= LOS_NUM_FAST_SIZES)
-               num_chunks = 0;
-       free_chunks->next_size = los_fast_free_lists [num_chunks];
-       los_fast_free_lists [num_chunks] = free_chunks;
-}
-
-static LOSFreeChunks*
-get_from_size_list (LOSFreeChunks **list, size_t size)
-{
-       LOSFreeChunks *free_chunks = NULL;
-       LOSSection *section;
-       size_t i, num_chunks, start_index;
-
-
-       g_assert ((size & (LOS_CHUNK_SIZE - 1)) == 0);
-
-       while (*list) {
-               free_chunks = *list;
-               if (free_chunks->size >= size)
-                       break;
-               list = &(*list)->next_size;
-       }
-
-       if (!*list)
-               return NULL;
-
-       *list = free_chunks->next_size;
-
-       if (free_chunks->size > size)
-               add_free_chunk ((LOSFreeChunks*)((char*)free_chunks + size), free_chunks->size - size);
-
-       num_chunks = size >> LOS_CHUNK_BITS;
-
-       section = LOS_SECTION_FOR_OBJ (free_chunks);
-
-       start_index = LOS_CHUNK_INDEX (free_chunks, section);
-       for (i = start_index; i < start_index + num_chunks; ++i) {
-               g_assert (section->free_chunk_map [i]);
-               section->free_chunk_map [i] = 0;
-       }
-
-       section->num_free_chunks -= size >> LOS_CHUNK_BITS;
-       g_assert (section->num_free_chunks >= 0);
-
-       return free_chunks;
-}
-
-static LOSObject*
-get_los_section_memory (size_t size)
-{
-       LOSSection *section;
-       LOSFreeChunks *free_chunks;
-       size_t num_chunks;
-
-       size += LOS_CHUNK_SIZE - 1;
-       size &= ~(LOS_CHUNK_SIZE - 1);
-
-       num_chunks = size >> LOS_CHUNK_BITS;
-
-       g_assert (size > 0 && size - sizeof (LOSObject) <= LOS_SECTION_OBJECT_LIMIT);
-       g_assert (num_chunks > 0);
-
- retry:
-       if (num_chunks >= LOS_NUM_FAST_SIZES) {
-               free_chunks = get_from_size_list (&los_fast_free_lists [0], size);
-       } else {
-               size_t i;
-               for (i = num_chunks; i < LOS_NUM_FAST_SIZES; ++i) {
-                       free_chunks = get_from_size_list (&los_fast_free_lists [i], size);
-                       if (free_chunks)
-                               break;
-               }
-               if (!free_chunks)
-                       free_chunks = get_from_size_list (&los_fast_free_lists [0], size);
-       }
-
-       if (free_chunks)
-               return (LOSObject*)free_chunks;
-
-       if (!sgen_memgov_try_alloc_space (LOS_SECTION_SIZE, SPACE_LOS))
-               return NULL;
-
-       section = sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
-
-       if (!section)
-               return NULL;
-
-       free_chunks = (LOSFreeChunks*)((char*)section + LOS_CHUNK_SIZE);
-       free_chunks->size = LOS_SECTION_SIZE - LOS_CHUNK_SIZE;
-       free_chunks->next_size = los_fast_free_lists [0];
-       los_fast_free_lists [0] = free_chunks;
-
-       section->num_free_chunks = LOS_SECTION_NUM_CHUNKS;
-
-       section->free_chunk_map = (unsigned char*)section + sizeof (LOSSection);
-       g_assert (sizeof (LOSSection) + LOS_SECTION_NUM_CHUNKS + 1 <= LOS_CHUNK_SIZE);
-       section->free_chunk_map [0] = 0;
-       memset (section->free_chunk_map + 1, 1, LOS_SECTION_NUM_CHUNKS);
-
-       section->next = los_sections;
-       los_sections = section;
-
-       ++los_num_sections;
-
-       goto retry;
-}
-
-static void
-free_los_section_memory (LOSObject *obj, size_t size)
-{
-       LOSSection *section = LOS_SECTION_FOR_OBJ (obj);
-       size_t num_chunks, i, start_index;
-
-       size += LOS_CHUNK_SIZE - 1;
-       size &= ~(LOS_CHUNK_SIZE - 1);
-
-       num_chunks = size >> LOS_CHUNK_BITS;
-
-       g_assert (size > 0 && size - sizeof (LOSObject) <= LOS_SECTION_OBJECT_LIMIT);
-       g_assert (num_chunks > 0);
-
-       section->num_free_chunks += num_chunks;
-       g_assert (section->num_free_chunks <= LOS_SECTION_NUM_CHUNKS);
-
-       /*
-        * We could free the LOS section here if it's empty, but we
-        * can't unless we also remove its free chunks from the fast
-        * free lists.  Instead, we do it in los_sweep().
-        */
-
-       start_index = LOS_CHUNK_INDEX (obj, section);
-       for (i = start_index; i < start_index + num_chunks; ++i) {
-               g_assert (!section->free_chunk_map [i]);
-               section->free_chunk_map [i] = 1;
-       }
-
-       add_free_chunk ((LOSFreeChunks*)obj, size);
-}
-
-static int pagesize;
-
-void
-sgen_los_free_object (LOSObject *obj)
-{
-#ifndef LOS_DUMMY
-       size_t size = obj->size;
-       SGEN_LOG (4, "Freed large object %p, size %lu", obj->data, (unsigned long)obj->size);
-       binary_protocol_empty (obj->data, obj->size);
-
-       los_memory_usage -= size;
-       los_num_objects--;
-
-#ifdef USE_MALLOC
-       free (obj);
-#else
-       if (size > LOS_SECTION_OBJECT_LIMIT) {
-               if (!pagesize)
-                       pagesize = mono_pagesize ();
-               size += sizeof (LOSObject);
-               size += pagesize - 1;
-               size &= ~(pagesize - 1);
-               sgen_free_os_memory (obj, size, SGEN_ALLOC_HEAP);
-               sgen_memgov_release_space (size, SPACE_LOS);
-       } else {
-               free_los_section_memory (obj, size + sizeof (LOSObject));
-#ifdef LOS_CONSISTENCY_CHECKS
-               los_consistency_check ();
-#endif
-       }
-#endif
-#endif
-}
-
-/*
- * Objects with size >= MAX_SMALL_SIZE are allocated in the large object space.
- * They are currently kept track of with a linked list.
- * They don't move, so there is no need to pin them during collection
- * and we avoid the memcpy overhead.
- */
-void*
-sgen_los_alloc_large_inner (MonoVTable *vtable, size_t size)
-{
-       LOSObject *obj = NULL;
-       void **vtslot;
-
-       g_assert (size > SGEN_MAX_SMALL_OBJ_SIZE);
-       g_assert ((size & 1) == 0);
-
-       /*
-        * size + sizeof (LOSObject) <= SSIZE_MAX - (mono_pagesize () - 1)
-        *
-        * therefore:
-        *
-        * size <= SSIZE_MAX - (mono_pagesize () - 1) - sizeof (LOSObject)
-        */
-       if (size > SSIZE_MAX - (mono_pagesize () - 1) - sizeof (LOSObject))
-               return NULL;
-
-#ifdef LOS_DUMMY
-       if (!los_segment)
-               los_segment = sgen_alloc_os_memory (LOS_SEGMENT_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
-       los_segment_index = ALIGN_UP (los_segment_index);
-
-       obj = (LOSObject*)(los_segment + los_segment_index);
-       los_segment_index += size + sizeof (LOSObject);
-       g_assert (los_segment_index <= LOS_SEGMENT_SIZE);
-#else
-       sgen_ensure_free_space (size);
-
-#ifdef USE_MALLOC
-       obj = malloc (size + sizeof (LOSObject));
-       memset (obj, 0, size + sizeof (LOSObject));
-#else
-       if (size > LOS_SECTION_OBJECT_LIMIT) {
-               size_t alloc_size = size;
-               if (!pagesize)
-                       pagesize = mono_pagesize ();
-               alloc_size += sizeof (LOSObject);
-               alloc_size += pagesize - 1;
-               alloc_size &= ~(pagesize - 1);
-               if (sgen_memgov_try_alloc_space (alloc_size, SPACE_LOS)) {
-                       obj = sgen_alloc_os_memory (alloc_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
-               }
-       } else {
-               obj = get_los_section_memory (size + sizeof (LOSObject));
-               if (obj)
-                       memset (obj, 0, size + sizeof (LOSObject));
-       }
-#endif
-#endif
-       if (!obj)
-               return NULL;
-       g_assert (!((mword)obj->data & (SGEN_ALLOC_ALIGN - 1)));
-       obj->size = size;
-       vtslot = (void**)obj->data;
-       *vtslot = vtable;
-       sgen_update_heap_boundaries ((mword)obj->data, (mword)obj->data + size);
-       obj->next = los_object_list;
-       los_object_list = obj;
-       los_memory_usage += size;
-       los_num_objects++;
-       SGEN_LOG (4, "Allocated large object %p, vtable: %p (%s), size: %zd", obj->data, vtable, vtable->klass->name, size);
-       binary_protocol_alloc (obj->data, vtable, size);
-
-#ifdef LOS_CONSISTENCY_CHECK
-       los_consistency_check ();
-#endif
-
-       return obj->data;
-}
-
-void
-sgen_los_sweep (void)
-{
-       LOSSection *section, *prev;
-       int i;
-       int num_sections = 0;
-
-       for (i = 0; i < LOS_NUM_FAST_SIZES; ++i)
-               los_fast_free_lists [i] = NULL;
-
-       prev = NULL;
-       section = los_sections;
-       while (section) {
-               if (section->num_free_chunks == LOS_SECTION_NUM_CHUNKS) {
-                       LOSSection *next = section->next;
-                       if (prev)
-                               prev->next = next;
-                       else
-                               los_sections = next;
-                       sgen_free_os_memory (section, LOS_SECTION_SIZE, SGEN_ALLOC_HEAP);
-                       sgen_memgov_release_space (LOS_SECTION_SIZE, SPACE_LOS);
-                       section = next;
-                       --los_num_sections;
-                       continue;
-               }
-
-               for (i = 0; i <= LOS_SECTION_NUM_CHUNKS; ++i) {
-                       if (section->free_chunk_map [i]) {
-                               int j;
-                               for (j = i + 1; j <= LOS_SECTION_NUM_CHUNKS && section->free_chunk_map [j]; ++j)
-                                       ;
-                               add_free_chunk ((LOSFreeChunks*)((char*)section + (i << LOS_CHUNK_BITS)), (j - i) << LOS_CHUNK_BITS);
-                               i = j - 1;
-                       }
-               }
-
-               prev = section;
-               section = section->next;
-
-               ++num_sections;
-       }
-
-#ifdef LOS_CONSISTENCY_CHECK
-       los_consistency_check ();
-#endif
-
-       /*
-       g_print ("LOS sections: %d  objects: %d  usage: %d\n", num_sections, los_num_objects, los_memory_usage);
-       for (i = 0; i < LOS_NUM_FAST_SIZES; ++i) {
-               int num_chunks = 0;
-               LOSFreeChunks *free_chunks;
-               for (free_chunks = los_fast_free_lists [i]; free_chunks; free_chunks = free_chunks->next_size)
-                       ++num_chunks;
-               g_print ("  %d: %d\n", i, num_chunks);
-       }
-       */
-
-       g_assert (los_num_sections == num_sections);
-}
-
-gboolean
-sgen_ptr_is_in_los (char *ptr, char **start)
-{
-       LOSObject *obj;
-
-       *start = NULL;
-       for (obj = los_object_list; obj; obj = obj->next) {
-               char *end = obj->data + obj->size;
-
-               if (ptr >= obj->data && ptr < end) {
-                       *start = obj->data;
-                       return TRUE;
-               }
-       }
-       return FALSE;
-}
-
-void
-sgen_los_iterate_objects (IterateObjectCallbackFunc cb, void *user_data)
-{
-       LOSObject *obj;
-
-       for (obj = los_object_list; obj; obj = obj->next)
-               cb (obj->data, obj->size, user_data);
-}
-
-gboolean
-sgen_los_is_valid_object (char *object)
-{
-       LOSObject *obj;
-
-       for (obj = los_object_list; obj; obj = obj->next) {
-               if (obj->data == object)
-                       return TRUE;
-       }
-       return FALSE;
-}
-
-gboolean
-mono_sgen_los_describe_pointer (char *ptr)
-{
-       LOSObject *obj;
-
-       for (obj = los_object_list; obj; obj = obj->next) {
-               const char *los_kind;
-               mword size;
-               gboolean pinned;
-
-               if (obj->data > ptr || obj->data + obj->size <= ptr)
-                       continue;
-
-               size = sgen_los_object_size (obj);
-               pinned = sgen_los_object_is_pinned (obj->data);
-
-               if (size > LOS_SECTION_OBJECT_LIMIT)
-                       los_kind = "huge-los-ptr";
-               else
-                       los_kind = "los-ptr";
-
-               if (obj->data == ptr) {
-                       SGEN_LOG (0, "%s (size %d pin %d)\n", los_kind, (int)size, pinned ? 1 : 0);
-               } else {
-                       SGEN_LOG (0, "%s (interior-ptr offset %td size %d pin %d)",
-                                         los_kind, ptr - obj->data, (int)size, pinned ? 1 : 0);
-               }
-
-               return TRUE;
-       }
-       return FALSE;
-}
-
-void
-sgen_los_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
-{
-       LOSObject *obj;
-       for (obj = los_object_list; obj; obj = obj->next) {
-               MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj->data);
-               if (SGEN_VTABLE_HAS_REFERENCES (vt))
-                       callback ((mword)obj->data, (mword)obj->size);
-       }
-}
-
-void
-sgen_los_scan_card_table (gboolean mod_union, SgenGrayQueue *queue)
-{
-       LOSObject *obj;
-
-       for (obj = los_object_list; obj; obj = obj->next) {
-               guint8 *cards;
-
-               if (!SGEN_OBJECT_HAS_REFERENCES (obj->data))
-                       continue;
-
-               if (mod_union) {
-                       if (!sgen_los_object_is_pinned (obj->data))
-                               continue;
-
-                       cards = obj->cardtable_mod_union;
-                       g_assert (cards);
-               } else {
-                       cards = NULL;
-               }
-
-               sgen_cardtable_scan_object (obj->data, obj->size, cards, mod_union, queue);
-       }
-}
-
-void
-sgen_los_count_cards (long long *num_total_cards, long long *num_marked_cards)
-{
-       LOSObject *obj;
-       long long total_cards = 0;
-       long long marked_cards = 0;
-
-       for (obj = los_object_list; obj; obj = obj->next) {
-               int i;
-               guint8 *cards = sgen_card_table_get_card_scan_address ((mword) obj->data);
-               guint8 *cards_end = sgen_card_table_get_card_scan_address ((mword) obj->data + obj->size - 1);
-               mword num_cards = (cards_end - cards) + 1;
-
-               if (!SGEN_OBJECT_HAS_REFERENCES (obj->data))
-                       continue;
-
-               total_cards += num_cards;
-               for (i = 0; i < num_cards; ++i) {
-                       if (cards [i])
-                               ++marked_cards;
-               }
-       }
-
-       *num_total_cards = total_cards;
-       *num_marked_cards = marked_cards;
-}
-
-void
-sgen_los_update_cardtable_mod_union (void)
-{
-       LOSObject *obj;
-
-       for (obj = los_object_list; obj; obj = obj->next) {
-               if (!SGEN_OBJECT_HAS_REFERENCES (obj->data))
-                       continue;
-               obj->cardtable_mod_union = sgen_card_table_update_mod_union (obj->cardtable_mod_union,
-                               obj->data, obj->size, NULL);
-       }
-}
-
-mword
-sgen_los_object_size (LOSObject *obj)
-{
-       return obj->size & ~1L;
-}
-
-LOSObject*
-sgen_los_header_for_object (char *data)
-{
-#if _MSC_VER
-       return (LOSObject*)(data - (int)(&(((LOSObject*)0)->data)));
-#else
-       return (LOSObject*)(data - sizeof (LOSObject));
-#endif
-}
-
-void
-sgen_los_pin_object (char *data)
-{
-       LOSObject *obj = sgen_los_header_for_object (data);
-       obj->size = obj->size | 1;
-       binary_protocol_pin (data, (gpointer)SGEN_LOAD_VTABLE (data), sgen_safe_object_get_size ((MonoObject*)data));
-}
-
-void
-sgen_los_unpin_object (char *data)
-{
-       LOSObject *obj = sgen_los_header_for_object (data);
-       obj->size = sgen_los_object_size (obj);
-}
-
-gboolean
-sgen_los_object_is_pinned (char *data)
-{
-       LOSObject *obj = sgen_los_header_for_object (data);
-       return obj->size & 1;
-}
-
-#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-major-copy-object.h b/mono/metadata/sgen-major-copy-object.h
deleted file mode 100644 (file)
index a4b10ff..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * sgen-major-copy-object.h: Object copying in the major collectors.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#define collector_pin_object(obj, queue) do { \
-       if (sgen_ptr_in_nursery (obj)) {        \
-               sgen_pin_object (obj, queue);   \
-       } else {        \
-               g_assert (objsize <= SGEN_MAX_SMALL_OBJ_SIZE);  \
-               pin_major_object (obj, queue);  \
-       }       \
-} while (0)
-
-#define COLLECTOR_SERIAL_ALLOC_FOR_PROMOTION sgen_minor_collector.alloc_for_promotion
-
-#include "sgen-copy-object.h"
diff --git a/mono/metadata/sgen-marksweep-drain-gray-stack.h b/mono/metadata/sgen-marksweep-drain-gray-stack.h
deleted file mode 100644 (file)
index 73d22fe..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * sgen-marksweep-drain-gray-stack.h: The copy/mark and gray stack
- *     draining functions of the M&S major collector.
- *
- * Copyright (C) 2014 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * COPY_OR_MARK_FUNCTION_NAME must be defined to be the function name of the copy/mark
- * function.
- *
- * SCAN_OBJECT_FUNCTION_NAME must be defined to be the function name of the object scanning
- * function.
- *
- * DRAIN_GRAY_STACK_FUNCTION_NAME must be defined to be the function name of the gray stack
- * draining function.
- *
- * Define COPY_OR_MARK_WITH_EVACUATION to support evacuation.
- */
-
-/* Returns whether the object is still in the nursery. */
-static inline MONO_ALWAYS_INLINE gboolean
-COPY_OR_MARK_FUNCTION_NAME (void **ptr, void *obj, SgenGrayQueue *queue)
-{
-       MSBlockInfo *block;
-
-#ifdef HEAVY_STATISTICS
-       ++stat_optimized_copy;
-       {
-               char *forwarded;
-               mword desc;
-               if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj)))
-                       desc = sgen_obj_get_descriptor_safe (forwarded);
-               else
-                       desc = sgen_obj_get_descriptor_safe (obj);
-
-               sgen_descriptor_count_copied_object (desc);
-       }
-#endif
-
-       SGEN_ASSERT (9, obj, "null object from pointer %p", ptr);
-       SGEN_ASSERT (9, current_collection_generation == GENERATION_OLD, "old gen parallel allocator called from a %d collection", current_collection_generation);
-
-       if (sgen_ptr_in_nursery (obj)) {
-               int word, bit;
-               char *forwarded, *old_obj;
-               mword vtable_word = *(mword*)obj;
-
-               HEAVY_STAT (++stat_optimized_copy_nursery);
-
-#if SGEN_MAX_DEBUG_LEVEL >= 9
-               if (sgen_nursery_is_to_space (obj))
-                       SGEN_ASSERT (9, !SGEN_VTABLE_IS_PINNED (vtable_word) && !SGEN_VTABLE_IS_FORWARDED (vtable_word), "To-space object can't be pinned or forwarded.");
-#endif
-
-               if (SGEN_VTABLE_IS_PINNED (vtable_word)) {
-                       SGEN_ASSERT (9, !SGEN_VTABLE_IS_FORWARDED (vtable_word), "Cannot be both pinned and forwarded.");
-                       HEAVY_STAT (++stat_optimized_copy_nursery_pinned);
-                       return TRUE;
-               }
-               if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
-                       HEAVY_STAT (++stat_optimized_copy_nursery_forwarded);
-                       SGEN_UPDATE_REFERENCE (ptr, forwarded);
-                       return sgen_ptr_in_nursery (forwarded);
-               }
-
-               /* An object in the nursery To Space has already been copied and grayed. Nothing to do. */
-               if (sgen_nursery_is_to_space (obj))
-                       return TRUE;
-
-#ifdef COPY_OR_MARK_WITH_EVACUATION
-       do_copy_object:
-#endif
-               old_obj = obj;
-               obj = copy_object_no_checks (obj, queue);
-               if (G_UNLIKELY (old_obj == obj)) {
-                       /*
-                        * If we fail to evacuate an object we just stop doing it for a
-                        * given block size as all other will surely fail too.
-                        */
-                       /* FIXME: test this case somehow. */
-                       if (!sgen_ptr_in_nursery (obj)) {
-                               int size_index;
-                               block = MS_BLOCK_FOR_OBJ (obj);
-                               size_index = block->obj_size_index;
-                               evacuate_block_obj_sizes [size_index] = FALSE;
-                               MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
-                               return FALSE;
-                       }
-                       return TRUE;
-               }
-               HEAVY_STAT (++stat_objects_copied_major);
-               SGEN_UPDATE_REFERENCE (ptr, obj);
-
-               if (sgen_ptr_in_nursery (obj))
-                       return TRUE;
-
-               /*
-                * FIXME: See comment for copy_object_no_checks().  If
-                * we have that, we can let the allocation function
-                * give us the block info, too, and we won't have to
-                * re-fetch it.
-                *
-                * FIXME (2): We should rework this to avoid all those nursery checks.
-                */
-               /*
-                * For the split nursery allocator the object might
-                * still be in the nursery despite having being
-                * promoted, in which case we can't mark it.
-                */
-               block = MS_BLOCK_FOR_OBJ (obj);
-               MS_CALC_MARK_BIT (word, bit, obj);
-               SGEN_ASSERT (9, !MS_MARK_BIT (block, word, bit), "object %p already marked", obj);
-               MS_SET_MARK_BIT (block, word, bit);
-               binary_protocol_mark (obj, (gpointer)LOAD_VTABLE (obj), sgen_safe_object_get_size ((MonoObject*)obj));
-
-               return FALSE;
-       } else {
-               mword vtable_word = *(mword*)obj;
-               mword desc;
-               int type;
-
-               HEAVY_STAT (++stat_optimized_copy_major);
-
-#ifdef COPY_OR_MARK_WITH_EVACUATION
-               {
-                       char *forwarded;
-                       if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
-                               HEAVY_STAT (++stat_optimized_copy_major_forwarded);
-                               SGEN_UPDATE_REFERENCE (ptr, forwarded);
-                               SGEN_ASSERT (9, !sgen_ptr_in_nursery (forwarded), "Cannot be forwarded to nursery.");
-                               return FALSE;
-                       }
-               }
-#endif
-
-               SGEN_ASSERT (9, !SGEN_VTABLE_IS_PINNED (vtable_word), "Pinned object in non-pinned block?");
-
-               desc = sgen_vtable_get_descriptor ((MonoVTable*)vtable_word);
-               type = desc & DESC_TYPE_MASK;
-
-               if (type <= DESC_TYPE_MAX_SMALL_OBJ || SGEN_ALIGN_UP (sgen_safe_object_get_size ((MonoObject*)obj)) <= SGEN_MAX_SMALL_OBJ_SIZE) {
-#ifdef HEAVY_STATISTICS
-                       if (type <= DESC_TYPE_MAX_SMALL_OBJ)
-                               ++stat_optimized_copy_major_small_fast;
-                       else
-                               ++stat_optimized_copy_major_small_slow;
-#endif
-
-                       block = MS_BLOCK_FOR_OBJ (obj);
-
-#ifdef COPY_OR_MARK_WITH_EVACUATION
-                       {
-                               int size_index = block->obj_size_index;
-
-                               if (evacuate_block_obj_sizes [size_index] && !block->has_pinned) {
-                                       HEAVY_STAT (++stat_optimized_copy_major_small_evacuate);
-                                       if (block->is_to_space)
-                                               return FALSE;
-                                       goto do_copy_object;
-                               }
-                       }
-#endif
-
-                       MS_MARK_OBJECT_AND_ENQUEUE (obj, desc, block, queue);
-               } else {
-                       HEAVY_STAT (++stat_optimized_copy_major_large);
-
-                       if (sgen_los_object_is_pinned (obj))
-                               return FALSE;
-                       binary_protocol_pin (obj, (gpointer)SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size ((MonoObject*)obj));
-
-                       sgen_los_pin_object (obj);
-                       if (SGEN_OBJECT_HAS_REFERENCES (obj))
-                               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_obj_get_descriptor (obj));
-               }
-               return FALSE;
-       }
-       SGEN_ASSERT (0, FALSE, "How is this happening?");
-       return FALSE;
-}
-
-static void
-SCAN_OBJECT_FUNCTION_NAME (char *obj, mword desc, SgenGrayQueue *queue)
-{
-       char *start = obj;
-
-#ifdef HEAVY_STATISTICS
-       ++stat_optimized_major_scan;
-       if (!sgen_gc_descr_has_references (desc))
-               ++stat_optimized_major_scan_no_refs;
-       sgen_descriptor_count_scanned_object (desc);
-#endif
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       add_scanned_object (start);
-#endif
-
-       /* Now scan the object. */
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {                                    \
-               void *__old = *(ptr);                                   \
-               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
-               if (__old) {                                            \
-                       gboolean __still_in_nursery = COPY_OR_MARK_FUNCTION_NAME ((ptr), __old, queue); \
-                       if (G_UNLIKELY (__still_in_nursery && !sgen_ptr_in_nursery ((ptr)) && !SGEN_OBJECT_IS_CEMENTED (*(ptr)))) { \
-                               void *__copy = *(ptr);                  \
-                               sgen_add_to_global_remset ((ptr), __copy); \
-                       }                                               \
-               }                                                       \
-       } while (0)
-
-#define SCAN_OBJECT_PROTOCOL
-#include "sgen-scan-object.h"
-}
-
-static gboolean
-DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
-{
-       SgenGrayQueue *queue = ctx.queue;
-
-       SGEN_ASSERT (0, ctx.scan_func == major_scan_object_with_evacuation, "Wrong scan function");
-
-       for (;;) {
-               char *obj;
-               mword desc;
-
-               HEAVY_STAT (++stat_drain_loops);
-
-               GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
-               if (!obj)
-                       return TRUE;
-
-               SCAN_OBJECT_FUNCTION_NAME (obj, desc, ctx.queue);
-       }
-}
-
-#undef COPY_OR_MARK_FUNCTION_NAME
-#undef COPY_OR_MARK_WITH_EVACUATION
-#undef SCAN_OBJECT_FUNCTION_NAME
-#undef DRAIN_GRAY_STACK_FUNCTION_NAME
diff --git a/mono/metadata/sgen-marksweep-scan-object-concurrent.h b/mono/metadata/sgen-marksweep-scan-object-concurrent.h
deleted file mode 100644 (file)
index d21c363..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * sgen-major-scan-object.h: Object scanning in the major collectors.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-extern guint64 stat_scan_object_called_major;
-
-/*
- * FIXME: We use the same scanning function in the concurrent collector whether we scan
- * during the starting/finishing collection pause (with the world stopped) or from the
- * concurrent worker thread.
- *
- * As long as the world is stopped, we should just follow pointers into the nursery and
- * evict if possible.  In that case we also don't need the ALWAYS_ADD_TO_GLOBAL_REMSET case,
- * which only seems to make sense for when the world is stopped, in which case we only need
- * it because we don't follow into the nursery.
- */
-
-#undef HANDLE_PTR
-#define HANDLE_PTR(ptr,obj)    do {                                    \
-               void *__old = *(ptr);                                   \
-               SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP ((obj), (ptr)); \
-               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
-               if (__old && !sgen_ptr_in_nursery (__old)) {            \
-                       PREFETCH_READ (__old);                  \
-                       major_copy_or_mark_object_with_evacuation_concurrent ((ptr), __old, queue); \
-               } else {                                                \
-                       if (G_UNLIKELY (sgen_ptr_in_nursery (__old) && !sgen_ptr_in_nursery ((ptr)))) \
-                               sgen_add_to_global_remset ((ptr), __old); \
-               }                                                       \
-       } while (0)
-
-/* FIXME: Unify this with optimized code in sgen-marksweep.c. */
-
-static void
-major_scan_object_no_mark_concurrent (char *start, mword desc, SgenGrayQueue *queue)
-{
-       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
-
-#ifdef HEAVY_STATISTICS
-       sgen_descriptor_count_scanned_object (desc);
-#endif
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       add_scanned_object (start);
-#endif
-
-#define SCAN_OBJECT_PROTOCOL
-#include "sgen-scan-object.h"
-
-       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
-       HEAVY_STAT (++stat_scan_object_called_major);
-}
-
-static void
-major_scan_vtype_concurrent (char *start, mword desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
-{
-       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
-
-#ifdef HEAVY_STATISTICS
-       /* FIXME: We're half scanning this object.  How do we account for that? */
-       //add_scanned_object (start);
-#endif
-
-       /* The descriptors include info about the MonoObject header as well */
-       start -= sizeof (MonoObject);
-
-#define SCAN_OBJECT_NOVTABLE
-#define SCAN_OBJECT_PROTOCOL
-#include "sgen-scan-object.h"
-
-       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
-}
diff --git a/mono/metadata/sgen-marksweep.c b/mono/metadata/sgen-marksweep.c
deleted file mode 100644 (file)
index db91b67..0000000
+++ /dev/null
@@ -1,2062 +0,0 @@
-/*
- * sgen-marksweep.c: The Mark & Sweep major collector.
- *
- * Author:
- *     Mark Probst <mark.probst@gmail.com>
- *
- * Copyright 2009-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include <math.h>
-#include <errno.h>
-
-#include "utils/mono-counters.h"
-#include "utils/mono-semaphore.h"
-#include "utils/mono-time.h"
-#include "metadata/object-internals.h"
-#include "metadata/profiler-private.h"
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/sgen-layout-stats.h"
-#include "metadata/gc-internal.h"
-#include "metadata/sgen-pointer-queue.h"
-#include "metadata/sgen-pinning.h"
-#include "metadata/sgen-workers.h"
-
-#if defined(ARCH_MIN_MS_BLOCK_SIZE) && defined(ARCH_MIN_MS_BLOCK_SIZE_SHIFT)
-#define MS_BLOCK_SIZE  ARCH_MIN_MS_BLOCK_SIZE
-#define MS_BLOCK_SIZE_SHIFT    ARCH_MIN_MS_BLOCK_SIZE_SHIFT
-#else
-#define MS_BLOCK_SIZE_SHIFT     14      /* INT FASTENABLE */
-#define MS_BLOCK_SIZE           (1 << MS_BLOCK_SIZE_SHIFT)
-#endif
-#define MAJOR_SECTION_SIZE     MS_BLOCK_SIZE
-#define CARDS_PER_BLOCK (MS_BLOCK_SIZE / CARD_SIZE_IN_BYTES)
-
-/*
- * Don't allocate single blocks, but alloc a contingent of this many
- * blocks in one swoop.  This must be a power of two.
- */
-#define MS_BLOCK_ALLOC_NUM     32
-
-/*
- * Number of bytes before the first object in a block.  At the start
- * of a block is the MSBlockHeader, then opional padding, then come
- * the objects, so this must be >= sizeof (MSBlockHeader).
- */
-#define MS_BLOCK_SKIP  ((sizeof (MSBlockHeader) + 15) & ~15)
-
-#define MS_BLOCK_FREE  (MS_BLOCK_SIZE - MS_BLOCK_SKIP)
-
-#define MS_NUM_MARK_WORDS      ((MS_BLOCK_SIZE / SGEN_ALLOC_ALIGN + sizeof (mword) * 8 - 1) / (sizeof (mword) * 8))
-
-typedef struct _MSBlockInfo MSBlockInfo;
-struct _MSBlockInfo {
-       guint16 obj_size;
-       /*
-        * FIXME: Do we even need this? It's only used during sweep and might be worth
-        * recalculating to save the space.
-        */
-       guint16 obj_size_index;
-       unsigned int pinned : 1;
-       unsigned int has_references : 1;
-       unsigned int has_pinned : 1;    /* means cannot evacuate */
-       unsigned int is_to_space : 1;
-       unsigned int swept : 1;
-       void ** volatile free_list;
-       MSBlockInfo * volatile next_free;
-       guint8 *cardtable_mod_union;
-       mword mark_words [MS_NUM_MARK_WORDS];
-};
-
-#define MS_BLOCK_FOR_BLOCK_INFO(b)     ((char*)(b))
-
-#define MS_BLOCK_OBJ(b,i)              (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (b)->obj_size * (i))
-#define MS_BLOCK_OBJ_FOR_SIZE(b,i,obj_size)            (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (obj_size) * (i))
-#define MS_BLOCK_DATA_FOR_OBJ(o)       ((char*)((mword)(o) & ~(mword)(MS_BLOCK_SIZE - 1)))
-
-typedef struct {
-       MSBlockInfo info;
-} MSBlockHeader;
-
-#define MS_BLOCK_FOR_OBJ(o)            (&((MSBlockHeader*)MS_BLOCK_DATA_FOR_OBJ ((o)))->info)
-
-/* object index will always be small */
-#define MS_BLOCK_OBJ_INDEX(o,b)        ((int)(((char*)(o) - (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP)) / (b)->obj_size))
-
-//casting to int is fine since blocks are 32k
-#define MS_CALC_MARK_BIT(w,b,o)        do {                            \
-               int i = ((int)((char*)(o) - MS_BLOCK_DATA_FOR_OBJ ((o)))) >> SGEN_ALLOC_ALIGN_BITS; \
-               if (sizeof (mword) == 4) {                              \
-                       (w) = i >> 5;                                   \
-                       (b) = i & 31;                                   \
-               } else {                                                \
-                       (w) = i >> 6;                                   \
-                       (b) = i & 63;                                   \
-               }                                                       \
-       } while (0)
-
-#define MS_MARK_BIT(bl,w,b)    ((bl)->mark_words [(w)] & (ONE_P << (b)))
-#define MS_SET_MARK_BIT(bl,w,b)        ((bl)->mark_words [(w)] |= (ONE_P << (b)))
-
-#define MS_OBJ_ALLOCED(o,b)    (*(void**)(o) && (*(char**)(o) < MS_BLOCK_FOR_BLOCK_INFO (b) || *(char**)(o) >= MS_BLOCK_FOR_BLOCK_INFO (b) + MS_BLOCK_SIZE))
-
-#define MS_BLOCK_OBJ_SIZE_FACTOR       (pow (2.0, 1.0 / 3))
-
-/*
- * This way we can lookup block object size indexes for sizes up to
- * 256 bytes with a single load.
- */
-#define MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES     32
-
-static int *block_obj_sizes;
-static int num_block_obj_sizes;
-static int fast_block_obj_size_indexes [MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES];
-
-#define MS_BLOCK_FLAG_PINNED   1
-#define MS_BLOCK_FLAG_REFS     2
-
-#define MS_BLOCK_TYPE_MAX      4
-
-static gboolean *evacuate_block_obj_sizes;
-static float evacuation_threshold = 0.666f;
-static float concurrent_evacuation_threshold = 0.666f;
-static gboolean want_evacuation = FALSE;
-
-static gboolean lazy_sweep = TRUE;
-static gboolean have_swept = TRUE;
-
-static gboolean concurrent_mark;
-
-#define BLOCK_IS_TAGGED_HAS_REFERENCES(bl)     SGEN_POINTER_IS_TAGGED_1 ((bl))
-#define BLOCK_TAG_HAS_REFERENCES(bl)           SGEN_POINTER_TAG_1 ((bl))
-#define BLOCK_UNTAG_HAS_REFERENCES(bl)         SGEN_POINTER_UNTAG_1 ((bl))
-
-#define BLOCK_TAG(bl)  ((bl)->has_references ? BLOCK_TAG_HAS_REFERENCES ((bl)) : (bl))
-
-/* all allocated blocks in the system */
-static SgenPointerQueue allocated_blocks;
-
-/* non-allocated block free-list */
-static void *empty_blocks = NULL;
-static size_t num_empty_blocks = 0;
-
-#define FOREACH_BLOCK(bl)      { size_t __index; for (__index = 0; __index < allocated_blocks.next_slot; ++__index) { (bl) = BLOCK_UNTAG_HAS_REFERENCES (allocated_blocks.data [__index]);
-#define FOREACH_BLOCK_HAS_REFERENCES(bl,hr)    { size_t __index; for (__index = 0; __index < allocated_blocks.next_slot; ++__index) { (bl) = allocated_blocks.data [__index]; (hr) = BLOCK_IS_TAGGED_HAS_REFERENCES ((bl)); (bl) = BLOCK_UNTAG_HAS_REFERENCES ((bl));
-#define END_FOREACH_BLOCK      } }
-#define DELETE_BLOCK_IN_FOREACH()      (allocated_blocks.data [__index] = NULL)
-
-static size_t num_major_sections = 0;
-/* one free block list for each block object size */
-static MSBlockInfo **free_block_lists [MS_BLOCK_TYPE_MAX];
-
-static guint64 stat_major_blocks_alloced = 0;
-static guint64 stat_major_blocks_freed = 0;
-static guint64 stat_major_blocks_lazy_swept = 0;
-static guint64 stat_major_objects_evacuated = 0;
-
-#if SIZEOF_VOID_P != 8
-static guint64 stat_major_blocks_freed_ideal = 0;
-static guint64 stat_major_blocks_freed_less_ideal = 0;
-static guint64 stat_major_blocks_freed_individual = 0;
-static guint64 stat_major_blocks_alloced_less_ideal = 0;
-#endif
-
-#ifdef SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
-static guint64 num_major_objects_marked = 0;
-#define INC_NUM_MAJOR_OBJECTS_MARKED() (++num_major_objects_marked)
-#else
-#define INC_NUM_MAJOR_OBJECTS_MARKED()
-#endif
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-static mono_mutex_t scanned_objects_list_lock;
-static SgenPointerQueue scanned_objects_list;
-
-static void
-add_scanned_object (void *ptr)
-{
-       if (!binary_protocol_is_enabled ())
-               return;
-
-       mono_mutex_lock (&scanned_objects_list_lock);
-       sgen_pointer_queue_add (&scanned_objects_list, ptr);
-       mono_mutex_unlock (&scanned_objects_list_lock);
-}
-#endif
-
-static void
-sweep_block (MSBlockInfo *block, gboolean during_major_collection);
-
-static int
-ms_find_block_obj_size_index (size_t size)
-{
-       int i;
-       SGEN_ASSERT (9, size <= SGEN_MAX_SMALL_OBJ_SIZE, "size %d is bigger than max small object size %d", size, SGEN_MAX_SMALL_OBJ_SIZE);
-       for (i = 0; i < num_block_obj_sizes; ++i)
-               if (block_obj_sizes [i] >= size)
-                       return i;
-       g_error ("no object of size %d\n", size);
-}
-
-#define FREE_BLOCKS_FROM(lists,p,r)    (lists [((p) ? MS_BLOCK_FLAG_PINNED : 0) | ((r) ? MS_BLOCK_FLAG_REFS : 0)])
-#define FREE_BLOCKS(p,r)               (FREE_BLOCKS_FROM (free_block_lists, (p), (r)))
-
-#define MS_BLOCK_OBJ_SIZE_INDEX(s)                             \
-       (((s)+7)>>3 < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES ?      \
-        fast_block_obj_size_indexes [((s)+7)>>3] :             \
-        ms_find_block_obj_size_index ((s)))
-
-static void*
-major_alloc_heap (mword nursery_size, mword nursery_align, int the_nursery_bits)
-{
-       char *start;
-       if (nursery_align)
-               start = sgen_alloc_os_memory_aligned (nursery_size, nursery_align, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
-       else
-               start = sgen_alloc_os_memory (nursery_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
-
-       return start;
-}
-
-static void
-update_heap_boundaries_for_block (MSBlockInfo *block)
-{
-       sgen_update_heap_boundaries ((mword)MS_BLOCK_FOR_BLOCK_INFO (block), (mword)MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE);
-}
-
-static void*
-ms_get_empty_block (void)
-{
-       char *p;
-       int i;
-       void *block, *empty, *next;
-
- retry:
-       if (!empty_blocks) {
-               /*
-                * We try allocating MS_BLOCK_ALLOC_NUM blocks first.  If that's
-                * unsuccessful, we halve the number of blocks and try again, until we're at
-                * 1.  If that doesn't work, either, we assert.
-                */
-               int alloc_num = MS_BLOCK_ALLOC_NUM;
-               for (;;) {
-                       p = sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE,
-                                       alloc_num == 1 ? "major heap section" : NULL);
-                       if (p)
-                               break;
-                       alloc_num >>= 1;
-               }
-
-               for (i = 0; i < alloc_num; ++i) {
-                       block = p;
-                       /*
-                        * We do the free list update one after the
-                        * other so that other threads can use the new
-                        * blocks as quickly as possible.
-                        */
-                       do {
-                               empty = empty_blocks;
-                               *(void**)block = empty;
-                       } while (SGEN_CAS_PTR ((gpointer*)&empty_blocks, block, empty) != empty);
-                       p += MS_BLOCK_SIZE;
-               }
-
-               SGEN_ATOMIC_ADD_P (num_empty_blocks, alloc_num);
-
-               stat_major_blocks_alloced += alloc_num;
-#if SIZEOF_VOID_P != 8
-               if (alloc_num != MS_BLOCK_ALLOC_NUM)
-                       stat_major_blocks_alloced_less_ideal += alloc_num;
-#endif
-       }
-
-       do {
-               empty = empty_blocks;
-               if (!empty)
-                       goto retry;
-               block = empty;
-               next = *(void**)block;
-       } while (SGEN_CAS_PTR (&empty_blocks, next, empty) != empty);
-
-       SGEN_ATOMIC_ADD_P (num_empty_blocks, -1);
-
-       *(void**)block = NULL;
-
-       g_assert (!((mword)block & (MS_BLOCK_SIZE - 1)));
-
-       return block;
-}
-
-/*
- * This doesn't actually free a block immediately, but enqueues it into the `empty_blocks`
- * list, where it will either be freed later on, or reused in nursery collections.
- */
-static void
-ms_free_block (void *block)
-{
-       void *empty;
-
-       sgen_memgov_release_space (MS_BLOCK_SIZE, SPACE_MAJOR);
-       memset (block, 0, MS_BLOCK_SIZE);
-
-       do {
-               empty = empty_blocks;
-               *(void**)block = empty;
-       } while (SGEN_CAS_PTR (&empty_blocks, block, empty) != empty);
-
-       SGEN_ATOMIC_ADD_P (num_empty_blocks, 1);
-}
-
-//#define MARKSWEEP_CONSISTENCY_CHECK
-
-#ifdef MARKSWEEP_CONSISTENCY_CHECK
-static void
-check_block_free_list (MSBlockInfo *block, int size, gboolean pinned)
-{
-       MSBlockInfo *b;
-
-       for (; block; block = block->next_free) {
-               g_assert (block->obj_size == size);
-               g_assert ((pinned && block->pinned) || (!pinned && !block->pinned));
-
-               /* blocks in the free lists must have at least
-                  one free slot */
-               if (block->swept)
-                       g_assert (block->free_list);
-
-               /* the block must be in the allocated_blocks array */
-               g_assert (sgen_pointer_queue_find (&allocated_blocks, BLOCK_TAG (block)) != (size_t)-1);
-       }
-}
-
-static void
-check_empty_blocks (void)
-{
-       void *p;
-       size_t i = 0;
-       for (p = empty_blocks; p; p = *(void**)p)
-               ++i;
-       g_assert (i == num_empty_blocks);
-}
-
-static void
-consistency_check (void)
-{
-       MSBlockInfo *block;
-       int i;
-
-       /* check all blocks */
-       FOREACH_BLOCK (block) {
-               int count = MS_BLOCK_FREE / block->obj_size;
-               int num_free = 0;
-               void **free;
-
-               /* check block header */
-               g_assert (((MSBlockHeader*)block->block)->info == block);
-
-               /* count number of free slots */
-               for (i = 0; i < count; ++i) {
-                       void **obj = (void**) MS_BLOCK_OBJ (block, i);
-                       if (!MS_OBJ_ALLOCED (obj, block))
-                               ++num_free;
-               }
-
-               /* check free list */
-               for (free = block->free_list; free; free = (void**)*free) {
-                       g_assert (MS_BLOCK_FOR_OBJ (free) == block);
-                       --num_free;
-               }
-               g_assert (num_free == 0);
-
-               /* check all mark words are zero */
-               if (block->swept) {
-                       for (i = 0; i < MS_NUM_MARK_WORDS; ++i)
-                               g_assert (block->mark_words [i] == 0);
-               }
-       } END_FOREACH_BLOCK;
-
-       /* check free blocks */
-       for (i = 0; i < num_block_obj_sizes; ++i) {
-               int j;
-               for (j = 0; j < MS_BLOCK_TYPE_MAX; ++j)
-                       check_block_free_list (free_block_lists [j][i], block_obj_sizes [i], j & MS_BLOCK_FLAG_PINNED);
-       }
-
-       check_empty_blocks ();
-}
-#endif
-
-static gboolean
-ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
-{
-       int size = block_obj_sizes [size_index];
-       int count = MS_BLOCK_FREE / size;
-       MSBlockInfo *info;
-       MSBlockInfo **free_blocks = FREE_BLOCKS (pinned, has_references);
-       char *obj_start;
-       int i;
-
-       if (!sgen_memgov_try_alloc_space (MS_BLOCK_SIZE, SPACE_MAJOR))
-               return FALSE;
-
-       info = (MSBlockInfo*)ms_get_empty_block ();
-
-       SGEN_ASSERT (9, count >= 2, "block with %d objects, it must hold at least 2", count);
-
-       info->obj_size = size;
-       info->obj_size_index = size_index;
-       info->pinned = pinned;
-       info->has_references = has_references;
-       info->has_pinned = pinned;
-       /*
-        * Blocks that are to-space are not evacuated from.  During an major collection
-        * blocks are allocated for two reasons: evacuating objects from the nursery and
-        * evacuating them from major blocks marked for evacuation.  In both cases we don't
-        * want further evacuation.
-        */
-       info->is_to_space = (sgen_get_current_collection_generation () == GENERATION_OLD);
-       info->swept = 1;
-       info->cardtable_mod_union = NULL;
-
-       update_heap_boundaries_for_block (info);
-
-       /* build free list */
-       obj_start = MS_BLOCK_FOR_BLOCK_INFO (info) + MS_BLOCK_SKIP;
-       info->free_list = (void**)obj_start;
-       /* we're skipping the last one - it must be nulled */
-       for (i = 0; i < count - 1; ++i) {
-               char *next_obj_start = obj_start + size;
-               *(void**)obj_start = next_obj_start;
-               obj_start = next_obj_start;
-       }
-       /* the last one */
-       *(void**)obj_start = NULL;
-
-       info->next_free = free_blocks [size_index];
-       free_blocks [size_index] = info;
-
-       sgen_pointer_queue_add (&allocated_blocks, BLOCK_TAG (info));
-
-       ++num_major_sections;
-       return TRUE;
-}
-
-static gboolean
-obj_is_from_pinned_alloc (char *ptr)
-{
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               if (ptr >= MS_BLOCK_FOR_BLOCK_INFO (block) && ptr <= MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE)
-                       return block->pinned;
-       } END_FOREACH_BLOCK;
-       return FALSE;
-}
-
-static void*
-unlink_slot_from_free_list_uncontested (MSBlockInfo **free_blocks, int size_index)
-{
-       MSBlockInfo *block;
-       void *obj;
-
-       block = free_blocks [size_index];
-       SGEN_ASSERT (9, block, "no free block to unlink from free_blocks %p size_index %d", free_blocks, size_index);
-
-       if (G_UNLIKELY (!block->swept)) {
-               stat_major_blocks_lazy_swept ++;
-               sweep_block (block, FALSE);
-       }
-
-       obj = block->free_list;
-       SGEN_ASSERT (9, obj, "block %p in free list had no available object to alloc from", block);
-
-       block->free_list = *(void**)obj;
-       if (!block->free_list) {
-               free_blocks [size_index] = block->next_free;
-               block->next_free = NULL;
-       }
-
-       return obj;
-}
-
-static void*
-alloc_obj (MonoVTable *vtable, size_t size, gboolean pinned, gboolean has_references)
-{
-       int size_index = MS_BLOCK_OBJ_SIZE_INDEX (size);
-       MSBlockInfo **free_blocks = FREE_BLOCKS (pinned, has_references);
-       void *obj;
-
-       if (!free_blocks [size_index]) {
-               if (G_UNLIKELY (!ms_alloc_block (size_index, pinned, has_references)))
-                       return NULL;
-       }
-
-       obj = unlink_slot_from_free_list_uncontested (free_blocks, size_index);
-
-       *(MonoVTable**)obj = vtable;
-
-       return obj;
-}
-
-static void*
-major_alloc_object (MonoVTable *vtable, size_t size, gboolean has_references)
-{
-       return alloc_obj (vtable, size, FALSE, has_references);
-}
-
-/*
- * We're not freeing the block if it's empty.  We leave that work for
- * the next major collection.
- *
- * This is just called from the domain clearing code, which runs in a
- * single thread and has the GC lock, so we don't need an extra lock.
- */
-static void
-free_object (char *obj, size_t size, gboolean pinned)
-{
-       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
-       int word, bit;
-
-       if (!block->swept)
-               sweep_block (block, FALSE);
-       SGEN_ASSERT (9, (pinned && block->pinned) || (!pinned && !block->pinned), "free-object pinning mixup object %p pinned %d block %p pinned %d", obj, pinned, block, block->pinned);
-       SGEN_ASSERT (9, MS_OBJ_ALLOCED (obj, block), "object %p is already free", obj);
-       MS_CALC_MARK_BIT (word, bit, obj);
-       SGEN_ASSERT (9, !MS_MARK_BIT (block, word, bit), "object %p has mark bit set");
-       if (!block->free_list) {
-               MSBlockInfo **free_blocks = FREE_BLOCKS (pinned, block->has_references);
-               int size_index = MS_BLOCK_OBJ_SIZE_INDEX (size);
-               SGEN_ASSERT (9, !block->next_free, "block %p doesn't have a free-list of object but belongs to a free-list of blocks");
-               block->next_free = free_blocks [size_index];
-               free_blocks [size_index] = block;
-       }
-       memset (obj, 0, size);
-       *(void**)obj = block->free_list;
-       block->free_list = (void**)obj;
-}
-
-static void
-major_free_non_pinned_object (char *obj, size_t size)
-{
-       free_object (obj, size, FALSE);
-}
-
-/* size is a multiple of SGEN_ALLOC_ALIGN */
-static void*
-major_alloc_small_pinned_obj (MonoVTable *vtable, size_t size, gboolean has_references)
-{
-       void *res;
-
-       res = alloc_obj (vtable, size, TRUE, has_references);
-        /*If we failed to alloc memory, we better try releasing memory
-         *as pinned alloc is requested by the runtime.
-         */
-        if (!res) {
-               sgen_perform_collection (0, GENERATION_OLD, "pinned alloc failure", TRUE);
-               res = alloc_obj (vtable, size, TRUE, has_references);
-        }
-        return res;
-}
-
-static void
-free_pinned_object (char *obj, size_t size)
-{
-       free_object (obj, size, TRUE);
-}
-
-/*
- * size is already rounded up and we hold the GC lock.
- */
-static void*
-major_alloc_degraded (MonoVTable *vtable, size_t size)
-{
-       void *obj;
-       size_t old_num_sections;
-
-       old_num_sections = num_major_sections;
-
-       obj = alloc_obj (vtable, size, FALSE, SGEN_VTABLE_HAS_REFERENCES (vtable));
-       if (G_LIKELY (obj)) {
-               HEAVY_STAT (++stat_objects_alloced_degraded);
-               HEAVY_STAT (stat_bytes_alloced_degraded += size);
-               g_assert (num_major_sections >= old_num_sections);
-               sgen_register_major_sections_alloced (num_major_sections - old_num_sections);
-       }
-       return obj;
-}
-
-/*
- * obj is some object.  If it's not in the major heap (i.e. if it's in
- * the nursery or LOS), return FALSE.  Otherwise return whether it's
- * been marked or copied.
- */
-static gboolean
-major_is_object_live (char *obj)
-{
-       MSBlockInfo *block;
-       int word, bit;
-       mword objsize;
-
-       if (sgen_ptr_in_nursery (obj))
-               return FALSE;
-
-       objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size ((MonoObject*)obj));
-
-       /* LOS */
-       if (objsize > SGEN_MAX_SMALL_OBJ_SIZE)
-               return FALSE;
-
-       /* now we know it's in a major block */
-       block = MS_BLOCK_FOR_OBJ (obj);
-       SGEN_ASSERT (9, !block->pinned, "block %p is pinned, BTW why is this bad?");
-       MS_CALC_MARK_BIT (word, bit, obj);
-       return MS_MARK_BIT (block, word, bit) ? TRUE : FALSE;
-}
-
-static gboolean
-major_ptr_is_in_non_pinned_space (char *ptr, char **start)
-{
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               if (ptr >= MS_BLOCK_FOR_BLOCK_INFO (block) && ptr <= MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE) {
-                       int count = MS_BLOCK_FREE / block->obj_size;
-                       int i;
-
-                       *start = NULL;
-                       for (i = 0; i <= count; ++i) {
-                               if (ptr >= MS_BLOCK_OBJ (block, i) && ptr < MS_BLOCK_OBJ (block, i + 1)) {
-                                       *start = MS_BLOCK_OBJ (block, i);
-                                       break;
-                               }
-                       }
-                       return !block->pinned;
-               }
-       } END_FOREACH_BLOCK;
-       return FALSE;
-}
-
-static void
-major_iterate_objects (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data)
-{
-       gboolean sweep = flags & ITERATE_OBJECTS_SWEEP;
-       gboolean non_pinned = flags & ITERATE_OBJECTS_NON_PINNED;
-       gboolean pinned = flags & ITERATE_OBJECTS_PINNED;
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               int count = MS_BLOCK_FREE / block->obj_size;
-               int i;
-
-               if (block->pinned && !pinned)
-                       continue;
-               if (!block->pinned && !non_pinned)
-                       continue;
-               if (sweep && lazy_sweep) {
-                       sweep_block (block, FALSE);
-                       SGEN_ASSERT (0, block->swept, "Block must be swept after sweeping");
-               }
-
-               for (i = 0; i < count; ++i) {
-                       void **obj = (void**) MS_BLOCK_OBJ (block, i);
-                       if (!block->swept) {
-                               int word, bit;
-                               MS_CALC_MARK_BIT (word, bit, obj);
-                               if (!MS_MARK_BIT (block, word, bit))
-                                       continue;
-                       }
-                       if (MS_OBJ_ALLOCED (obj, block))
-                               callback ((char*)obj, block->obj_size, data);
-               }
-       } END_FOREACH_BLOCK;
-}
-
-static gboolean
-major_is_valid_object (char *object)
-{
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               int idx;
-               char *obj;
-
-               if ((MS_BLOCK_FOR_BLOCK_INFO (block) > object) || ((MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE) <= object))
-                       continue;
-
-               idx = MS_BLOCK_OBJ_INDEX (object, block);
-               obj = (char*)MS_BLOCK_OBJ (block, idx);
-               if (obj != object)
-                       return FALSE;
-               return MS_OBJ_ALLOCED (obj, block);
-       } END_FOREACH_BLOCK;
-
-       return FALSE;
-}
-
-
-static MonoVTable*
-major_describe_pointer (char *ptr)
-{
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               int idx;
-               char *obj;
-               gboolean live;
-               MonoVTable *vtable;
-               int w, b;
-               gboolean marked;
-
-               if ((MS_BLOCK_FOR_BLOCK_INFO (block) > ptr) || ((MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE) <= ptr))
-                       continue;
-
-               SGEN_LOG (0, "major-ptr (block %p sz %d pin %d ref %d)\n",
-                       MS_BLOCK_FOR_BLOCK_INFO (block), block->obj_size, block->pinned, block->has_references);
-
-               idx = MS_BLOCK_OBJ_INDEX (ptr, block);
-               obj = (char*)MS_BLOCK_OBJ (block, idx);
-               live = MS_OBJ_ALLOCED (obj, block);
-               vtable = live ? (MonoVTable*)SGEN_LOAD_VTABLE (obj) : NULL;
-
-               MS_CALC_MARK_BIT (w, b, obj);
-               marked = MS_MARK_BIT (block, w, b);
-
-               if (obj == ptr) {
-                       SGEN_LOG (0, "\t(");
-                       if (live)
-                               SGEN_LOG (0, "object");
-                       else
-                               SGEN_LOG (0, "dead-object");
-               } else {
-                       if (live)
-                               SGEN_LOG (0, "interior-ptr offset %td", ptr - obj);
-                       else
-                               SGEN_LOG (0, "dead-interior-ptr offset %td", ptr - obj);
-               }
-
-               SGEN_LOG (0, " marked %d)\n", marked ? 1 : 0);
-
-               return vtable;
-       } END_FOREACH_BLOCK;
-
-       return NULL;
-}
-
-static void
-major_check_scan_starts (void)
-{
-}
-
-static void
-major_dump_heap (FILE *heap_dump_file)
-{
-       MSBlockInfo *block;
-       int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
-       int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
-       int i;
-
-       for (i = 0; i < num_block_obj_sizes; ++i)
-               slots_available [i] = slots_used [i] = 0;
-
-       FOREACH_BLOCK (block) {
-               int index = ms_find_block_obj_size_index (block->obj_size);
-               int count = MS_BLOCK_FREE / block->obj_size;
-
-               slots_available [index] += count;
-               for (i = 0; i < count; ++i) {
-                       if (MS_OBJ_ALLOCED (MS_BLOCK_OBJ (block, i), block))
-                               ++slots_used [index];
-               }
-       } END_FOREACH_BLOCK;
-
-       fprintf (heap_dump_file, "<occupancies>\n");
-       for (i = 0; i < num_block_obj_sizes; ++i) {
-               fprintf (heap_dump_file, "<occupancy size=\"%d\" available=\"%d\" used=\"%d\" />\n",
-                               block_obj_sizes [i], slots_available [i], slots_used [i]);
-       }
-       fprintf (heap_dump_file, "</occupancies>\n");
-
-       FOREACH_BLOCK (block) {
-               int count = MS_BLOCK_FREE / block->obj_size;
-               int i;
-               int start = -1;
-
-               fprintf (heap_dump_file, "<section type=\"%s\" size=\"%zu\">\n", "old", (size_t)MS_BLOCK_FREE);
-
-               for (i = 0; i <= count; ++i) {
-                       if ((i < count) && MS_OBJ_ALLOCED (MS_BLOCK_OBJ (block, i), block)) {
-                               if (start < 0)
-                                       start = i;
-                       } else {
-                               if (start >= 0) {
-                                       sgen_dump_occupied (MS_BLOCK_OBJ (block, start), MS_BLOCK_OBJ (block, i), MS_BLOCK_FOR_BLOCK_INFO (block));
-                                       start = -1;
-                               }
-                       }
-               }
-
-               fprintf (heap_dump_file, "</section>\n");
-       } END_FOREACH_BLOCK;
-}
-
-#define LOAD_VTABLE    SGEN_LOAD_VTABLE
-
-#define MS_MARK_OBJECT_AND_ENQUEUE_CHECKED(obj,desc,block,queue) do {  \
-               int __word, __bit;                                      \
-               MS_CALC_MARK_BIT (__word, __bit, (obj));                \
-               if (!MS_MARK_BIT ((block), __word, __bit) && MS_OBJ_ALLOCED ((obj), (block))) { \
-                       MS_SET_MARK_BIT ((block), __word, __bit);       \
-                       if (sgen_gc_descr_has_references (desc))                        \
-                               GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
-                       binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((MonoObject*)(obj))); \
-                       INC_NUM_MAJOR_OBJECTS_MARKED ();                \
-               }                                                       \
-       } while (0)
-#define MS_MARK_OBJECT_AND_ENQUEUE(obj,desc,block,queue) do {          \
-               int __word, __bit;                                      \
-               MS_CALC_MARK_BIT (__word, __bit, (obj));                \
-               SGEN_ASSERT (9, MS_OBJ_ALLOCED ((obj), (block)), "object %p not allocated", obj); \
-               if (!MS_MARK_BIT ((block), __word, __bit)) {            \
-                       MS_SET_MARK_BIT ((block), __word, __bit);       \
-                       if (sgen_gc_descr_has_references (desc))                        \
-                               GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
-                       binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((MonoObject*)(obj))); \
-                       INC_NUM_MAJOR_OBJECTS_MARKED ();                \
-               }                                                       \
-       } while (0)
-
-static void
-pin_major_object (char *obj, SgenGrayQueue *queue)
-{
-       MSBlockInfo *block;
-
-       if (concurrent_mark)
-               g_assert_not_reached ();
-
-       block = MS_BLOCK_FOR_OBJ (obj);
-       block->has_pinned = TRUE;
-       MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
-}
-
-#include "sgen-major-copy-object.h"
-
-static void
-major_copy_or_mark_object_with_evacuation_concurrent (void **ptr, void *obj, SgenGrayQueue *queue)
-{
-       SGEN_ASSERT (9, sgen_concurrent_collection_in_progress (), "Why are we scanning concurrently when there's no concurrent collection on?");
-       SGEN_ASSERT (9, !sgen_workers_are_working () || sgen_is_worker_thread (mono_native_thread_id_get ()), "We must not scan from two threads at the same time!");
-
-       g_assert (!SGEN_OBJECT_IS_FORWARDED (obj));
-
-       if (!sgen_ptr_in_nursery (obj)) {
-               mword objsize;
-
-               objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size ((MonoObject*)obj));
-
-               if (objsize <= SGEN_MAX_SMALL_OBJ_SIZE) {
-                       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
-                       MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
-               } else {
-                       if (sgen_los_object_is_pinned (obj))
-                               return;
-
-#ifdef ENABLE_DTRACE
-                       if (G_UNLIKELY (MONO_GC_OBJ_PINNED_ENABLED ())) {
-                               MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
-                               MONO_GC_OBJ_PINNED ((mword)obj, sgen_safe_object_get_size (obj), vt->klass->name_space, vt->klass->name, GENERATION_OLD);
-                       }
-#endif
-
-                       sgen_los_pin_object (obj);
-                       if (SGEN_OBJECT_HAS_REFERENCES (obj))
-                               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_obj_get_descriptor (obj));
-                       INC_NUM_MAJOR_OBJECTS_MARKED ();
-               }
-       }
-}
-
-static long long
-major_get_and_reset_num_major_objects_marked (void)
-{
-#ifdef SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
-       long long num = num_major_objects_marked;
-       num_major_objects_marked = 0;
-       return num;
-#else
-       return 0;
-#endif
-}
-
-#define PREFETCH_CARDS         1       /* BOOL FASTENABLE */
-#if !PREFETCH_CARDS
-#undef PREFETCH_CARDS
-#endif
-
-/* gcc 4.2.1 from xcode4 crashes on sgen_card_table_get_card_address () when this is enabled */
-#if defined(PLATFORM_MACOSX)
-#define GCC_VERSION (__GNUC__ * 10000 \
-                               + __GNUC_MINOR__ * 100 \
-                               + __GNUC_PATCHLEVEL__)
-#if GCC_VERSION <= 40300
-#undef PREFETCH_CARDS
-#endif
-#endif
-
-#ifdef HEAVY_STATISTICS
-static guint64 stat_optimized_copy;
-static guint64 stat_optimized_copy_nursery;
-static guint64 stat_optimized_copy_nursery_forwarded;
-static guint64 stat_optimized_copy_nursery_pinned;
-static guint64 stat_optimized_copy_major;
-static guint64 stat_optimized_copy_major_small_fast;
-static guint64 stat_optimized_copy_major_small_slow;
-static guint64 stat_optimized_copy_major_large;
-static guint64 stat_optimized_copy_major_forwarded;
-static guint64 stat_optimized_copy_major_small_evacuate;
-static guint64 stat_optimized_major_scan;
-static guint64 stat_optimized_major_scan_no_refs;
-
-static guint64 stat_drain_prefetch_fills;
-static guint64 stat_drain_prefetch_fill_failures;
-static guint64 stat_drain_loops;
-#endif
-
-static void major_scan_object_with_evacuation (char *start, mword desc, SgenGrayQueue *queue);
-
-#define COPY_OR_MARK_FUNCTION_NAME     major_copy_or_mark_object_no_evacuation
-#define SCAN_OBJECT_FUNCTION_NAME      major_scan_object_no_evacuation
-#define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_no_evacuation
-#include "sgen-marksweep-drain-gray-stack.h"
-
-#define COPY_OR_MARK_WITH_EVACUATION
-#define COPY_OR_MARK_FUNCTION_NAME     major_copy_or_mark_object_with_evacuation
-#define SCAN_OBJECT_FUNCTION_NAME      major_scan_object_with_evacuation
-#define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_with_evacuation
-#include "sgen-marksweep-drain-gray-stack.h"
-
-static gboolean
-drain_gray_stack (ScanCopyContext ctx)
-{
-       gboolean evacuation = FALSE;
-       int i;
-       for (i = 0; i < num_block_obj_sizes; ++i) {
-               if (evacuate_block_obj_sizes [i]) {
-                       evacuation = TRUE;
-                       break;
-               }
-       }
-
-       if (evacuation)
-               return drain_gray_stack_with_evacuation (ctx);
-       else
-               return drain_gray_stack_no_evacuation (ctx);
-}
-
-#include "sgen-marksweep-scan-object-concurrent.h"
-
-static void
-major_copy_or_mark_object_canonical (void **ptr, SgenGrayQueue *queue)
-{
-       major_copy_or_mark_object_with_evacuation (ptr, *ptr, queue);
-}
-
-static void
-major_copy_or_mark_object_concurrent_canonical (void **ptr, SgenGrayQueue *queue)
-{
-       major_copy_or_mark_object_with_evacuation_concurrent (ptr, *ptr, queue);
-}
-
-static void
-mark_pinned_objects_in_block (MSBlockInfo *block, size_t first_entry, size_t last_entry, SgenGrayQueue *queue)
-{
-       void **entry, **end;
-       int last_index = -1;
-
-       if (first_entry == last_entry)
-               return;
-
-       block->has_pinned = TRUE;
-
-       entry = sgen_pinning_get_entry (first_entry);
-       end = sgen_pinning_get_entry (last_entry);
-
-       for (; entry < end; ++entry) {
-               int index = MS_BLOCK_OBJ_INDEX (*entry, block);
-               char *obj;
-               SGEN_ASSERT (9, index >= 0 && index < MS_BLOCK_FREE / block->obj_size, "invalid object %p index %d max-index %d", *entry, index, MS_BLOCK_FREE / block->obj_size);
-               if (index == last_index)
-                       continue;
-               obj = MS_BLOCK_OBJ (block, index);
-               MS_MARK_OBJECT_AND_ENQUEUE_CHECKED (obj, sgen_obj_get_descriptor (obj), block, queue);
-               last_index = index;
-       }
-}
-
-static inline void
-sweep_block_for_size (MSBlockInfo *block, int count, int obj_size)
-{
-       int obj_index;
-
-       for (obj_index = 0; obj_index < count; ++obj_index) {
-               int word, bit;
-               void *obj = MS_BLOCK_OBJ_FOR_SIZE (block, obj_index, obj_size);
-
-               MS_CALC_MARK_BIT (word, bit, obj);
-               if (MS_MARK_BIT (block, word, bit)) {
-                       SGEN_ASSERT (9, MS_OBJ_ALLOCED (obj, block), "object %p not allocated", obj);
-               } else {
-                       /* an unmarked object */
-                       if (MS_OBJ_ALLOCED (obj, block)) {
-                               /*
-                                * FIXME: Merge consecutive
-                                * slots for lower reporting
-                                * overhead.  Maybe memset
-                                * will also benefit?
-                                */
-                               binary_protocol_empty (obj, obj_size);
-                               MONO_GC_MAJOR_SWEPT ((mword)obj, obj_size);
-                               memset (obj, 0, obj_size);
-                       }
-                       *(void**)obj = block->free_list;
-                       block->free_list = obj;
-               }
-       }
-}
-
-/*
- * sweep_block:
- *
- *   Traverse BLOCK, freeing and zeroing unused objects.
- */
-static void
-sweep_block (MSBlockInfo *block, gboolean during_major_collection)
-{
-       int count;
-       void *reversed = NULL;
-
-       if (!during_major_collection)
-               g_assert (!sgen_concurrent_collection_in_progress ());
-
-       if (block->swept)
-               return;
-
-       count = MS_BLOCK_FREE / block->obj_size;
-
-       block->free_list = NULL;
-
-       /* Use inline instances specialized to constant sizes, this allows the compiler to replace the memset calls with inline code */
-       // FIXME: Add more sizes
-       switch (block->obj_size) {
-       case 16:
-               sweep_block_for_size (block, count, 16);
-               break;
-       default:
-               sweep_block_for_size (block, count, block->obj_size);
-               break;
-       }
-
-       /* reset mark bits */
-       memset (block->mark_words, 0, sizeof (mword) * MS_NUM_MARK_WORDS);
-
-       /* Reverse free list so that it's in address order */
-       reversed = NULL;
-       while (block->free_list) {
-               void *next = *(void**)block->free_list;
-               *(void**)block->free_list = reversed;
-               reversed = block->free_list;
-               block->free_list = next;
-       }
-       block->free_list = reversed;
-
-       block->swept = 1;
-}
-
-static inline int
-bitcount (mword d)
-{
-       int count = 0;
-
-#ifdef __GNUC__
-       if (sizeof (mword) == sizeof (unsigned long))
-               count += __builtin_popcountl (d);
-       else
-               count += __builtin_popcount (d);
-#else
-       while (d) {
-               count ++;
-               d &= (d - 1);
-       }
-#endif
-       return count;
-}
-
-static void
-major_sweep (void)
-{
-       int i;
-       MSBlockInfo *block;
-
-       /* statistics for evacuation */
-       int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
-       int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
-       int *num_blocks = alloca (sizeof (int) * num_block_obj_sizes);
-
-       mword total_evacuate_heap = 0;
-       mword total_evacuate_saved = 0;
-
-       for (i = 0; i < num_block_obj_sizes; ++i)
-               slots_available [i] = slots_used [i] = num_blocks [i] = 0;
-
-       /* clear all the free lists */
-       for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i) {
-               MSBlockInfo **free_blocks = free_block_lists [i];
-               int j;
-               for (j = 0; j < num_block_obj_sizes; ++j)
-                       free_blocks [j] = NULL;
-       }
-
-       /* traverse all blocks, free and zero unmarked objects */
-       FOREACH_BLOCK (block) {
-               int count;
-               gboolean have_live = FALSE;
-               gboolean has_pinned;
-               gboolean have_free = FALSE;
-               int obj_size_index;
-               int nused = 0;
-
-               obj_size_index = block->obj_size_index;
-
-               has_pinned = block->has_pinned;
-               block->has_pinned = block->pinned;
-
-               block->is_to_space = FALSE;
-               block->swept = 0;
-
-               count = MS_BLOCK_FREE / block->obj_size;
-
-               if (block->cardtable_mod_union) {
-                       sgen_free_internal_dynamic (block->cardtable_mod_union, CARDS_PER_BLOCK, INTERNAL_MEM_CARDTABLE_MOD_UNION);
-                       block->cardtable_mod_union = NULL;
-               }
-
-               /* Count marked objects in the block */
-               for (i = 0; i < MS_NUM_MARK_WORDS; ++i) {
-                       nused += bitcount (block->mark_words [i]);
-               }
-               if (nused) {
-                       have_live = TRUE;
-               }
-               if (nused < count)
-                       have_free = TRUE;
-
-               if (!lazy_sweep)
-                       sweep_block (block, TRUE);
-
-               if (have_live) {
-                       if (!has_pinned) {
-                               ++num_blocks [obj_size_index];
-                               slots_used [obj_size_index] += nused;
-                               slots_available [obj_size_index] += count;
-                       }
-
-                       /*
-                        * If there are free slots in the block, add
-                        * the block to the corresponding free list.
-                        */
-                       if (have_free) {
-                               MSBlockInfo **free_blocks = FREE_BLOCKS (block->pinned, block->has_references);
-                               int index = MS_BLOCK_OBJ_SIZE_INDEX (block->obj_size);
-                               block->next_free = free_blocks [index];
-                               free_blocks [index] = block;
-                       }
-
-                       update_heap_boundaries_for_block (block);
-               } else {
-                       /*
-                        * Blocks without live objects are removed from the
-                        * block list and freed.
-                        */
-                       DELETE_BLOCK_IN_FOREACH ();
-
-                       binary_protocol_empty (MS_BLOCK_OBJ (block, 0), (char*)MS_BLOCK_OBJ (block, count) - (char*)MS_BLOCK_OBJ (block, 0));
-                       ms_free_block (block);
-
-                       --num_major_sections;
-               }
-       } END_FOREACH_BLOCK;
-       sgen_pointer_queue_remove_nulls (&allocated_blocks);
-
-       for (i = 0; i < num_block_obj_sizes; ++i) {
-               float usage = (float)slots_used [i] / (float)slots_available [i];
-               if (num_blocks [i] > 5 && usage < evacuation_threshold) {
-                       evacuate_block_obj_sizes [i] = TRUE;
-                       /*
-                       g_print ("slot size %d - %d of %d used\n",
-                                       block_obj_sizes [i], slots_used [i], slots_available [i]);
-                       */
-               } else {
-                       evacuate_block_obj_sizes [i] = FALSE;
-               }
-               {
-                       mword total_bytes = block_obj_sizes [i] * slots_available [i];
-                       total_evacuate_heap += total_bytes;
-                       if (evacuate_block_obj_sizes [i])
-                               total_evacuate_saved += total_bytes - block_obj_sizes [i] * slots_used [i];
-               }
-       }
-
-       want_evacuation = (float)total_evacuate_saved / (float)total_evacuate_heap > (1 - concurrent_evacuation_threshold);
-
-       have_swept = TRUE;
-}
-
-static gboolean
-major_have_finished_sweeping (void)
-{
-       return have_swept;
-}
-
-static int count_pinned_ref;
-static int count_pinned_nonref;
-static int count_nonpinned_ref;
-static int count_nonpinned_nonref;
-
-static void
-count_nonpinned_callback (char *obj, size_t size, void *data)
-{
-       MonoVTable *vtable = (MonoVTable*)LOAD_VTABLE (obj);
-
-       if (vtable->klass->has_references)
-               ++count_nonpinned_ref;
-       else
-               ++count_nonpinned_nonref;
-}
-
-static void
-count_pinned_callback (char *obj, size_t size, void *data)
-{
-       MonoVTable *vtable = (MonoVTable*)LOAD_VTABLE (obj);
-
-       if (vtable->klass->has_references)
-               ++count_pinned_ref;
-       else
-               ++count_pinned_nonref;
-}
-
-static G_GNUC_UNUSED void
-count_ref_nonref_objs (void)
-{
-       int total;
-
-       count_pinned_ref = 0;
-       count_pinned_nonref = 0;
-       count_nonpinned_ref = 0;
-       count_nonpinned_nonref = 0;
-
-       major_iterate_objects (ITERATE_OBJECTS_SWEEP_NON_PINNED, count_nonpinned_callback, NULL);
-       major_iterate_objects (ITERATE_OBJECTS_SWEEP_PINNED, count_pinned_callback, NULL);
-
-       total = count_pinned_nonref + count_nonpinned_nonref + count_pinned_ref + count_nonpinned_ref;
-
-       g_print ("ref: %d pinned %d non-pinned   non-ref: %d pinned %d non-pinned  --  %.1f\n",
-                       count_pinned_ref, count_nonpinned_ref,
-                       count_pinned_nonref, count_nonpinned_nonref,
-                       (count_pinned_nonref + count_nonpinned_nonref) * 100.0 / total);
-}
-
-static int
-ms_calculate_block_obj_sizes (double factor, int *arr)
-{
-       double target_size;
-       int num_sizes = 0;
-       int last_size = 0;
-
-       /*
-        * Have every possible slot size starting with the minimal
-        * object size up to and including four times that size.  Then
-        * proceed by increasing geometrically with the given factor.
-        */
-
-       for (int size = sizeof (MonoObject); size <= 4 * sizeof (MonoObject); size += SGEN_ALLOC_ALIGN) {
-               if (arr)
-                       arr [num_sizes] = size;
-               ++num_sizes;
-               last_size = size;
-       }
-       target_size = (double)last_size;
-
-       do {
-               int target_count = (int)floor (MS_BLOCK_FREE / target_size);
-               int size = MIN ((MS_BLOCK_FREE / target_count) & ~(SGEN_ALLOC_ALIGN - 1), SGEN_MAX_SMALL_OBJ_SIZE);
-
-               if (size != last_size) {
-                       if (arr)
-                               arr [num_sizes] = size;
-                       ++num_sizes;
-                       last_size = size;
-               }
-
-               target_size *= factor;
-       } while (last_size < SGEN_MAX_SMALL_OBJ_SIZE);
-
-       return num_sizes;
-}
-
-/* only valid during minor collections */
-static mword old_num_major_sections;
-
-static void
-major_start_nursery_collection (void)
-{
-#ifdef MARKSWEEP_CONSISTENCY_CHECK
-       consistency_check ();
-#endif
-
-       old_num_major_sections = num_major_sections;
-}
-
-static void
-major_finish_nursery_collection (void)
-{
-#ifdef MARKSWEEP_CONSISTENCY_CHECK
-       consistency_check ();
-#endif
-       sgen_register_major_sections_alloced (num_major_sections - old_num_major_sections);
-}
-
-static void
-major_start_major_collection (void)
-{
-       int i;
-
-       /* clear the free lists */
-       for (i = 0; i < num_block_obj_sizes; ++i) {
-               if (!evacuate_block_obj_sizes [i])
-                       continue;
-
-               free_block_lists [0][i] = NULL;
-               free_block_lists [MS_BLOCK_FLAG_REFS][i] = NULL;
-       }
-
-       // Sweep all unswept blocks
-       if (lazy_sweep) {
-               MSBlockInfo *block;
-
-               MONO_GC_SWEEP_BEGIN (GENERATION_OLD, TRUE);
-
-               FOREACH_BLOCK (block) {
-                       sweep_block (block, TRUE);
-               } END_FOREACH_BLOCK;
-
-               MONO_GC_SWEEP_END (GENERATION_OLD, TRUE);
-       }
-
-       SGEN_ASSERT (0, have_swept, "Cannot start major collection without having finished sweeping");
-       have_swept = FALSE;
-}
-
-static void
-major_finish_major_collection (ScannedObjectCounts *counts)
-{
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       if (binary_protocol_is_enabled ()) {
-               counts->num_scanned_objects = scanned_objects_list.next_slot;
-
-               sgen_pointer_queue_sort_uniq (&scanned_objects_list);
-               counts->num_unique_scanned_objects = scanned_objects_list.next_slot;
-
-               sgen_pointer_queue_clear (&scanned_objects_list);
-       }
-#endif
-}
-
-#if SIZEOF_VOID_P != 8
-static int
-compare_pointers (const void *va, const void *vb) {
-       char *a = *(char**)va, *b = *(char**)vb;
-       if (a < b)
-               return -1;
-       if (a > b)
-               return 1;
-       return 0;
-}
-#endif
-
-static void
-major_free_swept_blocks (void)
-{
-       size_t section_reserve = sgen_get_minor_collection_allowance () / MS_BLOCK_SIZE;
-
-       g_assert (have_swept);
-
-#if SIZEOF_VOID_P != 8
-       {
-               int i, num_empty_blocks_orig, num_blocks, arr_length;
-               void *block;
-               void **empty_block_arr;
-               void **rebuild_next;
-
-#ifdef TARGET_WIN32
-               /*
-                * sgen_free_os_memory () asserts in mono_vfree () because windows doesn't like freeing the middle of
-                * a VirtualAlloc ()-ed block.
-                */
-               return;
-#endif
-
-               if (num_empty_blocks <= section_reserve)
-                       return;
-               SGEN_ASSERT (0, num_empty_blocks > 0, "section reserve can't be negative");
-
-               num_empty_blocks_orig = num_empty_blocks;
-               empty_block_arr = (void**)sgen_alloc_internal_dynamic (sizeof (void*) * num_empty_blocks_orig,
-                               INTERNAL_MEM_MS_BLOCK_INFO_SORT, FALSE);
-               if (!empty_block_arr)
-                       goto fallback;
-
-               i = 0;
-               for (block = empty_blocks; block; block = *(void**)block)
-                       empty_block_arr [i++] = block;
-               SGEN_ASSERT (0, i == num_empty_blocks, "empty block count wrong");
-
-               sgen_qsort (empty_block_arr, num_empty_blocks, sizeof (void*), compare_pointers);
-
-               /*
-                * We iterate over the free blocks, trying to find MS_BLOCK_ALLOC_NUM
-                * contiguous ones.  If we do, we free them.  If that's not enough to get to
-                * section_reserve, we halve the number of contiguous blocks we're looking
-                * for and have another go, until we're done with looking for pairs of
-                * blocks, at which point we give up and go to the fallback.
-                */
-               arr_length = num_empty_blocks_orig;
-               num_blocks = MS_BLOCK_ALLOC_NUM;
-               while (num_empty_blocks > section_reserve && num_blocks > 1) {
-                       int first = -1;
-                       int dest = 0;
-
-                       dest = 0;
-                       for (i = 0; i < arr_length; ++i) {
-                               int d = dest;
-                               void *block = empty_block_arr [i];
-                               SGEN_ASSERT (0, block, "we're not shifting correctly");
-                               if (i != dest) {
-                                       empty_block_arr [dest] = block;
-                                       /*
-                                        * This is not strictly necessary, but we're
-                                        * cautious.
-                                        */
-                                       empty_block_arr [i] = NULL;
-                               }
-                               ++dest;
-
-                               if (first < 0) {
-                                       first = d;
-                                       continue;
-                               }
-
-                               SGEN_ASSERT (0, first >= 0 && d > first, "algorithm is wrong");
-
-                               if ((char*)block != ((char*)empty_block_arr [d-1]) + MS_BLOCK_SIZE) {
-                                       first = d;
-                                       continue;
-                               }
-
-                               if (d + 1 - first == num_blocks) {
-                                       /*
-                                        * We found num_blocks contiguous blocks.  Free them
-                                        * and null their array entries.  As an optimization
-                                        * we could, instead of nulling the entries, shift
-                                        * the following entries over to the left, while
-                                        * we're iterating.
-                                        */
-                                       int j;
-                                       sgen_free_os_memory (empty_block_arr [first], MS_BLOCK_SIZE * num_blocks, SGEN_ALLOC_HEAP);
-                                       for (j = first; j <= d; ++j)
-                                               empty_block_arr [j] = NULL;
-                                       dest = first;
-                                       first = -1;
-
-                                       num_empty_blocks -= num_blocks;
-
-                                       stat_major_blocks_freed += num_blocks;
-                                       if (num_blocks == MS_BLOCK_ALLOC_NUM)
-                                               stat_major_blocks_freed_ideal += num_blocks;
-                                       else
-                                               stat_major_blocks_freed_less_ideal += num_blocks;
-
-                               }
-                       }
-
-                       SGEN_ASSERT (0, dest <= i && dest <= arr_length, "array length is off");
-                       arr_length = dest;
-                       SGEN_ASSERT (0, arr_length == num_empty_blocks, "array length is off");
-
-                       num_blocks >>= 1;
-               }
-
-               /* rebuild empty_blocks free list */
-               rebuild_next = (void**)&empty_blocks;
-               for (i = 0; i < arr_length; ++i) {
-                       void *block = empty_block_arr [i];
-                       SGEN_ASSERT (0, block, "we're missing blocks");
-                       *rebuild_next = block;
-                       rebuild_next = (void**)block;
-               }
-               *rebuild_next = NULL;
-
-               /* free array */
-               sgen_free_internal_dynamic (empty_block_arr, sizeof (void*) * num_empty_blocks_orig, INTERNAL_MEM_MS_BLOCK_INFO_SORT);
-       }
-
-       SGEN_ASSERT (0, num_empty_blocks >= 0, "we freed more blocks than we had in the first place?");
-
- fallback:
-       /*
-        * This is our threshold.  If there's not more empty than used blocks, we won't
-        * release uncontiguous blocks, in fear of fragmenting the address space.
-        */
-       if (num_empty_blocks <= num_major_sections)
-               return;
-#endif
-
-       while (num_empty_blocks > section_reserve) {
-               void *next = *(void**)empty_blocks;
-               sgen_free_os_memory (empty_blocks, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP);
-               empty_blocks = next;
-               /*
-                * Needs not be atomic because this is running
-                * single-threaded.
-                */
-               --num_empty_blocks;
-
-               ++stat_major_blocks_freed;
-#if SIZEOF_VOID_P != 8
-               ++stat_major_blocks_freed_individual;
-#endif
-       }
-}
-
-static void
-major_pin_objects (SgenGrayQueue *queue)
-{
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               size_t first_entry, last_entry;
-               SGEN_ASSERT (0, block->swept, "All blocks must be swept when we're pinning.");
-               sgen_find_optimized_pin_queue_area (MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SKIP, MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE,
-                               &first_entry, &last_entry);
-               mark_pinned_objects_in_block (block, first_entry, last_entry, queue);
-       } END_FOREACH_BLOCK;
-}
-
-static void
-major_init_to_space (void)
-{
-}
-
-static void
-major_report_pinned_memory_usage (void)
-{
-       g_assert_not_reached ();
-}
-
-static gint64
-major_get_used_size (void)
-{
-       gint64 size = 0;
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               int count = MS_BLOCK_FREE / block->obj_size;
-               void **iter;
-               size += count * block->obj_size;
-               for (iter = block->free_list; iter; iter = (void**)*iter)
-                       size -= block->obj_size;
-       } END_FOREACH_BLOCK;
-
-       return size;
-}
-
-static size_t
-get_num_major_sections (void)
-{
-       return num_major_sections;
-}
-
-static gboolean
-major_handle_gc_param (const char *opt)
-{
-       if (g_str_has_prefix (opt, "evacuation-threshold=")) {
-               const char *arg = strchr (opt, '=') + 1;
-               int percentage = atoi (arg);
-               if (percentage < 0 || percentage > 100) {
-                       fprintf (stderr, "evacuation-threshold must be an integer in the range 0-100.\n");
-                       exit (1);
-               }
-               evacuation_threshold = (float)percentage / 100.0f;
-               return TRUE;
-       } else if (!strcmp (opt, "lazy-sweep")) {
-               lazy_sweep = TRUE;
-               return TRUE;
-       } else if (!strcmp (opt, "no-lazy-sweep")) {
-               lazy_sweep = FALSE;
-               return TRUE;
-       }
-
-       return FALSE;
-}
-
-static void
-major_print_gc_param_usage (void)
-{
-       fprintf (stderr,
-                       ""
-                       "  evacuation-threshold=P (where P is a percentage, an integer in 0-100)\n"
-                       "  (no-)lazy-sweep\n"
-                       );
-}
-
-static void
-major_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
-{
-       MSBlockInfo *block;
-       gboolean has_references;
-
-       FOREACH_BLOCK_HAS_REFERENCES (block, has_references) {
-               if (has_references)
-                       callback ((mword)MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
-       } END_FOREACH_BLOCK;
-}
-
-#ifdef HEAVY_STATISTICS
-extern guint64 marked_cards;
-extern guint64 scanned_cards;
-extern guint64 scanned_objects;
-extern guint64 remarked_cards;
-#endif
-
-#define CARD_WORDS_PER_BLOCK (CARDS_PER_BLOCK / SIZEOF_VOID_P)
-/*
- * MS blocks are 16K aligned.
- * Cardtables are 4K aligned, at least.
- * This means that the cardtable of a given block is 32 bytes aligned.
- */
-static guint8*
-initial_skip_card (guint8 *card_data)
-{
-       mword *cards = (mword*)card_data;
-       mword card;
-       int i;
-       for (i = 0; i < CARD_WORDS_PER_BLOCK; ++i) {
-               card = cards [i];
-               if (card)
-                       break;
-       }
-
-       if (i == CARD_WORDS_PER_BLOCK)
-               return card_data + CARDS_PER_BLOCK;
-
-#if defined(__i386__) && defined(__GNUC__)
-       return card_data + i * 4 +  (__builtin_ffs (card) - 1) / 8;
-#elif defined(__x86_64__) && defined(__GNUC__)
-       return card_data + i * 8 +  (__builtin_ffsll (card) - 1) / 8;
-#elif defined(__s390x__) && defined(__GNUC__)
-       return card_data + i * 8 +  (__builtin_ffsll (GUINT64_TO_LE(card)) - 1) / 8;
-#else
-       for (i = i * SIZEOF_VOID_P; i < CARDS_PER_BLOCK; ++i) {
-               if (card_data [i])
-                       return &card_data [i];
-       }
-       return card_data;
-#endif
-}
-
-#define MS_BLOCK_OBJ_INDEX_FAST(o,b,os)        (((char*)(o) - ((b) + MS_BLOCK_SKIP)) / (os))
-#define MS_BLOCK_OBJ_FAST(b,os,i)                      ((b) + MS_BLOCK_SKIP + (os) * (i))
-#define MS_OBJ_ALLOCED_FAST(o,b)               (*(void**)(o) && (*(char**)(o) < (b) || *(char**)(o) >= (b) + MS_BLOCK_SIZE))
-
-static size_t
-card_offset (char *obj, char *base)
-{
-       return (obj - base) >> CARD_BITS;
-}
-
-static void
-major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue)
-{
-       MSBlockInfo *block;
-       gboolean has_references;
-       ScanObjectFunc scan_func = sgen_get_current_object_ops ()->scan_object;
-
-       if (!concurrent_mark)
-               g_assert (!mod_union);
-
-       FOREACH_BLOCK_HAS_REFERENCES (block, has_references) {
-#ifndef SGEN_HAVE_OVERLAPPING_CARDS
-               guint8 cards_copy [CARDS_PER_BLOCK];
-#endif
-               gboolean small_objects;
-               int block_obj_size;
-               char *block_start;
-               guint8 *card_data, *card_base;
-               guint8 *card_data_end;
-               char *scan_front = NULL;
-
-#ifdef PREFETCH_CARDS
-               int prefetch_index = __index + 6;
-               if (prefetch_index < allocated_blocks.next_slot) {
-                       MSBlockInfo *prefetch_block = BLOCK_UNTAG_HAS_REFERENCES (allocated_blocks.data [prefetch_index]);
-                       guint8 *prefetch_cards = sgen_card_table_get_card_scan_address ((mword)MS_BLOCK_FOR_BLOCK_INFO (prefetch_block));
-                       PREFETCH_READ (prefetch_block);
-                       PREFETCH_WRITE (prefetch_cards);
-                       PREFETCH_WRITE (prefetch_cards + 32);
-                }
-#endif
-
-               if (!has_references)
-                       continue;
-
-               block_obj_size = block->obj_size;
-               small_objects = block_obj_size < CARD_SIZE_IN_BYTES;
-
-               block_start = MS_BLOCK_FOR_BLOCK_INFO (block);
-
-               /*
-                * This is safe in face of card aliasing for the following reason:
-                *
-                * Major blocks are 16k aligned, or 32 cards aligned.
-                * Cards aliasing happens in powers of two, so as long as major blocks are aligned to their
-                * sizes, they won't overflow the cardtable overlap modulus.
-                */
-               if (mod_union) {
-                       card_data = card_base = block->cardtable_mod_union;
-                       /*
-                        * This happens when the nursery collection that precedes finishing
-                        * the concurrent collection allocates new major blocks.
-                        */
-                       if (!card_data)
-                               continue;
-               } else {
-#ifdef SGEN_HAVE_OVERLAPPING_CARDS
-                       card_data = card_base = sgen_card_table_get_card_scan_address ((mword)block_start);
-#else
-                       if (!sgen_card_table_get_card_data (cards_copy, (mword)block_start, CARDS_PER_BLOCK))
-                               continue;
-                       card_data = card_base = cards_copy;
-#endif
-               }
-               card_data_end = card_data + CARDS_PER_BLOCK;
-
-               card_data += MS_BLOCK_SKIP >> CARD_BITS;
-
-               card_data = initial_skip_card (card_data);
-               while (card_data < card_data_end) {
-                       size_t card_index, first_object_index;
-                       char *start;
-                       char *end;
-                       char *first_obj, *obj;
-
-                       HEAVY_STAT (++scanned_cards);
-
-                       if (!*card_data) {
-                               ++card_data;
-                               continue;
-                       }
-
-                       card_index = card_data - card_base;
-                       start = (char*)(block_start + card_index * CARD_SIZE_IN_BYTES);
-                       end = start + CARD_SIZE_IN_BYTES;
-
-                       if (!block->swept)
-                               sweep_block (block, FALSE);
-
-                       HEAVY_STAT (++marked_cards);
-
-                       if (small_objects)
-                               sgen_card_table_prepare_card_for_scanning (card_data);
-
-                       /*
-                        * If the card we're looking at starts at or in the block header, we
-                        * must start at the first object in the block, without calculating
-                        * the index of the object we're hypothetically starting at, because
-                        * it would be negative.
-                        */
-                       if (card_index <= (MS_BLOCK_SKIP >> CARD_BITS))
-                               first_object_index = 0;
-                       else
-                               first_object_index = MS_BLOCK_OBJ_INDEX_FAST (start, block_start, block_obj_size);
-
-                       obj = first_obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, first_object_index);
-
-                       while (obj < end) {
-                               if (obj < scan_front || !MS_OBJ_ALLOCED_FAST (obj, block_start))
-                                       goto next_object;
-
-                               if (mod_union) {
-                                       /* FIXME: do this more efficiently */
-                                       int w, b;
-                                       MS_CALC_MARK_BIT (w, b, obj);
-                                       if (!MS_MARK_BIT (block, w, b))
-                                               goto next_object;
-                               }
-
-                               if (small_objects) {
-                                       HEAVY_STAT (++scanned_objects);
-                                       scan_func (obj, sgen_obj_get_descriptor (obj), queue);
-                               } else {
-                                       size_t offset = card_offset (obj, block_start);
-                                       sgen_cardtable_scan_object (obj, block_obj_size, card_base + offset, mod_union, queue);
-                               }
-                       next_object:
-                               obj += block_obj_size;
-                               g_assert (scan_front <= obj);
-                               scan_front = obj;
-                       }
-
-                       HEAVY_STAT (if (*card_data) ++remarked_cards);
-                       binary_protocol_card_scan (first_obj, obj - first_obj);
-
-                       if (small_objects)
-                               ++card_data;
-                       else
-                               card_data = card_base + card_offset (obj, block_start);
-               }
-       } END_FOREACH_BLOCK;
-}
-
-static void
-major_count_cards (long long *num_total_cards, long long *num_marked_cards)
-{
-       MSBlockInfo *block;
-       gboolean has_references;
-       long long total_cards = 0;
-       long long marked_cards = 0;
-
-       FOREACH_BLOCK_HAS_REFERENCES (block, has_references) {
-               guint8 *cards = sgen_card_table_get_card_scan_address ((mword) MS_BLOCK_FOR_BLOCK_INFO (block));
-               int i;
-
-               if (!has_references)
-                       continue;
-
-               total_cards += CARDS_PER_BLOCK;
-               for (i = 0; i < CARDS_PER_BLOCK; ++i) {
-                       if (cards [i])
-                               ++marked_cards;
-               }
-       } END_FOREACH_BLOCK;
-
-       *num_total_cards = total_cards;
-       *num_marked_cards = marked_cards;
-}
-
-static void
-update_cardtable_mod_union (void)
-{
-       MSBlockInfo *block;
-
-       FOREACH_BLOCK (block) {
-               size_t num_cards;
-
-               block->cardtable_mod_union = sgen_card_table_update_mod_union (block->cardtable_mod_union,
-                               MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE, &num_cards);
-
-               SGEN_ASSERT (0, num_cards == CARDS_PER_BLOCK, "Number of cards calculation is wrong");
-       } END_FOREACH_BLOCK;
-}
-
-static guint8*
-major_get_cardtable_mod_union_for_object (char *obj)
-{
-       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
-       size_t offset = card_offset (obj, (char*)sgen_card_table_align_pointer (MS_BLOCK_FOR_BLOCK_INFO (block)));
-       return &block->cardtable_mod_union [offset];
-}
-
-static void
-alloc_free_block_lists (MSBlockInfo ***lists)
-{
-       int i;
-       for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i)
-               lists [i] = sgen_alloc_internal_dynamic (sizeof (MSBlockInfo*) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-}
-
-#undef pthread_create
-
-static void
-post_param_init (SgenMajorCollector *collector)
-{
-       collector->sweeps_lazily = lazy_sweep;
-}
-
-static void
-sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurrent)
-{
-       int i;
-
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_MS_BLOCK_INFO, sizeof (MSBlockInfo));
-
-       num_block_obj_sizes = ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, NULL);
-       block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-       ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, block_obj_sizes);
-
-       evacuate_block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
-       for (i = 0; i < num_block_obj_sizes; ++i)
-               evacuate_block_obj_sizes [i] = FALSE;
-
-       /*
-       {
-               int i;
-               g_print ("block object sizes:\n");
-               for (i = 0; i < num_block_obj_sizes; ++i)
-                       g_print ("%d\n", block_obj_sizes [i]);
-       }
-       */
-
-       alloc_free_block_lists (free_block_lists);
-
-       for (i = 0; i < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES; ++i)
-               fast_block_obj_size_indexes [i] = ms_find_block_obj_size_index (i * 8);
-       for (i = 0; i < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES * 8; ++i)
-               g_assert (MS_BLOCK_OBJ_SIZE_INDEX (i) == ms_find_block_obj_size_index (i));
-
-       mono_counters_register ("# major blocks allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_alloced);
-       mono_counters_register ("# major blocks freed", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed);
-       mono_counters_register ("# major blocks lazy swept", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_lazy_swept);
-       mono_counters_register ("# major objects evacuated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_objects_evacuated);
-#if SIZEOF_VOID_P != 8
-       mono_counters_register ("# major blocks freed ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_ideal);
-       mono_counters_register ("# major blocks freed less ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_less_ideal);
-       mono_counters_register ("# major blocks freed individually", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_individual);
-       mono_counters_register ("# major blocks allocated less ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_alloced_less_ideal);
-#endif
-
-       collector->section_size = MAJOR_SECTION_SIZE;
-
-       concurrent_mark = is_concurrent;
-       if (is_concurrent) {
-               collector->is_concurrent = TRUE;
-               collector->want_synchronous_collection = &want_evacuation;
-       } else {
-               collector->is_concurrent = FALSE;
-               collector->want_synchronous_collection = NULL;
-       }
-       collector->get_and_reset_num_major_objects_marked = major_get_and_reset_num_major_objects_marked;
-       collector->supports_cardtable = TRUE;
-
-       collector->alloc_heap = major_alloc_heap;
-       collector->is_object_live = major_is_object_live;
-       collector->alloc_small_pinned_obj = major_alloc_small_pinned_obj;
-       collector->alloc_degraded = major_alloc_degraded;
-
-       collector->alloc_object = major_alloc_object;
-       collector->free_pinned_object = free_pinned_object;
-       collector->iterate_objects = major_iterate_objects;
-       collector->free_non_pinned_object = major_free_non_pinned_object;
-       collector->pin_objects = major_pin_objects;
-       collector->pin_major_object = pin_major_object;
-       collector->scan_card_table = major_scan_card_table;
-       collector->iterate_live_block_ranges = (void*)(void*) major_iterate_live_block_ranges;
-       if (is_concurrent) {
-               collector->update_cardtable_mod_union = update_cardtable_mod_union;
-               collector->get_cardtable_mod_union_for_object = major_get_cardtable_mod_union_for_object;
-       }
-       collector->init_to_space = major_init_to_space;
-       collector->sweep = major_sweep;
-       collector->have_finished_sweeping = major_have_finished_sweeping;
-       collector->free_swept_blocks = major_free_swept_blocks;
-       collector->check_scan_starts = major_check_scan_starts;
-       collector->dump_heap = major_dump_heap;
-       collector->get_used_size = major_get_used_size;
-       collector->start_nursery_collection = major_start_nursery_collection;
-       collector->finish_nursery_collection = major_finish_nursery_collection;
-       collector->start_major_collection = major_start_major_collection;
-       collector->finish_major_collection = major_finish_major_collection;
-       collector->ptr_is_in_non_pinned_space = major_ptr_is_in_non_pinned_space;
-       collector->obj_is_from_pinned_alloc = obj_is_from_pinned_alloc;
-       collector->report_pinned_memory_usage = major_report_pinned_memory_usage;
-       collector->get_num_major_sections = get_num_major_sections;
-       collector->handle_gc_param = major_handle_gc_param;
-       collector->print_gc_param_usage = major_print_gc_param_usage;
-       collector->post_param_init = post_param_init;
-       collector->is_valid_object = major_is_valid_object;
-       collector->describe_pointer = major_describe_pointer;
-       collector->count_cards = major_count_cards;
-
-       collector->major_ops.copy_or_mark_object = major_copy_or_mark_object_canonical;
-       collector->major_ops.scan_object = major_scan_object_with_evacuation;
-       if (is_concurrent) {
-               collector->major_concurrent_ops.copy_or_mark_object = major_copy_or_mark_object_concurrent_canonical;
-               collector->major_concurrent_ops.scan_object = major_scan_object_no_mark_concurrent;
-               collector->major_concurrent_ops.scan_vtype = major_scan_vtype_concurrent;
-       }
-
-#if !defined (FIXED_HEAP) && !defined (SGEN_PARALLEL_MARK)
-       /* FIXME: this will not work with evacuation or the split nursery. */
-       if (!is_concurrent)
-               collector->drain_gray_stack = drain_gray_stack;
-
-#ifdef HEAVY_STATISTICS
-       mono_counters_register ("Optimized copy", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy);
-       mono_counters_register ("Optimized copy nursery", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery);
-       mono_counters_register ("Optimized copy nursery forwarded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery_forwarded);
-       mono_counters_register ("Optimized copy nursery pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery_pinned);
-       mono_counters_register ("Optimized copy major", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major);
-       mono_counters_register ("Optimized copy major small fast", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_fast);
-       mono_counters_register ("Optimized copy major small slow", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_slow);
-       mono_counters_register ("Optimized copy major large", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_large);
-       mono_counters_register ("Optimized major scan", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_major_scan);
-       mono_counters_register ("Optimized major scan no refs", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_major_scan_no_refs);
-
-       mono_counters_register ("Gray stack drain loops", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_loops);
-       mono_counters_register ("Gray stack prefetch fills", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_prefetch_fills);
-       mono_counters_register ("Gray stack prefetch failures", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_prefetch_fill_failures);
-#endif
-#endif
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-       mono_mutex_init (&scanned_objects_list_lock);
-#endif
-
-       SGEN_ASSERT (0, SGEN_MAX_SMALL_OBJ_SIZE <= MS_BLOCK_FREE / 2, "MAX_SMALL_OBJ_SIZE must be at most MS_BLOCK_FREE / 2");
-
-       /*cardtable requires major pages to be 8 cards aligned*/
-       g_assert ((MS_BLOCK_SIZE % (8 * CARD_SIZE_IN_BYTES)) == 0);
-}
-
-void
-sgen_marksweep_init (SgenMajorCollector *collector)
-{
-       sgen_marksweep_init_internal (collector, FALSE);
-}
-
-void
-sgen_marksweep_conc_init (SgenMajorCollector *collector)
-{
-       sgen_marksweep_init_internal (collector, TRUE);
-}
-
-#endif
diff --git a/mono/metadata/sgen-memory-governor.c b/mono/metadata/sgen-memory-governor.c
deleted file mode 100644 (file)
index 63b0184..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * sgen-memory-governor.c: When to schedule collections based on
- * memory usage.
- *
- * Author:
- *     Rodrigo Kumpera (rkumpera@novell.com)
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/mono-gc.h"
-
-#include "utils/mono-counters.h"
-#include "utils/mono-mmap.h"
-#include "utils/mono-logger-internal.h"
-#include "utils/dtrace.h"
-
-#define MIN_MINOR_COLLECTION_ALLOWANCE ((mword)(DEFAULT_NURSERY_SIZE * default_allowance_nursery_size_ratio))
-
-/*Heap limits and allocation knobs*/
-static mword max_heap_size = ((mword)0)- ((mword)1);
-static mword soft_heap_limit = ((mword)0) - ((mword)1);
-
-static double default_allowance_nursery_size_ratio = SGEN_DEFAULT_ALLOWANCE_NURSERY_SIZE_RATIO;
-static double save_target_ratio = SGEN_DEFAULT_SAVE_TARGET_RATIO;
-
-/**/
-static mword allocated_heap;
-static mword total_alloc = 0;
-static mword total_alloc_max = 0;
-
-/* GC triggers. */
-
-static gboolean debug_print_allowance = FALSE;
-
-
-/* use this to tune when to do a major/minor collection */
-static mword memory_pressure = 0;
-static mword minor_collection_allowance;
-static mword minor_collection_sections_alloced = 0;
-
-static mword last_major_num_sections = 0;
-static mword last_los_memory_usage = 0;
-
-static gboolean need_calculate_minor_collection_allowance;
-
-static mword last_collection_old_num_major_sections;
-static mword last_collection_los_memory_usage = 0;
-static mword last_collection_old_los_memory_usage;
-static mword last_collection_los_memory_alloced;
-
-static mword sgen_memgov_available_free_space (void);
-
-
-/* GC trigger heuristics. */
-
-static void
-sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite)
-{
-       size_t num_major_sections;
-       mword new_major, new_heap_size, allowance_target;
-
-       if (overwrite)
-               g_assert (need_calculate_minor_collection_allowance);
-
-       if (!need_calculate_minor_collection_allowance)
-               return;
-
-       if (!major_collector.have_finished_sweeping ()) {
-               if (overwrite)
-                       minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
-               return;
-       }
-
-       num_major_sections = major_collector.get_num_major_sections ();
-
-       new_major = num_major_sections * major_collector.section_size;
-       new_heap_size = new_major + last_collection_los_memory_usage;
-
-       /*
-        * We allow the heap to grow by one third its current size before we start the next
-        * major collection.
-        */
-       allowance_target = new_heap_size / 3;
-
-       minor_collection_allowance = MAX (allowance_target, MIN_MINOR_COLLECTION_ALLOWANCE);
-
-       if (new_heap_size + minor_collection_allowance > soft_heap_limit) {
-               if (new_heap_size > soft_heap_limit)
-                       minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
-               else
-                       minor_collection_allowance = MAX (soft_heap_limit - new_heap_size, MIN_MINOR_COLLECTION_ALLOWANCE);
-       }
-
-       if (debug_print_allowance) {
-               mword old_major = last_collection_old_num_major_sections * major_collector.section_size;
-
-               SGEN_LOG (1, "Before collection: %ld bytes (%ld major, %ld LOS)",
-                                 (long)(old_major + last_collection_old_los_memory_usage), (long)old_major, (long)last_collection_old_los_memory_usage);
-               SGEN_LOG (1, "After collection: %ld bytes (%ld major, %ld LOS)",
-                                 (long)new_heap_size, (long)new_major, (long)last_collection_los_memory_usage);
-               SGEN_LOG (1, "Allowance: %ld bytes", (long)minor_collection_allowance);
-       }
-
-       if (major_collector.free_swept_blocks)
-               major_collector.free_swept_blocks ();
-
-       need_calculate_minor_collection_allowance = FALSE;
-}
-
-
-gboolean
-sgen_need_major_collection (mword space_needed)
-{
-       mword los_alloced;
-       if (sgen_concurrent_collection_in_progress ())
-               return FALSE;
-       los_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
-       return (space_needed > sgen_memgov_available_free_space ()) ||
-               minor_collection_sections_alloced * major_collector.section_size + los_alloced > minor_collection_allowance;
-}
-
-void
-sgen_memgov_minor_collection_start (void)
-{
-       sgen_memgov_try_calculate_minor_collection_allowance (FALSE);
-}
-
-void
-sgen_memgov_minor_collection_end (void)
-{
-}
-
-void
-sgen_memgov_major_collection_start (void)
-{
-       last_collection_old_num_major_sections = sgen_get_major_collector ()->get_num_major_sections ();
-
-       /*
-        * A domain could have been freed, resulting in
-        * los_memory_usage being less than last_collection_los_memory_usage.
-        */
-       last_collection_los_memory_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
-       last_collection_old_los_memory_usage = los_memory_usage;
-
-       need_calculate_minor_collection_allowance = TRUE;
-}
-
-void
-sgen_memgov_major_collection_end (void)
-{
-       sgen_memgov_try_calculate_minor_collection_allowance (TRUE);
-
-       minor_collection_sections_alloced = 0;
-       last_collection_los_memory_usage = los_memory_usage;
-}
-
-void
-sgen_memgov_collection_start (int generation)
-{
-       last_major_num_sections = major_collector.get_num_major_sections ();
-       last_los_memory_usage = los_memory_usage;
-}
-
-static void
-log_timming (GGTimingInfo *info)
-{
-       //unsigned long stw_time, unsigned long bridge_time, gboolean is_overflow
-       mword num_major_sections = major_collector.get_num_major_sections ();
-       char full_timing_buff [1024];
-       full_timing_buff [0] = '\0';
-
-       if (!info->is_overflow)
-               sprintf (full_timing_buff, "total %.2fms, bridge %.2fms", info->stw_time / 10000.0f, (int)info->bridge_time / 10000.0f);
-       if (info->generation == GENERATION_OLD)
-               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) pause %.2fms, %s major %dK/%dK los %dK/%dK",
-                       info->is_overflow ? "_OVERFLOW" : "",
-                       info->reason ? info->reason : "",
-                       (int)info->total_time / 10000.0f,
-                       full_timing_buff,
-                       major_collector.section_size * num_major_sections / 1024,
-                       major_collector.section_size * last_major_num_sections / 1024,
-                       los_memory_usage / 1024,
-                       last_los_memory_usage / 1024);
-       else
-               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MINOR%s: (%s) pause %.2fms, %s promoted %dK major %dK los %dK",
-                               info->is_overflow ? "_OVERFLOW" : "",
-                       info->reason ? info->reason : "",
-                       (int)info->total_time / 10000.0f,
-                       full_timing_buff,
-                       (num_major_sections - last_major_num_sections) * major_collector.section_size / 1024,
-                       major_collector.section_size * num_major_sections / 1024,
-                       los_memory_usage / 1024);       
-}
-
-void
-sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count)
-{
-       int i;
-       for (i = 0; i < info_count; ++i) {
-               if (info[i].generation != -1)
-                       log_timming (&info [i]);
-       }
-}
-
-void
-sgen_register_major_sections_alloced (size_t num_sections)
-{
-       minor_collection_sections_alloced += num_sections;
-}
-
-mword
-sgen_get_minor_collection_allowance (void)
-{
-       return minor_collection_allowance;
-}
-
-/* Memory pressure API */
-
-/* Negative value to remove */
-void
-mono_gc_add_memory_pressure (gint64 value)
-{
-       /* FIXME: Use interlocked functions */
-       LOCK_GC;
-       memory_pressure += value;
-       UNLOCK_GC;
-}
-
-
-/*
-Global GC memory tracking.
-This tracks the total usage of memory by the GC. This includes
-managed and unmanaged memory.
-*/
-
-static unsigned long
-prot_flags_for_activate (int activate)
-{
-       unsigned long prot_flags = activate? MONO_MMAP_READ|MONO_MMAP_WRITE: MONO_MMAP_NONE;
-       return prot_flags | MONO_MMAP_PRIVATE | MONO_MMAP_ANON;
-}
-
-void
-sgen_assert_memory_alloc (void *ptr, size_t requested_size, const char *assert_description)
-{
-       if (ptr || !assert_description)
-               return;
-       fprintf (stderr, "Error: Garbage collector could not allocate %zu bytes of memory for %s.\n", requested_size, assert_description);
-       exit (1);
-}
-
-/*
- * Allocate a big chunk of memory from the OS (usually 64KB to several megabytes).
- * This must not require any lock.
- */
-void*
-sgen_alloc_os_memory (size_t size, SgenAllocFlags flags, const char *assert_description)
-{
-       void *ptr;
-
-       g_assert (!(flags & ~(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE)));
-
-       ptr = mono_valloc (0, size, prot_flags_for_activate (flags & SGEN_ALLOC_ACTIVATE));
-       sgen_assert_memory_alloc (ptr, size, assert_description);
-       if (ptr) {
-               SGEN_ATOMIC_ADD_P (total_alloc, size);
-               if (flags & SGEN_ALLOC_HEAP)
-                       MONO_GC_HEAP_ALLOC ((mword)ptr, size);
-               total_alloc_max = MAX (total_alloc_max, total_alloc);
-       }
-       return ptr;
-}
-
-/* size must be a power of 2 */
-void*
-sgen_alloc_os_memory_aligned (size_t size, mword alignment, SgenAllocFlags flags, const char *assert_description)
-{
-       void *ptr;
-
-       g_assert (!(flags & ~(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE)));
-
-       ptr = mono_valloc_aligned (size, alignment, prot_flags_for_activate (flags & SGEN_ALLOC_ACTIVATE));
-       sgen_assert_memory_alloc (ptr, size, assert_description);
-       if (ptr) {
-               SGEN_ATOMIC_ADD_P (total_alloc, size);
-               if (flags & SGEN_ALLOC_HEAP)
-                       MONO_GC_HEAP_ALLOC ((mword)ptr, size);
-               total_alloc_max = MAX (total_alloc_max, total_alloc);
-       }
-       return ptr;
-}
-
-/*
- * Free the memory returned by sgen_alloc_os_memory (), returning it to the OS.
- */
-void
-sgen_free_os_memory (void *addr, size_t size, SgenAllocFlags flags)
-{
-       g_assert (!(flags & ~SGEN_ALLOC_HEAP));
-
-       mono_vfree (addr, size);
-       SGEN_ATOMIC_ADD_P (total_alloc, -(gssize)size);
-       if (flags & SGEN_ALLOC_HEAP)
-               MONO_GC_HEAP_FREE ((mword)addr, size);
-       total_alloc_max = MAX (total_alloc_max, total_alloc);
-}
-
-int64_t
-mono_gc_get_heap_size (void)
-{
-       return total_alloc;
-}
-
-
-/*
-Heap Sizing limits.
-This limit the max size of the heap. It takes into account
-only memory actively in use to hold heap objects and not
-for other parts of the GC.
- */
-static mword
-sgen_memgov_available_free_space (void)
-{
-       return max_heap_size - MIN (allocated_heap, max_heap_size);
-}
-
-void
-sgen_memgov_release_space (mword size, int space)
-{
-       SGEN_ATOMIC_ADD_P (allocated_heap, -(gssize)size);
-}
-
-gboolean
-sgen_memgov_try_alloc_space (mword size, int space)
-{
-       if (sgen_memgov_available_free_space () < size) {
-               SGEN_ASSERT (4, !sgen_is_worker_thread (mono_native_thread_id_get ()), "Memory shouldn't run out in worker thread");
-               return FALSE;
-       }
-
-       SGEN_ATOMIC_ADD_P (allocated_heap, size);
-       mono_runtime_resource_check_limit (MONO_RESOURCE_GC_HEAP, allocated_heap);
-       return TRUE;
-}
-
-void
-sgen_memgov_init (size_t max_heap, size_t soft_limit, gboolean debug_allowance, double allowance_ratio, double save_target)
-{
-       if (soft_limit)
-               soft_heap_limit = soft_limit;
-
-       debug_print_allowance = debug_allowance;
-       minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
-
-       mono_counters_register ("Memgov alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_VARIABLE, &total_alloc);
-       mono_counters_register ("Memgov max alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_MONOTONIC, &total_alloc_max);
-
-       if (max_heap == 0)
-               return;
-
-       if (max_heap < soft_limit) {
-               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Setting to minimum.", "`max-heap-size` must be at least as large as `soft-heap-limit`.");
-               max_heap = soft_limit;
-       }
-
-       if (max_heap < sgen_nursery_size * 4) {
-               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Setting to minimum.", "`max-heap-size` must be at least 4 times as large as `nursery size`.");
-               max_heap = sgen_nursery_size * 4;
-       }
-       max_heap_size = max_heap - sgen_nursery_size;
-
-       if (allowance_ratio)
-               default_allowance_nursery_size_ratio = allowance_ratio;
-
-       if (save_target)
-               save_target_ratio = save_target;
-       minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
-}
-
-#endif
diff --git a/mono/metadata/sgen-memory-governor.h b/mono/metadata/sgen-memory-governor.h
deleted file mode 100644 (file)
index 16b9ac3..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-#ifndef __MONO_SGEN_MEMORY_GOVERNOR_H__
-#define __MONO_SGEN_MEMORY_GOVERNOR_H__
-
-/* Heap limits */
-void sgen_memgov_init (size_t max_heap, size_t soft_limit, gboolean debug_allowance, double min_allowance_ratio, double save_target);
-void sgen_memgov_release_space (mword size, int space);
-gboolean sgen_memgov_try_alloc_space (mword size, int space);
-
-/* GC trigger heuristics */
-void sgen_memgov_minor_collection_start (void);
-void sgen_memgov_minor_collection_end (void);
-
-void sgen_memgov_major_collection_start (void);
-void sgen_memgov_major_collection_end (void);
-
-void sgen_memgov_collection_start (int generation);
-void sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count);
-
-void sgen_register_major_sections_alloced (size_t num_sections);
-mword sgen_get_minor_collection_allowance (void);
-gboolean sgen_need_major_collection (mword space_needed);
-
-
-typedef enum {
-       SGEN_ALLOC_INTERNAL = 0,
-       SGEN_ALLOC_HEAP = 1,
-       SGEN_ALLOC_ACTIVATE = 2
-} SgenAllocFlags;
-
-/* OS memory allocation */
-void* sgen_alloc_os_memory (size_t size, SgenAllocFlags flags, const char *assert_description);
-void* sgen_alloc_os_memory_aligned (size_t size, mword alignment, SgenAllocFlags flags, const char *assert_description);
-void sgen_free_os_memory (void *addr, size_t size, SgenAllocFlags flags);
-
-/* Error handling */
-void sgen_assert_memory_alloc (void *ptr, size_t requested_size, const char *assert_description);
-
-#endif
-
diff --git a/mono/metadata/sgen-minor-copy-object.h b/mono/metadata/sgen-minor-copy-object.h
deleted file mode 100644 (file)
index f1061ee..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * sgen-minor-copy-object.h: Copy functions for nursery collections.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#define collector_pin_object(obj, queue) sgen_pin_object (obj, queue);
-#define COLLECTOR_SERIAL_ALLOC_FOR_PROMOTION alloc_for_promotion
-
-extern guint64 stat_nursery_copy_object_failed_to_space; /* from sgen-gc.c */
-
-#include "mono/utils/mono-compiler.h"
-
-#include "sgen-copy-object.h"
-
-/*
- * This is how the copying happens from the nursery to the old generation.
- * We assume that at this time all the pinned objects have been identified and
- * marked as such.
- * We run scan_object() for each pinned object so that each referenced
- * objects if possible are copied. The new gray objects created can have
- * scan_object() run on them right away, too.
- * Then we run copy_object() for the precisely tracked roots. At this point
- * all the roots are either gray or black. We run scan_object() on the gray
- * objects until no more gray objects are created.
- * At the end of the process we walk again the pinned list and we unmark
- * the pinned flag. As we go we also create the list of free space for use
- * in the next allocation runs.
- *
- * We need to remember objects from the old generation that point to the new one
- * (or just addresses?).
- *
- * copy_object could be made into a macro once debugged (use inline for now).
- */
-
-static MONO_ALWAYS_INLINE void
-SERIAL_COPY_OBJECT (void **obj_slot, SgenGrayQueue *queue) 
-{
-       char *forwarded;
-       char *copy;
-       char *obj = *obj_slot;
-
-       SGEN_ASSERT (9, current_collection_generation == GENERATION_NURSERY, "calling minor-serial-copy from a %d generation collection", current_collection_generation);
-
-       HEAVY_STAT (++stat_copy_object_called_nursery);
-
-       if (!sgen_ptr_in_nursery (obj)) {
-               HEAVY_STAT (++stat_nursery_copy_object_failed_from_space);
-               return;
-       }
-
-       SGEN_LOG (9, "Precise copy of %p from %p", obj, obj_slot);
-
-       /*
-        * Before we can copy the object we must make sure that we are
-        * allowed to, i.e. that the object not pinned, not already
-        * forwarded or belongs to the nursery To Space.
-        */
-
-       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
-               SGEN_ASSERT (9, (*(MonoVTable**)SGEN_LOAD_VTABLE (obj))->gc_descr,  "forwarded object %p has no gc descriptor", forwarded);
-               SGEN_LOG (9, " (already forwarded to %p)", forwarded);
-               HEAVY_STAT (++stat_nursery_copy_object_failed_forwarded);
-               SGEN_UPDATE_REFERENCE (obj_slot, forwarded);
-               return;
-       }
-       if (G_UNLIKELY (SGEN_OBJECT_IS_PINNED (obj))) {
-               SGEN_ASSERT (9, ((MonoVTable*)SGEN_LOAD_VTABLE(obj))->gc_descr, "pinned object %p has no gc descriptor", obj);
-               SGEN_LOG (9, " (pinned, no change)");
-               HEAVY_STAT (++stat_nursery_copy_object_failed_pinned);
-               return;
-       }
-
-#ifndef SGEN_SIMPLE_NURSERY
-       if (sgen_nursery_is_to_space (obj)) {
-               SGEN_ASSERT (9, ((MonoVTable*)SGEN_LOAD_VTABLE(obj))->gc_descr, "to space object %p has no gc descriptor", obj);
-               SGEN_LOG (9, " (tospace, no change)");
-               HEAVY_STAT (++stat_nursery_copy_object_failed_to_space);                
-               return;
-       }
-#endif
-
-       HEAVY_STAT (++stat_objects_copied_nursery);
-
-       copy = copy_object_no_checks (obj, queue);
-       SGEN_UPDATE_REFERENCE (obj_slot, copy);
-}
-
-/*
- * SERIAL_COPY_OBJECT_FROM_OBJ:
- *
- *   Similar to SERIAL_COPY_OBJECT, but assumes that OBJ_SLOT is part of an object, so it handles global remsets as well.
- */
-static MONO_ALWAYS_INLINE void
-SERIAL_COPY_OBJECT_FROM_OBJ (void **obj_slot, SgenGrayQueue *queue) 
-{
-       char *forwarded;
-       char *obj = *obj_slot;
-       void *copy;
-
-       SGEN_ASSERT (9, current_collection_generation == GENERATION_NURSERY, "calling minor-serial-copy-from-obj from a %d generation collection", current_collection_generation);
-
-       HEAVY_STAT (++stat_copy_object_called_nursery);
-
-       if (!sgen_ptr_in_nursery (obj)) {
-               HEAVY_STAT (++stat_nursery_copy_object_failed_from_space);
-               return;
-       }
-
-       SGEN_LOG (9, "Precise copy of %p from %p", obj, obj_slot);
-
-       /*
-        * Before we can copy the object we must make sure that we are
-        * allowed to, i.e. that the object not pinned, not already
-        * forwarded or belongs to the nursery To Space.
-        */
-
-       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
-               SGEN_ASSERT (9, (*(MonoVTable**)SGEN_LOAD_VTABLE (obj))->gc_descr,  "forwarded object %p has no gc descriptor", forwarded);
-               SGEN_LOG (9, " (already forwarded to %p)", forwarded);
-               HEAVY_STAT (++stat_nursery_copy_object_failed_forwarded);
-               SGEN_UPDATE_REFERENCE (obj_slot, forwarded);
-#ifndef SGEN_SIMPLE_NURSERY
-               if (G_UNLIKELY (sgen_ptr_in_nursery (forwarded) && !sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (forwarded)))
-                       sgen_add_to_global_remset (obj_slot, forwarded);
-#endif
-               return;
-       }
-       if (G_UNLIKELY (SGEN_OBJECT_IS_PINNED (obj))) {
-               SGEN_ASSERT (9, ((MonoVTable*)SGEN_LOAD_VTABLE(obj))->gc_descr, "pinned object %p has no gc descriptor", obj);
-               SGEN_LOG (9, " (pinned, no change)");
-               HEAVY_STAT (++stat_nursery_copy_object_failed_pinned);
-               if (!sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (obj))
-                       sgen_add_to_global_remset (obj_slot, obj);
-               return;
-       }
-
-#ifndef SGEN_SIMPLE_NURSERY
-       if (sgen_nursery_is_to_space (obj)) {
-               SGEN_ASSERT (9, ((MonoVTable*)SGEN_LOAD_VTABLE(obj))->gc_descr, "to space object %p has no gc descriptor", obj);
-               SGEN_LOG (9, " (tospace, no change)");
-               HEAVY_STAT (++stat_nursery_copy_object_failed_to_space);                
-
-               /*
-                * FIXME:
-                *
-                * The card table scanning code sometimes clears cards
-                * that have just been set for a global remset.  In
-                * the split nursery the following situation can
-                * occur:
-                *
-                * Let's say object A starts in card C but continues
-                * into C+1.  Within A, at offset O there's a
-                * reference to a new nursery object X.  A+O is in
-                * card C+1.  Now card C is scanned, and as part of
-                * it, object A.  The reference at A+O is processed by
-                * copying X into nursery to-space at Y.  Since it's
-                * still in the nursery, a global remset must be added
-                * for A+O, so card C+1 is marked.  Now, however, card
-                * C+1 is scanned, which means that it's cleared
-                * first.  This wouldn't be terribly bad if reference
-                * A+O were re-scanned and the global remset re-added,
-                * but since the reference points to to-space, that
-                * doesn't happen, and C+1 remains cleared: the remset
-                * is lost.
-                *
-                * There's at least two ways to fix this.  The easy
-                * one is to re-add the remset on the re-scan.  This
-                * is that - the following two lines of code.
-                *
-                * The proper solution appears to be to first make a
-                * copy of the cards before scanning a block, then to
-                * clear all the cards and scan from the copy, so no
-                * remsets will be overwritten.  Scanning objects at
-                * most once would be the icing on the cake.
-                */
-               if (!sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (obj))
-                       sgen_add_to_global_remset (obj_slot, obj);
-
-               return;
-       }
-#endif
-
-       HEAVY_STAT (++stat_objects_copied_nursery);
-
-       copy = copy_object_no_checks (obj, queue);
-       SGEN_UPDATE_REFERENCE (obj_slot, copy);
-#ifndef SGEN_SIMPLE_NURSERY
-       if (G_UNLIKELY (sgen_ptr_in_nursery (copy) && !sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (copy)))
-               sgen_add_to_global_remset (obj_slot, copy);
-#else
-       /* copy_object_no_checks () can return obj on OOM */
-       if (G_UNLIKELY (obj == copy)) {
-               if (G_UNLIKELY (sgen_ptr_in_nursery (copy) && !sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (copy)))
-                       sgen_add_to_global_remset (obj_slot, copy);
-       }
-#endif
-}
-
-#define FILL_MINOR_COLLECTOR_COPY_OBJECT(collector)    do {                    \
-               (collector)->serial_ops.copy_or_mark_object = SERIAL_COPY_OBJECT;                       \
-       } while (0)
diff --git a/mono/metadata/sgen-minor-scan-object.h b/mono/metadata/sgen-minor-scan-object.h
deleted file mode 100644 (file)
index cd660cc..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * sgen-minor-scan-object.h: Object scanning in the nursery collectors.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-extern guint64 stat_scan_object_called_nursery;
-
-#if defined(SGEN_SIMPLE_NURSERY)
-#define SERIAL_SCAN_OBJECT simple_nursery_serial_scan_object
-#define SERIAL_SCAN_VTYPE simple_nursery_serial_scan_vtype
-
-#elif defined (SGEN_SPLIT_NURSERY)
-#define SERIAL_SCAN_OBJECT split_nursery_serial_scan_object
-#define SERIAL_SCAN_VTYPE split_nursery_serial_scan_vtype
-
-#else
-#error "Please define GC_CONF_NAME"
-#endif
-
-#undef HANDLE_PTR
-/* Global remsets are handled in SERIAL_COPY_OBJECT_FROM_OBJ */
-#define HANDLE_PTR(ptr,obj)    do {    \
-               void *__old = *(ptr);   \
-               SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP ((obj), (ptr)); \
-               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
-               if (__old) {    \
-                       SERIAL_COPY_OBJECT_FROM_OBJ ((ptr), queue);     \
-                       SGEN_COND_LOG (9, __old != *(ptr), "Overwrote field at %p with %p (was: %p)", (ptr), *(ptr), __old); \
-               }       \
-       } while (0)
-
-static void
-SERIAL_SCAN_OBJECT (char *start, mword desc, SgenGrayQueue *queue)
-{
-       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
-
-#ifdef HEAVY_STATISTICS
-       sgen_descriptor_count_scanned_object (desc);
-#endif
-
-       SGEN_ASSERT (9, sgen_get_current_collection_generation () == GENERATION_NURSERY, "Must not use minor scan during major collection.");
-
-#define SCAN_OBJECT_PROTOCOL
-#include "sgen-scan-object.h"
-
-       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
-       HEAVY_STAT (++stat_scan_object_called_nursery);
-}
-
-static void
-SERIAL_SCAN_VTYPE (char *start, mword desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
-{
-       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
-
-       SGEN_ASSERT (9, sgen_get_current_collection_generation () == GENERATION_NURSERY, "Must not use minor scan during major collection.");
-
-       /* The descriptors include info about the MonoObject header as well */
-       start -= sizeof (MonoObject);
-
-#define SCAN_OBJECT_NOVTABLE
-#define SCAN_OBJECT_PROTOCOL
-#include "sgen-scan-object.h"
-}
-
-#define FILL_MINOR_COLLECTOR_SCAN_OBJECT(collector)    do {                    \
-               (collector)->serial_ops.scan_object = SERIAL_SCAN_OBJECT;       \
-               (collector)->serial_ops.scan_vtype = SERIAL_SCAN_VTYPE; \
-       } while (0)
diff --git a/mono/metadata/sgen-mono.c b/mono/metadata/sgen-mono.c
new file mode 100644 (file)
index 0000000..a471124
--- /dev/null
@@ -0,0 +1,2832 @@
+/*
+ * sgen-mono.c: SGen features specific to Mono.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include "sgen/sgen-gc.h"
+#include "sgen/sgen-protocol.h"
+#include "metadata/monitor.h"
+#include "sgen/sgen-layout-stats.h"
+#include "sgen/sgen-client.h"
+#include "sgen/sgen-cardtable.h"
+#include "sgen/sgen-pinning.h"
+#include "metadata/marshal.h"
+#include "metadata/method-builder.h"
+#include "metadata/abi-details.h"
+#include "metadata/mono-gc.h"
+#include "metadata/runtime.h"
+#include "metadata/sgen-bridge-internal.h"
+#include "metadata/gc-internal.h"
+#include "utils/mono-memory-model.h"
+#include "utils/mono-logger-internal.h"
+
+/* If set, mark stacks conservatively, even if precise marking is possible */
+static gboolean conservative_stack_mark = FALSE;
+/* If set, check that there are no references to the domain left at domain unload */
+gboolean sgen_mono_xdomain_checks = FALSE;
+
+/* Functions supplied by the runtime to be called by the GC */
+static MonoGCCallbacks gc_callbacks;
+
+#ifdef HAVE_KW_THREAD
+__thread SgenThreadInfo *sgen_thread_info;
+#else
+MonoNativeTlsKey thread_info_key;
+#endif
+
+#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
+
+#define OPDEF(a,b,c,d,e,f,g,h,i,j) \
+       a = i,
+
+enum {
+#include "mono/cil/opcode.def"
+       CEE_LAST
+};
+
+#undef OPDEF
+
+/*
+ * Write barriers
+ */
+
+static gboolean
+ptr_on_stack (void *ptr)
+{
+       gpointer stack_start = &stack_start;
+       SgenThreadInfo *info = mono_thread_info_current ();
+
+       if (ptr >= stack_start && ptr < (gpointer)info->client_info.stack_end)
+               return TRUE;
+       return FALSE;
+}
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj) do {                                       \
+               gpointer o = *(gpointer*)(ptr);                         \
+               if ((o)) {                                              \
+                       gpointer d = ((char*)dest) + ((char*)(ptr) - (char*)(obj)); \
+                       binary_protocol_wbarrier (d, o, (gpointer) SGEN_LOAD_VTABLE (o)); \
+               }                                                       \
+       } while (0)
+
+static void
+scan_object_for_binary_protocol_copy_wbarrier (gpointer dest, char *start, mword desc)
+{
+#define SCAN_OBJECT_NOVTABLE
+#include "sgen/sgen-scan-object.h"
+}
+#endif
+
+void
+mono_gc_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *klass)
+{
+       HEAVY_STAT (++stat_wbarrier_value_copy);
+       g_assert (klass->valuetype);
+
+       SGEN_LOG (8, "Adding value remset at %p, count %d, descr %p for class %s (%p)", dest, count, klass->gc_descr, klass->name, klass);
+
+       if (sgen_ptr_in_nursery (dest) || ptr_on_stack (dest) || !sgen_gc_descr_has_references ((mword)klass->gc_descr)) {
+               size_t element_size = mono_class_value_size (klass, NULL);
+               size_t size = count * element_size;
+               mono_gc_memmove_atomic (dest, src, size);               
+               return;
+       }
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       if (binary_protocol_is_heavy_enabled ()) {
+               size_t element_size = mono_class_value_size (klass, NULL);
+               int i;
+               for (i = 0; i < count; ++i) {
+                       scan_object_for_binary_protocol_copy_wbarrier ((char*)dest + i * element_size,
+                                       (char*)src + i * element_size - sizeof (MonoObject),
+                                       (mword) klass->gc_descr);
+               }
+       }
+#endif
+
+       sgen_get_remset ()->wbarrier_value_copy (dest, src, count, mono_class_value_size (klass, NULL));
+}
+
+/**
+ * mono_gc_wbarrier_object_copy:
+ *
+ * Write barrier to call when obj is the result of a clone or copy of an object.
+ */
+void
+mono_gc_wbarrier_object_copy (MonoObject* obj, MonoObject *src)
+{
+       int size;
+
+       HEAVY_STAT (++stat_wbarrier_object_copy);
+
+       if (sgen_ptr_in_nursery (obj) || ptr_on_stack (obj) || !SGEN_OBJECT_HAS_REFERENCES (src)) {
+               size = mono_object_class (obj)->instance_size;
+               mono_gc_memmove_aligned ((char*)obj + sizeof (MonoObject), (char*)src + sizeof (MonoObject),
+                               size - sizeof (MonoObject));
+               return; 
+       }
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       if (binary_protocol_is_heavy_enabled ())
+               scan_object_for_binary_protocol_copy_wbarrier (obj, (char*)src, (mword) src->vtable->gc_descr);
+#endif
+
+       sgen_get_remset ()->wbarrier_object_copy (obj, src);
+}
+
+void
+mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
+{
+       HEAVY_STAT (++stat_wbarrier_set_arrayref);
+       if (sgen_ptr_in_nursery (slot_ptr)) {
+               *(void**)slot_ptr = value;
+               return;
+       }
+       SGEN_LOG (8, "Adding remset at %p", slot_ptr);
+       if (value)
+               binary_protocol_wbarrier (slot_ptr, value, value->vtable);
+
+       sgen_get_remset ()->wbarrier_set_field ((GCObject*)arr, slot_ptr, value);
+}
+
+void
+mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
+{
+       mono_gc_wbarrier_set_arrayref ((MonoArray*)obj, field_ptr, value);
+}
+
+void
+mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
+{
+       sgen_wbarrier_value_copy_bitmap (_dest, _src, size, bitmap);
+}
+
+static MonoMethod *write_barrier_conc_method;
+static MonoMethod *write_barrier_noconc_method;
+
+gboolean
+sgen_is_critical_method (MonoMethod *method)
+{
+       return (method == write_barrier_conc_method || method == write_barrier_noconc_method || sgen_is_managed_allocator (method));
+}
+
+gboolean
+sgen_has_critical_method (void)
+{
+       return write_barrier_conc_method || write_barrier_noconc_method || sgen_has_managed_allocator ();
+}
+
+#ifndef DISABLE_JIT
+
+static void
+emit_nursery_check (MonoMethodBuilder *mb, int *nursery_check_return_labels, gboolean is_concurrent)
+{
+       int shifted_nursery_start = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+
+       memset (nursery_check_return_labels, 0, sizeof (int) * 2);
+       // if (ptr_in_nursery (ptr)) return;
+       /*
+        * Masking out the bits might be faster, but we would have to use 64 bit
+        * immediates, which might be slower.
+        */
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_LDPTR_NURSERY_START);
+       mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
+       mono_mb_emit_byte (mb, CEE_SHR_UN);
+       mono_mb_emit_stloc (mb, shifted_nursery_start);
+
+       mono_mb_emit_ldarg (mb, 0);
+       mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
+       mono_mb_emit_byte (mb, CEE_SHR_UN);
+       mono_mb_emit_ldloc (mb, shifted_nursery_start);
+       nursery_check_return_labels [0] = mono_mb_emit_branch (mb, CEE_BEQ);
+
+       if (!is_concurrent) {
+               // if (!ptr_in_nursery (*ptr)) return;
+               mono_mb_emit_ldarg (mb, 0);
+               mono_mb_emit_byte (mb, CEE_LDIND_I);
+               mono_mb_emit_icon (mb, DEFAULT_NURSERY_BITS);
+               mono_mb_emit_byte (mb, CEE_SHR_UN);
+               mono_mb_emit_ldloc (mb, shifted_nursery_start);
+               nursery_check_return_labels [1] = mono_mb_emit_branch (mb, CEE_BNE_UN);
+       }
+}
+#endif
+
+MonoMethod*
+mono_gc_get_specific_write_barrier (gboolean is_concurrent)
+{
+       MonoMethod *res;
+       MonoMethodBuilder *mb;
+       MonoMethodSignature *sig;
+       MonoMethod **write_barrier_method_addr;
+#ifdef MANAGED_WBARRIER
+       int i, nursery_check_labels [2];
+#endif
+
+       // FIXME: Maybe create a separate version for ctors (the branch would be
+       // correctly predicted more times)
+       if (is_concurrent)
+               write_barrier_method_addr = &write_barrier_conc_method;
+       else
+               write_barrier_method_addr = &write_barrier_noconc_method;
+
+       if (*write_barrier_method_addr)
+               return *write_barrier_method_addr;
+
+       /* Create the IL version of mono_gc_barrier_generic_store () */
+       sig = mono_metadata_signature_alloc (mono_defaults.corlib, 1);
+       sig->ret = &mono_defaults.void_class->byval_arg;
+       sig->params [0] = &mono_defaults.int_class->byval_arg;
+
+       if (is_concurrent)
+               mb = mono_mb_new (mono_defaults.object_class, "wbarrier_conc", MONO_WRAPPER_WRITE_BARRIER);
+       else
+               mb = mono_mb_new (mono_defaults.object_class, "wbarrier_noconc", MONO_WRAPPER_WRITE_BARRIER);
+
+#ifndef DISABLE_JIT
+#ifdef MANAGED_WBARRIER
+       emit_nursery_check (mb, nursery_check_labels, is_concurrent);
+       /*
+       addr = sgen_cardtable + ((address >> CARD_BITS) & CARD_MASK)
+       *addr = 1;
+
+       sgen_cardtable:
+               LDC_PTR sgen_cardtable
+
+       address >> CARD_BITS
+               LDARG_0
+               LDC_I4 CARD_BITS
+               SHR_UN
+       if (SGEN_HAVE_OVERLAPPING_CARDS) {
+               LDC_PTR card_table_mask
+               AND
+       }
+       AND
+       ldc_i4_1
+       stind_i1
+       */
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_LDPTR_CARD_TABLE);
+       mono_mb_emit_ldarg (mb, 0);
+       mono_mb_emit_icon (mb, CARD_BITS);
+       mono_mb_emit_byte (mb, CEE_SHR_UN);
+       mono_mb_emit_byte (mb, CEE_CONV_I);
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+#if SIZEOF_VOID_P == 8
+       mono_mb_emit_icon8 (mb, CARD_MASK);
+#else
+       mono_mb_emit_icon (mb, CARD_MASK);
+#endif
+       mono_mb_emit_byte (mb, CEE_CONV_I);
+       mono_mb_emit_byte (mb, CEE_AND);
+#endif
+       mono_mb_emit_byte (mb, CEE_ADD);
+       mono_mb_emit_icon (mb, 1);
+       mono_mb_emit_byte (mb, CEE_STIND_I1);
+
+       // return;
+       for (i = 0; i < 2; ++i) {
+               if (nursery_check_labels [i])
+                       mono_mb_patch_branch (mb, nursery_check_labels [i]);
+       }
+       mono_mb_emit_byte (mb, CEE_RET);
+#else
+       mono_mb_emit_ldarg (mb, 0);
+       mono_mb_emit_icall (mb, mono_gc_wbarrier_generic_nostore);
+       mono_mb_emit_byte (mb, CEE_RET);
+#endif
+#endif
+       res = mono_mb_create_method (mb, sig, 16);
+       mono_mb_free (mb);
+
+       LOCK_GC;
+       if (*write_barrier_method_addr) {
+               /* Already created */
+               mono_free_method (res);
+       } else {
+               /* double-checked locking */
+               mono_memory_barrier ();
+               *write_barrier_method_addr = res;
+       }
+       UNLOCK_GC;
+
+       return *write_barrier_method_addr;
+}
+
+MonoMethod*
+mono_gc_get_write_barrier (void)
+{
+       return mono_gc_get_specific_write_barrier (major_collector.is_concurrent);
+}
+
+/*
+ * Dummy filler objects
+ */
+
+/* Vtable of the objects used to fill out nursery fragments before a collection */
+static GCVTable *array_fill_vtable;
+
+static GCVTable*
+get_array_fill_vtable (void)
+{
+       if (!array_fill_vtable) {
+               static MonoClass klass;
+               static char _vtable[sizeof(MonoVTable)+8];
+               MonoVTable* vtable = (MonoVTable*) ALIGN_TO(_vtable, 8);
+               gsize bmap;
+
+               MonoDomain *domain = mono_get_root_domain ();
+               g_assert (domain);
+
+               klass.element_class = mono_defaults.byte_class;
+               klass.rank = 1;
+               klass.instance_size = sizeof (MonoArray);
+               klass.sizes.element_size = 1;
+               klass.name = "array_filler_type";
+
+               vtable->klass = &klass;
+               bmap = 0;
+               vtable->gc_descr = mono_gc_make_descr_for_array (TRUE, &bmap, 0, 1);
+               vtable->rank = 1;
+
+               array_fill_vtable = (GCVTable*)vtable;
+       }
+       return array_fill_vtable;
+}
+
+gboolean
+sgen_client_array_fill_range (char *start, size_t size)
+{
+       MonoArray *o;
+
+       if (size < sizeof (MonoArray)) {
+               memset (start, 0, size);
+               return FALSE;
+       }
+
+       o = (MonoArray*)start;
+       o->obj.vtable = (MonoVTable*)get_array_fill_vtable ();
+       /* Mark this as not a real object */
+       o->obj.synchronisation = GINT_TO_POINTER (-1);
+       o->bounds = NULL;
+       o->max_length = (mono_array_size_t)(size - sizeof (MonoArray));
+
+       return TRUE;
+}
+
+void
+sgen_client_zero_array_fill_header (void *p, size_t size)
+{
+       if (size >= sizeof (MonoArray)) {
+               memset (p, 0, sizeof (MonoArray));
+       } else {
+               static guint8 zeros [sizeof (MonoArray)];
+
+               SGEN_ASSERT (0, !memcmp (p, zeros, size), "TLAB segment must be zeroed out.");
+       }
+}
+
+/*
+ * Finalization
+ */
+
+static MonoGCFinalizerCallbacks fin_callbacks;
+
+guint
+mono_gc_get_vtable_bits (MonoClass *class)
+{
+       guint res = 0;
+       /* FIXME move this to the bridge code */
+       if (sgen_need_bridge_processing ()) {
+               switch (sgen_bridge_class_kind (class)) {
+               case GC_BRIDGE_TRANSPARENT_BRIDGE_CLASS:
+               case GC_BRIDGE_OPAQUE_BRIDGE_CLASS:
+                       res = SGEN_GC_BIT_BRIDGE_OBJECT;
+                       break;
+               case GC_BRIDGE_OPAQUE_CLASS:
+                       res = SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT;
+                       break;
+               case GC_BRIDGE_TRANSPARENT_CLASS:
+                       break;
+               }
+       }
+       if (fin_callbacks.is_class_finalization_aware) {
+               if (fin_callbacks.is_class_finalization_aware (class))
+                       res |= SGEN_GC_BIT_FINALIZER_AWARE;
+       }
+       return res;
+}
+
+static gboolean
+is_finalization_aware (MonoObject *obj)
+{
+       MonoVTable *vt = ((MonoVTable*)SGEN_LOAD_VTABLE (obj));
+       return (vt->gc_bits & SGEN_GC_BIT_FINALIZER_AWARE) == SGEN_GC_BIT_FINALIZER_AWARE;
+}
+
+void
+sgen_client_object_queued_for_finalization (GCObject *obj)
+{
+       if (fin_callbacks.object_queued_for_finalization && is_finalization_aware (obj))
+               fin_callbacks.object_queued_for_finalization (obj);
+
+#ifdef ENABLE_DTRACE
+       if (G_UNLIKELY (MONO_GC_FINALIZE_ENQUEUE_ENABLED ())) {
+               int gen = sgen_ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD;
+               GCVTable *vt = (GCVTable*)SGEN_LOAD_VTABLE (obj);
+               MONO_GC_FINALIZE_ENQUEUE ((mword)obj, sgen_safe_object_get_size (obj),
+                               sgen_client_vtable_get_namespace (vt), sgen_client_vtable_get_name (vt), gen,
+                               sgen_client_object_has_critical_finalizer (obj));
+       }
+#endif
+}
+
+void
+mono_gc_register_finalizer_callbacks (MonoGCFinalizerCallbacks *callbacks)
+{
+       if (callbacks->version != MONO_GC_FINALIZER_EXTENSION_VERSION)
+               g_error ("Invalid finalizer callback version. Expected %d but got %d\n", MONO_GC_FINALIZER_EXTENSION_VERSION, callbacks->version);
+
+       fin_callbacks = *callbacks;
+}
+
+void
+sgen_client_run_finalize (MonoObject *obj)
+{
+       mono_gc_run_finalize (obj, NULL);
+}
+
+int
+mono_gc_invoke_finalizers (void)
+{
+       return sgen_gc_invoke_finalizers ();
+}
+
+gboolean
+mono_gc_pending_finalizers (void)
+{
+       return sgen_have_pending_finalizers ();
+}
+
+void
+sgen_client_finalize_notify (void)
+{
+       mono_gc_finalize_notify ();
+}
+
+void
+mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
+{
+       sgen_object_register_for_finalization (obj, user_data);
+}
+
+static gboolean
+object_in_domain_predicate (MonoObject *obj, void *user_data)
+{
+       MonoDomain *domain = user_data;
+       if (mono_object_domain (obj) == domain) {
+               SGEN_LOG (5, "Unregistering finalizer for object: %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
+               return TRUE;
+       }
+       return FALSE;
+}
+
+/**
+ * mono_gc_finalizers_for_domain:
+ * @domain: the unloading appdomain
+ * @out_array: output array
+ * @out_size: size of output array
+ *
+ * Store inside @out_array up to @out_size objects that belong to the unloading
+ * appdomain @domain. Returns the number of stored items. Can be called repeteadly
+ * until it returns 0.
+ * The items are removed from the finalizer data structure, so the caller is supposed
+ * to finalize them.
+ * @out_array should be on the stack to allow the GC to know the objects are still alive.
+ */
+int
+mono_gc_finalizers_for_domain (MonoDomain *domain, MonoObject **out_array, int out_size)
+{
+       return sgen_gather_finalizers_if (object_in_domain_predicate, domain, out_array, out_size);
+}
+
+/*
+ * Ephemerons
+ */
+
+typedef struct _EphemeronLinkNode EphemeronLinkNode;
+
+struct _EphemeronLinkNode {
+       EphemeronLinkNode *next;
+       char *array;
+};
+
+typedef struct {
+       void *key;
+       void *value;
+} Ephemeron;
+
+static EphemeronLinkNode *ephemeron_list;
+
+/* LOCKING: requires that the GC lock is held */
+static void
+null_ephemerons_for_domain (MonoDomain *domain)
+{
+       EphemeronLinkNode *current = ephemeron_list, *prev = NULL;
+
+       while (current) {
+               MonoObject *object = (MonoObject*)current->array;
+
+               if (object)
+                       SGEN_ASSERT (0, object->vtable, "Can't have objects without vtables.");
+
+               if (object && object->vtable->domain == domain) {
+                       EphemeronLinkNode *tmp = current;
+
+                       if (prev)
+                               prev->next = current->next;
+                       else
+                               ephemeron_list = current->next;
+
+                       current = current->next;
+                       sgen_free_internal (tmp, INTERNAL_MEM_EPHEMERON_LINK);
+               } else {
+                       prev = current;
+                       current = current->next;
+               }
+       }
+}
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_client_clear_unreachable_ephemerons (ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       SgenGrayQueue *queue = ctx.queue;
+       EphemeronLinkNode *current = ephemeron_list, *prev = NULL;
+       MonoArray *array;
+       Ephemeron *cur, *array_end;
+       char *tombstone;
+
+       while (current) {
+               char *object = current->array;
+
+               if (!sgen_is_object_alive_for_current_gen (object)) {
+                       EphemeronLinkNode *tmp = current;
+
+                       SGEN_LOG (5, "Dead Ephemeron array at %p", object);
+
+                       if (prev)
+                               prev->next = current->next;
+                       else
+                               ephemeron_list = current->next;
+
+                       current = current->next;
+                       sgen_free_internal (tmp, INTERNAL_MEM_EPHEMERON_LINK);
+
+                       continue;
+               }
+
+               copy_func ((void**)&object, queue);
+               current->array = object;
+
+               SGEN_LOG (5, "Clearing unreachable entries for ephemeron array at %p", object);
+
+               array = (MonoArray*)object;
+               cur = mono_array_addr (array, Ephemeron, 0);
+               array_end = cur + mono_array_length_fast (array);
+               tombstone = (char*)((MonoVTable*)SGEN_LOAD_VTABLE (object))->domain->ephemeron_tombstone;
+
+               for (; cur < array_end; ++cur) {
+                       char *key = (char*)cur->key;
+
+                       if (!key || key == tombstone)
+                               continue;
+
+                       SGEN_LOG (5, "[%zd] key %p (%s) value %p (%s)", cur - mono_array_addr (array, Ephemeron, 0),
+                               key, sgen_is_object_alive_for_current_gen (key) ? "reachable" : "unreachable",
+                               cur->value, cur->value && sgen_is_object_alive_for_current_gen (cur->value) ? "reachable" : "unreachable");
+
+                       if (!sgen_is_object_alive_for_current_gen (key)) {
+                               cur->key = tombstone;
+                               cur->value = NULL;
+                               continue;
+                       }
+               }
+               prev = current;
+               current = current->next;
+       }
+}
+
+/*
+LOCKING: requires that the GC lock is held
+
+Limitations: We scan all ephemerons on every collection since the current design doesn't allow for a simple nursery/mature split.
+*/
+gboolean
+sgen_client_mark_ephemerons (ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       SgenGrayQueue *queue = ctx.queue;
+       gboolean nothing_marked = TRUE;
+       EphemeronLinkNode *current = ephemeron_list;
+       MonoArray *array;
+       Ephemeron *cur, *array_end;
+       char *tombstone;
+
+       for (current = ephemeron_list; current; current = current->next) {
+               char *object = current->array;
+               SGEN_LOG (5, "Ephemeron array at %p", object);
+
+               /*It has to be alive*/
+               if (!sgen_is_object_alive_for_current_gen (object)) {
+                       SGEN_LOG (5, "\tnot reachable");
+                       continue;
+               }
+
+               copy_func ((void**)&object, queue);
+
+               array = (MonoArray*)object;
+               cur = mono_array_addr (array, Ephemeron, 0);
+               array_end = cur + mono_array_length_fast (array);
+               tombstone = (char*)((MonoVTable*)SGEN_LOAD_VTABLE (object))->domain->ephemeron_tombstone;
+
+               for (; cur < array_end; ++cur) {
+                       char *key = cur->key;
+
+                       if (!key || key == tombstone)
+                               continue;
+
+                       SGEN_LOG (5, "[%zd] key %p (%s) value %p (%s)", cur - mono_array_addr (array, Ephemeron, 0),
+                               key, sgen_is_object_alive_for_current_gen (key) ? "reachable" : "unreachable",
+                               cur->value, cur->value && sgen_is_object_alive_for_current_gen (cur->value) ? "reachable" : "unreachable");
+
+                       if (sgen_is_object_alive_for_current_gen (key)) {
+                               char *value = cur->value;
+
+                               copy_func ((void**)&cur->key, queue);
+                               if (value) {
+                                       if (!sgen_is_object_alive_for_current_gen (value))
+                                               nothing_marked = FALSE;
+                                       copy_func ((void**)&cur->value, queue);
+                               }
+                       }
+               }
+       }
+
+       SGEN_LOG (5, "Ephemeron run finished. Is it done %d", nothing_marked);
+       return nothing_marked;
+}
+
+gboolean
+mono_gc_ephemeron_array_add (MonoObject *obj)
+{
+       EphemeronLinkNode *node;
+
+       LOCK_GC;
+
+       node = sgen_alloc_internal (INTERNAL_MEM_EPHEMERON_LINK);
+       if (!node) {
+               UNLOCK_GC;
+               return FALSE;
+       }
+       node->array = (char*)obj;
+       node->next = ephemeron_list;
+       ephemeron_list = node;
+
+       SGEN_LOG (5, "Registered ephemeron array %p", obj);
+
+       UNLOCK_GC;
+       return TRUE;
+}
+
+/*
+ * Appdomain handling
+ */
+
+void
+mono_gc_set_current_thread_appdomain (MonoDomain *domain)
+{
+       SgenThreadInfo *info = mono_thread_info_current ();
+
+       /* Could be called from sgen_thread_unregister () with a NULL info */
+       if (domain) {
+               g_assert (info);
+               info->client_info.stopped_domain = domain;
+       }
+}
+
+static gboolean
+need_remove_object_for_domain (char *start, MonoDomain *domain)
+{
+       if (mono_object_domain (start) == domain) {
+               SGEN_LOG (4, "Need to cleanup object %p", start);
+               binary_protocol_cleanup (start, (gpointer)SGEN_LOAD_VTABLE (start), sgen_safe_object_get_size ((GCObject*)start));
+               return TRUE;
+       }
+       return FALSE;
+}
+
+static void
+process_object_for_domain_clearing (char *start, MonoDomain *domain)
+{
+       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (start);
+       if (vt->klass == mono_defaults.internal_thread_class)
+               g_assert (mono_object_domain (start) == mono_get_root_domain ());
+       /* The object could be a proxy for an object in the domain
+          we're deleting. */
+#ifndef DISABLE_REMOTING
+       if (mono_defaults.real_proxy_class->supertypes && mono_class_has_parent_fast (vt->klass, mono_defaults.real_proxy_class)) {
+               MonoObject *server = ((MonoRealProxy*)start)->unwrapped_server;
+
+               /* The server could already have been zeroed out, so
+                  we need to check for that, too. */
+               if (server && (!SGEN_LOAD_VTABLE (server) || mono_object_domain (server) == domain)) {
+                       SGEN_LOG (4, "Cleaning up remote pointer in %p to object %p", start, server);
+                       ((MonoRealProxy*)start)->unwrapped_server = NULL;
+               }
+       }
+#endif
+}
+
+static gboolean
+clear_domain_process_object (char *obj, MonoDomain *domain)
+{
+       gboolean remove;
+
+       process_object_for_domain_clearing (obj, domain);
+       remove = need_remove_object_for_domain (obj, domain);
+
+       if (remove && ((MonoObject*)obj)->synchronisation) {
+               void **dislink = mono_monitor_get_object_monitor_weak_link ((MonoObject*)obj);
+               if (dislink)
+                       sgen_register_disappearing_link (NULL, dislink, FALSE, TRUE);
+       }
+
+       return remove;
+}
+
+static void
+clear_domain_process_minor_object_callback (char *obj, size_t size, MonoDomain *domain)
+{
+       if (clear_domain_process_object (obj, domain)) {
+               CANARIFY_SIZE (size);
+               memset (obj, 0, size);
+       }
+}
+
+static void
+clear_domain_process_major_object_callback (char *obj, size_t size, MonoDomain *domain)
+{
+       clear_domain_process_object (obj, domain);
+}
+
+static void
+clear_domain_free_major_non_pinned_object_callback (char *obj, size_t size, MonoDomain *domain)
+{
+       if (need_remove_object_for_domain (obj, domain))
+               major_collector.free_non_pinned_object (obj, size);
+}
+
+static void
+clear_domain_free_major_pinned_object_callback (char *obj, size_t size, MonoDomain *domain)
+{
+       if (need_remove_object_for_domain (obj, domain))
+               major_collector.free_pinned_object (obj, size);
+}
+
+/*
+ * When appdomains are unloaded we can easily remove objects that have finalizers,
+ * but all the others could still be present in random places on the heap.
+ * We need a sweep to get rid of them even though it's going to be costly
+ * with big heaps.
+ * The reason we need to remove them is because we access the vtable and class
+ * structures to know the object size and the reference bitmap: once the domain is
+ * unloaded the point to random memory.
+ */
+void
+mono_gc_clear_domain (MonoDomain * domain)
+{
+       LOSObject *bigobj, *prev;
+       int i;
+
+       LOCK_GC;
+
+       binary_protocol_domain_unload_begin (domain);
+
+       sgen_stop_world (0);
+
+       if (sgen_concurrent_collection_in_progress ())
+               sgen_perform_collection (0, GENERATION_OLD, "clear domain", TRUE);
+       SGEN_ASSERT (0, !sgen_concurrent_collection_in_progress (), "We just ordered a synchronous collection.  Why are we collecting concurrently?");
+
+       major_collector.finish_sweeping ();
+
+       sgen_process_fin_stage_entries ();
+       sgen_process_dislink_stage_entries ();
+
+       sgen_clear_nursery_fragments ();
+
+       if (sgen_mono_xdomain_checks && domain != mono_get_root_domain ()) {
+               sgen_scan_for_registered_roots_in_domain (domain, ROOT_TYPE_NORMAL);
+               sgen_scan_for_registered_roots_in_domain (domain, ROOT_TYPE_WBARRIER);
+               sgen_check_for_xdomain_refs ();
+       }
+
+       /*Ephemerons and dislinks must be processed before LOS since they might end up pointing
+       to memory returned to the OS.*/
+       null_ephemerons_for_domain (domain);
+
+       for (i = GENERATION_NURSERY; i < GENERATION_MAX; ++i)
+               sgen_null_links_if (object_in_domain_predicate, domain, i);
+
+       for (i = GENERATION_NURSERY; i < GENERATION_MAX; ++i)
+               sgen_remove_finalizers_if (object_in_domain_predicate, domain, i);
+
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
+                       (IterateObjectCallbackFunc)clear_domain_process_minor_object_callback, domain, FALSE);
+
+       /* We need two passes over major and large objects because
+          freeing such objects might give their memory back to the OS
+          (in the case of large objects) or obliterate its vtable
+          (pinned objects with major-copying or pinned and non-pinned
+          objects with major-mark&sweep), but we might need to
+          dereference a pointer from an object to another object if
+          the first object is a proxy. */
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)clear_domain_process_major_object_callback, domain);
+       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
+               clear_domain_process_object (bigobj->data, domain);
+
+       prev = NULL;
+       for (bigobj = los_object_list; bigobj;) {
+               if (need_remove_object_for_domain (bigobj->data, domain)) {
+                       LOSObject *to_free = bigobj;
+                       if (prev)
+                               prev->next = bigobj->next;
+                       else
+                               los_object_list = bigobj->next;
+                       bigobj = bigobj->next;
+                       SGEN_LOG (4, "Freeing large object %p", bigobj->data);
+                       sgen_los_free_object (to_free);
+                       continue;
+               }
+               prev = bigobj;
+               bigobj = bigobj->next;
+       }
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_NON_PINNED, (IterateObjectCallbackFunc)clear_domain_free_major_non_pinned_object_callback, domain);
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_PINNED, (IterateObjectCallbackFunc)clear_domain_free_major_pinned_object_callback, domain);
+
+       if (domain == mono_get_root_domain ()) {
+               sgen_pin_stats_print_class_stats ();
+               sgen_object_layout_dump (stdout);
+       }
+
+       sgen_restart_world (0, NULL);
+
+       binary_protocol_domain_unload_end (domain);
+       binary_protocol_flush_buffers (FALSE);
+
+       UNLOCK_GC;
+}
+
+/*
+ * Allocation
+ */
+
+void*
+mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
+{
+       return sgen_alloc_obj (vtable, size);
+}
+
+void*
+mono_gc_alloc_pinned_obj (MonoVTable *vtable, size_t size)
+{
+       return sgen_alloc_obj_pinned (vtable, size);
+}
+
+void*
+mono_gc_alloc_mature (MonoVTable *vtable)
+{
+       MonoObject *obj = sgen_alloc_obj_mature (vtable, vtable->klass->instance_size);
+       if (obj && G_UNLIKELY (obj->vtable->klass->has_finalize))
+               mono_object_register_finalizer (obj);
+       return obj;
+}
+
+void*
+mono_gc_alloc_fixed (size_t size, void *descr)
+{
+       /* FIXME: do a single allocation */
+       void *res = calloc (1, size);
+       if (!res)
+               return NULL;
+       if (!mono_gc_register_root (res, size, descr)) {
+               free (res);
+               res = NULL;
+       }
+       return res;
+}
+
+void
+mono_gc_free_fixed (void* addr)
+{
+       mono_gc_deregister_root (addr);
+       free (addr);
+}
+
+/*
+ * Managed allocator
+ */
+
+static MonoMethod* alloc_method_cache [ATYPE_NUM];
+static gboolean use_managed_allocator = TRUE;
+
+#ifdef MANAGED_ALLOCATION
+
+#ifdef HAVE_KW_THREAD
+
+#define EMIT_TLS_ACCESS_NEXT_ADDR(mb)  do {    \
+       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
+       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
+       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_TLAB_NEXT_ADDR);            \
+       } while (0)
+
+#define EMIT_TLS_ACCESS_TEMP_END(mb)   do {    \
+       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
+       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
+       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_TLAB_TEMP_END);             \
+       } while (0)
+
+#else
+
+#if defined(__APPLE__) || defined (HOST_WIN32)
+#define EMIT_TLS_ACCESS_NEXT_ADDR(mb)  do {    \
+       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
+       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
+       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO);       \
+       mono_mb_emit_icon ((mb), MONO_STRUCT_OFFSET (SgenThreadInfo, tlab_next_addr));  \
+       mono_mb_emit_byte ((mb), CEE_ADD);              \
+       mono_mb_emit_byte ((mb), CEE_LDIND_I);          \
+       } while (0)
+
+#define EMIT_TLS_ACCESS_TEMP_END(mb)   do {    \
+       mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
+       mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
+       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO);       \
+       mono_mb_emit_icon ((mb), MONO_STRUCT_OFFSET (SgenThreadInfo, tlab_temp_end));   \
+       mono_mb_emit_byte ((mb), CEE_ADD);              \
+       mono_mb_emit_byte ((mb), CEE_LDIND_I);          \
+       } while (0)
+
+#else
+#define EMIT_TLS_ACCESS_NEXT_ADDR(mb)  do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0)
+#define EMIT_TLS_ACCESS_TEMP_END(mb)   do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0)
+#endif
+
+#endif
+
+/* FIXME: Do this in the JIT, where specialized allocation sequences can be created
+ * for each class. This is currently not easy to do, as it is hard to generate basic 
+ * blocks + branches, but it is easy with the linear IL codebase.
+ *
+ * For this to work we'd need to solve the TLAB race, first.  Now we
+ * require the allocator to be in a few known methods to make sure
+ * that they are executed atomically via the restart mechanism.
+ */
+static MonoMethod*
+create_allocator (int atype)
+{
+       int p_var, size_var;
+       guint32 slowpath_branch, max_size_branch;
+       MonoMethodBuilder *mb;
+       MonoMethod *res;
+       MonoMethodSignature *csig;
+       static gboolean registered = FALSE;
+       int tlab_next_addr_var, new_next_var;
+       int num_params, i;
+       const char *name = NULL;
+       AllocatorWrapperInfo *info;
+
+       if (!registered) {
+               mono_register_jit_icall (mono_gc_alloc_obj, "mono_gc_alloc_obj", mono_create_icall_signature ("object ptr int"), FALSE);
+               mono_register_jit_icall (mono_gc_alloc_vector, "mono_gc_alloc_vector", mono_create_icall_signature ("object ptr int int"), FALSE);
+               mono_register_jit_icall (mono_gc_alloc_string, "mono_gc_alloc_string", mono_create_icall_signature ("object ptr int int32"), FALSE);
+               registered = TRUE;
+       }
+
+       if (atype == ATYPE_SMALL) {
+               num_params = 2;
+               name = "AllocSmall";
+       } else if (atype == ATYPE_NORMAL) {
+               num_params = 1;
+               name = "Alloc";
+       } else if (atype == ATYPE_VECTOR) {
+               num_params = 2;
+               name = "AllocVector";
+       } else if (atype == ATYPE_STRING) {
+               num_params = 2;
+               name = "AllocString";
+       } else {
+               g_assert_not_reached ();
+       }
+
+       csig = mono_metadata_signature_alloc (mono_defaults.corlib, num_params);
+       if (atype == ATYPE_STRING) {
+               csig->ret = &mono_defaults.string_class->byval_arg;
+               csig->params [0] = &mono_defaults.int_class->byval_arg;
+               csig->params [1] = &mono_defaults.int32_class->byval_arg;
+       } else {
+               csig->ret = &mono_defaults.object_class->byval_arg;
+               for (i = 0; i < num_params; ++i)
+                       csig->params [i] = &mono_defaults.int_class->byval_arg;
+       }
+
+       mb = mono_mb_new (mono_defaults.object_class, name, MONO_WRAPPER_ALLOC);
+
+#ifndef DISABLE_JIT
+       size_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       if (atype == ATYPE_SMALL) {
+               /* size_var = size_arg */
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_stloc (mb, size_var);
+       } else if (atype == ATYPE_NORMAL) {
+               /* size = vtable->klass->instance_size; */
+               mono_mb_emit_ldarg (mb, 0);
+               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoVTable, klass));
+               mono_mb_emit_byte (mb, CEE_ADD);
+               mono_mb_emit_byte (mb, CEE_LDIND_I);
+               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoClass, instance_size));
+               mono_mb_emit_byte (mb, CEE_ADD);
+               /* FIXME: assert instance_size stays a 4 byte integer */
+               mono_mb_emit_byte (mb, CEE_LDIND_U4);
+               mono_mb_emit_byte (mb, CEE_CONV_I);
+               mono_mb_emit_stloc (mb, size_var);
+       } else if (atype == ATYPE_VECTOR) {
+               MonoExceptionClause *clause;
+               int pos, pos_leave, pos_error;
+               MonoClass *oom_exc_class;
+               MonoMethod *ctor;
+
+               /*
+                * n > MONO_ARRAY_MAX_INDEX => OutOfMemoryException
+                * n < 0                    => OverflowException
+                *
+                * We can do an unsigned comparison to catch both cases, then in the error
+                * case compare signed to distinguish between them.
+                */
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icon (mb, MONO_ARRAY_MAX_INDEX);
+               mono_mb_emit_byte (mb, CEE_CONV_U);
+               pos = mono_mb_emit_short_branch (mb, CEE_BLE_UN_S);
+
+               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+               mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icon (mb, 0);
+               pos_error = mono_mb_emit_short_branch (mb, CEE_BLT_S);
+               mono_mb_emit_exception (mb, "OutOfMemoryException", NULL);
+               mono_mb_patch_short_branch (mb, pos_error);
+               mono_mb_emit_exception (mb, "OverflowException", NULL);
+
+               mono_mb_patch_short_branch (mb, pos);
+
+               clause = mono_image_alloc0 (mono_defaults.corlib, sizeof (MonoExceptionClause));
+               clause->try_offset = mono_mb_get_label (mb);
+
+               /* vtable->klass->sizes.element_size */
+               mono_mb_emit_ldarg (mb, 0);
+               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoVTable, klass));
+               mono_mb_emit_byte (mb, CEE_ADD);
+               mono_mb_emit_byte (mb, CEE_LDIND_I);
+               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoClass, sizes));
+               mono_mb_emit_byte (mb, CEE_ADD);
+               mono_mb_emit_byte (mb, CEE_LDIND_U4);
+               mono_mb_emit_byte (mb, CEE_CONV_I);
+
+               /* * n */
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_byte (mb, CEE_MUL_OVF_UN);
+               /* + sizeof (MonoArray) */
+               mono_mb_emit_icon (mb, sizeof (MonoArray));
+               mono_mb_emit_byte (mb, CEE_ADD_OVF_UN);
+               mono_mb_emit_stloc (mb, size_var);
+
+               pos_leave = mono_mb_emit_branch (mb, CEE_LEAVE);
+
+               /* catch */
+               clause->flags = MONO_EXCEPTION_CLAUSE_NONE;
+               clause->try_len = mono_mb_get_pos (mb) - clause->try_offset;
+               clause->data.catch_class = mono_class_from_name (mono_defaults.corlib,
+                               "System", "OverflowException");
+               g_assert (clause->data.catch_class);
+               clause->handler_offset = mono_mb_get_label (mb);
+
+               oom_exc_class = mono_class_from_name (mono_defaults.corlib,
+                               "System", "OutOfMemoryException");
+               g_assert (oom_exc_class);
+               ctor = mono_class_get_method_from_name (oom_exc_class, ".ctor", 0);
+               g_assert (ctor);
+
+               mono_mb_emit_byte (mb, CEE_POP);
+               mono_mb_emit_op (mb, CEE_NEWOBJ, ctor);
+               mono_mb_emit_byte (mb, CEE_THROW);
+
+               clause->handler_len = mono_mb_get_pos (mb) - clause->handler_offset;
+               mono_mb_set_clauses (mb, 1, clause);
+               mono_mb_patch_branch (mb, pos_leave);
+               /* end catch */
+       } else if (atype == ATYPE_STRING) {
+               int pos;
+
+               /*
+                * a string allocator method takes the args: (vtable, len)
+                *
+                * bytes = offsetof (MonoString, chars) + ((len + 1) * 2)
+                *
+                * condition:
+                *
+                * bytes <= INT32_MAX - (SGEN_ALLOC_ALIGN - 1)
+                *
+                * therefore:
+                *
+                * offsetof (MonoString, chars) + ((len + 1) * 2) <= INT32_MAX - (SGEN_ALLOC_ALIGN - 1)
+                * len <= (INT32_MAX - (SGEN_ALLOC_ALIGN - 1) - offsetof (MonoString, chars)) / 2 - 1
+                */
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icon (mb, (INT32_MAX - (SGEN_ALLOC_ALIGN - 1) - MONO_STRUCT_OFFSET (MonoString, chars)) / 2 - 1);
+               pos = mono_mb_emit_short_branch (mb, MONO_CEE_BLE_UN_S);
+
+               mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+               mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
+               mono_mb_emit_exception (mb, "OutOfMemoryException", NULL);
+               mono_mb_patch_short_branch (mb, pos);
+
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icon (mb, 1);
+               mono_mb_emit_byte (mb, MONO_CEE_SHL);
+               //WE manually fold the above + 2 here
+               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoString, chars) + 2);
+               mono_mb_emit_byte (mb, CEE_ADD);
+               mono_mb_emit_stloc (mb, size_var);
+       } else {
+               g_assert_not_reached ();
+       }
+
+       if (atype != ATYPE_SMALL) {
+               /* size += ALLOC_ALIGN - 1; */
+               mono_mb_emit_ldloc (mb, size_var);
+               mono_mb_emit_icon (mb, SGEN_ALLOC_ALIGN - 1);
+               mono_mb_emit_byte (mb, CEE_ADD);
+               /* size &= ~(ALLOC_ALIGN - 1); */
+               mono_mb_emit_icon (mb, ~(SGEN_ALLOC_ALIGN - 1));
+               mono_mb_emit_byte (mb, CEE_AND);
+               mono_mb_emit_stloc (mb, size_var);
+       }
+
+       /* if (size > MAX_SMALL_OBJ_SIZE) goto slowpath */
+       if (atype != ATYPE_SMALL) {
+               mono_mb_emit_ldloc (mb, size_var);
+               mono_mb_emit_icon (mb, SGEN_MAX_SMALL_OBJ_SIZE);
+               max_size_branch = mono_mb_emit_short_branch (mb, MONO_CEE_BGT_UN_S);
+       }
+
+       /*
+        * We need to modify tlab_next, but the JIT only supports reading, so we read
+        * another tls var holding its address instead.
+        */
+
+       /* tlab_next_addr (local) = tlab_next_addr (TLS var) */
+       tlab_next_addr_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       EMIT_TLS_ACCESS_NEXT_ADDR (mb);
+       mono_mb_emit_stloc (mb, tlab_next_addr_var);
+
+       /* p = (void**)tlab_next; */
+       p_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       mono_mb_emit_ldloc (mb, tlab_next_addr_var);
+       mono_mb_emit_byte (mb, CEE_LDIND_I);
+       mono_mb_emit_stloc (mb, p_var);
+       
+       /* new_next = (char*)p + size; */
+       new_next_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
+       mono_mb_emit_ldloc (mb, p_var);
+       mono_mb_emit_ldloc (mb, size_var);
+       mono_mb_emit_byte (mb, CEE_CONV_I);
+       mono_mb_emit_byte (mb, CEE_ADD);
+       mono_mb_emit_stloc (mb, new_next_var);
+
+       /* if (G_LIKELY (new_next < tlab_temp_end)) */
+       mono_mb_emit_ldloc (mb, new_next_var);
+       EMIT_TLS_ACCESS_TEMP_END (mb);
+       slowpath_branch = mono_mb_emit_short_branch (mb, MONO_CEE_BLT_UN_S);
+
+       /* Slowpath */
+       if (atype != ATYPE_SMALL)
+               mono_mb_patch_short_branch (mb, max_size_branch);
+
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_NOT_TAKEN);
+
+       /* FIXME: mono_gc_alloc_obj takes a 'size_t' as an argument, not an int32 */
+       mono_mb_emit_ldarg (mb, 0);
+       mono_mb_emit_ldloc (mb, size_var);
+       if (atype == ATYPE_NORMAL || atype == ATYPE_SMALL) {
+               mono_mb_emit_icall (mb, mono_gc_alloc_obj);
+       } else if (atype == ATYPE_VECTOR) {
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icall (mb, mono_gc_alloc_vector);
+       } else if (atype == ATYPE_STRING) {
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icall (mb, mono_gc_alloc_string);
+       } else {
+               g_assert_not_reached ();
+       }
+       mono_mb_emit_byte (mb, CEE_RET);
+
+       /* Fastpath */
+       mono_mb_patch_short_branch (mb, slowpath_branch);
+
+       /* FIXME: Memory barrier */
+
+       /* tlab_next = new_next */
+       mono_mb_emit_ldloc (mb, tlab_next_addr_var);
+       mono_mb_emit_ldloc (mb, new_next_var);
+       mono_mb_emit_byte (mb, CEE_STIND_I);
+
+       /*The tlab store must be visible before the the vtable store. This could be replaced with a DDS but doing it with IL would be tricky. */
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_MEMORY_BARRIER);
+       mono_mb_emit_i4 (mb, MONO_MEMORY_BARRIER_REL);
+
+       /* *p = vtable; */
+       mono_mb_emit_ldloc (mb, p_var);
+       mono_mb_emit_ldarg (mb, 0);
+       mono_mb_emit_byte (mb, CEE_STIND_I);
+
+       if (atype == ATYPE_VECTOR) {
+               /* arr->max_length = max_length; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_ldflda (mb, MONO_STRUCT_OFFSET (MonoArray, max_length));
+               mono_mb_emit_ldarg (mb, 1);
+#ifdef MONO_BIG_ARRAYS
+               mono_mb_emit_byte (mb, CEE_STIND_I);
+#else
+               mono_mb_emit_byte (mb, CEE_STIND_I4);
+#endif
+       } else  if (atype == ATYPE_STRING) {
+               /* need to set length and clear the last char */
+               /* s->length = len; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_icon (mb, MONO_STRUCT_OFFSET (MonoString, length));
+               mono_mb_emit_byte (mb, MONO_CEE_ADD);
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_byte (mb, MONO_CEE_STIND_I4);
+               /* s->chars [len] = 0; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_ldloc (mb, size_var);
+               mono_mb_emit_icon (mb, 2);
+               mono_mb_emit_byte (mb, MONO_CEE_SUB);
+               mono_mb_emit_byte (mb, MONO_CEE_ADD);
+               mono_mb_emit_icon (mb, 0);
+               mono_mb_emit_byte (mb, MONO_CEE_STIND_I2);
+       }
+
+       /*
+       We must make sure both vtable and max_length are globaly visible before returning to managed land.
+       */
+       mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
+       mono_mb_emit_byte (mb, CEE_MONO_MEMORY_BARRIER);
+       mono_mb_emit_i4 (mb, MONO_MEMORY_BARRIER_REL);
+
+       /* return p */
+       mono_mb_emit_ldloc (mb, p_var);
+       mono_mb_emit_byte (mb, CEE_RET);
+#endif
+
+       res = mono_mb_create_method (mb, csig, 8);
+       mono_mb_free (mb);
+       mono_method_get_header (res)->init_locals = FALSE;
+
+       info = mono_image_alloc0 (mono_defaults.corlib, sizeof (AllocatorWrapperInfo));
+       info->gc_name = "sgen";
+       info->alloc_type = atype;
+       mono_marshal_set_wrapper_info (res, info);
+
+       return res;
+}
+#endif
+
+int
+mono_gc_get_aligned_size_for_allocator (int size)
+{
+       int aligned_size = size;
+       aligned_size += SGEN_ALLOC_ALIGN - 1;
+       aligned_size &= ~(SGEN_ALLOC_ALIGN - 1);
+       return aligned_size;
+}
+
+/*
+ * Generate an allocator method implementing the fast path of mono_gc_alloc_obj ().
+ * The signature of the called method is:
+ *     object allocate (MonoVTable *vtable)
+ */
+MonoMethod*
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box, gboolean known_instance_size)
+{
+#ifdef MANAGED_ALLOCATION
+       if (collect_before_allocs)
+               return NULL;
+       if (!mono_runtime_has_tls_get ())
+               return NULL;
+       if (klass->instance_size > tlab_size)
+               return NULL;
+       if (known_instance_size && ALIGN_TO (klass->instance_size, SGEN_ALLOC_ALIGN) >= SGEN_MAX_SMALL_OBJ_SIZE)
+               return NULL;
+       if (klass->has_finalize || mono_class_is_marshalbyref (klass) || (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS))
+               return NULL;
+       if (klass->rank)
+               return NULL;
+       if (klass->byval_arg.type == MONO_TYPE_STRING)
+               return mono_gc_get_managed_allocator_by_type (ATYPE_STRING);
+       /* Generic classes have dynamic field and can go above MAX_SMALL_OBJ_SIZE. */
+       if (known_instance_size)
+               return mono_gc_get_managed_allocator_by_type (ATYPE_SMALL);
+       else
+               return mono_gc_get_managed_allocator_by_type (ATYPE_NORMAL);
+#else
+       return NULL;
+#endif
+}
+
+MonoMethod*
+mono_gc_get_managed_array_allocator (MonoClass *klass)
+{
+#ifdef MANAGED_ALLOCATION
+       if (klass->rank != 1)
+               return NULL;
+       if (!mono_runtime_has_tls_get ())
+               return NULL;
+       if (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS)
+               return NULL;
+       if (has_per_allocation_action)
+               return NULL;
+       g_assert (!mono_class_has_finalizer (klass) && !mono_class_is_marshalbyref (klass));
+
+       return mono_gc_get_managed_allocator_by_type (ATYPE_VECTOR);
+#else
+       return NULL;
+#endif
+}
+
+void
+sgen_set_use_managed_allocator (gboolean flag)
+{
+       use_managed_allocator = flag;
+}
+
+MonoMethod*
+mono_gc_get_managed_allocator_by_type (int atype)
+{
+#ifdef MANAGED_ALLOCATION
+       MonoMethod *res;
+
+       if (!use_managed_allocator)
+               return NULL;
+
+       if (!mono_runtime_has_tls_get ())
+               return NULL;
+
+       res = alloc_method_cache [atype];
+       if (res)
+               return res;
+
+       res = create_allocator (atype);
+       LOCK_GC;
+       if (alloc_method_cache [atype]) {
+               mono_free_method (res);
+               res = alloc_method_cache [atype];
+       } else {
+               mono_memory_barrier ();
+               alloc_method_cache [atype] = res;
+       }
+       UNLOCK_GC;
+
+       return res;
+#else
+       return NULL;
+#endif
+}
+
+guint32
+mono_gc_get_managed_allocator_types (void)
+{
+       return ATYPE_NUM;
+}
+
+gboolean
+sgen_is_managed_allocator (MonoMethod *method)
+{
+       int i;
+
+       for (i = 0; i < ATYPE_NUM; ++i)
+               if (method == alloc_method_cache [i])
+                       return TRUE;
+       return FALSE;
+}
+
+gboolean
+sgen_has_managed_allocator (void)
+{
+       int i;
+
+       for (i = 0; i < ATYPE_NUM; ++i)
+               if (alloc_method_cache [i])
+                       return TRUE;
+       return FALSE;
+}
+
+/*
+ * Cardtable scanning
+ */
+
+#define MWORD_MASK (sizeof (mword) - 1)
+
+static inline int
+find_card_offset (mword card)
+{
+/*XXX Use assembly as this generates some pretty bad code */
+#if defined(__i386__) && defined(__GNUC__)
+       return  (__builtin_ffs (card) - 1) / 8;
+#elif defined(__x86_64__) && defined(__GNUC__)
+       return (__builtin_ffsll (card) - 1) / 8;
+#elif defined(__s390x__)
+       return (__builtin_ffsll (GUINT64_TO_LE(card)) - 1) / 8;
+#else
+       int i;
+       guint8 *ptr = (guint8 *) &card;
+       for (i = 0; i < sizeof (mword); ++i) {
+               if (ptr[i])
+                       return i;
+       }
+       return 0;
+#endif
+}
+
+static guint8*
+find_next_card (guint8 *card_data, guint8 *end)
+{
+       mword *cards, *cards_end;
+       mword card;
+
+       while ((((mword)card_data) & MWORD_MASK) && card_data < end) {
+               if (*card_data)
+                       return card_data;
+               ++card_data;
+       }
+
+       if (card_data == end)
+               return end;
+
+       cards = (mword*)card_data;
+       cards_end = (mword*)((mword)end & ~MWORD_MASK);
+       while (cards < cards_end) {
+               card = *cards;
+               if (card)
+                       return (guint8*)cards + find_card_offset (card);
+               ++cards;
+       }
+
+       card_data = (guint8*)cards_end;
+       while (card_data < end) {
+               if (*card_data)
+                       return card_data;
+               ++card_data;
+       }
+
+       return end;
+}
+
+#define ARRAY_OBJ_INDEX(ptr,array,elem_size) (((char*)(ptr) - ((char*)(array) + G_STRUCT_OFFSET (MonoArray, vector))) / (elem_size))
+
+gboolean
+sgen_client_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboolean mod_union, ScanCopyContext ctx)
+{
+       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
+       MonoClass *klass = vt->klass;
+
+       SGEN_ASSERT (0, SGEN_VTABLE_HAS_REFERENCES ((GCVTable*)vt), "Why would we ever call this on reference-free objects?");
+
+       if (vt->rank) {
+               guint8 *card_data, *card_base;
+               guint8 *card_data_end;
+               char *obj_start = sgen_card_table_align_pointer (obj);
+               mword obj_size = sgen_client_par_object_get_size (vt, (GCObject*)obj);
+               char *obj_end = obj + obj_size;
+               size_t card_count;
+               size_t extra_idx = 0;
+
+               MonoArray *arr = (MonoArray*)obj;
+               mword desc = (mword)klass->element_class->gc_descr;
+               int elem_size = mono_array_element_size (klass);
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+               guint8 *overflow_scan_end = NULL;
+#endif
+
+#ifdef SGEN_OBJECT_LAYOUT_STATISTICS
+               if (klass->element_class->valuetype)
+                       sgen_object_layout_scanned_vtype_array ();
+               else
+                       sgen_object_layout_scanned_ref_array ();
+#endif
+
+               if (cards)
+                       card_data = cards;
+               else
+                       card_data = sgen_card_table_get_card_scan_address ((mword)obj);
+
+               card_base = card_data;
+               card_count = sgen_card_table_number_of_cards_in_range ((mword)obj, obj_size);
+               card_data_end = card_data + card_count;
+
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+               /*Check for overflow and if so, setup to scan in two steps*/
+               if (!cards && card_data_end >= SGEN_SHADOW_CARDTABLE_END) {
+                       overflow_scan_end = sgen_shadow_cardtable + (card_data_end - SGEN_SHADOW_CARDTABLE_END);
+                       card_data_end = SGEN_SHADOW_CARDTABLE_END;
+               }
+
+LOOP_HEAD:
+#endif
+
+               card_data = find_next_card (card_data, card_data_end);
+               for (; card_data < card_data_end; card_data = find_next_card (card_data + 1, card_data_end)) {
+                       size_t index;
+                       size_t idx = (card_data - card_base) + extra_idx;
+                       char *start = (char*)(obj_start + idx * CARD_SIZE_IN_BYTES);
+                       char *card_end = start + CARD_SIZE_IN_BYTES;
+                       char *first_elem, *elem;
+
+                       HEAVY_STAT (++los_marked_cards);
+
+                       if (!cards)
+                               sgen_card_table_prepare_card_for_scanning (card_data);
+
+                       card_end = MIN (card_end, obj_end);
+
+                       if (start <= (char*)arr->vector)
+                               index = 0;
+                       else
+                               index = ARRAY_OBJ_INDEX (start, obj, elem_size);
+
+                       elem = first_elem = (char*)mono_array_addr_with_size_fast ((MonoArray*)obj, elem_size, index);
+                       if (klass->element_class->valuetype) {
+                               ScanVTypeFunc scan_vtype_func = ctx.ops->scan_vtype;
+
+                               for (; elem < card_end; elem += elem_size)
+                                       scan_vtype_func (obj, elem, desc, ctx.queue BINARY_PROTOCOL_ARG (elem_size));
+                       } else {
+                               CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+
+                               HEAVY_STAT (++los_array_cards);
+                               for (; elem < card_end; elem += SIZEOF_VOID_P) {
+                                       gpointer new, old = *(gpointer*)elem;
+                                       if ((mod_union && old) || G_UNLIKELY (sgen_ptr_in_nursery (old))) {
+                                               HEAVY_STAT (++los_array_remsets);
+                                               copy_func ((void**)elem, ctx.queue);
+                                               new = *(gpointer*)elem;
+                                               if (G_UNLIKELY (sgen_ptr_in_nursery (new)))
+                                                       sgen_add_to_global_remset (elem, new);
+                                       }
+                               }
+                       }
+
+                       binary_protocol_card_scan (first_elem, elem - first_elem);
+               }
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+               if (overflow_scan_end) {
+                       extra_idx = card_data - card_base;
+                       card_base = card_data = sgen_shadow_cardtable;
+                       card_data_end = overflow_scan_end;
+                       overflow_scan_end = NULL;
+                       goto LOOP_HEAD;
+               }
+#endif
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+/*
+ * Array and string allocation
+ */
+
+void*
+mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
+{
+       MonoArray *arr;
+       TLAB_ACCESS_INIT;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return NULL;
+
+#ifndef DISABLE_CRITICAL_REGION
+       ENTER_CRITICAL_REGION;
+       arr = sgen_try_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (arr) {
+               /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
+               arr->max_length = (mono_array_size_t)max_length;
+               EXIT_CRITICAL_REGION;
+               goto done;
+       }
+       EXIT_CRITICAL_REGION;
+#endif
+
+       LOCK_GC;
+
+       arr = sgen_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (G_UNLIKELY (!arr)) {
+               UNLOCK_GC;
+               return mono_gc_out_of_memory (size);
+       }
+
+       arr->max_length = (mono_array_size_t)max_length;
+
+       UNLOCK_GC;
+
+ done:
+       SGEN_ASSERT (6, SGEN_ALIGN_UP (size) == SGEN_ALIGN_UP (sgen_client_par_object_get_size ((GCVTable*)vtable, (GCObject*)arr)), "Vector has incorrect size.");
+       return arr;
+}
+
+void*
+mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uintptr_t bounds_size)
+{
+       MonoArray *arr;
+       MonoArrayBounds *bounds;
+       TLAB_ACCESS_INIT;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return NULL;
+
+#ifndef DISABLE_CRITICAL_REGION
+       ENTER_CRITICAL_REGION;
+       arr = sgen_try_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (arr) {
+               /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
+               arr->max_length = (mono_array_size_t)max_length;
+
+               bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
+               arr->bounds = bounds;
+               EXIT_CRITICAL_REGION;
+               goto done;
+       }
+       EXIT_CRITICAL_REGION;
+#endif
+
+       LOCK_GC;
+
+       arr = sgen_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (G_UNLIKELY (!arr)) {
+               UNLOCK_GC;
+               return mono_gc_out_of_memory (size);
+       }
+
+       arr->max_length = (mono_array_size_t)max_length;
+
+       bounds = (MonoArrayBounds*)((char*)arr + size - bounds_size);
+       arr->bounds = bounds;
+
+       UNLOCK_GC;
+
+ done:
+       SGEN_ASSERT (6, SGEN_ALIGN_UP (size) == SGEN_ALIGN_UP (sgen_client_par_object_get_size ((GCVTable*)vtable, (GCObject*)arr)), "Array has incorrect size.");
+       return arr;
+}
+
+void*
+mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
+{
+       MonoString *str;
+       TLAB_ACCESS_INIT;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return NULL;
+
+#ifndef DISABLE_CRITICAL_REGION
+       ENTER_CRITICAL_REGION;
+       str = sgen_try_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (str) {
+               /*This doesn't require fencing since EXIT_CRITICAL_REGION already does it for us*/
+               str->length = len;
+               EXIT_CRITICAL_REGION;
+               return str;
+       }
+       EXIT_CRITICAL_REGION;
+#endif
+
+       LOCK_GC;
+
+       str = sgen_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (G_UNLIKELY (!str)) {
+               UNLOCK_GC;
+               return mono_gc_out_of_memory (size);
+       }
+
+       str->length = len;
+
+       UNLOCK_GC;
+
+       return str;
+}
+
+/*
+ * Strings
+ */
+
+void
+mono_gc_set_string_length (MonoString *str, gint32 new_length)
+{
+       mono_unichar2 *new_end = str->chars + new_length;
+
+       /* zero the discarded string. This null-delimits the string and allows
+        * the space to be reclaimed by SGen. */
+
+       if (nursery_canaries_enabled () && sgen_ptr_in_nursery (str)) {
+               CHECK_CANARY_FOR_OBJECT (str);
+               memset (new_end, 0, (str->length - new_length + 1) * sizeof (mono_unichar2) + CANARY_SIZE);
+               memcpy (new_end + 1 , CANARY_STRING, CANARY_SIZE);
+       } else {
+               memset (new_end, 0, (str->length - new_length + 1) * sizeof (mono_unichar2));
+       }
+
+       str->length = new_length;
+}
+
+/*
+ * Profiling
+ */
+
+#define GC_ROOT_NUM 32
+typedef struct {
+       int count;              /* must be the first field */
+       void *objects [GC_ROOT_NUM];
+       int root_types [GC_ROOT_NUM];
+       uintptr_t extra_info [GC_ROOT_NUM];
+} GCRootReport;
+
+static void
+notify_gc_roots (GCRootReport *report)
+{
+       if (!report->count)
+               return;
+       mono_profiler_gc_roots (report->count, report->objects, report->root_types, report->extra_info);
+       report->count = 0;
+}
+
+static void
+add_profile_gc_root (GCRootReport *report, void *object, int rtype, uintptr_t extra_info)
+{
+       if (report->count == GC_ROOT_NUM)
+               notify_gc_roots (report);
+       report->objects [report->count] = object;
+       report->root_types [report->count] = rtype;
+       report->extra_info [report->count++] = (uintptr_t)((MonoVTable*)SGEN_LOAD_VTABLE (object))->klass;
+}
+
+void
+sgen_client_nursery_objects_pinned (void **definitely_pinned, int count)
+{
+       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS) {
+               GCRootReport report;
+               int idx;
+               report.count = 0;
+               for (idx = 0; idx < count; ++idx)
+                       add_profile_gc_root (&report, definitely_pinned [idx], MONO_PROFILE_GC_ROOT_PINNING | MONO_PROFILE_GC_ROOT_MISC, 0);
+               notify_gc_roots (&report);
+       }
+}
+
+static void
+report_finalizer_roots_from_queue (SgenPointerQueue *queue)
+{
+       GCRootReport report;
+       size_t i;
+
+       report.count = 0;
+       for (i = 0; i < queue->next_slot; ++i) {
+               void *obj = queue->data [i];
+               if (!obj)
+                       continue;
+               add_profile_gc_root (&report, obj, MONO_PROFILE_GC_ROOT_FINALIZER, 0);
+       }
+       notify_gc_roots (&report);
+}
+
+static void
+report_finalizer_roots (SgenPointerQueue *fin_ready_queue, SgenPointerQueue *critical_fin_queue)
+{
+       report_finalizer_roots_from_queue (fin_ready_queue);
+       report_finalizer_roots_from_queue (critical_fin_queue);
+}
+
+static GCRootReport *root_report;
+
+static void
+single_arg_report_root (void **obj, void *gc_data)
+{
+       if (*obj)
+               add_profile_gc_root (root_report, *obj, MONO_PROFILE_GC_ROOT_OTHER, 0);
+}
+
+static void
+precisely_report_roots_from (GCRootReport *report, void** start_root, void** end_root, mword desc)
+{
+       switch (desc & ROOT_DESC_TYPE_MASK) {
+       case ROOT_DESC_BITMAP:
+               desc >>= ROOT_DESC_TYPE_SHIFT;
+               while (desc) {
+                       if ((desc & 1) && *start_root) {
+                               add_profile_gc_root (report, *start_root, MONO_PROFILE_GC_ROOT_OTHER, 0);
+                       }
+                       desc >>= 1;
+                       start_root++;
+               }
+               return;
+       case ROOT_DESC_COMPLEX: {
+               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+               gsize bwords = (*bitmap_data) - 1;
+               void **start_run = start_root;
+               bitmap_data++;
+               while (bwords-- > 0) {
+                       gsize bmap = *bitmap_data++;
+                       void **objptr = start_run;
+                       while (bmap) {
+                               if ((bmap & 1) && *objptr) {
+                                       add_profile_gc_root (report, *objptr, MONO_PROFILE_GC_ROOT_OTHER, 0);
+                               }
+                               bmap >>= 1;
+                               ++objptr;
+                       }
+                       start_run += GC_BITS_PER_WORD;
+               }
+               break;
+       }
+       case ROOT_DESC_USER: {
+               MonoGCRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
+               root_report = report;
+               marker (start_root, single_arg_report_root, NULL);
+               break;
+       }
+       case ROOT_DESC_RUN_LEN:
+               g_assert_not_reached ();
+       default:
+               g_assert_not_reached ();
+       }
+}
+
+static void
+report_registered_roots_by_type (int root_type)
+{
+       GCRootReport report;
+       void **start_root;
+       RootRecord *root;
+       report.count = 0;
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+               SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
+               precisely_report_roots_from (&report, start_root, (void**)root->end_root, root->root_desc);
+       } SGEN_HASH_TABLE_FOREACH_END;
+       notify_gc_roots (&report);
+}
+
+static void
+report_registered_roots (void)
+{
+       report_registered_roots_by_type (ROOT_TYPE_NORMAL);
+       report_registered_roots_by_type (ROOT_TYPE_WBARRIER);
+}
+
+void
+sgen_client_collecting_minor (SgenPointerQueue *fin_ready_queue, SgenPointerQueue *critical_fin_queue)
+{
+       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+               report_registered_roots ();
+       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+               report_finalizer_roots (fin_ready_queue, critical_fin_queue);
+}
+
+static GCRootReport major_root_report;
+static gboolean profile_roots;
+
+void
+sgen_client_collecting_major_1 (void)
+{
+       profile_roots = mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS;
+       memset (&major_root_report, 0, sizeof (GCRootReport));
+}
+
+void
+sgen_client_pinned_los_object (char *obj)
+{
+       if (profile_roots)
+               add_profile_gc_root (&major_root_report, obj, MONO_PROFILE_GC_ROOT_PINNING | MONO_PROFILE_GC_ROOT_MISC, 0);
+}
+
+void
+sgen_client_collecting_major_2 (void)
+{
+       if (profile_roots)
+               notify_gc_roots (&major_root_report);
+
+       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+               report_registered_roots ();
+}
+
+void
+sgen_client_collecting_major_3 (SgenPointerQueue *fin_ready_queue, SgenPointerQueue *critical_fin_queue)
+{
+       if (mono_profiler_get_events () & MONO_PROFILE_GC_ROOTS)
+               report_finalizer_roots (fin_ready_queue, critical_fin_queue);
+}
+
+#define MOVED_OBJECTS_NUM 64
+static void *moved_objects [MOVED_OBJECTS_NUM];
+static int moved_objects_idx = 0;
+
+void
+mono_sgen_register_moved_object (void *obj, void *destination)
+{
+       g_assert (mono_profiler_events & MONO_PROFILE_GC_MOVES);
+
+       if (moved_objects_idx == MOVED_OBJECTS_NUM) {
+               mono_profiler_gc_moves (moved_objects, moved_objects_idx);
+               moved_objects_idx = 0;
+       }
+       moved_objects [moved_objects_idx++] = obj;
+       moved_objects [moved_objects_idx++] = destination;
+}
+
+void
+mono_sgen_gc_event_moves (void)
+{
+       if (moved_objects_idx) {
+               mono_profiler_gc_moves (moved_objects, moved_objects_idx);
+               moved_objects_idx = 0;
+       }
+}
+
+/*
+ * Heap walking
+ */
+
+#define REFS_SIZE 128
+typedef struct {
+       void *data;
+       MonoGCReferences callback;
+       int flags;
+       int count;
+       int called;
+       MonoObject *refs [REFS_SIZE];
+       uintptr_t offsets [REFS_SIZE];
+} HeapWalkInfo;
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {    \
+               if (*(ptr)) {   \
+                       if (hwi->count == REFS_SIZE) {  \
+                               hwi->callback ((MonoObject*)start, mono_object_class (start), hwi->called? 0: size, hwi->count, hwi->refs, hwi->offsets, hwi->data);    \
+                               hwi->count = 0; \
+                               hwi->called = 1;        \
+                       }       \
+                       hwi->offsets [hwi->count] = (char*)(ptr)-(char*)start;  \
+                       hwi->refs [hwi->count++] = *(ptr);      \
+               }       \
+       } while (0)
+
+static void
+collect_references (HeapWalkInfo *hwi, char *start, size_t size)
+{
+       mword desc = sgen_obj_get_descriptor (start);
+
+#include "sgen/sgen-scan-object.h"
+}
+
+static void
+walk_references (char *start, size_t size, void *data)
+{
+       HeapWalkInfo *hwi = data;
+       hwi->called = 0;
+       hwi->count = 0;
+       collect_references (hwi, start, size);
+       if (hwi->count || !hwi->called)
+               hwi->callback ((MonoObject*)start, mono_object_class (start), hwi->called? 0: size, hwi->count, hwi->refs, hwi->offsets, hwi->data);
+}
+
+/**
+ * mono_gc_walk_heap:
+ * @flags: flags for future use
+ * @callback: a function pointer called for each object in the heap
+ * @data: a user data pointer that is passed to callback
+ *
+ * This function can be used to iterate over all the live objects in the heap:
+ * for each object, @callback is invoked, providing info about the object's
+ * location in memory, its class, its size and the objects it references.
+ * For each referenced object it's offset from the object address is
+ * reported in the offsets array.
+ * The object references may be buffered, so the callback may be invoked
+ * multiple times for the same object: in all but the first call, the size
+ * argument will be zero.
+ * Note that this function can be only called in the #MONO_GC_EVENT_PRE_START_WORLD
+ * profiler event handler.
+ *
+ * Returns: a non-zero value if the GC doesn't support heap walking
+ */
+int
+mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data)
+{
+       HeapWalkInfo hwi;
+
+       hwi.flags = flags;
+       hwi.callback = callback;
+       hwi.data = data;
+
+       sgen_clear_nursery_fragments ();
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, walk_references, &hwi, FALSE);
+
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, walk_references, &hwi);
+       sgen_los_iterate_objects (walk_references, &hwi);
+
+       return 0;
+}
+
+/*
+ * Threads
+ */
+
+void
+mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks)
+{
+       gc_callbacks = *callbacks;
+}
+
+MonoGCCallbacks *
+mono_gc_get_gc_callbacks ()
+{
+       return &gc_callbacks;
+}
+
+void
+sgen_client_thread_register (SgenThreadInfo* info, void *stack_bottom_fallback)
+{
+       size_t stsize = 0;
+       guint8 *staddr = NULL;
+
+#ifndef HAVE_KW_THREAD
+       g_assert (!mono_native_tls_get_value (thread_info_key));
+       mono_native_tls_set_value (thread_info_key, info);
+#else
+       sgen_thread_info = info;
+#endif
+
+       info->client_info.skip = 0;
+       info->client_info.stopped_ip = NULL;
+       info->client_info.stopped_domain = NULL;
+
+       info->client_info.stack_start = NULL;
+
+#ifdef SGEN_POSIX_STW
+       info->client_info.stop_count = -1;
+       info->client_info.signal = 0;
+#endif
+
+       /* On win32, stack_start_limit should be 0, since the stack can grow dynamically */
+       mono_thread_info_get_stack_bounds (&staddr, &stsize);
+       if (staddr) {
+#ifndef HOST_WIN32
+               info->client_info.stack_start_limit = staddr;
+#endif
+               info->client_info.stack_end = staddr + stsize;
+       } else {
+               gsize stack_bottom = (gsize)stack_bottom_fallback;
+               stack_bottom += 4095;
+               stack_bottom &= ~4095;
+               info->client_info.stack_end = (char*)stack_bottom;
+       }
+
+#ifdef USE_MONO_CTX
+       memset (&info->client_info.ctx, 0, sizeof (MonoContext));
+#else
+       memset (&info->client_info.regs, 0, sizeof (info->client_info.regs));
+#endif
+
+       if (mono_gc_get_gc_callbacks ()->thread_attach_func)
+               info->client_info.runtime_data = mono_gc_get_gc_callbacks ()->thread_attach_func ();
+
+       binary_protocol_thread_register ((gpointer)mono_thread_info_get_tid (info));
+
+       SGEN_LOG (3, "registered thread %p (%p) stack end %p", info, (gpointer)mono_thread_info_get_tid (info), info->client_info.stack_end);
+}
+
+void
+sgen_client_thread_unregister (SgenThreadInfo *p)
+{
+       MonoNativeThreadId tid;
+
+#ifndef HAVE_KW_THREAD
+       mono_native_tls_set_value (thread_info_key, NULL);
+#else
+       sgen_thread_info = NULL;
+#endif
+
+       tid = mono_thread_info_get_tid (p);
+
+       if (p->client_info.info.runtime_thread)
+               mono_threads_add_joinable_thread ((gpointer)tid);
+
+       if (mono_gc_get_gc_callbacks ()->thread_detach_func) {
+               mono_gc_get_gc_callbacks ()->thread_detach_func (p->client_info.runtime_data);
+               p->client_info.runtime_data = NULL;
+       }
+
+       binary_protocol_thread_unregister ((gpointer)tid);
+       SGEN_LOG (3, "unregister thread %p (%p)", p, (gpointer)tid);
+}
+
+void
+mono_gc_set_skip_thread (gboolean skip)
+{
+       SgenThreadInfo *info = mono_thread_info_current ();
+
+       LOCK_GC;
+       info->client_info.gc_disabled = skip;
+       UNLOCK_GC;
+}
+
+static gboolean
+is_critical_method (MonoMethod *method)
+{
+       return mono_runtime_is_critical_method (method) || sgen_is_critical_method (method);
+}
+
+static gboolean
+thread_in_critical_region (SgenThreadInfo *info)
+{
+       return info->client_info.in_critical_region;
+}
+
+static void
+sgen_thread_attach (SgenThreadInfo *info)
+{
+       if (mono_gc_get_gc_callbacks ()->thread_attach_func && !info->client_info.runtime_data)
+               info->client_info.runtime_data = mono_gc_get_gc_callbacks ()->thread_attach_func ();
+}
+
+static void
+sgen_thread_detach (SgenThreadInfo *p)
+{
+       /* If a delegate is passed to native code and invoked on a thread we dont
+        * know about, the jit will register it with mono_jit_thread_attach, but
+        * we have no way of knowing when that thread goes away.  SGen has a TSD
+        * so we assume that if the domain is still registered, we can detach
+        * the thread
+        */
+       if (mono_domain_get ())
+               mono_thread_detach_internal (mono_thread_internal_current ());
+}
+
+gboolean
+mono_gc_register_thread (void *baseptr)
+{
+       return mono_thread_info_attach (baseptr) != NULL;
+}
+
+gboolean
+mono_gc_is_gc_thread (void)
+{
+       gboolean result;
+       LOCK_GC;
+       result = mono_thread_info_current () != NULL;
+       UNLOCK_GC;
+       return result;
+}
+
+void
+sgen_client_thread_register_worker (void)
+{
+       mono_thread_info_register_small_id ();
+}
+
+/* Variables holding start/end nursery so it won't have to be passed at every call */
+static void *scan_area_arg_start, *scan_area_arg_end;
+
+void
+mono_gc_conservatively_scan_area (void *start, void *end)
+{
+       sgen_conservatively_pin_objects_from (start, end, scan_area_arg_start, scan_area_arg_end, PIN_TYPE_STACK);
+}
+
+void*
+mono_gc_scan_object (void *obj, void *gc_data)
+{
+       ScanCopyContext *ctx = gc_data;
+       ctx->ops->copy_or_mark_object (&obj, ctx->queue);
+       return obj;
+}
+
+/*
+ * Mark from thread stacks and registers.
+ */
+void
+sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise, ScanCopyContext ctx)
+{
+       SgenThreadInfo *info;
+
+       scan_area_arg_start = start_nursery;
+       scan_area_arg_end = end_nursery;
+
+       FOREACH_THREAD (info) {
+               int skip_reason = 0;
+               if (info->client_info.skip) {
+                       SGEN_LOG (3, "Skipping dead thread %p, range: %p-%p, size: %zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start);
+                       skip_reason = 1;
+               } else if (info->client_info.gc_disabled) {
+                       SGEN_LOG (3, "GC disabled for thread %p, range: %p-%p, size: %zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start);
+                       skip_reason = 2;
+               } else if (!mono_thread_info_is_live (info)) {
+                       SGEN_LOG (3, "Skipping non-running thread %p, range: %p-%p, size: %zd (state %x)", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start, info->client_info.info.thread_state);
+                       skip_reason = 3;
+               }
+
+               binary_protocol_scan_stack ((gpointer)mono_thread_info_get_tid (info), info->client_info.stack_start, info->client_info.stack_end, skip_reason);
+
+               if (skip_reason)
+                       continue;
+
+               g_assert (info->client_info.suspend_done);
+               SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %zd, pinned=%zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start, sgen_get_pinned_count ());
+               if (mono_gc_get_gc_callbacks ()->thread_mark_func && !conservative_stack_mark) {
+                       mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, info->client_info.stack_start, info->client_info.stack_end, precise, &ctx);
+               } else if (!precise) {
+                       if (!conservative_stack_mark) {
+                               fprintf (stderr, "Precise stack mark not supported - disabling.\n");
+                               conservative_stack_mark = TRUE;
+                       }
+                       sgen_conservatively_pin_objects_from (info->client_info.stack_start, info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
+               }
+
+               if (!precise) {
+#ifdef USE_MONO_CTX
+                       sgen_conservatively_pin_objects_from ((void**)&info->client_info.ctx, (void**)&info->client_info.ctx + ARCH_NUM_REGS,
+                               start_nursery, end_nursery, PIN_TYPE_STACK);
+#else
+                       sgen_conservatively_pin_objects_from ((void**)&info->client_info.regs, (void**)&info->client_info.regs + ARCH_NUM_REGS,
+                                       start_nursery, end_nursery, PIN_TYPE_STACK);
+#endif
+               }
+       } END_FOREACH_THREAD
+}
+
+/*
+ * mono_gc_set_stack_end:
+ *
+ *   Set the end of the current threads stack to STACK_END. The stack space between 
+ * STACK_END and the real end of the threads stack will not be scanned during collections.
+ */
+void
+mono_gc_set_stack_end (void *stack_end)
+{
+       SgenThreadInfo *info;
+
+       LOCK_GC;
+       info = mono_thread_info_current ();
+       if (info) {
+               SGEN_ASSERT (0, stack_end < info->client_info.stack_end, "Can only lower stack end");
+               info->client_info.stack_end = stack_end;
+       }
+       UNLOCK_GC;
+}
+
+/*
+ * Roots
+ */
+
+int
+mono_gc_register_root (char *start, size_t size, void *descr)
+{
+       return sgen_register_root (start, size, descr, descr ? ROOT_TYPE_NORMAL : ROOT_TYPE_PINNED);
+}
+
+int
+mono_gc_register_root_wbarrier (char *start, size_t size, void *descr)
+{
+       return sgen_register_root (start, size, descr, ROOT_TYPE_WBARRIER);
+}
+
+void
+mono_gc_deregister_root (char* addr)
+{
+       sgen_deregister_root (addr);
+}
+
+/*
+ * Pthread intercept
+ */
+
+#if USE_PTHREAD_INTERCEPT
+
+int
+mono_gc_pthread_create (pthread_t *new_thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)
+{
+       return pthread_create (new_thread, attr, start_routine, arg);
+}
+
+int
+mono_gc_pthread_join (pthread_t thread, void **retval)
+{
+       return pthread_join (thread, retval);
+}
+
+int
+mono_gc_pthread_detach (pthread_t thread)
+{
+       return pthread_detach (thread);
+}
+
+void
+mono_gc_pthread_exit (void *retval) 
+{
+       mono_thread_info_detach ();
+       pthread_exit (retval);
+       g_assert_not_reached ();
+}
+
+#endif /* USE_PTHREAD_INTERCEPT */
+
+/*
+ * Miscellaneous
+ */
+
+void
+sgen_client_total_allocated_heap_changed (size_t allocated_heap)
+{
+       mono_runtime_resource_check_limit (MONO_RESOURCE_GC_HEAP, allocated_heap);
+}
+
+gboolean
+mono_gc_user_markers_supported (void)
+{
+       return TRUE;
+}
+
+gboolean
+mono_object_is_alive (MonoObject* o)
+{
+       return TRUE;
+}
+
+int
+mono_gc_get_generation (MonoObject *obj)
+{
+       if (sgen_ptr_in_nursery (obj))
+               return 0;
+       return 1;
+}
+
+void
+mono_gc_enable_events (void)
+{
+}
+
+const char *
+mono_gc_get_gc_name (void)
+{
+       return "sgen";
+}
+
+char*
+mono_gc_get_description (void)
+{
+       return g_strdup ("sgen");
+}
+
+void
+mono_gc_set_desktop_mode (void)
+{
+}
+
+gboolean
+mono_gc_is_moving (void)
+{
+       return TRUE;
+}
+
+gboolean
+mono_gc_is_disabled (void)
+{
+       return FALSE;
+}
+
+#ifdef HOST_WIN32
+BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved)
+{
+       return TRUE;
+}
+#endif
+
+int
+mono_gc_max_generation (void)
+{
+       return 1;
+}
+
+gboolean
+mono_gc_precise_stack_mark_enabled (void)
+{
+       return !conservative_stack_mark;
+}
+
+void
+mono_gc_collect (int generation)
+{
+       sgen_gc_collect (generation);
+}
+
+int
+mono_gc_collection_count (int generation)
+{
+       return sgen_gc_collection_count (generation);
+}
+
+int64_t
+mono_gc_get_used_size (void)
+{
+       return (int64_t)sgen_gc_get_used_size ();
+}
+
+int64_t
+mono_gc_get_heap_size (void)
+{
+       return (int64_t)sgen_gc_get_total_heap_allocation ();
+}
+
+void*
+mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker)
+{
+       return sgen_make_user_root_descriptor (marker);
+}
+
+void*
+mono_gc_make_descr_for_string (gsize *bitmap, int numbits)
+{
+       return (void*)SGEN_DESC_STRING;
+}
+
+void*
+mono_gc_get_nursery (int *shift_bits, size_t *size)
+{
+       *size = sgen_nursery_size;
+       *shift_bits = DEFAULT_NURSERY_BITS;
+       return sgen_get_nursery_start ();
+}
+
+int
+mono_gc_get_los_limit (void)
+{
+       return SGEN_MAX_SMALL_OBJ_SIZE;
+}
+
+void
+mono_gc_weak_link_add (void **link_addr, MonoObject *obj, gboolean track)
+{
+       sgen_register_disappearing_link (obj, link_addr, track, FALSE);
+}
+
+void
+mono_gc_weak_link_remove (void **link_addr, gboolean track)
+{
+       sgen_register_disappearing_link (NULL, link_addr, track, FALSE);
+}
+
+MonoObject*
+mono_gc_weak_link_get (void **link_addr)
+{
+       return sgen_weak_link_get (link_addr);
+}
+
+gboolean
+mono_gc_set_allow_synchronous_major (gboolean flag)
+{
+       return sgen_set_allow_synchronous_major (flag);
+}
+
+void*
+mono_gc_invoke_with_gc_lock (MonoGCLockedCallbackFunc func, void *data)
+{
+       void *result;
+       LOCK_INTERRUPTION;
+       result = func (data);
+       UNLOCK_INTERRUPTION;
+       return result;
+}
+
+void
+mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size)
+{
+       // FIXME:
+}
+
+void
+sgen_client_out_of_memory (size_t size)
+{
+       mono_gc_out_of_memory (size);
+}
+
+guint8*
+mono_gc_get_card_table (int *shift_bits, gpointer *mask)
+{
+       return sgen_get_card_table_configuration (shift_bits, mask);
+}
+
+gboolean
+mono_gc_card_table_nursery_check (void)
+{
+       return !sgen_get_major_collector ()->is_concurrent;
+}
+
+/* Negative value to remove */
+void
+mono_gc_add_memory_pressure (gint64 value)
+{
+       /* FIXME: Implement at some point? */
+}
+
+/*
+ * Logging
+ */
+
+void
+sgen_client_degraded_allocation (size_t size)
+{
+       static int last_major_gc_warned = -1;
+       static int num_degraded = 0;
+
+       if (last_major_gc_warned < gc_stats.major_gc_count) {
+               ++num_degraded;
+               if (num_degraded == 1 || num_degraded == 3)
+                       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Degraded allocation.  Consider increasing nursery-size if the warning persists.");
+               else if (num_degraded == 10)
+                       mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "Warning: Repeated degraded allocation.  Consider increasing nursery-size.");
+               last_major_gc_warned = gc_stats.major_gc_count;
+       }
+}
+
+void
+sgen_client_log_timing (GGTimingInfo *info, mword last_major_num_sections, mword last_los_memory_usage)
+{
+       SgenMajorCollector *major_collector = sgen_get_major_collector ();
+       mword num_major_sections = major_collector->get_num_major_sections ();
+       char full_timing_buff [1024];
+       full_timing_buff [0] = '\0';
+
+       if (!info->is_overflow)
+               sprintf (full_timing_buff, "total %.2fms, bridge %.2fms", info->stw_time / 10000.0f, (int)info->bridge_time / 10000.0f);
+       if (info->generation == GENERATION_OLD)
+               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) pause %.2fms, %s major %dK/%dK los %dK/%dK",
+                       info->is_overflow ? "_OVERFLOW" : "",
+                       info->reason ? info->reason : "",
+                       (int)info->total_time / 10000.0f,
+                       full_timing_buff,
+                       major_collector->section_size * num_major_sections / 1024,
+                       major_collector->section_size * last_major_num_sections / 1024,
+                       los_memory_usage / 1024,
+                       last_los_memory_usage / 1024);
+       else
+               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MINOR%s: (%s) pause %.2fms, %s promoted %dK major %dK los %dK",
+                               info->is_overflow ? "_OVERFLOW" : "",
+                       info->reason ? info->reason : "",
+                       (int)info->total_time / 10000.0f,
+                       full_timing_buff,
+                       (num_major_sections - last_major_num_sections) * major_collector->section_size / 1024,
+                       major_collector->section_size * num_major_sections / 1024,
+                       los_memory_usage / 1024);
+}
+
+/*
+ * Debugging
+ */
+
+const char*
+sgen_client_description_for_internal_mem_type (int type)
+{
+       switch (type) {
+       case INTERNAL_MEM_EPHEMERON_LINK: return "ephemeron-link";
+       default:
+               return NULL;
+       }
+}
+
+void
+sgen_client_pre_collection_checks (void)
+{
+       if (sgen_mono_xdomain_checks) {
+               sgen_clear_nursery_fragments ();
+               sgen_check_for_xdomain_refs ();
+       }
+}
+
+gboolean
+sgen_client_vtable_is_inited (GCVTable *gc_vtable)
+{
+       MonoVTable *vt = (MonoVTable*)gc_vtable;
+       return vt->klass->inited;
+}
+
+const char*
+sgen_client_vtable_get_namespace (GCVTable *gc_vtable)
+{
+       MonoVTable *vt = (MonoVTable*)gc_vtable;
+       return vt->klass->name_space;
+}
+
+const char*
+sgen_client_vtable_get_name (GCVTable *gc_vtable)
+{
+       MonoVTable *vt = (MonoVTable*)gc_vtable;
+       return vt->klass->name;
+}
+
+/*
+ * Initialization
+ */
+
+void
+sgen_client_init (void)
+{
+       int dummy;
+       MonoThreadInfoCallbacks cb;
+
+       cb.thread_register = sgen_thread_register;
+       cb.thread_detach = sgen_thread_detach;
+       cb.thread_unregister = sgen_thread_unregister;
+       cb.thread_attach = sgen_thread_attach;
+       cb.mono_method_is_critical = (gpointer)is_critical_method;
+       cb.mono_thread_in_critical_region = thread_in_critical_region;
+#ifndef HOST_WIN32
+       cb.thread_exit = mono_gc_pthread_exit;
+       cb.mono_gc_pthread_create = (gpointer)mono_gc_pthread_create;
+#endif
+
+       mono_threads_init (&cb, sizeof (SgenThreadInfo));
+
+       ///* Keep this the default for now */
+       /* Precise marking is broken on all supported targets. Disable until fixed. */
+       conservative_stack_mark = TRUE;
+
+       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_EPHEMERON_LINK, sizeof (EphemeronLinkNode));
+
+       mono_sgen_init_stw ();
+
+#ifndef HAVE_KW_THREAD
+       mono_native_tls_alloc (&thread_info_key, NULL);
+#if defined(__APPLE__) || defined (HOST_WIN32)
+       /* 
+        * CEE_MONO_TLS requires the tls offset, not the key, so the code below only works on darwin,
+        * where the two are the same.
+        */
+       mono_tls_key_set_offset (TLS_KEY_SGEN_THREAD_INFO, thread_info_key);
+#endif
+#else
+       {
+               int tls_offset = -1;
+               MONO_THREAD_VAR_OFFSET (sgen_thread_info, tls_offset);
+               mono_tls_key_set_offset (TLS_KEY_SGEN_THREAD_INFO, tls_offset);
+       }
+#endif
+
+       /*
+        * This needs to happen before any internal allocations because
+        * it inits the small id which is required for hazard pointer
+        * operations.
+        */
+       sgen_os_init ();
+
+       mono_gc_register_thread (&dummy);
+}
+
+gboolean
+sgen_client_handle_gc_param (const char *opt)
+{
+       if (g_str_has_prefix (opt, "stack-mark=")) {
+               opt = strchr (opt, '=') + 1;
+               if (!strcmp (opt, "precise")) {
+                       conservative_stack_mark = FALSE;
+               } else if (!strcmp (opt, "conservative")) {
+                       conservative_stack_mark = TRUE;
+               } else {
+                       sgen_env_var_error (MONO_GC_PARAMS_NAME, conservative_stack_mark ? "Using `conservative`." : "Using `precise`.",
+                                       "Invalid value `%s` for `stack-mark` option, possible values are: `precise`, `conservative`.", opt);
+               }
+       } else if (g_str_has_prefix (opt, "bridge-implementation=")) {
+               opt = strchr (opt, '=') + 1;
+               sgen_set_bridge_implementation (opt);
+       } else if (g_str_has_prefix (opt, "toggleref-test")) {
+               /* FIXME: This should probably in MONO_GC_DEBUG */
+               sgen_register_test_toggleref_callback ();
+       } else {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+void
+sgen_client_print_gc_params_usage (void)
+{
+       fprintf (stderr, "  stack-mark=MARK-METHOD (where MARK-METHOD is 'precise' or 'conservative')\n");
+}
+
+gboolean
+sgen_client_handle_gc_debug (const char *opt)
+{
+       if (!strcmp (opt, "xdomain-checks")) {
+               sgen_mono_xdomain_checks = TRUE;
+       } else if (!strcmp (opt, "do-not-finalize")) {
+               do_not_finalize = TRUE;
+       } else if (!strcmp (opt, "log-finalizers")) {
+               log_finalizers = TRUE;
+       } else if (!strcmp (opt, "no-managed-allocator")) {
+               sgen_set_use_managed_allocator (FALSE);
+       } else if (!sgen_bridge_handle_gc_debug (opt)) {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+void
+sgen_client_print_gc_debug_usage (void)
+{
+       fprintf (stderr, "  xdomain-checks\n");
+       fprintf (stderr, "  do-not-finalize\n");
+       fprintf (stderr, "  log-finalizers\n");
+       fprintf (stderr, "  no-managed-allocator\n");
+       sgen_bridge_print_gc_debug_usage ();
+}
+
+
+gpointer
+sgen_client_get_provenance (void)
+{
+#ifdef SGEN_OBJECT_PROVENANCE
+       MonoGCCallbacks *cb = mono_gc_get_gc_callbacks ();
+       gpointer (*get_provenance_func) (void);
+       if (!cb)
+               return NULL;
+       get_provenance_func = cb->get_provenance_func;
+       if (get_provenance_func)
+               return get_provenance_func ();
+       return NULL;
+#else
+       return NULL;
+#endif
+}
+
+void
+sgen_client_describe_invalid_pointer (GCObject *ptr)
+{
+       sgen_bridge_describe_pointer (ptr);
+}
+
+void
+mono_gc_base_init (void)
+{
+       mono_counters_init ();
+
+       sgen_gc_init ();
+
+       if (nursery_canaries_enabled ())
+               sgen_set_use_managed_allocator (FALSE);
+}
+
+#endif
index a8bf84acc02b0f064b446e1a46d2361703901518..38997535e5e8190619825563aded2e78580cceda 100644 (file)
 #include <stdlib.h>
 #include <errno.h>
 
-#include "sgen-gc.h"
-#include "sgen-bridge.h"
-#include "sgen-hash-table.h"
-#include "sgen-qsort.h"
+#include "sgen/sgen-gc.h"
+#include "sgen-bridge-internal.h"
+#include "sgen/sgen-hash-table.h"
+#include "sgen/sgen-qsort.h"
+#include "sgen/sgen-client.h"
 #include "tabledefs.h"
 #include "utils/mono-logger-internal.h"
-#include "utils/mono-time.h"
-#include "utils/mono-compiler.h"
 
 //#define NEW_XREFS
 #ifdef NEW_XREFS
@@ -626,7 +625,7 @@ static int dfs1_passes, dfs2_passes;
 
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)    do {                                    \
-               MonoObject *dst = (MonoObject*)*(ptr);                  \
+               GCObject *dst = (GCObject*)*(ptr);                      \
                if (dst && object_needs_expansion (&dst)) {                     \
                        ++num_links;                                    \
                        dyn_array_ptr_push (&dfs_stack, obj_entry);     \
@@ -673,7 +672,7 @@ dfs1 (HashEntry *obj_entry)
                                dyn_array_ptr_push (&dfs_stack, obj_entry);
                                dyn_array_ptr_push (&dfs_stack, NULL);
 
-#include "sgen-scan-object.h"
+#include "sgen/sgen-scan-object.h"
 
                                /*
                                 * We can remove non-bridge objects with a single outgoing
@@ -974,7 +973,7 @@ static int fist_pass_links, second_pass_links, sccs_links;
 static int max_sccs_links = 0;
 
 static void
-register_finalized_object (MonoObject *obj)
+register_finalized_object (GCObject *obj)
 {
        g_assert (sgen_need_bridge_processing ());
        dyn_array_ptr_push (&registered_bridges, obj);
@@ -1325,12 +1324,14 @@ processing_after_callback (int generation)
 
        if (bridge_accounting_enabled) {
                for (i = 0; i < num_sccs; ++i) {
-                       for (j = 0; j < api_sccs [i]->num_objs; ++j)
+                       for (j = 0; j < api_sccs [i]->num_objs; ++j) {
+                               GCVTable *vtable = SGEN_LOAD_VTABLE (api_sccs [i]->objs [j]);
                                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC,
                                        "OBJECT %s (%p) SCC [%d] %s",
-                                               sgen_safe_name (api_sccs [i]->objs [j]), api_sccs [i]->objs [j],
+                                               sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable), api_sccs [i]->objs [j],
                                                i,
                                                api_sccs [i]->is_alive  ? "ALIVE" : "DEAD");
+                       }
                }
        }
 
@@ -1351,7 +1352,7 @@ processing_after_callback (int generation)
 }
 
 static void
-describe_pointer (MonoObject *obj)
+describe_pointer (GCObject *obj)
 {
        HashEntry *entry;
        int i;
diff --git a/mono/metadata/sgen-nursery-allocator.c b/mono/metadata/sgen-nursery-allocator.c
deleted file mode 100644 (file)
index aa570ad..0000000
+++ /dev/null
@@ -1,956 +0,0 @@
-/*
- * sgen-nursery-allocator.c: Nursery allocation code.
- *
- * Copyright 2009-2010 Novell, Inc.
- *           2011 Rodrigo Kumpera
- * 
- * Copyright 2011 Xamarin Inc  (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * The young generation is divided into fragments. This is because
- * we can hand one fragments to a thread for lock-less fast alloc and
- * because the young generation ends up fragmented anyway by pinned objects.
- * Once a collection is done, a list of fragments is created. When doing
- * thread local alloc we use smallish nurseries so we allow new threads to
- * allocate memory from gen0 without triggering a collection. Threads that
- * are found to allocate lots of memory are given bigger fragments. This
- * should make the finalizer thread use little nursery memory after a while.
- * We should start assigning threads very small fragments: if there are many
- * threads the nursery will be full of reserved space that the threads may not
- * use at all, slowing down allocation speed.
- * Thread local allocation is done from areas of memory Hotspot calls Thread Local 
- * Allocation Buffers (TLABs).
- */
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-#ifdef HAVE_SEMAPHORE_H
-#include <semaphore.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#ifdef __MACH__
-#undef _XOPEN_SOURCE
-#endif
-#ifdef __MACH__
-#define _XOPEN_SOURCE
-#endif
-
-#include "metadata/sgen-gc.h"
-#include "metadata/metadata-internals.h"
-#include "metadata/class-internals.h"
-#include "metadata/gc-internal.h"
-#include "metadata/object-internals.h"
-#include "metadata/threads.h"
-#include "metadata/sgen-cardtable.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-archdep.h"
-#include "metadata/sgen-bridge.h"
-#include "metadata/sgen-memory-governor.h"
-#include "metadata/sgen-pinning.h"
-#include "metadata/mono-gc.h"
-#include "metadata/method-builder.h"
-#include "metadata/profiler-private.h"
-#include "metadata/monitor.h"
-#include "metadata/threadpool-internals.h"
-#include "metadata/mempool-internals.h"
-#include "metadata/marshal.h"
-#include "utils/mono-mmap.h"
-#include "utils/mono-time.h"
-#include "utils/mono-semaphore.h"
-#include "utils/mono-counters.h"
-#include "utils/mono-proclib.h"
-#include "utils/mono-threads.h"
-
-/* Enable it so nursery allocation diagnostic data is collected */
-//#define NALLOC_DEBUG 1
-
-/* The mutator allocs from here. */
-SgenFragmentAllocator mutator_allocator;
-
-/* freeelist of fragment structures */
-static SgenFragment *fragment_freelist = NULL;
-
-/* Allocator cursors */
-static char *nursery_last_pinned_end = NULL;
-
-char *sgen_nursery_start;
-char *sgen_nursery_end;
-
-#ifdef USER_CONFIG
-size_t sgen_nursery_size = (1 << 22);
-int sgen_nursery_bits = 22;
-#endif
-
-char *sgen_space_bitmap;
-size_t sgen_space_bitmap_size;
-
-#ifdef HEAVY_STATISTICS
-
-static gint32 stat_wasted_bytes_trailer = 0;
-static gint32 stat_wasted_bytes_small_areas = 0;
-static gint32 stat_wasted_bytes_discarded_fragments = 0;
-static gint32 stat_nursery_alloc_requests = 0;
-static gint32 stat_alloc_iterations = 0;
-static gint32 stat_alloc_retries = 0;
-
-static gint32 stat_nursery_alloc_range_requests = 0;
-static gint32 stat_alloc_range_iterations = 0;
-static gint32 stat_alloc_range_retries = 0;
-
-#endif
-
-/************************************Nursery allocation debugging *********************************************/
-
-#ifdef NALLOC_DEBUG
-
-enum {
-       FIXED_ALLOC = 1,
-       RANGE_ALLOC,
-       PINNING,
-       BLOCK_ZEROING,
-       CLEAR_NURSERY_FRAGS
-};
-
-typedef struct {
-       char *address;
-       size_t size;
-       int reason;
-       int seq;
-       MonoNativeThreadId tid;
-} AllocRecord;
-
-#define ALLOC_RECORD_COUNT 128000
-
-
-static AllocRecord *alloc_records;
-static volatile int next_record;
-static volatile int alloc_count;
-
-void dump_alloc_records (void);
-void verify_alloc_records (void);
-
-static const char*
-get_reason_name (AllocRecord *rec)
-{
-       switch (rec->reason) {
-       case FIXED_ALLOC: return "fixed-alloc";
-       case RANGE_ALLOC: return "range-alloc";
-       case PINNING: return "pinning";
-       case BLOCK_ZEROING: return "block-zeroing";
-       case CLEAR_NURSERY_FRAGS: return "clear-nursery-frag";
-       default: return "invalid";
-       }
-}
-
-static void
-reset_alloc_records (void)
-{
-       next_record = 0;
-       alloc_count = 0;
-}
-
-static void
-add_alloc_record (char *addr, size_t size, int reason)
-{
-       int idx = InterlockedIncrement (&next_record) - 1;
-       alloc_records [idx].address = addr;
-       alloc_records [idx].size = size;
-       alloc_records [idx].reason = reason;
-       alloc_records [idx].seq = idx;
-       alloc_records [idx].tid = mono_native_thread_id_get ();
-}
-
-static int
-comp_alloc_record (const void *_a, const void *_b)
-{
-       const AllocRecord *a = _a;
-       const AllocRecord *b = _b;
-       if (a->address == b->address)
-               return a->seq - b->seq;
-       return a->address - b->address;
-}
-
-#define rec_end(REC) ((REC)->address + (REC)->size)
-
-void
-dump_alloc_records (void)
-{
-       int i;
-       sgen_qsort (alloc_records, next_record, sizeof (AllocRecord), comp_alloc_record);
-
-       printf ("------------------------------------DUMP RECORDS----------------------------\n");
-       for (i = 0; i < next_record; ++i) {
-               AllocRecord *rec = alloc_records + i;
-               printf ("obj [%p, %p] size %d reason %s seq %d tid %x\n", rec->address, rec_end (rec), (int)rec->size, get_reason_name (rec), rec->seq, (size_t)rec->tid);
-       }
-}
-
-void
-verify_alloc_records (void)
-{
-       int i;
-       int total = 0;
-       int holes = 0;
-       int max_hole = 0;
-       AllocRecord *prev = NULL;
-
-       sgen_qsort (alloc_records, next_record, sizeof (AllocRecord), comp_alloc_record);
-       printf ("------------------------------------DUMP RECORDS- %d %d---------------------------\n", next_record, alloc_count);
-       for (i = 0; i < next_record; ++i) {
-               AllocRecord *rec = alloc_records + i;
-               int hole_size = 0;
-               total += rec->size;
-               if (prev) {
-                       if (rec_end (prev) > rec->address)
-                               printf ("WE GOT OVERLAPPING objects %p and %p\n", prev->address, rec->address);
-                       if ((rec->address - rec_end (prev)) >= 8)
-                               ++holes;
-                       hole_size = rec->address - rec_end (prev);
-                       max_hole = MAX (max_hole, hole_size);
-               }
-               printf ("obj [%p, %p] size %d hole to prev %d reason %s seq %d tid %zx\n", rec->address, rec_end (rec), (int)rec->size, hole_size, get_reason_name (rec), rec->seq, (size_t)rec->tid);
-               prev = rec;
-       }
-       printf ("SUMMARY total alloc'd %d holes %d max_hole %d\n", total, holes, max_hole);
-}
-
-#endif
-
-/*********************************************************************************/
-
-
-static inline gpointer
-mask (gpointer n, uintptr_t bit)
-{
-       return (gpointer)(((uintptr_t)n) | bit);
-}
-
-static inline gpointer
-unmask (gpointer p)
-{
-       return (gpointer)((uintptr_t)p & ~(uintptr_t)0x3);
-}
-
-static inline uintptr_t
-get_mark (gpointer n)
-{
-       return (uintptr_t)n & 0x1;
-}
-
-/*MUST be called with world stopped*/
-SgenFragment*
-sgen_fragment_allocator_alloc (void)
-{
-       SgenFragment *frag = fragment_freelist;
-       if (frag) {
-               fragment_freelist = frag->next_in_order;
-               frag->next = frag->next_in_order = NULL;
-               return frag;
-       }
-       frag = sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
-       frag->next = frag->next_in_order = NULL;
-       return frag;
-}
-
-void
-sgen_fragment_allocator_add (SgenFragmentAllocator *allocator, char *start, char *end)
-{
-       SgenFragment *fragment;
-
-       fragment = sgen_fragment_allocator_alloc ();
-       fragment->fragment_start = start;
-       fragment->fragment_next = start;
-       fragment->fragment_end = end;
-       fragment->next_in_order = fragment->next = unmask (allocator->region_head);
-
-       allocator->region_head = allocator->alloc_head = fragment;
-       g_assert (fragment->fragment_end > fragment->fragment_start);
-}
-
-void
-sgen_fragment_allocator_release (SgenFragmentAllocator *allocator)
-{
-       SgenFragment *last = allocator->region_head;
-       if (!last)
-               return;
-
-       /* Find the last fragment in insert order */
-       for (; last->next_in_order; last = last->next_in_order) ;
-
-       last->next_in_order = fragment_freelist;
-       fragment_freelist = allocator->region_head;
-       allocator->alloc_head = allocator->region_head = NULL;
-}
-
-static SgenFragment**
-find_previous_pointer_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag)
-{
-       SgenFragment **prev;
-       SgenFragment *cur, *next;
-#ifdef NALLOC_DEBUG
-       int count = 0;
-#endif
-
-try_again:
-       prev = &allocator->alloc_head;
-#ifdef NALLOC_DEBUG
-       if (count++ > 5)
-               printf ("retry count for fppf is %d\n", count);
-#endif
-
-       cur = unmask (*prev);
-
-       while (1) {
-               if (cur == NULL)
-                       return NULL;
-               next = cur->next;
-
-               /*
-                * We need to make sure that we dereference prev below
-                * after reading cur->next above, so we need a read
-                * barrier.
-                */
-               mono_memory_read_barrier ();
-
-               if (*prev != cur)
-                       goto try_again;
-
-               if (!get_mark (next)) {
-                       if (cur == frag)
-                               return prev;
-                       prev = &cur->next;
-               } else {
-                       next = unmask (next);
-                       if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) != cur)
-                               goto try_again;
-                       /*we must make sure that the next from cur->next happens after*/
-                       mono_memory_write_barrier ();
-               }
-
-               cur = mono_lls_pointer_unmask (next);
-       }
-       return NULL;
-}
-
-static gboolean
-claim_remaining_size (SgenFragment *frag, char *alloc_end)
-{
-       /* All space used, nothing to claim. */
-       if (frag->fragment_end <= alloc_end)
-               return FALSE;
-
-       /* Try to alloc all the remaining space. */
-       return InterlockedCompareExchangePointer ((volatile gpointer*)&frag->fragment_next, frag->fragment_end, alloc_end) == alloc_end;
-}
-
-static void*
-par_alloc_from_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag, size_t size)
-{
-       char *p = frag->fragment_next;
-       char *end = p + size;
-
-       if (end > frag->fragment_end)
-               return NULL;
-
-       /* p = frag->fragment_next must happen before */
-       mono_memory_barrier ();
-
-       if (InterlockedCompareExchangePointer ((volatile gpointer*)&frag->fragment_next, end, p) != p)
-               return NULL;
-
-       if (frag->fragment_end - end < SGEN_MAX_NURSERY_WASTE) {
-               SgenFragment *next, **prev_ptr;
-               
-               /*
-                * Before we clean the remaining nursery, we must claim the remaining space
-                * as it could end up been used by the range allocator since it can end up
-                * allocating from this dying fragment as it doesn't respect SGEN_MAX_NURSERY_WASTE
-                * when doing second chance allocation.
-                */
-               if ((sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION || sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION_DEBUG) && claim_remaining_size (frag, end)) {
-                       sgen_clear_range (end, frag->fragment_end);
-                       HEAVY_STAT (InterlockedExchangeAdd (&stat_wasted_bytes_trailer, frag->fragment_end - end));
-#ifdef NALLOC_DEBUG
-                       add_alloc_record (end, frag->fragment_end - end, BLOCK_ZEROING);
-#endif
-               }
-
-               prev_ptr = find_previous_pointer_fragment (allocator, frag);
-
-               /*Use Michaels linked list remove*/
-
-               /*prev_ptr will be null if the fragment was removed concurrently */
-               while (prev_ptr) {
-                       next = frag->next;
-
-                       /*already deleted*/
-                       if (!get_mark (next)) {
-                               /*frag->next read must happen before the first CAS*/
-                               mono_memory_write_barrier ();
-
-                               /*Fail if the next node is removed concurrently and its CAS wins */
-                               if (InterlockedCompareExchangePointer ((volatile gpointer*)&frag->next, mask (next, 1), next) != next) {
-                                       continue;
-                               }
-                       }
-
-                       /* The second CAS must happen after the first CAS or frag->next. */
-                       mono_memory_write_barrier ();
-
-                       /* Fail if the previous node was deleted and its CAS wins */
-                       if (InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, unmask (next), frag) != frag) {
-                               prev_ptr = find_previous_pointer_fragment (allocator, frag);
-                               continue;
-                       }
-                       break;
-               }
-       }
-
-       return p;
-}
-
-static void*
-serial_alloc_from_fragment (SgenFragment **previous, SgenFragment *frag, size_t size)
-{
-       char *p = frag->fragment_next;
-       char *end = p + size;
-
-       if (end > frag->fragment_end)
-               return NULL;
-
-       frag->fragment_next = end;
-
-       if (frag->fragment_end - end < SGEN_MAX_NURSERY_WASTE) {
-               *previous = frag->next;
-               
-               /* Clear the remaining space, pinning depends on this. FIXME move this to use phony arrays */
-               memset (end, 0, frag->fragment_end - end);
-
-               *previous = frag->next;
-       }
-
-       return p;
-}
-
-void*
-sgen_fragment_allocator_par_alloc (SgenFragmentAllocator *allocator, size_t size)
-{
-       SgenFragment *frag;
-
-#ifdef NALLOC_DEBUG
-       InterlockedIncrement (&alloc_count);
-#endif
-
-restart:
-       for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) {
-               HEAVY_STAT (InterlockedIncrement (&stat_alloc_iterations));
-
-               if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) {
-                       void *p = par_alloc_from_fragment (allocator, frag, size);
-                       if (!p) {
-                               HEAVY_STAT (InterlockedIncrement (&stat_alloc_retries));
-                               goto restart;
-                       }
-#ifdef NALLOC_DEBUG
-                       add_alloc_record (p, size, FIXED_ALLOC);
-#endif
-                       return p;
-               }
-       }
-       return NULL;
-}
-
-void*
-sgen_fragment_allocator_serial_alloc (SgenFragmentAllocator *allocator, size_t size)
-{
-       SgenFragment *frag;
-       SgenFragment **previous;
-#ifdef NALLOC_DEBUG
-       InterlockedIncrement (&alloc_count);
-#endif
-
-       previous = &allocator->alloc_head;
-
-       for (frag = *previous; frag; frag = *previous) {
-               char *p = serial_alloc_from_fragment (previous, frag, size);
-
-               HEAVY_STAT (InterlockedIncrement (&stat_alloc_iterations));
-
-               if (p) {
-#ifdef NALLOC_DEBUG
-                       add_alloc_record (p, size, FIXED_ALLOC);
-#endif
-                       return p;
-               }
-               previous = &frag->next;
-       }
-       return NULL;
-}
-
-void*
-sgen_fragment_allocator_serial_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size)
-{
-       SgenFragment *frag, **previous, *min_frag = NULL, **prev_min_frag = NULL;
-       size_t current_minimum = minimum_size;
-
-#ifdef NALLOC_DEBUG
-       InterlockedIncrement (&alloc_count);
-#endif
-
-       previous = &allocator->alloc_head;
-
-       for (frag = *previous; frag; frag = *previous) {
-               size_t frag_size = frag->fragment_end - frag->fragment_next;
-
-               HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_iterations));
-
-               if (desired_size <= frag_size) {
-                       void *p;
-                       *out_alloc_size = desired_size;
-
-                       p = serial_alloc_from_fragment (previous, frag, desired_size);
-#ifdef NALLOC_DEBUG
-                       add_alloc_record (p, desired_size, RANGE_ALLOC);
-#endif
-                       return p;
-               }
-               if (current_minimum <= frag_size) {
-                       min_frag = frag;
-                       prev_min_frag = previous;
-                       current_minimum = frag_size;
-               }
-               previous = &frag->next;
-       }
-
-       if (min_frag) {
-               void *p;
-               size_t frag_size = min_frag->fragment_end - min_frag->fragment_next;
-               *out_alloc_size = frag_size;
-
-               p = serial_alloc_from_fragment (prev_min_frag, min_frag, frag_size);
-
-#ifdef NALLOC_DEBUG
-               add_alloc_record (p, frag_size, RANGE_ALLOC);
-#endif
-               return p;
-       }
-
-       return NULL;
-}
-
-void*
-sgen_fragment_allocator_par_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size)
-{
-       SgenFragment *frag, *min_frag;
-       size_t current_minimum;
-
-restart:
-       min_frag = NULL;
-       current_minimum = minimum_size;
-
-#ifdef NALLOC_DEBUG
-       InterlockedIncrement (&alloc_count);
-#endif
-
-       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
-               size_t frag_size = frag->fragment_end - frag->fragment_next;
-
-               HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_iterations));
-
-               if (desired_size <= frag_size) {
-                       void *p;
-                       *out_alloc_size = desired_size;
-
-                       p = par_alloc_from_fragment (allocator, frag, desired_size);
-                       if (!p) {
-                               HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_retries));
-                               goto restart;
-                       }
-#ifdef NALLOC_DEBUG
-                       add_alloc_record (p, desired_size, RANGE_ALLOC);
-#endif
-                       return p;
-               }
-               if (current_minimum <= frag_size) {
-                       min_frag = frag;
-                       current_minimum = frag_size;
-               }
-       }
-
-       /* The second fragment_next read should be ordered in respect to the first code block */
-       mono_memory_barrier ();
-
-       if (min_frag) {
-               void *p;
-               size_t frag_size;
-
-               frag_size = min_frag->fragment_end - min_frag->fragment_next;
-               if (frag_size < minimum_size)
-                       goto restart;
-
-               *out_alloc_size = frag_size;
-
-               mono_memory_barrier ();
-               p = par_alloc_from_fragment (allocator, min_frag, frag_size);
-
-               /*XXX restarting here is quite dubious given this is already second chance allocation. */
-               if (!p) {
-                       HEAVY_STAT (InterlockedIncrement (&stat_alloc_retries));
-                       goto restart;
-               }
-#ifdef NALLOC_DEBUG
-               add_alloc_record (p, frag_size, RANGE_ALLOC);
-#endif
-               return p;
-       }
-
-       return NULL;
-}
-
-void
-sgen_clear_allocator_fragments (SgenFragmentAllocator *allocator)
-{
-       SgenFragment *frag;
-
-       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
-               SGEN_LOG (4, "Clear nursery frag %p-%p", frag->fragment_next, frag->fragment_end);
-               sgen_clear_range (frag->fragment_next, frag->fragment_end);
-#ifdef NALLOC_DEBUG
-               add_alloc_record (frag->fragment_next, frag->fragment_end - frag->fragment_next, CLEAR_NURSERY_FRAGS);
-#endif
-       }       
-}
-
-/* Clear all remaining nursery fragments */
-void
-sgen_clear_nursery_fragments (void)
-{
-       if (sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION || sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION_DEBUG) {
-               sgen_clear_allocator_fragments (&mutator_allocator);
-               sgen_minor_collector.clear_fragments ();
-       }
-}
-
-/*
- * Mark a given range of memory as invalid.
- *
- * This can be done either by zeroing memory or by placing
- * a phony byte[] array. This keeps the heap forward walkable.
- *
- * This function ignores calls with a zero range, even if
- * both start and end are NULL.
- */
-void
-sgen_clear_range (char *start, char *end)
-{
-       MonoArray *o;
-       size_t size = end - start;
-
-       if ((start && !end) || (start > end))
-               g_error ("Invalid range [%p %p]", start, end);
-
-       if (size < sizeof (MonoArray)) {
-               memset (start, 0, size);
-               return;
-       }
-
-       o = (MonoArray*)start;
-       o->obj.vtable = sgen_get_array_fill_vtable ();
-       /* Mark this as not a real object */
-       o->obj.synchronisation = GINT_TO_POINTER (-1);
-       o->bounds = NULL;
-       o->max_length = (mono_array_size_t)(size - sizeof (MonoArray));
-       sgen_set_nursery_scan_start (start);
-       g_assert (start + sgen_safe_object_get_size ((MonoObject*)o) == end);
-}
-
-void
-sgen_nursery_allocator_prepare_for_pinning (void)
-{
-       sgen_clear_allocator_fragments (&mutator_allocator);
-       sgen_minor_collector.clear_fragments ();
-}
-
-static mword fragment_total = 0;
-/*
- * We found a fragment of free memory in the nursery: memzero it and if
- * it is big enough, add it to the list of fragments that can be used for
- * allocation.
- */
-static void
-add_nursery_frag (SgenFragmentAllocator *allocator, size_t frag_size, char* frag_start, char* frag_end)
-{
-       SGEN_LOG (4, "Found empty fragment: %p-%p, size: %zd", frag_start, frag_end, frag_size);
-       binary_protocol_empty (frag_start, frag_size);
-       MONO_GC_NURSERY_SWEPT ((mword)frag_start, frag_end - frag_start);
-       /* Not worth dealing with smaller fragments: need to tune */
-       if (frag_size >= SGEN_MAX_NURSERY_WASTE) {
-               /* memsetting just the first chunk start is bound to provide better cache locality */
-               if (sgen_get_nursery_clear_policy () == CLEAR_AT_GC)
-                       memset (frag_start, 0, frag_size);
-               else if (sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION_DEBUG)
-                       memset (frag_start, 0xff, frag_size);
-
-#ifdef NALLOC_DEBUG
-               /* XXX convert this into a flight record entry
-               printf ("\tfragment [%p %p] size %zd\n", frag_start, frag_end, frag_size);
-               */
-#endif
-               sgen_fragment_allocator_add (allocator, frag_start, frag_end);
-               fragment_total += frag_size;
-       } else {
-               /* Clear unused fragments, pinning depends on this */
-               sgen_clear_range (frag_start, frag_end);
-               HEAVY_STAT (InterlockedExchangeAdd (&stat_wasted_bytes_small_areas, frag_size));
-       }
-}
-
-static void
-fragment_list_reverse (SgenFragmentAllocator *allocator)
-{
-       SgenFragment *prev = NULL, *list = allocator->region_head;
-       while (list) {
-               SgenFragment *next = list->next;
-               list->next = prev;
-               list->next_in_order = prev;
-               prev = list;
-               list = next;
-       }
-
-       allocator->region_head = allocator->alloc_head = prev;
-}
-
-mword
-sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpin_queue)
-{
-       char *frag_start, *frag_end;
-       size_t frag_size;
-       SgenFragment *frags_ranges;
-       void **pin_start, **pin_entry, **pin_end;
-
-#ifdef NALLOC_DEBUG
-       reset_alloc_records ();
-#endif
-       /*The mutator fragments are done. We no longer need them. */
-       sgen_fragment_allocator_release (&mutator_allocator);
-
-       frag_start = sgen_nursery_start;
-       fragment_total = 0;
-
-       /* The current nursery might give us a fragment list to exclude [start, next[*/
-       frags_ranges = sgen_minor_collector.build_fragments_get_exclude_head ();
-
-       /* clear scan starts */
-       memset (nursery_section->scan_starts, 0, nursery_section->num_scan_start * sizeof (gpointer));
-
-       pin_start = pin_entry = sgen_pinning_get_entry (nursery_section->pin_queue_first_entry);
-       pin_end = sgen_pinning_get_entry (nursery_section->pin_queue_last_entry);
-
-       while (pin_entry < pin_end || frags_ranges) {
-               char *addr0, *addr1;
-               size_t size;
-
-               addr0 = addr1 = sgen_nursery_end;
-               if (pin_entry < pin_end)
-                       addr0 = *pin_entry;
-               if (frags_ranges)
-                       addr1 = frags_ranges->fragment_start;
-
-               if (addr0 < addr1) {
-                       if (unpin_queue)
-                               GRAY_OBJECT_ENQUEUE (unpin_queue, addr0, sgen_obj_get_descriptor_safe (addr0));
-                       else
-                               SGEN_UNPIN_OBJECT (addr0);
-                       size = SGEN_ALIGN_UP (sgen_safe_object_get_size ((MonoObject*)addr0));
-                       CANARIFY_SIZE (size);
-                       sgen_set_nursery_scan_start (addr0);
-                       frag_end = addr0;
-                       ++pin_entry;
-               } else {
-                       frag_end = addr1;
-                       size = frags_ranges->fragment_next - addr1;
-                       frags_ranges = frags_ranges->next_in_order;
-               }
-
-               frag_size = frag_end - frag_start;
-
-               if (size == 0)
-                       continue;
-
-               g_assert (frag_size >= 0);
-               g_assert (size > 0);
-               if (frag_size && size)
-                       add_nursery_frag (&mutator_allocator, frag_size, frag_start, frag_end); 
-
-               frag_size = size;
-#ifdef NALLOC_DEBUG
-               add_alloc_record (*pin_entry, frag_size, PINNING);
-#endif
-               frag_start = frag_end + frag_size;
-       }
-
-       nursery_last_pinned_end = frag_start;
-       frag_end = sgen_nursery_end;
-       frag_size = frag_end - frag_start;
-       if (frag_size)
-               add_nursery_frag (&mutator_allocator, frag_size, frag_start, frag_end);
-
-       /* Now it's safe to release the fragments exclude list. */
-       sgen_minor_collector.build_fragments_release_exclude_head ();
-
-       /* First we reorder the fragment list to be in ascending address order. This makes H/W prefetchers happier. */
-       fragment_list_reverse (&mutator_allocator);
-
-       /*The collector might want to do something with the final nursery fragment list.*/
-       sgen_minor_collector.build_fragments_finish (&mutator_allocator);
-
-       if (!unmask (mutator_allocator.alloc_head)) {
-               SGEN_LOG (1, "Nursery fully pinned");
-               for (pin_entry = pin_start; pin_entry < pin_end; ++pin_entry) {
-                       void *p = *pin_entry;
-                       SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", p, sgen_safe_name (p), sgen_safe_object_get_size (p));
-               }
-       }
-       return fragment_total;
-}
-
-char *
-sgen_nursery_alloc_get_upper_alloc_bound (void)
-{
-       /*FIXME we need to calculate the collector upper bound as well, but this must be done in the previous GC. */
-       return sgen_nursery_end;
-}
-
-/*** Nursery memory allocation ***/
-void
-sgen_nursery_retire_region (void *address, ptrdiff_t size)
-{
-       HEAVY_STAT (InterlockedExchangeAdd (&stat_wasted_bytes_discarded_fragments, size));
-}
-
-gboolean
-sgen_can_alloc_size (size_t size)
-{
-       SgenFragment *frag;
-
-       if (!SGEN_CAN_ALIGN_UP (size))
-               return FALSE;
-
-       size = SGEN_ALIGN_UP (size);
-
-       for (frag = unmask (mutator_allocator.alloc_head); frag; frag = unmask (frag->next)) {
-               if ((size_t)(frag->fragment_end - frag->fragment_next) >= size)
-                       return TRUE;
-       }
-       return FALSE;
-}
-
-void*
-sgen_nursery_alloc (size_t size)
-{
-       SGEN_ASSERT (1, size >= sizeof (MonoObject) && size <= (SGEN_MAX_SMALL_OBJ_SIZE + CANARY_SIZE), "Invalid nursery object size");
-
-       SGEN_LOG (4, "Searching nursery for size: %zd", size);
-       size = SGEN_ALIGN_UP (size);
-
-       HEAVY_STAT (InterlockedIncrement (&stat_nursery_alloc_requests));
-
-       return sgen_fragment_allocator_par_alloc (&mutator_allocator, size);
-}
-
-void*
-sgen_nursery_alloc_range (size_t desired_size, size_t minimum_size, size_t *out_alloc_size)
-{
-       SGEN_LOG (4, "Searching for byte range desired size: %zd minimum size %zd", desired_size, minimum_size);
-
-       HEAVY_STAT (InterlockedIncrement (&stat_nursery_alloc_range_requests));
-
-       return sgen_fragment_allocator_par_range_alloc (&mutator_allocator, desired_size, minimum_size, out_alloc_size);
-}
-
-/*** Initialization ***/
-
-#ifdef HEAVY_STATISTICS
-
-void
-sgen_nursery_allocator_init_heavy_stats (void)
-{
-       mono_counters_register ("bytes wasted trailer fragments", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wasted_bytes_trailer);
-       mono_counters_register ("bytes wasted small areas", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wasted_bytes_small_areas);
-       mono_counters_register ("bytes wasted discarded fragments", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wasted_bytes_discarded_fragments);
-
-       mono_counters_register ("# nursery alloc requests", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_nursery_alloc_requests);
-       mono_counters_register ("# nursery alloc iterations", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_alloc_iterations);
-       mono_counters_register ("# nursery alloc retries", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_alloc_retries);
-
-       mono_counters_register ("# nursery alloc range requests", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_nursery_alloc_range_requests);
-       mono_counters_register ("# nursery alloc range iterations", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_alloc_range_iterations);
-       mono_counters_register ("# nursery alloc range restries", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_alloc_range_retries);
-}
-
-#endif
-
-void
-sgen_init_nursery_allocator (void)
-{
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_FRAGMENT, sizeof (SgenFragment));
-#ifdef NALLOC_DEBUG
-       alloc_records = sgen_alloc_os_memory (sizeof (AllocRecord) * ALLOC_RECORD_COUNT, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging memory");
-#endif
-}
-
-void
-sgen_nursery_alloc_prepare_for_minor (void)
-{
-       sgen_minor_collector.prepare_to_space (sgen_space_bitmap, sgen_space_bitmap_size);
-}
-
-void
-sgen_nursery_alloc_prepare_for_major (void)
-{
-       sgen_minor_collector.prepare_to_space (sgen_space_bitmap, sgen_space_bitmap_size);
-}
-
-void
-sgen_nursery_allocator_set_nursery_bounds (char *start, char *end)
-{
-       sgen_nursery_start = start;
-       sgen_nursery_end = end;
-
-       /*
-        * This will not divide evenly for tiny nurseries (<4kb), so we make sure to be on
-        * the right side of things and round up.  We could just do a MIN(1,x) instead,
-        * since the nursery size must be a power of 2.
-        */
-       sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
-       sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size);
-
-       /* Setup the single first large fragment */
-       sgen_minor_collector.init_nursery (&mutator_allocator, start, end);
-}
-
-#endif
index c2f5db5bf942abb3eabb8d9e3d4eb8470fa32149..2cef968485d4b0c88cc3488fab635ff2c9b73e57 100644 (file)
 
 #include <stdlib.h>
 
-#include "sgen-gc.h"
-#include "sgen-bridge.h"
-#include "sgen-hash-table.h"
-#include "sgen-qsort.h"
+#include "sgen/sgen-gc.h"
+#include "sgen-bridge-internal.h"
+#include "sgen/sgen-hash-table.h"
+#include "sgen/sgen-qsort.h"
+#include "sgen/sgen-client.h"
 #include "utils/mono-logger-internal.h"
-#include "utils/mono-time.h"
-#include "utils/mono-compiler.h"
-
 
 typedef struct {
        int size;
@@ -80,7 +78,7 @@ typedef struct {
  * just one source, so use the srcs pointer itself.
  */
 typedef struct _HashEntry {
-       MonoObject *obj;        /* This is a duplicate - it's already stored in the hash table */
+       GCObject *obj;  /* This is a duplicate - it's already stored in the hash table */
 
        gboolean is_bridge;
        gboolean is_visited;
@@ -408,7 +406,7 @@ class_kind (MonoClass *class)
 }
 
 static HashEntry*
-get_hash_entry (MonoObject *obj, gboolean *existing)
+get_hash_entry (GCObject *obj, gboolean *existing)
 {
        HashEntry *entry = sgen_hash_table_lookup (&hash_table, obj);
        HashEntry new_entry;
@@ -442,7 +440,7 @@ add_source (HashEntry *entry, HashEntry *src)
 static void
 free_data (void)
 {
-       MonoObject *obj G_GNUC_UNUSED;
+       GCObject *obj G_GNUC_UNUSED;
        HashEntry *entry;
        int total_srcs = 0;
        int max_srcs = 0;
@@ -462,7 +460,7 @@ free_data (void)
 }
 
 static HashEntry*
-register_bridge_object (MonoObject *obj)
+register_bridge_object (GCObject *obj)
 {
        HashEntry *entry = get_hash_entry (obj, NULL);
        entry->is_bridge = TRUE;
@@ -477,10 +475,10 @@ register_finishing_time (HashEntry *entry, int t)
 }
 
 static gboolean
-object_is_live (MonoObject **objp)
+object_is_live (GCObject **objp)
 {
-       MonoObject *obj = *objp;
-       MonoObject *fwd = SGEN_OBJECT_IS_FORWARDED (obj);
+       GCObject *obj = *objp;
+       GCObject *fwd = SGEN_OBJECT_IS_FORWARDED (obj);
        if (fwd) {
                *objp = fwd;
                return sgen_hash_table_lookup (&hash_table, fwd) == NULL;
@@ -498,7 +496,7 @@ static int dfs1_passes, dfs2_passes;
 
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)    do {                                    \
-               MonoObject *dst = (MonoObject*)*(ptr);                  \
+               GCObject *dst = (GCObject*)*(ptr);                      \
                if (dst && !object_is_live (&dst)) {                    \
                        dyn_array_ptr_push (&dfs_stack, obj_entry);     \
                        dyn_array_ptr_push (&dfs_stack, get_hash_entry (dst, NULL)); \
@@ -515,7 +513,7 @@ dfs1 (HashEntry *obj_entry)
        dyn_array_ptr_push (&dfs_stack, obj_entry);
 
        do {
-               MonoObject *obj;
+               GCObject *obj;
                char *start;
                ++dfs1_passes;
 
@@ -544,7 +542,7 @@ dfs1 (HashEntry *obj_entry)
                        /* NULL marks that the next entry is to be finished */
                        dyn_array_ptr_push (&dfs_stack, NULL);
 
-#include "sgen-scan-object.h"
+#include "sgen/sgen-scan-object.h"
                } else {
                        obj_entry = dyn_array_ptr_pop (&dfs_stack);
 
@@ -623,7 +621,7 @@ static int fist_pass_links, second_pass_links, sccs_links;
 static int max_sccs_links = 0;
 
 static void
-register_finalized_object (MonoObject *obj)
+register_finalized_object (GCObject *obj)
 {
        g_assert (sgen_need_bridge_processing ());
        dyn_array_ptr_push (&registered_bridges, obj);
@@ -682,7 +680,7 @@ processing_build_callback_data (int generation)
        int i, j;
        int num_sccs, num_xrefs;
        int max_entries, max_xrefs;
-       MonoObject *obj G_GNUC_UNUSED;
+       GCObject *obj G_GNUC_UNUSED;
        HashEntry *entry;
        HashEntry **all_entries;
        MonoGCBridgeSCC **api_sccs;
@@ -817,7 +815,7 @@ processing_build_callback_data (int generation)
        SGEN_HASH_TABLE_FOREACH (&hash_table, obj, entry) {
                if (entry->is_bridge) {
                        SCC *scc = dyn_array_scc_get_ptr (&sccs, entry->scc_index);
-                       api_sccs [scc->api_index]->objs [scc->num_bridge_entries++] = entry->obj;
+                       api_sccs [scc->api_index]->objs [scc->num_bridge_entries++] = (MonoObject*)entry->obj;
                }
        } SGEN_HASH_TABLE_FOREACH_END;
 
@@ -885,12 +883,14 @@ processing_after_callback (int generation)
 
        if (bridge_accounting_enabled) {
                for (i = 0; i < num_sccs; ++i) {
-                       for (j = 0; j < api_sccs [i]->num_objs; ++j)
+                       for (j = 0; j < api_sccs [i]->num_objs; ++j) {
+                               GCVTable *vtable = SGEN_LOAD_VTABLE (api_sccs [i]->objs [j]);
                                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC,
-                                       "OBJECT %s (%p) SCC [%d] %s",
-                                               sgen_safe_name (api_sccs [i]->objs [j]), api_sccs [i]->objs [j],
+                                       "OBJECT %s.%s (%p) SCC [%d] %s",
+                                               sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable), api_sccs [i]->objs [j],
                                                i,
                                                api_sccs [i]->is_alive  ? "ALIVE" : "DEAD");
+                       }
                }
        }
 
@@ -911,7 +911,7 @@ processing_after_callback (int generation)
 }
 
 static void
-describe_pointer (MonoObject *obj)
+describe_pointer (GCObject *obj)
 {
        HashEntry *entry;
        int i;
index 7d599e20908e59e6559b0e1bafbaa41e01e76f4f..eee4d837d3f728e4441833faec69aaa647b7396c 100644 (file)
 
 
 #include <glib.h>
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-archdep.h"
-#include "metadata/sgen-protocol.h"
+#include "sgen/sgen-gc.h"
+#include "sgen/sgen-archdep.h"
+#include "sgen/sgen-protocol.h"
+#include "sgen/sgen-thread-pool.h"
 #include "metadata/object-internals.h"
 #include "metadata/gc-internal.h"
 
@@ -42,7 +43,7 @@
 gboolean
 sgen_resume_thread (SgenThreadInfo *info)
 {
-       return thread_resume (info->info.native_handle) == KERN_SUCCESS;
+       return thread_resume (info->client_info.info.native_handle) == KERN_SUCCESS;
 }
 
 gboolean
@@ -59,41 +60,40 @@ sgen_suspend_thread (SgenThreadInfo *info)
        state = (thread_state_t) alloca (mono_mach_arch_get_thread_state_size ());
        mctx = (mcontext_t) alloca (mono_mach_arch_get_mcontext_size ());
 
-       ret = thread_suspend (info->info.native_handle);
+       ret = thread_suspend (info->client_info.info.native_handle);
        if (ret != KERN_SUCCESS)
                return FALSE;
 
-       ret = mono_mach_arch_get_thread_state (info->info.native_handle, state, &num_state);
+       ret = mono_mach_arch_get_thread_state (info->client_info.info.native_handle, state, &num_state);
        if (ret != KERN_SUCCESS)
                return FALSE;
 
        mono_mach_arch_thread_state_to_mcontext (state, mctx);
        ctx.uc_mcontext = mctx;
 
-       info->stopped_domain = mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
-       info->stopped_ip = (gpointer) mono_mach_arch_get_ip (state);
-       info->stack_start = NULL;
+       info->client_info.stopped_domain = mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
+       info->client_info.stopped_ip = (gpointer) mono_mach_arch_get_ip (state);
+       info->client_info.stack_start = NULL;
        stack_start = (char*) mono_mach_arch_get_sp (state) - REDZONE_SIZE;
        /* If stack_start is not within the limits, then don't set it in info and we will be restarted. */
-       if (stack_start >= info->stack_start_limit && info->stack_start <= info->stack_end) {
-               info->stack_start = stack_start;
+       if (stack_start >= info->client_info.stack_start_limit && stack_start <= info->client_info.stack_end) {
+               info->client_info.stack_start = stack_start;
 
 #ifdef USE_MONO_CTX
-               mono_sigctx_to_monoctx (&ctx, &info->ctx);
+               mono_sigctx_to_monoctx (&ctx, &info->client_info.ctx);
 #else
-               ARCH_COPY_SIGCTX_REGS (&info->regs, &ctx);
+               ARCH_COPY_SIGCTX_REGS (&info->client_info.regs, &ctx);
 #endif
        } else {
-               g_assert (!info->stack_start);
+               g_assert (!info->client_info.stack_start);
        }
 
        /* Notify the JIT */
        if (mono_gc_get_gc_callbacks ()->thread_suspend_func)
-               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->runtime_data, &ctx, NULL);
+               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->client_info.runtime_data, &ctx, NULL);
 
-       SGEN_LOG (2, "thread %p stopped at %p stack_start=%p", (void*)(gsize)info->info.native_handle, info->stopped_ip, info->stack_start);
-
-       binary_protocol_thread_suspend ((gpointer)mono_thread_info_get_tid (info), info->stopped_ip);
+       SGEN_LOG (2, "thread %p stopped at %p stack_start=%p", (void*)(gsize)info->client_info.info.native_handle, info->client_info.stopped_ip, info->client_info.stack_start);
+       binary_protocol_thread_suspend ((gpointer)mono_thread_info_get_tid (info), info->client_info.stopped_ip);
 
        return TRUE;
 }
@@ -114,20 +114,20 @@ sgen_thread_handshake (BOOL suspend)
 
        int count = 0;
 
-       cur_thread->suspend_done = TRUE;
+       cur_thread->client_info.suspend_done = TRUE;
        FOREACH_THREAD_SAFE (info) {
-               if (info == cur_thread || sgen_is_worker_thread (mono_thread_info_get_tid (info)))
+               if (info == cur_thread || sgen_thread_pool_is_thread_pool_thread (mono_thread_info_get_tid (info)))
                        continue;
 
-               info->suspend_done = FALSE;
-               if (info->gc_disabled)
+               info->client_info.suspend_done = FALSE;
+               if (info->client_info.gc_disabled)
                        continue;
 
                if (suspend) {
                        if (!sgen_suspend_thread (info))
                                continue;
                } else {
-                       ret = thread_resume (info->info.native_handle);
+                       ret = thread_resume (info->client_info.info.native_handle);
                        if (ret != KERN_SUCCESS)
                                continue;
                }
index a05d2afef158ce4a4cceb0cece4c41d171a8cb08..d0aa841296abca3ffc5e6da7ec0a5080bf7ccacb 100644 (file)
@@ -30,9 +30,9 @@
 
 #include <errno.h>
 #include <glib.h>
-#include "metadata/sgen-gc.h"
+#include "sgen/sgen-gc.h"
 #include "metadata/gc-internal.h"
-#include "metadata/sgen-archdep.h"
+#include "sgen/sgen-archdep.h"
 #include "metadata/object-internals.h"
 #include "utils/mono-signal-handler.h"
 
@@ -43,8 +43,8 @@ const static int suspend_signal_num = SIGPWR;
 #endif
 const static int restart_signal_num = SIGXCPU;
 
-static MonoSemType suspend_ack_semaphore;
-static MonoSemType *suspend_ack_semaphore_ptr;
+static SgenSemaphore suspend_ack_semaphore;
+static SgenSemaphore *suspend_ack_semaphore_ptr;
 
 static sigset_t suspend_signal_mask;
 static sigset_t suspend_ack_signal_mask;
@@ -59,53 +59,53 @@ suspend_thread (SgenThreadInfo *info, void *context)
        MonoContext ctx;
        gpointer stack_start;
 
-       info->stopped_domain = mono_domain_get ();
-       info->signal = 0;
+       info->client_info.stopped_domain = mono_domain_get ();
+       info->client_info.signal = 0;
        stop_count = sgen_global_stop_count;
        /* duplicate signal */
-       if (0 && info->stop_count == stop_count)
+       if (0 && info->client_info.stop_count == stop_count)
                return;
 
 #ifdef USE_MONO_CTX
        if (context) {
                mono_sigctx_to_monoctx (context, &ctx);
-               info->stopped_ip = MONO_CONTEXT_GET_IP (&ctx);
+               info->client_info.stopped_ip = MONO_CONTEXT_GET_IP (&ctx);
                stack_start = (((guint8 *) MONO_CONTEXT_GET_SP (&ctx)) - REDZONE_SIZE);
        } else {
-               info->stopped_ip = NULL;
+               info->client_info.stopped_ip = NULL;
                stack_start = NULL;
        }
 #else
-       info->stopped_ip = context ? (gpointer) ARCH_SIGCTX_IP (context) : NULL;
+       info->client_info.stopped_ip = context ? (gpointer) ARCH_SIGCTX_IP (context) : NULL;
        stack_start = context ? (char*) ARCH_SIGCTX_SP (context) - REDZONE_SIZE : NULL;
 #endif
 
        /* If stack_start is not within the limits, then don't set it
           in info and we will be restarted. */
-       if (stack_start >= info->stack_start_limit && info->stack_start <= info->stack_end) {
-               info->stack_start = stack_start;
+       if (stack_start >= info->client_info.stack_start_limit && stack_start <= info->client_info.stack_end) {
+               info->client_info.stack_start = stack_start;
 
 #ifdef USE_MONO_CTX
                if (context) {
-                       memcpy (&info->ctx, &ctx, sizeof (MonoContext));
+                       memcpy (&info->client_info.ctx, &ctx, sizeof (MonoContext));
                } else {
-                       memset (&info->ctx, 0, sizeof (MonoContext));
+                       memset (&info->client_info.ctx, 0, sizeof (MonoContext));
                }
 #else
                if (context) {
                        ARCH_COPY_SIGCTX_REGS (regs, context);
-                       memcpy (&info->regs, regs, sizeof (info->regs));
+                       memcpy (&info->client_info.regs, regs, sizeof (info->client_info.regs));
                } else {
-                       memset (&info->regs, 0, sizeof (info->regs));
+                       memset (&info->client_info.regs, 0, sizeof (info->client_info.regs));
                }
 #endif
        } else {
-               g_assert (!info->stack_start);
+               g_assert (!info->client_info.stack_start);
        }
 
        /* Notify the JIT */
        if (mono_gc_get_gc_callbacks ()->thread_suspend_func)
-               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->runtime_data, context, NULL);
+               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->client_info.runtime_data, context, NULL);
 
        SGEN_LOG (4, "Posting suspend_ack_semaphore for suspend from %p %p", info, (gpointer)mono_native_thread_id_get ());
 
@@ -117,21 +117,21 @@ suspend_thread (SgenThreadInfo *info, void *context)
        pthread_sigmask (SIG_BLOCK, &suspend_ack_signal_mask, NULL);
 
        /* notify the waiting thread */
-       MONO_SEM_POST (suspend_ack_semaphore_ptr);
-       info->stop_count = stop_count;
+       SGEN_SEMAPHORE_POST (suspend_ack_semaphore_ptr);
+       info->client_info.stop_count = stop_count;
 
        /* wait until we receive the restart signal */
        do {
-               info->signal = 0;
+               info->client_info.signal = 0;
                sigsuspend (&suspend_signal_mask);
-       } while (info->signal != restart_signal_num);
+       } while (info->client_info.signal != restart_signal_num);
 
        /* Unblock the restart signal. */
        pthread_sigmask (SIG_UNBLOCK, &suspend_ack_signal_mask, NULL);
 
        SGEN_LOG (4, "Posting suspend_ack_semaphore for resume from %p %p\n", info, (gpointer)mono_native_thread_id_get ());
        /* notify the waiting thread */
-       MONO_SEM_POST (suspend_ack_semaphore_ptr);
+       SGEN_SEMAPHORE_POST (suspend_ack_semaphore_ptr);
 }
 
 /* LOCKING: assumes the GC lock is held (by the stopping thread) */
@@ -162,7 +162,7 @@ MONO_SIG_HANDLER_FUNC (static, restart_handler)
        int old_errno = errno;
 
        info = mono_thread_info_current ();
-       info->signal = restart_signal_num;
+       info->client_info.signal = restart_signal_num;
        SGEN_LOG (4, "Restart handler in %p %p", info, (gpointer)mono_native_thread_id_get ());
        errno = old_errno;
 }
@@ -185,9 +185,9 @@ sgen_wait_for_suspend_ack (int count)
        int i, result;
 
        for (i = 0; i < count; ++i) {
-               while ((result = MONO_SEM_WAIT (suspend_ack_semaphore_ptr)) != 0) {
+               while ((result = SGEN_SEMAPHORE_WAIT (suspend_ack_semaphore_ptr)) != 0) {
                        if (errno != EINTR) {
-                               g_error ("MONO_SEM_WAIT FAILED with %d errno %d (%s)", result, errno, strerror (errno));
+                               g_error ("SGEN_SEMAPHORE_WAIT FAILED with %d errno %d (%s)", result, errno, strerror (errno));
                        }
                }
        }
@@ -203,13 +203,13 @@ sgen_thread_handshake (BOOL suspend)
        MonoNativeThreadId me = mono_native_thread_id_get ();
 
        count = 0;
-       mono_thread_info_current ()->suspend_done = TRUE;
+       mono_thread_info_current ()->client_info.suspend_done = TRUE;
        FOREACH_THREAD_SAFE (info) {
                if (mono_native_thread_id_equals (mono_thread_info_get_tid (info), me)) {
                        continue;
                }
-               info->suspend_done = FALSE;
-               if (info->gc_disabled)
+               info->client_info.suspend_done = FALSE;
+               if (info->client_info.gc_disabled)
                        continue;
                /*if (signum == suspend_signal_num && info->stop_count == global_stop_count)
                        continue;*/
@@ -217,7 +217,7 @@ sgen_thread_handshake (BOOL suspend)
                if (result == 0) {
                        count++;
                } else {
-                       info->skip = 1;
+                       info->client_info.skip = 1;
                }
        } END_FOREACH_THREAD_SAFE
 
@@ -237,7 +237,7 @@ sgen_os_init (void)
                return;
 
        suspend_ack_semaphore_ptr = &suspend_ack_semaphore;
-       MONO_SEM_INIT (&suspend_ack_semaphore, 0);
+       SGEN_SEMAPHORE_INIT (&suspend_ack_semaphore, 0);
 
        sigfillset (&sinfo.sa_mask);
        sinfo.sa_flags = SA_RESTART | SA_SIGINFO;
index 46e6fc095c5fce38bb755f75b14e6213db8590cf..656d8393045abfc5cf3a4d49365cc6c6f13a686b 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "io-layer/io-layer.h"
 
-#include "metadata/sgen-gc.h"
+#include "sgen/sgen-gc.h"
 #include "metadata/gc-internal.h"
 
 gboolean
@@ -59,57 +59,57 @@ sgen_suspend_thread (SgenThreadInfo *info)
 
 #if !defined(MONO_CROSS_COMPILE)
 #ifdef USE_MONO_CTX
-       memset (&info->ctx, 0, sizeof (MonoContext));
+       memset (&info->client_info.ctx, 0, sizeof (MonoContext));
 #ifdef TARGET_AMD64
-       info->ctx.rip = context.Rip;
-       info->ctx.rax = context.Rax;
-       info->ctx.rcx = context.Rcx;
-       info->ctx.rdx = context.Rdx;
-       info->ctx.rbx = context.Rbx;
-       info->ctx.rsp = context.Rsp;
-       info->ctx.rbp = context.Rbp;
-       info->ctx.rsi = context.Rsi;
-       info->ctx.rdi = context.Rdi;
-       info->ctx.r8 = context.R8;
-       info->ctx.r9 = context.R9;
-       info->ctx.r10 = context.R10;
-       info->ctx.r11 = context.R11;
-       info->ctx.r12 = context.R12;
-       info->ctx.r13 = context.R13;
-       info->ctx.r14 = context.R14;
-       info->ctx.r15 = context.R15;
-       info->stopped_ip = info->ctx.rip;
-       info->stack_start = (char*)info->ctx.rsp - REDZONE_SIZE;
+       info->client_info.ctx.rip = context.Rip;
+       info->client_info.ctx.rax = context.Rax;
+       info->client_info.ctx.rcx = context.Rcx;
+       info->client_info.ctx.rdx = context.Rdx;
+       info->client_info.ctx.rbx = context.Rbx;
+       info->client_info.ctx.rsp = context.Rsp;
+       info->client_info.ctx.rbp = context.Rbp;
+       info->client_info.ctx.rsi = context.Rsi;
+       info->client_info.ctx.rdi = context.Rdi;
+       info->client_info.ctx.r8 = context.R8;
+       info->client_info.ctx.r9 = context.R9;
+       info->client_info.ctx.r10 = context.R10;
+       info->client_info.ctx.r11 = context.R11;
+       info->client_info.ctx.r12 = context.R12;
+       info->client_info.ctx.r13 = context.R13;
+       info->client_info.ctx.r14 = context.R14;
+       info->client_info.ctx.r15 = context.R15;
+       info->client_info.stopped_ip = info->client_info.ctx.rip;
+       info->client_info.stack_start = (char*)info->client_info.ctx.rsp - REDZONE_SIZE;
 #else
-       info->ctx.edi = context.Edi;
-       info->ctx.esi = context.Esi;
-       info->ctx.ebx = context.Ebx;
-       info->ctx.edx = context.Edx;
-       info->ctx.ecx = context.Ecx;
-       info->ctx.eax = context.Eax;
-       info->ctx.ebp = context.Ebp;
-       info->ctx.esp = context.Esp;
-       info->stopped_ip = (gpointer)context.Eip;
-       info->stack_start = (char*)context.Esp - REDZONE_SIZE;
+       info->client_info.ctx.edi = context.Edi;
+       info->client_info.ctx.esi = context.Esi;
+       info->client_info.ctx.ebx = context.Ebx;
+       info->client_info.ctx.edx = context.Edx;
+       info->client_info.ctx.ecx = context.Ecx;
+       info->client_info.ctx.eax = context.Eax;
+       info->client_info.ctx.ebp = context.Ebp;
+       info->client_info.ctx.esp = context.Esp;
+       info->client_info.stopped_ip = (gpointer)context.Eip;
+       info->client_info.stack_start = (char*)context.Esp - REDZONE_SIZE;
 #endif
 
 #else
-       info->regs [0] = context.Edi;
-       info->regs [1] = context.Esi;
-       info->regs [2] = context.Ebx;
-       info->regs [3] = context.Edx;
-       info->regs [4] = context.Ecx;
-       info->regs [5] = context.Eax;
-       info->regs [6] = context.Ebp;
-       info->regs [7] = context.Esp;
-       info->stopped_ip = (gpointer)context.Eip;
-       info->stack_start = (char*)context.Esp - REDZONE_SIZE;
+       info->client_info.regs [0] = context.Edi;
+       info->client_info.regs [1] = context.Esi;
+       info->client_info.regs [2] = context.Ebx;
+       info->client_info.regs [3] = context.Edx;
+       info->client_info.regs [4] = context.Ecx;
+       info->client_info.regs [5] = context.Eax;
+       info->client_info.regs [6] = context.Ebp;
+       info->client_info.regs [7] = context.Esp;
+       info->client_info.stopped_ip = (gpointer)context.Eip;
+       info->client_info.stack_start = (char*)context.Esp - REDZONE_SIZE;
 #endif
 #endif
 
        /* Notify the JIT */
        if (mono_gc_get_gc_callbacks ()->thread_suspend_func)
-               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->runtime_data, NULL, NULL);
+               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->client_info.runtime_data, NULL, NULL);
 
        return TRUE;
 }
@@ -127,12 +127,12 @@ sgen_thread_handshake (BOOL suspend)
        SgenThreadInfo *current = mono_thread_info_current ();
        int count = 0;
 
-       current->suspend_done = TRUE;
+       current->client_info.suspend_done = TRUE;
        FOREACH_THREAD_SAFE (info) {
                if (info == current)
                        continue;
-               info->suspend_done = FALSE;
-               if (info->gc_disabled)
+               info->client_info.suspend_done = FALSE;
+               if (info->client_info.gc_disabled)
                        continue;
                if (suspend) {
                        if (!sgen_suspend_thread (info))
diff --git a/mono/metadata/sgen-pinning-stats.c b/mono/metadata/sgen-pinning-stats.c
deleted file mode 100644 (file)
index 1c942ea..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-pinning.h"
-#include "metadata/sgen-hash-table.h"
-
-
-typedef struct _PinStatAddress PinStatAddress;
-struct _PinStatAddress {
-       char *addr;
-       int pin_types;
-       PinStatAddress *left;
-       PinStatAddress *right;
-};
-
-typedef struct {
-       size_t num_pins [PIN_TYPE_MAX];
-} PinnedClassEntry;
-
-typedef struct {
-       gulong num_remsets;
-} GlobalRemsetClassEntry;
-
-static PinStatAddress *pin_stat_addresses = NULL;
-static size_t pinned_byte_counts [PIN_TYPE_MAX];
-
-static ObjectList *pinned_objects = NULL;
-
-static SgenHashTable pinned_class_hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_STATISTICS, INTERNAL_MEM_STAT_PINNED_CLASS, sizeof (PinnedClassEntry), g_str_hash, g_str_equal);
-static SgenHashTable global_remset_class_hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_STATISTICS, INTERNAL_MEM_STAT_REMSET_CLASS, sizeof (GlobalRemsetClassEntry), g_str_hash, g_str_equal);
-
-static void
-pin_stats_tree_free (PinStatAddress *node)
-{
-       if (!node)
-               return;
-       pin_stats_tree_free (node->left);
-       pin_stats_tree_free (node->right);
-       sgen_free_internal_dynamic (node, sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS);
-}
-
-void
-sgen_pin_stats_reset (void)
-{
-       int i;
-       pin_stats_tree_free (pin_stat_addresses);
-       pin_stat_addresses = NULL;
-       for (i = 0; i < PIN_TYPE_MAX; ++i)
-               pinned_byte_counts [i] = 0;
-       while (pinned_objects) {
-               ObjectList *next = pinned_objects->next;
-               sgen_free_internal_dynamic (pinned_objects, sizeof (ObjectList), INTERNAL_MEM_STATISTICS);
-               pinned_objects = next;
-       }
-}
-
-void
-sgen_pin_stats_register_address (char *addr, int pin_type)
-{
-       PinStatAddress **node_ptr = &pin_stat_addresses;
-       PinStatAddress *node;
-       int pin_type_bit = 1 << pin_type;
-
-       while (*node_ptr) {
-               node = *node_ptr;
-               if (addr == node->addr) {
-                       node->pin_types |= pin_type_bit;
-                       return;
-               }
-               if (addr < node->addr)
-                       node_ptr = &node->left;
-               else
-                       node_ptr = &node->right;
-       }
-
-       node = sgen_alloc_internal_dynamic (sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS, TRUE);
-       node->addr = addr;
-       node->pin_types = pin_type_bit;
-       node->left = node->right = NULL;
-
-       *node_ptr = node;
-}
-
-static void
-pin_stats_count_object_from_tree (char *obj, size_t size, PinStatAddress *node, int *pin_types)
-{
-       if (!node)
-               return;
-       if (node->addr >= obj && node->addr < obj + size) {
-               int i;
-               for (i = 0; i < PIN_TYPE_MAX; ++i) {
-                       int pin_bit = 1 << i;
-                       if (!(*pin_types & pin_bit) && (node->pin_types & pin_bit)) {
-                               pinned_byte_counts [i] += size;
-                               *pin_types |= pin_bit;
-                       }
-               }
-       }
-       if (obj < node->addr)
-               pin_stats_count_object_from_tree (obj, size, node->left, pin_types);
-       if (obj + size - 1 > node->addr)
-               pin_stats_count_object_from_tree (obj, size, node->right, pin_types);
-}
-
-static gpointer
-lookup_class_entry (SgenHashTable *hash_table, MonoClass *class, gpointer empty_entry)
-{
-       char *name = g_strdup_printf ("%s.%s", class->name_space, class->name);
-       gpointer entry = sgen_hash_table_lookup (hash_table, name);
-
-       if (entry) {
-               g_free (name);
-       } else {
-               sgen_hash_table_replace (hash_table, name, empty_entry, NULL);
-               entry = sgen_hash_table_lookup (hash_table, name);
-       }
-
-       return entry;
-}
-
-static void
-register_class (MonoClass *class, int pin_types)
-{
-       PinnedClassEntry empty_entry;
-       PinnedClassEntry *entry;
-       int i;
-
-       memset (&empty_entry, 0, sizeof (PinnedClassEntry));
-       entry = lookup_class_entry (&pinned_class_hash_table, class, &empty_entry);
-
-       for (i = 0; i < PIN_TYPE_MAX; ++i) {
-               if (pin_types & (1 << i))
-                       ++entry->num_pins [i];
-       }
-}
-
-void
-sgen_pin_stats_register_object (char *obj, size_t size)
-{
-       int pin_types = 0;
-       ObjectList *list;
-
-       list = sgen_alloc_internal_dynamic (sizeof (ObjectList), INTERNAL_MEM_STATISTICS, TRUE);
-       pin_stats_count_object_from_tree (obj, size, pin_stat_addresses, &pin_types);
-       list->obj = (MonoObject*)obj;
-       list->next = pinned_objects;
-       pinned_objects = list;
-
-       if (pin_types)
-               register_class (((MonoVTable*)SGEN_LOAD_VTABLE (obj))->klass, pin_types);
-}
-
-void
-sgen_pin_stats_register_global_remset (char *obj)
-{
-       GlobalRemsetClassEntry empty_entry;
-       GlobalRemsetClassEntry *entry;
-
-       memset (&empty_entry, 0, sizeof (GlobalRemsetClassEntry));
-       entry = lookup_class_entry (&global_remset_class_hash_table, ((MonoVTable*)SGEN_LOAD_VTABLE (obj))->klass, &empty_entry);
-
-       ++entry->num_remsets;
-}
-
-void
-sgen_pin_stats_print_class_stats (void)
-{
-       char *name;
-       PinnedClassEntry *pinned_entry;
-       GlobalRemsetClassEntry *remset_entry;
-
-       g_print ("\n%-50s  %10s  %10s  %10s\n", "Class", "Stack", "Static", "Other");
-       SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, name, pinned_entry) {
-               int i;
-               g_print ("%-50s", name);
-               for (i = 0; i < PIN_TYPE_MAX; ++i)
-                       g_print ("  %10ld", pinned_entry->num_pins [i]);
-               g_print ("\n");
-       } SGEN_HASH_TABLE_FOREACH_END;
-
-       g_print ("\n%-50s  %10s\n", "Class", "#Remsets");
-       SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, name, remset_entry) {
-               g_print ("%-50s  %10ld\n", name, remset_entry->num_remsets);
-       } SGEN_HASH_TABLE_FOREACH_END;
-}
-
-size_t
-sgen_pin_stats_get_pinned_byte_count (int pin_type)
-{
-       return pinned_byte_counts [pin_type];
-}
-
-ObjectList*
-sgen_pin_stats_get_object_list (void)
-{
-       return pinned_objects;
-}
-
-#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-pinning.c b/mono/metadata/sgen-pinning.c
deleted file mode 100644 (file)
index 2d7a8ca..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * sgen-pinning.c: The pin queue.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-pinning.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-pointer-queue.h"
-
-static SgenPointerQueue pin_queue;
-static size_t last_num_pinned = 0;
-
-#define PIN_HASH_SIZE 1024
-static void *pin_hash_filter [PIN_HASH_SIZE];
-
-void
-sgen_init_pinning (void)
-{
-       memset (pin_hash_filter, 0, sizeof (pin_hash_filter));
-       pin_queue.mem_type = INTERNAL_MEM_PIN_QUEUE;
-}
-
-void
-sgen_finish_pinning (void)
-{
-       last_num_pinned = pin_queue.next_slot;
-       sgen_pointer_queue_clear (&pin_queue);
-}
-
-void
-sgen_pin_stage_ptr (void *ptr)
-{
-       /*very simple multiplicative hash function, tons better than simple and'ng */ 
-       int hash_idx = ((mword)ptr * 1737350767) & (PIN_HASH_SIZE - 1);
-       if (pin_hash_filter [hash_idx] == ptr)
-               return;
-
-       pin_hash_filter [hash_idx] = ptr;
-
-       sgen_pointer_queue_add (&pin_queue, ptr);
-}
-
-gboolean
-sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *first_out, size_t *last_out)
-{
-       size_t first = sgen_pointer_queue_search (&pin_queue, start);
-       size_t last = sgen_pointer_queue_search (&pin_queue, end);
-       SGEN_ASSERT (0, last == pin_queue.next_slot || pin_queue.data [last] >= end, "Pin queue search gone awry");
-       *first_out = first;
-       *last_out = last;
-       return first != last;
-}
-
-void**
-sgen_pinning_get_entry (size_t index)
-{
-       SGEN_ASSERT (0, index <= pin_queue.next_slot, "Pin queue entry out of range");
-       return &pin_queue.data [index];
-}
-
-void
-sgen_find_section_pin_queue_start_end (GCMemSection *section)
-{
-       SGEN_LOG (6, "Pinning from section %p (%p-%p)", section, section->data, section->end_data);
-
-       sgen_find_optimized_pin_queue_area (section->data, section->end_data,
-                       &section->pin_queue_first_entry, &section->pin_queue_last_entry);
-
-       SGEN_LOG (6, "Found %zd pinning addresses in section %p",
-                       section->pin_queue_last_entry - section->pin_queue_first_entry, section);
-}
-
-/*This will setup the given section for the while pin queue. */
-void
-sgen_pinning_setup_section (GCMemSection *section)
-{
-       section->pin_queue_first_entry = 0;
-       section->pin_queue_last_entry = pin_queue.next_slot;
-}
-
-void
-sgen_pinning_trim_queue_to_section (GCMemSection *section)
-{
-       SGEN_ASSERT (0, section->pin_queue_first_entry == 0, "Pin queue trimming assumes the whole pin queue is used by the nursery");
-       pin_queue.next_slot = section->pin_queue_last_entry;
-}
-
-/*
- * This is called when we've run out of memory during a major collection.
- *
- * After collecting potential pin entries and sorting the array, this is what it looks like:
- *
- * +--------------------+---------------------------------------------+--------------------+
- * | major heap entries |               nursery entries               | major heap entries |
- * +--------------------+---------------------------------------------+--------------------+
- *
- * Of course there might not be major heap entries before and/or after the nursery entries,
- * depending on where the major heap sections are in the address space, and whether there
- * were any potential pointers there.
- *
- * When we pin nursery objects, we compact the nursery part of the pin array, which leaves
- * discarded entries after the ones that actually pointed to nursery objects:
- *
- * +--------------------+-----------------+---------------------------+--------------------+
- * | major heap entries | nursery entries | discarded nursery entries | major heap entries |
- * +--------------------+-----------------+---------------------------+--------------------+
- *
- * When, due to being out of memory, we late pin more objects, the pin array looks like
- * this:
- *
- * +--------------------+-----------------+---------------------------+--------------------+--------------+
- * | major heap entries | nursery entries | discarded nursery entries | major heap entries | late entries |
- * +--------------------+-----------------+---------------------------+--------------------+--------------+
- *
- * This function gets rid of the discarded nursery entries by nulling them out.  Note that
- * we can late pin objects not only in the nursery but also in the major heap, which happens
- * when evacuation fails.
- */
-void
-sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot)
-{
-       void **start = sgen_pinning_get_entry (section->pin_queue_last_entry);
-       void **end = sgen_pinning_get_entry (max_pin_slot);
-       void *addr;
-
-       for (; start < end; ++start) {
-               addr = *start;
-               if ((char*)addr < section->data || (char*)addr > section->end_data)
-                       break;
-               *start = NULL;
-       }
-}
-
-/* reduce the info in the pin queue, removing duplicate pointers and sorting them */
-void
-sgen_optimize_pin_queue (void)
-{
-       sgen_pointer_queue_sort_uniq (&pin_queue);
-}
-
-size_t
-sgen_get_pinned_count (void)
-{
-       return pin_queue.next_slot;
-}
-
-void
-sgen_dump_pin_queue (void)
-{
-       int i;
-
-       for (i = 0; i < last_num_pinned; ++i) {
-               void *ptr = pin_queue.data [i];
-               SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", ptr, sgen_safe_name (ptr), sgen_safe_object_get_size (ptr));
-       }
-}
-
-typedef struct _CementHashEntry CementHashEntry;
-struct _CementHashEntry {
-       char *obj;
-       unsigned int count;
-};
-
-static CementHashEntry cement_hash [SGEN_CEMENT_HASH_SIZE];
-
-static gboolean cement_enabled = TRUE;
-
-void
-sgen_cement_init (gboolean enabled)
-{
-       cement_enabled = enabled;
-}
-
-void
-sgen_cement_reset (void)
-{
-       memset (cement_hash, 0, sizeof (cement_hash));
-       binary_protocol_cement_reset ();
-}
-
-gboolean
-sgen_cement_lookup (char *obj)
-{
-       guint hv = mono_aligned_addr_hash (obj);
-       int i = SGEN_CEMENT_HASH (hv);
-
-       SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Looking up cementing for non-nursery objects makes no sense");
-
-       if (!cement_enabled)
-               return FALSE;
-
-       if (!cement_hash [i].obj)
-               return FALSE;
-       if (cement_hash [i].obj != obj)
-               return FALSE;
-
-       return cement_hash [i].count >= SGEN_CEMENT_THRESHOLD;
-}
-
-gboolean
-sgen_cement_lookup_or_register (char *obj)
-{
-       guint hv;
-       int i;
-       CementHashEntry *hash = cement_hash;
-
-       if (!cement_enabled)
-               return FALSE;
-
-       hv = mono_aligned_addr_hash (obj);
-       i = SGEN_CEMENT_HASH (hv);
-
-       SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Can only cement pointers to nursery objects");
-
-       if (!hash [i].obj) {
-               SGEN_ASSERT (5, !hash [i].count, "Cementing hash inconsistent");
-               hash [i].obj = obj;
-       } else if (hash [i].obj != obj) {
-               return FALSE;
-       }
-
-       if (hash [i].count >= SGEN_CEMENT_THRESHOLD)
-               return TRUE;
-
-       ++hash [i].count;
-       if (hash [i].count == SGEN_CEMENT_THRESHOLD) {
-               SGEN_ASSERT (9, sgen_get_current_collection_generation () >= 0, "We can only cement objects when we're in a collection pause.");
-               SGEN_ASSERT (9, SGEN_OBJECT_IS_PINNED (obj), "Can only cement pinned objects");
-               SGEN_CEMENT_OBJECT (obj);
-
-               if (G_UNLIKELY (MONO_GC_OBJ_CEMENTED_ENABLED())) {
-                       MonoVTable *vt G_GNUC_UNUSED = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
-                       MONO_GC_OBJ_CEMENTED ((mword)obj, sgen_safe_object_get_size ((MonoObject*)obj),
-                                       vt->klass->name_space, vt->klass->name);
-               }
-               binary_protocol_cement (obj, (gpointer)SGEN_LOAD_VTABLE (obj),
-                               (int)sgen_safe_object_get_size ((MonoObject*)obj));
-       }
-
-       return FALSE;
-}
-
-static void
-pin_from_hash (CementHashEntry *hash, gboolean has_been_reset)
-{
-       int i;
-       for (i = 0; i < SGEN_CEMENT_HASH_SIZE; ++i) {
-               if (!hash [i].count)
-                       continue;
-
-               if (has_been_reset)
-                       SGEN_ASSERT (5, hash [i].count >= SGEN_CEMENT_THRESHOLD, "Cementing hash inconsistent");
-
-               sgen_pin_stage_ptr (hash [i].obj);
-               binary_protocol_cement_stage (hash [i].obj);
-               /* FIXME: do pin stats if enabled */
-
-               SGEN_CEMENT_OBJECT (hash [i].obj);
-       }
-}
-
-void
-sgen_pin_cemented_objects (void)
-{
-       pin_from_hash (cement_hash, TRUE);
-}
-
-void
-sgen_cement_clear_below_threshold (void)
-{
-       int i;
-       for (i = 0; i < SGEN_CEMENT_HASH_SIZE; ++i) {
-               if (cement_hash [i].count < SGEN_CEMENT_THRESHOLD) {
-                       cement_hash [i].obj = NULL;
-                       cement_hash [i].count = 0;
-               }
-       }
-}
-
-#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-pinning.h b/mono/metadata/sgen-pinning.h
deleted file mode 100644 (file)
index 8f9ac73..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * sgen-pinning.h: All about pinning objects.
- *
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGEN_PINNING_H__
-#define __MONO_SGEN_PINNING_H__
-
-enum {
-       PIN_TYPE_STACK,
-       PIN_TYPE_STATIC_DATA,
-       PIN_TYPE_OTHER,
-       PIN_TYPE_MAX
-};
-
-void sgen_pin_stage_ptr (void *ptr);
-void sgen_optimize_pin_queue (void);
-void sgen_init_pinning (void);
-void sgen_finish_pinning (void);
-void sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot);
-size_t sgen_get_pinned_count (void);
-void sgen_pinning_setup_section (GCMemSection *section);
-void sgen_pinning_trim_queue_to_section (GCMemSection *section);
-
-void sgen_dump_pin_queue (void);
-
-gboolean sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *first_out, size_t *last_out);
-void sgen_find_section_pin_queue_start_end (GCMemSection *section);
-void** sgen_pinning_get_entry (size_t index);
-void sgen_pin_objects_in_section (GCMemSection *section, ScanCopyContext ctx);
-
-/* Pinning stats */
-
-void sgen_pin_stats_register_address (char *addr, int pin_type);
-size_t sgen_pin_stats_get_pinned_byte_count (int pin_type);
-ObjectList *sgen_pin_stats_get_object_list (void);
-void sgen_pin_stats_reset (void);
-
-/* Perpetual pinning, aka cementing */
-
-void sgen_cement_init (gboolean enabled);
-void sgen_cement_reset (void);
-gboolean sgen_cement_lookup (char *obj);
-gboolean sgen_cement_lookup_or_register (char *obj);
-void sgen_pin_cemented_objects (void);
-void sgen_cement_clear_below_threshold (void);
-
-#endif
diff --git a/mono/metadata/sgen-pointer-queue.c b/mono/metadata/sgen-pointer-queue.c
deleted file mode 100644 (file)
index e201e12..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * sgen-pointer-queue.c: A pointer queue that can be sorted.
- *
- * Copyright (C) 2014 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "utils/mono-compiler.h"
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-pointer-queue.h"
-
-#ifdef HAVE_SGEN_GC
-
-void
-sgen_pointer_queue_clear (SgenPointerQueue *queue)
-{
-       queue->next_slot = 0;
-}
-
-void
-sgen_pointer_queue_init (SgenPointerQueue *queue, int mem_type)
-{
-       queue->next_slot = 0;
-       queue->size = 0;
-       queue->data = NULL;
-       queue->mem_type = mem_type;
-}
-
-static void
-realloc_queue (SgenPointerQueue *queue)
-{
-       size_t new_size = queue->size ? queue->size + queue->size/2 : 1024;
-       void **new_data = sgen_alloc_internal_dynamic (sizeof (void*) * new_size, queue->mem_type, TRUE);
-
-       memcpy (new_data, queue->data, sizeof (void*) * queue->next_slot);
-       sgen_free_internal_dynamic (queue->data, sizeof (void*) * queue->size, queue->mem_type);
-       queue->data = new_data;
-       queue->size = new_size;
-       SGEN_LOG (4, "Reallocated pointer queue to size: %lu", new_size);
-}
-
-void
-sgen_pointer_queue_add (SgenPointerQueue *queue, void *ptr)
-{
-       if (queue->next_slot >= queue->size)
-               realloc_queue (queue);
-
-       queue->data [queue->next_slot++] = ptr;
-}
-
-void*
-sgen_pointer_queue_pop (SgenPointerQueue *queue)
-{
-       g_assert (queue->next_slot);
-
-       return queue->data [--queue->next_slot];
-}
-
-size_t
-sgen_pointer_queue_search (SgenPointerQueue *queue, void *addr)
-{
-       size_t first = 0, last = queue->next_slot;
-       while (first < last) {
-               size_t middle = first + ((last - first) >> 1);
-               if (addr <= queue->data [middle])
-                       last = middle;
-               else
-                       first = middle + 1;
-       }
-       g_assert (first == last);
-       return first;
-}
-
-/*
- * Removes all NULL pointers from the queue.
- */
-void
-sgen_pointer_queue_remove_nulls (SgenPointerQueue *queue)
-{
-       void **start, **cur, **end;
-       start = cur = queue->data;
-       end = queue->data + queue->next_slot;
-       while (cur < end) {
-               if (*cur)
-                       *start++ = *cur++;
-               else
-                       ++cur;
-       }
-       queue->next_slot = start - queue->data;
-}
-
-/*
- * Sorts the pointers in the queue, then removes duplicates.
- */
-void
-sgen_pointer_queue_sort_uniq (SgenPointerQueue *queue)
-{
-       void **start, **cur, **end;
-       /* sort and uniq pin_queue: we just sort and we let the rest discard multiple values */
-       /* it may be better to keep ranges of pinned memory instead of individually pinning objects */
-       SGEN_LOG (5, "Sorting pointer queue, size: %lu", queue->next_slot);
-       if (queue->next_slot > 1)
-               sgen_sort_addresses (queue->data, queue->next_slot);
-       start = cur = queue->data;
-       end = queue->data + queue->next_slot;
-       while (cur < end) {
-               *start = *cur++;
-               while (cur < end && *start == *cur)
-                       cur++;
-               start++;
-       };
-       queue->next_slot = start - queue->data;
-       SGEN_LOG (5, "Pointer queue reduced to size: %lu", queue->next_slot);
-}
-
-/*
- * Does a linear search through the pointer queue to find `ptr`.  Returns the index if
- * found, otherwise (size_t)-1.
- */
-size_t
-sgen_pointer_queue_find (SgenPointerQueue *queue, void *ptr)
-{
-       size_t i;
-       for (i = 0; i < queue->next_slot; ++i)
-               if (queue->data [i] == ptr)
-                       return i;
-       return (size_t)-1;
-}
-
-gboolean
-sgen_pointer_queue_is_empty (SgenPointerQueue *queue)
-{
-       return !queue->next_slot;
-}
-
-void
-sgen_pointer_queue_free (SgenPointerQueue *queue)
-{
-       sgen_free_internal_dynamic (queue->data, sizeof (void*) * queue->size, queue->mem_type);
-}
-
-#endif
diff --git a/mono/metadata/sgen-pointer-queue.h b/mono/metadata/sgen-pointer-queue.h
deleted file mode 100644 (file)
index 303562e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * sgen-pointer-queue.h: A pointer queue that can be sorted.
- *
- * Copyright (C) 2014 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MONO_SGEN_POINTER_QUEUE_H__
-#define __MONO_SGEN_POINTER_QUEUE_H__
-
-#include <glib.h>
-
-typedef struct {
-       void **data;
-       size_t size;
-       size_t next_slot;
-       int mem_type;
-} SgenPointerQueue;
-
-void sgen_pointer_queue_add (SgenPointerQueue *queue, void *ptr);
-void sgen_pointer_queue_clear (SgenPointerQueue *queue);
-void sgen_pointer_queue_remove_nulls (SgenPointerQueue *queue);
-void sgen_pointer_queue_sort_uniq (SgenPointerQueue *queue);
-size_t sgen_pointer_queue_search (SgenPointerQueue *queue, void *addr);
-size_t sgen_pointer_queue_find (SgenPointerQueue *queue, void *ptr);
-void sgen_pointer_queue_init (SgenPointerQueue *queue, int mem_type);
-void* sgen_pointer_queue_pop (SgenPointerQueue *queue);
-gboolean sgen_pointer_queue_is_empty (SgenPointerQueue *queue);
-void sgen_pointer_queue_free (SgenPointerQueue *queue);
-
-#endif
diff --git a/mono/metadata/sgen-protocol-def.h b/mono/metadata/sgen-protocol-def.h
deleted file mode 100644 (file)
index bd449e1..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_collection_force, TYPE_INT, generation)
-FLUSH ()
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY2 (binary_protocol_collection_begin, TYPE_INT, index, TYPE_INT, generation)
-FLUSH ()
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY4 (binary_protocol_collection_end, TYPE_INT, index, TYPE_INT, generation, TYPE_LONGLONG, num_scanned_objects, TYPE_LONGLONG, num_unique_scanned_objects)
-FLUSH()
-CUSTOM_PRINT (printf ("%d generation %d scanned %lld unique %lld %0.2f%%", entry->index, entry->generation, entry->num_scanned_objects, entry->num_unique_scanned_objects, entry->num_unique_scanned_objects ? (100.0 * (double) entry->num_scanned_objects / (double) entry->num_unique_scanned_objects) : 0.0))
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_start)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_update)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_finish)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_world_stopping, TYPE_LONGLONG, timestamp)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY5 (binary_protocol_world_stopped, TYPE_LONGLONG, timestamp, TYPE_LONGLONG, total_major_cards, TYPE_LONGLONG, marked_major_cards, TYPE_LONGLONG, total_los_cards, TYPE_LONGLONG, marked_los_cards)
-CUSTOM_PRINT (printf ("timestamp %lld total %lld marked %lld %0.2f%%", entry->timestamp, entry->total_major_cards + entry->total_los_cards, entry->marked_major_cards + entry->marked_los_cards, 100.0 * (double) (entry->marked_major_cards + entry->marked_los_cards) / (double) (entry->total_major_cards + entry->total_los_cards)))
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY6 (binary_protocol_world_restarting, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_LONGLONG, total_major_cards, TYPE_LONGLONG, marked_major_cards, TYPE_LONGLONG, total_los_cards, TYPE_LONGLONG, marked_los_cards)
-CUSTOM_PRINT (printf ("generation %d timestamp %lld total %lld marked %lld %0.2f%%", entry->generation, entry->timestamp, entry->total_major_cards + entry->total_los_cards, entry->marked_major_cards + entry->marked_los_cards, 100.0 * (double) (entry->marked_major_cards + entry->marked_los_cards) / (double) (entry->total_major_cards + entry->total_los_cards)))
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY2 (binary_protocol_world_restarted, TYPE_INT, generation, TYPE_LONGLONG, timestamp)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_alloc, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_copy, TYPE_POINTER, from, TYPE_POINTER, to, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->from, entry->size) ? 0 : matches_interval (ptr, entry->to, entry->size) ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_pin_stage, TYPE_POINTER, addr_ptr, TYPE_POINTER, addr)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->addr_ptr ? 0 : ptr == entry->addr ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY1 (binary_protocol_cement_stage, TYPE_POINTER, addr)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->addr ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_pin, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_mark, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_begin, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_scan_vtype_begin, TYPE_POINTER, obj, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_process_reference, TYPE_POINTER, obj, TYPE_POINTER, ptr, TYPE_POINTER, value)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->ptr ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_wbarrier, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->ptr ? 0 : ptr == entry->value ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->value_vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_global_remset, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->ptr ? 0 : ptr == entry->value ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->value_vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY5 (binary_protocol_ptr_update, TYPE_POINTER, ptr, TYPE_POINTER, old_value, TYPE_POINTER, new_value, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->ptr ? 0 : matches_interval (ptr, entry->old_value, entry->size) ? 1 : matches_interval (ptr, entry->new_value, entry->size) ? 2 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_cleanup, TYPE_POINTER, ptr, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->ptr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_empty, TYPE_POINTER, start, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->start, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY2 (binary_protocol_thread_suspend, TYPE_POINTER, thread, TYPE_POINTER, stopped_ip)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_restart, TYPE_POINTER, thread)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_register, TYPE_POINTER, thread)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_unregister, TYPE_POINTER, thread)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY6 (binary_protocol_missing_remset, TYPE_POINTER, obj, TYPE_POINTER, obj_vtable, TYPE_INT, offset, TYPE_POINTER, value, TYPE_POINTER, value_vtable, TYPE_INT, value_pinned)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->value ? 3 : ptr == (char*)entry->obj + entry->offset ? BINARY_PROTOCOL_MATCH : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->obj_vtable || ptr == entry->value_vtable)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_alloc_pinned, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_alloc_degraded, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_card_scan, TYPE_POINTER, start, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->start, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY3 (binary_protocol_cement, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_INT, size)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (ptr == entry->vtable)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY0 (binary_protocol_cement_reset)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_dislink_update, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_INT, track, TYPE_INT, staged)
-CUSTOM_PRINT(entry->obj ? printf ("link %p obj %p staged %d track %d", entry->link, entry->obj, entry->staged, entry->track) : printf ("link %p obj %p staged %d", entry->link, entry->obj, entry->staged))
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_dislink_update_staged, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_INT, track, TYPE_INT, index)
-CUSTOM_PRINT(entry->obj ? printf ("link %p obj %p index %d track %d", entry->link, entry->obj, entry->index, entry->track) : printf ("link %p obj %p index %d", entry->link, entry->obj, entry->index))
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_dislink_process_staged, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_INT, index)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_begin, TYPE_POINTER, domain)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_end, TYPE_POINTER, domain)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (TRUE)
-MATCH_INDEX (BINARY_PROTOCOL_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_enqueue, TYPE_POINTER, queue, TYPE_POINTER, cursor, TYPE_POINTER, value)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_dequeue, TYPE_POINTER, queue, TYPE_POINTER, cursor, TYPE_POINTER, value)
-DEFAULT_PRINT ()
-IS_ALWAYS_MATCH (FALSE)
-MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
-IS_VTABLE_MATCH (FALSE)
-END_PROTOCOL_ENTRY_HEAVY
-
-#undef BEGIN_PROTOCOL_ENTRY0
-#undef BEGIN_PROTOCOL_ENTRY1
-#undef BEGIN_PROTOCOL_ENTRY2
-#undef BEGIN_PROTOCOL_ENTRY3
-#undef BEGIN_PROTOCOL_ENTRY4
-#undef BEGIN_PROTOCOL_ENTRY5
-#undef BEGIN_PROTOCOL_ENTRY6
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY0
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY1
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY2
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY3
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY4
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY5
-#undef BEGIN_PROTOCOL_ENTRY_HEAVY6
-
-#undef FLUSH
-
-#undef DEFAULT_PRINT
-#undef CUSTOM_PRINT
-
-#undef IS_ALWAYS_MATCH
-#undef MATCH_INDEX
-#undef IS_VTABLE_MATCH
-
-#undef END_PROTOCOL_ENTRY
-#undef END_PROTOCOL_ENTRY_HEAVY
diff --git a/mono/metadata/sgen-protocol.c b/mono/metadata/sgen-protocol.c
deleted file mode 100644 (file)
index 22f70c3..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * sgen-protocol.c: Binary protocol of internal activity, to aid
- * debugging.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifdef HAVE_SGEN_GC
-
-#include "config.h"
-#include "sgen-conf.h"
-#include "sgen-gc.h"
-#include "sgen-protocol.h"
-#include "sgen-memory-governor.h"
-#include "utils/mono-mmap.h"
-#include "utils/mono-threads.h"
-
-#include <errno.h>
-#ifdef HAVE_UNISTD_H
-#include <fcntl.h>
-#endif
-
-/* FIXME Implement binary protocol IO on systems that don't have unistd */
-#ifdef HAVE_UNISTD_H
-/* If valid, dump binary protocol to this file */
-static int binary_protocol_file = -1;
-
-/* We set this to -1 to indicate an exclusive lock */
-static volatile int binary_protocol_use_count = 0;
-
-#define BINARY_PROTOCOL_BUFFER_SIZE    (65536 - 2 * 8)
-
-typedef struct _BinaryProtocolBuffer BinaryProtocolBuffer;
-struct _BinaryProtocolBuffer {
-       BinaryProtocolBuffer * volatile next;
-       volatile int index;
-       unsigned char buffer [BINARY_PROTOCOL_BUFFER_SIZE];
-};
-
-static BinaryProtocolBuffer * volatile binary_protocol_buffers = NULL;
-
-static char* filename_or_prefix = NULL;
-static int current_file_index = 0;
-static long long current_file_size = 0;
-static long long file_size_limit;
-
-static char*
-filename_for_index (int index)
-{
-       char *filename;
-
-       SGEN_ASSERT (0, file_size_limit > 0, "Indexed binary protocol filename must only be used with file size limit");
-
-       filename = sgen_alloc_internal_dynamic (strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
-       sprintf (filename, "%s.%d", filename_or_prefix, index);
-
-       return filename;
-}
-
-static void
-free_filename (char *filename)
-{
-       SGEN_ASSERT (0, file_size_limit > 0, "Indexed binary protocol filename must only be used with file size limit");
-
-       sgen_free_internal_dynamic (filename, strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL);
-}
-
-static void
-binary_protocol_open_file (void)
-{
-       char *filename;
-
-       if (file_size_limit > 0)
-               filename = filename_for_index (current_file_index);
-       else
-               filename = filename_or_prefix;
-
-       do {
-               binary_protocol_file = open (filename, O_CREAT|O_WRONLY|O_TRUNC, 0644);
-               if (binary_protocol_file == -1 && errno != EINTR)
-                       break; /* Failed */
-       } while (binary_protocol_file == -1);
-
-       if (file_size_limit > 0)
-               free_filename (filename);
-}
-#endif
-
-void
-binary_protocol_init (const char *filename, long long limit)
-{
-#ifdef HAVE_UNISTD_H
-       filename_or_prefix = sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
-       strcpy (filename_or_prefix, filename);
-
-       file_size_limit = limit;
-
-       binary_protocol_open_file ();
-#endif
-}
-
-gboolean
-binary_protocol_is_enabled (void)
-{
-#ifdef HAVE_UNISTD_H
-       return binary_protocol_file != -1;
-#else
-       return FALSE;
-#endif
-}
-
-#ifdef HAVE_UNISTD_H
-
-static void
-close_binary_protocol_file (void)
-{
-       while (close (binary_protocol_file) == -1 && errno == EINTR)
-               ;
-       binary_protocol_file = -1;
-}
-
-static gboolean
-try_lock_exclusive (void)
-{
-       do {
-               if (binary_protocol_use_count)
-                       return FALSE;
-       } while (InterlockedCompareExchange (&binary_protocol_use_count, -1, 0) != 0);
-       mono_memory_barrier ();
-       return TRUE;
-}
-
-static void
-unlock_exclusive (void)
-{
-       mono_memory_barrier ();
-       SGEN_ASSERT (0, binary_protocol_use_count == -1, "Exclusively locked count must be -1");
-       if (InterlockedCompareExchange (&binary_protocol_use_count, 0, -1) != -1)
-               SGEN_ASSERT (0, FALSE, "Somebody messed with the exclusive lock");
-}
-
-static void
-lock_recursive (void)
-{
-       int old_count;
-       do {
-       retry:
-               old_count = binary_protocol_use_count;
-               if (old_count < 0) {
-                       /* Exclusively locked - retry */
-                       /* FIXME: short back-off */
-                       goto retry;
-               }
-       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count + 1, old_count) != old_count);
-       mono_memory_barrier ();
-}
-
-static void
-unlock_recursive (void)
-{
-       int old_count;
-       mono_memory_barrier ();
-       do {
-               old_count = binary_protocol_use_count;
-               SGEN_ASSERT (0, old_count > 0, "Locked use count must be at least 1");
-       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count - 1, old_count) != old_count);
-}
-
-static void
-binary_protocol_flush_buffer (BinaryProtocolBuffer *buffer)
-{
-       ssize_t ret;
-       size_t to_write = buffer->index;
-       size_t written = 0;
-       g_assert (buffer->index > 0);
-
-       while (written < to_write) {
-               ret = write (binary_protocol_file, buffer->buffer + written, to_write - written);
-               if (ret >= 0)
-                       written += ret;
-               else if (errno == EINTR)
-                       continue;
-               else
-                       close_binary_protocol_file ();
-       }
-
-       current_file_size += buffer->index;
-
-       sgen_free_os_memory (buffer, sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL);
-}
-
-static void
-binary_protocol_check_file_overflow (void)
-{
-       if (file_size_limit <= 0 || current_file_size < file_size_limit)
-               return;
-
-       close_binary_protocol_file ();
-
-       if (current_file_index > 0) {
-               char *filename = filename_for_index (current_file_index - 1);
-               unlink (filename);
-               free_filename (filename);
-       }
-
-       ++current_file_index;
-       current_file_size = 0;
-
-       binary_protocol_open_file ();
-}
-#endif
-
-void
-binary_protocol_flush_buffers (gboolean force)
-{
-#ifdef HAVE_UNISTD_H
-       int num_buffers = 0, i;
-       BinaryProtocolBuffer *buf;
-       BinaryProtocolBuffer **bufs;
-
-       if (binary_protocol_file == -1)
-               return;
-
-       if (!force && !try_lock_exclusive ())
-               return;
-
-       for (buf = binary_protocol_buffers; buf != NULL; buf = buf->next)
-               ++num_buffers;
-       bufs = sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
-       for (buf = binary_protocol_buffers, i = 0; buf != NULL; buf = buf->next, i++)
-               bufs [i] = buf;
-       SGEN_ASSERT (0, i == num_buffers, "Binary protocol buffer count error");
-
-       binary_protocol_buffers = NULL;
-
-       for (i = num_buffers - 1; i >= 0; --i) {
-               binary_protocol_flush_buffer (bufs [i]);
-               binary_protocol_check_file_overflow ();
-       }
-
-       sgen_free_internal_dynamic (buf, num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL);
-
-       if (!force)
-               unlock_exclusive ();
-#endif
-}
-
-#ifdef HAVE_UNISTD_H
-static BinaryProtocolBuffer*
-binary_protocol_get_buffer (int length)
-{
-       BinaryProtocolBuffer *buffer, *new_buffer;
- retry:
-       buffer = binary_protocol_buffers;
-       if (buffer && buffer->index + length <= BINARY_PROTOCOL_BUFFER_SIZE)
-               return buffer;
-
-       new_buffer = sgen_alloc_os_memory (sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging memory");
-       new_buffer->next = buffer;
-       new_buffer->index = 0;
-
-       if (InterlockedCompareExchangePointer ((void**)&binary_protocol_buffers, new_buffer, buffer) != buffer) {
-               sgen_free_os_memory (new_buffer, sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL);
-               goto retry;
-       }
-
-       return new_buffer;
-}
-#endif
-
-static void
-protocol_entry (unsigned char type, gpointer data, int size)
-{
-#ifdef HAVE_UNISTD_H
-       int index;
-       BinaryProtocolBuffer *buffer;
-
-       if (binary_protocol_file == -1)
-               return;
-
-       if (sgen_is_worker_thread (mono_native_thread_id_get ()))
-               type |= 0x80;
-
-       lock_recursive ();
-
- retry:
-       buffer = binary_protocol_get_buffer (size + 1);
- retry_same_buffer:
-       index = buffer->index;
-       if (index + 1 + size > BINARY_PROTOCOL_BUFFER_SIZE)
-               goto retry;
-
-       if (InterlockedCompareExchange (&buffer->index, index + 1 + size, index) != index)
-               goto retry_same_buffer;
-
-       /* FIXME: if we're interrupted at this point, we have a buffer
-          entry that contains random data. */
-
-       buffer->buffer [index++] = type;
-       memcpy (buffer->buffer + index, data, size);
-       index += size;
-
-       g_assert (index <= BINARY_PROTOCOL_BUFFER_SIZE);
-
-       unlock_recursive ();
-#endif
-}
-
-#define TYPE_INT int
-#define TYPE_LONGLONG long long
-#define TYPE_SIZE size_t
-#define TYPE_POINTER gpointer
-
-#define BEGIN_PROTOCOL_ENTRY0(method) \
-       void method (void) { \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = NULL; \
-               int __size = 0;
-#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
-       void method (t1 f1) { \
-               PROTOCOL_STRUCT(method) __entry = { f1 }; \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = &__entry; \
-               int __size = sizeof (PROTOCOL_STRUCT(method));
-#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
-       void method (t1 f1, t2 f2) { \
-               PROTOCOL_STRUCT(method) __entry = { f1, f2 }; \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = &__entry; \
-               int __size = sizeof (PROTOCOL_STRUCT(method));
-#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
-       void method (t1 f1, t2 f2, t3 f3) { \
-               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3 }; \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = &__entry; \
-               int __size = sizeof (PROTOCOL_STRUCT(method));
-#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       void method (t1 f1, t2 f2, t3 f3, t4 f4) { \
-               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3, f4 }; \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = &__entry; \
-               int __size = sizeof (PROTOCOL_STRUCT(method));
-#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5) { \
-               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3, f4, f5 }; \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = &__entry; \
-               int __size = sizeof (PROTOCOL_STRUCT(method));
-#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6) { \
-               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3, f4, f5, f6 }; \
-               int __type = PROTOCOL_ID(method); \
-               gpointer __data = &__entry; \
-               int __size = sizeof (PROTOCOL_STRUCT(method));
-
-#define FLUSH() \
-               binary_protocol_flush_buffers (FALSE);
-
-#define DEFAULT_PRINT()
-#define CUSTOM_PRINT(_)
-
-#define IS_ALWAYS_MATCH(_)
-#define MATCH_INDEX(_)
-#define IS_VTABLE_MATCH(_)
-
-#define END_PROTOCOL_ENTRY \
-               protocol_entry (__type, __data, __size); \
-       }
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
-       BEGIN_PROTOCOL_ENTRY0 (method)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
-       BEGIN_PROTOCOL_ENTRY1 (method,t1,f1)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
-       BEGIN_PROTOCOL_ENTRY2 (method,t1,f1,t2,f2)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
-       BEGIN_PROTOCOL_ENTRY3 (method,t1,f1,t2,f2,t3,f3)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       BEGIN_PROTOCOL_ENTRY4 (method,t1,f1,t2,f2,t3,f3,t4,f4)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       BEGIN_PROTOCOL_ENTRY5 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
-
-#define END_PROTOCOL_ENTRY_HEAVY \
-       END_PROTOCOL_ENTRY
-#else
-#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
-
-#define END_PROTOCOL_ENTRY_HEAVY
-#endif
-
-#include "sgen-protocol-def.h"
-
-#undef TYPE_INT
-#undef TYPE_LONGLONG
-#undef TYPE_SIZE
-#undef TYPE_POINTER
-
-#endif /* HAVE_SGEN_GC */
diff --git a/mono/metadata/sgen-protocol.h b/mono/metadata/sgen-protocol.h
deleted file mode 100644 (file)
index 31e1038..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * sgen-protocol.h: Binary protocol of internal activity, to aid
- * debugging.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MONO_SGENPROTOCOL_H__
-#define __MONO_SGENPROTOCOL_H__
-
-#include "sgen-gc.h"
-
-/* Special indices returned by MATCH_INDEX. */
-#define BINARY_PROTOCOL_NO_MATCH (-1)
-#define BINARY_PROTOCOL_MATCH (-2)
-
-#define PROTOCOL_ID(method) method ## _id
-#define PROTOCOL_STRUCT(method) method ## _struct
-
-#define TYPE_INT int
-#define TYPE_LONGLONG long long
-#define TYPE_SIZE size_t
-#define TYPE_POINTER gpointer
-
-enum {
-#define BEGIN_PROTOCOL_ENTRY0(method) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) PROTOCOL_ID(method),
-#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) PROTOCOL_ID(method),
-
-#define FLUSH()
-
-#define DEFAULT_PRINT()
-#define CUSTOM_PRINT(_)
-
-#define IS_ALWAYS_MATCH(_)
-#define MATCH_INDEX(_)
-#define IS_VTABLE_MATCH(_)
-
-#define END_PROTOCOL_ENTRY
-#define END_PROTOCOL_ENTRY_HEAVY
-
-#include "sgen-protocol-def.h"
-};
-
-#define BEGIN_PROTOCOL_ENTRY0(method)
-#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
-       typedef struct { \
-               t1 f1; \
-       } PROTOCOL_STRUCT(method);
-#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
-       typedef struct { \
-               t1 f1; \
-               t2 f2; \
-       } PROTOCOL_STRUCT(method);
-#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
-       typedef struct { \
-               t1 f1; \
-               t2 f2; \
-               t3 f3; \
-       } PROTOCOL_STRUCT(method);
-#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       typedef struct { \
-               t1 f1; \
-               t2 f2; \
-               t3 f3; \
-               t4 f4; \
-       } PROTOCOL_STRUCT(method);
-#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       typedef struct { \
-               t1 f1; \
-               t2 f2; \
-               t3 f3; \
-               t4 f4; \
-               t5 f5; \
-       } PROTOCOL_STRUCT(method);
-#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       typedef struct { \
-               t1 f1; \
-               t2 f2; \
-               t3 f3; \
-               t4 f4; \
-               t5 f5; \
-               t6 f6; \
-       } PROTOCOL_STRUCT(method);
-
-#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
-       BEGIN_PROTOCOL_ENTRY0 (method)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
-       BEGIN_PROTOCOL_ENTRY1 (method,t1,f1)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
-       BEGIN_PROTOCOL_ENTRY2 (method,t1,f1,t2,f2)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
-       BEGIN_PROTOCOL_ENTRY3 (method,t1,f1,t2,f2,t3,f3)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       BEGIN_PROTOCOL_ENTRY4 (method,t1,f1,t2,f2,t3,f3,t4,f4)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       BEGIN_PROTOCOL_ENTRY5 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
-
-#define FLUSH()
-
-#define DEFAULT_PRINT()
-#define CUSTOM_PRINT(_)
-
-#define IS_ALWAYS_MATCH(_)
-#define MATCH_INDEX(_)
-#define IS_VTABLE_MATCH(_)
-
-#define END_PROTOCOL_ENTRY
-#define END_PROTOCOL_ENTRY_HEAVY
-
-#include "sgen-protocol-def.h"
-
-/* missing: finalizers, roots, non-store wbarriers */
-
-void binary_protocol_init (const char *filename, long long limit);
-gboolean binary_protocol_is_enabled (void);
-
-void binary_protocol_flush_buffers (gboolean force);
-
-#define BEGIN_PROTOCOL_ENTRY0(method) \
-       void method (void);
-#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
-       void method (t1 f1);
-#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
-       void method (t1 f1, t2 f2);
-#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
-       void method (t1 f1, t2 f2, t3 f3);
-#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       void method (t1 f1, t2 f2, t3 f3, t4 f4);
-#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5);
-#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6);
-
-#ifdef SGEN_HEAVY_BINARY_PROTOCOL
-#define binary_protocol_is_heavy_enabled()     binary_protocol_is_enabled ()
-
-#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
-       BEGIN_PROTOCOL_ENTRY0 (method)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
-       BEGIN_PROTOCOL_ENTRY1 (method,t1,f1)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
-       BEGIN_PROTOCOL_ENTRY2 (method,t1,f1,t2,f2)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
-       BEGIN_PROTOCOL_ENTRY3 (method,t1,f1,t2,f2,t3,f3)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       BEGIN_PROTOCOL_ENTRY4 (method,t1,f1,t2,f2,t3,f3,t4,f4)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       BEGIN_PROTOCOL_ENTRY5 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
-#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
-#else
-#define binary_protocol_is_heavy_enabled()     FALSE
-
-#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
-       static inline void method (void) {}
-#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
-       static inline void method (t1 f1) {}
-#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
-       static inline void method (t1 f1, t2 f2) {}
-#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
-       static inline void method (t1 f1, t2 f2, t3 f3) {}
-#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
-       static inline void method (t1 f1, t2 f2, t3 f3, t4 f4) {}
-#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
-       static inline void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5) {}
-#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
-       static inline void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6) {}
-#endif
-
-#define FLUSH()
-
-#define DEFAULT_PRINT()
-#define CUSTOM_PRINT(_)
-
-#define IS_ALWAYS_MATCH(_)
-#define MATCH_INDEX(_)
-#define IS_VTABLE_MATCH(_)
-
-#define END_PROTOCOL_ENTRY
-#define END_PROTOCOL_ENTRY_HEAVY
-
-#include "sgen-protocol-def.h"
-
-#undef TYPE_INT
-#undef TYPE_LONGLONG
-#undef TYPE_SIZE
-#undef TYPE_POINTER
-
-#endif
diff --git a/mono/metadata/sgen-qsort.c b/mono/metadata/sgen-qsort.c
deleted file mode 100644 (file)
index 1290e04..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * sgen-qsort.c: Quicksort.
- *
- * Copyright (C) 2013 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-
-#define ELEM(i)                (((unsigned char*)base) + ((i) * width))
-#define SWAP(i,j)      do {                                    \
-               size_t __i = (i), __j = (j);                    \
-               if (__i != __j) {                               \
-                       memcpy (swap_tmp, ELEM (__i), width);   \
-                       memcpy (ELEM (__i), ELEM (__j), width); \
-                       memcpy (ELEM (__j), swap_tmp, width);   \
-               }                                               \
-       } while (0)
-
-static size_t
-partition (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*), unsigned char *pivot_tmp, unsigned char *swap_tmp)
-{
-       size_t pivot_idx = nel >> 1;
-       size_t s, i;
-
-       memcpy (pivot_tmp, ELEM (pivot_idx), width);
-       SWAP (pivot_idx, nel - 1);
-       s = 0;
-       for (i = 0; i < nel - 1; ++i) {
-               if (compar (ELEM (i), pivot_tmp) <= 0) {
-                       SWAP (i, s);
-                       ++s;
-               }
-       }
-       SWAP (s, nel - 1);
-       return s;
-}
-
-static void
-qsort_rec (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*), unsigned char *pivot_tmp, unsigned char *swap_tmp)
-{
-       size_t pivot_idx;
-
-       if (nel <= 1)
-               return;
-
-       pivot_idx = partition (base, nel, width, compar, pivot_tmp, swap_tmp);
-       qsort_rec (base, pivot_idx, width, compar, pivot_tmp, swap_tmp);
-       if (pivot_idx < nel)
-               qsort_rec (ELEM (pivot_idx + 1), nel - pivot_idx - 1, width, compar, pivot_tmp, swap_tmp);
-}
-
-void
-sgen_qsort (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*))
-{
-#ifndef _MSC_VER
-       unsigned char pivot_tmp [width];
-       unsigned char swap_tmp [width];
-#else
-       unsigned char* pivot_tmp = (unsigned char*) alloca(width);
-       unsigned char* swap_tmp = (unsigned char*) alloca(width);
-#endif
-
-       qsort_rec (base, nel, width, compar, pivot_tmp, swap_tmp);
-}
-
-#endif
diff --git a/mono/metadata/sgen-qsort.h b/mono/metadata/sgen-qsort.h
deleted file mode 100644 (file)
index 75577e5..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * sgen-qsort.h: Fast inline sorting
- *
- * Copyright (C) 2014 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __MONO_SGENQSORT_H__
-#define __MONO_SGENQSORT_H__
-
-#define DEF_QSORT_INLINE(NAME,ARRAY_TYPE,COMPARE_FUN)  \
-static size_t partition_##NAME (ARRAY_TYPE base[], size_t nel) {       \
-       size_t pivot_idx = nel >> 1;    \
-       size_t s, i;    \
-       ARRAY_TYPE pivot = base [pivot_idx];    \
-       { ARRAY_TYPE tmp = base [pivot_idx]; base [pivot_idx] = base [nel - 1]; base [nel - 1] = tmp; } \
-       s = 0;  \
-       for (i = 0; i < nel - 1; ++i) { \
-               if (COMPARE_FUN (base [i], pivot) <= 0) {       \
-                       { ARRAY_TYPE tmp = base [i]; base [i] = base [s]; base [s] = tmp; }     \
-                       ++s;    \
-               }       \
-       }       \
-       { ARRAY_TYPE tmp = base [s]; base [s] = base [nel - 1]; base [nel - 1] = tmp; } \
-       return s;       \
-}      \
-static void rec_##NAME (ARRAY_TYPE base[], size_t nel) {       \
-       size_t pivot_idx;       \
-       if (nel <= 1)   \
-               return; \
-       pivot_idx = partition_##NAME (base, nel); \
-       rec_##NAME (base, pivot_idx);   \
-       if (pivot_idx < nel)    \
-               rec_##NAME (&base[pivot_idx + 1], nel - pivot_idx - 1); \
-}      \
-static void qsort_##NAME (ARRAY_TYPE base[], size_t nel) {     \
-       rec_##NAME (base, nel); \
-}      \
-
-
-#endif
diff --git a/mono/metadata/sgen-scan-object.h b/mono/metadata/sgen-scan-object.h
deleted file mode 100644 (file)
index 30c43fb..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * sgen-scan-object.h: Generic object scan.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2013 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- * Scans one object, using the OBJ_XXX macros.  The start of the
- * object must be given in the variable "char* start".  Afterwards,
- * "start" will point to the start of the next object, if the scanned
- * object contained references.  If not, the value of "start" should
- * be considered undefined after executing this code.  The object's
- * GC descriptor must be in the variable "mword desc".
- *
- * The macro `HANDLE_PTR` will be invoked for every reference encountered while scanning the
- * object.  It is called with two parameters: The pointer to the reference (not the
- * reference itself!) as well as the pointer to the scanned object.
- *
- * Modifiers (automatically undefined):
- *
- * SCAN_OBJECT_NOSCAN - if defined, don't actually scan the object,
- * i.e. don't invoke the OBJ_XXX macros.
- *
- * SCAN_OBJECT_NOVTABLE - desc is provided by the includer, instead of
- * vt.  Complex arrays cannot not be scanned.
- *
- * SCAN_OBJECT_PROTOCOL - if defined, binary protocol the scan.
- * Should only be used for scanning that's done for the actual
- * collection, not for debugging scans.
- */
-
-{
-#ifndef SCAN_OBJECT_NOVTABLE
-#if defined(SGEN_HEAVY_BINARY_PROTOCOL) && defined(SCAN_OBJECT_PROTOCOL)
-       binary_protocol_scan_begin (start, SGEN_LOAD_VTABLE (start), sgen_safe_object_get_size ((MonoObject*)start));
-#endif
-#else
-#if defined(SGEN_HEAVY_BINARY_PROTOCOL) && defined(SCAN_OBJECT_PROTOCOL)
-       binary_protocol_scan_vtype_begin (start + sizeof (MonoObject), size);
-#endif
-#endif
-       switch (desc & DESC_TYPE_MASK) {
-       case DESC_TYPE_RUN_LENGTH:
-#define SCAN OBJ_RUN_LEN_FOREACH_PTR (desc, start)
-#ifndef SCAN_OBJECT_NOSCAN
-               SCAN;
-#endif
-#undef SCAN
-               break;
-       case DESC_TYPE_VECTOR:
-#define SCAN OBJ_VECTOR_FOREACH_PTR (desc, start)
-#ifndef SCAN_OBJECT_NOSCAN
-               SCAN;
-#endif
-#undef SCAN
-               break;
-       case DESC_TYPE_BITMAP:
-#define SCAN OBJ_BITMAP_FOREACH_PTR (desc, start)
-#ifndef SCAN_OBJECT_NOSCAN
-               SCAN;
-#endif
-#undef SCAN
-               break;
-       case DESC_TYPE_COMPLEX:
-               /* this is a complex object */
-#define SCAN OBJ_COMPLEX_FOREACH_PTR (desc, start)
-#ifndef SCAN_OBJECT_NOSCAN
-               SCAN;
-#endif
-#undef SCAN
-               break;
-#ifndef SCAN_OBJECT_NOVTABLE
-       case DESC_TYPE_COMPLEX_ARR:
-               /* this is an array of complex structs */
-#define SCAN OBJ_COMPLEX_ARR_FOREACH_PTR (desc, start)
-#ifndef SCAN_OBJECT_NOSCAN
-               SCAN;
-#endif
-#undef SCAN
-               break;
-#endif
-       case DESC_TYPE_SMALL_PTRFREE:
-       case DESC_TYPE_COMPLEX_PTRFREE:
-               /*Nothing to do*/
-               break;
-       default:
-               g_assert_not_reached ();
-       }
-}
-
-#undef SCAN_OBJECT_NOSCAN
-#undef SCAN_OBJECT_NOVTABLE
-#undef SCAN_OBJECT_PROTOCOL
diff --git a/mono/metadata/sgen-simple-nursery.c b/mono/metadata/sgen-simple-nursery.c
deleted file mode 100644 (file)
index 2cfb9d3..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * sgen-simple-nursery.c: Simple always promote nursery.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/profiler-private.h"
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-layout-stats.h"
-
-static inline char*
-alloc_for_promotion (MonoVTable *vtable, char *obj, size_t objsize, gboolean has_references)
-{
-       return major_collector.alloc_object (vtable, objsize, has_references);
-}
-
-static SgenFragment*
-build_fragments_get_exclude_head (void)
-{
-       return NULL;
-}
-
-static void
-build_fragments_release_exclude_head (void)
-{
-}
-
-static void
-build_fragments_finish (SgenFragmentAllocator *allocator)
-{
-}
-
-static void
-prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
-{
-}
-
-static void
-clear_fragments (void)
-{      
-}
-
-static void
-init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
-{
-       sgen_fragment_allocator_add (allocator, start, end);
-}
-
-
-/******************************************Copy/Scan functins ************************************************/
-
-#define SGEN_SIMPLE_NURSERY
-
-#define SERIAL_COPY_OBJECT simple_nursery_serial_copy_object
-#define SERIAL_COPY_OBJECT_FROM_OBJ simple_nursery_serial_copy_object_from_obj
-
-#include "sgen-minor-copy-object.h"
-#include "sgen-minor-scan-object.h"
-
-void
-sgen_simple_nursery_init (SgenMinorCollector *collector)
-{
-       collector->is_split = FALSE;
-
-       collector->alloc_for_promotion = alloc_for_promotion;
-
-       collector->prepare_to_space = prepare_to_space;
-       collector->clear_fragments = clear_fragments;
-       collector->build_fragments_get_exclude_head = build_fragments_get_exclude_head;
-       collector->build_fragments_release_exclude_head = build_fragments_release_exclude_head;
-       collector->build_fragments_finish = build_fragments_finish;
-       collector->init_nursery = init_nursery;
-
-       FILL_MINOR_COLLECTOR_COPY_OBJECT (collector);
-       FILL_MINOR_COLLECTOR_SCAN_OBJECT (collector);
-}
-
-
-#endif
diff --git a/mono/metadata/sgen-split-nursery.c b/mono/metadata/sgen-split-nursery.c
deleted file mode 100644 (file)
index f8312bf..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * sgen-splliy-nursery.c: 3-space based nursery collector.
- *
- * Author:
- *     Rodrigo Kumpera Kumpera <kumpera@gmail.com>
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright 2011-2012 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/profiler-private.h"
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-layout-stats.h"
-#include "utils/mono-memory-model.h"
-
-/*
-The nursery is logically divided into 3 spaces: Allocator space and two Survivor spaces.
-
-Objects are born (allocated by the mutator) in the Allocator Space.
-
-The Survivor spaces are divided in a copying collector style From and To spaces.
-The hole of each space switch on each collection.
-
-On each collection we process objects from the nursery this way:
-Objects from the Allocator Space are evacuated into the To Space.
-Objects from the Survivor From Space are evacuated into the old generation.
-
-
-The nursery is physically divided in two parts, set by the promotion barrier.
-
-The Allocator Space takes the botton part of the nursery.
-
-The Survivor spaces are intermingled in the top part of the nursery. It's done
-this way since the required size for the To Space depends on the survivor rate
-of objects from the Allocator Space. 
-
-During a collection when the object scan function see a nursery object it must
-determine if the object needs to be evacuated or left in place. Originally, this
-check was done by checking if a forwarding pointer is installed, but now an object
-can be in the To Space, it won't have a forwarding pointer and it must be left in place.
-
-In order to solve that we classify nursery memory been either in the From Space or in
-the To Space. Since the Allocator Space has the same behavior as the Survivor From Space
-they are unified for this purpoise - a bit confusing at first.
-
-This from/to classification is done on a larger granule than object to make the check efficient
-and, due to that, we must make sure that all fragemnts used to allocate memory from the To Space
-are naturally aligned in both ends to that granule to avoid wronly classifying a From Space object.
-
-TODO:
--The promotion barrier is statically defined to 50% of the nursery, it should be dinamically adjusted based
-on survival rates;
--We apply the same promotion policy to all objects, finalizable ones should age longer in the nursery;
--We apply the same promotion policy to all stages of a collection, maybe we should promote more aggressively
-objects from non-stack roots, specially those found in the remembered set;
--Fix our major collection trigger to happen before we do a minor GC and collect the nursery only once.
--Make the serial fragment allocator fast path inlineable
--Make aging threshold be based on survival rates and survivor occupancy;
--Change promotion barrier to be size and not address based;
--Pre allocate memory for young ages to make sure that on overflow only the older suffer;
--Get rid of par_alloc_buffer_refill_mutex so to the parallel collection of the nursery doesn't suck;
-*/
-
-/*FIXME Move this to a separate header. */
-#define _toi(ptr) ((size_t)ptr)
-#define make_ptr_mask(bits) ((1 << bits) - 1)
-#define align_down(ptr, bits) ((void*)(_toi(ptr) & ~make_ptr_mask (bits)))
-#define align_up(ptr, bits) ((void*) ((_toi(ptr) + make_ptr_mask (bits)) & ~make_ptr_mask (bits)))
-
-/*
-Even though the effective max age is 255, aging that much doesn't make sense.
-It might even make sense to use nimbles for age recording.
-*/
-#define MAX_AGE 15
-
-/*
- * Each age has its allocation buffer.  Whenever an object is to be
- * aged we try to fit it into its new age's allocation buffer.  If
- * that is not possible we get new space from the fragment allocator
- * and set the allocation buffer to that space (minus the space
- * required for the object).
- */
-
-typedef struct {
-       char *next;
-       char *end;
-} AgeAllocationBuffer;
-
-/* Limits the ammount of memory the mutator can have. */
-static char *promotion_barrier;
-
-/*
-Promotion age and alloc ratio are the two nursery knobs to control
-how much effort we want to spend on young objects.
-
-Allocation ratio should be the inverse of the expected survivor rate.
-The more objects surviver, the smaller the alloc ratio much be so we can
-age all objects.
-
-Promote age depends on how much effort we want to spend aging objects before
-we promote them to the old generation. If addional ages don't somewhat improve
-mortality, it's better avoid as they increase the cost of minor collections.
-
-*/
-
-
-/*
-If we're evacuating an object with this age or more, promote it.
-Age is the number of surviving collections of an object.
-*/
-static int promote_age = 2;
-
-/*
-Initial ratio of allocation and survivor spaces.
-This should be read as the fraction of the whole nursery dedicated
-for the allocator space.
-*/
-static float alloc_ratio = 60.f/100.f;
-
-
-static char *region_age;
-static size_t region_age_size;
-static AgeAllocationBuffer age_alloc_buffers [MAX_AGE];
-
-/* The collector allocs from here. */
-static SgenFragmentAllocator collector_allocator;
-
-static inline int
-get_object_age (char *object)
-{
-       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       return region_age [idx];
-}
-
-static void
-set_age_in_range (char *start, char *end, int age)
-{
-       char *region_start;
-       size_t region_idx, length;
-       region_idx = (start - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       region_start = &region_age [region_idx];
-       length = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       memset (region_start, age, length);
-}
-
-static inline void
-mark_bit (char *space_bitmap, char *pos)
-{
-       size_t idx = (pos - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       size_t byte = idx / 8;
-       int bit = idx & 0x7;
-
-       g_assert (byte < sgen_space_bitmap_size);
-       space_bitmap [byte] |= 1 << bit;
-}
-
-static void
-mark_bits_in_range (char *space_bitmap, char *start, char *end)
-{
-       start = align_down (start, SGEN_TO_SPACE_GRANULE_BITS);
-       end = align_up (end, SGEN_TO_SPACE_GRANULE_BITS);
-
-       for (;start < end; start += SGEN_TO_SPACE_GRANULE_IN_BYTES)
-               mark_bit (space_bitmap, start);
-}
-
-/*
- * This splits the fragments at the point of the promotion barrier.
- * Two allocator are actually involved here: The mutator allocator and
- * the collector allocator.  This function is called with the
- * collector, but it's a copy of the mutator allocator and contains
- * all the fragments in the nursery.  The fragments below the
- * promotion barrier are left with the mutator allocator and the ones
- * above are put into the collector allocator.
- */
-static void
-fragment_list_split (SgenFragmentAllocator *allocator)
-{
-       SgenFragment *prev = NULL, *list = allocator->region_head;
-
-       while (list) {
-               if (list->fragment_end > promotion_barrier) {
-                       if (list->fragment_start < promotion_barrier) {
-                               SgenFragment *res = sgen_fragment_allocator_alloc ();
-
-                               res->fragment_start = promotion_barrier;
-                               res->fragment_next = promotion_barrier;
-                               res->fragment_end = list->fragment_end;
-                               res->next = list->next;
-                               res->next_in_order = list->next_in_order;
-                               g_assert (res->fragment_end > res->fragment_start);
-
-                               list->fragment_end = promotion_barrier;
-                               list->next = list->next_in_order = NULL;
-                               set_age_in_range (list->fragment_start, list->fragment_end, 0);
-
-                               allocator->region_head = allocator->alloc_head = res;
-                               return;
-                       } else {
-                               if (prev)
-                                       prev->next = prev->next_in_order = NULL;
-                               allocator->region_head = allocator->alloc_head = list;
-                               return;
-                       }
-               }
-               set_age_in_range (list->fragment_start, list->fragment_end, 0);
-               prev = list;
-               list = list->next;
-       }
-       allocator->region_head = allocator->alloc_head = NULL;
-}
-
-/******************************************Minor Collector API ************************************************/
-
-#define AGE_ALLOC_BUFFER_MIN_SIZE SGEN_TO_SPACE_GRANULE_IN_BYTES
-#define AGE_ALLOC_BUFFER_DESIRED_SIZE (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8)
-
-static char*
-alloc_for_promotion_slow_path (int age, size_t objsize)
-{
-       char *p;
-       size_t allocated_size;
-       size_t aligned_objsize = (size_t)align_up (objsize, SGEN_TO_SPACE_GRANULE_BITS);
-
-       p = sgen_fragment_allocator_serial_range_alloc (
-               &collector_allocator,
-               MAX (aligned_objsize, AGE_ALLOC_BUFFER_DESIRED_SIZE),
-               MAX (aligned_objsize, AGE_ALLOC_BUFFER_MIN_SIZE),
-               &allocated_size);
-       if (p) {
-               set_age_in_range (p, p + allocated_size, age);
-               sgen_clear_range (age_alloc_buffers [age].next, age_alloc_buffers [age].end);
-               age_alloc_buffers [age].next = p + objsize;
-               age_alloc_buffers [age].end = p + allocated_size;
-       }
-       return p;
-}
-
-static inline char*
-alloc_for_promotion (MonoVTable *vtable, char *obj, size_t objsize, gboolean has_references)
-{
-       char *p = NULL;
-       int age;
-
-       age = get_object_age (obj);
-       if (age >= promote_age)
-               return major_collector.alloc_object (vtable, objsize, has_references);
-
-       /* Promote! */
-       ++age;
-
-       p = age_alloc_buffers [age].next;
-       if (G_LIKELY (p + objsize <= age_alloc_buffers [age].end)) {
-        age_alloc_buffers [age].next += objsize;
-       } else {
-               p = alloc_for_promotion_slow_path (age, objsize);
-               if (!p)
-                       return major_collector.alloc_object (vtable, objsize, has_references);
-       }
-
-       *(MonoVTable**)p = vtable;
-
-       return p;
-}
-
-static char*
-minor_alloc_for_promotion (MonoVTable *vtable, char *obj, size_t objsize, gboolean has_references)
-{
-       /*
-       We only need to check for a non-nursery object if we're doing a major collection.
-       */
-       if (!sgen_ptr_in_nursery (obj))
-               return major_collector.alloc_object (vtable, objsize, has_references);
-
-       return alloc_for_promotion (vtable, obj, objsize, has_references);
-}
-
-static SgenFragment*
-build_fragments_get_exclude_head (void)
-{
-       int i;
-       for (i = 0; i < MAX_AGE; ++i) {
-               /*If we OOM'd on the last collection ->end might be null while ->next not.*/
-               if (age_alloc_buffers [i].end)
-                       sgen_clear_range (age_alloc_buffers [i].next, age_alloc_buffers [i].end);
-       }
-
-       return collector_allocator.region_head;
-}
-
-static void
-build_fragments_release_exclude_head (void)
-{
-       sgen_fragment_allocator_release (&collector_allocator);
-}
-
-static void
-build_fragments_finish (SgenFragmentAllocator *allocator)
-{
-       /* We split the fragment list based on the promotion barrier. */
-       collector_allocator = *allocator;
-       fragment_list_split (&collector_allocator);
-}
-
-static void
-prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
-{
-       SgenFragment **previous, *frag;
-
-       memset (to_space_bitmap, 0, space_bitmap_size);
-       memset (age_alloc_buffers, 0, sizeof (age_alloc_buffers));
-
-       previous = &collector_allocator.alloc_head;
-
-       for (frag = *previous; frag; frag = *previous) {
-               char *start = align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS);
-               char *end = align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS);
-
-               /* Fragment is too small to be usable. */
-               if ((end - start) < SGEN_MAX_NURSERY_WASTE) {
-                       sgen_clear_range (frag->fragment_next, frag->fragment_end);
-                       frag->fragment_next = frag->fragment_end = frag->fragment_start;
-                       *previous = frag->next;
-                       continue;
-               }
-
-               /*
-               We need to insert 3 phony objects so the fragments build step can correctly
-               walk the nursery.
-               */
-
-               /* Clean the fragment range. */
-               sgen_clear_range (start, end);
-               /* We need a phony object in between the original fragment start and the effective one. */
-               if (start != frag->fragment_next)
-                       sgen_clear_range (frag->fragment_next, start);
-               /* We need an phony object in between the new fragment end and the original fragment end. */
-               if (end != frag->fragment_end)
-                       sgen_clear_range (end, frag->fragment_end);
-
-               frag->fragment_start = frag->fragment_next = start;
-               frag->fragment_end = end;
-               mark_bits_in_range (to_space_bitmap, start, end);
-               previous = &frag->next;
-       }
-}
-
-static void
-clear_fragments (void)
-{
-       sgen_clear_allocator_fragments (&collector_allocator);
-}
-
-static void
-init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
-{
-       int alloc_quote = (int)((end - start) * alloc_ratio);
-       promotion_barrier = align_down (start + alloc_quote, 3);
-       sgen_fragment_allocator_add (allocator, start, promotion_barrier);
-       sgen_fragment_allocator_add (&collector_allocator, promotion_barrier, end);
-
-       region_age_size = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
-       region_age = g_malloc0 (region_age_size);
-}
-
-static gboolean
-handle_gc_param (const char *opt)
-{
-       if (g_str_has_prefix (opt, "alloc-ratio=")) {
-               const char *arg = strchr (opt, '=') + 1;
-               int percentage = atoi (arg);
-               if (percentage < 1 || percentage > 100) {
-                       fprintf (stderr, "alloc-ratio must be an integer in the range 1-100.\n");
-                       exit (1);
-               }
-               alloc_ratio = (float)percentage / 100.0f;
-               return TRUE;
-       }
-
-       if (g_str_has_prefix (opt, "promotion-age=")) {
-               const char *arg = strchr (opt, '=') + 1;
-               promote_age = atoi (arg);
-               if (promote_age < 1 || promote_age >= MAX_AGE) {
-                       fprintf (stderr, "promotion-age must be an integer in the range 1-%d.\n", MAX_AGE - 1);
-                       exit (1);
-               }
-               return TRUE;
-       }
-       return FALSE;
-}
-
-static void
-print_gc_param_usage (void)
-{
-       fprintf (stderr,
-                       ""
-                       "  alloc-ratio=P (where P is a percentage, an integer in 1-100)\n"
-                       "  promotion-age=P (where P is a number, an integer in 1-%d)\n",
-                       MAX_AGE - 1
-                       );
-}
-
-/******************************************Copy/Scan functins ************************************************/
-
-#define SGEN_SPLIT_NURSERY
-
-#define SERIAL_COPY_OBJECT split_nursery_serial_copy_object
-#define SERIAL_COPY_OBJECT_FROM_OBJ split_nursery_serial_copy_object_from_obj
-
-#include "sgen-minor-copy-object.h"
-#include "sgen-minor-scan-object.h"
-
-void
-sgen_split_nursery_init (SgenMinorCollector *collector)
-{
-       collector->is_split = TRUE;
-
-       collector->alloc_for_promotion = minor_alloc_for_promotion;
-
-       collector->prepare_to_space = prepare_to_space;
-       collector->clear_fragments = clear_fragments;
-       collector->build_fragments_get_exclude_head = build_fragments_get_exclude_head;
-       collector->build_fragments_release_exclude_head = build_fragments_release_exclude_head;
-       collector->build_fragments_finish = build_fragments_finish;
-       collector->init_nursery = init_nursery;
-       collector->handle_gc_param = handle_gc_param;
-       collector->print_gc_param_usage = print_gc_param_usage;
-
-       FILL_MINOR_COLLECTOR_COPY_OBJECT (collector);
-       FILL_MINOR_COLLECTOR_SCAN_OBJECT (collector);
-}
-
-
-#endif
index b994e0bdf489bfe41fa7fa5a2a030ee1cf5564af..bc899f5d59c2fe1ebfda9eadfa9e99e890112ff9 100644 (file)
 #include "config.h"
 #ifdef HAVE_SGEN_GC
 
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-protocol.h"
-#include "metadata/sgen-memory-governor.h"
+#include "sgen/sgen-gc.h"
+#include "sgen/sgen-protocol.h"
+#include "sgen/sgen-memory-governor.h"
+#include "sgen/sgen-thread-pool.h"
 #include "metadata/profiler-private.h"
-#include "utils/mono-time.h"
-#include "utils/dtrace.h"
-#include "utils/mono-counters.h"
-#include "utils/mono-threads.h"
+#include "sgen/sgen-client.h"
+#include "metadata/sgen-bridge-internal.h"
+#include "metadata/gc-internal.h"
 
 #define TV_DECLARE SGEN_TV_DECLARE
 #define TV_GETTIME SGEN_TV_GETTIME
 #define TV_ELAPSED SGEN_TV_ELAPSED
 
-static int sgen_unified_suspend_restart_world (void);
-static int sgen_unified_suspend_stop_world (void);
+static void sgen_unified_suspend_restart_world (void);
+static void sgen_unified_suspend_stop_world (void);
+
+unsigned int sgen_global_stop_count = 0;
 
 inline static void*
 align_pointer (void *ptr)
@@ -67,18 +69,18 @@ update_current_thread_stack (void *start)
 #endif
        SgenThreadInfo *info = mono_thread_info_current ();
        
-       info->stack_start = align_pointer (&stack_guard);
-       g_assert (info->stack_start >= info->stack_start_limit && info->stack_start < info->stack_end);
+       info->client_info.stack_start = align_pointer (&stack_guard);
+       g_assert (info->client_info.stack_start >= info->client_info.stack_start_limit && info->client_info.stack_start < info->client_info.stack_end);
 #ifdef USE_MONO_CTX
        MONO_CONTEXT_GET_CURRENT (cur_thread_ctx);
-       memcpy (&info->ctx, &cur_thread_ctx, sizeof (MonoContext));
+       memcpy (&info->client_info.ctx, &cur_thread_ctx, sizeof (MonoContext));
        if (mono_gc_get_gc_callbacks ()->thread_suspend_func)
-               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->runtime_data, NULL, &info->ctx);
+               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->client_info.runtime_data, NULL, &info->client_info.ctx);
 #else
        ARCH_STORE_REGS (reg_ptr);
-       memcpy (&info->regs, reg_ptr, sizeof (info->regs));
+       memcpy (&info->client_info.regs, reg_ptr, sizeof (info->client_info.regs));
        if (mono_gc_get_gc_callbacks ()->thread_suspend_func)
-               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->runtime_data, NULL, NULL);
+               mono_gc_get_gc_callbacks ()->thread_suspend_func (info->client_info.runtime_data, NULL, NULL);
 #endif
 }
 
@@ -101,7 +103,7 @@ is_ip_in_managed_allocator (MonoDomain *domain, gpointer ip)
         * missing methods (#13951). To work around this, we disable the AOT fallback. For this to work, the JIT needs
         * to register the jit info for all GC critical methods after they are JITted/loaded.
         */
-       ji = mono_jit_info_table_find_internal (domain, ip, FALSE);
+       ji = mono_jit_info_table_find_internal (domain, ip, FALSE, FALSE);
        if (!ji)
                return FALSE;
 
@@ -121,17 +123,18 @@ restart_threads_until_none_in_managed_allocator (void)
                   allocator */
                FOREACH_THREAD_SAFE (info) {
                        gboolean result;
-                       if (info->skip || info->gc_disabled || info->suspend_done)
+                       if (info->client_info.skip || info->client_info.gc_disabled || info->client_info.suspend_done)
                                continue;
-                       if (mono_thread_info_is_live (info) && (!info->stack_start || info->in_critical_region || info->info.inside_critical_region ||
-                                       is_ip_in_managed_allocator (info->stopped_domain, info->stopped_ip))) {
+                       if (mono_thread_info_is_live (info) &&
+                                       (!info->client_info.stack_start || info->client_info.in_critical_region || info->client_info.info.inside_critical_region ||
+                                       is_ip_in_managed_allocator (info->client_info.stopped_domain, info->client_info.stopped_ip))) {
                                binary_protocol_thread_restart ((gpointer)mono_thread_info_get_tid (info));
-                               SGEN_LOG (3, "thread %p resumed.", (void*) (size_t) info->info.native_handle);
+                               SGEN_LOG (3, "thread %p resumed.", (void*) (size_t) info->client_info.info.native_handle);
                                result = sgen_resume_thread (info);
                                if (result) {
                                        ++restart_count;
                                } else {
-                                       info->skip = 1;
+                                       info->client_info.skip = 1;
                                }
                        } else {
                                /* we set the stopped_ip to
@@ -139,9 +142,9 @@ restart_threads_until_none_in_managed_allocator (void)
                                   we're not restarting so
                                   that we can easily identify
                                   the others */
-                               info->stopped_ip = NULL;
-                               info->stopped_domain = NULL;
-                               info->suspend_done = TRUE;
+                               info->client_info.stopped_ip = NULL;
+                               info->client_info.stopped_domain = NULL;
+                               info->client_info.suspend_done = TRUE;
                        }
                } END_FOREACH_THREAD_SAFE
                /* if no threads were restarted, we're done */
@@ -162,14 +165,14 @@ restart_threads_until_none_in_managed_allocator (void)
                /* stop them again */
                FOREACH_THREAD (info) {
                        gboolean result;
-                       if (info->skip || info->stopped_ip == NULL)
+                       if (info->client_info.skip || info->client_info.stopped_ip == NULL)
                                continue;
                        result = sgen_suspend_thread (info);
 
                        if (result) {
                                ++restarted_count;
                        } else {
-                               info->skip = 1;
+                               info->client_info.skip = 1;
                        }
                } END_FOREACH_THREAD
                /* some threads might have died */
@@ -196,13 +199,6 @@ release_gc_locks (void)
        UNLOCK_INTERRUPTION;
 }
 
-static void
-count_cards (long long *major_total, long long *major_marked, long long *los_total, long long *los_marked)
-{
-       sgen_get_major_collector ()->count_cards (major_total, major_marked);
-       sgen_los_count_cards (los_total, los_marked);
-}
-
 static TV_DECLARE (stop_world_time);
 static unsigned long max_pause_usec = 0;
 
@@ -210,45 +206,38 @@ static guint64 time_stop_world;
 static guint64 time_restart_world;
 
 /* LOCKING: assumes the GC lock is held */
-int
-sgen_stop_world (int generation)
+void
+sgen_client_stop_world (int generation)
 {
        TV_DECLARE (end_handshake);
-       int count, dead;
 
-       mono_profiler_gc_event (MONO_GC_EVENT_PRE_STOP_WORLD, generation);
-       MONO_GC_WORLD_STOP_BEGIN ();
-       binary_protocol_world_stopping (sgen_timestamp ());
+       /* notify the profiler of the leftovers */
+       /* FIXME this is the wrong spot at we can STW for non collection reasons. */
+       if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
+               mono_sgen_gc_event_moves ();
+
        acquire_gc_locks ();
 
        /* We start to scan after locks are taking, this ensures we won't be interrupted. */
        sgen_process_togglerefs ();
 
-       update_current_thread_stack (&count);
+       update_current_thread_stack (&generation);
 
        sgen_global_stop_count++;
        SGEN_LOG (3, "stopping world n %d from %p %p", sgen_global_stop_count, mono_thread_info_current (), (gpointer)mono_native_thread_id_get ());
        TV_GETTIME (stop_world_time);
 
        if (mono_thread_info_unified_management_enabled ()) {
-               count = sgen_unified_suspend_stop_world ();
+               sgen_unified_suspend_stop_world ();
        } else {
+               int count, dead;
                count = sgen_thread_handshake (TRUE);
                dead = restart_threads_until_none_in_managed_allocator ();
                if (count < dead)
                        g_error ("More threads have died (%d) that been initialy suspended %d", dead, count);
-               count -= dead;
        }
 
-       SGEN_LOG (3, "world stopped %d thread(s)", count);
-       mono_profiler_gc_event (MONO_GC_EVENT_POST_STOP_WORLD, generation);
-       MONO_GC_WORLD_STOP_END ();
-       if (binary_protocol_is_enabled ()) {
-               long long major_total = -1, major_marked = -1, los_total = -1, los_marked = -1;
-               if (binary_protocol_is_heavy_enabled ())
-                       count_cards (&major_total, &major_marked, &los_total, &los_marked);
-               binary_protocol_world_stopped (sgen_timestamp (), major_total, major_marked, los_total, los_marked);
-       }
+       SGEN_LOG (3, "world stopped");
 
        TV_GETTIME (end_handshake);
        time_stop_world += TV_ELAPSED (stop_world_time, end_handshake);
@@ -256,59 +245,45 @@ sgen_stop_world (int generation)
        sgen_memgov_collection_start (generation);
        if (sgen_need_bridge_processing ())
                sgen_bridge_reset_data ();
-
-       return count;
 }
 
 /* LOCKING: assumes the GC lock is held */
-int
-sgen_restart_world (int generation, GGTimingInfo *timing)
+void
+sgen_client_restart_world (int generation, GGTimingInfo *timing)
 {
-       int count;
        SgenThreadInfo *info;
        TV_DECLARE (end_sw);
        TV_DECLARE (start_handshake);
        TV_DECLARE (end_bridge);
        unsigned long usec, bridge_usec;
 
-       if (binary_protocol_is_enabled ()) {
-               long long major_total = -1, major_marked = -1, los_total = -1, los_marked = -1;
-               if (binary_protocol_is_heavy_enabled ())
-                       count_cards (&major_total, &major_marked, &los_total, &los_marked);
-               binary_protocol_world_restarting (generation, sgen_timestamp (), major_total, major_marked, los_total, los_marked);
-       }
-
        /* notify the profiler of the leftovers */
        /* FIXME this is the wrong spot at we can STW for non collection reasons. */
        if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
-               sgen_gc_event_moves ();
-       mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation);
-       MONO_GC_WORLD_RESTART_BEGIN (generation);
+               mono_sgen_gc_event_moves ();
+
        FOREACH_THREAD (info) {
-               info->stack_start = NULL;
+               info->client_info.stack_start = NULL;
 #ifdef USE_MONO_CTX
-               memset (&info->ctx, 0, sizeof (MonoContext));
+               memset (&info->client_info.ctx, 0, sizeof (MonoContext));
 #else
-               memset (&info->regs, 0, sizeof (info->regs));
+               memset (&info->client_info.regs, 0, sizeof (info->client_info.regs));
 #endif
        } END_FOREACH_THREAD
 
        TV_GETTIME (start_handshake);
 
        if (mono_thread_info_unified_management_enabled ())
-               count = sgen_unified_suspend_restart_world ();
+               sgen_unified_suspend_restart_world ();
        else
-               count = sgen_thread_handshake (FALSE);
-
+               sgen_thread_handshake (FALSE);
 
        TV_GETTIME (end_sw);
        time_restart_world += TV_ELAPSED (start_handshake, end_sw);
        usec = TV_ELAPSED (stop_world_time, end_sw);
        max_pause_usec = MAX (usec, max_pause_usec);
-       SGEN_LOG (2, "restarted %d thread(s) (pause time: %d usec, max: %d)", count, (int)usec, (int)max_pause_usec);
-       mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD, generation);
-       MONO_GC_WORLD_RESTART_END (generation);
-       binary_protocol_world_restarted (generation, sgen_timestamp ());
+
+       SGEN_LOG (2, "restarted (pause time: %d usec, max: %d)", (int)usec, (int)max_pause_usec);
 
        /*
         * We must release the thread info suspend lock after doing
@@ -322,11 +297,6 @@ sgen_restart_world (int generation, GGTimingInfo *timing)
         */
        release_gc_locks ();
 
-       sgen_try_free_some_memory = TRUE;
-
-       if (sgen_need_bridge_processing ())
-               sgen_bridge_processing_finish (generation);
-
        TV_GETTIME (end_bridge);
        bridge_usec = TV_ELAPSED (end_sw, end_bridge);
 
@@ -334,14 +304,10 @@ sgen_restart_world (int generation, GGTimingInfo *timing)
                timing [0].stw_time = usec;
                timing [0].bridge_time = bridge_usec;
        }
-       
-       sgen_memgov_collection_end (generation, timing, timing ? 2 : 0);
-
-       return count;
 }
 
 void
-sgen_init_stw (void)
+mono_sgen_init_stw (void)
 {
        mono_counters_register ("World stop", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_stop_world);
        mono_counters_register ("World restart", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_restart_world);
@@ -357,7 +323,7 @@ sgen_is_thread_in_current_stw (SgenThreadInfo *info)
        This is used by TP and finalizer threads.
        FIXME Use an atomic variable for this to avoid everyone taking the GC LOCK.
        */
-       if (info->gc_disabled) {
+       if (info->client_info.gc_disabled) {
                return FALSE;
        }
 
@@ -365,7 +331,7 @@ sgen_is_thread_in_current_stw (SgenThreadInfo *info)
        We have detected that this thread is failing/dying, ignore it.
        FIXME: can't we merge this with thread_is_dying?
        */
-       if (info->skip) {
+       if (info->client_info.skip) {
                return FALSE;
        }
 
@@ -380,7 +346,7 @@ sgen_is_thread_in_current_stw (SgenThreadInfo *info)
        We can't suspend the workers that will do all the heavy lifting.
        FIXME Use some state bit in SgenThreadInfo for this.
        */
-       if (sgen_is_worker_thread (mono_thread_info_get_tid (info))) {
+       if (sgen_thread_pool_is_thread_pool_thread (mono_thread_info_get_tid (info))) {
                return FALSE;
        }
 
@@ -401,54 +367,51 @@ update_sgen_info (SgenThreadInfo *info)
        char *stack_start;
 
        /* Once we remove the old suspend code, we should move sgen to directly access the state in MonoThread */
-       info->stopped_domain = mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
-       info->stopped_ip = (gpointer) MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx);
+       info->client_info.stopped_domain = mono_thread_info_tls_get (info, TLS_KEY_DOMAIN);
+       info->client_info.stopped_ip = (gpointer) MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx);
        stack_start = (char*)MONO_CONTEXT_GET_SP (&mono_thread_info_get_suspend_state (info)->ctx) - REDZONE_SIZE;
 
        /* altstack signal handler, sgen can't handle them, mono-threads should have handled this. */
-       if (stack_start < (char*)info->stack_start_limit || stack_start >= (char*)info->stack_end)
+       if (stack_start < (char*)info->client_info.stack_start_limit || stack_start >= (char*)info->client_info.stack_end)
                g_error ("BAD STACK");
 
-       info->stack_start = stack_start;
+       info->client_info.stack_start = stack_start;
 #ifdef USE_MONO_CTX
-       info->ctx = mono_thread_info_get_suspend_state (info)->ctx;
+       info->client_info.ctx = mono_thread_info_get_suspend_state (info)->ctx;
 #else
        g_assert_not_reached ();
 #endif
 }
 
-static int
+static void
 sgen_unified_suspend_stop_world (void)
 {
        int restart_counter;
        SgenThreadInfo *info;
-       int count = 0;
        int sleep_duration = -1;
 
        mono_threads_begin_global_suspend ();
        THREADS_STW_DEBUG ("[GC-STW-BEGIN] *** BEGIN SUSPEND *** \n");
 
        FOREACH_THREAD_SAFE (info) {
-               info->skip = FALSE;
-               info->suspend_done = FALSE;
+               info->client_info.skip = FALSE;
+               info->client_info.suspend_done = FALSE;
                if (sgen_is_thread_in_current_stw (info)) {
-                       info->skip = !mono_thread_info_begin_suspend (info, FALSE);
-                       THREADS_STW_DEBUG ("[GC-STW-BEGIN-SUSPEND] SUSPEND thread %p skip %d\n", mono_thread_info_get_tid (info), info->skip);
-                       if (!info->skip)
-                               ++count;
+                       info->client_info.skip = !mono_thread_info_begin_suspend (info, FALSE);
+                       THREADS_STW_DEBUG ("[GC-STW-BEGIN-SUSPEND] SUSPEND thread %p skip %d\n", mono_thread_info_get_tid (info), info->client_info.skip);
                } else {
                        THREADS_STW_DEBUG ("[GC-STW-BEGIN-SUSPEND] IGNORE thread %p skip %d\n", mono_thread_info_get_tid (info), info->skip);
                }
        } END_FOREACH_THREAD_SAFE
 
-       mono_thread_info_current ()->suspend_done = TRUE;
+       mono_thread_info_current ()->client_info.suspend_done = TRUE;
        mono_threads_wait_pending_operations ();
 
        for (;;) {
                restart_counter = 0;
                FOREACH_THREAD_SAFE (info) {
-                       if (info->suspend_done || !sgen_is_thread_in_current_stw (info)) {
-                               THREADS_STW_DEBUG ("[GC-STW-RESTART] IGNORE thread %p not been processed done %d current %d\n", mono_thread_info_get_tid (info), info->suspend_done, !sgen_is_thread_in_current_stw (info));
+                       if (info->client_info.suspend_done || !sgen_is_thread_in_current_stw (info)) {
+                               THREADS_STW_DEBUG ("[GC-STW-RESTART] IGNORE thread %p not been processed done %d current %d\n", mono_thread_info_get_tid (info), info->client_info.suspend_done, !sgen_is_thread_in_current_stw (info));
                                continue;
                        }
 
@@ -460,7 +423,7 @@ sgen_unified_suspend_stop_world (void)
                        */
                        if (!mono_threads_core_check_suspend_result (info)) {
                                THREADS_STW_DEBUG ("[GC-STW-RESTART] SKIP thread %p failed to finish to suspend\n", mono_thread_info_get_tid (info));
-                               info->skip = TRUE;
+                               info->client_info.skip = TRUE;
                        } else if (mono_thread_info_in_critical_location (info)) {
                                gboolean res;
                                g_assert (mono_thread_info_suspend_count (info) == 1);
@@ -469,11 +432,11 @@ sgen_unified_suspend_stop_world (void)
                                if (res)
                                        ++restart_counter;
                                else
-                                       info->skip = TRUE;
+                                       info->client_info.skip = TRUE;
                        } else {
                                THREADS_STW_DEBUG ("[GC-STW-RESTART] DONE thread %p deemed fully suspended\n", mono_thread_info_get_tid (info));
-                               g_assert (!info->in_critical_region);
-                               info->suspend_done = TRUE;
+                               g_assert (!info->client_info.in_critical_region);
+                               info->client_info.suspend_done = TRUE;
                        }
                } END_FOREACH_THREAD_SAFE
 
@@ -498,7 +461,7 @@ sgen_unified_suspend_stop_world (void)
                                gboolean res = mono_thread_info_begin_suspend (info, FALSE);
                                THREADS_STW_DEBUG ("[GC-STW-RESTART] SUSPEND thread %p skip %d\n", mono_thread_info_get_tid (info), res);
                                if (!res)
-                                       info->skip = TRUE;
+                                       info->client_info.skip = TRUE;
                        }
                } END_FOREACH_THREAD_SAFE
 
@@ -508,28 +471,24 @@ sgen_unified_suspend_stop_world (void)
        FOREACH_THREAD_SAFE (info) {
                if (sgen_is_thread_in_current_stw (info)) {
                        THREADS_STW_DEBUG ("[GC-STW-SUSPEND-END] thread %p is suspended\n", mono_thread_info_get_tid (info));
-                       g_assert (info->suspend_done);
+                       g_assert (info->client_info.suspend_done);
                        update_sgen_info (info);
                } else {
-                       g_assert (!info->suspend_done || info == mono_thread_info_current ());
+                       g_assert (!info->client_info.suspend_done || info == mono_thread_info_current ());
                }
        } END_FOREACH_THREAD_SAFE
-
-       return count;
 }
 
-static int
+static void
 sgen_unified_suspend_restart_world (void)
 {
        SgenThreadInfo *info;
-       int count = 0;
 
        THREADS_STW_DEBUG ("[GC-STW-END] *** BEGIN RESUME ***\n");
        FOREACH_THREAD_SAFE (info) {
                if (sgen_is_thread_in_current_stw (info)) {
                        g_assert (mono_thread_info_begin_resume (info));
                        THREADS_STW_DEBUG ("[GC-STW-RESUME-WORLD] RESUME thread %p\n", mono_thread_info_get_tid (info));
-                       ++count;
                } else {
                        THREADS_STW_DEBUG ("[GC-STW-RESUME-WORLD] IGNORE thread %p\n", mono_thread_info_get_tid (info));
                }
@@ -537,6 +496,5 @@ sgen_unified_suspend_restart_world (void)
 
        mono_threads_wait_pending_operations ();
        mono_threads_end_global_suspend ();
-       return count;
 }
 #endif
diff --git a/mono/metadata/sgen-tagged-pointer.h b/mono/metadata/sgen-tagged-pointer.h
deleted file mode 100644 (file)
index 3d63e94..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * sgen-tagged-pointer.h: Macros for tagging and untagging pointers.
- *
- * Copyright (C) 2014 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MONO_SGEN_TAGGED_POINTER_H__
-#define __MONO_SGEN_TAGGED_POINTER_H__
-
-#define SGEN_TAGGED_POINTER_MASK       7
-
-#define SGEN_POINTER_IS_TAGGED_1(p)    ((mword)(p) & 1)
-#define SGEN_POINTER_TAG_1(p)          ((void*)((mword)(p) | 1))
-#define SGEN_POINTER_UNTAG_1(p)                ((void*)((mword)(p) & ~1))
-
-#define SGEN_POINTER_IS_TAGGED_2(p)    ((mword)(p) & 2)
-#define SGEN_POINTER_TAG_2(p)          ((void*)((mword)(p) | 2))
-#define SGEN_POINTER_UNTAG_2(p)                ((void*)((mword)(p) & ~2))
-
-#define SGEN_POINTER_TAG_12(p)         ((mword)(p) & 3)
-#define SGEN_POINTER_SET_TAG_12(p,t)   ((void*)(((mword)(p) & ~3) | (t)))
-
-#define SGEN_POINTER_IS_TAGGED_4(p)    ((mword)(p) & 4)
-#define SGEN_POINTER_TAG_4(p)          ((void*)((mword)(p) | 4))
-#define SGEN_POINTER_UNTAG_4(p)                ((void*)((mword)(p) & ~4))
-
-#define SGEN_POINTER_UNTAG_24(p)       ((void*)((mword)(p) & ~6))
-
-#define SGEN_POINTER_IS_TAGGED_ANY(p)  ((mword)(p) & SGEN_TAGGED_POINTER_MASK)
-#define SGEN_POINTER_UNTAG_ALL(p)      ((void*)((mword)(p) & ~SGEN_TAGGED_POINTER_MASK))
-
-#endif
index fbfc8d4f63e57a65cfadc762ae15d52b11f92062..270b091e0efdca8a45345d0a9d48f738c64647d9 100644 (file)
 
 #include <stdlib.h>
 
-#include "sgen-gc.h"
-#include "sgen-bridge.h"
-#include "sgen-hash-table.h"
-#include "sgen-qsort.h"
+#include "sgen/sgen-gc.h"
+#include "sgen-bridge-internal.h"
+#include "sgen/sgen-hash-table.h"
+#include "sgen/sgen-qsort.h"
 #include "tabledefs.h"
 #include "utils/mono-logger-internal.h"
-#include "utils/mono-time.h"
-#include "utils/mono-compiler.h"
-
 
 typedef struct {
        int size;
@@ -234,7 +231,7 @@ typedef struct {
 
 
 typedef struct {
-       MonoObject *obj; //XXX this can be eliminated.
+       GCObject *obj; //XXX this can be eliminated.
        mword lock_word;
 
        ColorData *color;
@@ -394,7 +391,7 @@ free_color_buckets (void)
 
 
 static ScanData*
-create_data (MonoObject *obj)
+create_data (GCObject *obj)
 {
        mword *o = (mword*)obj;
        ScanData *res = alloc_object_data ();
@@ -410,7 +407,7 @@ create_data (MonoObject *obj)
 }
 
 static ScanData*
-find_data (MonoObject *obj)
+find_data (GCObject *obj)
 {
        ScanData *a = NULL;
        mword *o = (mword*)obj;
@@ -435,10 +432,10 @@ clear_after_processing (void)
        }
 }
 
-static MonoObject*
-bridge_object_forward (MonoObject *obj)
+static GCObject*
+bridge_object_forward (GCObject *obj)
 {
-       MonoObject *fwd;
+       GCObject *fwd;
        mword *o = (mword*)obj;
        if ((o [0] & SGEN_VTABLE_BITS_MASK) == SGEN_VTABLE_BITS_MASK)
                return obj;
@@ -449,14 +446,14 @@ bridge_object_forward (MonoObject *obj)
 
 #ifdef DUMP_GRAPH
 static const char*
-safe_name_bridge (MonoObject *obj)
+safe_name_bridge (GCObject *obj)
 {
-       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
+       GCVTable *vt = (GCVTable*)SGEN_LOAD_VTABLE (obj);
        return vt->klass->name;
 }
 
 static ScanData*
-find_or_create_data (MonoObject *obj)
+find_or_create_data (GCObject *obj)
 {
        ScanData *entry = find_data (obj);
        if (!entry)
@@ -586,13 +583,13 @@ new_color (gboolean force_new)
 
 
 static void
-register_bridge_object (MonoObject *obj)
+register_bridge_object (GCObject *obj)
 {
        create_data (obj)->is_bridge = TRUE;
 }
 
 static gboolean
-is_opaque_object (MonoObject *obj)
+is_opaque_object (GCObject *obj)
 {
        MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
        if ((vt->gc_bits & SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT) == SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT) {
@@ -604,7 +601,7 @@ is_opaque_object (MonoObject *obj)
 }
 
 static void
-push_object (MonoObject *obj)
+push_object (GCObject *obj)
 {
        ScanData *data;
        obj = bridge_object_forward (obj);
@@ -652,14 +649,14 @@ push_object (MonoObject *obj)
 
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)    do {                                    \
-               MonoObject *dst = (MonoObject*)*(ptr);                  \
+               GCObject *dst = (GCObject*)*(ptr);                      \
                if (dst) push_object (dst);                     \
        } while (0)
 
 static void
 push_all (ScanData *data)
 {
-       MonoObject *obj = data->obj;
+       GCObject *obj = data->obj;
        char *start = (char*)obj;
        mword desc = sgen_obj_get_descriptor_safe (start);
 
@@ -667,12 +664,12 @@ push_all (ScanData *data)
        printf ("**scanning %p %s\n", obj, safe_name_bridge (obj));
 #endif
 
-       #include "sgen-scan-object.h"
+       #include "sgen/sgen-scan-object.h"
 }
 
 
 static void
-compute_low_index (ScanData *data, MonoObject *obj)
+compute_low_index (ScanData *data, GCObject *obj)
 {
        ScanData *other;
        ColorData *cd;
@@ -704,18 +701,18 @@ compute_low_index (ScanData *data, MonoObject *obj)
 
 #undef HANDLE_PTR
 #define HANDLE_PTR(ptr,obj)    do {                                    \
-               MonoObject *dst = (MonoObject*)*(ptr);                  \
+               GCObject *dst = (GCObject*)*(ptr);                      \
                if (dst) compute_low_index (data, dst);                         \
        } while (0)
 
 static void
 compute_low (ScanData *data)
 {
-       MonoObject *obj = data->obj;
+       GCObject *obj = data->obj;
        char *start = (char*)obj;
        mword desc = sgen_obj_get_descriptor_safe (start);
 
-       #include "sgen-scan-object.h"
+       #include "sgen/sgen-scan-object.h"
 }
 
 static ColorData*
@@ -872,7 +869,7 @@ dfs (void)
 }
 
 static void
-register_finalized_object (MonoObject *obj)
+register_finalized_object (GCObject *obj)
 {
        g_assert (sgen_need_bridge_processing ());
        dyn_array_ptr_push (&registered_bridges, obj);
@@ -918,7 +915,7 @@ dump_color_table (const char *why, gboolean do_index)
                        if (dyn_array_ptr_size (&cd->bridges)) {
                                printf (" bridges: ");
                                for (j = 0; j < dyn_array_ptr_size (&cd->bridges); ++j) {
-                                       MonoObject *obj = dyn_array_ptr_get (&cd->bridges, j);
+                                       GCObject *obj = dyn_array_ptr_get (&cd->bridges, j);
                                        ScanData *data = find_or_create_data (obj);
                                        printf ("%d ", data->index);
                                }
@@ -1167,7 +1164,7 @@ processing_after_callback (int generation)
 }
 
 static void
-describe_pointer (MonoObject *obj)
+describe_pointer (GCObject *obj)
 {
        // HashEntry *entry;
        int i;
index 4709ccfeef6cd3a9cd19dd1bb175019594916f08..94c11ddc0b612a5056ccb7ee5e74067930157885 100644 (file)
@@ -25,8 +25,9 @@
 
 #ifdef HAVE_SGEN_GC
 
-#include "sgen-gc.h"
+#include "sgen/sgen-gc.h"
 #include "sgen-toggleref.h"
+#include "sgen/sgen-client.h"
 
 
 /*only one of the two can be non null at a given time*/
@@ -90,9 +91,9 @@ sgen_process_togglerefs (void)
                w);
 }
 
-void sgen_mark_togglerefs (char *start, char *end, ScanCopyContext ctx)
+void sgen_client_mark_togglerefs (char *start, char *end, ScanCopyContext ctx)
 {
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
        SgenGrayQueue *queue = ctx.queue;
        int i;
 
@@ -110,9 +111,9 @@ void sgen_mark_togglerefs (char *start, char *end, ScanCopyContext ctx)
        sgen_drain_gray_stack (-1, ctx);
 }
 
-void sgen_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
+void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
 {
-       CopyOrMarkObjectFunc copy_func = ctx.copy_func;
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
        SgenGrayQueue *queue = ctx.queue;
        int i;
 
diff --git a/mono/metadata/sgen-workers.c b/mono/metadata/sgen-workers.c
deleted file mode 100644 (file)
index 9920845..0000000
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- * sgen-workers.c: Worker threads for parallel and concurrent GC.
- *
- * Copyright 2001-2003 Ximian, Inc
- * Copyright 2003-2010 Novell, Inc.
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-#ifdef HAVE_SGEN_GC
-
-#include "metadata/sgen-gc.h"
-#include "metadata/sgen-workers.h"
-#include "utils/mono-counters.h"
-
-static int workers_num;
-static WorkerData *workers_data;
-static void *workers_gc_thread_major_collector_data = NULL;
-
-static SgenSectionGrayQueue workers_distribute_gray_queue;
-static gboolean workers_distribute_gray_queue_inited;
-
-static gboolean workers_started = FALSE;
-
-enum {
-       STATE_NOT_WORKING,
-       STATE_WORKING,
-       STATE_NURSERY_COLLECTION
-} WorkersStateName;
-
-/*
- * | state                    | num_awake | num_posted                 | post_done |
- * |--------------------------+-----------+----------------------------+-----------|
- * | STATE_NOT_WORKING        | 0         | *                          |         0 |
- * | STATE_WORKING            | > 0       | <= workers_num - num_awake |         * |
- * | STATE_NURSERY_COLLECTION | *         | <= workers_num - num_awake |         1 |
- * | STATE_NURSERY_COLLECTION | 0         | 0                          |         0 |
- */
-typedef union {
-       gint32 value;
-       struct {
-               guint state : 4; /* WorkersStateName */
-               /* Number of worker threads awake. */
-               guint num_awake : 8;
-               /* The state of the waiting semaphore. */
-               guint num_posted : 8;
-               /* Whether to post `workers_done_sem` */
-               guint post_done : 1;
-       } data;
-} State;
-
-static volatile State workers_state;
-
-static MonoSemType workers_waiting_sem;
-static MonoSemType workers_done_sem;
-
-static volatile int workers_job_queue_num_entries = 0;
-static volatile JobQueueEntry *workers_job_queue = NULL;
-static LOCK_DECLARE (workers_job_queue_mutex);
-static int workers_num_jobs_enqueued = 0;
-static volatile int workers_num_jobs_finished = 0;
-
-static guint64 stat_workers_stolen_from_self_lock;
-static guint64 stat_workers_stolen_from_self_no_lock;
-static guint64 stat_workers_stolen_from_others;
-static guint64 stat_workers_num_waited;
-
-static gboolean
-set_state (State old_state, State new_state)
-{
-       if (old_state.data.state == STATE_NURSERY_COLLECTION)
-               SGEN_ASSERT (0, new_state.data.state != STATE_NOT_WORKING, "Can't go from nursery collection to not working");
-
-       return InterlockedCompareExchange (&workers_state.value,
-                       new_state.value, old_state.value) == old_state.value;
-}
-
-static void
-assert_not_working (State state)
-{
-       SGEN_ASSERT (0, state.data.state == STATE_NOT_WORKING, "Can only signal enqueue work when in no work state");
-       SGEN_ASSERT (0, state.data.num_awake == 0, "No workers can be awake when not working");
-       SGEN_ASSERT (0, state.data.num_posted == 0, "Can't have posted already");
-       SGEN_ASSERT (0, !state.data.post_done, "post_done can only be set when working");
-
-}
-
-static void
-assert_working (State state, gboolean from_worker)
-{
-       SGEN_ASSERT (0, state.data.state == STATE_WORKING, "A worker can't wait without being in working state");
-       if (from_worker)
-               SGEN_ASSERT (0, state.data.num_awake > 0, "How can we be awake, yet we are not counted?");
-       else
-               SGEN_ASSERT (0, state.data.num_awake + state.data.num_posted > 0, "How can we be working, yet no worker threads are awake or to be awoken?");
-       SGEN_ASSERT (0, state.data.num_awake + state.data.num_posted <= workers_num, "There are too many worker threads awake");
-}
-
-static void
-assert_nursery_collection (State state, gboolean from_worker)
-{
-       SGEN_ASSERT (0, state.data.state == STATE_NURSERY_COLLECTION, "Must be in the nursery collection state");
-       if (from_worker) {
-               SGEN_ASSERT (0, state.data.num_awake > 0, "We're awake, but num_awake is zero");
-               SGEN_ASSERT (0, state.data.post_done, "post_done must be set in the nursery collection state");
-       }
-       SGEN_ASSERT (0, state.data.num_awake <= workers_num, "There are too many worker threads awake");
-       if (!state.data.post_done) {
-               SGEN_ASSERT (0, state.data.num_awake == 0, "Once done has been posted no threads can be awake");
-               SGEN_ASSERT (0, state.data.num_posted == 0, "Once done has been posted no thread must be awoken");
-       }
-}
-
-static void
-assert_working_or_nursery_collection (State state)
-{
-       if (state.data.state == STATE_WORKING)
-               assert_working (state, TRUE);
-       else
-               assert_nursery_collection (state, TRUE);
-}
-
-static void
-workers_signal_enqueue_work (int num_wake_up, gboolean from_nursery_collection)
-{
-       State old_state = workers_state;
-       State new_state = old_state;
-       int i;
-       gboolean did_set_state;
-
-       SGEN_ASSERT (0, num_wake_up <= workers_num, "Cannot wake up more workers than are present");
-
-       if (from_nursery_collection)
-               assert_nursery_collection (old_state, FALSE);
-       else
-               assert_not_working (old_state);
-
-       new_state.data.state = STATE_WORKING;
-       new_state.data.num_posted = num_wake_up;
-
-       did_set_state = set_state (old_state, new_state);
-       SGEN_ASSERT (0, did_set_state, "Nobody else should be mutating the state");
-
-       for (i = 0; i < num_wake_up; ++i)
-               MONO_SEM_POST (&workers_waiting_sem);
-}
-
-static void
-workers_signal_enqueue_work_if_necessary (int num_wake_up)
-{
-       if (workers_state.data.state == STATE_NOT_WORKING)
-               workers_signal_enqueue_work (num_wake_up, FALSE);
-}
-
-void
-sgen_workers_ensure_awake (void)
-{
-       SGEN_ASSERT (0, workers_state.data.state != STATE_NURSERY_COLLECTION, "Can't wake workers during nursery collection");
-       workers_signal_enqueue_work_if_necessary (workers_num);
-}
-
-static void
-workers_wait (void)
-{
-       State old_state, new_state;
-       gboolean post_done;
-
-       ++stat_workers_num_waited;
-
-       do {
-               new_state = old_state = workers_state;
-
-               assert_working_or_nursery_collection (old_state);
-
-               --new_state.data.num_awake;
-               post_done = FALSE;
-               if (!new_state.data.num_awake && !new_state.data.num_posted) {
-                       /* We are the last thread to go to sleep. */
-                       if (old_state.data.state == STATE_WORKING)
-                               new_state.data.state = STATE_NOT_WORKING;
-
-                       new_state.data.post_done = 0;
-                       if (old_state.data.post_done)
-                               post_done = TRUE;
-               }
-       } while (!set_state (old_state, new_state));
-
-       if (post_done)
-               MONO_SEM_POST (&workers_done_sem);
-
-       MONO_SEM_WAIT (&workers_waiting_sem);
-
-       do {
-               new_state = old_state = workers_state;
-
-               SGEN_ASSERT (0, old_state.data.num_posted > 0, "How can we be awake without the semaphore having been posted?");
-               SGEN_ASSERT (0, old_state.data.num_awake < workers_num, "There are too many worker threads awake");
-
-               --new_state.data.num_posted;
-               ++new_state.data.num_awake;
-
-               assert_working_or_nursery_collection (new_state);
-       } while (!set_state (old_state, new_state));
-}
-
-static gboolean
-collection_needs_workers (void)
-{
-       return sgen_collection_is_concurrent ();
-}
-
-void
-sgen_workers_enqueue_job (const char *name, JobFunc func, void *data)
-{
-       int num_entries;
-       JobQueueEntry *entry;
-
-       if (!collection_needs_workers ()) {
-               func (NULL, data);
-               return;
-       }
-
-       entry = sgen_alloc_internal (INTERNAL_MEM_JOB_QUEUE_ENTRY);
-       entry->name = name;
-       entry->func = func;
-       entry->data = data;
-
-       mono_mutex_lock (&workers_job_queue_mutex);
-       entry->next = workers_job_queue;
-       workers_job_queue = entry;
-       num_entries = ++workers_job_queue_num_entries;
-       ++workers_num_jobs_enqueued;
-       mono_mutex_unlock (&workers_job_queue_mutex);
-
-       if (workers_state.data.state != STATE_NURSERY_COLLECTION)
-               workers_signal_enqueue_work_if_necessary (num_entries < workers_num ? num_entries : workers_num);
-}
-
-void
-sgen_workers_wait_for_jobs_finished (void)
-{
-       // FIXME: implement this properly
-       while (workers_num_jobs_finished < workers_num_jobs_enqueued) {
-               workers_signal_enqueue_work_if_necessary (workers_num);
-               /* FIXME: sleep less? */
-               g_usleep (1000);
-       }
-}
-
-void
-sgen_workers_signal_start_nursery_collection_and_wait (void)
-{
-       State old_state, new_state;
-
-       do {
-               new_state = old_state = workers_state;
-
-               new_state.data.state = STATE_NURSERY_COLLECTION;
-
-               if (old_state.data.state == STATE_NOT_WORKING) {
-                       assert_not_working (old_state);
-               } else {
-                       assert_working (old_state, FALSE);
-                       SGEN_ASSERT (0, !old_state.data.post_done, "We are not waiting for the workers");
-
-                       new_state.data.post_done = 1;
-               }
-       } while (!set_state (old_state, new_state));
-
-       if (new_state.data.post_done)
-               MONO_SEM_WAIT (&workers_done_sem);
-
-       old_state = workers_state;
-       assert_nursery_collection (old_state, FALSE);
-       SGEN_ASSERT (0, !old_state.data.post_done, "We got the semaphore, so it must have been posted");
-}
-
-void
-sgen_workers_signal_finish_nursery_collection (void)
-{
-       State old_state = workers_state;
-
-       assert_nursery_collection (old_state, FALSE);
-       SGEN_ASSERT (0, !old_state.data.post_done, "We are finishing the nursery collection, so we should have waited for the semaphore earlier");
-
-       workers_signal_enqueue_work (workers_num, TRUE);
-}
-
-static gboolean
-workers_dequeue_and_do_job (WorkerData *data)
-{
-       JobQueueEntry *entry;
-
-       /*
-        * At this point the GC might not be running anymore.  We
-        * could have been woken up by a job that was then taken by
-        * another thread, after which the collection finished, so we
-        * first have to successfully dequeue a job before doing
-        * anything assuming that the collection is still ongoing.
-        */
-
-       if (!workers_job_queue_num_entries)
-               return FALSE;
-
-       mono_mutex_lock (&workers_job_queue_mutex);
-       entry = (JobQueueEntry*)workers_job_queue;
-       if (entry) {
-               workers_job_queue = entry->next;
-               --workers_job_queue_num_entries;
-       }
-       mono_mutex_unlock (&workers_job_queue_mutex);
-
-       if (!entry)
-               return FALSE;
-
-       g_assert (collection_needs_workers ());
-
-       entry->func (data, entry->data);
-       sgen_free_internal (entry, INTERNAL_MEM_JOB_QUEUE_ENTRY);
-
-       SGEN_ATOMIC_ADD (workers_num_jobs_finished, 1);
-
-       return TRUE;
-}
-
-static gboolean
-workers_get_work (WorkerData *data)
-{
-       SgenMajorCollector *major;
-
-       g_assert (sgen_gray_object_queue_is_empty (&data->private_gray_queue));
-
-       /* If we're concurrent, steal from the workers distribute gray queue. */
-       major = sgen_get_major_collector ();
-       if (major->is_concurrent) {
-               GrayQueueSection *section = sgen_section_gray_queue_dequeue (&workers_distribute_gray_queue);
-               if (section) {
-                       sgen_gray_object_enqueue_section (&data->private_gray_queue, section);
-                       return TRUE;
-               }
-       }
-
-       /* Nobody to steal from */
-       g_assert (sgen_gray_object_queue_is_empty (&data->private_gray_queue));
-       return FALSE;
-}
-
-static void
-concurrent_enqueue_check (char *obj)
-{
-       g_assert (sgen_concurrent_collection_in_progress ());
-       g_assert (!sgen_ptr_in_nursery (obj));
-       g_assert (SGEN_LOAD_VTABLE (obj));
-}
-
-static void
-init_private_gray_queue (WorkerData *data)
-{
-       sgen_gray_object_queue_init (&data->private_gray_queue,
-                       sgen_get_major_collector ()->is_concurrent ? concurrent_enqueue_check : NULL);
-}
-
-static mono_native_thread_return_t
-workers_thread_func (void *data_untyped)
-{
-       WorkerData *data = data_untyped;
-       SgenMajorCollector *major = sgen_get_major_collector ();
-
-       mono_thread_info_register_small_id ();
-
-       if (major->init_worker_thread)
-               major->init_worker_thread (data->major_collector_data);
-
-       init_private_gray_queue (data);
-
-       for (;;) {
-               gboolean did_work = FALSE;
-
-               SGEN_ASSERT (0, sgen_get_current_collection_generation () != GENERATION_NURSERY, "Why are we doing work while there's a nursery collection happening?");
-
-               while (workers_state.data.state == STATE_WORKING && workers_dequeue_and_do_job (data)) {
-                       did_work = TRUE;
-                       /* FIXME: maybe distribute the gray queue here? */
-               }
-
-               if (!did_work && (!sgen_gray_object_queue_is_empty (&data->private_gray_queue) || workers_get_work (data))) {
-                       SgenObjectOperations *ops = sgen_concurrent_collection_in_progress ()
-                               ? &major->major_concurrent_ops
-                               : &major->major_ops;
-                       ScanCopyContext ctx = { ops->scan_object, NULL, &data->private_gray_queue };
-
-                       g_assert (!sgen_gray_object_queue_is_empty (&data->private_gray_queue));
-
-                       while (!sgen_drain_gray_stack (32, ctx)) {
-                               if (workers_state.data.state == STATE_NURSERY_COLLECTION)
-                                       workers_wait ();
-                       }
-                       g_assert (sgen_gray_object_queue_is_empty (&data->private_gray_queue));
-
-                       init_private_gray_queue (data);
-
-                       did_work = TRUE;
-               }
-
-               if (!did_work)
-                       workers_wait ();
-       }
-
-       /* dummy return to make compilers happy */
-       return NULL;
-}
-
-static void
-init_distribute_gray_queue (gboolean locked)
-{
-       if (workers_distribute_gray_queue_inited) {
-               g_assert (sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue));
-               g_assert (!workers_distribute_gray_queue.locked == !locked);
-               return;
-       }
-
-       sgen_section_gray_queue_init (&workers_distribute_gray_queue, locked,
-                       sgen_get_major_collector ()->is_concurrent ? concurrent_enqueue_check : NULL);
-       workers_distribute_gray_queue_inited = TRUE;
-}
-
-void
-sgen_workers_init_distribute_gray_queue (void)
-{
-       if (!collection_needs_workers ())
-               return;
-
-       init_distribute_gray_queue (sgen_get_major_collector ()->is_concurrent);
-}
-
-void
-sgen_workers_init (int num_workers)
-{
-       int i;
-
-       if (!sgen_get_major_collector ()->is_concurrent)
-               return;
-
-       //g_print ("initing %d workers\n", num_workers);
-
-       workers_num = num_workers;
-
-       workers_data = sgen_alloc_internal_dynamic (sizeof (WorkerData) * num_workers, INTERNAL_MEM_WORKER_DATA, TRUE);
-       memset (workers_data, 0, sizeof (WorkerData) * num_workers);
-
-       MONO_SEM_INIT (&workers_waiting_sem, 0);
-       MONO_SEM_INIT (&workers_done_sem, 0);
-
-       init_distribute_gray_queue (sgen_get_major_collector ()->is_concurrent);
-
-       if (sgen_get_major_collector ()->alloc_worker_data)
-               workers_gc_thread_major_collector_data = sgen_get_major_collector ()->alloc_worker_data ();
-
-       for (i = 0; i < workers_num; ++i) {
-               workers_data [i].index = i;
-
-               if (sgen_get_major_collector ()->alloc_worker_data)
-                       workers_data [i].major_collector_data = sgen_get_major_collector ()->alloc_worker_data ();
-       }
-
-       LOCK_INIT (workers_job_queue_mutex);
-
-       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_JOB_QUEUE_ENTRY, sizeof (JobQueueEntry));
-
-       mono_counters_register ("Stolen from self lock", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_workers_stolen_from_self_lock);
-       mono_counters_register ("Stolen from self no lock", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_workers_stolen_from_self_no_lock);
-       mono_counters_register ("Stolen from others", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_workers_stolen_from_others);
-       mono_counters_register ("# workers waited", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_workers_num_waited);
-}
-
-/* only the GC thread is allowed to start and join workers */
-
-static void
-workers_start_worker (int index)
-{
-       g_assert (index >= 0 && index < workers_num);
-
-       g_assert (!workers_data [index].thread);
-       mono_native_thread_create (&workers_data [index].thread, workers_thread_func, &workers_data [index]);
-}
-
-void
-sgen_workers_start_all_workers (void)
-{
-       State old_state, new_state;
-       int i;
-       gboolean result;
-
-       if (!collection_needs_workers ())
-               return;
-
-       if (sgen_get_major_collector ()->init_worker_thread)
-               sgen_get_major_collector ()->init_worker_thread (workers_gc_thread_major_collector_data);
-
-       old_state = new_state = workers_state;
-       assert_not_working (old_state);
-
-       g_assert (workers_job_queue_num_entries == 0);
-       workers_num_jobs_enqueued = 0;
-       workers_num_jobs_finished = 0;
-
-       if (workers_started) {
-               workers_signal_enqueue_work (workers_num, FALSE);
-               return;
-       }
-
-       new_state.data.state = STATE_WORKING;
-       new_state.data.num_awake = workers_num;
-       result = set_state (old_state, new_state);
-       SGEN_ASSERT (0, result, "Nobody else should have modified the state - workers have not been started yet");
-
-       for (i = 0; i < workers_num; ++i)
-               workers_start_worker (i);
-
-       workers_started = TRUE;
-}
-
-gboolean
-sgen_workers_have_started (void)
-{
-       return workers_started;
-}
-
-void
-sgen_workers_join (void)
-{
-       State old_state;
-       int i;
-
-       if (!collection_needs_workers ())
-               return;
-
-       for (;;) {
-               old_state = workers_state;
-               SGEN_ASSERT (0, old_state.data.state != STATE_NURSERY_COLLECTION, "Can't be in nursery collection when joining");
-
-               if (old_state.data.state == STATE_WORKING) {
-                       State new_state = old_state;
-
-                       SGEN_ASSERT (0, !old_state.data.post_done, "Why is post_done already set?");
-                       new_state.data.post_done = 1;
-                       if (!set_state (old_state, new_state))
-                               continue;
-
-                       MONO_SEM_WAIT (&workers_done_sem);
-
-                       old_state = workers_state;
-               }
-
-               assert_not_working (old_state);
-
-               /*
-                * Checking whether there is still work left and, if not, going to sleep,
-                * are two separate actions that are not performed atomically by the
-                * workers.  Therefore there's a race condition where work can be added
-                * after they've checked for work, and before they've gone to sleep.
-                */
-               if (!workers_job_queue_num_entries && sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue))
-                       break;
-
-               workers_signal_enqueue_work (workers_num, FALSE);
-       }
-
-       /* At this point all the workers have stopped. */
-
-       if (sgen_get_major_collector ()->reset_worker_data) {
-               for (i = 0; i < workers_num; ++i)
-                       sgen_get_major_collector ()->reset_worker_data (workers_data [i].major_collector_data);
-       }
-
-       g_assert (workers_job_queue_num_entries == 0);
-       g_assert (sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue));
-       for (i = 0; i < workers_num; ++i)
-               g_assert (sgen_gray_object_queue_is_empty (&workers_data [i].private_gray_queue));
-}
-
-gboolean
-sgen_workers_all_done (void)
-{
-       return workers_state.data.state == STATE_NOT_WORKING;
-}
-
-gboolean
-sgen_workers_are_working (void)
-{
-       State state = workers_state;
-       return state.data.num_awake > 0 || state.data.num_posted > 0;
-}
-
-gboolean
-sgen_is_worker_thread (MonoNativeThreadId thread)
-{
-       int i;
-
-       if (sgen_get_major_collector ()->is_worker_thread && sgen_get_major_collector ()->is_worker_thread (thread))
-               return TRUE;
-
-       for (i = 0; i < workers_num; ++i) {
-               if (workers_data [i].thread == thread)
-                       return TRUE;
-       }
-       return FALSE;
-}
-
-SgenSectionGrayQueue*
-sgen_workers_get_distribute_section_gray_queue (void)
-{
-       return &workers_distribute_gray_queue;
-}
-
-void
-sgen_workers_reset_data (void)
-{
-       if (sgen_get_major_collector ()->reset_worker_data)
-               sgen_get_major_collector ()->reset_worker_data (workers_gc_thread_major_collector_data);
-}
-#endif
diff --git a/mono/metadata/sgen-workers.h b/mono/metadata/sgen-workers.h
deleted file mode 100644 (file)
index 5c509de..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * sgen-workers.c: Worker threads for parallel and concurrent GC.
- *
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
- * Copyright (C) 2012 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MONO_SGEN_WORKER_H__
-#define __MONO_SGEN_WORKER_H__
-
-typedef struct _WorkerData WorkerData;
-struct _WorkerData {
-       int index;
-       MonoNativeThreadId thread;
-       void *major_collector_data;
-
-       SgenGrayQueue private_gray_queue; /* only read/written by worker thread */
-};
-
-typedef void (*JobFunc) (WorkerData *worker_data, void *job_data);
-
-typedef struct _JobQueueEntry JobQueueEntry;
-struct _JobQueueEntry {
-       const char *name;
-       JobFunc func;
-       void *data;
-
-       volatile JobQueueEntry *next;
-};
-
-void sgen_workers_init (int num_workers);
-void sgen_workers_start_all_workers (void);
-gboolean sgen_workers_have_started (void);
-void sgen_workers_ensure_awake (void);
-void sgen_workers_init_distribute_gray_queue (void);
-void sgen_workers_enqueue_job (const char *name, JobFunc func, void *data);
-void sgen_workers_wait_for_jobs_finished (void);
-void sgen_workers_distribute_gray_queue_sections (void);
-void sgen_workers_reset_data (void);
-void sgen_workers_join (void);
-gboolean sgen_workers_all_done (void);
-gboolean sgen_workers_are_working (void);
-SgenSectionGrayQueue* sgen_workers_get_distribute_section_gray_queue (void);
-
-void sgen_workers_signal_start_nursery_collection_and_wait (void);
-void sgen_workers_signal_finish_nursery_collection (void);
-
-#endif
index a3c2ac0c336bc91921b783d5c028ac31a28182cf..fb9dd8664deaa702a0d7d99064a8d5024679ef46 100644 (file)
@@ -532,6 +532,13 @@ static gint32 convert_sockopt_level_and_name(MonoSocketOptionLevel mono_level,
                case SocketOptionName_DropMembership:
                        *system_name = IPV6_LEAVE_GROUP;
                        break;
+               case SocketOptionName_IPv6Only:
+#ifdef IPV6_V6ONLY
+                       *system_name = IPV6_V6ONLY;
+#else
+                       return -1;
+#endif
+                       break;
                case SocketOptionName_PacketInformation:
 #ifdef HAVE_IPV6_PKTINFO
                        *system_name = IPV6_PKTINFO;
@@ -633,8 +640,8 @@ static gint32 get_family_hint(void)
                MonoVTable *vtable;
 
                socket_class = mono_class_from_name (get_socket_assembly (), "System.Net.Sockets", "Socket");
-               ipv4_field = mono_class_get_field_from_name (socket_class, "ipv4Supported");
-               ipv6_field = mono_class_get_field_from_name (socket_class, "ipv6Supported");
+               ipv4_field = mono_class_get_field_from_name (socket_class, "ipv4_supported");
+               ipv6_field = mono_class_get_field_from_name (socket_class, "ipv6_supported");
                vtable = mono_class_vtable (mono_domain_get (), socket_class);
                g_assert (vtable);
                mono_runtime_class_init (vtable);
@@ -1406,7 +1413,7 @@ gint32 ves_icall_System_Net_Sockets_Socket_Receive_array_internal(SOCKET sock, M
        return(recv);
 }
 
-gint32 ves_icall_System_Net_Sockets_Socket_RecvFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error)
+gint32 ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error)
 {
        int ret;
        guchar *buf;
@@ -1573,7 +1580,7 @@ static SOCKET Socket_to_SOCKET(MonoObject *sockobj)
        MonoSafeHandle *safe_handle;
        MonoClassField *field;
        
-       field = mono_class_get_field_from_name (sockobj->vtable->klass, "socket");
+       field = mono_class_get_field_from_name (sockobj->vtable->klass, "safe_handle");
        safe_handle = ((MonoSafeHandle*) (*(gpointer *)(((char *)sockobj)+field->offset)));
 
        if (safe_handle == NULL)
@@ -2198,7 +2205,7 @@ void ves_icall_System_Net_Sockets_Socket_Shutdown_internal(SOCKET sock,
 }
 
 gint
-ves_icall_System_Net_Sockets_Socket_WSAIoctl (SOCKET sock, gint32 code,
+ves_icall_System_Net_Sockets_Socket_IOControl_internal (SOCKET sock, gint32 code,
                                              MonoArray *input,
                                              MonoArray *output, gint32 *error)
 {
@@ -2372,6 +2379,8 @@ MonoBoolean ves_icall_System_Net_Dns_GetHostByName_internal(MonoString *host, Mo
        gchar this_hostname [256];
        MonoAddressInfo *info = NULL;
        char *hostname = mono_string_to_utf8 (host);
+       int hint = get_addrinfo_family_hint ();
+
        MONO_PREPARE_BLOCKING
 
        if (*hostname == '\0') {
@@ -2385,7 +2394,7 @@ MonoBoolean ves_icall_System_Net_Dns_GetHostByName_internal(MonoString *host, Mo
                }
        }
 
-       if (*hostname && mono_get_address_info (hostname, 0, MONO_HINT_CANONICAL_NAME | get_addrinfo_family_hint (), &info))
+       if (*hostname && mono_get_address_info (hostname, 0, MONO_HINT_CANONICAL_NAME | hint, &info))
                add_info_ok = FALSE;
 
        g_free(hostname);
@@ -2405,6 +2414,10 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *a
        gint32 family;
        char hostname[NI_MAXHOST] = {0};
        int flags = 0;
+       int hint = get_addrinfo_family_hint ();
+       gboolean add_info_ok;
+
+       MONO_PREPARE_BLOCKING
 
        address = mono_string_to_utf8 (addr);
 
@@ -2445,10 +2458,13 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *a
                }
        }
 
-       if (mono_get_address_info (hostname, 0, get_addrinfo_family_hint () | MONO_HINT_CANONICAL_NAME | MONO_HINT_CONFIGURED_ONLY, &info))
-               return FALSE;
+       add_info_ok = !mono_get_address_info (hostname, 0, hint | MONO_HINT_CANONICAL_NAME | MONO_HINT_CONFIGURED_ONLY, &info);
+       MONO_FINISH_BLOCKING
 
-       return(addrinfo_to_IPHostEntry (info, h_name, h_aliases, h_addr_list, FALSE));
+       if (add_info_ok)
+               return addrinfo_to_IPHostEntry (info, h_name, h_aliases, h_addr_list, FALSE);
+
+       return FALSE;
 }
 
 extern MonoBoolean ves_icall_System_Net_Dns_GetHostName_internal(MonoString **h_name)
@@ -2467,7 +2483,7 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostName_internal(MonoString **h_
 }
 
 gboolean
-ves_icall_System_Net_Sockets_Socket_SendFile (SOCKET sock, MonoString *filename, MonoArray *pre_buffer, MonoArray *post_buffer, gint flags)
+ves_icall_System_Net_Sockets_Socket_SendFile_internal (SOCKET sock, MonoString *filename, MonoArray *pre_buffer, MonoArray *post_buffer, gint flags)
 {
        HANDLE file;
        gint32 error;
@@ -2517,14 +2533,7 @@ icall_cancel_blocking_socket_operation (MonoThread *thread)
 {
        MonoInternalThread *internal = thread->internal_thread;
        
-       if (mono_thread_info_new_interrupt_enabled ()) {
-               mono_thread_info_abort_socket_syscall_for_close ((MonoNativeThreadId)(gsize)internal->tid);
-       } else {
-#ifndef HOST_WIN32
-               internal->ignore_next_signal = TRUE;
-               mono_thread_kill (internal, mono_thread_get_abort_signal ());           
-#endif
-       }
+       mono_thread_info_abort_socket_syscall_for_close ((MonoNativeThreadId)(gsize)internal->tid);
 }
 
 #endif /* #ifndef DISABLE_SOCKETS */
index 3f2dd85a5ad2b359adf743b42ee46a8d3e1c05f0..7cef4a43a26a73d2a89383cd607222db6aa6b1d4 100644 (file)
@@ -96,6 +96,8 @@ typedef enum {
        SocketOptionName_ReuseAddress=4,
        SocketOptionName_KeepAlive=8,
        SocketOptionName_DontRoute=16,
+       SocketOptionName_IPProtectionLevel = 23,
+       SocketOptionName_IPv6Only = 27,
        SocketOptionName_Broadcast=32,
        SocketOptionName_UseLoopback=64,
        SocketOptionName_Linger=128,
@@ -204,7 +206,7 @@ extern void ves_icall_System_Net_Sockets_Socket_Bind_internal(SOCKET sock, MonoO
 extern void ves_icall_System_Net_Sockets_Socket_Connect_internal(SOCKET sock, MonoObject *sockaddr, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_array_internal(SOCKET sock, MonoArray *buffers, gint32 flags, gint32 *error);
-extern gint32 ves_icall_System_Net_Sockets_Socket_RecvFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error);
+extern gint32 ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_Send_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_Send_array_internal(SOCKET sock, MonoArray *buffers, gint32 flags, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_SendTo_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject *sockaddr, gint32 *error);
@@ -213,13 +215,13 @@ extern void ves_icall_System_Net_Sockets_Socket_Shutdown_internal(SOCKET sock, g
 extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal(SOCKET sock, gint32 level, gint32 name, MonoObject **obj_val, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal(SOCKET sock, gint32 level, gint32 name, MonoArray **byte_val, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal(SOCKET sock, gint32 level, gint32 name, MonoObject *obj_val, MonoArray *byte_val, gint32 int_val, gint32 *error);
-extern int ves_icall_System_Net_Sockets_Socket_WSAIoctl (SOCKET sock, gint32 code, MonoArray *input, MonoArray *output, gint32 *error);
+extern int ves_icall_System_Net_Sockets_Socket_IOControl_internal (SOCKET sock, gint32 code, MonoArray *input, MonoArray *output, gint32 *error);
 extern MonoBoolean ves_icall_System_Net_Dns_GetHostByName_internal(MonoString *host, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list);
 extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *addr, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list);
 extern MonoBoolean ves_icall_System_Net_Dns_GetHostName_internal(MonoString **h_name);
 extern MonoBoolean ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET sock, gint mode, gint timeout, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_Disconnect_internal(SOCKET sock, MonoBoolean reuse, gint32 *error);
-extern gboolean ves_icall_System_Net_Sockets_Socket_SendFile (SOCKET sock, MonoString *filename, MonoArray *pre_buffer, MonoArray *post_buffer, gint flags);
+extern gboolean ves_icall_System_Net_Sockets_Socket_SendFile_internal (SOCKET sock, MonoString *filename, MonoArray *pre_buffer, MonoArray *post_buffer, gint flags);
 void icall_cancel_blocking_socket_operation (MonoThread *thread);
 
 extern void mono_network_init(void);
diff --git a/mono/metadata/threadpool-ms-io-epoll.c b/mono/metadata/threadpool-ms-io-epoll.c
new file mode 100644 (file)
index 0000000..8fce139
--- /dev/null
@@ -0,0 +1,153 @@
+
+#if defined(HAVE_EPOLL)
+
+#include <sys/epoll.h>
+
+#if defined(HOST_WIN32)
+/* We assume that epoll is not available on windows */
+#error
+#endif
+
+#define EPOLL_NEVENTS 128
+
+static gint epoll_fd;
+static struct epoll_event *epoll_events;
+
+static gboolean
+epoll_init (gint wakeup_pipe_fd)
+{
+       struct epoll_event event;
+
+#ifdef EPOOL_CLOEXEC
+       epoll_fd = epoll_create1 (EPOLL_CLOEXEC);
+#else
+       epoll_fd = epoll_create (256);
+       fcntl (epoll_fd, F_SETFD, FD_CLOEXEC);
+#endif
+
+       if (epoll_fd == -1) {
+#ifdef EPOOL_CLOEXEC
+               g_warning ("epoll_init: epoll (EPOLL_CLOEXEC) failed, error (%d) %s\n", errno, g_strerror (errno));
+#else
+               g_warning ("epoll_init: epoll (256) failed, error (%d) %s\n", errno, g_strerror (errno));
+#endif
+               return FALSE;
+       }
+
+       event.events = EPOLLIN;
+       event.data.fd = wakeup_pipe_fd;
+       if (epoll_ctl (epoll_fd, EPOLL_CTL_ADD, event.data.fd, &event) == -1) {
+               g_warning ("epoll_init: epoll_ctl () failed, error (%d) %s", errno, g_strerror (errno));
+               close (epoll_fd);
+               return FALSE;
+       }
+
+       epoll_events = g_new0 (struct epoll_event, EPOLL_NEVENTS);
+
+       return TRUE;
+}
+
+static void
+epoll_cleanup (void)
+{
+       g_free (epoll_events);
+       close (epoll_fd);
+}
+
+static void
+epoll_update_add (ThreadPoolIOUpdate *update)
+{
+       struct epoll_event event;
+
+       event.data.fd = update->fd;
+       if ((update->events & MONO_POLLIN) != 0)
+               event.events |= EPOLLIN;
+       if ((update->events & MONO_POLLOUT) != 0)
+               event.events |= EPOLLOUT;
+
+       if (epoll_ctl (epoll_fd, update->is_new ? EPOLL_CTL_ADD : EPOLL_CTL_MOD, event.data.fd, &event) == -1)
+               g_warning ("epoll_update_add: epoll_ctl(%s) failed, error (%d) %s", update->is_new ? "EPOLL_CTL_ADD" : "EPOLL_CTL_MOD", errno, g_strerror (errno));
+}
+
+static gint
+epoll_event_wait (void)
+{
+       gint ready;
+
+       ready = epoll_wait (epoll_fd, epoll_events, EPOLL_NEVENTS, -1);
+       if (ready == -1) {
+               switch (errno) {
+               case EINTR:
+                       check_for_interruption_critical ();
+                       ready = 0;
+                       break;
+               default:
+                       g_warning ("epoll_event_wait: epoll_wait () failed, error (%d) %s", errno, g_strerror (errno));
+                       break;
+               }
+       }
+
+       return ready;
+}
+
+static gint
+epoll_event_max (void)
+{
+       return EPOLL_NEVENTS;
+}
+
+static gint
+epoll_event_fd_at (guint i)
+{
+       return epoll_events [i].data.fd;
+}
+
+static gboolean
+epoll_event_create_sockares_at (guint i, gint fd, MonoMList **list)
+{
+       struct epoll_event *epoll_event;
+
+       g_assert (list);
+
+       epoll_event = &epoll_events [i];
+       g_assert (epoll_event);
+
+       g_assert (fd == epoll_event->data.fd);
+
+       if (*list && (epoll_event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)) != 0) {
+               MonoSocketAsyncResult *io_event = get_sockares_for_event (list, MONO_POLLIN);
+               if (io_event)
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) io_event)->vtable->domain, (MonoObject*) io_event);
+       }
+       if (*list && (epoll_event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)) != 0) {
+               MonoSocketAsyncResult *io_event = get_sockares_for_event (list, MONO_POLLOUT);
+               if (io_event)
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) io_event)->vtable->domain, (MonoObject*) io_event);
+       }
+
+       if (*list) {
+               gint events = get_events (*list);
+
+               epoll_event->events = ((events & MONO_POLLOUT) ? EPOLLOUT : 0) | ((events & MONO_POLLIN) ? EPOLLIN : 0);
+               if (epoll_ctl (epoll_fd, EPOLL_CTL_MOD, fd, epoll_event) == -1) {
+                       if (epoll_ctl (epoll_fd, EPOLL_CTL_ADD, fd, epoll_event) == -1)
+                               g_warning ("epoll_event_create_sockares_at: epoll_ctl () failed, error (%d) %s", errno, g_strerror (errno));
+               }
+       } else {
+               epoll_ctl (epoll_fd, EPOLL_CTL_DEL, fd, epoll_event);
+       }
+
+       return TRUE;
+}
+
+static ThreadPoolIOBackend backend_epoll = {
+       .init = epoll_init,
+       .cleanup = epoll_cleanup,
+       .update_add = epoll_update_add,
+       .event_wait = epoll_event_wait,
+       .event_max = epoll_event_max,
+       .event_fd_at = epoll_event_fd_at,
+       .event_create_sockares_at = epoll_event_create_sockares_at,
+};
+
+#endif
diff --git a/mono/metadata/threadpool-ms-io-kqueue.c b/mono/metadata/threadpool-ms-io-kqueue.c
new file mode 100644 (file)
index 0000000..f6afe7f
--- /dev/null
@@ -0,0 +1,145 @@
+
+#if defined(HAVE_KQUEUE)
+
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+
+#if defined(HOST_WIN32)
+/* We assume that kqueue is not available on windows */
+#error
+#endif
+
+#define KQUEUE_NEVENTS 128
+
+static gint kqueue_fd;
+static struct kevent *kqueue_events;
+
+static gboolean
+kqueue_init (gint wakeup_pipe_fd)
+{
+       struct kevent event;
+
+       kqueue_fd = kqueue ();
+       if (kqueue_fd == -1) {
+               g_warning ("kqueue_init: kqueue () failed, error (%d) %s", errno, g_strerror (errno));
+               return FALSE;
+       }
+
+       EV_SET (&event, wakeup_pipe_fd, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, 0);
+       if (kevent (kqueue_fd, &event, 1, NULL, 0, NULL) == -1) {
+               g_warning ("kqueue_init: kevent () failed, error (%d) %s", errno, g_strerror (errno));
+               close (kqueue_fd);
+               return FALSE;
+       }
+
+       kqueue_events = g_new0 (struct kevent, KQUEUE_NEVENTS);
+
+       return TRUE;
+}
+
+static void
+kqueue_cleanup (void)
+{
+       g_free (kqueue_events);
+       close (kqueue_fd);
+}
+
+static void
+kqueue_update_add (ThreadPoolIOUpdate *update)
+{
+       struct kevent event;
+
+       if ((update->events & MONO_POLLIN) != 0)
+               EV_SET (&event, update->fd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
+       if ((update->events & MONO_POLLOUT) != 0)
+               EV_SET (&event, update->fd, EVFILT_WRITE, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
+
+       if (kevent (kqueue_fd, &event, 1, NULL, 0, NULL) == -1)
+               g_warning ("kqueue_update_add: kevent(update) failed, error (%d) %s", errno, g_strerror (errno));
+}
+
+static gint
+kqueue_event_wait (void)
+{
+       gint ready;
+
+       ready = kevent (kqueue_fd, NULL, 0, kqueue_events, KQUEUE_NEVENTS, NULL);
+       if (ready == -1) {
+               switch (errno) {
+               case EINTR:
+                       check_for_interruption_critical ();
+                       ready = 0;
+                       break;
+               default:
+                       g_warning ("kqueue_event_wait: kevent () failed, error (%d) %s", errno, g_strerror (errno));
+                       break;
+               }
+       }
+
+       return ready;
+}
+
+static inline gint
+kqueue_event_fd_at (guint i)
+{
+       return kqueue_events [i].ident;
+}
+
+static gint
+kqueue_event_max (void)
+{
+       return KQUEUE_NEVENTS;
+}
+
+static gboolean
+kqueue_event_create_sockares_at (guint i, gint fd, MonoMList **list)
+{
+       struct kevent *kqueue_event;
+
+       g_assert (list);
+
+       kqueue_event = &kqueue_events [i];
+       g_assert (kqueue_event);
+
+       g_assert (fd == kqueue_event->ident);
+
+       if (*list && (kqueue_event->filter == EVFILT_READ || (kqueue_event->flags & EV_ERROR) != 0)) {
+               MonoSocketAsyncResult *io_event = get_sockares_for_event (list, MONO_POLLIN);
+               if (io_event)
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) io_event)->vtable->domain, (MonoObject*) io_event);
+       }
+       if (*list && (kqueue_event->filter == EVFILT_WRITE || (kqueue_event->flags & EV_ERROR) != 0)) {
+               MonoSocketAsyncResult *io_event = get_sockares_for_event (list, MONO_POLLOUT);
+               if (io_event)
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) io_event)->vtable->domain, (MonoObject*) io_event);
+       }
+
+       if (*list) {
+               gint events = get_events (*list);
+               if (kqueue_event->filter == EVFILT_READ && (events & MONO_POLLIN) != 0) {
+                       EV_SET (kqueue_event, fd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
+                       if (kevent (kqueue_fd, kqueue_event, 1, NULL, 0, NULL) == -1)
+                               g_warning ("kqueue_event_create_sockares_at: kevent (read) failed, error (%d) %s", errno, g_strerror (errno));
+               }
+               if (kqueue_event->filter == EVFILT_WRITE && (events & MONO_POLLOUT) != 0) {
+                       EV_SET (kqueue_event, fd, EVFILT_WRITE, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
+                       if (kevent (kqueue_fd, kqueue_event, 1, NULL, 0, NULL) == -1)
+                               g_warning ("kqueue_event_create_sockares_at: kevent (write) failed, error (%d) %s", errno, g_strerror (errno));
+               }
+       }
+
+       return TRUE;
+}
+
+static ThreadPoolIOBackend backend_kqueue = {
+       .init = kqueue_init,
+       .cleanup = kqueue_cleanup,
+       .update_add = kqueue_update_add,
+       .event_wait = kqueue_event_wait,
+       .event_max = kqueue_event_max,
+       .event_fd_at = kqueue_event_fd_at,
+       .event_create_sockares_at = kqueue_event_create_sockares_at,
+};
+
+#endif
diff --git a/mono/metadata/threadpool-ms-io-poll.c b/mono/metadata/threadpool-ms-io-poll.c
new file mode 100644 (file)
index 0000000..7e0e1f4
--- /dev/null
@@ -0,0 +1,213 @@
+
+#define POLL_NEVENTS 1024
+
+static mono_pollfd *poll_fds;
+static guint poll_fds_capacity;
+static guint poll_fds_size;
+
+static inline void
+POLL_INIT_FD (mono_pollfd *poll_fd, gint fd, gint events)
+{
+       poll_fd->fd = fd;
+       poll_fd->events = events;
+       poll_fd->revents = 0;
+}
+
+static gboolean
+poll_init (gint wakeup_pipe_fd)
+{
+       guint i;
+
+       poll_fds_size = 1;
+       poll_fds_capacity = POLL_NEVENTS;
+       poll_fds = g_new0 (mono_pollfd, poll_fds_capacity);
+
+       POLL_INIT_FD (poll_fds, wakeup_pipe_fd, MONO_POLLIN);
+       for (i = 1; i < poll_fds_capacity; ++i)
+               POLL_INIT_FD (poll_fds + i, -1, 0);
+
+       return TRUE;
+}
+
+static void
+poll_cleanup (void)
+{
+       g_free (poll_fds);
+}
+
+static inline gint
+poll_mark_bad_fds (mono_pollfd *poll_fds, gint poll_fds_size)
+{
+       gint i;
+       gint ret;
+       gint ready = 0;
+       mono_pollfd *poll_fd;
+
+       for (i = 0; i < poll_fds_size; i++) {
+               poll_fd = poll_fds + i;
+               if (poll_fd->fd == -1)
+                       continue;
+
+               ret = mono_poll (poll_fd, 1, 0);
+               if (ret == 1)
+                       ready++;
+               if (ret == -1) {
+#if !defined(HOST_WIN32)
+                       if (errno == EBADF)
+#else
+                       if (WSAGetLastError () == WSAEBADF)
+#endif
+                       {
+                               poll_fd->revents |= MONO_POLLNVAL;
+                               ready++;
+                       }
+               }
+       }
+
+       return ready;
+}
+
+static void
+poll_update_add (ThreadPoolIOUpdate *update)
+{
+       gboolean found = FALSE;
+       gint j, k;
+
+       for (j = 1; j < poll_fds_size; ++j) {
+               mono_pollfd *poll_fd = poll_fds + j;
+               if (poll_fd->fd == update->fd) {
+                       found = TRUE;
+                       break;
+               }
+       }
+
+       if (!found) {
+               for (j = 1; j < poll_fds_capacity; ++j) {
+                       mono_pollfd *poll_fd = poll_fds + j;
+                       if (poll_fd->fd == -1)
+                               break;
+               }
+       }
+
+       if (j == poll_fds_capacity) {
+               poll_fds_capacity += POLL_NEVENTS;
+               poll_fds = g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
+               for (k = j; k < poll_fds_capacity; ++k)
+                       POLL_INIT_FD (poll_fds + k, -1, 0);
+       }
+
+       POLL_INIT_FD (poll_fds + j, update->fd, update->events);
+
+       if (j >= poll_fds_size)
+               poll_fds_size = j + 1;
+}
+
+static gint
+poll_event_wait (void)
+{
+       gint ready;
+
+       ready = mono_poll (poll_fds, poll_fds_size, -1);
+       if (ready == -1) {
+               /*
+                * Apart from EINTR, we only check EBADF, for the rest:
+                *  EINVAL: mono_poll() 'protects' us from descriptor
+                *      numbers above the limit if using select() by marking
+                *      then as MONO_POLLERR.  If a system poll() is being
+                *      used, the number of descriptor we're passing will not
+                *      be over sysconf(_SC_OPEN_MAX), as the error would have
+                *      happened when opening.
+                *
+                *  EFAULT: we own the memory pointed by pfds.
+                *  ENOMEM: we're doomed anyway
+                *
+                */
+#if !defined(HOST_WIN32)
+               switch (errno)
+#else
+               switch (WSAGetLastError ())
+#endif
+               {
+#if !defined(HOST_WIN32)
+               case EINTR:
+#else
+               case WSAEINTR:
+#endif
+                       check_for_interruption_critical ();
+                       ready = 0;
+                       break;
+#if !defined(HOST_WIN32)
+               case EBADF:
+#else
+               case WSAEBADF:
+#endif
+                       ready = poll_mark_bad_fds (poll_fds, poll_fds_size);
+                       break;
+               default:
+#if !defined(HOST_WIN32)
+                       g_warning ("poll_event_wait: mono_poll () failed, error (%d) %s", errno, g_strerror (errno));
+#else
+                       g_warning ("poll_event_wait: mono_poll () failed, error (%d)\n", WSAGetLastError ());
+#endif
+                       break;
+               }
+       }
+
+       return ready;
+}
+
+static inline gint
+poll_event_fd_at (guint i)
+{
+       return poll_fds [i].fd;
+}
+
+static gint
+poll_event_max (void)
+{
+       return poll_fds_size;
+}
+
+static gboolean
+poll_event_create_sockares_at (guint i, gint fd, MonoMList **list)
+{
+       mono_pollfd *poll_fd;
+
+       g_assert (list);
+
+       poll_fd = &poll_fds [i];
+       g_assert (poll_fd);
+
+       g_assert (fd == poll_fd->fd);
+
+       if (fd == -1 || poll_fd->revents == 0)
+               return FALSE;
+
+       if (*list && (poll_fd->revents & (MONO_POLLIN | MONO_POLLERR | MONO_POLLHUP | MONO_POLLNVAL)) != 0) {
+               MonoSocketAsyncResult *io_event = get_sockares_for_event (list, MONO_POLLIN);
+               if (io_event)
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) io_event)->vtable->domain, (MonoObject*) io_event);
+       }
+       if (*list && (poll_fd->revents & (MONO_POLLOUT | MONO_POLLERR | MONO_POLLHUP | MONO_POLLNVAL)) != 0) {
+               MonoSocketAsyncResult *io_event = get_sockares_for_event (list, MONO_POLLOUT);
+               if (io_event)
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) io_event)->vtable->domain, (MonoObject*) io_event);
+       }
+
+       if (*list)
+               poll_fd->events = get_events (*list);
+       else
+               POLL_INIT_FD (poll_fd, -1, 0);
+
+       return TRUE;
+}
+
+static ThreadPoolIOBackend backend_poll = {
+       .init = poll_init,
+       .cleanup = poll_cleanup,
+       .update_add = poll_update_add,
+       .event_wait = poll_event_wait,
+       .event_max = poll_event_max,
+       .event_fd_at = poll_event_fd_at,
+       .event_create_sockares_at = poll_event_create_sockares_at,
+};
index 5bc9830d515aa9895ca7b8ce6b3fb525cd2fce5b..be74d429ab22aed4ff525790a22f084a8e9ed0f4 100644 (file)
 #include <fcntl.h>
 #endif
 
-#if defined(HAVE_EPOLL)
-#include <sys/epoll.h>
-#elif defined(HAVE_KQUEUE)
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/time.h>
-#endif
-
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/mono-mlist.h>
 #include <mono/metadata/threadpool-internals.h>
 #include <mono/utils/mono-poll.h>
 #include <mono/utils/mono-threads.h>
 
-/* Keep in sync with System.Net.Sockets.MonoSocketRuntimeWorkItem */
-struct _MonoSocketRuntimeWorkItem {
-       MonoObject object;
-       MonoSocketAsyncResult *socket_async_result;
-};
-
 /* Keep in sync with System.Net.Sockets.Socket.SocketOperation */
 enum {
        AIO_OP_FIRST,
@@ -63,75 +49,24 @@ enum {
        AIO_OP_LAST
 };
 
-typedef enum {
-       BACKEND_EPOLL,
-       BACKEND_KQUEUE,
-       BACKEND_POLL,
-} ThreadPoolIOBackend;
-
 typedef struct {
        gint fd;
-
-       union {
-#if defined(HAVE_EPOLL)
-               struct {
-                       struct epoll_event *event;
-                       gint op;
-               } epoll;
-#elif defined(HAVE_KQUEUE)
-               struct {
-                       struct kevent *event;
-               } kqueue;
-#endif
-               struct {
-                       mono_pollfd fd;
-               } poll;
-       };
+       gint events;
+       gboolean is_new;
 } ThreadPoolIOUpdate;
 
 typedef struct {
-       MonoGHashTable *states;
-       mono_mutex_t states_lock;
-
-       ThreadPoolIOBackend backend;
-
-       ThreadPoolIOUpdate *updates;
-       guint updates_size;
-       mono_mutex_t updates_lock;
-
-#if !defined(HOST_WIN32)
-       gint wakeup_pipes [2];
-#else
-       SOCKET wakeup_pipes [2];
-#endif
-
-       union {
-#if defined(HAVE_EPOLL)
-               struct {
-                       gint fd;
-                       struct epoll_event *events;
-               } epoll;
-#elif defined(HAVE_KQUEUE)
-               struct {
-                       gint fd;
-                       struct kevent *events;
-               } kqueue;
-#endif
-               struct {
-                       mono_pollfd *fds;
-                       guint fds_size;
-                       guint fds_max;
-               } poll;
-       };
-} ThreadPoolIO;
-
-static gint32 io_status = STATUS_NOT_INITIALIZED;
-static gint32 io_thread_status = STATUS_NOT_INITIALIZED;
-
-static ThreadPoolIO* threadpool_io;
+       gboolean (*init) (gint wakeup_pipe_fd);
+       void     (*cleanup) (void);
+       void     (*update_add) (ThreadPoolIOUpdate *update);
+       gint     (*event_wait) (void);
+       gint     (*event_max) (void);
+       gint     (*event_fd_at) (guint i);
+       gboolean (*event_create_sockares_at) (guint i, gint fd, MonoMList **list);
+} ThreadPoolIOBackend;
 
 static int
-get_events_from_state (MonoSocketAsyncResult *ares)
+get_events_from_sockares (MonoSocketAsyncResult *ares)
 {
        switch (ares->operation) {
        case AIO_OP_ACCEPT:
@@ -155,7 +90,7 @@ get_events_from_state (MonoSocketAsyncResult *ares)
 }
 
 static MonoSocketAsyncResult*
-get_state (MonoMList **list, gint event)
+get_sockares_for_event (MonoMList **list, gint event)
 {
        MonoSocketAsyncResult *state = NULL;
        MonoMList *current;
@@ -164,7 +99,7 @@ get_state (MonoMList **list, gint event)
 
        for (current = *list; current; current = mono_mlist_next (current)) {
                state = (MonoSocketAsyncResult*) mono_mlist_get_data (current);
-               if (get_events_from_state ((MonoSocketAsyncResult*) state) == event)
+               if (get_events_from_sockares ((MonoSocketAsyncResult*) state) == event)
                        break;
                state = NULL;
        }
@@ -183,13 +118,39 @@ get_events (MonoMList *list)
 
        for (; list; list = mono_mlist_next (list))
                if ((ares = (MonoSocketAsyncResult*) mono_mlist_get_data (list)))
-                       events |= get_events_from_state (ares);
+                       events |= get_events_from_sockares (ares);
 
        return events;
 }
 
+#include "threadpool-ms-io-epoll.c"
+#include "threadpool-ms-io-kqueue.c"
+#include "threadpool-ms-io-poll.c"
+
+typedef struct {
+       MonoGHashTable *states;
+       mono_mutex_t states_lock;
+
+       ThreadPoolIOBackend backend;
+
+       ThreadPoolIOUpdate *updates;
+       guint updates_size;
+       mono_mutex_t updates_lock;
+
+#if !defined(HOST_WIN32)
+       gint wakeup_pipes [2];
+#else
+       SOCKET wakeup_pipes [2];
+#endif
+} ThreadPoolIO;
+
+static gint32 io_status = STATUS_NOT_INITIALIZED;
+static gint32 io_thread_status = STATUS_NOT_INITIALIZED;
+
+static ThreadPoolIO* threadpool_io;
+
 static void
-polling_thread_wakeup (void)
+selector_thread_wakeup (void)
 {
        gchar msg = 'c';
        gint written;
@@ -200,7 +161,7 @@ polling_thread_wakeup (void)
                if (written == 1)
                        break;
                if (written == -1) {
-                       g_warning ("polling_thread_wakeup: write () failed, error (%d) %s\n", errno, g_strerror (errno));
+                       g_warning ("selector_thread_wakeup: write () failed, error (%d) %s\n", errno, g_strerror (errno));
                        break;
                }
 #else
@@ -208,7 +169,7 @@ polling_thread_wakeup (void)
                if (written == 1)
                        break;
                if (written == SOCKET_ERROR) {
-                       g_warning ("polling_thread_wakeup: write () failed, error (%d)\n", WSAGetLastError ());
+                       g_warning ("selector_thread_wakeup: write () failed, error (%d)\n", WSAGetLastError ());
                        break;
                }
 #endif
@@ -216,7 +177,7 @@ polling_thread_wakeup (void)
 }
 
 static void
-polling_thread_drain_wakeup_pipes (void)
+selector_thread_wakeup_drain_pipes (void)
 {
        gchar buffer [128];
        gint received;
@@ -228,7 +189,7 @@ polling_thread_drain_wakeup_pipes (void)
                        break;
                if (received == -1) {
                        if (errno != EINTR && errno != EAGAIN)
-                               g_warning ("poll_thread: read () failed, error (%d) %s\n", errno, g_strerror (errno));
+                               g_warning ("selector_thread_wakeup_drain_pipes: read () failed, error (%d) %s\n", errno, g_strerror (errno));
                        break;
                }
 #else
@@ -237,499 +198,15 @@ polling_thread_drain_wakeup_pipes (void)
                        break;
                if (received == SOCKET_ERROR) {
                        if (WSAGetLastError () != WSAEINTR && WSAGetLastError () != WSAEWOULDBLOCK)
-                               g_warning ("poll_thread: recv () failed, error (%d) %s\n", WSAGetLastError ());
+                               g_warning ("selector_thread_wakeup_drain_pipes: recv () failed, error (%d) %s\n", WSAGetLastError ());
                        break;
                }
 #endif
        }
 }
 
-#if defined(HAVE_EPOLL)
-
-#if defined(HOST_WIN32)
-/* We assume that epoll is not available on windows */
-#error
-#endif
-
-#define EPOLL_NEVENTS 128
-
-static gboolean
-epoll_init (void)
-{
-#ifdef EPOOL_CLOEXEC
-       threadpool_io->epoll.fd = epoll_create1 (EPOLL_CLOEXEC);
-#else
-       threadpool_io->epoll.fd = epoll_create1 (256);
-       fcntl (threadpool_io->epoll.fd, F_SETFD, FD_CLOEXEC);
-#endif
-
-       if (threadpool_io->epoll.fd == -1) {
-#ifdef EPOOL_CLOEXEC
-               g_warning ("epoll_init: epoll (EPOLL_CLOEXEC) failed, error (%d) %s\n", errno, g_strerror (errno));
-#else
-               g_warning ("epoll_init: epoll (256) failed, error (%d) %s\n", errno, g_strerror (errno));
-#endif
-               return FALSE;
-       }
-
-       if (epoll_ctl (threadpool_io->epoll.fd, EPOLL_CTL_ADD, threadpool_io->wakeup_pipes [0], EPOLLIN) == -1) {
-               g_warning ("epoll_init: epoll_ctl () failed, error (%d) %s", errno, g_strerror (errno));
-               close (threadpool_io->epoll.fd);
-               return FALSE;
-       }
-
-       threadpool_io->epoll.events = g_new0 (struct epoll_event, EPOLL_NEVENTS);
-
-       return TRUE;
-}
-
 static void
-epoll_cleanup (void)
-{
-       g_free (threadpool_io->epoll.events);
-
-       close (threadpool_io->epoll.fd);
-}
-
-static void
-epoll_update (gint fd, gint events, gboolean is_new)
-{
-       ThreadPoolIOUpdate *update;
-       struct epoll_event *event;
-       gchar msg = 'c';
-
-       event = g_new0 (struct epoll_event, 1);
-       event->data.fd = fd;
-       if ((events & MONO_POLLIN) != 0)
-               event->events |= EPOLLIN;
-       if ((events & MONO_POLLOUT) != 0)
-               event->events |= EPOLLOUT;
-
-       mono_mutex_lock (&threadpool_io->updates_lock);
-       threadpool_io->updates_size += 1;
-       threadpool_io->updates = g_renew (ThreadPoolIOUpdate, threadpool_io->updates, threadpool_io->updates_size);
-
-       update = &threadpool_io->updates [threadpool_io->updates_size - 1];
-       update->fd = fd;
-       update->epoll.event = event;
-       update->epoll.op = is_new ? EPOLL_CTL_ADD : EPOLL_CTL_MOD;
-       mono_mutex_unlock (&threadpool_io->updates_lock);
-
-       polling_thread_wakeup ();
-}
-
-static void
-epoll_thread_add_update (ThreadPoolIOUpdate *update)
-{
-       if (epoll_ctl (threadpool_io->epoll.fd, update->epoll.op, update->fd, update->epoll.event) == -1)
-               g_warning ("epoll_thread_add_update: epoll_ctl(%s) failed, error (%d) %s", update->epoll.op == EPOLL_CTL_ADD ? "EPOLL_CTL_ADD" : "EPOLL_CTL_MOD", errno, g_strerror (errno));
-       g_free (update->epoll.event);
-}
-
-static gint
-epoll_thread_wait_for_event (void)
-{
-       gint ready;
-
-       ready = epoll_wait (threadpool_io->epoll.fd, threadpool_io->epoll.events, EPOLL_NEVENTS, -1);
-       if (ready == -1) {
-               switch (errno) {
-               case EINTR:
-                       check_for_interruption_critical ();
-                       ready = 0;
-                       break;
-               default:
-                       g_warning ("epoll_thread_wait_for_event: epoll_wait () failed, error (%d) %s", errno, g_strerror (errno));
-                       break;
-               }
-       }
-
-       return ready;
-}
-
-static inline gint
-epoll_thread_get_fd_at (guint i)
-{
-       return threadpool_io->epoll.events [i].data.fd;
-}
-
-static gboolean
-epoll_thread_create_socket_async_results (gint fd, struct epoll_event *epoll_event, MonoMList **list)
-{
-       g_assert (epoll_event);
-       g_assert (list);
-
-       if (!*list) {
-               epoll_ctl (threadpool_io->epoll.fd, EPOLL_CTL_DEL, fd, epoll_event);
-       } else {
-               gint events;
-
-               if ((epoll_event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)) != 0) {
-                       MonoSocketAsyncResult *io_event = get_state (list, MONO_POLLIN);
-                       if (io_event)
-                               mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) io_event)->vtable->domain, io_event);
-               }
-               if ((epoll_event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)) != 0) {
-                       MonoSocketAsyncResult *io_event = get_state (list, MONO_POLLOUT);
-                       if (io_event)
-                               mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) io_event)->vtable->domain, io_event);
-               }
-
-               events = get_events (*list);
-               epoll_event->events = ((events & MONO_POLLOUT) ? EPOLLOUT : 0) | ((events & MONO_POLLIN) ? EPOLLIN : 0);
-               if (epoll_ctl (threadpool_io->epoll.fd, EPOLL_CTL_MOD, fd, epoll_event) == -1) {
-                       if (epoll_ctl (threadpool_io->epoll.fd, EPOLL_CTL_ADD, fd, epoll_event) == -1)
-                               g_warning ("epoll_thread_create_socket_async_results: epoll_ctl () failed, error (%d) %s", errno, g_strerror (errno));
-               }
-       }
-
-       return TRUE;
-}
-
-#elif defined(HAVE_KQUEUE)
-
-#if defined(HOST_WIN32)
-/* We assume that kqueue is not available on windows */
-#error
-#endif
-
-#define KQUEUE_NEVENTS 128
-
-static gboolean
-kqueue_init (void)
-{
-       struct kevent event;
-
-       threadpool_io->kqueue.fd = kqueue ();
-       if (threadpool_io->kqueue.fd == -1) {
-               g_warning ("kqueue_init: kqueue () failed, error (%d) %s", errno, g_strerror (errno));
-               return FALSE;
-       }
-
-       EV_SET (&event, threadpool_io->wakeup_pipes [0], EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, 0);
-       if (kevent (threadpool_io->kqueue.fd, &event, 1, NULL, 0, NULL) == -1) {
-               g_warning ("kqueue_init: kevent () failed, error (%d) %s", errno, g_strerror (errno));
-               close (threadpool_io->kqueue.fd);
-               return FALSE;
-       }
-
-       threadpool_io->kqueue.events = g_new0 (struct kevent, KQUEUE_NEVENTS);
-
-       return TRUE;
-}
-
-static void
-kqueue_cleanup (void)
-{
-       g_free (threadpool_io->kqueue.events);
-
-       close (threadpool_io->kqueue.fd);
-}
-
-static void
-kqueue_update (gint fd, gint events, gboolean is_new)
-{
-       ThreadPoolIOUpdate *update;
-       struct kevent *event;
-
-       event = g_new0 (struct kevent, 1);
-       if ((events & MONO_POLLIN) != 0)
-               EV_SET (event, fd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
-       if ((events & MONO_POLLOUT) != 0)
-               EV_SET (event, fd, EVFILT_WRITE, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
-
-       mono_mutex_lock (&threadpool_io->updates_lock);
-       threadpool_io->updates_size += 1;
-       threadpool_io->updates = g_renew (ThreadPoolIOUpdate, threadpool_io->updates, threadpool_io->updates_size);
-
-       update = &threadpool_io->updates [threadpool_io->updates_size - 1];
-       update->fd = fd;
-       update->kqueue.event = event;
-       mono_mutex_unlock (&threadpool_io->updates_lock);
-
-       polling_thread_wakeup ();
-}
-
-static void
-kqueue_thread_add_update (ThreadPoolIOUpdate *update)
-{
-       if (kevent (threadpool_io->kqueue.fd, update->kqueue.event, 1, NULL, 0, NULL) == -1)
-               g_warning ("kqueue_thread_add_update: kevent(update) failed, error (%d) %s", errno, g_strerror (errno));
-       g_free (update->kqueue.event);
-}
-
-static gint
-kqueue_thread_wait_for_event (void)
-{
-       gint ready;
-
-       ready = kevent (threadpool_io->kqueue.fd, NULL, 0, threadpool_io->kqueue.events, KQUEUE_NEVENTS, NULL);
-       if (ready == -1) {
-               switch (errno) {
-               case EINTR:
-                       check_for_interruption_critical ();
-                       ready = 0;
-                       break;
-               default:
-                       g_warning ("kqueue_thread_wait_for_event: kevent () failed, error (%d) %s", errno, g_strerror (errno));
-                       break;
-               }
-       }
-
-       return ready;
-}
-
-static inline gint
-kqueue_thread_get_fd_at (guint i)
-{
-       return threadpool_io->kqueue.events [i].ident;
-}
-
-static gboolean
-kqueue_thread_create_socket_async_results (gint fd, struct kevent *kqueue_event, MonoMList **list)
-{
-       g_assert (kqueue_event);
-       g_assert (list);
-
-       if (*list) {
-               gint events;
-
-               if (kqueue_event->filter == EVFILT_READ || (kqueue_event->flags & EV_ERROR) != 0) {
-                       MonoSocketAsyncResult *io_event = get_state (list, MONO_POLLIN);
-                       if (io_event)
-                               mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) io_event)->vtable->domain, io_event);
-               }
-               if (kqueue_event->filter == EVFILT_WRITE || (kqueue_event->flags & EV_ERROR) != 0) {
-                       MonoSocketAsyncResult *io_event = get_state (list, MONO_POLLOUT);
-                       if (io_event)
-                               mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) io_event)->vtable->domain, io_event);
-               }
-
-               events = get_events (*list);
-               if (kqueue_event->filter == EVFILT_READ && (events & MONO_POLLIN) != 0) {
-                       EV_SET (kqueue_event, fd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
-                       if (kevent (threadpool_io->kqueue.fd, kqueue_event, 1, NULL, 0, NULL) == -1)
-                               g_warning ("kqueue_thread_create_socket_async_results: kevent (read) failed, error (%d) %s", errno, g_strerror (errno));
-               }
-               if (kqueue_event->filter == EVFILT_WRITE && (events & MONO_POLLOUT) != 0) {
-                       EV_SET (kqueue_event, fd, EVFILT_WRITE, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
-                       if (kevent (threadpool_io->kqueue.fd, kqueue_event, 1, NULL, 0, NULL) == -1)
-                               g_warning ("kqueue_thread_create_socket_async_results: kevent (write) failed, error (%d) %s", errno, g_strerror (errno));
-               }
-       }
-
-       return TRUE;
-}
-
-#endif
-
-#define POLL_NEVENTS 1024
-
-static inline void
-POLL_INIT_FD (mono_pollfd *poll_fd, gint fd, gint events)
-{
-       poll_fd->fd = fd;
-       poll_fd->events = events;
-       poll_fd->revents = 0;
-}
-
-static gboolean
-poll_init (void)
-{
-       guint i;
-
-       threadpool_io->poll.fds_max = 1;
-       threadpool_io->poll.fds_size = POLL_NEVENTS;
-       threadpool_io->poll.fds = g_new0 (mono_pollfd, threadpool_io->poll.fds_size);
-
-       POLL_INIT_FD (threadpool_io->poll.fds, threadpool_io->wakeup_pipes [0], MONO_POLLIN);
-       for (i = threadpool_io->poll.fds_max; i < threadpool_io->poll.fds_size; ++i)
-               POLL_INIT_FD (threadpool_io->poll.fds + i, -1, 0);
-
-       return TRUE;
-}
-
-static void
-poll_cleanup (void)
-{
-       g_free (threadpool_io->poll.fds);
-}
-
-static void
-poll_update (gint fd, gint events, gboolean is_new)
-{
-       ThreadPoolIOUpdate *update;
-
-       mono_mutex_lock (&threadpool_io->updates_lock);
-       threadpool_io->updates_size += 1;
-       threadpool_io->updates = g_renew (ThreadPoolIOUpdate, threadpool_io->updates, threadpool_io->updates_size);
-
-       update = &threadpool_io->updates [threadpool_io->updates_size - 1];
-       update->fd = fd;
-       POLL_INIT_FD (&update->poll.fd, fd, events);
-       mono_mutex_unlock (&threadpool_io->updates_lock);
-
-       polling_thread_wakeup ();
-}
-
-static gint
-poll_mark_bad_fds (mono_pollfd *poll_fds, gint poll_fds_size)
-{
-       gint i;
-       gint ret;
-       gint ready = 0;
-       mono_pollfd *poll_fd;
-
-       for (i = 0; i < poll_fds_size; i++) {
-               poll_fd = poll_fds + i;
-               if (poll_fd->fd == -1)
-                       continue;
-
-               ret = mono_poll (poll_fd, 1, 0);
-               if (ret == 1)
-                       ready++;
-               if (ret == -1) {
-#if !defined(HOST_WIN32)
-                       if (errno == EBADF)
-#else
-                       if (WSAGetLastError () == WSAEBADF)
-#endif
-                       {
-                               poll_fd->revents |= MONO_POLLNVAL;
-                               ready++;
-                       }
-               }
-       }
-
-       return ready;
-}
-
-static void
-poll_thread_add_update (ThreadPoolIOUpdate *update)
-{
-       gboolean found = FALSE;
-       gint j, k;
-
-       for (j = 1; j < threadpool_io->poll.fds_size; ++j) {
-               mono_pollfd *poll_fd = threadpool_io->poll.fds + j;
-               if (poll_fd->fd == update->poll.fd.fd) {
-                       found = TRUE;
-                       break;
-               }
-       }
-
-       if (!found) {
-               for (j = 1; j < threadpool_io->poll.fds_size; ++j) {
-                       mono_pollfd *poll_fd = threadpool_io->poll.fds + j;
-                       if (poll_fd->fd == -1)
-                               break;
-               }
-       }
-
-       if (j == threadpool_io->poll.fds_size) {
-               threadpool_io->poll.fds_size += POLL_NEVENTS;
-               threadpool_io->poll.fds = g_renew (mono_pollfd, threadpool_io->poll.fds, threadpool_io->poll.fds_size);
-               for (k = j; k < threadpool_io->poll.fds_size; ++k)
-                       POLL_INIT_FD (threadpool_io->poll.fds + k, -1, 0);
-       }
-
-       POLL_INIT_FD (threadpool_io->poll.fds + j, update->poll.fd.fd, update->poll.fd.events);
-
-       if (j >= threadpool_io->poll.fds_max)
-               threadpool_io->poll.fds_max = j + 1;
-}
-
-static gint
-poll_thread_wait_for_event (void)
-{
-       gint ready;
-
-       ready = mono_poll (threadpool_io->poll.fds, threadpool_io->poll.fds_max, -1);
-       if (ready == -1) {
-               /* 
-                * Apart from EINTR, we only check EBADF, for the rest:
-                *  EINVAL: mono_poll() 'protects' us from descriptor
-                *      numbers above the limit if using select() by marking
-                *      then as MONO_POLLERR.  If a system poll() is being
-                *      used, the number of descriptor we're passing will not
-                *      be over sysconf(_SC_OPEN_MAX), as the error would have
-                *      happened when opening.
-                *
-                *  EFAULT: we own the memory pointed by pfds.
-                *  ENOMEM: we're doomed anyway
-                *
-                */
-#if !defined(HOST_WIN32)
-               switch (errno)
-#else
-               switch (WSAGetLastError ())
-#endif
-               {
-#if !defined(HOST_WIN32)
-               case EINTR:
-#else
-               case WSAEINTR:
-#endif
-                       check_for_interruption_critical ();
-                       ready = 0;
-                       break;
-#if !defined(HOST_WIN32)
-               case EBADF:
-#else
-               case WSAEBADF:
-#endif
-                       ready = poll_mark_bad_fds (threadpool_io->poll.fds, threadpool_io->poll.fds_max);
-                       break;
-               default:
-#if !defined(HOST_WIN32)
-                       g_warning ("poll_thread_wait_for_event: mono_poll () failed, error (%d) %s", errno, g_strerror (errno));
-#else
-                       g_warning ("poll_thread_wait_for_event: mono_poll () failed, error (%d)\n", WSAGetLastError ());
-#endif
-                       break;
-               }
-       }
-
-       return ready;
-}
-
-static inline gint
-poll_thread_get_fd_at (guint i)
-{
-       return threadpool_io->poll.fds [i].fd;
-}
-
-static gboolean
-poll_thread_create_socket_async_results (gint fd, mono_pollfd *poll_fd, MonoMList **list)
-{
-       g_assert (poll_fd);
-       g_assert (list);
-
-       if (fd == -1 || poll_fd->revents == 0)
-               return FALSE;
-
-       if (!*list) {
-               POLL_INIT_FD (poll_fd, -1, 0);
-       } else {
-               if ((poll_fd->revents & (MONO_POLLIN | MONO_POLLERR | MONO_POLLHUP | MONO_POLLNVAL)) != 0) {
-                       MonoSocketAsyncResult *io_event = get_state (list, MONO_POLLIN);
-                       if (io_event)
-                               mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) io_event)->vtable->domain, io_event);
-               }
-               if ((poll_fd->revents & (MONO_POLLOUT | MONO_POLLERR | MONO_POLLHUP | MONO_POLLNVAL)) != 0) {
-                       MonoSocketAsyncResult *io_event = get_state (list, MONO_POLLOUT);
-                       if (io_event)
-                               mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) io_event)->vtable->domain, io_event);
-               }
-
-               poll_fd->events = get_events (*list);
-       }
-
-       return TRUE;
-}
-
-static void
-polling_thread (gpointer data)
+selector_thread (gpointer data)
 {
        io_thread_status = STATUS_INITIALIZED;
 
@@ -742,23 +219,7 @@ polling_thread (gpointer data)
 
                mono_mutex_lock (&threadpool_io->updates_lock);
                for (i = 0; i < threadpool_io->updates_size; ++i) {
-                       switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-                       case BACKEND_EPOLL:
-                               epoll_thread_add_update (&threadpool_io->updates [i]);
-                               break;
-#elif defined(HAVE_KQUEUE)
-                       case BACKEND_KQUEUE:
-                               kqueue_thread_add_update (&threadpool_io->updates [i]);
-                               break;
-#endif
-                       case BACKEND_POLL:
-                               poll_thread_add_update (&threadpool_io->updates [i]);
-                               break;
-                       default:
-                               g_assert_not_reached ();
-                       }
-                       
+                       threadpool_io->backend.update_add (&threadpool_io->updates [i]);
                }
                if (threadpool_io->updates_size > 0) {
                        threadpool_io->updates_size = 0;
@@ -766,94 +227,33 @@ polling_thread (gpointer data)
                }
                mono_mutex_unlock (&threadpool_io->updates_lock);
 
-               switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-               case BACKEND_EPOLL:
-                       ready = epoll_thread_wait_for_event ();
-                       break;
-#elif defined(HAVE_KQUEUE)
-               case BACKEND_KQUEUE:
-                       ready = kqueue_thread_wait_for_event ();
-                       break;
-#endif
-               case BACKEND_POLL:
-                       ready = poll_thread_wait_for_event ();
-                       break;
-               default:
-                       g_assert_not_reached ();
-               }
+               ready = threadpool_io->backend.event_wait ();
 
                mono_gc_set_skip_thread (FALSE);
 
                if (ready == -1 || mono_runtime_is_shutting_down ())
                        break;
 
-               switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-               case BACKEND_EPOLL:
-                       max = EPOLL_NEVENTS;
-                       break;
-#elif defined(HAVE_KQUEUE)
-               case BACKEND_KQUEUE:
-                       max = KQUEUE_NEVENTS;
-                       break;
-#endif
-               case BACKEND_POLL:
-                       max = threadpool_io->poll.fds_max;
-                       break;
-               default:
-                       g_assert_not_reached ();
-               }
+               max = threadpool_io->backend.event_max ();
 
                mono_mutex_lock (&threadpool_io->states_lock);
                for (i = 0; i < max && ready > 0; ++i) {
                        MonoMList *list;
-                       gboolean created;
+                       gboolean valid_fd;
                        gint fd;
 
-                       switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-                       case BACKEND_EPOLL:
-                               fd = epoll_thread_get_fd_at (i);
-                               break;
-#elif defined(HAVE_KQUEUE)
-                       case BACKEND_KQUEUE:
-                               fd = kqueue_thread_get_fd_at (i);
-                               break;
-#endif
-                       case BACKEND_POLL:
-                               fd = poll_thread_get_fd_at (i);
-                               break;
-                       default:
-                               g_assert_not_reached ();
-                       }
+                       fd = threadpool_io->backend.event_fd_at (i);
 
                        if (fd == threadpool_io->wakeup_pipes [0]) {
-                               polling_thread_drain_wakeup_pipes ();
+                               selector_thread_wakeup_drain_pipes ();
                                ready -= 1;
                                continue;
                        }
 
                        list = mono_g_hash_table_lookup (threadpool_io->states, GINT_TO_POINTER (fd));
 
-                       switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-                       case BACKEND_EPOLL:
-                               created = epoll_thread_create_socket_async_results (fd, &threadpool_io->epoll.events [i], &list);
-                               break;
-#elif defined(HAVE_KQUEUE)
-                       case BACKEND_KQUEUE:
-                               created = kqueue_thread_create_socket_async_results (fd, &threadpool_io->kqueue.events [i], &list);
-                               break;
-#endif
-                       case BACKEND_POLL:
-                               created = poll_thread_create_socket_async_results (fd, &threadpool_io->poll.fds [i], &list);
-                               break;
-                       default:
-                               g_assert_not_reached ();
-                       }
-
-                       if (!created)
+                       valid_fd = threadpool_io->backend.event_create_sockares_at (i, fd, &list);
+                       if (!valid_fd)
                                continue;
 
                        if (list)
@@ -951,43 +351,21 @@ ensure_initialized (void)
        mono_mutex_init (&threadpool_io->updates_lock);
 
 #if defined(HAVE_EPOLL)
-       threadpool_io->backend = BACKEND_EPOLL;
+       threadpool_io->backend = backend_epoll;
 #elif defined(HAVE_KQUEUE)
-       threadpool_io->backend = BACKEND_KQUEUE;
+       threadpool_io->backend = backend_kqueue;
 #else
-       threadpool_io->backend = BACKEND_POLL;
+       threadpool_io->backend = backend_poll;
 #endif
        if (g_getenv ("MONO_DISABLE_AIO") != NULL)
-               threadpool_io->backend = BACKEND_POLL;
+               threadpool_io->backend = backend_poll;
 
        wakeup_pipes_init ();
 
-retry_init_backend:
-       switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-       case BACKEND_EPOLL:
-               if (!epoll_init ()) {
-                       threadpool_io->backend = BACKEND_POLL;
-                       goto retry_init_backend;
-               }
-               break;
-#elif defined(HAVE_KQUEUE)
-       case BACKEND_KQUEUE:
-               if (!kqueue_init ()) {
-                       threadpool_io->backend = BACKEND_POLL;
-                       goto retry_init_backend;
-               }
-               break;
-#endif
-       case BACKEND_POLL:
-               if (!poll_init ())
-                       g_error ("ensure_initialized: poll_init () failed");
-               break;
-       default:
-               g_assert_not_reached ();
-       }
+       if (!threadpool_io->backend.init (threadpool_io->wakeup_pipes [0]))
+               g_error ("ensure_initialized: backend->init () failed");
 
-       if (!mono_thread_create_internal (mono_get_root_domain (), polling_thread, NULL, TRUE, SMALL_STACK))
+       if (!mono_thread_create_internal (mono_get_root_domain (), selector_thread, NULL, TRUE, SMALL_STACK))
                g_error ("ensure_initialized: mono_thread_create_internal () failed");
 
        io_thread_status = STATUS_INITIALIZING;
@@ -1018,7 +396,7 @@ ensure_cleanedup (void)
         * cleaning up only if the runtime is shutting down */
        g_assert (mono_runtime_is_shutting_down ());
 
-       polling_thread_wakeup ();
+       selector_thread_wakeup ();
        while (io_thread_status != STATUS_CLEANED_UP)
                usleep (1000);
 
@@ -1029,22 +407,7 @@ ensure_cleanedup (void)
        g_free (threadpool_io->updates);
        mono_mutex_destroy (&threadpool_io->updates_lock);
 
-       switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-       case BACKEND_EPOLL:
-               epoll_cleanup ();
-               break;
-#elif defined(HAVE_KQUEUE)
-       case BACKEND_KQUEUE:
-               kqueue_cleanup ();
-               break;
-#endif
-       case BACKEND_POLL:
-               poll_cleanup ();
-               break;
-       default:
-               g_assert_not_reached ();
-       }
+       threadpool_io->backend.cleanup ();
 
 #if !defined(HOST_WIN32)
        close (threadpool_io->wakeup_pipes [0]);
@@ -1062,43 +425,39 @@ ensure_cleanedup (void)
        io_status = STATUS_CLEANED_UP;
 }
 
-gboolean
-mono_threadpool_ms_is_io (MonoObject *target, MonoObject *state)
+static gboolean
+is_socket_async_callback (MonoImage *system_image, MonoClass *class)
 {
-       static MonoClass *socket_class = NULL;
-       static MonoClass *socket_async_class = NULL;
-       static MonoClass *process_class = NULL;
-       static MonoClass *async_read_handler_class = NULL;
-       MonoClass *class;
-       MonoSocketAsyncResult *sockares;
+       MonoClass *socket_async_callback_class = NULL;
 
-       if (!mono_defaults.system)
-               mono_defaults.system = mono_image_loaded ("System");
-       if (!mono_defaults.system)
-               return FALSE;
-       g_assert (mono_defaults.system);
+       socket_async_callback_class = mono_class_from_name (system_image, "System.Net.Sockets", "SocketAsyncCallback");
+       g_assert (socket_async_callback_class);
+
+       return class == socket_async_callback_class;
+}
 
-       if (!socket_class)
-               socket_class = mono_class_from_name (mono_defaults.system, "System.Net.Sockets", "Socket");
-       g_assert (socket_class);
+static gboolean
+is_async_read_handler (MonoImage *system_image, MonoClass *class)
+{
+       MonoClass *process_class = NULL;
 
-       if (!process_class)
-               process_class = mono_class_from_name (mono_defaults.system, "System.Diagnostics", "Process");
+       process_class = mono_class_from_name (system_image, "System.Diagnostics", "Process");
        g_assert (process_class);
 
-       class = target->vtable->klass;
+       return class->nested_in && class->nested_in == process_class && strcmp (class->name, "AsyncReadHandler") == 0;
+}
 
-       if (!socket_async_class) {
-               if (class->nested_in && class->nested_in == socket_class && strcmp (class->name, "SocketAsyncCall") == 0)
-                       socket_async_class = class;
-       }
+gboolean
+mono_threadpool_ms_is_io (MonoObject *target, MonoObject *state)
+{
+       MonoImage *system_image;
+       MonoSocketAsyncResult *sockares;
 
-       if (!async_read_handler_class) {
-               if (class->nested_in && class->nested_in == process_class && strcmp (class->name, "AsyncReadHandler") == 0)
-                       async_read_handler_class = class;
-       }
+       system_image = mono_image_loaded ("System");
+       if (!system_image)
+               return FALSE;
 
-       if (class != socket_async_class && class != async_read_handler_class)
+       if (!is_socket_async_callback (system_image, target->vtable->klass) && !is_async_read_handler (system_image, target->vtable->klass))
                return FALSE;
 
        sockares = (MonoSocketAsyncResult*) state;
@@ -1117,6 +476,7 @@ mono_threadpool_ms_io_cleanup (void)
 MonoAsyncResult *
 mono_threadpool_ms_io_add (MonoAsyncResult *ares, MonoSocketAsyncResult *sockares)
 {
+       ThreadPoolIOUpdate *update;
        MonoMList *list;
        gboolean is_new;
        gint events;
@@ -1144,28 +504,20 @@ mono_threadpool_ms_io_add (MonoAsyncResult *ares, MonoSocketAsyncResult *sockare
 
        events = get_events (list);
 
-       switch (threadpool_io->backend) {
-#if defined(HAVE_EPOLL)
-       case BACKEND_EPOLL: {
-               epoll_update (fd, events, is_new);
-               break;
-       }
-#elif defined(HAVE_KQUEUE)
-       case BACKEND_KQUEUE: {
-               kqueue_update (fd, events, is_new);
-               break;
-       }
-#endif
-       case BACKEND_POLL: {
-               poll_update (fd, events, is_new);
-               break;
-       }
-       default:
-               g_assert_not_reached ();
-       }
+       mono_mutex_lock (&threadpool_io->updates_lock);
+       threadpool_io->updates_size += 1;
+       threadpool_io->updates = g_renew (ThreadPoolIOUpdate, threadpool_io->updates, threadpool_io->updates_size);
+
+       update = &threadpool_io->updates [threadpool_io->updates_size - 1];
+       update->fd = fd;
+       update->events = events;
+       update->is_new = is_new;
+       mono_mutex_unlock (&threadpool_io->updates_lock);
 
        mono_mutex_unlock (&threadpool_io->states_lock);
 
+       selector_thread_wakeup ();
+
        return ares;
 }
 
@@ -1193,16 +545,16 @@ mono_threadpool_ms_io_remove_socket (int fd)
                else if (sockares->operation == AIO_OP_SEND)
                        sockares->operation = AIO_OP_SEND_JUST_CALLBACK;
 
-               sockares2 = get_state (&list, MONO_POLLIN);
+               sockares2 = get_sockares_for_event (&list, MONO_POLLIN);
                if (sockares2)
-                       mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) sockares2)->vtable->domain, sockares2);
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) sockares2)->vtable->domain, (MonoObject*) sockares2);
 
                if (!list)
                        break;
 
-               sockares2 = get_state (&list, MONO_POLLOUT);
+               sockares2 = get_sockares_for_event (&list, MONO_POLLOUT);
                if (sockares2)
-                       mono_threadpool_io_enqueue_socket_async_result (((MonoObject*) sockares2)->vtable->domain, sockares2);
+                       mono_threadpool_ms_enqueue_work_item (((MonoObject*) sockares2)->vtable->domain, (MonoObject*) sockares2);
        }
 }
 
@@ -1234,72 +586,6 @@ mono_threadpool_ms_io_remove_domain_jobs (MonoDomain *domain)
        }
 }
 
-void
-mono_threadpool_io_enqueue_socket_async_result (MonoDomain *domain, MonoSocketAsyncResult *sockares)
-{
-       static MonoClass *socket_runtime_work_item_class = NULL;
-       MonoSocketRuntimeWorkItem *srwi;
-
-       g_assert (sockares);
-
-       if (!mono_defaults.system)
-               mono_defaults.system = mono_image_loaded ("System");
-       g_assert (mono_defaults.system);
-
-       if (!socket_runtime_work_item_class)
-               socket_runtime_work_item_class = mono_class_from_name (mono_defaults.system, "System.Net.Sockets", "MonoSocketRuntimeWorkItem");
-       g_assert (socket_runtime_work_item_class);
-
-       srwi = (MonoSocketRuntimeWorkItem*) mono_object_new (domain, socket_runtime_work_item_class);
-       MONO_OBJECT_SETREF (srwi, socket_async_result, sockares);
-
-       mono_threadpool_ms_enqueue_work_item (domain, (MonoObject*) srwi);
-}
-
-void
-ves_icall_System_Net_Sockets_MonoSocketRuntimeWorkItem_ExecuteWorkItem (MonoSocketRuntimeWorkItem *rwi)
-{
-       MonoSocketAsyncResult *sockares;
-       MonoAsyncResult *ares;
-       MonoObject *exc = NULL;
-
-       g_assert (rwi);
-
-       sockares = rwi->socket_async_result;
-       g_assert (sockares);
-       g_assert (sockares->ares);
-
-       switch (sockares->operation) {
-       case AIO_OP_RECEIVE:
-               sockares->total = ves_icall_System_Net_Sockets_Socket_Receive_internal ((SOCKET) (gssize) sockares->handle, sockares->buffer, sockares->offset,
-                                                                                           sockares->size, sockares->socket_flags, &sockares->error);
-               break;
-       case AIO_OP_SEND:
-               sockares->total = ves_icall_System_Net_Sockets_Socket_Send_internal ((SOCKET) (gssize) sockares->handle, sockares->buffer, sockares->offset,
-                                                                                           sockares->size, sockares->socket_flags, &sockares->error);
-               break;
-       }
-
-       ares = sockares->ares;
-       g_assert (ares);
-
-       mono_async_result_invoke (ares, &exc);
-
-       if (sockares->completed && sockares->callback) {
-               MonoAsyncResult *cb_ares;
-
-               /* Don't call mono_async_result_new() to avoid capturing the context */
-               cb_ares = (MonoAsyncResult*) mono_object_new (mono_domain_get (), mono_defaults.asyncresult_class);
-               MONO_OBJECT_SETREF (cb_ares, async_delegate, sockares->callback);
-               MONO_OBJECT_SETREF (cb_ares, async_state, (MonoObject*) sockares);
-
-               mono_threadpool_ms_enqueue_async_result (mono_domain_get (), cb_ares);
-       }
-
-       if (exc)
-               mono_raise_exception ((MonoException*) exc);
-}
-
 #else
 
 gboolean
@@ -1332,16 +618,4 @@ mono_threadpool_ms_io_remove_domain_jobs (MonoDomain *domain)
        g_assert_not_reached ();
 }
 
-void
-mono_threadpool_io_enqueue_socket_async_result (MonoDomain *domain, MonoSocketAsyncResult *sockares)
-{
-       g_assert_not_reached ();
-}
-
-void
-ves_icall_System_Net_Sockets_MonoSocketRuntimeWorkItem_ExecuteWorkItem (MonoSocketRuntimeWorkItem *rwi)
-{
-       g_assert_not_reached ();
-}
-
 #endif
\ No newline at end of file
index a39d8cadc7ad63f8878f747912954fcaeb23ed0a..e8d7f5f2b179db68bbda59077e5958ba00b67525 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef _MONO_THREADPOOL_IO_MS_H_
-#define _MONO_THREADPOOL_IO_MS_H_
+#ifndef _MONO_THREADPOOL_MS_IO_H_
+#define _MONO_THREADPOOL_MS_IO_H_
 
 #include <config.h>
 #include <glib.h>
@@ -7,8 +7,6 @@
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/socket-io.h>
 
-typedef struct _MonoSocketRuntimeWorkItem MonoSocketRuntimeWorkItem;
-
 gboolean
 mono_threadpool_ms_is_io (MonoObject *target, MonoObject *state);
 
@@ -21,10 +19,4 @@ mono_threadpool_ms_io_remove_domain_jobs (MonoDomain *domain);
 void
 mono_threadpool_ms_io_cleanup (void);
 
-void
-mono_threadpool_io_enqueue_socket_async_result (MonoDomain *domain, MonoSocketAsyncResult *sockares);
-
-void
-ves_icall_System_Net_Sockets_MonoSocketRuntimeWorkItem_ExecuteWorkItem (MonoSocketRuntimeWorkItem *rwi);
-
-#endif /* _MONO_THREADPOOL_IO_MS_H_ */
\ No newline at end of file
+#endif /* _MONO_THREADPOOL_MS_IO_H_ */
index 529f46e59119b01b870fb3fad2e0c71205647e41..fba30d4d9da62b7266ffc1cf95a0cedd283901df 100644 (file)
 
 #include <stdlib.h>
 #include <math.h>
+#include <config.h>
+#include <glib.h>
 
-#ifdef PLATFORM_ANDROID
+#if !defined (HAVE_COMPLEX_H)
 #include <../../support/libm/complex.h>
 #else
 #include <complex.h>
 #endif
 
-#include <config.h>
-#include <glib.h>
-
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/exception.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/threadpool-ms.h>
 #define HILL_CLIMBING_ERROR_SMOOTHING_FACTOR 0.01
 #define HILL_CLIMBING_MAX_SAMPLE_ERROR_PERCENT 0.15
 
-/* Keep in sync with System.Threading.RuntimeWorkItem */
-struct _MonoRuntimeWorkItem {
-       MonoObject object;
-       MonoAsyncResult *async_result;
-};
-
 typedef union {
        struct {
                gint16 max_working; /* determined by heuristic */
-               gint16 active; /* working or waiting on thread_work_sem; warm threads */
-               gint16 working;
-               gint16 parked;
+               gint16 active; /* executing worker_thread */
+               gint16 working; /* actively executing worker_thread, not parked */
+               gint16 parked; /* parked */
        } _;
        gint64 as_gint64;
 } ThreadPoolCounter;
@@ -93,6 +87,9 @@ typedef struct {
        gint32 outstanding_request;
 } ThreadPoolDomain;
 
+typedef MonoInternalThread ThreadPoolWorkingThread;
+typedef mono_cond_t ThreadPoolParkedThread;
+
 typedef struct {
        gint32 wave_period;
        gint32 samples_to_measure;
@@ -132,11 +129,9 @@ typedef struct {
        GPtrArray *domains; // ThreadPoolDomain* []
        mono_mutex_t domains_lock;
 
-       GPtrArray *working_threads; // MonoInternalThread* []
-       mono_mutex_t working_threads_lock;
-
-       GPtrArray *parked_threads; // mono_cond_t* []
-       mono_mutex_t parked_threads_lock;
+       GPtrArray *working_threads; // ThreadPoolWorkingThread* []
+       GPtrArray *parked_threads; // ThreadPoolParkedThread* []
+       mono_mutex_t active_threads_lock; /* protect access to working_threads and parked_threads */
 
        gint32 heuristic_completions;
        guint32 heuristic_sample_start;
@@ -184,6 +179,7 @@ static ThreadPool* threadpool;
 #define COUNTER_CHECK(counter) \
        do { \
                g_assert (counter._.max_working > 0); \
+               g_assert (counter._.working >= 0); \
                g_assert (counter._.active >= 0); \
        } while (0)
 
@@ -238,7 +234,7 @@ rand_free (gpointer handle)
 }
 
 static void
-ensure_initialized (gboolean *enable_worker_tracking)
+ensure_initialized (MonoBoolean *enable_worker_tracking)
 {
        ThreadPoolHillClimbing *hc;
        const char *threads_per_cpu_env;
@@ -267,10 +263,8 @@ ensure_initialized (gboolean *enable_worker_tracking)
        mono_mutex_init_recursive (&threadpool->domains_lock);
 
        threadpool->parked_threads = g_ptr_array_new ();
-       mono_mutex_init (&threadpool->parked_threads_lock);
-
        threadpool->working_threads = g_ptr_array_new ();
-       mono_mutex_init (&threadpool->working_threads_lock);
+       mono_mutex_init (&threadpool->active_threads_lock);
 
        threadpool->heuristic_adjustment_interval = 10;
        mono_mutex_init (&threadpool->heuristic_lock);
@@ -323,9 +317,14 @@ ensure_initialized (gboolean *enable_worker_tracking)
        status = STATUS_INITIALIZED;
 }
 
+static void worker_unpark (ThreadPoolParkedThread *thread);
+static void worker_kill (ThreadPoolWorkingThread *thread);
+
 static void
 ensure_cleanedup (void)
 {
+       guint i;
+
        if (status == STATUS_NOT_INITIALIZED && InterlockedCompareExchange (&status, STATUS_CLEANED_UP, STATUS_NOT_INITIALIZED) == STATUS_NOT_INITIALIZED)
                return;
        if (status == STATUS_INITIALIZING) {
@@ -345,54 +344,20 @@ ensure_cleanedup (void)
         * cleaning up only if the runtime is shutting down */
        g_assert (mono_runtime_is_shutting_down ());
 
-       /* Unpark all worker threads */
-       mono_mutex_lock (&threadpool->parked_threads_lock);
-       for (;;) {
-               guint i;
-               ThreadPoolCounter counter = COUNTER_READ ();
-               if (counter._.active == 0 && counter._.parked == 0)
-                       break;
-               if (counter._.active == 1) {
-                       MonoInternalThread *thread = mono_thread_internal_current ();
-                       if (thread->threadpool_thread) {
-                               /* if there is only one active thread
-                                * left and it's the current one */
-                               break;
-                       }
-               }
-               for (i = 0; i < threadpool->parked_threads->len; ++i) {
-                       mono_cond_t *cond = (mono_cond_t*) g_ptr_array_index (threadpool->parked_threads, i);
-                       mono_cond_signal (cond);
-               }
-               mono_mutex_unlock (&threadpool->parked_threads_lock);
-               usleep (1000);
-               mono_mutex_lock (&threadpool->parked_threads_lock);
-       }
-       mono_mutex_unlock (&threadpool->parked_threads_lock);
-
        while (monitor_status != MONITOR_STATUS_NOT_RUNNING)
                usleep (1000);
 
-       g_ptr_array_free (threadpool->domains, TRUE);
-       mono_mutex_destroy (&threadpool->domains_lock);
+       mono_mutex_lock (&threadpool->active_threads_lock);
 
-       g_ptr_array_free (threadpool->parked_threads, TRUE);
-       mono_mutex_destroy (&threadpool->parked_threads_lock);
+       /* stop all threadpool->working_threads */
+       for (i = 0; i < threadpool->working_threads->len; ++i)
+               worker_kill ((ThreadPoolWorkingThread*) g_ptr_array_index (threadpool->working_threads, i));
 
-       g_ptr_array_free (threadpool->working_threads, TRUE);
-       mono_mutex_destroy (&threadpool->working_threads_lock);
+       /* unpark all threadpool->parked_threads */
+       for (i = 0; i < threadpool->parked_threads->len; ++i)
+               worker_unpark ((ThreadPoolParkedThread*) g_ptr_array_index (threadpool->parked_threads, i));
 
-       mono_mutex_destroy (&threadpool->heuristic_lock);
-       g_free (threadpool->heuristic_hill_climbing.samples);
-       g_free (threadpool->heuristic_hill_climbing.thread_counts);
-       rand_free (threadpool->heuristic_hill_climbing.random_interval_generator);
-
-       g_free (threadpool->cpu_usage_state);
-
-       g_assert (threadpool);
-       g_free (threadpool);
-       threadpool = NULL;
-       g_assert (!threadpool);
+       mono_mutex_unlock (&threadpool->active_threads_lock);
 
        status = STATUS_CLEANED_UP;
 }
@@ -419,7 +384,7 @@ mono_threadpool_ms_enqueue_work_item (MonoDomain *domain, MonoObject *work_item)
        f = FALSE;
 
        args [0] = (gpointer) work_item;
-       args [1] = (gpointer) mono_value_box (domain, mono_defaults.boolean_class, &f);
+       args [1] = (gpointer) &f;
 
        current_domain = mono_domain_get ();
        if (current_domain == domain) {
@@ -434,24 +399,6 @@ mono_threadpool_ms_enqueue_work_item (MonoDomain *domain, MonoObject *work_item)
        }
 }
 
-void
-mono_threadpool_ms_enqueue_async_result (MonoDomain *domain, MonoAsyncResult *ares)
-{
-       static MonoClass *runtime_work_item_class = NULL;
-       MonoRuntimeWorkItem *rwi;
-
-       g_assert (ares);
-
-       if (!runtime_work_item_class)
-               runtime_work_item_class = mono_class_from_name (mono_defaults.corlib, "System.Threading", "MonoRuntimeWorkItem");
-       g_assert (runtime_work_item_class);
-
-       rwi = (MonoRuntimeWorkItem*) mono_object_new (domain, runtime_work_item_class);
-       MONO_OBJECT_SETREF (rwi, async_result, ares);
-
-       mono_threadpool_ms_enqueue_work_item (domain, (MonoObject*) rwi);
-}
-
 static void
 domain_add (ThreadPoolDomain *tpdomain)
 {
@@ -485,7 +432,7 @@ domain_remove (ThreadPoolDomain *tpdomain)
 }
 
 static ThreadPoolDomain *
-domain_get_or_create (MonoDomain *domain)
+domain_get (MonoDomain *domain, gboolean create)
 {
        ThreadPoolDomain *tpdomain = NULL;
        guint i;
@@ -500,7 +447,7 @@ domain_get_or_create (MonoDomain *domain)
                        break;
                }
        }
-       if (!tpdomain) {
+       if (!tpdomain && create) {
                tpdomain = g_new0 (ThreadPoolDomain, 1);
                tpdomain->domain = domain;
                domain_add (tpdomain);
@@ -509,8 +456,14 @@ domain_get_or_create (MonoDomain *domain)
        return tpdomain;
 }
 
+static void
+domain_free (ThreadPoolDomain *tpdomain)
+{
+       g_free (tpdomain);
+}
+
 static gboolean
-domain_any_has_request ()
+domain_any_has_request (void)
 {
        gboolean res = FALSE;
        guint i;
@@ -550,8 +503,6 @@ domain_get_next (ThreadPoolDomain *current)
                        ThreadPoolDomain *tmp = g_ptr_array_index (threadpool->domains, i % len);
                        if (tmp->outstanding_request > 0) {
                                tpdomain = tmp;
-                               tpdomain->outstanding_request --;
-                               g_assert (tpdomain->outstanding_request >= 0);
                                break;
                        }
                }
@@ -564,13 +515,27 @@ static void
 worker_park (void)
 {
        mono_cond_t cond;
+       MonoInternalThread *thread = mono_thread_internal_current ();
+
        mono_cond_init (&cond, NULL);
 
-       mono_mutex_lock (&threadpool->parked_threads_lock);
-       g_ptr_array_add (threadpool->parked_threads, &cond);
-       mono_cond_wait (&cond, &threadpool->parked_threads_lock);
-       g_ptr_array_remove (threadpool->parked_threads, &cond);
-       mono_mutex_unlock (&threadpool->parked_threads_lock);
+       mono_gc_set_skip_thread (TRUE);
+
+       mono_mutex_lock (&threadpool->active_threads_lock);
+
+       if (!mono_runtime_is_shutting_down ()) {
+               g_ptr_array_add (threadpool->parked_threads, &cond);
+               g_ptr_array_remove_fast (threadpool->working_threads, thread);
+
+               mono_cond_wait (&cond, &threadpool->active_threads_lock);
+
+               g_ptr_array_add (threadpool->working_threads, thread);
+               g_ptr_array_remove (threadpool->parked_threads, &cond);
+       }
+
+       mono_mutex_unlock (&threadpool->active_threads_lock);
+
+       mono_gc_set_skip_thread (FALSE);
 
        mono_cond_destroy (&cond);
 }
@@ -581,38 +546,46 @@ worker_try_unpark (void)
        gboolean res = FALSE;
        guint len;
 
-       mono_mutex_lock (&threadpool->parked_threads_lock);
+       mono_mutex_lock (&threadpool->active_threads_lock);
        len = threadpool->parked_threads->len;
        if (len > 0) {
                mono_cond_t *cond = (mono_cond_t*) g_ptr_array_index (threadpool->parked_threads, len - 1);
                mono_cond_signal (cond);
                res = TRUE;
        }
-       mono_mutex_unlock (&threadpool->parked_threads_lock);
+       mono_mutex_unlock (&threadpool->active_threads_lock);
        return res;
 }
 
+static void
+worker_unpark (ThreadPoolParkedThread *thread)
+{
+       mono_cond_signal ((mono_cond_t*) thread);
+}
+
+static void
+worker_kill (ThreadPoolWorkingThread *thread)
+{
+       ThreadPoolCounter counter;
+
+       if (thread == mono_thread_internal_current ())
+               return;
+
+       mono_thread_internal_stop ((MonoInternalThread*) thread);
+}
+
 static void
 worker_thread (gpointer data)
 {
        static MonoClass *threadpool_wait_callback_class = NULL;
        static MonoMethod *perform_wait_callback_method = NULL;
        MonoInternalThread *thread;
-       ThreadPoolDomain *tpdomain;
+       ThreadPoolDomain *tpdomain, *previous_tpdomain;
        ThreadPoolCounter counter;
        gboolean retire = FALSE;
 
        g_assert (status >= STATUS_INITIALIZED);
 
-       tpdomain = data;
-       g_assert (tpdomain);
-       g_assert (tpdomain->domain);
-
-       if (mono_runtime_is_shutting_down () || mono_domain_is_unloading (tpdomain->domain)) {
-               COUNTER_ATOMIC (counter, { counter._.active --; });
-               return;
-       }
-
        if (!threadpool_wait_callback_class)
                threadpool_wait_callback_class = mono_class_from_name (mono_defaults.corlib, "System.Threading.Microsoft", "_ThreadPoolWaitCallback");
        g_assert (threadpool_wait_callback_class);
@@ -626,23 +599,54 @@ worker_thread (gpointer data)
        thread = mono_thread_internal_current ();
        g_assert (thread);
 
+       mono_thread_set_name_internal (thread, mono_string_new (mono_domain_get (), "Threadpool worker"), FALSE);
+
+       mono_mutex_lock (&threadpool->active_threads_lock);
+       g_ptr_array_add (threadpool->working_threads, thread);
+       mono_mutex_unlock (&threadpool->active_threads_lock);
+
+       previous_tpdomain = NULL;
+
        mono_mutex_lock (&threadpool->domains_lock);
 
-       do {
-               guint i, c;
+       while (!mono_runtime_is_shutting_down ()) {
+               tpdomain = NULL;
 
-               g_assert (tpdomain);
-               g_assert (tpdomain->domain);
+               if ((thread->state & (ThreadState_StopRequested | ThreadState_SuspendRequested)) != 0) {
+                       mono_mutex_unlock (&threadpool->domains_lock);
+                       mono_thread_interruption_checkpoint ();
+                       mono_mutex_lock (&threadpool->domains_lock);
+               }
 
-               tpdomain->domain->threadpool_jobs ++;
+               if (retire || !(tpdomain = domain_get_next (previous_tpdomain))) {
+                       COUNTER_ATOMIC (counter, {
+                               counter._.working --;
+                               counter._.parked ++;
+                       });
 
-               mono_mutex_unlock (&threadpool->domains_lock);
+                       mono_mutex_unlock (&threadpool->domains_lock);
+                       worker_park ();
+                       mono_mutex_lock (&threadpool->domains_lock);
 
-               mono_mutex_lock (&threadpool->working_threads_lock);
-               g_ptr_array_add (threadpool->working_threads, thread);
-               mono_mutex_unlock (&threadpool->working_threads_lock);
+                       COUNTER_ATOMIC (counter, {
+                               counter._.working ++;
+                               counter._.parked --;
+                       });
+
+                       if (retire)
+                               retire = FALSE;
+
+                       continue;
+               }
+
+               tpdomain->outstanding_request --;
+               g_assert (tpdomain->outstanding_request >= 0);
+
+               g_assert (tpdomain->domain);
+               g_assert (tpdomain->domain->threadpool_jobs >= 0);
+               tpdomain->domain->threadpool_jobs ++;
 
-               COUNTER_ATOMIC (counter, { counter._.working ++; });
+               mono_mutex_unlock (&threadpool->domains_lock);
 
                mono_thread_push_appdomain_ref (tpdomain->domain);
                if (mono_domain_set (tpdomain->domain, FALSE)) {
@@ -656,15 +660,11 @@ worker_thread (gpointer data)
                        mono_thread_clr_state (thread , ~ThreadState_Background);
                        if (!mono_thread_test_state (thread , ThreadState_Background))
                                ves_icall_System_Threading_Thread_SetState (thread, ThreadState_Background);
+
+                       mono_domain_set (mono_get_root_domain (), TRUE);
                }
                mono_thread_pop_appdomain_ref ();
 
-               COUNTER_ATOMIC (counter, { counter._.working --; });
-
-               mono_mutex_lock (&threadpool->working_threads_lock);
-               g_ptr_array_remove_fast (threadpool->working_threads, thread);
-               mono_mutex_unlock (&threadpool->working_threads_lock);
-
                mono_mutex_lock (&threadpool->domains_lock);
 
                tpdomain->domain->threadpool_jobs --;
@@ -675,60 +675,46 @@ worker_thread (gpointer data)
                        g_assert (removed);
                        if (tpdomain->domain->cleanup_semaphore)
                                ReleaseSemaphore (tpdomain->domain->cleanup_semaphore, 1, NULL);
-                       g_free (tpdomain);
+                       domain_free (tpdomain);
                        tpdomain = NULL;
                }
 
-               for (i = 0, c = 5; i < c; ++i) {
-                       if (mono_runtime_is_shutting_down ())
-                               break;
-
-                       if (!retire) {
-                               tpdomain = domain_get_next (tpdomain);
-                               if (tpdomain)
-                                       break;
-                       }
-
-                       if (i < c - 1) {
-                               gboolean park = TRUE;
-
-                               COUNTER_ATOMIC (counter, {
-                                       if (counter._.active <= counter._.max_working) {
-                                               park = FALSE;
-                                               break;
-                                       }
-                                       counter._.active --;
-                                       counter._.parked ++;
-                               });
-
-                               if (park) {
-                                       mono_mutex_unlock (&threadpool->domains_lock);
-                                       worker_park ();
-                                       mono_mutex_lock (&threadpool->domains_lock);
-
-                                       COUNTER_ATOMIC (counter, {
-                                               counter._.active ++;
-                                               counter._.parked --;
-                                       });
-                               }
-                       }
-
-                       retire = FALSE;
-               }
-       } while (tpdomain && !mono_runtime_is_shutting_down ());
+               previous_tpdomain = tpdomain;
+       }
 
        mono_mutex_unlock (&threadpool->domains_lock);
 
-       COUNTER_ATOMIC (counter, { counter._.active --; });
+       mono_mutex_lock (&threadpool->active_threads_lock);
+       g_ptr_array_remove_fast (threadpool->working_threads, thread);
+       mono_mutex_unlock (&threadpool->active_threads_lock);
+
+       COUNTER_ATOMIC (counter, {
+               counter._.working--;
+               counter._.active --;
+       });
 }
 
 static gboolean
-worker_try_create (ThreadPoolDomain *tpdomain)
+worker_try_create (void)
 {
-       g_assert (tpdomain);
-       g_assert (tpdomain->domain);
+       ThreadPoolCounter counter;
+
+       COUNTER_ATOMIC (counter, {
+               if (counter._.working >= counter._.max_working)
+                       return FALSE;
+               counter._.working ++;
+               counter._.active ++;
+       });
+
+       if (mono_thread_create_internal (mono_get_root_domain (), worker_thread, NULL, TRUE, 0) != NULL)
+               return TRUE;
+
+       COUNTER_ATOMIC (counter, {
+               counter._.working --;
+               counter._.active --;
+       });
 
-       return mono_thread_create_internal (tpdomain->domain, worker_thread, tpdomain, TRUE, 0) != NULL;
+       return FALSE;
 }
 
 static void monitor_ensure_running (void);
@@ -737,18 +723,25 @@ static gboolean
 worker_request (MonoDomain *domain)
 {
        ThreadPoolDomain *tpdomain;
-       ThreadPoolCounter counter;
 
        g_assert (domain);
        g_assert (threadpool);
 
-       if (mono_runtime_is_shutting_down () || mono_domain_is_unloading (domain))
+       if (mono_runtime_is_shutting_down ())
                return FALSE;
 
        mono_mutex_lock (&threadpool->domains_lock);
-       tpdomain = domain_get_or_create (domain);
+
+       /* synchronize check with worker_thread */
+       if (mono_domain_is_unloading (domain)) {
+               mono_mutex_unlock (&threadpool->domains_lock);
+               return FALSE;
+       }
+
+       tpdomain = domain_get (domain, TRUE);
        g_assert (tpdomain);
        tpdomain->outstanding_request ++;
+
        mono_mutex_unlock (&threadpool->domains_lock);
 
        if (threadpool->suspended)
@@ -759,16 +752,9 @@ worker_request (MonoDomain *domain)
        if (worker_try_unpark ())
                return TRUE;
 
-       COUNTER_ATOMIC (counter, {
-               if (counter._.active >= counter._.max_working)
-                       return FALSE;
-               counter._.active ++;
-       });
-
-       if (worker_try_create (tpdomain))
+       if (worker_try_create ())
                return TRUE;
 
-       COUNTER_ATOMIC (counter, { counter._.active --; });
        return FALSE;
 }
 
@@ -779,7 +765,7 @@ monitor_should_keep_running (void)
 
        if (InterlockedExchange (&monitor_status, MONITOR_STATUS_WAITING_FOR_REQUEST) == MONITOR_STATUS_WAITING_FOR_REQUEST) {
                if (mono_runtime_is_shutting_down () || !domain_any_has_request ()) {
-                       if (InterlockedExchange (&monitor_status, MONITOR_STATUS_NOT_RUNNING) == MONITOR_STATUS_WAITING_FOR_REQUEST)
+                       if (InterlockedCompareExchange (&monitor_status, MONITOR_STATUS_NOT_RUNNING, MONITOR_STATUS_WAITING_FOR_REQUEST) == MONITOR_STATUS_WAITING_FOR_REQUEST)
                                return FALSE;
                }
        }
@@ -824,6 +810,8 @@ monitor_thread (void)
 
                g_assert (monitor_status != MONITOR_STATUS_NOT_RUNNING);
 
+               mono_gc_set_skip_thread (TRUE);
+
                do {
                        guint32 ts;
 
@@ -835,17 +823,21 @@ monitor_thread (void)
                                break;
                        interval_left -= mono_msec_ticks () - ts;
 
+                       mono_gc_set_skip_thread (FALSE);
                        if ((current_thread->state & (ThreadState_StopRequested | ThreadState_SuspendRequested)) != 0)
                                mono_thread_interruption_checkpoint ();
+                       mono_gc_set_skip_thread (TRUE);
                } while (interval_left > 0 && ++awake < 10);
 
+               mono_gc_set_skip_thread (FALSE);
+
                if (threadpool->suspended)
                        continue;
 
                if (mono_runtime_is_shutting_down () || !domain_any_has_request ())
                        continue;
 
-               mono_mutex_lock (&threadpool->working_threads_lock);
+               mono_mutex_lock (&threadpool->active_threads_lock);
                for (i = 0; i < threadpool->working_threads->len; ++i) {
                        thread = g_ptr_array_index (threadpool->working_threads, i);
                        if ((thread->state & ThreadState_WaitSleepJoin) == 0) {
@@ -853,7 +845,7 @@ monitor_thread (void)
                                break;
                        }
                }
-               mono_mutex_unlock (&threadpool->working_threads_lock);
+               mono_mutex_unlock (&threadpool->active_threads_lock);
 
                if (all_waitsleepjoin) {
                        ThreadPoolCounter counter;
@@ -865,30 +857,14 @@ monitor_thread (void)
 
                if (monitor_sufficient_delay_since_last_dequeue ()) {
                        for (i = 0; i < 5; ++i) {
-                               ThreadPoolDomain *tpdomain;
-                               ThreadPoolCounter counter;
-                               gboolean success;
-
                                if (mono_runtime_is_shutting_down ())
                                        break;
 
                                if (worker_try_unpark ())
                                        break;
 
-                               COUNTER_TRY_ATOMIC (success, counter, {
-                                       if (counter._.active >= counter._.max_working)
-                                               break;
-                                       counter._.active ++;
-                               });
-
-                               if (!success)
-                                       continue;
-
-                               tpdomain = domain_get_next (NULL);
-                               if (tpdomain && worker_try_create (tpdomain))
+                               if (worker_try_create ())
                                        break;
-
-                               COUNTER_ATOMIC (counter, { counter._.active --; });
                        }
                }
        } while (monitor_should_keep_running ());
@@ -905,6 +881,8 @@ monitor_ensure_running (void)
                        InterlockedCompareExchange (&monitor_status, MONITOR_STATUS_REQUESTED, MONITOR_STATUS_WAITING_FOR_REQUEST);
                        break;
                case MONITOR_STATUS_NOT_RUNNING:
+                       if (mono_runtime_is_shutting_down ())
+                               return;
                        if (InterlockedCompareExchange (&monitor_status, MONITOR_STATUS_REQUESTED, MONITOR_STATUS_NOT_RUNNING) == MONITOR_STATUS_NOT_RUNNING) {
                                if (!mono_thread_create_internal (mono_get_root_domain (), monitor_thread, NULL, TRUE, SMALL_STACK))
                                        monitor_status = MONITOR_STATUS_NOT_RUNNING;
@@ -1194,13 +1172,13 @@ heuristic_notify_work_completed (void)
 }
 
 static gboolean
-heuristic_should_adjust ()
+heuristic_should_adjust (void)
 {
        g_assert (threadpool);
 
        if (threadpool->heuristic_last_dequeue > threadpool->heuristic_last_adjustment + threadpool->heuristic_adjustment_interval) {
                ThreadPoolCounter counter = COUNTER_READ ();
-               if (counter._.active <= counter._.max_working)
+               if (counter._.working <= counter._.max_working)
                        return TRUE;
        }
 
@@ -1208,7 +1186,7 @@ heuristic_should_adjust ()
 }
 
 static void
-heuristic_adjust ()
+heuristic_adjust (void)
 {
        g_assert (threadpool);
 
@@ -1240,19 +1218,21 @@ heuristic_adjust ()
 void
 mono_threadpool_ms_cleanup (void)
 {
-#ifndef DISABLE_SOCKETS
-       mono_threadpool_ms_io_cleanup ();
-#endif
+       #ifndef DISABLE_SOCKETS
+               mono_threadpool_ms_io_cleanup ();
+       #endif
        ensure_cleanedup ();
 }
 
 MonoAsyncResult *
-mono_threadpool_ms_add (MonoObject *target, MonoMethodMessage *msg, MonoDelegate *async_callback, MonoObject *state)
+mono_threadpool_ms_begin_invoke (MonoDomain *domain, MonoObject *target, MonoMethod *method, gpointer *params)
 {
        static MonoClass *async_call_klass = NULL;
-       MonoDomain *domain;
-       MonoAsyncResult *ares;
-       MonoAsyncCall *ac;
+       MonoMethodMessage *message;
+       MonoAsyncResult *async_result;
+       MonoAsyncCall *async_call;
+       MonoDelegate *async_callback = NULL;
+       MonoObject *state = NULL;
 
        if (!async_call_klass)
                async_call_klass = mono_class_from_name (mono_defaults.corlib, "System", "MonoAsyncCall");
@@ -1260,31 +1240,32 @@ mono_threadpool_ms_add (MonoObject *target, MonoMethodMessage *msg, MonoDelegate
 
        ensure_initialized (NULL);
 
-       domain = mono_domain_get ();
+       message = mono_method_call_message_new (method, params, mono_get_delegate_invoke (method->klass), (params != NULL) ? (&async_callback) : NULL, (params != NULL) ? (&state) : NULL);
 
-       ac = (MonoAsyncCall*) mono_object_new (domain, async_call_klass);
-       MONO_OBJECT_SETREF (ac, msg, msg);
-       MONO_OBJECT_SETREF (ac, state, state);
+       async_call = (MonoAsyncCall*) mono_object_new (domain, async_call_klass);
+       MONO_OBJECT_SETREF (async_call, msg, message);
+       MONO_OBJECT_SETREF (async_call, state, state);
 
        if (async_callback) {
-               MONO_OBJECT_SETREF (ac, cb_method, mono_get_delegate_invoke (((MonoObject*) async_callback)->vtable->klass));
-               MONO_OBJECT_SETREF (ac, cb_target, async_callback);
+               MONO_OBJECT_SETREF (async_call, cb_method, mono_get_delegate_invoke (((MonoObject*) async_callback)->vtable->klass));
+               MONO_OBJECT_SETREF (async_call, cb_target, async_callback);
        }
 
-       ares = mono_async_result_new (domain, NULL, ac->state, NULL, (MonoObject*) ac);
-       MONO_OBJECT_SETREF (ares, async_delegate, target);
+       async_result = mono_async_result_new (domain, NULL, async_call->state, NULL, (MonoObject*) async_call);
+       MONO_OBJECT_SETREF (async_result, async_delegate, target);
 
 #ifndef DISABLE_SOCKETS
        if (mono_threadpool_ms_is_io (target, state))
-               return mono_threadpool_ms_io_add (ares, (MonoSocketAsyncResult*) state);
+               return mono_threadpool_ms_io_add (async_result, (MonoSocketAsyncResult*) state);
 #endif
 
-       mono_threadpool_ms_enqueue_async_result (domain, ares);
-       return ares;
+       mono_threadpool_ms_enqueue_work_item (domain, (MonoObject*) async_result);
+
+       return async_result;
 }
 
 MonoObject *
-mono_threadpool_ms_finish (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc)
+mono_threadpool_ms_end_invoke (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc)
 {
        MonoAsyncCall *ac;
 
@@ -1318,7 +1299,9 @@ mono_threadpool_ms_finish (MonoAsyncResult *ares, MonoArray **out_args, MonoObje
                        MONO_OBJECT_SETREF (ares, handle, (MonoObject*) mono_wait_handle_new (mono_object_domain (ares), wait_event));
                }
                mono_monitor_exit ((MonoObject*) ares);
+               MONO_PREPARE_BLOCKING
                WaitForSingleObjectEx (wait_event, INFINITE, TRUE);
+               MONO_FINISH_BLOCKING
        }
 
        ac = (MonoAsyncCall*) ares->object_data;
@@ -1339,6 +1322,8 @@ mono_threadpool_ms_remove_domain_jobs (MonoDomain *domain, int timeout)
        g_assert (domain);
        g_assert (timeout >= -1);
 
+       g_assert (mono_domain_is_unloading (domain));
+
        if (timeout != -1)
                start = mono_msec_ticks ();
 
@@ -1350,6 +1335,7 @@ mono_threadpool_ms_remove_domain_jobs (MonoDomain *domain, int timeout)
                        return FALSE;
        }
 #endif
+
        /*
         * There might be some threads out that could be about to execute stuff from the given domain.
         * We avoid that by setting up a semaphore to be pulsed by the thread that reaches zero.
@@ -1364,7 +1350,9 @@ mono_threadpool_ms_remove_domain_jobs (MonoDomain *domain, int timeout)
        mono_memory_write_barrier ();
 
        while (domain->threadpool_jobs) {
+               MONO_PREPARE_BLOCKING
                WaitForSingleObject (sem, timeout);
+               MONO_FINISH_BLOCKING
                if (timeout != -1) {
                        timeout -= mono_msec_ticks () - start;
                        if (timeout <= 0) {
@@ -1393,22 +1381,7 @@ mono_threadpool_ms_resume (void)
 }
 
 void
-ves_icall_System_Threading_MonoRuntimeWorkItem_ExecuteWorkItem (MonoRuntimeWorkItem *rwi)
-{
-       MonoAsyncResult *ares;
-       MonoObject *exc = NULL;
-
-       g_assert (rwi);
-       ares = rwi->async_result;
-       g_assert (ares);
-
-       mono_async_result_invoke (ares, &exc);
-       if (exc)
-               mono_raise_exception ((MonoException*) exc);
-}
-
-void
-ves_icall_System_Threading_Microsoft_ThreadPool_GetAvailableThreadsNative (gint *worker_threads, gint *completion_port_threads)
+ves_icall_System_Threading_Microsoft_ThreadPool_GetAvailableThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads)
 {
        if (!worker_threads || !completion_port_threads)
                return;
@@ -1420,7 +1393,7 @@ ves_icall_System_Threading_Microsoft_ThreadPool_GetAvailableThreadsNative (gint
 }
 
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_GetMinThreadsNative (gint *worker_threads, gint *completion_port_threads)
+ves_icall_System_Threading_Microsoft_ThreadPool_GetMinThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads)
 {
        if (!worker_threads || !completion_port_threads)
                return;
@@ -1432,7 +1405,7 @@ ves_icall_System_Threading_Microsoft_ThreadPool_GetMinThreadsNative (gint *worke
 }
 
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_GetMaxThreadsNative (gint *worker_threads, gint *completion_port_threads)
+ves_icall_System_Threading_Microsoft_ThreadPool_GetMaxThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads)
 {
        if (!worker_threads || !completion_port_threads)
                return;
@@ -1443,8 +1416,8 @@ ves_icall_System_Threading_Microsoft_ThreadPool_GetMaxThreadsNative (gint *worke
        *completion_port_threads = threadpool->limit_io_max;
 }
 
-gboolean
-ves_icall_System_Threading_Microsoft_ThreadPool_SetMinThreadsNative (gint worker_threads, gint completion_port_threads)
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_SetMinThreadsNative (gint32 worker_threads, gint32 completion_port_threads)
 {
        ensure_initialized (NULL);
 
@@ -1459,8 +1432,8 @@ ves_icall_System_Threading_Microsoft_ThreadPool_SetMinThreadsNative (gint worker
        return TRUE;
 }
 
-gboolean
-ves_icall_System_Threading_Microsoft_ThreadPool_SetMaxThreadsNative (gint worker_threads, gint completion_port_threads)
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_SetMaxThreadsNative (gint32 worker_threads, gint32 completion_port_threads)
 {
        gint cpu_count = mono_cpu_count ();
 
@@ -1478,12 +1451,12 @@ ves_icall_System_Threading_Microsoft_ThreadPool_SetMaxThreadsNative (gint worker
 }
 
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_InitializeVMTp (gboolean *enable_worker_tracking)
+ves_icall_System_Threading_Microsoft_ThreadPool_InitializeVMTp (MonoBoolean *enable_worker_tracking)
 {
        ensure_initialized (enable_worker_tracking);
 }
 
-gboolean
+MonoBoolean
 ves_icall_System_Threading_Microsoft_ThreadPool_NotifyWorkItemComplete (void)
 {
        ThreadPoolCounter counter;
@@ -1497,7 +1470,7 @@ ves_icall_System_Threading_Microsoft_ThreadPool_NotifyWorkItemComplete (void)
                heuristic_adjust ();
 
        counter = COUNTER_READ ();
-       return counter._.active <= counter._.max_working;
+       return counter._.working <= counter._.max_working;
 }
 
 void
@@ -1510,14 +1483,35 @@ ves_icall_System_Threading_Microsoft_ThreadPool_NotifyWorkItemProgressNative (vo
 }
 
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_ReportThreadStatus (gboolean is_working)
+ves_icall_System_Threading_Microsoft_ThreadPool_ReportThreadStatus (MonoBoolean is_working)
 {
        // TODO
        mono_raise_exception (mono_get_exception_not_implemented (NULL));
 }
 
-gboolean
+MonoBoolean
 ves_icall_System_Threading_Microsoft_ThreadPool_RequestWorkerThread (void)
 {
        return worker_request (mono_domain_get ());
 }
+
+MonoBoolean G_GNUC_UNUSED
+ves_icall_System_Threading_Microsoft_ThreadPool_PostQueuedCompletionStatus (MonoNativeOverlapped *native_overlapped)
+{
+       /* This copy the behavior of the current Mono implementation */
+       mono_raise_exception (mono_get_exception_not_implemented (NULL));
+       return FALSE;
+}
+
+MonoBoolean G_GNUC_UNUSED
+ves_icall_System_Threading_Microsoft_ThreadPool_BindIOCompletionCallbackNative (gpointer file_handle)
+{
+       /* This copy the behavior of the current Mono implementation */
+       return TRUE;
+}
+
+MonoBoolean G_GNUC_UNUSED
+ves_icall_System_Threading_Microsoft_ThreadPool_IsThreadPoolHosted (void)
+{
+       return FALSE;
+}
index cac0ce7c5d50ed4fcf98fae56794bc2cf15c22ca..f576293e229d3ca9e2134368d37cf0421cde707b 100644 (file)
@@ -16,7 +16,6 @@ enum {
        STATUS_CLEANED_UP,
 };
 
-typedef struct _MonoRuntimeWorkItem MonoRuntimeWorkItem;
 typedef struct _MonoNativeOverlapped MonoNativeOverlapped;
 
 static void G_GNUC_UNUSED
@@ -35,9 +34,9 @@ void
 mono_threadpool_ms_cleanup (void);
 
 MonoAsyncResult *
-mono_threadpool_ms_add (MonoObject *target, MonoMethodMessage *msg, MonoDelegate *async_callback, MonoObject *state);
+mono_threadpool_ms_begin_invoke (MonoDomain *domain, MonoObject *target, MonoMethod *method, gpointer *params);
 MonoObject *
-mono_threadpool_ms_finish (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc);
+mono_threadpool_ms_end_invoke (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc);
 
 gboolean
 mono_threadpool_ms_remove_domain_jobs (MonoDomain *domain, int timeout);
@@ -55,54 +54,37 @@ mono_threadpool_ms_is_queue_array (MonoArray *arr)
 }
 
 void
-ves_icall_System_Threading_MonoRuntimeWorkItem_ExecuteWorkItem (MonoRuntimeWorkItem *rwi);
-
+ves_icall_System_Threading_Microsoft_ThreadPool_GetAvailableThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads);
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_GetAvailableThreadsNative (gint *worker_threads, gint *completion_port_threads);
+ves_icall_System_Threading_Microsoft_ThreadPool_GetMinThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads);
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_GetMinThreadsNative (gint *worker_threads, gint *completion_port_threads);
+ves_icall_System_Threading_Microsoft_ThreadPool_GetMaxThreadsNative (gint32 *worker_threads, gint32 *completion_port_threads);
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_SetMinThreadsNative (gint32 worker_threads, gint32 completion_port_threads);
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_SetMaxThreadsNative (gint32 worker_threads, gint32 completion_port_threads);
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_GetMaxThreadsNative (gint *worker_threads, gint *completion_port_threads);
-gboolean
-ves_icall_System_Threading_Microsoft_ThreadPool_SetMinThreadsNative (gint worker_threads, gint completion_port_threads);
-gboolean
-ves_icall_System_Threading_Microsoft_ThreadPool_SetMaxThreadsNative (gint worker_threads, gint completion_port_threads);
-void
-ves_icall_System_Threading_Microsoft_ThreadPool_InitializeVMTp (gboolean *enable_worker_tracking);
-gboolean
+ves_icall_System_Threading_Microsoft_ThreadPool_InitializeVMTp (MonoBoolean *enable_worker_tracking);
+MonoBoolean
 ves_icall_System_Threading_Microsoft_ThreadPool_NotifyWorkItemComplete (void);
 void
 ves_icall_System_Threading_Microsoft_ThreadPool_NotifyWorkItemProgressNative (void);
 void
-ves_icall_System_Threading_Microsoft_ThreadPool_ReportThreadStatus (gboolean is_working);
-gboolean
+ves_icall_System_Threading_Microsoft_ThreadPool_ReportThreadStatus (MonoBoolean is_working);
+MonoBoolean
 ves_icall_System_Threading_Microsoft_ThreadPool_RequestWorkerThread (void);
 
-static gboolean G_GNUC_UNUSED
-ves_icall_System_Threading_Microsoft_ThreadPool_PostQueuedCompletionStatus (MonoNativeOverlapped *native_overlapped)
-{
-       /* This copy the behavior of the current Mono implementation */
-       mono_raise_exception (mono_get_exception_not_implemented (NULL));
-       return FALSE;
-}
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_PostQueuedCompletionStatus (MonoNativeOverlapped *native_overlapped);
 
-static gboolean G_GNUC_UNUSED
-ves_icall_System_Threading_Microsoft_ThreadPool_BindIOCompletionCallbackNative (gpointer file_handle)
-{
-       /* This copy the behavior of the current Mono implementation */
-       return TRUE;
-}
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_BindIOCompletionCallbackNative (gpointer file_handle);
 
-static gboolean G_GNUC_UNUSED
-ves_icall_System_Threading_Microsoft_ThreadPool_IsThreadPoolHosted (void)
-{
-       return FALSE;
-}
+MonoBoolean
+ves_icall_System_Threading_Microsoft_ThreadPool_IsThreadPoolHosted (void);
 
 /* Internals */
 
-void
-mono_threadpool_ms_enqueue_async_result (MonoDomain *domain, MonoAsyncResult *async_result);
 void
 mono_threadpool_ms_enqueue_work_item (MonoDomain *domain, MonoObject *work_item);
 
index c32a0700a72034a75437a38b59f041d925035275..c901d401acad6bd05f00ea1c750fab9114803b57 100644 (file)
@@ -213,16 +213,6 @@ is_corlib_type (MonoDomain *domain, MonoClass *klass)
        return klass->image == mono_defaults.corlib;
 }
 
-/*
- * Note that we call it is_socket_type() where 'socket' refers to the image
- * that contains the System.Net.Sockets.Socket type.
-*/
-static gboolean
-is_socket_type (MonoDomain *domain, MonoClass *klass)
-{
-       return is_system_type (domain, klass);
-}
-
 #define check_type_cached(domain, ASSEMBLY, _class, _namespace, _name, loc) do { \
        if (*loc) \
                return *loc == _class; \
@@ -235,8 +225,6 @@ is_socket_type (MonoDomain *domain, MonoClass *klass)
 
 #define check_corlib_type_cached(domain, _class, _namespace, _name, loc) check_type_cached (domain, corlib, _class, _namespace, _name, loc)
 
-#define check_socket_type_cached(domain, _class, _namespace, _name, loc) check_type_cached (domain, socket, _class, _namespace, _name, loc)
-
 #define check_system_type_cached(domain, _class, _namespace, _name, loc) check_type_cached (domain, system, _class, _namespace, _name, loc)
 
 static gboolean
@@ -245,26 +233,18 @@ is_corlib_asyncresult (MonoDomain *domain, MonoClass *klass)
        check_corlib_type_cached (domain, klass, "System.Runtime.Remoting.Messaging", "AsyncResult", &domain->corlib_asyncresult_class);
 }
 
-static gboolean
-is_socket (MonoDomain *domain, MonoClass *klass)
-{
-       check_socket_type_cached (domain, klass, "System.Net.Sockets", "Socket", &domain->socket_class);
-}
-
 static gboolean
 is_socketasyncresult (MonoDomain *domain, MonoClass *klass)
 {
-       return (klass->nested_in &&
-                       is_socket (domain, klass->nested_in) &&
-                       !strcmp (klass->name, "SocketAsyncResult"));
+       static MonoClass *socket_async_result_klass = NULL;
+       check_system_type_cached (domain, klass, "System.Net.Sockets", "SocketAsyncResult", &socket_async_result_klass);
 }
 
 static gboolean
 is_socketasynccall (MonoDomain *domain, MonoClass *klass)
 {
-       return (klass->nested_in &&
-                       is_socket (domain, klass->nested_in) &&
-                       !strcmp (klass->name, "SocketAsyncCall"));
+       static MonoClass *socket_async_callback_klass = NULL;
+       check_system_type_cached (domain, klass, "System.Net.Sockets", "SocketAsyncCallback", &socket_async_callback_klass);
 }
 
 static gboolean
@@ -363,14 +343,6 @@ get_events_from_list (MonoMList *list)
        return events;
 }
 
-#define ICALL_RECV(x)  ves_icall_System_Net_Sockets_Socket_Receive_internal (\
-                               (SOCKET)(gssize)x->handle, x->buffer, x->offset, x->size,\
-                                x->socket_flags, &x->error);
-
-#define ICALL_SEND(x)  ves_icall_System_Net_Sockets_Socket_Send_internal (\
-                               (SOCKET)(gssize)x->handle, x->buffer, x->offset, x->size,\
-                                x->socket_flags, &x->error);
-
 #endif /* !DISABLE_SOCKETS */
 
 static void
@@ -850,6 +822,8 @@ monitor_thread (gpointer unused)
        while (1) {
                ms = SAMPLES_PERIOD;
                i = 10; //number of spurious awakes we tolerate before doing a round of rebalancing.
+               mono_gc_set_skip_thread (TRUE);
+               MONO_PREPARE_BLOCKING
                do {
                        guint32 ts;
                        ts = mono_msec_ticks ();
@@ -858,9 +832,10 @@ monitor_thread (gpointer unused)
                        ms -= (mono_msec_ticks () - ts);
                        if (mono_runtime_is_shutting_down ())
                                break;
-                       if (THREAD_WANTS_A_BREAK (thread))
-                               mono_thread_interruption_checkpoint ();
+                       check_for_interruption_critical ();
                } while (ms > 0 && i--);
+               MONO_FINISH_BLOCKING
+               mono_gc_set_skip_thread (FALSE);
 
                if (mono_runtime_is_shutting_down ())
                        break;
@@ -872,6 +847,7 @@ monitor_thread (gpointer unused)
                if (async_tp.pool_status == 2 || async_io_tp.pool_status == 2)
                        break;
 
+               MONO_PREPARE_BLOCKING
                switch (monitor_state) {
                case MONITOR_STATE_AWAKE:
                        num_waiting_iterations = 0;
@@ -890,6 +866,7 @@ monitor_thread (gpointer unused)
                case MONITOR_STATE_SLEEPING:
                        g_assert_not_reached ();
                }
+               MONO_FINISH_BLOCKING
 
                for (i = 0; i < 2; i++) {
                        ThreadPool *tp;
@@ -1026,48 +1003,49 @@ icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state)
 }
 
 MonoAsyncResult *
-mono_thread_pool_add (MonoObject *target, MonoMethodMessage *msg, MonoDelegate *async_callback,
-                     MonoObject *state)
+mono_thread_pool_begin_invoke (MonoDomain *domain, MonoObject *target, MonoMethod *method, gpointer *params)
 {
-       MonoDomain *domain;
-       MonoAsyncResult *ares;
-       MonoAsyncCall *ac;
+       MonoMethodMessage *message;
+       MonoAsyncResult *async_result;
+       MonoAsyncCall *async_call;
+       MonoDelegate *async_callback = NULL;
+       MonoObject *state = NULL;
 
        if (use_ms_threadpool ())
-               return mono_threadpool_ms_add (target, msg, async_callback, state);
+               return mono_threadpool_ms_begin_invoke (domain, target, method, params);
 
-       domain = mono_domain_get ();
+       message = mono_method_call_message_new (method, params, mono_get_delegate_invoke (method->klass), (params != NULL) ? (&async_callback) : NULL, (params != NULL) ? (&state) : NULL);
 
-       ac = (MonoAsyncCall*)mono_object_new (domain, async_call_klass);
-       MONO_OBJECT_SETREF (ac, msg, msg);
-       MONO_OBJECT_SETREF (ac, state, state);
+       async_call = (MonoAsyncCall*)mono_object_new (domain, async_call_klass);
+       MONO_OBJECT_SETREF (async_call, msg, message);
+       MONO_OBJECT_SETREF (async_call, state, state);
 
        if (async_callback) {
-               ac->cb_method = mono_get_delegate_invoke (((MonoObject *)async_callback)->vtable->klass);
-               MONO_OBJECT_SETREF (ac, cb_target, async_callback);
+               async_call->cb_method = mono_get_delegate_invoke (((MonoObject*) async_callback)->vtable->klass);
+               MONO_OBJECT_SETREF (async_call, cb_target, async_callback);
        }
 
-       ares = mono_async_result_new (domain, NULL, ac->state, NULL, (MonoObject*)ac);
-       MONO_OBJECT_SETREF (ares, async_delegate, target);
+       async_result = mono_async_result_new (domain, NULL, async_call->state, NULL, (MonoObject*) async_call);
+       MONO_OBJECT_SETREF (async_result, async_delegate, target);
 
 #ifndef DISABLE_SOCKETS
        if (socket_io_filter (target, state)) {
-               socket_io_add (ares, (MonoSocketAsyncResult *) state);
-               return ares;
+               socket_io_add (async_result, (MonoSocketAsyncResult *) state);
+               return async_result;
        }
 #endif
-       threadpool_append_job (&async_tp, (MonoObject *) ares);
-       return ares;
+       threadpool_append_job (&async_tp, (MonoObject *) async_result);
+       return async_result;
 }
 
 MonoObject *
-mono_thread_pool_finish (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc)
+mono_thread_pool_end_invoke (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc)
 {
        MonoAsyncCall *ac;
        HANDLE wait_event;
 
        if (use_ms_threadpool ()) {
-               return mono_threadpool_ms_finish (ares, out_args, exc);
+               return mono_threadpool_ms_end_invoke (ares, out_args, exc);
        }
 
        *exc = NULL;
@@ -1093,7 +1071,9 @@ mono_thread_pool_finish (MonoAsyncResult *ares, MonoArray **out_args, MonoObject
                        wait_event = mono_wait_handle_get_handle ((MonoWaitHandle *) ares->handle);
                }
                mono_monitor_exit ((MonoObject *) ares);
+               MONO_PREPARE_BLOCKING
                WaitForSingleObjectEx (wait_event, INFINITE, TRUE);
+               MONO_FINISH_BLOCKING
        } else {
                mono_monitor_exit ((MonoObject *) ares);
        }
@@ -1368,7 +1348,9 @@ mono_thread_pool_remove_domain_jobs (MonoDomain *domain, int timeout)
        if (domain->threadpool_jobs && timeout != -1)
                start_time = mono_msec_ticks ();
        while (domain->threadpool_jobs) {
+               MONO_PREPARE_BLOCKING
                WaitForSingleObject (sem_handle, timeout);
+               MONO_FINISH_BLOCKING
                if (timeout != -1 && (mono_msec_ticks () - start_time) > timeout) {
                        result = FALSE;
                        break;
@@ -1467,7 +1449,9 @@ try_steal (MonoWSQ *local_wsq, gpointer *data, gboolean retry)
                if (mono_runtime_is_shutting_down ())
                        return;
 
+               MONO_PREPARE_BLOCKING
                mono_mutex_lock (&wsqs_lock);
+               MONO_FINISH_BLOCKING
                for (i = 0; wsqs != NULL && i < wsqs->len; i++) {
                        MonoWSQ *wsq;
 
@@ -1588,14 +1572,6 @@ async_invoke_thread (gpointer data)
                                MonoSocketAsyncResult *state = (MonoSocketAsyncResult *) data;
                                is_socket = is_socketasyncresult (domain, klass);
                                ar = state->ares;
-                               switch (state->operation) {
-                               case AIO_OP_RECEIVE:
-                                       state->total = ICALL_RECV (state);
-                                       break;
-                               case AIO_OP_SEND:
-                                       state->total = ICALL_SEND (state);
-                                       break;
-                               }
                        }
 #endif
                        /* worker threads invokes methods in different domains,
@@ -1671,6 +1647,7 @@ async_invoke_thread (gpointer data)
                        }
 
                        mono_gc_set_skip_thread (TRUE);
+                       MONO_PREPARE_BLOCKING
 
 #if defined(__OpenBSD__)
                        while (mono_cq_count (tp->queue) == 0 && (res = mono_sem_wait (&tp->new_job, TRUE)) == -1) {// && errno == EINTR) {
@@ -1683,6 +1660,7 @@ async_invoke_thread (gpointer data)
                        }
                        InterlockedDecrement (&tp->waiting);
 
+                       MONO_FINISH_BLOCKING
                        mono_gc_set_skip_thread (FALSE);
 
                        if (mono_runtime_is_shutting_down ())
index 2c9249e87ca3cb7d6d5490360309739b36dfa05b..eab5e1cb010f64dab4ee81f1c9d587768dd9fac0 100644 (file)
@@ -11,13 +11,12 @@ void mono_thread_pool_init_tls (void);
 
 void icall_append_job (MonoObject *ar);
 void icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state);
+
 MonoAsyncResult *
-mono_thread_pool_add     (MonoObject *target, MonoMethodMessage *msg, 
-                         MonoDelegate *async_callback, MonoObject *state);
+mono_thread_pool_begin_invoke (MonoDomain *domain, MonoObject *target, MonoMethod *method, gpointer *params);
 
 MonoObject *
-mono_thread_pool_finish (MonoAsyncResult *ares, MonoArray **out_args, 
-                        MonoObject **exc);
+mono_thread_pool_end_invoke (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc);
 
 void mono_thread_pool_cleanup (void);
 
index 7ff4ad33a5880e2a9a0ed26b3247712ce1c585b0..ae7b15885611e205e9d83f8c66353afb24b38557 100644 (file)
@@ -184,6 +184,8 @@ void ves_icall_System_Threading_Thread_MemoryBarrier (void);
 void ves_icall_System_Threading_Thread_Interrupt_internal (MonoInternalThread *this_obj);
 void ves_icall_System_Threading_Thread_SpinWait_nop (void);
 
+void ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext (MonoAppContext *ctx);
+
 MonoInternalThread *mono_thread_internal_current (void);
 
 void mono_thread_internal_stop (MonoInternalThread *thread);
@@ -193,7 +195,6 @@ gboolean mono_thread_internal_has_appdomain_ref (MonoInternalThread *thread, Mon
 void mono_thread_internal_reset_abort (MonoInternalThread *thread);
 
 void mono_alloc_special_static_data_free (GHashTable *special_static_fields);
-void mono_special_static_data_free_slot (guint32 offset, guint32 size);
 uint32_t mono_thread_alloc_tls   (MonoReflectionType *type);
 void     mono_thread_destroy_tls (uint32_t tls_offset);
 void     mono_thread_destroy_domain_tls (MonoDomain *domain);
@@ -225,8 +226,6 @@ void mono_thread_set_execution_context (MonoObject *ec);
 void mono_runtime_set_has_tls_get (gboolean val);
 gboolean mono_runtime_has_tls_get (void);
 
-int mono_thread_get_abort_signal (void);
-
 void mono_thread_abort_all_other_threads (void);
 void mono_thread_suspend_all_other_threads (void);
 gboolean mono_threads_abort_appdomain_threads (MonoDomain *domain, int timeout);
index a4ff67a62ae394cb6d44ea45d50bac005501dd53..1c8bae663a6d8c522bd552ea41eed4477a0d24d0 100644 (file)
@@ -31,6 +31,7 @@
 #include <mono/io-layer/io-layer.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/mono-debug-debugger.h>
+#include <mono/utils/monobitset.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-membar.h>
@@ -104,9 +105,9 @@ typedef union {
        gdouble fval;
 } LongDoubleUnion;
  
-typedef struct _MonoThreadDomainTls MonoThreadDomainTls;
-struct _MonoThreadDomainTls {
-       MonoThreadDomainTls *next;
+typedef struct _StaticDataFreeList StaticDataFreeList;
+struct _StaticDataFreeList {
+       StaticDataFreeList *next;
        guint32 offset;
        guint32 size;
 };
@@ -114,7 +115,7 @@ struct _MonoThreadDomainTls {
 typedef struct {
        int idx;
        int offset;
-       MonoThreadDomainTls *freelist;
+       StaticDataFreeList *freelist;
 } StaticDataInfo;
 
 /* Number of cached culture objects in the MonoThread->cached_culture_info array
@@ -126,15 +127,10 @@ typedef struct {
 #define UICULTURES_START_IDX NUM_CACHED_CULTURES
 
 /* Controls access to the 'threads' hash table */
-#define mono_threads_lock() mono_mutex_lock (&threads_mutex)
-#define mono_threads_unlock() mono_mutex_unlock (&threads_mutex)
+static void mono_threads_lock (void);
+static void mono_threads_unlock (void);
 static mono_mutex_t threads_mutex;
 
-/* Controls access to context static data */
-#define mono_contexts_lock() mono_mutex_lock (&contexts_mutex)
-#define mono_contexts_unlock() mono_mutex_unlock (&contexts_mutex)
-static mono_mutex_t contexts_mutex;
-
 /* Controls access to the 'joinable_threads' hash table */
 #define joinable_threads_lock() mono_mutex_lock (&joinable_threads_mutex)
 #define joinable_threads_unlock() mono_mutex_unlock (&joinable_threads_mutex)
@@ -149,6 +145,11 @@ static StaticDataInfo context_static_info;
  */
 static MonoGHashTable *threads=NULL;
 
+/* List of app context GC handles.
+ * Added to from ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext ().
+ */
+static GHashTable *contexts = NULL;
+
 /*
  * Threads which are starting up and they are not in the 'threads' hash yet.
  * When handle_store is called for a thread, it will be removed from this hash table.
@@ -200,11 +201,11 @@ static guint32 default_stacksize = 0;
 #define default_stacksize_for_thread(thread) ((thread)->stack_size? (thread)->stack_size: default_stacksize)
 
 static void thread_adjust_static_data (MonoInternalThread *thread);
-static void mono_free_static_data (gpointer* static_data, gboolean threadlocal);
+static void context_adjust_static_data (MonoAppContext *ctx);
+static void mono_free_static_data (gpointer* static_data);
 static void mono_init_static_data_info (StaticDataInfo *static_data);
 static guint32 mono_alloc_static_data_slot (StaticDataInfo *static_data, guint32 size, guint32 align);
 static gboolean mono_thread_resume (MonoInternalThread* thread);
-static void signal_thread_state_change (MonoInternalThread *thread);
 static void abort_thread_internal (MonoInternalThread *thread, gboolean can_raise_exception, gboolean install_async_abort);
 static void suspend_thread_internal (MonoInternalThread *thread, gboolean interrupt);
 static void self_suspend_internal (MonoInternalThread *thread);
@@ -228,6 +229,22 @@ static gboolean shutting_down = FALSE;
 
 static gint32 managed_thread_id_counter = 0;
 
+
+static void
+mono_threads_lock (void)
+{
+       MONO_TRY_BLOCKING
+       mono_locks_acquire (&threads_mutex, ThreadsLock);
+       MONO_FINISH_TRY_BLOCKING
+}
+
+static void
+mono_threads_unlock (void)
+{
+       mono_locks_release (&threads_mutex, ThreadsLock);
+}
+
+
 static guint32
 get_next_managed_thread_id (void)
 {
@@ -362,7 +379,10 @@ lock_thread (MonoInternalThread *thread)
                ensure_synch_cs_set (thread);
 
        g_assert (thread->synch_cs);
+
+       MONO_TRY_BLOCKING
        mono_mutex_lock (thread->synch_cs);
+       MONO_FINISH_TRY_BLOCKING
 }
 
 static inline void
@@ -455,7 +475,7 @@ static void thread_cleanup (MonoInternalThread *thread)
 
        thread->cached_culture_info = NULL;
 
-       mono_free_static_data (thread->static_data, TRUE);
+       mono_free_static_data (thread->static_data);
        thread->static_data = NULL;
        ref_stack_destroy (thread->appdomain_refs);
        thread->appdomain_refs = NULL;
@@ -469,14 +489,51 @@ static void thread_cleanup (MonoInternalThread *thread)
        }
 }
 
+/*
+ * A special static data offset (guint32) consists of 3 parts:
+ *
+ * [0]   6-bit index into the array of chunks.
+ * [6]   25-bit offset into the array.
+ * [31]  Bit indicating thread or context static.
+ */
+
+typedef union {
+       struct {
+               guint32 index : 6;
+               guint32 offset : 25;
+               guint32 type : 1;
+       } fields;
+       guint32 raw;
+} SpecialStaticOffset;
+
+#define SPECIAL_STATIC_OFFSET_TYPE_THREAD 0
+#define SPECIAL_STATIC_OFFSET_TYPE_CONTEXT 1
+
+#define MAKE_SPECIAL_STATIC_OFFSET(index, offset, type) \
+       ((SpecialStaticOffset) { .fields = { (index), (offset), (type) } }.raw)
+#define ACCESS_SPECIAL_STATIC_OFFSET(x,f) \
+       (((SpecialStaticOffset *) &(x))->fields.f)
+
 static gpointer
 get_thread_static_data (MonoInternalThread *thread, guint32 offset)
 {
-       int idx;
-       g_assert ((offset & 0x80000000) == 0);
-       offset &= 0x7fffffff;
-       idx = (offset >> 24) - 1;
-       return ((char*) thread->static_data [idx]) + (offset & 0xffffff);
+       g_assert (ACCESS_SPECIAL_STATIC_OFFSET (offset, type) == SPECIAL_STATIC_OFFSET_TYPE_THREAD);
+
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (offset, index);
+       int off = ACCESS_SPECIAL_STATIC_OFFSET (offset, offset);
+
+       return ((char *) thread->static_data [idx]) + off;
+}
+
+static gpointer
+get_context_static_data (MonoAppContext *ctx, guint32 offset)
+{
+       g_assert (ACCESS_SPECIAL_STATIC_OFFSET (offset, type) == SPECIAL_STATIC_OFFSET_TYPE_CONTEXT);
+
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (offset, index);
+       int off = ACCESS_SPECIAL_STATIC_OFFSET (offset, offset);
+
+       return ((char *) ctx->static_data [idx]) + off;
 }
 
 static MonoThread**
@@ -924,9 +981,6 @@ mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
 
        thread->handle=thread_handle;
        thread->tid=tid;
-#ifdef PLATFORM_ANDROID
-       thread->android_tid = (gpointer) gettid ();
-#endif
        thread->stack_ptr = &tid;
 
        THREAD_DEBUG (g_message ("%s: Attached thread ID %"G_GSIZE_FORMAT" (handle %p)", __func__, tid, thread_handle));
@@ -2003,84 +2057,6 @@ void mono_thread_current_check_pending_interrupt ()
        }
 }
 
-int  
-mono_thread_get_abort_signal (void)
-{
-#if defined (HOST_WIN32) || !defined (HAVE_SIGACTION)
-       return -1;
-#elif defined(PLATFORM_ANDROID)
-       return SIGUNUSED;
-#elif !defined (SIGRTMIN)
-#ifdef SIGUSR1
-       return SIGUSR1;
-#else
-       return -1;
-#endif /* SIGUSR1 */
-#else
-       static int abort_signum = -1;
-       int i;
-       if (abort_signum != -1)
-               return abort_signum;
-       /* we try to avoid SIGRTMIN and any one that might have been set already, see bug #75387 */
-       for (i = SIGRTMIN + 1; i < SIGRTMAX; ++i) {
-               struct sigaction sinfo;
-               sigaction (i, NULL, &sinfo);
-               if (sinfo.sa_handler == SIG_DFL && (void*)sinfo.sa_sigaction == (void*)SIG_DFL) {
-                       abort_signum = i;
-                       return i;
-               }
-       }
-       /* fallback to the old way */
-       return SIGRTMIN;
-#endif /* HOST_WIN32 */
-}
-
-#ifdef HOST_WIN32
-static void CALLBACK interruption_request_apc (ULONG_PTR param)
-{
-       MonoException* exc = mono_thread_request_interruption (FALSE);
-       if (exc) mono_raise_exception (exc);
-}
-#endif /* HOST_WIN32 */
-
-/*
- * signal_thread_state_change
- *
- * Tells the thread that his state has changed and it has to enter the new
- * state as soon as possible.
- */
-static void signal_thread_state_change (MonoInternalThread *thread)
-{
-#ifndef HOST_WIN32
-       gpointer wait_handle;
-#endif
-
-       if (thread == mono_thread_internal_current ()) {
-               /* Do it synchronously */
-               MonoException *exc = mono_thread_request_interruption (FALSE); 
-               if (exc)
-                       mono_raise_exception (exc);
-       }
-
-#ifdef HOST_WIN32
-       QueueUserAPC ((PAPCFUNC)interruption_request_apc, thread->handle, (ULONG_PTR)NULL);
-#else
-       /* 
-        * This will cause waits to be broken.
-        * It will also prevent the thread from entering a wait, so if the thread returns
-        * from the wait before it receives the abort signal, it will just spin in the wait
-        * functions in the io-layer until the signal handler calls QueueUserAPC which will
-        * make it return.
-        */
-       wait_handle = mono_thread_info_prepare_interrupt (thread->handle);
-
-       /* fixme: store the state somewhere */
-       mono_thread_kill (thread, mono_thread_get_abort_signal ());
-
-       mono_thread_info_finish_interrupt (wait_handle);
-#endif /* HOST_WIN32 */
-}
-
 void
 ves_icall_System_Threading_Thread_Abort (MonoInternalThread *thread, MonoObject *state)
 {
@@ -2111,14 +2087,6 @@ ves_icall_System_Threading_Thread_Abort (MonoInternalThread *thread, MonoObject
        }
        thread->abort_exc = NULL;
 
-       /*
-        * abort_exc is set in mono_thread_execute_interruption(),
-        * triggered by the call to signal_thread_state_change(),
-        * below.  There's a point between where we have
-        * abort_state_handle set, but abort_exc NULL, but that's not
-        * a problem.
-        */
-
        UNLOCK_THREAD (thread);
 
        THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Abort requested for %p (%"G_GSIZE_FORMAT")", __func__, GetCurrentThreadId (), thread, (gsize)thread->tid));
@@ -2597,6 +2565,23 @@ ves_icall_System_Threading_Volatile_Write_T (void *ptr, MonoObject *value)
        mono_gc_wbarrier_generic_store_atomic (ptr, value);
 }
 
+void
+ves_icall_System_Runtime_Remoting_Contexts_Context_RegisterContext (MonoAppContext *ctx)
+{
+       mono_threads_lock ();
+
+       //g_print ("Registering context %d in domain %d\n", ctx->context_id, ctx->domain_id);
+
+       if (!contexts)
+               contexts = g_hash_table_new (NULL, NULL);
+
+       context_adjust_static_data (ctx);
+       gpointer gch = GUINT_TO_POINTER (mono_gchandle_new_weakref (&ctx->obj, FALSE));
+       g_hash_table_insert (contexts, gch, gch);
+
+       mono_threads_unlock ();
+}
+
 void
 mono_thread_init_tls (void)
 {
@@ -2609,7 +2594,6 @@ void mono_thread_init (MonoThreadStartCB start_cb,
 {
        mono_mutex_init_recursive(&threads_mutex);
        mono_mutex_init_recursive(&interlocked_mutex);
-       mono_mutex_init_recursive(&contexts_mutex);
        mono_mutex_init_recursive(&joinable_threads_mutex);
        
        background_change_event = CreateEvent (NULL, TRUE, FALSE, NULL);
@@ -2653,7 +2637,6 @@ void mono_thread_cleanup (void)
         */
        mono_mutex_destroy (&threads_mutex);
        mono_mutex_destroy (&interlocked_mutex);
-       mono_mutex_destroy (&contexts_mutex);
        mono_mutex_destroy (&delayed_free_table_mutex);
        mono_mutex_destroy (&small_id_mutex);
        CloseHandle (background_change_event);
@@ -2704,7 +2687,9 @@ static void wait_for_tids (struct wait_data *wait, guint32 timeout)
        
        THREAD_DEBUG (g_message("%s: %d threads to wait for in this batch", __func__, wait->num));
 
+       MONO_PREPARE_BLOCKING
        ret=WaitForMultipleObjectsEx(wait->num, wait->handles, TRUE, timeout, TRUE);
+       MONO_FINISH_BLOCKING
 
        if(ret==WAIT_FAILED) {
                /* See the comment in build_wait_tids() */
@@ -2765,7 +2750,9 @@ static void wait_for_tids_or_state_change (struct wait_data *wait, guint32 timeo
                count++;
        }
 
+       MONO_PREPARE_BLOCKING
        ret=WaitForMultipleObjectsEx (count, wait->handles, FALSE, timeout, TRUE);
+       MONO_FINISH_BLOCKING
 
        if(ret==WAIT_FAILED) {
                /* See the comment in build_wait_tids() */
@@ -3071,7 +3058,6 @@ void mono_thread_suspend_all_other_threads (void)
        struct wait_data *wait = &wait_data;
        int i;
        gsize self = GetCurrentThreadId ();
-       gpointer *events;
        guint32 eventidx = 0;
        gboolean starting, finished;
 
@@ -3108,12 +3094,10 @@ void mono_thread_suspend_all_other_threads (void)
                mono_g_hash_table_foreach (threads, collect_threads_for_suspend, wait);
                mono_threads_unlock ();
 
-               events = g_new0 (gpointer, wait->num);
                eventidx = 0;
                /* Get the suspended events that we'll be waiting for */
                for (i = 0; i < wait->num; ++i) {
                        MonoInternalThread *thread = wait->threads [i];
-                       gboolean signal_suspend = FALSE;
 
                        if ((thread->tid == self) || mono_gc_is_finalizer_internal_thread (thread) || (thread->flags & MONO_THREAD_FLAG_DONT_MANAGE)) {
                                //CloseHandle (wait->handles [i]);
@@ -3123,15 +3107,6 @@ void mono_thread_suspend_all_other_threads (void)
 
                        LOCK_THREAD (thread);
 
-                       if (thread->suspended_event == NULL) {
-                               thread->suspended_event = CreateEvent (NULL, TRUE, FALSE, NULL);
-                               if (thread->suspended_event == NULL) {
-                                       /* Forget this one and go on to the next */
-                                       UNLOCK_THREAD (thread);
-                                       continue;
-                               }
-                       }
-
                        if ((thread->state & ThreadState_Suspended) != 0 || 
                                (thread->state & ThreadState_StopRequested) != 0 ||
                                (thread->state & ThreadState_Stopped) != 0) {
@@ -3141,10 +3116,7 @@ void mono_thread_suspend_all_other_threads (void)
                                continue;
                        }
 
-                       if ((thread->state & ThreadState_SuspendRequested) == 0)
-                               signal_suspend = TRUE;
-
-                       events [eventidx++] = thread->suspended_event;
+                       ++eventidx;
 
                        /* Convert abort requests into suspend requests */
                        if ((thread->state & ThreadState_AbortRequested) != 0)
@@ -3155,30 +3127,8 @@ void mono_thread_suspend_all_other_threads (void)
                        UNLOCK_THREAD (thread);
 
                        /* Signal the thread to suspend */
-                       if (mono_thread_info_new_interrupt_enabled ())
-                               suspend_thread_internal (thread, TRUE);
-                       else if (signal_suspend)
-                               signal_thread_state_change (thread);
+                       suspend_thread_internal (thread, TRUE);
                }
-
-               /*Only wait on the suspend event if we are using the old path */
-               if (eventidx > 0 && !mono_thread_info_new_interrupt_enabled ()) {
-                       WaitForMultipleObjectsEx (eventidx, events, TRUE, 100, FALSE);
-                       for (i = 0; i < wait->num; ++i) {
-                               MonoInternalThread *thread = wait->threads [i];
-
-                               if (thread == NULL)
-                                       continue;
-
-                               LOCK_THREAD (thread);
-                               if ((thread->state & ThreadState_Suspended) != 0) {
-                                       CloseHandle (thread->suspended_event);
-                                       thread->suspended_event = NULL;
-                               }
-                               UNLOCK_THREAD (thread);
-                       }
-               }
-               
                if (eventidx <= 0) {
                        /* 
                         * If there are threads which are starting up, we wait until they
@@ -3198,26 +3148,6 @@ void mono_thread_suspend_all_other_threads (void)
                        else
                                finished = TRUE;
                }
-
-               g_free (events);
-       }
-}
-
-static void
-collect_threads (gpointer key, gpointer value, gpointer user_data)
-{
-       MonoInternalThread *thread = (MonoInternalThread*)value;
-       struct wait_data *wait = (struct wait_data*)user_data;
-       HANDLE handle;
-
-       if (wait->num<MAXIMUM_WAIT_OBJECTS) {
-               handle = mono_threads_open_thread_handle (thread->handle, (MonoNativeThreadId)thread->tid);
-               if (handle == NULL)
-                       return;
-
-               wait->handles [wait->num] = handle;
-               wait->threads [wait->num] = thread;
-               wait->num++;
        }
 }
 
@@ -3332,41 +3262,9 @@ mono_threads_perform_thread_dump (void)
 void
 mono_threads_request_thread_dump (void)
 {
-       struct wait_data wait_data;
-       struct wait_data *wait = &wait_data;
-       int i;
-
        /*The new thread dump code runs out of the finalizer thread. */
-       if (mono_thread_info_new_interrupt_enabled ()) {
-               thread_dump_requested = TRUE;
-               mono_gc_finalize_notify ();
-               return;
-       }
-
-
-       memset (wait, 0, sizeof (struct wait_data));
-
-       /* 
-        * Make a copy of the hashtable since we can't do anything with
-        * threads while threads_mutex is held.
-        */
-       mono_threads_lock ();
-       mono_g_hash_table_foreach (threads, collect_threads, wait);
-       mono_threads_unlock ();
-
-       for (i = 0; i < wait->num; ++i) {
-               MonoInternalThread *thread = wait->threads [i];
-
-               if (!mono_gc_is_finalizer_internal_thread (thread) &&
-                               (thread != mono_thread_internal_current ()) &&
-                               !thread->thread_dump_requested) {
-                       thread->thread_dump_requested = TRUE;
-
-                       signal_thread_state_change (thread);
-               }
-
-               CloseHandle (wait->handles [i]);
-       }
+       thread_dump_requested = TRUE;
+       mono_gc_finalize_notify ();
 }
 
 struct ref_stack {
@@ -3643,34 +3541,41 @@ static const int static_data_size [NUM_STATIC_DATA_IDX] = {
 };
 #endif
 
-static uintptr_t* static_reference_bitmaps [NUM_STATIC_DATA_IDX];
+static MonoBitSet *thread_reference_bitmaps [NUM_STATIC_DATA_IDX];
+static MonoBitSet *context_reference_bitmaps [NUM_STATIC_DATA_IDX];
 
 static void
-mark_tls_slots (void *addr, MonoGCMarkFunc mark_func, void *gc_data)
+mark_slots (void *addr, MonoBitSet **bitmaps, MonoGCMarkFunc mark_func, void *gc_data)
 {
-       int i;
        gpointer *static_data = addr;
-       for (i = 0; i < NUM_STATIC_DATA_IDX; ++i) {
-               int j, numwords;
-               void **ptr;
-               if (!static_data [i])
+
+       for (int i = 0; i < NUM_STATIC_DATA_IDX; ++i) {
+               void **ptr = static_data [i];
+
+               if (!ptr)
                        continue;
-               numwords = 1 + static_data_size [i] / sizeof (gpointer) / (sizeof(uintptr_t) * 8);
-               ptr = static_data [i];
-               for (j = 0; j < numwords; ++j, ptr += sizeof (uintptr_t) * 8) {
-                       uintptr_t bmap = static_reference_bitmaps [i][j];
-                       void ** p = ptr;
-                       while (bmap) {
-                               if ((bmap & 1) && *p) {
-                                       mark_func (p, gc_data);
-                               }
-                               p++;
-                               bmap >>= 1;
-                       }
-               }
+
+               MONO_BITSET_FOREACH (bitmaps [i], idx, {
+                       void **p = ptr + idx;
+
+                       if (*p)
+                               mark_func (p, gc_data);
+               });
        }
 }
 
+static void
+mark_tls_slots (void *addr, MonoGCMarkFunc mark_func, void *gc_data)
+{
+       mark_slots (addr, thread_reference_bitmaps, mark_func, gc_data);
+}
+
+static void
+mark_ctx_slots (void *addr, MonoGCMarkFunc mark_func, void *gc_data)
+{
+       mark_slots (addr, context_reference_bitmaps, mark_func, gc_data);
+}
+
 /*
  *  mono_alloc_static_data
  *
@@ -3679,15 +3584,23 @@ mark_tls_slots (void *addr, MonoGCMarkFunc mark_func, void *gc_data)
 static void 
 mono_alloc_static_data (gpointer **static_data_ptr, guint32 offset, gboolean threadlocal)
 {
-       guint idx = (offset >> 24) - 1;
+       guint idx = ACCESS_SPECIAL_STATIC_OFFSET (offset, index);
        int i;
 
        gpointer* static_data = *static_data_ptr;
        if (!static_data) {
-               static void* tls_desc = NULL;
-               if (mono_gc_user_markers_supported () && !tls_desc)
-                       tls_desc = mono_gc_make_root_descr_user (mark_tls_slots);
-               static_data = mono_gc_alloc_fixed (static_data_size [0], threadlocal?tls_desc:NULL);
+               static void *tls_desc = NULL;
+               static void *ctx_desc = NULL;
+
+               if (mono_gc_user_markers_supported ()) {
+                       if (!tls_desc)
+                               tls_desc = mono_gc_make_root_descr_user (mark_tls_slots);
+
+                       if (!ctx_desc)
+                               ctx_desc = mono_gc_make_root_descr_user (mark_ctx_slots);
+               }
+
+               static_data = mono_gc_alloc_fixed (static_data_size [0], threadlocal ? tls_desc : ctx_desc);
                *static_data_ptr = static_data;
                static_data [0] = static_data;
        }
@@ -3695,7 +3608,8 @@ mono_alloc_static_data (gpointer **static_data_ptr, guint32 offset, gboolean thr
        for (i = 1; i <= idx; ++i) {
                if (static_data [i])
                        continue;
-               if (mono_gc_user_markers_supported () && threadlocal)
+
+               if (mono_gc_user_markers_supported ())
                        static_data [i] = g_malloc0 (static_data_size [i]);
                else
                        static_data [i] = mono_gc_alloc_fixed (static_data_size [i], NULL);
@@ -3703,7 +3617,7 @@ mono_alloc_static_data (gpointer **static_data_ptr, guint32 offset, gboolean thr
 }
 
 static void 
-mono_free_static_data (gpointer* static_data, gboolean threadlocal)
+mono_free_static_data (gpointer* static_data)
 {
        int i;
        for (i = 1; i < NUM_STATIC_DATA_IDX; ++i) {
@@ -3714,12 +3628,12 @@ mono_free_static_data (gpointer* static_data, gboolean threadlocal)
                 * At this point, the static data pointer array is still registered with the
                 * GC, so must ensure that mark_tls_slots() will not encounter any invalid
                 * data.  Freeing the individual arrays without first nulling their slots
-                * would make it possible for mark_tls_slots() to encounter a pointer to
+                * would make it possible for mark_tls/ctx_slots() to encounter a pointer to
                 * such an already freed array.  See bug #13813.
                 */
                static_data [i] = NULL;
                mono_memory_write_barrier ();
-               if (mono_gc_user_markers_supported () && threadlocal)
+               if (mono_gc_user_markers_supported ())
                        g_free (p);
                else
                        mono_gc_free_fixed (p);
@@ -3748,8 +3662,6 @@ static void mono_init_static_data_info (StaticDataInfo *static_data)
 static guint32
 mono_alloc_static_data_slot (StaticDataInfo *static_data, guint32 size, guint32 align)
 {
-       guint32 offset;
-
        if (!static_data->idx && !static_data->offset) {
                /* 
                 * we use the first chunk of the first allocation also as
@@ -3765,7 +3677,7 @@ mono_alloc_static_data_slot (StaticDataInfo *static_data, guint32 size, guint32
                g_assert (static_data->idx < NUM_STATIC_DATA_IDX);
                static_data->offset = 0;
        }
-       offset = static_data->offset | ((static_data->idx + 1) << 24);
+       guint32 offset = MAKE_SPECIAL_STATIC_OFFSET (static_data->idx, static_data->offset, 0);
        static_data->offset += size;
        return offset;
 }
@@ -3777,17 +3689,31 @@ mono_alloc_static_data_slot (StaticDataInfo *static_data, guint32 size, guint32
 static void
 thread_adjust_static_data (MonoInternalThread *thread)
 {
-       guint32 offset;
-
        mono_threads_lock ();
        if (thread_static_info.offset || thread_static_info.idx > 0) {
                /* get the current allocated size */
-               offset = thread_static_info.offset | ((thread_static_info.idx + 1) << 24);
-               mono_alloc_static_data (&(thread->static_data), offset, TRUE);
+               guint32 offset = MAKE_SPECIAL_STATIC_OFFSET (thread_static_info.idx, thread_static_info.offset, 0);
+               mono_alloc_static_data (&thread->static_data, offset, TRUE);
        }
        mono_threads_unlock ();
 }
 
+static void
+context_adjust_static_data (MonoAppContext *ctx)
+{
+       mono_threads_lock ();
+
+       if (context_static_info.offset || context_static_info.idx > 0) {
+               guint32 offset = MAKE_SPECIAL_STATIC_OFFSET (context_static_info.idx, context_static_info.offset, 0);
+               mono_alloc_static_data (&ctx->static_data, offset, FALSE);
+       }
+
+       mono_threads_unlock ();
+}
+
+/*
+ * LOCKING: requires that threads_mutex is held
+ */
 static void 
 alloc_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
@@ -3797,11 +3723,30 @@ alloc_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
        mono_alloc_static_data (&(thread->static_data), offset, TRUE);
 }
 
-static MonoThreadDomainTls*
-search_tls_slot_in_freelist (StaticDataInfo *static_data, guint32 size, guint32 align)
+/*
+ * LOCKING: requires that threads_mutex is held
+ */
+static void
+alloc_context_static_data_helper (gpointer key, gpointer value, gpointer user)
+{
+       uint32_t gch = GPOINTER_TO_INT (key);
+       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (gch);
+
+       if (!ctx) {
+               g_hash_table_remove (contexts, key);
+               mono_gchandle_free (gch);
+               return;
+       }
+
+       guint32 offset = GPOINTER_TO_UINT (user);
+       mono_alloc_static_data (&ctx->static_data, offset, FALSE);
+}
+
+static StaticDataFreeList*
+search_slot_in_freelist (StaticDataInfo *static_data, guint32 size, guint32 align)
 {
-       MonoThreadDomainTls* prev = NULL;
-       MonoThreadDomainTls* tmp = static_data->freelist;
+       StaticDataFreeList* prev = NULL;
+       StaticDataFreeList* tmp = static_data->freelist;
        while (tmp) {
                if (tmp->size == size) {
                        if (prev)
@@ -3823,100 +3768,88 @@ search_tls_slot_in_freelist (StaticDataInfo *static_data, guint32 size, guint32
 #endif
 
 static void
-update_tls_reference_bitmap (guint32 offset, uintptr_t *bitmap, int numbits)
-{
-       int i;
-       int idx = (offset >> 24) - 1;
-       uintptr_t *rb;
-       if (!static_reference_bitmaps [idx])
-               static_reference_bitmaps [idx] = g_new0 (uintptr_t, 1 + static_data_size [idx] / sizeof(gpointer) / (sizeof(uintptr_t) * 8));
-       rb = static_reference_bitmaps [idx];
-       offset &= 0xffffff;
-       offset /= sizeof (gpointer);
+update_reference_bitmap (MonoBitSet **sets, guint32 offset, uintptr_t *bitmap, int numbits)
+{
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (offset, index);
+       if (!sets [idx])
+               sets [idx] = mono_bitset_new (static_data_size [idx] / sizeof (uintptr_t), 0);
+       MonoBitSet *rb = sets [idx];
+       offset = ACCESS_SPECIAL_STATIC_OFFSET (offset, offset);
+       offset /= sizeof (uintptr_t);
        /* offset is now the bitmap offset */
-       for (i = 0; i < numbits; ++i) {
+       for (int i = 0; i < numbits; ++i) {
                if (bitmap [i / sizeof (uintptr_t)] & (ONE_P << (i & (sizeof (uintptr_t) * 8 -1))))
-                       rb [(offset + i) / (sizeof (uintptr_t) * 8)] |= (ONE_P << ((offset + i) & (sizeof (uintptr_t) * 8 -1)));
+                       mono_bitset_set_fast (rb, offset + i);
        }
 }
 
 static void
-clear_reference_bitmap (guint32 offset, guint32 size)
-{
-       int idx = (offset >> 24) - 1;
-       uintptr_t *rb;
-       rb = static_reference_bitmaps [idx];
-       offset &= 0xffffff;
-       offset /= sizeof (gpointer);
-       size /= sizeof (gpointer);
-       size += offset;
+clear_reference_bitmap (MonoBitSet **sets, guint32 offset, guint32 size)
+{
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (offset, index);
+       MonoBitSet *rb = sets [idx];
+       offset = ACCESS_SPECIAL_STATIC_OFFSET (offset, offset);
+       offset /= sizeof (uintptr_t);
        /* offset is now the bitmap offset */
-       for (; offset < size; ++offset)
-               rb [offset / (sizeof (uintptr_t) * 8)] &= ~(1L << (offset & (sizeof (uintptr_t) * 8 -1)));
+       for (int i = 0; i < size / sizeof (uintptr_t); i++)
+               mono_bitset_clear_fast (rb, offset + i);
 }
 
-/*
- * The offset for a special static variable is composed of three parts:
- * a bit that indicates the type of static data (0:thread, 1:context),
- * an index in the array of chunks of memory for the thread (thread->static_data)
- * and an offset in that chunk of mem. This allows allocating less memory in the 
- * common case.
- */
-
 guint32
 mono_alloc_special_static_data (guint32 static_type, guint32 size, guint32 align, uintptr_t *bitmap, int numbits)
 {
+       g_assert (static_type == SPECIAL_STATIC_THREAD || static_type == SPECIAL_STATIC_CONTEXT);
+
+       StaticDataInfo *info;
+       MonoBitSet **sets;
+
+       if (static_type == SPECIAL_STATIC_THREAD) {
+               info = &thread_static_info;
+               sets = thread_reference_bitmaps;
+       } else {
+               info = &context_static_info;
+               sets = context_reference_bitmaps;
+       }
+
+       mono_threads_lock ();
+
+       StaticDataFreeList *item = search_slot_in_freelist (info, size, align);
        guint32 offset;
+
+       if (item) {
+               offset = item->offset;
+               g_free (item);
+       } else {
+               offset = mono_alloc_static_data_slot (info, size, align);
+       }
+
+       update_reference_bitmap (sets, offset, bitmap, numbits);
+
        if (static_type == SPECIAL_STATIC_THREAD) {
-               MonoThreadDomainTls *item;
-               mono_threads_lock ();
-               item = search_tls_slot_in_freelist (&thread_static_info, size, align);
-               /*g_print ("TLS alloc: %d in domain %p (total: %d), cached: %p\n", size, mono_domain_get (), thread_static_info.offset, item);*/
-               if (item) {
-                       offset = item->offset;
-                       g_free (item);
-               } else {
-                       offset = mono_alloc_static_data_slot (&thread_static_info, size, align);
-               }
-               update_tls_reference_bitmap (offset, bitmap, numbits);
                /* This can be called during startup */
                if (threads != NULL)
                        mono_g_hash_table_foreach (threads, alloc_thread_static_data_helper, GUINT_TO_POINTER (offset));
-               mono_threads_unlock ();
        } else {
-               g_assert (static_type == SPECIAL_STATIC_CONTEXT);
-               mono_contexts_lock ();
-               offset = mono_alloc_static_data_slot (&context_static_info, size, align);
-               mono_contexts_unlock ();
-               offset |= 0x80000000;   /* Set the high bit to indicate context static data */
+               if (contexts != NULL)
+                       g_hash_table_foreach (contexts, alloc_context_static_data_helper, GUINT_TO_POINTER (offset));
+
+               ACCESS_SPECIAL_STATIC_OFFSET (offset, type) = SPECIAL_STATIC_OFFSET_TYPE_CONTEXT;
        }
+
+       mono_threads_unlock ();
+
        return offset;
 }
 
 gpointer
 mono_get_special_static_data_for_thread (MonoInternalThread *thread, guint32 offset)
 {
-       /* The high bit means either thread (0) or static (1) data. */
+       guint32 static_type = ACCESS_SPECIAL_STATIC_OFFSET (offset, type);
 
-       guint32 static_type = (offset & 0x80000000);
-       int idx;
-
-       offset &= 0x7fffffff;
-       idx = (offset >> 24) - 1;
-
-       if (static_type == 0) {
+       if (static_type == SPECIAL_STATIC_OFFSET_TYPE_THREAD) {
                return get_thread_static_data (thread, offset);
        } else {
-               /* Allocate static data block under demand, since we don't have a list
-               // of contexts
-               */
-               MonoAppContext *context = mono_context_get ();
-               if (!context->static_data || !context->static_data [idx]) {
-                       mono_contexts_lock ();
-                       mono_alloc_static_data (&(context->static_data), offset, FALSE);
-                       mono_contexts_unlock ();
-               }
-               return ((char*) context->static_data [idx]) + (offset & 0xffffff);      
+               return get_context_static_data (thread->current_appcontext, offset);
        }
 }
 
@@ -3929,47 +3862,90 @@ mono_get_special_static_data (guint32 offset)
 typedef struct {
        guint32 offset;
        guint32 size;
-} TlsOffsetSize;
+} OffsetSize;
 
+/*
+ * LOCKING: requires that threads_mutex is held
+ */
 static void 
 free_thread_static_data_helper (gpointer key, gpointer value, gpointer user)
 {
        MonoInternalThread *thread = value;
-       TlsOffsetSize *data = user;
-       int idx = (data->offset >> 24) - 1;
+       OffsetSize *data = user;
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, index);
+       int off = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, offset);
        char *ptr;
 
        if (!thread->static_data || !thread->static_data [idx])
                return;
-       ptr = ((char*) thread->static_data [idx]) + (data->offset & 0xffffff);
+       ptr = ((char*) thread->static_data [idx]) + off;
+       mono_gc_bzero_atomic (ptr, data->size);
+}
+
+/*
+ * LOCKING: requires that threads_mutex is held
+ */
+static void
+free_context_static_data_helper (gpointer key, gpointer value, gpointer user)
+{
+       uint32_t gch = GPOINTER_TO_INT (key);
+       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (gch);
+
+       if (!ctx) {
+               g_hash_table_remove (contexts, key);
+               mono_gchandle_free (gch);
+               return;
+       }
+
+       OffsetSize *data = user;
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, index);
+       int off = ACCESS_SPECIAL_STATIC_OFFSET (data->offset, offset);
+       char *ptr;
+
+       if (!ctx->static_data || !ctx->static_data [idx])
+               return;
+
+       ptr = ((char*) ctx->static_data [idx]) + off;
        mono_gc_bzero_atomic (ptr, data->size);
 }
 
 static void
 do_free_special_slot (guint32 offset, guint32 size)
 {
-       guint32 static_type = (offset & 0x80000000);
-       /*g_print ("free %s , size: %d, offset: %x\n", field->name, size, offset);*/
-       if (static_type == 0) {
-               TlsOffsetSize data;
-               MonoThreadDomainTls *item = g_new0 (MonoThreadDomainTls, 1);
-               data.offset = offset & 0x7fffffff;
-               data.size = size;
-               clear_reference_bitmap (data.offset, data.size);
+       guint32 static_type = ACCESS_SPECIAL_STATIC_OFFSET (offset, type);
+       MonoBitSet **sets;
+       StaticDataInfo *info;
+
+       if (static_type == SPECIAL_STATIC_OFFSET_TYPE_THREAD) {
+               info = &thread_static_info;
+               sets = thread_reference_bitmaps;
+       } else {
+               info = &context_static_info;
+               sets = context_reference_bitmaps;
+       }
+
+       guint32 data_offset = offset;
+       ACCESS_SPECIAL_STATIC_OFFSET (data_offset, type) = 0;
+       OffsetSize data = { data_offset, size };
+
+       clear_reference_bitmap (sets, data.offset, data.size);
+
+       if (static_type == SPECIAL_STATIC_OFFSET_TYPE_THREAD) {
                if (threads != NULL)
                        mono_g_hash_table_foreach (threads, free_thread_static_data_helper, &data);
+       } else {
+               if (contexts != NULL)
+                       g_hash_table_foreach (contexts, free_context_static_data_helper, &data);
+       }
+
+       if (!mono_runtime_is_shutting_down ()) {
+               StaticDataFreeList *item = g_new0 (StaticDataFreeList, 1);
+
                item->offset = offset;
                item->size = size;
 
-               if (!mono_runtime_is_shutting_down ()) {
-                       item->next = thread_static_info.freelist;
-                       thread_static_info.freelist = item;
-               } else {
-                       /* We could be called during shutdown after mono_thread_cleanup () is called */
-                       g_free (item);
-               }
-       } else {
-               /* FIXME: free context static data as well */
+               item->next = info->freelist;
+               info->freelist = item;
        }
 }
 
@@ -3988,13 +3964,18 @@ void
 mono_alloc_special_static_data_free (GHashTable *special_static_fields)
 {
        mono_threads_lock ();
+
        g_hash_table_foreach (special_static_fields, do_free_special, NULL);
+
        mono_threads_unlock ();
 }
 
-void
+static void
 mono_special_static_data_free_slot (guint32 offset, guint32 size)
 {
+       /* Only ever called for ThreadLocal instances */
+       g_assert (ACCESS_SPECIAL_STATIC_OFFSET (offset, type) == SPECIAL_STATIC_OFFSET_TYPE_THREAD);
+
        mono_threads_lock ();
        do_free_special_slot (offset, size);
        mono_threads_unlock ();
@@ -4077,68 +4058,114 @@ mono_thread_destroy_domain_tls (MonoDomain *domain)
                destroy_tls (domain, domain->tlsrec_list->tls_offset);
 }
 
-static MonoClassField *local_slots = NULL;
+static MonoClassField *thread_local_slots = NULL;
+static MonoClassField *context_local_slots = NULL;
 
 typedef struct {
        /* local tls data to get locals_slot from a thread */
        guint32 offset;
-       int idx;
        /* index in the locals_slot array */
        int slot;
 } LocalSlotID;
 
+/*
+ * LOCKING: requires that threads_mutex is held
+ */
 static void
-clear_local_slot (gpointer key, gpointer value, gpointer user_data)
+clear_thread_local_slot (gpointer key, gpointer value, gpointer user_data)
 {
+       MonoInternalThread *thread = (MonoInternalThread *) value;
        LocalSlotID *sid = user_data;
-       MonoInternalThread *thread = (MonoInternalThread*)value;
-       MonoArray *slots_array;
-       /*
-        * the static field is stored at: ((char*) thread->static_data [idx]) + (offset & 0xffffff);
-        * it is for the right domain, so we need to check if it is allocated an initialized
-        * for the current thread.
-        */
-       /*g_print ("handling thread %p\n", thread);*/
-       if (!thread->static_data || !thread->static_data [sid->idx])
+
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (sid->offset, index);
+       int off = ACCESS_SPECIAL_STATIC_OFFSET (sid->offset, offset);
+
+       if (!thread->static_data || !thread->static_data [idx])
                return;
-       slots_array = *(MonoArray **)(((char*) thread->static_data [sid->idx]) + (sid->offset & 0xffffff));
+
+       MonoArray *slots_array = *(MonoArray **)(((char *) thread->static_data [idx]) + off);
+
        if (!slots_array || sid->slot >= mono_array_length (slots_array))
                return;
-       mono_array_set (slots_array, MonoObject*, sid->slot, NULL);
+
+       mono_array_set (slots_array, MonoObject *, sid->slot, NULL);
+}
+
+/*
+ * LOCKING: requires that threads_mutex is held
+ */
+static void
+clear_context_local_slot (gpointer key, gpointer value, gpointer user_data)
+{
+       uint32_t gch = GPOINTER_TO_UINT (key);
+       MonoAppContext *ctx = (MonoAppContext *) mono_gchandle_get_target (gch);
+
+       if (!ctx) {
+               g_hash_table_remove (contexts, key);
+               mono_gchandle_free (gch);
+               return;
+       }
+
+       LocalSlotID *sid = user_data;
+
+       int idx = ACCESS_SPECIAL_STATIC_OFFSET (sid->offset, index);
+       int off = ACCESS_SPECIAL_STATIC_OFFSET (sid->offset, offset);
+
+       if (!ctx->static_data || !ctx->static_data [idx])
+               return;
+
+       MonoArray *slots_array = *(MonoArray **) (((char *) ctx->static_data [idx]) + off);
+
+       if (!slots_array || sid->slot >= mono_array_length (slots_array))
+               return;
+
+       mono_array_set (slots_array, MonoObject *, sid->slot, NULL);
 }
 
 void
 mono_thread_free_local_slot_values (int slot, MonoBoolean thread_local)
 {
-       MonoDomain *domain;
-       LocalSlotID sid;
-       sid.slot = slot;
-       if (thread_local) {
-               void *addr = NULL;
-               if (!local_slots) {
-                       local_slots = mono_class_get_field_from_name (mono_defaults.thread_class, "local_slots");
-                       if (!local_slots) {
-                               g_warning ("local_slots field not found in Thread class");
-                               return;
-                       }
+       if (!thread_local_slots) {
+               thread_local_slots = mono_class_get_field_from_name (mono_defaults.thread_class, "local_slots");
+               if (!thread_local_slots) {
+                       g_warning ("local_slots field not found in Thread class");
+                       return;
                }
-               domain = mono_domain_get ();
-               mono_domain_lock (domain);
-               if (domain->special_static_fields)
-                       addr = g_hash_table_lookup (domain->special_static_fields, local_slots);
-               mono_domain_unlock (domain);
-               if (!addr)
+       }
+
+       if (!context_local_slots) {
+               MonoClass *ctx_class = mono_class_from_name (mono_defaults.corlib, "System.Runtime.Remoting.Contexts", "Context");
+               context_local_slots = mono_class_get_field_from_name (ctx_class, "local_slots");
+               if (!context_local_slots) {
+                       g_warning ("local_slots field not found in Context class");
                        return;
-               /*g_print ("freeing slot %d at %p\n", slot, addr);*/
-               sid.offset = GPOINTER_TO_UINT (addr);
-               sid.offset &= 0x7fffffff;
-               sid.idx = (sid.offset >> 24) - 1;
-               mono_threads_lock ();
-               mono_g_hash_table_foreach (threads, clear_local_slot, &sid);
-               mono_threads_unlock ();
+               }
+       }
+
+       void *addr = NULL;
+       MonoDomain *domain = mono_domain_get ();
+
+       mono_domain_lock (domain);
+
+       if (domain->special_static_fields)
+               addr = g_hash_table_lookup (domain->special_static_fields, thread_local ? thread_local_slots : context_local_slots);
+
+       mono_domain_unlock (domain);
+
+       if (!addr)
+               return;
+
+       LocalSlotID sid = { .slot = slot, .offset = GPOINTER_TO_UINT (addr) };
+
+       mono_threads_lock ();
+
+       if (thread_local) {
+               mono_g_hash_table_foreach (threads, clear_thread_local_slot, &sid);
        } else {
-               /* FIXME: clear the slot for MonoAppContexts, too */
+               g_hash_table_foreach (contexts, clear_context_local_slot, &sid);
        }
+
+       mono_threads_unlock ();
 }
 
 #ifdef HOST_WIN32
@@ -4534,42 +4561,6 @@ mono_runtime_has_tls_get (void)
        return has_tls_get;
 }
 
-int
-mono_thread_kill (MonoInternalThread *thread, int signal)
-{
-#ifdef __native_client__
-       /* Workaround pthread_kill abort() in NaCl glibc. */
-       return -1;
-#endif
-#if defined (HOST_WIN32) || !defined (HAVE_SIGACTION)
-       /* Win32 uses QueueUserAPC and callers of this are guarded */
-       g_assert_not_reached ();
-#else
-#  ifdef PTHREAD_POINTER_ID
-       return pthread_kill ((gpointer)(gsize)(thread->tid), mono_thread_get_abort_signal ());
-#  else
-#    ifdef USE_TKILL_ON_ANDROID
-       if (thread->android_tid != 0) {
-               int  ret;
-               int  old_errno = errno;
-
-               ret = tkill ((pid_t) thread->android_tid, signal);
-               if (ret < 0) {
-                       ret = errno;
-                       errno = old_errno;
-               }
-
-               return ret;
-       }
-       else
-               return pthread_kill (thread->tid, mono_thread_get_abort_signal ());
-#    else
-       return pthread_kill (thread->tid, mono_thread_get_abort_signal ());
-#    endif
-#  endif
-#endif
-}
-
 static void
 self_interrupt_thread (void *_unused)
 {
@@ -4664,11 +4655,6 @@ abort_thread_internal (MonoInternalThread *thread, gboolean can_raise_exception,
        data.thread = thread;
        data.install_async_abort = install_async_abort;
 
-       if (!mono_thread_info_new_interrupt_enabled ()) {
-               signal_thread_state_change (thread);
-               return;
-       }
-
        /*
        FIXME this is insanely broken, it doesn't cause interruption to happen
        synchronously since passing FALSE to mono_thread_request_interruption makes sure it returns NULL
@@ -4727,11 +4713,6 @@ suspend_thread_critical (MonoThreadInfo *info, gpointer ud)
 static void
 suspend_thread_internal (MonoInternalThread *thread, gboolean interrupt)
 {
-       if (!mono_thread_info_new_interrupt_enabled ()) {
-               signal_thread_state_change (thread);
-               return;
-       }
-
        LOCK_THREAD (thread);
        if (thread == mono_thread_internal_current ()) {
                mono_thread_info_begin_self_suspend ();
@@ -4756,42 +4737,6 @@ suspend_thread_internal (MonoInternalThread *thread, gboolean interrupt)
 static void
 self_suspend_internal (MonoInternalThread *thread)
 {
-       if (!mono_thread_info_new_interrupt_enabled ()) {
-               thread->state &= ~ThreadState_SuspendRequested;
-               thread->state |= ThreadState_Suspended;
-               thread->suspend_event = CreateEvent (NULL, TRUE, FALSE, NULL);
-               if (thread->suspend_event == NULL) {
-                       UNLOCK_THREAD (thread);
-                       return;
-               }
-               if (thread->suspended_event)
-                       SetEvent (thread->suspended_event);
-
-               UNLOCK_THREAD (thread);
-
-               if (shutting_down) {
-                       /* After we left the lock, the runtime might shut down so everything becomes invalid */
-                       for (;;)
-                               Sleep (1000);
-               }
-               
-               WaitForSingleObject (thread->suspend_event, INFINITE);
-               
-               LOCK_THREAD (thread);
-
-               CloseHandle (thread->suspend_event);
-               thread->suspend_event = NULL;
-               thread->state &= ~ThreadState_Suspended;
-       
-               /* The thread that requested the resume will have replaced this event
-                * and will be waiting for it
-                */
-               SetEvent (thread->resume_event);
-
-               UNLOCK_THREAD (thread);
-               return;
-       }
-
        mono_thread_info_begin_self_suspend ();
        thread->state &= ~ThreadState_SuspendRequested;
        thread->state |= ThreadState_Suspended;
@@ -4803,25 +4748,6 @@ self_suspend_internal (MonoInternalThread *thread)
 static gboolean
 resume_thread_internal (MonoInternalThread *thread)
 {
-       if (!mono_thread_info_new_interrupt_enabled ()) {
-               thread->resume_event = CreateEvent (NULL, TRUE, FALSE, NULL);
-               if (thread->resume_event == NULL) {
-                       UNLOCK_THREAD (thread);
-                       return FALSE;
-               }
-
-               /* Awake the thread */
-               SetEvent (thread->suspend_event);
-
-               UNLOCK_THREAD (thread);
-
-               /* Wait for the thread to awake */
-               WaitForSingleObject (thread->resume_event, INFINITE);
-               CloseHandle (thread->resume_event);
-               thread->resume_event = NULL;
-               return TRUE;
-       }
-
        UNLOCK_THREAD (thread);
        /* Awake the thread */
        if (!mono_thread_info_resume ((MonoNativeThreadId)(gpointer)(gsize)thread->tid))
index 83a73d255744c2654fe76e5d19367adf3fe5c95b..fb35bbdd94a115c989a562c67d28fc9be084b306 100755 (executable)
@@ -20,6 +20,7 @@ libs= \
 
 sgen_libs = \
        $(monodir)/mono/metadata/libmonoruntimesgen.la  \
+       $(monodir)/mono/sgen/libmonosgen.la     \
        $(monodir)/mono/io-layer/libwapi.la     \
        $(monodir)/mono/utils/libmonoutils.la \
        $(GLIB_LIBS) $(LIBICONV)
@@ -33,6 +34,7 @@ static_libs=  \
 
 sgenstatic_libs = \
        $(monodir)/mono/metadata/libmonoruntimesgen-static.la   \
+       $(monodir)/mono/sgen/libmonosgen-static.la      \
        $(monodir)/mono/io-layer/libwapi.la     \
        $(monodir)/mono/utils/libmonoutils.la \
        $(GLIB_LIBS) $(LIBICONV)
@@ -189,9 +191,9 @@ mono_boehm-main.$(OBJEXT): buildver-boehm.h
 endif
 
 if DISABLE_EXECUTABLES
-buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen.la
+buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen.la $(monodir)/mono/sgen/libmonosgen.la
 else
-buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen-static.la
+buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen-static.la $(monodir)/mono/sgen/libmonosgen-static.la
 endif
        @echo "const char *build_date = \"`date`\";" > buildver-sgen.h
 mono_sgen-main-sgen.$(OBJEXT): buildver-sgen.h
@@ -388,15 +390,12 @@ common_sources = \
        mini-arch.h             \
        dominators.c            \
        cfold.c                 \
-       regalloc.c              \
        regalloc.h              \
        helpers.c               \
        liveness.c              \
        ssa.c                   \
        abcremoval.c            \
        abcremoval.h            \
-       ssapre.c                \
-       ssapre.h                \
        local-propagation.c     \
        driver.c                \
        debug-mini.c            \
@@ -407,12 +406,8 @@ common_sources = \
        mini-codegen.c          \
        mini-exceptions.c       \
        mini-trampolines.c      \
-       declsec.c               \
-       declsec.h               \
-       wapihandles.c           \
        branch-opts.c           \
        mini-generic-sharing.c  \
-       regalloc2.c             \
        simd-methods.h          \
        tasklets.c              \
        tasklets.h              \
@@ -775,6 +770,11 @@ patch-libtool:
        sed -e 's,if (for obj in $$oldobjs,if (for obj in "",g' < ../../libtool > 2; mv 2 ../../libtool
        chmod a+x ../../libtool
 
+# Utility target for patching libtool to get rid of the 'ranlib: file <file> has no symbols" warnings
+patch-libtool-osx:
+       sed -e 's/old_archive_cmds=.*/old_archive_cmds="libtool -no_warning_for_no_symbols -static -o \\$$oldlib \\$$oldobjs"/g' < ../../libtool > 2; mv 2 ../../libtool
+       chmod a+x ../../libtool
+
 # Utility target to patch automake to generate the same format silent output as the old mono silent build did
 patch-automake:
        src="@echo \"  '. \$$name . ' ' x (8 - length (\$$name)) . '\""; dst="@echo \"'. \$$name . ' ' x (7 - length (\$$name)) .'\""; sed -e "s/$$src/$$dst/g" < $$EXE > 2 && cp 2 $$EXE && rm -f 2
diff --git a/mono/mini/README b/mono/mini/README
deleted file mode 100644 (file)
index 7a64e0a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Mini is the new JIT compiler for Mono.
diff --git a/mono/mini/TODO b/mono/mini/TODO
deleted file mode 100644 (file)
index d214318..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-* use a pool of MBState structures to speedup monoburg instead of using a
-  mempool.
-* the decode tables in the burg-generated could use short instead of int
-  (this should save about 1 KB)
-* track the use of ESP, so that we can avoid the x86_lea in the epilog
-
-
-Other Ideas:
-
-* the ORP people avoids optimizations inside catch handlers - just to save
-  memory (for example allocation of strings - instead they allocate strings when
-  the code is executed (like the --shared option)). But there are only a few
-  functions using catch handlers, so I consider this a minor issue.
-
-* some performance critical functions should be inlined. These include:
-       - mono_mempool_alloc and mono_mempool_alloc0
-       - EnterCriticalSection and LeaveCriticalSection
-       - TlsSetValue
-       - mono_metadata_row_col
-       - mono_g_hash_table_lookup
-       - mono_domain_get
-
-* if a function which involves locking is called from another function which
-  acquires the same lock, it might be useful to create a separate _inner 
-  version of the function which does not re-acquire the lock. This is a perf
-  win only if the function is called a lot of times, like mono_get_method.
-
-* we can avoid calls to class init trampolines if the are multiple calls to the
-  same trampoline in the same basic block. See:
-
-  http://bugzilla.ximian.com/show_bug.cgi?id=51096
-
-Usability
----------
-
-* Remove the various optimization list of flags description, have an 
-  extra --help-optimizations flag.
-
-* Remove the various graph options, have a separate --help-graph for 
-  that list.
-
-Cleanup
--------
-
-Clean up the usage of the various CEE_/OP_ constants inside the JIT. 
-
-Currently, there are the 5 variants for each opcode:
-- CEE_...
-- OP_...
-- OP_I...
-- OP_L...
-- OP_P...
-
-Some opcodes have some variants, while others don't.
-
-They are used as follows:
-- In method_to_ir, CEE_ means the IL opcode ie. without operand size information
-- In the rules inside the .brg files CEE_ means the same as OP_I..., since
-  long opcodes were transformed into OP_L.... by method_to_ir.
-- In the IR emitted by the rules inside the .brg files, CEE_ means the same as
-  OP_P..., since it is usually generated for pointer manipulation.
-- In mono_arch_emit_opcode, CEE_ means OP_P....
-
-As can be seen above, this is a mess. A proposed solution would be the 
-following:
-
-- In method_to_ir, transform CEE_ opcodes into the appropriate OP_I/OP_L
-  opcodes.
-- Get rid of the OP_P opcodes, and use the OP_... opcodes instead, since the
-  two usually means the same.
-- In the IR emitted by the burg rules, use the OP_... opcodes instead of the
-  CEE and OP_P opcodes.
-
-Using these rules would ensure that the same opcode means the same thing in
-all parts of the JIT.
-
-
index 3e57a1c1f74651877a8fb82567b00d2ca70b63f2..cf80a74070f7288e5974752117cdf0ab12ca7351 100644 (file)
@@ -137,7 +137,7 @@ typedef struct MonoAotOptions {
 
 typedef struct MonoAotStats {
        int ccount, mcount, lmfcount, abscount, gcount, ocount, genericcount;
-       int code_size, info_size, ex_info_size, unwind_info_size, got_size, class_info_size, got_info_size, plt_size;
+       gint64 code_size, info_size, ex_info_size, unwind_info_size, got_size, class_info_size, got_info_size, plt_size;
        int methods_without_got_slots, direct_calls, all_calls, llvm_count;
        int got_slots, offsets_size;
        int got_slot_types [MONO_PATCH_INFO_NONE];
@@ -360,52 +360,52 @@ report_loader_error (MonoAotCompile *acfg, MonoError *error, const char *format,
 static inline void
 emit_section_change (MonoAotCompile *acfg, const char *section_name, int subsection_index)
 {
-       img_writer_emit_section_change (acfg->w, section_name, subsection_index);
+       mono_img_writer_emit_section_change (acfg->w, section_name, subsection_index);
 }
 
 static inline void
 emit_local_symbol (MonoAotCompile *acfg, const char *name, const char *end_label, gboolean func) 
 { 
-       img_writer_emit_local_symbol (acfg->w, name, end_label, func); 
+       mono_img_writer_emit_local_symbol (acfg->w, name, end_label, func); 
 }
 
 static inline void
 emit_label (MonoAotCompile *acfg, const char *name) 
 { 
-       img_writer_emit_label (acfg->w, name); 
+       mono_img_writer_emit_label (acfg->w, name); 
 }
 
 static inline void
 emit_bytes (MonoAotCompile *acfg, const guint8* buf, int size) 
 { 
-       img_writer_emit_bytes (acfg->w, buf, size); 
+       mono_img_writer_emit_bytes (acfg->w, buf, size); 
 }
 
 static inline void
 emit_string (MonoAotCompile *acfg, const char *value) 
 { 
-       img_writer_emit_string (acfg->w, value); 
+       mono_img_writer_emit_string (acfg->w, value); 
 }
 
 static inline void
 emit_line (MonoAotCompile *acfg) 
 { 
-       img_writer_emit_line (acfg->w); 
+       mono_img_writer_emit_line (acfg->w); 
 }
 
 static inline void
 emit_alignment (MonoAotCompile *acfg, int size)
 { 
-       img_writer_emit_alignment (acfg->w, size);
+       mono_img_writer_emit_alignment (acfg->w, size);
 }
 
 static inline void
 emit_alignment_code (MonoAotCompile *acfg, int size)
 {
        if (acfg->align_pad_value)
-               img_writer_emit_alignment_fill (acfg->w, size, acfg->align_pad_value);
+               mono_img_writer_emit_alignment_fill (acfg->w, size, acfg->align_pad_value);
        else
-               img_writer_emit_alignment (acfg->w, size);
+               mono_img_writer_emit_alignment (acfg->w, size);
 }
 
 static inline void
@@ -432,7 +432,7 @@ emit_padding (MonoAotCompile *acfg, int size)
 static inline void
 emit_pointer (MonoAotCompile *acfg, const char *target) 
 { 
-       img_writer_emit_pointer (acfg->w, target); 
+       mono_img_writer_emit_pointer (acfg->w, target); 
 }
 
 static inline void
@@ -440,55 +440,55 @@ emit_pointer_2 (MonoAotCompile *acfg, const char *prefix, const char *target)
 { 
        if (prefix [0] != '\0') {
                char *s = g_strdup_printf ("%s%s", prefix, target);
-               img_writer_emit_pointer (acfg->w, s);
+               mono_img_writer_emit_pointer (acfg->w, s);
                g_free (s);
        } else {
-               img_writer_emit_pointer (acfg->w, target);
+               mono_img_writer_emit_pointer (acfg->w, target);
        }
 }
 
 static inline void
 emit_int16 (MonoAotCompile *acfg, int value) 
 { 
-       img_writer_emit_int16 (acfg->w, value); 
+       mono_img_writer_emit_int16 (acfg->w, value); 
 }
 
 static inline void
 emit_int32 (MonoAotCompile *acfg, int value) 
 { 
-       img_writer_emit_int32 (acfg->w, value); 
+       mono_img_writer_emit_int32 (acfg->w, value); 
 }
 
 static inline void
 emit_symbol_diff (MonoAotCompile *acfg, const char *end, const char* start, int offset) 
 { 
-       img_writer_emit_symbol_diff (acfg->w, end, start, offset); 
+       mono_img_writer_emit_symbol_diff (acfg->w, end, start, offset); 
 }
 
 static inline void
 emit_zero_bytes (MonoAotCompile *acfg, int num) 
 { 
-       img_writer_emit_zero_bytes (acfg->w, num); 
+       mono_img_writer_emit_zero_bytes (acfg->w, num); 
 }
 
 static inline void
 emit_byte (MonoAotCompile *acfg, guint8 val) 
 { 
-       img_writer_emit_byte (acfg->w, val); 
+       mono_img_writer_emit_byte (acfg->w, val); 
 }
 
 #ifdef __native_client_codegen__
 static inline void
 emit_nacl_call_alignment (MonoAotCompile *acfg)
 {
-       img_writer_emit_nacl_call_alignment (acfg->w);
+       mono_img_writer_emit_nacl_call_alignment (acfg->w);
 }
 #endif
 
 static G_GNUC_UNUSED void
 emit_global_inner (MonoAotCompile *acfg, const char *name, gboolean func)
 {
-       img_writer_emit_global (acfg->w, name, func);
+       mono_img_writer_emit_global (acfg->w, name, func);
 }
 
 static void
@@ -496,28 +496,28 @@ emit_global (MonoAotCompile *acfg, const char *name, gboolean func)
 {
        if (acfg->aot_opts.no_dlsym) {
                g_ptr_array_add (acfg->globals, g_strdup (name));
-               img_writer_emit_local_symbol (acfg->w, name, NULL, func);
+               mono_img_writer_emit_local_symbol (acfg->w, name, NULL, func);
        } else {
-               img_writer_emit_global (acfg->w, name, func);
+               mono_img_writer_emit_global (acfg->w, name, func);
        }
 }
 
 static void
 emit_symbol_size (MonoAotCompile *acfg, const char *name, const char *end_label)
 {
-       img_writer_emit_symbol_size (acfg->w, name, end_label);
+       mono_img_writer_emit_symbol_size (acfg->w, name, end_label);
 }
 
 static void
 emit_string_symbol (MonoAotCompile *acfg, const char *name, const char *value)
 {
-       img_writer_emit_section_change (acfg->w, RODATA_SECT, 1);
+       mono_img_writer_emit_section_change (acfg->w, RODATA_SECT, 1);
 #ifdef TARGET_MACH
        /* On apple, all symbols need to be aligned to avoid warnings from ld */
        emit_alignment (acfg, 4);
 #endif
-       img_writer_emit_label (acfg->w, name);
-       img_writer_emit_string (acfg->w, value);
+       mono_img_writer_emit_label (acfg->w, name);
+       mono_img_writer_emit_string (acfg->w, value);
 }
 
 static G_GNUC_UNUSED void
@@ -610,7 +610,7 @@ encode_sleb128 (gint32 value, guint8 *buf, guint8 **endbuf)
 static void
 emit_unset_mode (MonoAotCompile *acfg)
 {
-       img_writer_emit_unset_mode (acfg->w);
+       mono_img_writer_emit_unset_mode (acfg->w);
 }
 
 static G_GNUC_UNUSED void
@@ -816,7 +816,7 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
                code = buf;
                ARM_BL (code, 0);
 
-               img_writer_emit_reloc (acfg->w, R_ARM_CALL, target, -8);
+               mono_img_writer_emit_reloc (acfg->w, R_ARM_CALL, target, -8);
                emit_bytes (acfg, buf, 4);
        } else {
                emit_unset_mode (acfg);
@@ -878,8 +878,8 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
  * arch_emit_got_offset:
  *
  *   The memory pointed to by CODE should hold native code for computing the GOT
- * address. Emit this code while patching it with the offset between code and
- * the GOT. CODE_SIZE is set to the number of bytes emitted.
+ * address (OP_LOAD_GOTADDR). Emit this code while patching it with the offset
+ * between code and the GOT. CODE_SIZE is set to the number of bytes emitted.
  */
 static void
 arch_emit_got_offset (MonoAotCompile *acfg, guint8 *code, int *code_size)
@@ -920,14 +920,12 @@ arch_emit_got_offset (MonoAotCompile *acfg, guint8 *code, int *code_size)
  * arch_emit_got_access:
  *
  *   The memory pointed to by CODE should hold native code for loading a GOT
- * slot. Emit this code while patching it so it accesses the GOT slot GOT_SLOT.
- * CODE_SIZE is set to the number of bytes emitted.
+ * slot (OP_AOTCONST/OP_GOT_ENTRY). Emit this code while patching it so it accesses the
+ * GOT slot GOT_SLOT. CODE_SIZE is set to the number of bytes emitted.
  */
 static void
-arch_emit_got_access (MonoAotCompile *acfg, guint8 *code, int got_slot, int *code_size)
+arch_emit_got_access (MonoAotCompile *acfg, const char *got_symbol, guint8 *code, int got_slot, int *code_size)
 {
-       /* This needs to emit the same code as OP_AOTCONST */
-
 #ifdef TARGET_AMD64
        /* mov reg, got+offset(%rip) */
        if (acfg->llvm) {
@@ -942,11 +940,11 @@ arch_emit_got_access (MonoAotCompile *acfg, guint8 *code, int got_slot, int *cod
                dreg = ((code [2] >> 3) & 0x7) + (rex_r ? 8 : 0);
 
                emit_unset_mode (acfg);
-               fprintf (acfg->fp, "mov %s+%d(%%rip), %s\n", acfg->got_symbol, (unsigned int) ((got_slot * sizeof (gpointer))), mono_arch_regname (dreg));
+               fprintf (acfg->fp, "mov %s+%d(%%rip), %s\n", got_symbol, (unsigned int) ((got_slot * sizeof (gpointer))), mono_arch_regname (dreg));
                *code_size = 7;
        } else {
                emit_bytes (acfg, code, mono_arch_get_patch_offset (code));
-               emit_symbol_diff (acfg, acfg->got_symbol, ".", (unsigned int) ((got_slot * sizeof (gpointer)) - 4));
+               emit_symbol_diff (acfg, got_symbol, ".", (unsigned int) ((got_slot * sizeof (gpointer)) - 4));
                *code_size = mono_arch_get_patch_offset (code) + 4;
        }
 #elif defined(TARGET_X86)
@@ -955,7 +953,7 @@ arch_emit_got_access (MonoAotCompile *acfg, guint8 *code, int got_slot, int *cod
        *code_size = mono_arch_get_patch_offset (code) + 4;
 #elif defined(TARGET_ARM)
        emit_bytes (acfg, code, mono_arch_get_patch_offset (code));
-       emit_symbol_diff (acfg, acfg->got_symbol, ".", (unsigned int) ((got_slot * sizeof (gpointer))) - 12);
+       emit_symbol_diff (acfg, got_symbol, ".", (unsigned int) ((got_slot * sizeof (gpointer))) - 12);
        *code_size = mono_arch_get_patch_offset (code) + 4;
 #elif defined(TARGET_ARM64)
        emit_bytes (acfg, code, mono_arch_get_patch_offset (code));
@@ -1000,7 +998,7 @@ arch_emit_objc_selector_ref (MonoAotCompile *acfg, guint8 *code, int index, int
        sprintf (symbol2, "L_OBJC_SELECTOR_REFERENCES_%d", index);
 
        emit_label (acfg, symbol1);
-       img_writer_emit_unset_mode (acfg->w);
+       mono_img_writer_emit_unset_mode (acfg->w);
        fprintf (acfg->fp, ".long %s-(%s+12)", symbol2, symbol1);
 
        *code_size = 12;
@@ -1015,20 +1013,22 @@ arch_emit_objc_selector_ref (MonoAotCompile *acfg, guint8 *code, int index, int
 /*
  * arch_emit_plt_entry:
  *
- *   Emit code for the PLT entry with index INDEX.
+ *   Emit code for the PLT entry.
+ * The plt entry should look like this:
+ * <indirect jump to GOT_SYMBOL + OFFSET>
+ * <INFO_OFFSET embedded into the instruction stream>
  */
 static void
-arch_emit_plt_entry (MonoAotCompile *acfg, int index)
+arch_emit_plt_entry (MonoAotCompile *acfg, const char *got_symbol, int offset, int info_offset)
 {
 #if defined(TARGET_X86)
-               guint32 offset = (acfg->plt_got_offset_base + index) * sizeof (gpointer);
 #if defined(__default_codegen__)
                /* jmp *<offset>(%ebx) */
                emit_byte (acfg, 0xff);
                emit_byte (acfg, 0xa3);
                emit_int32 (acfg, offset);
                /* Used by mono_aot_get_plt_info_offset */
-               emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+               emit_int32 (acfg, info_offset);
 #elif defined(__native_client_codegen__)
                const guint8 kSizeOfNaClJmp = 11;
                guint8 bytes[kSizeOfNaClJmp];
@@ -1039,7 +1039,7 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
                /* four bytes of data, used by mono_arch_patch_plt_entry              */
                /* For Native Client, make this work with data embedded in push.      */
                emit_byte (acfg, 0x68);  /* hide data in a push */
-               emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+               emit_int32 (acfg, info_offset);
                emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
 #endif /*__native_client_codegen__*/
 #elif defined(TARGET_AMD64)
@@ -1047,13 +1047,13 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
                if (acfg->use_bin_writer) {
                        emit_byte (acfg, '\xff');
                        emit_byte (acfg, '\x25');
-                       emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) -4);
+                       emit_symbol_diff (acfg, got_symbol, ".", offset - 4);
                } else {
                        emit_unset_mode (acfg);
-                       fprintf (acfg->fp, "jmp *%s+%d(%%rip)\n", acfg->got_symbol, (int)((acfg->plt_got_offset_base + index) * sizeof (gpointer)));
+                       fprintf (acfg->fp, "jmp *%s+%d(%%rip)\n", got_symbol, offset);
                }
                /* Used by mono_aot_get_plt_info_offset */
-               emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+               emit_int32 (acfg, info_offset);
                acfg->stats.plt_size += 10;
 #elif defined(__native_client_codegen__)
                guint8 buf [256];
@@ -1064,7 +1064,7 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
                emit_byte (acfg, '\x45');
                emit_byte (acfg, '\x8b');
                emit_byte (acfg, '\x1d');
-               emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) -4);
+               emit_symbol_diff (acfg, got_symbol, ".", offset - 4);
 
                amd64_jump_reg (code, AMD64_R11);
                /* This should be constant for the plt patch */
@@ -1073,7 +1073,7 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 
                /* Hide data in a push imm32 so it passes validation */
                emit_byte (acfg, 0x68);  /* push */
-               emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+               emit_int32 (acfg, info_offset);
                emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
 #endif /*__native_client_codegen__*/
 #elif defined(TARGET_ARM)
@@ -1084,14 +1084,12 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
                ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
                ARM_LDR_REG_REG (code, ARMREG_PC, ARMREG_PC, ARMREG_IP);
                emit_bytes (acfg, buf, code - buf);
-               emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) - 4);
+               emit_symbol_diff (acfg, got_symbol, ".", offset - 4);
                /* Used by mono_aot_get_plt_info_offset */
-               emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+               emit_int32 (acfg, info_offset);
 #elif defined(TARGET_ARM64)
-               arm64_emit_plt_entry (acfg, index);
+               arm64_emit_plt_entry (acfg, got_symbol, offset, info_offset);
 #elif defined(TARGET_POWERPC)
-               guint32 offset = (acfg->plt_got_offset_base + index) * sizeof (gpointer);
-
                /* The GOT address is guaranteed to be in r30 by OP_LOAD_GOTADDR */
                g_assert (!acfg->use_bin_writer);
                emit_unset_mode (acfg);
@@ -1105,24 +1103,22 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 #endif
                fprintf (acfg->fp, "mtctr 11\n");
                fprintf (acfg->fp, "bctr\n");
-               emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+               emit_int32 (acfg, info_offset);
 #else
                g_assert_not_reached ();
 #endif
 }
 
+/*
+ * arch_emit_llvm_plt_entry:
+ *
+ *   Same as arch_emit_plt_entry, but handles calls from LLVM generated code.
+ * This is only needed on arm to handle thumb interop.
+ */
 static void
-arch_emit_llvm_plt_entry (MonoAotCompile *acfg, int index)
+arch_emit_llvm_plt_entry (MonoAotCompile *acfg, const char *got_symbol, int offset, int info_offset)
 {
 #if defined(TARGET_ARM)
-#if 0
-       /* LLVM calls the PLT entries using bl, so emit a stub */
-       /* FIXME: Too much overhead on every call */
-       fprintf (acfg->fp, ".thumb_func\n");
-       fprintf (acfg->fp, "bx pc\n");
-       fprintf (acfg->fp, "nop\n");
-       fprintf (acfg->fp, ".arm\n");
-#endif
        /* LLVM calls the PLT entries using bl, so these have to be thumb2 */
        /* The caller already transitioned to thumb */
        /* The code below should be 12 bytes long */
@@ -1139,8 +1135,8 @@ arch_emit_llvm_plt_entry (MonoAotCompile *acfg, int index)
        fprintf (acfg->fp, ".2byte 0x44fc\n");
        fprintf (acfg->fp, ".4byte 0xc000f8dc\n");
        fprintf (acfg->fp, ".2byte 0x4760\n");
-       emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) + 4);
-       emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+       emit_symbol_diff (acfg, got_symbol, ".", offset + 4);
+       emit_int32 (acfg, info_offset);
        emit_unset_mode (acfg);
        emit_set_arm_mode (acfg);
 #else
@@ -1597,7 +1593,7 @@ arch_emit_unbox_trampoline (MonoAotCompile *acfg, MonoCompile *cfg, MonoMethod *
                code = buf;
                ARM_B (code, 0);
 
-               img_writer_emit_reloc (acfg->w, R_ARM_JUMP24, call_target, -8);
+               mono_img_writer_emit_reloc (acfg->w, R_ARM_JUMP24, call_target, -8);
                emit_bytes (acfg, buf, 4);
        } else {
                if (acfg->thumb_mixed && cfg->compile_llvm)
@@ -2498,13 +2494,29 @@ encode_klass_ref_inner (MonoAotCompile *acfg, MonoClass *klass, guint8 *buf, gui
                encode_value (container ? 1 : 0, p, &p);
                if (container) {
                        encode_value (container->is_method, p, &p);
-                       g_assert (par->gshared_constraint == 0);
+                       g_assert (!par->gshared_constraint);
                        if (container->is_method)
                                encode_method_ref (acfg, container->owner.method, p, &p);
                        else
                                encode_klass_ref (acfg, container->owner.klass, p, &p);
                } else {
-                       encode_value (par->gshared_constraint, p, &p);
+                       encode_value (par->gshared_constraint ? 1 : 0, p, &p);
+                       if (par->gshared_constraint) {
+                               const char *name;
+
+                               encode_type (acfg, par->gshared_constraint, p, &p);
+
+                               name = mono_generic_param_name (par);
+                               if (name) {
+                                       int len = strlen (name);
+
+                                       encode_value (len, p, &p);
+                                       memcpy (p, name, len);
+                                       p += len;
+                               } else {
+                                       encode_value (0, p, &p);
+                               }
+                       }
                }
        } else if (klass->byval_arg.type == MONO_TYPE_PTR) {
                encode_value (MONO_AOT_TYPEREF_PTR, p, &p);
@@ -3093,6 +3105,8 @@ static MonoPltEntry*
 get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
 {
        MonoPltEntry *res;
+       gboolean synchronized = FALSE;
+       static int synchronized_symbol_idx;
 
        if (!is_plt_patch (patch_info))
                return NULL;
@@ -3108,6 +3122,7 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
                 * wrapper.
                 */
                res = NULL;
+               synchronized = TRUE;
        }
 
        if (!res) {
@@ -3121,6 +3136,13 @@ get_plt_entry (MonoAotCompile *acfg, MonoJumpInfo *patch_info)
                res->symbol = get_plt_symbol (acfg, res->plt_offset, patch_info);
                if (acfg->aot_opts.write_symbols)
                        res->debug_sym = get_plt_entry_debug_sym (acfg, res->ji, acfg->plt_entry_debug_sym_cache);
+               if (synchronized) {
+                       /* Avoid duplicate symbols because we don't cache */
+                       res->symbol = g_strdup_printf ("%s_%d", res->symbol, synchronized_symbol_idx);
+                       if (res->debug_sym)
+                               res->debug_sym = g_strdup_printf ("%s_%d", res->debug_sym, synchronized_symbol_idx);
+                       synchronized_symbol_idx ++;
+               }
                if (res->debug_sym)
                        res->llvm_symbol = g_strdup_printf ("%s_%s_llvm", res->symbol, res->debug_sym);
                else
@@ -4853,7 +4875,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
 
                                        got_slot = get_got_offset (acfg, FALSE, patch_info);
 
-                                       arch_emit_got_access (acfg, code + i, got_slot, &code_size);
+                                       arch_emit_got_access (acfg, acfg->got_symbol, code + i, got_slot, &code_size);
                                        i += code_size - INST_LEN;
                                }
                                skip = TRUE;
@@ -5261,6 +5283,12 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                p += len + 1;
                break;
        }
+       case MONO_PATCH_INFO_VIRT_METHOD:
+               encode_klass_ref (acfg, patch_info->data.virt_method->klass, p, &p);
+               encode_method_ref (acfg, patch_info->data.virt_method->method, p, &p);
+               break;
+       case MONO_PATCH_INFO_GC_SAFE_POINT_FLAG:
+               break;
        default:
                g_warning ("unable to handle jump info %d", patch_info->type);
                g_assert_not_reached ();
@@ -5443,7 +5471,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
        }
 
        seq_points = cfg->seq_point_info;
-       seq_points_size = (store_seq_points)? seq_point_info_get_write_size (seq_points) : 0;
+       seq_points_size = (store_seq_points)? mono_seq_point_info_get_write_size (seq_points) : 0;
 
        buf_size = header->num_clauses * 256 + debug_info_size + 2048 + seq_points_size + cfg->gc_map_size;
 
@@ -5527,7 +5555,13 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
                        MonoJitExceptionInfo *ei = &jinfo->clauses [k];
 
                        encode_value (ei->flags, p, &p);
+#ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
+                       /* Not used for catch clauses */
+                       if (ei->flags != MONO_EXCEPTION_CLAUSE_NONE)
+                               encode_value (ei->exvar_offset, p, &p);
+#else
                        encode_value (ei->exvar_offset, p, &p);
+#endif
 
                        if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER || ei->flags == MONO_EXCEPTION_CLAUSE_FINALLY)
                                encode_value ((gint)((guint8*)ei->data.filter - code), p, &p);
@@ -5651,7 +5685,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg, gboolean stor
        }
 
        if (seq_points_size)
-               p += seq_point_info_write (seq_points, p);
+               p += mono_seq_point_info_write (seq_points, p);
 
        g_assert (debug_info_size < buf_size);
 
@@ -5886,7 +5920,7 @@ emit_plt (MonoAotCompile *acfg)
 
                emit_label (acfg, plt_entry->symbol);
 
-               arch_emit_plt_entry (acfg, i);
+               arch_emit_plt_entry (acfg, acfg->got_symbol, (acfg->plt_got_offset_base + i) * sizeof (gpointer), acfg->plt_got_info_offsets [i]);
 
                if (debug_sym)
                        emit_symbol_size (acfg, debug_sym, ".");
@@ -5933,7 +5967,7 @@ emit_plt (MonoAotCompile *acfg)
                        if (acfg->llvm)
                                emit_global_inner (acfg, plt_entry->llvm_symbol, TRUE);
 
-                       arch_emit_llvm_plt_entry (acfg, i);
+                       arch_emit_llvm_plt_entry (acfg, acfg->got_symbol, (acfg->plt_got_offset_base + i) * sizeof (gpointer), acfg->plt_got_info_offsets [i]);
 
                        if (debug_sym) {
                                emit_symbol_size (acfg, debug_sym, ".");
@@ -7890,7 +7924,7 @@ emit_exception_info (MonoAotCompile *acfg)
                        // By design aot-runtime decode_exception_debug_info is not able to load sequence point debug data from a file.
                        // As it is not possible to load debug data from a file its is also not possible to store it in a file.
                        gboolean method_seq_points_to_file = acfg->aot_opts.gen_seq_points_file &&
-                               cfg->gen_seq_points && !cfg->gen_seq_points_debug_data;
+                               cfg->gen_seq_points && !cfg->gen_sdb_seq_points;
                        gboolean method_seq_points_to_binary = cfg->gen_seq_points && !method_seq_points_to_file;
                        
                        emit_exception_debug_info (acfg, cfg, method_seq_points_to_binary);
@@ -7898,10 +7932,10 @@ emit_exception_info (MonoAotCompile *acfg)
 
                        if (method_seq_points_to_file) {
                                if (!seq_points_to_file) {
-                                       seq_point_data_init (&sp_data, acfg->nmethods);
+                                       mono_seq_point_data_init (&sp_data, acfg->nmethods);
                                        seq_points_to_file = TRUE;
                                }
-                               seq_point_data_add (&sp_data, cfg->method->token, cfg->method_index, cfg->seq_point_info);
+                               mono_seq_point_data_add (&sp_data, cfg->method->token, cfg->method_index, cfg->seq_point_info);
                        }
                } else {
                        offsets [i] = 0;
@@ -7911,8 +7945,8 @@ emit_exception_info (MonoAotCompile *acfg)
        if (seq_points_to_file) {
                char *seq_points_aot_file;
                mono_image_get_aot_seq_point_path (acfg->image, &seq_points_aot_file);
-               seq_point_data_write (&sp_data, seq_points_aot_file);
-               seq_point_data_free (&sp_data);
+               mono_seq_point_data_write (&sp_data, seq_points_aot_file);
+               mono_seq_point_data_free (&sp_data);
                g_free (seq_points_aot_file);
        }
 
@@ -8529,6 +8563,7 @@ static void
 emit_objc_selectors (MonoAotCompile *acfg)
 {
        int i;
+       char symbol [128];
 
        if (!acfg->objc_selectors || acfg->objc_selectors->len == 0)
                return;
@@ -8543,13 +8578,16 @@ emit_objc_selectors (MonoAotCompile *acfg)
         * EOF
         */
 
-       img_writer_emit_unset_mode (acfg->w);
+       mono_img_writer_emit_unset_mode (acfg->w);
        g_assert (acfg->fp);
        fprintf (acfg->fp, ".section    __DATA,__objc_selrefs,literal_pointers,no_dead_strip\n");
        fprintf (acfg->fp, ".align      3\n");
        for (i = 0; i < acfg->objc_selectors->len; ++i) {
-               fprintf (acfg->fp, "L_OBJC_SELECTOR_REFERENCES_%d:\n", i);
-               fprintf (acfg->fp, ".long       L_OBJC_METH_VAR_NAME_%d\n", i);
+               sprintf (symbol, "L_OBJC_SELECTOR_REFERENCES_%d", i);
+               emit_label (acfg, symbol);
+               sprintf (symbol, "L_OBJC_METH_VAR_NAME_%d", i);
+               emit_pointer (acfg, symbol);
+
        }
        fprintf (acfg->fp, ".section    __TEXT,__cstring,cstring_literals\n");
        for (i = 0; i < acfg->objc_selectors->len; ++i) {
@@ -8783,6 +8821,8 @@ compile_asm (MonoAotCompile *acfg)
 #define LD_NAME "gcc -shared --dll"
 #elif defined(TARGET_X86) && defined(TARGET_MACH) && !defined(__native_client_codegen__)
 #define LD_NAME "clang -m32 -dynamiclib"
+#elif defined(TARGET_ARM)
+#define LD_NAME "gcc --shared"
 #endif
 
        if (acfg->aot_opts.asm_only) {
@@ -8982,7 +9022,7 @@ acfg_free (MonoAotCompile *acfg)
 {
        int i;
 
-       img_writer_destroy (acfg->w);
+       mono_img_writer_destroy (acfg->w);
        for (i = 0; i < acfg->nmethods; ++i)
                if (acfg->cfgs [i])
                        g_free (acfg->cfgs [i]);
@@ -9040,14 +9080,14 @@ static void aot_dump (MonoAotCompile *acfg)
        char * dumpname;
 
        JsonWriter writer;
-       json_writer_init (&writer);
+       mono_json_writer_init (&writer);
 
-       json_writer_object_begin(&writer);
+       mono_json_writer_object_begin(&writer);
 
        // Methods
-       json_writer_indent (&writer);
-       json_writer_object_key(&writer, "methods");
-       json_writer_array_begin (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_object_key(&writer, "methods");
+       mono_json_writer_array_begin (&writer);
 
        int i;
        for (i = 0; i < acfg->nmethods; ++i) {
@@ -9061,53 +9101,53 @@ static void aot_dump (MonoAotCompile *acfg)
 
                method = cfg->orig_method;
 
-               json_writer_indent (&writer);
-               json_writer_object_begin(&writer);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_begin(&writer);
 
-               json_writer_indent (&writer);
-               json_writer_object_key(&writer, "name");
-               json_writer_printf (&writer, "\"%s\",\n", method->name);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_key(&writer, "name");
+               mono_json_writer_printf (&writer, "\"%s\",\n", method->name);
 
-               json_writer_indent (&writer);
-               json_writer_object_key(&writer, "signature");
-               json_writer_printf (&writer, "\"%s\",\n", mono_method_full_name (method,
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_key(&writer, "signature");
+               mono_json_writer_printf (&writer, "\"%s\",\n", mono_method_full_name (method,
                        /*signature=*/TRUE));
 
-               json_writer_indent (&writer);
-               json_writer_object_key(&writer, "code_size");
-               json_writer_printf (&writer, "\"%d\",\n", cfg->code_size);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_key(&writer, "code_size");
+               mono_json_writer_printf (&writer, "\"%d\",\n", cfg->code_size);
 
                klass = method->klass;
 
-               json_writer_indent (&writer);
-               json_writer_object_key(&writer, "class");
-               json_writer_printf (&writer, "\"%s\",\n", klass->name);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_key(&writer, "class");
+               mono_json_writer_printf (&writer, "\"%s\",\n", klass->name);
 
-               json_writer_indent (&writer);
-               json_writer_object_key(&writer, "namespace");
-               json_writer_printf (&writer, "\"%s\",\n", klass->name_space);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_key(&writer, "namespace");
+               mono_json_writer_printf (&writer, "\"%s\",\n", klass->name_space);
 
-               json_writer_indent (&writer);
-               json_writer_object_key(&writer, "wrapper_type");
-               json_writer_printf (&writer, "\"%s\",\n", get_wrapper_type_name(method->wrapper_type));
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_key(&writer, "wrapper_type");
+               mono_json_writer_printf (&writer, "\"%s\",\n", get_wrapper_type_name(method->wrapper_type));
 
-               json_writer_indent_pop (&writer);
-               json_writer_indent (&writer);
-               json_writer_object_end (&writer);
-               json_writer_printf (&writer, ",\n");
+               mono_json_writer_indent_pop (&writer);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_object_end (&writer);
+               mono_json_writer_printf (&writer, ",\n");
        }
 
-       json_writer_indent_pop (&writer);
-       json_writer_indent (&writer);
-       json_writer_array_end (&writer);
-       json_writer_printf (&writer, ",\n");
+       mono_json_writer_indent_pop (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_array_end (&writer);
+       mono_json_writer_printf (&writer, ",\n");
 
        // PLT entries
 #ifdef DUMP_PLT
-       json_writer_indent_push (&writer);
-       json_writer_indent (&writer);
-       json_writer_object_key(&writer, "plt");
-       json_writer_array_begin (&writer);
+       mono_json_writer_indent_push (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_object_key(&writer, "plt");
+       mono_json_writer_array_begin (&writer);
 
        for (i = 0; i < acfg->plt_offset; ++i) {
                MonoPltEntry *plt_entry = NULL;
@@ -9122,44 +9162,44 @@ static void aot_dump (MonoAotCompile *acfg)
                plt_entry = g_hash_table_lookup (acfg->plt_offset_to_entry, GUINT_TO_POINTER (i));
                ji = plt_entry->ji;
 
-               json_writer_indent (&writer);
-               json_writer_printf (&writer, "{ ");
-               json_writer_object_key(&writer, "symbol");
-               json_writer_printf (&writer, "\"%s\" },\n", plt_entry->symbol);
+               mono_json_writer_indent (&writer);
+               mono_json_writer_printf (&writer, "{ ");
+               mono_json_writer_object_key(&writer, "symbol");
+               mono_json_writer_printf (&writer, "\"%s\" },\n", plt_entry->symbol);
        }
 
-       json_writer_indent_pop (&writer);
-       json_writer_indent (&writer);
-       json_writer_array_end (&writer);
-       json_writer_printf (&writer, ",\n");
+       mono_json_writer_indent_pop (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_array_end (&writer);
+       mono_json_writer_printf (&writer, ",\n");
 #endif
 
        // GOT entries
 #ifdef DUMP_GOT
-       json_writer_indent_push (&writer);
-       json_writer_indent (&writer);
-       json_writer_object_key(&writer, "got");
-       json_writer_array_begin (&writer);
+       mono_json_writer_indent_push (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_object_key(&writer, "got");
+       mono_json_writer_array_begin (&writer);
 
-       json_writer_indent_push (&writer);
+       mono_json_writer_indent_push (&writer);
        for (i = 0; i < acfg->got_info.got_patches->len; ++i) {
                MonoJumpInfo *ji = g_ptr_array_index (acfg->got_info.got_patches, i);
 
-               json_writer_indent (&writer);
-               json_writer_printf (&writer, "{ ");
-               json_writer_object_key(&writer, "patch_name");
-               json_writer_printf (&writer, "\"%s\" },\n", get_patch_name (ji->type));
+               mono_json_writer_indent (&writer);
+               mono_json_writer_printf (&writer, "{ ");
+               mono_json_writer_object_key(&writer, "patch_name");
+               mono_json_writer_printf (&writer, "\"%s\" },\n", get_patch_name (ji->type));
        }
 
-       json_writer_indent_pop (&writer);
-       json_writer_indent (&writer);
-       json_writer_array_end (&writer);
-       json_writer_printf (&writer, ",\n");
+       mono_json_writer_indent_pop (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_array_end (&writer);
+       mono_json_writer_printf (&writer, ",\n");
 #endif
 
-       json_writer_indent_pop (&writer);
-       json_writer_indent (&writer);
-       json_writer_object_end (&writer);
+       mono_json_writer_indent_pop (&writer);
+       mono_json_writer_indent (&writer);
+       mono_json_writer_object_end (&writer);
 
        dumpname = g_strdup_printf ("%s.json", g_path_get_basename (acfg->image->name));
        dumpfile = fopen (dumpname, "w+");
@@ -9168,14 +9208,15 @@ static void aot_dump (MonoAotCompile *acfg)
        fprintf (dumpfile, "%s", writer.text->str);
        fclose (dumpfile);
 
-       json_writer_destroy (&writer);
+       mono_json_writer_destroy (&writer);
 }
 
 int
 mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 {
        MonoImage *image = ass->image;
-       int i, res, all_sizes;
+       int i, res;
+       gint64 all_sizes;
        MonoAotCompile *acfg;
        char *outfile_name, *tmp_outfile_name, *p;
        char llvm_stats_msg [256];
@@ -9235,7 +9276,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                MonoDebugOptions *opt = mini_get_debug_options ();
 
                opt->mdb_optimizations = TRUE;
-               opt->gen_seq_points_debug_data = TRUE;
+               opt->gen_sdb_seq_points = TRUE;
 
                if (!mono_debug_enabled ()) {
                        aot_printerrf (acfg, "The soft-debug AOT option requires the --debug option.\n");
@@ -9292,7 +9333,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                acfg->num_trampolines [MONO_AOT_TRAMP_GSHAREDVT_ARG] = acfg->aot_opts.full_aot ? acfg->aot_opts.ngsharedvt_arg_trampolines : 0;
 #endif
 
-       acfg->temp_prefix = img_writer_get_temp_label_prefix (NULL);
+       acfg->temp_prefix = mono_img_writer_get_temp_label_prefix (NULL);
 
        arch_init (acfg);
 
@@ -9406,7 +9447,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        }
 #endif
 
-       if (!acfg->aot_opts.asm_only && !acfg->aot_opts.asm_writer && bin_writer_supported ()) {
+       if (!acfg->aot_opts.asm_only && !acfg->aot_opts.asm_writer && mono_bin_writer_supported ()) {
                if (acfg->aot_opts.outfile)
                        outfile_name = g_strdup_printf ("%s", acfg->aot_opts.outfile);
                else
@@ -9424,7 +9465,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                        return 1;
                }
 
-               acfg->w = img_writer_create (acfg->fp, TRUE);
+               acfg->w = mono_img_writer_create (acfg->fp, TRUE);
                acfg->use_bin_writer = TRUE;
        } else {
                if (acfg->aot_opts.asm_only) {
@@ -9441,7 +9482,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                        aot_printerrf (acfg, "Unable to open file '%s': %s\n", acfg->tmpfname, strerror (errno));
                        return 1;
                }
-               acfg->w = img_writer_create (acfg->fp, FALSE);
+               acfg->w = mono_img_writer_create (acfg->fp, FALSE);
                
                tmp_outfile_name = NULL;
                outfile_name = NULL;
@@ -9480,7 +9521,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                acfg->dwarf = mono_dwarf_writer_create (acfg->w, NULL, 0, FALSE, !acfg->gas_line_numbers);
        }
 
-       img_writer_emit_start (acfg->w);
+       mono_img_writer_emit_start (acfg->w);
 
        if (acfg->dwarf)
                mono_dwarf_writer_emit_base_info (acfg->dwarf, g_path_get_basename (acfg->image->name), mono_unwind_get_cie_program ());
@@ -9562,14 +9603,14 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        all_sizes = acfg->stats.code_size + acfg->stats.info_size + acfg->stats.ex_info_size + acfg->stats.unwind_info_size + acfg->stats.class_info_size + acfg->stats.got_info_size + acfg->stats.offsets_size + acfg->stats.plt_size;
 
        aot_printf (acfg, "Code: %d(%d%%) Info: %d(%d%%) Ex Info: %d(%d%%) Unwind Info: %d(%d%%) Class Info: %d(%d%%) PLT: %d(%d%%) GOT Info: %d(%d%%) Offsets: %d(%d%%) GOT: %d\n",
-                       acfg->stats.code_size, acfg->stats.code_size * 100 / all_sizes,
-                       acfg->stats.info_size, acfg->stats.info_size * 100 / all_sizes,
-                       acfg->stats.ex_info_size, acfg->stats.ex_info_size * 100 / all_sizes,
-                       acfg->stats.unwind_info_size, acfg->stats.unwind_info_size * 100 / all_sizes,
-                       acfg->stats.class_info_size, acfg->stats.class_info_size * 100 / all_sizes,
-                       acfg->stats.plt_size ? acfg->stats.plt_size : acfg->plt_offset, acfg->stats.plt_size ? acfg->stats.plt_size * 100 / all_sizes : 0,
-                       acfg->stats.got_info_size, acfg->stats.got_info_size * 100 / all_sizes,
-                       acfg->stats.offsets_size, acfg->stats.offsets_size * 100 / all_sizes,
+                               (int)acfg->stats.code_size, (int)(acfg->stats.code_size * 100 / all_sizes),
+                               (int)acfg->stats.info_size, (int)(acfg->stats.info_size * 100 / all_sizes),
+                               (int)acfg->stats.ex_info_size, (int)(acfg->stats.ex_info_size * 100 / all_sizes),
+                               (int)acfg->stats.unwind_info_size, (int)(acfg->stats.unwind_info_size * 100 / all_sizes),
+                               (int)acfg->stats.class_info_size, (int)(acfg->stats.class_info_size * 100 / all_sizes),
+                               acfg->stats.plt_size ? (int)acfg->stats.plt_size : (int)acfg->plt_offset, acfg->stats.plt_size ? (int)(acfg->stats.plt_size * 100 / all_sizes) : 0,
+                               (int)acfg->stats.got_info_size, (int)(acfg->stats.got_info_size * 100 / all_sizes),
+                               (int)acfg->stats.offsets_size, (int)(acfg->stats.offsets_size * 100 / all_sizes),
                        (int)(acfg->got_offset * sizeof (gpointer)));
        aot_printf (acfg, "Compiled: %d/%d (%d%%)%s, No GOT slots: %d (%d%%), Direct calls: %d (%d%%)\n", 
                        acfg->stats.ccount, acfg->stats.mcount, acfg->stats.mcount ? (acfg->stats.ccount * 100) / acfg->stats.mcount : 100,
@@ -9586,7 +9627,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                aot_printf (acfg, "%d methods have other problems (%d%%)\n", acfg->stats.ocount, acfg->stats.mcount ? (acfg->stats.ocount * 100) / acfg->stats.mcount : 100);
 
        TV_GETTIME (atv);
-       res = img_writer_emit_writeout (acfg->w);
+       res = mono_img_writer_emit_writeout (acfg->w);
        if (res != 0) {
                acfg_free (acfg);
                return res;
index c4047274cbf3518bb63a09b20832050cce715387..06f1f5eac70841f0d14ad29f5daab0eff861d41d 100644 (file)
@@ -468,7 +468,8 @@ decode_klass_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                int type = decode_value (p, &p);
                int num = decode_value (p, &p);
                gboolean has_container = decode_value (p, &p);
-               MonoTypeEnum gshared_constraint = 0;
+               MonoType *gshared_constraint = NULL;
+               char *par_name = NULL;
 
                if (has_container) {
                        gboolean is_method = decode_value (p, &p);
@@ -491,14 +492,29 @@ decode_klass_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                                container = class_def->generic_container;
                        }
                } else {
-                       gshared_constraint = decode_value (p, &p);
+                       gboolean has_gshared_constraint = decode_value (p, &p);
+                       if (has_gshared_constraint) {
+                               int len;
+
+                               gshared_constraint = decode_type (module, p, &p);
+                               if (!gshared_constraint)
+                                       return NULL;
+
+                               len = decode_value (p, &p);
+                               if (len) {
+                                       par_name = mono_image_alloc (module->assembly->image, len + 1);
+                                       memcpy (par_name, p, len);
+                                       p += len;
+                                       par_name [len] = '\0';
+                               }
+                       }
                }
 
                t = g_new0 (MonoType, 1);
                t->type = type;
                if (container) {
                        t->data.generic_param = mono_generic_container_get_param (container, num);
-                       g_assert (gshared_constraint == 0);
+                       g_assert (gshared_constraint == NULL);
                } else {
                        /* Anonymous */
                        MonoGenericParam *par = (MonoGenericParam*)mono_image_alloc0 (module->assembly->image, sizeof (MonoGenericParamFull));
@@ -507,6 +523,8 @@ decode_klass_ref (MonoAotModule *module, guint8 *buf, guint8 **endbuf)
                        // FIXME:
                        par->image = mono_defaults.corlib;
                        t->data.generic_param = par;
+                       if (par_name)
+                               ((MonoGenericParamFull*)par)->info.name = par_name;
                }
 
                // FIXME: Maybe use types directly to avoid
@@ -860,7 +878,10 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                        int atype = decode_value (p, &p);
 
                        ref->method = mono_gc_get_managed_allocator_by_type (atype);
-                       g_assert (ref->method);
+                       if (!ref->method) {
+                               fprintf (stderr, "Error: No managed allocator, but we need one for AOT.\nAre you using non-standard GC options?\n");
+                               exit (1);
+                       }
                        break;
                }
                case MONO_WRAPPER_WRITE_BARRIER:
@@ -1748,9 +1769,6 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        if (image_is_dynamic (assembly->image) || assembly->ref_only)
                return;
 
-       if (mono_security_cas_enabled ())
-               return;
-
        mono_aot_lock ();
        if (static_aot_modules)
                info = g_hash_table_lookup (static_aot_modules, assembly->aname.name);
@@ -2696,7 +2714,13 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
                        ei->flags = decode_value (p, &p);
 
+#ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
+                       /* Not used for catch clauses */
+                       if (ei->flags != MONO_EXCEPTION_CLAUSE_NONE)
+                               ei->exvar_offset = decode_value (p, &p);
+#else
                        ei->exvar_offset = decode_value (p, &p);
+#endif
 
                        if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER || ei->flags == MONO_EXCEPTION_CLAUSE_FINALLY)
                                ei->data.filter = code + decode_value (p, &p);
@@ -2822,7 +2846,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
        if (method && has_seq_points) {
                MonoSeqPointInfo *seq_points;
 
-               p += seq_point_info_read (&seq_points, p, FALSE);
+               p += mono_seq_point_info_read (&seq_points, p, FALSE);
 
                mono_domain_lock (domain);
                g_hash_table_insert (domain_jit_info (domain)->seq_points, method, seq_points);
@@ -3422,6 +3446,19 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                ji->data.target = s;
                break;
        }
+       case MONO_PATCH_INFO_VIRT_METHOD: {
+               MonoJumpInfoVirtMethod *info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
+
+               info->klass = decode_klass_ref (aot_module, p, &p);
+               g_assert (info->klass);
+               info->method = decode_resolve_method_ref (aot_module, p, &p);
+               g_assert (info->method);
+
+               ji->data.target = info;
+               break;
+       }
+       case MONO_PATCH_INFO_GC_SAFE_POINT_FLAG:
+               break;
        default:
                g_warning ("unhandled type %d", ji->type);
                g_assert_not_reached ();
index 00b01e9a47c575bdf5f2ab9447d42122280ead0d..4fd06a36d5d885e889b9db7e624dfb4f25b1bb65 100755 (executable)
@@ -109,6 +109,8 @@ rethrow: src1:i len:18 nacl:50
 start_handler: len:16
 endfinally: len:9 nacl:22
 endfilter: src1:a len:9 nacl:19
+get_ex_obj: dest:a len:16
+
 ckfinite: dest:f src1:f len:43
 ceq: dest:c len:8
 cgt: dest:c len:8
@@ -293,7 +295,7 @@ move_f_to_i8: dest:i src1:f len:5
 move_i8_to_f: dest:f src1:i len:5
 call_handler: len:14 clob:c nacl:52
 aot_const: dest:i len:10
-nacl_gc_safe_point: clob:c
+gc_safe_point: clob:c src1:i len:40
 x86_test_null: src1:i len:5
 x86_compare_membase_reg: src1:b src2:i len:9
 x86_compare_membase_imm: src1:b len:13
index 9501ea5786becfa463afa63d78cbe8021f37aab8..4e8edbc8d3e0cd421c415601a46e2fb4f04c7d04 100644 (file)
@@ -51,7 +51,6 @@
 nop: len:4
 relaxed_nop: len:4
 break: len:4
-jmp: len:92
 br: len:16
 switch: src1:i len:12
 # See the comment in resume_from_signal_handler, we can't copy the fp regs from sigctx to MonoContext on linux,
@@ -65,6 +64,7 @@ start_handler: len:20
 endfinally: len:32
 call_handler: len:16 clob:c
 endfilter: src1:i len:16
+get_ex_obj: dest:i len:16
 
 ckfinite: dest:f src1:f len:112
 ceq: dest:i len:12
@@ -95,9 +95,9 @@ rcall_membase: dest:g src1:b len:24 clob:c
 lcall: dest:l len:20 clob:c
 lcall_reg: dest:l src1:i len:8 clob:c
 lcall_membase: dest:l src1:b len:16 clob:c
-vcall: len:20 clob:c
-vcall_reg: src1:i len:8 clob:c
-vcall_membase: src1:b len:16 clob:c
+vcall: len:64 clob:c
+vcall_reg: src1:i len:64 clob:c
+vcall_membase: src1:b len:64 clob:c
 tailcall: len:160 clob:c
 iconst: dest:i len:16
 r4const: dest:f len:24
@@ -354,9 +354,9 @@ icompare_imm: src1:i len:12
 
 long_conv_to_ovf_i4_2: dest:i src1:i src2:i len:36
 
-vcall2: len:20 clob:c
-vcall2_reg: src1:i len:8 clob:c
-vcall2_membase: src1:b len:12 clob:c
+vcall2: len:64 clob:c
+vcall2_reg: src1:i len:64 clob:c
+vcall2_membase: src1:b len:64 clob:c
 dyn_call: src1:i src2:i len:120 clob:c
 
 # This is different from the original JIT opcodes
index 9fdca593e335c84842b025f93d3ea74ab5a01651..a50a0d20b06548fd683e9baa7db61fbc3e9d0997 100644 (file)
@@ -65,6 +65,7 @@ start_handler: len:32
 endfinally: len:32
 call_handler: len:16 clob:c
 endfilter: src1:i len:32
+get_ex_obj: dest:i len:16
 
 ckfinite: dest:f src1:f len:64
 ceq: dest:i len:12
index bc1a513d40b1c5ab3ca82594c065fc5046b2126c..091c6b1103d159be11814fea62bd843d204f8caa 100644 (file)
@@ -132,9 +132,9 @@ float_rem_un: dest:f src1:f src2:f len:16
 float_sub: dest:f src1:f src2:f len:6
 fmove: dest:f src1:f len:4
 move_f_to_i4: dest:i src1:f len:4
-move_i4_to_f: dest:f src1:i len:4
+move_i4_to_f: dest:f src1:i len:8
 move_f_to_i8: dest:i src1:f len:4
-move_i8_to_f: dest:f src1:i len:4
+move_i8_to_f: dest:f src1:i len:8
 i8const: dest:i len:20
 icompare: src1:i src2:i len:4
 icompare_imm: src1:i len:18
index 8319bb25280ec09783e99ae3a2b2559d75fa8e5b..2bd196cc76c0fd4f1de577e8ae0cc99770a8554f 100644 (file)
@@ -120,6 +120,7 @@ rethrow: src1:i len:13
 start_handler: len:16
 endfinally: len:16 nacl:21
 endfilter: src1:a len:16 nacl:21
+get_ex_obj: dest:a len:16
 
 ckfinite: dest:f src1:f len:32
 ceq: dest:y len:6
@@ -250,7 +251,7 @@ call_handler: len:11 clob:c
 aot_const: dest:i len:5
 load_gotaddr: dest:i len:64
 got_entry: dest:i src1:b len:7
-nacl_gc_safe_point: clob:c
+gc_safe_point: clob:c src1:i len:20
 x86_test_null: src1:i len:2
 x86_compare_membase_reg: src1:b src2:i len:7
 x86_compare_membase_imm: src1:b len:11
index fbc149244f01677e4a83e0e5ae8006fab8a03be6..187d89a1c4e50bc150c81000767a358de2ea46bf 100644 (file)
 #include <pthread.h>
 #endif
 
-#ifdef HAVE_UCONTEXT_H
-#include <ucontext.h>
-#endif
-
 #ifdef HOST_WIN32
 #ifdef _MSC_VER
 #include <winsock2.h>
@@ -77,8 +73,8 @@
 #include "seq-points.h"
 
 /*
-On iOS we can't use System.Environment.Exit () as it will do the wrong
-shutdown sequence.
+ * On iOS we can't use System.Environment.Exit () as it will do the wrong
+ * shutdown sequence.
 */
 #if !defined (TARGET_IOS)
 #define TRY_MANAGED_SYSTEM_ENVIRONMENT_EXIT
@@ -97,9 +93,6 @@ shutdown sequence.
 
 #include <mono/utils/mono-mutex.h>
 
-/* Definitions to make backporting to 2.6 easier */
-//#define MonoInternalThread MonoThread
-//#define mono_thread_internal_current mono_thread_current
 #define THREAD_TO_INTERNAL(thread) (thread)->internal_thread
 
 typedef struct {
@@ -206,9 +199,6 @@ typedef struct {
        /* Whenever thread_stop () was called for this thread */
        gboolean terminated;
 
-       /* Number of thread interruptions not yet processed */
-       gint32 interrupt_count;
-
        /* Whenever to disable breakpoints (used during invokes) */
        gboolean disable_breakpoints;
 
@@ -726,7 +716,12 @@ static gboolean buffer_replies;
 static ReplyPacket reply_packets [128];
 int nreply_packets;
 
-#define dbg_lock() mono_mutex_lock (&debug_mutex)
+#define dbg_lock() do {        \
+       MONO_TRY_BLOCKING       \
+       mono_mutex_lock (&debug_mutex); \
+       MONO_FINISH_TRY_BLOCKING        \
+} while (0)
+
 #define dbg_unlock() mono_mutex_unlock (&debug_mutex)
 static mono_mutex_t debug_mutex;
 
@@ -1032,7 +1027,7 @@ mono_debugger_agent_init (void)
        breakpoints_init ();
        suspend_init ();
 
-       mini_get_debug_options ()->gen_seq_points_debug_data = TRUE;
+       mini_get_debug_options ()->gen_sdb_seq_points = TRUE;
        /* 
         * This is needed because currently we don't handle liveness info.
         */
@@ -1093,7 +1088,9 @@ finish_agent_init (gboolean on_startup)
                }
        }
 
+       MONO_PREPARE_BLOCKING
        transport_connect (agent_config.address);
+       MONO_FINISH_BLOCKING
 
        if (!on_startup) {
                /* Do some which is usually done after sending the VMStart () event */
@@ -1325,7 +1322,9 @@ socket_transport_connect (const char *address)
                        }
                }
 
+               MONO_PREPARE_BLOCKING
                conn_fd = socket_transport_accept (sfd);
+               MONO_FINISH_BLOCKING
                if (conn_fd == -1)
                        exit (1);
 
@@ -1544,13 +1543,19 @@ transport_handshake (void)
        
        /* Write handshake message */
        sprintf (handshake_msg, "DWP-Handshake");
+       /* Must use try blocking as this can nest into code that runs blocking */
+       MONO_TRY_BLOCKING
        do {
                res = transport_send (handshake_msg, strlen (handshake_msg));
        } while (res == -1 && get_last_sock_error () == MONO_EINTR);
+       MONO_FINISH_TRY_BLOCKING
+
        g_assert (res != -1);
 
        /* Read answer */
+       MONO_TRY_BLOCKING
        res = transport_recv (buf, strlen (handshake_msg));
+       MONO_FINISH_TRY_BLOCKING
        if ((res != strlen (handshake_msg)) || (memcmp (buf, handshake_msg, strlen (handshake_msg)) != 0)) {
                fprintf (stderr, "debugger-agent: DWP handshake failed.\n");
                return FALSE;
@@ -1593,36 +1598,30 @@ stop_debugger_thread (void)
        if (!inited)
                return;
 
+       MONO_PREPARE_BLOCKING
        transport_close1 ();
+       MONO_FINISH_BLOCKING
 
        /* 
         * Wait for the thread to exit.
         *
         * If we continue with the shutdown without waiting for it, then the client might
         * not receive an answer to its last command like a resume.
-        * The WaitForSingleObject infrastructure doesn't seem to work during shutdown, so
-        * use pthreads.
         */
-       //WaitForSingleObject (debugger_thread_handle, INFINITE);
        if (GetCurrentThreadId () != debugger_thread_id) {
                do {
+                       MONO_TRY_BLOCKING
                        mono_mutex_lock (&debugger_thread_exited_mutex);
-                       if (!debugger_thread_exited) {
-#ifdef HOST_WIN32
-                               if (WAIT_TIMEOUT == WaitForSingleObject(debugger_thread_exited_cond, 0)) {
-                                       mono_mutex_unlock (&debugger_thread_exited_mutex);
-                                       Sleep(1);
-                                       mono_mutex_lock (&debugger_thread_exited_mutex);
-                               }
-#else
+                       if (!debugger_thread_exited)
                                mono_cond_wait (&debugger_thread_exited_cond, &debugger_thread_exited_mutex);
-#endif
-                       }
                        mono_mutex_unlock (&debugger_thread_exited_mutex);
+                       MONO_FINISH_TRY_BLOCKING
                } while (!debugger_thread_exited);
        }
 
+       MONO_PREPARE_BLOCKING
        transport_close2 ();
+       MONO_FINISH_BLOCKING
 }
 
 static void
@@ -1816,7 +1815,9 @@ send_packet (int command_set, int command, Buffer *data)
        buffer_add_byte (&buf, command);
        memcpy (buf.buf + 11, data->buf, data->p - data->buf);
 
+       MONO_PREPARE_BLOCKING
        res = transport_send (buf.buf, len);
+       MONO_FINISH_BLOCKING
 
        buffer_free (&buf);
 
@@ -1842,7 +1843,10 @@ send_reply_packets (int npackets, ReplyPacket *packets)
                buffer_add_byte (&buf, packets [i].error);
                buffer_add_buffer (&buf, packets [i].data);
        }
+
+       MONO_PREPARE_BLOCKING
        res = transport_send (buf.buf, len);
+       MONO_FINISH_BLOCKING
 
        buffer_free (&buf);
 
@@ -2309,7 +2313,7 @@ decode_ptr_id (guint8 *buf, guint8 **endbuf, guint8 *limit, IdType type, MonoDom
        dbg_unlock ();
 
        if (res->domain == NULL) {
-               DEBUG_PRINTF (0, "ERR_UNLOADED, id=%d, type=%d.\n", id, type);
+               DEBUG_PRINTF (1, "ERR_UNLOADED, id=%d, type=%d.\n", id, type);
                *err = ERR_UNLOADED;
                return NULL;
        }
@@ -2535,51 +2539,19 @@ get_last_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
 /*
  * thread_interrupt:
  *
- *   Process interruption of a thread. If SIGCTX is set, process the current thread. If
- * INFO is set, process the thread described by INFO.
- * This should be signal safe.
+ *   Process interruption of a thread. This should be signal safe.
  */
-static gboolean
-thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, MonoJitInfo *ji)
+static void
+thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, MonoJitInfo *ji)
 {
        gboolean res;
        gpointer ip;
        MonoNativeThreadId tid;
 
-       /*
-        * OSX can (and will) coalesce signals, so sending multiple pthread_kills does not
-        * guarantee the signal handler will be called that many times.  Instead of tracking
-        * interrupt_count on osx, we use this as a boolean flag to determine if a interrupt
-        * has been requested that hasn't been handled yet, otherwise we can have threads
-        * refuse to die when VM_EXIT is called
-        */
-#if defined(__APPLE__)
-       if (InterlockedCompareExchange (&tls->interrupt_count, 0, 1) == 0)
-               return FALSE;
-#else
-       /*
-        * We use interrupt_count to determine whenever this interrupt should be processed
-        * by us or the normal interrupt processing code in the signal handler.
-        * There is no race here with notify_thread (), since the signal is sent after
-        * incrementing interrupt_count.
-        */
-       if (tls->interrupt_count == 0)
-               return FALSE;
-
-       InterlockedDecrement (&tls->interrupt_count);
-#endif
-
-       if (sigctx)
-               ip = mono_arch_ip_from_context (sigctx);
-       else if (info)
-               ip = MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx);
-       else
-               ip = NULL;
+       g_assert (info);
 
-       if (info)
-               tid = mono_thread_info_get_tid (info);
-       else
-               tid = (MonoNativeThreadId)GetCurrentThreadId ();
+       ip = MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx);
+       tid = mono_thread_info_get_tid (info);
 
        // FIXME: Races when the thread leaves managed code before hitting a single step
        // event.
@@ -2587,7 +2559,6 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
        if (ji) {
                /* Running managed code, will be suspended by the single step code */
                DEBUG_PRINTF (1, "[%p] Received interrupt while at %s(%p), continuing.\n", (gpointer)(gsize)tid, jinfo_get_method (ji)->name, ip);
-               return TRUE;
        } else {
                /* 
                 * Running native code, will be suspended when it returns to/enters 
@@ -2607,7 +2578,7 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
 
                        if (!tls->thread)
                                /* Already terminated */
-                               return TRUE;
+                               return;
 
                        /*
                         * We are in a difficult position: we want to be able to provide stack
@@ -2620,17 +2591,7 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
                         * remain valid.
                         */
                        data.last_frame_set = FALSE;
-                       if (sigctx) {
-                               mono_sigctx_to_monoctx (sigctx, &ctx);
-                               /* 
-                                * Don't pass MONO_UNWIND_ACTUAL_METHOD, its not signal safe, and
-                                * get_last_frame () doesn't need it, the last frame cannot be a ginst
-                                * since we are not in a JITted method.
-                                */
-                               mono_walk_stack_with_ctx (get_last_frame, &ctx, MONO_UNWIND_NONE, &data);
-                       } else if (info) {
-                               mono_get_eh_callbacks ()->mono_walk_stack_with_state (get_last_frame, mono_thread_info_get_suspend_state (info), MONO_UNWIND_SIGNAL_SAFE, &data);
-                       }
+                       mono_get_eh_callbacks ()->mono_walk_stack_with_state (get_last_frame, mono_thread_info_get_suspend_state (info), MONO_UNWIND_SIGNAL_SAFE, &data);
                        if (data.last_frame_set) {
                                memcpy (&tls->async_last_frame, &data.last_frame, sizeof (StackFrameInfo));
                                res = mono_thread_state_init_from_monoctx (&tls->async_state, &ctx);
@@ -2650,41 +2611,9 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
                        tls->suspended = TRUE;
                        MONO_SEM_POST (&suspend_sem);
                }
-               return TRUE;
        }
 }
 
-/*
- * mono_debugger_agent_thread_interrupt:
- *
- *   Called by the abort signal handler.
- * Should be signal safe.
- */
-gboolean
-mono_debugger_agent_thread_interrupt (void *sigctx, MonoJitInfo *ji)
-{
-       DebuggerTlsData *tls;
-
-       if (!inited)
-               return FALSE;
-
-       tls = mono_native_tls_get_value (debugger_tls_id);
-       if (!tls) {
-               DEBUG_PRINTF (1, "[%p] Received interrupt with no TLS, continuing.\n", (gpointer)GetCurrentThreadId ());
-               return FALSE;
-       }
-
-       return thread_interrupt (tls, NULL, sigctx, ji);
-}
-
-#ifdef HOST_WIN32
-static void CALLBACK notify_thread_apc (ULONG_PTR param)
-{
-       //DebugBreak ();
-       mono_debugger_agent_thread_interrupt (NULL, NULL);
-}
-#endif /* HOST_WIN32 */
-
 /*
  * reset_native_thread_suspend_state:
  * 
@@ -2721,7 +2650,8 @@ debugger_interrupt_critical (MonoThreadInfo *info, gpointer user_data)
        data->valid_info = TRUE;
        ji = mono_jit_info_table_find (mono_thread_info_get_suspend_state (info)->unwind_data [MONO_UNWIND_DATA_DOMAIN], MONO_CONTEXT_GET_IP (&mono_thread_info_get_suspend_state (info)->ctx));
 
-       thread_interrupt (data->tls, info, NULL, ji);
+       /* This is signal safe */
+       thread_interrupt (data->tls, info, ji);
        return MonoResumeThread;
 }
 
@@ -2736,60 +2666,23 @@ notify_thread (gpointer key, gpointer value, gpointer user_data)
        MonoInternalThread *thread = key;
        DebuggerTlsData *tls = value;
        gsize tid = thread->tid;
-#ifndef HOST_WIN32
-       int res;
-#endif
 
        if (GetCurrentThreadId () == tid || tls->terminated)
                return;
 
        DEBUG_PRINTF (1, "[%p] Interrupting %p...\n", (gpointer)GetCurrentThreadId (), (gpointer)tid);
 
-       /*
-        * OSX can (and will) coalesce signals, so sending multiple pthread_kills does not
-        * guarantee the signal handler will be called that many times.  Instead of tracking
-        * interrupt_count on osx, we use this as a boolean flag to determine if a interrupt
-        * has been requested that hasn't been handled yet, otherwise we can have threads
-        * refuse to die when VM_EXIT is called
-        */
-#if defined(__APPLE__)
-       if (InterlockedCompareExchange (&tls->interrupt_count, 1, 0) == 1)
-               return;
-#else
-       /*
-        * Maybe we could use the normal interrupt infrastructure, but that does a lot
-        * of things like breaking waits etc. which we don't want.
-        */
-       InterlockedIncrement (&tls->interrupt_count);
-#endif
-
        /* This is _not_ equivalent to ves_icall_System_Threading_Thread_Abort () */
-       if (mono_thread_info_new_interrupt_enabled ()) {
-               InterruptData interrupt_data = { 0 };
-               interrupt_data.tls = tls;
+       InterruptData interrupt_data = { 0 };
+       interrupt_data.tls = tls;
 
-               mono_thread_info_safe_suspend_and_run ((MonoNativeThreadId)(gpointer)(gsize)thread->tid, FALSE, debugger_interrupt_critical, &interrupt_data);
-               if (!interrupt_data.valid_info) {
-                       DEBUG_PRINTF (1, "[%p] mono_thread_info_suspend_sync () failed for %p...\n", (gpointer)GetCurrentThreadId (), (gpointer)tid);
-                       /* 
-                        * Attached thread which died without detaching.
-                        */
-                       tls->terminated = TRUE;
-               }
-       } else {
-#ifdef HOST_WIN32
-               // FIXME: Remove this since new interrupt is used on win32 now
-               QueueUserAPC (notify_thread_apc, thread->handle, (ULONG_PTR)NULL);
-#else
-               res = mono_thread_kill (thread, mono_thread_get_abort_signal ());
-               if (res) {
-                       DEBUG_PRINTF (1, "[%p] mono_thread_kill () failed for %p: %d...\n", (gpointer)GetCurrentThreadId (), (gpointer)tid, res);
-                       /* 
-                        * Attached thread which died without detaching.
-                        */
-                       tls->terminated = TRUE;
-               }
-#endif
+       mono_thread_info_safe_suspend_and_run ((MonoNativeThreadId)(gpointer)(gsize)thread->tid, FALSE, debugger_interrupt_critical, &interrupt_data);
+       if (!interrupt_data.valid_info) {
+               DEBUG_PRINTF (1, "[%p] mono_thread_info_suspend_sync () failed for %p...\n", (gpointer)GetCurrentThreadId (), (gpointer)tid);
+               /* 
+                * Attached thread which died without detaching.
+                */
+               tls->terminated = TRUE;
        }
 }
 
@@ -2851,7 +2744,9 @@ suspend_vm (void)
 {
        mono_loader_lock ();
 
+       MONO_TRY_BLOCKING
        mono_mutex_lock (&suspend_mutex);
+       MONO_FINISH_TRY_BLOCKING
 
        suspend_count ++;
 
@@ -2889,7 +2784,9 @@ resume_vm (void)
 
        mono_loader_lock ();
 
+       MONO_TRY_BLOCKING
        mono_mutex_lock (&suspend_mutex);
+       MONO_FINISH_TRY_BLOCKING
 
        g_assert (suspend_count > 0);
        suspend_count --;
@@ -2933,7 +2830,9 @@ resume_thread (MonoInternalThread *thread)
        tls = mono_g_hash_table_lookup (thread_to_tls, thread);
        g_assert (tls);
        
+       MONO_TRY_BLOCKING
        mono_mutex_lock (&suspend_mutex);
+       MONO_FINISH_TRY_BLOCKING
 
        g_assert (suspend_count > 0);
 
@@ -2992,10 +2891,8 @@ invalidate_frames (DebuggerTlsData *tls)
 static void
 suspend_current (void)
 {
-#ifndef HOST_WIN32
-       int err;
-#endif
        DebuggerTlsData *tls;
+       int err;
 
        g_assert (debugger_thread_id != GetCurrentThreadId ());
 
@@ -3010,7 +2907,9 @@ suspend_current (void)
        tls = mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
+       MONO_TRY_BLOCKING
        mono_mutex_lock (&suspend_mutex);
+       MONO_FINISH_TRY_BLOCKING
 
        tls->suspending = FALSE;
        tls->really_suspended = TRUE;
@@ -3022,22 +2921,12 @@ suspend_current (void)
 
        DEBUG_PRINTF (1, "[%p] Suspended.\n", (gpointer)GetCurrentThreadId ());
 
+       MONO_TRY_BLOCKING
        while (suspend_count - tls->resume_count > 0) {
-#ifdef HOST_WIN32
-               if (WAIT_TIMEOUT == WaitForSingleObject(suspend_cond, 0))
-               {
-                       mono_mutex_unlock (&suspend_mutex);
-                       Sleep(1);
-                       mono_mutex_lock (&suspend_mutex);
-               }
-               else
-               {
-               }
-#else
                err = mono_cond_wait (&suspend_cond, &suspend_mutex);
                g_assert (err == 0);
-#endif
        }
+       MONO_FINISH_TRY_BLOCKING
 
        tls->suspended = FALSE;
        tls->really_suspended = FALSE;
@@ -3174,7 +3063,7 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
        if (info->il_offset == -1) {
                /* mono_debug_il_offset_from_address () doesn't seem to be precise enough (#2092) */
                if (ud->frames == NULL) {
-                       if (find_prev_seq_point_for_native_offset (info->domain, method, info->native_offset, NULL, &sp))
+                       if (mono_find_prev_seq_point_for_native_offset (info->domain, method, info->native_offset, NULL, &sp))
                                info->il_offset = sp.il_offset;
                }
                if (info->il_offset == -1)
@@ -3564,7 +3453,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                                MonoDebugMethodInfo *minfo = mono_debug_lookup_method (method);
 
                                                if (minfo) {
-                                                       mono_debug_symfile_get_line_numbers_full (minfo, &source_file, &source_file_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+                                                       mono_debug_get_seq_points (minfo, &source_file, &source_file_list, NULL, NULL, NULL);
                                                        for (i = 0; i < source_file_list->len; ++i) {
                                                                sinfo = g_ptr_array_index (source_file_list, i);
                                                                /*
@@ -4287,8 +4176,8 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
        if (error)
                mono_error_init (error);
 
-       seq_point_iterator_init (&it, seq_points);
-       while (seq_point_iterator_next (&it)) {
+       mono_seq_point_iterator_init (&it, seq_points);
+       while (mono_seq_point_iterator_next (&it)) {
                if (it.seq_point.il_offset == bp->il_offset) {
                        it_has_sp = TRUE;
                        break;
@@ -4300,8 +4189,8 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
                 * The set of IL offsets with seq points doesn't completely match the
                 * info returned by CMD_METHOD_GET_DEBUG_INFO (#407).
                 */
-               seq_point_iterator_init (&it, seq_points);
-               while (seq_point_iterator_next (&it)) {
+               mono_seq_point_iterator_init (&it, seq_points);
+               while (mono_seq_point_iterator_next (&it)) {
                        if (it.seq_point.il_offset != METHOD_ENTRY_IL_OFFSET &&
                                it.seq_point.il_offset != METHOD_EXIT_IL_OFFSET &&
                                it.seq_point.il_offset + 1 == bp->il_offset) {
@@ -4314,8 +4203,8 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
        if (!it_has_sp) {
                char *s = g_strdup_printf ("Unable to insert breakpoint at %s:%d", mono_method_full_name (jinfo_get_method (ji), TRUE), bp->il_offset);
 
-               seq_point_iterator_init (&it, seq_points);
-               while (seq_point_iterator_next (&it))
+               mono_seq_point_iterator_init (&it, seq_points);
+               while (mono_seq_point_iterator_next (&it))
                        DEBUG_PRINTF (1, "%d\n", it.seq_point.il_offset);
 
                if (error) {
@@ -4773,7 +4662,7 @@ process_breakpoint_inner (DebuggerTlsData *tls, gboolean from_signal)
         * The ip points to the instruction causing the breakpoint event, which is after
         * the offset recorded in the seq point map, so find the prev seq point before ip.
         */
-       found_sp = find_prev_seq_point_for_native_offset (mono_domain_get (), method, native_offset, &info, &sp);
+       found_sp = mono_find_prev_seq_point_for_native_offset (mono_domain_get (), method, native_offset, &info, &sp);
 
        if (!found_sp)
                no_seq_points_found (method);
@@ -5031,7 +4920,7 @@ process_single_step_inner (DebuggerTlsData *tls, gboolean from_signal)
         * The ip points to the instruction causing the single step event, which is before
         * the offset recorded in the seq point map, so find the next seq point after ip.
         */
-       if (!find_next_seq_point_for_native_offset (domain, method, (guint8*)ip - (guint8*)ji->code_start, &info, &sp))
+       if (!mono_find_next_seq_point_for_native_offset (domain, method, (guint8*)ip - (guint8*)ji->code_start, &info, &sp))
                return;
 
        il_offset = sp.il_offset;
@@ -5107,12 +4996,16 @@ debugger_agent_single_step_from_context (MonoContext *ctx)
        DebuggerTlsData *tls;
        MonoThreadUnwindState orig_restore_state;
 
+       if (GetCurrentThreadId () == debugger_thread_id)
+               return;
+
        tls = mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
        /* Have to save/restore the restore_ctx as we can be called recursively during invokes etc. */
        memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwindState));
        mono_thread_state_init_from_monoctx (&tls->restore_state, ctx);
+       memcpy (&tls->handler_ctx, ctx, sizeof (MonoContext));
 
        process_single_step_inner (tls, FALSE);
 
@@ -5125,16 +5018,26 @@ debugger_agent_breakpoint_from_context (MonoContext *ctx)
 {
        DebuggerTlsData *tls;
        MonoThreadUnwindState orig_restore_state;
+       guint8 *orig_ip;
+
+       if (GetCurrentThreadId () == debugger_thread_id)
+               return;
+
+       orig_ip = MONO_CONTEXT_GET_IP (ctx);
+       MONO_CONTEXT_SET_IP (ctx, orig_ip - 1);
 
        tls = mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
-       memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoContext));
+       memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwindState));
        mono_thread_state_init_from_monoctx (&tls->restore_state, ctx);
+       memcpy (&tls->handler_ctx, ctx, sizeof (MonoContext));
 
        process_breakpoint_inner (tls, FALSE);
 
        memcpy (ctx, &tls->restore_state.ctx, sizeof (MonoContext));
        memcpy (&tls->restore_state, &orig_restore_state, sizeof (MonoThreadUnwindState));
+       if (MONO_CONTEXT_GET_IP (ctx) == orig_ip - 1)
+               MONO_CONTEXT_SET_IP (ctx, orig_ip);
 }
 
 /*
@@ -5258,7 +5161,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                                StackFrame *frame = frames [frame_index];
 
                                method = frame->method;
-                               found_sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
+                               found_sp = mono_find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
                                sp = (found_sp)? &local_sp : NULL;
                                frame_index ++;
                                if (sp && sp->next_len != 0)
@@ -5273,7 +5176,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                                        StackFrame *frame = frames [frame_index];
 
                                        method = frame->method;
-                                       found_sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
+                                       found_sp = mono_find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
                                        sp = (found_sp)? &local_sp : NULL;
                                        if (sp && sp->next_len != 0)
                                                break;
@@ -5286,7 +5189,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                                        StackFrame *frame = frames [frame_index];
 
                                        parent_sp_method = frame->method;
-                                       found_sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &parent_info, &local_parent_sp);
+                                       found_sp = mono_find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &parent_info, &local_parent_sp);
                                        parent_sp = found_sp ? &local_parent_sp : NULL;
                                        if (found_sp && parent_sp->next_len != 0)
                                                break;
@@ -5299,7 +5202,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                if (sp && sp->next_len > 0) {
                        SeqPoint* next = g_new(SeqPoint, sp->next_len);
 
-                       seq_point_init_next (info, *sp, next);
+                       mono_seq_point_init_next (info, *sp, next);
                        for (i = 0; i < sp->next_len; i++) {
                                next_sp = &next[i];
 
@@ -5312,7 +5215,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                if (parent_sp) {
                        SeqPoint* next = g_new(SeqPoint, parent_sp->next_len);
 
-                       seq_point_init_next (parent_info, *parent_sp, next);
+                       mono_seq_point_init_next (parent_info, *parent_sp, next);
                        for (i = 0; i < parent_sp->next_len; i++) {
                                next_sp = &next[i];
 
@@ -5324,6 +5227,18 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
 
                if (ss_req->nframes == 0)
                        ss_req->nframes = nframes;
+
+               if ((ss_req->depth == STEP_DEPTH_OVER) && (!sp && !parent_sp)) {
+                       DEBUG_PRINTF (1, "[dbg] No parent frame for step over, transition to step into.\n");
+                       /*
+                        * This is needed since if we leave managed code, and later return to it, step over
+                        * is not going to stop.
+                        * This approach is a bit ugly, since we change the step depth, but it only affects
+                        * clients who reuse the same step request, and only in this special case.
+                        */
+                       ss_req->depth = STEP_DEPTH_INTO;
+               }
+
                if (ss_req->depth == STEP_DEPTH_OVER) {
                        /* Need to stop in catch clauses as well */
                        for (i = 0; i < nframes; ++i) {
@@ -5334,7 +5249,7 @@ ss_start (SingleStepReq *ss_req, MonoMethod *method, SeqPoint* sp, MonoSeqPointI
                                        for (j = 0; j < jinfo->num_clauses; ++j) {
                                                MonoJitExceptionInfo *ei = &jinfo->clauses [j];
 
-                                               found_sp = find_next_seq_point_for_native_offset (frame->domain, frame->method, (char*)ei->handler_start - (char*)jinfo->code_start, NULL, &local_sp);
+                                               found_sp = mono_find_next_seq_point_for_native_offset (frame->domain, frame->method, (char*)ei->handler_start - (char*)jinfo->code_start, NULL, &local_sp);
                                                sp = (found_sp)? &local_sp : NULL;
                                                if (sp) {
                                                        bp = set_breakpoint (frame->method, sp->il_offset, ss_req->req, NULL);
@@ -5445,7 +5360,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
                 * Find the seq point corresponding to the landing site ip, which is the first seq
                 * point after ip.
                 */
-               found_sp = find_next_seq_point_for_native_offset (frame.domain, frame.method, frame.native_offset, &info, &local_sp);
+               found_sp = mono_find_next_seq_point_for_native_offset (frame.domain, frame.method, frame.native_offset, &info, &local_sp);
                sp = (found_sp)? &local_sp : NULL;
                if (!sp)
                        no_seq_points_found (frame.method);
@@ -5491,7 +5406,7 @@ ss_create (MonoInternalThread *thread, StepSize size, StepDepth depth, StepFilte
                if (frame) {
                        if (!method && frame->il_offset != -1) {
                                /* FIXME: Sort the table and use a binary search */
-                               found_sp = find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
+                               found_sp = mono_find_prev_seq_point_for_native_offset (frame->domain, frame->method, frame->native_offset, &info, &local_sp);
                                sp = (found_sp)? &local_sp : NULL;
                                if (!sp)
                                        no_seq_points_found (frame->method);
@@ -6907,7 +6822,7 @@ get_source_files_for_type (MonoClass *klass)
                GPtrArray *source_file_list;
 
                if (minfo) {
-                       mono_debug_symfile_get_line_numbers_full (minfo, NULL, &source_file_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+                       mono_debug_get_seq_points (minfo, NULL, &source_file_list, NULL, NULL, NULL);
                        for (j = 0; j < source_file_list->len; ++j) {
                                sinfo = g_ptr_array_index (source_file_list, j);
                                for (i = 0; i < files->len; ++i)
@@ -8403,13 +8318,9 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                MonoDebugMethodInfo *minfo;
                char *source_file;
                int i, j, n_il_offsets;
-               int *il_offsets;
-               int *line_numbers;
-               int *column_numbers;
-               int *end_line_numbers;
-               int *end_column_numbers;
                int *source_files;
                GPtrArray *source_file_list;
+               MonoSymSeqPoint *sym_seq_points;
 
                header = mono_method_get_header (method);
                if (!header) {
@@ -8428,7 +8339,7 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                        break;
                }
 
-               mono_debug_symfile_get_line_numbers_full (minfo, &source_file, &source_file_list, &n_il_offsets, &il_offsets, &line_numbers, &column_numbers, &source_files, &end_line_numbers, &end_column_numbers);
+               mono_debug_get_seq_points (minfo, &source_file, &source_file_list, &source_files, &sym_seq_points, &n_il_offsets);
                buffer_add_int (buf, header->code_size);
                if (CHECK_PROTOCOL_VERSION (2, 13)) {
                        buffer_add_int (buf, source_file_list->len);
@@ -8446,31 +8357,28 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                buffer_add_int (buf, n_il_offsets);
                DEBUG_PRINTF (10, "Line number table for method %s:\n", mono_method_full_name (method,  TRUE));
                for (i = 0; i < n_il_offsets; ++i) {
+                       MonoSymSeqPoint *sp = &sym_seq_points [i];
                        const char *srcfile = "";
 
                        if (source_files [i] != -1) {
                                MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, source_files [i]);
                                srcfile = sinfo->source_file;
                        }
-                       DEBUG_PRINTF (10, "IL%x -> %s:%d %d %d %d\n", il_offsets [i], srcfile, line_numbers [i], column_numbers ? column_numbers [i] : -1, end_line_numbers ? end_line_numbers [i] : -1, end_column_numbers ? end_column_numbers [i] : -1);
-                       buffer_add_int (buf, il_offsets [i]);
-                       buffer_add_int (buf, line_numbers [i]);
+                       DEBUG_PRINTF (10, "IL%x -> %s:%d %d %d %d\n", sp->il_offset, srcfile, sp->line, sp->column, sp->end_line, sp->end_column);
+                       buffer_add_int (buf, sp->il_offset);
+                       buffer_add_int (buf, sp->line);
                        if (CHECK_PROTOCOL_VERSION (2, 13))
                                buffer_add_int (buf, source_files [i]);
                        if (CHECK_PROTOCOL_VERSION (2, 19))
-                               buffer_add_int (buf, column_numbers ? column_numbers [i] : -1);
+                               buffer_add_int (buf, sp->column);
                        if (CHECK_PROTOCOL_VERSION (2, 32)) {
-                               buffer_add_int (buf, end_line_numbers ? end_line_numbers [i] : -1);
-                               buffer_add_int (buf, end_column_numbers ? end_column_numbers [i] : -1);
+                               buffer_add_int (buf, sp->end_line);
+                               buffer_add_int (buf, sp->end_column);
                        }
                }
                g_free (source_file);
-               g_free (il_offsets);
-               g_free (line_numbers);
-               g_free (column_numbers);
-               g_free (end_line_numbers);
-               g_free (end_column_numbers);
                g_free (source_files);
+               g_free (sym_seq_points);
                g_ptr_array_free (source_file_list, TRUE);
                mono_metadata_free_mh (header);
                break;
@@ -8504,50 +8412,73 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
        case CMD_METHOD_GET_LOCALS_INFO: {
                int i, j, num_locals;
                MonoDebugLocalsInfo *locals;
+               int *locals_map = NULL;
 
                header = mono_method_get_header (method);
                if (!header)
                        return ERR_INVALID_ARGUMENT;
 
-               buffer_add_int (buf, header->num_locals);
-
-               /* Types */
-               for (i = 0; i < header->num_locals; ++i)
-                       buffer_add_typeid (buf, domain, mono_class_from_mono_type (header->locals [i]));
-
-               /* Names */
                locals = mono_debug_lookup_locals (method);
-               if (locals)
-                       num_locals = locals->num_locals;
-               else
-                       num_locals = 0;
-               for (i = 0; i < header->num_locals; ++i) {
-                       for (j = 0; j < num_locals; ++j)
-                               if (locals->locals [j].index == i)
-                                       break;
-                       if (j < num_locals)
-                               buffer_add_string (buf, locals->locals [j].name);
-                       else
-                               buffer_add_string (buf, "");
-               }
-
-               /* Scopes */
-               for (i = 0; i < header->num_locals; ++i) {
-                       for (j = 0; j < num_locals; ++j)
-                               if (locals->locals [j].index == i)
-                                       break;
-                       if (j < num_locals && locals->locals [j].block) {
-                               buffer_add_int (buf, locals->locals [j].block->start_offset);
-                               buffer_add_int (buf, locals->locals [j].block->end_offset);
-                       } else {
+               if (!locals) {
+                       buffer_add_int (buf, header->num_locals);
+                       /* Types */
+                       for (i = 0; i < header->num_locals; ++i) {
+                               buffer_add_typeid (buf, domain, mono_class_from_mono_type (header->locals [i]));
+                       }
+                       /* Names */
+                       for (i = 0; i < header->num_locals; ++i) {
+                               char lname [128];
+                               sprintf (lname, "V_%d", i);
+                               buffer_add_string (buf, lname);
+                       }
+                       /* Scopes */
+                       for (i = 0; i < header->num_locals; ++i) {
                                buffer_add_int (buf, 0);
                                buffer_add_int (buf, header->code_size);
                        }
+               } else {
+                       /* Maps between the IL locals index and the index in locals->locals */
+                       locals_map = g_new0 (int, header->num_locals);
+                       for (i = 0; i < header->num_locals; ++i)
+                               locals_map [i] = -1;
+                       num_locals = locals->num_locals;
+                       for (i = 0; i < num_locals; ++i) {
+                               g_assert (locals->locals [i].index < header->num_locals);
+                               locals_map [locals->locals [i].index] = i;
+                       }
+                       buffer_add_int (buf, num_locals);
+
+                       /* Types */
+                       for (i = 0; i < header->num_locals; ++i) {
+                               if (locals_map [i] != -1)
+                                       buffer_add_typeid (buf, domain, mono_class_from_mono_type (header->locals [i]));
+                       }
+
+                       /* Names */
+                       for (i = 0; i < header->num_locals; ++i) {
+                               if (locals_map [i] != -1)
+                                       buffer_add_string (buf, locals->locals [locals_map [i]].name);
+                       }
+
+                       /* Scopes */
+                       for (i = 0; i < header->num_locals; ++i) {
+                               if (locals_map [i] != -1) {
+                                       j = locals_map [i];
+                                       if (locals->locals [j].block) {
+                                               buffer_add_int (buf, locals->locals [j].block->start_offset);
+                                               buffer_add_int (buf, locals->locals [j].block->end_offset);
+                                       } else {
+                                               buffer_add_int (buf, 0);
+                                               buffer_add_int (buf, header->code_size);
+                                       }
+                               }
+                       }
                }
                mono_metadata_free_mh (header);
 
                if (locals)
-                       mono_debug_symfile_free_locals (locals);
+                       mono_debug_free_locals (locals);
+               g_free (locals_map);
 
                break;
        }
@@ -8923,7 +8854,7 @@ thread_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                if (tls->frame_count == 0 || tls->frames [0]->actual_method != method)
                        return ERR_INVALID_ARGUMENT;
 
-               found_sp = find_seq_point (domain, method, il_offset, &seq_points, &sp);
+               found_sp = mono_find_seq_point (domain, method, il_offset, &seq_points, &sp);
 
                g_assert (seq_points);
 
@@ -9010,7 +8941,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
        sig = mono_method_signature (frame->actual_method);
 
-       if (!get_seq_points (frame->domain, frame->actual_method))
+       if (!mono_get_seq_points (frame->domain, frame->actual_method))
                /*
                 * The method is probably from an aot image compiled without soft-debug, variables might be dead, etc.
                 */
@@ -9576,7 +9507,10 @@ wait_for_attach (void)
        }
 
        /* Block and wait for client connection */
+       MONO_PREPARE_BLOCKING
        conn_fd = socket_transport_accept (listen_fd);
+       MONO_FINISH_BLOCKING
+
        DEBUG_PRINTF (1, "Accepted connection on %d\n", conn_fd);
        if (conn_fd == -1) {
                DEBUG_PRINTF (1, "[dbg] Bad client connection\n");
@@ -9634,7 +9568,9 @@ debugger_thread (void *arg)
        }
        
        while (!attach_failed) {
+               MONO_PREPARE_BLOCKING
                res = transport_recv (header, HEADER_LENGTH);
+               MONO_FINISH_BLOCKING
 
                /* This will break if the socket is closed during shutdown too */
                if (res != HEADER_LENGTH) {
@@ -9669,7 +9605,9 @@ debugger_thread (void *arg)
                data = g_malloc (len - HEADER_LENGTH);
                if (len - HEADER_LENGTH > 0)
                {
+                       MONO_PREPARE_BLOCKING
                        res = transport_recv (data, len - HEADER_LENGTH);
+                       MONO_FINISH_BLOCKING
                        if (res != len - HEADER_LENGTH) {
                                DEBUG_PRINTF (1, "[dbg] transport_recv () returned %d, expected %d.\n", res, len - HEADER_LENGTH);
                                break;
@@ -9759,10 +9697,12 @@ debugger_thread (void *arg)
 
        mono_set_is_debugger_attached (FALSE);
        
+       MONO_TRY_BLOCKING
        mono_mutex_lock (&debugger_thread_exited_mutex);
        debugger_thread_exited = TRUE;
        mono_cond_signal (&debugger_thread_exited_cond);
        mono_mutex_unlock (&debugger_thread_exited_mutex);
+       MONO_FINISH_TRY_BLOCKING
 
        DEBUG_PRINTF (1, "[dbg] Debugger thread exited.\n");
        
@@ -9802,12 +9742,6 @@ mono_debugger_agent_free_domain_info (MonoDomain *domain)
 {
 }
 
-gboolean
-mono_debugger_agent_thread_interrupt (void *sigctx, MonoJitInfo *ji)
-{
-       return FALSE;
-}
-
 void
 mono_debugger_agent_handle_exception (MonoException *ext, MonoContext *throw_ctx,
                                                                          MonoContext *catch_ctx)
index 643c268a2c2256dab35904d5d654ced63a550165..6a64df5a5b382f3642e3f2a338bbb292f9455c93 100644 (file)
@@ -24,8 +24,6 @@ debugger_agent_breakpoint_from_context (MonoContext *ctx);
 void
 mono_debugger_agent_free_domain_info (MonoDomain *domain);
 
-gboolean mono_debugger_agent_thread_interrupt (void *sigctx, MonoJitInfo *ji);
-
 #if defined(PLATFORM_ANDROID) || defined(TARGET_ANDROID)
 void
 mono_debugger_agent_unhandled_exception (MonoException *exc);
diff --git a/mono/mini/declsec.c b/mono/mini/declsec.c
deleted file mode 100644 (file)
index 1ece56b..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * declsec.c:  Declarative Security support
- *
- * Author:
- *     Sebastien Pouliot  <sebastien@ximian.com>
- *
- * Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
- */
-#include <config.h>
-
-#include "declsec.h"
-#include "mini.h"
-
-#ifndef DISABLE_SECURITY
-
-/*
- * Does the methods (or it's class) as any declarative security attribute ?
- * Is so are they applicable ? (e.g. static class constructor)
- */
-MonoBoolean
-mono_method_has_declsec (MonoMethod *method)
-{
-       InterlockedIncrement (&mono_jit_stats.cas_declsec_check);
-
-       if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE || method->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED) {
-               method = mono_marshal_method_from_wrapper (method);
-               if (!method)
-                       return FALSE;
-       } else if (method->wrapper_type != MONO_WRAPPER_NONE)
-               return FALSE;
-
-       if ((method->klass->flags & TYPE_ATTRIBUTE_HAS_SECURITY) || (method->flags & METHOD_ATTRIBUTE_HAS_SECURITY)) {
-               /* ignore static constructors */
-               if (strcmp (method->name, ".cctor"))
-                       return TRUE;
-       }
-       return FALSE;
-}
-
-
-/*
- * Fill actions for the specific index (which may either be an encoded class token or
- * an encoded method token) from the metadata image.
- * Returns TRUE if some actions requiring code generation are present, FALSE otherwise.
- */
-void
-mono_declsec_cache_stack_modifiers (MonoJitInfo *jinfo)
-{
-       MonoMethodCasInfo *info = mono_jit_info_get_cas_info (jinfo);
-       MonoMethod *method;
-       guint32 flags;
-
-       if (!info)
-               return;
-
-       method = jinfo_get_method (jinfo);
-       /* first find the stack modifiers applied to the method */
-       flags = mono_declsec_flags_from_method (method);
-       info->cas_method_assert = (flags & MONO_DECLSEC_FLAG_ASSERT) != 0;
-       info->cas_method_deny = (flags & MONO_DECLSEC_FLAG_DENY) != 0;
-       info->cas_method_permitonly = (flags & MONO_DECLSEC_FLAG_PERMITONLY) != 0;
-
-       /* then find the stack modifiers applied to the class */
-       flags = mono_declsec_flags_from_class (method->klass);
-       info->cas_class_assert = (flags & MONO_DECLSEC_FLAG_ASSERT) != 0;
-       info->cas_class_deny = (flags & MONO_DECLSEC_FLAG_DENY) != 0;
-       info->cas_class_permitonly = (flags & MONO_DECLSEC_FLAG_PERMITONLY) != 0;
-}
-
-
-MonoSecurityFrame*
-mono_declsec_create_frame (MonoDomain *domain, MonoJitInfo *jinfo)
-{
-       MonoSecurityFrame *frame = (MonoSecurityFrame*) mono_object_new (domain, mono_defaults.runtimesecurityframe_class);
-       MonoMethodCasInfo *info;
-       MonoMethod *method;
-
-       method = jinfo_get_method (jinfo);
-       info = mono_jit_info_get_cas_info (jinfo);
-       if (info && !info->cas_inited) {
-               if (mono_method_has_declsec (method)) {
-                       /* Cache the stack modifiers into the MonoJitInfo structure to speed up future stack walks */
-                       mono_declsec_cache_stack_modifiers (jinfo);
-               }
-               info->cas_inited = TRUE;
-       }
-
-       MONO_OBJECT_SETREF (frame, method, mono_method_get_object (domain, method, NULL));
-       MONO_OBJECT_SETREF (frame, domain, domain->domain);
-
-       /* stack modifiers on methods have priority on (i.e. replaces) modifiers on class */
-
-       if (info && info->cas_method_assert) {
-               mono_declsec_get_method_action (method, SECURITY_ACTION_ASSERT, &frame->assert);
-       } else if (info && info->cas_class_assert) {
-               mono_declsec_get_class_action (method->klass, SECURITY_ACTION_ASSERT, &frame->assert);
-       }
-
-       if (info && info->cas_method_deny) {
-               mono_declsec_get_method_action (method, SECURITY_ACTION_DENY, &frame->deny);
-       } else if (info && info->cas_class_deny) {
-               mono_declsec_get_class_action (method->klass, SECURITY_ACTION_DENY, &frame->deny);
-       }
-
-       if (info && info->cas_method_permitonly) {
-               mono_declsec_get_method_action (method, SECURITY_ACTION_PERMITONLY, &frame->permitonly);
-       } else if (info && info->cas_class_permitonly) {
-               mono_declsec_get_class_action (method->klass, SECURITY_ACTION_PERMITONLY, &frame->permitonly);
-       }
-
-       /* g_warning ("FRAME %s A(%p,%d) D(%p,%d) PO(%p,%d)", 
-       method->name, frame->assert.blob, frame->assert.size, frame->deny.blob, frame->deny.size, frame->permitonly.blob,frame->permitonly.size); */
-
-       return frame;
-}
-
-
-/*
- * Execute any LinkDemand, NonCasLinkDemand, LinkDemandChoice declarative
- * security attribute present on the called method or it's class.
- *
- * @domain     The current application domain
- * @caller     The method calling
- * @callee     The called method.
- * return value: TRUE if a security violation is detection, FALSE otherwise.
- *
- * Note: The execution is done in managed code in SecurityManager.LinkDemand
- */
-static gboolean
-mono_declsec_linkdemand_standard (MonoDomain *domain, MonoMethod *caller, MonoMethod *callee)
-{
-       MonoDeclSecurityActions linkclass, linkmethod;
-
-       InterlockedIncrement (&mono_jit_stats.cas_linkdemand);
-
-       if (mono_declsec_get_linkdemands (callee, &linkclass, &linkmethod)) {
-               MonoAssembly *assembly = mono_image_get_assembly (caller->klass->image);
-               MonoReflectionAssembly *refass = (MonoReflectionAssembly*) mono_assembly_get_object (domain, assembly);
-               MonoSecurityManager *secman = mono_security_manager_get_methods ();
-               MonoObject *res;
-               gpointer args [3];
-
-               args [0] = refass;
-               args [1] = &linkclass;
-               args [2] = &linkmethod;
-
-               res = mono_runtime_invoke (secman->linkdemand, NULL, args, NULL);
-               return !(*(MonoBoolean *) mono_object_unbox(res));
-       }
-       return FALSE;
-}
-
-/*
- * Ensure that the restrictions for partially trusted code are satisfied.
- *
- * @domain     The current application domain
- * @assembly   The assembly to query
- * return value: TRUE if the assembly is runnning at FullTrust, FALSE otherwise.
- */
-static gboolean
-mono_declsec_is_assembly_fulltrust (MonoDomain *domain, MonoAssembly *assembly)
-{
-       if (!MONO_SECMAN_FLAG_INIT (assembly->fulltrust)) {
-               MonoReflectionAssembly *refass = (MonoReflectionAssembly*) mono_assembly_get_object (domain, assembly);
-               MonoSecurityManager *secman = mono_security_manager_get_methods ();
-
-               if (secman && refass) {
-                       MonoObject *res;
-                       gpointer args [1];
-                       args [0] = refass;
-
-                       res = mono_runtime_invoke (secman->linkdemandfulltrust, NULL, args, NULL);
-                       if (*(MonoBoolean *) mono_object_unbox(res)) {
-                               /* keep this value cached as it will be used very often */
-                               MONO_SECMAN_FLAG_SET_VALUE (assembly->fulltrust, TRUE);
-                               return TRUE;
-                       }
-               }
-
-               MONO_SECMAN_FLAG_SET_VALUE (assembly->fulltrust, FALSE);
-               return FALSE;
-       }
-
-       return MONO_SECMAN_FLAG_GET_VALUE (assembly->fulltrust);
-}
-
-/*
- * Ensure that the restrictions for partially trusted code are satisfied.
- *
- * @domain     The current application domain
- * @caller     The method calling
- * @callee     The called method
- * return value: TRUE if a security violation is detected, FALSE otherwise.
- *
- * If callee's assembly is strongnamed and doesn't have an 
- * [AllowPartiallyTrustedCallers] attribute then we must enforce a LinkDemand
- * for FullTrust on all public/protected methods on public class.
- *
- * Note: APTC is only effective on stongnamed assemblies.
- */
-static gboolean
-mono_declsec_linkdemand_aptc (MonoDomain *domain, MonoMethod *caller, MonoMethod *callee)
-{
-       MonoSecurityManager* secman = NULL;
-       MonoAssembly *assembly;
-       guint32 size = 0;
-
-       InterlockedIncrement (&mono_jit_stats.cas_linkdemand_aptc);
-
-       /* A - Applicable only if we're calling into *another* assembly */
-       if (caller->klass->image == callee->klass->image)
-               return FALSE;
-
-       /* B - Applicable if we're calling a public/protected method from a public class */
-       if (!(callee->klass->flags & TYPE_ATTRIBUTE_PUBLIC) || !(callee->flags & FIELD_ATTRIBUTE_PUBLIC))
-               return FALSE;
-
-       /* C - Applicable if the callee's assembly is strongnamed */
-       if ((mono_image_get_public_key (callee->klass->image, &size) == NULL) || (size < MONO_ECMA_KEY_LENGTH))
-               return FALSE;
-
-       /* D - the callee's assembly must have [AllowPartiallyTrustedCallers] */
-       assembly = mono_image_get_assembly (callee->klass->image);
-       if (!MONO_SECMAN_FLAG_INIT (assembly->aptc)) {
-               MonoCustomAttrInfo* cinfo = mono_custom_attrs_from_assembly (assembly);
-               gboolean result = FALSE;
-               secman = mono_security_manager_get_methods ();
-               if (secman && cinfo) {
-                       /* look for AllowPartiallyTrustedCallersAttribute */
-                       result = mono_custom_attrs_has_attr (cinfo, secman->allowpartiallytrustedcallers);
-               }
-               if (cinfo)
-                       mono_custom_attrs_free (cinfo);
-               MONO_SECMAN_FLAG_SET_VALUE (assembly->aptc, result);
-       }
-
-       if (MONO_SECMAN_FLAG_GET_VALUE (assembly->aptc))
-               return FALSE;
-
-       /* E - the caller's assembly must have full trust permissions */
-       assembly = mono_image_get_assembly (caller->klass->image);
-       if (mono_declsec_is_assembly_fulltrust (domain, assembly))
-               return FALSE;
-
-       /* g_warning ("FAILURE *** JIT LinkDemand APTC check *** %s.%s calls into %s.%s",
-               caller->klass->name, caller->name, callee->klass->name, callee->name); */
-
-       return TRUE;    /* i.e. throw new SecurityException(); */
-}
-
-/*
- * Ensure that the restrictions for calling native code are satisfied.
- *
- * @domain     The current application domain
- * @caller     The method calling
- * @native     The native method called
- * return value: TRUE if a security violation is detected, FALSE otherwise.
- *
- * Executing Platform Invokes (P/Invoke) is a is a restricted operation.
- * The security policy must allow (SecurityPermissionFlag.UnmanagedCode)
- * an assembly to do this.
- *
- * This LinkDemand case is special because it only needs to call managed
- * code once per assembly. Further calls on this assembly will use a cached
- * flag for better performance. This is not done before the first call (e.g.
- * when loading the assembly) because that would break the lazy policy
- * evaluation that Mono use (another time saving optimization).
- *
- * Note: P/Invoke checks are ALWAYS (1) done at JIT time (as a LinkDemand). 
- * They are also checked at runtime, using a Demand (stack walk), unless the 
- * method or it's class has a [SuppressUnmanagedCodeSecurity] attribute.
- *
- * (1) well as long as the security manager is active (i.e. --security)
- */
-static gboolean
-mono_declsec_linkdemand_pinvoke (MonoDomain *domain, MonoMethod *caller, MonoMethod *native)
-{
-       MonoAssembly *assembly = mono_image_get_assembly (caller->klass->image);
-
-       InterlockedIncrement (&mono_jit_stats.cas_linkdemand_pinvoke);
-
-       /* Check for P/Invoke flag for the assembly */
-       if (!MONO_SECMAN_FLAG_INIT (assembly->unmanaged)) {
-               /* Check if we know (and have) or FullTrust status */
-               if (MONO_SECMAN_FLAG_INIT (assembly->fulltrust) && MONO_SECMAN_FLAG_GET_VALUE (assembly->fulltrust)) {
-                       /* FullTrust includes UnmanagedCode permission */
-                       MONO_SECMAN_FLAG_SET_VALUE (assembly->unmanaged, TRUE);
-                       return FALSE;
-               } else {
-                       MonoReflectionAssembly *refass = (MonoReflectionAssembly*) mono_assembly_get_object (domain, assembly);
-                       MonoSecurityManager* secman = mono_security_manager_get_methods ();
-                       if (secman && refass) {
-                               MonoObject *res;
-                               gpointer args [1];
-                               args [0] = refass;
-
-                               res = mono_runtime_invoke (secman->linkdemandunmanaged, NULL, args, NULL);
-                               if (*(MonoBoolean *) mono_object_unbox(res)) {
-                                       MONO_SECMAN_FLAG_SET_VALUE (assembly->unmanaged, TRUE);
-                                       return FALSE;
-                               }
-                       }
-               }
-
-               MONO_SECMAN_FLAG_SET_VALUE (assembly->unmanaged, FALSE);
-       }
-
-       if (MONO_SECMAN_FLAG_GET_VALUE (assembly->unmanaged))
-               return FALSE;
-
-       /* g_warning ("FAILURE *** JIT LinkDemand P/Invoke check *** %s.%s calls into %s.%s",
-               caller->klass->name, caller->name, native->klass->name, native->name); */
-
-       return TRUE;    /* i.e. throw new SecurityException(); */
-}
-
-/*
- * Ensure that the restrictions for calling internal calls are satisfied.
- *
- * @domain     The current application domain
- * @caller     The method calling
- * @icall      The internal call method
- * return value: TRUE if a security violation is detected, FALSE otherwise.
- *
- * We can't trust the icall flags/iflags as it comes from the assembly
- * that we may want to restrict and we do not have the public/restricted
- * information about icalls in the runtime. Actually it is not so bad 
- * as the CLR 2.0 doesn't enforce that restriction anymore.
- * 
- * So we'll limit the icalls to originate from ECMA signed assemblies 
- * (as this is required for partial trust scenarios) - or - assemblies that 
- * have FullTrust.
- */
-static gboolean
-mono_declsec_linkdemand_icall (MonoDomain *domain, MonoMethod *caller, MonoMethod *icall)
-{
-       MonoAssembly *assembly;
-
-       InterlockedIncrement (&mono_jit_stats.cas_linkdemand_icall);
-
-       /* check if the _icall_ is defined inside an ECMA signed assembly */
-       assembly = mono_image_get_assembly (icall->klass->image);
-       if (!MONO_SECMAN_FLAG_INIT (assembly->ecma)) {
-               guint32 size = 0;
-               const char *pk = mono_image_get_public_key (icall->klass->image, &size);
-               MONO_SECMAN_FLAG_SET_VALUE (assembly->ecma, mono_is_ecma_key (pk, size));
-       }
-
-       if (MONO_SECMAN_FLAG_GET_VALUE (assembly->ecma))
-               return FALSE;
-
-       /* else check if the _calling_ assembly is running at FullTrust */
-       assembly = mono_image_get_assembly (caller->klass->image);
-       return !mono_declsec_is_assembly_fulltrust (domain, assembly);
-}
-
-
-/*
- * Before the JIT can link (call) into a method the following security checks
- * must be done:
- *
- * We check that the code has the permission to link when:
- * 1. the code try to call an internal call;
- * 2. the code try to p/invoke to unmanaged code;
- * 3. the code try to call trusted code without being trusted itself -
- *    or without the trusted code permission (APTC);
- * 4. the code try to call managed code protected by a LinkDemand security 
- *    attribute
- *
- * Failures result in a SecurityException being thrown (later in mini code).
- *
- * Note: Some checks are duplicated in managed code to deal when reflection is
- * used to call the methods.
- */
-guint32
-mono_declsec_linkdemand (MonoDomain *domain, MonoMethod *caller, MonoMethod *callee)
-{
-       guint32 violation = MONO_JIT_SECURITY_OK;
-
-       /* short-circuit corlib as it is fully trusted (within itself)
-        * and because this cause major recursion headaches */
-       if ((caller->klass->image == mono_defaults.corlib) && (callee->klass->image == mono_defaults.corlib))
-               return violation;
-
-       /* next, the special (implied) linkdemand */
-
-       if (callee->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) {
-               /* restrict internal calls into the runtime */
-               if (mono_declsec_linkdemand_icall (domain, caller, callee))
-                       violation = MONO_JIT_LINKDEMAND_ECMA;
-       } else if (callee->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL) {
-               /* CAS can restrict p/invoke calls with the assembly granted permissions */
-               if (mono_declsec_linkdemand_pinvoke (domain, caller, callee))
-                       violation = MONO_JIT_LINKDEMAND_PINVOKE;
-       }
-
-       if (!violation) {
-               /* check if we allow partially trusted callers in trusted (signed) assemblies */
-               if (mono_declsec_linkdemand_aptc (domain, caller, callee))
-                       violation = MONO_JIT_LINKDEMAND_APTC;
-       }
-
-       /* then the "normal" LinkDemand (only when called method has declarative security) */
-       if (!violation && mono_method_has_declsec (callee)) {
-               /* LinkDemand are ignored for static constructors (ensured by calling mono_method_has_declsec) */
-               if (mono_declsec_linkdemand_standard (domain, caller, callee))
-                       violation = MONO_JIT_LINKDEMAND_PERMISSION;
-       }
-
-       /* if (violation) g_warning ("mono_declsec_linkdemand violation reported %d", violation); */
-       return violation;
-}
-
-#else /* DISABLE_SECURITY */
-
-void
-mono_declsec_cache_stack_modifiers (MonoJitInfo *jinfo)
-{
-}
-
-MonoSecurityFrame*
-mono_declsec_create_frame (MonoDomain *domain, MonoJitInfo *jinfo)
-{
-       return NULL;
-}
-
-guint32
-mono_declsec_linkdemand (MonoDomain *domain, MonoMethod *caller, MonoMethod *callee)
-{
-       return MONO_JIT_SECURITY_OK;
-}
-
-MonoBoolean
-mono_method_has_declsec (MonoMethod *method)
-{
-       return FALSE;
-}
-
-#endif
diff --git a/mono/mini/declsec.h b/mono/mini/declsec.h
deleted file mode 100644 (file)
index da7b9af..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * declsec.h:  Declarative Security support
- *
- * Author:
- *     Sebastien Pouliot  <sebastien@ximian.com>
- *
- * (C) 2004-2005 Novell (http://www.novell.com)
- */
-
-#ifndef _MONO_MINI_DECLSEC_H_
-#define _MONO_MINI_DECLSEC_H_
-
-#include <string.h>
-
-#include "mono/metadata/class-internals.h"
-#include "mono/metadata/domain-internals.h"
-#include "mono/metadata/object.h"
-#include "mono/metadata/tabledefs.h"
-#include "mono/metadata/marshal.h"
-#include "mono/metadata/security-manager.h"
-#include "mono/metadata/exception.h"
-#include "mono/utils/mono-compiler.h"
-
-
-/* Definitions */
-
-#define        MONO_CAS_INITIAL_STACK_SIZE             6
-
-
-/* keep in synch with RuntimeSecurityFrame in /mcs/class/corlib/System.Security/SecurityFrame.cs */
-typedef struct {
-       MonoObject obj;
-       MonoAppDomain *domain;
-       MonoReflectionMethod *method;
-       MonoDeclSecurityEntry assert;
-       MonoDeclSecurityEntry deny;
-       MonoDeclSecurityEntry permitonly;
-} MonoSecurityFrame;
-
-
-/* limited flags used in MonoJitInfo for stack modifiers */
-enum {
-       MONO_JITINFO_STACKMOD_ASSERT            = 0x01,
-       MONO_JITINFO_STACKMOD_DENY              = 0x02,
-       MONO_JITINFO_STACKMOD_PERMITONLY        = 0x04
-};
-
-enum {
-       MONO_JIT_SECURITY_OK                    = 0x00,
-       MONO_JIT_LINKDEMAND_PERMISSION          = 0x01,
-       MONO_JIT_LINKDEMAND_APTC                = 0x02,
-       MONO_JIT_LINKDEMAND_ECMA                = 0x04,
-       MONO_JIT_LINKDEMAND_PINVOKE             = 0x08
-};
-
-/* Prototypes */
-MonoBoolean mono_method_has_declsec (MonoMethod *method);
-void mono_declsec_cache_stack_modifiers (MonoJitInfo *jinfo);
-MonoSecurityFrame* mono_declsec_create_frame (MonoDomain *domain, MonoJitInfo *jinfo);
-
-guint32 mono_declsec_linkdemand (MonoDomain *domain, MonoMethod *caller, MonoMethod *callee);
-
-#ifndef DISABLE_SECURITY
-#define mono_security_method_has_declsec(method) (mono_method_has_declsec(method))
-#else
-#define mono_security_method_has_declsec(method) (FALSE)
-#endif
-
-#endif /* _MONO_MINI_DECLSEC_H_ */
index d4071234f12e0475f79ae9979d0572dcfc19973d..b9437db9be4aea35c456101921a911d5c6529e29 100644 (file)
@@ -17,8 +17,6 @@
 
 #ifndef DISABLE_JIT
 
-//#define DEBUG_DOMINATORS
-
 /*
  * bb->dfn == 0 means either the bblock is ignored by the dfn calculation, or
  * it is the entry bblock.
@@ -48,16 +46,17 @@ compute_dominators (MonoCompile *cfg)
        doms = g_new0 (MonoBasicBlock*, cfg->num_bblocks);
        doms [entry->dfn] = entry;
 
-#ifdef DEBUG_DOMINATORS
-       for (i = 0; i < cfg->num_bblocks; ++i) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
+       if (cfg->verbose_level > 1) {
+               for (i = 0; i < cfg->num_bblocks; ++i) {
+                       int j;
+                       MonoBasicBlock *bb = cfg->bblocks [i];
 
-               printf ("BB%d IN: ", bb->block_num);
-               for (j = 0; j < bb->in_count; ++j) 
-                       printf ("%d ", bb->in_bb [j]->block_num);
-               printf ("\n");
+                       printf ("BB%d IN: ", bb->block_num);
+                       for (j = 0; j < bb->in_count; ++j)
+                               printf ("%d ", bb->in_bb [j]->block_num);
+                       printf ("\n");
+               }
        }
-#endif
 
        changed = TRUE;
        while (changed) {
@@ -142,15 +141,15 @@ compute_dominators (MonoCompile *cfg)
 
        cfg->comp_done |= MONO_COMP_DOM | MONO_COMP_IDOM;
 
-#ifdef DEBUG_DOMINATORS
-       printf ("DTREE %s %d\n", mono_method_full_name (cfg->method, TRUE), 
-               cfg->header->num_clauses);
-       for (i = 0; i < cfg->num_bblocks; ++i) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
-               printf ("BB%d(dfn=%d) (IDOM=BB%d): ", bb->block_num, bb->dfn, bb->idom ? bb->idom->block_num : -1);
-               mono_blockset_print (cfg, bb->dominators, NULL, -1);
+       if (cfg->verbose_level > 1) {
+               printf ("DTREE %s %d\n", mono_method_full_name (cfg->method, TRUE),
+                       cfg->header->num_clauses);
+               for (i = 0; i < cfg->num_bblocks; ++i) {
+                       MonoBasicBlock *bb = cfg->bblocks [i];
+                       printf ("BB%d(dfn=%d) (IDOM=BB%d): ", bb->block_num, bb->dfn, bb->idom ? bb->idom->block_num : -1);
+                       mono_blockset_print (cfg, bb->dominators, NULL, -1);
+               }
        }
-#endif
 }
 
 #if 0
@@ -296,8 +295,6 @@ mono_compile_dominator_info (MonoCompile *cfg, int dom_flags)
                compute_dominance_frontier (cfg);
 }
 
-//#define DEBUG_NATURAL_LOOPS
-
 /*
  * code to detect loops and loop nesting level
  */
@@ -316,8 +313,13 @@ mono_compute_natural_loops (MonoCompile *cfg)
 
                for (j = 0; j < n->out_count; j++) {
                        MonoBasicBlock *h = n->out_bb [j];
+                       /* check for single block loops */
+                       if (n == h) {
+                               h->loop_blocks = g_list_prepend_mempool (cfg->mempool, h->loop_blocks, h);
+                               h->nesting++;
+                       }
                        /* check for back-edge from n to h */
-                       if (n != h && mono_bitset_test_fast (n->dominators, h->dfn)) {
+                       else if (n != h && mono_bitset_test_fast (n->dominators, h->dfn)) {
                                GSList *todo;
 
                                /* already in loop_blocks? */
@@ -385,9 +387,6 @@ mono_compute_natural_loops (MonoCompile *cfg)
                        /* The loop body start is the first bblock in the order they will be emitted */
                        MonoBasicBlock *h = cfg->bblocks [i];
                        MonoBasicBlock *body_start = h;
-#if defined(__native_client_codegen__)
-                       MonoInst *inst;
-#endif
                        GList *l;
 
                        for (l = h->loop_blocks; l; l = l->next) {
@@ -398,31 +397,24 @@ mono_compute_natural_loops (MonoCompile *cfg)
                                }
                        }
 
-#if defined(__native_client_codegen__)
-                       /* Instrument the loop (GC back branch safe point) */
-                       MONO_INST_NEW (cfg, inst, OP_NACL_GC_SAFE_POINT);
-                       inst->dreg = mono_alloc_dreg (cfg, STACK_I4);
-                       mono_bblock_insert_before_ins (body_start, NULL, inst);
-#endif
                        body_start->loop_body_start = 1;
                }
        }
        g_free (bb_indexes);
 
-#ifdef DEBUG_NATURAL_LOOPS
-       for (i = 0; i < cfg->num_bblocks; ++i) {
-               if (cfg->bblocks [i]->loop_blocks) {
-                       MonoBasicBlock *h = (MonoBasicBlock *)cfg->bblocks [i]->loop_blocks->data;
-                       GList *l;
-                       printf ("LOOP START %d\n", h->block_num);
-                       for (l = h->loop_blocks; l; l = l->next) {
-                               MonoBasicBlock *cb = (MonoBasicBlock *)l->data;
-                               printf (" BB%d %d %p\n", cb->block_num, cb->nesting, cb->loop_blocks);
+       if (cfg->verbose_level > 1) {
+               for (i = 0; i < cfg->num_bblocks; ++i) {
+                       if (cfg->bblocks [i]->loop_blocks) {
+                               MonoBasicBlock *h = (MonoBasicBlock *)cfg->bblocks [i]->loop_blocks->data;
+                               GList *l;
+                               printf ("LOOP START %d\n", h->block_num);
+                               for (l = h->loop_blocks; l; l = l->next) {
+                                       MonoBasicBlock *cb = (MonoBasicBlock *)l->data;
+                                       printf ("\tBB%d %d %p\n", cb->block_num, cb->nesting, cb->loop_blocks);
+                               }
                        }
                }
        }
-#endif
-
 }
 
 static void
index 41b5db28e6eb3985584f22024cb621b4c3f94bc0..d1b13478e3a540ae95c93ecef6e130fe0bf995b5 100644 (file)
@@ -331,9 +331,7 @@ opt_sets [] = {
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_EXCEPTION,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_EXCEPTION | MONO_OPT_CMOV,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_EXCEPTION | MONO_OPT_ABCREM,
-       MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_EXCEPTION | MONO_OPT_ABCREM | MONO_OPT_SSAPRE,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_ABCREM,
-       MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_SSAPRE,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_ABCREM | MONO_OPT_SHARED,
        DEFAULT_OPTIMIZATIONS, 
 };
@@ -1724,19 +1722,15 @@ mono_main (int argc, char* argv[])
                } else if (strcmp (argv [i], "--security") == 0) {
 #ifndef DISABLE_SECURITY
                        mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
-                       mono_security_set_mode (MONO_SECURITY_MODE_CAS);
-                       mono_activate_security_manager ();
 #else
                        fprintf (stderr, "error: --security: not compiled with security manager support");
                        return 1;
 #endif
                } else if (strncmp (argv [i], "--security=", 11) == 0) {
-                       /* Note: temporary-smcs-hack, validil, and verifiable need to be
+                       /* Note: validil, and verifiable need to be
                           accepted even if DISABLE_SECURITY is defined. */
 
-                       if (strcmp (argv [i] + 11, "temporary-smcs-hack") == 0) {
-                               mono_security_set_mode (MONO_SECURITY_MODE_SMCS_HACK);
-                       } else if (strcmp (argv [i] + 11, "core-clr") == 0) {
+                       if (strcmp (argv [i] + 11, "core-clr") == 0) {
 #ifndef DISABLE_SECURITY
                                mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
                                mono_security_set_mode (MONO_SECURITY_MODE_CORE_CLR);
@@ -1755,9 +1749,7 @@ mono_main (int argc, char* argv[])
 #endif
                        } else if (strcmp (argv [i] + 11, "cas") == 0) {
 #ifndef DISABLE_SECURITY
-                               mono_verifier_set_mode (MONO_VERIFIER_MODE_VERIFIABLE);
-                               mono_security_set_mode (MONO_SECURITY_MODE_CAS);
-                               mono_activate_security_manager ();
+                               fprintf (stderr, "warning: --security=cas not supported.");
 #else
                                fprintf (stderr, "error: --security: not compiled with CAS support");
                                return 1;
@@ -1779,16 +1771,8 @@ mono_main (int argc, char* argv[])
                } else if (strcmp (argv [i], "--inside-mdb") == 0) {
                        action = DO_DEBUGGER;
                } else if (strncmp (argv [i], "--wapi=", 7) == 0) {
-                       if (strcmp (argv [i] + 7, "hps") == 0) {
-                               return mini_wapi_hps (argc - i, argv + i);
-                       } else if (strcmp (argv [i] + 7, "semdel") == 0) {
-                               return mini_wapi_semdel (argc - i, argv + i);
-                       } else if (strcmp (argv [i] + 7, "seminfo") == 0) {
-                               return mini_wapi_seminfo (argc - i, argv + i);
-                       } else {
-                               fprintf (stderr, "Invalid --wapi suboption: '%s'\n", argv [i]);
-                               return 1;
-                       }
+                       fprintf (stderr, "--wapi= option no longer supported\n.");
+                       return 1;
                } else if (strcmp (argv [i], "--no-x86-stack-align") == 0) {
                        mono_do_x86_stack_align = FALSE;
 #ifdef MONO_JIT_INFO_TABLE_TEST
index c7750e189c9c9eec5dd8141f0cccf417f91ea3c6..b2c99a04ad70c087e981883ff9ffaf24f3915cdb 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <mono/metadata/mono-endian.h>
 #include <mono/metadata/debug-mono-symfile.h>
+#include <mono/metadata/mono-debug-debugger.h>
 #include <mono/utils/mono-compiler.h>
 
 #ifndef HOST_WIN32
@@ -94,12 +95,12 @@ mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_st
        w->appending = appending;
 
        if (appending)
-               g_assert (img_writer_subsections_supported (w->w));
+               g_assert (mono_img_writer_subsections_supported (w->w));
 
        w->emit_line = TRUE;
 
        if (appending) {
-               if (!img_writer_subsections_supported (w->w))
+               if (!mono_img_writer_subsections_supported (w->w))
                        /* Can't emit line number info without subsections */
                        w->emit_line = FALSE;
        } else {
@@ -112,8 +113,8 @@ mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_st
                w->collect_line_info = FALSE;
        }
 
-       w->fp = img_writer_get_fp (w->w);
-       w->temp_prefix = img_writer_get_temp_label_prefix (w->w);
+       w->fp = mono_img_writer_get_fp (w->w);
+       w->temp_prefix = mono_img_writer_get_temp_label_prefix (w->w);
 
        w->class_to_die = g_hash_table_new (NULL, NULL);
        w->class_to_vtype_die = g_hash_table_new (NULL, NULL);
@@ -141,85 +142,85 @@ mono_dwarf_writer_get_il_file_line_index (MonoDwarfWriter *w)
 static inline void
 emit_section_change (MonoDwarfWriter *w, const char *section_name, int subsection_index)
 {
-       img_writer_emit_section_change (w->w, section_name, subsection_index);
+       mono_img_writer_emit_section_change (w->w, section_name, subsection_index);
 }
 
 static inline void
 emit_push_section (MonoDwarfWriter *w, const char *section_name, int subsection)
 {
-       img_writer_emit_push_section (w->w, section_name, subsection);
+       mono_img_writer_emit_push_section (w->w, section_name, subsection);
 }
 
 static inline void
 emit_pop_section (MonoDwarfWriter *w)
 {
-       img_writer_emit_pop_section (w->w);
+       mono_img_writer_emit_pop_section (w->w);
 }
 
 static inline void
 emit_label (MonoDwarfWriter *w, const char *name) 
 { 
-       img_writer_emit_label (w->w, name); 
+       mono_img_writer_emit_label (w->w, name); 
 }
 
 static inline void
 emit_bytes (MonoDwarfWriter *w, const guint8* buf, int size) 
 { 
-       img_writer_emit_bytes (w->w, buf, size); 
+       mono_img_writer_emit_bytes (w->w, buf, size); 
 }
 
 static inline void
 emit_string (MonoDwarfWriter *w, const char *value) 
 { 
-       img_writer_emit_string (w->w, value); 
+       mono_img_writer_emit_string (w->w, value); 
 }
 
 static inline void
 emit_line (MonoDwarfWriter *w) 
 { 
-       img_writer_emit_line (w->w); 
+       mono_img_writer_emit_line (w->w); 
 }
 
 static inline void
 emit_alignment (MonoDwarfWriter *w, int size) 
 { 
-       img_writer_emit_alignment (w->w, size); 
+       mono_img_writer_emit_alignment (w->w, size); 
 }
 
 static inline void
 emit_pointer_unaligned (MonoDwarfWriter *w, const char *target) 
 { 
-       img_writer_emit_pointer_unaligned (w->w, target); 
+       mono_img_writer_emit_pointer_unaligned (w->w, target); 
 }
 
 static inline void
 emit_pointer (MonoDwarfWriter *w, const char *target) 
 { 
-       img_writer_emit_pointer (w->w, target); 
+       mono_img_writer_emit_pointer (w->w, target); 
 }
 
 static inline void
 emit_int16 (MonoDwarfWriter *w, int value) 
 { 
-       img_writer_emit_int16 (w->w, value); 
+       mono_img_writer_emit_int16 (w->w, value); 
 }
 
 static inline void
 emit_int32 (MonoDwarfWriter *w, int value) 
 { 
-       img_writer_emit_int32 (w->w, value); 
+       mono_img_writer_emit_int32 (w->w, value); 
 }
 
 static inline void
 emit_symbol_diff (MonoDwarfWriter *w, const char *end, const char* start, int offset) 
 { 
-       img_writer_emit_symbol_diff (w->w, end, start, offset); 
+       mono_img_writer_emit_symbol_diff (w->w, end, start, offset); 
 }
 
 static inline void
 emit_byte (MonoDwarfWriter *w, guint8 val) 
 { 
-       img_writer_emit_byte (w->w, val); 
+       mono_img_writer_emit_byte (w->w, val); 
 }
 
 static G_GNUC_UNUSED void
@@ -709,7 +710,6 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        for (l = info_list; l; l = l->next) {
                MethodLineNumberInfo *info = l->data;
                MonoDebugMethodInfo *minfo;
-               char *source_file;
                GPtrArray *source_file_list;
 
                // FIXME: Free stuff
@@ -717,7 +717,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
                if (!minfo)
                        continue;
 
-               mono_debug_symfile_get_line_numbers_full (minfo, &source_file, &source_file_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+               mono_debug_get_seq_points (minfo, NULL, &source_file_list, NULL, NULL, NULL);
                for (i = 0; i < source_file_list->len; ++i) {
                        MonoDebugSourceInfo *sinfo = g_ptr_array_index (source_file_list, i);
                        add_line_number_file_name (w, sinfo->source_file, 0, 0);
@@ -841,7 +841,7 @@ emit_debug_info_end (MonoDwarfWriter *w)
 {
        /* This doesn't seem to work/required with recent iphone sdk versions */
 #if 0
-       if (!img_writer_subsections_supported (w->w))
+       if (!mono_img_writer_subsections_supported (w->w))
                fprintf (w->fp, "\n.set %sdebug_info_end,.\n", w->temp_prefix);
 #endif
 }
@@ -901,7 +901,7 @@ mono_dwarf_writer_emit_base_info (MonoDwarfWriter *w, const char *cu_name, GSLis
        emit_int32 (w, 0); /* .debug_abbrev offset */
        emit_byte (w, sizeof (gpointer)); /* address size */
 
-       if (img_writer_subsections_supported (w->w) && w->appending) {
+       if (mono_img_writer_subsections_supported (w->w) && w->appending) {
                /* Emit this into a separate section so it gets placed at the end */
                emit_section_change (w, ".debug_info", 1);
                emit_byte (w, 0); /* close COMPILE_UNIT */
@@ -2004,7 +2004,7 @@ mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod
        }
 
        if (locals_info)
-               mono_debug_symfile_free_locals (locals_info);
+               mono_debug_free_locals (locals_info);
 
        /* Subprogram end */
        emit_uleb128 (w, 0x0);
index 4a12b5fdeb2f320461e227e95065f3e2528c5a89..72342361fdc87d69d95007e294f5ac0953335534 100644 (file)
@@ -271,6 +271,8 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        amd64_mov_reg_membase (code, AMD64_RDI, AMD64_ARG_REG1,  MONO_STRUCT_OFFSET (MonoContext, rdi), 8);
        amd64_mov_reg_membase (code, AMD64_RSI, AMD64_ARG_REG1,  MONO_STRUCT_OFFSET (MonoContext, rsi), 8);
 #endif
+       /* load exc register */
+       amd64_mov_reg_membase (code, AMD64_RAX, AMD64_ARG_REG1,  MONO_STRUCT_OFFSET (MonoContext, rax), 8);
 
        /* call the handler */
        amd64_call_reg (code, AMD64_ARG_REG2);
index 36f3e75ab827215c1304ad562e37e13b768050f1..7f57eea44ecc7b2d2e469e996297d4aa32e9f87f 100644 (file)
@@ -608,9 +608,8 @@ mono_arch_setup_async_callback (MonoContext *ctx, void (*async_cb)(void *fun), g
        /* Allocate a stack frame */
        sp -= 16;
        MONO_CONTEXT_SET_SP (ctx, sp);
-       MONO_CONTEXT_SET_IP (ctx, async_cb);
 
-       // FIXME: thumb/arm
+       mono_arch_setup_resume_sighandler_ctx (ctx, async_cb);
 }
 
 /*
index a1720dcb241cae5b004ff40dcc4c34c46cae105b..dfb4a57d3b9a3ff5418b7cb005b8f283ffbbd387 100644 (file)
@@ -77,6 +77,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 
        g_assert ((code - start) < sizeof(start));
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
        return start;
 }
 
@@ -168,6 +169,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 
        g_assert ((code - start) < sizeof(start));
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
        return start;
 }
 
@@ -283,6 +285,7 @@ mono_arch_get_throw_exception_generic (guint8 *start, int size, int corlib, gboo
 
        g_assert ((code - start) < size);
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
        return start;
 }
 
@@ -350,6 +353,7 @@ mono_arch_get_throw_exception_by_name (void)
        start = code = mono_global_codeman_reserve (size);
        mips_break (code, 0xfd);
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
        return start;
 }
 
index 036af00adc19ed3fde3cb08e2f96b7ebb10773dc..b7c2e8d3a174503e4831a989da37122d80c1c79d 100644 (file)
@@ -218,6 +218,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 
        g_assert ((code - start) <= size);
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
 
        if (info)
                *info = mono_tramp_info_create ("restore_context", start, code - start, ji, unwind_ops);
@@ -306,6 +307,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 
        g_assert ((code - start) < size);
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
 
        if (info)
                *info = mono_tramp_info_create ("call_filter", start, code - start, ji, unwind_ops);
@@ -436,6 +438,7 @@ mono_arch_get_throw_exception_generic (int size, MonoTrampInfo **info, int corli
        ppc_break (code);
        g_assert ((code - start) <= size);
        mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
 
        if (info)
                *info = mono_tramp_info_create (corlib ? "throw_corlib_exception" : (rethrow ? "rethrow_exception" : "throw_exception"), start, code - start, ji, unwind_ops);
index 1555fe0facb316e2b0849da62506d49c62b00569..ac1d0f2c921c6c8003529246f76a8a271ba77795 100644 (file)
@@ -210,6 +210,9 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 
        g_assert ((code - start) < SZ_THROW); 
 
+       mono_arch_flush_icache(start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        if (info)
                *info = mono_tramp_info_create ("call_filter",
                                                start, code - start, ji,
@@ -359,6 +362,9 @@ mono_arch_get_throw_exception_generic (int size, MonoTrampInfo **info,
        s390_break (code);
        g_assert ((code - start) < size);
 
+       mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        if (info)
                *info = mono_tramp_info_create (corlib ? "throw_corlib_exception" 
                                                       : (rethrow ? "rethrow_exception" 
index f79e06cb22605a8a8da555b1df265ce6de6605ea..d7d4f72d299091b426195e49712a4002b98c0eda 100644 (file)
@@ -109,6 +109,9 @@ mono_win32_get_handle_stackoverflow (void)
        /* return */
        x86_ret (code);
 
+       mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        return start;
 }
 
@@ -354,6 +357,9 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
                g_slist_free (unwind_ops);
        }
 
+       mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        return start;
 }
 
@@ -431,6 +437,9 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
                g_slist_free (unwind_ops);
        }
 
+       mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        g_assert ((code - start) < kMaxCodeSize);
        return start;
 }
@@ -655,6 +664,9 @@ get_throw_trampoline (const char *name, gboolean rethrow, gboolean llvm, gboolea
                g_slist_free (unwind_ops);
        }
 
+       mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        return start;
 }
 
@@ -708,7 +720,7 @@ mono_arch_exceptions_init (void)
  * for SEHs to behave. This requires hotfix http://support.microsoft.com/kb/976038
  * or (eventually) Windows 7 SP1.
  */
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        DWORD flags;
        FARPROC getter;
        FARPROC setter;
@@ -945,6 +957,9 @@ mono_x86_get_signal_exception_trampoline (MonoTrampInfo **info, gboolean aot)
                g_slist_free (unwind_ops);
        }
 
+       mono_arch_flush_icache (start, code - start);
+       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL);
+
        return start;
 }
 
index 98b743b01321bdb9ef8932b70c776e3eb8f8e3a1..c122f17dd037986fcb76a9b2b510ac544490f3a5 100644 (file)
@@ -1140,6 +1140,83 @@ class Tests
                MyClass<FooStruct2>.foo ();
                return 0;
        }
+
+       enum AnEnum {
+               A,
+               B
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static string constrained_tostring<T> (T t) {
+               return t.ToString ();
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static bool constrained_equals<T> (T t1, T t2) {
+               var c = EqualityComparer<T>.Default;
+
+               return c.Equals (t1, t2);
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static int constrained_gethashcode<T> (T t) {
+               return t.GetHashCode ();
+       }
+
+       public static int test_0_constrained_partial_sharing () {
+               string s;
+
+               s = constrained_tostring<int> (5);
+               if (s != "5")
+                       return 1;
+               s = constrained_tostring<AnEnum> (AnEnum.B);
+               if (s != "B")
+                       return 2;
+
+               if (!constrained_equals<int> (1, 1))
+                       return 3;
+               if (constrained_equals<int> (1, 2))
+                       return 4;
+               if (!constrained_equals<AnEnum> (AnEnum.A, AnEnum.A))
+                       return 5;
+               if (constrained_equals<AnEnum> (AnEnum.A, AnEnum.B))
+                       return 6;
+
+               int i = constrained_gethashcode<int> (5);
+               if (i != 5)
+                       return 7;
+               i = constrained_gethashcode<AnEnum> (AnEnum.B);
+               if (i != 1)
+                       return 8;
+               return 0;
+       }
+
+       enum Enum1 {
+               A,
+               B
+       }
+
+       enum Enum2 {
+               A,
+               B
+       }
+
+       public static int test_0_partial_sharing_ginst () {
+               var l1 = new List<KeyValuePair<int, Enum1>> ();
+               l1.Add (new KeyValuePair<int, Enum1>(5, Enum1.A));
+               if (l1 [0].Key != 5)
+                       return 1;
+               if (l1 [0].Value != Enum1.A)
+                       return 2;
+               var l2 = new List<KeyValuePair<int, Enum2>> ();
+               l2.Add (new KeyValuePair<int, Enum2>(5, Enum2.B));
+               if (l2 [0].Key != 5)
+                       return 3;
+               if (l2 [0].Value != Enum2.B)
+                       return 4;
+               return 0;
+       }
+
 }
 
 #if !MOBILE
index 2530df38784c7b283bb0c7b4c0a806aaf0eba8b4..0cd3f3b5c815699c87ccd4a2beb6e9e55f633102 100644 (file)
@@ -140,8 +140,12 @@ load_file (const char *name) {
                                */
                        } else if (strncmp (p, "len:", 4) == 0) {
                                unsigned long size;
+                               char* endptr;
                                p += 4;
-                               size = strtoul (p, &p, 10);
+                               size = strtoul (p, &endptr, 10);
+                               if (size == 0 && p == endptr)
+                                       g_error ("Invalid length '%s' at line %d in %s\n", p, line, name);
+                               p = endptr;
                                if (!nacl_length_set) {
                                        desc->spec [MONO_INST_LEN] = size;
                                }
@@ -234,13 +238,13 @@ build_table (const char *fname, const char *name) {
        if (!(f = fopen (fname, "w")))
                g_error ("Cannot open file '%s'", fname);
        fprintf (f, "/* File automatically generated by genmdesc, don't change */\n\n");
-       fprintf (f, "const char %s [] = {\n", name);
+       fprintf (f, "const char mono_%s [] = {\n", name);
        fprintf (f, "\t\"");
        for (j = 0; j < MONO_INST_MAX; ++j)
                fprintf (f, "\\x0");
        fprintf (f, "\"\t/* null entry */\n");
        idx = 1;
-       g_string_append_printf (idx_array, "const guint16 %s_idx [] = {\n", name);
+       g_string_append_printf (idx_array, "const guint16 mono_%s_idx [] = {\n", name);
 
        for (i = OP_LOAD; i < OP_LAST; ++i) {
                desc = opcodes + i;
index b3a4cc8b78b06658dd2f1bf7734dd35beb801c54..2247722107cbd07fa26bc1018f73c38090b5b32b 100644 (file)
@@ -178,6 +178,9 @@ sub build_spec {
                if (defined $vals [$i]) {
                        if ($i == INST_LEN) {
                                $n = $vals [$i];
+                               if ($n =~ /[^0-9]/) {
+                                               die "Invalid instruction length $n\n";
+                               }
                                if ((defined $vals [INST_NACL]) and $nacl == 1){
                                    $n = $vals [INST_NACL];
                                }
@@ -200,11 +203,11 @@ sub build_table {
        my ($fname, $name) = @_;
        my $i;
        my $idx;
-       my $idx_array = "const guint16 ${name}_idx [] = {\n";
+       my $idx_array = "const guint16 mono_${name}_idx [] = {\n";
 
        open (OUT, ">$fname") || die "Cannot open file $fname: $!";
        print OUT "/* File automatically generated by genmdesc, don't change */\n\n";
-       print OUT "const char $name [] = {\n";
+       print OUT "const char mono_$name [] = {\n";
        print OUT "\t\"" . ("\\x0" x INST_MAX) . "\"\t/* null entry */\n";
        $idx = 1;
 
index 99092b74e4e889357c38d4bd7854f84e2cc9001d..b48962fd08dcd0a4dce94a2abd0b1d07f0729d22 100644 (file)
@@ -99,6 +99,7 @@ mono_inst_name (int op) {
        g_error ("unknown opcode name for %d", op);
        return NULL;
 #else
+       g_error ("unknown opcode name for %d", op);
        g_assert_not_reached ();
 #endif
 }
index 599c9ef57293119d4eafc0ef5c4a11d68c98ed9b..0a74bfb4ff875eca13a397a825b55ff506582437 100644 (file)
 #define USE_ELF_RELA 1
 #endif
 
-#if defined(TARGET_X86) && !defined(TARGET_WIN32) && !defined(__APPLE__)
+#if defined(TARGET_X86) && !defined(HOST_WIN32) && !defined(__APPLE__)
 #define USE_ELF_WRITER 1
 #endif
 
 #if defined(TARGET_ARM) && !defined(TARGET_MACH) && !defined(HOST_WIN32)
-#define USE_ELF_WRITER 1
+//#define USE_ELF_WRITER 1
 #endif
 
 #if defined(__mips__)
@@ -2001,7 +2001,7 @@ asm_writer_emit_zero_bytes (MonoImageWriter *acfg, int num)
 /* EMIT FUNCTIONS */
 
 void
-img_writer_emit_start (MonoImageWriter *acfg)
+mono_img_writer_emit_start (MonoImageWriter *acfg)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2014,7 +2014,7 @@ img_writer_emit_start (MonoImageWriter *acfg)
 }
 
 void
-img_writer_emit_section_change (MonoImageWriter *acfg, const char *section_name, int subsection_index)
+mono_img_writer_emit_section_change (MonoImageWriter *acfg, const char *section_name, int subsection_index)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2030,26 +2030,26 @@ img_writer_emit_section_change (MonoImageWriter *acfg, const char *section_name,
 }
 
 void
-img_writer_emit_push_section (MonoImageWriter *acfg, const char *section_name, int subsection)
+mono_img_writer_emit_push_section (MonoImageWriter *acfg, const char *section_name, int subsection)
 {
        g_assert (acfg->stack_pos < 16 - 1);
        acfg->section_stack [acfg->stack_pos] = acfg->current_section;
        acfg->subsection_stack [acfg->stack_pos] = acfg->current_subsection;
        acfg->stack_pos ++;
 
-       img_writer_emit_section_change (acfg, section_name, subsection);
+       mono_img_writer_emit_section_change (acfg, section_name, subsection);
 }
 
 void
-img_writer_emit_pop_section (MonoImageWriter *acfg)
+mono_img_writer_emit_pop_section (MonoImageWriter *acfg)
 {
        g_assert (acfg->stack_pos > 0);
        acfg->stack_pos --;
-       img_writer_emit_section_change (acfg, acfg->section_stack [acfg->stack_pos], acfg->subsection_stack [acfg->stack_pos]);
+       mono_img_writer_emit_section_change (acfg, acfg->section_stack [acfg->stack_pos], acfg->subsection_stack [acfg->stack_pos]);
 }
 
 void
-img_writer_set_section_addr (MonoImageWriter *acfg, guint64 addr)
+mono_img_writer_set_section_addr (MonoImageWriter *acfg, guint64 addr)
 {
 #ifdef USE_BIN_WRITER
        if (!acfg->use_bin_writer)
@@ -2062,7 +2062,7 @@ img_writer_set_section_addr (MonoImageWriter *acfg, guint64 addr)
 }
 
 void
-img_writer_emit_global (MonoImageWriter *acfg, const char *name, gboolean func)
+mono_img_writer_emit_global (MonoImageWriter *acfg, const char *name, gboolean func)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2075,7 +2075,7 @@ img_writer_emit_global (MonoImageWriter *acfg, const char *name, gboolean func)
 }
 
 void
-img_writer_emit_local_symbol (MonoImageWriter *acfg, const char *name, const char *end_label, gboolean func)
+mono_img_writer_emit_local_symbol (MonoImageWriter *acfg, const char *name, const char *end_label, gboolean func)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2088,14 +2088,14 @@ img_writer_emit_local_symbol (MonoImageWriter *acfg, const char *name, const cha
 }
 
 void
-img_writer_emit_symbol_size (MonoImageWriter *acfg, const char *name, const char *end_label)
+mono_img_writer_emit_symbol_size (MonoImageWriter *acfg, const char *name, const char *end_label)
 {
        if (!acfg->use_bin_writer)
                asm_writer_emit_symbol_size (acfg, name, end_label);
 }
 
 void
-img_writer_emit_label (MonoImageWriter *acfg, const char *name)
+mono_img_writer_emit_label (MonoImageWriter *acfg, const char *name)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2108,7 +2108,7 @@ img_writer_emit_label (MonoImageWriter *acfg, const char *name)
 }
 
 void
-img_writer_emit_bytes (MonoImageWriter *acfg, const guint8* buf, int size)
+mono_img_writer_emit_bytes (MonoImageWriter *acfg, const guint8* buf, int size)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2121,7 +2121,7 @@ img_writer_emit_bytes (MonoImageWriter *acfg, const guint8* buf, int size)
 }
 
 void
-img_writer_emit_string (MonoImageWriter *acfg, const char *value)
+mono_img_writer_emit_string (MonoImageWriter *acfg, const char *value)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2134,7 +2134,7 @@ img_writer_emit_string (MonoImageWriter *acfg, const char *value)
 }
 
 void
-img_writer_emit_line (MonoImageWriter *acfg)
+mono_img_writer_emit_line (MonoImageWriter *acfg)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2147,7 +2147,7 @@ img_writer_emit_line (MonoImageWriter *acfg)
 }
 
 void
-img_writer_emit_alignment (MonoImageWriter *acfg, int size)
+mono_img_writer_emit_alignment (MonoImageWriter *acfg, int size)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2160,7 +2160,7 @@ img_writer_emit_alignment (MonoImageWriter *acfg, int size)
 }
 
 void
-img_writer_emit_alignment_fill (MonoImageWriter *acfg, int size, int fill)
+mono_img_writer_emit_alignment_fill (MonoImageWriter *acfg, int size, int fill)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2174,7 +2174,7 @@ img_writer_emit_alignment_fill (MonoImageWriter *acfg, int size, int fill)
 
 #ifdef __native_client_codegen__
 void
-img_writer_emit_nacl_call_alignment (MonoImageWriter *acfg) {
+mono_img_writer_emit_nacl_call_alignment (MonoImageWriter *acfg) {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
                bin_writer_emit_nacl_call_alignment (acfg);
@@ -2187,7 +2187,7 @@ img_writer_emit_nacl_call_alignment (MonoImageWriter *acfg) {
 #endif  /* __native_client_codegen__ */
 
 void
-img_writer_emit_pointer_unaligned (MonoImageWriter *acfg, const char *target)
+mono_img_writer_emit_pointer_unaligned (MonoImageWriter *acfg, const char *target)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2200,7 +2200,7 @@ img_writer_emit_pointer_unaligned (MonoImageWriter *acfg, const char *target)
 }
 
 void
-img_writer_emit_pointer (MonoImageWriter *acfg, const char *target)
+mono_img_writer_emit_pointer (MonoImageWriter *acfg, const char *target)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2213,7 +2213,7 @@ img_writer_emit_pointer (MonoImageWriter *acfg, const char *target)
 }
 
 void
-img_writer_emit_int16 (MonoImageWriter *acfg, int value)
+mono_img_writer_emit_int16 (MonoImageWriter *acfg, int value)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2226,7 +2226,7 @@ img_writer_emit_int16 (MonoImageWriter *acfg, int value)
 }
 
 void
-img_writer_emit_int32 (MonoImageWriter *acfg, int value)
+mono_img_writer_emit_int32 (MonoImageWriter *acfg, int value)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2239,7 +2239,7 @@ img_writer_emit_int32 (MonoImageWriter *acfg, int value)
 }
 
 void
-img_writer_emit_symbol_diff (MonoImageWriter *acfg, const char *end, const char* start, int offset)
+mono_img_writer_emit_symbol_diff (MonoImageWriter *acfg, const char *end, const char* start, int offset)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2252,7 +2252,7 @@ img_writer_emit_symbol_diff (MonoImageWriter *acfg, const char *end, const char*
 }
 
 void
-img_writer_emit_zero_bytes (MonoImageWriter *acfg, int num)
+mono_img_writer_emit_zero_bytes (MonoImageWriter *acfg, int num)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2265,7 +2265,7 @@ img_writer_emit_zero_bytes (MonoImageWriter *acfg, int num)
 }
 
 int
-img_writer_emit_writeout (MonoImageWriter *acfg)
+mono_img_writer_emit_writeout (MonoImageWriter *acfg)
 {
 #ifdef USE_BIN_WRITER
        if (acfg->use_bin_writer)
@@ -2278,9 +2278,9 @@ img_writer_emit_writeout (MonoImageWriter *acfg)
 }
 
 void
-img_writer_emit_byte (MonoImageWriter *acfg, guint8 val)
+mono_img_writer_emit_byte (MonoImageWriter *acfg, guint8 val)
 {
-       img_writer_emit_bytes (acfg, &val, 1);
+       mono_img_writer_emit_bytes (acfg, &val, 1);
 }
 
 /* 
@@ -2288,7 +2288,7 @@ img_writer_emit_byte (MonoImageWriter *acfg, guint8 val)
  * Do not advance PC.
  */
 void
-img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol, int addend)
+mono_img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol, int addend)
 {
        /* This is only supported by the bin writer */
 #ifdef USE_BIN_WRITER
@@ -2302,26 +2302,26 @@ img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol
 }
 
 /*
- * img_writer_emit_unset_mode:
+ * mono_img_writer_emit_unset_mode:
  *
  *   Flush buffered data so it is safe to write to the output file from outside this
  * module. This is a nop for the binary writer.
  */
 void
-img_writer_emit_unset_mode (MonoImageWriter *acfg)
+mono_img_writer_emit_unset_mode (MonoImageWriter *acfg)
 {
        if (!acfg->use_bin_writer)
                asm_writer_emit_unset_mode (acfg);
 }
 
 /*
- * img_writer_get_output:
+ * mono_img_writer_get_output:
  *
  *   Return the output buffer of a binary writer emitting to memory. The returned memory
  * is from malloc, and it is owned by the caller.
  */
 guint8*
-img_writer_get_output (MonoImageWriter *acfg, guint32 *size)
+mono_img_writer_get_output (MonoImageWriter *acfg, guint32 *size)
 {
 #ifdef USE_BIN_WRITER
        guint8 *buf;
@@ -2342,7 +2342,7 @@ img_writer_get_output (MonoImageWriter *acfg, guint32 *size)
  * Return whenever the binary writer is supported on this platform.
  */
 gboolean
-bin_writer_supported (void)
+mono_bin_writer_supported (void)
 {
 #ifdef USE_BIN_WRITER
        return TRUE;
@@ -2352,14 +2352,14 @@ bin_writer_supported (void)
 }
 
 /*
- * img_writer_create:
+ * mono_img_writer_create:
  *
  *   Create an image writer writing to FP. If USE_BIN_WRITER is TRUE, FP can be NULL,
  * in this case the image writer will write to a memory buffer obtainable by calling
- * img_writer_get_output ().
+ * mono_img_writer_get_output ().
  */
 MonoImageWriter*
-img_writer_create (FILE *fp, gboolean use_bin_writer)
+mono_img_writer_create (FILE *fp, gboolean use_bin_writer)
 {
        MonoImageWriter *w = g_new0 (MonoImageWriter, 1);
        
@@ -2378,7 +2378,7 @@ img_writer_create (FILE *fp, gboolean use_bin_writer)
 }
 
 void
-img_writer_destroy (MonoImageWriter *w)
+mono_img_writer_destroy (MonoImageWriter *w)
 {
        // FIXME: Free all the stuff
        mono_mempool_destroy (w->mempool);
@@ -2386,7 +2386,7 @@ img_writer_destroy (MonoImageWriter *w)
 }
 
 gboolean
-img_writer_subsections_supported (MonoImageWriter *acfg)
+mono_img_writer_subsections_supported (MonoImageWriter *acfg)
 {
 #ifdef TARGET_ASM_APPLE
        return acfg->use_bin_writer;
@@ -2396,13 +2396,13 @@ img_writer_subsections_supported (MonoImageWriter *acfg)
 }
 
 FILE *
-img_writer_get_fp (MonoImageWriter *acfg)
+mono_img_writer_get_fp (MonoImageWriter *acfg)
 {
        return acfg->fp;
 }
 
 const char *
-img_writer_get_temp_label_prefix (MonoImageWriter *acfg)
+mono_img_writer_get_temp_label_prefix (MonoImageWriter *acfg)
 {
        return AS_TEMP_LABEL_PREFIX;
 }
index dc9160c4144c198b018b71ec94b48383b11f7473..2af57cbe105d3e93fd8876e59a47fbdf16840694 100644 (file)
@@ -26,72 +26,72 @@ typedef struct _MonoImageWriter MonoImageWriter;
 #define R_ARM_JUMP24 29
 #define R_ARM_ALU_PC_G0_NC 59
 
-gboolean bin_writer_supported (void);
+gboolean mono_bin_writer_supported (void);
 
-MonoImageWriter* img_writer_create (FILE *fp, gboolean use_bin_writer);
+MonoImageWriter* mono_img_writer_create (FILE *fp, gboolean use_bin_writer);
 
-void img_writer_destroy (MonoImageWriter *w);
+void mono_img_writer_destroy (MonoImageWriter *w);
 
-void img_writer_emit_start (MonoImageWriter *w);
+void mono_img_writer_emit_start (MonoImageWriter *w);
 
-int img_writer_emit_writeout (MonoImageWriter *w);
+int mono_img_writer_emit_writeout (MonoImageWriter *w);
 
-guint8* img_writer_get_output (MonoImageWriter *acfg, guint32 *size);
+guint8* mono_img_writer_get_output (MonoImageWriter *acfg, guint32 *size);
 
-void img_writer_emit_section_change (MonoImageWriter *w, const char *section_name, int subsection_index);
+void mono_img_writer_emit_section_change (MonoImageWriter *w, const char *section_name, int subsection_index);
 
-void img_writer_emit_push_section (MonoImageWriter *w, const char *section_name, int subsection);
+void mono_img_writer_emit_push_section (MonoImageWriter *w, const char *section_name, int subsection);
 
-void img_writer_emit_pop_section (MonoImageWriter *w);
+void mono_img_writer_emit_pop_section (MonoImageWriter *w);
 
-void img_writer_set_section_addr (MonoImageWriter *acfg, guint64 addr);
+void mono_img_writer_set_section_addr (MonoImageWriter *acfg, guint64 addr);
 
-void img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func);
+void mono_img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func);
 
-void img_writer_emit_local_symbol (MonoImageWriter *w, const char *name, const char *end_label, gboolean func);
+void mono_img_writer_emit_local_symbol (MonoImageWriter *w, const char *name, const char *end_label, gboolean func);
 
-void img_writer_emit_symbol_size (MonoImageWriter *w, const char *start, const char *end_label);
+void mono_img_writer_emit_symbol_size (MonoImageWriter *w, const char *start, const char *end_label);
 
-void img_writer_emit_label (MonoImageWriter *w, const char *name);
+void mono_img_writer_emit_label (MonoImageWriter *w, const char *name);
 
-void img_writer_emit_bytes (MonoImageWriter *w, const guint8* buf, int size);
+void mono_img_writer_emit_bytes (MonoImageWriter *w, const guint8* buf, int size);
 
-void img_writer_emit_string (MonoImageWriter *w, const char *value);
+void mono_img_writer_emit_string (MonoImageWriter *w, const char *value);
 
-void img_writer_emit_line (MonoImageWriter *w);
+void mono_img_writer_emit_line (MonoImageWriter *w);
 
-void img_writer_emit_alignment (MonoImageWriter *w, int size);
+void mono_img_writer_emit_alignment (MonoImageWriter *w, int size);
 
-void img_writer_emit_alignment_fill (MonoImageWriter *w, int size, int fill);
+void mono_img_writer_emit_alignment_fill (MonoImageWriter *w, int size, int fill);
 
 #ifdef __native_client_codegen__
-void img_writer_emit_nacl_call_alignment (MonoImageWriter *w);
+void mono_img_writer_emit_nacl_call_alignment (MonoImageWriter *w);
 #endif
 
-void img_writer_emit_pointer_unaligned (MonoImageWriter *w, const char *target);
+void mono_img_writer_emit_pointer_unaligned (MonoImageWriter *w, const char *target);
 
-void img_writer_emit_pointer (MonoImageWriter *w, const char *target);
+void mono_img_writer_emit_pointer (MonoImageWriter *w, const char *target);
 
-void img_writer_emit_int16 (MonoImageWriter *w, int value);
+void mono_img_writer_emit_int16 (MonoImageWriter *w, int value);
 
-void img_writer_emit_int32 (MonoImageWriter *w, int value);
+void mono_img_writer_emit_int32 (MonoImageWriter *w, int value);
 
-void img_writer_emit_symbol_diff (MonoImageWriter *w, const char *end, const char* start, int offset);
+void mono_img_writer_emit_symbol_diff (MonoImageWriter *w, const char *end, const char* start, int offset);
 
-void img_writer_emit_zero_bytes (MonoImageWriter *w, int num);
+void mono_img_writer_emit_zero_bytes (MonoImageWriter *w, int num);
 
-void img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func);
+void mono_img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func);
 
-void img_writer_emit_byte (MonoImageWriter *w, guint8 val);
+void mono_img_writer_emit_byte (MonoImageWriter *w, guint8 val);
 
-void img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol, int addend);
+void mono_img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol, int addend);
 
-void img_writer_emit_unset_mode (MonoImageWriter *acfg);
+void mono_img_writer_emit_unset_mode (MonoImageWriter *acfg);
 
-gboolean img_writer_subsections_supported (MonoImageWriter *acfg);
+gboolean mono_img_writer_subsections_supported (MonoImageWriter *acfg);
 
-FILE * img_writer_get_fp (MonoImageWriter *acfg);
+FILE * mono_img_writer_get_fp (MonoImageWriter *acfg);
 
-const char *img_writer_get_temp_label_prefix (MonoImageWriter *acfg);
+const char *mono_img_writer_get_temp_label_prefix (MonoImageWriter *acfg);
 
 #endif
index 67d073448d3fbdf9b440e87c663538ce8a7d9e7f..fe05ecca2d36a5569abfd30b622b71bf3868d86b 100644 (file)
@@ -408,7 +408,7 @@ handle_gsharedvt_ldaddr (MonoCompile *cfg)
        } while (0)
 
 #define NEW_SEQ_POINT(cfg,dest,il_offset,intr_loc) do {         \
-       MONO_INST_NEW ((cfg), (dest), cfg->gen_seq_points_debug_data ? OP_SEQ_POINT : OP_IL_SEQ_POINT); \
+       MONO_INST_NEW ((cfg), (dest), cfg->gen_sdb_seq_points ? OP_SEQ_POINT : OP_IL_SEQ_POINT); \
        (dest)->inst_imm = (il_offset); \
        (dest)->flags = intr_loc ? MONO_INST_SINGLE_STEP_LOC : 0; \
        } while (0)
index 85b6ba04001d48715d8385c4b0eb0d7d504e253a..a3bd43d3a41acf4e20506addc84669f6561aa5a3 100644 (file)
@@ -812,7 +812,7 @@ update_liveness2 (MonoCompile *cfg, MonoInst *ins, gboolean set_volatile, int in
                        }
                        else {
                                /* Try dead code elimination */
-                               if ((var != cfg->ret) && !(var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && ((ins->opcode == OP_ICONST) || (ins->opcode == OP_I8CONST) || (ins->opcode == OP_R8CONST)) && !(var->flags & MONO_INST_VOLATILE)) {
+                               if (!cfg->disable_deadce_vars && (var != cfg->ret) && !(var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && ((ins->opcode == OP_ICONST) || (ins->opcode == OP_I8CONST) || (ins->opcode == OP_R8CONST)) && !(var->flags & MONO_INST_VOLATILE)) {
                                        LIVENESS_DEBUG (printf ("\tdead def of R%d, eliminated\n", ins->dreg));
                                        NULLIFY_INS (ins);
                                        return;
old mode 100755 (executable)
new mode 100644 (file)
index 89c2419..1cd5757
@@ -49,6 +49,7 @@
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/mono-debug.h>
+#include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/security-manager.h>
 #include <mono/metadata/threads-types.h>
@@ -407,7 +408,7 @@ static MONO_NEVER_INLINE void
 gshared_failure (MonoCompile *cfg, int opcode, const char *file, int line)
 {
        if (cfg->verbose_level > 2)                                                                                     \
-               printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", cfg->current_method->klass->name_space, cfg->current_method->klass->name, cfg->current_method->name, cfg->current_method->signature->param_count, mono_opcode_name ((opcode)), __LINE__);
+               printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", cfg->current_method->klass->name_space, cfg->current_method->klass->name, cfg->current_method->name, cfg->current_method->signature->param_count, mono_opcode_name ((opcode)), line);
        mono_cfg_set_exception (cfg, MONO_EXCEPTION_GENERIC_SHARING_FAILED);
 }
 
@@ -1543,25 +1544,6 @@ handle_stack_args (MonoCompile *cfg, MonoInst **sp, int count)
        }
 }
 
-/* Emit code which loads interface_offsets [klass->interface_id]
- * The array is stored in memory before vtable.
-*/
-static void
-mini_emit_load_intf_reg_vtable (MonoCompile *cfg, int intf_reg, int vtable_reg, MonoClass *klass)
-{
-       if (cfg->compile_aot) {
-               int ioffset_reg = alloc_preg (cfg);
-               int iid_reg = alloc_preg (cfg);
-
-               MONO_EMIT_NEW_AOTCONST (cfg, iid_reg, klass, MONO_PATCH_INFO_ADJUSTED_IID);
-               MONO_EMIT_NEW_BIALU (cfg, OP_PADD, ioffset_reg, iid_reg, vtable_reg);
-               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, intf_reg, ioffset_reg, 0);
-       }
-       else {
-               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, intf_reg, vtable_reg, -((klass->interface_id + 1) * SIZEOF_VOID_P));
-       }
-}
-
 static void
 mini_emit_interface_bitmap_check (MonoCompile *cfg, int intf_bit_reg, int base_reg, int offset, MonoClass *klass)
 {
@@ -2286,7 +2268,8 @@ target_type_is_incompatible (MonoCompile *cfg, MonoType *target, MonoInst *arg)
                        if (arg->type != STACK_VTYPE)
                                return 1;
                        klass = mono_class_from_mono_type (simple_type);
-                       if (klass != arg->klass)
+                       /* The second cases is needed when doing partial sharing */
+                       if (klass != arg->klass && mono_class_from_mono_type (target) != arg->klass)
                                return 1;
                        return 0;
                } else {
@@ -2457,16 +2440,10 @@ emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoMethod *method, Mon
 #ifdef ENABLE_LLVM
                call->imt_arg_reg = method_reg;
 #endif
-#ifdef MONO_ARCH_IMT_REG
        mono_call_inst_add_outarg_reg (cfg, call, method_reg, MONO_ARCH_IMT_REG, FALSE);
-#else
-       /* Need this to keep the IMT arg alive */
-       mono_call_inst_add_outarg_reg (cfg, call, method_reg, 0, FALSE);
-#endif
                return;
        }
 
-#ifdef MONO_ARCH_IMT_REG
        method_reg = alloc_preg (cfg);
 
        if (imt_arg) {
@@ -2482,9 +2459,6 @@ emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoMethod *method, Mon
        }
 
        mono_call_inst_add_outarg_reg (cfg, call, method_reg, MONO_ARCH_IMT_REG, FALSE);
-#else
-       mono_arch_emit_imt_argument (cfg, call, imt_arg);
-#endif
 }
 
 static MonoJumpInfo *
@@ -2898,18 +2872,10 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                        vtable_reg = alloc_preg (cfg);
                        MONO_EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, vtable_reg, this_reg, MONO_STRUCT_OFFSET (MonoObject, vtable));
                        if (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
-                               slot_reg = -1;
-                               if (mono_use_imt) {
-                                       guint32 imt_slot = mono_method_get_imt_slot (method);
-                                       emit_imt_argument (cfg, call, call->method, imt_arg);
-                                       slot_reg = vtable_reg;
-                                       offset = ((gint32)imt_slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
-                               }
-                               if (slot_reg == -1) {
-                                       slot_reg = alloc_preg (cfg);
-                                       mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, method->klass);
-                                       offset = mono_method_get_vtable_index (method) * SIZEOF_VOID_P;
-                               }
+                               guint32 imt_slot = mono_method_get_imt_slot (method);
+                               emit_imt_argument (cfg, call, call->method, imt_arg);
+                               slot_reg = vtable_reg;
+                               offset = ((gint32)imt_slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
                        } else {
                                slot_reg = vtable_reg;
                                offset = MONO_STRUCT_OFFSET (MonoVTable, vtable) +
@@ -2998,7 +2964,7 @@ direct_icalls_enabled (MonoCompile *cfg)
        if (cfg->compile_llvm)
                return FALSE;
 #endif
-       if (cfg->gen_seq_points_debug_data || cfg->disable_direct_icalls)
+       if (cfg->gen_sdb_seq_points || cfg->disable_direct_icalls)
                return FALSE;
        return TRUE;
 }
@@ -3514,6 +3480,28 @@ emit_get_rgctx_gsharedvt_call (MonoCompile *cfg, int context_used,
        return emit_rgctx_fetch (cfg, rgctx, entry);
 }
 
+/*
+ * emit_get_rgctx_virt_method:
+ *
+ *   Return data for method VIRT_METHOD for a receiver of type KLASS.
+ */
+static MonoInst*
+emit_get_rgctx_virt_method (MonoCompile *cfg, int context_used,
+                                                       MonoClass *klass, MonoMethod *virt_method, MonoRgctxInfoType rgctx_type)
+{
+       MonoJumpInfoVirtMethod *info;
+       MonoJumpInfoRgctxEntry *entry;
+       MonoInst *rgctx;
+
+       info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoJumpInfoVirtMethod));
+       info->klass = klass;
+       info->method = virt_method;
+
+       entry = mono_patch_info_rgctx_entry_new (cfg->mempool, cfg->current_method, context_used & MONO_GENERIC_CONTEXT_USED_METHOD, MONO_PATCH_INFO_VIRT_METHOD, info, rgctx_type);
+       rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
+
+       return emit_rgctx_fetch (cfg, rgctx, entry);
+}
 
 static MonoInst*
 emit_get_rgctx_gsharedvt_method (MonoCompile *cfg, int context_used,
@@ -3658,12 +3646,8 @@ emit_generic_class_init (MonoCompile *cfg, MonoClass *klass)
                call = (MonoCallInst*)mono_emit_abs_call (cfg, MONO_PATCH_INFO_GENERIC_CLASS_INIT, NULL, helper_sig_generic_class_init_trampoline_llvm, &vtable_arg);
        else
                call = (MonoCallInst*)mono_emit_abs_call (cfg, MONO_PATCH_INFO_GENERIC_CLASS_INIT, NULL, helper_sig_generic_class_init_trampoline, &vtable_arg);
-#ifdef MONO_ARCH_VTABLE_REG
        mono_call_inst_add_outarg_reg (cfg, call, vtable_arg->dreg, MONO_ARCH_VTABLE_REG, FALSE);
        cfg->uses_vtable_reg = TRUE;
-#else
-       NOT_IMPLEMENTED;
-#endif
 }
 
 static void
@@ -4802,10 +4786,6 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        MonoInst *obj, *method_ins, *tramp_ins;
        MonoDomain *domain;
        guint8 **code_slot;
-       
-       // FIXME reenable optimisation for virtual case
-       if (virtual)
-               return NULL;
 
        if (virtual) {
                MonoMethod *invoke = mono_get_delegate_invoke (klass);
@@ -5146,13 +5126,6 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
                        return FALSE;
        }
 
-       /*
-        * CAS - do not inline methods with declarative security
-        * Note: this has to be before any possible return TRUE;
-        */
-       if (mono_security_method_has_declsec (method))
-               return FALSE;
-
 #ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        if (mono_arch_is_soft_float ()) {
                /* FIXME: */
@@ -5675,14 +5648,14 @@ static MonoInst*
 mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args)
 {
        MonoInst *ins = NULL;
-       
+
        static MonoClass *runtime_helpers_class = NULL;
        if (! runtime_helpers_class)
                runtime_helpers_class = mono_class_from_name (mono_defaults.corlib,
                        "System.Runtime.CompilerServices", "RuntimeHelpers");
 
        if (cmethod->klass == mono_defaults.string_class) {
-               if (strcmp (cmethod->name, "get_Chars") == 0 && fsig->param_count == 2) {
+               if (strcmp (cmethod->name, "get_Chars") == 0 && fsig->param_count + fsig->hasthis == 2) {
                        int dreg = alloc_ireg (cfg);
                        int index_reg = alloc_preg (cfg);
                        int add_reg = alloc_preg (cfg);
@@ -5709,7 +5682,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
 #endif
                        type_from_op (cfg, ins, NULL, NULL);
                        return ins;
-               } else if (strcmp (cmethod->name, "get_Length") == 0 && fsig->param_count == 1) {
+               } else if (strcmp (cmethod->name, "get_Length") == 0 && fsig->param_count + fsig->hasthis == 1) {
                        int dreg = alloc_ireg (cfg);
                        /* Decompose later to allow more optimizations */
                        EMIT_NEW_UNALU (cfg, ins, OP_STRLEN, dreg, args [0]->dreg);
@@ -5719,20 +5692,11 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        cfg->flags |= MONO_CFG_HAS_ARRAY_ACCESS;
 
                        return ins;
-               } else if (strcmp (cmethod->name, "InternalSetChar") == 0 && fsig->param_count == 3) {
-                       int mult_reg = alloc_preg (cfg);
-                       int add_reg = alloc_preg (cfg);
-
-                       /* The corlib functions check for oob already. */
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHL_IMM, mult_reg, args [1]->dreg, 1);
-                       MONO_EMIT_NEW_BIALU (cfg, OP_PADD, add_reg, mult_reg, args [0]->dreg);
-                       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI2_MEMBASE_REG, add_reg, MONO_STRUCT_OFFSET (MonoString, chars), args [2]->dreg);
-                       return cfg->cbb->last_ins;
                } else 
                        return NULL;
        } else if (cmethod->klass == mono_defaults.object_class) {
 
-               if (strcmp (cmethod->name, "GetType") == 0 && fsig->param_count == 1) {
+               if (strcmp (cmethod->name, "GetType") == 0 && fsig->param_count + fsig->hasthis == 1) {
                        int dreg = alloc_ireg_ref (cfg);
                        int vt_reg = alloc_preg (cfg);
                        MONO_EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, vt_reg, args [0]->dreg, MONO_STRUCT_OFFSET (MonoObject, vtable));
@@ -5758,9 +5722,9 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                } else
                        return NULL;
        } else if (cmethod->klass == mono_defaults.array_class) {
-               if (strcmp (cmethod->name, "GetGenericValueImpl") == 0 && fsig->param_count == 3 && !cfg->gsharedvt)
+               if (strcmp (cmethod->name, "GetGenericValueImpl") == 0 && fsig->param_count + fsig->hasthis == 3 && !cfg->gsharedvt)
                        return emit_array_generic_access (cfg, fsig, args, FALSE);
-               else if (strcmp (cmethod->name, "SetGenericValueImpl") == 0 && fsig->param_count == 3 && !cfg->gsharedvt)
+               else if (strcmp (cmethod->name, "SetGenericValueImpl") == 0 && fsig->param_count + fsig->hasthis == 3 && !cfg->gsharedvt)
                        return emit_array_generic_access (cfg, fsig, args, TRUE);
 
 #ifndef MONO_BIG_ARRAYS
@@ -5768,8 +5732,8 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                 * This is an inline version of GetLength/GetLowerBound(0) used frequently in
                 * Array methods.
                 */
-               else if (((strcmp (cmethod->name, "GetLength") == 0 && fsig->param_count == 2) ||
-                        (strcmp (cmethod->name, "GetLowerBound") == 0 && fsig->param_count == 2)) &&
+               else if (((strcmp (cmethod->name, "GetLength") == 0 && fsig->param_count + fsig->hasthis == 2) ||
+                        (strcmp (cmethod->name, "GetLowerBound") == 0 && fsig->param_count + fsig->hasthis == 2)) &&
                         args [1]->opcode == OP_ICONST && args [1]->inst_c0 == 0) {
                        int dreg = alloc_ireg (cfg);
                        int bounds_reg = alloc_ireg_mp (cfg);
@@ -5810,7 +5774,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                if (cmethod->name [0] != 'g')
                        return NULL;
 
-               if (strcmp (cmethod->name, "get_Rank") == 0 && fsig->param_count == 1) {
+               if (strcmp (cmethod->name, "get_Rank") == 0 && fsig->param_count + fsig->hasthis == 1) {
                        int dreg = alloc_ireg (cfg);
                        int vtable_reg = alloc_preg (cfg);
                        MONO_EMIT_NEW_LOAD_MEMBASE_OP_FAULT (cfg, OP_LOAD_MEMBASE, vtable_reg, 
@@ -5820,7 +5784,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        type_from_op (cfg, ins, NULL, NULL);
 
                        return ins;
-               } else if (strcmp (cmethod->name, "get_Length") == 0 && fsig->param_count == 1) {
+               } else if (strcmp (cmethod->name, "get_Length") == 0 && fsig->param_count + fsig->hasthis == 1) {
                        int dreg = alloc_ireg (cfg);
 
                        EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, ins, OP_LOADI4_MEMBASE, dreg, 
@@ -6508,12 +6472,16 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                 * all inputs:
                 * http://everything2.com/?node_id=1051618
                 */
-       } else if ((!strcmp (cmethod->klass->image->assembly->aname.name, "MonoMac") ||
+       } else if (((!strcmp (cmethod->klass->image->assembly->aname.name, "MonoMac") ||
                    !strcmp (cmethod->klass->image->assembly->aname.name, "monotouch")) &&
-                  !strcmp (cmethod->klass->name_space, "XamCore.ObjCRuntime") &&
-                  !strcmp (cmethod->klass->name, "Selector")) {
+                               !strcmp (cmethod->klass->name_space, "XamCore.ObjCRuntime") &&
+                               !strcmp (cmethod->klass->name, "Selector")) ||
+                          (!strcmp (cmethod->klass->image->assembly->aname.name, "Xamarin.iOS") &&
+                               !strcmp (cmethod->klass->name_space, "ObjCRuntime") &&
+                               !strcmp (cmethod->klass->name, "Selector"))
+                          ) {
 #ifdef MONO_ARCH_HAVE_OBJC_GET_SELECTOR
-               if (!strcmp (cmethod->klass->name, "GetHandle") && fsig->param_count == 1 &&
+               if (!strcmp (cmethod->name, "GetHandle") && fsig->param_count == 1 &&
                    (args [0]->opcode == OP_GOT_ENTRY || args [0]->opcode == OP_AOTCONST) &&
                    cfg->compile_aot) {
                        MonoInst *pi;
@@ -7184,41 +7152,6 @@ mini_get_signature (MonoMethod *method, guint32 token, MonoGenericContext *conte
        return fsig;
 }
 
-/*
- * Returns TRUE if the JIT should abort inlining because "callee"
- * is influenced by security attributes.
- */
-static
-gboolean check_linkdemand (MonoCompile *cfg, MonoMethod *caller, MonoMethod *callee)
-{
-       guint32 result;
-       
-       if ((cfg->method != caller) && mono_security_method_has_declsec (callee)) {
-               return TRUE;
-       }
-       
-       result = mono_declsec_linkdemand (cfg->domain, caller, callee);
-       if (result == MONO_JIT_SECURITY_OK)
-               return FALSE;
-
-       if (result == MONO_JIT_LINKDEMAND_ECMA) {
-               /* Generate code to throw a SecurityException before the actual call/link */
-               MonoSecurityManager *secman = mono_security_manager_get_methods ();
-               MonoInst *args [2];
-
-               NEW_ICONST (cfg, args [0], 4);
-               NEW_METHODCONST (cfg, args [1], caller);
-               mono_emit_method_call (cfg, secman->linkdemandsecurityexception, args, NULL);
-       } else if (cfg->exception_type == MONO_EXCEPTION_NONE) {
-                /* don't hide previous results */
-               mono_cfg_set_exception (cfg, MONO_EXCEPTION_SECURITY_LINKDEMAND);
-               cfg->exception_data = result;
-               return TRUE;
-       }
-       
-       return FALSE;
-}
-
 static MonoMethod*
 throw_exception (void)
 {
@@ -7577,20 +7510,18 @@ emit_managed_static_data_access (MonoCompile *cfg, MonoInst *thread_ins, int off
        MonoInst *addr;
        int static_data_reg, array_reg, dreg;
        int offset2_reg, idx_reg;
-       // inlined access to the tls data
-       // idx = (offset >> 24) - 1;
-       // return ((char*) thread->static_data [idx]) + (offset & 0xffffff);
+       // inlined access to the tls data (see threads.c)
        static_data_reg = alloc_ireg (cfg);
        MONO_EMIT_NEW_LOAD_MEMBASE (cfg, static_data_reg, thread_ins->dreg, MONO_STRUCT_OFFSET (MonoInternalThread, static_data));
        idx_reg = alloc_ireg (cfg);
-       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, idx_reg, offset_reg, 24);
-       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISUB_IMM, idx_reg, idx_reg, 1);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, idx_reg, offset_reg, 0x3f);
        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHL_IMM, idx_reg, idx_reg, sizeof (gpointer) == 8 ? 3 : 2);
        MONO_EMIT_NEW_BIALU (cfg, OP_PADD, static_data_reg, static_data_reg, idx_reg);
        array_reg = alloc_ireg (cfg);
        MONO_EMIT_NEW_LOAD_MEMBASE (cfg, array_reg, static_data_reg, 0);
        offset2_reg = alloc_ireg (cfg);
-       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, offset2_reg, offset_reg, 0xffffff);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, offset2_reg, offset_reg, 6);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, offset2_reg, offset2_reg, 0x1ffffff);
        dreg = alloc_ireg (cfg);
        EMIT_NEW_BIALU (cfg, addr, OP_PADD, dreg, array_reg, offset2_reg);
        return addr;
@@ -7745,9 +7676,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        int num_calls = 0, inline_costs = 0;
        int breakpoint_id = 0;
        guint num_args;
-       MonoBoolean security, pinvoke;
-       MonoSecurityManager* secman = NULL;
-       MonoDeclSecurityActions actions;
        GSList *class_inits = NULL;
        gboolean dont_verify, dont_verify_stloc, readonly = FALSE;
        int context_used;
@@ -7768,8 +7696,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        dont_verify |= method->wrapper_type == MONO_WRAPPER_COMINTEROP;
        dont_verify |= method->wrapper_type == MONO_WRAPPER_COMINTEROP_INVOKE;
 
-       dont_verify |= mono_security_smcs_hack_enabled ();
-
        /* still some type unsafety issues in marshal wrappers... (unknown is PtrToStructure) */
        dont_verify_stloc = method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE;
        dont_verify_stloc |= method->wrapper_type == MONO_WRAPPER_UNKNOWN;
@@ -7798,32 +7724,27 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        cfg->stat_cil_code_size += header->code_size;
 
        seq_points = cfg->gen_seq_points && cfg->method == method;
-#ifdef PLATFORM_ANDROID
-       seq_points &= cfg->method->wrapper_type == MONO_WRAPPER_NONE;
-#endif
 
        if (method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) {
                /* We could hit a seq point before attaching to the JIT (#8338) */
                seq_points = FALSE;
        }
 
-       if (cfg->gen_seq_points_debug_data && cfg->method == method) {
+       if (cfg->gen_sdb_seq_points && cfg->method == method) {
                minfo = mono_debug_lookup_method (method);
                if (minfo) {
+                       MonoSymSeqPoint *sps;
                        int i, n_il_offsets;
-                       int *il_offsets;
-                       int *line_numbers;
 
-                       mono_debug_symfile_get_line_numbers_full (minfo, NULL, NULL, &n_il_offsets, &il_offsets, &line_numbers, NULL, NULL, NULL, NULL);
+                       mono_debug_get_seq_points (minfo, NULL, NULL, NULL, &sps, &n_il_offsets);
                        seq_point_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
                        seq_point_set_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
                        sym_seq_points = TRUE;
                        for (i = 0; i < n_il_offsets; ++i) {
-                               if (il_offsets [i] < header->code_size)
-                                       mono_bitset_set_fast (seq_point_locs, il_offsets [i]);
+                               if (sps [i].il_offset < header->code_size)
+                                       mono_bitset_set_fast (seq_point_locs, sps [i].il_offset);
                        }
-                       g_free (il_offsets);
-                       g_free (line_numbers);
+                       g_free (sps);
                } else if (!method->wrapper_type && !method->dynamic && mono_debug_image_has_debug_info (method->klass->image)) {
                        /* Methods without line number info like auto-generated property accessors */
                        seq_point_locs = mono_bitset_mem_new (mono_mempool_alloc0 (cfg->mempool, mono_bitset_alloc_size (header->code_size, 0)), header->code_size, 0);
@@ -7903,11 +7824,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                cfg->bb_entry = start_bblock;
                start_bblock->cil_code = NULL;
                start_bblock->cil_length = 0;
-#if defined(__native_client_codegen__)
-               MONO_INST_NEW (cfg, ins, OP_NACL_GC_SAFE_POINT);
-               ins->dreg = alloc_dreg (cfg, STACK_I4);
-               MONO_ADD_INS (start_bblock, ins);
-#endif
 
                /* EXIT BLOCK */
                NEW_BBLOCK (cfg, end_bblock);
@@ -7962,7 +7878,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        tblock->flags |= BB_EXCEPTION_UNSAFE;
                        }
 
-
                        /*printf ("clause try IL_%04x to IL_%04x handler %d at IL_%04x to IL_%04x\n", clause->try_offset, clause->try_offset + clause->try_len, clause->flags, clause->handler_offset, clause->handler_offset + clause->handler_len);
                          while (p < end) {
                          printf ("%s", mono_disasm_code_one (NULL, method, p, &p));
@@ -7970,7 +7885,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* catch and filter blocks get the exception object on the stack */
                        if (clause->flags == MONO_EXCEPTION_CLAUSE_NONE ||
                            clause->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
-                               MonoInst *dummy_use;
 
                                /* mostly like handle_stack_args (), but just sets the input args */
                                /* printf ("handling clause at IL_%04x\n", clause->handler_offset); */
@@ -7978,12 +7892,24 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                tblock->in_stack = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*));
                                tblock->in_stack [0] = mono_create_exvar_for_offset (cfg, clause->handler_offset);
 
+                               cfg->cbb = tblock;
+
+#ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
+                               /* The EH code passes in the exception in a register to both JITted and LLVM compiled code */
+                               if (!cfg->compile_llvm) {
+                                       MONO_INST_NEW (cfg, ins, OP_GET_EX_OBJ);
+                                       ins->dreg = tblock->in_stack [0]->dreg;
+                                       MONO_ADD_INS (tblock, ins);
+                               }
+#else
+                               MonoInst *dummy_use;
+
                                /* 
                                 * Add a dummy use for the exvar so its liveness info will be
                                 * correct.
                                 */
-                               cfg->cbb = tblock;
                                EMIT_NEW_DUMMY_USE (cfg, dummy_use, tblock->in_stack [0]);
+#endif
                                
                                if (clause->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
                                        GET_BBLOCK (cfg, tblock, ip + clause->data.filter_offset);
@@ -8047,46 +7973,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                }
        }
 
-       if (mono_security_cas_enabled ())
-               secman = mono_security_manager_get_methods ();
-
-       security = (secman && mono_security_method_has_declsec (method));
-       /* at this point having security doesn't mean we have any code to generate */
-       if (security && (cfg->method == method)) {
-               /* Only Demand, NonCasDemand and DemandChoice requires code generation.
-                * And we do not want to enter the next section (with allocation) if we
-                * have nothing to generate */
-               security = mono_declsec_get_demands (method, &actions);
-       }
-
-       /* we must Demand SecurityPermission.Unmanaged before P/Invoking */
-       pinvoke = (secman && (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE));
-       if (pinvoke) {
-               MonoMethod *wrapped = mono_marshal_method_from_wrapper (method);
-               if (wrapped && (wrapped->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)) {
-                       MonoCustomAttrInfo* custom = mono_custom_attrs_from_method (wrapped);
-
-                       /* unless the method or it's class has the [SuppressUnmanagedCodeSecurity] attribute */
-                       if (custom && mono_custom_attrs_has_attr (custom, secman->suppressunmanagedcodesecurity)) {
-                               pinvoke = FALSE;
-                       }
-                       if (custom)
-                               mono_custom_attrs_free (custom);
-
-                       if (pinvoke) {
-                               custom = mono_custom_attrs_from_class (wrapped->klass);
-                               if (custom && mono_custom_attrs_has_attr (custom, secman->suppressunmanagedcodesecurity)) {
-                                       pinvoke = FALSE;
-                               }
-                               if (custom)
-                                       mono_custom_attrs_free (custom);
-                       }
-               } else {
-                       /* not a P/Invoke after all */
-                       pinvoke = FALSE;
-               }
-       }
-       
        /* we use a separate basic block for the initialization code */
        NEW_BBLOCK (cfg, init_localsbb);
        cfg->bb_init = init_localsbb;
@@ -8139,41 +8025,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                */
        }
 
-       /* at this point we know, if security is TRUE, that some code needs to be generated */
-       if (security && (cfg->method == method)) {
-               MonoInst *args [2];
-
-               cfg->stat_cas_demand_generation++;
-
-               if (actions.demand.blob) {
-                       /* Add code for SecurityAction.Demand */
-                       EMIT_NEW_DECLSECCONST (cfg, args[0], image, actions.demand);
-                       EMIT_NEW_ICONST (cfg, args [1], actions.demand.size);
-                       /* Calls static void SecurityManager.InternalDemand (byte* permissions, int size); */
-                       mono_emit_method_call (cfg, secman->demand, args, NULL);
-               }
-               if (actions.noncasdemand.blob) {
-                       /* CLR 1.x uses a .noncasdemand (but 2.x doesn't) */
-                       /* For Mono we re-route non-CAS Demand to Demand (as the managed code must deal with it anyway) */
-                       EMIT_NEW_DECLSECCONST (cfg, args[0], image, actions.noncasdemand);
-                       EMIT_NEW_ICONST (cfg, args [1], actions.noncasdemand.size);
-                       /* Calls static void SecurityManager.InternalDemand (byte* permissions, int size); */
-                       mono_emit_method_call (cfg, secman->demand, args, NULL);
-               }
-               if (actions.demandchoice.blob) {
-                       /* New in 2.0, Demand must succeed for one of the permissions (i.e. not all) */
-                       EMIT_NEW_DECLSECCONST (cfg, args[0], image, actions.demandchoice);
-                       EMIT_NEW_ICONST (cfg, args [1], actions.demandchoice.size);
-                       /* Calls static void SecurityManager.InternalDemandChoice (byte* permissions, int size); */
-                       mono_emit_method_call (cfg, secman->demandchoice, args, NULL);
-               }
-       }
-
-       /* we must Demand SecurityPermission.Unmanaged before p/invoking */
-       if (pinvoke) {
-               mono_emit_method_call (cfg, secman->demandunmanaged, NULL, NULL);
-       }
-
        if (mono_security_core_clr_enabled ()) {
                /* check if this is native code, e.g. an icall or a p/invoke */
                if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
@@ -8681,9 +8532,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (cfg->generic_sharing_context && mono_method_check_context_used (cmethod))
                                GENERIC_SHARING_FAILURE (CEE_JMP);
 
-                       if (mono_security_cas_enabled ())
-                               CHECK_CFG_EXCEPTION;
-
                        emit_instrumentation_call (cfg, mono_profiler_method_leave);
 
                        if (ARCH_HAVE_OP_TAIL_CALL) {
@@ -8849,6 +8697,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        gboolean skip_ret = FALSE;
                        gboolean delegate_invoke = FALSE;
                        gboolean direct_icall = FALSE;
+                       gboolean constrained_partial_call = FALSE;
                        MonoMethod *cil_method;
 
                        CHECK_OPSIZE (5);
@@ -8863,10 +8712,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if ((constrained_class->byval_arg.type == MONO_TYPE_VAR || constrained_class->byval_arg.type == MONO_TYPE_MVAR) && cfg->generic_sharing_context) {
                                        if (!mini_is_gsharedvt_klass (cfg, constrained_class)) {
                                                g_assert (!cmethod->klass->valuetype);
-                                               if (!mini_type_is_reference (cfg, &constrained_class->byval_arg)) {
-                                                       /* FIXME: gshared type constrained to a primitive type */
-                                                       GENERIC_SHARING_FAILURE (CEE_CALL);
-                                               }
+                                               if (!mini_type_is_reference (cfg, &constrained_class->byval_arg))
+                                                       constrained_partial_call = TRUE;
                                        }
                                }
 
@@ -8966,12 +8813,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                          }
                        */
 
-                       if (mono_security_cas_enabled ()) {
-                               if (check_linkdemand (cfg, method, cmethod))
-                                       INLINE_FAILURE ("linkdemand");
-                               CHECK_CFG_EXCEPTION;
-                       }
-
                        if (cmethod->string_ctor && method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE)
                                g_assert_not_reached ();
 
@@ -9006,7 +8847,69 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                /*
                                 * We have the `constrained.' prefix opcode.
                                 */
-                               if (constrained_class->valuetype && (cmethod->klass == mono_defaults.object_class || cmethod->klass == mono_defaults.enum_class->parent || cmethod->klass == mono_defaults.enum_class)) {
+                               if (constrained_partial_call) {
+                                       gboolean need_box = TRUE;
+
+                                       /*
+                                        * The receiver is a valuetype, but the exact type is not known at compile time. This means the
+                                        * called method is not known at compile time either. The called method could end up being
+                                        * one of the methods on the parent classes (object/valuetype/enum), in which case we need
+                                        * to box the receiver.
+                                        * A simple solution would be to box always and make a normal virtual call, but that would
+                                        * be bad performance wise.
+                                        */
+                                       if (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE && cmethod->klass->generic_class) {
+                                               /*
+                                                * The parent classes implement no generic interfaces, so the called method will be a vtype method, so no boxing neccessary.
+                                                */
+                                               need_box = FALSE;
+                                       }
+
+                                       if (need_box) {
+                                               MonoInst *box_type;
+                                               MonoBasicBlock *is_ref_bb, *end_bb;
+                                               MonoInst *nonbox_call;
+
+                                               /*
+                                                * Determine at runtime whenever the called method is defined on object/valuetype/enum, and emit a boxing call
+                                                * if needed.
+                                                * FIXME: It is possible to inline the called method in a lot of cases, i.e. for T_INT,
+                                                * the no-box case goes to a method in Int32, while the box case goes to a method in Enum.
+                                                */
+                                               addr = emit_get_rgctx_virt_method (cfg, mono_class_check_context_used (constrained_class), constrained_class, cmethod, MONO_RGCTX_INFO_VIRT_METHOD_CODE);
+
+                                               NEW_BBLOCK (cfg, is_ref_bb);
+                                               NEW_BBLOCK (cfg, end_bb);
+
+                                               box_type = emit_get_rgctx_virt_method (cfg, mono_class_check_context_used (constrained_class), constrained_class, cmethod, MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE);
+                                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, box_type->dreg, 1);
+                                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
+
+                                               /* Non-ref case */
+                                               nonbox_call = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL, NULL);
+
+                                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+                                               /* Ref case */
+                                               MONO_START_BB (cfg, is_ref_bb);
+                                               EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &constrained_class->byval_arg, sp [0]->dreg, 0);
+                                               ins->klass = constrained_class;
+                                               sp [0] = handle_box (cfg, ins, constrained_class, mono_class_check_context_used (constrained_class), &bblock);
+                                               ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL, NULL);
+
+                                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+                                               MONO_START_BB (cfg, end_bb);
+                                               bblock = end_bb;
+
+                                               nonbox_call->dreg = ins->dreg;
+                                       } else {
+                                               g_assert (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE);
+                                               addr = emit_get_rgctx_virt_method (cfg, mono_class_check_context_used (constrained_class), constrained_class, cmethod, MONO_RGCTX_INFO_VIRT_METHOD_CODE);
+                                               ins = (MonoInst*)mono_emit_calli (cfg, fsig, sp, addr, NULL, NULL);
+                                       }
+                                       goto call_end;
+                               } else if (constrained_class->valuetype && (cmethod->klass == mono_defaults.object_class || cmethod->klass == mono_defaults.enum_class->parent || cmethod->klass == mono_defaults.enum_class)) {
                                        /*
                                         * The type parameter is instantiated as a valuetype,
                                         * but that type doesn't override the method we're
@@ -9180,7 +9083,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        GSHAREDVT_FAILURE (*ip);
 
 #if MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK && defined(MONO_ARCH_GSHARED_SUPPORTED)
-                               if (cmethod->wrapper_type == MONO_WRAPPER_NONE && mono_use_imt)
+                               if (cmethod->wrapper_type == MONO_WRAPPER_NONE)
                                        use_imt = TRUE;
 #endif
 
@@ -9333,7 +9236,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                GSHAREDVT_FAILURE (*ip);
                                        if (fsig->generic_param_count) {
                                                /* virtual generic call */
-                                               g_assert (mono_use_imt);
                                                g_assert (!imt_arg);
                                                /* Same as the virtual generic case above */
                                                imt_arg = emit_get_rgctx_method (cfg, context_used,
@@ -10383,13 +10285,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                        context_used = mini_method_check_context_used (cfg, cmethod);
 
-                       if (mono_security_cas_enabled ()) {
-                               if (check_linkdemand (cfg, method, cmethod))
-                                       INLINE_FAILURE ("linkdemand");
-                               CHECK_CFG_EXCEPTION;
-                       } else if (mono_security_core_clr_enabled ()) {
+                       if (mono_security_core_clr_enabled ())
                                ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
-                       }
 
                        if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
                                emit_generic_class_init (cfg, cmethod->klass);
@@ -11093,17 +10990,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        }
 
                        /* STATIC CASE */
-
-                       /*
-                        * We can only support shared generic static
-                        * field access on architectures where the
-                        * trampoline code has been extended to handle
-                        * the generic class init.
-                        */
-#ifndef MONO_ARCH_VTABLE_REG
-                       GENERIC_SHARING_FAILURE (op);
-#endif
-
                        context_used = mini_class_check_context_used (cfg, klass);
 
                        ftype = mono_field_get_type (field);
@@ -11142,9 +11028,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                GSHAREDVT_FAILURE (op);
 
-                               // offset &= 0x7fffffff;
-                               // idx = (offset >> 24) - 1;
-                               //      return ((char*) thread->static_data [idx]) + (offset & 0xffffff);
                                MONO_ADD_INS (cfg->cbb, thread_ins);
                                static_data_reg = alloc_ireg (cfg);
                                MONO_EMIT_NEW_LOAD_MEMBASE (cfg, static_data_reg, thread_ins->dreg, MONO_STRUCT_OFFSET (MonoInternalThread, static_data));
@@ -11157,24 +11040,24 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        offset_reg = ins->dreg;
                                        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, offset_reg, offset_reg, 0x7fffffff);
                                        idx_reg = alloc_ireg (cfg);
-                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_IMM, idx_reg, offset_reg, 24);
-                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISUB_IMM, idx_reg, idx_reg, 1);
+                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, idx_reg, offset_reg, 0x3f);
                                        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHL_IMM, idx_reg, idx_reg, sizeof (gpointer) == 8 ? 3 : 2);
                                        MONO_EMIT_NEW_BIALU (cfg, OP_PADD, static_data_reg, static_data_reg, idx_reg);
                                        array_reg = alloc_ireg (cfg);
                                        MONO_EMIT_NEW_LOAD_MEMBASE (cfg, array_reg, static_data_reg, 0);
                                        offset2_reg = alloc_ireg (cfg);
-                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, offset2_reg, offset_reg, 0xffffff);
+                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_ISHR_UN_IMM, offset2_reg, offset_reg, 6);
+                                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_IAND_IMM, offset2_reg, offset2_reg, 0x1ffffff);
                                        dreg = alloc_ireg (cfg);
                                        EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, array_reg, offset2_reg);
                                } else {
                                        offset = (gsize)addr & 0x7fffffff;
-                                       idx = (offset >> 24) - 1;
+                                       idx = offset & 0x3f;
 
                                        array_reg = alloc_ireg (cfg);
                                        MONO_EMIT_NEW_LOAD_MEMBASE (cfg, array_reg, static_data_reg, idx * sizeof (gpointer));
                                        dreg = alloc_ireg (cfg);
-                                       EMIT_NEW_BIALU_IMM (cfg, ins, OP_ADD_IMM, dreg, array_reg, (offset & 0xffffff));
+                                       EMIT_NEW_BIALU_IMM (cfg, ins, OP_ADD_IMM, dreg, array_reg, ((offset >> 6) & 0x1ffffff));
                                }
                        } else if ((cfg->opt & MONO_OPT_SHARED) ||
                                        (cfg->compile_aot && is_special_static) ||
@@ -12529,13 +12412,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (!dont_verify && !cfg->skip_visibility && !mono_method_can_access_method (method, cmethod))
                                        METHOD_ACCESS_FAILURE (method, cil_method);
 
-                               if (mono_security_cas_enabled ()) {
-                                       if (check_linkdemand (cfg, method, cmethod))
-                                               INLINE_FAILURE ("linkdemand");
-                                       CHECK_CFG_EXCEPTION;
-                               } else if (mono_security_core_clr_enabled ()) {
+                               if (mono_security_core_clr_enabled ())
                                        ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
-                               }
 
                                /* 
                                 * Optimize the common case of ldftn+delegate creation
@@ -12607,13 +12485,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
  
                                context_used = mini_method_check_context_used (cfg, cmethod);
 
-                               if (mono_security_cas_enabled ()) {
-                                       if (check_linkdemand (cfg, method, cmethod))
-                                               INLINE_FAILURE ("linkdemand");
-                                       CHECK_CFG_EXCEPTION;
-                               } else if (mono_security_core_clr_enabled ()) {
+                               if (mono_security_core_clr_enabled ())
                                        ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
-                               }
 
                                /*
                                 * Optimize the common case of ldvirtftn+delegate creation
@@ -12624,6 +12497,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                MonoInst *target_ins, *handle_ins;
                                                MonoMethod *invoke;
                                                int invoke_context_used;
+                                               gboolean is_virtual = cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL;
 
                                                invoke = mono_get_delegate_invoke (ctor_method->klass);
                                                if (!invoke || !mono_method_signature (invoke))
@@ -12642,7 +12516,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        ip += 6;
                                                        if (cfg->verbose_level > 3)
                                                                g_print ("converting (in B%d: stack: %d) %s", bblock->block_num, (int)(sp - stack_start), mono_disasm_code_one (NULL, method, ip, NULL));
-                                                       if ((handle_ins = handle_delegate_ctor (cfg, ctor_method->klass, target_ins, cmethod, context_used, TRUE))) {
+                                                       if ((handle_ins = handle_delegate_ctor (cfg, ctor_method->klass, target_ins, cmethod, context_used, is_virtual))) {
                                                                sp -= 2;
                                                                *sp = handle_ins;
                                                                CHECK_CFG_EXCEPTION;
@@ -13074,7 +12948,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        }
 
        /* Add a sequence point for method entry/exit events */
-       if (seq_points && cfg->gen_seq_points_debug_data) {
+       if (seq_points && cfg->gen_sdb_seq_points) {
                NEW_SEQ_POINT (cfg, ins, METHOD_ENTRY_IL_OFFSET, FALSE);
                MONO_ADD_INS (init_localsbb, ins);
                NEW_SEQ_POINT (cfg, ins, METHOD_EXIT_IL_OFFSET, FALSE);
old mode 100755 (executable)
new mode 100644 (file)
index cd1070c..6dec1e3
@@ -32,6 +32,7 @@
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/mono-hwcap-x86.h>
+#include <mono/utils/mono-threads.h>
 
 #include "trace.h"
 #include "ir-emit.h"
@@ -52,7 +53,7 @@ static gboolean optimize_for_xen = TRUE;
 
 #define IS_REX(inst) (((inst) >= 0x40) && ((inst) <= 0x4f))
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 /* Under windows, the calling convention is never stdcall */
 #define CALLCONV_IS_STDCALL(call_conv) (FALSE)
 #else
@@ -526,7 +527,7 @@ typedef struct {
 
 #define DEBUG(a) if (cfg->verbose_level > 1) a
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 static AMD64_Reg_No param_regs [] = { AMD64_RCX, AMD64_RDX, AMD64_R8, AMD64_R9 };
 
 static AMD64_Reg_No return_regs [] = { AMD64_RAX, AMD64_RDX };
@@ -554,7 +555,7 @@ add_general (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo)
     }
 }
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 #define FLOAT_PARAM_REGS 4
 #else
 #define FLOAT_PARAM_REGS 8
@@ -618,7 +619,7 @@ merge_argument_class_from_type (MonoGenericSharingContext *gsctx, MonoType *type
                break;
        case MONO_TYPE_R4:
        case MONO_TYPE_R8:
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                class2 = ARG_CLASS_INTEGER;
 #else
                class2 = ARG_CLASS_SSE;
@@ -751,7 +752,7 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
 
        klass = mono_class_from_mono_type (type);
        size = mini_type_stack_size_full (gsctx, &klass->byval_arg, NULL, sig->pinvoke);
-#ifndef HOST_WIN32
+#ifndef TARGET_WIN32
        if (!sig->pinvoke && ((is_return && (size == 8)) || (!is_return && (size <= 16)))) {
                /* We pass and return vtypes of size 8 in a register */
        } else if (!sig->pinvoke || (size == 0) || (size > 16)) {
@@ -833,7 +834,7 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
                g_assert (info);
                g_assert (fields);
 
-#ifndef HOST_WIN32
+#ifndef TARGET_WIN32
                if (info->native_size > 16) {
                        ainfo->offset = *stack_size;
                        *stack_size += ALIGN_TO (info->native_size, 8);
@@ -1006,7 +1007,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
        gr = 0;
        fr = 0;
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        /* Reserve space where the callee can save the argument registers */
        stack_size = 4 * sizeof (mgreg_t);
 #endif
@@ -1115,7 +1116,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                ArgInfo *ainfo = &cinfo->args [sig->hasthis + i];
                MonoType *ptype;
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                /* The float param registers and other param registers must be the same index on Windows x64.*/
                if (gr > fr)
                        fr = gr;
@@ -1508,43 +1509,21 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
 
        mono_arch_compute_omit_fp (cfg);
 
-       if (cfg->globalra) {
-               if (cfg->arch.omit_fp)
-                       regs = g_list_prepend (regs, (gpointer)AMD64_RBP);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RBX);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R12);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R13);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R14);
-#ifndef __native_client_codegen__
-               regs = g_list_prepend (regs, (gpointer)AMD64_R15);
-#endif
-               regs = g_list_prepend (regs, (gpointer)AMD64_R10);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R9);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R8);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RDI);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RSI);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RDX);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RCX);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RAX);
-       } else {
-               if (cfg->arch.omit_fp)
-                       regs = g_list_prepend (regs, (gpointer)AMD64_RBP);
+       if (cfg->arch.omit_fp)
+               regs = g_list_prepend (regs, (gpointer)AMD64_RBP);
 
-               /* We use the callee saved registers for global allocation */
-               regs = g_list_prepend (regs, (gpointer)AMD64_RBX);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R12);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R13);
-               regs = g_list_prepend (regs, (gpointer)AMD64_R14);
+       /* We use the callee saved registers for global allocation */
+       regs = g_list_prepend (regs, (gpointer)AMD64_RBX);
+       regs = g_list_prepend (regs, (gpointer)AMD64_R12);
+       regs = g_list_prepend (regs, (gpointer)AMD64_R13);
+       regs = g_list_prepend (regs, (gpointer)AMD64_R14);
 #ifndef __native_client_codegen__
-               regs = g_list_prepend (regs, (gpointer)AMD64_R15);
+       regs = g_list_prepend (regs, (gpointer)AMD64_R15);
 #endif
-#ifdef HOST_WIN32
-               regs = g_list_prepend (regs, (gpointer)AMD64_RDI);
-               regs = g_list_prepend (regs, (gpointer)AMD64_RSI);
+#ifdef TARGET_WIN32
+       regs = g_list_prepend (regs, (gpointer)AMD64_RDI);
+       regs = g_list_prepend (regs, (gpointer)AMD64_RSI);
 #endif
-       }
 
        return regs;
 }
@@ -1775,24 +1754,19 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                case ArgInFloatSSEReg:
                case ArgInDoubleSSEReg:
                        if ((MONO_TYPE_ISSTRUCT (sig_ret) && !mono_class_from_mono_type (sig_ret)->enumtype) || ((sig_ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
-                               if (cfg->globalra) {
-                                       cfg->vret_addr->opcode = OP_REGVAR;
-                                       cfg->vret_addr->inst_c0 = cinfo->ret.reg;
+                               /* The register is volatile */
+                               cfg->vret_addr->opcode = OP_REGOFFSET;
+                               cfg->vret_addr->inst_basereg = cfg->frame_reg;
+                               if (cfg->arch.omit_fp) {
+                                       cfg->vret_addr->inst_offset = offset;
+                                       offset += 8;
                                } else {
-                                       /* The register is volatile */
-                                       cfg->vret_addr->opcode = OP_REGOFFSET;
-                                       cfg->vret_addr->inst_basereg = cfg->frame_reg;
-                                       if (cfg->arch.omit_fp) {
-                                               cfg->vret_addr->inst_offset = offset;
-                                               offset += 8;
-                                       } else {
-                                               offset += 8;
-                                               cfg->vret_addr->inst_offset = -offset;
-                                       }
-                                       if (G_UNLIKELY (cfg->verbose_level > 1)) {
-                                               printf ("vret_addr =");
-                                               mono_print_ins (cfg->vret_addr);
-                                       }
+                                       offset += 8;
+                                       cfg->vret_addr->inst_offset = -offset;
+                               }
+                               if (G_UNLIKELY (cfg->verbose_level > 1)) {
+                                       printf ("vret_addr =");
+                                       mono_print_ins (cfg->vret_addr);
                                }
                        }
                        else {
@@ -1815,47 +1789,44 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                default:
                        g_assert_not_reached ();
                }
-               if (!cfg->globalra)
-                       cfg->ret->dreg = cfg->ret->inst_c0;
+               cfg->ret->dreg = cfg->ret->inst_c0;
        }
 
        /* Allocate locals */
-       if (!cfg->globalra) {
-               offsets = mono_allocate_stack_slots (cfg, cfg->arch.omit_fp ? FALSE: TRUE, &locals_stack_size, &locals_stack_align);
-               if (locals_stack_size > MONO_ARCH_MAX_FRAME_SIZE) {
-                       char *mname = mono_method_full_name (cfg->method, TRUE);
-                       cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
-                       cfg->exception_message = g_strdup_printf ("Method %s stack is too big.", mname);
-                       g_free (mname);
-                       return;
-               }
+       offsets = mono_allocate_stack_slots (cfg, cfg->arch.omit_fp ? FALSE: TRUE, &locals_stack_size, &locals_stack_align);
+       if (locals_stack_size > MONO_ARCH_MAX_FRAME_SIZE) {
+               char *mname = mono_method_full_name (cfg->method, TRUE);
+               cfg->exception_type = MONO_EXCEPTION_INVALID_PROGRAM;
+               cfg->exception_message = g_strdup_printf ("Method %s stack is too big.", mname);
+               g_free (mname);
+               return;
+       }
                
-               if (locals_stack_align) {
-                       offset += (locals_stack_align - 1);
-                       offset &= ~(locals_stack_align - 1);
-               }
-               if (cfg->arch.omit_fp) {
-                       cfg->locals_min_stack_offset = offset;
-                       cfg->locals_max_stack_offset = offset + locals_stack_size;
-               } else {
-                       cfg->locals_min_stack_offset = - (offset + locals_stack_size);
-                       cfg->locals_max_stack_offset = - offset;
-               }
+       if (locals_stack_align) {
+               offset += (locals_stack_align - 1);
+               offset &= ~(locals_stack_align - 1);
+       }
+       if (cfg->arch.omit_fp) {
+               cfg->locals_min_stack_offset = offset;
+               cfg->locals_max_stack_offset = offset + locals_stack_size;
+       } else {
+               cfg->locals_min_stack_offset = - (offset + locals_stack_size);
+               cfg->locals_max_stack_offset = - offset;
+       }
                
-               for (i = cfg->locals_start; i < cfg->num_varinfo; i++) {
-                       if (offsets [i] != -1) {
-                               MonoInst *ins = cfg->varinfo [i];
-                               ins->opcode = OP_REGOFFSET;
-                               ins->inst_basereg = cfg->frame_reg;
-                               if (cfg->arch.omit_fp)
-                                       ins->inst_offset = (offset + offsets [i]);
-                               else
-                                       ins->inst_offset = - (offset + offsets [i]);
-                               //printf ("allocated local %d to ", i); mono_print_tree_nl (ins);
-                       }
+       for (i = cfg->locals_start; i < cfg->num_varinfo; i++) {
+               if (offsets [i] != -1) {
+                       MonoInst *ins = cfg->varinfo [i];
+                       ins->opcode = OP_REGOFFSET;
+                       ins->inst_basereg = cfg->frame_reg;
+                       if (cfg->arch.omit_fp)
+                               ins->inst_offset = (offset + offsets [i]);
+                       else
+                               ins->inst_offset = - (offset + offsets [i]);
+                       //printf ("allocated local %d to ", i); mono_print_tree_nl (ins);
                }
-               offset += locals_stack_size;
        }
+       offset += locals_stack_size;
 
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG)) {
                g_assert (!cfg->arch.omit_fp);
@@ -1869,41 +1840,6 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                        ArgInfo *ainfo = &cinfo->args [i];
                        gboolean inreg = TRUE;
 
-                       if (cfg->globalra) {
-                               /* The new allocator needs info about the original locations of the arguments */
-                               switch (ainfo->storage) {
-                               case ArgInIReg:
-                               case ArgInFloatSSEReg:
-                               case ArgInDoubleSSEReg:
-                                       ins->opcode = OP_REGVAR;
-                                       ins->inst_c0 = ainfo->reg;
-                                       break;
-                               case ArgOnStack:
-                                       g_assert (!cfg->arch.omit_fp);
-                                       ins->opcode = OP_REGOFFSET;
-                                       ins->inst_basereg = cfg->frame_reg;
-                                       ins->inst_offset = ainfo->offset + ARGS_OFFSET;
-                                       break;
-                               case ArgValuetypeInReg:
-                                       ins->opcode = OP_REGOFFSET;
-                                       ins->inst_basereg = cfg->frame_reg;
-                                       /* These arguments are saved to the stack in the prolog */
-                                       offset = ALIGN_TO (offset, sizeof(mgreg_t));
-                                       if (cfg->arch.omit_fp) {
-                                               ins->inst_offset = offset;
-                                               offset += (ainfo->storage == ArgValuetypeInReg) ? ainfo->nregs * sizeof (mgreg_t) : sizeof (mgreg_t);
-                                       } else {
-                                               offset += (ainfo->storage == ArgValuetypeInReg) ? ainfo->nregs * sizeof (mgreg_t) : sizeof (mgreg_t);
-                                               ins->inst_offset = - offset;
-                                       }
-                                       break;
-                               default:
-                                       g_assert_not_reached ();
-                               }
-
-                               continue;
-                       }
-
                        /* FIXME: Allocate volatile arguments to registers */
                        if (ins->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT))
                                inreg = FALSE;
@@ -2008,7 +1944,7 @@ mono_arch_create_vars (MonoCompile *cfg)
                }
        }
 
-       if (cfg->gen_seq_points_debug_data) {
+       if (cfg->gen_sdb_seq_points) {
                MonoInst *ins;
 
                if (cfg->compile_aot) {
@@ -2031,7 +1967,7 @@ mono_arch_create_vars (MonoCompile *cfg)
 
        if (cfg->method->save_lmf) {
                cfg->lmf_ir = TRUE;
-#if !defined(HOST_WIN32)
+#if !defined(TARGET_WIN32)
                if (mono_get_lmf_tls_offset () != -1 && !optimize_for_xen)
                        cfg->lmf_ir_mono_lmf = TRUE;
 #endif
@@ -3002,12 +2938,12 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
 static inline guint8*
 emit_call (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointer data, gboolean win64_adjust_stack)
 {
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        if (win64_adjust_stack)
                amd64_alu_reg_imm (code, X86_SUB, AMD64_RSP, 32);
 #endif
        code = emit_call_body (cfg, code, patch_type, data);
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        if (win64_adjust_stack)
                amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, 32);
 #endif 
@@ -3347,7 +3283,7 @@ mono_emit_stack_alloc (MonoCompile *cfg, guchar *code, MonoInst* tree)
        int sreg = tree->sreg1;
        int need_touch = FALSE;
 
-#if defined(HOST_WIN32)
+#if defined(TARGET_WIN32)
        need_touch = TRUE;
 #elif defined(MONO_ARCH_SIGSEGV_ON_ALTSTACK)
        if (!tree->flags & MONO_INST_INIT)
@@ -3591,7 +3527,7 @@ mono_amd64_get_tls_gs_offset (void)
 guint8*
 mono_amd64_emit_tls_get (guint8* code, int dreg, int tls_offset)
 {
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        if (tls_offset < 64) {
                x86_prefix (code, X86_GS_PREFIX);
                amd64_mov_reg_mem (code, dreg, (tls_offset * 8) + 0x1480, 8);
@@ -3657,7 +3593,7 @@ emit_tls_get_reg (guint8* code, int dreg, int offset_reg)
 static guint8*
 amd64_emit_tls_set (guint8 *code, int sreg, int tls_offset)
 {
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        g_assert_not_reached ();
 #elif defined(__APPLE__)
        x86_prefix (code, X86_GS_PREFIX);
@@ -3674,7 +3610,7 @@ static guint8*
 amd64_emit_tls_set_reg (guint8 *code, int sreg, int offset_reg)
 {
        /* offset_reg contains a value translated by mono_arch_translate_tls_offset () */
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
        g_assert_not_reached ();
 #elif defined(__APPLE__)
        x86_prefix (code, X86_GS_PREFIX);
@@ -4994,7 +4930,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        amd64_ret (code);
                        break;
                }
-
+               case OP_GET_EX_OBJ:
+                       if (ins->dreg != AMD64_RAX)
+                               amd64_mov_reg_reg (code, ins->dreg, AMD64_RAX, sizeof (gpointer));
+                       break;
                case OP_LABEL:
                        ins->inst_c0 = code - cfg->native_code;
                        break;
@@ -6552,22 +6491,28 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        MONO_VARINFO (cfg, ins->inst_c0)->live_range_end = code - cfg->native_code;
                        break;
                }
-               case OP_NACL_GC_SAFE_POINT: {
-#if defined(__native_client_codegen__) && defined(__native_client_gc__)
-                       if (cfg->compile_aot)
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc, TRUE);
-                       else {
-                               guint8 *br [1];
+               case OP_GC_SAFE_POINT: {
+                       const char *polling_func = NULL;
+                       int compare_val = 0;
+                       guint8 *br [1];
 
-                               amd64_mov_reg_imm_size (code, AMD64_R11, (gpointer)&__nacl_thread_suspension_needed, 4);
-                               amd64_test_membase_imm_size (code, AMD64_R11, 0, 0xFFFFFFFF, 4);
-                               br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc, TRUE);
-                               amd64_patch (br[0], code);
-                       }
+#if defined (USE_COOP_GC)
+                       polling_func = "mono_threads_state_poll";
+                       compare_val = 1;
+#elif defined(__native_client_codegen__) && defined(__native_client_gc__)
+                       polling_func = "mono_nacl_gc";
+                       compare_val = 0xFFFFFFFF;
 #endif
+                       if (!polling_func)
+                               break;
+
+                       amd64_test_membase_imm_size (code, ins->sreg1, 0, compare_val, 4);
+                       br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
+                       code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, polling_func, FALSE);
+                       amd64_patch (br[0], code);
                        break;
                }
+
                case OP_GC_LIVENESS_DEF:
                case OP_GC_LIVENESS_USE:
                case OP_GC_PARAM_SLOT_LIVENESS_DEF:
@@ -6604,67 +6549,34 @@ mono_arch_register_lowlevel_calls (void)
 }
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code_new (MonoCompile *cfg, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gpointer target)
 {
-       MonoJumpInfo *patch_info;
-       gboolean compile_aot = !run_cctors;
+       unsigned char *ip = ji->ip.i + code;
 
-       for (patch_info = ji; patch_info; patch_info = patch_info->next) {
-               unsigned char *ip = patch_info->ip.i + code;
-               unsigned char *target;
-
-               if (compile_aot) {
-                       switch (patch_info->type) {
-                       case MONO_PATCH_INFO_BB:
-                       case MONO_PATCH_INFO_LABEL:
+       /*
+        * Debug code to help track down problems where the target of a near call is
+        * is not valid.
+        */
+       if (amd64_is_near_call (ip)) {
+               gint64 disp = (guint8*)target - (guint8*)ip;
+
+               if (!amd64_is_imm32 (disp)) {
+                       printf ("TYPE: %d\n", ji->type);
+                       switch (ji->type) {
+                       case MONO_PATCH_INFO_INTERNAL_METHOD:
+                               printf ("V: %s\n", ji->data.name);
+                               break;
+                       case MONO_PATCH_INFO_METHOD_JUMP:
+                       case MONO_PATCH_INFO_METHOD:
+                               printf ("V: %s\n", ji->data.method->name);
                                break;
                        default:
-                               /* No need to patch these */
-                               continue;
-                       }
-               }
-
-               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
-
-               switch (patch_info->type) {
-               case MONO_PATCH_INFO_NONE:
-                       continue;
-               case MONO_PATCH_INFO_METHOD_REL:
-               case MONO_PATCH_INFO_R8:
-               case MONO_PATCH_INFO_R4:
-                       g_assert_not_reached ();
-                       continue;
-               case MONO_PATCH_INFO_BB:
-                       break;
-               default:
-                       break;
-               }
-
-               /* 
-                * Debug code to help track down problems where the target of a near call is
-                * is not valid.
-                */
-               if (amd64_is_near_call (ip)) {
-                       gint64 disp = (guint8*)target - (guint8*)ip;
-
-                       if (!amd64_is_imm32 (disp)) {
-                               printf ("TYPE: %d\n", patch_info->type);
-                               switch (patch_info->type) {
-                               case MONO_PATCH_INFO_INTERNAL_METHOD:
-                                       printf ("V: %s\n", patch_info->data.name);
-                                       break;
-                               case MONO_PATCH_INFO_METHOD_JUMP:
-                               case MONO_PATCH_INFO_METHOD:
-                                       printf ("V: %s\n", patch_info->data.method->name);
-                                       break;
-                               default:
-                                       break;
-                               }
+                               break;
                        }
                }
-
-               amd64_patch (ip, (gpointer)target);
        }
+
+       amd64_patch (ip, (gpointer)target);
 }
 
 #ifndef DISABLE_JIT
@@ -6774,7 +6686,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                mono_emit_unwind_op_def_cfa_offset (cfg, code, cfa_offset);
                mono_emit_unwind_op_offset (cfg, code, AMD64_RBP, - cfa_offset);
                async_exc_point (code);
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                mono_arch_unwindinfo_add_push_nonvol (&cfg->arch.unwindinfo, cfg->native_code, code, AMD64_RBP);
 #endif
                /* These are handled automatically by the stack marking code */
@@ -6783,7 +6695,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                amd64_mov_reg_reg (code, AMD64_RBP, AMD64_RSP, sizeof(mgreg_t));
                mono_emit_unwind_op_def_cfa_reg (cfg, code, AMD64_RBP);
                async_exc_point (code);
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                mono_arch_unwindinfo_add_set_fpreg (&cfg->arch.unwindinfo, cfg->native_code, code, AMD64_RBP);
 #endif
        }
@@ -6824,7 +6736,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        /* Allocate stack frame */
        if (alloc_size) {
                /* See mono_emit_stack_alloc */
-#if defined(HOST_WIN32) || defined(MONO_ARCH_SIGSEGV_ON_ALTSTACK)
+#if defined(TARGET_WIN32) || defined(MONO_ARCH_SIGSEGV_ON_ALTSTACK)
                guint32 remaining_size = alloc_size;
                /*FIXME handle unbounded code expansion, we should use a loop in case of more than X interactions*/
                guint32 required_code_size = ((remaining_size / 0x1000) + 1) * 10; /*10 is the max size of amd64_alu_reg_imm + amd64_test_membase_reg*/
@@ -6844,7 +6756,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                mono_emit_unwind_op_def_cfa_offset (cfg, code, cfa_offset);
                        }
                        async_exc_point (code);
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                        if (cfg->arch.omit_fp) 
                                mono_arch_unwindinfo_add_alloc_stack (&cfg->arch.unwindinfo, cfg->native_code, code, 0x1000);
 #endif
@@ -6859,7 +6771,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                mono_emit_unwind_op_def_cfa_offset (cfg, code, cfa_offset);
                                async_exc_point (code);
                        }
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                        if (cfg->arch.omit_fp) 
                                mono_arch_unwindinfo_add_alloc_stack (&cfg->arch.unwindinfo, cfg->native_code, code, remaining_size);
 #endif
@@ -7020,38 +6932,6 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                        /* Unused arguments */
                        continue;
 
-               if (cfg->globalra) {
-                       /* All the other moves are done by the register allocator */
-                       switch (ainfo->storage) {
-                       case ArgInFloatSSEReg:
-                               amd64_sse_cvtss2sd_reg_reg (code, ainfo->reg, ainfo->reg);
-                               break;
-                       case ArgValuetypeInReg:
-                               for (quad = 0; quad < 2; quad ++) {
-                                       switch (ainfo->pair_storage [quad]) {
-                                       case ArgInIReg:
-                                               amd64_mov_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad], sizeof(mgreg_t));
-                                               break;
-                                       case ArgInFloatSSEReg:
-                                               amd64_movss_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad]);
-                                               break;
-                                       case ArgInDoubleSSEReg:
-                                               amd64_movsd_membase_reg (code, ins->inst_basereg, ins->inst_offset + (quad * sizeof(mgreg_t)), ainfo->pair_regs [quad]);
-                                               break;
-                                       case ArgNone:
-                                               break;
-                                       default:
-                                               g_assert_not_reached ();
-                                       }
-                               }
-                               break;
-                       default:
-                               break;
-                       }
-
-                       continue;
-               }
-
                /* Save volatile arguments to the stack */
                if (ins->opcode != OP_REGVAR) {
                        switch (ainfo->storage) {
@@ -7213,7 +7093,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                }
        }
 
-       if (cfg->gen_seq_points_debug_data) {
+       if (cfg->gen_sdb_seq_points) {
                MonoInst *info_var = cfg->arch.seq_point_info_var;
 
                /* Initialize seq_point_info_var */
@@ -7953,7 +7833,7 @@ get_delegate_invoke_impl (gboolean has_target, guint32 param_count, guint32 *cod
                        /* We have to shift the arguments left */
                        amd64_mov_reg_reg (code, AMD64_RAX, AMD64_ARG_REG1, 8);
                        for (i = 0; i < param_count; ++i) {
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
                                if (i < 3)
                                        amd64_mov_reg_reg (code, param_regs [i], param_regs [i + 1], 8);
                                else
index 1b48c14caa69bef3097b7a9522a7042518c86b93..32c4654ffb1b7ccd78cb760377d3447367554bb2 100644 (file)
@@ -114,7 +114,7 @@ struct sigcontext {
 
 #define MONO_ARCH_HAVE_RESTORE_STACK_SUPPORT 1
 
-#define MONO_ARCH_CPU_SPEC amd64_desc
+#define MONO_ARCH_CPU_SPEC mono_amd64_desc
 
 #define MONO_MAX_IREGS 16
 
@@ -213,7 +213,7 @@ typedef struct MonoCompileArch {
 
 
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 #define PARAM_REGS 4
 #else
 #define PARAM_REGS 6
@@ -231,7 +231,6 @@ typedef struct {
        guint8 *ret;
 } DynCallArgs;
 
-
 #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->rax = (gsize)exc; } while (0)
 #define MONO_CONTEXT_SET_LLVM_EH_SELECTOR_REG(ctx, sel) do { (ctx)->rdx = (gsize)(sel); } while (0)
 
@@ -287,7 +286,7 @@ typedef struct {
 #define MONO_ARCH_NOMAP32BIT 1
 #endif
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 #define MONO_AMD64_ARG_REG1 AMD64_RCX
 #define MONO_AMD64_ARG_REG2 AMD64_RDX
 #define MONO_AMD64_ARG_REG3 AMD64_R8
@@ -320,10 +319,10 @@ typedef struct {
  * clobbered across method call boundaries.
  */
 #define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG
+#define MONO_ARCH_EXC_REG AMD64_RAX
 #define MONO_ARCH_HAVE_CMOV_OPS 1
 #define MONO_ARCH_HAVE_NOTIFY_PENDING_EXC 1
 #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
-#define MONO_ARCH_ENABLE_GLOBAL_RA 1
 #define MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK 1
 #define MONO_ARCH_HAVE_LIVERANGE_OPS 1
 #define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
@@ -355,6 +354,7 @@ typedef struct {
 #define MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET 1
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
 #define MONO_ARCH_HAVE_SDB_TRAMPOLINES 1
+#define MONO_ARCH_HAVE_PATCH_CODE_NEW 1
 
 #if defined(TARGET_OSX) || defined(__linux__)
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
@@ -410,7 +410,7 @@ typedef struct {
 
 extern MonoBreakpointInfo mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
 
-#ifdef HOST_WIN32
+#ifdef TARGET_WIN32
 
 void mono_arch_unwindinfo_add_push_nonvol (gpointer* monoui, gpointer codebegin, gpointer nextip, guchar reg );
 void mono_arch_unwindinfo_add_set_fpreg (gpointer* monoui, gpointer codebegin, gpointer nextip, guchar reg );
index 3a12ed0329f321c2b96bbef3073b9cb798e60c44..527adfac7a4d8ce144c4f6f2efc5ca9a18f34abf 100644 (file)
@@ -60,6 +60,8 @@
 #define HAVE_AEABI_READ_TP 1
 #endif
 
+#define THUNK_SIZE (3 * 4)
+
 #ifdef __native_client_codegen__
 const guint kNaClAlignment = kNaClAlignmentARM;
 const guint kNaClAlignmentMask = kNaClAlignmentMaskARM;
@@ -143,8 +145,7 @@ static int i8_align;
 
 static volatile int ss_trigger_var = 0;
 
-static gpointer single_step_func_wrapper;
-static gpointer breakpoint_func_wrapper;
+static gpointer single_step_tramp, breakpoint_tramp;
 
 /*
  * The code generated for sequence points reads from this location, which is
@@ -331,6 +332,7 @@ emit_call_seq (MonoCompile *cfg, guint8 *code)
        } else {
                ARM_BL (code, 0);
        }
+       cfg->thunk_area += THUNK_SIZE;
 #endif
        return code;
 }
@@ -383,55 +385,6 @@ mono_arm_load_jumptable_entry (guint8 *code, gpointer* jte, ARMReg reg)
 }
 #endif
 
-static guint8*
-emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
-{
-       switch (ins->opcode) {
-       case OP_FCALL:
-       case OP_FCALL_REG:
-       case OP_FCALL_MEMBASE:
-               if (IS_VFP) {
-                       MonoType *sig_ret = mini_type_get_underlying_type (NULL, ((MonoCallInst*)ins)->signature->ret);
-                       if (sig_ret->type == MONO_TYPE_R4) {
-                               if (IS_HARD_FLOAT) {
-                                       ARM_CVTS (code, ins->dreg, ARM_VFP_F0);
-                               } else {
-                                       ARM_FMSR (code, ins->dreg, ARMREG_R0);
-                                       ARM_CVTS (code, ins->dreg, ins->dreg);
-                               }
-                       } else {
-                               if (IS_HARD_FLOAT) {
-                                       ARM_CPYD (code, ins->dreg, ARM_VFP_D0);
-                               } else {
-                                       ARM_FMDRR (code, ARMREG_R0, ARMREG_R1, ins->dreg);
-                               }
-                       }
-               }
-               break;
-       case OP_RCALL:
-       case OP_RCALL_REG:
-       case OP_RCALL_MEMBASE: {
-               MonoType *sig_ret;
-
-               g_assert (IS_VFP);
-
-               sig_ret = mini_type_get_underlying_type (NULL, ((MonoCallInst*)ins)->signature->ret);
-               g_assert (sig_ret->type == MONO_TYPE_R4);
-               if (IS_HARD_FLOAT) {
-                       ARM_CPYS (code, ins->dreg, ARM_VFP_F0);
-               } else {
-                       ARM_FMSR (code, ins->dreg, ARMREG_R0);
-                       ARM_CPYS (code, ins->dreg, ins->dreg);
-               }
-               break;
-       }
-       default:
-               break;
-       }
-
-       return code;
-}
-
 /*
  * emit_save_lmf:
  *
@@ -848,73 +801,6 @@ mono_arch_cpu_init (void)
 #endif
 }
 
-static gpointer
-create_function_wrapper (gpointer function)
-{
-       guint8 *start, *code;
-
-       start = code = mono_global_codeman_reserve (96);
-
-       /*
-        * Construct the MonoContext structure on the stack.
-        */
-
-       ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (MonoContext));
-
-       /* save ip, lr and pc into their correspodings ctx.regs slots. */
-       ARM_STR_IMM (code, ARMREG_IP, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs) + sizeof (mgreg_t) * ARMREG_IP);
-       ARM_STR_IMM (code, ARMREG_LR, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_LR);
-       ARM_STR_IMM (code, ARMREG_LR, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_PC);
-
-       /* save r0..r10 and fp */
-       ARM_ADD_REG_IMM8 (code, ARMREG_IP, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs));
-       ARM_STM (code, ARMREG_IP, 0x0fff);
-
-       /* now we can update fp. */
-       ARM_MOV_REG_REG (code, ARMREG_FP, ARMREG_SP);
-
-       /* make ctx.esp hold the actual value of sp at the beginning of this method. */
-       ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_FP, sizeof (MonoContext));
-       ARM_STR_IMM (code, ARMREG_R0, ARMREG_IP, 4 * ARMREG_SP);
-       ARM_STR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_SP);
-
-       /* make ctx.eip hold the address of the call. */
-       ARM_SUB_REG_IMM8 (code, ARMREG_LR, ARMREG_LR, 4);
-       ARM_STR_IMM (code, ARMREG_LR, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, pc));
-
-       /* r0 now points to the MonoContext */
-       ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_FP);
-
-       /* call */
-#ifdef USE_JUMP_TABLES
-       {
-               gpointer *jte = mono_jumptable_add_entry ();
-               code = mono_arm_load_jumptable_entry (code, jte, ARMREG_IP);
-               jte [0] = function;
-       }
-#else
-       ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
-       ARM_B (code, 0);
-       *(gpointer*)code = function;
-       code += 4;
-#endif
-       ARM_BLX_REG (code, ARMREG_IP);
-
-       /* we're back; save ctx.eip and ctx.esp into the corresponding regs slots. */
-       ARM_LDR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, pc));
-       ARM_STR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_LR);
-       ARM_STR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_PC);
-
-       /* make ip point to the regs array, then restore everything, including pc. */
-       ARM_ADD_REG_IMM8 (code, ARMREG_IP, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs));
-       ARM_LDM (code, ARMREG_IP, 0xffff);
-
-       mono_arch_flush_icache (start, code - start);
-       mono_profiler_code_buffer_new (start, code - start, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
-
-       return start;
-}
-
 /*
  * Initialize architecture specific code.
  */
@@ -924,14 +810,10 @@ mono_arch_init (void)
        const char *cpu_arch;
 
        mono_mutex_init_recursive (&mini_arch_mutex);
-#ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        if (mini_get_debug_options ()->soft_breakpoints) {
-               single_step_func_wrapper = create_function_wrapper (debugger_agent_single_step_from_context);
-               breakpoint_func_wrapper = create_function_wrapper (debugger_agent_breakpoint_from_context);
+               single_step_tramp = mini_get_single_step_trampoline ();
+               breakpoint_tramp = mini_get_breakpoint_trampoline ();
        } else {
-#else
-       {
-#endif
                ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
                bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
                mono_mprotect (bp_trigger_page, mono_pagesize (), 0);
@@ -1237,11 +1119,16 @@ typedef enum {
        RegTypeGSharedVtInReg,
        /* gsharedvt argument passed by addr on stack */
        RegTypeGSharedVtOnStack,
+       RegTypeHFA
 } ArgStorage;
 
 typedef struct {
        gint32  offset;
        guint16 vtsize; /* in param area */
+       /* RegTypeHFA */
+       int esize;
+       /* RegTypeHFA */
+       int nregs;
        guint8  reg;
        ArgStorage  storage;
        gint32  struct_size;
@@ -1251,8 +1138,7 @@ typedef struct {
 typedef struct {
        int nargs;
        guint32 stack_usage;
-       gboolean vtype_retaddr;
-       /* The index of the vret arg in the argument list */
+       /* The index of the vret arg in the argument list for RegTypeStructByAddr */
        int vret_arg_index;
        ArgInfo ret;
        ArgInfo sig_cookie;
@@ -1401,17 +1287,65 @@ add_float (guint *fpr, guint *stack_size, ArgInfo *ainfo, gboolean is_double, gi
        }
 }
 
+static gboolean
+is_hfa (MonoType *t, int *out_nfields, int *out_esize)
+{
+       MonoClass *klass;
+       gpointer iter;
+       MonoClassField *field;
+       MonoType *ftype, *prev_ftype = NULL;
+       int nfields = 0;
+
+       klass = mono_class_from_mono_type (t);
+       iter = NULL;
+       while ((field = mono_class_get_fields (klass, &iter))) {
+               if (field->type->attrs & FIELD_ATTRIBUTE_STATIC)
+                       continue;
+               ftype = mono_field_get_type (field);
+               ftype = mini_type_get_underlying_type (NULL, ftype);
+
+               if (MONO_TYPE_ISSTRUCT (ftype)) {
+                       int nested_nfields, nested_esize;
+
+                       if (!is_hfa (ftype, &nested_nfields, &nested_esize))
+                               return FALSE;
+                       if (nested_esize == 4)
+                               ftype = &mono_defaults.single_class->byval_arg;
+                       else
+                               ftype = &mono_defaults.double_class->byval_arg;
+                       if (prev_ftype && prev_ftype->type != ftype->type)
+                               return FALSE;
+                       prev_ftype = ftype;
+                       nfields += nested_nfields;
+               } else {
+                       if (!(!ftype->byref && (ftype->type == MONO_TYPE_R4 || ftype->type == MONO_TYPE_R8)))
+                               return FALSE;
+                       if (prev_ftype && prev_ftype->type != ftype->type)
+                               return FALSE;
+                       prev_ftype = ftype;
+                       nfields ++;
+               }
+       }
+       if (nfields == 0 || nfields > 4)
+               return FALSE;
+       *out_nfields = nfields;
+       *out_esize = prev_ftype->type == MONO_TYPE_R4 ? 4 : 8;
+       return TRUE;
+}
+
 static CallInfo*
 get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSignature *sig)
 {
        guint i, gr, fpr, pstart;
        gint float_spare;
        int n = sig->hasthis + sig->param_count;
-       MonoType *simpletype;
+       int nfields, esize;
+       guint32 align;
+       MonoType *t;
        guint32 stack_size = 0;
        CallInfo *cinfo;
        gboolean is_pinvoke = sig->pinvoke;
-       MonoType *t;
+       gboolean vtype_retaddr = FALSE;
 
        if (mp)
                cinfo = mono_mempool_alloc0 (mp, sizeof (CallInfo) + (sizeof (ArgInfo) * n));
@@ -1424,18 +1358,79 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
        float_spare = -1;
 
        t = mini_type_get_underlying_type (gsctx, sig->ret);
-       if (MONO_TYPE_ISSTRUCT (t)) {
-               guint32 align;
+       switch (t->type) {
+       case MONO_TYPE_I1:
+       case MONO_TYPE_U1:
+       case MONO_TYPE_I2:
+       case MONO_TYPE_U2:
+       case MONO_TYPE_I4:
+       case MONO_TYPE_U4:
+       case MONO_TYPE_I:
+       case MONO_TYPE_U:
+       case MONO_TYPE_PTR:
+       case MONO_TYPE_FNPTR:
+       case MONO_TYPE_CLASS:
+       case MONO_TYPE_OBJECT:
+       case MONO_TYPE_SZARRAY:
+       case MONO_TYPE_ARRAY:
+       case MONO_TYPE_STRING:
+               cinfo->ret.storage = RegTypeGeneral;
+               cinfo->ret.reg = ARMREG_R0;
+               break;
+       case MONO_TYPE_U8:
+       case MONO_TYPE_I8:
+               cinfo->ret.storage = RegTypeIRegPair;
+               cinfo->ret.reg = ARMREG_R0;
+               break;
+       case MONO_TYPE_R4:
+       case MONO_TYPE_R8:
+               cinfo->ret.storage = RegTypeFP;
 
-               if (is_pinvoke && mono_class_native_size (mono_class_from_mono_type (t), &align) <= sizeof (gpointer)) {
-                       cinfo->ret.storage = RegTypeStructByVal;
+               if (IS_HARD_FLOAT) {
+                       cinfo->ret.reg = ARM_VFP_F0;
+               } else {
+                       cinfo->ret.reg = ARMREG_R0;
+               }
+               break;
+       case MONO_TYPE_GENERICINST:
+               if (!mono_type_generic_inst_is_valuetype (t)) {
+                       cinfo->ret.storage = RegTypeGeneral;
+                       cinfo->ret.reg = ARMREG_R0;
+                       break;
+               }
+               // FIXME: Only for variable types
+               if (mini_is_gsharedvt_type_gsctx (gsctx, t)) {
+                       cinfo->ret.storage = RegTypeStructByAddr;
+                       break;
+               }
+               /* Fall through */
+       case MONO_TYPE_VALUETYPE:
+       case MONO_TYPE_TYPEDBYREF:
+               if (IS_HARD_FLOAT && sig->pinvoke && is_hfa (t, &nfields, &esize)) {
+                       cinfo->ret.storage = RegTypeHFA;
+                       cinfo->ret.reg = 0;
+                       cinfo->ret.nregs = nfields;
+                       cinfo->ret.esize = esize;
                } else {
-                       cinfo->vtype_retaddr = TRUE;
+                       if (is_pinvoke && mono_class_native_size (mono_class_from_mono_type (t), &align) <= sizeof (gpointer))
+                               cinfo->ret.storage = RegTypeStructByVal;
+                       else
+                               cinfo->ret.storage = RegTypeStructByAddr;
                }
-       } else if (!(t->type == MONO_TYPE_GENERICINST && !mono_type_generic_inst_is_valuetype (t)) && mini_is_gsharedvt_type_gsctx (gsctx, t)) {
-               cinfo->vtype_retaddr = TRUE;
+               break;
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+               g_assert (mini_is_gsharedvt_type_gsctx (gsctx, t));
+               cinfo->ret.storage = RegTypeStructByAddr;
+               break;
+       case MONO_TYPE_VOID:
+               break;
+       default:
+               g_error ("Can't handle as return value 0x%x", sig->ret->type);
        }
 
+       vtype_retaddr = cinfo->ret.storage == RegTypeStructByAddr;
+
        pstart = 0;
        n = 0;
        /*
@@ -1445,7 +1440,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
         * are sometimes made using calli without sig->hasthis set, like in the delegate
         * invoke wrappers.
         */
-       if (cinfo->vtype_retaddr && !is_pinvoke && (sig->hasthis || (sig->param_count > 0 && MONO_TYPE_IS_REFERENCE (mini_type_get_underlying_type (gsctx, sig->params [0]))))) {
+       if (vtype_retaddr && !is_pinvoke && (sig->hasthis || (sig->param_count > 0 && MONO_TYPE_IS_REFERENCE (mini_type_get_underlying_type (gsctx, sig->params [0]))))) {
                if (sig->hasthis) {
                        add_general (&gr, &stack_size, cinfo->args + 0, TRUE);
                } else {
@@ -1453,7 +1448,8 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        pstart = 1;
                }
                n ++;
-               add_general (&gr, &stack_size, &cinfo->ret, TRUE);
+               cinfo->ret.reg = gr;
+               gr ++;
                cinfo->vret_arg_index = 1;
        } else {
                /* this */
@@ -1461,9 +1457,10 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        add_general (&gr, &stack_size, cinfo->args + 0, TRUE);
                        n ++;
                }
-
-               if (cinfo->vtype_retaddr)
-                       add_general (&gr, &stack_size, &cinfo->ret, TRUE);
+               if (vtype_retaddr) {
+                       cinfo->ret.reg = gr;
+                       gr ++;
+               }
        }
 
        DEBUG(printf("params: %d\n", sig->param_count));
@@ -1485,25 +1482,22 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        n++;
                        continue;
                }
-               simpletype = mini_type_get_underlying_type (gsctx, sig->params [i]);
-               switch (simpletype->type) {
+               t = mini_type_get_underlying_type (gsctx, sig->params [i]);
+               switch (t->type) {
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
                        cinfo->args [n].size = 1;
                        add_general (&gr, &stack_size, ainfo, TRUE);
-                       n++;
                        break;
                case MONO_TYPE_I2:
                case MONO_TYPE_U2:
                        cinfo->args [n].size = 2;
                        add_general (&gr, &stack_size, ainfo, TRUE);
-                       n++;
                        break;
                case MONO_TYPE_I4:
                case MONO_TYPE_U4:
                        cinfo->args [n].size = 4;
                        add_general (&gr, &stack_size, ainfo, TRUE);
-                       n++;
                        break;
                case MONO_TYPE_I:
                case MONO_TYPE_U:
@@ -1516,18 +1510,16 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_ARRAY:
                        cinfo->args [n].size = sizeof (gpointer);
                        add_general (&gr, &stack_size, ainfo, TRUE);
-                       n++;
                        break;
                case MONO_TYPE_GENERICINST:
-                       if (!mono_type_generic_inst_is_valuetype (simpletype)) {
+                       if (!mono_type_generic_inst_is_valuetype (t)) {
                                cinfo->args [n].size = sizeof (gpointer);
                                add_general (&gr, &stack_size, ainfo, TRUE);
-                               n++;
                                break;
                        }
-                       if (mini_is_gsharedvt_type_gsctx (gsctx, simpletype)) {
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, t)) {
                                /* gsharedvt arguments are passed by ref */
-                               g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                               g_assert (mini_is_gsharedvt_type_gsctx (gsctx, t));
                                add_general (&gr, &stack_size, ainfo, TRUE);
                                switch (ainfo->storage) {
                                case RegTypeGeneral:
@@ -1539,7 +1531,6 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                default:
                                        g_assert_not_reached ();
                                }
-                               n++;
                                break;
                        }
                        /* Fall through */
@@ -1547,10 +1538,23 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_VALUETYPE: {
                        gint size;
                        int align_size;
-                       int nwords;
+                       int nwords, nfields, esize;
                        guint32 align;
 
-                       if (simpletype->type == MONO_TYPE_TYPEDBYREF) {
+                       if (IS_HARD_FLOAT && sig->pinvoke && is_hfa (t, &nfields, &esize)) {
+                               if (fpr + nfields < ARM_VFP_F16) {
+                                       ainfo->storage = RegTypeHFA;
+                                       ainfo->reg = fpr;
+                                       ainfo->nregs = nfields;
+                                       ainfo->esize = esize;
+                                       fpr += nfields;
+                                       break;
+                               } else {
+                                       fpr = ARM_VFP_F16;
+                               }
+                       }
+
+                       if (t->type == MONO_TYPE_TYPEDBYREF) {
                                size = sizeof (MonoTypedRef);
                                align = sizeof (gpointer);
                        } else {
@@ -1558,7 +1562,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                if (is_pinvoke)
                                        size = mono_class_native_size (klass, &align);
                                else
-                                       size = mini_type_stack_size_full (gsctx, simpletype, &align, FALSE);
+                                       size = mini_type_stack_size_full (gsctx, t, &align, FALSE);
                        }
                        DEBUG(printf ("load %d bytes struct\n", size));
                        align_size = size;
@@ -1592,14 +1596,12 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        ainfo->offset = stack_size;
                        /*g_print ("offset for arg %d at %d\n", n, stack_size);*/
                        stack_size += nwords * sizeof (gpointer);
-                       n++;
                        break;
                }
                case MONO_TYPE_U8:
                case MONO_TYPE_I8:
                        ainfo->size = 8;
                        add_general (&gr, &stack_size, ainfo, FALSE);
-                       n++;
                        break;
                case MONO_TYPE_R4:
                        ainfo->size = 4;
@@ -1608,8 +1610,6 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                add_float (&fpr, &stack_size, ainfo, FALSE, &float_spare);
                        else
                                add_general (&gr, &stack_size, ainfo, TRUE);
-
-                       n++;
                        break;
                case MONO_TYPE_R8:
                        ainfo->size = 8;
@@ -1618,13 +1618,11 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                add_float (&fpr, &stack_size, ainfo, TRUE, &float_spare);
                        else
                                add_general (&gr, &stack_size, ainfo, FALSE);
-
-                       n++;
                        break;
                case MONO_TYPE_VAR:
                case MONO_TYPE_MVAR:
                        /* gsharedvt arguments are passed by ref */
-                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, t));
                        add_general (&gr, &stack_size, ainfo, TRUE);
                        switch (ainfo->storage) {
                        case RegTypeGeneral:
@@ -1636,11 +1634,11 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        default:
                                g_assert_not_reached ();
                        }
-                       n++;
                        break;
                default:
-                       g_error ("Can't trampoline 0x%x", sig->params [i]->type);
+                       g_error ("Can't handle 0x%x", sig->params [i]->type);
                }
+               n ++;
        }
 
        /* Handle the case where there are no implicit arguments */
@@ -1653,74 +1651,6 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                add_general (&gr, &stack_size, &cinfo->sig_cookie, TRUE);
        }
 
-       {
-               simpletype = mini_type_get_underlying_type (gsctx, sig->ret);
-               switch (simpletype->type) {
-               case MONO_TYPE_I1:
-               case MONO_TYPE_U1:
-               case MONO_TYPE_I2:
-               case MONO_TYPE_U2:
-               case MONO_TYPE_I4:
-               case MONO_TYPE_U4:
-               case MONO_TYPE_I:
-               case MONO_TYPE_U:
-               case MONO_TYPE_PTR:
-               case MONO_TYPE_FNPTR:
-               case MONO_TYPE_CLASS:
-               case MONO_TYPE_OBJECT:
-               case MONO_TYPE_SZARRAY:
-               case MONO_TYPE_ARRAY:
-               case MONO_TYPE_STRING:
-                       cinfo->ret.storage = RegTypeGeneral;
-                       cinfo->ret.reg = ARMREG_R0;
-                       break;
-               case MONO_TYPE_U8:
-               case MONO_TYPE_I8:
-                       cinfo->ret.storage = RegTypeIRegPair;
-                       cinfo->ret.reg = ARMREG_R0;
-                       break;
-               case MONO_TYPE_R4:
-               case MONO_TYPE_R8:
-                       cinfo->ret.storage = RegTypeFP;
-
-                       if (IS_HARD_FLOAT) {
-                               cinfo->ret.reg = ARM_VFP_F0;
-                       } else {
-                               cinfo->ret.reg = ARMREG_R0;
-                       }
-
-                       break;
-               case MONO_TYPE_GENERICINST:
-                       if (!mono_type_generic_inst_is_valuetype (simpletype)) {
-                               cinfo->ret.storage = RegTypeGeneral;
-                               cinfo->ret.reg = ARMREG_R0;
-                               break;
-                       }
-                       // FIXME: Only for variable types
-                       if (mini_is_gsharedvt_type_gsctx (gsctx, simpletype)) {
-                               cinfo->ret.storage = RegTypeStructByAddr;
-                               g_assert (cinfo->vtype_retaddr);
-                               break;
-                       }
-                       /* Fall through */
-               case MONO_TYPE_VALUETYPE:
-               case MONO_TYPE_TYPEDBYREF:
-                       if (cinfo->ret.storage != RegTypeStructByVal)
-                               cinfo->ret.storage = RegTypeStructByAddr;
-                       break;
-               case MONO_TYPE_VAR:
-               case MONO_TYPE_MVAR:
-                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
-                       cinfo->ret.storage = RegTypeStructByAddr;
-                       g_assert (cinfo->vtype_retaddr);
-                       break;
-               case MONO_TYPE_VOID:
-                       break;
-               default:
-                       g_error ("Can't handle as return value 0x%x", sig->ret->type);
-               }
-       }
-
        /* align stack size to 8 */
        DEBUG (printf ("      stack size: %d (%d)\n", (stack_size + 15) & ~15, stack_size));
        stack_size = (stack_size + 7) & ~7;
@@ -1737,10 +1667,6 @@ mono_arch_tail_call_supported (MonoCompile *cfg, MonoMethodSignature *caller_sig
        CallInfo *c1, *c2;
        gboolean res;
 
-       if (cfg->compile_aot && !cfg->full_aot)
-               /* OP_TAILCALL doesn't work with AOT */
-               return FALSE;
-
        c1 = get_call_info (NULL, NULL, caller_sig);
        c2 = get_call_info (NULL, NULL, callee_sig);
 
@@ -1858,6 +1784,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
        MonoType *sig_ret;
        int i, offset, size, align, curinst;
        CallInfo *cinfo;
+       ArgInfo *ainfo;
        guint32 ualign;
 
        sig = mono_method_signature (cfg->method);
@@ -1891,11 +1818,11 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
        if (cfg->compile_aot || cfg->uses_rgctx_reg || COMPILE_LLVM (cfg))
                /* V5 is reserved for passing the vtable/rgctx/IMT method */
-               cfg->used_int_regs |= (1 << ARMREG_V5);
+               cfg->used_int_regs |= (1 << MONO_ARCH_IMT_REG);
 
        offset = 0;
        curinst = 0;
-       if (!MONO_TYPE_ISSTRUCT (sig_ret) && !cinfo->vtype_retaddr) {
+       if (!MONO_TYPE_ISSTRUCT (sig_ret) && cinfo->ret.storage != RegTypeStructByAddr) {
                if (sig_ret->type != MONO_TYPE_VOID) {
                        cfg->ret->opcode = OP_REGVAR;
                        cfg->ret->inst_c0 = ARMREG_R0;
@@ -1922,15 +1849,25 @@ mono_arch_allocate_vars (MonoCompile *cfg)
        if (mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method))
                offset += 8;
 
-       /* the MonoLMF structure is stored just below the stack pointer */
-       if (cinfo->ret.storage == RegTypeStructByVal) {
+       switch (cinfo->ret.storage) {
+       case RegTypeStructByVal:
                cfg->ret->opcode = OP_REGOFFSET;
                cfg->ret->inst_basereg = cfg->frame_reg;
                offset += sizeof (gpointer) - 1;
                offset &= ~(sizeof (gpointer) - 1);
                cfg->ret->inst_offset = - offset;
                offset += sizeof(gpointer);
-       } else if (cinfo->vtype_retaddr) {
+               break;
+       case RegTypeHFA:
+               /* Allocate a local to hold the result, the epilog will copy it to the correct place */
+               offset = ALIGN_TO (offset, 8);
+               cfg->ret->opcode = OP_REGOFFSET;
+               cfg->ret->inst_basereg = cfg->frame_reg;
+               cfg->ret->inst_offset = offset;
+               // FIXME:
+               offset += 32;
+               break;
+       case RegTypeStructByAddr:
                ins = cfg->vret_addr;
                offset += sizeof(gpointer) - 1;
                offset &= ~(sizeof(gpointer) - 1);
@@ -1942,6 +1879,9 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                        mono_print_ins (cfg->vret_addr);
                }
                offset += sizeof(gpointer);
+               break;
+       default:
+               break;
        }
 
        /* Allocate these first so they have a small offset, OP_SEQ_POINT depends on this */
@@ -2086,8 +2026,26 @@ mono_arch_allocate_vars (MonoCompile *cfg)
        }                       
 
        for (i = 0; i < sig->param_count; ++i) {
+               ainfo = cinfo->args + i;
+
                ins = cfg->args [curinst];
 
+               switch (ainfo->storage) {
+               case RegTypeHFA:
+                       offset = ALIGN_TO (offset, 8);
+                       ins->opcode = OP_REGOFFSET;
+                       ins->inst_basereg = cfg->frame_reg;
+                       /* These arguments are saved to the stack in the prolog */
+                       ins->inst_offset = offset;
+                       if (cfg->verbose_level >= 2)
+                               printf ("arg %d allocated to %s+0x%0x.\n", i, mono_arch_regname (ins->inst_basereg), (int)ins->inst_offset);
+                       // FIXME:
+                       offset += 32;
+                       break;
+               default:
+                       break;
+               }
+
                if (ins->opcode != OP_REGVAR) {
                        ins->opcode = OP_REGOFFSET;
                        ins->inst_basereg = cfg->frame_reg;
@@ -2146,7 +2104,7 @@ mono_arch_create_vars (MonoCompile *cfg)
        if (cinfo->ret.storage == RegTypeStructByVal)
                cfg->ret_var_is_local = TRUE;
 
-       if (cinfo->vtype_retaddr) {
+       if (cinfo->ret.storage == RegTypeStructByAddr) {
                cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
                if (G_UNLIKELY (cfg->verbose_level > 1)) {
                        printf ("vret_addr = ");
@@ -2154,7 +2112,7 @@ mono_arch_create_vars (MonoCompile *cfg)
                }
        }
 
-       if (cfg->gen_seq_points_debug_data) {
+       if (cfg->gen_sdb_seq_points) {
                if (cfg->soft_breakpoints) {
                        MonoInst *ins = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
                        ins->flags |= MONO_INST_VOLATILE;
@@ -2231,7 +2189,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
         * - we only pass/receive them in registers in some cases, and only 
         *   in 1 or 2 integer registers.
         */
-       if (cinfo->vtype_retaddr) {
+       if (cinfo->ret.storage == RegTypeStructByAddr) {
                /* Vtype returned using a hidden argument */
                linfo->ret.storage = LLVMArgVtypeRetAddr;
                linfo->vret_arg_index = cinfo->vret_arg_index;
@@ -2278,7 +2236,39 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        sig = call->signature;
        n = sig->param_count + sig->hasthis;
        
-       cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig);
+       cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
+
+       switch (cinfo->ret.storage) {
+       case RegTypeStructByVal:
+               /* The JIT will transform this into a normal call */
+               call->vret_in_reg = TRUE;
+               break;
+       case RegTypeHFA:
+               /*
+                * The vtype is returned in registers, save the return area address in a local, and save the vtype into
+                * the location pointed to by it after call in emit_move_return_value ().
+                */
+               if (!cfg->arch.vret_addr_loc) {
+                       cfg->arch.vret_addr_loc = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+                       /* Prevent it from being register allocated or optimized away */
+                       ((MonoInst*)cfg->arch.vret_addr_loc)->flags |= MONO_INST_VOLATILE;
+               }
+
+               MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ((MonoInst*)cfg->arch.vret_addr_loc)->dreg, call->vret_var->dreg);
+               break;
+       case RegTypeStructByAddr: {
+               MonoInst *vtarg;
+               MONO_INST_NEW (cfg, vtarg, OP_MOVE);
+               vtarg->sreg1 = call->vret_var->dreg;
+               vtarg->dreg = mono_alloc_preg (cfg);
+               MONO_ADD_INS (cfg->cbb, vtarg);
+
+               mono_call_inst_add_outarg_reg (cfg, call, vtarg->dreg, cinfo->ret.reg, FALSE);
+               break;
+       }
+       default:
+               break;
+       }
 
        for (i = 0; i < n; ++i) {
                ArgInfo *ainfo = cinfo->args + i;
@@ -2377,6 +2367,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                case RegTypeStructByVal:
                case RegTypeGSharedVtInReg:
                case RegTypeGSharedVtOnStack:
+               case RegTypeHFA:
                        MONO_INST_NEW (cfg, ins, OP_OUTARG_VT);
                        ins->opcode = OP_OUTARG_VT;
                        ins->sreg1 = in->dreg;
@@ -2485,76 +2476,112 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (n == sig->sentinelpos))
                emit_sig_cookie (cfg, call, cinfo);
 
-       if (cinfo->ret.storage == RegTypeStructByVal) {
-               /* The JIT will transform this into a normal call */
-               call->vret_in_reg = TRUE;
-       } else if (cinfo->vtype_retaddr) {
-               MonoInst *vtarg;
-               MONO_INST_NEW (cfg, vtarg, OP_MOVE);
-               vtarg->sreg1 = call->vret_var->dreg;
-               vtarg->dreg = mono_alloc_preg (cfg);
-               MONO_ADD_INS (cfg->cbb, vtarg);
-
-               mono_call_inst_add_outarg_reg (cfg, call, vtarg->dreg, cinfo->ret.reg, FALSE);
-       }
-
+       call->call_info = cinfo;
        call->stack_usage = cinfo->stack_usage;
+}
 
-       g_free (cinfo);
+static void
+add_outarg_reg (MonoCompile *cfg, MonoCallInst *call, ArgStorage storage, int reg, MonoInst *arg)
+{
+       MonoInst *ins;
+
+       switch (storage) {
+       case RegTypeFP:
+               MONO_INST_NEW (cfg, ins, OP_FMOVE);
+               ins->dreg = mono_alloc_freg (cfg);
+               ins->sreg1 = arg->dreg;
+               MONO_ADD_INS (cfg->cbb, ins);
+               mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, reg, TRUE);
+               break;
+       default:
+               g_assert_not_reached ();
+               break;
+       }
 }
 
 void
 mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
 {
        MonoCallInst *call = (MonoCallInst*)ins->inst_p0;
+       MonoInst *load;
        ArgInfo *ainfo = ins->inst_p1;
        int ovf_size = ainfo->vtsize;
        int doffset = ainfo->offset;
        int struct_size = ainfo->struct_size;
        int i, soffset, dreg, tmpreg;
 
-       if (ainfo->storage == RegTypeGSharedVtInReg) {
+       switch (ainfo->storage) {
+       case RegTypeGSharedVtInReg:
                /* Pass by addr */
                mono_call_inst_add_outarg_reg (cfg, call, src->dreg, ainfo->reg, FALSE);
-               return;
-       }
-       if (ainfo->storage == RegTypeGSharedVtOnStack) {
+               break;
+       case RegTypeGSharedVtOnStack:
                /* Pass by addr on stack */
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, ARMREG_SP, ainfo->offset, src->dreg);
-               return;
-       }
+               break;
+       case RegTypeHFA:
+               for (i = 0; i < ainfo->nregs; ++i) {
+                       if (ainfo->esize == 4)
+                               MONO_INST_NEW (cfg, load, OP_LOADR4_MEMBASE);
+                       else
+                               MONO_INST_NEW (cfg, load, OP_LOADR8_MEMBASE);
+                       load->dreg = mono_alloc_freg (cfg);
+                       load->inst_basereg = src->dreg;
+                       load->inst_offset = i * ainfo->esize;
+                       MONO_ADD_INS (cfg->cbb, load);
 
-       soffset = 0;
-       for (i = 0; i < ainfo->size; ++i) {
-               dreg = mono_alloc_ireg (cfg);
-               switch (struct_size) {
-               case 1:
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, dreg, src->dreg, soffset);
-                       break;
-               case 2:
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU2_MEMBASE, dreg, src->dreg, soffset);
-                       break;
-               case 3:
-                       tmpreg = mono_alloc_ireg (cfg);
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, dreg, src->dreg, soffset);
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, tmpreg, src->dreg, soffset + 1);
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHL_IMM, tmpreg, tmpreg, 8);
-                       MONO_EMIT_NEW_BIALU (cfg, OP_IOR, dreg, dreg, tmpreg);
-                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, tmpreg, src->dreg, soffset + 2);
-                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHL_IMM, tmpreg, tmpreg, 16);
-                       MONO_EMIT_NEW_BIALU (cfg, OP_IOR, dreg, dreg, tmpreg);
-                       break;
-               default:
-                       MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, soffset);
-                       break;
+                       if (ainfo->esize == 4) {
+                               FloatArgData *fad;
+
+                               /* See RegTypeFP in mono_arch_emit_call () */
+                               MonoInst *float_arg = mono_compile_create_var (cfg, &mono_defaults.single_class->byval_arg, OP_LOCAL);
+                               float_arg->flags |= MONO_INST_VOLATILE;
+                               MONO_EMIT_NEW_UNALU (cfg, OP_FMOVE, float_arg->dreg, load->dreg);
+
+                               fad = mono_mempool_alloc0 (cfg->mempool, sizeof (FloatArgData));
+                               fad->vreg = float_arg->dreg;
+                               fad->hreg = ainfo->reg + i;
+
+                               call->float_args = g_slist_append_mempool (cfg->mempool, call->float_args, fad);
+                       } else {
+                               add_outarg_reg (cfg, call, RegTypeFP, ainfo->reg + i, load);
+                       }
+               }
+               break;
+       default:
+               soffset = 0;
+               for (i = 0; i < ainfo->size; ++i) {
+                       dreg = mono_alloc_ireg (cfg);
+                       switch (struct_size) {
+                       case 1:
+                               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, dreg, src->dreg, soffset);
+                               break;
+                       case 2:
+                               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU2_MEMBASE, dreg, src->dreg, soffset);
+                               break;
+                       case 3:
+                               tmpreg = mono_alloc_ireg (cfg);
+                               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, dreg, src->dreg, soffset);
+                               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, tmpreg, src->dreg, soffset + 1);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHL_IMM, tmpreg, tmpreg, 8);
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IOR, dreg, dreg, tmpreg);
+                               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, tmpreg, src->dreg, soffset + 2);
+                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHL_IMM, tmpreg, tmpreg, 16);
+                               MONO_EMIT_NEW_BIALU (cfg, OP_IOR, dreg, dreg, tmpreg);
+                               break;
+                       default:
+                               MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, soffset);
+                               break;
+                       }
+                       mono_call_inst_add_outarg_reg (cfg, call, dreg, ainfo->reg + i, FALSE);
+                       soffset += sizeof (gpointer);
+                       struct_size -= sizeof (gpointer);
                }
-               mono_call_inst_add_outarg_reg (cfg, call, dreg, ainfo->reg + i, FALSE);
-               soffset += sizeof (gpointer);
-               struct_size -= sizeof (gpointer);
+               //g_print ("vt size: %d at R%d + %d\n", doffset, vt->inst_basereg, vt->inst_offset);
+               if (ovf_size != 0)
+                       mini_emit_memcpy (cfg, ARMREG_SP, doffset, src->dreg, soffset, MIN (ovf_size * sizeof (gpointer), struct_size), struct_size < 4 ? 1 : 4);
+               break;
        }
-       //g_print ("vt size: %d at R%d + %d\n", doffset, vt->inst_basereg, vt->inst_offset);
-       if (ovf_size != 0)
-               mini_emit_memcpy (cfg, ARMREG_SP, doffset, src->dreg, soffset, MIN (ovf_size * sizeof (gpointer), struct_size), struct_size < 4 ? 1 : 4);
 }
 
 void
@@ -2764,7 +2791,7 @@ mono_arch_start_dyn_call (MonoDynCallInfo *info, gpointer **args, guint8 *ret, g
                        pindex = 1;
        }
 
-       if (dinfo->cinfo->vtype_retaddr)
+       if (dinfo->cinfo->ret.storage == RegTypeStructByAddr)
                p->regs [greg ++] = (mgreg_t)ret;
 
        for (i = pindex; i < sig->param_count; i++) {
@@ -2905,7 +2932,7 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
                        /* Fall though */
                }
        case MONO_TYPE_VALUETYPE:
-               g_assert (ainfo->cinfo->vtype_retaddr);
+               g_assert (ainfo->cinfo->ret.storage == RegTypeStructByAddr);
                /* Nothing to do */
                break;
        case MONO_TYPE_R4:
@@ -3655,134 +3682,104 @@ emit_r4_to_int (MonoCompile *cfg, guchar *code, int dreg, int sreg, int size, gb
 
 #endif /* #ifndef DISABLE_JIT */
 
-typedef struct {
-       guchar *code;
-       const guchar *target;
-       int absolute;
-       int found;
-} PatchData;
-
 #define is_call_imm(diff) ((gint)(diff) >= -33554432 && (gint)(diff) <= 33554431)
 
-static int
-search_thunk_slot (void *data, int csize, int bsize, void *user_data) {
-       PatchData *pdata = (PatchData*)user_data;
-       guchar *code = data;
-       guint32 *thunks = data;
-       guint32 *endthunks = (guint32*)(code + bsize);
-       int count = 0;
-       int difflow, diffhigh;
-
-       /* always ensure a call from pdata->code can reach to the thunks without further thunks */
-       difflow = (char*)pdata->code - (char*)thunks;
-       diffhigh = (char*)pdata->code - (char*)endthunks;
-       if (!((is_call_imm (thunks) && is_call_imm (endthunks)) || (is_call_imm (difflow) && is_call_imm (diffhigh))))
-               return 0;
+static void
+emit_thunk (guint8 *code, gconstpointer target)
+{
+       guint8 *p = code;
 
-       /*
-        * The thunk is composed of 3 words:
-        * load constant from thunks [2] into ARM_IP
-        * bx to ARM_IP
-        * address constant
-        * Note that the LR register is already setup
-        */
-       //g_print ("thunk nentries: %d\n", ((char*)endthunks - (char*)thunks)/16);
-       if ((pdata->found == 2) || (pdata->code >= code && pdata->code <= code + csize)) {
-               while (thunks < endthunks) {
-                       //g_print ("looking for target: %p at %p (%08x-%08x)\n", pdata->target, thunks, thunks [0], thunks [1]);
-                       if (thunks [2] == (guint32)pdata->target) {
-                               arm_patch (pdata->code, (guchar*)thunks);
-                               mono_arch_flush_icache (pdata->code, 4);
-                               pdata->found = 1;
-                               return 1;
-                       } else if ((thunks [0] == 0) && (thunks [1] == 0) && (thunks [2] == 0)) {
-                               /* found a free slot instead: emit thunk */
-                               /* ARMREG_IP is fine to use since this can't be an IMT call
-                                * which is indirect
-                                */
-                               code = (guchar*)thunks;
-                               ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
-                               if (thumb_supported)
-                                       ARM_BX (code, ARMREG_IP);
-                               else
-                                       ARM_MOV_REG_REG (code, ARMREG_PC, ARMREG_IP);
-                               thunks [2] = (guint32)pdata->target;
-                               mono_arch_flush_icache ((guchar*)thunks, 12);
-
-                               arm_patch (pdata->code, (guchar*)thunks);
-                               mono_arch_flush_icache (pdata->code, 4);
-                               pdata->found = 1;
-                               return 1;
-                       }
-                       /* skip 12 bytes, the size of the thunk */
-                       thunks += 3;
-                       count++;
-               }
-               //g_print ("failed thunk lookup for %p from %p at %p (%d entries)\n", pdata->target, pdata->code, data, count);
-       }
-       return 0;
+       ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
+       if (thumb_supported)
+               ARM_BX (code, ARMREG_IP);
+       else
+               ARM_MOV_REG_REG (code, ARMREG_PC, ARMREG_IP);
+       *(guint32*)code = (guint32)target;
+       code += 4;
+       mono_arch_flush_icache (p, code - p);
 }
 
 static void
-handle_thunk (MonoDomain *domain, int absolute, guchar *code, const guchar *target, MonoCodeManager *dyn_code_mp)
+handle_thunk (MonoCompile *cfg, MonoDomain *domain, guchar *code, const guchar *target)
 {
-       PatchData pdata;
+       MonoJitInfo *ji = NULL;
+       MonoThunkJitInfo *info;
+       guint8 *thunks, *p;
+       int thunks_size;
+       guint8 *orig_target;
+       guint8 *target_thunk;
 
        if (!domain)
                domain = mono_domain_get ();
 
-       pdata.code = code;
-       pdata.target = target;
-       pdata.absolute = absolute;
-       pdata.found = 0;
+       if (cfg) {
+               /*
+                * This can be called multiple times during JITting,
+                * save the current position in cfg->arch to avoid
+                * doing a O(n^2) search.
+                */
+               if (!cfg->arch.thunks) {
+                       cfg->arch.thunks = cfg->thunks;
+                       cfg->arch.thunks_size = cfg->thunk_area;
+               }
+               thunks = cfg->arch.thunks;
+               thunks_size = cfg->arch.thunks_size;
+               if (!thunks_size) {
+                       g_print ("thunk failed %p->%p, thunk space=%d method %s", code, target, thunks_size, mono_method_full_name (cfg->method, TRUE));
+                       g_assert_not_reached ();
+               }
 
-       if (dyn_code_mp) {
-               mono_code_manager_foreach (dyn_code_mp, search_thunk_slot, &pdata);
-       }
+               g_assert (*(guint32*)thunks == 0);
+               emit_thunk (thunks, target);
+               arm_patch (code, thunks);
 
-       if (pdata.found != 1) {
-               mono_domain_lock (domain);
-               mono_domain_code_foreach (domain, search_thunk_slot, &pdata);
+               cfg->arch.thunks += THUNK_SIZE;
+               cfg->arch.thunks_size -= THUNK_SIZE;
+       } else {
+               ji = mini_jit_info_table_find (domain, (char*)code, NULL);
+               g_assert (ji);
+               info = mono_jit_info_get_thunk_info (ji);
+               g_assert (info);
 
-               if (!pdata.found) {
-                       /* this uses the first available slot */
-                       pdata.found = 2;
-                       mono_domain_code_foreach (domain, search_thunk_slot, &pdata);
-               }
-               mono_domain_unlock (domain);
-       }
+               thunks = (guint8*)ji->code_start + info->thunks_offset;
+               thunks_size = info->thunks_size;
 
-       if (pdata.found != 1) {
-               GHashTable *hash;
-               GHashTableIter iter;
-               MonoJitDynamicMethodInfo *ji;
+               orig_target = mono_arch_get_call_target (code + 4);
 
-               /*
-                * This might be a dynamic method, search its code manager. We can only
-                * use the dynamic method containing CODE, since the others might be freed later.
-                */
-               pdata.found = 0;
+               mono_mini_arch_lock ();
 
-               mono_domain_lock (domain);
-               hash = domain_jit_info (domain)->dynamic_code_hash;
-               if (hash) {
-                       /* FIXME: Speed this up */
-                       g_hash_table_iter_init (&iter, hash);
-                       while (g_hash_table_iter_next (&iter, NULL, (gpointer*)&ji)) {
-                               mono_code_manager_foreach (ji->code_mp, search_thunk_slot, &pdata);
-                               if (pdata.found == 1)
+               target_thunk = NULL;
+               if (orig_target >= thunks && orig_target < thunks + thunks_size) {
+                       /* The call already points to a thunk, because of trampolines etc. */
+                       target_thunk = orig_target;
+               } else {
+                       for (p = thunks; p < thunks + thunks_size; p += THUNK_SIZE) {
+                               if (((guint32*)p) [0] == 0) {
+                                       /* Free entry */
+                                       target_thunk = p;
                                        break;
+                               }
                        }
                }
-               mono_domain_unlock (domain);
+
+               //printf ("THUNK: %p %p %p\n", code, target, target_thunk);
+
+               if (!target_thunk) {
+                       mono_mini_arch_unlock ();
+                       g_print ("thunk failed %p->%p, thunk space=%d method %s", code, target, thunks_size, cfg ? mono_method_full_name (cfg->method, TRUE) : mono_method_full_name (jinfo_get_method (ji), TRUE));
+                       g_assert_not_reached ();
+               }
+
+               emit_thunk (target_thunk, target);
+               arm_patch (code, target_thunk);
+               mono_arch_flush_icache (code, 4);
+
+               mono_mini_arch_unlock ();
        }
-       if (pdata.found != 1)
-               g_print ("thunk failed for %p from %p\n", target, code);
-       g_assert (pdata.found == 1);
 }
 
 static void
-arm_patch_general (MonoDomain *domain, guchar *code, const guchar *target, MonoCodeManager *dyn_code_mp)
+arm_patch_general (MonoCompile *cfg, MonoDomain *domain, guchar *code, const guchar *target)
 {
        guint32 *code32 = (void*)code;
        guint32 ins = *code32;
@@ -3828,7 +3825,7 @@ arm_patch_general (MonoDomain *domain, guchar *code, const guchar *target, MonoC
                        }
                }
                
-               handle_thunk (domain, TRUE, code, target, dyn_code_mp);
+               handle_thunk (cfg, domain, code, target);
                return;
        }
 
@@ -3939,7 +3936,7 @@ arm_patch_general (MonoDomain *domain, guchar *code, const guchar *target, MonoC
 void
 arm_patch (guchar *code, const guchar *target)
 {
-       arm_patch_general (NULL, code, target, NULL);
+       arm_patch_general (NULL, NULL, code, target);
 }
 
 /* 
@@ -4027,121 +4024,83 @@ mono_arm_thumb_supported (void)
 
 #ifndef DISABLE_JIT
 
-/*
- * emit_load_volatile_arguments:
- *
- *  Load volatile arguments from the stack to the original input registers.
- * Required before a tail call.
- */
 static guint8*
-emit_load_volatile_arguments (MonoCompile *cfg, guint8 *code)
+emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
 {
-       MonoMethod *method = cfg->method;
-       MonoMethodSignature *sig;
-       MonoInst *inst;
        CallInfo *cinfo;
-       guint32 i, pos;
-
-       /* FIXME: Generate intermediate code instead */
-
-       sig = mono_method_signature (method);
+       MonoCallInst *call;
 
-       /* This is the opposite of the code in emit_prolog */
+       call = (MonoCallInst*)ins;
+       cinfo = call->call_info;
 
-       pos = 0;
+       switch (cinfo->ret.storage) {
+       case RegTypeHFA: {
+               MonoInst *loc = cfg->arch.vret_addr_loc;
+               int i;
 
-       cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig);
+               /* Load the destination address */
+               g_assert (loc && loc->opcode == OP_REGOFFSET);
 
-       if (cinfo->vtype_retaddr) {
-               ArgInfo *ainfo = &cinfo->ret;
-               inst = cfg->vret_addr;
-               g_assert (arm_is_imm12 (inst->inst_offset));
-               ARM_LDR_IMM (code, ainfo->reg, inst->inst_basereg, inst->inst_offset);
+               if (arm_is_imm12 (loc->inst_offset)) {
+                       ARM_LDR_IMM (code, ARMREG_LR, loc->inst_basereg, loc->inst_offset);
+               } else {
+                       code = mono_arm_emit_load_imm (code, ARMREG_LR, loc->inst_offset);
+                       ARM_LDR_REG_REG (code, ARMREG_LR, loc->inst_basereg, ARMREG_LR);
+               }
+               for (i = 0; i < cinfo->ret.nregs; ++i) {
+                       if (cinfo->ret.esize == 4)
+                               ARM_FSTS (code, cinfo->ret.reg + i, ARMREG_LR, i * 4);
+                       else
+                               ARM_FSTD (code, cinfo->ret.reg + (i * 2), ARMREG_LR, i * 8);
+               }
+               return code;
        }
-       for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-               ArgInfo *ainfo = cinfo->args + i;
-               inst = cfg->args [pos];
-               
-               if (cfg->verbose_level > 2)
-                       g_print ("Loading argument %d (type: %d)\n", i, ainfo->storage);
-               if (inst->opcode == OP_REGVAR) {
-                       if (ainfo->storage == RegTypeGeneral)
-                               ARM_MOV_REG_REG (code, inst->dreg, ainfo->reg);
-                       else if (ainfo->storage == RegTypeFP) {
-                               g_assert_not_reached ();
-                       } else if (ainfo->storage == RegTypeBase) {
-                               // FIXME:
-                               NOT_IMPLEMENTED;
-                               /*
-                               if (arm_is_imm12 (prev_sp_offset + ainfo->offset)) {
-                                       ARM_LDR_IMM (code, inst->dreg, ARMREG_SP, (prev_sp_offset + ainfo->offset));
+       default:
+               break;
+       }
+
+       switch (ins->opcode) {
+       case OP_FCALL:
+       case OP_FCALL_REG:
+       case OP_FCALL_MEMBASE:
+               if (IS_VFP) {
+                       MonoType *sig_ret = mini_type_get_underlying_type (NULL, ((MonoCallInst*)ins)->signature->ret);
+                       if (sig_ret->type == MONO_TYPE_R4) {
+                               if (IS_HARD_FLOAT) {
+                                       ARM_CVTS (code, ins->dreg, ARM_VFP_F0);
                                } else {
-                                       code = mono_arm_emit_load_imm (code, ARMREG_IP, inst->inst_offset);
-                                       ARM_LDR_REG_REG (code, inst->dreg, ARMREG_SP, ARMREG_IP);
-                               }
-                               */
-                       } else
-                               g_assert_not_reached ();
-               } else {
-                       if (ainfo->storage == RegTypeGeneral || ainfo->storage == RegTypeIRegPair) {
-                               switch (ainfo->size) {
-                               case 1:
-                               case 2:
-                                       // FIXME:
-                                       NOT_IMPLEMENTED;
-                                       break;
-                               case 8:
-                                       g_assert (arm_is_imm12 (inst->inst_offset));
-                                       ARM_LDR_IMM (code, ainfo->reg, inst->inst_basereg, inst->inst_offset);
-                                       g_assert (arm_is_imm12 (inst->inst_offset + 4));
-                                       ARM_LDR_IMM (code, ainfo->reg + 1, inst->inst_basereg, inst->inst_offset + 4);
-                                       break;
-                               default:
-                                       if (arm_is_imm12 (inst->inst_offset)) {
-                                               ARM_LDR_IMM (code, ainfo->reg, inst->inst_basereg, inst->inst_offset);
-                                       } else {
-                                               code = mono_arm_emit_load_imm (code, ARMREG_IP, inst->inst_offset);
-                                               ARM_LDR_REG_REG (code, ainfo->reg, inst->inst_basereg, ARMREG_IP);
-                                       }
-                                       break;
-                               }
-                       } else if (ainfo->storage == RegTypeBaseGen) {
-                               // FIXME:
-                               NOT_IMPLEMENTED;
-                       } else if (ainfo->storage == RegTypeBase) {
-                               /* Nothing to do */
-                       } else if (ainfo->storage == RegTypeFP) {
-                               g_assert_not_reached ();
-                       } else if (ainfo->storage == RegTypeStructByVal) {
-                               int doffset = inst->inst_offset;
-                               int soffset = 0;
-                               int cur_reg;
-                               int size = 0;
-                               if (mono_class_from_mono_type (inst->inst_vtype))
-                                       size = mono_class_native_size (mono_class_from_mono_type (inst->inst_vtype), NULL);
-                               for (cur_reg = 0; cur_reg < ainfo->size; ++cur_reg) {
-                                       if (arm_is_imm12 (doffset)) {
-                                               ARM_LDR_IMM (code, ainfo->reg + cur_reg, inst->inst_basereg, doffset);
-                                       } else {
-                                               code = mono_arm_emit_load_imm (code, ARMREG_IP, doffset);
-                                               ARM_LDR_REG_REG (code, ainfo->reg + cur_reg, inst->inst_basereg, ARMREG_IP);
-                                       }
-                                       soffset += sizeof (gpointer);
-                                       doffset += sizeof (gpointer);
+                                       ARM_FMSR (code, ins->dreg, ARMREG_R0);
+                                       ARM_CVTS (code, ins->dreg, ins->dreg);
                                }
-                               if (ainfo->vtsize)
-                                       // FIXME:
-                                       NOT_IMPLEMENTED;
-                       } else if (ainfo->storage == RegTypeStructByAddr) {
                        } else {
-                               // FIXME:
-                               NOT_IMPLEMENTED;
+                               if (IS_HARD_FLOAT) {
+                                       ARM_CPYD (code, ins->dreg, ARM_VFP_D0);
+                               } else {
+                                       ARM_FMDRR (code, ARMREG_R0, ARMREG_R1, ins->dreg);
+                               }
                        }
                }
-               pos ++;
-       }
+               break;
+       case OP_RCALL:
+       case OP_RCALL_REG:
+       case OP_RCALL_MEMBASE: {
+               MonoType *sig_ret;
 
-       g_free (cinfo);
+               g_assert (IS_VFP);
+
+               sig_ret = mini_type_get_underlying_type (NULL, ((MonoCallInst*)ins)->signature->ret);
+               g_assert (sig_ret->type == MONO_TYPE_R4);
+               if (IS_HARD_FLOAT) {
+                       ARM_CPYS (code, ins->dreg, ARM_VFP_F0);
+               } else {
+                       ARM_FMSR (code, ins->dreg, ARMREG_R0);
+                       ARM_CPYS (code, ins->dreg, ins->dreg);
+               }
+               break;
+       }
+       default:
+               break;
+       }
 
        return code;
 }
@@ -4913,33 +4872,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                }
                        }
                        break;
-               case OP_JMP:
-                       /*
-                        * Keep in sync with mono_arch_emit_epilog
-                        */
-                       g_assert (!cfg->method->save_lmf);
-
-                       code = emit_load_volatile_arguments (cfg, code);
-
-                       code = emit_big_add (code, ARMREG_SP, cfg->frame_reg, cfg->stack_usage);
-                       if (iphone_abi) {
-                               if (cfg->used_int_regs)
-                                       ARM_POP (code, cfg->used_int_regs);
-                               ARM_POP (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
-                       } else {
-                               ARM_POP (code, cfg->used_int_regs | (1 << ARMREG_LR));
-                       }
-                       mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
-                       if (cfg->compile_aot) {
-                               ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
-                               ARM_B (code, 0);
-                               *(gpointer*)code = NULL;
-                               code += 4;
-                               ARM_LDR_REG_REG (code, ARMREG_PC, ARMREG_PC, ARMREG_IP);
-                       } else {
-                               code = mono_arm_patchable_b (code, ARMCOND_AL);
-                       }
-                       break;
                case OP_TAILCALL: {
                        MonoCallInst *call = (MonoCallInst*)ins;
 
@@ -5053,51 +4985,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_VCALL2_MEMBASE:
                case OP_VOIDCALL_MEMBASE:
                case OP_CALL_MEMBASE: {
-                       gboolean imt_arg = FALSE;
-
                        g_assert (ins->sreg1 != ARMREG_LR);
                        call = (MonoCallInst*)ins;
 
                        if (IS_HARD_FLOAT)
                                code = emit_float_args (cfg, call, code, &max_len, &offset);
-
-                       if (call->dynamic_imt_arg || call->method->klass->flags & TYPE_ATTRIBUTE_INTERFACE)
-                               imt_arg = TRUE;
                        if (!arm_is_imm12 (ins->inst_offset))
                                code = mono_arm_emit_load_imm (code, ARMREG_IP, ins->inst_offset);
-#ifdef USE_JUMP_TABLES
-#define LR_BIAS 0
-#else
-#define LR_BIAS 4
-#endif
-                       if (imt_arg)
-                               ARM_ADD_REG_IMM8 (code, ARMREG_LR, ARMREG_PC, LR_BIAS);
-                       else
-                               ARM_MOV_REG_REG (code, ARMREG_LR, ARMREG_PC);
-#undef LR_BIAS
+                       ARM_MOV_REG_REG (code, ARMREG_LR, ARMREG_PC);
                        if (!arm_is_imm12 (ins->inst_offset))
                                ARM_LDR_REG_REG (code, ARMREG_PC, ins->sreg1, ARMREG_IP);
                        else
                                ARM_LDR_IMM (code, ARMREG_PC, ins->sreg1, ins->inst_offset);
-                       if (imt_arg) {
-                               /* 
-                                * We can't embed the method in the code stream in PIC code, or
-                                * in gshared code.
-                                * Instead, we put it in V5 in code emitted by 
-                                * mono_arch_emit_imt_argument (), and embed NULL here to 
-                                * signal the IMT thunk that the value is in V5.
-                                */
-#ifdef USE_JUMP_TABLES
-                               /* In case of jumptables we always use value in V5. */
-#else
-
-                               if (call->dynamic_imt_arg)
-                                       *((gpointer*)code) = NULL;
-                               else
-                                       *((gpointer*)code) = (gpointer)call->method;
-                               code += 4;
-#endif
-                       }
                        ins->flags |= MONO_INST_GC_CALLSITE;
                        ins->backend.pc_offset = code - cfg->native_code;
                        code = emit_move_return_value (cfg, ins, code);
@@ -5254,8 +5153,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_CALL_HANDLER: 
                        mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_BB, ins->inst_target_bb);
                        code = mono_arm_patchable_bl (code, ARMCOND_AL);
+                       cfg->thunk_area += THUNK_SIZE;
                        mono_cfg_add_try_hole (cfg, ins->inst_eh_block, code, bb);
                        break;
+               case OP_GET_EX_OBJ:
+                       if (ins->dreg != ARMREG_R0)
+                               ARM_MOV_REG_REG (code, ins->dreg, ARMREG_R0);
+                       break;
+
                case OP_LABEL:
                        ins->inst_c0 = code - cfg->native_code;
                        break;
@@ -5917,85 +5822,68 @@ mono_arch_register_lowlevel_calls (void)
        } while (0)
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code_new (MonoCompile *cfg, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gpointer target)
 {
-       MonoJumpInfo *patch_info;
-       gboolean compile_aot = !run_cctors;
+       unsigned char *ip = ji->ip.i + code;
 
-       for (patch_info = ji; patch_info; patch_info = patch_info->next) {
-               unsigned char *ip = patch_info->ip.i + code;
-               const unsigned char *target;
+       if (ji->type == MONO_PATCH_INFO_SWITCH) {
+       }
 
-               if (patch_info->type == MONO_PATCH_INFO_SWITCH && !compile_aot) {
+       switch (ji->type) {
+       case MONO_PATCH_INFO_SWITCH: {
 #ifdef USE_JUMP_TABLES
-                       gpointer *jt = mono_jumptable_get_entry (ip);
+               gpointer *jt = mono_jumptable_get_entry (ip);
 #else
-                       gpointer *jt = (gpointer*)(ip + 8);
+               gpointer *jt = (gpointer*)(ip + 8);
 #endif
-                       int i;
-                       /* jt is the inlined jump table, 2 instructions after ip
-                        * In the normal case we store the absolute addresses,
-                        * otherwise the displacements.
-                        */
-                       for (i = 0; i < patch_info->data.table->table_size; i++)
-                               jt [i] = code + (int)patch_info->data.table->table [i];
-                       continue;
-               }
-
-               if (compile_aot) {
-                       switch (patch_info->type) {
-                       case MONO_PATCH_INFO_BB:
-                       case MONO_PATCH_INFO_LABEL:
-                               break;
-                       default:
-                               /* No need to patch these */
-                               continue;
-                       }
-               }
-
-               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
-
-               switch (patch_info->type) {
-               case MONO_PATCH_INFO_IP:
-                       g_assert_not_reached ();
-                       patch_lis_ori (ip, ip);
-                       continue;
-               case MONO_PATCH_INFO_METHOD_REL:
-                       g_assert_not_reached ();
-                       *((gpointer *)(ip)) = code + patch_info->data.offset;
-                       continue;
-               case MONO_PATCH_INFO_METHODCONST:
-               case MONO_PATCH_INFO_CLASS:
-               case MONO_PATCH_INFO_IMAGE:
-               case MONO_PATCH_INFO_FIELD:
-               case MONO_PATCH_INFO_VTABLE:
-               case MONO_PATCH_INFO_IID:
-               case MONO_PATCH_INFO_SFLDA:
-               case MONO_PATCH_INFO_LDSTR:
-               case MONO_PATCH_INFO_TYPE_FROM_HANDLE:
-               case MONO_PATCH_INFO_LDTOKEN:
-                       g_assert_not_reached ();
-                       /* from OP_AOTCONST : lis + ori */
-                       patch_lis_ori (ip, target);
-                       continue;
-               case MONO_PATCH_INFO_R4:
-               case MONO_PATCH_INFO_R8:
-                       g_assert_not_reached ();
-                       *((gconstpointer *)(ip + 2)) = patch_info->data.target;
-                       continue;
-               case MONO_PATCH_INFO_EXC_NAME:
-                       g_assert_not_reached ();
-                       *((gconstpointer *)(ip + 1)) = patch_info->data.name;
-                       continue;
-               case MONO_PATCH_INFO_NONE:
-               case MONO_PATCH_INFO_BB_OVF:
-               case MONO_PATCH_INFO_EXC_OVF:
-                       /* everything is dealt with at epilog output time */
-                       continue;
-               default:
-                       break;
-               }
-               arm_patch_general (domain, ip, target, dyn_code_mp);
+               int i;
+               /* jt is the inlined jump table, 2 instructions after ip
+                * In the normal case we store the absolute addresses,
+                * otherwise the displacements.
+                */
+               for (i = 0; i < ji->data.table->table_size; i++)
+                       jt [i] = code + (int)ji->data.table->table [i];
+               break;
+       }
+       case MONO_PATCH_INFO_IP:
+               g_assert_not_reached ();
+               patch_lis_ori (ip, ip);
+               break;
+       case MONO_PATCH_INFO_METHOD_REL:
+               g_assert_not_reached ();
+               *((gpointer *)(ip)) = target;
+               break;
+       case MONO_PATCH_INFO_METHODCONST:
+       case MONO_PATCH_INFO_CLASS:
+       case MONO_PATCH_INFO_IMAGE:
+       case MONO_PATCH_INFO_FIELD:
+       case MONO_PATCH_INFO_VTABLE:
+       case MONO_PATCH_INFO_IID:
+       case MONO_PATCH_INFO_SFLDA:
+       case MONO_PATCH_INFO_LDSTR:
+       case MONO_PATCH_INFO_TYPE_FROM_HANDLE:
+       case MONO_PATCH_INFO_LDTOKEN:
+               g_assert_not_reached ();
+               /* from OP_AOTCONST : lis + ori */
+               patch_lis_ori (ip, target);
+               break;
+       case MONO_PATCH_INFO_R4:
+       case MONO_PATCH_INFO_R8:
+               g_assert_not_reached ();
+               *((gconstpointer *)(ip + 2)) = target;
+               break;
+       case MONO_PATCH_INFO_EXC_NAME:
+               g_assert_not_reached ();
+               *((gconstpointer *)(ip + 1)) = target;
+               break;
+       case MONO_PATCH_INFO_NONE:
+       case MONO_PATCH_INFO_BB_OVF:
+       case MONO_PATCH_INFO_EXC_OVF:
+               /* everything is dealt with at epilog output time */
+               break;
+       default:
+               arm_patch_general (cfg, domain, ip, target);
+               break;
        }
 }
 
@@ -6023,7 +5911,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        MonoBasicBlock *bb;
        MonoMethodSignature *sig;
        MonoInst *inst;
-       int alloc_size, orig_alloc_size, pos, max_offset, i, rot_amount;
+       int alloc_size, orig_alloc_size, pos, max_offset, i, rot_amount, part;
        guint8 *code;
        CallInfo *cinfo;
        int tracing = 0;
@@ -6174,7 +6062,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 
        cinfo = get_call_info (cfg->generic_sharing_context, NULL, sig);
 
-       if (cinfo->vtype_retaddr) {
+       if (cinfo->ret.storage == RegTypeStructByAddr) {
                ArgInfo *ainfo = &cinfo->ret;
                inst = cfg->vret_addr;
                g_assert (arm_is_imm12 (inst->inst_offset));
@@ -6199,6 +6087,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                
                if (cfg->verbose_level > 2)
                        g_print ("Saving argument %d (type: %d)\n", i, ainfo->storage);
+
                if (inst->opcode == OP_REGVAR) {
                        if (ainfo->storage == RegTypeGeneral)
                                ARM_MOV_REG_REG (code, inst->dreg, ainfo->reg);
@@ -6217,8 +6106,18 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                        if (cfg->verbose_level > 2)
                                g_print ("Argument %d assigned to register %s\n", pos, mono_arch_regname (inst->dreg));
                } else {
-                       /* the argument should be put on the stack: FIXME handle size != word  */
-                       if (ainfo->storage == RegTypeGeneral || ainfo->storage == RegTypeIRegPair || ainfo->storage == RegTypeGSharedVtInReg) {
+                       switch (ainfo->storage) {
+                       case RegTypeHFA:
+                               for (part = 0; part < ainfo->nregs; part ++) {
+                                       if (ainfo->esize == 4)
+                                               ARM_FSTS (code, ainfo->reg + part, inst->inst_basereg, inst->inst_offset + (part * ainfo->esize));
+                                       else
+                                               ARM_FSTD (code, ainfo->reg + (part * 2), inst->inst_basereg, inst->inst_offset + (part * ainfo->esize));
+                               }
+                               break;
+                       case RegTypeGeneral:
+                       case RegTypeIRegPair:
+                       case RegTypeGSharedVtInReg:
                                switch (ainfo->size) {
                                case 1:
                                        if (arm_is_imm12 (inst->inst_offset))
@@ -6259,7 +6158,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                        }
                                        break;
                                }
-                       } else if (ainfo->storage == RegTypeBaseGen) {
+                               break;
+                       case RegTypeBaseGen:
                                if (arm_is_imm12 (prev_sp_offset + ainfo->offset)) {
                                        ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
                                } else {
@@ -6275,7 +6175,9 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                        code = mono_arm_emit_load_imm (code, ARMREG_IP, inst->inst_offset);
                                        ARM_STR_REG_REG (code, ARMREG_R3, inst->inst_basereg, ARMREG_IP);
                                }
-                       } else if (ainfo->storage == RegTypeBase || ainfo->storage == RegTypeGSharedVtOnStack) {
+                               break;
+                       case RegTypeBase:
+                       case RegTypeGSharedVtOnStack:
                                if (arm_is_imm12 (prev_sp_offset + ainfo->offset)) {
                                        ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
                                } else {
@@ -6329,7 +6231,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                        }
                                        break;
                                }
-                       } else if (ainfo->storage == RegTypeFP) {
+                               break;
+                       case RegTypeFP: {
                                int imm8, rot_amount;
 
                                if ((imm8 = mono_arm_is_rotated_imm8 (inst->inst_offset, &rot_amount)) == -1) {
@@ -6342,7 +6245,9 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                        ARM_FSTD (code, ainfo->reg, ARMREG_IP, 0);
                                else
                                        ARM_FSTS (code, ainfo->reg, ARMREG_IP, 0);
-                       } else if (ainfo->storage == RegTypeStructByVal) {
+                               break;
+                       }
+                       case RegTypeStructByVal: {
                                int doffset = inst->inst_offset;
                                int soffset = 0;
                                int cur_reg;
@@ -6363,12 +6268,16 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                        //g_print ("emit_memcpy (prev_sp_ofs: %d, ainfo->offset: %d, soffset: %d)\n", prev_sp_offset, ainfo->offset, soffset);
                                        code = emit_memcpy (code, ainfo->vtsize * sizeof (gpointer), inst->inst_basereg, doffset, ARMREG_SP, prev_sp_offset + ainfo->offset);
                                }
-                       } else if (ainfo->storage == RegTypeStructByAddr) {
+                               break;
+                       }
+                       case RegTypeStructByAddr:
                                g_assert_not_reached ();
                                /* FIXME: handle overrun! with struct sizes not multiple of 4 */
                                code = emit_memcpy (code, ainfo->vtsize * sizeof (gpointer), inst->inst_basereg, inst->inst_offset, ainfo->reg, 0);
-                       } else
+                       default:
                                g_assert_not_reached ();
+                               break;
+                       }
                }
                pos++;
        }
@@ -6443,17 +6352,17 @@ mono_arch_emit_prolog (MonoCompile *cfg)
 #ifdef USE_JUMP_TABLES
                jte = mono_jumptable_add_entries (3);
                jte [0] = (gpointer)&ss_trigger_var;
-               jte [1] = single_step_func_wrapper;
-               jte [2] = breakpoint_func_wrapper;
+               jte [1] = single_step_tramp;
+               jte [2] = breakpoint_tramp;
                code = mono_arm_load_jumptable_entry_addr (code, jte, ARMREG_LR);
 #else
                ARM_MOV_REG_REG (code, ARMREG_LR, ARMREG_PC);
                ARM_B (code, 2);
                *(volatile int **)code = &ss_trigger_var;
                code += 4;
-               *(gpointer*)code = single_step_func_wrapper;
+               *(gpointer*)code = single_step_tramp;
                code += 4;
-               *(gpointer*)code = breakpoint_func_wrapper;
+               *(gpointer*)code = breakpoint_tramp;
                code += 4;
 #endif
 
@@ -6508,7 +6417,8 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 
        /* Load returned vtypes into registers if needed */
        cinfo = cfg->arch.cinfo;
-       if (cinfo->ret.storage == RegTypeStructByVal) {
+       switch (cinfo->ret.storage) {
+       case RegTypeStructByVal: {
                MonoInst *ins = cfg->ret;
 
                if (arm_is_imm12 (ins->inst_offset)) {
@@ -6517,6 +6427,21 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                        code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
                        ARM_LDR_REG_REG (code, ARMREG_R0, ins->inst_basereg, ARMREG_LR);
                }
+               break;
+       }
+       case RegTypeHFA: {
+               MonoInst *ins = cfg->ret;
+
+               for (i = 0; i < cinfo->ret.nregs; ++i) {
+                       if (cinfo->ret.esize == 4)
+                               ARM_FLDS (code, cinfo->ret.reg + i, ins->inst_basereg, ins->inst_offset + (i * cinfo->ret.esize));
+                       else
+                               ARM_FLDD (code, cinfo->ret.reg + (i * 2), ins->inst_basereg, ins->inst_offset + (i * cinfo->ret.esize));
+               }
+               break;
+       }
+       default:
+               break;
        }
 
        if (method->save_lmf) {
@@ -6652,6 +6577,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
                        patch_info->data.name = "mono_arch_throw_corlib_exception";
                        patch_info->ip.i = code - cfg->native_code;
                        ARM_BL (code, 0);
+                       cfg->thunk_area += THUNK_SIZE;
                        *(guint32*)(gpointer)code = exc_class->type_token;
                        code += 4;
 #endif
@@ -6710,85 +6636,10 @@ mono_arch_flush_register_windows (void)
 {
 }
 
-#ifndef DISABLE_JIT
-
-void
-mono_arch_emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoInst *imt_arg)
-{
-       int method_reg = mono_alloc_ireg (cfg);
-#ifdef USE_JUMP_TABLES
-       int use_jumptables = TRUE;
-#else
-       int use_jumptables = FALSE;
-#endif
-
-       if (cfg->compile_aot) {
-               MonoInst *ins;
-
-               call->dynamic_imt_arg = TRUE;
-
-               if (imt_arg) {
-                       MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, method_reg, imt_arg->dreg);
-               } else {
-                       MONO_INST_NEW (cfg, ins, OP_AOTCONST);
-                       ins->dreg = method_reg;
-                       ins->inst_p0 = call->method;
-                       ins->inst_c1 = MONO_PATCH_INFO_METHODCONST;
-                       MONO_ADD_INS (cfg->cbb, ins);
-               }
-               mono_call_inst_add_outarg_reg (cfg, call, method_reg, ARMREG_V5, FALSE);
-       } else if (cfg->generic_context || imt_arg || mono_use_llvm || use_jumptables) {
-               /* Always pass in a register for simplicity */
-               call->dynamic_imt_arg = TRUE;
-
-               cfg->uses_rgctx_reg = TRUE;
-
-               if (imt_arg) {
-                       MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, method_reg, imt_arg->dreg);
-               } else {
-                       MonoInst *ins;
-
-                       MONO_INST_NEW (cfg, ins, OP_PCONST);
-                       ins->inst_p0 = call->method;
-                       ins->dreg = method_reg;
-                       MONO_ADD_INS (cfg->cbb, ins);
-               }
-
-               mono_call_inst_add_outarg_reg (cfg, call, method_reg, ARMREG_V5, FALSE);
-       }
-}
-
-#endif /* DISABLE_JIT */
-
 MonoMethod*
 mono_arch_find_imt_method (mgreg_t *regs, guint8 *code)
 {
-#ifdef USE_JUMP_TABLES
-       return (MonoMethod*)regs [ARMREG_V5];
-#else
-       gpointer method;
-       guint32 *code_ptr = (guint32*)code;
-       code_ptr -= 2;
-       method = GUINT_TO_POINTER (code_ptr [1]);
-
-       if (mono_use_llvm)
-               /* Passed in V5 */
-               return (MonoMethod*)regs [ARMREG_V5];
-
-       /* The IMT value is stored in the code stream right after the LDC instruction. */
-       /* This is no longer true for the gsharedvt_in trampoline */
-       /*
-       if (!IS_LDR_PC (code_ptr [0])) {
-               g_warning ("invalid code stream, instruction before IMT value is not a LDC in %s() (code %p value 0: 0x%x -1: 0x%x -2: 0x%x)", __FUNCTION__, code, code_ptr [2], code_ptr [1], code_ptr [0]);
-               g_assert (IS_LDR_PC (code_ptr [0]));
-       }
-       */
-       if (method == 0)
-               /* This is AOTed code, or the gsharedvt trampoline, the IMT method is in V5 */
-               return (MonoMethod*)regs [ARMREG_V5];
-       else
-               return (MonoMethod*) method;
-#endif
+       return (MonoMethod*)regs [MONO_ARCH_IMT_REG];
 }
 
 MonoVTable*
@@ -6929,8 +6780,6 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 
 #ifdef USE_JUMP_TABLES
        ARM_PUSH3 (code, ARMREG_R0, ARMREG_R1, ARMREG_R2);
-       /* If jumptables we always pass the IMT method in R5 */
-       ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_V5);
 #define VTABLE_JTI 0
 #define IMT_METHOD_OFFSET 0
 #define TARGET_CODE_OFFSET 1
@@ -6952,16 +6801,8 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
        ARM_LDR_IMM (code, ARMREG_R0, ARMREG_LR, -4);
        vtable_target = code;
        ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
-
-       if (mono_use_llvm) {
-               /* LLVM always passes the IMT method in R5 */
-               ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_V5);
-       } else {
-               /* R0 == 0 means we are called from AOT code. In this case, V5 contains the IMT method */
-               ARM_CMP_REG_IMM8 (code, ARMREG_R0, 0);
-               ARM_MOV_REG_REG_COND (code, ARMREG_R0, ARMREG_V5, ARMCOND_EQ);
-       }
 #endif
+       ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_V5);
 
        for (i = 0; i < count; ++i) {
                MonoIMTCheckItem *item = imt_entries [i];
index f055611ea80c8bb64c2148096cc10375fda44024..0757138a56354cc706a41530700a891eab4589c7 100644 (file)
@@ -41,7 +41,7 @@
 
 #define MONO_ARCH_ARCHITECTURE ARM_ARCHITECTURE "," ARM_FP_MODEL
 
-#define MONO_ARCH_CPU_SPEC arm_cpu_desc
+#define MONO_ARCH_CPU_SPEC mono_arm_cpu_desc
 
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
 #define ARM_LSW_REG ARMREG_R0
@@ -228,10 +228,13 @@ typedef struct MonoCompileArch {
        gpointer seq_point_info_var, ss_trigger_page_var;
        gpointer seq_point_read_var, seq_point_ss_method_var;
        gpointer seq_point_bp_method_var;
+       gpointer vret_addr_loc;
        gboolean omit_fp, omit_fp_computed;
        gpointer cinfo;
        gpointer *vfp_scratch_slots [2];
        int atomic_tmp_offset;
+       guint8 *thunks;
+       int thunks_size;
 } MonoCompileArch;
 
 #define MONO_ARCH_EMULATE_FCONV_TO_I8 1
@@ -284,10 +287,10 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1
 #define MONO_ARCH_HAVE_OPCODE_NEEDS_EMULATION 1
 #define MONO_ARCH_HAVE_OBJC_GET_SELECTOR 1
-#ifdef __linux__
 #define MONO_ARCH_HAVE_OP_TAIL_CALL 1
-#endif
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
+#define MONO_ARCH_HAVE_SDB_TRAMPOLINES 1
+#define MONO_ARCH_HAVE_PATCH_CODE_NEW 1
 
 #if defined(__native_client__)
 #undef MONO_ARCH_SOFT_DEBUG_SUPPORTED
@@ -302,8 +305,10 @@ typedef struct MonoCompileArch {
 
 /* ARM doesn't have too many registers, so we have to use a callee saved one */
 #define MONO_ARCH_RGCTX_REG ARMREG_V5
+#define MONO_ARCH_IMT_REG MONO_ARCH_RGCTX_REG
 /* First argument reg */
 #define MONO_ARCH_VTABLE_REG ARMREG_R0
+#define MONO_ARCH_EXC_REG ARMREG_R0
 
 #define MONO_CONTEXT_SET_LLVM_EXC_REG(ctx, exc) do { (ctx)->regs [0] = (gsize)exc; } while (0)
 
index a9c134cc4fe06b02f75e27763b679837622ad35d..e1914885b60d9622b911459bfb7dba53d8284e75 100644 (file)
@@ -650,6 +650,19 @@ mono_print_ins_index (int i, MonoInst *ins)
 
                        list = g_slist_next (list);
                }
+               list = call->out_freg_args;
+               while (list) {
+                       guint32 regpair;
+                       int reg, hreg;
+
+                       regpair = (guint32)(gssize)(list->data);
+                       hreg = regpair >> 24;
+                       reg = regpair & 0xffffff;
+
+                       printf (" [%s <- R%d]", mono_arch_fregname (hreg), reg);
+
+                       list = g_slist_next (list);
+               }
                break;
        }
        case OP_BR:
@@ -2760,4 +2773,23 @@ mini_type_is_hfa (MonoType *t, int *out_nfields, int *out_esize)
        return TRUE;
 }
 
+MonoRegState*
+mono_regstate_new (void)
+{
+       MonoRegState* rs = g_new0 (MonoRegState, 1);
+
+       rs->next_vreg = MAX (MONO_MAX_IREGS, MONO_MAX_FREGS);
+#ifdef MONO_ARCH_NEED_SIMD_BANK
+       rs->next_vreg = MAX (rs->next_vreg, MONO_MAX_XREGS);
+#endif
+
+       return rs;
+}
+
+void
+mono_regstate_free (MonoRegState *rs) {
+       g_free (rs->vassign);
+       g_free (rs);
+}
+
 #endif /* DISABLE_JIT */
index 276df0f69d60169da4eba4c6de036c8ecf8fb61d..fef21b9958159dd295540dd98047413905cc09f8 100644 (file)
@@ -715,7 +715,7 @@ ves_icall_get_trace (MonoException *exc, gint32 skip, MonoBoolean need_file_info
                        sf->il_offset = location->il_offset;
                } else {
                        SeqPoint sp;
-                       if (find_prev_seq_point_for_native_offset (domain, jinfo_get_method (ji), sf->native_offset, NULL, &sp))
+                       if (mono_find_prev_seq_point_for_native_offset (domain, jinfo_get_method (ji), sf->native_offset, NULL, &sp))
                                sf->il_offset = sp.il_offset;
                        else
                                sf->il_offset = -1;
@@ -874,7 +874,7 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain
                                il_offset = source->il_offset;
                        } else {
                                SeqPoint sp;
-                               if (find_prev_seq_point_for_native_offset (domain, jinfo_get_method (frame.ji), frame.native_offset, NULL, &sp))
+                               if (mono_find_prev_seq_point_for_native_offset (domain, jinfo_get_method (frame.ji), frame.native_offset, NULL, &sp))
                                        il_offset = sp.il_offset;
                                else
                                        il_offset = -1;
@@ -979,121 +979,6 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
        return TRUE;
 }
 
-typedef struct {
-       guint32 skips;
-       MonoSecurityFrame *frame;
-} MonoFrameSecurityInfo;
-
-static gboolean
-callback_get_first_frame_security_info (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
-{
-       MonoFrameSecurityInfo *si = (MonoFrameSecurityInfo*) data;
-       MonoJitInfo *ji = frame->ji;
-       MonoMethod *method;
-
-       if (!ji)
-               return FALSE;
-
-       /* FIXME: skip all wrappers ?? probably not - case by case testing is required */
-       method = jinfo_get_method (ji);
-       if (method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
-           method->wrapper_type == MONO_WRAPPER_XDOMAIN_INVOKE ||
-           method->wrapper_type == MONO_WRAPPER_XDOMAIN_DISPATCH ||
-           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK ||
-           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE) {
-               return FALSE;
-       }
-
-       if (si->skips > 0) {
-               si->skips--;
-               return FALSE;
-       }
-
-       si->frame = mono_declsec_create_frame (frame->domain, ji);
-
-       /* Stop - we only want the first frame (e.g. LinkDemand and InheritanceDemand) */
-       return TRUE;
-}
-
-/**
- * ves_icall_System_Security_SecurityFrame_GetSecurityFrame:
- * @skip: the number of stack frames to skip
- *
- * This function returns a the security informations of a single stack frame 
- * (after the skipped ones). This is required for [NonCas]LinkDemand[Choice]
- * and [NonCas]InheritanceDemand[Choice] as only the caller security is 
- * evaluated.
- */
-MonoSecurityFrame*
-ves_icall_System_Security_SecurityFrame_GetSecurityFrame (gint32 skip)
-{
-       MonoFrameSecurityInfo si;
-
-       si.skips = skip;
-       si.frame = NULL;
-
-       mono_walk_stack (callback_get_first_frame_security_info, MONO_UNWIND_DEFAULT, &si);
-
-       return (si.skips == 0) ? si.frame : NULL;
-}
-
-
-typedef struct {
-       guint32 skips;
-       MonoArray *stack;
-       guint32 count;
-       guint32 maximum;
-} MonoSecurityStack;
-
-static void
-grow_array (MonoSecurityStack *stack)
-{
-       MonoDomain *domain = mono_domain_get ();
-       guint32 newsize = (stack->maximum << 1);
-       MonoArray *newstack = mono_array_new (domain, mono_defaults.runtimesecurityframe_class, newsize);
-       int i;
-       for (i=0; i < stack->maximum; i++) {
-               gpointer frame = mono_array_get (stack->stack, gpointer, i);
-               mono_array_setref (newstack, i, frame);
-       }
-       stack->maximum = newsize;
-       stack->stack = newstack;
-}
-
-static gboolean
-callback_get_stack_frames_security_info (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
-{
-       MonoSecurityStack *ss = (MonoSecurityStack*) data;
-       MonoJitInfo *ji = frame->ji;
-       MonoMethod *method;
-
-       if (!ji)
-               return FALSE;
-
-       /* FIXME: skip all wrappers ?? probably not - case by case testing is required */
-       method = jinfo_get_method (ji);
-       if (method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
-           method->wrapper_type == MONO_WRAPPER_XDOMAIN_INVOKE ||
-           method->wrapper_type == MONO_WRAPPER_XDOMAIN_DISPATCH ||
-           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK ||
-           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE) {
-               return FALSE;
-       }
-
-       if (ss->skips > 0) {
-               ss->skips--;
-               return FALSE;
-       }
-
-       if (ss->count == ss->maximum)
-               grow_array (ss);
-
-       mono_array_setref (ss->stack, ss->count++, mono_declsec_create_frame (frame->domain, ji));
-
-       /* continue down the stack */
-       return FALSE;
-}
-
 static MonoArray *
 glist_to_array (GList *list, MonoClass *eclass) 
 {
@@ -1113,33 +998,6 @@ glist_to_array (GList *list, MonoClass *eclass)
        return res;
 }
 
-/**
- * ves_icall_System_Security_SecurityFrame_GetSecurityStack:
- * @skip: the number of stack frames to skip
- *
- * This function returns an managed array of containing the security
- * informations for each frame (after the skipped ones). This is used for
- * [NonCas]Demand[Choice] where the complete evaluation of the stack is 
- * required.
- */
-MonoArray*
-ves_icall_System_Security_SecurityFrame_GetSecurityStack (gint32 skip)
-{
-       MonoSecurityStack ss;
-
-#if    defined(__ia64__) || defined(__s390__) || defined(__s390x__)
-       skip--;
-#endif
-
-       ss.skips = skip;
-       ss.count = 0;
-       ss.maximum = MONO_CAS_INITIAL_STACK_SIZE;
-       ss.stack = mono_array_new (mono_domain_get (), mono_defaults.runtimesecurityframe_class, ss.maximum);
-       mono_walk_stack (callback_get_stack_frames_security_info, MONO_UNWIND_DEFAULT, &ss);
-       /* g_warning ("STACK RESULT: %d out of %d", ss.count, ss.maximum); */
-       return ss.stack;
-}
-
 static MonoClass*
 get_exception_catch_class (MonoJitExceptionInfo *ei, MonoJitInfo *ji, MonoContext *ctx)
 {
@@ -1169,14 +1027,14 @@ get_exception_catch_class (MonoJitExceptionInfo *ei, MonoJitInfo *ji, MonoContex
 }
 
 /*
- * mini_jit_info_table_find:
+ * mini_jit_info_table_find_ext:
  *
  *   Same as mono_jit_info_table_find, but search all the domains of the current thread
  * if ADDR is not found in DOMAIN. The domain where the method was found is stored into
  * OUT_DOMAIN if it is not NULL.
  */
 MonoJitInfo*
-mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domain)
+mini_jit_info_table_find_ext (MonoDomain *domain, char *addr, gboolean allow_trampolines, MonoDomain **out_domain)
 {
        MonoJitInfo *ji;
        MonoInternalThread *t = mono_thread_internal_current ();
@@ -1185,7 +1043,7 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai
        if (out_domain)
                *out_domain = NULL;
 
-       ji = mono_jit_info_table_find (domain, addr);
+       ji = mono_jit_info_table_find_internal (domain, addr, TRUE, allow_trampolines);
        if (ji) {
                if (out_domain)
                        *out_domain = domain;
@@ -1194,7 +1052,7 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai
 
        /* maybe it is shared code, so we also search in the root domain */
        if (domain != mono_get_root_domain ()) {
-               ji = mono_jit_info_table_find (mono_get_root_domain (), addr);
+               ji = mono_jit_info_table_find_internal (mono_get_root_domain (), addr, TRUE, allow_trampolines);
                if (ji) {
                        if (out_domain)
                                *out_domain = mono_get_root_domain ();
@@ -1208,7 +1066,7 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai
        refs = (t->appdomain_refs) ? *(gpointer *) t->appdomain_refs : NULL;
        for (; refs && *refs; refs++) {
                if (*refs != domain && *refs != mono_get_root_domain ()) {
-                       ji = mono_jit_info_table_find ((MonoDomain*) *refs, addr);
+                       ji = mono_jit_info_table_find_internal ((MonoDomain*) *refs, addr, TRUE, allow_trampolines);
                        if (ji) {
                                if (out_domain)
                                        *out_domain = (MonoDomain*) *refs;
@@ -1220,6 +1078,12 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai
        return NULL;
 }
 
+MonoJitInfo*
+mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domain)
+{
+       return mini_jit_info_table_find_ext (domain, addr, FALSE, out_domain);
+}
+
 /*
  * wrap_non_exception_throws:
  *
@@ -1483,16 +1347,17 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                                        if (is_user_frame)
                                                setup_managed_stacktrace_information ();
 
-                                       if (ji->from_llvm) {
 #ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
+                                       if (ji->from_llvm)
                                                MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
+                                       else
+                                               /* Can't pass the ex object in a register yet to filter clauses, because call_filter () might not support it */
+                                               *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
 #else
-                                               g_assert_not_reached ();
+                                       g_assert (!ji->from_llvm);
+                                       /* store the exception object in bp + ei->exvar_offset */
+                                       *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
 #endif
-                                       } else {
-                                               /* store the exception object in bp + ei->exvar_offset */
-                                               *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
-                                       }
 
 #ifdef MONO_CONTEXT_SET_LLVM_EH_SELECTOR_REG
                                        /*
@@ -1788,16 +1653,13 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                        ex_obj = obj;
 
                                if (((ei->flags == MONO_EXCEPTION_CLAUSE_NONE) || (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER))) {
-                                       if (ji->from_llvm) {
 #ifdef MONO_CONTEXT_SET_LLVM_EXC_REG
-                                               MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
+                                       MONO_CONTEXT_SET_LLVM_EXC_REG (ctx, ex_obj);
 #else
-                                               g_assert_not_reached ();
+                                       g_assert (!ji->from_llvm);
+                                       /* store the exception object in bp + ei->exvar_offset */
+                                       *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
 #endif
-                                       } else {
-                                               /* store the exception object in bp + ei->exvar_offset */
-                                               *((gpointer *)(gpointer)((char *)MONO_CONTEXT_GET_BP (ctx) + ei->exvar_offset)) = ex_obj;
-                                       }
                                }
 
 #ifdef MONO_CONTEXT_SET_LLVM_EH_SELECTOR_REG
@@ -2656,7 +2518,9 @@ mono_thread_state_init_from_sigctx (MonoThreadUnwindState *ctx, void *sigctx)
        if (sigctx)
                mono_sigctx_to_monoctx (sigctx, &ctx->ctx);
        else
-#if MONO_ARCH_HAS_MONO_CONTEXT && !defined(MONO_CROSS_COMPILE)
+#if defined(MONO_CROSS_COMPILE)
+               ctx->valid = FALSE; //A cross compiler doesn't need to suspend.
+#elif MONO_ARCH_HAS_MONO_CONTEXT
                MONO_CONTEXT_GET_CURRENT (ctx->ctx);
 #else
                g_error ("Use a null sigctx requires a working mono-context");
index fddca9c6c346e7be93d95e0a204e6a679a28b2e7..882f3a99506d1c8fe02511771389cba03081b2db 100644 (file)
 #include "mini-gc.h"
 #include <mono/metadata/gc-internal.h>
 
+static gboolean
+get_provenance (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
+{
+       MonoJitInfo *ji = frame->ji;
+       MonoMethod *method;
+       if (!ji)
+               return FALSE;
+       method = jinfo_get_method (ji);
+       if (method->wrapper_type != MONO_WRAPPER_NONE)
+               return FALSE;
+       *(gpointer *)data = method;
+       return TRUE;
+}
+
+static gpointer
+get_provenance_func (void)
+{
+       gpointer provenance = NULL;
+       mono_walk_stack (get_provenance, MONO_UNWIND_DEFAULT, (gpointer)&provenance);
+       return provenance;
+}
+
 #if 0
 //#if defined(MONO_ARCH_GC_MAPS_SUPPORTED)
 
@@ -2492,6 +2514,7 @@ mini_gc_init (void)
        cb.thread_suspend_func = thread_suspend_func;
        /* Comment this out to disable precise stack marking */
        cb.thread_mark_func = thread_mark_func;
+       cb.get_provenance_func = get_provenance_func;
        mono_gc_set_gc_callbacks (&cb);
 
        logfile = mono_gc_get_logfile ();
@@ -2551,6 +2574,10 @@ mini_gc_enable_gc_maps_for_aot (void)
 void
 mini_gc_init (void)
 {
+       MonoGCCallbacks cb;
+       memset (&cb, 0, sizeof (cb));
+       cb.get_provenance_func = get_provenance_func;
+       mono_gc_set_gc_callbacks (&cb);
 }
 
 #ifndef DISABLE_JIT
index 4a0947fc2b5794e899ccf6248f8ff926c653ac80..c78f94f3a808aacabfe6a876c50faa9a3f724221 100644 (file)
@@ -15,8 +15,8 @@
 
 #include "mini.h"
 
-//#define ALLOW_PARTIAL_SHARING TRUE
-#define ALLOW_PARTIAL_SHARING FALSE
+#define ALLOW_PARTIAL_SHARING TRUE
+//#define ALLOW_PARTIAL_SHARING FALSE
  
 #if 0
 #define DEBUG(...) __VA_ARGS__
@@ -662,7 +662,25 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                g_assert (mono_error_ok (&error));
                return isig;
        }
+       case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
+       case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
+               MonoJumpInfoVirtMethod *info = data;
+               MonoJumpInfoVirtMethod *res;
+               MonoType *t;
+               MonoDomain *domain = mono_domain_get ();
+               MonoError error;
+
+               // FIXME: Temporary
+               res = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoVirtMethod));
+               t = mono_class_inflate_generic_type (&info->klass->byval_arg, context);
+               res->klass = mono_class_from_mono_type (t);
+               mono_metadata_free_type (t);
+
+               res->method = mono_class_inflate_generic_method_checked (info->method, context, &error);
+               g_assert (mono_error_ok (&error)); /* FIXME don't swallow the error */
 
+               return res;
+       }
        default:
                g_assert_not_reached ();
        }
@@ -702,49 +720,6 @@ class_uninstantiated (MonoClass *class)
        return class;
 }
 
-static gboolean
-generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
-                                                 gboolean allow_partial)
-{
-       int i;
-
-       for (i = 0; i < inst->type_argc; ++i) {
-               MonoType *type = inst->type_argv [i];
-
-               if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR)))
-                       continue;
-               /* Allow non ref arguments if they are primitive types or enums (partial sharing). */
-               if (allow_partial && !type->byref && (((type->type >= MONO_TYPE_BOOLEAN) && (type->type <= MONO_TYPE_R8)) || (type->type == MONO_TYPE_I) || (type->type == MONO_TYPE_U) || (type->type == MONO_TYPE_VALUETYPE && type->data.klass->enumtype)))
-                       continue;
-
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
-/*
- * mono_is_partially_sharable_inst:
- *
- *   Return TRUE if INST has ref and non-ref type arguments.
- */
-gboolean
-mono_is_partially_sharable_inst (MonoGenericInst *inst)
-{
-       int i;
-       gboolean has_refs = FALSE, has_non_refs = FALSE;
-
-       for (i = 0; i < inst->type_argc; ++i) {
-               if (MONO_TYPE_IS_REFERENCE (inst->type_argv [i]) || inst->type_argv [i]->type == MONO_TYPE_VAR || inst->type_argv [i]->type == MONO_TYPE_MVAR)
-                       has_refs = TRUE;
-               else
-                       has_non_refs = TRUE;
-       }
-
-       return has_refs && has_non_refs;
-}
-
 /*
  * get_shared_class:
  *
@@ -753,52 +728,6 @@ mono_is_partially_sharable_inst (MonoGenericInst *inst)
 static MonoClass*
 get_shared_class (MonoClass *class)
 {
-       /*
-        * FIXME: This conflicts with normal instances. Also, some code in this file
-        * like class_get_rgctx_template_oti treats these as normal generic instances
-        * instead of generic classes.
-        */
-       //g_assert_not_reached ();
-
-#if 0
-       /* The gsharedvt changes break this */
-       if (ALLOW_PARTIAL_SHARING)
-               g_assert_not_reached ();
-#endif
-
-#if 0
-       if (class->is_inflated) {
-               MonoGenericContext *context = &class->generic_class->context;
-               MonoGenericContext *container_context;
-               MonoGenericContext shared_context;
-               MonoGenericInst *inst;
-               MonoType **type_argv;
-               int i;
-
-               inst = context->class_inst;
-               if (mono_is_partially_sharable_inst (inst)) {
-                       container_context = &class->generic_class->container_class->generic_container->context;
-                       type_argv = g_new0 (MonoType*, inst->type_argc);
-                       for (i = 0; i < inst->type_argc; ++i) {
-                               if (MONO_TYPE_IS_REFERENCE (inst->type_argv [i]) || inst->type_argv [i]->type == MONO_TYPE_VAR || inst->type_argv [i]->type == MONO_TYPE_MVAR)
-                                       type_argv [i] = container_context->class_inst->type_argv [i];
-                               else
-                                       type_argv [i] = inst->type_argv [i];
-                       }
-
-                       memset (&shared_context, 0, sizeof (MonoGenericContext));
-                       shared_context.class_inst = mono_metadata_get_generic_inst (inst->type_argc, type_argv);
-                       g_free (type_argv);
-
-                       return mono_class_inflate_generic_class (class->generic_class->container_class, &shared_context);
-               } else if (!generic_inst_is_sharable (inst, TRUE, FALSE)) {
-                       /* Happens for partially shared methods of nono-sharable generic class */
-                       return class;
-               }
-       }
-#endif
-
-       // FIXME: Use this in all cases can be problematic wrt domain/assembly unloading
        return class_uninstantiated (class);
 }
 
@@ -1262,6 +1191,57 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                addr = mono_compile_method (data);
                return mini_add_method_trampoline (NULL, data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE), FALSE);
        }
+       case MONO_RGCTX_INFO_VIRT_METHOD_CODE: {
+               MonoJumpInfoVirtMethod *info = data;
+               MonoClass *iface_class = info->method->klass;
+               MonoMethod *method;
+               int ioffset, slot;
+               gpointer addr;
+
+               mono_class_setup_vtable (info->klass);
+               // FIXME: Check type load
+               if (iface_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
+                       ioffset = mono_class_interface_offset (info->klass, iface_class);
+                       g_assert (ioffset != -1);
+               } else {
+                       ioffset = 0;
+               }
+               slot = mono_method_get_vtable_slot (info->method);
+               g_assert (slot != -1);
+               g_assert (info->klass->vtable);
+               method = info->klass->vtable [ioffset + slot];
+
+               addr = mono_compile_method (method);
+               return mini_add_method_trampoline (NULL, method, addr, mono_method_needs_static_rgctx_invoke (method, FALSE), FALSE);
+       }
+       case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
+               MonoJumpInfoVirtMethod *info = data;
+               MonoClass *iface_class = info->method->klass;
+               MonoMethod *method;
+               MonoClass *impl_class;
+               int ioffset, slot;
+
+               mono_class_setup_vtable (info->klass);
+               // FIXME: Check type load
+               if (iface_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
+                       ioffset = mono_class_interface_offset (info->klass, iface_class);
+                       g_assert (ioffset != -1);
+               } else {
+                       ioffset = 0;
+               }
+               slot = mono_method_get_vtable_slot (info->method);
+               g_assert (slot != -1);
+               g_assert (info->klass->vtable);
+               method = info->klass->vtable [ioffset + slot];
+
+               impl_class = method->klass;
+               if (MONO_TYPE_IS_REFERENCE (&impl_class->byval_arg))
+                       return GUINT_TO_POINTER (1);
+               else if (mono_class_is_nullable (impl_class))
+                       return GUINT_TO_POINTER (2);
+               else
+                       return GUINT_TO_POINTER (0);
+       }
 #ifndef DISABLE_REMOTING
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
                return mono_compile_method (mono_marshal_get_remoting_invoke_with_check (data));
@@ -1548,6 +1528,8 @@ mono_rgctx_info_type_to_str (MonoRgctxInfoType type)
        case MONO_RGCTX_INFO_BZERO: return "BZERO";
        case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX: return "NULLABLE_CLASS_BOX";
        case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: return "NULLABLE_CLASS_UNBOX";
+       case MONO_RGCTX_INFO_VIRT_METHOD_CODE: return "VIRT_METHOD_CODE";
+       case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: return "VIRT_METHOD_BOX_TYPE";
        default:
                return "<UNKNOWN RGCTX INFO TYPE>";
        }
@@ -1643,6 +1625,13 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT:
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI:
                return data1 == data2;
+       case MONO_RGCTX_INFO_VIRT_METHOD_CODE:
+       case MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE: {
+               MonoJumpInfoVirtMethod *info1 = data1;
+               MonoJumpInfoVirtMethod *info2 = data2;
+
+               return info1->klass == info2->klass && info1->method == info2->method;
+       }
        default:
                g_assert_not_reached ();
        }
@@ -2039,6 +2028,71 @@ mono_method_lookup_rgctx (MonoVTable *class_vtable, MonoGenericInst *method_inst
        return mrgctx;
 }
 
+
+static gboolean
+generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
+                                                 gboolean allow_partial);
+
+static gboolean
+type_is_sharable (MonoType *type, gboolean allow_type_vars, gboolean allow_partial)
+{
+       if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR)))
+               return TRUE;
+
+       /* Allow non ref arguments if they are primitive types or enums (partial sharing). */
+       if (allow_partial && !type->byref && (((type->type >= MONO_TYPE_BOOLEAN) && (type->type <= MONO_TYPE_R8)) || (type->type == MONO_TYPE_I) || (type->type == MONO_TYPE_U) || (type->type == MONO_TYPE_VALUETYPE && type->data.klass->enumtype)))
+               return TRUE;
+
+       if (allow_partial && !type->byref && type->type == MONO_TYPE_GENERICINST && MONO_TYPE_ISSTRUCT (type)) {
+               MonoGenericClass *gclass = type->data.generic_class;
+
+               if (gclass->context.class_inst && !generic_inst_is_sharable (gclass->context.class_inst, allow_type_vars, allow_partial))
+                       return FALSE;
+               if (gclass->context.method_inst && !generic_inst_is_sharable (gclass->context.method_inst, allow_type_vars, allow_partial))
+                       return FALSE;
+               if (mono_class_is_nullable (mono_class_from_mono_type (type)))
+                       return FALSE;
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+static gboolean
+generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
+                                                 gboolean allow_partial)
+{
+       int i;
+
+       for (i = 0; i < inst->type_argc; ++i) {
+               if (!type_is_sharable (inst->type_argv [i], allow_type_vars, allow_partial))
+                       return FALSE;
+       }
+
+       return TRUE;
+}
+
+/*
+ * mono_is_partially_sharable_inst:
+ *
+ *   Return TRUE if INST has ref and non-ref type arguments.
+ */
+gboolean
+mono_is_partially_sharable_inst (MonoGenericInst *inst)
+{
+       int i;
+       gboolean has_refs = FALSE, has_non_refs = FALSE;
+
+       for (i = 0; i < inst->type_argc; ++i) {
+               if (MONO_TYPE_IS_REFERENCE (inst->type_argv [i]) || inst->type_argv [i]->type == MONO_TYPE_VAR || inst->type_argv [i]->type == MONO_TYPE_MVAR)
+                       has_refs = TRUE;
+               else
+                       has_non_refs = TRUE;
+       }
+
+       return has_refs && has_non_refs;
+}
+
 /*
  * mono_generic_context_is_sharable_full:
  * @context: a generic context
@@ -2196,6 +2250,10 @@ mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_va
        if (!partial_sharing_supported ())
                allow_partial = FALSE;
 
+       if (mono_class_is_nullable (method->klass))
+               // FIXME:
+               allow_partial = FALSE;
+
        if (method->klass->image->dynamic)
                /*
                 * Enabling this causes corlib test failures because the JIT encounters generic instances whose
@@ -2549,18 +2607,15 @@ mini_get_basic_type_from_generic (MonoGenericSharingContext *gsctx, MonoType *ty
        if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) && mini_is_gsharedvt_type_gsctx (gsctx, type))
                return type;
        else if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR)) {
-               MonoTypeEnum constraint = type->data.generic_param->gshared_constraint;
+               MonoType *constraint = type->data.generic_param->gshared_constraint;
                /* The gparam serial encodes the type this gparam can represent */
-               if (constraint == 0) {
+               if (!constraint) {
                        return &mono_defaults.object_class->byval_arg;
                } else {
-                       MonoType t;
                        MonoClass *klass;
 
-                       g_assert (constraint != MONO_TYPE_VALUETYPE);
-                       memset (&t, 0, sizeof (t));
-                       t.type = constraint;
-                       klass = mono_class_from_mono_type (&t);
+                       g_assert (constraint != &mono_defaults.int_class->parent->byval_arg);
+                       klass = mono_class_from_mono_type (constraint);
                        return &klass->byval_arg;
                }
        } else {
@@ -2721,7 +2776,7 @@ mini_method_get_rgctx (MonoMethod *m)
 gboolean
 mini_type_is_vtype (MonoCompile *cfg, MonoType *t)
 {
-       t = mini_native_type_replace_type (t);
+       t = mini_get_underlying_type (cfg, t);
 
        return MONO_TYPE_ISSTRUCT (t) || mini_is_gsharedvt_variable_type (cfg, t);
 }
@@ -2735,13 +2790,19 @@ mini_class_is_generic_sharable (MonoClass *klass)
        return (klass->generic_class && mono_generic_context_is_sharable (&klass->generic_class->context, FALSE));
 }
 
-
 gboolean
 mini_is_gsharedvt_variable_klass (MonoCompile *cfg, MonoClass *klass)
 {
        return mini_is_gsharedvt_variable_type (cfg, &klass->byval_arg);
 }
 
+gboolean
+mini_is_gsharedvt_gparam (MonoType *t)
+{
+       /* Matches get_gsharedvt_type () */
+       return (t->type == MONO_TYPE_VAR || t->type == MONO_TYPE_MVAR) && t->data.generic_param->gshared_constraint && t->data.generic_param->gshared_constraint->type == MONO_TYPE_VALUETYPE;
+}
+
 static char*
 get_shared_gparam_name (MonoTypeEnum constraint, const char *name)
 {
@@ -2749,6 +2810,8 @@ get_shared_gparam_name (MonoTypeEnum constraint, const char *name)
                return g_strdup_printf ("%s_GSHAREDVT", name);
        } else if (constraint == MONO_TYPE_OBJECT) {
                return g_strdup_printf ("%s_REF", name);
+       } else if (constraint == MONO_TYPE_GENERICINST) {
+               return g_strdup_printf ("%s_INST", name);
        } else {
                MonoType t;
                char *tname, *tname2, *res;
@@ -2764,20 +2827,57 @@ get_shared_gparam_name (MonoTypeEnum constraint, const char *name)
        }
 }
 
+typedef struct {
+       MonoGenericParam *par;
+       MonoType *constraint;
+} SharedGParam;
+
+static guint
+shared_gparam_hash (gconstpointer data)
+{
+       SharedGParam *p = (SharedGParam*)data;
+       guint hash;
+
+       hash = mono_metadata_generic_param_hash (p->par);
+       hash = ((hash << 5) - hash) ^ mono_metadata_type_hash (p->constraint);
+
+       return hash;
+}
+
+static gboolean
+shared_gparam_equal (gconstpointer ka, gconstpointer kb)
+{
+       SharedGParam *p1 = (SharedGParam*)ka;
+       SharedGParam *p2 = (SharedGParam*)kb;
+
+       if (p1 == p2)
+               return TRUE;
+       if (p1->par != p2->par)
+               return FALSE;
+       if (!mono_metadata_type_equal (p1->constraint, p2->constraint))
+               return FALSE;
+       return TRUE;
+}
+
 /*
  * get_shared_gparam:
  *
  *   Create an anonymous gparam with a type variable with a constraint which encodes which types can match it.
  */
 static MonoType*
-get_shared_gparam (MonoType *t, MonoTypeEnum constraint)
+get_shared_gparam (MonoType *t, MonoType *constraint)
 {
        MonoGenericParam *par = t->data.generic_param;
        MonoGenericParam *copy;
+       SharedGParam key;
        MonoType *res;
        MonoImage *image = NULL;
        char *name;
 
+       memset (&key, 0, sizeof (key));
+       key.par = par;
+       key.constraint = constraint;
+
        g_assert (mono_generic_param_info (par));
        /* image might not be set for sre */
        if (par->owner && par->owner->image) {
@@ -2788,15 +2888,15 @@ get_shared_gparam (MonoType *t, MonoTypeEnum constraint)
                        image->gshared_types_len = MONO_TYPE_INTERNAL;
                        image->gshared_types = g_new0 (GHashTable*, image->gshared_types_len);
                }
-               if (!image->gshared_types [constraint])
-                       image->gshared_types [constraint] = g_hash_table_new (NULL, NULL);
-               res = g_hash_table_lookup (image->gshared_types [constraint], par);
+               if (!image->gshared_types [constraint->type])
+                       image->gshared_types [constraint->type] = g_hash_table_new (shared_gparam_hash, shared_gparam_equal);
+               res = g_hash_table_lookup (image->gshared_types [constraint->type], &key);
                mono_image_unlock (image);
                if (res)
                        return res;
                copy = mono_image_alloc0 (image, sizeof (MonoGenericParamFull));
                memcpy (copy, par, sizeof (MonoGenericParamFull));
-               name = get_shared_gparam_name (constraint, ((MonoGenericParamFull*)copy)->info.name);
+               name = get_shared_gparam_name (constraint->type, ((MonoGenericParamFull*)copy)->info.name);
                ((MonoGenericParamFull*)copy)->info.name = mono_image_strdup (image, name);
                g_free (name);
        } else {
@@ -2807,38 +2907,75 @@ get_shared_gparam (MonoType *t, MonoTypeEnum constraint)
        copy->owner = NULL;
        // FIXME:
        copy->image = mono_defaults.corlib;
+
        copy->gshared_constraint = constraint;
        res = mono_metadata_type_dup (NULL, t);
        res->data.generic_param = copy;
 
        if (image) {
+               SharedGParam *dkey;
+
+               dkey = mono_image_alloc0 (image, sizeof (SharedGParam));
+               dkey->par = par;
+               dkey->constraint = constraint;
+
                mono_image_lock (image);
                /* Duplicates are ok */
-               g_hash_table_insert (image->gshared_types [constraint], par, res);
+               g_hash_table_insert (image->gshared_types [constraint->type], dkey, res);
                mono_image_unlock (image);
        }
 
        return res;
 }
 
+static MonoGenericInst*
+get_shared_inst (MonoGenericInst *inst, MonoGenericInst *shared_inst, MonoGenericContainer *container, gboolean all_vt, gboolean gsharedvt, gboolean partial);
+
 static MonoType*
 get_shared_type (MonoType *t, MonoType *type)
 {
        MonoTypeEnum ttype;
 
+       if (!type->byref && type->type == MONO_TYPE_GENERICINST && MONO_TYPE_ISSTRUCT (type)) {
+               MonoGenericClass *gclass = type->data.generic_class;
+               MonoGenericContext context;
+               MonoClass *k;
+
+               memset (&context, 0, sizeof (context));
+               if (gclass->context.class_inst)
+                       context.class_inst = get_shared_inst (gclass->context.class_inst, gclass->container_class->generic_container->context.class_inst, NULL, FALSE, FALSE, TRUE);
+               if (gclass->context.method_inst)
+                       context.method_inst = get_shared_inst (gclass->context.method_inst, gclass->container_class->generic_container->context.method_inst, NULL, FALSE, FALSE, TRUE);
+
+               k = mono_class_inflate_generic_class (gclass->container_class, &context);
+
+               return get_shared_gparam (t, &k->byval_arg);
+       }
+
        g_assert (!type->byref && (((type->type >= MONO_TYPE_BOOLEAN) && (type->type <= MONO_TYPE_R8)) || (type->type == MONO_TYPE_I) || (type->type == MONO_TYPE_U) || (type->type == MONO_TYPE_VALUETYPE && type->data.klass->enumtype)));
 
        /* Create a type variable with a constraint which encodes which types can match it */
        ttype = type->type;
        if (type->type == MONO_TYPE_VALUETYPE)
                ttype = mono_class_enum_basetype (type->data.klass)->type;
-       return get_shared_gparam (t, ttype);
+
+       {
+               MonoType t2;
+               MonoClass *klass;
+
+               memset (&t2, 0, sizeof (t2));
+               t2.type = ttype;
+               klass = mono_class_from_mono_type (&t2);
+
+               return get_shared_gparam (t, &klass->byval_arg);
+       }
 }
 
 static MonoType*
 get_gsharedvt_type (MonoType *t)
 {
-       return get_shared_gparam (t, MONO_TYPE_VALUETYPE);
+       /* Use TypeHandle as the constraint type since its a valuetype */
+       return get_shared_gparam (t, &mono_defaults.typehandle_class->byval_arg);
 }
 
 static MonoGenericInst*
@@ -2854,7 +2991,7 @@ get_shared_inst (MonoGenericInst *inst, MonoGenericInst *shared_inst, MonoGeneri
                        type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
                } else if ((MONO_TYPE_IS_REFERENCE (inst->type_argv [i]) || inst->type_argv [i]->type == MONO_TYPE_VAR || inst->type_argv [i]->type == MONO_TYPE_MVAR)) {
                        g_assert (shared_inst);
-                       type_argv [i] = get_shared_gparam (shared_inst->type_argv [i], MONO_TYPE_OBJECT);
+                       type_argv [i] = get_shared_gparam (shared_inst->type_argv [i], &mono_defaults.object_class->byval_arg);
                } else if (partial) {
                        /* These types match the ones in generic_inst_is_sharable () */
                        type_argv [i] = get_shared_type (shared_inst->type_argv [i], inst->type_argv [i]);
index 2daf4fca598bad5064aa8f83e23c7167671159cc..eb102115c883e6d6e9acce74d100469a12878ad5 100644 (file)
@@ -3777,7 +3777,7 @@ ia64_patch (unsigned char* code, gpointer target)
 }
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors)
 {
        MonoJumpInfo *patch_info;
 
@@ -4631,12 +4631,6 @@ mono_arch_find_imt_method (mgreg_t *regs, guint8 *code)
        return (MonoMethod*)regs [IA64_R9];
 }
 
-void
-mono_arch_emit_imt_argument (MonoCompile *cfg, MonoCallInst *call, MonoInst *imt_arg)
-{
-       /* Done by the implementation of the CALL_MEMBASE opcodes */
-}
-
 gpointer
 mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 {
index faf1de75321cda573e8f16074b8d2c967a9441a4..d3baa203e55f29656aa9a0cc12e2eca3b669fdb6 100644 (file)
@@ -1106,6 +1106,8 @@ emit_volatile_load (EmitContext *ctx, int vreg)
                 */
                if (t->type == MONO_TYPE_U1 || t->type == MONO_TYPE_U2 || t->type == MONO_TYPE_CHAR || t->type == MONO_TYPE_BOOLEAN)
                        v = LLVMBuildZExt (ctx->builder, v, LLVMInt32Type (), "");
+               else if (t->type == MONO_TYPE_I1 || t->type == MONO_TYPE_I2)
+                       v = LLVMBuildSExt (ctx->builder, v, LLVMInt32Type (), "");
                else if (t->type == MONO_TYPE_U8)
                        v = LLVMBuildZExt (ctx->builder, v, LLVMInt64Type (), "");
        }
@@ -2573,11 +2575,6 @@ emit_handler_start (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef builder
                 * These symbols are not really used, the clause_index is embedded into the EH tables generated by DwarfMonoException in LLVM.
                 */
                LLVMSetLinkage (type_info, LLVMInternalLinkage);
-
-#ifdef TARGET_ARM
-               // test_0_invalid_unbox_arrays () fails
-               LLVM_FAILURE (ctx, "aot+clauses");
-#endif
        } else {
                /*
                 * After the cfg mempool is freed, the type info will point to stale memory,
@@ -2697,6 +2694,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                }
 
                emit_handler_start (ctx, bb, builder);
+               CHECK_FAILURE (ctx);
                builder = ctx->builder;
        }
 
@@ -5539,70 +5537,66 @@ add_intrinsics (LLVMModuleRef module)
         * type doesn't seem to do any locking.
         */
        {
-               LLVMTypeRef memset_params [] = { LLVMPointerType (LLVMInt8Type (), 0), LLVMInt8Type (), LLVMInt32Type (), LLVMInt32Type (), LLVMInt1Type () };
+               LLVMTypeRef params [] = { LLVMPointerType (LLVMInt8Type (), 0), LLVMInt8Type (), LLVMInt32Type (), LLVMInt32Type (), LLVMInt1Type () };
 
                memset_param_count = 5;
                memset_func_name = "llvm.memset.p0i8.i32";
 
-               LLVMAddFunction (module, memset_func_name, LLVMFunctionType (LLVMVoidType (), memset_params, memset_param_count, FALSE));
+               AddFunc (module, memset_func_name, LLVMVoidType (), params, memset_param_count);
        }
 
        {
-               LLVMTypeRef memcpy_params [] = { LLVMPointerType (LLVMInt8Type (), 0), LLVMPointerType (LLVMInt8Type (), 0), LLVMInt32Type (), LLVMInt32Type (), LLVMInt1Type () };
+               LLVMTypeRef params [] = { LLVMPointerType (LLVMInt8Type (), 0), LLVMPointerType (LLVMInt8Type (), 0), LLVMInt32Type (), LLVMInt32Type (), LLVMInt1Type () };
 
                memcpy_param_count = 5;
                memcpy_func_name = "llvm.memcpy.p0i8.p0i8.i32";
 
-               LLVMAddFunction (module, memcpy_func_name, LLVMFunctionType (LLVMVoidType (), memcpy_params, memcpy_param_count, FALSE));
+               AddFunc (module, memcpy_func_name, LLVMVoidType (), params, memcpy_param_count);
        }
 
        {
                LLVMTypeRef params [] = { LLVMDoubleType () };
 
-               LLVMAddFunction (module, "llvm.sin.f64", LLVMFunctionType (LLVMDoubleType (), params, 1, FALSE));
-               LLVMAddFunction (module, "llvm.cos.f64", LLVMFunctionType (LLVMDoubleType (), params, 1, FALSE));
-               LLVMAddFunction (module, "llvm.sqrt.f64", LLVMFunctionType (LLVMDoubleType (), params, 1, FALSE));
+               AddFunc (module, "llvm.sin.f64", LLVMDoubleType (), params, 1);
+               AddFunc (module, "llvm.cos.f64", LLVMDoubleType (), params, 1);
+               AddFunc (module, "llvm.sqrt.f64", LLVMDoubleType (), params, 1);
 
                /* This isn't an intrinsic, instead llvm seems to special case it by name */
-               LLVMAddFunction (module, "fabs", LLVMFunctionType (LLVMDoubleType (), params, 1, FALSE));
+               AddFunc (module, "fabs", LLVMDoubleType (), params, 1);
        }
 
        {
                LLVMTypeRef ovf_res_i32 [] = { LLVMInt32Type (), LLVMInt1Type () };
-               LLVMTypeRef ovf_params_i32 [] = { LLVMInt32Type (), LLVMInt32Type () };
-
-               LLVMAddFunction (module, "llvm.sadd.with.overflow.i32", LLVMFunctionType (LLVMStructType (ovf_res_i32, 2, FALSE), ovf_params_i32, 2, FALSE));
-               LLVMAddFunction (module, "llvm.uadd.with.overflow.i32", LLVMFunctionType (LLVMStructType (ovf_res_i32, 2, FALSE), ovf_params_i32, 2, FALSE));
-               LLVMAddFunction (module, "llvm.ssub.with.overflow.i32", LLVMFunctionType (LLVMStructType (ovf_res_i32, 2, FALSE), ovf_params_i32, 2, FALSE));
-               LLVMAddFunction (module, "llvm.usub.with.overflow.i32", LLVMFunctionType (LLVMStructType (ovf_res_i32, 2, FALSE), ovf_params_i32, 2, FALSE));
-               LLVMAddFunction (module, "llvm.smul.with.overflow.i32", LLVMFunctionType (LLVMStructType (ovf_res_i32, 2, FALSE), ovf_params_i32, 2, FALSE));
-               LLVMAddFunction (module, "llvm.umul.with.overflow.i32", LLVMFunctionType (LLVMStructType (ovf_res_i32, 2, FALSE), ovf_params_i32, 2, FALSE));
+               LLVMTypeRef params [] = { LLVMInt32Type (), LLVMInt32Type () };
+               LLVMTypeRef ret_type = LLVMStructType (ovf_res_i32, 2, FALSE);
+
+               AddFunc (module, "llvm.sadd.with.overflow.i32", ret_type, params, 2);
+               AddFunc (module, "llvm.sadd.with.overflow.i32", ret_type, params, 2);
+               AddFunc (module, "llvm.uadd.with.overflow.i32", ret_type, params, 2);
+               AddFunc (module, "llvm.ssub.with.overflow.i32", ret_type, params, 2);
+               AddFunc (module, "llvm.usub.with.overflow.i32", ret_type, params, 2);
+               AddFunc (module, "llvm.smul.with.overflow.i32", ret_type, params, 2);
+               AddFunc (module, "llvm.umul.with.overflow.i32", ret_type, params, 2);
        }
 
        {
                LLVMTypeRef ovf_res_i64 [] = { LLVMInt64Type (), LLVMInt1Type () };
-               LLVMTypeRef ovf_params_i64 [] = { LLVMInt64Type (), LLVMInt64Type () };
-
-               LLVMAddFunction (module, "llvm.sadd.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
-               LLVMAddFunction (module, "llvm.uadd.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
-               LLVMAddFunction (module, "llvm.ssub.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
-               LLVMAddFunction (module, "llvm.usub.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
-               LLVMAddFunction (module, "llvm.smul.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
-               LLVMAddFunction (module, "llvm.umul.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
+               LLVMTypeRef params [] = { LLVMInt64Type (), LLVMInt64Type () };
+               LLVMTypeRef ret_type = LLVMStructType (ovf_res_i64, 2, FALSE);
+
+               AddFunc (module, "llvm.sadd.with.overflow.i64", ret_type, params, 2);
+               AddFunc (module, "llvm.uadd.with.overflow.i64", ret_type, params, 2);
+               AddFunc (module, "llvm.ssub.with.overflow.i64", ret_type, params, 2);
+               AddFunc (module, "llvm.usub.with.overflow.i64", ret_type, params, 2);
+               AddFunc (module, "llvm.smul.with.overflow.i64", ret_type, params, 2);
+               AddFunc (module, "llvm.umul.with.overflow.i64", ret_type, params, 2);
        }
 
        /* EH intrinsics */
        {
-               LLVMTypeRef arg_types [2];
-               LLVMTypeRef ret_type;
-
-               arg_types [0] = LLVMPointerType (LLVMInt8Type (), 0);
-               arg_types [1] = LLVMPointerType (LLVMInt8Type (), 0);
-               ret_type = LLVMInt32Type ();
-
-               LLVMAddFunction (module, "mono_personality", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
+               AddFunc (module, "mono_personality", LLVMVoidType (), NULL, 0);
 
-               LLVMAddFunction (module, "llvm_resume_unwind_trampoline", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
+               AddFunc (module, "llvm_resume_unwind_trampoline", LLVMVoidType (), NULL, 0);
        }
 
        /* SSE intrinsics */
@@ -5765,7 +5759,7 @@ add_intrinsics (LLVMModuleRef module)
                        arg_types [2] = LLVMInt1Type ();
                        arg_types [3] = LLVMInt32Type ();
                        sprintf (name, "llvm.mono.load.i%d.p0i%d", i * 8, i * 8);
-                       LLVMAddFunction (module, name, LLVMFunctionType (LLVMIntType (i * 8), arg_types, 4, FALSE));
+                       AddFunc (module, name, LLVMIntType (i * 8), arg_types, 4);
 
                        arg_types [0] = LLVMIntType (i * 8);
                        arg_types [1] = LLVMPointerType (LLVMIntType (i * 8), 0);
@@ -5773,7 +5767,7 @@ add_intrinsics (LLVMModuleRef module)
                        arg_types [3] = LLVMInt1Type ();
                        arg_types [4] = LLVMInt32Type ();
                        sprintf (name, "llvm.mono.store.i%d.p0i%d", i * 8, i * 8);
-                       LLVMAddFunction (module, name, LLVMFunctionType (LLVMVoidType (), arg_types, 5, FALSE));
+                       AddFunc (module, name, LLVMVoidType (), arg_types, 5);
                }
        }
 }
@@ -6092,14 +6086,13 @@ emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, co
        MonoDebugMethodInfo *minfo = ctx->minfo;
        char *source_file, *dir, *filename;
        LLVMValueRef md, args [16], ctx_args [16], md_args [64], type_args [16], ctx_md, type_md;
-       int n_il_offsets;
-       int *il_offsets;
-       int *line_numbers;
+       MonoSymSeqPoint *sym_seq_points;
+       int n_seq_points;
 
        if (!minfo)
                return NULL;
 
-       mono_debug_symfile_get_line_numbers_full (minfo, &source_file, NULL, &n_il_offsets, &il_offsets, &line_numbers, NULL, NULL, NULL, NULL);
+       mono_debug_symfile_get_seq_points (minfo, &source_file, NULL, NULL, &sym_seq_points, &n_seq_points);
        if (!source_file)
                source_file = g_strdup ("<unknown>");
        dir = g_path_get_dirname (source_file);
@@ -6139,8 +6132,8 @@ emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, co
        md_args [4] = md_string (name);
        md_args [5] = md_string (name);
        /* Line number */
-       if (n_il_offsets)
-               md_args [6] = LLVMConstInt (LLVMInt32Type (), line_numbers [0], FALSE);
+       if (n_seq_points)
+               md_args [6] = LLVMConstInt (LLVMInt32Type (), sym_seq_points [0].line, FALSE);
        else
                md_args [6] = LLVMConstInt (LLVMInt32Type (), 1, FALSE);
        /* Type */
@@ -6177,8 +6170,7 @@ emit_dbg_subprogram (EmitContext *ctx, MonoCompile *cfg, LLVMValueRef method, co
        g_free (dir);
        g_free (filename);
        g_free (source_file);
-       g_free (il_offsets);
-       g_free (line_numbers);
+       g_free (sym_seq_points);
 
        return md;
 }
index 833a1facc7a4155adf638def6c4d5fde605ffcb0..bbcb6ac0f2ef6eac7e3f1d1a9dd17fe84cfd42eb 100644 (file)
@@ -4663,7 +4663,7 @@ mono_arch_register_lowlevel_calls (void)
 }
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors)
 {
        MonoJumpInfo *patch_info;
 
index 1d84ef867b0ef480a649fabe1337ac56d56a36dc..1dff79050641082d2b0d88274cdf2492f997431a 100644 (file)
@@ -17,7 +17,7 @@
 #endif
 
 
-#define MONO_ARCH_CPU_SPEC mips_desc
+#define MONO_ARCH_CPU_SPEC mono_mips_desc
 
 #define MONO_MAX_IREGS 32
 #define MONO_MAX_FREGS 32
index cdab7a8481523fba87997df9f72b1e22db0d4583..2484e6cc9beb0d5c7a66be0e9058631963609a4c 100644 (file)
@@ -640,6 +640,11 @@ MINI_OP(OP_CALL_HANDLER  , "call_handler", NONE, NONE, NONE)
 MINI_OP(OP_START_HANDLER  , "start_handler", NONE, NONE, NONE)
 MINI_OP(OP_ENDFILTER,  "endfilter", NONE, IREG, NONE)
 MINI_OP(OP_ENDFINALLY,  "endfinally", NONE, NONE, NONE)
+/*
+ * Returns the exception object passed to catch clauses in
+ * by the EH code in a register.
+ */
+MINI_OP(OP_GET_EX_OBJ, "get_ex_obj", IREG, NONE, NONE)
 
 /* inline (long)int * (long)int */
 MINI_OP(OP_BIGMUL, "bigmul", LREG, IREG, IREG)
@@ -1066,8 +1071,8 @@ MINI_OP(OP_GC_PARAM_SLOT_LIVENESS_DEF, "gc_param_slot_liveness_def", NONE, NONE,
 /* #if defined(__native_client_codegen__) || defined(__native_client__) */
 /* We have to define these in terms of the TARGET defines, not NaCl defines */
 /* because genmdesc.pl doesn't have multiple defines per platform.          */
-#if defined(TARGET_AMD64) || defined(TARGET_X86) || defined(TARGET_ARM)
-MINI_OP(OP_NACL_GC_SAFE_POINT,     "nacl_gc_safe_point", IREG, NONE, NONE)
+#if defined(TARGET_AMD64) || defined(TARGET_X86)
+MINI_OP(OP_GC_SAFE_POINT,     "gc_safe_point", NONE, IREG, NONE)
 #endif
 
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
index 5390d7a33f6284c8a99b62209396fb2c78e376d7..cfb8461d4e3d16e30ff12c51f3f60a385cc0b781 100644 (file)
@@ -209,79 +209,6 @@ MONO_SIG_HANDLER_FUNC (static, sigabrt_signal_handler)
        }
 }
 
-MONO_SIG_HANDLER_FUNC (static, sigusr1_signal_handler)
-{
-       gboolean running_managed;
-       MonoException *exc;
-       MonoInternalThread *thread = mono_thread_internal_current ();
-       MonoDomain *domain = mono_domain_get ();
-       void *ji;
-       MONO_SIG_HANDLER_GET_CONTEXT;
-
-       if (!thread || !domain) {
-               /* The thread might not have started up yet */
-               /* FIXME: Specify the synchronization with start_wrapper () in threads.c */
-               mono_debugger_agent_thread_interrupt (ctx, NULL);
-               return;
-       }
-
-       if (thread->ignore_next_signal) {
-               thread->ignore_next_signal = FALSE;
-               return;
-       }
-
-       if (thread->thread_dump_requested) {
-               thread->thread_dump_requested = FALSE;
-
-               mono_print_thread_dump (ctx);
-       }
-
-       /*
-        * This is an async signal, so the code below must not call anything which
-        * is not async safe. That includes the pthread locking functions. If we
-        * know that we interrupted managed code, then locking is safe.
-        */
-       /*
-        * On OpenBSD, ctx can be NULL if we are interrupting poll ().
-        */
-       if (ctx) {
-               ji = mono_jit_info_table_find (mono_domain_get (), mono_arch_ip_from_context(ctx));
-               running_managed = ji != NULL;
-
-               if (mono_debugger_agent_thread_interrupt (ctx, ji))
-                       return;
-       } else {
-               running_managed = FALSE;
-       }
-
-       /* We can't do handler block checking from metadata since it requires doing
-        * a stack walk with context.
-        *
-        * FIXME add full-aot support.
-        */
-#ifdef MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX
-       if (!mono_aot_only && ctx) {
-               MonoThreadUnwindState unwind_state;
-               if (mono_thread_state_init_from_sigctx (&unwind_state, ctx)) {
-                       if (mono_install_handler_block_guard (&unwind_state)) {
-#ifndef HOST_WIN32
-                               /*Clear current thread from been wapi interrupted otherwise things can go south*/
-                               wapi_clear_interruption ();
-#endif
-                               return;
-                       }
-               }
-       }
-#endif
-
-       exc = mono_thread_request_interruption (running_managed); 
-       if (!exc)
-               return;
-
-       mono_arch_handle_exception (ctx, exc);
-}
-
-
 #if defined(__i386__) || defined(__x86_64__)
 #define FULL_STAT_PROFILER_BACKTRACE 1
 #define CURRENT_FRAME_GET_BASE_POINTER(f) (* (gpointer*)(f))
@@ -429,28 +356,13 @@ MONO_SIG_HANDLER_FUNC (static, sigprof_signal_handler)
 MONO_SIG_HANDLER_FUNC (static, sigquit_signal_handler)
 {
        gboolean res;
-       MONO_SIG_HANDLER_GET_CONTEXT;
 
        /* We use this signal to start the attach agent too */
        res = mono_attach_start ();
        if (res)
                return;
 
-       if (mono_thread_info_new_interrupt_enabled ()) {
-               mono_threads_request_thread_dump ();
-       } else {
-               printf ("Full thread dump:\n");
-
-               mono_threads_request_thread_dump ();
-
-               /*
-                * print_thread_dump () skips the current thread, since sending a signal
-                * to it would invoke the signal handler below the sigquit signal handler,
-                * and signal handlers don't create an lmf, so the stack walk could not
-                * be performed.
-                */
-               mono_print_thread_dump (ctx);
-       }
+       mono_threads_request_thread_dump ();
 
        mono_chain_signal (MONO_SIG_HANDLER_PARAMS);
 }
@@ -500,7 +412,6 @@ add_signal_handler (int signo, gpointer handler)
                sigset_t block_mask;
      
                sigemptyset (&block_mask);
-               sigaddset (&sa.sa_mask, mono_thread_get_abort_signal ());
        }
 #else
        sa.sa_handler = handler;
@@ -552,14 +463,11 @@ mono_runtime_posix_install_handlers (void)
        if (mono_jit_trace_calls != NULL)
                add_signal_handler (SIGUSR2, sigusr2_signal_handler);
 
-       if (!mono_thread_info_new_interrupt_enabled ())
-               add_signal_handler (mono_thread_get_abort_signal (), sigusr1_signal_handler);
        /* it seems to have become a common bug for some programs that run as parents
         * of many processes to block signal delivery for real time signals.
         * We try to detect and work around their breakage here.
         */
        sigemptyset (&signal_set);
-       sigaddset (&signal_set, mono_thread_get_abort_signal ());
        if (mono_gc_get_suspend_signal () != -1)
                sigaddset (&signal_set, mono_gc_get_suspend_signal ());
        if (mono_gc_get_restart_signal () != -1)
@@ -596,8 +504,6 @@ mono_runtime_cleanup_handlers (void)
        if (mono_jit_trace_calls != NULL)
                remove_signal_handler (SIGUSR2);
 
-       remove_signal_handler (mono_thread_get_abort_signal ());
-
        remove_signal_handler (SIGABRT);
 
        remove_signal_handler (SIGSEGV);
index 80a6c8af2481f1850e4fb7ebb3befd1125f774b3..0cf56a986d5a435a545d2b028bc0c927c6d35f30 100644 (file)
@@ -4555,7 +4555,7 @@ mono_arch_register_lowlevel_calls (void)
 
 #ifndef DISABLE_JIT
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors)
 {
        MonoJumpInfo *patch_info;
        gboolean compile_aot = !run_cctors;
index 1d9997b92746dbc9fe28f55150ca4929b0cdb3c1..93bd63e5b027e2beef68eacd28e2ecd378dadff0 100644 (file)
@@ -8,9 +8,9 @@
 #include <glib.h>
 
 #ifdef __mono_ppc64__
-#define MONO_ARCH_CPU_SPEC ppc64_cpu_desc
+#define MONO_ARCH_CPU_SPEC mono_ppc64_cpu_desc
 #else
-#define MONO_ARCH_CPU_SPEC ppcg4
+#define MONO_ARCH_CPU_SPEC mono_ppcg4
 #endif
 
 #define MONO_MAX_IREGS 32
old mode 100755 (executable)
new mode 100644 (file)
index 215bbf5..9ae1a99
@@ -86,8 +86,7 @@ MONO_FAST_TLS_DECLARE(mono_jit_tls);
 gboolean mono_compile_aot = FALSE;
 /* If this is set, no code is generated dynamically, everything is taken from AOT files */
 gboolean mono_aot_only = FALSE;
-/* Whenever to use IMT */
-gboolean mono_use_imt = TRUE;
+
 const char *mono_build_date;
 gboolean mono_do_signal_chaining;
 gboolean mono_do_crash_chaining;
@@ -227,29 +226,28 @@ mono_print_method_from_ip (void *ip)
        FindTrampUserData user_data;
        MonoGenericSharingContext*gsctx;
        const char *shared_type;
-       GSList *l;
 
-       ji = mini_jit_info_table_find (domain, ip, &target_domain);
+       ji = mini_jit_info_table_find_ext (domain, ip, TRUE, &target_domain);
+       if (ji && ji->is_trampoline) {
+               MonoTrampInfo *tinfo = ji->d.tramp_info;
+
+               printf ("IP %p is at offset 0x%x of trampoline '%s'.\n", ip, (int)((guint8*)ip - tinfo->code), tinfo->name);
+               return;
+       }
+
        if (!ji) {
                user_data.ip = ip;
                user_data.method = NULL;
                mono_domain_lock (domain);
                g_hash_table_foreach (domain_jit_info (domain)->jit_trampoline_hash, find_tramp, &user_data);
                mono_domain_unlock (domain);
+
                if (user_data.method) {
                        char *mname = mono_method_full_name (user_data.method, TRUE);
                        printf ("IP %p is a JIT trampoline for %s\n", ip, mname);
                        g_free (mname);
                        return;
                }
-               for (l = tramp_infos; l; l = l->next) {
-                       MonoTrampInfo *tinfo = l->data;
-
-                       if ((guint8*)ip >= tinfo->code && (guint8*)ip <= tinfo->code + tinfo->code_size) {
-                               printf ("IP %p is at offset 0x%x of trampoline '%s'.\n", ip, (int)((guint8*)ip - tinfo->code), tinfo->name);
-                               return;
-                       }
-               }
 
                g_print ("No method at %p\n", ip);
                fflush (stdout);
@@ -472,6 +470,20 @@ mono_tramp_info_free (MonoTrampInfo *info)
        g_free (info);
 }
 
+static void
+register_trampoline_jit_info (MonoDomain *domain, MonoTrampInfo *info)
+{
+       MonoJitInfo *ji;
+
+       ji = mono_domain_alloc0 (domain, mono_jit_info_size (0, 0, 0));
+       mono_jit_info_init (ji, NULL, info->code, info->code_size, 0, 0, 0);
+       ji->d.tramp_info = info;
+       ji->is_trampoline = TRUE;
+       // FIXME: Unwind info
+
+       mono_jit_info_table_add (domain, ji);
+}
+
 /*
  * mono_tramp_info_register:
  *
@@ -498,6 +510,9 @@ mono_tramp_info_register (MonoTrampInfo *info)
 
        mono_save_trampoline_xdebug_info (info);
 
+       if (mono_get_root_domain ())
+               register_trampoline_jit_info (mono_get_root_domain (), copy);
+
        if (mono_jit_map_is_enabled ())
                mono_emit_jit_tramp (info->code, info->code_size, info->name);
 
@@ -517,6 +532,19 @@ mono_tramp_info_cleanup (void)
        g_slist_free (tramp_infos);
 }
 
+/* Register trampolines created before the root domain was created in the jit info tables */
+static void
+register_trampolines (MonoDomain *domain)
+{
+       GSList *l;
+
+       for (l = tramp_infos; l; l = l->next) {
+               MonoTrampInfo *info = l->data;
+
+               register_trampoline_jit_info (domain, info);
+       }
+}
+
 G_GNUC_UNUSED static void
 break_count (void)
 {
@@ -630,11 +658,11 @@ register_opcode_emulation (int opcode, const char *name, const char *sigstr, gpo
 /*
  * For JIT icalls implemented in C.
  * NAME should be the same as the name of the C function whose address is FUNC.
- * If SAVE is TRUE, no wrapper is generated. This is for perf critical icalls which
+ * If @avoid_wrapper is TRUE, no wrapper is generated. This is for perf critical icalls which
  * can't throw exceptions.
  */
 static void
-register_icall (gpointer func, const char *name, const char *sigstr, gboolean save)
+register_icall (gpointer func, const char *name, const char *sigstr, gboolean avoid_wrapper)
 {
        MonoMethodSignature *sig;
 
@@ -643,7 +671,7 @@ register_icall (gpointer func, const char *name, const char *sigstr, gboolean sa
        else
                sig = NULL;
 
-       mono_register_jit_icall_full (func, name, sig, save, FALSE, save ? name : NULL);
+       mono_register_jit_icall_full (func, name, sig, avoid_wrapper, FALSE, avoid_wrapper ? name : NULL);
 }
 
 static void
@@ -1108,6 +1136,16 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                //memcpy (info->locals_types, oinfo->locals_types, info->nlocals * sizeof (MonoType*));
                break;
        }
+       case MONO_PATCH_INFO_VIRT_METHOD: {
+               MonoJumpInfoVirtMethod *info;
+               MonoJumpInfoVirtMethod *oinfo;
+
+               oinfo = patch_info->data.virt_method;
+               info = mono_mempool_alloc0 (mp, sizeof (MonoJumpInfoVirtMethod));
+               res->data.virt_method = info;
+               memcpy (info, oinfo, sizeof (MonoJumpInfoVirtMethod));
+               break;
+       }
        default:
                break;
        }
@@ -1166,6 +1204,7 @@ mono_patch_info_hash (gconstpointer data)
        case MONO_PATCH_INFO_MONITOR_ENTER_V4:
        case MONO_PATCH_INFO_MONITOR_EXIT:
        case MONO_PATCH_INFO_GOT_OFFSET:
+       case MONO_PATCH_INFO_GC_SAFE_POINT_FLAG:
                return (ji->type << 8);
        case MONO_PATCH_INFO_CASTCLASS_CACHE:
                return (ji->type << 8) | (ji->data.index);
@@ -1180,6 +1219,11 @@ mono_patch_info_hash (gconstpointer data)
                return (ji->type << 8) | (gsize)ji->data.del_tramp->klass | (gsize)ji->data.del_tramp->method | (gsize)ji->data.del_tramp->virtual;
        case MONO_PATCH_INFO_LDSTR_LIT:
                return g_str_hash (ji->data.target);
+       case MONO_PATCH_INFO_VIRT_METHOD: {
+               MonoJumpInfoVirtMethod *info = ji->data.virt_method;
+
+               return (ji->type << 8) | (gssize)info->klass | (gssize)info->method;
+       }
        default:
                printf ("info type: %d\n", ji->type);
                mono_print_ji (ji); printf ("\n");
@@ -1237,6 +1281,8 @@ mono_patch_info_equal (gconstpointer ka, gconstpointer kb)
                return ji1->data.del_tramp->klass == ji2->data.del_tramp->klass && ji1->data.del_tramp->method == ji2->data.del_tramp->method && ji1->data.del_tramp->virtual == ji2->data.del_tramp->virtual;
        case MONO_PATCH_INFO_CASTCLASS_CACHE:
                return ji1->data.index == ji2->data.index;
+       case MONO_PATCH_INFO_VIRT_METHOD:
+               return ji1->data.virt_method->klass == ji2->data.virt_method->klass && ji1->data.virt_method->method == ji2->data.virt_method->method;
        default:
                if (ji1->data.target != ji2->data.target)
                        return 0;
@@ -1339,6 +1385,15 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                target = code_slot;
                break;
        }
+       case MONO_PATCH_INFO_GC_SAFE_POINT_FLAG:
+#if defined(__native_client_codegen__)
+               target = (gpointer)&__nacl_thread_suspension_needed;
+#elif defined (USE_COOP_GC)
+               target = (gpointer)&mono_polling_required;
+#else
+               g_error ("Unsuported patch target");
+#endif
+               break;
        case MONO_PATCH_INFO_SWITCH: {
                gpointer *jump_table;
                int i;
@@ -1574,6 +1629,15 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                        slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
                        break;
                }
+               case MONO_PATCH_INFO_VIRT_METHOD: {
+                       MonoJumpInfoVirtMethod *info;
+                       MonoJumpInfoVirtMethod *oinfo = entry->data->data.virt_method;
+
+                       info = g_malloc0 (sizeof (MonoJumpInfoVirtMethod));
+                       memcpy (info, oinfo, sizeof (MonoJumpInfoVirtMethod));
+                       slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
+                       break;
+               }
                default:
                        g_assert_not_reached ();
                        break;
@@ -1665,12 +1729,6 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
        return (gpointer)target;
 }
 
-static gboolean
-is_gsharedvt_type (MonoType *t)
-{
-       return (t->type == MONO_TYPE_VAR || t->type == MONO_TYPE_MVAR) && t->data.generic_param->gshared_constraint == MONO_TYPE_VALUETYPE;
-}
-
 void
 mini_init_gsctx (MonoDomain *domain, MonoMemPool *mp, MonoGenericContext *context, MonoGenericSharingContext *gsctx)
 {
@@ -1691,7 +1749,7 @@ mini_init_gsctx (MonoDomain *domain, MonoMemPool *mp, MonoGenericContext *contex
                for (i = 0; i < inst->type_argc; ++i) {
                        MonoType *type = inst->type_argv [i];
 
-                       if (is_gsharedvt_type (type))
+                       if (mini_is_gsharedvt_gparam (type))
                                gsctx->var_is_vt [i] = TRUE;
                }
        }
@@ -1707,7 +1765,7 @@ mini_init_gsctx (MonoDomain *domain, MonoMemPool *mp, MonoGenericContext *contex
                for (i = 0; i < inst->type_argc; ++i) {
                        MonoType *type = inst->type_argv [i];
 
-                       if (is_gsharedvt_type (type))
+                       if (mini_is_gsharedvt_gparam (type))
                                gsctx->mvar_is_vt [i] = TRUE;
                }
        }
@@ -2664,7 +2722,7 @@ mini_parse_debug_options (void)
                else if (!strcmp (arg, "explicit-null-checks"))
                        debug_options.explicit_null_checks = TRUE;
                else if (!strcmp (arg, "gen-seq-points"))
-                       debug_options.gen_seq_points_debug_data = TRUE;
+                       debug_options.gen_sdb_seq_points = TRUE;
                else if (!strcmp (arg, "gen-compact-seq-points"))
                        debug_options.gen_seq_points_compact_data = TRUE;
                else if (!strcmp (arg, "init-stacks"))
@@ -2677,9 +2735,13 @@ mini_parse_debug_options (void)
                        debug_options.check_pinvoke_callconv = TRUE;
                else if (!strcmp (arg, "debug-domain-unload"))
                        mono_enable_debug_domain_unload (TRUE);
+               else if (!strcmp (arg, "partial-sharing"))
+                       mono_set_partial_sharing_supported (TRUE);
+               else if (!strcmp (arg, "align-small-structs"))
+                       mono_align_small_structs = TRUE;
                else {
                        fprintf (stderr, "Invalid option for the MONO_DEBUG env variable: %s\n", arg);
-                       fprintf (stderr, "Available options: 'handle-sigint', 'keep-delegates', 'reverse-pinvoke-exceptions', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'dont-free-domains', 'suspend-on-sigsegv', 'suspend-on-exception', 'suspend-on-unhandled', 'dyn-runtime-invoke', 'gdb', 'explicit-null-checks', 'init-stacks', 'check-pinvoke-callconv', 'debug-domain-unload'\n");
+                       fprintf (stderr, "Available options: 'handle-sigint', 'keep-delegates', 'reverse-pinvoke-exceptions', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'dont-free-domains', 'suspend-on-sigsegv', 'suspend-on-exception', 'suspend-on-unhandled', 'dyn-runtime-invoke', 'gdb', 'explicit-null-checks', 'init-stacks', 'check-pinvoke-callconv', 'debug-domain-unload', 'partial-sharing', 'align-small-structs'\n");
                        exit (1);
                }
        }
@@ -2788,7 +2850,7 @@ mini_create_jit_domain_info (MonoDomain *domain)
        info->delegate_trampoline_hash = g_hash_table_new (class_method_pair_hash, class_method_pair_equal);
        info->llvm_vcall_trampoline_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
        info->runtime_invoke_hash = mono_conc_hashtable_new_full (&domain->lock, mono_aligned_addr_hash, NULL, NULL, runtime_invoke_info_free);
-       info->seq_points = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, seq_point_info_free);
+       info->seq_points = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, mono_seq_point_info_free);
        info->arch_seq_points = g_hash_table_new (mono_aligned_addr_hash, NULL);
        info->jump_target_hash = g_hash_table_new (NULL, NULL);
 
@@ -2958,10 +3020,8 @@ mini_init (const char *filename, const char *runtime_version)
        callbacks.debug_log_is_enabled = mono_debugger_agent_debug_log_is_enabled;
        callbacks.tls_key_supported = mini_tls_key_supported;
 
-       if (mono_use_imt) {
-               callbacks.get_vtable_trampoline = mini_get_vtable_trampoline;
-               callbacks.get_imt_trampoline = mini_get_imt_trampoline;
-       }
+       callbacks.get_vtable_trampoline = mini_get_vtable_trampoline;
+       callbacks.get_imt_trampoline = mini_get_imt_trampoline;
 
        mono_install_callbacks (&callbacks);
 
@@ -3070,12 +3130,10 @@ mini_init (const char *filename, const char *runtime_version)
                mono_marshal_use_aot_wrappers (TRUE);
        }
 
-       if (mono_use_imt) {
-               if (mono_aot_only)
-                       mono_install_imt_thunk_builder (mono_aot_get_imt_thunk);
-               else
-                       mono_install_imt_thunk_builder (mono_arch_build_imt_thunk);
-       }
+       if (mono_aot_only)
+               mono_install_imt_thunk_builder (mono_aot_get_imt_thunk);
+       else
+               mono_install_imt_thunk_builder (mono_arch_build_imt_thunk);
 
        /*Init arch tls information only after the metadata side is inited to make sure we see dynamic appdomain tls keys*/
        mono_arch_finish_init ();
@@ -3114,6 +3172,8 @@ mini_init (const char *filename, const char *runtime_version)
        mono_tasklets_init ();
 #endif
 
+       register_trampolines (domain);
+
        if (mono_compile_aot)
                /*
                 * Avoid running managed code when AOT compiling, since the platform
@@ -3144,10 +3204,6 @@ register_icalls (void)
                                ves_icall_get_trace);
        mono_add_internal_call ("System.Exception::get_trace",
                                ves_icall_System_Exception_get_trace);
-       mono_add_internal_call ("System.Security.SecurityFrame::_GetSecurityFrame",
-                               ves_icall_System_Security_SecurityFrame_GetSecurityFrame);
-       mono_add_internal_call ("System.Security.SecurityFrame::_GetSecurityStack",
-                               ves_icall_System_Security_SecurityFrame_GetSecurityStack);
        mono_add_internal_call ("Mono.Runtime::mono_runtime_install_handlers",
                                mono_runtime_install_handlers);
 
@@ -3186,8 +3242,12 @@ register_icalls (void)
 #endif
 
 #if defined(__native_client__) || defined(__native_client_codegen__)
-       register_icall (mono_nacl_gc, "mono_nacl_gc", "void", TRUE);
+       register_icall (mono_nacl_gc, "mono_nacl_gc", "void", FALSE);
+#endif
+#if defined(USE_COOP_GC)
+       register_icall (mono_threads_state_poll, "mono_threads_state_poll", "void", FALSE);
 #endif
+
 #ifndef MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS
        register_opcode_emulation (OP_LMUL, "__emul_lmul", "long long long", mono_llmult, "mono_llmult", TRUE);
        register_opcode_emulation (OP_LDIV, "__emul_ldiv", "long long long", mono_lldiv, "mono_lldiv", FALSE);
@@ -3404,15 +3464,6 @@ print_jit_stats (void)
                g_print ("JIT info table removes: %ld\n", mono_stats.jit_info_table_remove_count);
                g_print ("JIT info table lookups: %ld\n", mono_stats.jit_info_table_lookup_count);
 
-               if (mono_security_cas_enabled ()) {
-                       g_print ("\nDecl security check   : %ld\n", mono_jit_stats.cas_declsec_check);
-                       g_print ("LinkDemand (user)     : %ld\n", mono_jit_stats.cas_linkdemand);
-                       g_print ("LinkDemand (icall)    : %ld\n", mono_jit_stats.cas_linkdemand_icall);
-                       g_print ("LinkDemand (pinvoke)  : %ld\n", mono_jit_stats.cas_linkdemand_pinvoke);
-                       g_print ("LinkDemand (aptc)     : %ld\n", mono_jit_stats.cas_linkdemand_aptc);
-                       g_print ("Demand (code gen)     : %ld\n", mono_jit_stats.cas_demand_generation);
-               }
-
                g_free (mono_jit_stats.max_ratio_method);
                mono_jit_stats.max_ratio_method = NULL;
                g_free (mono_jit_stats.biggest_method);
index 004540fb7e2bc7bbf8790e10411aee7e0a852a2d..5fa10b9901430817b229f45457e23c1b4a3e4466 100644 (file)
@@ -4643,8 +4643,8 @@ mono_arch_register_lowlevel_calls (void)
 /*------------------------------------------------------------------*/
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, 
-                     guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, 
+                     guint8 *code, MonoJumpInfo *ji, gboolean run_cctors)
 {
        MonoJumpInfo *patch_info;
 
@@ -4669,6 +4669,9 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain,
                        case MONO_PATCH_INFO_CLASS_INIT:
                        case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
                        case MONO_PATCH_INFO_RGCTX_FETCH:
+                       case MONO_PATCH_INFO_MONITOR_ENTER:
+                       case MONO_PATCH_INFO_MONITOR_ENTER_V4:
+                       case MONO_PATCH_INFO_MONITOR_EXIT:
                        case MONO_PATCH_INFO_ABS: {
                                S390_EMIT_CALL (ip, target);
                                continue;
index 7de88fdf1e2ca5018981c576fb841f1a12df9cf0..46bc61036fccc200a12ca6628bccc4b74f45dd5e 100644 (file)
@@ -5,7 +5,7 @@
 #include <mono/utils/mono-context.h>
 #include <signal.h>
 
-#define MONO_ARCH_CPU_SPEC s390x_cpu_desc
+#define MONO_ARCH_CPU_SPEC mono_s390x_cpu_desc
 
 #define MONO_MAX_IREGS 16
 #define MONO_MAX_FREGS 16
@@ -62,6 +62,8 @@ typedef struct
 #define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT             1
 #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD             1
 #define MONO_ARCH_HAVE_INVALIDATE_METHOD               1
+#define MONO_ARCH_MONITOR_OBJECT_REG                   s390_r2
+#define MONO_ARCH_LOCK_TAKEN_REG                       s390_r1
 
 #define S390_STACK_ALIGNMENT            8
 #define S390_FIRST_ARG_REG             s390_r2
old mode 100755 (executable)
new mode 100644 (file)
index 21c2b0c..589e50d
@@ -3668,7 +3668,7 @@ mono_arch_register_lowlevel_calls (void)
 }
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors)
 {
        MonoJumpInfo *patch_info;
 
index 51d7e12dca05ecdd20289adb319c25e6d20c8e23..6a74822d76116f30e642e7c622bbd566a2bc2551 100644 (file)
@@ -386,7 +386,7 @@ mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer com
  * from JITted and LLVM compiled code.
  */
 static gpointer
-common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tramp, MonoVTable *vt, gpointer *vtable_slot, gboolean need_rgctx_tramp)
+common_call_trampoline_inner (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tramp, MonoVTable *vt, gpointer *vtable_slot, gboolean need_rgctx_tramp)
 {
        gpointer addr, compiled_method;
        gboolean generic_shared = FALSE;
@@ -697,6 +697,16 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
        return addr;
 }
 
+static gpointer
+common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tramp, MonoVTable *vt, gpointer *vtable_slot, gboolean need_rgctx_tramp)
+{
+       gpointer res;
+       MONO_PREPARE_RESET_BLOCKING
+       res = common_call_trampoline_inner (regs, code, m, tramp, vt, vtable_slot, need_rgctx_tramp);
+       MONO_FINISH_RESET_BLOCKING
+       return res;
+}
+
 /**
  * mono_magic_trampoline:
  *
@@ -929,7 +939,6 @@ mono_generic_class_init_trampoline (mgreg_t *regs, guint8 *code, MonoVTable *vta
 static gpointer
 mono_rgctx_lazy_fetch_trampoline (mgreg_t *regs, guint8 *code, gpointer data, guint8 *tramp)
 {
-#ifdef MONO_ARCH_VTABLE_REG
        static gboolean inited = FALSE;
        static int num_lookups = 0;
        guint32 slot = GPOINTER_TO_UINT (data);
@@ -951,9 +960,6 @@ mono_rgctx_lazy_fetch_trampoline (mgreg_t *regs, guint8 *code, gpointer data, gu
                return mono_method_fill_runtime_generic_context (arg, code, index);
        else
                return mono_class_fill_runtime_generic_context (arg, code, index);
-#else
-       g_assert_not_reached ();
-#endif
 }
 
 void
@@ -1042,6 +1048,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
 
        /* Obtain the delegate object according to the calling convention */
        delegate = mono_arch_get_this_arg_from_call (regs, code);
+       g_assert (mono_class_has_parent (mono_object_class (delegate), mono_defaults.multicastdelegate_class));
 
        if (delegate->method) {
                method = delegate->method;
@@ -1073,10 +1080,17 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
                        }
 
                        if (sig->hasthis && method->klass->valuetype) {
-                               if (mono_aot_only)
-                                       need_unbox_tramp = TRUE;
-                               else
-                                       method = mono_marshal_get_unbox_wrapper (method);
+                               gboolean need_unbox = TRUE;
+
+                               if (tramp_info->invoke_sig->param_count > sig->param_count && tramp_info->invoke_sig->params [0]->byref)
+                                       need_unbox = FALSE;
+
+                               if (need_unbox) {
+                                       if (mono_aot_only)
+                                               need_unbox_tramp = TRUE;
+                                       else
+                                               method = mono_marshal_get_unbox_wrapper (method);
+                               }
                        }
                }
        } else {
@@ -1154,7 +1168,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *arg, guint8* tr
        /* Necessary for !code condition to fallback to slow path */
        code = NULL;
 
-       multicast = ((MonoMulticastDelegate*)delegate)->prev != NULL;
+       multicast = ((MonoMulticastDelegate*)delegate)->delegates != NULL;
        if (!multicast && !callvirt) {
                if (method && (method->flags & METHOD_ATTRIBUTE_STATIC) && mono_method_signature (method)->param_count == mono_method_signature (invoke)->param_count + 1)
                        /* Closed static delegate */
@@ -1410,7 +1424,6 @@ mono_create_class_init_trampoline (MonoVTable *vtable)
 gpointer
 mono_create_generic_class_init_trampoline (void)
 {
-#ifdef MONO_ARCH_VTABLE_REG
        static gpointer code;
        MonoTrampInfo *info;
 
@@ -1429,9 +1442,6 @@ mono_create_generic_class_init_trampoline (void)
        mono_trampolines_unlock ();
 
        return code;
-#else
-       g_assert_not_reached ();
-#endif
 }
 
 gpointer
@@ -1879,12 +1889,12 @@ mini_get_single_step_trampoline (void)
 
        if (!trampoline) {
                gpointer tramp;
-               MonoTrampInfo *info;
 
                if (mono_aot_only) {
                        tramp = mono_aot_get_trampoline ("sdb_single_step_trampoline");
                } else {
 #ifdef MONO_ARCH_HAVE_SDB_TRAMPOLINES
+                       MonoTrampInfo *info;
                        tramp = mono_arch_create_sdb_trampoline (TRUE, &info, FALSE);
                        mono_tramp_info_register (info);
 #else
@@ -1911,12 +1921,12 @@ mini_get_breakpoint_trampoline (void)
 
        if (!trampoline) {
                gpointer tramp;
-               MonoTrampInfo *info;
 
                if (mono_aot_only) {
                        tramp = mono_aot_get_trampoline ("sdb_breakpoint_trampoline");
                } else {
 #ifdef MONO_ARCH_HAVE_SDB_TRAMPOLINES
+                       MonoTrampInfo *info;
                        tramp = mono_arch_create_sdb_trampoline (FALSE, &info, FALSE);
                        mono_tramp_info_register (info);
 #else
index 474ea72c771723c0e372bb5b8547a8aff42d9dd0..9941b2387548d4d937b4be19597edfa4d0cb5471 100644 (file)
@@ -29,6 +29,7 @@
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-hwcap-x86.h>
+#include <mono/utils/mono-threads.h>
 
 #include "trace.h"
 #include "mini-x86.h"
@@ -3382,6 +3383,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        x86_ret (code);
                        break;
                }
+               case OP_GET_EX_OBJ:
+                       if (ins->dreg != X86_EAX)
+                               x86_mov_reg_reg (code, ins->dreg, X86_EAX, sizeof (gpointer));
+                       break;
 
                case OP_LABEL:
                        ins->inst_c0 = code - cfg->native_code;
@@ -5019,19 +5024,26 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        MONO_VARINFO (cfg, ins->inst_c0)->live_range_end = code - cfg->native_code;
                        break;
                }
-               case OP_NACL_GC_SAFE_POINT: {
-#if defined(__native_client_codegen__) && defined(__native_client_gc__)
-                       if (cfg->compile_aot)
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc);
-                       else {
-                               guint8 *br [1];
-
-                               x86_test_mem_imm8 (code, (gpointer)&__nacl_thread_suspension_needed, 0xFFFFFFFF);
-                               br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
-                               code = emit_call (cfg, code, MONO_PATCH_INFO_ABS, (gpointer)mono_nacl_gc);
-                               x86_patch (br[0], code);
-                       }
+               case OP_GC_SAFE_POINT: {
+                       const char *polling_func = NULL;
+                       int compare_val = 0;
+                       guint8 *br [1];
+
+#if defined (USE_COOP_GC)
+                       polling_func = "mono_threads_state_poll";
+                       compare_val = 1;
+#elif defined(__native_client_codegen__) && defined(__native_client_gc__)
+                       polling_func = "mono_nacl_gc";
+                       compare_val = 0xFFFFFFFF;
 #endif
+                       if (!polling_func)
+                               break;
+
+                       x86_test_membase_imm (code, ins->sreg1, 0, compare_val);
+                       br[0] = code; x86_branch8 (code, X86_CC_EQ, 0, FALSE);
+                       code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, polling_func);
+                       x86_patch (br [0], code);
+
                        break;
                }
                case OP_GC_LIVENESS_DEF:
@@ -5076,94 +5088,75 @@ mono_arch_register_lowlevel_calls (void)
 }
 
 void
-mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors)
+mono_arch_patch_code_new (MonoCompile *cfg, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gpointer target)
 {
-       MonoJumpInfo *patch_info;
-       gboolean compile_aot = !run_cctors;
+       unsigned char *ip = ji->ip.i + code;
 
-       for (patch_info = ji; patch_info; patch_info = patch_info->next) {
-               unsigned char *ip = patch_info->ip.i + code;
-               const unsigned char *target;
-
-               if (compile_aot) {
-                       switch (patch_info->type) {
-                       case MONO_PATCH_INFO_BB:
-                       case MONO_PATCH_INFO_LABEL:
-                               break;
-                       default:
-                               /* No need to patch these */
-                               continue;
-                       }
+       switch (ji->type) {
+       case MONO_PATCH_INFO_IP:
+               *((gconstpointer *)(ip)) = target;
+               break;
+       case MONO_PATCH_INFO_CLASS_INIT: {
+               guint8 *code = ip;
+               /* Might already been changed to a nop */
+               x86_call_code (code, 0);
+               x86_patch (ip, (unsigned char*)target);
+               break;
+       }
+       case MONO_PATCH_INFO_ABS:
+       case MONO_PATCH_INFO_METHOD:
+       case MONO_PATCH_INFO_METHOD_JUMP:
+       case MONO_PATCH_INFO_INTERNAL_METHOD:
+       case MONO_PATCH_INFO_BB:
+       case MONO_PATCH_INFO_LABEL:
+       case MONO_PATCH_INFO_RGCTX_FETCH:
+       case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
+       case MONO_PATCH_INFO_MONITOR_ENTER:
+       case MONO_PATCH_INFO_MONITOR_ENTER_V4:
+       case MONO_PATCH_INFO_MONITOR_EXIT:
+       case MONO_PATCH_INFO_JIT_ICALL_ADDR:
+#if defined(__native_client_codegen__) && defined(__native_client__)
+               if (nacl_is_code_address (code)) {
+                       /* For tail calls, code is patched after being installed */
+                       /* but not through the normal "patch callsite" method.   */
+                       unsigned char buf[kNaClAlignment];
+                       unsigned char *aligned_code = (uintptr_t)code & ~kNaClAlignmentMask;
+                       unsigned char *_target = target;
+                       int ret;
+                       /* All patch targets modified in x86_patch */
+                       /* are IP relative.                        */
+                       _target = _target + (uintptr_t)buf - (uintptr_t)aligned_code;
+                       memcpy (buf, aligned_code, kNaClAlignment);
+                       /* Patch a temp buffer of bundle size, */
+                       /* then install to actual location.    */
+                       x86_patch (buf + ((uintptr_t)code - (uintptr_t)aligned_code), _target);
+                       ret = nacl_dyncode_modify (aligned_code, buf, kNaClAlignment);
+                       g_assert (ret == 0);
                }
-
-               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
-
-               switch (patch_info->type) {
-               case MONO_PATCH_INFO_IP:
-                       *((gconstpointer *)(ip)) = target;
-                       break;
-               case MONO_PATCH_INFO_CLASS_INIT: {
-                       guint8 *code = ip;
-                       /* Might already been changed to a nop */
-                       x86_call_code (code, 0);
-                       x86_patch (ip, target);
-                       break;
+               else {
+                       x86_patch (ip, (unsigned char*)target);
                }
-               case MONO_PATCH_INFO_ABS:
-               case MONO_PATCH_INFO_METHOD:
-               case MONO_PATCH_INFO_METHOD_JUMP:
-               case MONO_PATCH_INFO_INTERNAL_METHOD:
-               case MONO_PATCH_INFO_BB:
-               case MONO_PATCH_INFO_LABEL:
-               case MONO_PATCH_INFO_RGCTX_FETCH:
-               case MONO_PATCH_INFO_GENERIC_CLASS_INIT:
-               case MONO_PATCH_INFO_MONITOR_ENTER:
-               case MONO_PATCH_INFO_MONITOR_ENTER_V4:
-               case MONO_PATCH_INFO_MONITOR_EXIT:
-               case MONO_PATCH_INFO_JIT_ICALL_ADDR:
-#if defined(__native_client_codegen__) && defined(__native_client__)
-                       if (nacl_is_code_address (code)) {
-                               /* For tail calls, code is patched after being installed */
-                               /* but not through the normal "patch callsite" method.   */
-                               unsigned char buf[kNaClAlignment];
-                               unsigned char *aligned_code = (uintptr_t)code & ~kNaClAlignmentMask;
-                               unsigned char *_target = target;
-                               int ret;
-                               /* All patch targets modified in x86_patch */
-                               /* are IP relative.                        */
-                               _target = _target + (uintptr_t)buf - (uintptr_t)aligned_code;
-                               memcpy (buf, aligned_code, kNaClAlignment);
-                               /* Patch a temp buffer of bundle size, */
-                               /* then install to actual location.    */
-                               x86_patch (buf + ((uintptr_t)code - (uintptr_t)aligned_code), _target);
-                               ret = nacl_dyncode_modify (aligned_code, buf, kNaClAlignment);
-                               g_assert (ret == 0);
-                       }
-                       else {
-                               x86_patch (ip, target);
-                       }
 #else
-                       x86_patch (ip, target);
+               x86_patch (ip, (unsigned char*)target);
 #endif
-                       break;
-               case MONO_PATCH_INFO_NONE:
-                       break;
-               case MONO_PATCH_INFO_R4:
-               case MONO_PATCH_INFO_R8: {
-                       guint32 offset = mono_arch_get_patch_offset (ip);
-                       *((gconstpointer *)(ip + offset)) = target;
-                       break;
-               }
-               default: {
-                       guint32 offset = mono_arch_get_patch_offset (ip);
+               break;
+       case MONO_PATCH_INFO_NONE:
+               break;
+       case MONO_PATCH_INFO_R4:
+       case MONO_PATCH_INFO_R8: {
+               guint32 offset = mono_arch_get_patch_offset (ip);
+               *((gconstpointer *)(ip + offset)) = target;
+               break;
+       }
+       default: {
+               guint32 offset = mono_arch_get_patch_offset (ip);
 #if !defined(__native_client__)
-                       *((gconstpointer *)(ip + offset)) = target;
+               *((gconstpointer *)(ip + offset)) = target;
 #else
-                       *((gconstpointer *)(ip + offset)) = nacl_modify_patch_target (target);
+               *((gconstpointer *)(ip + offset)) = nacl_modify_patch_target (target);
 #endif
-                       break;
-               }
-               }
+               break;
+       }
        }
 }
 
index c5dfcc1cf14c5a0dc8af59f60d093f06905c429e..084bb22a56297aa8e2914e48121a076129fed4a9 100644 (file)
@@ -89,7 +89,7 @@ struct sigcontext {
 #endif
 #define MONO_ARCH_HAVE_RESTORE_STACK_SUPPORT 1
 
-#define MONO_ARCH_CPU_SPEC x86_desc
+#define MONO_ARCH_CPU_SPEC mono_x86_desc
 
 #define MONO_MAX_IREGS 8
 #define MONO_MAX_FREGS 8
@@ -211,6 +211,7 @@ typedef struct {
 #define MONO_ARCH_IMT_REG X86_EDX
 #define MONO_ARCH_VTABLE_REG X86_EDX
 #define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG
+#define MONO_ARCH_EXC_REG X86_EAX
 #define MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK 1
 #define MONO_ARCH_HAVE_LIVERANGE_OPS 1
 #define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
@@ -256,6 +257,7 @@ typedef struct {
 #define MONO_ARCH_HAVE_TRANSLATE_TLS_OFFSET 1
 #define MONO_ARCH_HAVE_TLS_GET_REG 1
 #define MONO_ARCH_HAVE_DUMMY_INIT 1
+#define MONO_ARCH_HAVE_PATCH_CODE_NEW 1
 
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
old mode 100755 (executable)
new mode 100644 (file)
index 7b36bf8..cba4f46
@@ -1110,8 +1110,6 @@ mini_assembly_can_skip_verification (MonoDomain *domain, MonoMethod *method)
                return FALSE;
        if (assembly->in_gac || assembly->image == mono_defaults.corlib)
                return FALSE;
-       if (mono_security_enabled ())
-               return FALSE;
        return mono_assembly_has_skip_verification (assembly);
 }
 
@@ -2009,6 +2007,7 @@ mono_verify_cfg (MonoCompile *cfg)
 void
 mono_destroy_compile (MonoCompile *cfg)
 {
+#ifndef DISABLE_JIT
        GSList *l;
 
        if (cfg->header)
@@ -2035,6 +2034,7 @@ mono_destroy_compile (MonoCompile *cfg)
        g_free (cfg->vars);
        g_free (cfg->exception_message);
        g_free (cfg);
+#endif
 }
 
 #ifndef DISABLE_JIT
@@ -2376,6 +2376,7 @@ mono_codegen (MonoCompile *cfg)
        int max_epilog_size;
        guint8 *code;
        MonoDomain *code_domain;
+       guint unwindlen = 0;
 
        if (mono_using_xdebug)
                /*
@@ -2406,14 +2407,13 @@ mono_codegen (MonoCompile *cfg)
                if (cfg->opt & MONO_OPT_PEEPHOLE)
                        mono_arch_peephole_pass_1 (cfg, bb);
 
-               if (!cfg->globalra)
-                       mono_local_regalloc (cfg, bb);
+               mono_local_regalloc (cfg, bb);
 
                if (cfg->opt & MONO_OPT_PEEPHOLE)
                        mono_arch_peephole_pass_2 (cfg, bb);
 
-               if (cfg->gen_seq_points && !cfg->gen_seq_points_debug_data)
-                       bb_deduplicate_op_il_seq_points (cfg, bb);
+               if (cfg->gen_seq_points && !cfg->gen_sdb_seq_points)
+                       mono_bb_deduplicate_op_il_seq_points (cfg, bb);
        }
 
        if (cfg->prof_options & MONO_PROFILE_COVERAGE)
@@ -2457,11 +2457,11 @@ mono_codegen (MonoCompile *cfg)
 #endif
        /* fixme: align to MONO_ARCH_CODE_ALIGNMENT */
 
-       if (cfg->method->dynamic) {
-               guint unwindlen = 0;
 #ifdef MONO_ARCH_HAVE_UNWIND_TABLE
-               unwindlen = mono_arch_unwindinfo_get_size (cfg->arch.unwindinfo);
+       unwindlen = mono_arch_unwindinfo_get_size (cfg->arch.unwindinfo);
 #endif
+
+       if (cfg->method->dynamic) {
                /* Allocate the code into a separate memory pool so it can be freed */
                cfg->dynamic_info = g_new0 (MonoJitDynamicMethodInfo, 1);
                cfg->dynamic_info->code_mp = mono_code_manager_new_dynamic ();
@@ -2471,19 +2471,20 @@ mono_codegen (MonoCompile *cfg)
 
                if (mono_using_xdebug)
                        /* See the comment for cfg->code_domain */
-                       code = mono_domain_code_reserve (code_domain, cfg->code_size + unwindlen);
+                       code = mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
                else
-                       code = mono_code_manager_reserve (cfg->dynamic_info->code_mp, cfg->code_size + unwindlen);
+                       code = mono_code_manager_reserve (cfg->dynamic_info->code_mp, cfg->code_size + cfg->thunk_area + unwindlen);
        } else {
-               guint unwindlen = 0;
-#ifdef MONO_ARCH_HAVE_UNWIND_TABLE
-               unwindlen = mono_arch_unwindinfo_get_size (cfg->arch.unwindinfo);
-#endif
-               code = mono_domain_code_reserve (code_domain, cfg->code_size + unwindlen);
+               code = mono_domain_code_reserve (code_domain, cfg->code_size + cfg->thunk_area + unwindlen);
        }
 #if defined(__native_client_codegen__) && defined(__native_client__)
        nacl_allow_target_modification (TRUE);
 #endif
+       if (cfg->thunk_area) {
+               cfg->thunks_offset = cfg->code_size + unwindlen;
+               cfg->thunks = code + cfg->thunks_offset;
+               memset (cfg->thunks, 0, cfg->thunk_area);
+       }
 
        g_assert (code);
        memcpy (code, cfg->native_code, cfg->code_len);
@@ -2550,7 +2551,33 @@ mono_codegen (MonoCompile *cfg)
        mono_nacl_fix_patches (cfg->native_code, cfg->patch_info);
 #endif
 
-       mono_arch_patch_code (cfg->method, cfg->domain, cfg->native_code, cfg->patch_info, cfg->dynamic_info ? cfg->dynamic_info->code_mp : NULL, cfg->run_cctors);
+#ifdef MONO_ARCH_HAVE_PATCH_CODE_NEW
+       {
+               MonoJumpInfo *ji;
+               gpointer target;
+
+               for (ji = cfg->patch_info; ji; ji = ji->next) {
+                       if (cfg->compile_aot) {
+                               switch (ji->type) {
+                               case MONO_PATCH_INFO_BB:
+                               case MONO_PATCH_INFO_LABEL:
+                                       break;
+                               default:
+                                       /* No need to patch these */
+                                       continue;
+                               }
+                       }
+
+                       if (ji->type == MONO_PATCH_INFO_NONE)
+                               continue;
+
+                       target = mono_resolve_patch_target (cfg->method, cfg->domain, cfg->native_code, ji, cfg->run_cctors);
+                       mono_arch_patch_code_new (cfg, cfg->domain, cfg->native_code, ji, target);
+               }
+       }
+#else
+       mono_arch_patch_code (cfg, cfg->method, cfg->domain, cfg->native_code, cfg->patch_info, cfg->run_cctors);
+#endif
 
        if (cfg->method->dynamic) {
                if (mono_using_xdebug)
@@ -2664,7 +2691,10 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 
        if (cfg->has_unwind_info_for_epilog && !(flags & JIT_INFO_HAS_ARCH_EH_INFO))
                flags |= JIT_INFO_HAS_ARCH_EH_INFO;
-               
+
+       if (cfg->thunk_area)
+               flags |= JIT_INFO_HAS_THUNK_INFO;
+
        if (cfg->try_block_holes) {
                for (tmp = cfg->try_block_holes; tmp; tmp = tmp->next) {
                        TryBlockHole *hole = tmp->data;
@@ -2683,9 +2713,6 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                        printf ("Number of try block holes %d\n", num_holes);
        }
 
-       if (mono_security_method_has_declsec (cfg->method_to_register))
-               flags |= JIT_INFO_HAS_ARCH_EH_INFO;
-
        if (COMPILE_LLVM (cfg))
                num_clauses = cfg->llvm_ex_info_len;
        else
@@ -2815,6 +2842,14 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                info->stack_size = stack_size;
        }
 
+       if (cfg->thunk_area) {
+               MonoThunkJitInfo *info;
+
+               info = mono_jit_info_get_thunk_info (jinfo);
+               info->thunks_offset = cfg->thunks_offset;
+               info->thunks_size = cfg->thunk_area;
+       }
+
        if (COMPILE_LLVM (cfg)) {
                if (num_clauses)
                        memcpy (&jinfo->clauses [0], &cfg->llvm_ex_info [0], num_clauses * sizeof (MonoJitExceptionInfo));
@@ -2829,6 +2864,9 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 
                        ei->flags = ec->flags;
 
+                       if (G_UNLIKELY (cfg->verbose_level >= 4))
+                               printf ("IL clause: try 0x%x-0x%x handler 0x%x-0x%x filter 0x%x\n", ec->try_offset, ec->try_offset + ec->try_len, ec->handler_offset, ec->handler_offset + ec->handler_len, ec->flags == MONO_EXCEPTION_CLAUSE_FILTER ? ec->data.filter_offset : 0);
+
                        /*
                         * The spvars are needed by mono_arch_install_handler_block_guard ().
                         */
@@ -2960,12 +2998,6 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
 }
 #endif
 
-static gboolean
-is_gsharedvt_type (MonoType *t)
-{
-       return (t->type == MONO_TYPE_VAR || t->type == MONO_TYPE_MVAR) && t->data.generic_param->gshared_constraint == MONO_TYPE_VALUETYPE;
-}
-
 /* Return whenever METHOD is a gsharedvt method */
 static gboolean
 is_gsharedvt_method (MonoMethod *method)
@@ -2980,13 +3012,13 @@ is_gsharedvt_method (MonoMethod *method)
        inst = context->class_inst;
        if (inst) {
                for (i = 0; i < inst->type_argc; ++i)
-                       if (is_gsharedvt_type (inst->type_argv [i]))
+                       if (mini_is_gsharedvt_gparam (inst->type_argv [i]))
                                return TRUE;
        }
        inst = context->method_inst;
        if (inst) {
                for (i = 0; i < inst->type_argc; ++i)
-                       if (is_gsharedvt_type (inst->type_argv [i]))
+                       if (mini_is_gsharedvt_gparam (inst->type_argv [i]))
                                return TRUE;
        }
        return FALSE;
@@ -3008,6 +3040,76 @@ is_open_method (MonoMethod *method)
 }
 
 #ifndef DISABLE_JIT
+
+#if defined(__native_client_codegen__) || USE_COOP_GC
+
+static void
+mono_create_gc_safepoint (MonoCompile *cfg, MonoBasicBlock *bblock)
+{
+       MonoInst *poll_addr, *ins;
+       if (cfg->verbose_level)
+               printf ("ADDING SAFE POINT TO BB %d\n", bblock->block_num);
+
+#if defined(__native_client_codegen__)
+       NEW_AOTCONST (cfg, poll_addr, MONO_PATCH_INFO_GC_SAFE_POINT_FLAG, (gpointer)&__nacl_thread_suspension_needed);
+#else
+       NEW_AOTCONST (cfg, poll_addr, MONO_PATCH_INFO_GC_SAFE_POINT_FLAG, (gpointer)&mono_polling_required);
+#endif
+
+       MONO_INST_NEW (cfg, ins, OP_GC_SAFE_POINT);
+       ins->sreg1 = poll_addr->dreg;
+
+        if (bblock->flags & BB_EXCEPTION_HANDLER) {
+               MonoInst *eh_op = bblock->code;
+
+               // we only skip the ops that start EH blocks.
+               if (eh_op && eh_op->opcode != OP_START_HANDLER && eh_op->opcode != OP_GET_EX_OBJ)
+                       eh_op = NULL;
+
+               mono_bblock_insert_after_ins (bblock, eh_op, poll_addr);
+               mono_bblock_insert_after_ins (bblock, poll_addr, ins);
+       } else if (bblock == cfg->bb_entry) {
+               mono_bblock_insert_after_ins (bblock, bblock->last_ins, poll_addr);
+               mono_bblock_insert_after_ins (bblock, poll_addr, ins);
+
+       } else {
+               mono_bblock_insert_before_ins (bblock, NULL, poll_addr);
+               mono_bblock_insert_after_ins (bblock, poll_addr, ins);
+       }
+}
+
+/*
+This code inserts safepoints into managed code at important code paths.
+Those are:
+
+-the first basic block
+-landing BB for exception handlers
+-loop body starts.
+
+*/
+static void
+mono_insert_safepoints (MonoCompile *cfg)
+{
+       MonoBasicBlock *bb;
+
+       if (cfg->verbose_level)
+               printf ("INSERTING SAFEPOINTS\n");
+
+       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+               if (bb->loop_body_start || bb == cfg->bb_entry || bb->flags & BB_EXCEPTION_HANDLER)
+                       mono_create_gc_safepoint (cfg, bb);
+       }
+}
+
+#else
+
+static void
+mono_insert_safepoints (MonoCompile *cfg)
+{
+}
+
+#endif
+
 /*
  * mini_method_compile:
  * @method: the method to compile
@@ -3119,8 +3221,20 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        cfg->full_aot = full_aot;
        cfg->skip_visibility = method->skip_visibility;
        cfg->orig_method = method;
-       cfg->gen_seq_points = debug_options.gen_seq_points_compact_data || debug_options.gen_seq_points_debug_data;
-       cfg->gen_seq_points_debug_data = debug_options.gen_seq_points_debug_data;
+       cfg->gen_seq_points = debug_options.gen_seq_points_compact_data || debug_options.gen_sdb_seq_points;
+       cfg->gen_sdb_seq_points = debug_options.gen_sdb_seq_points;
+
+#ifdef PLATFORM_ANDROID
+       if (cfg->method->wrapper_type != MONO_WRAPPER_NONE) {
+               /* FIXME: Why is this needed */
+               cfg->gen_seq_points = FALSE;
+               cfg->gen_sdb_seq_points = FALSE;
+       }
+#endif
+       /* coop / nacl requires loop detection to happen */
+#if defined(__native_client_codegen__) || defined(USE_COOP_GC)
+       cfg->opt |= MONO_OPT_LOOP;
+#endif
 
        cfg->explicit_null_checks = debug_options.explicit_null_checks;
        cfg->soft_breakpoints = debug_options.soft_breakpoints;
@@ -3327,55 +3441,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                g_free (method_name);
        }
 
-       if (cfg->opt & (MONO_OPT_ABCREM | MONO_OPT_SSAPRE))
+       if (cfg->opt & MONO_OPT_ABCREM)
                cfg->opt |= MONO_OPT_SSA;
 
-       /* 
-       if ((cfg->method->klass->image != mono_defaults.corlib) || (strstr (cfg->method->klass->name, "StackOverflowException") && strstr (cfg->method->name, ".ctor")) || (strstr (cfg->method->klass->name, "OutOfMemoryException") && strstr (cfg->method->name, ".ctor")))
-               cfg->globalra = TRUE;
-       */
-
-       //cfg->globalra = TRUE;
-
-       //if (!strcmp (cfg->method->klass->name, "Tests") && !cfg->method->wrapper_type)
-       //      cfg->globalra = TRUE;
-
-       {
-               static int count = 0;
-               count ++;
-
-               /*
-               if (g_getenv ("COUNT2")) {
-                       cfg->globalra = TRUE;
-                       if (count == atoi (g_getenv ("COUNT2")))
-                               printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
-                       if (count > atoi (g_getenv ("COUNT2")))
-                               cfg->globalra = FALSE;
-               }
-               */
-       }
-
-       if (header->clauses)
-               cfg->globalra = FALSE;
-
-       if (cfg->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED)
-               /* The code in the prolog clobbers caller saved registers */
-               cfg->globalra = FALSE;
-
-       // FIXME: Disable globalra in case of tracing/profiling
-
-       if (cfg->method->save_lmf)
-               /* The LMF saving code might clobber caller saved registers */
-               cfg->globalra = FALSE;
-
-       if (header->code_size > 5000)
-               // FIXME:
-               /* Too large bblocks could overflow the ins positions */
-               cfg->globalra = FALSE;
-
        cfg->rs = mono_regstate_new ();
-       if (cfg->globalra)
-               cfg->rs->next_vreg = MONO_MAX_IREGS + MONO_MAX_FREGS;
        cfg->next_vreg = cfg->rs->next_vreg;
 
        /* FIXME: Fix SSA to handle branches inside bblocks */
@@ -3404,9 +3473,6 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
         */
        mono_compile_create_vars (cfg);
 
-       /* SSAPRE is not supported on linear IR */
-       cfg->opt &= ~MONO_OPT_SSAPRE;
-
        i = mono_method_to_ir (cfg, method_to_compile, NULL, NULL, NULL, NULL, 0, FALSE);
 
        if (i < 0) {
@@ -3494,9 +3560,6 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        if (!COMPILE_LLVM (cfg))
                mono_if_conversion (cfg);
 
-       if ((cfg->opt & MONO_OPT_SSAPRE) || cfg->globalra)
-               mono_remove_critical_edges (cfg);
-
        /* Depth-first ordering on basic blocks */
        cfg->bblocks = mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * (cfg->num_bblocks + 1));
 
@@ -3545,6 +3608,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                mono_compute_natural_loops (cfg);
        }
 
+       mono_insert_safepoints (cfg);
+
        /* after method_to_ir */
        if (parts == 1) {
                if (MONO_METHOD_COMPILE_END_ENABLED ())
@@ -3601,11 +3666,6 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
        if (cfg->comp_done & MONO_COMP_SSA && !COMPILE_LLVM (cfg)) {
                //mono_ssa_strength_reduction (cfg);
 
-               if (cfg->opt & MONO_OPT_SSAPRE) {
-                       mono_perform_ssapre (cfg);
-                       //mono_local_cprop (cfg);
-               }
-
                if (cfg->opt & MONO_OPT_DEADCE)
                        mono_ssa_deadce (cfg);
 
@@ -3618,26 +3678,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                if (cfg->opt & MONO_OPT_DEADCE)
                        mono_local_deadce (cfg);
 
-               if (cfg->opt & MONO_OPT_BRANCH) {
-                       MonoBasicBlock *bb;
-
+               if (cfg->opt & MONO_OPT_BRANCH)
                        mono_optimize_branches (cfg);
-
-                       /* Have to recompute cfg->bblocks and bb->dfn */
-                       if (cfg->globalra) {
-                               mono_remove_critical_edges (cfg);
-
-                               for (bb = cfg->bb_entry; bb; bb = bb->next_bb)
-                                       bb->dfn = 0;
-
-                               /* Depth-first ordering on basic blocks */
-                               cfg->bblocks = mono_mempool_alloc (cfg->mempool, sizeof (MonoBasicBlock*) * (cfg->num_bblocks + 1));
-
-                               dfn = 0;
-                               df_visit (cfg->bb_entry, &dfn, cfg->bblocks);
-                               cfg->num_bblocks = dfn + 1;
-                       }
-               }
        }
 #endif
 
@@ -3699,17 +3741,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
         */
        mono_liveness_handle_exception_clauses (cfg);
 
-       if (cfg->globalra) {
-               MonoBasicBlock *bb;
-
-               /* Have to do this before regalloc since it can create vregs */
-               for (bb = cfg->bb_entry; bb; bb = bb->next_bb)
-                       mono_arch_lowering_pass (cfg, bb);
-
-               mono_global_regalloc (cfg);
-       }
-
-       if ((cfg->opt & MONO_OPT_LINEARS) && !cfg->globalra) {
+       if (cfg->opt & MONO_OPT_LINEARS) {
                GList *vars, *regs, *l;
                
                /* fixme: maybe we can avoid to compute livenesss here if already computed ? */
@@ -3737,7 +3769,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
     //print_dfn (cfg);
        
        /* variables are allocated after decompose, since decompose could create temps */
-       if (!cfg->globalra && !COMPILE_LLVM (cfg)) {
+       if (!COMPILE_LLVM (cfg)) {
                mono_arch_allocate_vars (cfg);
                if (cfg->exception_type)
                        return cfg;
@@ -3747,7 +3779,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                MonoBasicBlock *bb;
                gboolean need_local_opts;
 
-               if (!cfg->globalra && !COMPILE_LLVM (cfg)) {
+               if (!COMPILE_LLVM (cfg)) {
                        mono_spill_global_vars (cfg, &need_local_opts);
 
                        if (need_local_opts || cfg->compile_aot) {
@@ -3780,7 +3812,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                        }
                }
 
-               if (cfg->verbose_level >= 4 && !cfg->globalra) {
+               if (cfg->verbose_level >= 4) {
                        for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
                                MonoInst *tree = bb->code;      
                                g_print ("DUMP BLOCK %d:\n", bb->block_num);
@@ -4073,7 +4105,7 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                                else if (cfg->exception_type == MONO_EXCEPTION_TYPE_LOAD)
                                        ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "TypeLoadException", cfg->exception_message);
                                else if (cfg->exception_type == MONO_EXCEPTION_FILE_NOT_FOUND)
-                                       ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "FileNotFoundException", cfg->exception_message);
+                                       ex = mono_exception_from_name_msg (mono_defaults.corlib, "System.IO", "FileNotFoundException", cfg->exception_message);
                                else if (cfg->exception_type == MONO_EXCEPTION_BAD_IMAGE)
                                        ex = mono_get_exception_bad_image_format (cfg->exception_message);
                                else
@@ -4094,21 +4126,6 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
        case MONO_EXCEPTION_FIELD_ACCESS:
                ex = mono_exception_from_name_msg (mono_defaults.corlib, "System", "FieldAccessException", cfg->exception_message);
                break;
-#ifndef DISABLE_SECURITY
-       /* this can only be set if the security manager is active */
-       case MONO_EXCEPTION_SECURITY_LINKDEMAND: {
-               MonoSecurityManager* secman = mono_security_manager_get_methods ();
-               MonoObject *exc = NULL;
-               gpointer args [2];
-
-               args [0] = &cfg->exception_data;
-               args [1] = &method;
-               mono_runtime_invoke (secman->linkdemandsecurityexception, NULL, args, &exc);
-
-               ex = (MonoException*)exc;
-               break;
-       }
-#endif
        case MONO_EXCEPTION_OBJECT_SUPPLIED: {
                MonoException *exp = cfg->exception_ptr;
                MONO_GC_UNREGISTER_ROOT (cfg->exception_ptr);
@@ -4185,7 +4202,6 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
        mono_jit_stats.regvars += cfg->stat_n_regvars;
        mono_jit_stats.inlineable_methods += cfg->stat_inlineable_methods;
        mono_jit_stats.inlined_methods += cfg->stat_inlined_methods;
-       mono_jit_stats.cas_demand_generation += cfg->stat_cas_demand_generation;
        mono_jit_stats.code_reallocs += cfg->stat_code_reallocs;
 
        mono_destroy_compile (cfg);
@@ -4207,8 +4223,15 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
                        /* These patches are applied after a method has been installed, no target munging is needed. */
                        nacl_allow_target_modification (FALSE);
 #endif
+#ifdef MONO_ARCH_HAVE_PATCH_CODE_NEW
+                       for (tmp = jlist->list; tmp; tmp = tmp->next) {
+                               gpointer target = mono_resolve_patch_target (NULL, target_domain, tmp->data, &patch_info, TRUE);
+                               mono_arch_patch_code_new (NULL, target_domain, tmp->data, &patch_info, target);
+                       }
+#else
                        for (tmp = jlist->list; tmp; tmp = tmp->next)
-                               mono_arch_patch_code (NULL, target_domain, tmp->data, &patch_info, NULL, TRUE);
+                               mono_arch_patch_code (NULL, NULL, target_domain, tmp->data, &patch_info, TRUE);
+#endif
 #if defined(__native_client_codegen__) && defined(__native_client__)
                        nacl_allow_target_modification (TRUE);
 #endif
index 4f57200d16d3c902f55e050f1b9c8e584e4e51f5..b5b2523cb54d72d065f3f9d299700a1b7a853b44 100644 (file)
 
 #include "mini-arch.h"
 #include "regalloc.h"
-#include "declsec.h"
 #include "mini-unwind.h"
 #include "jit.h"
 
+#include "mono/metadata/class-internals.h"
+#include "mono/metadata/domain-internals.h"
+#include "mono/metadata/object.h"
+#include "mono/metadata/tabledefs.h"
+#include "mono/metadata/marshal.h"
+#include "mono/metadata/security-manager.h"
+#include "mono/metadata/exception.h"
+#include "mono/utils/mono-compiler.h"
+
 #ifdef __native_client_codegen__
 #include <nacl/nacl_dyncode.h>
 #endif
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 110
+#define MONO_AOT_FILE_VERSION 115
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
@@ -482,7 +490,6 @@ extern gboolean mono_break_on_exc;
 extern int mono_exc_esp_offset;
 extern gboolean mono_compile_aot;
 extern gboolean mono_aot_only;
-extern gboolean mono_use_imt;
 extern MonoMethodDesc *mono_inject_async_exc_method;
 extern int mono_inject_async_exc_pos;
 extern MonoMethodDesc *mono_break_at_bb_method;
@@ -1123,6 +1130,14 @@ typedef enum {
        /* The address of Nullable<T>.Box () */
        MONO_RGCTX_INFO_NULLABLE_CLASS_BOX,
        MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX,
+       /* MONO_PATCH_INFO_VCALL_METHOD */
+       MONO_RGCTX_INFO_VIRT_METHOD_CODE,
+       /*
+        * MONO_PATCH_INFO_VCALL_METHOD
+        * Same as MONO_RGCTX_INFO_CLASS_BOX_TYPE, but for the class
+        * which implements the method.
+        */
+       MONO_RGCTX_INFO_VIRT_METHOD_BOX_TYPE
 } MonoRgctxInfoType;
 
 typedef struct _MonoRuntimeGenericContextInfoTemplate {
@@ -1216,6 +1231,17 @@ typedef struct MonoJumpInfoImtTramp {
 
 typedef struct MonoJumpInfoGSharedVtCall MonoJumpInfoGSharedVtCall;
 
+/*
+ * Represents the method which is called when a virtual call is made to METHOD
+ * on a receiver of type KLASS.
+ */
+typedef struct {
+       /* Receiver class */
+       MonoClass *klass;
+       /* Virtual method */
+       MonoMethod *method;
+} MonoJumpInfoVirtMethod;
+
 typedef struct MonoJumpInfo MonoJumpInfo;
 struct MonoJumpInfo {
        MonoJumpInfo *next;
@@ -1252,10 +1278,16 @@ struct MonoJumpInfo {
                MonoGSharedVtMethodInfo *gsharedvt_method;
                MonoMethodSignature *sig;
                MonoDelegateClassMethodPair *del_tramp;
+               /* MONO_PATCH_INFO_VIRT_METHOD */
+               MonoJumpInfoVirtMethod *virt_method;
        } data;
 };
  
-/* Contains information describing an rgctx entry */
+/*
+ * Contains information for computing the
+ * property given by INFO_TYPE of the runtime
+ * object described by DATA.
+ */
 struct MonoJumpInfoRgctxEntry {
        MonoMethod *method;
        gboolean in_mrgctx;
@@ -1482,7 +1514,6 @@ typedef struct {
        guint            got_var_allocated : 1;
        guint            ret_var_is_local : 1;
        guint            ret_var_set : 1;
-       guint            globalra : 1;
        guint            unverifiable : 1;
        guint            skip_visibility : 1;
        guint            disable_reuse_registers : 1;
@@ -1518,7 +1549,7 @@ typedef struct {
        guint            keep_cil_nops : 1;
        guint            gen_seq_points : 1;
        /* Generate seq points for use by the debugger */
-       guint            gen_seq_points_debug_data : 1;
+       guint            gen_sdb_seq_points : 1;
        guint            explicit_null_checks : 1;
        guint            compute_gc_maps : 1;
        guint            soft_breakpoints : 1;
@@ -1541,6 +1572,12 @@ typedef struct {
        GHashTable       *token_info_hash;
        MonoCompileArch  arch;
        guint32          inline_depth;
+       /* Size of memory reserved for thunks */
+       int              thunk_area;
+       /* Thunks */
+       guint8          *thunks;
+       /* Offset between the start of code and the thunks area */
+       int              thunks_offset;
        guint32          exception_type;        /* MONO_EXCEPTION_* */
        guint32          exception_data;
        char*            exception_message;
@@ -1673,7 +1710,6 @@ typedef struct {
        int stat_n_regvars;
        int stat_inlineable_methods;
        int stat_inlined_methods;
-       int stat_cas_demand_generation;
        int stat_code_reallocs;
 } MonoCompile;
 
@@ -1707,12 +1743,6 @@ typedef struct {
        gint32 max_basic_blocks;
        gint32 locals_stack_size;
        gint32 regvars;
-       gint32 cas_declsec_check;
-       gint32 cas_linkdemand_icall;
-       gint32 cas_linkdemand_pinvoke;
-       gint32 cas_linkdemand_aptc;
-       gint32 cas_linkdemand;
-       gint32 cas_demand_generation;
        gint32 generic_virtual_invocations;
        gint32 alias_found;
        gint32 alias_removed;
@@ -1884,7 +1914,7 @@ typedef struct {
         * Whenever data such as next sequence points and flags is required.
         * Next sequence points and flags are required by the debugger agent.
         */
-       gboolean gen_seq_points_debug_data;
+       gboolean gen_sdb_seq_points;
        gboolean gen_seq_points_compact_data;
        gboolean explicit_null_checks;
        /*
@@ -2449,7 +2479,8 @@ GList    *mono_arch_get_global_fp_regs          (MonoCompile *cfg);
 GList    *mono_arch_get_iregs_clobbered_by_call (MonoCallInst *call);
 GList    *mono_arch_get_fregs_clobbered_by_call (MonoCallInst *call);
 guint32   mono_arch_regalloc_cost               (MonoCompile *cfg, MonoMethodVar *vmv);
-void      mono_arch_patch_code                  (MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, MonoCodeManager *dyn_code_mp, gboolean run_cctors);
+void      mono_arch_patch_code                  (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors);
+void      mono_arch_patch_code_new              (MonoCompile *cfg, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gpointer target);
 void      mono_arch_flush_icache                (guint8 *code, gint size);
 int       mono_arch_max_epilog_size             (MonoCompile *cfg);
 guint8   *mono_arch_emit_prolog                 (MonoCompile *cfg);
@@ -2487,6 +2518,7 @@ gboolean  mono_arch_opcode_needs_emulation      (MonoCompile *cfg, int opcode);
 gboolean  mono_arch_tail_call_supported         (MonoCompile *cfg, MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig);
 int       mono_arch_translate_tls_offset        (int offset);
 gboolean  mono_arch_opcode_supported            (int opcode);
+void     mono_arch_setup_resume_sighandler_ctx  (MonoContext *ctx, gpointer func);
 
 #ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 gboolean  mono_arch_is_soft_float               (void);
@@ -2509,7 +2541,6 @@ gboolean  mono_arch_is_breakpoint_event         (void *info, void *sigctx);
 void     mono_arch_skip_breakpoint              (MonoContext *ctx, MonoJitInfo *ji);
 void     mono_arch_skip_single_step             (MonoContext *ctx);
 gpointer mono_arch_get_seq_point_info           (MonoDomain *domain, guint8 *code);
-void     mono_arch_setup_resume_sighandler_ctx  (MonoContext *ctx, gpointer func);
 void     mono_arch_init_lmf_ext                 (MonoLMFExt *ext, gpointer prev_lmf);
 #endif
 
@@ -2569,7 +2600,6 @@ gpointer mono_arch_get_this_arg_from_call       (mgreg_t *regs, guint8 *code);
 gpointer mono_arch_get_delegate_invoke_impl     (MonoMethodSignature *sig, gboolean has_target);
 gpointer mono_arch_get_delegate_virtual_invoke_impl (MonoMethodSignature *sig, MonoMethod *method, int offset, gboolean load_imt_reg);
 gpointer mono_arch_create_specific_trampoline   (gpointer arg1, MonoTrampolineType tramp_type, MonoDomain *domain, guint32 *code_len);
-void        mono_arch_emit_imt_argument         (MonoCompile *cfg, MonoCallInst *call, MonoInst *imt_arg);
 MonoMethod* mono_arch_find_imt_method           (mgreg_t *regs, guint8 *code);
 MonoVTable* mono_arch_find_static_call_vtable   (mgreg_t *regs, guint8 *code);
 gpointer    mono_arch_build_imt_thunk           (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count, gpointer fail_tramp);
@@ -2614,6 +2644,7 @@ void     mono_setup_altstack                    (MonoJitTlsData *tls);
 void     mono_free_altstack                     (MonoJitTlsData *tls);
 gpointer mono_altstack_restore_prot             (mgreg_t *regs, guint8 *code, gpointer *tramp_data, guint8* tramp);
 MonoJitInfo* mini_jit_info_table_find           (MonoDomain *domain, char *addr, MonoDomain **out_domain);
+MonoJitInfo* mini_jit_info_table_find_ext       (MonoDomain *domain, char *addr, gboolean allow_trampolines, MonoDomain **out_domain);
 void     mono_resume_unwind                     (MonoContext *ctx) MONO_LLVM_INTERNAL;
 
 MonoJitInfo * mono_find_jit_info                (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, MonoJitInfo *prev_ji, MonoContext *ctx, MonoContext *new_ctx, char **trace, MonoLMF **lmf, int *native_offset, gboolean *managed);
@@ -2708,10 +2739,6 @@ mono_local_deadce (MonoCompile *cfg);
 void
 mono_local_alias_analysis (MonoCompile *cfg);
 
-/* CAS - stack walk */
-MonoSecurityFrame* ves_icall_System_Security_SecurityFrame_GetSecurityFrame (gint32 skip);
-MonoArray* ves_icall_System_Security_SecurityFrame_GetSecurityStack (gint32 skip);
-
 /* Generic sharing */
 
 void
@@ -2784,6 +2811,9 @@ mini_class_is_generic_sharable (MonoClass *klass);
 gboolean
 mono_is_partially_sharable_inst (MonoGenericInst *inst);
 
+gboolean
+mini_is_gsharedvt_gparam (MonoType *t);
+
 MonoGenericSharingContext* mono_get_generic_context_from_code (guint8 *code);
 
 MonoGenericContext* mini_method_get_context (MonoMethod *method);
@@ -2836,13 +2866,6 @@ void mini_init_gsctx (MonoDomain *domain, MonoMemPool *mp, MonoGenericContext *c
 gpointer mini_get_gsharedvt_wrapper (gboolean gsharedvt_in, gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig, MonoGenericSharingContext *gsctx,
                                                                         gint32 vcall_offset, gboolean calli);
 
-/* wapihandles.c */
-int mini_wapi_hps (int argc, char **argv);
-
-int mini_wapi_semdel (int argc, char **argv);
-
-int mini_wapi_seminfo (int argc, char **argv);
-
 /* SIMD support */
 
 /*
diff --git a/mono/mini/mini.prj b/mono/mini/mini.prj
deleted file mode 100644 (file)
index b9bd7c2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-;; -*- Prcs -*-
-(Created-By-Prcs-Version 1 3 2)
-(Project-Description "The mono SSA-based JIT.")
-(Project-Version mini 0 3)
-(Parent-Version mini 0 2)
-(Version-Log "")
-(New-Version-Log "")
-(Checkin-Time "Sat, 21 Sep 2002 12:11:29 +0200")
-(Checkin-Login lupus)
-(Populate-Ignore ())
-(Project-Keywords)
-(Files
-;; This is a comment.  Fill in files here.
-;; For example:  (prcs/checkout.cc ())
-
-;; Files added by populate at Sat, 08 Jun 2002 17:27:56 +0200,
-;; to version 0.0(w), by lupus:
-
-  (regalloc.c (mini/0_regalloc.c 1.1 664))
-  (cfold.c (mini/1_cfold.c 1.1 664))
-  (mini-x86.c (mini/2_mini-x86.c 1.2 664))
-  (mini.h (mini/3_mini.h 1.3 664))
-  (makefile (mini/4_makefile 1.3 664))
-  (test.cs (mini/5_test.cs 1.1 664))
-  (mini.c (mini/6_mini.c 1.3 664))
-)
-(Merge-Parents)
-(New-Merge-Parents)
index c811f3ec3be51ee6835c0d9e25d788aa62c84ed5..8de8b6f356818f625cc02d5da5b774e864be596e 100644 (file)
@@ -17,7 +17,7 @@ OPTFLAG(LEAF     ,15, "leaf",       "Leaf procedures optimizations")
 OPTFLAG(AOT      ,16, "aot",        "Usage of Ahead Of Time compiled code")
 OPTFLAG(PRECOMP  ,17, "precomp",    "Precompile all methods before executing Main")
 OPTFLAG(ABCREM   ,18, "abcrem",     "Array bound checks removal")
-OPTFLAG(SSAPRE   ,19, "ssapre",     "SSA based Partial Redundancy Elimination")
+OPTFLAG(SSAPRE   ,19, "ssapre",     "SSA based Partial Redundancy Elimination (obsolete)")
 OPTFLAG(EXCEPTION,20, "exception",  "Optimize exception catch blocks")
 OPTFLAG(SSA      ,21, "ssa",        "Use plain SSA form")
 OPTFLAG(SSE2     ,23, "sse2",       "SSE2 instructions on x86")
index 063ebe7c7c1c403bc43defe0bbcff23113b647aa..4f31fd5bd360616ae6b7a38ef7aa2767fd9e0baf 100644 (file)
@@ -54,4 +54,6 @@ PATCH_INFO(OBJC_SELECTOR_REF, "objc_selector_ref")
 PATCH_INFO(METHOD_CODE_SLOT, "method_code_slot")
 PATCH_INFO(LDSTR_LIT, "ldstr_lit")
 PATCH_INFO(GC_NURSERY_START, "gc_nursery_start")
+PATCH_INFO(VIRT_METHOD, "virt_method")
+PATCH_INFO(GC_SAFE_POINT_FLAG, "gc_safe_point_flag")
 PATCH_INFO(NONE, "none")
diff --git a/mono/mini/regalloc.c b/mono/mini/regalloc.c
deleted file mode 100644 (file)
index 4f39872..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * regalloc.c: register state class
- *
- * Authors:
- *    Paolo Molaro (lupus@ximian.com)
- *
- * (C) 2003 Ximian, Inc.
- */
-#include "mini.h"
-
-MonoRegState*
-mono_regstate_new (void)
-{
-       MonoRegState* rs = g_new0 (MonoRegState, 1);
-
-       rs->next_vreg = MAX (MONO_MAX_IREGS, MONO_MAX_FREGS);
-#ifdef MONO_ARCH_NEED_SIMD_BANK
-       rs->next_vreg = MAX (rs->next_vreg, MONO_MAX_XREGS);
-#endif
-
-       return rs;
-}
-
-void
-mono_regstate_free (MonoRegState *rs) {
-       g_free (rs->vassign);
-       g_free (rs);
-}
diff --git a/mono/mini/regalloc2.c b/mono/mini/regalloc2.c
deleted file mode 100644 (file)
index b2fb350..0000000
+++ /dev/null
@@ -1,2336 +0,0 @@
-/*
- * regalloc2.c: Global Register Allocator
- *
- * Author:
- *   Zoltan Varga (vargaz@gmail.com)
- *
- * (C) 2007 Novell, Inc.
- */
-
-#include "mini.h"
-#include "ir-emit.h"
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/mempool-internals.h>
-
-/* Disable for now to save space */
-#undef MONO_ARCH_ENABLE_GLOBAL_RA
-
-#ifdef MONO_ARCH_ENABLE_GLOBAL_RA
-
-/*
- * Documentation
- *
- *   This allocator is based on the paper 
- * "Linear Scan Register Allocation for the Java HotSpot Client Compiler"
- * by Christian Wimmer.
- *
- * It differs from the current allocator in the following respects:
- * - all variables (vregs) are allocated a register, there is no separate local/global
- *   register allocator.
- * - there are no variables allocated strictly to the stack. Even those variables 
- *   allocated to the stack are loaded into a register before they are accessed.
- */
-
-/*
- * Current status:
- *
- * - Only works on amd64.
- * - Tests in mono/mini and mono/tests work, "Hello, World!" works.
- * - The quality of generated code is not bad, but needs more optimizations.
- * - Focus was on correctness and easy debuggability so performance is bad, especially on
- *   large methods (like Main in transparentproxy.exe). Since each interval can be
- *   split at each use position, run time is linear in the number of variable accesses, 
- *   not the number of variables.
- * - Have to think about splitting the available registers between caller saved and callee
- *   saved, and take this into account during allocation (callee saved - good for 
- *   variables which are accessed a lot, and/or are live across calls, caller saved -
- *   good for scratch registers used only in a bblock and not live across calls).
- * - FIXME: Fix mono_arch_get_ireg_clobbered_by_call () to only return caller saved
- *   registers.
- */
-
-/*
- * TYPES
- */
-typedef struct MonoRegallocInterval {
-       /*
-        * 0..MONO_MAX_IREGS - iregs
-        * MONO_MAX_IREGS + 1...MONO_MAX_IREGS+MONO_MAX_FREGS - fregs
-        * MONO_MAX_IREGS+MONO_MAX_FREGS... cfg->next_vreg - vregs
-     * cfg->next_vreg... - split intervals
-        */
-       int vreg;
-       /*
-        * Hard register assigned to this interval, -1 if no register is assigned or the
-        * interval is spilled.
-        */
-       int hreg;
-
-       /*
-        * The actual interval data
-        */
-       MonoLiveInterval *interval;
-
-       /*
-        * Split children of this interval. NULL if the interval is not split.
-        */
-       struct MonoRegallocInterval *child1, *child2;
-
-       /*
-        * List of use positions, each position is identified by (bb->dfn << 16) + ins_pos
-        * The list is sorted by increasing position.
-        */
-       GSList *use_pos;
-
-       /*
-        * The offset relative to the frame pointer where this interval is spilled.
-        */
-       int offset;
-
-       /*
-        * If we are a split child of an interval, this points to our parent
-        */
-       struct MonoRegallocInterval *parent;
-
-       /*
-        * Whenever vreg is an fp vreg
-        */
-       guint fp : 1;
-
-       /*
-        * Whenever the variable is volatile
-        */
-       guint is_volatile : 1;
-
-       /*
-        * The exact type of the variable
-        */
-       MonoType *type;
-
-       /*
-        * The register where this interval should be allocated
-        */
-       int preferred_reg;
-} MonoRegallocInterval;
-
-typedef struct MonoRegallocContext {
-       MonoCompile *cfg;
-       MonoRegallocInterval *varinfo;
-       int num_intervals;
-       /* 
-        * Maps ins pos -> GSList of intervals split at that pos.
-        */
-       GHashTable *split_positions;
-       /*
-        * Used to avoid lookups in split_positions for every position.
-        */
-       GHashTable *split_position_set;
-       /*
-        * Contains MonoInst's representing spill loads/stores
-        */
-       GHashTable *spill_ins;
-} MonoRegallocContext;
-
-/*
- * MACROS
- */
-
-#define BITS_PER_CHUNK MONO_BITSET_BITS_PER_CHUNK
-#define MONO_FIRST_VREG (MONO_MAX_IREGS+MONO_MAX_FREGS)
-
-/* 
- * Each instruction is allocated 4 liveness phases:
- * 0 - USE  - the instruction reads its input registers in this phase
- * 1 - CLOB   - the instruction clobbers some registers in this phase
- * 2 - DEF - the instruction writes its output register(s) in this phase
- * 3 - SPILL  - spill code 
- * In liveness ranges, the start position of the range is the DEF position of the 
- * instruction which defines the vreg.
- */
-
-#define INS_POS_USE 0
-#define INS_POS_CLOB 1
-#define INS_POS_DEF 2
-#define INS_POS_SPILL 3
-
-/* 
- * Should use 16 so liveness ranges are easier to read, but that would overflow
- * on big bblocks.
- */
-#define INS_POS_INTERVAL 8
-
-#define is_hard_reg(r,fp) ((fp) ? ((r) < MONO_MAX_FREGS) : ((r) < MONO_MAX_IREGS))
-#define is_soft_reg(r,fp) (!is_hard_reg((r),(fp)))
-
-#ifdef MONO_ARCH_INST_IS_FLOAT
-#define dreg_is_fp(spec)  (MONO_ARCH_INST_IS_FLOAT (spec [MONO_INST_DEST]))
-#define sreg1_is_fp(spec) (MONO_ARCH_INST_IS_FLOAT (spec [MONO_INST_SRC1]))
-#define sreg2_is_fp(spec) (MONO_ARCH_INST_IS_FLOAT (spec [MONO_INST_SRC2]))
-#else
-#define sreg1_is_fp(spec) (spec [MONO_INST_SRC1] == 'f')
-#define sreg2_is_fp(spec) (spec [MONO_INST_SRC2] == 'f')
-#define dreg_is_fp(spec)  (spec [MONO_INST_DEST] == 'f')
-#endif
-
-/* 
- * Get the base ins position from an ins pos.
- * FIXME: This shouldn't be required but some parts of the code can't seem to
- * handle use positions which have an INS_POS_DEF added.
- */
-#define USE_POS_BASE(ins_pos) ((ins_pos) & ~(INS_POS_INTERVAL - 1))
-
-#define USE_POS_IS_DEF(ins_pos) ((ins_pos) & INS_POS_DEF)
-
-static MonoInst*
-create_move (MonoCompile *cfg, int dreg, int sreg)
-{
-       MonoInst *ins;
-
-       MONO_INST_NEW (cfg, ins, OP_MOVE);
-       ins->dreg = dreg;
-       ins->sreg1 = sreg;
-
-       return ins;
-}
-
-static MonoInst*
-create_fp_move (MonoCompile *cfg, int dreg, int sreg)
-{
-       MonoInst *ins;
-
-       MONO_INST_NEW (cfg, ins, OP_FMOVE);
-       ins->dreg = dreg;
-       ins->sreg1 = sreg;
-
-       return ins;
-}
-
-static void
-emit_move (MonoCompile *cfg, int dreg, int sreg, MonoInst *insert_after)
-{
-       MonoInst *ins = create_move (cfg, dreg, sreg);
-
-       mono_bblock_insert_after_ins (cfg->cbb, insert_after, ins);
-}
-
-static void
-emit_fp_move (MonoCompile *cfg, int dreg, int sreg, MonoInst *insert_after)
-{
-       MonoInst *ins = create_fp_move (cfg, dreg, sreg);
-
-       mono_bblock_insert_after_ins (cfg->cbb, insert_after, ins);
-}
-
-static void
-emit_nop (MonoCompile *cfg, MonoInst *insert_after)
-{
-       MonoInst *ins;
-
-       MONO_INST_NEW (cfg, ins, OP_NOP);
-
-       mono_bblock_insert_after_ins (cfg->cbb, insert_after, ins);     
-}
-
-/**
- * handle_reg_constraints:
- *
- *   Rewrite the IR so it satisfies the register constraints of the architecture.
- */
-static void
-handle_reg_constraints (MonoCompile *cfg)
-{
-       MonoMethodSignature *sig;
-       MonoBasicBlock *bb;
-       int i;
-
-       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
-               MonoInst *ins;
-               MonoInst *prev = NULL;
-
-               if (cfg->verbose_level > 1) mono_print_bb (bb, "BEFORE HANDLE-REG-CONSTRAINTS ");
-
-               cfg->cbb = bb;
-               MONO_BB_FOR_EACH_INS (bb, ins) {
-                       const char *spec = ins_get_spec (ins->opcode);
-                       int dest_sreg1, dest_sreg2, dest_sreg3, dest_dreg;
-
-                       dest_sreg1 = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_SRC1]);
-                       dest_sreg2 = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_SRC2]);
-                       dest_sreg3 = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_SRC3]);
-                       dest_dreg = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_DEST]);
-
-                       if (MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_DEST]) ||
-                                       MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC1]) ||
-                                       MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC2]) ||
-                                       MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC3])) {
-                               /* FIXME: */
-                               g_assert_not_reached ();
-                       }
-
-                       if (spec [MONO_INST_CLOB] == 'c') {
-                               MonoCallInst *call = (MonoCallInst*)ins;
-                               GSList *list;
-
-                               /*
-                                * FIXME: mono_arch_emit_call () already adds moves for each argument,
-                                * it might be better to rewrite those by changing the dreg to the hreg.
-                                */
-                               for (list = call->out_ireg_args; list; list = list->next) {
-                                       guint32 regpair;
-                                       int reg, hreg;
-                                       MonoInst *move;
-
-                                       regpair = (guint32)(gssize)(list->data);
-                                       hreg = regpair >> 24;
-                                       reg = regpair & 0xffffff;
-
-                                       move = create_move (cfg, hreg, reg);
-                                       mono_bblock_insert_after_ins (bb, prev, move);
-                                       prev = move;
-                               }
-
-                               for (list = call->out_freg_args; list; list = list->next) {
-                                       guint32 regpair;
-                                       int reg, hreg;
-                                       MonoInst *move;
-
-                                       regpair = (guint32)(gssize)(list->data);
-                                       hreg = regpair >> 24;
-                                       reg = regpair & 0xffffff;
-
-                                       move = create_fp_move (cfg, hreg + MONO_MAX_IREGS, reg);
-                                       mono_bblock_insert_after_ins (bb, prev, move);
-                                       prev = move;
-                               }
-                       }
-
-                       if (spec [MONO_INST_CLOB] == '1') {
-                               /* Copying sreg1 to dreg could clobber sreg2 so make a copy of sreg2 */
-                               if (spec [MONO_INST_SRC2] != ' ' && (ins->dreg == ins->sreg2)) {
-                                       int new_sreg2 = mono_alloc_preg (cfg);
-                                       MonoInst *move;
-                                       g_assert (spec [MONO_INST_DEST] != 'f');
-                                       move = create_move (cfg, new_sreg2, ins->sreg2);
-                                       mono_bblock_insert_after_ins (bb, prev, move);
-                                       prev = move;
-                                       ins->sreg2 = new_sreg2;
-                               }
-                               g_assert (!(spec [MONO_INST_SRC3] != ' ' && (ins->dreg == ins->sreg3)));
-                               if (spec [MONO_INST_DEST] == 'f')
-                                       emit_fp_move (cfg, ins->dreg, ins->sreg1, prev);
-                               else
-                                       emit_move (cfg, ins->dreg, ins->sreg1, prev);
-                               ins->sreg1 = ins->dreg;
-                       }
-
-                       if (dest_sreg1 != -1) {
-                               emit_move (cfg, dest_sreg1, ins->sreg1, prev);
-                               ins->sreg1 = dest_sreg1;
-                       }
-
-                       if (dest_sreg2 != -1) {
-                               emit_move (cfg, dest_sreg2, ins->sreg2, prev);
-                               ins->sreg2 = dest_sreg2;
-                       }
-
-                       if (dest_sreg3 != -1) {
-                               emit_move (cfg, dest_sreg3, ins->sreg3, prev);
-                               ins->sreg3 = dest_sreg3;
-                       }
-
-                       if (dest_dreg != -1) {
-                               emit_move (cfg, ins->dreg, dest_dreg, ins);
-                               g_assert (spec [MONO_INST_CLOB] != '1');
-                               ins->dreg = dest_dreg;
-                       }                               
-
-                       /* FIXME: Add fixed fp regs to the machine description */
-                       if (ins->opcode == OP_FCALL || ins->opcode == OP_FCALL_REG || ins->opcode == OP_FCALL_MEMBASE) {
-                               emit_fp_move (cfg, ins->dreg, MONO_MAX_IREGS + MONO_ARCH_FP_RETURN_REG, ins);
-                               ins->dreg = MONO_MAX_IREGS + MONO_ARCH_FP_RETURN_REG;
-                       }
-
-                       /*
-                        * Add a dummy instruction after each definition of a volatile vreg, this is
-                        * needed by the code in decompose_volatile_intervals ().
-                        */
-                       if (get_vreg_to_inst (cfg, ins->dreg) && (get_vreg_to_inst (cfg, ins->dreg)->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT))) {
-                               emit_nop (cfg, ins);
-                       }
-
-                       prev = ins;
-               }
-
-               sig = mono_method_signature (cfg->method);
-
-               /* Add move of arguments */
-               /* 
-                * FIXME: Maybe this should be done by the allocator.
-                */
-               if (bb == cfg->bb_entry) {
-                       MonoType *arg_type;
-
-                       prev = NULL;
-                       if (cfg->vret_addr) {
-                               g_assert (cfg->vret_addr->opcode == OP_REGVAR);
-                               emit_move (cfg, cfg->vret_addr->dreg, cfg->vret_addr->inst_c0, prev);
-                               prev = bb->code;
-                       }
-
-                       for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-                               ins = cfg->args [i];
-
-                               if (sig->hasthis && (i == 0))
-                                       arg_type = &mono_defaults.object_class->byval_arg;
-                               else
-                                       arg_type = sig->params [i - sig->hasthis];
-
-                               // FIXME: vtypes in registers (pass + return)
-
-                               if (ins->opcode == OP_REGVAR) {
-                                       if (!arg_type->byref && ((arg_type->type == MONO_TYPE_R4) || (arg_type->type == MONO_TYPE_R8)))
-                                               /* For R4, the prolog is assumed to do the conversion */
-                                               emit_fp_move (cfg, ins->dreg, ins->inst_c0 + MONO_MAX_IREGS, prev);
-                                       else
-                                               emit_move (cfg, ins->dreg, ins->inst_c0, prev);
-                               }
-
-                               prev = bb->code;
-                       }
-               }
-
-               /* Add move of return value */
-               for (i = 0; i < bb->out_count; ++i) {
-                       /* bb->dfn == 0 -> unreachable */
-                       if (cfg->ret && !cfg->vret_addr && !MONO_TYPE_ISSTRUCT (sig->ret) && bb->out_bb [i] == cfg->bb_exit && bb->dfn) {
-                               MonoInst *ins = NULL;
-                               int hreg;
-
-                               hreg = cfg->ret->inst_c0;
-
-                               if ((sig->ret->type == MONO_TYPE_R4) || (sig->ret->type == MONO_TYPE_R8))
-                                       /* For R4, the JIT has already emitted code to do the conversion */
-                                       ins = create_fp_move (cfg, hreg + MONO_MAX_IREGS, cfg->ret->dreg);
-                               else
-                                       ins = create_move (cfg, hreg, cfg->ret->dreg);
-                               mono_add_ins_to_end (bb, ins);
-                       }
-               }
-
-               if (cfg->verbose_level > 1) mono_print_bb (bb, "AFTER HANDLE-REG-CONSTRAINTS ");
-       }
-
-       mono_verify_cfg (cfg);
-}
-
-/*
- * collect_fp_vregs:
- *
- *   Set varinfo->fp for all float vregs
- */
-static void
-collect_fp_vregs (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       MonoBasicBlock *bb;
-
-       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
-               MonoInst *ins;
-
-               MONO_BB_FOR_EACH_INS (bb, ins) {
-                       const char *spec = ins_get_spec (ins->opcode);
-
-                       if (G_UNLIKELY (sreg1_is_fp (spec) || sreg2_is_fp (spec) || dreg_is_fp (spec))) {
-                               if (sreg1_is_fp (spec)) {
-                                       g_assert (ins->sreg1 >= MONO_MAX_IREGS);
-                                       ctx->varinfo [ins->sreg1].fp = TRUE;
-                                       if (ctx->varinfo [ins->sreg1].type->type != MONO_TYPE_R4)
-                                               ctx->varinfo [ins->sreg1].type = &mono_defaults.double_class->byval_arg;
-                               }
-                               if (sreg2_is_fp (spec)) {
-                                       g_assert (ins->sreg2 >= MONO_MAX_IREGS);
-                                       ctx->varinfo [ins->sreg2].fp = TRUE;
-                                       if (ctx->varinfo [ins->sreg2].type->type != MONO_TYPE_R4)
-                                               ctx->varinfo [ins->sreg2].type = &mono_defaults.double_class->byval_arg;
-                               }
-                               if (dreg_is_fp (spec)) {
-                                       g_assert (ins->dreg >= MONO_MAX_IREGS);
-                                       ctx->varinfo [ins->dreg].fp = TRUE;
-                                       if (ctx->varinfo [ins->dreg].type->type != MONO_TYPE_R4)
-                                               ctx->varinfo [ins->dreg].type = &mono_defaults.double_class->byval_arg;
-                               }
-                       }
-               }
-       }
-}
-
-#if 1
-#define LIVENESS_DEBUG(a) do { if (cfg->verbose_level > 2) { a; } } while (0)
-#else
-#define LIVENESS_DEBUG(a)
-#endif
-
-// #define DEBUG_LIVENESS 1
-
-G_GNUC_UNUSED static void
-mono_bitset_print (MonoBitSet *set)
-{
-       int i;
-
-       printf ("{");
-       for (i = 0; i < mono_bitset_size (set); i++) {
-
-               if (mono_bitset_test (set, i))
-                       printf ("%d, ", i);
-
-       }
-       printf ("}\n");
-}
-
-static inline void
-update_gen_kill_set (MonoCompile *cfg, MonoRegallocContext *ctx, MonoBasicBlock *bb, MonoInst *ins)
-{
-       const char *spec = INS_INFO (ins->opcode);
-       int sreg;
-
-       /* SREG1 */
-       sreg = ins->sreg1;
-       if (spec [MONO_INST_SRC1] != ' ') {
-               if (!mono_bitset_test_fast (bb->kill_set, sreg))
-                       mono_bitset_set_fast (bb->gen_set, sreg);
-       }
-
-       /* SREG2 */
-       sreg = ins->sreg2;
-       if (spec [MONO_INST_SRC2] != ' ') {
-               if (!mono_bitset_test_fast (bb->kill_set, sreg))
-                       mono_bitset_set_fast (bb->gen_set, sreg);
-       }
-
-       /* SREG3 */
-       sreg = ins->sreg3;
-       if (spec [MONO_INST_SRC3] != ' ') {
-               if (!mono_bitset_test_fast (bb->kill_set, sreg))
-                       mono_bitset_set_fast (bb->gen_set, sreg);
-       }
-
-       /* DREG */
-       if (spec [MONO_INST_DEST] != ' ') {
-               if (MONO_IS_STORE_MEMBASE (ins)) {
-                       if (!mono_bitset_test_fast (bb->kill_set, ins->dreg))
-                               mono_bitset_set_fast (bb->gen_set, ins->dreg);
-               } else {
-                       mono_bitset_set_fast (bb->kill_set, ins->dreg);
-               }
-       }
-}
-
-static void
-compute_gen_kill_sets (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       int i, max_vars = cfg->next_vreg;
-       int bitsize;
-       guint8 *mem;
-
-       bitsize = mono_bitset_alloc_size (max_vars, 0);
-       mem = mono_mempool_alloc0 (cfg->mempool, cfg->num_bblocks * bitsize * 3);
-
-       for (i = 0; i < cfg->num_bblocks; ++i) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
-
-               bb->gen_set = mono_bitset_mem_new (mem, max_vars, MONO_BITSET_DONT_FREE);
-               mem += bitsize;
-               bb->kill_set = mono_bitset_mem_new (mem, max_vars, MONO_BITSET_DONT_FREE);
-               mem += bitsize;
-               /* Initialized later */
-               bb->live_in_set = NULL;
-               bb->live_out_set = mono_bitset_mem_new (mem, max_vars, MONO_BITSET_DONT_FREE);
-               mem += bitsize;
-       }
-
-       for (i = 0; i < cfg->num_bblocks; ++i) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
-               MonoInst *ins;
-#ifdef DEBUG_LIVENESS
-               int j;
-#endif
-
-               MONO_BB_FOR_EACH_INS (bb, ins)
-                       update_gen_kill_set (cfg, ctx, bb, ins);
-
-#ifdef DEBUG_LIVENESS
-               printf ("BLOCK BB%d (", bb->block_num);
-               for (j = 0; j < bb->out_count; j++) 
-                       printf ("BB%d, ", bb->out_bb [j]->block_num);
-               
-               printf (")\n");
-               printf ("GEN  BB%d: ", bb->block_num); mono_bitset_print (bb->gen_set);
-               printf ("KILL BB%d: ", bb->block_num); mono_bitset_print (bb->kill_set);
-#endif
-       }
-
-       if (cfg->ret && cfg->ret->opcode == OP_REGVAR) {
-               int hreg = cfg->ret->inst_c0;
-
-               /* gen_set might be empty if bb_exit is not reachable, like when using a tail call */
-               if (cfg->bb_exit->gen_set)
-                       mono_bitset_set (cfg->bb_exit->gen_set, hreg);
-       }
-}
-
-static void
-compute_live_in_out_sets (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       MonoBitSet *old_live_out_set;
-       int i, j, max_vars = cfg->next_vreg;
-       int out_iter;
-       gboolean *in_worklist;
-       MonoBasicBlock **worklist;
-       guint32 l_end;
-       int bitsize;
-       guint8 *mem;
-
-       bitsize = mono_bitset_alloc_size (max_vars, 0);
-       mem = mono_mempool_alloc0 (cfg->mempool, cfg->num_bblocks * bitsize);
-
-       old_live_out_set = mono_bitset_new (max_vars, 0);
-       in_worklist = g_new0 (gboolean, cfg->num_bblocks + 1);
-
-       worklist = g_new (MonoBasicBlock *, cfg->num_bblocks + 1);
-       l_end = 0;
-
-       /*
-        * This is a backward dataflow analysis problem, so we process blocks in
-        * decreasing dfn order, this speeds up the iteration.
-        */
-       for (i = 0; i < cfg->num_bblocks; i ++) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
-
-               worklist [l_end ++] = bb;
-               in_worklist [bb->dfn] = TRUE;
-       }
-
-       out_iter = 0;
-
-       while (l_end != 0) {
-               MonoBasicBlock *bb = worklist [--l_end];
-               MonoBasicBlock *out_bb;
-               gboolean changed;
-
-               in_worklist [bb->dfn] = FALSE;
-
-#ifdef DEBUG_LIVENESS
-               printf ("P: %d(%d): IN: ", bb->block_num, bb->dfn);
-               for (j = 0; j < bb->in_count; ++j) 
-                       printf ("BB%d ", bb->in_bb [j]->block_num);
-               printf ("OUT:");
-               for (j = 0; j < bb->out_count; ++j) 
-                       printf ("BB%d ", bb->out_bb [j]->block_num);
-               printf ("\n");
-#endif
-
-
-               if (bb->out_count == 0)
-                       continue;
-
-               out_iter ++;
-
-               if (!bb->live_in_set) {
-                       /* First pass over this bblock */
-                       changed = TRUE;
-               }
-               else {
-                       changed = FALSE;
-                       mono_bitset_copyto_fast (bb->live_out_set, old_live_out_set);
-               }
-               for (j = 0; j < bb->out_count; j++) {
-                       out_bb = bb->out_bb [j];
-
-                       if (!out_bb->live_in_set) {
-                               out_bb->live_in_set = mono_bitset_mem_new (mem, max_vars, MONO_BITSET_DONT_FREE);
-                               mem += bitsize;
-
-                               mono_bitset_copyto_fast (out_bb->live_out_set, out_bb->live_in_set);
-                               mono_bitset_sub_fast (out_bb->live_in_set, out_bb->kill_set);
-                               mono_bitset_union_fast (out_bb->live_in_set, out_bb->gen_set);
-                       }
-
-                       mono_bitset_union_fast (bb->live_out_set, out_bb->live_in_set);
-               }
-                               
-               if (changed || !mono_bitset_equal (old_live_out_set, bb->live_out_set)) {
-                       if (!bb->live_in_set) {
-                               bb->live_in_set = mono_bitset_mem_new (mem, max_vars, MONO_BITSET_DONT_FREE);
-                               mem += bitsize;
-                       }
-                       mono_bitset_copyto_fast (bb->live_out_set, bb->live_in_set);
-                       mono_bitset_sub_fast (bb->live_in_set, bb->kill_set);
-                       mono_bitset_union_fast (bb->live_in_set, bb->gen_set);
-
-                       for (j = 0; j < bb->in_count; j++) {
-                               MonoBasicBlock *in_bb = bb->in_bb [j];
-                               /* 
-                                * Some basic blocks do not seem to be in the 
-                                * cfg->bblocks array...
-                                */
-                               if (in_bb->gen_set && !in_worklist [in_bb->dfn]) {
-#ifdef DEBUG_LIVENESS
-                                       printf ("\tADD: %d\n", in_bb->block_num);
-#endif
-                                       /*
-                                        * Put the block at the top of the stack, so it
-                                        * will be processed right away.
-                                        */
-                                       worklist [l_end ++] = in_bb;
-                                       in_worklist [in_bb->dfn] = TRUE;
-                               }
-                       }
-               }
-       }
-
-#ifdef DEBUG_LIVENESS
-               printf ("IT: %d %d.\n", cfg->num_bblocks, out_iter);
-#endif
-
-       mono_bitset_free (old_live_out_set);
-
-       g_free (worklist);
-       g_free (in_worklist);
-
-       /* Compute live_in_set for bblocks skipped earlier */
-       for (i = 0; i < cfg->num_bblocks; ++i) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
-
-               if (!bb->live_in_set) {
-                       bb->live_in_set = mono_bitset_mem_new (mem, max_vars, MONO_BITSET_DONT_FREE);
-                       mem += bitsize;
-
-                       mono_bitset_copyto_fast (bb->live_out_set, bb->live_in_set);
-                       mono_bitset_sub_fast (bb->live_in_set, bb->kill_set);
-                       mono_bitset_union_fast (bb->live_in_set, bb->gen_set);
-               }
-       }
-
-#ifdef DEBUG_LIVENESS
-       for (i = cfg->num_bblocks - 1; i >= 0; i--) {
-               MonoBasicBlock *bb = cfg->bblocks [i];
-               
-               printf ("LIVE IN  BB%d: ", bb->block_num); 
-               mono_bitset_print (bb->live_in_set); 
-               printf ("LIVE OUT BB%d: ", bb->block_num); 
-               mono_bitset_print (bb->live_out_set); 
-       }
-#endif
-}
-
-static MonoLiveInterval*
-get_var_interval (MonoCompile *cfg, MonoRegallocContext *ctx, int idx)
-{
-       MonoLiveInterval *interval = ctx->varinfo [idx].interval;
-       if (interval)
-               return interval;
-       interval = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
-       ctx->varinfo [idx].interval = interval;
-       return interval;
-}
-
-static inline void
-update_liveness (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst *ins, int inst_num, gint32 *last_use)
-{
-       const char *spec = INS_INFO (ins->opcode);
-       int sreg;
-
-       LIVENESS_DEBUG (printf ("\t%x: ", inst_num); mono_print_ins (ins));
-
-       /* DREG */
-       if (spec [MONO_INST_DEST] != ' ') {
-               if (MONO_IS_STORE_MEMBASE (ins)) {
-                       if (last_use [ins->dreg] == 0) {
-                               LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", ins->dreg, inst_num + INS_POS_USE));
-                               last_use [ins->dreg] = inst_num + INS_POS_USE;
-                       }
-               } else {
-                       if (last_use [ins->dreg] > 0) {
-                               LIVENESS_DEBUG (printf ("\tadd range to R%d: [%x, %x]\n", ins->dreg, inst_num + INS_POS_DEF, last_use [ins->dreg]));
-                               if (ins->dreg == ins->sreg1 && ins->dreg < MONO_FIRST_VREG) {
-                                       /* 
-                                        * Avoid a hole in the liveness range, since the allocation code
-                                        * could think the register is free there.
-                                        */
-                                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->dreg), inst_num, last_use [ins->dreg]);
-                               } else {
-                                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->dreg), inst_num + INS_POS_DEF, last_use [ins->dreg]);
-                               }
-                               last_use [ins->dreg] = 0;
-                       }
-                       else {
-                               if (!vreg_is_volatile (cfg, ins->dreg) && ((ins->opcode == OP_ICONST) || (ins->opcode == OP_I8CONST) || (ins->opcode == OP_R8CONST) || (ins->opcode == OP_MOVE) || (ins->opcode == OP_FMOVE))) {
-                                       LIVENESS_DEBUG (printf ("\tdead def of R%d eliminated\n", ins->dreg));
-                                       NULLIFY_INS (ins);
-                                       spec = INS_INFO (ins->opcode);
-                               } else {
-                                       LIVENESS_DEBUG (printf ("\tdead def of R%d, add range to R%d: [%x, %x]\n", ins->dreg, ins->dreg, inst_num + INS_POS_DEF, inst_num + INS_POS_DEF));
-                                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->dreg), inst_num + INS_POS_DEF, inst_num + INS_POS_DEF);
-                               }
-                       }
-               }
-               if (ins->opcode != OP_NOP) {
-                       /* Since we process instructions backwards, the list will be properly sorted */
-                       if (MONO_IS_STORE_MEMBASE (ins))
-                               ctx->varinfo [ins->dreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [ins->dreg].use_pos, GINT_TO_POINTER (inst_num));
-                       else
-                               ctx->varinfo [ins->dreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [ins->dreg].use_pos, GINT_TO_POINTER (inst_num + INS_POS_DEF));
-               }
-
-               /* Set preferred vregs */
-               if ((ins->opcode == OP_MOVE) || (ins->opcode == OP_FMOVE)) {
-                       if (ins->sreg1 < MONO_FIRST_VREG) {
-                               ctx->varinfo [ins->dreg].preferred_reg = ins->sreg1;
-                       } else if (ins->dreg < MONO_FIRST_VREG) {
-                               ctx->varinfo [ins->sreg1].preferred_reg = ins->dreg;
-                       } else if (ctx->varinfo [ins->dreg].preferred_reg != -1) {
-                               /*
-                                * Propagate preferred vregs. This works because instructions are
-                                * processed in reverse order.
-                                */
-                               ctx->varinfo [ins->sreg1].preferred_reg = ctx->varinfo [ins->dreg].preferred_reg;
-                       }
-               }
-       }
-
-       /* SREG1 */
-       sreg = ins->sreg1;
-       if (spec [MONO_INST_SRC1] != ' ') {
-               if (last_use [sreg] == 0) {
-                       LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", sreg, inst_num + INS_POS_USE));
-                       last_use [sreg] = inst_num + INS_POS_USE;
-               }
-               ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
-       }
-
-       /* SREG2 */
-       sreg = ins->sreg2;
-       if (spec [MONO_INST_SRC2] != ' ') {
-               if (last_use [sreg] == 0) {
-                       LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", sreg, inst_num + INS_POS_USE));
-                       last_use [sreg] = inst_num + INS_POS_USE;
-               }
-               ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
-
-       /* SREG3 */
-       sreg = ins->sreg3;
-       if (spec [MONO_INST_SRC3] != ' ') {
-               if (last_use [sreg] == 0) {
-                       LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", sreg, inst_num + INS_POS_USE));
-                       last_use [sreg] = inst_num + INS_POS_USE;
-               }
-               ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
-
-               /*
-               if (ins->sreg3 <= MONO_MAX_IREGS)
-                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->sreg3), inst_num + INS_POS_DEF, inst_num + INS_POS_DEF);
-               */
-       }
-
-       if (ins_get_spec (ins->opcode)[MONO_INST_CLOB] == 'c') {
-               MonoCallInst *call = (MonoCallInst*)ins;
-               GSList *list;
-
-               for (list = call->out_ireg_args; list; list = list->next) {
-                       guint32 regpair;
-
-                       regpair = (guint32)(gssize)(list->data);
-                       sreg = regpair >> 24;
-
-                       if (last_use [sreg] == 0) {
-                               LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", sreg, inst_num + INS_POS_USE));
-                               last_use [sreg] = inst_num + INS_POS_USE;
-                       }
-                       ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
-               }
-
-               for (list = call->out_freg_args; list; list = list->next) {
-                       guint32 regpair;
-
-                       regpair = (guint32)(gssize)(list->data);
-                       sreg = (regpair >> 24) + MONO_MAX_IREGS;
-
-                       if (last_use [sreg] == 0) {
-                               LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", sreg, inst_num + INS_POS_USE));
-                               last_use [sreg] = inst_num + INS_POS_USE;
-                       }
-                       ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
-               }
-       }
-
-       /* CLOBBERING */
-       if (ins_get_spec (ins->opcode)[MONO_INST_CLOB]) {
-               char clob = ins_get_spec (ins->opcode)[MONO_INST_CLOB];
-               GList *l;
-
-               if (clob == 'c') {
-                       /* A call clobbers some int/fp registers */
-                       for (l = mono_arch_get_iregs_clobbered_by_call ((MonoCallInst*)ins); l; l = l->next)
-                               mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, GPOINTER_TO_INT (l->data)), inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
-                       for (l = mono_arch_get_fregs_clobbered_by_call ((MonoCallInst*)ins); l; l = l->next)
-                               mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, GPOINTER_TO_INT (l->data)), inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
-               }
-               else {
-                       int clob_reg = MONO_ARCH_INST_FIXED_REG (clob);
-
-                       if (clob_reg != -1)
-                               mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, clob_reg), inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
-               }
-       }
-}
-
-/*
- * compute_intervals:
- *
- *   Compute liveness intervals for all vregs.
- */
-static void
-compute_intervals (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       int bnum, idx, i, j, nins, rem, max, max_vars, block_from, block_to, pos, reverse_len;
-       gint32 *last_use;
-       MonoInst **reverse;
-
-       max_vars = cfg->next_vreg;
-       last_use = g_new0 (gint32, max_vars);
-
-       reverse_len = 1024;
-       reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
-
-       /*
-        * Process bblocks in reverse order, so the addition of new live ranges
-        * to the intervals is faster.
-        */
-       for (bnum = cfg->num_bblocks - 1; bnum >= 0; --bnum) {
-               MonoBasicBlock *bb = cfg->bblocks [bnum];
-               MonoInst *ins;
-
-               block_from = (bb->dfn << 16); /* so pos > 0 */
-               if (bnum < cfg->num_bblocks - 1)
-                       /* Beginning of the next bblock */
-                       block_to = (cfg->bblocks [bnum + 1]->dfn << 16);
-               else
-                       block_to = (bb->dfn << 16) + 0xffff;
-
-               LIVENESS_DEBUG (printf ("LIVENESS BLOCK BB%d:\n", bb->block_num));
-
-               memset (last_use, 0, max_vars * sizeof (gint32));
-               
-               /* For variables in bb->live_out, set last_use to block_to */
-
-               rem = max_vars % BITS_PER_CHUNK;
-               max = ((max_vars + (BITS_PER_CHUNK -1)) / BITS_PER_CHUNK);
-               for (j = 0; j < max; ++j) {
-                       gsize bits_out;
-                       int k;
-
-                       bits_out = mono_bitset_get_fast (bb->live_out_set, j);
-                       k = (j * BITS_PER_CHUNK);       
-                       while (bits_out) {
-                               if (bits_out & 1) {
-                                       LIVENESS_DEBUG (printf ("Var R%d live at exit, set last_use to %x\n", k, block_to));
-                                       last_use [k] = block_to;
-                               }
-                               bits_out >>= 1;
-                               k ++;
-                       }
-               }
-
-               for (nins = 0, pos = block_from, ins = bb->code; ins; ins = ins->next, ++nins, pos += INS_POS_INTERVAL) {
-                       if (nins >= reverse_len) {
-                               int new_reverse_len = reverse_len * 2;
-                               MonoInst **new_reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * new_reverse_len);
-                               memcpy (new_reverse, reverse, sizeof (MonoInst*) * reverse_len);
-                               reverse = new_reverse;
-                               reverse_len = new_reverse_len;
-                       }
-
-                       reverse [nins] = ins;
-               }
-
-               g_assert (pos < block_to);
-
-               /* Process instructions backwards */
-               for (i = nins - 1; i >= 0; --i) {
-                       MonoInst *ins = (MonoInst*)reverse [i];
-
-                       update_liveness (cfg, ctx, ins, pos, last_use);
-
-                       pos -= INS_POS_INTERVAL;
-               }
-
-               for (idx = 0; idx < max_vars; ++idx) {
-                       if (last_use [idx] != 0) {
-                               /* Live at exit, not written -> live on enter */
-                               LIVENESS_DEBUG (printf ("Var R%d live at enter, add range to R%d: [%x, %x)\n", idx, idx, block_from, last_use [idx]));
-                               mono_linterval_add_range (cfg, get_var_interval (cfg, ctx, idx), block_from, last_use [idx]);
-                       }
-               }
-       }
-
-#if 0
-       // FIXME:
-       /*
-        * Arguments need to have their live ranges extended to the beginning of
-        * the method to account for the arg reg/memory -> global register copies
-        * in the prolog (bug #74992).
-        */
-       for (i = 0; i < cfg->num_varinfo; i ++) {
-               MonoMethodVar *vi = MONO_VARINFO (cfg, i);
-               if ((cfg->varinfo [vi->idx]->opcode == OP_ARG) && (cfg->varinfo [vi->idx] != cfg->ret))
-                       mono_linterval_add_range (cfg, get_var_interval (cfg, ctx, cfg->varinfo [i]->dreg), 0, 1);
-       }
-#endif
-
-#if 0
-               for (idx = 0; idx < max_vars; ++idx) {
-                       printf ("LIVENESS R%d: ", idx);
-                       mono_linterval_print (get_var_interval (cfg, ctx, idx));
-                       printf ("\n");
-               }
-       }
-#endif
-
-       g_free (last_use);
-}
-
-/*
- * analyze_liveness:
- *
- *   Perform liveness analysis.
- */
-static void
-analyze_liveness (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       LIVENESS_DEBUG (printf ("LIVENESS 3 %s\n", mono_method_full_name (cfg->method, TRUE)));
-
-       /* FIXME: Make only one pass over the IR */
-
-       compute_gen_kill_sets (cfg, ctx);
-
-       compute_live_in_out_sets (cfg, ctx);
-
-       compute_intervals (cfg, ctx);
-}
-
-
-static gint
-compare_by_interval_start_pos_func (gconstpointer a, gconstpointer b)
-{
-       MonoRegallocInterval *v1 = (MonoRegallocInterval*)a;
-       MonoRegallocInterval *v2 = (MonoRegallocInterval*)b;
-
-       if (v1 == v2)
-               return 0;
-       else if (v1->interval->range && v2->interval->range)
-               return v1->interval->range->from - v2->interval->range->from;
-       else if (v1->interval->range)
-               return -1;
-       else
-               return 1;
-}
-
-#define LSCAN_DEBUG(a) MINI_DEBUG(cfg->verbose_level, 2, a;)
-
-/**
- * split_interval:
- *
- *   Split the interval into two child intervals at POS. 
- * [a, b] becomes [a, POS - 1], [POS, b].
- */
-static void
-split_interval (MonoCompile *cfg, MonoRegallocContext *ctx, MonoRegallocInterval *interval, int pos)
-{
-       MonoRegallocInterval *child1, *child2;
-       GSList *l, *split_list;
-
-       child1 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRegallocInterval));
-       child2 = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRegallocInterval));
-       child1->vreg = ctx->num_intervals ++;
-       child1->hreg = -1;
-       child1->offset = -1;
-       child1->preferred_reg = -1;
-       child1->is_volatile = interval->is_volatile;
-       child1->fp = interval->fp;
-       child1->type = interval->type;
-       child2->vreg = ctx->num_intervals ++;
-       child2->hreg = -1;
-       child2->offset = -1;
-       child2->preferred_reg = -1;
-       child2->is_volatile = interval->is_volatile;
-       child2->fp = interval->fp;
-       child2->type = interval->type;
-
-       interval->child1 = child1;
-       interval->child2 = child2;
-       child1->parent = interval;
-       child2->parent = interval;
-
-       mono_linterval_split (cfg, interval->interval, &child1->interval, &child2->interval, pos);
-
-       /* Split use positions */
-       for (l = interval->use_pos; l; l = l->next) {
-               int use_pos = GPOINTER_TO_INT (l->data);
-
-               if (use_pos < pos)
-                       child1->use_pos = g_slist_append_mempool (cfg->mempool, child1->use_pos, l->data);
-               else
-                       child2->use_pos = g_slist_append_mempool (cfg->mempool, child2->use_pos, l->data);
-       }
-
-       /* Remember where spill code needs to be inserted */
-       split_list = g_hash_table_lookup (ctx->split_positions, GUINT_TO_POINTER (pos));
-       split_list = g_slist_prepend (split_list, interval);
-       g_hash_table_insert (ctx->split_positions, GUINT_TO_POINTER (pos), split_list);
-       g_hash_table_insert (ctx->split_position_set, GUINT_TO_POINTER (pos - (pos % INS_POS_INTERVAL)), GUINT_TO_POINTER (pos));
-
-       if (cfg->verbose_level > 2) {
-               printf ("\tSplit R%d into R%d and R%d at %x\n", interval->vreg, child1->vreg, child2->vreg, pos);
-               printf ("\t R%d ", interval->vreg);
-               mono_linterval_print (interval->interval);
-               printf ("-> R%d ", child1->vreg);
-               mono_linterval_print (child1->interval);
-               printf ("||| R%d ", child2->vreg);
-               mono_linterval_print (child2->interval);
-               printf ("\n");
-       }
-}
-
-/**
- * child_at:
- *
- *   Return L or one of its children which covers POS.
- */
-static MonoRegallocInterval*
-child_at (MonoRegallocInterval *l, int pos)
-{
-       if (l->vreg < MONO_FIRST_VREG)
-               return l;
-
-       if (!l->child1) {
-               g_assert (mono_linterval_covers (l->interval, pos));
-               return l;
-       }
-
-       if (mono_linterval_covers (l->child1->interval, pos))
-               return child_at (l->child1, pos);
-       else if (mono_linterval_covers (l->child2->interval, pos))
-               return child_at (l->child2, pos);
-       else {
-               g_assert_not_reached ();
-               return NULL;
-       }
-}
-
-/**
- * decompose_volatile_intervals:
- *
- *   Decompose intervals belonging to volatile variables. Return the decomposed intervals
- * which should be allocated to registers.
- */
-static GList*
-decompose_volatile_intervals (MonoCompile *cfg, MonoRegallocContext *ctx, GList *intervals)
-{
-       GList *new_intervals;
-       GList *l;
-
-       /*
-        * We model volatile intervals by splitting them at use positions and spilling the
-        * sub intervals, ie. [a, b] is transformed to [a, a], [a + 1, b], [b, b] with the
-        * middle interval spilled. This ensures that the variable will be spilled after each
-        * def, and it will be loaded before each use.
-        * FIXME: Stress test this by making most variables volatile
-        */
-       new_intervals = g_list_copy (intervals);
-       for (l = intervals; l; l = l->next) {
-               MonoRegallocInterval *current = l->data;
-               MonoLiveInterval *new;
-               GSList *use_pos;
-               gboolean ends_with_def;
-
-               if (!current->is_volatile)
-                       continue;
-
-               /*
-                * Instead of trying to split the arbitrary interval produced by the liveness
-                * analysis phase, just use one big interval.
-                */
-               ends_with_def = FALSE;
-               use_pos = current->use_pos;
-               while (use_pos) {
-                       int pos = GPOINTER_TO_INT (use_pos->data);
-
-                       use_pos = use_pos->next;
-                       if (!use_pos && USE_POS_IS_DEF (pos))
-                               ends_with_def = TRUE;
-               }
-
-               new = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
-               mono_linterval_add_range (cfg, new, 0, current->interval->last_range->to + (ends_with_def ? INS_POS_INTERVAL : 0));
-               current->interval = new;
-
-               LSCAN_DEBUG (printf ("R%d is volatile ", current->vreg));
-               LSCAN_DEBUG (mono_linterval_print (current->interval));
-               LSCAN_DEBUG (printf ("\n"));
-
-               new_intervals = g_list_remove (new_intervals, current);
-
-               use_pos = current->use_pos;
-               while (use_pos) {
-                       gboolean is_def = USE_POS_IS_DEF (GPOINTER_TO_INT (use_pos->data));
-                       int pos = USE_POS_BASE (GPOINTER_TO_INT (use_pos->data));
-                       use_pos = use_pos->next;
-
-                       LSCAN_DEBUG (printf ("\tUse pos: %x\n", pos));
-
-                       /* Split the part of the interval before the definition into its own interval */
-                       if (pos > current->interval->range->from) {
-                               split_interval (cfg, ctx, current, pos);
-                               current = current->child2;
-                       }
-
-                       if (!is_def && pos == current->interval->last_range->to) {
-                               /* No need to split the last use */
-                               new_intervals = g_list_insert_sorted (new_intervals, current, compare_by_interval_start_pos_func);                              
-                               break;
-                       }
-
-                       /* Split the use into its own interval */
-                       split_interval (cfg, ctx, current, pos + INS_POS_INTERVAL);
-                       new_intervals = g_list_insert_sorted (new_intervals, current->child1, compare_by_interval_start_pos_func);
-                       current = current->child2;
-
-                       /* No need to (and hard to) split between use positions at the same place */
-                       while (use_pos && USE_POS_BASE (GPOINTER_TO_INT (use_pos->data)) == pos)
-                               use_pos = use_pos->next;
-               }
-       }
-
-       return new_intervals;
-}
-
-/**
- * linear_scan:
- *
- *   The actual linear scan register allocation algorithm.
- */
-static void
-linear_scan (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       GList *int_regs = mono_arch_get_global_int_regs (cfg);
-       GList *fp_regs = mono_arch_get_global_fp_regs (cfg);
-       GList *vars;
-       GList *unhandled, *active, *inactive, *l, *next;
-       gint32 free_pos [MONO_MAX_IREGS + MONO_MAX_FREGS];
-       gboolean allocateable [MONO_MAX_IREGS + MONO_MAX_FREGS];
-       int i;
-       MonoMethodSignature *sig;
-       MonoMethodHeader *header;
-
-       LSCAN_DEBUG (printf ("\nLINEAR SCAN 2 for %s:\n", mono_method_full_name (cfg->method, TRUE)));
-
-       header = cfg->header;
-
-       sig = mono_method_signature (cfg->method);
-
-       /* Create list of allocatable variables */
-       vars = NULL;
-       for (i = MONO_FIRST_VREG; i < cfg->next_vreg; ++i) {
-               if (get_var_interval (cfg, ctx, i)->range)
-                       vars = g_list_prepend (vars, &ctx->varinfo [i]);
-       }
-
-       for (i = 0; i < MONO_MAX_IREGS; ++i)
-               allocateable [i] = g_list_find (int_regs, GINT_TO_POINTER (i)) != NULL;
-       for (i = 0; i < MONO_MAX_FREGS; ++i)
-               allocateable [MONO_MAX_IREGS + i] = g_list_find (fp_regs, GINT_TO_POINTER (i)) != NULL;
-       g_list_free (int_regs);
-       g_list_free (fp_regs);
-
-       unhandled = g_list_sort (g_list_copy (vars), compare_by_interval_start_pos_func);
-       active = NULL;
-       inactive = NULL;
-
-       /* The hard registers are assigned to themselves */
-       for (i = 0; i < MONO_MAX_IREGS + MONO_MAX_FREGS; ++i) {
-               ctx->varinfo [i].hreg = i;
-               if (get_var_interval (cfg, ctx, i)->range)
-                       inactive = g_list_append (inactive, &ctx->varinfo [i]);         
-       }
-
-       unhandled = decompose_volatile_intervals (cfg, ctx, unhandled);
-
-       /*
-        * Handle arguments received on the stack by splitting their interval, and later
-        * allocating the spilled part to the arg location.
-        */
-       for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-               MonoInst *ins = cfg->args [i];
-               MonoRegallocInterval *current = &ctx->varinfo [ins->dreg];
-               MonoType *arg_type;
-
-               if (sig->hasthis && (i == 0))
-                       arg_type = &mono_defaults.object_class->byval_arg;
-               else
-                       arg_type = sig->params [i - sig->hasthis];
-
-               if (ins->opcode != OP_REGVAR && !MONO_TYPE_ISSTRUCT (arg_type) && !current->is_volatile && current->interval->range) {
-                       /* This ensures there is some part of the interval before the use pos */
-                       g_assert (current->interval->range->from == 0);
-
-                       /* Have to split at an use pos so a spill load can be inserted */
-                       if (current->use_pos) {
-                               guint32 pos = USE_POS_BASE (GPOINTER_TO_INT (current->use_pos->data));
-
-                               split_interval (cfg, ctx, current, pos);
-                               unhandled = g_list_remove (unhandled, current);
-                               unhandled = g_list_insert_sorted (unhandled, current->child2, compare_by_interval_start_pos_func);
-                       }
-               }
-       }
-
-       while (unhandled) {
-           MonoRegallocInterval *current = unhandled->data;
-               int pos, reg, max_free_pos;
-               gboolean changed;
-
-               unhandled = g_list_delete_link (unhandled, unhandled);
-
-               LSCAN_DEBUG (printf ("Processing R%d: ", current->vreg));
-               LSCAN_DEBUG (mono_linterval_print (current->interval));
-               LSCAN_DEBUG (printf ("\n"));
-
-               if (!current->interval->range)
-                       continue;
-                       
-               /* Happens when splitting intervals */
-               if (!current->use_pos)
-                       continue;
-
-               pos = current->interval->range->from;
-
-               /* Check for intervals in active which expired or inactive */
-               changed = TRUE;
-               /* FIXME: Optimize this */
-               l = active;
-               while (l) {
-                       MonoRegallocInterval *v = l->data;
-
-                       next = l->next;
-                       if (v->interval->last_range->to < pos) {
-                               active = g_list_delete_link (active, l);
-                               LSCAN_DEBUG (printf ("\tInterval R%d has expired\n", v->vreg));
-                       } else if (!mono_linterval_covers (v->interval, pos)) {
-                               inactive = g_list_append (inactive, v);
-                               active = g_list_delete_link (active, l);
-                               LSCAN_DEBUG (printf ("\tInterval R%d became inactive\n", v->vreg));
-                       }
-                       l = next;
-               }
-
-               /* Check for intervals in inactive which are expired or active */
-               l = inactive;
-               while (l) {
-                       MonoRegallocInterval *v = l->data;
-
-                       next = l->next;
-                       if (v->interval->last_range->to < pos) {
-                               inactive = g_list_delete_link (inactive, l);
-                               LSCAN_DEBUG (printf ("\tInterval R%d has expired\n", v->vreg));
-                       } else if (mono_linterval_covers (v->interval, pos)) {
-                               active = g_list_append (active, v);
-                               inactive = g_list_delete_link (inactive, l);
-                               LSCAN_DEBUG (printf ("\tInterval R%d became active\n", v->vreg));
-                       }
-                       l = next;
-               }
-
-               /* Find a register for the current interval */
-               if (G_UNLIKELY (current->fp)) {
-                       for (i = MONO_MAX_IREGS; i < MONO_MAX_IREGS + MONO_MAX_FREGS; ++i)
-                               if (allocateable [i])
-                                       free_pos [i] = G_MAXINT32;
-                               else
-                                       free_pos [i] = 0;
-               } else {
-                       for (i = 0; i < MONO_MAX_IREGS; ++i)
-                               if (allocateable [i])
-                                       free_pos [i] = G_MAXINT32;
-                               else
-                                       free_pos [i] = 0;
-               }
-
-               for (l = active; l != NULL; l = l->next) {
-                       MonoRegallocInterval *v = l->data;
-
-                       if (v->hreg >= 0) {
-                               free_pos [v->hreg] = 0;
-                               LSCAN_DEBUG (printf ("\threg %d is busy (R%d)\n", v->hreg, v->vreg));
-                       }
-               }
-
-               for (l = inactive; l != NULL; l = l->next) {
-                       MonoRegallocInterval *v = l->data;
-                       gint32 intersect_pos;
-
-                       if ((v->hreg >= 0) && (current->fp == v->fp)) {
-                               intersect_pos = mono_linterval_get_intersect_pos (current->interval, v->interval);
-                               if (intersect_pos != -1) {
-                                       if (intersect_pos < free_pos [v->hreg])
-                                               free_pos [v->hreg] = intersect_pos;
-                                       LSCAN_DEBUG (printf ("\threg %d becomes free at %x\n", v->hreg, intersect_pos));
-                               }
-                       }
-               }
-
-               max_free_pos = -1;
-               reg = -1;
-
-#if 0
-               /* 
-                * Arguments should be allocated to the registers they reside in at the start of
-                * the method.
-                */
-               for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-                       MonoInst *ins = cfg->args [i];
-
-                       g_assert (ins->opcode == OP_REGVAR);
-                       if (ins->dreg == current->vreg)
-                               reg = ins->inst_c0;
-               }
-#endif
-
-               if (reg == -1) {
-                       if (G_UNLIKELY (current->fp)) {
-                               for (i = MONO_MAX_IREGS; i < MONO_MAX_IREGS + MONO_MAX_FREGS; ++i)
-                                       if (free_pos [i] > max_free_pos) {
-                                               reg = i;
-                                               max_free_pos = free_pos [i];
-                                       }
-                       } else {
-                               for (i = 0; i < MONO_MAX_IREGS; ++i)
-                                       if (free_pos [i] > max_free_pos) {
-                                               reg = i;
-                                               max_free_pos = free_pos [i];
-                                       }
-                       }
-
-                       if (current->preferred_reg != -1) {
-                               LSCAN_DEBUG (printf ("\tPreferred register is hreg %d\n", current->preferred_reg));
-                               /* FIXME: Add more cases */
-                               if (free_pos [current->preferred_reg] >= free_pos [reg]) {
-                                       reg = current->preferred_reg;
-                               } else {
-#if 0
-                                       /*
-                                        * We have a choice to make: assigning to the preferred reg avoids
-                                        * a move, while assigning to 'reg' will keep the variable in a
-                                        * register for longer.
-                                        */
-                                       if (free_pos [current->preferred_reg] >= current->interval->range->from)
-                                               reg = current->preferred_reg;
-#endif
-                               }
-                       }
-               }
-
-               g_assert (reg != -1);
-
-               if (!(free_pos [reg] > 0 && free_pos [reg] >= current->interval->range->from) &&
-                       USE_POS_BASE (GPOINTER_TO_INT (current->use_pos->data)) <= current->interval->range->from) {
-                       /*
-                        * No register is available, and current is needed in a register right now.
-                        * So free up a register by spilling an interval in active.
-                        */
-                       MonoRegallocInterval *to_spill;
-                       guint32 split_pos;
-
-                       // FIXME: Why was this needed ?
-                       //g_assert (!current->is_volatile);
-
-                       /* Spill the first */
-                       /* FIXME: Optimize the selection of the interval */
-                       l = active;
-                       to_spill = NULL;
-                       for (l = active; l; l = l->next) {
-                               to_spill = l->data;
-
-                               /* Fixed intervals cannot be spilled */
-                               if (to_spill->vreg >= MONO_FIRST_VREG)
-                                       break;
-                       }
-                       g_assert (to_spill);
-
-                       LSCAN_DEBUG (printf ("\tNo free register found, splitting and spilling R%d\n", to_spill->vreg));
-                       split_pos = USE_POS_BASE (GPOINTER_TO_INT (current->use_pos->data));
-                       /* 
-                        * Avoid splitting to_spill before the start of current, since
-                        * its second child, which is added to unhandled would begin before 
-                        * current.
-                        */
-                       if (split_pos < current->interval->range->from)
-                               split_pos = current->interval->range->from;
-                       split_interval (cfg, ctx, to_spill, split_pos);
-                       to_spill->child1->hreg = to_spill->hreg;
-                       active = g_list_remove (active, to_spill);
-                       unhandled = g_list_insert_sorted (unhandled, to_spill->child2, compare_by_interval_start_pos_func);
-                       reg = to_spill->hreg;
-
-                       /* Recompute free_pos [reg] */
-                       free_pos [reg] = G_MAXINT32;
-                       for (l = active; l != NULL; l = l->next) {
-                               MonoRegallocInterval *v = l->data;
-
-                               if (v->hreg == reg) {
-                                       free_pos [v->hreg] = 0;
-                                       LSCAN_DEBUG (printf ("\threg %d is busy (R%d)\n", v->hreg, v->vreg));
-                               }
-                       }
-
-                       for (l = inactive; l != NULL; l = l->next) {
-                               MonoRegallocInterval *v = l->data;
-                               gint32 intersect_pos;
-
-                               if ((v->hreg == reg) && (current->fp == v->fp)) {
-                                       intersect_pos = mono_linterval_get_intersect_pos (current->interval, v->interval);
-                                       if (intersect_pos != -1) {
-                                               if (intersect_pos < free_pos [v->hreg])
-                                                       free_pos [v->hreg] = intersect_pos;
-                                               LSCAN_DEBUG (printf ("\threg %d becomes free at %x\n", v->hreg, intersect_pos));
-                                       }
-                               }
-                       }
-               }
-
-               if (free_pos [reg] > 0 && free_pos [reg] >= current->interval->last_range->to) {
-                       /* Register available for whole interval */
-                       current->hreg = reg;
-                       if (!current->fp)
-                               cfg->used_int_regs |= (1 << reg);
-                       LSCAN_DEBUG (printf ("\tAssigned hreg %d to R%d\n", reg, current->vreg));
-
-                       active = g_list_append (active, current);
-               }
-               else if (free_pos [reg] > 0 && free_pos [reg] >= current->interval->range->from) {
-                       /* 
-                        * The register is available for some part of the interval.
-                        * Split the interval, assign the register to the first part of the 
-                        * interval, and save the second part for later processing.
-                        */
-                       LSCAN_DEBUG (printf ("\tRegister %d is available until %x, splitting current.\n", reg, free_pos [reg]));
-                       split_interval (cfg, ctx, current, free_pos [reg]);
-
-                       current->child1->hreg = reg;
-                       if (!current->fp)
-                               cfg->used_int_regs |= (1 << reg);
-                       LSCAN_DEBUG (printf ("\tAssigned hreg %d to R%d\n", reg, current->child1->vreg));
-                       active = g_list_append (active, current->child1);
-
-                       unhandled = g_list_insert_sorted (unhandled, current->child2, compare_by_interval_start_pos_func);
-               } else {
-                       guint32 use_pos = USE_POS_BASE (GPOINTER_TO_INT (current->use_pos->data));
-
-                       /* No register is available */
-                       if (use_pos > current->interval->range->from) {
-                               /*
-                                * The interval is not currently needed in a register. So split it, and
-                                * spill the first part to memory, and save the second part for later
-                                * processing.
-                                */
-                               LSCAN_DEBUG (printf ("\tSplitting R%d(current) at first use pos %x, spilling the first part.\n", current->vreg, use_pos));
-                               split_interval (cfg, ctx, current, use_pos);
-                               unhandled = g_list_insert_sorted (unhandled, current->child2, compare_by_interval_start_pos_func);
-                       } else {
-                               /* Handled previously */
-                               g_assert_not_reached ();
-                       }
-               }
-       }
-
-       /* 
-        * The fp registers are numbered from MONO_MAX_IREGS during allocation, but they are
-        * numbered from 0 in machine code.
-        */
-       for (i = 0; i < cfg->next_vreg; ++i) {
-               if (ctx->varinfo [i].fp) {
-                       GSList *children;
-
-                       /* Need to process child intervals as well */
-                       /* This happens rarely so it is not perf critical */
-                       children = NULL;
-                       children = g_slist_prepend (children, &ctx->varinfo [i]);
-                       while (children) {
-                               MonoRegallocInterval *interval = children->data;
-
-                               children = g_slist_delete_link (children, children);
-                               if (interval->hreg != -1)
-                                       interval->hreg -= MONO_MAX_IREGS;
-                               if (interval->child1)
-                                       children = g_slist_prepend (children, interval->child1);
-                               if (interval->child2)
-                                       children = g_slist_prepend (children, interval->child2);                        
-                       }
-               }
-       }
-}
-
-static GSList*
-collect_spilled_intervals (MonoRegallocInterval *interval, GSList *list)
-{
-       if ((interval->hreg == -1) && !interval->child1 && interval->interval->range) 
-               list = g_slist_prepend (list, interval);
-
-       if (interval->is_volatile && !interval->interval->range)
-               /* Variables which are only referenced by ldaddr */
-               list = g_slist_prepend (list, interval);                
-
-       if (interval->child1) {
-               list = collect_spilled_intervals (interval->child1, list);
-               list = collect_spilled_intervals (interval->child2, list);
-       }
-
-       return list;
-}
-
-static int
-alloc_spill_slot (MonoCompile *cfg, guint32 size, guint32 align)
-{
-       guint32 res;
-
-       if (size == 0) {
-               res = cfg->stack_offset;
-       } else {
-               if (cfg->flags & MONO_CFG_HAS_SPILLUP) {
-                       cfg->stack_offset += align - 1;
-                       cfg->stack_offset &= ~(align - 1);
-                       res = cfg->stack_offset;
-                       cfg->stack_offset += size;
-               } else {
-                       cfg->stack_offset += align - 1;
-                       cfg->stack_offset &= ~(align - 1);
-                       cfg->stack_offset += size;
-                       res = - cfg->stack_offset;
-               }
-       }
-
-       return res;
-}
-
-static void
-assign_spill_slots (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       GSList *spilled_intervals = NULL;
-       GSList *l;
-       MonoMethodSignature *sig;
-       int i;
-
-       /* Handle arguments passed on the stack */
-       sig = mono_method_signature (cfg->method);
-       for (i = 0; i < sig->param_count + sig->hasthis; ++i) {
-               MonoInst *ins = cfg->args [i];
-               MonoType *arg_type;
-
-               if (sig->hasthis && (i == 0))
-                       arg_type = &mono_defaults.object_class->byval_arg;
-               else
-                       arg_type = sig->params [i - sig->hasthis];
-
-               if (MONO_TYPE_ISSTRUCT (arg_type) || (ins->opcode != OP_REGVAR)) {
-                       g_assert (ins->opcode == OP_REGOFFSET);
-                       // FIXME: Add a basereg field to varinfo
-                       // FIXME:
-                       g_assert (ins->inst_offset != -1);
-                       ctx->varinfo [ins->dreg].offset = ins->inst_offset;
-               }
-       }
-
-       /* Handle a vtype return */
-       if (!cfg->vret_addr && MONO_TYPE_ISSTRUCT (sig->ret)) {
-               MonoInst *ins = cfg->ret;
-
-               ctx->varinfo [ins->dreg].offset = ins->inst_offset;
-       }
-
-       for (i = 0; i < cfg->next_vreg; ++i) {
-               spilled_intervals = collect_spilled_intervals (&ctx->varinfo [i], spilled_intervals);
-       }
-
-       LSCAN_DEBUG (printf ("\nSPILL OFFSETS:\n\n"));
-                                                        
-       for (l = spilled_intervals; l; l = l->next) {
-               MonoRegallocInterval *interval = l->data;
-               MonoRegallocInterval *parent;
-
-               /*
-                * All spilled sub-intervals of a interval must share the stack slot.
-                * This is accomplished by storing the stack offset in the original interval 
-                * and using that offset for all its children.
-                */
-
-               for (parent = interval; parent->parent != NULL; parent = parent->parent)
-                       ;
-               if (parent->offset != -1) {
-                       interval->offset = parent->offset;
-               } else if (interval->offset != -1) {
-                       /* Already allocated (for example, valuetypes as arguments) */
-               } else {
-                       guint32 size, align;
-
-                       if (MONO_TYPE_ISSTRUCT (interval->type)) {
-                               // FIXME: pinvoke, gsctx
-                               // FIXME: Align
-                               size = mini_type_stack_size (NULL, interval->type, NULL);
-                       } else if (interval->fp) {
-                               size = sizeof (double);
-                       } else {
-                               size = sizeof (gpointer);
-                       }
-
-                       align = sizeof (gpointer);
-                       interval->offset = alloc_spill_slot (cfg, size, align);
-               }
-
-               for (parent = interval; parent != NULL; parent = parent->parent) {
-                       if (parent->offset == -1)
-                               parent->offset = interval->offset;
-               }
-
-               LSCAN_DEBUG (printf ("R%d %d", interval->vreg, interval->offset));
-               LSCAN_DEBUG (mono_linterval_print (interval->interval));
-               LSCAN_DEBUG (printf ("\n"));
-       }
-
-       /* Write back information needed by the backend */
-       if (cfg->rgctx_var) {
-               /* rgctx_var is marked as volatile, so it won't be allocated to a register */
-               cfg->rgctx_var->opcode = OP_REGOFFSET;
-               cfg->rgctx_var->inst_basereg = cfg->frame_reg;
-               cfg->rgctx_var->inst_offset = ctx->varinfo [cfg->rgctx_var->dreg].offset;
-       }
-}
-
-/**
- * order_moves:
- *
- *   Order the instructions in MOVES so earlier moves don't overwrite the sources of
- * later moves.
- */
-static GSList*
-order_moves (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst **moves, int nmoves)
-{
-       int i, j, niter;
-       GSList *l;
-
-       /* 
-        * Sort the moves so earlier moves don't overwrite the sources of later
-        * moves.
-        */
-       /* FIXME: Do proper cycle detection instead of the current ugly hack */
-       niter = 0;
-       for (i = 0; i < nmoves; ++i) {
-               gboolean found;
-
-               found = TRUE;
-               while (found) {
-                       found = FALSE;
-                       for (j = i + 1; j < nmoves; ++j)
-                               if (moves [i]->dreg == moves [j]->sreg1) {
-                                       found = TRUE;
-                                       break;
-                               }
-                       if (found) {
-                               MonoInst *ins;
-
-                               ins = moves [j];
-                               moves [j] = moves [i];
-                               moves [i] = ins;
-
-                               niter ++;
-                               if (niter > nmoves * 2)
-                                       /* Possible cycle */
-                                       break;
-                       }
-               }
-               if (niter > nmoves * 2)
-                       break;
-       }
-
-       l = NULL;
-       if (niter > nmoves * 2) {
-               MonoInst *ins;
-               int *offsets;
-
-               /*
-                * Save all registers to the stack and reload them again.
-                * FIXME: Optimize this.
-                */
-
-               /* Allocate spill slots */
-               offsets = mono_mempool_alloc (cfg->mempool, nmoves * sizeof (int));
-               for (i = 0; i < nmoves; ++i) {
-                       guint32 size = sizeof (gpointer);
-
-                       if (cfg->flags & MONO_CFG_HAS_SPILLUP) {
-                               cfg->stack_offset += size - 1;
-                               cfg->stack_offset &= ~(size - 1);
-                               offsets [i] = cfg->stack_offset;
-                               cfg->stack_offset += size;
-                       } else {
-                               cfg->stack_offset += size - 1;
-                               cfg->stack_offset &= ~(size - 1);
-                               cfg->stack_offset += size;
-                               offsets [i] = - cfg->stack_offset;
-                       }
-               }
-
-               /* Create stores */
-               for (i = 0; i < nmoves; ++i) {
-                       if (moves [i]->opcode == OP_MOVE)
-                               MONO_INST_NEW (cfg, ins, OP_STORE_MEMBASE_REG);
-                       else if (moves [i]->opcode == OP_FMOVE)
-                               MONO_INST_NEW (cfg, ins, OP_STORER8_MEMBASE_REG);
-                       else
-                               NOT_IMPLEMENTED;
-                       ins->sreg1 = moves [i]->sreg1;
-                       ins->inst_destbasereg = cfg->frame_reg;
-                       ins->inst_offset = offsets [i];
-
-                       l = g_slist_append_mempool (cfg->mempool, l, ins);
-                       g_hash_table_insert (ctx->spill_ins, ins, ins);
-               }
-
-               /* Create loads */
-               for (i = 0; i < nmoves; ++i) {
-                       if (moves [i]->opcode == OP_MOVE)
-                               MONO_INST_NEW (cfg, ins, OP_LOAD_MEMBASE);
-                       else if (moves [i]->opcode == OP_FMOVE)
-                               MONO_INST_NEW (cfg, ins, OP_LOADR8_MEMBASE);
-                       else
-                               NOT_IMPLEMENTED;
-                       ins->dreg = moves [i]->dreg;
-                       ins->inst_basereg = cfg->frame_reg;
-                       ins->inst_offset = offsets [i];
-
-                       l = g_slist_append_mempool (cfg->mempool, l, ins);
-                       g_hash_table_insert (ctx->spill_ins, ins, ins);
-               }
-
-               return l;
-       } else {
-               for (i = 0; i < nmoves; ++i)
-                       l = g_slist_append_mempool (cfg->mempool, l, moves [i]);
-
-               return l;
-       }
-}
-
-/**
- * add_spill_code:
- *
- *   Add spill loads and stores to the IR at the locations where intervals were split.
- */
-static void
-add_spill_code (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       MonoBasicBlock *bb;
-       MonoInst *ins, *prev, *store, *load, *move, *insert_after;
-       GSList *spill_list, *l, *ins_to_add, *moves_to_add;
-       MonoRegallocInterval *child1, *child2;
-       int pos, pos_interval, pos_interval_limit;
-       MonoBasicBlock *out_bb;
-       int i, bb_count, from_pos, to_pos, iter;
-       gboolean after_last_ins, add_at_head;
-
-       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
-               if (cfg->verbose_level > 1)
-                       printf ("\nREGALLOC-ADD SPILL CODE %d (DFN 0x%x):\n", bb->block_num, bb->dfn);
-
-               /* First pass: Add spill loads/stores to the IR */
-               pos = (bb->dfn << 16) + INS_POS_INTERVAL;
-               prev = NULL;
-               after_last_ins = FALSE;
-               for (ins = bb->code; !after_last_ins;) {
-                       if (ins == NULL) {
-                               after_last_ins = TRUE;
-                       } else if (g_hash_table_lookup (ctx->spill_ins, ins)) {
-                               /* Spill instruction added by an earlier bblock */
-                               /* No need to increase pos */
-
-                               if (G_UNLIKELY (cfg->verbose_level > 1)) {
-                                       printf (" <spill ins>\n");
-                               }
-
-                               prev = ins;
-                               ins = ins->next;
-                               continue;
-                       }
-
-                       if (!g_hash_table_lookup (ctx->split_position_set, GUINT_TO_POINTER (pos))) {
-                               /* No split position at this instruction */
-                               pos_interval_limit = 0;
-                               pos += INS_POS_INTERVAL;
-                       } else {
-                               pos_interval_limit = INS_POS_INTERVAL;
-                       }
-
-                       /*
-                        * This is the most complex/hackish part of the allocator, but I failed to
-                        * make it any simpler.
-                        * FIXME FIXME FIXME: CLEAN THIS UP
-                        */
-                       for (pos_interval = 0; pos_interval < pos_interval_limit; ++pos_interval) {
-                               spill_list = g_hash_table_lookup (ctx->split_positions, GUINT_TO_POINTER (pos));
-                               /* Insert stores first, then loads so registers don't get overwritten */
-                               for (iter = 0; iter < 2; ++iter) {
-                                       for (l = spill_list; l; l = l->next) {
-                                               MonoRegallocInterval *interval = l->data;
-
-                                               /* The childs might be split */
-                                               if (interval->child1->child1)
-                                                       child1 = child_at (interval->child1, pos - pos_interval);
-                                               else
-                                                       child1 = interval->child1;
-                                               if (pos < interval->child2->interval->range->from)
-                                                       /* Happens when volatile intervals are split */
-                                                       continue;
-                                               child2 = child_at (interval->child2, pos);
-
-                                               if ((child1->hreg == -1) && (child2->hreg == -1))
-                                                       /*
-                                                        * Happens when an interval is split, then the first child
-                                                        * is split again.
-                                                        */
-                                                       continue;
-
-                                               // FIXME: Why is !is_volatile needed ?
-                                               // It seems to fail when the same volatile var is a source and a
-                                               // destination of the same instruction
-                                               if ((iter == 0) && (child1->hreg != -1) && (child2->hreg != -1) && !interval->is_volatile && pos_interval > 0) {
-                                                       int offset;
-
-                                                       /*
-                                                        * This is complex situation: the vreg is expected to be in
-                                                        * child1->hreg before the instruction, and in child2->hreg
-                                                        * after the instruction. We can't insert a move before,
-                                                        * because that could overwrite the input regs of the 
-                                                        * instruction, and we can't insert a move after, since the
-                                                        * instruction could overwrite the source reg of the move.
-                                                        * Instead, we insert a store before the instruction, and a
-                                                        * load afterwards.
-                                                        * FIXME: Optimize child1->hreg == child2->hreg
-                                                        */
-                                                       offset = alloc_spill_slot (cfg, sizeof (gpointer), sizeof (gpointer));
-
-                                                       NEW_STORE_MEMBASE (cfg, store, mono_type_to_store_membase (cfg, interval->type), cfg->frame_reg, offset, child1->hreg);
-
-                                                       mono_bblock_insert_after_ins (bb, prev, store);
-                                                       prev = store;
-                                                       g_hash_table_insert (ctx->spill_ins, store, store);
-
-                                                       NEW_LOAD_MEMBASE (cfg, load, mono_type_to_load_membase (cfg, interval->type), child2->hreg, cfg->frame_reg, offset);
-
-                                                       mono_bblock_insert_after_ins (bb, ins, load);
-                                                       g_hash_table_insert (ctx->spill_ins, load, load);
-
-                                                       LSCAN_DEBUG (printf (" Spill store/load added for R%d (R%d -> R%d) at %x\n", interval->vreg, child1->vreg, child2->vreg, pos));
-                                               } else if ((iter == 0) && (child1->hreg != -1) && (child2->hreg != -1) && (child1->hreg != child2->hreg) && pos_interval == 0) {
-                                                       /* Happens with volatile intervals, i.e. in
-                                                        * R1 <- FOO
-                                                        * R2 <- OP R1 R2
-                                                        * R1's interval is split between the two instructions.
-                                                        */
-                                                       // FIXME: This should be done in iter 1, but it has 
-                                                       // ordering problems with other loads. Now it might have
-                                                       // ordering problems with stores.
-                                                       g_assert (!interval->fp);
-                                                       move = create_move (cfg, child2->hreg, child1->hreg);
-                                                       mono_bblock_insert_before_ins (bb, ins, move);
-                                                       prev = move;
-                                                       g_hash_table_insert (ctx->spill_ins, move, move);
-                                               } else if ((iter == 0) && (child1->hreg != -1) && (child2->hreg == -1)) {
-                                                       g_assert (child2->offset != -1);
-
-                                                       NEW_STORE_MEMBASE (cfg, store, mono_type_to_store_membase (cfg, interval->type), cfg->frame_reg, child2->offset, child1->hreg);
-
-                                                       mono_bblock_insert_after_ins (bb, prev, store);
-                                                       prev = store;
-                                                       g_hash_table_insert (ctx->spill_ins, store, store);
-
-                                                       LSCAN_DEBUG (printf (" Spill store added for R%d (R%d -> R%d) at %x\n", interval->vreg, child1->vreg, child2->vreg, pos));
-                                               } else if ((iter == 1) && (child1->hreg == -1) && (child2->hreg != -1)) {
-                                                       g_assert (child1->offset != -1);
-                                                       NEW_LOAD_MEMBASE (cfg, load, mono_type_to_load_membase (cfg, interval->type), child2->hreg, cfg->frame_reg, child1->offset);
-
-                                                       if (pos_interval >= INS_POS_DEF)
-                                                               /* Happens in InternalGetChars, couldn't create a testcase */
-                                                               mono_bblock_insert_after_ins (bb, ins, load);
-                                                       else {
-                                                               mono_bblock_insert_before_ins (bb, ins, load);
-                                                               prev = load;
-                                                       }
-                                                       g_hash_table_insert (ctx->spill_ins, load, load);
-
-                                                       LSCAN_DEBUG (printf (" Spill load added for R%d (R%d -> R%d) at %x\n", interval->vreg, child1->vreg, child2->vreg, pos));
-                                               }
-                                       }
-                               }
-
-                               pos ++;
-                       }
-
-                       if (G_UNLIKELY (cfg->verbose_level > 1))
-                               if (ins)
-                                       mono_print_ins (ins);
-
-                       prev = ins;
-
-                       if (ins)
-                               ins = ins->next;
-               }
-
-               /* Second pass: Resolve data flow */
-               for (bb_count = 0; bb_count < bb->out_count; ++bb_count) {
-                       out_bb = bb->out_bb [bb_count];
-
-                       if (!out_bb->live_in_set)
-                               /* Exception handling block */
-                               continue;
-
-                       from_pos = (bb->dfn << 16) + 0xffff;
-                       to_pos = (out_bb->dfn << 16);
-
-                       ins_to_add = NULL;
-                       for (i = 0; i < cfg->next_vreg; ++i) {
-                               MonoRegallocInterval *interval = &ctx->varinfo [i];
-
-                               if (mono_bitset_test_fast (out_bb->live_in_set, i) && mono_linterval_covers (interval->interval, from_pos) && mono_linterval_covers (interval->interval, to_pos)) {
-                                       child1 = child_at (interval, from_pos);
-                                       child2 = child_at (interval, to_pos);
-                                       if (child1 != child2) {
-                                               if ((child1->hreg != -1) && (child2->hreg == -1)) {
-                                                       LSCAN_DEBUG (printf (" Add store for R%d (R%d -> R%d) at BB%d -> BB%d [%x - %x]\n", interval->vreg, child1->vreg, child2->vreg, bb->block_num, out_bb->block_num, from_pos, to_pos));
-                                                       NEW_STORE_MEMBASE (cfg, store, mono_type_to_store_membase (cfg, interval->type), cfg->frame_reg, child2->offset, child1->hreg);
-                                                       ins_to_add = g_slist_prepend_mempool (cfg->mempool, ins_to_add, store);
-                                                       g_hash_table_insert (ctx->spill_ins, store, store);
-                                               } else if ((child1->hreg != -1) && (child2->hreg != -1)) {
-                                                       if (child1->hreg != child2->hreg) {
-                                                               LSCAN_DEBUG (printf (" Add move for R%d (R%d -> R%d) at BB%d -> BB%d [%x - %x]\n", interval->vreg, child1->vreg, child2->vreg, bb->block_num, out_bb->block_num, from_pos, to_pos));
-                                                               NEW_UNALU (cfg, move, interval->fp ? OP_FMOVE : OP_MOVE, child2->hreg, child1->hreg);
-                                                               ins_to_add = g_slist_prepend_mempool (cfg->mempool, ins_to_add, move);
-                                                               g_hash_table_insert (ctx->spill_ins, move, move);
-                                                       }
-                                               } else if ((child1->hreg == -1) && (child2->hreg != -1)) {
-                                                       LSCAN_DEBUG (printf (" Add load for R%d (R%d -> R%d) at BB%d -> BB%d [%x - %x]\n", interval->vreg, child1->vreg, child2->vreg, bb->block_num, out_bb->block_num, from_pos, to_pos));
-                                                       NEW_LOAD_MEMBASE (cfg, load, mono_type_to_load_membase (cfg, interval->type), child2->hreg, cfg->frame_reg, child1->offset);
-                                                       ins_to_add = g_slist_prepend_mempool (cfg->mempool, ins_to_add, load);
-                                                       g_hash_table_insert (ctx->spill_ins, load, load);
-                                               } else {
-                                                       g_assert (child1->offset == child2->offset);
-                                               }
-                                       }
-                               }
-                       }
-
-                       if (bb->out_count == 1) {
-                               add_at_head = TRUE;
-                       } else if (out_bb->in_count == 1) {
-                               add_at_head = FALSE;
-                       } else {
-                               // FIXME: Split critical edges
-                               add_at_head = TRUE;
-                               NOT_IMPLEMENTED;
-                       }
-
-                       insert_after = NULL;
-
-                       if (ins_to_add) {
-                               MonoInst **moves;
-                               int nmoves;
-
-                               /*
-                                * Emit spill instructions in such a way that instructions don't 
-                                * overwrite the source registers of instructions coming after them.
-                                */
-                               /* Simply emit stores, then moves then loads */
-                               for (l = ins_to_add; l; l = l->next) {
-                                       MonoInst *ins = l->data;
-
-                                       if (MONO_IS_STORE_MEMBASE (ins)) {
-                                               if (add_at_head) {
-                                                       mono_add_ins_to_end (bb, ins);
-                                               } else {
-                                                       mono_bblock_insert_after_ins (out_bb, insert_after, ins);
-                                                       insert_after = ins;
-                                               }
-                                       }
-                               }
-
-                               /* Collect the moves */
-                               nmoves = 0;
-                               for (l = ins_to_add; l; l = l->next) {
-                                       MonoInst *ins = l->data;
-
-                                       if (MONO_IS_MOVE (ins))
-                                               nmoves ++;
-                               }
-                               moves = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoInst*) * nmoves);
-                               nmoves = 0;
-                               for (l = ins_to_add; l; l = l->next) {
-                                       MonoInst *ins = l->data;
-
-                                       if (MONO_IS_MOVE (ins))
-                                               moves [nmoves ++] = ins;
-                               }
-
-                               moves_to_add = order_moves (cfg, ctx, moves, nmoves);
-
-                               for (l = moves_to_add; l; l = l->next) {
-                                       MonoInst *ins = l->data;
-
-                                       if (add_at_head) {
-                                               mono_add_ins_to_end (bb, ins);
-                                       } else {
-                                               mono_bblock_insert_after_ins (out_bb, insert_after, ins);
-                                               insert_after = ins;
-                                       }
-                               }
-
-                               for (l = ins_to_add; l; l = l->next) {
-                                       MonoInst *ins = l->data;
-
-                                       if (MONO_IS_LOAD_MEMBASE (ins)) {
-                                               if (add_at_head) {
-                                                       mono_add_ins_to_end (bb, ins);
-                                               } else {
-                                                       mono_bblock_insert_after_ins (out_bb, insert_after, ins);
-                                                       insert_after = ins;
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-}
-
-/*
- * rewrite_code:
- *
- *   Replace references to vregs with their assigned physical registers or spill 
- * locations.
- */
-static void
-rewrite_code (MonoCompile *cfg, MonoRegallocContext *ctx)
-{
-       MonoBasicBlock *bb;
-       MonoInst *ins, *prev;
-       int pos;
-       MonoInst **defs;
-
-       defs = g_new (MonoInst*, MONO_MAX_IREGS + MONO_MAX_FREGS);
-
-       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
-               if (cfg->verbose_level > 1)
-                       printf ("\nREGALLOC-REWRITE BLOCK %d:\n", bb->block_num);
-
-               memset (defs, 0, sizeof (MonoInst*) * (MONO_MAX_IREGS + MONO_MAX_FREGS));
-
-               pos = (bb->dfn << 16);
-               prev = NULL;
-               MONO_BB_FOR_EACH_INS (bb, ins) {
-                       const char *spec = INS_INFO (ins->opcode);
-                       pos += INS_POS_INTERVAL;
-
-                       if (G_UNLIKELY (cfg->verbose_level > 1))
-                               mono_print_ins (ins);
-
-                       if (g_hash_table_lookup (ctx->spill_ins, ins)) {
-                               /* 
-                                * This instruction was added after liveness info was computed, and thus
-                                * screws up the pos calculation. The instruction already uses hregs.
-                                */
-                               pos -= INS_POS_INTERVAL;
-                               prev = ins;
-                               continue;
-                       }
-
-                       /* FIXME: */
-                       if (ins->opcode == OP_NOP)
-                               continue;
-
-                       if (ins->opcode == OP_LDADDR) {
-                               MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->dreg], pos + INS_POS_DEF);
-                               MonoInst *var = ins->inst_p0;
-                               MonoInst *move;
-
-                               g_assert (ctx->varinfo [var->dreg].hreg == -1);
-                               g_assert (ctx->varinfo [var->dreg].offset != -1);
-
-                               if (ctx->varinfo [var->dreg].offset != 0) {
-                                       /*
-                                        * The ADD_IMM does not satisfy register constraints on x86/amd64.
-                                        */
-                                       MONO_INST_NEW (cfg, move, OP_MOVE);
-                                       move->dreg = l->hreg;
-                                       move->sreg1 = cfg->frame_reg;
-                                       mono_bblock_insert_before_ins (bb, ins, move);
-
-                                       ins->opcode = OP_ADD_IMM;
-                                       ins->dreg = l->hreg;
-                                       ins->sreg1 = l->hreg;
-                                       ins->inst_imm = ctx->varinfo [var->dreg].offset;
-                                       defs [ins->dreg] = ins;
-                               } else {
-                                       ins->opcode = OP_MOVE;
-                                       ins->dreg = l->hreg;
-                                       ins->sreg1 = cfg->frame_reg;
-                                       defs [ins->dreg] = ins;
-                               }
-                               spec = INS_INFO (OP_NOP);
-
-                               /* 
-                                * We need to fold these instructions into the instructions which
-                                * use them, but we can't call mono_local_cprop () since that could
-                                * generate code which doesn't obey register constraints.
-                                * So we do it manually.
-                                */
-                       }
-
-                       if (spec [MONO_INST_DEST] != ' ') {
-                               if (MONO_IS_STORE_MEMBASE (ins)) {
-                                       MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->dreg], pos + INS_POS_USE);
-                                       g_assert (l->hreg != -1);
-                                       ins->dreg = l->hreg;
-
-                                       /* Fold the instruction computing the address */
-                                       /* FIXME: fails in generics-sharing.2.exe
-                                       def = defs [ins->dreg];
-                                       if (def && def->opcode == OP_MOVE && def->sreg1 == cfg->frame_reg) {
-                                               ins->dreg = cfg->frame_reg;
-                                       } else if (def && def->opcode == OP_ADD_IMM && def->sreg1 == cfg->frame_reg) {
-                                               ins->dreg = cfg->frame_reg;
-                                               ins->inst_destbasereg += def->inst_imm;
-                                       }
-                                       */
-                                       /*
-                                        * FIXME: Deadce the def. This is hard to do, since it could be
-                                        * accessed in other bblocks.
-                                        */
-                               } else {
-                                       MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->dreg], pos + INS_POS_DEF);
-                                       g_assert (l->hreg != -1);
-                                       ins->dreg = l->hreg;
-                                       defs [ins->dreg] = NULL;
-                               }
-                       }
-                       if (spec [MONO_INST_SRC1] != ' ') {
-                               MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->sreg1], pos + INS_POS_USE);
-                               g_assert (l->hreg != -1);
-                               ins->sreg1 = l->hreg;
-
-                               /*
-                               def = defs [ins->sreg1];
-                               if (def && def->opcode == OP_MOVE && def->sreg1 == cfg->frame_reg)
-                                       ins->sreg1 = cfg->frame_reg;
-                               */
-                       }
-                       if (spec [MONO_INST_SRC2] != ' ') {
-                               MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->sreg2], pos + INS_POS_USE);
-                               g_assert (l->hreg != -1);
-                               ins->sreg2 = l->hreg;
-                       }
-
-                       if (spec [MONO_INST_SRC3] != ' ') {
-                               MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->sreg3], pos + INS_POS_USE);
-                               g_assert (l->hreg != -1);
-                               ins->sreg3 = l->hreg;
-                       }
-
-                       if (cfg->verbose_level > 1)
-                               mono_print_ins_index (1, ins);
-
-                       prev = ins;
-               }
-       }
-
-       g_free (defs);
-}
-
-static MonoRegallocContext*
-regalloc_ctx_create (MonoCompile *cfg)
-{
-       MonoRegallocContext *ctx;
-       int i;
-
-       ctx = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRegallocContext));
-       ctx->cfg = cfg;
-       ctx->varinfo = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRegallocInterval) * cfg->next_vreg);
-       ctx->num_intervals = cfg->next_vreg;
-       for (i = 0; i < cfg->next_vreg; ++i) {
-               MonoInst *var;
-
-               ctx->varinfo [i].vreg = i;
-               ctx->varinfo [i].hreg = -1;
-               ctx->varinfo [i].offset = -1;
-               ctx->varinfo [i].preferred_reg = -1;
-
-               if (i >= MONO_MAX_IREGS && i < MONO_MAX_IREGS + MONO_MAX_FREGS)
-                       ctx->varinfo [i].fp = TRUE;
-
-               var = get_vreg_to_inst (cfg, i);
-               if (var && (var != cfg->ret) && (var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT))) {
-                       ctx->varinfo [i].is_volatile = TRUE;
-               }
-               if (var)
-                       ctx->varinfo [i].type = var->inst_vtype;
-               else
-                       ctx->varinfo [i].type = sizeof (gpointer) == 8 ? &mono_defaults.int64_class->byval_arg : &mono_defaults.int_class->byval_arg;
-       }
-
-       ctx->split_positions = g_hash_table_new (NULL, NULL);
-       ctx->split_position_set = g_hash_table_new (NULL, NULL);
-       ctx->spill_ins = g_hash_table_new (NULL, NULL);
-
-       return ctx;
-}
-
-void
-mono_global_regalloc (MonoCompile *cfg)
-{
-       MonoRegallocContext *ctx;
-
-       mono_arch_fill_argument_info (cfg);
-
-       /* This could create vregs, so it has to come before ctx_create */
-       handle_reg_constraints (cfg);
-
-       ctx = regalloc_ctx_create (cfg);
-
-       collect_fp_vregs (cfg, ctx);
-
-       analyze_liveness (cfg, ctx);
-       
-       linear_scan (cfg, ctx);
-
-       mono_arch_allocate_vars (cfg);
-
-       assign_spill_slots (cfg, ctx);
-
-       add_spill_code (cfg, ctx);
-
-       rewrite_code (cfg, ctx);
-}
-
-#else
-
-void
-mono_global_regalloc (MonoCompile *cfg)
-{
-       NOT_IMPLEMENTED;
-}
-
-#endif
index 26ac63986a36f6ee51ed94a7fa82a611b3d6ffe8..b2b511f0cb49347eefabf908987a7539aceaecc8 100644 (file)
@@ -49,7 +49,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
        GSList **next = NULL;
        SeqPoint* seq_points;
        GByteArray* array;
-       gboolean has_debug_data = cfg->gen_seq_points_debug_data;
+       gboolean has_debug_data = cfg->gen_sdb_seq_points;
 
        if (!cfg->seq_points)
                return;
@@ -156,7 +156,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        if (has_debug_data)
                                next_list = next[i];
 
-                       if (seq_point_info_add_seq_point (array, sp, last_seq_point, next_list, has_debug_data))
+                       if (mono_seq_point_info_add_seq_point (array, sp, last_seq_point, next_list, has_debug_data))
                                last_seq_point = sp;
 
                        if (has_debug_data)
@@ -167,7 +167,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
        if (has_debug_data)
                g_free (next);
 
-       cfg->seq_point_info = seq_point_info_new (array->len, TRUE, array->data, has_debug_data, &seq_info_size);
+       cfg->seq_point_info = mono_seq_point_info_new (array->len, TRUE, array->data, has_debug_data, &seq_info_size);
        mono_jit_stats.allocated_seq_points_size += seq_info_size;
 
        g_byte_array_free (array, TRUE);
@@ -186,7 +186,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
 }
 
 MonoSeqPointInfo*
-get_seq_points (MonoDomain *domain, MonoMethod *method)
+mono_get_seq_points (MonoDomain *domain, MonoMethod *method)
 {
        MonoSeqPointInfo *seq_points;
 
@@ -204,16 +204,16 @@ get_seq_points (MonoDomain *domain, MonoMethod *method)
 }
 
 /*
- * find_next_seq_point_for_native_offset:
+ * mono_find_next_seq_point_for_native_offset:
  *
  *   Find the first sequence point after NATIVE_OFFSET.
  */
 gboolean
-find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point)
+mono_find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point)
 {
        MonoSeqPointInfo *seq_points;
 
-       seq_points = get_seq_points (domain, method);
+       seq_points = mono_get_seq_points (domain, method);
        if (!seq_points) {
                if (info)
                        *info = NULL;
@@ -222,20 +222,20 @@ find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, g
        if (info)
                *info = seq_points;
 
-       return seq_point_find_next_by_native_offset (seq_points, native_offset, seq_point);
+       return mono_seq_point_find_next_by_native_offset (seq_points, native_offset, seq_point);
 }
 
 /*
- * find_prev_seq_point_for_native_offset:
+ * mono_find_prev_seq_point_for_native_offset:
  *
  *   Find the first sequence point before NATIVE_OFFSET.
  */
 gboolean
-find_prev_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point)
+mono_find_prev_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point)
 {
        MonoSeqPointInfo *seq_points;
 
-       seq_points = get_seq_points (domain, method);
+       seq_points = mono_get_seq_points (domain, method);
        if (!seq_points) {
                if (info)
                        *info = NULL;
@@ -244,21 +244,21 @@ find_prev_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, g
        if (info)
                *info = seq_points;
 
-       return seq_point_find_prev_by_native_offset (seq_points, native_offset, seq_point);
+       return mono_seq_point_find_prev_by_native_offset (seq_points, native_offset, seq_point);
 }
 
 /*
- * find_seq_point:
+ * mono_find_seq_point:
  *
  *   Find the sequence point corresponding to the IL offset IL_OFFSET, which
  * should be the location of a sequence point.
  */
 gboolean
-find_seq_point (MonoDomain *domain, MonoMethod *method, gint32 il_offset, MonoSeqPointInfo **info, SeqPoint *seq_point)
+mono_find_seq_point (MonoDomain *domain, MonoMethod *method, gint32 il_offset, MonoSeqPointInfo **info, SeqPoint *seq_point)
 {
        MonoSeqPointInfo *seq_points;
 
-       seq_points = get_seq_points (domain, method);
+       seq_points = mono_get_seq_points (domain, method);
        if (!seq_points) {
                if (info)
                        *info = NULL;
@@ -267,11 +267,11 @@ find_seq_point (MonoDomain *domain, MonoMethod *method, gint32 il_offset, MonoSe
        if (info)
                *info = seq_points;
 
-       return seq_point_find_by_il_offset (seq_points, il_offset, seq_point);
+       return mono_seq_point_find_by_il_offset (seq_points, il_offset, seq_point);
 }
 
 void
-bb_deduplicate_op_il_seq_points (MonoCompile *cfg, MonoBasicBlock *bb)
+mono_bb_deduplicate_op_il_seq_points (MonoCompile *cfg, MonoBasicBlock *bb)
 {
        MonoInst *ins, *n, *prev;
 
index 3c0677a61c709a0f6ceec68e793dd288f40efaa3..3d053dba3dd57f944c66919c942c582bdf575163 100644 (file)
@@ -11,21 +11,21 @@ void
 mono_save_seq_point_info (MonoCompile *cfg);
 
 MonoSeqPointInfo*
-get_seq_points (MonoDomain *domain, MonoMethod *method);
+mono_get_seq_points (MonoDomain *domain, MonoMethod *method);
 
 gboolean
-find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point);
+mono_find_next_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point);
 
 gboolean
-find_prev_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point);
+mono_find_prev_seq_point_for_native_offset (MonoDomain *domain, MonoMethod *method, gint32 native_offset, MonoSeqPointInfo **info, SeqPoint* seq_point);
 
 gboolean
-find_seq_point (MonoDomain *domain, MonoMethod *method, gint32 il_offset, MonoSeqPointInfo **info, SeqPoint *seq_point);
+mono_find_seq_point (MonoDomain *domain, MonoMethod *method, gint32 il_offset, MonoSeqPointInfo **info, SeqPoint *seq_point);
 
 void
-bb_deduplicate_op_il_seq_points (MonoCompile *cfg, MonoBasicBlock *bb);
+mono_bb_deduplicate_op_il_seq_points (MonoCompile *cfg, MonoBasicBlock *bb);
 
 void
 mono_image_get_aot_seq_point_path (MonoImage *image, char **str);
 
-#endif /* __MONO_SEQ_POINTS_H__ */
\ No newline at end of file
+#endif /* __MONO_SEQ_POINTS_H__ */
index bf1e37d31b1f489371ddfe15ebcfcd61cc011af1..0f484a98758ab2c15d81df374257df9e9eaabe59 100644 (file)
@@ -61,7 +61,16 @@ The advantage of this change is that it could have a _membase version and promot
 without a OP_LDADDR.
 */
 
-#ifdef MONO_ARCH_SIMD_INTRINSICS
+#if defined (MONO_ARCH_SIMD_INTRINSICS)
+
+#if defined (DISABLE_JIT)
+
+void
+mono_simd_intrinsics_init (void)
+{
+}
+
+#else
 
 //#define IS_DEBUG_ON(cfg) (0)
 
@@ -1673,4 +1682,5 @@ mono_emit_simd_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
        return NULL;
 }
 
-#endif
+#endif /* DISABLE_JIT */
+#endif /* MONO_ARCH_SIMD_INTRINSICS */
diff --git a/mono/mini/ssapre.c b/mono/mini/ssapre.c
deleted file mode 100644 (file)
index 692eedf..0000000
+++ /dev/null
@@ -1,2169 +0,0 @@
-/*
- * ssapre.h: SSA Partial Redundancy Elimination
- *
- * Author:
- *   Massimiliano Mantione (massi@ximian.com)
- *
- * (C) 2004 Novell, Inc.  http://www.novell.com
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/opcodes.h>
-
-#include "config.h"
-
-#include "ssapre.h"
-
-/* Disable for now to save space since it is not yet ported to linear IR */
-#if 0
-
-#ifndef DISABLE_SSA
-
-/* Logging conditions */
-#define DUMP_LEVEL (4)
-#define TRACE_LEVEL (3)
-#define STATISTICS_LEVEL (2)
-#define LOG_LEVEL (1)
-#define DUMP_SSAPRE (area->cfg->verbose_level >= DUMP_LEVEL)
-#define TRACE_SSAPRE (area->cfg->verbose_level >= TRACE_LEVEL)
-#define STATISTICS_SSAPRE (area->cfg->verbose_level >= STATISTICS_LEVEL)
-#define LOG_SSAPRE (area->cfg->verbose_level >= LOG_LEVEL)
-
-/* "Bottom" symbol definition (see paper) */
-#define BOTTOM_REDUNDANCY_CLASS (-1)
-
-/* Various printing functions... */
-static void
-print_argument (MonoSsapreExpressionArgument *argument) {
-       switch (argument->type) {
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY:
-                       printf ("ANY");
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT:
-                       printf ("NONE");
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE:
-                       printf ("ORIGINAL_VARIABLE %d", argument->argument.original_variable);
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE:
-                       printf ("SSA_VARIABLE %d", argument->argument.ssa_variable);
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT:
-                       printf ("INTEGER_CONSTANT %d", argument->argument.integer_constant);
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT:
-                       printf ("LONG_COSTANT %lld", (long long)*(argument->argument.long_constant));
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT:
-                       printf ("FLOAT_COSTANT %f", *(argument->argument.float_constant));
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT:
-                       printf ("DOUBLE_COSTANT %f", *(argument->argument.double_constant));
-                       break;
-               default:
-                       printf ("UNKNOWN: %d", argument->type);
-       }
-}
-
-
-static void
-print_expression_description (MonoSsapreExpressionDescription *expression_description) {
-       if (expression_description->opcode != 0) {
-               printf ("%s ([", mono_inst_name (expression_description->opcode) );
-               print_argument (&(expression_description->left_argument));
-               printf ("],[");
-               print_argument (&(expression_description->right_argument));
-               printf ("])");
-       } else {
-               printf ("ANY");
-       }
-}
-
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
-static void
-snprint_argument (GString *string, MonoSsapreExpressionArgument *argument) {
-       switch (argument->type) {
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY:
-                       g_string_append_printf (string, "ANY");
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT:
-                       g_string_append_printf (string, "NONE");
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE:
-                       g_string_append_printf (string, "ORIGINAL_VARIABLE %d", argument->argument.original_variable);
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE:
-                       g_string_append_printf (string, "SSA_VARIABLE %d", argument->argument.ssa_variable);
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT:
-                       g_string_append_printf (string, "INTEGER_CONSTANT %d", argument->argument.integer_constant);
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT:
-                       g_string_append_printf (string, "LONG_COSTANT %lld", *(argument->argument.long_constant));
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT:
-                       g_string_append_printf (string, "FLOAT_COSTANT %f", *(argument->argument.float_constant));
-                       break;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT:
-                       g_string_append_printf (string, "DOUBLE_COSTANT %f", *(argument->argument.double_constant));
-                       break;
-               default:
-                       g_string_append_printf (string, "UNKNOWN: %d", argument->type);
-       }
-}
-
-static void
-snprint_expression_description (GString *string, MonoSsapreExpressionDescription *expression_description) {
-       if (expression_description->opcode != 0) {
-               g_string_append_printf (string, "%s ([", mono_inst_name (expression_description->opcode) );
-               snprint_argument (string, &(expression_description->left_argument));
-               g_string_append_printf (string, "],[");
-               snprint_argument (string, &(expression_description->right_argument));
-               g_string_append_printf (string, "])");
-       } else {
-               g_string_append_printf (string, "ANY");
-       }
-}
-#endif
-
-#define GBOOLEAN_TO_STRING(b) ((b)?"TRUE":"FALSE")
-
-static void
-print_expression_occurrence (MonoSsapreExpressionOccurrence *occurrence, int number) {
-       printf (" ([%d][bb %d [ID %d]][class %d]: ", number, occurrence->bb_info->cfg_dfn, occurrence->bb_info->bb->block_num, occurrence->redundancy_class);
-       print_expression_description (&(occurrence->description));
-       if (occurrence->is_first_in_bb) {
-               printf (" [FIRST in BB]");
-       }
-       if (occurrence->is_last_in_bb) {
-               printf (" [LAST in BB]");
-       }
-       printf (" (save = %s)", GBOOLEAN_TO_STRING (occurrence->save));
-       printf (" (reload = %s)", GBOOLEAN_TO_STRING (occurrence->reload));
-       printf ("\n");
-       occurrence = occurrence->next;
-}
-
-static void
-print_expression_occurrences (MonoSsapreExpressionOccurrence *occurrences) {
-       int i = 0;
-       while (occurrences != NULL) {
-               i++;
-               print_expression_occurrence (occurrences, i);
-               occurrences = occurrences->next;
-       }
-}
-
-static void
-print_worklist (MonoSsapreExpression *expression) {
-       if (expression != NULL) {
-               print_worklist (expression->previous);
-               
-               printf ("{%d}: ", expression->tree_size);
-               print_expression_description (&(expression->description));
-               printf ("\n");
-               print_expression_occurrences (expression->occurrences);
-               
-               print_worklist (expression->next);
-       }
-}
-
-static void
-print_bb_info (MonoSsapreBBInfo *bb_info, gboolean print_occurrences) {
-       int i;
-       MonoSsapreExpressionOccurrence *current_occurrence = bb_info->first_expression_in_bb;
-       
-       printf ("bb %d [ID %d]: IN { ", bb_info->cfg_dfn, bb_info->bb->block_num);
-       for (i = 0; i < bb_info->in_count; i++) {
-               printf ("%d [ID %d] ", bb_info->in_bb [i]->cfg_dfn, bb_info->in_bb [i]->bb->block_num);
-       }
-       printf ("}, OUT {");
-       for (i = 0; i < bb_info->out_count; i++) {
-               printf ("%d [ID %d] ", bb_info->out_bb [i]->cfg_dfn, bb_info->out_bb [i]->bb->block_num);
-       }
-       printf ("}");
-       if (bb_info->next_interesting_bb != NULL) {
-               printf (", NEXT %d [ID %d]", bb_info->next_interesting_bb->cfg_dfn, bb_info->next_interesting_bb->bb->block_num);
-       }
-       if (bb_info->dt_covered_by_interesting_BBs) {
-               printf (" (COVERED)");
-       } else {
-               printf (" (NEVER DOWN SAFE)");
-       }       
-       printf ("\n");
-       if (bb_info->has_phi) {
-               printf (" PHI, class %d [ ", bb_info->phi_redundancy_class);
-               for (i = 0; i < bb_info->in_count; i++) {
-                       int argument_class = bb_info->phi_arguments_classes [i];
-                       if (argument_class != BOTTOM_REDUNDANCY_CLASS) {
-                               printf ("%d ", argument_class);
-                       } else {
-                               printf ("BOTTOM ");
-                       }
-               }
-               printf ("]\n(phi_defines_a_real_occurrence:%s) (phi_is_down_safe:%s) (phi_can_be_available:%s) (phi_is_later:%s)\n",
-                               GBOOLEAN_TO_STRING (bb_info->phi_defines_a_real_occurrence), GBOOLEAN_TO_STRING (bb_info->phi_is_down_safe),
-                               GBOOLEAN_TO_STRING (bb_info->phi_can_be_available), GBOOLEAN_TO_STRING (bb_info->phi_is_later));
-       }
-       if (print_occurrences) {
-               i = 0;
-               while ((current_occurrence != NULL) && (current_occurrence->bb_info == bb_info)) {
-                       print_expression_occurrence (current_occurrence, i);
-                       current_occurrence = current_occurrence->next;
-                       i++;
-               }
-       }
-       if (bb_info->has_phi_argument) {
-               printf (" PHI ARGUMENT, class ");
-               if (bb_info->phi_argument_class != BOTTOM_REDUNDANCY_CLASS) {
-                       printf ("%d ", bb_info->phi_argument_class);
-               } else {
-                       printf ("BOTTOM ");
-               }
-               if (bb_info->phi_argument_defined_by_real_occurrence != NULL) {
-                       printf ("(Defined by real occurrence %d)", bb_info->phi_argument_defined_by_real_occurrence->redundancy_class);
-               } else if (bb_info->phi_argument_defined_by_phi != NULL) {
-                       printf ("(Defined by phi %d)", bb_info->phi_argument_defined_by_phi->phi_redundancy_class);
-               } else {
-                       printf ("(Undefined)");
-               }
-               printf (" (real occurrence arguments: left ");
-               if (bb_info->phi_argument_left_argument_version != BOTTOM_REDUNDANCY_CLASS) {
-                       printf ("%d ", bb_info->phi_argument_left_argument_version);
-               } else {
-                       printf ("NONE ");
-               }
-               printf (", right ");
-               if (bb_info->phi_argument_right_argument_version != BOTTOM_REDUNDANCY_CLASS) {
-                       printf ("%d ", bb_info->phi_argument_right_argument_version);
-               } else {
-                       printf ("NONE ");
-               }
-               printf (")\n(phi_argument_has_real_use:%s) (phi_argument_needs_insert:%s) (phi_argument_has_been_processed:%s)\n",
-                               GBOOLEAN_TO_STRING (bb_info->phi_argument_has_real_use), GBOOLEAN_TO_STRING (bb_info->phi_argument_needs_insert),
-                               GBOOLEAN_TO_STRING (bb_info->phi_argument_has_been_processed));
-       }
-}
-
-static void
-print_bb_infos (MonoSsapreWorkArea *area) {
-       int i;
-       for (i = 0; i < area->num_bblocks; i++) {
-               MonoSsapreBBInfo *bb_info = &(area->bb_infos [i]);
-               print_bb_info (bb_info, TRUE);
-       }
-}
-
-static void
-print_interesting_bb_infos (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               print_bb_info (current_bb, FALSE);
-       }
-}
-
-static void dump_code (MonoSsapreWorkArea *area) {
-       int i;
-       
-       for (i = 0; i < area->num_bblocks; i++) {
-               MonoSsapreBBInfo *current_bb = &(area->bb_infos [i]);
-               MonoInst *current_inst;
-               
-               print_bb_info (current_bb, TRUE);
-               MONO_BB_FOR_EACH_INS (current_bb->bb, current_inst)
-                       mono_print_tree_nl (current_inst);
-       }
-}
-
-/*
- * Given a MonoInst, it tries to describe it as an expression argument.
- * If this is not possible, the result will be of type
- * MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY.
- */
-static void
-analyze_argument (MonoInst *argument, MonoSsapreExpressionArgument *result) {
-       switch (argument->opcode) {
-       case CEE_LDIND_I1:
-       case CEE_LDIND_U1:
-       case CEE_LDIND_I2:
-       case CEE_LDIND_U2:
-       case CEE_LDIND_I4:
-       case CEE_LDIND_U4:
-       case CEE_LDIND_I8:
-       case CEE_LDIND_I:
-       case CEE_LDIND_R4:
-       case CEE_LDIND_R8:
-       case CEE_LDIND_REF:
-               if ((argument->inst_left->opcode == OP_LOCAL) || (argument->inst_left->opcode == OP_ARG)) {
-                       result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE;
-                       result->argument.ssa_variable = argument->inst_left->inst_c0;
-               } else {
-                       result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-               }
-               break;
-       case OP_ICONST:
-               result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT;
-               result->argument.integer_constant = argument->inst_c0;
-               break;
-       case OP_I8CONST:
-               result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT;
-               result->argument.long_constant = &(argument->inst_l);
-               break;
-       case OP_R4CONST:
-               if (! isnan (*((float*)argument->inst_p0))) {
-                       result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT;
-                       result->argument.float_constant = (float*)argument->inst_p0;
-               } else {
-                       result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-               }
-               break;
-       case OP_R8CONST:
-               if (! isnan (*((double*)argument->inst_p0))) {
-                       result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT;
-                       result->argument.double_constant = (double*)argument->inst_p0;
-               } else {
-                       result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-               }
-               break;
-       default:
-               result->type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-       }
-}
-
-
-/*
- * Given a MonoInst, it tries to describe it as an expression.
- * If this is not possible, the result will have opcode 0.
- */
-static void
-analyze_expression (MonoInst *expression, MonoSsapreExpressionDescription *result) {
-       switch (expression->opcode) {
-#define SSAPRE_SPECIFIC_OPS 1
-#define OPDEF(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) case a1:
-#include "simple-cee-ops.h"
-#undef OPDEF
-#define MINI_OP(a1,a2) case a1:
-#include "simple-mini-ops.h"
-#undef MINI_OP
-#undef SSAPRE_SPECIFIC_OPS
-               if ( (expression->type == STACK_I4) ||
-                               (expression->type == STACK_PTR) ||
-                               (expression->type == STACK_MP) ||
-                               (expression->type == STACK_I8) ||
-                               (expression->type == STACK_R8) ) {
-                       if (mono_burg_arity [expression->opcode] > 0) {
-                               result->opcode = expression->opcode;
-                               analyze_argument (expression->inst_left, &(result->left_argument));
-                               if (mono_burg_arity [expression->opcode] > 1) {
-                                       analyze_argument (expression->inst_right, &(result->right_argument));
-                               } else {
-                                       result->right_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT;
-                               }
-                       } else {
-                               result->opcode = 0;
-                       }
-               } else {
-                       result->opcode = 0;
-                       //~ if (expression->type != 0) {
-                               //~ MonoType *type = mono_type_from_stack_type (expression);
-                               //~ printf ("SSAPRE refuses opcode %s (%d) with type %s (%d)\n", mono_inst_name (expression->opcode), expression->opcode, mono_type_full_name (type), expression->type);
-                       //~ } else {
-                               //~ printf ("SSAPRE cannot really handle expression of opcode %s (%d)\n", mono_inst_name (expression->opcode), expression->opcode);
-                       //~ }
-               }
-               break;
-       default:
-               result->opcode = 0;
-               result->left_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-               result->right_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-       }
-       //~ switch (expression->opcode) {
-       //~ case CEE_ADD:
-               //~ if ((result->left_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT) &&
-                               //~ (result->right_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT)) {
-                       //~ break;
-               //~ }
-       //~ case CEE_LDELEMA:
-       //~ case CEE_LDLEN:
-               //~ result->opcode = 0;
-               //~ result->left_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-               //~ result->right_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY;
-       //~ }
-}
-
-/*
- * Given an expression description, if any of its arguments has type
- * MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE it transforms it to a
- * MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE, converting the
- * variable index to its "original" one.
- * The resulting description is OK for a "MonoSsapreExpression" (the
- * initial description came from a "MonoSsapreExpressionOccurrence").
- */
-static void
-convert_ssa_variables_to_original_names (MonoSsapreExpressionDescription *result, MonoSsapreExpressionDescription *expression, MonoCompile *cfg) {
-       gssize original_variable;
-       
-       result->opcode = expression->opcode;
-       if (expression->left_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE) {
-               result->left_argument = expression->left_argument;
-       } else {
-               result->left_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE;
-               original_variable = MONO_VARINFO (cfg, expression->left_argument.argument.ssa_variable)->reg;
-               if (original_variable >= 0) {
-                       result->left_argument.argument.original_variable = original_variable;
-               } else {
-                       result->left_argument.argument.original_variable = expression->left_argument.argument.ssa_variable;
-               }
-       }
-       if (expression->right_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE) {
-               result->right_argument = expression->right_argument;
-       } else {
-               result->right_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE;
-               original_variable = MONO_VARINFO (cfg, expression->right_argument.argument.ssa_variable)->reg;
-               if (original_variable >= 0) {
-                       result->right_argument.argument.original_variable = original_variable;
-               } else {
-                       result->right_argument.argument.original_variable = expression->right_argument.argument.ssa_variable;
-               }
-       }
-}
-
-/*
- * Given a MonoInst, checks if it is a phi definition.
- */
-static gboolean
-is_phi_definition (MonoInst *definition) {
-       if (definition != NULL) {
-               switch (definition->opcode) {
-               case CEE_STIND_REF:
-               case CEE_STIND_I:
-               case CEE_STIND_I4:
-               case CEE_STIND_I1:
-               case CEE_STIND_I2:
-               case CEE_STIND_I8:
-               case CEE_STIND_R4:
-               case CEE_STIND_R8:
-                       if ((definition->inst_left->opcode == OP_LOCAL) &&
-                                       (definition->inst_right->opcode == OP_PHI)) {
-                               return TRUE;
-                       } else {
-                               return FALSE;
-                       }
-               default:
-                       return FALSE;
-               }
-       } else {
-               return FALSE;
-       }
-}
-
-/*
- * Given a variable index, checks if it is a phi definition
- * (it assumes the "area" is visible).
- */
-#define IS_PHI_DEFINITION(v) is_phi_definition (MONO_VARINFO (area->cfg, v)->def)
-
-/*
- * Given a variable index, checks if it is a phi definition.
- * If it is so, it returns the array of integers pointed to by the phi MonoInst
- * (the one containing the length and the phi arguments), otherwise returns NULL.
- */
-static int*
-get_phi_definition (MonoCompile *cfg, gssize variable) {
-       MonoInst *definition = MONO_VARINFO (cfg, variable)->def;
-       if (is_phi_definition (definition) && (definition->inst_left->inst_c0 == variable)) {
-               return definition->inst_right->inst_phi_args;
-       } else {
-               return NULL;
-       }
-}
-
-/*
- * Given a variable index, returns the BB where the variable is defined.
- * If the variable appears to have no definition, it returns the entry BB
- * (the logic is that if it has no definition it is an argument, or a sort
- * of constant, and in both cases it is defined in the entry BB).
- */
-static MonoSsapreBBInfo*
-get_bb_info_of_definition (MonoSsapreWorkArea *area, gssize variable) {
-       MonoBasicBlock *def_bb = MONO_VARINFO (area->cfg, variable)->def_bb;
-       if (def_bb != NULL) {
-               return area->bb_infos_in_cfg_dfn_order [def_bb->dfn];
-       } else {
-               return area->bb_infos;
-       }
-}
-
-/*
- * Given:
- * - a variable index,
- * - a BB (the "current" BB), and
- * - a "phi argument index" (or index in the "in_bb" of the current BB),
- * it checks if the variable is a phi.
- * If it is so, it returns the variable index at the in_bb corresponding to
- * the given index, otherwise it return the variable index unchanged.
- * The logic is to return the variable version at the given predecessor BB.
- */
-static gssize
-get_variable_version_at_predecessor_bb (MonoSsapreWorkArea *area, gssize variable, MonoSsapreBBInfo *current_bb, int phi_operand) {
-       MonoSsapreBBInfo *definition_bb = get_bb_info_of_definition (area, variable);
-       int *phi_definition = get_phi_definition (area->cfg, variable);
-       if ((definition_bb == current_bb) && (phi_definition != NULL)) {
-               return phi_definition [phi_operand + 1];
-       } else {
-               return variable;
-       }
-}
-
-/*
- * Adds an expression to an autobalancing binary tree of expressions.
- * Returns the new tree root (it can be different from "tree" because of the
- * autobalancing).
- */
-static MonoSsapreExpression*
-add_expression_to_tree (MonoSsapreExpression *tree, MonoSsapreExpression *expression) {
-       MonoSsapreExpression *subtree;
-       MonoSsapreExpression **subtree_reference;
-       int comparison;
-       gssize max_tree_depth, max_subtree_size;
-       
-       if (tree == NULL) {
-               expression->previous = NULL;
-               expression->next = NULL;
-               expression->tree_size = 1;
-               return expression;
-       }
-       
-       tree->tree_size++;
-       
-       comparison = MONO_COMPARE_SSAPRE_EXPRESSION_DESCRIPTIONS (expression->description, tree->description);
-       if (comparison > 0) {
-               if (tree->next != NULL) {
-                       subtree = tree->next;
-                       subtree_reference = &(tree->next);
-               } else {
-                       tree->next = expression;
-                       expression->father = tree;
-                       expression->previous = NULL;
-                       expression->next = NULL;
-                       expression->tree_size = 1;
-                       return tree;
-               }
-       } else if (comparison < 0) {
-               if (tree->previous != NULL) {
-                       subtree = tree->previous;
-                       subtree_reference = &(tree->previous);
-               } else {
-                       tree->previous = expression;
-                       expression->father = tree;
-                       expression->previous = NULL;
-                       expression->next = NULL;
-                       expression->tree_size = 1;
-                       return tree;
-               }
-       } else {
-               g_assert_not_reached ();
-               return NULL;
-       }
-       
-       MONO_SSAPRE_MAX_TREE_DEPTH (tree->tree_size, max_tree_depth);
-       max_subtree_size = (1 << max_tree_depth) -1;
-       
-       if (subtree->tree_size < max_subtree_size) {
-               *subtree_reference = add_expression_to_tree (subtree, expression);
-               (*subtree_reference)->father = tree;
-               return tree;
-       } else {
-               MonoSsapreExpression *other_subtree;
-               MonoSsapreExpression *border_expression;
-               MonoSsapreExpression *border_expression_subtree;
-               MonoSsapreExpression **border_expression_reference_from_father;
-               int comparison_with_border;
-               
-               border_expression = subtree;
-               if (comparison > 0) {
-                       other_subtree = tree->previous;
-                       MONO_SSAPRE_GOTO_FIRST_EXPRESSION (border_expression);
-                       border_expression_subtree = border_expression->next;
-                       border_expression_reference_from_father = &(border_expression->father->previous);
-               } else if (comparison < 0) {
-                       other_subtree = tree->next;
-                       MONO_SSAPRE_GOTO_LAST_EXPRESSION (border_expression);
-                       border_expression_subtree = border_expression->previous;
-                       border_expression_reference_from_father = &(border_expression->father->next);
-               } else {
-                       g_assert_not_reached ();
-                       return NULL;
-               }
-               comparison_with_border = MONO_COMPARE_SSAPRE_EXPRESSION_DESCRIPTIONS (expression->description, border_expression->description);
-               
-               if ((comparison + comparison_with_border) != 0) {
-                       MonoSsapreExpression *border_expression_iterator = border_expression->father;
-                       while (border_expression_iterator != tree) {
-                               border_expression_iterator->tree_size--;
-                               border_expression_iterator = border_expression_iterator->father;
-                       }
-                       
-                       if (border_expression != subtree) {
-                               *border_expression_reference_from_father = border_expression_subtree;
-                       } else {
-                               subtree = border_expression_subtree;
-                       }
-                       if (border_expression_subtree != NULL) {
-                               border_expression_subtree->father = border_expression->father;
-                       }
-                       
-                       if (comparison > 0) {
-                               border_expression->previous = add_expression_to_tree (other_subtree, tree);
-                               border_expression->next = add_expression_to_tree (subtree, expression);
-                       } else if (comparison < 0) {
-                               border_expression->previous = add_expression_to_tree (subtree, expression);
-                               border_expression->next = add_expression_to_tree (other_subtree, tree);
-                       } else {
-                               g_assert_not_reached ();
-                               return NULL;
-                       }
-                       border_expression->tree_size = 1 + border_expression->previous->tree_size + border_expression->next->tree_size;
-                       return border_expression;
-               } else {
-                       if (comparison > 0) {
-                               expression->previous = add_expression_to_tree (other_subtree, tree);
-                               expression->next = subtree;
-                       } else if (comparison < 0) {
-                               expression->previous = subtree;
-                               expression->next = add_expression_to_tree (other_subtree, tree);
-                       } else {
-                               g_assert_not_reached ();
-                               return NULL;
-                       }
-                       expression->tree_size = 1 + expression->previous->tree_size + expression->next->tree_size;
-                       return expression;
-               }
-       }
-}
-
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
-static char *mono_ssapre_expression_name;
-static gboolean
-check_ssapre_expression_name (MonoSsapreWorkArea *area, MonoSsapreExpressionDescription *expression_description) {
-       if (area->expression_is_handled_father) {
-               return TRUE;
-       }
-       if (mono_ssapre_expression_name == NULL) {
-               mono_ssapre_expression_name = g_getenv ("MONO_SSAPRE_EXPRESSION_NAME");
-       }
-       if (mono_ssapre_expression_name != NULL) {
-               GString *expression_name = g_string_new_len ("", 256);
-               gboolean return_value;
-               snprint_expression_description (expression_name, expression_description);
-               if (strstr (expression_name->str, mono_ssapre_expression_name) != NULL) {
-                       return_value = TRUE;
-               } else {
-                       return_value = FALSE;
-               }
-               g_string_free (expression_name, TRUE);
-               return return_value;
-       } else {
-               return TRUE;
-       }
-}
-#endif
-
-/*
- * Adds an expression to the worklist (putting the current occurrence as first
- * occurrence of this expression).
- */
-static void
-add_expression_to_worklist (MonoSsapreWorkArea *area) {
-       MonoSsapreExpressionOccurrence *occurrence = area->current_occurrence;
-       MonoSsapreExpression *expression = (MonoSsapreExpression*) mono_mempool_alloc (area->mempool, sizeof (MonoSsapreExpression));
-       
-       convert_ssa_variables_to_original_names (&(expression->description), &(occurrence->description), area->cfg);
-       
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
-       if (! check_ssapre_expression_name (area, &(expression->description))) return;
-#endif 
-       
-       expression->type = mono_type_from_stack_type (occurrence->occurrence);
-       expression->occurrences = NULL;
-       expression->last_occurrence = NULL;
-       expression->next_in_queue = NULL;
-       if (area->last_in_queue != NULL) {
-               area->last_in_queue->next_in_queue = expression;
-       } else {
-               area->first_in_queue = expression;
-       }
-       area->last_in_queue = expression;
-       MONO_SSAPRE_ADD_EXPRESSION_OCCURRANCE (expression, occurrence);
-       
-       area->worklist = add_expression_to_tree (area->worklist, expression);
-       area->worklist->father = NULL;
-}
-
-/*
- * Adds the current expression occurrence to the worklist.
- * If its expression is not yet in the worklist, it is created.
- */
-static void
-add_occurrence_to_worklist (MonoSsapreWorkArea *area) {
-       MonoSsapreExpressionDescription description;
-       MonoSsapreExpression *current_expression;
-       int comparison;
-       
-       convert_ssa_variables_to_original_names (&description, &(area->current_occurrence->description), area->cfg);
-       current_expression = area->worklist;
-       
-       do {
-               if (current_expression != NULL) {
-                       comparison = MONO_COMPARE_SSAPRE_EXPRESSION_DESCRIPTIONS (description, current_expression->description);
-
-                       if (comparison > 0) {
-                               current_expression = current_expression->next;
-                       } else if (comparison < 0) {
-                               current_expression = current_expression->previous;
-                       } else {
-                               MONO_SSAPRE_ADD_EXPRESSION_OCCURRANCE (current_expression, area->current_occurrence);
-                       }
-               } else {
-                       add_expression_to_worklist (area);
-                       comparison = 0;
-               }
-       } while (comparison != 0);
-       
-       area->current_occurrence = (MonoSsapreExpressionOccurrence*) mono_mempool_alloc (area->mempool, sizeof (MonoSsapreExpressionOccurrence));
-}
-
-/*
- * Process a MonoInst, and of it is a valid expression add it to the worklist.
- */
-static void
-process_inst (MonoSsapreWorkArea *area, MonoInst* inst, MonoInst* previous_inst, MonoSsapreFatherExpression*** father_in_tree, MonoSsapreBBInfo *bb_info) {
-       MonoSsapreFatherExpression** left_father_in_tree = NULL;
-       MonoSsapreFatherExpression** right_father_in_tree = NULL;
-       
-       if (mono_burg_arity [inst->opcode] > 0) {
-               process_inst (area, inst->inst_left, previous_inst, &left_father_in_tree, bb_info);
-               if (mono_burg_arity [inst->opcode] > 1) {
-                       process_inst (area, inst->inst_right, previous_inst, &right_father_in_tree, bb_info);
-               }
-       }
-       
-       analyze_expression (inst, &(area->current_occurrence->description));
-       if (area->current_occurrence->description.opcode != 0) {
-               if ((left_father_in_tree != NULL) || (right_father_in_tree != NULL)) {
-                       MonoSsapreFatherExpression *current_inst_as_father = (MonoSsapreFatherExpression*) mono_mempool_alloc (area->mempool, sizeof (MonoSsapreFatherExpression));
-                       current_inst_as_father->father_occurrence = inst;
-                       current_inst_as_father->grand_father = NULL;
-                       *father_in_tree = &(current_inst_as_father->grand_father);
-                       if (left_father_in_tree != NULL) {
-                               *left_father_in_tree = current_inst_as_father;
-                       }
-                       if (right_father_in_tree != NULL) {
-                               *right_father_in_tree = current_inst_as_father;
-                       }
-                       if (DUMP_SSAPRE) {
-                               printf ("Expression '");
-                               mono_print_tree (inst);
-                               printf ("' is a potential father ( ");
-                               if (left_father_in_tree != NULL) {
-                                       printf ("LEFT ");
-                               }
-                               if (right_father_in_tree != NULL) {
-                                       printf ("RIGHT ");
-                               }
-                               printf (")\n");
-                       }
-               } else if ((area->current_occurrence->description.left_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY) &&
-                               (area->current_occurrence->description.right_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY)) {
-                       area->current_occurrence->occurrence = inst;
-                       area->current_occurrence->previous_tree = previous_inst;
-                       area->current_occurrence->bb_info = bb_info;
-                       area->current_occurrence->is_first_in_bb = FALSE;
-                       area->current_occurrence->is_last_in_bb = FALSE;
-                       
-                       area->current_occurrence->father_in_tree = NULL;
-                       *father_in_tree = &(area->current_occurrence->father_in_tree);
-                       
-                       add_occurrence_to_worklist (area);
-               } else {
-                       *father_in_tree = NULL;
-               }
-       } else {
-               *father_in_tree = NULL;
-       }
-}
-
-/*
- * Process a BB, and (recursively) all its children in the dominator tree.
- * The result is that all the expressions end up in the worklist, and the
- * auxiliary MonoSsapreBBInfo fields (dt_dfn, dt_descendants) are initialized
- * (with all the info that comes from the MonoBasicBlock).
- */
-static void
-process_bb (MonoSsapreWorkArea *area, MonoBasicBlock *bb, int *dt_dfn, int *upper_descendants, int current_depth) {
-       MonoSsapreBBInfo *bb_info;
-       int descendants;
-       GSList *dominated_bb;
-       MonoInst* current_inst;
-       MonoInst* previous_inst;
-       MonoSsapreFatherExpression** dummy_father_in_tree;
-       
-       bb_info = &(area->bb_infos [*dt_dfn]);
-       bb_info->dt_dfn = *dt_dfn;
-       (*dt_dfn)++;
-       bb_info->cfg_dfn = bb->dfn;
-       area->bb_infos_in_cfg_dfn_order [bb->dfn] = bb_info;
-       bb_info->in_count = bb->in_count;
-       bb_info->out_count = bb->out_count;
-       bb_info->dfrontier = bb->dfrontier;
-       bb_info->bb = bb;
-       bb_info->in_bb = (MonoSsapreBBInfo**) mono_mempool_alloc (area->mempool, sizeof (MonoSsapreBBInfo*) * (bb->in_count));
-       bb_info->out_bb = (MonoSsapreBBInfo**) mono_mempool_alloc (area->mempool, sizeof (MonoSsapreBBInfo*) * (bb->out_count));
-       bb_info->phi_arguments_classes = (int*) mono_mempool_alloc (area->mempool, sizeof (int) * (bb->in_count));
-       
-       bb_info->phi_insertion_point = NULL;
-       
-       previous_inst = NULL;
-       MONO_BB_FOR_EACH_INS (bb, current_inst) {
-               /* Ugly hack to fix missing variable definitions */
-               /* (the SSA construction code should have done it already!) */
-               switch (current_inst->opcode) {
-               case CEE_STIND_REF:
-               case CEE_STIND_I:
-               case CEE_STIND_I4:
-               case CEE_STIND_I1:
-               case CEE_STIND_I2:
-               case CEE_STIND_I8:
-               case CEE_STIND_R4:
-               case CEE_STIND_R8:
-                       if ((current_inst->inst_left->opcode == OP_LOCAL) || (current_inst->inst_left->opcode == OP_ARG)) {
-                               int variable_index = current_inst->inst_left->inst_c0;
-                               
-                               if (MONO_VARINFO (area->cfg, variable_index)->def_bb == NULL) {
-                                       if (area->cfg->verbose_level >= 4) {
-                                               printf ("SSAPRE WARNING: variable %d has no definition, fixing.\n", variable_index);
-                                       }
-                                       MONO_VARINFO (area->cfg, variable_index)->def_bb = bb_info->bb;
-                               }
-                       }
-                       break;
-               default:
-                       break;
-               }
-               
-               if (is_phi_definition (current_inst)) {
-                       bb_info->phi_insertion_point = current_inst;
-               }
-               
-               if (mono_burg_arity [current_inst->opcode] > 0) {
-                       process_inst (area, current_inst->inst_left, previous_inst, &dummy_father_in_tree, bb_info);
-                       if (mono_burg_arity [current_inst->opcode] > 1) {
-                               process_inst (area, current_inst->inst_right, previous_inst, &dummy_father_in_tree, bb_info);
-                       }
-               }
-               
-               previous_inst = current_inst;
-       }
-       
-       if (current_depth > area->dt_depth) {
-               area->dt_depth = current_depth;
-       }
-       descendants = 0;
-       for (dominated_bb = bb->dominated; dominated_bb != NULL; dominated_bb = dominated_bb->next) {
-               process_bb (area, (MonoBasicBlock*) (dominated_bb->data), dt_dfn, &descendants, current_depth + 1);
-       }
-       bb_info->dt_descendants = descendants;
-       *upper_descendants += (descendants + 1);
-}
-
-/*
- * Reset the MonoSsapreBBInfo fields that must be recomputed for each expression.
- */
-static void
-clean_bb_infos (MonoSsapreWorkArea *area) {
-       int i;
-       for (i = 0; i < area->num_bblocks; i++) {
-               MonoSsapreBBInfo *bb_info = &(area->bb_infos [i]);
-               bb_info->dt_covered_by_interesting_BBs = FALSE;
-               bb_info->has_phi = FALSE;
-               bb_info->phi_defines_a_real_occurrence = FALSE;
-               bb_info->phi_is_down_safe = FALSE;
-               bb_info->phi_can_be_available = FALSE;
-               bb_info->phi_is_later = FALSE;
-               bb_info->phi_redundancy_class = BOTTOM_REDUNDANCY_CLASS;
-               bb_info->phi_variable_index = BOTTOM_REDUNDANCY_CLASS;
-               bb_info->has_phi_argument = FALSE;
-               bb_info->phi_argument_has_real_use = FALSE;
-               bb_info->phi_argument_needs_insert = FALSE;
-               bb_info->phi_argument_has_been_processed = FALSE;
-               bb_info->phi_argument_class = BOTTOM_REDUNDANCY_CLASS;
-               bb_info->phi_argument_variable_index = BOTTOM_REDUNDANCY_CLASS;
-               bb_info->phi_argument_defined_by_real_occurrence = NULL;
-               bb_info->phi_argument_defined_by_phi = NULL;
-               bb_info->phi_argument_left_argument_version = BOTTOM_REDUNDANCY_CLASS;
-               bb_info->phi_argument_right_argument_version = BOTTOM_REDUNDANCY_CLASS;
-               bb_info->first_expression_in_bb = NULL;
-               bb_info->next_interesting_bb = NULL;
-               bb_info->next_in_renaming_stack = NULL;
-               bb_info->top_of_local_renaming_stack = NULL;
-       }
-}
-
-/*
- * Reset the MonoSsapreWorkArea fields that must be recomputed for each expression.
- */
-static void
-clean_area_infos (MonoSsapreWorkArea *area) {
-       mono_bitset_clear_all (area->left_argument_bb_bitset);
-       mono_bitset_clear_all (area->right_argument_bb_bitset);
-       area->num_vars = area->cfg->num_varinfo;
-       area->top_of_renaming_stack = NULL;
-       area->bb_on_top_of_renaming_stack = NULL;
-       area->first_interesting_bb = NULL;
-       area->saved_occurrences = 0;
-       area->reloaded_occurrences = 0;
-       area->inserted_occurrences = 0;
-       area->unaltered_occurrences = 0;
-       area->added_phis = 0;
-       clean_bb_infos (area);
-}
-
-/*
- * Utility function to combine the dominance frontiers of a set of BBs.
- */
-static void
-compute_combined_dfrontier (MonoSsapreWorkArea *area, MonoBitSet* result, MonoBitSet *bblocks) 
-{
-       int i;
-       mono_bitset_clear_all (result);
-       mono_bitset_foreach_bit (bblocks, i, area->num_bblocks) {
-               mono_bitset_union (result, area->bb_infos_in_cfg_dfn_order [i]->dfrontier);
-       }
-}
-
-/*
- * Utility function to compute the combined dominance frontier of a set of BBs.
- */
-static void
-compute_combined_iterated_dfrontier (MonoSsapreWorkArea *area, MonoBitSet *result, MonoBitSet *bblocks, MonoBitSet *buffer) 
-{
-       gboolean change = TRUE;
-
-       compute_combined_dfrontier (area, result, bblocks);
-       do {
-               change = FALSE;
-               compute_combined_dfrontier (area, buffer, result);
-               mono_bitset_union (buffer, result);
-
-               if (!mono_bitset_equal (buffer, result)) {
-                       mono_bitset_copyto (buffer, result);
-                       change = TRUE;
-               }
-       } while (change);
-}
-
-/*
- * See paper, section 5.1, definition of "Dominate"
- */
-static gboolean
-dominates (MonoSsapreBBInfo *dominator, MonoSsapreBBInfo *dominated) {
-       if ((dominator->dt_dfn <= dominated->dt_dfn) && (dominated->dt_dfn <= (dominator->dt_dfn + dominator->dt_descendants))) {
-               return TRUE;
-       } else {
-               return FALSE;
-       }
-}
-
-/*
- * See paper, figure 18, function Set_var_phis
- */
-static void process_phi_variable_in_phi_insertion (MonoSsapreWorkArea *area, gssize variable, MonoBitSet *phi_bbs) {
-       int* phi_definition = get_phi_definition (area->cfg, variable);
-       
-       if (phi_definition != NULL) {
-               int definition_bb = MONO_VARINFO (area->cfg, variable)->def_bb->dfn;
-               if (! mono_bitset_test (phi_bbs, definition_bb)) {
-                       int i;
-                       mono_bitset_set (phi_bbs, definition_bb);
-                       for (i = 0; i < *phi_definition; i++) {
-                               process_phi_variable_in_phi_insertion (area, phi_definition [i+1], phi_bbs);
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 18, function phi_insertion
- */
-static void
-phi_insertion (MonoSsapreWorkArea *area, MonoSsapreExpression *expression) {
-       MonoSsapreExpressionOccurrence *current_expression = NULL;
-       MonoSsapreExpressionOccurrence *previous_expression = NULL;
-       MonoSsapreBBInfo *current_bb = NULL;
-       MonoSsapreBBInfo *previous_interesting_bb = NULL;
-       int i, j, current_bb_dt_dfn;
-       int top;
-       MonoSsapreBBInfo **stack;
-       gboolean *interesting_stack;
-       
-       mono_bitset_clear_all (area->expression_occurrences_buffer);
-       for (current_expression = expression->occurrences; current_expression != NULL; current_expression = current_expression->next) {
-               mono_bitset_set (area->expression_occurrences_buffer, current_expression->bb_info->cfg_dfn);
-               if (current_expression->description.left_argument.type == MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE) {
-                       process_phi_variable_in_phi_insertion (area, current_expression->description.left_argument.argument.ssa_variable, area->left_argument_bb_bitset);
-               }
-               if (current_expression->description.right_argument.type == MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE) {
-                       process_phi_variable_in_phi_insertion (area, current_expression->description.right_argument.argument.ssa_variable, area->right_argument_bb_bitset);
-               }
-               
-               if (previous_expression != NULL) {
-                       if (previous_expression->bb_info != current_expression->bb_info) {
-                               previous_expression->is_last_in_bb = TRUE;
-                               current_expression->is_first_in_bb = TRUE;
-                               current_expression->bb_info->first_expression_in_bb = current_expression;
-                       }
-               } else {
-                       current_expression->is_first_in_bb = TRUE;
-                       current_expression->bb_info->first_expression_in_bb = current_expression;
-               }
-               
-               previous_expression = current_expression;
-       }
-       previous_expression->is_last_in_bb = TRUE;
-       
-       compute_combined_iterated_dfrontier (area, area->iterated_dfrontier_buffer, area->expression_occurrences_buffer, area->bb_iteration_buffer);
-       
-       mono_bitset_union (area->iterated_dfrontier_buffer, area->left_argument_bb_bitset);
-       mono_bitset_union (area->iterated_dfrontier_buffer, area->right_argument_bb_bitset);
-       
-       mono_bitset_foreach_bit (area->iterated_dfrontier_buffer, i, area->num_bblocks) {
-               area->bb_infos_in_cfg_dfn_order [i]->has_phi = TRUE;
-               area->bb_infos_in_cfg_dfn_order [i]->phi_can_be_available = TRUE;
-               for (j = 0; j < area->bb_infos_in_cfg_dfn_order [i]->in_count; j++) {
-                       area->bb_infos_in_cfg_dfn_order [i]->in_bb [j]->has_phi_argument = TRUE;
-               }
-       }
-       
-       top = -1;
-       stack = (MonoSsapreBBInfo **) alloca (sizeof (MonoSsapreBBInfo *) * (area->dt_depth));
-       interesting_stack = (gboolean *) alloca (sizeof (gboolean) * (area->dt_depth));
-       
-       /* Setup the list of interesting BBs, and their "DT coverage" */
-       for (current_bb = area->bb_infos, current_bb_dt_dfn = 0; current_bb_dt_dfn < area->num_bblocks; current_bb++, current_bb_dt_dfn++) {
-               gboolean current_bb_is_interesting;
-               
-               if ((current_bb->first_expression_in_bb != NULL) || (current_bb->has_phi) || (current_bb->has_phi_argument)) {
-                       current_bb_is_interesting = TRUE;
-                       
-                       if (previous_interesting_bb != NULL) {
-                               previous_interesting_bb->next_interesting_bb = current_bb;
-                       } else {
-                               area->first_interesting_bb = current_bb;
-                       }
-                       previous_interesting_bb = current_bb;
-               } else {
-                       current_bb_is_interesting = FALSE;
-               }
-               
-               if (top >= 0) {
-                       while ((top >= 0) && (! dominates (stack [top], current_bb))) {
-                               gboolean top_covers_his_idominator = ((interesting_stack [top]) || (stack [top]->dt_covered_by_interesting_BBs));
-                               
-                               if ((top > 0) && (! top_covers_his_idominator)) {
-                                       stack [top - 1]->dt_covered_by_interesting_BBs = FALSE;
-                               }
-                               
-                               top--;
-                       }
-               } else {
-                       top = -1;
-               }
-               
-               top++;
-               
-               interesting_stack [top] = current_bb_is_interesting;
-               stack [top] = current_bb;
-               if (stack [top]->dt_descendants == 0) {
-                       stack [top]->dt_covered_by_interesting_BBs = FALSE;
-               } else {
-                       stack [top]->dt_covered_by_interesting_BBs = TRUE;
-               }
-       }
-       while (top > 0) {
-               gboolean top_covers_his_idominator = ((interesting_stack [top]) || (stack [top]->dt_covered_by_interesting_BBs));
-               
-               if (! top_covers_his_idominator) {
-                       stack [top - 1]->dt_covered_by_interesting_BBs = FALSE;
-               }
-               
-               top--;
-       }
-}
-
-/*
- * Macro that pushes a real occurrence on the stack
- */
-#define PUSH_REAL_OCCURRENCE(o) do{\
-                       if (area->bb_on_top_of_renaming_stack != (o)->bb_info) { \
-                               (o)->bb_info->next_in_renaming_stack = area->bb_on_top_of_renaming_stack; \
-                               area->bb_on_top_of_renaming_stack =(o)->bb_info; \
-                               (o)->next_in_renaming_stack = NULL; \
-                       } else { \
-                               (o)->next_in_renaming_stack = area->top_of_renaming_stack; \
-                       } \
-                       (o)->bb_info->top_of_local_renaming_stack = (o); \
-                       area->top_of_renaming_stack = (o); \
-                       area->bb_on_top_of_renaming_stack->phi_argument_has_real_use = FALSE; \
-               } while(0)
-
-/*
- * Macro that pushes a PHI occurrence on the stack
- */
-#define PUSH_PHI_OCCURRENCE(b) do{\
-                       if (area->bb_on_top_of_renaming_stack != (b)) { \
-                               (b)->next_in_renaming_stack = area->bb_on_top_of_renaming_stack; \
-                               area->bb_on_top_of_renaming_stack = (b); \
-                       } \
-                       (b)->top_of_local_renaming_stack = NULL; \
-                       area->top_of_renaming_stack = NULL; \
-                       area->bb_on_top_of_renaming_stack->phi_argument_has_real_use = FALSE; \
-               } while(0)
-
-/*
- * See paper, section 5.4.
- * The two passes are coded sequentially (no separate "rename1" and "rename2" functions).
- */
-static void
-renaming_pass (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       MonoSsapreBBInfo *previous_bb = NULL;
-       MonoSsapreExpressionOccurrence *current_expression = NULL;
-       gssize current_class = 0;
-       
-       /* This loop is "rename1" */
-       for (current_bb = area->first_interesting_bb, previous_bb = NULL; current_bb != NULL; previous_bb = current_bb, current_bb = current_bb->next_interesting_bb) {
-               if (previous_bb != NULL) {
-                       if (! dominates (previous_bb, current_bb)) {
-                               /* This means we are backtracking in the dominator tree */
-                               MonoSsapreBBInfo *first_interesting_dominator = current_bb->idominator;
-                               while ((first_interesting_dominator->next_interesting_bb == NULL) && (first_interesting_dominator->idominator != NULL)) {
-                                       first_interesting_dominator = first_interesting_dominator->idominator;
-                               }
-                               current_bb->phi_argument_has_real_use = first_interesting_dominator->phi_argument_has_real_use;
-                               
-                               if ((area->bb_on_top_of_renaming_stack != NULL) && (area->top_of_renaming_stack == NULL) && (previous_bb->phi_argument_has_real_use == FALSE)) {
-                                       if (TRACE_SSAPRE) {
-                                               printf ("Clearing down safe in PHI %d because of backtracking (current block is [bb %d [ID %d]], previous block is [bb %d [ID %d]])\n",
-                                                               area->bb_on_top_of_renaming_stack->phi_redundancy_class, current_bb->cfg_dfn, current_bb->bb->block_num, previous_bb->cfg_dfn, previous_bb->bb->block_num);
-                                       }
-                                       area->bb_on_top_of_renaming_stack->phi_is_down_safe = FALSE;
-                               }
-                               while ((area->bb_on_top_of_renaming_stack != NULL) && ! dominates (area->bb_on_top_of_renaming_stack, current_bb)) {
-                                       MonoSsapreBBInfo *top_bb = area->bb_on_top_of_renaming_stack;
-                                       if (top_bb->next_in_renaming_stack != NULL) {
-                                               area->top_of_renaming_stack = top_bb->next_in_renaming_stack->top_of_local_renaming_stack;
-                                       } else {
-                                               area->top_of_renaming_stack = NULL;
-                                       }
-                                       area->bb_on_top_of_renaming_stack = top_bb->next_in_renaming_stack;
-                               }
-                               if (DUMP_SSAPRE) {
-                                       printf ("Backtracked, getting real use flag from bb %d [ID %d], current top of the stack is class ",
-                                                       first_interesting_dominator->cfg_dfn, first_interesting_dominator->bb->block_num);
-                                       if (area->top_of_renaming_stack != NULL) {
-                                               printf ("%d\n", area->top_of_renaming_stack->redundancy_class);
-                                       } else if (area->bb_on_top_of_renaming_stack != NULL) {
-                                               printf ("%d\n", area->bb_on_top_of_renaming_stack->phi_redundancy_class);
-                                       } else {
-                                               printf ("BOTTOM\n");
-                                       }
-                               }
-                       } else {
-                               /* With no backtracking we just propagate the flag */
-                               current_bb->phi_argument_has_real_use = previous_bb->phi_argument_has_real_use;
-                       }
-               } else {
-                       /* Start condition */
-                       current_bb->phi_argument_has_real_use = FALSE;
-               }
-               if (DUMP_SSAPRE) {
-                       printf ("Real use flag is %s at the beginning of block [bb %d [ID %d]]\n",
-                                       GBOOLEAN_TO_STRING (current_bb->phi_argument_has_real_use), current_bb->cfg_dfn, current_bb->bb->block_num);
-               }
-               
-               if (current_bb->has_phi) {
-                       if (current_bb->dt_covered_by_interesting_BBs) {
-                               current_bb->phi_is_down_safe = TRUE;
-                       } else {
-                               current_bb->phi_is_down_safe = FALSE;
-                       }
-                       current_bb->phi_redundancy_class = current_class;
-                       current_class++;
-                       PUSH_PHI_OCCURRENCE (current_bb);
-                       if (TRACE_SSAPRE) {
-                               printf ("Assigning class %d to PHI in bb %d [ID %d]\n",
-                                               current_bb->phi_redundancy_class, current_bb->cfg_dfn, current_bb->bb->block_num);
-                       }
-               }
-               
-               for (current_expression = current_bb->first_expression_in_bb; (current_expression != NULL) && (current_expression->bb_info == current_bb); current_expression = current_expression->next) {
-                       if (area->top_of_renaming_stack != NULL) {
-                               MonoSsapreExpressionOccurrence *top = area->top_of_renaming_stack;
-                               
-                               if (((current_expression->description.left_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE) ||
-                                               (current_expression->description.left_argument.argument.ssa_variable == top->description.left_argument.argument.ssa_variable)) &&
-                                               ((current_expression->description.right_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE) ||
-                                               (current_expression->description.right_argument.argument.ssa_variable == top->description.right_argument.argument.ssa_variable))) {
-                                       current_expression->redundancy_class = top->redundancy_class;
-                                       current_expression->defined_by_real_occurrence = top;
-                                       if (DUMP_SSAPRE) {
-                                               printf ("Using class %d for occurrence '", current_expression->redundancy_class);
-                                               print_expression_description (&(current_expression->description));
-                                               printf ("' in bb %d [ID %d]\n", current_bb->cfg_dfn, current_bb->bb->block_num);
-                                       }
-                               } else {
-                                       current_expression->redundancy_class = current_class;
-                                       current_class++;
-                                       current_expression->defined_by_real_occurrence = NULL;
-                                       PUSH_REAL_OCCURRENCE (current_expression);
-                                       if (TRACE_SSAPRE) {
-                                               printf ("Assigning class %d to occurrence '", current_expression->redundancy_class);
-                                               print_expression_description (&(current_expression->description));
-                                               printf ("' in bb %d [ID %d]\n", current_bb->cfg_dfn, current_bb->bb->block_num);
-                                       }
-                               }
-                               current_expression->defined_by_phi = NULL;
-                       } else if (area->bb_on_top_of_renaming_stack != NULL) {
-                               MonoSsapreBBInfo *phi_bb = area->bb_on_top_of_renaming_stack;
-                               gssize left_argument_version = ((current_expression->description.left_argument.type == MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE)?
-                                               (current_expression->description.left_argument.argument.ssa_variable):BOTTOM_REDUNDANCY_CLASS);
-                               gssize right_argument_version = ((current_expression->description.right_argument.type == MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE)?
-                                               (current_expression->description.right_argument.argument.ssa_variable):BOTTOM_REDUNDANCY_CLASS);
-                               
-                               /* See remark in section 5.4 about the dominance relation between PHI */
-                               /* occurrences and phi definitions */
-                               MonoSsapreBBInfo *left_argument_definition_bb = ((left_argument_version != BOTTOM_REDUNDANCY_CLASS)?
-                                               (get_bb_info_of_definition (area, left_argument_version)):NULL);
-                               MonoSsapreBBInfo *right_argument_definition_bb = ((right_argument_version != BOTTOM_REDUNDANCY_CLASS)?
-                                               (get_bb_info_of_definition (area, right_argument_version)):NULL);
-                               
-                               gboolean left_same_class_condition = ((left_argument_definition_bb == NULL) || ((left_argument_definition_bb != phi_bb) ? dominates (left_argument_definition_bb, phi_bb) :
-                                               (IS_PHI_DEFINITION (left_argument_version) ? TRUE : FALSE)));
-                               gboolean right_same_class_condition = ((right_argument_definition_bb == NULL) || ((right_argument_definition_bb != phi_bb) ? dominates (right_argument_definition_bb, phi_bb) :
-                                               (IS_PHI_DEFINITION (right_argument_version) ? TRUE : FALSE)));
-                                       
-                               if (left_same_class_condition && right_same_class_condition) {
-                                       int phi_argument;
-                                       
-                                       phi_bb->phi_defines_a_real_occurrence = TRUE;
-                                       current_bb->phi_argument_has_real_use = TRUE;
-                                       current_expression->redundancy_class = phi_bb->phi_redundancy_class;
-                                       current_expression->defined_by_phi = phi_bb;
-                                       
-                                       /* If this PHI was not "covered", it is not down safe. */
-                                       /* However, if the real occurrence is in the same BB, it */
-                                       /* actually is down safe */
-                                       if (phi_bb == current_bb) {
-                                               if (DUMP_SSAPRE) {
-                                                       printf ("PHI in bb %d [ID %d] defined occurrence %d in the same BB, so it is down safe\n", phi_bb->cfg_dfn, phi_bb->bb->block_num, current_expression->redundancy_class);
-                                               }
-                                               phi_bb->phi_is_down_safe = TRUE;
-                                       }
-                                       
-                                       /*
-                                        * Major difference from the paper here...
-                                        * Instead of maintaining "set_for_rename2" (see figure 20), we just
-                                        * compute "phi_argument_left_argument_version" (and right) here, and
-                                        * use that in rename2, saving us the hassle of maintaining a set
-                                        * data structure (and the related allocations).
-                                        */
-                                       for (phi_argument = 0; phi_argument < phi_bb->in_count; phi_argument++) {
-                                               MonoSsapreBBInfo *previous_bb = phi_bb->in_bb [phi_argument];
-                                               if (left_argument_version != BOTTOM_REDUNDANCY_CLASS) {
-                                                       previous_bb->phi_argument_left_argument_version = get_variable_version_at_predecessor_bb (area,
-                                                                       left_argument_version, phi_bb, phi_argument);
-                                               }
-                                               if (right_argument_version != BOTTOM_REDUNDANCY_CLASS) {
-                                                       previous_bb->phi_argument_right_argument_version = get_variable_version_at_predecessor_bb (area,
-                                                                       right_argument_version, phi_bb, phi_argument);
-                                               }
-                                       }
-                                       if (DUMP_SSAPRE) {
-                                               printf ("Using class %d for occurrence '", current_expression->redundancy_class);
-                                               print_expression_description (&(current_expression->description));
-                                               printf ("' in bb %d [ID %d] (Real use flag is now TRUE)\n", current_bb->cfg_dfn, current_bb->bb->block_num);
-                                       }
-                               } else {
-                                       current_expression->redundancy_class = current_class;
-                                       current_class++;
-                                       current_expression->defined_by_phi = NULL;
-                                       PUSH_REAL_OCCURRENCE (current_expression);
-                                       phi_bb->phi_is_down_safe = FALSE;
-                                       if (TRACE_SSAPRE) {
-                                               printf ("Assigning class %d to occurrence '", current_expression->redundancy_class);
-                                               print_expression_description (&(current_expression->description));
-                                               printf ("' in bb %d [ID %d]\n", current_bb->cfg_dfn, current_bb->bb->block_num);
-                                               printf ("Clearing down safe in PHI %d because of real occurrence %d\n",
-                                                               phi_bb->phi_redundancy_class, current_expression->redundancy_class);
-                                       }
-                               }
-                               current_expression->defined_by_real_occurrence = NULL;
-                       } else {
-                               current_expression->redundancy_class = current_class;
-                               current_class++;
-                               current_expression->defined_by_real_occurrence = NULL;
-                               current_expression->defined_by_phi = NULL;
-                               PUSH_REAL_OCCURRENCE (current_expression);
-                               if (TRACE_SSAPRE) {
-                                       printf ("Assigning class %d to occurrence '", current_expression->redundancy_class);
-                                       print_expression_description (&(current_expression->description));
-                                       printf ("' in bb %d [ID %d]\n", current_bb->cfg_dfn, current_bb->bb->block_num);
-                               }
-                       }
-               }
-               
-               if (current_bb->has_phi_argument) {
-                       if (area->top_of_renaming_stack != NULL) {
-                               current_bb->phi_argument_defined_by_real_occurrence = area->top_of_renaming_stack;
-                               current_bb->phi_argument_class = area->top_of_renaming_stack->redundancy_class;
-                       } else if (area->bb_on_top_of_renaming_stack != NULL) {
-                               current_bb->phi_argument_defined_by_phi = area->bb_on_top_of_renaming_stack;
-                               current_bb->phi_argument_class = area->bb_on_top_of_renaming_stack->phi_redundancy_class;
-                       } else {
-                               current_bb->phi_argument_class = BOTTOM_REDUNDANCY_CLASS;
-                       }
-                       if ((DUMP_SSAPRE) && (current_bb->phi_argument_class != BOTTOM_REDUNDANCY_CLASS)) {
-                               printf ("Temporarily using class %d for PHI argument in bb %d [ID %d]\n",
-                                               current_bb->phi_argument_class, current_bb->cfg_dfn, current_bb->bb->block_num);
-                       }
-               }
-       }
-       if ((area->bb_on_top_of_renaming_stack != NULL) && (area->top_of_renaming_stack == NULL) && (previous_bb->phi_argument_has_real_use == FALSE)) {
-               if (TRACE_SSAPRE) {
-                       printf ("Clearing down safe in PHI %d because of backtracking (previous block is [bb %d [ID %d]])\n",
-                                       area->bb_on_top_of_renaming_stack->phi_redundancy_class, previous_bb->cfg_dfn, previous_bb->bb->block_num);
-               }
-               area->bb_on_top_of_renaming_stack->phi_is_down_safe = FALSE;
-       }
-       area->number_of_classes = current_class;
-       
-       /* This loop is "rename2" */
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi_argument) {
-                       if ((current_bb->phi_argument_left_argument_version != BOTTOM_REDUNDANCY_CLASS) || (current_bb->phi_argument_right_argument_version != BOTTOM_REDUNDANCY_CLASS)) {
-                               if (current_bb->phi_argument_defined_by_real_occurrence != NULL) {
-                                       if (((current_bb->phi_argument_left_argument_version != BOTTOM_REDUNDANCY_CLASS) &&
-                                                       (current_bb->phi_argument_left_argument_version != current_bb->phi_argument_defined_by_real_occurrence->description.left_argument.argument.ssa_variable)) ||
-                                                       ((current_bb->phi_argument_right_argument_version != BOTTOM_REDUNDANCY_CLASS) &&
-                                                       (current_bb->phi_argument_right_argument_version != current_bb->phi_argument_defined_by_real_occurrence->description.right_argument.argument.ssa_variable))) {
-                                               current_bb->phi_argument_class = BOTTOM_REDUNDANCY_CLASS;
-                                       }
-                               } else if (current_bb->phi_argument_defined_by_phi != NULL) {
-                                       MonoSsapreBBInfo *phi_bb = current_bb->phi_argument_defined_by_phi;
-                                       MonoSsapreBBInfo *left_argument_definition_bb = (current_bb->phi_argument_left_argument_version != BOTTOM_REDUNDANCY_CLASS) ?
-                                                       get_bb_info_of_definition (area, current_bb->phi_argument_left_argument_version) : NULL;
-                                       MonoSsapreBBInfo *right_argument_definition_bb = (current_bb->phi_argument_right_argument_version != BOTTOM_REDUNDANCY_CLASS) ?
-                                                       get_bb_info_of_definition (area, current_bb->phi_argument_right_argument_version) : NULL;
-                                       /* See remark in section 5.4 about the dominance relation between PHI */
-                                       /* occurrences and phi definitions */
-                                       gboolean left_bottom_condition = ((left_argument_definition_bb != NULL) && ! ((left_argument_definition_bb != phi_bb) ? dominates (left_argument_definition_bb, phi_bb) :
-                                                       (IS_PHI_DEFINITION (current_bb->phi_argument_left_argument_version) ? TRUE : FALSE)));
-                                       gboolean right_bottom_condition = ((right_argument_definition_bb != NULL) && ! ((right_argument_definition_bb != phi_bb) ? dominates (right_argument_definition_bb, phi_bb) :
-                                                       (IS_PHI_DEFINITION (current_bb->phi_argument_right_argument_version) ? TRUE : FALSE)));
-                                       
-                                       if (left_bottom_condition || right_bottom_condition) {
-                                               current_bb->phi_argument_class = BOTTOM_REDUNDANCY_CLASS;
-                                       }
-                               } else {
-                                       current_bb->phi_argument_class = BOTTOM_REDUNDANCY_CLASS;
-                               }
-                       } else {
-                               current_bb->phi_argument_class = BOTTOM_REDUNDANCY_CLASS;
-                       }
-                       
-                       if (current_bb->phi_argument_class == BOTTOM_REDUNDANCY_CLASS) {
-                               if ((current_bb->phi_argument_defined_by_phi != NULL) && (! current_bb->phi_argument_has_real_use)) {
-                                       if (TRACE_SSAPRE) {
-                                               printf ("Clearing down safe in PHI %d because PHI argument in block [bb %d [ID %d]] is BOTTOM\n",
-                                                               current_bb->phi_argument_defined_by_phi->phi_redundancy_class, current_bb->cfg_dfn, current_bb->bb->block_num);
-                                       }
-                                       current_bb->phi_argument_defined_by_phi->phi_is_down_safe = FALSE;
-                               }
-                               current_bb->phi_argument_has_real_use = FALSE;
-                               
-                               if (DUMP_SSAPRE) {
-                                       printf ("Cleared real use flag in block [bb %d [ID %d]] because phi argument class is now BOTTOM\n",
-                                                       current_bb->cfg_dfn, current_bb->bb->block_num);
-                               }
-                       }
-               }
-       }
-       
-       /* Final quick pass to copy the result of "rename2" into PHI nodes */
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       int i;
-                       for (i = 0; i < current_bb->in_count; i++) {
-                               current_bb->phi_arguments_classes [i] = current_bb->in_bb [i]->phi_argument_class;
-                       }
-               }
-       }
-}
-
-#undef PUSH_REAL_OCCURRENCE
-#undef PUSH_PHI_OCCURRENCE
-
-/*
- * See paper, figure 8
- */
-static void
-reset_down_safe (MonoSsapreBBInfo *phi_argument) {
-       if ((phi_argument->phi_argument_class != BOTTOM_REDUNDANCY_CLASS) && (! phi_argument->phi_argument_has_real_use) && (phi_argument->phi_argument_defined_by_phi != NULL) && (phi_argument->phi_argument_defined_by_phi->phi_is_down_safe)) {
-               int i;
-               MonoSsapreBBInfo *phi = phi_argument->phi_argument_defined_by_phi;
-               phi->phi_is_down_safe = FALSE;
-               for (i = 0; i < phi->in_count; i++) {
-                       reset_down_safe (phi->in_bb [i]);
-               }
-       }
-}
-
-/*
- * See paper, figure 8
- */
-static void
-down_safety (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       if (! current_bb->phi_is_down_safe) {
-                               int i;
-                               for (i = 0; i < current_bb->in_count; i++) {
-                                       reset_down_safe (current_bb->in_bb [i]);
-                               }
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 10
- */
-static void
-reset_can_be_available (MonoSsapreWorkArea *area, MonoSsapreBBInfo *phi) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       
-       if (DUMP_SSAPRE) {
-               printf ("Resetting availability for PHI %d in block [bb %d [ID %d]]\n",
-                               phi->phi_redundancy_class, phi->cfg_dfn, phi->bb->block_num);
-       }
-       
-       phi->phi_can_be_available = FALSE;
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       gboolean phi_is_interesting = FALSE;
-                       int i;
-                       
-                       for (i = 0; i < current_bb->in_count; i++) {
-                               MonoSsapreBBInfo *phi_argument = current_bb->in_bb [i];
-                               if ((phi_argument->phi_argument_class == current_bb->phi_redundancy_class) && (! phi_argument->phi_argument_has_real_use)) {
-                                       phi_is_interesting = TRUE;
-                                       break;
-                               }
-                       }
-                       
-                       if (phi_is_interesting && (! current_bb->phi_is_down_safe) && (current_bb->phi_can_be_available)) {
-                               reset_can_be_available (area, current_bb);
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 10
- */
-static void
-compute_can_be_available (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       if ((! current_bb->phi_is_down_safe) && (current_bb->phi_can_be_available)) {
-                               gboolean phi_is_interesting = FALSE;
-                               int i;
-                               
-                               for (i = 0; i < current_bb->in_count; i++) {
-                                       if (current_bb->phi_arguments_classes [i] == BOTTOM_REDUNDANCY_CLASS) {
-                                               phi_is_interesting = TRUE;
-                                               break;
-                                       }
-                               }
-                               
-                               if (phi_is_interesting) {
-                                       if (DUMP_SSAPRE) {
-                                               printf ("Availability computation working on PHI %d in block [bb %d [ID %d]]\n",
-                                                               current_bb->phi_redundancy_class, current_bb->cfg_dfn, current_bb->bb->block_num);
-                                       }
-                                       reset_can_be_available (area, current_bb);
-                               }
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 10
- */
-static void
-reset_later (MonoSsapreWorkArea *area, MonoSsapreBBInfo *phi) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       
-       if (phi->phi_is_later) {
-               phi->phi_is_later = FALSE;
-               for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-                       if (current_bb->has_phi) {
-                               gboolean phi_is_interesting = FALSE;
-                               int i;
-                               
-                               for (i = 0; i < current_bb->in_count; i++) {
-                                       MonoSsapreBBInfo *phi_argument = current_bb->in_bb [i];
-                                       if (phi_argument->phi_argument_class == current_bb->phi_redundancy_class) {
-                                               phi_is_interesting = TRUE;
-                                               break;
-                                       }
-                               }
-                               
-                               if (phi_is_interesting) {
-                                       reset_later (area, current_bb);
-                               }
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 10
- */
-static void
-compute_later (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       current_bb->phi_is_later = current_bb->phi_can_be_available;
-               }
-       }
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       if (current_bb->phi_is_later) {
-                               gboolean phi_is_interesting = FALSE;
-                               int i;
-                               
-                               for (i = 0; i < current_bb->in_count; i++) {
-                                       MonoSsapreBBInfo *phi_argument = current_bb->in_bb [i];
-                                       if ((phi_argument->phi_argument_class != BOTTOM_REDUNDANCY_CLASS) && (phi_argument->phi_argument_has_real_use)) {
-                                               phi_is_interesting = TRUE;
-                                               break;
-                                       }
-                               }
-                               
-                               if (phi_is_interesting) {
-                                       reset_later (area, current_bb);
-                               }
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 12, function Finalize_1
- */
-static void finalize_availability_and_reload (MonoSsapreWorkArea *area, MonoSsapreAvailabilityTableElement *availability_table) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       MonoSsapreExpressionOccurrence *current_expression = NULL;
-       
-       area->occurrences_scheduled_for_reloading = 0;
-       area->arguments_scheduled_for_insertion = 0;
-       area->dominating_arguments_scheduled_for_insertion = 0;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->has_phi) {
-                       if (current_bb->phi_can_be_available && ! current_bb->phi_is_later) {
-                               availability_table [current_bb->phi_redundancy_class].class_defined_by_phi = current_bb;
-                       }
-               }
-               
-               for (current_expression = current_bb->first_expression_in_bb; (current_expression != NULL) && (current_expression->bb_info == current_bb); current_expression = current_expression->next) {
-                       MonoSsapreBBInfo *defining_bb = availability_table [current_expression->redundancy_class].class_defined_by_phi;
-                       if (defining_bb == NULL && availability_table [current_expression->redundancy_class].class_defined_by_real_occurrence != NULL) {
-                               defining_bb = availability_table [current_expression->redundancy_class].class_defined_by_real_occurrence->bb_info;
-                       }
-                       if (defining_bb != NULL) {
-                               if (! dominates (defining_bb, current_bb)) {
-                                       defining_bb = NULL;
-                               }
-                       }
-                       
-                       if (defining_bb == NULL) {
-                               current_expression->reload = FALSE;
-                               availability_table [current_expression->redundancy_class].class_defined_by_real_occurrence = current_expression;
-                       } else {
-                               current_expression->reload = TRUE;
-                               
-                               area->occurrences_scheduled_for_reloading ++;
-                               
-                               current_expression->defined_by_phi = availability_table [current_expression->redundancy_class].class_defined_by_phi;
-                               current_expression->defined_by_real_occurrence = availability_table [current_expression->redundancy_class].class_defined_by_real_occurrence;
-                       }
-                       
-                       current_expression->save = FALSE;
-               }
-               
-               if (current_bb->has_phi_argument) {
-                       MonoSsapreBBInfo *phi_bb = current_bb->out_bb [0];
-                       if (((phi_bb->phi_can_be_available) && (! phi_bb->phi_is_later)) &&
-                                       ((current_bb->phi_argument_class == BOTTOM_REDUNDANCY_CLASS) ||
-                                       ((current_bb->phi_argument_has_real_use == FALSE) && (current_bb->phi_argument_defined_by_phi != NULL) &&
-                                               (! ((current_bb->phi_argument_defined_by_phi->phi_can_be_available) && (! current_bb->phi_argument_defined_by_phi->phi_is_later)))
-                                       ))) {
-                               current_bb->phi_argument_needs_insert = TRUE;
-                               
-                               area->arguments_scheduled_for_insertion ++;
-                               if (dominates (current_bb, phi_bb)) {
-                                       area->dominating_arguments_scheduled_for_insertion ++;
-                               }
-                               
-                               current_bb->phi_argument_defined_by_real_occurrence = NULL;
-                               current_bb->phi_argument_defined_by_phi = NULL;
-                       } else {
-                               current_bb->phi_argument_needs_insert = FALSE;
-                               if (current_bb->phi_argument_class != BOTTOM_REDUNDANCY_CLASS) {
-                                       current_bb->phi_argument_defined_by_real_occurrence = availability_table [current_bb->phi_argument_class].class_defined_by_real_occurrence;
-                                       current_bb->phi_argument_defined_by_phi = availability_table [current_bb->phi_argument_class].class_defined_by_phi;
-                               }
-                       }
-                       
-                       current_bb->phi_argument_has_been_processed = FALSE;
-               }
-       }
-}
-
-/*
- * See paper, figure 13, function Set_save
- */
-static void set_save (MonoSsapreBBInfo *phi_occurrance, MonoSsapreExpressionOccurrence *real_occurrance) {
-       if (real_occurrance != NULL) {
-               real_occurrance->save = TRUE;
-       } else if (phi_occurrance != NULL) {
-               int i;
-               for (i = 0; i < phi_occurrance->in_count; i++) {
-                       MonoSsapreBBInfo *phi_argument = phi_occurrance->in_bb [i];
-                       if (! phi_argument->phi_argument_has_been_processed) {
-                               phi_argument->phi_argument_has_been_processed = TRUE;
-                               set_save (phi_argument->phi_argument_defined_by_phi, phi_argument->phi_argument_defined_by_real_occurrence);
-                       }
-               }
-       }
-}
-
-/*
- * See paper, figure 13, function Finalize_2 (note that we still don't do
- * extraneous PHI elimination, see function Set_replacement)
- */
-static void finalize_save (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       MonoSsapreExpressionOccurrence *current_expression = NULL;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               for (current_expression = current_bb->first_expression_in_bb; (current_expression != NULL) && (current_expression->bb_info == current_bb); current_expression = current_expression->next) {
-                       if (current_expression->reload) {
-                               set_save (current_expression->defined_by_phi, current_expression->defined_by_real_occurrence);
-                       }
-               }
-               
-               if ((current_bb->has_phi_argument) &&
-                               (! current_bb->phi_argument_needs_insert) &&
-                               (current_bb->phi_argument_class != BOTTOM_REDUNDANCY_CLASS) &&
-                               (current_bb->phi_argument_defined_by_real_occurrence != NULL)) {
-                       current_bb->phi_argument_defined_by_real_occurrence->save = TRUE;
-               }
-       }
-}
-
-#define OP_IS_CHEAP(op) (((op)==CEE_ADD)||((op)==CEE_SUB))
-#define EXPRESSION_HAS_ICONST(d) (((d).left_argument.type==MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT)||((d).right_argument.type==MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT))
-#define EXPRESSION_IS_CHEAP(d) ((OP_IS_CHEAP ((d).opcode))&&(EXPRESSION_HAS_ICONST ((d))))
-#define REDUNDANCY_IS_SMALL(a) (((a)->occurrences_scheduled_for_reloading < 2)&&((a)->dominating_arguments_scheduled_for_insertion < 1))
-
-/*
- * Perform all "finalize" steps.
- * Return TRUE if we must go on with code_motion.
- */
-static gboolean finalize (MonoSsapreWorkArea *area) {
-       MonoSsapreAvailabilityTableElement *availability_table = alloca (sizeof (MonoSsapreAvailabilityTableElement) * (area->number_of_classes));
-       int i;
-       
-       for (i = 0; i < area->number_of_classes; i++) {
-               availability_table[i].class_defined_by_phi = NULL;
-               availability_table[i].class_defined_by_real_occurrence = NULL;
-       }
-       
-       finalize_availability_and_reload (area, availability_table);
-       
-       /* Tuning: if the redundancy is not worth handling, give up */
-       if ((EXPRESSION_IS_CHEAP (area->current_expression->description)) && (REDUNDANCY_IS_SMALL (area))) {
-               return FALSE;
-       } else {
-               finalize_save (area);
-               return TRUE;
-       }
-}
-
-/*
- * Macros that help in creating constants
- */
-#define NEW_INST(dest,op) do { \
-               (dest) = mono_mempool_alloc0 (area->cfg->mempool, sizeof (MonoInst));   \
-               (dest)->opcode = (op);  \
-       } while (0)
-
-#define NEW_I4(dest,val) do {  \
-               NEW_INST ((dest), OP_ICONST); \
-               (dest)->inst_c0 = (val);        \
-               (dest)->type = STACK_I4;        \
-       } while (0)
-
-#define NEW_I8(dest,val) do {  \
-               NEW_INST ((dest), OP_I8CONST); \
-               (dest)->inst_l = (val); \
-               (dest)->type = STACK_I8;        \
-       } while (0)
-
-#define NEW_R4(dest,f) do {    \
-               NEW_INST ((dest), OP_R4CONST); \
-               (dest)->inst_p0 = f;    \
-               (dest)->type = STACK_R8;        \
-       } while (0)
-
-#define NEW_R8(dest,d) do {    \
-               NEW_INST ((dest), OP_R8CONST); \
-               (dest)->inst_p0 = d;    \
-               (dest)->type = STACK_R8;        \
-       } while (0)
-
-/*
- * Create a MonoInst that represents an expression argument
- */
-static MonoInst*
-create_expression_argument (MonoSsapreWorkArea *area, MonoSsapreExpressionArgument *argument) {
-       MonoInst *result;
-       
-       switch (argument->type) {
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT:
-                       return NULL;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE:
-                       return mono_compile_create_var_load (area->cfg, argument->argument.ssa_variable);
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT:
-                       NEW_I4 (result, argument->argument.integer_constant);
-                       return result;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT:
-                       NEW_I8 (result, *(argument->argument.long_constant));
-                       return result;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT:
-                       NEW_R4 (result, argument->argument.float_constant);
-                       return result;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT:
-                       NEW_R8 (result, argument->argument.double_constant);
-                       return result;
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE:
-               case MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY:
-               default:
-                       g_assert_not_reached ();
-                       return NULL;
-       }
-}
-
-/*
- * Create a MonoInst that represents an expression
- */
-static MonoInst*
-create_expression (MonoSsapreWorkArea *area, MonoSsapreExpressionDescription *expression, MonoInst *prototype_occurrence) {
-       MonoInst *result;
-       NEW_INST (result, expression->opcode);
-       *result = *prototype_occurrence;
-       result->inst_left = create_expression_argument (area, &(expression->left_argument));
-       result->inst_right = create_expression_argument (area, &(expression->right_argument));
-       return result;
-}
-
-/*
- * Handles the father expression of a MonoInst that has been turned
- * into a load (eventually inserting it into the worklist).
- * Assumes "current_expression->father_in_tree != NULL".
- */
-static void
-handle_father_expression (MonoSsapreWorkArea *area, MonoSsapreExpressionOccurrence *current_expression, MonoInst *previous_tree) {
-       if (DUMP_SSAPRE) {
-               printf ("After reload, father expression becomes ");
-               mono_print_tree_nl (current_expression->father_in_tree->father_occurrence);
-       }
-       
-       analyze_expression (current_expression->father_in_tree->father_occurrence, &(area->current_occurrence->description));
-       if ((area->current_occurrence->description.opcode != 0) &&
-                       (area->current_occurrence->description.left_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY) &&
-                       (area->current_occurrence->description.right_argument.type != MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY)) {
-               area->current_occurrence->occurrence = current_expression->father_in_tree->father_occurrence;
-               area->current_occurrence->previous_tree = previous_tree;
-               area->current_occurrence->father_in_tree = current_expression->father_in_tree->grand_father;
-               area->current_occurrence->bb_info = current_expression->bb_info;
-               area->current_occurrence->is_first_in_bb = FALSE;
-               area->current_occurrence->is_last_in_bb = FALSE;
-               add_occurrence_to_worklist (area);
-       }
-}
-
-/*
- * See paper, section 3.6
- */
-static void code_motion (MonoSsapreWorkArea *area) {
-       MonoSsapreBBInfo *current_bb = NULL;
-       MonoSsapreExpressionOccurrence *current_expression = NULL;
-       gssize original_variable_index = BOTTOM_REDUNDANCY_CLASS;
-       MonoInst prototype_occurrence;
-       prototype_occurrence.opcode = 0;
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {       
-               if ((current_bb->has_phi) && (current_bb->phi_can_be_available && ! current_bb->phi_is_later)) {
-                       MonoInst *new_var = mono_compile_create_var (area->cfg, area->current_expression->type, OP_LOCAL);
-                       current_bb->phi_variable_index = new_var->inst_c0;
-                       if (original_variable_index == BOTTOM_REDUNDANCY_CLASS) {
-                               original_variable_index = new_var->inst_c0;
-                       }
-                       MONO_VARINFO (area->cfg, new_var->inst_c0)->reg = original_variable_index;
-                       MONO_VARINFO (area->cfg, new_var->inst_c0)->def_bb = current_bb->bb;
-               } else {
-                       current_bb->phi_variable_index = BOTTOM_REDUNDANCY_CLASS;
-               }
-               
-               for (current_expression = current_bb->first_expression_in_bb; (current_expression != NULL) && (current_expression->bb_info == current_bb); current_expression = current_expression->next) {
-                       if (prototype_occurrence.opcode == 0) {
-                               prototype_occurrence = *(current_expression->occurrence);
-                       }
-                       if (current_expression->save) {
-                               MonoInst *new_var = mono_compile_create_var (area->cfg, area->current_expression->type, OP_LOCAL);
-                               current_expression->variable_index = new_var->inst_c0;
-                               if (original_variable_index == BOTTOM_REDUNDANCY_CLASS) {
-                                       original_variable_index = new_var->inst_c0;
-                               }
-                               MONO_VARINFO (area->cfg, new_var->inst_c0)->reg = original_variable_index;
-                               MONO_VARINFO (area->cfg, new_var->inst_c0)->def_bb = current_bb->bb;
-                       } else {
-                               current_expression->variable_index = BOTTOM_REDUNDANCY_CLASS;
-                       }
-               }
-               
-               if ((current_bb->has_phi_argument) && (current_bb->phi_argument_needs_insert)) {
-                       MonoInst *new_var = mono_compile_create_var (area->cfg, area->current_expression->type, OP_LOCAL);
-                       current_bb->phi_argument_variable_index = new_var->inst_c0;
-                       if (original_variable_index == BOTTOM_REDUNDANCY_CLASS) {
-                               original_variable_index = new_var->inst_c0;
-                       }
-                       MONO_VARINFO (area->cfg, new_var->inst_c0)->reg = original_variable_index;
-                       MONO_VARINFO (area->cfg, new_var->inst_c0)->def_bb = current_bb->bb;
-               } else {
-                       current_bb->phi_argument_variable_index = BOTTOM_REDUNDANCY_CLASS;
-               }
-       }
-       
-       for (current_bb = area->first_interesting_bb; current_bb != NULL; current_bb = current_bb->next_interesting_bb) {
-               if (current_bb->phi_variable_index != BOTTOM_REDUNDANCY_CLASS) {
-                       MonoInst *phi;
-                       MonoInst *store;
-                       int in_bb;
-                       
-                       NEW_INST (phi, OP_PHI);
-                       phi->inst_c0 = MONO_VARINFO (area->cfg, current_bb->phi_variable_index)->reg;
-                       phi->inst_phi_args = mono_mempool_alloc (area->cfg->mempool, (sizeof (int) * ((current_bb->in_count) + 1)));
-                       phi->inst_phi_args [0] = current_bb->in_count;
-                       for (in_bb = 0; in_bb < current_bb->in_count; in_bb++) {
-                               gssize phi_argument_variable_index = current_bb->in_bb [in_bb]->phi_argument_variable_index;
-                               if (phi_argument_variable_index == BOTTOM_REDUNDANCY_CLASS) {
-                                       MonoSsapreBBInfo *phi_argument_bb = current_bb->in_bb [in_bb];
-                                       if (phi_argument_bb->phi_argument_defined_by_phi !=NULL) {
-                                               phi_argument_variable_index = phi_argument_bb->phi_argument_defined_by_phi->phi_variable_index;
-                                       } else if (phi_argument_bb->phi_argument_defined_by_real_occurrence !=NULL) {
-                                               phi_argument_variable_index = phi_argument_bb->phi_argument_defined_by_real_occurrence->variable_index;
-                                       } else {
-                                               g_assert_not_reached ();
-                                       }
-                               }
-                               phi->inst_phi_args [in_bb + 1] = phi_argument_variable_index;
-                       }
-                       store = mono_compile_create_var_store (area->cfg, current_bb->phi_variable_index, phi);
-                       if (current_bb->phi_insertion_point != NULL) {
-                               store->next = current_bb->phi_insertion_point->next;
-                               current_bb->phi_insertion_point->next = store;
-                       } else {
-                               store->next = current_bb->bb->code;
-                               current_bb->bb->code = store;
-                       }
-                       MONO_VARINFO (area->cfg, current_bb->phi_variable_index)->def = store;
-                       current_bb->phi_insertion_point = store;
-                       
-                       area->added_phis ++;
-               }
-               
-               for (current_expression = current_bb->first_expression_in_bb; (current_expression != NULL) && (current_expression->bb_info == current_bb); current_expression = current_expression->next) {
-                       gboolean altered = FALSE;
-                       if (current_expression->save) {
-                               MonoInst *store;
-                               MonoInst *moved_expression = mono_mempool_alloc (area->cfg->mempool, sizeof (MonoInst));
-                               *moved_expression = *(current_expression->occurrence);
-                               store = mono_compile_create_var_store (area->cfg, current_expression->variable_index, moved_expression);
-                               if (current_expression->previous_tree != NULL) {
-                                       store->next = current_expression->previous_tree->next;
-                                       current_expression->previous_tree->next = store;
-                               } else {
-                                       store->next = current_bb->bb->code;
-                                       current_bb->bb->code = store;
-                               }
-                               MONO_VARINFO (area->cfg, current_expression->variable_index)->def = store;
-                               mono_compile_make_var_load (area->cfg, current_expression->occurrence, current_expression->variable_index);
-                               if (current_expression->father_in_tree != NULL) {
-                                       handle_father_expression (area, current_expression, store);
-                               }
-                               
-                               area->saved_occurrences ++;
-                               altered = TRUE;
-                       }
-                       if (current_expression->reload) {
-                               gssize variable_index;
-                               if (current_expression->defined_by_phi != NULL) {
-                                       variable_index = current_expression->defined_by_phi->phi_variable_index;
-                               } else if (current_expression->defined_by_real_occurrence != NULL) {
-                                       variable_index = current_expression->defined_by_real_occurrence->variable_index;
-                               } else {
-                                       variable_index = BOTTOM_REDUNDANCY_CLASS;
-                                       g_assert_not_reached ();
-                               }
-                               mono_compile_make_var_load (area->cfg, current_expression->occurrence, variable_index);
-                               if (current_expression->father_in_tree != NULL) {
-                                       handle_father_expression (area, current_expression, current_expression->previous_tree);
-                               }
-                               
-                               area->reloaded_occurrences ++;
-                               altered = TRUE;
-                       }
-                       if (! altered) {
-                               area->unaltered_occurrences ++;
-                       }
-               }
-               
-               if (current_bb->phi_argument_variable_index != BOTTOM_REDUNDANCY_CLASS) {
-                       MonoSsapreExpressionDescription expression_description;
-                       MonoInst *inserted_expression;
-                       MonoInst *store;
-                       
-                       expression_description = area->current_expression->description;
-                       if (expression_description.left_argument.type == MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE) {
-                               expression_description.left_argument.argument.ssa_variable = current_bb->phi_argument_left_argument_version;
-                               expression_description.left_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE;
-                       }
-                       if (expression_description.right_argument.type == MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE) {
-                               expression_description.right_argument.argument.ssa_variable = current_bb->phi_argument_right_argument_version;
-                               expression_description.right_argument.type = MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE;
-                       }
-                       
-                       inserted_expression = create_expression (area, &expression_description, &prototype_occurrence);
-                       store = mono_compile_create_var_store (area->cfg, current_bb->phi_argument_variable_index, inserted_expression);
-                       MONO_VARINFO (area->cfg, current_bb->phi_argument_variable_index)->def = store;
-                       store->next = NULL;
-                       mono_add_ins_to_end (current_bb->bb, store);
-                       
-                       area->inserted_occurrences ++;
-               }
-       }
-}
-
-/*
- * Perform all SSAPRE steps for the current expression
- */
-static void
-process_expression (MonoSsapreWorkArea *area) {
-       MonoSsapreExpression *expression = area->current_expression;
-       
-       if (area->cfg->verbose_level >= STATISTICS_LEVEL) {
-               printf ("SSAPRE STARTS PROCESSING EXPRESSION ");
-               print_expression_description (&(expression->description));
-               printf ("\n");
-       }
-       
-       clean_area_infos (area);
-       
-       area->current_expression = expression;
-       phi_insertion (area, expression);
-       renaming_pass (area);
-       
-       if (area->cfg->verbose_level >= TRACE_LEVEL) {
-               printf ("START SUMMARY OF BB INFOS\n");
-               print_bb_infos (area);
-               printf ("END SUMMARY OF BB INFOS\n");
-       }
-       
-       down_safety (area);
-       compute_can_be_available (area);
-       compute_later (area);
-       if (finalize (area)) {
-               code_motion (area);
-       } else {
-               if (area->cfg->verbose_level >= TRACE_LEVEL) {
-                       printf ("SSAPRE CODE MOTION SKIPPED\n");
-               }
-       }
-       
-       
-       if (area->cfg->verbose_level >= DUMP_LEVEL) {
-               printf ("START DUMP OF BB INFOS\n");
-               dump_code (area);
-               printf ("END DUMP OF BB INFOS\n");
-       } else if (area->cfg->verbose_level >= TRACE_LEVEL) {
-               printf ("START SUMMARY OF BB INFOS\n");
-               print_interesting_bb_infos (area);
-               printf ("END SUMMARY OF BB INFOS\n");
-       }
-       
-       if (area->cfg->verbose_level >= STATISTICS_LEVEL) {
-               printf ("STATISTICS: saved_occurrences = %d, reloaded_occurrences = %d, inserted_occurrences = %d, unaltered_occurrences = %d, added_phis = %d\n",
-                       area->saved_occurrences, area->reloaded_occurrences, area->inserted_occurrences, area->unaltered_occurrences, area->added_phis);
-       }
-       
-       if (area->cfg->verbose_level >= TRACE_LEVEL) {
-               printf ("SSAPRE ENDS PROCESSING EXPRESSION ");
-               print_expression_description (&(expression->description));
-               printf ("\n");
-       }
-}
-
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_METHOD)
-static char*
-mono_ssapre_method_name = NULL;
-static gboolean check_ssapre_method_name (MonoCompile *cfg) {
-       if (mono_ssapre_method_name == NULL) {
-               mono_ssapre_method_name = g_getenv ("MONO_SSAPRE_METHOD_NAME");
-       }
-       if (mono_ssapre_method_name != NULL) {
-               char *method_name = mono_method_full_name (cfg->method, TRUE);
-               if (strstr (method_name, mono_ssapre_method_name) != NULL) {
-                       return TRUE;
-               } else {
-                       return FALSE;
-               }
-       } else {
-               return TRUE;
-       }
-}
-#endif
-
-/*
- * Apply SSAPRE to a MonoCompile
- */
-void
-mono_perform_ssapre (MonoCompile *cfg) {
-       MonoSsapreWorkArea area;
-       int dt_dfn, descendants, block, i;
-       
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_METHOD)
-       if (! check_ssapre_method_name (cfg)) return;
-#endif
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
-       area.expression_is_handled_father = FALSE;
-#endif
-       
-       area.cfg = cfg;
-       area.mempool = mono_mempool_new ();
-       
-       area.num_bblocks = cfg->num_bblocks;
-       area.bb_infos = (MonoSsapreBBInfo*) mono_mempool_alloc (area.mempool, sizeof (MonoSsapreBBInfo) * (cfg->num_bblocks));
-       area.bb_infos_in_cfg_dfn_order = (MonoSsapreBBInfo**) mono_mempool_alloc (area.mempool, sizeof (MonoSsapreBBInfo*) * (cfg->num_bblocks));
-       
-       area.sizeof_bb_bitset = mono_bitset_alloc_size (cfg->num_bblocks, 0);
-       area.expression_occurrences_buffer = mono_bitset_mem_new (mono_mempool_alloc (area.mempool, area.sizeof_bb_bitset), area.num_bblocks, 0);
-       area.bb_iteration_buffer = mono_bitset_mem_new (mono_mempool_alloc (area.mempool, area.sizeof_bb_bitset), area.num_bblocks, 0);
-       area.iterated_dfrontier_buffer = mono_bitset_mem_new (mono_mempool_alloc (area.mempool, area.sizeof_bb_bitset), area.num_bblocks, 0);
-       area.left_argument_bb_bitset = mono_bitset_mem_new (mono_mempool_alloc (area.mempool, area.sizeof_bb_bitset), area.num_bblocks, 0);
-       area.right_argument_bb_bitset = mono_bitset_mem_new (mono_mempool_alloc (area.mempool, area.sizeof_bb_bitset), area.num_bblocks, 0);
-       
-       area.worklist = NULL;
-       
-       if (area.cfg->verbose_level >= LOG_LEVEL) {
-               printf ("SSAPRE STARTS PROCESSING METHOD %s\n", mono_method_full_name (cfg->method, TRUE));
-       }
-       if (area.cfg->verbose_level >= DUMP_LEVEL) {
-               mono_print_code (area.cfg, "BEFORE SSAPRE");
-       }
-       
-       area.first_in_queue = NULL;
-       area.last_in_queue = NULL;
-       area.current_occurrence = (MonoSsapreExpressionOccurrence*) mono_mempool_alloc (area.mempool, sizeof (MonoSsapreExpressionOccurrence));
-       dt_dfn = 0;
-       descendants = 0;
-       area.dt_depth = 0;
-       process_bb (&area, cfg->bblocks [0], &dt_dfn, &descendants, 1);
-       for (block = 0; block < area.num_bblocks; block++) {
-               MonoSsapreBBInfo *bb_info = &(area.bb_infos [block]);
-               MonoBasicBlock *bb = bb_info->bb;
-               if (bb->idom != NULL) {
-                       bb_info->idominator = area.bb_infos_in_cfg_dfn_order [bb->idom->dfn];
-               } else {
-                       bb_info->idominator = NULL;
-               }
-               for (i = 0; i < bb->in_count; i++) {
-                       bb_info->in_bb [i] = area.bb_infos_in_cfg_dfn_order [bb->in_bb [i]->dfn];
-               }
-               for (i = 0; i < bb->out_count; i++) {
-                       bb_info->out_bb [i] = area.bb_infos_in_cfg_dfn_order [bb->out_bb [i]->dfn];
-               }
-       }
-       
-       if (area.cfg->verbose_level >= TRACE_LEVEL) {
-               printf ("SSAPRE START WORKLIST\n");
-               print_worklist (area.worklist);
-               printf ("SSAPRE END WORKLIST\n");
-       }
-       
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
-       area.expression_is_handled_father = TRUE;
-#endif
-       for (area.current_expression = area.first_in_queue; area.current_expression != NULL; area.current_expression = area.current_expression->next_in_queue) {
-               process_expression (&area);             
-       }
-       
-       if (area.cfg->verbose_level >= DUMP_LEVEL) {
-               mono_print_code (area.cfg, "AFTER SSAPRE");
-       }
-       if (area.cfg->verbose_level >= TRACE_LEVEL) {
-               printf ("SSAPRE ENDS PROCESSING METHOD %s\n", mono_method_full_name (cfg->method, TRUE));
-       }
-       
-       mono_mempool_destroy (area.mempool);
-}
-
-#endif /* DISABLE_SSA */
-
-#else /* 0 */
-
-void
-mono_perform_ssapre (MonoCompile *cfg)
-{
-}
-
-#endif /* 0 */
diff --git a/mono/mini/ssapre.h b/mono/mini/ssapre.h
deleted file mode 100644 (file)
index 1a4ca55..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * ssapre.h: SSA Partial Redundancy Elimination
- *
- * Author:
- *   Massimiliano Mantione (massi@ximian.com)
- *
- * (C) 2004 Novell, Inc.  http://www.novell.com
- */
-
-#ifndef __MONO_SSAPRE_H__
-#define __MONO_SSAPRE_H__
-
-
-#include "mini.h"
-#include <mono/metadata/mempool.h>
-
-/*
- * Hack to apply SSAPRE only to a given method (invaluable in debugging)
- */
-#define MONO_APPLY_SSAPRE_TO_SINGLE_METHOD 0
-
-/*
- * Hack to apply SSAPRE only to a given expression (invaluable in debugging)
- */
-#define MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION 0
-
-/*
- * All the different kind of arguments we can handle.
- * "ANY" means the argument is unknown or cannot be handled, and "NOT_PRESENT"
- * that the expression does not have this argument (has not "enough" arity).
- */
-typedef enum {
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT,
-       MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT
-} MonoSsapreExpressionArgumentType;
-
-/*
- * A struct representing an expression argument (the used branch in the
- * union depends on the value of the type field).
- */
-typedef struct MonoSsapreExpressionArgument {
-       MonoSsapreExpressionArgumentType type;
-       union {
-               int original_variable;
-               int ssa_variable;
-               int integer_constant;
-               gint64* long_constant;
-               float* float_constant;
-               double* double_constant;
-       } argument;
-} MonoSsapreExpressionArgument;
-
-/*
- * Macros used when comparing expression arguments, which return -1,0 or 1.
- */
-#define MONO_COMPARE_SSAPRE_DIRECT_VALUES(v1,v2) (((v2)>(v1)?(1):((v2)<(v1)?(-1):(0))))
-#define MONO_COMPARE_SSAPRE_POINTER_VALUES(p1,p2) (((*p2)>(*p1)?(1):((*p2)<(*p1)?(-1):(0))))
-
-#define MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENT_VALUES(t,v1,v2) (\
-               (t)==MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE?\
-                       MONO_COMPARE_SSAPRE_DIRECT_VALUES ((v1).original_variable,(v2).original_variable):(\
-               (t)==MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE?\
-                       MONO_COMPARE_SSAPRE_DIRECT_VALUES ((v1).ssa_variable,(v2).ssa_variable):(\
-               (t)==MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT?\
-                       MONO_COMPARE_SSAPRE_DIRECT_VALUES ((v1).integer_constant,(v2).integer_constant):(\
-               (t)==MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT?\
-                       MONO_COMPARE_SSAPRE_POINTER_VALUES ((v1).long_constant,(v2).long_constant):(\
-               (t)==MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT?\
-                       MONO_COMPARE_SSAPRE_POINTER_VALUES ((v1).float_constant,(v2).float_constant):(\
-               (t)==MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT?\
-                       MONO_COMPARE_SSAPRE_POINTER_VALUES ((v1).double_constant,(v2).double_constant):(\
-               0)))))))
-
-#define MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENTS(a1,a2) (\
-               MONO_COMPARE_SSAPRE_DIRECT_VALUES ((a1).type,(a2).type)!=0?\
-                       MONO_COMPARE_SSAPRE_DIRECT_VALUES ((a1).type,(a2).type):\
-               MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENT_VALUES ((a1).type,(a1).argument,(a2).argument) )
-
-
-/*
- * A struct representing an expression, with its opcode and two arguments
- * (if the opcode has arity 1 right_argument is MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT).
- */
-typedef struct MonoSsapreExpressionDescription {
-       guint16 opcode;
-       MonoSsapreExpressionArgument left_argument;
-       MonoSsapreExpressionArgument right_argument;
-} MonoSsapreExpressionDescription;
-
-/*
- * Macro that compares two expression descriptions (returns -1, 0 or 1).
- */
-#define MONO_COMPARE_SSAPRE_EXPRESSION_DESCRIPTIONS(d1,d2) (\
-               MONO_COMPARE_SSAPRE_DIRECT_VALUES ((d1).opcode,(d2).opcode)!=0?\
-                       MONO_COMPARE_SSAPRE_DIRECT_VALUES ((d1).opcode,(d2).opcode):(\
-               MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENTS ((d1).left_argument,(d2).left_argument)!=0?\
-                       MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENTS ((d1).left_argument,(d2).left_argument):(\
-               MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENTS ((d1).right_argument,(d2).right_argument)!=0?\
-                       MONO_COMPARE_SSAPRE_EXPRESSION_ARGUMENTS ((d1).right_argument,(d2).right_argument):(\
-               0))))
-
-/*
- * Struct that contains all the information related to a BB.
- * Some of them are taken from the corresponding MonoBasicBlock, some are
- * constant during the compilation of the whole method, others must be
- * recomputed for each expression.
- */
-typedef struct MonoSsapreBBInfo {
-       /* Information constant during the compilation of the whole method: */
-       
-       /* Depth First Number relative to a traversal of the dominator tree */
-       gint32 dt_dfn;
-       /* Depth First Number relative to a traversal of the CFG */
-       gint32 cfg_dfn;
-       /* Number of descendants in the dominator tree (is equal to the number of strictly dominated BBs) */
-       int dt_descendants;
-       /* In and out count (taken from the corresponding MonoBasicBlock) */
-       gint16 in_count, out_count;
-       /* Idominator (taken from the corresponding MonoBasicBlock, but pointing */
-       /* to the MonoSsapreBBInfo for convenience) */
-       struct MonoSsapreBBInfo *idominator;
-       /* In and out BBs (taken from the corresponding MonoBasicBlock, but pointing */
-       /* to the MonoSsapreBBInfo for convenience) */
-       struct MonoSsapreBBInfo **in_bb;
-       struct MonoSsapreBBInfo **out_bb;
-       /* Dominance frontier (taken from the corresponding MonoBasicBlock) */
-       MonoBitSet *dfrontier;
-       
-       /* MonoInst where new phi definitions must be added in the BB */
-       /* (the last existing phi definition, or NULL if there is none) */
-       MonoInst *phi_insertion_point;
-       
-       /* Information recomputed during the analysis of each expression: */
-       
-       /* True if the whole BB subtree in the dominator tree is "covered" with */
-       /* BBs marked "interesting" (a BB where this is false cannot be down */
-       /* safe, since there would be a path to exit with no occurrence at all). */
-       /* A more formal way of stating this is that on the DT there is no path */
-       /* from this BB to any leaf that does not meet an interesting BB */
-       gboolean dt_covered_by_interesting_BBs;
-       
-       /* True if this BB has a PHI occurrence */
-       gboolean has_phi;
-       /* True if this PHI defines a real occurrence */
-       gboolean phi_defines_a_real_occurrence;
-       /* True if this PHI is down safe */
-       gboolean phi_is_down_safe;
-       /* True if this PHI can be available */
-       gboolean phi_can_be_available;
-       /* True if this PHI is "later" */
-       gboolean phi_is_later;
-       /* The PHI class number */
-       int phi_redundancy_class;
-       /* The index of this PHI in the cfg->vars array */
-       int phi_variable_index;
-       /* Array of the class numbers of the PHI arguments (has "in_count" elements) */
-       int *phi_arguments_classes;
-       
-       /* True if this BB has a PHI argument */
-       gboolean has_phi_argument;
-       /* True if this PHI argument "has real use" */
-       gboolean phi_argument_has_real_use;
-       /* True if this PHI argument needs the insertion of a new occurrence */
-       gboolean phi_argument_needs_insert;
-       /* True if this PHI argument has been processed (see "set_save") */
-       gboolean phi_argument_has_been_processed;
-       /* The PHI argument class number */
-       int phi_argument_class;
-       /* The index of this PHI argument in the cfg->vars array */
-       int phi_argument_variable_index;
-       /* Points to the real occurrence defining this PHI argument (NULL otherwise) */
-       struct MonoSsapreExpressionOccurrence *phi_argument_defined_by_real_occurrence;
-       /* Points to the BB containing the PHI defining this PHI argument (NULL otherwise) */
-       struct MonoSsapreBBInfo *phi_argument_defined_by_phi;
-       /* Variable version of the left argument og the PHI argument "expected" at */
-       /* the PHI (or BOTTOM_REDUNDANCY_CLASS otherwise), see "renaming_pass" */
-       int phi_argument_left_argument_version;
-       /* As above, but for the right argument */
-       int phi_argument_right_argument_version;
-       
-       /* The first real occurrence in this BB (NULL if there is none) */
-       struct MonoSsapreExpressionOccurrence *first_expression_in_bb;
-       /* Next BB which has either a real occurrence, a PHI or a PHI argument */
-       /* (NULL if there is none, BBs are in dominator tree depth first preorder) */
-       struct MonoSsapreBBInfo *next_interesting_bb;
-       
-       /* Used in maintaining the renaming stack */
-       struct MonoSsapreBBInfo *next_in_renaming_stack;
-       struct MonoSsapreExpressionOccurrence *top_of_local_renaming_stack;
-       
-       /* MonoBasicBlock representing this BB in the CFG (this is obviously constant) */
-       MonoBasicBlock *bb;
-} MonoSsapreBBInfo;
-
-
-/*
- * The father of an occurrence in the tree of MonoInst.
- * (needed just because a MonoInst cannot point to its father)
- */
-typedef struct MonoSsapreFatherExpression {
-       /* The father occurrence */
-       MonoInst *father_occurrence;
-       /* The MonoSsapreFatherExpression node of the "grand father" */
-       struct MonoSsapreFatherExpression *grand_father;
-} MonoSsapreFatherExpression;
-
-/*
- * A "real" occurrence.
- */
-typedef struct MonoSsapreExpressionOccurrence {
-       /* The occurrence in the CFG */
-       MonoInst *occurrence;
-       /* The "father" of this occurrence in the inst tree (if the occurrence is */
-       /* part of a compound expression, otherwise it is NULL) */
-       MonoSsapreFatherExpression *father_in_tree;
-       /* The tree just before the occurrence in the CFG (if the occurrence must */
-       /* saved into a temporary, the definition will be placed just after that tree) */
-       MonoInst *previous_tree;
-       /* The BB where this occurrence is found */
-       MonoSsapreBBInfo *bb_info;
-       /* The description of the occurrence */
-       MonoSsapreExpressionDescription description;
-       /* Next occurrence of this expression */
-       struct MonoSsapreExpressionOccurrence *next;
-       /* Previous occurrence of this expression */
-       struct MonoSsapreExpressionOccurrence *previous;
-       /* True if this occurrence is the first in its BB */
-       gboolean is_first_in_bb;
-       /* True if this occurrence is the last in its BB */
-       gboolean is_last_in_bb;
-       /* "reload" flag (see "finalize") */
-       gboolean reload;
-       /* "save" flag (see "finalize") */
-       gboolean save;
-       
-       /* Used in maintaining the renaming stack */
-       struct MonoSsapreExpressionOccurrence *next_in_renaming_stack;
-       
-       /* Class number of this occurrence */
-       int redundancy_class;
-       /* The index of the temporary of this occurrence in the cfg->vars array */
-       int variable_index;
-       /* Points to the real occurrence defining this occurrence (NULL otherwise) */
-       struct MonoSsapreExpressionOccurrence *defined_by_real_occurrence;
-       /* Points to the BB containing the PHI defining this occurrence (NULL otherwise) */
-       struct MonoSsapreBBInfo *defined_by_phi;
-} MonoSsapreExpressionOccurrence;
-
-
-/*
- * An expression to be processed (in the worklist).
- */
-typedef struct MonoSsapreExpression {
-       /* The description of the expression */
-       MonoSsapreExpressionDescription description;
-       /* The type to use when creating values of this expression */
-       MonoType *type;
-       /* The list of expression occurrences */
-       MonoSsapreExpressionOccurrence *occurrences;
-       /* The last expression occurrence in the list */
-       MonoSsapreExpressionOccurrence *last_occurrence;
-       
-       /* Used in maintaining the worklist (an autobalancing binary tree) */
-       struct MonoSsapreExpression *father;
-       struct MonoSsapreExpression *previous;
-       struct MonoSsapreExpression *next;
-       int tree_size;
-       
-       /* Next expression to be processed in the worklist */
-       struct MonoSsapreExpression *next_in_queue;     
-} MonoSsapreExpression;
-
-/*
- * Macros used to maintain the worklist
- */
-#define MONO_SSAPRE_GOTO_FIRST_EXPRESSION(e) do{\
-               while ((e)->previous != NULL) (e) = (e)->previous;\
-       } while (0)
-#define MONO_SSAPRE_REMOVE_FIRST_EXPRESSION(e) do{\
-               if ((e)->father != NULL) {\
-                       (e)->father->previous = (e)->next;\
-               }\
-       } while (0)
-#define MONO_SSAPRE_GOTO_LAST_EXPRESSION(e) do{\
-               while ((e)->next != NULL) (e) = (e)->next;\
-       } while (0)
-#define MONO_SSAPRE_REMOVE_LAST_EXPRESSION(e) do{\
-               if ((e)->father != NULL) {\
-                       (e)->father->next = (e)->previous;\
-               }\
-       } while (0)
-
-#define MONO_SSAPRE_MAX_TREE_DEPTH(size,depth) do{\
-               unsigned __mask__ = ~1;\
-               (depth) = 1;\
-               while (((size)&__mask__)!=0) {\
-                       __mask__ <<= 1;\
-                       (depth)++;\
-               }\
-       } while (0)
-
-#define MONO_SSAPRE_ADD_EXPRESSION_OCCURRANCE(e,o) do{\
-               if ((e)->occurrences == NULL) {\
-                       (e)->occurrences = (o);\
-               } else {\
-                       (e)->last_occurrence->next = (o);\
-               }\
-               (o)->next = NULL;\
-               (o)->previous = (e)->last_occurrence;\
-               (e)->last_occurrence = (o);\
-       } while (0)
-#define MONO_SSAPRE_REMOVE_EXPRESSION_OCCURRANCE(e,o) do{\
-               if ((e)->occurrences == (o)) {\
-                       (e)->occurrences = (o)->next;\
-               }\
-               if ((e)->last_occurrence == (o)) {\
-                       (e)->last_occurrence = (o)->previous;\
-               }\
-               if ((o)->previous != NULL) {\
-                       (o)->previous->next = (o)->next;\
-               }\
-               if ((o)->next != NULL) {\
-                       (o)->next->previous = (o)->previous;\
-               }\
-               (o)->next = NULL;\
-               (o)->previous = NULL;\
-       } while (0)
-
-
-/*
- * Availability table element (see "finalize"), one for each redundancy class
- */
-typedef struct MonoSsapreAvailabilityTableElement {
-       /* Points to the real occurrence defining this redundancy class (NULL otherwise) */
-       struct MonoSsapreExpressionOccurrence *class_defined_by_real_occurrence;
-       /* Points to the BB containing the PHI defining this redundancy class (NULL otherwise) */
-       struct MonoSsapreBBInfo *class_defined_by_phi;
-} MonoSsapreAvailabilityTableElement;
-
-/*
- * The "main" work area for the algorithm.
- */
-typedef struct MonoSsapreWorkArea {
-       /* The CFG */
-       MonoCompile *cfg;
-       /* The SSAPRE specific mempool */
-       MonoMemPool *mempool;
-       
-       /* Number of BBs in the CFG (from cfg) */
-       int num_bblocks;
-       /* BB information, in dominator tree depth first preorder */
-       MonoSsapreBBInfo *bb_infos;
-       /* Pointers to BB information, in CFG depth first preorder */
-       MonoSsapreBBInfo **bb_infos_in_cfg_dfn_order;
-       
-       /* Number of variables in the CFG */
-       int num_vars;
-       /* Size of bitset for BBs */
-       int sizeof_bb_bitset;
-       /* Various bitsets used when working with iterated dfrontiers */
-       MonoBitSet *expression_occurrences_buffer;
-       MonoBitSet *bb_iteration_buffer;
-       MonoBitSet *iterated_dfrontier_buffer;
-       MonoBitSet *left_argument_bb_bitset;
-       MonoBitSet *right_argument_bb_bitset;
-       
-       /* The depth of the dominator tree */
-       int dt_depth;
-       
-       /* The expression worklist */
-       MonoSsapreExpression *worklist;
-       
-       /* The expression queue head */
-       MonoSsapreExpression *first_in_queue;
-       /* The expression queue tail */
-       MonoSsapreExpression *last_in_queue;
-       
-       /* The expression being processed */
-       MonoSsapreExpression *current_expression;
-       /* The expression being allocated */
-       MonoSsapreExpressionOccurrence *current_occurrence;
-       
-       /* The BB on top of the renaming stack (if "top_of_renaming_stack" is NULL */
-       /* but this is not, then the top of the stack is the PHI in this BB) */
-       struct MonoSsapreBBInfo *bb_on_top_of_renaming_stack;
-       /* The top of the renaming stack */
-       struct MonoSsapreExpressionOccurrence *top_of_renaming_stack;
-       
-       /* The head of the list of "interesting" BBs */
-       struct MonoSsapreBBInfo *first_interesting_bb;
-       
-       /* The number of generated class numbers */
-       int number_of_classes;
-       
-       /* The number of occurrences scheduled for reloading/insertion */
-       /* (used to decide if the redundancy is worth eliminating) */
-       int occurrences_scheduled_for_reloading;
-       int arguments_scheduled_for_insertion;
-       int dominating_arguments_scheduled_for_insertion;
-       
-       /* Statistics fields (per expression)  */
-       int saved_occurrences;
-       int reloaded_occurrences;
-       int inserted_occurrences;
-       int unaltered_occurrences;
-       int added_phis;
-       
-#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
-       gboolean expression_is_handled_father;
-#endif
-} MonoSsapreWorkArea;
-
-
-#endif /* __MONO_SSAPRE_H__ */
old mode 100755 (executable)
new mode 100644 (file)
index 6bf8307..22e66ac
@@ -701,11 +701,9 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        mono_arch_flush_icache (buf, code - buf);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info) {
-               tramp_name = mono_get_generic_trampoline_name (tramp_type);
-               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
-               g_free (tramp_name);
-       }
+       tramp_name = mono_get_generic_trampoline_name (tramp_type);
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+       g_free (tramp_name);
 
        return buf;
 }
@@ -724,8 +722,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info)
-               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
+       *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -895,11 +892,9 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
-               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
-               g_free (name);
-       }
+       char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+       *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+       g_free (name);
 
        return buf;
 }
@@ -948,8 +943,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1105,12 +1099,10 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean is_v4,
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_MONITOR, NULL);
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               if (is_v4)
-                       *info = mono_tramp_info_create ("monitor_enter_v4_trampoline", buf, code - buf, ji, unwind_ops);
-               else
-                       *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
-       }
+       if (is_v4)
+               *info = mono_tramp_info_create ("monitor_enter_v4_trampoline", buf, code - buf, ji, unwind_ops);
+       else
+               *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1121,7 +1113,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        guint8 *tramp;
        guint8 *code, *buf;
        guint8 *jump_obj_null, *jump_have_waiters, *jump_sync_null, *jump_not_owned, *jump_cmpxchg_failed;
-       guint8 *jump_next;
+       guint8 *jump_next, *jump_sync_thin_hash = NULL;
        int tramp_size;
        int status_offset, nest_offset;
        MonoJumpInfo *ji = NULL;
@@ -1159,6 +1151,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
                        /*if bit zero is set it's a thin hash*/
                        /*FIXME use testb encoding*/
                        amd64_test_reg_imm (code, sync_reg, 0x01);
+                       jump_sync_thin_hash = code;
                        amd64_branch8 (code, X86_CC_NE, -1, 1);
 
                        /*clear bits used by the gc*/
@@ -1216,6 +1209,8 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
                amd64_dec_membase_size (code, sync_reg, nest_offset, 4);
                amd64_ret (code);
 
+               if (jump_sync_thin_hash)
+                       x86_patch (jump_sync_thin_hash, code);
                x86_patch (jump_obj_null, code);
                x86_patch (jump_have_waiters, code);
                x86_patch (jump_not_owned, code);
@@ -1241,8 +1236,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_MONITOR, NULL);
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1321,8 +1315,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1466,10 +1459,8 @@ mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gbo
        mono_arch_flush_icache (code, code - buf);
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               const char *tramp_name = single_step ? "sdb_single_step_trampoline" : "sdb_breakpoint_trampoline";
-               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
-       }
+       const char *tramp_name = single_step ? "sdb_single_step_trampoline" : "sdb_breakpoint_trampoline";
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index bbc70fc28a5d4b8887cdabc8ea26a609628ead3c..5122c94f326b2712a00c6d7f95b630d76ee4372f 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "mini.h"
 #include "mini-arm.h"
+#include "debugger-agent.h"
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 
@@ -467,11 +468,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Sanity check */
        g_assert ((code - buf) <= buf_len);
 
-       if (info) {
-               tramp_name = mono_get_generic_trampoline_name (tramp_type);
-               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
-               g_free (tramp_name);
-       }
+       g_assert (info);
+       tramp_name = mono_get_generic_trampoline_name (tramp_type);
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+       g_free (tramp_name);
 
        return buf;
 }
@@ -488,8 +488,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info)
-               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
+       *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -790,11 +789,9 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
-               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
-               g_free (name);
-       }
+       char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+       *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+       g_free (name);
 
        return buf;
 }
@@ -827,8 +824,7 @@ mono_arch_create_general_rgctx_lazy_fetch_trampoline (MonoTrampInfo **info, gboo
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("rgctx_fetch_trampoline_general", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("rgctx_fetch_trampoline_general", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -902,8 +898,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -956,8 +951,86 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
+
+       return buf;
+}
+
+guint8*
+mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gboolean aot)
+{
+       guint8 *buf, *code;
+       GSList *unwind_ops = NULL;
+       MonoJumpInfo *ji = NULL;
+       int frame_size;
+
+       buf = code = mono_global_codeman_reserve (96);
+
+       /*
+        * Construct the MonoContext structure on the stack.
+        */
+
+       frame_size = sizeof (MonoContext);
+       frame_size = ALIGN_TO (frame_size, MONO_ARCH_FRAME_ALIGNMENT);
+       ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, frame_size);
+
+       /* save ip, lr and pc into their correspodings ctx.regs slots. */
+       ARM_STR_IMM (code, ARMREG_IP, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs) + sizeof (mgreg_t) * ARMREG_IP);
+       ARM_STR_IMM (code, ARMREG_LR, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_LR);
+       ARM_STR_IMM (code, ARMREG_LR, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_PC);
+
+       /* save r0..r10 and fp */
+       ARM_ADD_REG_IMM8 (code, ARMREG_IP, ARMREG_SP, MONO_STRUCT_OFFSET (MonoContext, regs));
+       ARM_STM (code, ARMREG_IP, 0x0fff);
+
+       /* now we can update fp. */
+       ARM_MOV_REG_REG (code, ARMREG_FP, ARMREG_SP);
+
+       /* make ctx.esp hold the actual value of sp at the beginning of this method. */
+       ARM_ADD_REG_IMM8 (code, ARMREG_R0, ARMREG_FP, frame_size);
+       ARM_STR_IMM (code, ARMREG_R0, ARMREG_IP, 4 * ARMREG_SP);
+       ARM_STR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_SP);
+
+       /* make ctx.eip hold the address of the call. */
+       ARM_SUB_REG_IMM8 (code, ARMREG_LR, ARMREG_LR, 4);
+       ARM_STR_IMM (code, ARMREG_LR, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, pc));
+
+       /* r0 now points to the MonoContext */
+       ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_FP);
+
+       /* call */
+       // FIXME: AOT
+#ifdef USE_JUMP_TABLES
+       {
+               gpointer *jte = mono_jumptable_add_entry ();
+               code = mono_arm_load_jumptable_entry (code, jte, ARMREG_IP);
+               jte [0] = function;
+       }
+#else
+       ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0);
+       ARM_B (code, 0);
+       if (single_step)
+               *(gpointer*)code = debugger_agent_single_step_from_context;
+       else
+               *(gpointer*)code = debugger_agent_breakpoint_from_context;
+       code += 4;
+#endif
+       ARM_BLX_REG (code, ARMREG_IP);
+
+       /* we're back; save ctx.eip and ctx.esp into the corresponding regs slots. */
+       ARM_LDR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, pc));
+       ARM_STR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_LR);
+       ARM_STR_IMM (code, ARMREG_R0, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs) + 4 * ARMREG_PC);
+
+       /* make ip point to the regs array, then restore everything, including pc. */
+       ARM_ADD_REG_IMM8 (code, ARMREG_IP, ARMREG_FP, MONO_STRUCT_OFFSET (MonoContext, regs));
+       ARM_LDM (code, ARMREG_IP, 0xffff);
+
+       mono_arch_flush_icache (buf, code - buf);
+       mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
+
+       const char *tramp_name = single_step ? "sdb_single_step_trampoline" : "sdb_breakpoint_trampoline";
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1019,6 +1092,13 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert_not_reached ();
        return NULL;
 }
+
+guint8*
+mono_arch_create_sdb_trampoline (gboolean single_step, MonoTrampInfo **info, gboolean aot)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
        
 #endif /* DISABLE_JIT */
 
@@ -1165,8 +1245,7 @@ mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpoint
 gpointer
 mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot)
 {
-       if (info)
-               *info = NULL;
+       *info = NULL;
        return NULL;
 }
 
index 8024cc0ca085cc8f31167ce48a92f9d5b189a6e3..c8f9754ec82552d563a53863db2225d5c9717b76 100644 (file)
@@ -181,8 +181,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        unw_dyn_region_info_t *r_pro;
 
        g_assert (!aot);
-       if (info)
-               *info = NULL;
+       *info = NULL;
 
        /* 
         * Since jump trampolines are not patched, this trampoline is executed every
index 9b80527ae790288c183d35d6511ce47a4d768751..fd8d426af74a028c4cea9449b695545a0603f173 100644 (file)
@@ -304,11 +304,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Sanity check */
        g_assert ((code - buf) <= max_code_len);
 
-       if (info) {
-               tramp_name = mono_get_generic_trampoline_name (tramp_type);
-               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
-               g_free (tramp_name);
-       }
+       g_assert (info);
+       tramp_name = mono_get_generic_trampoline_name (tramp_type);
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+       g_free (tramp_name);
 
        return buf;
 }
index 1b2cc1dfb91f0b043c62cfcef28161ddd6f8880b..9d465f35139e4b02ae49d4bafba33a3375dae482 100644 (file)
@@ -432,11 +432,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Sanity check */
        g_assert ((code - buf) <= size);
 
-       if (info) {
-               tramp_name = mono_get_generic_trampoline_name (tramp_type);
-               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
-               g_free (tramp_name);
-       }
+       g_assert (info);
+       tramp_name = mono_get_generic_trampoline_name (tramp_type);
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+       g_free (tramp_name);
 
        return buf;
 }
@@ -506,7 +505,6 @@ emit_trampoline_jump (guint8 *code, guint8 *tramp)
 gpointer
 mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot)
 {
-#ifdef MONO_ARCH_VTABLE_REG
        guint8 *tramp;
        guint8 *code, *buf;
        guint8 **rgctx_null_jumps;
@@ -607,16 +605,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
-               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
-               g_free (name);
-       }
+       char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+       *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+       g_free (name);
 
        return buf;
-#else
-       g_assert_not_reached ();
-#endif
 }
 
 gpointer
@@ -669,8 +662,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -688,8 +680,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
+       *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
index e6bbe8ccb7eea82ff0a57b974d5da42086ef6408..2b6854849f0dda4d929bcfa4636c251c0f900f92 100644 (file)
 
 #include <mono/metadata/abi-details.h>
 #include <mono/metadata/appdomain.h>
+#include <mono/metadata/gc-internal.h>
 #include <mono/metadata/marshal.h>
-#include <mono/metadata/tabledefs.h>
+#include <mono/metadata/monitor.h>
 #include <mono/metadata/profiler-private.h>
+#include <mono/metadata/tabledefs.h>
 #include <mono/arch/s390x/s390x-codegen.h>
 
 #include "mini.h"
@@ -202,9 +204,8 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info)
-               *info = mono_tramp_info_create ("nullified_class_init_trampoline", 
-                                               buf, code - buf, NULL, NULL);
+       *info = mono_tramp_info_create ("nullified_class_init_trampoline", 
+                                                                       buf, code - buf, NULL, NULL);
 
        return (buf);
 }
@@ -359,7 +360,8 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        else
                s390_lg (buf, s390_r4, 0, STK_BASE, METHOD_SAVE_OFFSET);
 
-       /* Arg 4: trampoline address. Ignore for now */
+       /* Arg 4: trampoline address. */
+       S390_SET (buf, s390_r5, buf);
                
        /* Calculate call address and call the C trampoline. Return value will be in r2 */
        tramp = (guint8*)mono_get_trampoline_func (tramp_type);
@@ -406,11 +408,10 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        mono_arch_flush_icache (code, buf - code);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_GENERICS_TRAMPOLINE, NULL);
        
-       if (info) {
-               tramp_name = mono_get_generic_trampoline_name (tramp_type);
-               *info = mono_tramp_info_create (tramp_name, buf, buf - code, ji, unwind_ops);
-               g_free (tramp_name);
-       }
+       g_assert (info);
+       tramp_name = mono_get_generic_trampoline_name (tramp_type);
+       *info = mono_tramp_info_create (tramp_name, buf, buf - code, ji, unwind_ops);
+       g_free (tramp_name);
 
        /* Sanity check */
        g_assert ((buf - code) <= 512);
@@ -465,7 +466,18 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        /*----------------------------------------------------------*/
        code = buf = mono_domain_code_reserve (domain, SPECIFIC_TRAMPOLINE_SIZE);
 
-       S390_SET  (buf, s390_r1, arg1);
+       switch (tramp_type) {
+       /*
+        * Monitor tramps have the object in r2
+        */
+       case MONO_TRAMPOLINE_MONITOR_ENTER:
+       case MONO_TRAMPOLINE_MONITOR_ENTER_V4:
+       case MONO_TRAMPOLINE_MONITOR_EXIT:
+               s390_lgr (buf, s390_r1, s390_r2);
+               break;
+       default :
+               S390_SET  (buf, s390_r1, arg1);
+       }
        displace = (tramp - buf) / 2;
        s390_jg   (buf, displace);
 
@@ -496,7 +508,6 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
 gpointer
 mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot)
 {
-#ifdef MONO_ARCH_VTABLE_REG
        guint8 *tramp;
        guint8 *code, *buf;
        guint8 **rgctx_null_jumps;
@@ -592,17 +603,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
-               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
-               g_free (name);
-       }
+       char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+       *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+       g_free (name);
 
        return(buf);
-#else
-       g_assert_not_reached ();
-#endif
-       return(NULL);
 }      
 
 /*========================= End of Function ========================*/
@@ -711,8 +716,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -763,10 +767,305 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return(buf);
 }
 
 /*========================= End of Function ========================*/
+
+#ifdef MONO_ARCH_MONITOR_OBJECT_REG
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_create_monitor_enter_trampoline         */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean is_v4, gboolean aot)
+{
+       guint8  *tramp,
+               *code, *buf;
+       gint16  *jump_obj_null, 
+               *jump_sync_null, 
+               *jump_cs_failed, 
+               *jump_other_owner, 
+               *jump_tid, 
+               *jump_sync_thin_hash = NULL,
+               *jump_lock_taken_true = NULL;
+       int tramp_size,
+           status_reg = s390_r0,
+           lock_taken_reg = s390_r1,
+           obj_reg = s390_r2,
+           sync_reg = s390_r3,
+           tid_reg = s390_r4,
+           status_offset,
+           nest_offset;
+       MonoJumpInfo *ji = NULL;
+       GSList *unwind_ops = NULL;
+
+       g_assert (MONO_ARCH_MONITOR_OBJECT_REG == obj_reg);
+#ifdef MONO_ARCH_MONITOR_LOCK_TAKEN_REG
+       g_assert (MONO_ARCH_MONITOR_LOCK_TAKEN_REG == lock_taken_reg);
+#else
+       g_assert (!is_v4);
+#endif
+
+       mono_monitor_threads_sync_members_offset (&status_offset, &nest_offset);
+       g_assert (MONO_THREADS_SYNC_MEMBER_SIZE (status_offset) == sizeof (guint32));
+       g_assert (MONO_THREADS_SYNC_MEMBER_SIZE (nest_offset) == sizeof (guint32));
+       status_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (status_offset);
+       nest_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (nest_offset);
+
+       tramp_size = 160;
+
+       code = buf = mono_global_codeman_reserve (tramp_size);
+
+       unwind_ops = mono_arch_get_cie_program ();
+
+       if (mono_thread_get_tls_offset () != -1) {
+               /* MonoObject* obj is in obj_reg */
+               /* is obj null? */
+               s390_ltgr (code, obj_reg, obj_reg);
+               /* if yes, jump to actual trampoline */
+               s390_jz (code, 0); CODEPTR(code, jump_obj_null);
+
+               if (is_v4) {
+                       s390_cli (code, lock_taken_reg, 0, 1);
+                       /* if *lock_taken is 1, jump to actual trampoline */
+                       s390_je (code, 0); CODEPTR(code, jump_lock_taken_true);
+               }
+
+               /* load obj->synchronization to sync_reg */
+               s390_lg (code, sync_reg, 0, obj_reg, MONO_STRUCT_OFFSET (MonoObject, synchronisation));
+
+               if (mono_gc_is_moving ()) {
+                       /*if bit zero is set it's a thin hash*/
+                       s390_tmll (code, sync_reg, 1);
+                       s390_jo  (code, 0); CODEPTR(code, jump_sync_thin_hash);
+
+                       /* Clear bits used by the gc */
+                       s390_nill (code, sync_reg, ~0x3);
+               }
+
+               /* is synchronization null? */
+               s390_ltgr (code, sync_reg, sync_reg);
+               /* if yes, jump to actual trampoline */
+               s390_jz (code, 0); CODEPTR(code, jump_sync_null);
+
+               /* load MonoInternalThread* into tid_reg */
+               s390_ear (code, s390_r5, 0);
+               s390_sllg(code, s390_r5, s390_r5, 0, 32);
+               s390_ear (code, s390_r5, 1);
+               /* load tid */
+               s390_lg  (code, tid_reg, 0, s390_r5, mono_thread_get_tls_offset ());
+               s390_lgf (code, tid_reg, 0, tid_reg, MONO_STRUCT_OFFSET (MonoInternalThread, small_id));
+
+               /* is synchronization->owner free */
+               s390_lgf  (code, status_reg, 0, sync_reg, status_offset);
+               s390_nilf (code, status_reg, OWNER_MASK);
+               /* if not, jump to next case */
+               s390_jnz  (code, 0); CODEPTR(code, jump_tid);
+
+               /* if yes, try a compare-exchange with the TID */
+               /* Form new status in tid_reg */
+               s390_xr (code, tid_reg, status_reg);
+               /* compare and exchange */
+               s390_cs (code, status_reg, tid_reg, sync_reg, status_offset);
+               s390_jnz (code, 0); CODEPTR(code, jump_cs_failed);
+               /* if successful, return */
+               if (is_v4)
+                       s390_mvi (code, lock_taken_reg, 0, 1);
+               s390_br (code, s390_r14);
+
+               /* next case: synchronization->owner is not null */
+               PTRSLOT(code, jump_tid);
+               /* is synchronization->owner == TID? */
+               s390_nilf (code, status_reg, OWNER_MASK);
+               s390_cr (code, status_reg, tid_reg);
+               /* if not, jump to actual trampoline */
+               s390_jnz (code, 0); CODEPTR(code, jump_other_owner);
+               /* if yes, increment nest */
+               s390_lgf (code, s390_r5, 0, sync_reg, nest_offset);
+               s390_ahi (code, s390_r5, 1);
+               s390_st  (code, s390_r5, 0, sync_reg, nest_offset);
+               /* return */
+               if (is_v4)
+                       s390_mvi (code, lock_taken_reg, 0, 1);
+               s390_br (code, s390_r14);
+
+               PTRSLOT (code, jump_obj_null);
+               if (jump_sync_thin_hash)
+                       PTRSLOT (code, jump_sync_thin_hash);
+               PTRSLOT (code, jump_sync_null);
+               PTRSLOT (code, jump_cs_failed);
+               PTRSLOT (code, jump_other_owner);
+               if (is_v4)
+                       PTRSLOT (code, jump_lock_taken_true);
+       }
+
+       /* jump to the actual trampoline */
+       if (is_v4)
+               tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_MONITOR_ENTER_V4, mono_get_root_domain (), NULL);
+       else
+               tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_MONITOR_ENTER, mono_get_root_domain (), NULL);
+
+       /* jump to the actual trampoline */
+       S390_SET (code, s390_r1, tramp);
+       s390_br (code, s390_r1);
+
+       mono_arch_flush_icache (code, code - buf);
+       mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_MONITOR, NULL);
+       g_assert (code - buf <= tramp_size);
+
+       if (info) {
+               if (is_v4)
+                       *info = mono_tramp_info_create ("monitor_enter_v4_trampoline", buf, code - buf, ji, unwind_ops);
+               else
+                       *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
+       }
+
+       return buf;
+}
+
+/*========================= End of Function ========================*/
+
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_create_monitor_exit_trampoline          */
+/*                                                                  */
+/* Function    -                                                   */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
+{
+       guint8  *tramp,
+               *code, *buf;
+       gint16  *jump_obj_null, 
+               *jump_have_waiters, 
+               *jump_sync_null, 
+               *jump_not_owned, 
+               *jump_cs_failed,
+               *jump_next,
+               *jump_sync_thin_hash = NULL;
+       int     tramp_size,
+               status_offset, nest_offset;
+       MonoJumpInfo *ji = NULL;
+       GSList *unwind_ops = NULL;
+       int     obj_reg = s390_r2,
+               sync_reg = s390_r3,
+               status_reg = s390_r4;
+
+       g_assert (obj_reg == MONO_ARCH_MONITOR_OBJECT_REG);
+
+       mono_monitor_threads_sync_members_offset (&status_offset, &nest_offset);
+       g_assert (MONO_THREADS_SYNC_MEMBER_SIZE (status_offset) == sizeof (guint32));
+       g_assert (MONO_THREADS_SYNC_MEMBER_SIZE (nest_offset) == sizeof (guint32));
+       status_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (status_offset);
+       nest_offset = MONO_THREADS_SYNC_MEMBER_OFFSET (nest_offset);
+
+       tramp_size = 160;
+
+       code = buf = mono_global_codeman_reserve (tramp_size);
+
+       unwind_ops = mono_arch_get_cie_program ();
+
+       if (mono_thread_get_tls_offset () != -1) {
+               /* MonoObject* obj is in obj_reg */
+               /* is obj null? */
+               s390_ltgr (code, obj_reg, obj_reg);
+               /* if yes, jump to actual trampoline */
+               s390_jz (code, 0); CODEPTR(code, jump_obj_null);
+
+               /* load obj->synchronization to RCX */
+               s390_lg (code, sync_reg, 0, obj_reg, MONO_STRUCT_OFFSET (MonoObject, synchronisation));
+
+               if (mono_gc_is_moving ()) {
+                       /*if bit zero is set it's a thin hash*/
+                       s390_tmll (code, sync_reg, 1);
+                       s390_jo   (code, 0); CODEPTR(code, jump_sync_thin_hash);
+
+                       /* Clear bits used by the gc */
+                       s390_nill (code, sync_reg, ~0x3);
+               }
+
+               /* is synchronization null? */
+               s390_ltgr (code, sync_reg, sync_reg);
+               /* if yes, jump to actual trampoline */
+               s390_jz (code, 0); CODEPTR(code, jump_sync_null);
+
+               /* next case: synchronization is not null */
+               /* load MonoInternalThread* into r5 */
+               s390_ear (code, s390_r5, 0);
+               s390_sllg(code, s390_r5, s390_r5, 0, 32);
+               s390_ear (code, s390_r5, 1);
+               /* load TID into r1 */
+               s390_lg  (code, s390_r1, 0, s390_r5, mono_thread_get_tls_offset ());
+               s390_lgf (code, s390_r1, 0, s390_r1, MONO_STRUCT_OFFSET (MonoInternalThread, small_id));
+               /* is synchronization->owner == TID */
+               s390_lgf (code, status_reg, 0, sync_reg, status_offset);
+               s390_xr  (code, s390_r1, status_reg);
+               s390_tmlh (code, s390_r1, OWNER_MASK);
+               /* if not, jump to actual trampoline */
+               s390_jno (code, 0); CODEPTR(code, jump_not_owned);
+
+               /* next case: synchronization->owner == TID */
+               /* is synchronization->nest == 1 */
+               s390_lgf (code, s390_r0, 0, sync_reg, nest_offset);
+               s390_chi (code, s390_r0, 1);
+               /* if not, jump to next case */
+               s390_jne (code, 0); CODEPTR(code, jump_next);
+               /* if yes, is synchronization->entry_count greater than zero */
+               s390_cfi (code, status_reg, ENTRY_COUNT_WAITERS);
+               /* if not, jump to actual trampoline */
+               s390_jnz (code, 0); CODEPTR(code, jump_have_waiters);
+               /* if yes, try to set synchronization->owner to null and return */
+               /* old status in s390_r0 */
+               s390_lgfr (code, s390_r0, status_reg);
+               /* form new status */
+               s390_nilf (code, status_reg, ENTRY_COUNT_MASK);
+               /* compare and exchange */
+               s390_cs (code, s390_r0, status_reg, sync_reg, status_offset);
+               /* if not successful, jump to actual trampoline */
+               s390_jnz (code, 0); CODEPTR(code, jump_cs_failed);
+               s390_br  (code, s390_r14);
+
+               /* next case: synchronization->nest is not 1 */
+               PTRSLOT (code, jump_next);
+               /* decrease synchronization->nest and return */
+               s390_lgf (code, s390_r0, 0, sync_reg, nest_offset);
+               s390_ahi (code, s390_r0, -1);
+               s390_st  (code, s390_r0, 0, sync_reg, nest_offset);
+               s390_br  (code, s390_r14);
+
+               PTRSLOT (code, jump_obj_null);
+               if (jump_sync_thin_hash)
+                       PTRSLOT (code, jump_sync_thin_hash);
+               PTRSLOT (code, jump_have_waiters);
+               PTRSLOT (code, jump_not_owned);
+               PTRSLOT (code, jump_cs_failed);
+               PTRSLOT (code, jump_sync_null);
+       }
+
+       /* jump to the actual trampoline */
+       tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_MONITOR_EXIT, mono_get_root_domain (), NULL);
+
+       S390_SET (code, s390_r1, tramp);
+       s390_br (code, s390_r1);
+
+       mono_arch_flush_icache (code, code - buf);
+       mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_MONITOR, NULL);
+       g_assert (code - buf <= tramp_size);
+
+       if (info)
+               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
+
+       return buf;
+}
+
+/*========================= End of Function ========================*/
+#endif
index 1288603235a8f34bb2584e1bed38223653d2bd37..56ace7a014f33976b60abd7bc364864ec97e03b1 100644 (file)
@@ -85,8 +85,7 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        gboolean has_caller;
 
        g_assert (!aot);
-       if (info)
-               *info = NULL;
+       *info = NULL;
 
        if (tramp_type == MONO_TRAMPOLINE_JUMP)
                has_caller = FALSE;
@@ -279,8 +278,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 
        mono_arch_flush_icache (buf, code - buf);
 
-       if (info)
-               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
+       *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
index 3b29b4d8ad30bcdef51c9e2aaa8667d0206a3d4f..4724abf8097e9c8ad11f6eae8dfbc6d05158e0b2 100644 (file)
@@ -495,11 +495,9 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        g_assert ((code - buf) <= 256);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info) {
-               tramp_name = mono_get_generic_trampoline_name (tramp_type);
-               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
-               g_free (tramp_name);
-       }
+       tramp_name = mono_get_generic_trampoline_name (tramp_type);
+       *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+       g_free (tramp_name);
 
        return buf;
 }
@@ -518,8 +516,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info)
-               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
+       *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -646,11 +643,9 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info) {
-               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
-               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
-               g_free (name);
-       }
+       char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+       *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+       g_free (name);
 
        return buf;
 }
@@ -692,8 +687,7 @@ mono_arch_create_general_rgctx_lazy_fetch_trampoline (MonoTrampInfo **info, gboo
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("rgctx_fetch_trampoline_general", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("rgctx_fetch_trampoline_general", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -750,8 +744,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        nacl_global_codeman_validate (&buf, tramp_size, &code);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
 
-       if (info)
-               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -931,12 +924,10 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean is_v4,
        nacl_global_codeman_validate (&buf, tramp_size, &code);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_MONITOR, NULL);
 
-       if (info) {
-               if (is_v4)
-                       *info = mono_tramp_info_create ("monitor_enter_v4_trampoline", buf, code - buf, ji, unwind_ops);
-               else
-                       *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
-       }
+       if (is_v4)
+               *info = mono_tramp_info_create ("monitor_enter_v4_trampoline", buf, code - buf, ji, unwind_ops);
+       else
+               *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1071,8 +1062,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_MONITOR, NULL);
 
-       if (info)
-               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1155,8 +1145,7 @@ mono_arch_create_handler_block_trampoline (MonoTrampInfo **info, gboolean aot)
        mono_profiler_code_buffer_new (buf, code - buf, MONO_PROFILER_CODE_BUFFER_HELPER, NULL);
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
+       *info = mono_tramp_info_create ("handler_block_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1215,8 +1204,7 @@ mono_arch_get_gsharedvt_arg_trampoline (MonoDomain *domain, gpointer arg, gpoint
 gpointer
 mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot)
 {
-       if (info)
-               *info = NULL;
+       *info = NULL;
        return NULL;
 }
 
index 6e95ad6e5d520f6d9b72d22106ca81f1c03d43aa..17bf3ad8962d35d90c07c8602049fe59a2b73a9b 100644 (file)
@@ -68,16 +68,11 @@ static int map_hw_reg_to_dwarf_reg [] = {
        72, 73, 74, 75, 76, 77, 78, 79,
 };
 #elif defined (TARGET_X86)
-#ifdef __APPLE__
 /*
- * LLVM seems to generate unwind info where esp is encoded as 5, and ebp as 4, ie see this line:
- *   def ESP : RegisterWithSubRegs<"esp", [SP]>, DwarfRegNum<[-2, 5, 4]>;
- * in lib/Target/X86/X86RegisterInfo.td in the llvm sources.
+ * ebp and esp are swapped:
+ * http://lists.cs.uiuc.edu/pipermail/lldb-dev/2014-January/003101.html
  */
 static int map_hw_reg_to_dwarf_reg [] = { 0, 1, 2, 3, 5, 4, 6, 7, 8 };
-#else
-static int map_hw_reg_to_dwarf_reg [] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
-#endif
 /* + 1 is for IP */
 #define NUM_REGS X86_NREG + 1
 #define DWARF_DATA_ALIGN (-4)
diff --git a/mono/mini/wapihandles.c b/mono/mini/wapihandles.c
deleted file mode 100644 (file)
index 7bda388..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-#include <config.h>
-#include <glib.h>
-
-#include "mini.h"
-
-#if defined(HOST_WIN32) || !defined(HAVE_SYS_IPC_H) || !defined(HAVE_SYS_SEM_H) || (defined(__native_client__) && defined(__GLIBC__)) || defined(DISABLE_SHARED_HANDLES)
-
-int mini_wapi_hps (int argc, char **argv)
-{
-       return 0;
-}
-
-int mini_wapi_semdel (int argc, char **argv)
-{
-       return 0;
-}
-
-int mini_wapi_seminfo (int argc, char **argv)
-{
-       return 0;
-}
-
-#else
-
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/sem.h>
-#include <mono/io-layer/io-layer.h>
-
-/* We're digging into handle internals here... */
-#include <mono/io-layer/handles-private.h>
-#include <mono/io-layer/wapi-private.h>
-#include <mono/io-layer/shared.h>
-#include <mono/io-layer/collection.h>
-
-static const gchar *unused_details (struct _WapiHandleShared *handle);
-static const gchar *unshared_details (struct _WapiHandleShared *handle);
-#if 0
-static const gchar *thread_details (struct _WapiHandleShared *handle);
-#endif
-static const gchar *namedmutex_details (struct _WapiHandleShared *handle);
-static const gchar *namedsem_details (struct _WapiHandleShared *handle);
-static const gchar *namedevent_details (struct _WapiHandleShared *handle);
-
-/* This depends on the ordering of the enum WapiHandleType in
- * io-layer/wapi-private.h
- */
-static const gchar * (*details[])(struct _WapiHandleShared *)=
-{
-       unused_details,
-       unshared_details,               /* file */
-       unshared_details,               /* console */
-       unshared_details,               /* thread */
-       unshared_details,               /* sem */
-       unshared_details,               /* mutex */
-       unshared_details,               /* event */
-       unshared_details,               /* socket */
-       unshared_details,               /* find */
-       unshared_details,       /* process */
-       unshared_details,               /* pipe */
-       namedmutex_details,
-       namedsem_details,
-       namedevent_details,
-       unused_details,
-};
-
-int mini_wapi_hps (int argc, char **argv)
-{
-       guint32 i;
-       guint32 now;
-
-       _wapi_shared_layout = _wapi_shm_attach(WAPI_SHM_DATA);
-       if (_wapi_shared_layout == NULL) {
-               g_error ("Failed to attach shared memory!");
-               exit (-1);
-       }
-
-       _wapi_fileshare_layout = _wapi_shm_attach(WAPI_SHM_FILESHARE);
-       if (_wapi_fileshare_layout == NULL) {
-               g_error ("Failed to attach fileshare shared memory!");
-               exit (-1);
-       }
-       
-       if (argc > 1) {
-               _wapi_shm_semaphores_init ();
-               _wapi_collection_init ();
-               _wapi_handle_collect ();
-       }
-       
-       g_print ("collection: %d sem: 0x%x\n",
-                _wapi_shared_layout->collection_count,
-                _wapi_shared_layout->sem_key);
-       
-       now = (guint32)(time(NULL) & 0xFFFFFFFF);
-       for (i = 0; i < _WAPI_HANDLE_INITIAL_COUNT; i++) {
-               struct _WapiHandleShared *shared;
-               
-               shared = &_wapi_shared_layout->handles[i];
-               if (shared->type != WAPI_HANDLE_UNUSED) {
-                       g_print ("%3x (%3d) [%7s] %4u %s (%s)\n",
-                                i, shared->handle_refs,
-                                _wapi_handle_typename[shared->type],
-                                now - shared->timestamp,
-                                shared->signalled?"Sg":"Un",
-                                details[shared->type](shared));
-               }
-       }
-
-       g_print ("Fileshare hwm: %d\n", _wapi_fileshare_layout->hwm);
-       
-       for (i = 0; i <= _wapi_fileshare_layout->hwm; i++) {
-               struct _WapiFileShare *file_share;
-               
-               file_share = &_wapi_fileshare_layout->share_info[i];
-               if (file_share->handle_refs > 0) {
-                       g_print ("dev: 0x%llx ino: %lld open pid: %d share: 0x%x access: 0x%x refs: %d\n", (long long int)file_share->device, (long long int)file_share->inode, file_share->opened_by_pid, file_share->sharemode, file_share->access, file_share->handle_refs);
-               }
-       }
-       
-       exit (0);
-}
-
-static const gchar *unused_details (struct _WapiHandleShared *handle)
-{
-       return("unused details");
-}
-
-static const gchar *unshared_details (struct _WapiHandleShared *handle)
-{
-       return("unshared details");
-}
-
-#if 0
-static const gchar *thread_details (struct _WapiHandleShared *handle)
-{
-       static gchar buf[80];
-       struct _WapiHandle_thread *thr=&handle->u.thread;
-
-       g_snprintf (buf, sizeof(buf),
-                   "proc: %d, tid: %ld, state: %d, exit: %u, join: %d",
-                   thr->owner_pid, thr->id, thr->state, thr->exitstatus,
-                   thr->joined);
-       
-       return(buf);
-}
-#endif
-
-static const gchar *namedmutex_details (struct _WapiHandleShared *handle)
-{
-       static gchar buf[80];
-       gchar *name;
-       struct _WapiHandle_namedmutex *mut=&handle->u.namedmutex;
-       
-       name = mut->sharedns.name;
-       
-       g_snprintf (buf, sizeof(buf), "[%15s] own: %5d:%5ld, count: %5u",
-                   name==NULL?(gchar *)"":name, mut->pid, mut->tid,
-                   mut->recursion);
-
-       return(buf);
-}
-
-static const gchar *namedsem_details (struct _WapiHandleShared *handle)
-{
-       static gchar buf[80];
-       gchar *name;
-       struct _WapiHandle_namedsem *sem = &handle->u.namedsem;
-       
-       name = sem->sharedns.name;
-       
-       g_snprintf (buf, sizeof(buf), "[%15s] val: %5u, max: %5d",
-                   name == NULL?(gchar *)"":name, sem->val, sem->max);
-
-       return(buf);
-}
-
-static const gchar *namedevent_details (struct _WapiHandleShared *handle)
-{
-       static gchar buf[80];
-       gchar *name;
-       struct _WapiHandle_namedevent *event = &handle->u.namedevent;
-       
-       name = event->sharedns.name;
-       
-       g_snprintf (buf, sizeof(buf), "[%15s] %s count: %5u",
-                   name == NULL?(gchar *)"":name,
-                   event->manual?"Manual":"Auto", event->set_count);
-
-       return(buf);
-}
-
-/* The old handles/semdel.c */
-int mini_wapi_semdel (int argc, char **argv)
-{
-       int sem_id, ret;
-       
-       _wapi_shared_layout = _wapi_shm_attach(WAPI_SHM_DATA);
-       if (_wapi_shared_layout == FALSE ||
-           _wapi_shared_layout->sem_key == 0) {
-               exit (0);
-       }
-
-       sem_id = semget (_wapi_shared_layout->sem_key, _WAPI_SHARED_SEM_COUNT, 0600);
-       if (sem_id != -1) {
-               ret = semctl (sem_id, 0, IPC_RMID);
-               if (ret == -1) {
-                       g_message ("Error deleting semaphore: %s",
-                                  g_strerror (errno));
-               }
-       }
-       
-       exit (0);
-}
-
-static void sem_explain (int sem_id, ushort *vals, int which)
-{
-       pid_t pid;
-       
-       g_print ("%d ", vals[which]);
-       if (vals[which] >= 1) {
-               g_print ("(Unlocked)");
-       } else {
-               pid = semctl (sem_id, which, GETPID);
-               
-               g_print ("(Locked by %d)", pid);
-       }
-       g_print ("\n");
-}
-
-int mini_wapi_seminfo (int argc, char **argv)
-{
-       int sem_id, ret;
-       union semun
-       {
-               int val;
-               struct semid_ds *buf;
-               ushort *array;
-       } arg;
-       ushort vals[_WAPI_SHARED_SEM_COUNT];
-       
-       _wapi_shared_layout = _wapi_shm_attach (WAPI_SHM_DATA);
-       if (_wapi_shared_layout == FALSE ||
-           _wapi_shared_layout->sem_key == 0) {
-               exit (0);
-       }
-       
-       sem_id = semget (_wapi_shared_layout->sem_key, _WAPI_SHARED_SEM_COUNT, 0600);
-       if (sem_id != -1) {
-               g_print ("Getting values for sem: 0x%x\n",
-                        _wapi_shared_layout->sem_key);
-               arg.array = vals;
-               ret = semctl (sem_id, 0, GETALL, arg);
-               if (ret != -1) {
-                       g_print ("Namespace: ");
-                       sem_explain (sem_id, vals, _WAPI_SHARED_SEM_NAMESPACE);
-                       g_print ("Fileshare: ");
-                       sem_explain (sem_id, vals, _WAPI_SHARED_SEM_FILESHARE);
-                       g_print ("Handles: ");
-                       sem_explain (sem_id, vals,
-                                    _WAPI_SHARED_SEM_SHARED_HANDLES);
-                       g_print ("Count lock: ");
-                       sem_explain (sem_id, vals,
-                                    _WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
-                       g_print ("Count: %d\n",
-                                vals[_WAPI_SHARED_SEM_PROCESS_COUNT]);
-               }
-       }
-       
-       exit (0);
-}
-
-#endif
-
index 10f73decb3863798827d05d44d27240e835fde05..e249e6e8e958f6b1f30ebe79f2366115453fc4cb 100644 (file)
@@ -158,15 +158,15 @@ mono_xdebug_init (const char *options)
        unlink ("xdb.s");
        xdebug_fp = fopen ("xdb.s", "w");
        
-       w = img_writer_create (xdebug_fp, FALSE);
+       w = mono_img_writer_create (xdebug_fp, FALSE);
 
-       img_writer_emit_start (w);
+       mono_img_writer_emit_start (w);
 
        xdebug_writer = mono_dwarf_writer_create (w, il_file, 0, TRUE, TRUE);
 
        /* Emit something so the file has a text segment */
-       img_writer_emit_section_change (w, ".text", 0);
-       img_writer_emit_string (w, "");
+       mono_img_writer_emit_section_change (w, ".text", 0);
+       mono_img_writer_emit_string (w, "");
 
        mono_dwarf_writer_emit_base_info (xdebug_writer, "JITted code", mono_unwind_get_cie_program ());
 }
@@ -177,9 +177,9 @@ xdebug_begin_emit (MonoImageWriter **out_w, MonoDwarfWriter **out_dw)
        MonoImageWriter *w;
        MonoDwarfWriter *dw;
 
-       w = img_writer_create (NULL, TRUE);
+       w = mono_img_writer_create (NULL, TRUE);
 
-       img_writer_emit_start (w);
+       mono_img_writer_emit_start (w);
 
        /* This file will contain the IL code for methods which don't have debug info */
        if (!il_file)
@@ -204,11 +204,11 @@ xdebug_end_emit (MonoImageWriter *w, MonoDwarfWriter *dw, MonoMethod *method)
        il_file_line_index = mono_dwarf_writer_get_il_file_line_index (dw);
        mono_dwarf_writer_close (dw);
 
-       img_writer_emit_writeout (w);
+       mono_img_writer_emit_writeout (w);
 
-       img = img_writer_get_output (w, &img_size);
+       img = mono_img_writer_get_output (w, &img_size);
 
-       img_writer_destroy (w);
+       mono_img_writer_destroy (w);
 
        if (FALSE) {
                /* Save the symbol files to help debugging */
@@ -302,14 +302,14 @@ mono_save_xdebug_info (MonoCompile *cfg)
                 * FIXME: This doesn't work when multiple methods are emitted into the same file.
                 */
                sym = get_debug_sym (cfg->jit_info->method, "", xdebug_syms);
-               img_writer_emit_section_change (w, ".text", 0);
+               mono_img_writer_emit_section_change (w, ".text", 0);
                if (!xdebug_text_addr) {
                        xdebug_text_addr = cfg->jit_info->code_start;
-                       img_writer_set_section_addr (w, (gssize)xdebug_text_addr);
+                       mono_img_writer_set_section_addr (w, (gssize)xdebug_text_addr);
                }
-               img_writer_emit_global_with_size (w, sym, cfg->jit_info->code_size, TRUE);
-               img_writer_emit_label (w, sym);
-               img_writer_emit_bytes (w, cfg->jit_info->code_start, cfg->jit_info->code_size);
+               mono_img_writer_emit_global_with_size (w, sym, cfg->jit_info->code_size, TRUE);
+               mono_img_writer_emit_label (w, sym);
+               mono_img_writer_emit_bytes (w, cfg->jit_info->code_start, cfg->jit_info->code_size);
                g_free (sym);
 #endif
                
index 63c62f015b268c91ee1ded40ae302047c199e0b9..115232490c3930eef2241e06b2840690ca67e189 100644 (file)
@@ -18,11 +18,10 @@ if HAVE_VTUNE
 vtune_lib = libmono-profiler-vtune.la
 endif
 
-lib_LTLIBRARIES = libmono-profiler-cov.la libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la $(vtune_lib)
+lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la $(vtune_lib)
 
 if PLATFORM_DARWIN
 libmono_profiler_log_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
-libmono_profiler_cov_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
 endif
 if PLATFORM_ANDROID
 libmono_profiler_log_la_LDFLAGS = -avoid-version
@@ -56,12 +55,8 @@ else
 LIBMONO=$(top_builddir)/mono/mini/libmonosgen-$(API_VER).la
 endif
 
-libmono_profiler_cov_la_SOURCES = mono-cov.c
-libmono_profiler_cov_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
 libmono_profiler_aot_la_SOURCES = mono-profiler-aot.c
 libmono_profiler_aot_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
-#libmono_profiler_logging_la_SOURCES = mono-profiler-logging.c
-#libmono_profiler_logging_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
 libmono_profiler_iomap_la_SOURCES = mono-profiler-iomap.c
 libmono_profiler_iomap_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
 libmono_profiler_log_la_SOURCES = proflog.c
@@ -96,5 +91,5 @@ else
 check-local: testlog
 endif
 
-EXTRA_DIST=utils.c utils.h proflog.h log-profiler.txt perf_event.h \
+EXTRA_DIST=utils.c utils.h proflog.h perf_event.h \
        $(PLOG_TESTS_SRC) ptestrunner.pl
diff --git a/mono/profiler/log-profiler.txt b/mono/profiler/log-profiler.txt
deleted file mode 100644 (file)
index 10140c6..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-# The Mono log profiler
-
-The Mono *log* profiler can be used to collect a lot of information about
-a program running in the Mono runtime. This data can be used (both while the process
-is running and later) to do analyses of the program behaviour, determine
-resource usage, performance issues or even look for particular execution patterns.
-
-This is accomplished by logging the events provided by the Mono runtime through the
-profiling interface and periodically writing them to a file which can be later
-inspected with the command line *mprof-report* program or with a GUI (not developed yet).
-
-The events collected include (among others):
-
-* method enter and leave
-* object allocation
-* garbage collection
-* JIT compilation
-* metadata loading
-* lock contention
-* exceptions
-
-In addition, the profiler can periodically collect info about all the objects
-present in the heap at the end of a garbage collection (this is called heap shot
-and currently implemented only for the sgen garbage collector).
-Another available profiler mode is the *sampling* or *statistical* mode:
-periodically the program is sampled and the information about what the program was
-busy with is saved. This allows to get information about the program behaviour
-without degrading its performance too much (usually less than 10%).
-
-## Basic profiler usage
-
-The simpler way to use the profiler is the following:
-
-`mono --profile=log program.exe`
-
-At the end of the execution the file *output.mlpd* will be found in the current
-directory. A summary report of the data can be printed by running:
-
-`mprof-report output.mlpd`
-
-With this invocation a huge amount of data is collected about the program execution
-and collecting and saving this data can significantly slow down program execution.
-If saving the profiling data is not needed, a report can be generated directly with:
-
-`mono --profile=log:report program.exe`
-
-If the information about allocations is not of interest, it can be excluded:
-
-`mono --profile=log:noalloc program.exe`
-
-On the other hand, if method call timing is not important, while allocations are,
-the needed info can be gathered with:
-
-`mono --profile=log:nocalls program.exe`
-
-You will still be able to inspect information about the sequence of calls that lead
-to each allocation because at each object allocation a stack trace is collected if
-full enter/leave information is not available.
-
-To periodically collect heap shots (and exclude method and allocation events) use the
-following options (making sure you run with the sgen garbage collector):
-
-`mono --gc=sgen --profile=log:heapshot program.exe`
-
-To perform a sampling profiler run, use the *sample* option:
-
-`mono --profile=log:sample program.exe`
-
-## Profiler option documentation
-
-By default the *log* profiler will gather all the events provided by the Mono runtime
-and write them to a file named *output.mlpd*. When no option is specified, it
-is equivalent to using:
-
-`--profile=log:calls,alloc,output=output.mlpd,maxframes=8,calldepth=100`
-
-The following options can be used to modify this default behaviour. Each option
-is separated from the next by a `,` character, with no spaces and all the options
-are included after the *log:* profile module specifier.
-
-* *help*: display concise help info about each available option
-
-* *[no]alloc*: *noalloc* disables collecting object allocation info, *alloc* enables
-it if it was disabled by another option like *heapshot*.
-
-* *[no]calls*: *nocalls* disables collecting method enter and leave events. When this
-option is used at each object allocation and at some other events (like lock contentions
-and exception throws) a stack trace is collected by default. See the *maxframes* option to
-control this behaviour. *calls* enables method enter/leave events if they were disabled
-by another option like *heapshot*.
-
-* *heapshot[=MODE]*: collect heap shot data at each major collection. The frequency of the
-heap shots can be changed with the *MODE* parameter. When this option is used
-allocation events and method enter/leave events are not recorded by default: if they
-are needed, they need to be enabled explicitly.
-The optional parameter *MODE* can modify the default heap shot frequency.
-heapshot can be used multiple times with different modes: in that case a heap shot is
-taken if either of the conditions are met.
-MODE can be one of:
-       * *NUM*ms: perform a heap shot if at least *NUM* milliseconds passed since
-       the last one.
-       * *NUM*gc: perform a heap shot every *NUM* major garbage collections
-       * *ondemand*: perform a heap shot when such a command is sent to the
-       control port
-
-* *sample[=TYPE[/FREQ]]*: collect statistical samples of the program behaviour. The
-default is to collect a 1000 times per second the instruction pointer. This is
-equivalent to the value "cycles/1000" for *TYPE*. On some systems, like with recent
-Linux kernels, it is possible to cause the sampling to happen for other events
-provided by the performance counters of the cpu. In this case, *TYPE* can be one of:
-       * *cycles*: processor cycles
-       * *instr*: executed instructions
-       * *cacherefs*: cache references
-       * *cachemiss*: cache misses
-       * *branches*: executed branches
-       * *branchmiss*: mispredicted branches
-
-* *time=TIMER*: use the TIMER timestamp mode. TIMER can have the following values:
-       * *fast*: a usually faster but possibly more inaccurate timer
-
-* *maxframes=NUM*: when a stack trace needs to be performed, collect *NUM* frames
-at the most. The default is 8.
-
-* *calldepth=NUM*: ignore method enter/leave events when the call chain depth is
-bigger than NUM.
-
-* *zip*: automatically compress the output data in gzip format.
-
-* *output=OUTSPEC*: instead of writing the profiling data to the output.mlpd file,
-substitute *%p* in *OUTSPEC* with the current process id and *%t* with the current
-date and time, then do according to *OUTSPEC*:
-       * if *OUTSPEC* begins with a *|* character, execute the rest as a program
-       and feed the data to its standard input
-       * if *OUTSPEC* begins with a *-* character, use the rest of OUTSPEC as
-       the filename, but force overwrite any existing file by that name
-       * if *OUTSPEC* begins with a *#* character, use the rest of OUTSPEC as a
-       file descriptor and feed the data to it.
-       * otherwise write the data the the named file: note that is a file by that
-       name already exists, a warning is issued and profiling is disabled.
-
-* *report*: the profiling data is sent to mprof-report, which will print a summary
-report. This is equivalent to the option: `output=mprof-report -`. If the *output*
-option is specified as well, the report will be written to the output file instead of
-the console.
-
-* *port=PORT*: specify the tcp/ip port to use for the listening command server.
-Currently not available for windows.
-This server is started for example when heapshot=ondemand is used: it will read
-commands line by line. The following commands are available:
-       * *heapshot*: perform a heapshot as soon as possible
-
-## Analyzing the profile data
-
-Currently there is a command line program (*mprof-report*) to analyze the
-data produced by the profiler. This is ran automatically when the *report*
-profiler option is used.
-Simply run:
-
-`mprof-report output.mlpd`
-
-to see a summary report of the data included in the file.
-
-### Trace information for events
-
-Often it is important for some events, like allocations, lock contention
-and exception throws to know where they happened. Or we may want to see
-what sequence of calls leads to a particular method invocation. To see this
-info invoke mprof-report as follows:
-
-`mprof-report --traces output.mlpd`
-
-The maximum number of methods in each stack trace can be specified with the 
-*--maxframes=NUM* option:
-
-`mprof-report --traces --maxframes=4 output.mlpd`
-
-The stack trace info will be available if method enter/leave events have been
-recorded or if stack trace collection wasn't explicitly disabled with the
-*maxframes=0* profiler option. Note that the profiler will collect up to 8
-frames by default at specific events when the *nocalls* option is used, so
-in that case, if more stack frames are required in mprof-report, a bigger
-value for maxframes when profiling must be used, too.
-
-The *--traces* option also controls the reverse reference feature in the heapshot
-report: for each class it reports how many references to objects of that class
-come from other classes.
-
-### Sort order for methods and allocations
-
-When a list of methods is printed the default sort order is based on the total time
-spent in the method. This time is wall clock time (that is, it includes the time
-spent, for example, in a sleep call, even if actual cpu time would be basically 0).
-Also, if the method has been ran on different threads, the time will be a sum
-of the time used in each thread.
-
-To change the sort order, use the option:
-
-`--method-sort=MODE`
-
-where *MODE* can be:
-
-* *self*: amount of time spent in the method itself and not in its callees
-* *calls*: the number of method invocations
-* *total*: the total time spent in the method.
-
-Object allocation lists are sorted by default depending on the total amount
-of bytes used by each type.
-
-To change the sort order of object allocations, use the option:
-
-`--alloc-sort=MODE`
-
-where *MODE* can be:
-
-* *count*: the number of allocated objects of the given type
-* *bytes*: the total number of bytes used by objects of the given type
-
-### Selecting what data to report
-
-The profiler by default collects data about many runtime subsystems and mprof-report
-prints a summary of all the subsystems that are found in the data file. It is possible
-to tell mprof-report to only show information about some of them with the following
-option:
-
-`--reports=R1[,R2...]`
-
-where the report names R1, R2 etc. can be:
-
-* *header*: information about program startup and profiler version
-* *jit*: JIT compiler information
-* *sample*: statistical sampling information
-* *gc*: garbage collection information
-* *alloc*: object allocation information
-* *call*: method profiling information
-* *metadata*: metadata events like image loads
-* *exception*: exception throw and handling information
-* *monitor*: lock contention information
-* *thread*: thread information
-* *heapshot*: live heap usage at heap shots
-
-It is possible to limit some of the data displayed to a timeframe of the
-program execution with the option:
-
-`--time=FROM-TO`
-
-where *FROM* and *TO* are seconds since application startup (they can be
-floating point numbers).
-
-Another interesting option is to consider only events happening on a particular
-thread with the following option:
-
-`--thread=THREADID`
-
-where *THREADID* is one of the numbers listed in the thread summary report
-(or a thread name when present).
-
-By default long lists of methods or other information like object allocations
-are limited to the most important data. To increase the amount of information
-printed you can use the option:
-
-`--verbose`
-
-### Track individual objects
-
-Instead of printing the usual reports from the profiler data, it is possible
-to track some interesting information about some specific object addresses.
-The objects are selected based on their address with the *--track* option as follows:
-
-`--track=0xaddr1[,0xaddr2,...]`
-
-The reported info (if available in the data file), will be class name, size,
-creation time, stack trace of creation (with the *--traces* option), etc.
-If heapshot data is available it will be possible to also track what other objects
-reference one of the listed addresses.
-
-The object addresses can be gathered either from the profiler report in some
-cases (like in the monitor lock report), from the live application or they can
-be selected with the *--find=FINDSPEC* option. FINDSPEC can be one of the
-following:
-
-* *S:SIZE*: where the object is selected if it's size is at least *SIZE* 
-* *T:NAME*: where the object is selected if *NAME* partially matches its class name
-
-This option can be specified multiple times with one of the different kinds
-of FINDSPEC. For example, the following:
-
-`--find=S:10000 --find=T:Byte[]`
-
-will find all the byte arrays that are at least 10000 bytes in size.
-
-Note that with a moving garbage collector the object address can change, so
-you may need to track the changed address manually. It can also happen that
-multiple objects are allocated at the same address, so the output from this
-option can become large.
-
-### Saving a profiler report
-
-By default mprof-report will print the summary data to the console.
-To print it to a file, instead, use the option:
-
-`--out=FILENAME`
-
-## Dealing with profiler slowness
-
-If the profiler needs to collect lots of data, the execution of the program will
-slow down significantly, usually 10 to 20 times slower. There are several
-ways to reduce the impact of the profiler on the program execution.
-
-### Use the statistical sampling mode
-
-Statistical sampling allows executing a program under the profiler with minimal
-performance overhead (usually less than 10%). This mode allows checking where
-the program is spending most of it's execution time without significantly
-perturbing its behaviour.
-
-### Collect less data
-
-Collecting method enter/leave events can be very expensive, especially in programs
-that perform many millions of tiny calls. The profiler option *nocalls* can be
-used to avoid collecting this data or it can be limited to only a few call levels
-with the *calldepth* option.
-
-Object allocation information is expensive as well, though much less than
-method enter/leave events. If it's not needed, it can be skipped with the
-*noalloc* profiler option. Note that when method enter/leave events are
-discarded, by default stack traces are collected at each allocation and this
-can be expensive as well. The impact of stack trace information can be reduced
-by setting a low value with the *maxframes* option or by eliminating them
-completely, by setting it to 0.
-
-The other major source of data is the heapshot profiler option: especially
-if the managed heap is big, since every object needs to be inspected. The *MODE*
-parameter of the *heapshot* option can be used to reduce the frequency of the heap
-shots.
-
-### Reduce the timestamp overhead
-
-On many operating systems or architectures what actually slows down profiling
-is the function provided by the system to get timestamp information.
-The *time=fast* profiler option can be usually used to speed up this operation,
-but, depending on the system, time accounting may have some level of approximation
-(though statistically the data should be still fairly valuable).
-
-## Dealing with the size of the data files
-
-When collecting a lot of information about a profiled program, huge data
-files can be generated. There are a few ways to minimize the amount of data,
-for example by not collecting some of the more space-consuming information
-or by compressing the information on the fly or by just generating a summary
-report.
-
-### Reducing the amount of data
-
-Method enter/leave events can be excluded completely with the *nocalls* option
-or they can be limited to just a few levels of calls with the *calldepth* option.
-For example, the option:
-
-`calldepth=10`
-
-will ignore the method events when there are more than 10 managed stack frames.
-This is very useful for programs that have deep recursion or for programs that
-perform many millions of tiny calls deep enough in the call stack. The optimal
-number for the calldepth option depends on the program and it needs to be balanced
-between providing enough profiling information and allowing fast execution speed.
-
-Note that by default, if method events are not recorded at all, the profiler will
-collect stack trace information at events like allocations. To avoid gathering this
-data, use the *maxframes=0* profiler option.
-
-Allocation events can be eliminated with the *noalloc* option.
-
-Heap shot data can also be huge: by default it is collected at each major collection.
-To reduce the frequency, you can specify a heapshot mode: for example to collect
-every 5 collections (including major and minor):
-
-`heapshot=5gc`
-
-or when at least 5 seconds passed since the last heap shot:
-
-`heapshot=5000ms`
-
-### Compressing the data
-
-To reduce the amout of disk space used by the data, the data can be compressed
-either after it has been generated with the gzip command:
-
-`gzip -9 output.mlpd`
-
-or it can be compressed automatically by using the *zip* profiler option. Note
-that in this case there could be a significant slowdown of the profiled program.
-
-The mprof-report program will tranparently deal with either compressed or
-uncompressed data files.
-
-### Generating only a summary report
-
-Often it's enough to look at the profiler summary report to diagnose an issue and in this
-case it's possible to avoid saving the profiler data file to disk. This can be
-accomplished with the *report* profiler option, which will basically send the data
-to the mprof-report program for display.
-
-To have more control of what summary information is reported (or to use a completely
-different program to decode the profiler data), the *output* profiler option can be
-used, with `|` as the first character: the rest of the output name will be
-executed as a program with the data fed in on the standard input.
-
-For example, to print only the Monitor summary with stack trace information, you
-could use it like this:
-
-`output=|mprof-report --reports=monitor --traces -`
-
diff --git a/mono/profiler/mono-cov.c b/mono/profiler/mono-cov.c
deleted file mode 100644 (file)
index 9860dd8..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * mono-co.c: Coverage profiler
- *
-
- * Copyright 2008-2009 Novell, Inc (http://www.novell.com)
- */
-#include <mono/metadata/profiler.h>
-#include <mono/metadata/tokentype.h>
-#include <mono/metadata/tabledefs.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/assembly.h>
-#include <string.h>
-#include <glib.h>
-
-/*
- * Coverage profiler. Compile with:
- * gcc -Wall -shared -o mono-profiler-cov.so mono-cov.c `pkg-config --cflags --libs mono`
- * Install the binary where the dynamic loader can find it (/usr/local/lib, for example,
- * or set the env var LD_LIBRARY_PATH to the directory where the file is).
- * Then run mono with:
- * mono --profile=cov:yourassembly test_suite.exe
- * mono --profile=cov:yourassembly/namespace test_suite.exe
- */
-
-struct _MonoProfiler {
-       GHashTable *hash;
-       char* assembly_name;
-       char* class_name;
-       MonoAssembly *assembly;
-       GList *bb_coverage;
-};
-
-static void
-get_assembly (MonoAssembly* ass, MonoProfiler *prof)
-{
-       if (strcmp (prof->assembly_name, mono_image_get_name (mono_assembly_get_image (ass))) == 0)
-               prof->assembly = ass;
-}
-
-static void
-coverage_callback (MonoProfiler *prof, const MonoProfileCoverageEntry *entry)
-{
-       char* cmsg;
-
-       if (entry->counter)
-               return;
-
-       if (entry->filename) {
-               cmsg = g_strdup_printf ("offset 0x%04x (%s: line: %d, col: %d)", 
-                       entry->iloffset, entry->filename, entry->line, entry->col);
-       } else {
-               cmsg = g_strdup_printf ("offset 0x%04x", entry->iloffset);
-       }
-       prof->bb_coverage = g_list_append (prof->bb_coverage, cmsg);
-}
-
-static void
-check_partial_coverage (MonoProfiler *prof, MonoMethod *method)
-{
-       GList *tmp;
-       
-       mono_profiler_coverage_get (prof, method, coverage_callback);
-       if (prof->bb_coverage) {
-               char *name = mono_method_full_name (method, TRUE);
-               g_print ("Partial coverage: %s\n", name);
-               g_free (name);
-               for (tmp = prof->bb_coverage; tmp; tmp = tmp->next) {
-                       g_print ("\t%s\n", (char*)tmp->data);
-                       g_free (tmp->data);
-               }
-               g_list_free (prof->bb_coverage);
-               prof->bb_coverage = NULL;
-       }
-}
-
-/* called at the end of the program */
-static void
-cov_shutdown (MonoProfiler *prof)
-{
-       MonoImage *image;
-       MonoMethod *method;
-       int i;
-       char *name;
-
-       mono_assembly_foreach ((GFunc)get_assembly, prof);
-       if (!prof->assembly) {
-               g_print ("Assembly '%s' was not loaded\n", prof->assembly_name);
-               return;
-       }
-       image = mono_assembly_get_image (prof->assembly);
-       for (i = 1; i <= mono_image_get_table_rows (image, MONO_TABLE_METHOD); ++i) {
-               MonoClass *klass;
-               method = mono_get_method (image, i | MONO_TOKEN_METHOD_DEF, NULL);
-               if (!method)
-                       continue;
-               if ((mono_method_get_flags (method, NULL) & METHOD_ATTRIBUTE_ABSTRACT))
-                       continue;
-               /* FIXME: handle icalls, runtime calls and synchronized methods */
-               if (prof->class_name && *prof->class_name) {
-                       klass = mono_method_get_class (method);
-                       if (!strstr (mono_class_get_name (klass), prof->class_name) && !strstr (mono_class_get_namespace (klass), prof->class_name))
-                               continue;
-               }
-               /*g_print ("check %s::%s, %p\n", method->klass->name, method->name, method);*/
-               if (g_hash_table_lookup (prof->hash, method)) {
-                       /* the method was executed: check it was fully covered */
-                       check_partial_coverage (prof, method);
-                       continue;
-               }
-               name = mono_method_full_name (method, TRUE);
-               g_print ("Not covered: %s\n", name);
-               g_free (name);
-       }
-}
-
-static void
-cov_method_enter (MonoProfiler *prof, MonoMethod *method)
-{
-       /*g_print ("enter %s::%s, %p\n", method->klass->name, method->name, method);*/
-       g_hash_table_insert (prof->hash, method, GINT_TO_POINTER (1));
-}
-
-static void
-cov_method_leave (MonoProfiler *prof, MonoMethod *method)
-{
-}
-
-static gboolean
-cov_coverage_filter(MonoProfiler *prof, MonoMethod *method)
-{
-       return TRUE;
-}
-
-void
-mono_profiler_startup (const char *desc);
-
-/* the entry point */
-void
-mono_profiler_startup (const char *desc)
-{
-       MonoProfiler *prof;
-
-       prof = g_new0 (MonoProfiler, 1);
-       prof->hash = g_hash_table_new (NULL, NULL);
-       if (strncmp ("cov:", desc, 4) == 0 && desc [4]) {
-               char *cname;
-               prof->assembly_name = g_strdup (desc + 4);
-               cname = strchr (prof->assembly_name, '/');
-               if (cname) {
-                       *cname = 0;
-                       prof->class_name = cname + 1;
-               }
-       } else {
-               prof->assembly_name = g_strdup ("mscorlib");
-       }
-
-       mono_profiler_install (prof, cov_shutdown);
-       
-       mono_profiler_install_enter_leave (cov_method_enter, cov_method_leave);
-       mono_profiler_install_coverage_filter (cov_coverage_filter);
-       mono_profiler_set_events (MONO_PROFILE_ENTER_LEAVE | MONO_PROFILE_COVERAGE);
-}
-
-
diff --git a/mono/profiler/mono-profiler-logging.c b/mono/profiler/mono-profiler-logging.c
deleted file mode 100644 (file)
index 194bc93..0000000
+++ /dev/null
@@ -1,5883 +0,0 @@
-/*
- * mono-profiler-logging.c: Logging profiler for Mono.
- *
- * Author:
- *   Massimiliano Mantione (massi@ximian.com)
- *
- * Copyright 2008-2009 Novell, Inc (http://www.novell.com)
- */
-#include <config.h>
-#include <mono/metadata/profiler.h>
-#include <mono/metadata/class.h>
-#include <mono/metadata/metadata-internals.h>
-#include <mono/metadata/class-internals.h>
-#include <mono/metadata/assembly.h>
-#include <mono/metadata/loader.h>
-#include <mono/metadata/threads.h>
-#include <mono/metadata/debug-helpers.h>
-#include <mono/metadata/mono-gc.h>
-#include <mono/utils/mono-tls.h>
-#include <mono/io-layer/atomic.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <glib.h>
-
-#include <dlfcn.h>
-
-#include <sys/types.h> 
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#define HAS_OPROFILE 0
-
-#if (HAS_OPROFILE)
-#include <libopagent.h>
-#endif
-
-// Needed for heap analysis
-extern gboolean mono_object_is_alive (MonoObject* obj);
-
-typedef enum {
-       MONO_PROFILER_FILE_BLOCK_KIND_INTRO = 1,
-       MONO_PROFILER_FILE_BLOCK_KIND_END = 2,
-       MONO_PROFILER_FILE_BLOCK_KIND_MAPPING = 3,
-       MONO_PROFILER_FILE_BLOCK_KIND_LOADED = 4,
-       MONO_PROFILER_FILE_BLOCK_KIND_UNLOADED = 5,
-       MONO_PROFILER_FILE_BLOCK_KIND_EVENTS = 6,
-       MONO_PROFILER_FILE_BLOCK_KIND_STATISTICAL = 7,
-       MONO_PROFILER_FILE_BLOCK_KIND_HEAP_DATA = 8,
-       MONO_PROFILER_FILE_BLOCK_KIND_HEAP_SUMMARY = 9,
-       MONO_PROFILER_FILE_BLOCK_KIND_DIRECTIVES = 10
-} MonoProfilerFileBlockKind;
-
-typedef enum {
-       MONO_PROFILER_DIRECTIVE_END = 0,
-       MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_CALLER = 1,
-       MONO_PROFILER_DIRECTIVE_ALLOCATIONS_HAVE_STACK = 2,
-       MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_ID = 3,
-       MONO_PROFILER_DIRECTIVE_LOADED_ELEMENTS_CARRY_ID = 4,
-       MONO_PROFILER_DIRECTIVE_CLASSES_CARRY_ASSEMBLY_ID = 5,
-       MONO_PROFILER_DIRECTIVE_METHODS_CARRY_WRAPPER_FLAG = 6,
-       MONO_PROFILER_DIRECTIVE_LAST
-} MonoProfilerDirectives;
-
-
-#define MONO_PROFILER_LOADED_EVENT_MODULE     1
-#define MONO_PROFILER_LOADED_EVENT_ASSEMBLY   2
-#define MONO_PROFILER_LOADED_EVENT_APPDOMAIN  4
-#define MONO_PROFILER_LOADED_EVENT_SUCCESS    8
-#define MONO_PROFILER_LOADED_EVENT_FAILURE   16
-
-typedef enum {
-       MONO_PROFILER_EVENT_DATA_TYPE_OTHER = 0,
-       MONO_PROFILER_EVENT_DATA_TYPE_METHOD = 1,
-       MONO_PROFILER_EVENT_DATA_TYPE_CLASS = 2
-} MonoProfilerEventDataType;
-
-typedef struct _ProfilerEventData {
-       union {
-               gpointer address;
-               gsize number;
-       } data;
-       unsigned int data_type:2;
-       unsigned int code:4;
-       unsigned int kind:1;
-       unsigned int value:25;
-} ProfilerEventData;
-
-#define EVENT_VALUE_BITS (25)
-#define MAX_EVENT_VALUE ((1<<EVENT_VALUE_BITS)-1)
-
-typedef enum {
-       MONO_PROFILER_EVENT_METHOD_JIT = 0,
-       MONO_PROFILER_EVENT_METHOD_FREED = 1,
-       MONO_PROFILER_EVENT_METHOD_CALL = 2,
-       MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER = 3,
-       MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER = 4
-} MonoProfilerMethodEvents;
-typedef enum {
-       MONO_PROFILER_EVENT_CLASS_LOAD = 0,
-       MONO_PROFILER_EVENT_CLASS_UNLOAD = 1,
-       MONO_PROFILER_EVENT_CLASS_EXCEPTION = 2,
-       MONO_PROFILER_EVENT_CLASS_MONITOR = 3,
-       MONO_PROFILER_EVENT_CLASS_ALLOCATION = 4
-} MonoProfilerClassEvents;
-typedef enum {
-       MONO_PROFILER_EVENT_RESULT_SUCCESS = 0,
-       MONO_PROFILER_EVENT_RESULT_FAILURE = 4
-} MonoProfilerEventResult;
-#define MONO_PROFILER_EVENT_RESULT_MASK MONO_PROFILER_EVENT_RESULT_FAILURE
-typedef enum {
-       MONO_PROFILER_EVENT_THREAD = 1,
-       MONO_PROFILER_EVENT_GC_COLLECTION = 2,
-       MONO_PROFILER_EVENT_GC_MARK = 3,
-       MONO_PROFILER_EVENT_GC_SWEEP = 4,
-       MONO_PROFILER_EVENT_GC_RESIZE = 5,
-       MONO_PROFILER_EVENT_GC_STOP_WORLD = 6,
-       MONO_PROFILER_EVENT_GC_START_WORLD = 7,
-       MONO_PROFILER_EVENT_JIT_TIME_ALLOCATION = 8,
-       MONO_PROFILER_EVENT_STACK_SECTION = 9,
-       MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID = 10,
-       MONO_PROFILER_EVENT_OBJECT_MONITOR = 11
-} MonoProfilerEvents;
-typedef enum {
-       MONO_PROFILER_EVENT_KIND_START = 0,
-       MONO_PROFILER_EVENT_KIND_END = 1
-} MonoProfilerEventKind;
-
-#define MONO_PROFILER_GET_CURRENT_TIME(t) {\
-       struct timeval current_time;\
-       gettimeofday (&current_time, NULL);\
-       (t) = (((guint64)current_time.tv_sec) * 1000000) + current_time.tv_usec;\
-} while (0)
-
-static gboolean use_fast_timer = FALSE;
-
-#if (defined(__i386__) || defined(__x86_64__)) && ! defined(HOST_WIN32)
-
-#if defined(__i386__)
-static const guchar cpuid_impl [] = {
-       0x55,                           /* push   %ebp */
-       0x89, 0xe5,                     /* mov    %esp,%ebp */
-       0x53,                           /* push   %ebx */
-       0x8b, 0x45, 0x08,               /* mov    0x8(%ebp),%eax */
-       0x0f, 0xa2,                     /* cpuid   */
-       0x50,                           /* push   %eax */
-       0x8b, 0x45, 0x10,               /* mov    0x10(%ebp),%eax */
-       0x89, 0x18,                     /* mov    %ebx,(%eax) */
-       0x8b, 0x45, 0x14,               /* mov    0x14(%ebp),%eax */
-       0x89, 0x08,                     /* mov    %ecx,(%eax) */
-       0x8b, 0x45, 0x18,               /* mov    0x18(%ebp),%eax */
-       0x89, 0x10,                     /* mov    %edx,(%eax) */
-       0x58,                           /* pop    %eax */
-       0x8b, 0x55, 0x0c,               /* mov    0xc(%ebp),%edx */
-       0x89, 0x02,                     /* mov    %eax,(%edx) */
-       0x5b,                           /* pop    %ebx */
-       0xc9,                           /* leave   */
-       0xc3,                           /* ret     */
-};
-
-typedef void (*CpuidFunc) (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx);
-
-static int 
-cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx) {
-       int have_cpuid = 0;
-#ifndef _MSC_VER
-       __asm__  __volatile__ (
-               "pushfl\n"
-               "popl %%eax\n"
-               "movl %%eax, %%edx\n"
-               "xorl $0x200000, %%eax\n"
-               "pushl %%eax\n"
-               "popfl\n"
-               "pushfl\n"
-               "popl %%eax\n"
-               "xorl %%edx, %%eax\n"
-               "andl $0x200000, %%eax\n"
-               "movl %%eax, %0"
-               : "=r" (have_cpuid)
-               :
-               : "%eax", "%edx"
-       );
-#else
-       __asm {
-               pushfd
-               pop eax
-               mov edx, eax
-               xor eax, 0x200000
-               push eax
-               popfd
-               pushfd
-               pop eax
-               xor eax, edx
-               and eax, 0x200000
-               mov have_cpuid, eax
-       }
-#endif
-       if (have_cpuid) {
-               CpuidFunc func = (CpuidFunc) cpuid_impl;
-               func (id, p_eax, p_ebx, p_ecx, p_edx);
-               /*
-                * We use this approach because of issues with gcc and pic code, see:
-                * http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7329
-               __asm__ __volatile__ ("cpuid"
-                       : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-                       : "a" (id));
-               */
-               return 1;
-       }
-       return 0;
-}
-
-static void detect_fast_timer (void) {
-       int p_eax, p_ebx, p_ecx, p_edx;
-       
-       if (cpuid (0x1, &p_eax, &p_ebx, &p_ecx, &p_edx)) {
-               if (p_edx & 0x10) {
-                       use_fast_timer = TRUE;
-               } else {
-                       use_fast_timer = FALSE;
-               }
-       } else {
-               use_fast_timer = FALSE;
-       }
-}
-#endif
-
-#if defined(__x86_64__)
-static void detect_fast_timer (void) {
-       guint32 op = 0x1;
-       guint32 eax,ebx,ecx,edx;
-       __asm__ __volatile__ ("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(op));
-       if (edx & 0x10) {
-               use_fast_timer = TRUE;
-       } else {
-               use_fast_timer = FALSE;
-       }
-}
-#endif
-
-static __inline__ guint64 rdtsc(void) {
-       guint32 hi, lo;
-       __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
-       return ((guint64) lo) | (((guint64) hi) << 32);
-}
-#define MONO_PROFILER_GET_CURRENT_COUNTER(c) {\
-       if (use_fast_timer) {\
-               (c) = rdtsc ();\
-       } else {\
-               MONO_PROFILER_GET_CURRENT_TIME ((c));\
-       }\
-} while (0)
-#else
-static void detect_fast_timer (void) {
-       use_fast_timer = FALSE;
-}
-#define MONO_PROFILER_GET_CURRENT_COUNTER(c) MONO_PROFILER_GET_CURRENT_TIME ((c))
-#endif
-
-
-#define CLASS_LAYOUT_PACKED_BITMAP_SIZE 64
-#define CLASS_LAYOUT_NOT_INITIALIZED (0xFFFF)
-typedef enum {
-       HEAP_CODE_NONE = 0,
-       HEAP_CODE_OBJECT = 1,
-       HEAP_CODE_FREE_OBJECT_CLASS = 2,
-       HEAP_CODE_MASK = 3
-} HeapProfilerJobValueCode;
-typedef struct _MonoProfilerClassData {
-       union {
-               guint64 compact;
-               guint8 *extended;
-       } bitmap;
-       struct {
-               guint16 slots;
-               guint16 references;
-       } layout;
-} MonoProfilerClassData;
-
-typedef struct _MonoProfilerMethodData {
-       gpointer code_start;
-       guint32 code_size;
-} MonoProfilerMethodData;
-
-typedef struct _ClassIdMappingElement {
-       char *name;
-       guint32 id;
-       MonoClass *klass;
-       struct _ClassIdMappingElement *next_unwritten;
-       MonoProfilerClassData data;
-} ClassIdMappingElement;
-
-typedef struct _MethodIdMappingElement {
-       char *name;
-       guint32 id;
-       MonoMethod *method;
-       struct _MethodIdMappingElement *next_unwritten;
-       MonoProfilerMethodData data;
-} MethodIdMappingElement;
-
-typedef struct _ClassIdMapping {
-       GHashTable *table;
-       ClassIdMappingElement *unwritten;
-       guint32 next_id;
-} ClassIdMapping;
-
-typedef struct _MethodIdMapping {
-       GHashTable *table;
-       MethodIdMappingElement *unwritten;
-       guint32 next_id;
-} MethodIdMapping;
-
-typedef struct _LoadedElement {
-       char *name;
-       guint64 load_start_counter;
-       guint64 load_end_counter;
-       guint64 unload_start_counter;
-       guint64 unload_end_counter;
-       guint32 id;
-       guint8 loaded;
-       guint8 load_written;
-       guint8 unloaded;
-       guint8 unload_written;
-} LoadedElement;
-struct _ProfilerCodeBufferArray;
-typedef struct _ProfilerCodeBuffer {
-       gpointer start;
-       gpointer end;
-       struct {
-               union {
-                       MonoMethod *method;
-                       MonoClass *klass;
-                       void *data;
-                       struct _ProfilerCodeBufferArray *sub_buffers;
-               } data;
-               guint16 value;
-               guint16 type;
-       } info;
-} ProfilerCodeBuffer;
-
-#define PROFILER_CODE_BUFFER_ARRAY_SIZE 64
-typedef struct _ProfilerCodeBufferArray {
-       int level;
-       int number_of_buffers;
-       ProfilerCodeBuffer buffers [PROFILER_CODE_BUFFER_ARRAY_SIZE];
-} ProfilerCodeBufferArray;
-
-typedef struct _ProfilerCodeChunk {
-       gpointer start;
-       gpointer end;
-       gboolean destroyed;
-       ProfilerCodeBufferArray *buffers;
-} ProfilerCodeChunk;
-
-typedef struct _ProfilerCodeChunks {
-       int capacity;
-       int number_of_chunks;;
-       ProfilerCodeChunk *chunks;
-} ProfilerCodeChunks;
-
-
-#define PROFILER_HEAP_SHOT_OBJECT_BUFFER_SIZE 1024
-#define PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE 4096
-#define PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE 4096
-
-typedef struct _ProfilerHeapShotObjectBuffer {
-       struct _ProfilerHeapShotObjectBuffer *next;
-       MonoObject **next_free_slot;
-       MonoObject **end;
-       MonoObject **first_unprocessed_slot;
-       MonoObject *buffer [PROFILER_HEAP_SHOT_OBJECT_BUFFER_SIZE];
-} ProfilerHeapShotObjectBuffer;
-
-typedef struct _ProfilerHeapShotHeapBuffer {
-       struct _ProfilerHeapShotHeapBuffer *next;
-       struct _ProfilerHeapShotHeapBuffer *previous;
-       MonoObject **start_slot;
-       MonoObject **end_slot;
-       MonoObject *buffer [PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE];
-} ProfilerHeapShotHeapBuffer;
-
-typedef struct _ProfilerHeapShotHeapBuffers {
-       ProfilerHeapShotHeapBuffer *buffers;
-       ProfilerHeapShotHeapBuffer *last;
-       ProfilerHeapShotHeapBuffer *current;
-       MonoObject **first_free_slot;
-} ProfilerHeapShotHeapBuffers;
-
-
-typedef struct _ProfilerHeapShotWriteBuffer {
-       struct _ProfilerHeapShotWriteBuffer *next;
-       gpointer buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE];
-} ProfilerHeapShotWriteBuffer;
-
-typedef struct _ProfilerHeapShotClassSummary {
-       struct {
-               guint32 instances;
-               guint32 bytes;
-       } reachable;
-       struct {
-               guint32 instances;
-               guint32 bytes;
-       } unreachable;
-} ProfilerHeapShotClassSummary;
-
-typedef struct _ProfilerHeapShotCollectionSummary {
-       ProfilerHeapShotClassSummary *per_class_data;
-       guint32 capacity;
-} ProfilerHeapShotCollectionSummary;
-
-typedef struct _ProfilerHeapShotWriteJob {
-       struct _ProfilerHeapShotWriteJob *next;
-       struct _ProfilerHeapShotWriteJob *next_unwritten;
-       gpointer *start;
-       gpointer *cursor;
-       gpointer *end;
-       ProfilerHeapShotWriteBuffer *buffers;
-       ProfilerHeapShotWriteBuffer **last_next;
-       guint32 full_buffers;
-       gboolean heap_shot_was_requested;
-       guint64 start_counter;
-       guint64 start_time;
-       guint64 end_counter;
-       guint64 end_time;
-       guint32 collection;
-       ProfilerHeapShotCollectionSummary summary;
-       gboolean dump_heap_data;
-} ProfilerHeapShotWriteJob;
-
-typedef struct _ProfilerThreadStack {
-       guint32 capacity;
-       guint32 top;
-       guint32 last_saved_top;
-       guint32 last_written_frame;
-       MonoMethod **stack;
-       guint8 *method_is_jitted;
-       guint32 *written_frames;
-} ProfilerThreadStack;
-
-typedef struct _ProfilerPerThreadData {
-       ProfilerEventData *events;
-       ProfilerEventData *next_free_event;
-       ProfilerEventData *next_unreserved_event;
-       ProfilerEventData *end_event;
-       ProfilerEventData *first_unwritten_event;
-       ProfilerEventData *first_unmapped_event;
-       guint64 start_event_counter;
-       guint64 last_event_counter;
-       gsize thread_id;
-       ProfilerHeapShotObjectBuffer *heap_shot_object_buffers;
-       ProfilerThreadStack stack;
-       struct _ProfilerPerThreadData* next;
-} ProfilerPerThreadData;
-
-typedef struct _ProfilerStatisticalHit {
-       gpointer *address;
-       MonoDomain *domain;
-} ProfilerStatisticalHit;
-
-typedef struct _ProfilerStatisticalData {
-       ProfilerStatisticalHit *hits;
-       unsigned int next_free_index;
-       unsigned int end_index;
-       unsigned int first_unwritten_index;
-} ProfilerStatisticalData;
-
-typedef struct _ProfilerUnmanagedSymbol {
-       guint32 offset;
-       guint32 size;
-       guint32 id;
-       guint32 index;
-} ProfilerUnmanagedSymbol;
-
-struct _ProfilerExecutableFile;
-struct _ProfilerExecutableFileSectionRegion;
-
-typedef struct _ProfilerExecutableMemoryRegionData {
-       gpointer start;
-       gpointer end;
-       guint32 file_offset;
-       char *file_name;
-       guint32 id;
-       gboolean is_new;
-       
-       struct _ProfilerExecutableFile *file;
-       struct _ProfilerExecutableFileSectionRegion *file_region_reference;
-       guint32 symbols_count;
-       guint32 symbols_capacity;
-       ProfilerUnmanagedSymbol *symbols;
-} ProfilerExecutableMemoryRegionData;
-
-typedef struct _ProfilerExecutableMemoryRegions {
-       ProfilerExecutableMemoryRegionData **regions;
-       guint32 regions_capacity;
-       guint32 regions_count;
-       guint32 next_id;
-       guint32 next_unmanaged_function_id;
-} ProfilerExecutableMemoryRegions;
-
-/* Start of ELF definitions */
-#define EI_NIDENT 16
-typedef guint16 ElfHalf;
-typedef guint32 ElfWord;
-typedef gsize ElfAddr;
-typedef gsize ElfOff;
-
-typedef struct {
-       unsigned char e_ident[EI_NIDENT];
-       ElfHalf e_type;
-       ElfHalf e_machine;
-       ElfWord e_version;
-       ElfAddr e_entry;
-       ElfOff  e_phoff;
-       ElfOff  e_shoff; // Section header table
-       ElfWord e_flags;
-       ElfHalf e_ehsize; // Header size
-       ElfHalf e_phentsize;
-       ElfHalf e_phnum;
-       ElfHalf e_shentsize; // Section header entry size
-       ElfHalf e_shnum; // Section header entries number
-       ElfHalf e_shstrndx; // String table index
-} ElfHeader;
-
-#if (SIZEOF_VOID_P == 4)
-typedef struct {
-       ElfWord sh_name;
-       ElfWord sh_type;
-       ElfWord sh_flags;
-       ElfAddr sh_addr; // Address in memory
-       ElfOff  sh_offset; // Offset in file
-       ElfWord sh_size;
-       ElfWord sh_link;
-       ElfWord sh_info;
-       ElfWord sh_addralign;
-       ElfWord sh_entsize;
-} ElfSection;
-typedef struct {
-       ElfWord       st_name;
-       ElfAddr       st_value;
-       ElfWord       st_size;
-       unsigned char st_info; // Use ELF32_ST_TYPE to get symbol type
-       unsigned char st_other;
-       ElfHalf       st_shndx; // Or one of SHN_ABS, SHN_COMMON or SHN_UNDEF.
-} ElfSymbol;
-#elif (SIZEOF_VOID_P == 8)
-typedef struct {
-       ElfWord sh_name;
-       ElfWord sh_type;
-       ElfOff sh_flags;
-       ElfAddr sh_addr; // Address in memory
-       ElfOff  sh_offset; // Offset in file
-       ElfOff sh_size;
-       ElfWord sh_link;
-       ElfWord sh_info;
-       ElfOff sh_addralign;
-       ElfOff sh_entsize;
-} ElfSection;
-typedef struct {
-       ElfWord       st_name;
-       unsigned char st_info; // Use ELF_ST_TYPE to get symbol type
-       unsigned char st_other;
-       ElfHalf       st_shndx; // Or one of SHN_ABS, SHN_COMMON or SHN_UNDEF.
-       ElfAddr       st_value;
-       ElfAddr       st_size;
-} ElfSymbol;
-#else
-#error Bad size of void pointer
-#endif
-
-
-#define ELF_ST_BIND(i)   ((i)>>4)
-#define ELF_ST_TYPE(i)   ((i)&0xf)
-
-
-typedef enum {
-       EI_MAG0 = 0,
-       EI_MAG1 = 1,
-       EI_MAG2 = 2,
-       EI_MAG3 = 3,
-       EI_CLASS = 4,
-       EI_DATA = 5
-} ElfIdentFields;
-
-typedef enum {
-       ELF_FILE_TYPE_NONE = 0,
-       ELF_FILE_TYPE_REL = 1,
-       ELF_FILE_TYPE_EXEC = 2,
-       ELF_FILE_TYPE_DYN = 3,
-       ELF_FILE_TYPE_CORE = 4
-} ElfFileType;
-
-typedef enum {
-       ELF_CLASS_NONE = 0,
-       ELF_CLASS_32 = 1,
-       ELF_CLASS_64 = 2
-} ElfIdentClass;
-
-typedef enum {
-       ELF_DATA_NONE = 0,
-       ELF_DATA_LSB = 1,
-       ELF_DATA_MSB = 2
-} ElfIdentData;
-
-typedef enum {
-       ELF_SHT_NULL = 0,
-       ELF_SHT_PROGBITS = 1,
-       ELF_SHT_SYMTAB = 2,
-       ELF_SHT_STRTAB = 3,
-       ELF_SHT_RELA = 4,
-       ELF_SHT_HASH = 5,
-       ELF_SHT_DYNAMIC = 6,
-       ELF_SHT_NOTE = 7,
-       ELF_SHT_NOBITS = 8,
-       ELF_SHT_REL = 9,
-       ELF_SHT_SHLIB = 10,
-       ELF_SHT_DYNSYM = 11
-} ElfSectionType;
-
-typedef enum {
-       ELF_STT_NOTYPE = 0,
-       ELF_STT_OBJECT = 1,
-       ELF_STT_FUNC = 2,
-       ELF_STT_SECTION = 3,
-       ELF_STT_FILE = 4
-} ElfSymbolType;
-
-typedef enum {
-       ELF_SHF_WRITE = 1,
-       ELF_SHF_ALLOC = 2,
-       ELF_SHF_EXECINSTR = 4,
-} ElfSectionFlags;
-
-#define ELF_SHN_UNDEF       0
-#define ELF_SHN_LORESERVE   0xff00
-#define ELF_SHN_LOPROC      0xff00
-#define ELF_SHN_HIPROC      0xff1f
-#define ELF_SHN_ABS         0xfff1
-#define ELF_SHN_COMMON      0xfff2
-#define ELF_SHN_HIRESERVE   0xffff
-/* End of ELF definitions */
-
-typedef struct _ProfilerExecutableFileSectionRegion {
-       ProfilerExecutableMemoryRegionData *region;
-       guint8 *section_address;
-       gsize section_offset;
-} ProfilerExecutableFileSectionRegion;
-
-typedef struct _ProfilerExecutableFile {
-       guint32 reference_count;
-       
-       /* Used for mmap and munmap */
-       int fd;
-       guint8 *data;
-       size_t length;
-       
-       /* File data */
-       ElfHeader *header;
-       guint8 *symbols_start;
-       guint32 symbols_count;
-       guint32 symbol_size;
-       const char *symbols_string_table;
-       const char *main_string_table;
-       
-       ProfilerExecutableFileSectionRegion *section_regions;
-       
-       struct _ProfilerExecutableFile *next_new_file;
-} ProfilerExecutableFile;
-
-typedef struct _ProfilerExecutableFiles {
-       GHashTable *table;
-       ProfilerExecutableFile *new_files;
-} ProfilerExecutableFiles;
-
-
-#define CLEANUP_WRITER_THREAD() do {profiler->writer_thread_terminated = TRUE;} while (0)
-#define CHECK_WRITER_THREAD() (! profiler->writer_thread_terminated)
-
-#ifndef HOST_WIN32
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <semaphore.h>
-
-#include <sys/mman.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-
-#define MUTEX_TYPE pthread_mutex_t
-#define INITIALIZE_PROFILER_MUTEX() pthread_mutex_init (&(profiler->mutex), NULL)
-#define DELETE_PROFILER_MUTEX() pthread_mutex_destroy (&(profiler->mutex))
-#define LOCK_PROFILER() do {/*LOG_WRITER_THREAD ("LOCK_PROFILER");*/ pthread_mutex_lock (&(profiler->mutex));} while (0)
-#define UNLOCK_PROFILER() do {/*LOG_WRITER_THREAD ("UNLOCK_PROFILER");*/ pthread_mutex_unlock (&(profiler->mutex));} while (0)
-
-#define THREAD_TYPE pthread_t
-#define CREATE_WRITER_THREAD(f) pthread_create (&(profiler->data_writer_thread), NULL, ((void*(*)(void*))f), NULL)
-#define CREATE_USER_THREAD(f) pthread_create (&(profiler->user_thread), NULL, ((void*(*)(void*))f), NULL)
-#define EXIT_THREAD() pthread_exit (NULL);
-#define WAIT_WRITER_THREAD() do {\
-       if (CHECK_WRITER_THREAD ()) {\
-               pthread_join (profiler->data_writer_thread, NULL);\
-       }\
-} while (0)
-#define CURRENT_THREAD_ID() (gsize) pthread_self ()
-
-#ifndef HAVE_KW_THREAD
-static pthread_key_t pthread_profiler_key;
-static pthread_once_t profiler_pthread_once = PTHREAD_ONCE_INIT;
-static void
-make_pthread_profiler_key (void) {
-    (void) pthread_key_create (&pthread_profiler_key, NULL);
-}
-#define LOOKUP_PROFILER_THREAD_DATA() ((ProfilerPerThreadData*) pthread_getspecific (pthread_profiler_key))
-#define SET_PROFILER_THREAD_DATA(x) (void) pthread_setspecific (pthread_profiler_key, (x))
-#define ALLOCATE_PROFILER_THREAD_DATA() (void) pthread_once (&profiler_pthread_once, make_pthread_profiler_key)
-#define FREE_PROFILER_THREAD_DATA() (void) pthread_key_delete (pthread_profiler_key)
-#endif
-
-#define EVENT_TYPE sem_t
-#define WRITER_EVENT_INIT() do {\
-       sem_init (&(profiler->enable_data_writer_event), 0, 0);\
-       sem_init (&(profiler->wake_data_writer_event), 0, 0);\
-       sem_init (&(profiler->done_data_writer_event), 0, 0);\
-} while (0)
-#define WRITER_EVENT_DESTROY() do {\
-       sem_destroy (&(profiler->enable_data_writer_event));\
-       sem_destroy (&(profiler->wake_data_writer_event));\
-       sem_destroy (&(profiler->done_data_writer_event));\
-} while (0)
-#define WRITER_EVENT_WAIT() (void) sem_wait (&(profiler->wake_data_writer_event))
-#define WRITER_EVENT_RAISE() (void) sem_post (&(profiler->wake_data_writer_event))
-#define WRITER_EVENT_ENABLE_WAIT() (void) sem_wait (&(profiler->enable_data_writer_event))
-#define WRITER_EVENT_ENABLE_RAISE() (void) sem_post (&(profiler->enable_data_writer_event))
-#define WRITER_EVENT_DONE_WAIT() do {\
-       if (CHECK_WRITER_THREAD ()) {\
-               (void) sem_wait (&(profiler->done_data_writer_event));\
-       }\
-} while (0)
-#define WRITER_EVENT_DONE_RAISE() (void) sem_post (&(profiler->done_data_writer_event))
-
-#if 0
-#define FILE_HANDLE_TYPE FILE*
-#define OPEN_FILE() profiler->file = fopen (profiler->file_name, "wb");
-#define WRITE_BUFFER(b,s) fwrite ((b), 1, (s), profiler->file)
-#define FLUSH_FILE() fflush (profiler->file)
-#define CLOSE_FILE() fclose (profiler->file)
-#else
-#define FILE_HANDLE_TYPE int
-#define OPEN_FILE() profiler->file = open (profiler->file_name, O_WRONLY|O_CREAT|O_TRUNC, 0664);
-#define WRITE_BUFFER(b,s) write (profiler->file, (b), (s))
-#define FLUSH_FILE() fsync (profiler->file)
-#define CLOSE_FILE() close (profiler->file)
-#endif
-
-#else
-
-#include <windows.h>
-
-#define MUTEX_TYPE CRITICAL_SECTION
-#define INITIALIZE_PROFILER_MUTEX() InitializeCriticalSection (&(profiler->mutex))
-#define DELETE_PROFILER_MUTEX() DeleteCriticalSection (&(profiler->mutex))
-#define LOCK_PROFILER() EnterCriticalSection (&(profiler->mutex))
-#define UNLOCK_PROFILER() LeaveCriticalSection (&(profiler->mutex))
-
-#define THREAD_TYPE HANDLE
-#define CREATE_WRITER_THREAD(f) CreateThread (NULL, (1*1024*1024), (f), NULL, 0, NULL);
-#define EXIT_THREAD() ExitThread (0);
-#define WAIT_WRITER_THREAD() do {\
-       if (CHECK_WRITER_THREAD ()) {\
-                WaitForSingleObject (profiler->data_writer_thread, INFINITE);\
-       }\
-} while (0)
-#define CURRENT_THREAD_ID() (gsize) GetCurrentThreadId ()
-
-#ifndef HAVE_KW_THREAD
-static MonoNativeTlsKey profiler_thread_id;
-#define LOOKUP_PROFILER_THREAD_DATA() ((ProfilerPerThreadData*)mono_native_tls_get_value (profiler_thread_id))
-#define SET_PROFILER_THREAD_DATA(x) mono_native_tls_set_value (profiler_thread_id, (x));
-#define ALLOCATE_PROFILER_THREAD_DATA() mono_native_tls_alloc (profiler_thread_id, NULL)
-#define FREE_PROFILER_THREAD_DATA() mono_native_tls_free (profiler_thread_id)
-#endif
-
-#define EVENT_TYPE HANDLE
-#define WRITER_EVENT_INIT() (void) do {\
-       profiler->enable_data_writer_event = CreateEvent (NULL, FALSE, FALSE, NULL);\
-       profiler->wake_data_writer_event = CreateEvent (NULL, FALSE, FALSE, NULL);\
-       profiler->done_data_writer_event = CreateEvent (NULL, FALSE, FALSE, NULL);\
-} while (0)
-#define WRITER_EVENT_DESTROY() CloseHandle (profiler->statistical_data_writer_event)
-#define WRITER_EVENT_INIT() (void) do {\
-       CloseHandle (profiler->enable_data_writer_event);\
-       CloseHandle (profiler->wake_data_writer_event);\
-       CloseHandle (profiler->done_data_writer_event);\
-} while (0)
-#define WRITER_EVENT_WAIT() WaitForSingleObject (profiler->wake_data_writer_event, INFINITE)
-#define WRITER_EVENT_RAISE() SetEvent (profiler->wake_data_writer_event)
-#define WRITER_EVENT_ENABLE_WAIT() WaitForSingleObject (profiler->enable_data_writer_event, INFINITE)
-#define WRITER_EVENT_ENABLE_RAISE() SetEvent (profiler->enable_data_writer_event)
-#define WRITER_EVENT_DONE_WAIT() do {\
-       if (CHECK_WRITER_THREAD ()) {\
-               WaitForSingleObject (profiler->done_data_writer_event, INFINITE);\
-       }\
-} while (0)
-#define WRITER_EVENT_DONE_RAISE() SetEvent (profiler->done_data_writer_event)
-
-#define FILE_HANDLE_TYPE FILE*
-#define OPEN_FILE() profiler->file = fopen (profiler->file_name, "wb");
-#define WRITE_BUFFER(b,s) fwrite ((b), 1, (s), profiler->file)
-#define FLUSH_FILE() fflush (profiler->file)
-#define CLOSE_FILE() fclose (profiler->file);
-
-#endif
-
-#ifdef HAVE_KW_THREAD
-static __thread ProfilerPerThreadData * tls_profiler_per_thread_data;
-#define LOOKUP_PROFILER_THREAD_DATA() ((ProfilerPerThreadData*) tls_profiler_per_thread_data)
-#define SET_PROFILER_THREAD_DATA(x) tls_profiler_per_thread_data = (x)
-#define ALLOCATE_PROFILER_THREAD_DATA() /* nop */
-#define FREE_PROFILER_THREAD_DATA() /* nop */
-#endif
-
-#define GET_PROFILER_THREAD_DATA(data) do {\
-       ProfilerPerThreadData *_result = LOOKUP_PROFILER_THREAD_DATA ();\
-       if (!_result) {\
-               _result = profiler_per_thread_data_new (profiler->per_thread_buffer_size);\
-               LOCK_PROFILER ();\
-               _result->next = profiler->per_thread_data;\
-               profiler->per_thread_data = _result;\
-               UNLOCK_PROFILER ();\
-               SET_PROFILER_THREAD_DATA (_result);\
-       }\
-       (data) = _result;\
-} while (0)
-
-#define PROFILER_FILE_WRITE_BUFFER_SIZE (profiler->write_buffer_size)
-typedef struct _ProfilerFileWriteBuffer {
-       struct _ProfilerFileWriteBuffer *next;
-       guint8 buffer [MONO_ZERO_LEN_ARRAY];
-} ProfilerFileWriteBuffer;
-
-#define CHECK_PROFILER_ENABLED() do {\
-       if (! profiler->profiler_enabled)\
-               return;\
-} while (0)
-struct _MonoProfiler {
-       MUTEX_TYPE mutex;
-       
-       MonoProfileFlags flags;
-       gboolean profiler_enabled;
-       char *file_name;
-       char *file_name_suffix;
-       FILE_HANDLE_TYPE file;
-       
-       guint64 start_time;
-       guint64 start_counter;
-       guint64 end_time;
-       guint64 end_counter;
-       
-       guint64 last_header_counter;
-       
-       MethodIdMapping *methods;
-       ClassIdMapping *classes;
-       
-       guint32 loaded_element_next_free_id;
-       GHashTable *loaded_assemblies;
-       GHashTable *loaded_modules;
-       GHashTable *loaded_appdomains;
-       
-       guint32 per_thread_buffer_size;
-       guint32 statistical_buffer_size;
-       ProfilerPerThreadData* per_thread_data;
-       ProfilerStatisticalData *statistical_data;
-       ProfilerStatisticalData *statistical_data_ready;
-       ProfilerStatisticalData *statistical_data_second_buffer;
-       int statistical_call_chain_depth;
-       MonoProfilerCallChainStrategy statistical_call_chain_strategy;
-       
-       ProfilerCodeChunks code_chunks;
-       
-       THREAD_TYPE data_writer_thread;
-       THREAD_TYPE user_thread;
-       EVENT_TYPE enable_data_writer_event;
-       EVENT_TYPE wake_data_writer_event;
-       EVENT_TYPE done_data_writer_event;
-       gboolean terminate_writer_thread;
-       gboolean writer_thread_terminated;
-       
-       ProfilerFileWriteBuffer *write_buffers;
-       ProfilerFileWriteBuffer *current_write_buffer;
-       int write_buffer_size;
-       int current_write_position;
-       int full_write_buffers;
-       
-       ProfilerHeapShotWriteJob *heap_shot_write_jobs;
-       ProfilerHeapShotHeapBuffers heap;
-       
-       int command_port;
-       
-       int dump_next_heap_snapshots;
-       gboolean heap_shot_was_requested;
-       guint32 garbage_collection_counter;
-       
-       ProfilerExecutableMemoryRegions *executable_regions;
-       ProfilerExecutableFiles executable_files;
-       
-       struct {
-#if (HAS_OPROFILE)
-               gboolean oprofile;
-#endif
-               gboolean jit_time;
-               gboolean unreachable_objects;
-               gboolean collection_summary;
-               gboolean report_gc_events;
-               gboolean heap_shot;
-               gboolean track_stack;
-               gboolean track_calls;
-               gboolean save_allocation_caller;
-               gboolean save_allocation_stack;
-               gboolean allocations_carry_id;
-       } action_flags;
-};
-static MonoProfiler *profiler;
-
-static void
-enable_profiler (void) {
-       profiler->profiler_enabled = TRUE;
-}
-
-static void flush_everything (void);
-
-static void
-disable_profiler (void) {
-       profiler->profiler_enabled = FALSE;
-       flush_everything ();
-}
-
-static void
-request_heap_snapshot (void) {
-       profiler->heap_shot_was_requested = TRUE;
-       mono_gc_collect (mono_gc_max_generation ());
-}
-
-#define DEBUG_LOAD_EVENTS 0
-#define DEBUG_MAPPING_EVENTS 0
-#define DEBUG_LOGGING_PROFILER 0
-#define DEBUG_HEAP_PROFILER 0
-#define DEBUG_CLASS_BITMAPS 0
-#define DEBUG_STATISTICAL_PROFILER 0
-#define DEBUG_WRITER_THREAD 0
-#define DEBUG_USER_THREAD 0
-#define DEBUG_FILE_WRITES 0
-#if (DEBUG_LOGGING_PROFILER || DEBUG_STATISTICAL_PROFILER || DEBUG_HEAP_PROFILER || DEBUG_WRITER_THREAD || DEBUG_FILE_WRITES)
-#define LOG_WRITER_THREAD(m) printf ("WRITER-THREAD-LOG %s\n", m)
-#else
-#define LOG_WRITER_THREAD(m)
-#endif
-#if (DEBUG_LOGGING_PROFILER || DEBUG_STATISTICAL_PROFILER || DEBUG_HEAP_PROFILER || DEBUG_USER_THREAD || DEBUG_FILE_WRITES)
-#define LOG_USER_THREAD(m) printf ("USER-THREAD-LOG %s\n", m)
-#else
-#define LOG_USER_THREAD(m)
-#endif
-
-#if DEBUG_LOGGING_PROFILER
-static int event_counter = 0;
-#define EVENT_MARK() printf ("[EVENT:%d]", ++ event_counter)
-#endif
-
-static void
-thread_stack_initialize_empty (ProfilerThreadStack *stack) {
-       stack->capacity = 0;
-       stack->top = 0;
-       stack->last_saved_top = 0;
-       stack->last_written_frame = 0;
-       stack->stack = NULL;
-       stack->method_is_jitted = NULL;
-       stack->written_frames = NULL;
-}
-
-static void
-thread_stack_free (ProfilerThreadStack *stack) {
-       stack->capacity = 0;
-       stack->top = 0;
-       stack->last_saved_top = 0;
-       stack->last_written_frame = 0;
-       if (stack->stack != NULL) {
-               g_free (stack->stack);
-               stack->stack = NULL;
-       }
-       if (stack->method_is_jitted != NULL) {
-               g_free (stack->method_is_jitted);
-               stack->method_is_jitted = NULL;
-       }
-       if (stack->written_frames != NULL) {
-               g_free (stack->written_frames);
-               stack->written_frames = NULL;
-       }
-}
-
-static void
-thread_stack_initialize (ProfilerThreadStack *stack, guint32 capacity) {
-       stack->capacity = capacity;
-       stack->top = 0;
-       stack->last_saved_top = 0;
-       stack->last_written_frame = 0;
-       stack->stack = g_new0 (MonoMethod*, capacity);
-       stack->method_is_jitted = g_new0 (guint8, capacity);
-       stack->written_frames = g_new0 (guint32, capacity);
-}
-
-static void
-thread_stack_push_jitted (ProfilerThreadStack *stack, MonoMethod* method, gboolean method_is_jitted) {
-       if (stack->top >= stack->capacity) {
-               MonoMethod **old_stack = stack->stack;
-               guint8 *old_method_is_jitted = stack->method_is_jitted;
-               guint32 *old_written_frames = stack->written_frames;
-               guint32 top = stack->top;
-               guint32 last_saved_top = stack->last_saved_top;
-               guint32 last_written_frame = stack->last_written_frame;
-               thread_stack_initialize (stack, stack->capacity * 2);
-               memcpy (stack->stack, old_stack, top * sizeof (MonoMethod*));
-               memcpy (stack->method_is_jitted, old_method_is_jitted, top * sizeof (guint8));
-               memcpy (stack->written_frames, old_written_frames, top * sizeof (guint32));
-               g_free (old_stack);
-               g_free (old_method_is_jitted);
-               g_free (old_written_frames);
-               stack->top = top;
-               stack->last_saved_top = last_saved_top;
-               stack->last_written_frame = last_written_frame;
-       }
-       stack->stack [stack->top] = method;
-       stack->method_is_jitted [stack->top] = method_is_jitted;
-       stack->top ++;
-}
-
-static inline void
-thread_stack_push (ProfilerThreadStack *stack, MonoMethod* method) {
-       thread_stack_push_jitted (stack, method, FALSE);
-}
-
-static MonoMethod*
-thread_stack_pop (ProfilerThreadStack *stack) {
-       if (stack->top > 0) {
-               stack->top --;
-               if (stack->last_saved_top > stack->top) {
-                       stack->last_saved_top = stack->top;
-               }
-               return stack->stack [stack->top];
-       } else {
-               return NULL;
-       }
-}
-
-static MonoMethod*
-thread_stack_top (ProfilerThreadStack *stack) {
-       if (stack->top > 0) {
-               return stack->stack [stack->top - 1];
-       } else {
-               return NULL;
-       }
-}
-
-static gboolean
-thread_stack_top_is_jitted (ProfilerThreadStack *stack) {
-       if (stack->top > 0) {
-               return stack->method_is_jitted [stack->top - 1];
-       } else {
-               return FALSE;
-       }
-}
-
-static MonoMethod*
-thread_stack_index_from_top (ProfilerThreadStack *stack, int index) {
-       if (stack->top > index) {
-               return stack->stack [stack->top - (index + 1)];
-       } else {
-               return NULL;
-       }
-}
-
-static gboolean
-thread_stack_index_from_top_is_jitted (ProfilerThreadStack *stack, int index) {
-       if (stack->top > index) {
-               return stack->method_is_jitted [stack->top - (index + 1)];
-       } else {
-               return FALSE;
-       }
-}
-
-static inline void
-thread_stack_push_safely (ProfilerThreadStack *stack, MonoMethod* method) {
-       if (stack->stack != NULL) {
-               thread_stack_push (stack, method);
-       }
-}
-
-static inline void
-thread_stack_push_jitted_safely (ProfilerThreadStack *stack, MonoMethod* method, gboolean method_is_jitted) {
-       if (stack->stack != NULL) {
-               thread_stack_push_jitted (stack, method, method_is_jitted);
-       }
-}
-
-static inline int
-thread_stack_count_unsaved_frames (ProfilerThreadStack *stack) {
-       int result = stack->top - stack->last_saved_top;
-       return (result > 0) ? result : 0;
-}
-
-static inline int
-thread_stack_get_last_written_frame (ProfilerThreadStack *stack) {
-       return stack->last_written_frame;
-}
-
-static inline void
-thread_stack_set_last_written_frame (ProfilerThreadStack *stack, int last_written_frame) {
-       stack->last_written_frame = last_written_frame;
-}
-
-static inline guint32
-thread_stack_written_frame_at_index (ProfilerThreadStack *stack, int index) {
-       return stack->written_frames [index];
-}
-
-static inline void
-thread_stack_write_frame_at_index (ProfilerThreadStack *stack, int index, guint32 method_id_and_is_jitted) {
-       stack->written_frames [index] = method_id_and_is_jitted;
-}
-
-static ClassIdMappingElement*
-class_id_mapping_element_get (MonoClass *klass) {
-       return g_hash_table_lookup (profiler->classes->table, (gconstpointer) klass);
-}
-
-static MethodIdMappingElement*
-method_id_mapping_element_get (MonoMethod *method) {
-       return g_hash_table_lookup (profiler->methods->table, (gconstpointer) method);
-}
-
-#define BITS_TO_BYTES(v) do {\
-       (v) += 7;\
-       (v) &= ~7;\
-       (v) >>= 3;\
-} while (0)
-
-static ClassIdMappingElement*
-class_id_mapping_element_new (MonoClass *klass) {
-       ClassIdMappingElement *result = g_new (ClassIdMappingElement, 1);
-       
-       result->name = mono_type_full_name (mono_class_get_type (klass));
-       result->klass = klass;
-       result->next_unwritten = profiler->classes->unwritten;
-       profiler->classes->unwritten = result;
-       result->id = profiler->classes->next_id;
-       profiler->classes->next_id ++;
-       
-       result->data.bitmap.compact = 0;
-       result->data.layout.slots = CLASS_LAYOUT_NOT_INITIALIZED;
-       result->data.layout.references = CLASS_LAYOUT_NOT_INITIALIZED;
-       
-       g_hash_table_insert (profiler->classes->table, klass, result);
-       
-#if (DEBUG_MAPPING_EVENTS)
-       printf ("Created new CLASS mapping element \"%s\" (%p)[%d]\n", result->name, klass, result->id);
-#endif
-       return result;
-}
-
-static void
-class_id_mapping_element_build_layout_bitmap (MonoClass *klass, ClassIdMappingElement *klass_id) {
-       MonoClass *parent_class = mono_class_get_parent (klass);
-       int number_of_reference_fields = 0;
-       int max_offset_of_reference_fields = 0;
-       ClassIdMappingElement *parent_id;
-       gpointer iter;
-       MonoClassField *field;
-       
-#if (DEBUG_CLASS_BITMAPS)
-       printf ("class_id_mapping_element_build_layout_bitmap: building layout for class %s.%s: ", mono_class_get_namespace (klass), mono_class_get_name (klass));
-#endif
-       
-       if (parent_class != NULL) {
-               parent_id = class_id_mapping_element_get (parent_class);
-               g_assert (parent_id != NULL);
-               
-               if (parent_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-#if (DEBUG_CLASS_BITMAPS)
-                       printf ("[recursively building bitmap for father class]\n");
-#endif
-                       class_id_mapping_element_build_layout_bitmap (parent_class, parent_id);
-               }
-       } else {
-               parent_id = NULL;
-       }
-       
-       iter = NULL;
-       while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
-               MonoType* field_type = mono_field_get_type (field);
-               // For now, skip static fields
-               if (mono_field_get_flags (field) & 0x0010 /*FIELD_ATTRIBUTE_STATIC*/)
-                       continue;
-               
-               if (MONO_TYPE_IS_REFERENCE (field_type)) {
-                       int field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-                       if (field_offset > max_offset_of_reference_fields) {
-                               max_offset_of_reference_fields = field_offset;
-                       }
-                       number_of_reference_fields ++;
-               } else {
-                       MonoClass *field_class = mono_class_from_mono_type (field_type);
-                       if (field_class && mono_class_is_valuetype (field_class)) {
-                               ClassIdMappingElement *field_id = class_id_mapping_element_get (field_class);
-                               g_assert (field_id != NULL);
-                               
-                               if (field_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-                                       if (field_id != klass_id) {
-#if (DEBUG_CLASS_BITMAPS)
-                                               printf ("[recursively building bitmap for field %s]\n", mono_field_get_name (field));
-#endif
-                                               class_id_mapping_element_build_layout_bitmap (field_class, field_id);
-                                       } else {
-#if (DEBUG_CLASS_BITMAPS)
-                                               printf ("[breaking recursive bitmap build for field %s]", mono_field_get_name (field));
-                                               
-#endif
-                                               klass_id->data.bitmap.compact = 0;
-                                               klass_id->data.layout.slots = 0;
-                                               klass_id->data.layout.references = 0;
-                                       }
-                               }
-                               
-                               if (field_id->data.layout.references > 0) {
-                                       int field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-                                       int max_offset_reference_in_field = (field_id->data.layout.slots - 1) * sizeof (gpointer);
-                                       
-                                       if ((field_offset + max_offset_reference_in_field) > max_offset_of_reference_fields) {
-                                               max_offset_of_reference_fields = field_offset + max_offset_reference_in_field;
-                                       }
-                                       
-                                       number_of_reference_fields += field_id->data.layout.references;
-                               }
-                       }
-               }
-       }
-       
-#if (DEBUG_CLASS_BITMAPS)
-       printf ("[allocating bitmap for class %s.%s (references %d, max offset %d, slots %d)]", mono_class_get_namespace (klass), mono_class_get_name (klass), number_of_reference_fields, max_offset_of_reference_fields, (int)(max_offset_of_reference_fields / sizeof (gpointer)) + 1);
-#endif
-       if ((number_of_reference_fields == 0) && ((parent_id == NULL) || (parent_id->data.layout.references == 0))) {
-#if (DEBUG_CLASS_BITMAPS)
-               printf ("[no references at all]");
-#endif
-               klass_id->data.bitmap.compact = 0;
-               klass_id->data.layout.slots = 0;
-               klass_id->data.layout.references = 0;
-       } else {
-               if ((parent_id != NULL) && (parent_id->data.layout.references > 0)) {
-#if (DEBUG_CLASS_BITMAPS)
-                       printf ("[parent %s.%s has %d references in %d slots]", mono_class_get_namespace (parent_class), mono_class_get_name (parent_class), parent_id->data.layout.references, parent_id->data.layout.slots);
-#endif
-                       klass_id->data.layout.slots = parent_id->data.layout.slots;
-                       klass_id->data.layout.references = parent_id->data.layout.references;
-               } else {
-#if (DEBUG_CLASS_BITMAPS)
-                       printf ("[no references from parent]");
-#endif
-                       klass_id->data.layout.slots = 0;
-                       klass_id->data.layout.references = 0;
-               }
-               
-               if (number_of_reference_fields > 0) {
-                       klass_id->data.layout.slots += ((max_offset_of_reference_fields / sizeof (gpointer)) + 1);
-                       klass_id->data.layout.references += number_of_reference_fields;
-#if (DEBUG_CLASS_BITMAPS)
-                       printf ("[adding data, going to %d references in %d slots]", klass_id->data.layout.references, klass_id->data.layout.slots);
-#endif
-               }
-               
-               if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-#if (DEBUG_CLASS_BITMAPS)
-                               printf ("[zeroing bitmap]");
-#endif
-                               klass_id->data.bitmap.compact = 0;
-                       if ((parent_id != NULL) && (parent_id->data.layout.references > 0)) {
-#if (DEBUG_CLASS_BITMAPS)
-                               printf ("[copying compact father bitmap]");
-#endif
-                               klass_id->data.bitmap.compact = parent_id->data.bitmap.compact;
-                       }
-               } else {
-                       int size_of_bitmap = klass_id->data.layout.slots;
-                       BITS_TO_BYTES (size_of_bitmap);
-#if (DEBUG_CLASS_BITMAPS)
-                       printf ("[allocating %d bytes for bitmap]", size_of_bitmap);
-#endif
-                       klass_id->data.bitmap.extended = g_malloc0 (size_of_bitmap);
-                       if ((parent_id != NULL) && (parent_id->data.layout.references > 0)) {
-                               int size_of_father_bitmap = parent_id->data.layout.slots;
-                               if (size_of_father_bitmap <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                                       int father_slot;
-#if (DEBUG_CLASS_BITMAPS)
-                                       printf ("[copying %d bits from father bitmap]", size_of_father_bitmap);
-#endif
-                                       for (father_slot = 0; father_slot < size_of_father_bitmap; father_slot ++) {
-                                               if (parent_id->data.bitmap.compact & (((guint64)1) << father_slot)) {
-                                                       klass_id->data.bitmap.extended [father_slot >> 3] |= (1 << (father_slot & 7));
-                                               }
-                                       }
-                               } else {
-                                       BITS_TO_BYTES (size_of_father_bitmap);
-#if (DEBUG_CLASS_BITMAPS)
-                                       printf ("[copying %d bytes from father bitmap]", size_of_father_bitmap);
-#endif
-                                       memcpy (klass_id->data.bitmap.extended, parent_id->data.bitmap.extended, size_of_father_bitmap);
-                               }
-                       }
-               }
-       }
-       
-#if (DEBUG_CLASS_BITMAPS)
-       printf ("[starting filling iteration]\n");
-#endif
-       iter = NULL;
-       while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
-               MonoType* field_type = mono_field_get_type (field);
-               // For now, skip static fields
-               if (mono_field_get_flags (field) & 0x0010 /*FIELD_ATTRIBUTE_STATIC*/)
-                       continue;
-               
-#if (DEBUG_CLASS_BITMAPS)
-               printf ("[Working on field %s]", mono_field_get_name (field));
-#endif
-               if (MONO_TYPE_IS_REFERENCE (field_type)) {
-                       int field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-                       int field_slot;
-                       g_assert ((field_offset % sizeof (gpointer)) == 0);
-                       field_slot = field_offset / sizeof (gpointer);
-                       if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                               klass_id->data.bitmap.compact |= (((guint64)1) << field_slot);
-                       } else {
-                               klass_id->data.bitmap.extended [field_slot >> 3] |= (1 << (field_slot & 7));
-                       }
-#if (DEBUG_CLASS_BITMAPS)
-                       printf ("[reference at offset %d, slot %d]", field_offset, field_slot);
-#endif
-               } else {
-                       MonoClass *field_class = mono_class_from_mono_type (field_type);
-                       if (field_class && mono_class_is_valuetype (field_class)) {
-                               ClassIdMappingElement *field_id = class_id_mapping_element_get (field_class);
-                               int field_offset;
-                               int field_slot;
-                               
-                               g_assert (field_id != NULL);
-                               field_offset = mono_field_get_offset (field) - sizeof (MonoObject);
-                               g_assert ((field_id->data.layout.references == 0) || ((field_offset % sizeof (gpointer)) == 0));
-                               field_slot = field_offset / sizeof (gpointer);
-#if (DEBUG_CLASS_BITMAPS)
-                               printf ("[value type at offset %d, slot %d, with %d references in %d slots]", field_offset, field_slot, field_id->data.layout.references, field_id->data.layout.slots);
-#endif
-                               
-                               if (field_id->data.layout.references > 0) {
-                                       int sub_field_slot;
-                                       if (field_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                                               for (sub_field_slot = 0; sub_field_slot < field_id->data.layout.slots; sub_field_slot ++) {
-                                                       if (field_id->data.bitmap.compact & (((guint64)1) << sub_field_slot)) {
-                                                               int actual_slot = field_slot + sub_field_slot;
-                                                               if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                                                                       klass_id->data.bitmap.compact |= (((guint64)1) << actual_slot);
-                                                               } else {
-                                                                       klass_id->data.bitmap.extended [actual_slot >> 3] |= (1 << (actual_slot & 7));
-                                                               }
-                                                       }
-                                               }
-                                       } else {
-                                               for (sub_field_slot = 0; sub_field_slot < field_id->data.layout.slots; sub_field_slot ++) {
-                                                       if (field_id->data.bitmap.extended [sub_field_slot >> 3] & (1 << (sub_field_slot & 7))) {
-                                                               int actual_slot = field_slot + sub_field_slot;
-                                                               if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                                                                       klass_id->data.bitmap.compact |= (((guint64)1) << actual_slot);
-                                                               } else {
-                                                                       klass_id->data.bitmap.extended [actual_slot >> 3] |= (1 << (actual_slot & 7));
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-#if (DEBUG_CLASS_BITMAPS)
-       do {
-               int slot;
-               printf ("\nLayot of class \"%s.%s\": references %d, slots %d, bitmap {", mono_class_get_namespace (klass), mono_class_get_name (klass), klass_id->data.layout.references, klass_id->data.layout.slots);
-               for (slot = 0; slot < klass_id->data.layout.slots; slot ++) {
-                       if (klass_id->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                               if (klass_id->data.bitmap.compact & (((guint64)1) << slot)) {
-                                       printf (" 1");
-                               } else {
-                                       printf (" 0");
-                               }
-                       } else {
-                               if (klass_id->data.bitmap.extended [slot >> 3] & (1 << (slot & 7))) {
-                                       printf (" 1");
-                               } else {
-                                       printf (" 0");
-                               }
-;                      }
-                       
-               }
-               printf (" }\n");
-               
-       } while (0);
-#endif
-}
-
-static MethodIdMappingElement*
-method_id_mapping_element_new (MonoMethod *method) {
-       MethodIdMappingElement *result = g_new (MethodIdMappingElement, 1);
-       char *signature = mono_signature_get_desc (mono_method_signature (method), TRUE);
-       
-       result->name = g_strdup_printf ("%s (%s)", mono_method_get_name (method), signature);
-       g_free (signature);
-       result->method = method;
-       result->next_unwritten = profiler->methods->unwritten;
-       profiler->methods->unwritten = result;
-       result->id = profiler->methods->next_id;
-       profiler->methods->next_id ++;
-       g_hash_table_insert (profiler->methods->table, method, result);
-       
-       result->data.code_start = NULL;
-       result->data.code_size = 0;
-       
-#if (DEBUG_MAPPING_EVENTS)
-       printf ("Created new METHOD mapping element \"%s\" (%p)[%d]\n", result->name, method, result->id);
-#endif
-       return result;
-}
-
-
-static void
-method_id_mapping_element_destroy (gpointer element) {
-       MethodIdMappingElement *e = (MethodIdMappingElement*) element;
-       if (e->name)
-               g_free (e->name);
-       g_free (element);
-}
-
-static void
-class_id_mapping_element_destroy (gpointer element) {
-       ClassIdMappingElement *e = (ClassIdMappingElement*) element;
-       if (e->name)
-               g_free (e->name);
-       if ((e->data.layout.slots != CLASS_LAYOUT_NOT_INITIALIZED) && (e->data.layout.slots > CLASS_LAYOUT_PACKED_BITMAP_SIZE))
-               g_free (e->data.bitmap.extended);
-       g_free (element);
-}
-
-static MethodIdMapping*
-method_id_mapping_new (void) {
-       MethodIdMapping *result = g_new (MethodIdMapping, 1);
-       //result->table = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, method_id_mapping_element_destroy);
-       result->table = g_hash_table_new_full (g_direct_hash, NULL, NULL, method_id_mapping_element_destroy);
-       result->unwritten = NULL;
-       result->next_id = 1;
-       return result;
-}
-
-static ClassIdMapping*
-class_id_mapping_new (void) {
-       ClassIdMapping *result = g_new (ClassIdMapping, 1);
-       //result->table = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, class_id_mapping_element_destroy);
-       result->table = g_hash_table_new_full (g_direct_hash, NULL, NULL, class_id_mapping_element_destroy);
-       result->unwritten = NULL;
-       result->next_id = 1;
-       return result;
-}
-
-static void
-method_id_mapping_destroy (MethodIdMapping *map) {
-       g_hash_table_destroy (map->table);
-       g_free (map);
-}
-
-static void
-class_id_mapping_destroy (ClassIdMapping *map) {
-       g_hash_table_destroy (map->table);
-       g_free (map);
-}
-
-#if (DEBUG_LOAD_EVENTS)
-static void
-print_load_event (const char *event_name, GHashTable *table, gpointer item, LoadedElement *element);
-#endif
-
-static LoadedElement*
-loaded_element_load_start (GHashTable *table, gpointer item) {
-       LoadedElement *element = g_new0 (LoadedElement, 1);
-       element->id = profiler->loaded_element_next_free_id;
-       profiler->loaded_element_next_free_id ++;
-#if (DEBUG_LOAD_EVENTS)
-       print_load_event ("LOAD START", table, item, element);
-#endif
-       MONO_PROFILER_GET_CURRENT_COUNTER (element->load_start_counter);
-       g_hash_table_insert (table, item, element);
-       return element;
-}
-
-static LoadedElement*
-loaded_element_load_end (GHashTable *table, gpointer item, char *name) {
-       LoadedElement *element = g_hash_table_lookup (table, item);
-#if (DEBUG_LOAD_EVENTS)
-       print_load_event ("LOAD END", table, item, element);
-#endif
-       g_assert (element != NULL);
-       MONO_PROFILER_GET_CURRENT_COUNTER (element->load_end_counter);
-       element->name = name;
-       element->loaded = TRUE;
-       return element;
-}
-
-static LoadedElement*
-loaded_element_unload_start (GHashTable *table, gpointer item) {
-       LoadedElement *element = g_hash_table_lookup (table, item);
-#if (DEBUG_LOAD_EVENTS)
-       print_load_event ("UNLOAD START", table, item, element);
-#endif
-       g_assert (element != NULL);
-       MONO_PROFILER_GET_CURRENT_COUNTER (element->unload_start_counter);
-       return element;
-}
-
-static LoadedElement*
-loaded_element_unload_end (GHashTable *table, gpointer item) {
-       LoadedElement *element = g_hash_table_lookup (table, item);
-#if (DEBUG_LOAD_EVENTS)
-       print_load_event ("UNLOAD END", table, item, element);
-#endif
-       g_assert (element != NULL);
-       MONO_PROFILER_GET_CURRENT_COUNTER (element->unload_end_counter);
-       element->unloaded = TRUE;
-       return element;
-}
-
-static LoadedElement*
-loaded_element_find (GHashTable *table, gpointer item) {
-       LoadedElement *element = g_hash_table_lookup (table, item);
-       return element;
-}
-
-static guint32
-loaded_element_get_id (GHashTable *table, gpointer item) {
-       LoadedElement *element = loaded_element_find (table, item);
-       if (element != NULL) {
-               return element->id;
-       } else {
-               return 0;
-       }
-}
-
-static void
-loaded_element_destroy (gpointer element) {
-       if (((LoadedElement*)element)->name)
-               g_free (((LoadedElement*)element)->name);
-       g_free (element);
-}
-
-#if (DEBUG_LOAD_EVENTS)
-static void
-print_load_event (const char *event_name, GHashTable *table, gpointer item, LoadedElement *element) {
-       const char* item_name;
-       char* item_info;
-       
-       if (table == profiler->loaded_assemblies) {
-               //item_info = g_strdup_printf("ASSEMBLY %p (dynamic %d)", item, mono_image_is_dynamic (mono_assembly_get_image((MonoAssembly*)item)));
-               item_info = g_strdup_printf("ASSEMBLY %p", item);
-       } else if (table == profiler->loaded_modules) {
-               //item_info = g_strdup_printf("MODULE %p (dynamic %d)", item, mono_image_is_dynamic ((MonoImage*)item));
-               item_info = g_strdup_printf("MODULE %p", item);
-       } else if (table == profiler->loaded_appdomains) {
-               item_info = g_strdup_printf("APPDOMAIN %p (id %d)", item, mono_domain_get_id ((MonoDomain*)item));
-       } else {
-               item_info = NULL;
-               g_assert_not_reached ();
-       }
-       
-       if (element != NULL) {
-               item_name = element->name;
-       } else {
-               item_name = "<NULL>";
-       }
-       
-       printf ("%s EVENT for %s (%s [id %d])\n", event_name, item_info, item_name, element->id);
-       g_free (item_info);
-}
-#endif
-
-static void
-profiler_heap_shot_object_buffers_destroy (ProfilerHeapShotObjectBuffer *buffer) {
-       while (buffer != NULL) {
-               ProfilerHeapShotObjectBuffer *next = buffer->next;
-#if DEBUG_HEAP_PROFILER
-               printf ("profiler_heap_shot_object_buffers_destroy: destroyed buffer %p (%p-%p)\n", buffer, & (buffer->buffer [0]), buffer->end);
-#endif
-               g_free (buffer);
-               buffer = next;
-       }
-}
-
-static ProfilerHeapShotObjectBuffer*
-profiler_heap_shot_object_buffer_new (ProfilerPerThreadData *data) {
-       ProfilerHeapShotObjectBuffer *buffer;
-       ProfilerHeapShotObjectBuffer *result = g_new (ProfilerHeapShotObjectBuffer, 1);
-       result->next_free_slot = & (result->buffer [0]);
-       result->end = & (result->buffer [PROFILER_HEAP_SHOT_OBJECT_BUFFER_SIZE]);
-       result->first_unprocessed_slot = & (result->buffer [0]);
-       result->next = data->heap_shot_object_buffers;
-       data->heap_shot_object_buffers = result;
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_object_buffer_new: created buffer %p (%p-%p)\n", result, result->next_free_slot, result->end);
-#endif
-       for (buffer = result; buffer != NULL; buffer = buffer->next) {
-               ProfilerHeapShotObjectBuffer *last = buffer->next;
-               if ((last != NULL) && (last->first_unprocessed_slot == last->end)) {
-                       buffer->next = NULL;
-                       profiler_heap_shot_object_buffers_destroy (last);
-               }
-       }
-       
-       return result;
-}
-
-static ProfilerHeapShotWriteJob*
-profiler_heap_shot_write_job_new (gboolean heap_shot_was_requested, gboolean dump_heap_data, guint32 collection) {
-       ProfilerHeapShotWriteJob *job = g_new (ProfilerHeapShotWriteJob, 1);
-       job->next = NULL;
-       job->next_unwritten = NULL;
-       
-       if (profiler->action_flags.unreachable_objects || dump_heap_data) {
-               job->buffers = g_new (ProfilerHeapShotWriteBuffer, 1);
-               job->buffers->next = NULL;
-               job->last_next = & (job->buffers->next);
-               job->start = & (job->buffers->buffer [0]);
-               job->cursor = job->start;
-               job->end = & (job->buffers->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);
-       } else {
-               job->buffers = NULL;
-               job->last_next = NULL;
-               job->start = NULL;
-               job->cursor = NULL;
-               job->end = NULL;
-       }
-       job->full_buffers = 0;
-       
-       if (profiler->action_flags.collection_summary) {
-               job->summary.capacity = profiler->classes->next_id;
-               job->summary.per_class_data = g_new0 (ProfilerHeapShotClassSummary, job->summary.capacity);
-       } else {
-               job->summary.capacity = 0;
-               job->summary.per_class_data = NULL;
-       }
-
-       job->heap_shot_was_requested = heap_shot_was_requested;
-       job->collection = collection;
-       job->dump_heap_data = dump_heap_data;
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_job_new: created job %p with buffer %p(%p-%p) (collection %d, dump %d)\n", job, job->buffers, job->start, job->end, collection, dump_heap_data);
-#endif
-       return job;
-}
-
-static gboolean
-profiler_heap_shot_write_job_has_data (ProfilerHeapShotWriteJob *job) {
-       return ((job->buffers != NULL) || (job->summary.capacity > 0));
-}
-
-static void
-profiler_heap_shot_write_job_add_buffer (ProfilerHeapShotWriteJob *job, gpointer value) {
-       ProfilerHeapShotWriteBuffer *buffer = g_new (ProfilerHeapShotWriteBuffer, 1);
-       buffer->next = NULL;
-       *(job->last_next) = buffer;
-       job->last_next = & (buffer->next);
-       job->full_buffers ++;
-       buffer->buffer [0] = value;
-       job->start = & (buffer->buffer [0]);
-       job->cursor = & (buffer->buffer [1]);
-       job->end = & (buffer->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_job_add_buffer: in job %p, added buffer %p(%p-%p) with value %p at address %p (cursor now %p)\n", job, buffer, job->start, job->end, value, &(buffer->buffer [0]), job->cursor);
-       do {
-               ProfilerHeapShotWriteBuffer *current_buffer;
-               for (current_buffer = job->buffers; current_buffer != NULL; current_buffer = current_buffer->next) {
-                       printf ("profiler_heap_shot_write_job_add_buffer: now job %p has buffer %p\n", job, current_buffer);
-               }
-       } while (0);
-#endif
-}
-
-static void
-profiler_heap_shot_write_job_free_buffers (ProfilerHeapShotWriteJob *job) {
-       ProfilerHeapShotWriteBuffer *buffer = job->buffers;
-       
-       while (buffer != NULL) {
-               ProfilerHeapShotWriteBuffer *next = buffer->next;
-#if DEBUG_HEAP_PROFILER
-               printf ("profiler_heap_shot_write_job_free_buffers: in job %p, freeing buffer %p\n", job, buffer);
-#endif
-               g_free (buffer);
-               buffer = next;
-       }
-       
-       job->buffers = NULL;
-       
-       if (job->summary.per_class_data != NULL) {
-               g_free (job->summary.per_class_data);
-               job->summary.per_class_data = NULL;
-       }
-       job->summary.capacity = 0;
-}
-
-static void
-profiler_heap_shot_write_block (ProfilerHeapShotWriteJob *job);
-
-static void
-profiler_process_heap_shot_write_jobs (void) {
-       gboolean done = FALSE;
-       
-       while (!done) {
-               ProfilerHeapShotWriteJob *current_job = profiler->heap_shot_write_jobs;
-               ProfilerHeapShotWriteJob *previous_job = NULL;
-               ProfilerHeapShotWriteJob *next_job;
-               
-               done = TRUE;
-               while (current_job != NULL) {
-                       next_job = current_job->next_unwritten;
-                       
-                       if (next_job != NULL) {
-                               if (profiler_heap_shot_write_job_has_data (current_job)) {
-                                       done = FALSE;
-                               }
-                               if (! profiler_heap_shot_write_job_has_data (next_job)) {
-                                       current_job->next_unwritten = NULL;
-                                       next_job = NULL;
-                               }
-                       } else {
-                               if (profiler_heap_shot_write_job_has_data (current_job)) {
-                                       LOG_WRITER_THREAD ("profiler_process_heap_shot_write_jobs: writing...");
-                                       profiler_heap_shot_write_block (current_job);
-                                       LOG_WRITER_THREAD ("profiler_process_heap_shot_write_jobs: done");
-                                       if (previous_job != NULL) {
-                                               previous_job->next_unwritten = NULL;
-                                       }
-                               }
-                       }
-                       
-                       previous_job = current_job;
-                       current_job = next_job;
-               }
-       }
-}
-
-static void
-profiler_free_heap_shot_write_jobs (void) {
-       ProfilerHeapShotWriteJob *current_job = profiler->heap_shot_write_jobs;
-       ProfilerHeapShotWriteJob *next_job;
-       
-       if (current_job != NULL) {
-               while (current_job->next_unwritten != NULL) {
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_free_heap_shot_write_jobs: job %p must not be freed\n", current_job);
-#endif
-                       current_job = current_job->next_unwritten;
-               }
-               
-               next_job = current_job->next;
-               current_job->next = NULL;
-               current_job = next_job;
-               
-               while (current_job != NULL) {
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_free_heap_shot_write_jobs: job %p will be freed\n", current_job);
-#endif
-                       next_job = current_job->next;
-                       profiler_heap_shot_write_job_free_buffers (current_job);
-                       g_free (current_job);
-                       current_job = next_job;
-               }
-       }
-}
-
-static void
-profiler_destroy_heap_shot_write_jobs (void) {
-       ProfilerHeapShotWriteJob *current_job = profiler->heap_shot_write_jobs;
-       ProfilerHeapShotWriteJob *next_job;
-       
-       while (current_job != NULL) {
-               next_job = current_job->next;
-               profiler_heap_shot_write_job_free_buffers (current_job);
-               g_free (current_job);
-               current_job = next_job;
-       }
-}
-
-static void
-profiler_add_heap_shot_write_job (ProfilerHeapShotWriteJob *job) {
-       job->next = profiler->heap_shot_write_jobs;
-       job->next_unwritten = job->next;
-       profiler->heap_shot_write_jobs = job;
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_add_heap_shot_write_job: added job %p\n", job);
-#endif
-}
-
-#if DEBUG_HEAP_PROFILER
-#define STORE_ALLOCATED_OBJECT_MESSAGE1(d,o) printf ("STORE_ALLOCATED_OBJECT[TID %ld]: storing object %p at address %p\n", (d)->thread_id, (o), (d)->heap_shot_object_buffers->next_free_slot)
-#define STORE_ALLOCATED_OBJECT_MESSAGE2(d,o) printf ("STORE_ALLOCATED_OBJECT[TID %ld]: storing object %p at address %p in new buffer %p\n", (d)->thread_id, (o), buffer->next_free_slot, buffer)
-#else
-#define STORE_ALLOCATED_OBJECT_MESSAGE1(d,o)
-#define STORE_ALLOCATED_OBJECT_MESSAGE2(d,o)
-#endif
-#define STORE_ALLOCATED_OBJECT(d,o) do {\
-       if ((d)->heap_shot_object_buffers->next_free_slot < (d)->heap_shot_object_buffers->end) {\
-               STORE_ALLOCATED_OBJECT_MESSAGE1 ((d), (o));\
-               *((d)->heap_shot_object_buffers->next_free_slot) = (o);\
-               (d)->heap_shot_object_buffers->next_free_slot ++;\
-       } else {\
-               ProfilerHeapShotObjectBuffer *buffer = profiler_heap_shot_object_buffer_new (d);\
-               STORE_ALLOCATED_OBJECT_MESSAGE2 ((d), (o));\
-               *((buffer)->next_free_slot) = (o);\
-               (buffer)->next_free_slot ++;\
-       }\
-} while (0)
-
-static ProfilerPerThreadData*
-profiler_per_thread_data_new (guint32 buffer_size)
-{
-       ProfilerPerThreadData *data = g_new (ProfilerPerThreadData, 1);
-
-       data->events = g_new0 (ProfilerEventData, buffer_size);
-       data->next_free_event = data->events;
-       data->next_unreserved_event = data->events;
-       data->end_event = data->events + (buffer_size - 1);
-       data->first_unwritten_event = data->events;
-       data->first_unmapped_event = data->events;
-       MONO_PROFILER_GET_CURRENT_COUNTER (data->start_event_counter);
-       data->last_event_counter = data->start_event_counter;
-       data->thread_id = CURRENT_THREAD_ID ();
-       data->heap_shot_object_buffers = NULL;
-       if ((profiler->action_flags.unreachable_objects == TRUE) ||
-                       (profiler->action_flags.heap_shot == TRUE) ||
-                       (profiler->action_flags.collection_summary == TRUE)) {
-               profiler_heap_shot_object_buffer_new (data);
-       }
-       if (profiler->action_flags.track_stack) {
-               thread_stack_initialize (&(data->stack), 64);
-       } else {
-               thread_stack_initialize_empty (&(data->stack));
-       }
-       return data;
-}
-
-static void
-profiler_per_thread_data_destroy (ProfilerPerThreadData *data) {
-       g_free (data->events);
-       profiler_heap_shot_object_buffers_destroy (data->heap_shot_object_buffers);
-       thread_stack_free (&(data->stack));
-       g_free (data);
-}
-
-static ProfilerStatisticalData*
-profiler_statistical_data_new (MonoProfiler *profiler) {
-       int buffer_size = profiler->statistical_buffer_size * (profiler->statistical_call_chain_depth + 1);
-       ProfilerStatisticalData *data = g_new (ProfilerStatisticalData, 1);
-
-       data->hits = g_new0 (ProfilerStatisticalHit, buffer_size);
-       data->next_free_index = 0;
-       data->end_index = profiler->statistical_buffer_size;
-       data->first_unwritten_index = 0;
-       
-       return data;
-}
-
-static void
-profiler_statistical_data_destroy (ProfilerStatisticalData *data) {
-       g_free (data->hits);
-       g_free (data);
-}
-
-static ProfilerCodeBufferArray*
-profiler_code_buffer_array_new (ProfilerCodeBufferArray *child) {
-       ProfilerCodeBufferArray *result = g_new0 (ProfilerCodeBufferArray, 1);
-       if (child == NULL) {
-               result->level = 0;
-       } else {
-               result->level = child->level + 1;
-               result->number_of_buffers = 1;
-               result->buffers [0].info.data.sub_buffers = child;
-               result->buffers [0].start = child->buffers [0].start;
-               result->buffers [0].end = child->buffers [child->number_of_buffers - 1].end;
-       }
-       return result;
-}
-
-static void
-profiler_code_buffer_array_destroy (ProfilerCodeBufferArray *buffers) {
-       if (buffers->level > 0) {
-               int i;
-               for (i = 0; i < buffers->number_of_buffers; i++) {
-                       ProfilerCodeBufferArray *sub_buffers = buffers->buffers [i].info.data.sub_buffers;
-                       profiler_code_buffer_array_destroy (sub_buffers);
-               }
-       }
-       g_free (buffers);
-}
-
-static gboolean
-profiler_code_buffer_array_is_full (ProfilerCodeBufferArray *buffers) {
-       while (buffers->level > 0) {
-               ProfilerCodeBufferArray *next;
-               if (buffers->number_of_buffers < PROFILER_CODE_BUFFER_ARRAY_SIZE) {
-                       return FALSE;
-               }
-               next = buffers->buffers [PROFILER_CODE_BUFFER_ARRAY_SIZE - 1].info.data.sub_buffers;
-               if (next->level < (buffers->level - 1)) {
-                       return FALSE;
-               }
-               buffers = next;
-       }
-       return (buffers->number_of_buffers == PROFILER_CODE_BUFFER_ARRAY_SIZE);
-}
-
-static ProfilerCodeBufferArray*
-profiler_code_buffer_add (ProfilerCodeBufferArray *buffers, gpointer *buffer, int size, MonoProfilerCodeBufferType type, void *data) {
-       if (buffers == NULL) {
-               buffers = profiler_code_buffer_array_new (NULL);
-       }
-       
-       if (profiler_code_buffer_array_is_full (buffers)) {
-               ProfilerCodeBufferArray *new_slot = profiler_code_buffer_add (NULL, buffer, size, type, data);
-               buffers = profiler_code_buffer_array_new (buffers);
-               buffers->buffers [buffers->number_of_buffers].info.data.sub_buffers = new_slot;
-               buffers->buffers [buffers->number_of_buffers].start = new_slot->buffers [0].start;
-               buffers->buffers [buffers->number_of_buffers].end = new_slot->buffers [new_slot->number_of_buffers - 1].end;
-               buffers->number_of_buffers ++;
-       } else if (buffers->level > 0) {
-               ProfilerCodeBufferArray *new_slot = profiler_code_buffer_add (buffers->buffers [buffers->number_of_buffers - 1].info.data.sub_buffers, buffer, size, type, data);
-               buffers->buffers [buffers->number_of_buffers - 1].info.data.sub_buffers = new_slot;
-               buffers->buffers [buffers->number_of_buffers - 1].start = new_slot->buffers [0].start;
-               buffers->buffers [buffers->number_of_buffers - 1].end = new_slot->buffers [new_slot->number_of_buffers - 1].end;
-       } else {
-               buffers->buffers [buffers->number_of_buffers].start = buffer;
-               buffers->buffers [buffers->number_of_buffers].end = (((guint8*) buffer) + size);
-               buffers->buffers [buffers->number_of_buffers].info.type = type;
-               switch (type) {
-               case MONO_PROFILER_CODE_BUFFER_UNKNOWN:
-                       buffers->buffers [buffers->number_of_buffers].info.data.data = NULL;
-                       break;
-               case MONO_PROFILER_CODE_BUFFER_METHOD:
-                       buffers->buffers [buffers->number_of_buffers].info.data.method = data;
-                       break;
-               default:
-                       buffers->buffers [buffers->number_of_buffers].info.type = MONO_PROFILER_CODE_BUFFER_UNKNOWN;
-                       buffers->buffers [buffers->number_of_buffers].info.data.data = NULL;
-               }
-               buffers->number_of_buffers ++;
-       }
-       return buffers;
-}
-
-static ProfilerCodeBuffer*
-profiler_code_buffer_find (ProfilerCodeBufferArray *buffers, gpointer *address) {
-       if (buffers != NULL) {
-               ProfilerCodeBuffer *result = NULL;
-               do {
-                       int low = 0;
-                       int high = buffers->number_of_buffers - 1;
-                       
-                       while (high != low) {
-                               int middle = low + ((high - low) >> 1);
-                               
-                               if ((guint8*) address < (guint8*) buffers->buffers [low].start) {
-                                       return NULL;
-                               }
-                               if ((guint8*) address >= (guint8*) buffers->buffers [high].end) {
-                                       return NULL;
-                               }
-                               
-                               if ((guint8*) address < (guint8*) buffers->buffers [middle].start) {
-                                       high = middle - 1;
-                                       if (high < low) {
-                                               high = low;
-                                       }
-                               } else if ((guint8*) address >= (guint8*) buffers->buffers [middle].end) {
-                                       low = middle + 1;
-                                       if (low > high) {
-                                               low = high;
-                                       }
-                               } else {
-                                       high = middle;
-                                       low = middle;
-                               }
-                       }
-                       
-                       if (((guint8*) address >= (guint8*) buffers->buffers [low].start) && ((guint8*) address < (guint8*) buffers->buffers [low].end)) {
-                               if (buffers->level == 0) {
-                                       result = & (buffers->buffers [low]);
-                               } else {
-                                       buffers = buffers->buffers [low].info.data.sub_buffers;
-                               }
-                       } else {
-                               return NULL;
-                       }
-               } while (result == NULL);
-               return result;
-       } else {
-               return NULL;
-       }
-}
-
-static void
-profiler_code_chunk_initialize (ProfilerCodeChunk *chunk, gpointer memory, gsize size) {
-       chunk->buffers = profiler_code_buffer_array_new (NULL);
-       chunk->destroyed = FALSE;
-       chunk->start = memory;
-       chunk->end = ((guint8*)memory) + size;
-}
-
-static void
-profiler_code_chunk_cleanup (ProfilerCodeChunk *chunk) {
-       if (chunk->buffers != NULL) {
-               profiler_code_buffer_array_destroy (chunk->buffers);
-               chunk->buffers = NULL;
-       }
-       chunk->start = NULL;
-       chunk->end = NULL;
-}
-
-static void
-profiler_code_chunks_initialize (ProfilerCodeChunks *chunks) {
-       chunks->capacity = 32;
-       chunks->chunks = g_new0 (ProfilerCodeChunk, 32);
-       chunks->number_of_chunks = 0;
-}
-
-static void
-profiler_code_chunks_cleanup (ProfilerCodeChunks *chunks) {
-       int i;
-       for (i = 0; i < chunks->number_of_chunks; i++) {
-               profiler_code_chunk_cleanup (& (chunks->chunks [i]));
-       }
-       chunks->capacity = 0;
-       chunks->number_of_chunks = 0;
-       g_free (chunks->chunks);
-       chunks->chunks = NULL;
-}
-
-static int
-compare_code_chunks (const void* c1, const void* c2) {
-       ProfilerCodeChunk *chunk1 = (ProfilerCodeChunk*) c1;
-       ProfilerCodeChunk *chunk2 = (ProfilerCodeChunk*) c2;
-       return ((guint8*) chunk1->end < (guint8*) chunk2->start) ? -1 : (((guint8*) chunk1->start >= (guint8*) chunk2->end) ? 1 : 0);
-}
-
-static int
-compare_address_and_code_chunk (const void* a, const void* c) {
-       gpointer address = (gpointer) a;
-       ProfilerCodeChunk *chunk = (ProfilerCodeChunk*) c;
-       return ((guint8*) address < (guint8*) chunk->start) ? -1 : (((guint8*) address >= (guint8*) chunk->end) ? 1 : 0);
-}
-
-static void
-profiler_code_chunks_sort (ProfilerCodeChunks *chunks) {
-       qsort (chunks->chunks, chunks->number_of_chunks, sizeof (ProfilerCodeChunk), compare_code_chunks);
-}
-
-static ProfilerCodeChunk*
-profiler_code_chunk_find (ProfilerCodeChunks *chunks, gpointer address) {
-       return bsearch (address, chunks->chunks, chunks->number_of_chunks, sizeof (ProfilerCodeChunk), compare_address_and_code_chunk);
-}
-
-static ProfilerCodeChunk*
-profiler_code_chunk_new (ProfilerCodeChunks *chunks, gpointer memory, gsize size) {
-       ProfilerCodeChunk *result;
-       
-       if (chunks->number_of_chunks == chunks->capacity) {
-               ProfilerCodeChunk *new_chunks = g_new0 (ProfilerCodeChunk, chunks->capacity * 2);
-               memcpy (new_chunks, chunks->chunks, chunks->capacity * sizeof (ProfilerCodeChunk));
-               chunks->capacity *= 2;
-               g_free (chunks->chunks);
-               chunks->chunks = new_chunks;
-       }
-       
-       result = & (chunks->chunks [chunks->number_of_chunks]);
-       chunks->number_of_chunks ++;
-       profiler_code_chunk_initialize (result, memory, size);
-       profiler_code_chunks_sort (chunks);
-       return result;
-}
-
-static int
-profiler_code_chunk_to_index (ProfilerCodeChunks *chunks, ProfilerCodeChunk *chunk) {
-       return (int) (chunk - chunks->chunks);
-}
-
-static void
-profiler_code_chunk_remove (ProfilerCodeChunks *chunks, ProfilerCodeChunk *chunk) {
-       int index = profiler_code_chunk_to_index (chunks, chunk);
-       
-       profiler_code_chunk_cleanup (chunk);
-       if ((index >= 0) && (index < chunks->number_of_chunks)) {
-               memmove (chunk, chunk + 1, (chunks->number_of_chunks - index) * sizeof (ProfilerCodeChunk));
-       }
-}
-
-/* This assumes the profiler lock is held */
-static ProfilerCodeBuffer*
-profiler_code_buffer_from_address (MonoProfiler *prof, gpointer address) {
-       ProfilerCodeChunks *chunks = & (prof->code_chunks);
-       
-       ProfilerCodeChunk *chunk = profiler_code_chunk_find (chunks, address);
-       if (chunk != NULL) {
-               return profiler_code_buffer_find (chunk->buffers, address);
-       } else {
-               return NULL;
-       }
-}
-
-static void
-profiler_code_chunk_new_callback (MonoProfiler *prof, gpointer address, int size) {
-       ProfilerCodeChunks *chunks = & (prof->code_chunks);
-       
-       if (prof->code_chunks.chunks != NULL) {
-               LOCK_PROFILER ();
-               profiler_code_chunk_new (chunks, address, size);
-               UNLOCK_PROFILER ();
-       }
-}
-
-static void
-profiler_code_chunk_destroy_callback  (MonoProfiler *prof, gpointer address) {
-       ProfilerCodeChunks *chunks = & (prof->code_chunks);
-       ProfilerCodeChunk *chunk;
-       
-       if (prof->code_chunks.chunks != NULL) {
-               LOCK_PROFILER ();
-               chunk = profiler_code_chunk_find (chunks, address);
-               if (chunk != NULL) {
-                       profiler_code_chunk_remove (chunks, chunk);
-               }
-               UNLOCK_PROFILER ();
-       }
-}
-
-static void
-profiler_code_buffer_new_callback  (MonoProfiler *prof, gpointer address, int size, MonoProfilerCodeBufferType type, void *data) {
-       ProfilerCodeChunks *chunks = & (prof->code_chunks);
-       ProfilerCodeChunk *chunk;
-       
-       if (prof->code_chunks.chunks != NULL) {
-               LOCK_PROFILER ();
-               chunk = profiler_code_chunk_find (chunks, address);
-               if (chunk != NULL) {
-                       chunk->buffers = profiler_code_buffer_add (chunk->buffers, address, size, type, data);
-               }
-               UNLOCK_PROFILER ();
-       }
-}
-
-static void
-profiler_add_write_buffer (void) {
-       if (profiler->current_write_buffer->next == NULL) {
-               profiler->current_write_buffer->next = g_malloc (sizeof (ProfilerFileWriteBuffer) + PROFILER_FILE_WRITE_BUFFER_SIZE);
-               profiler->current_write_buffer->next->next = NULL;
-               
-               //printf ("Added next buffer %p, to buffer %p\n", profiler->current_write_buffer->next, profiler->current_write_buffer);
-               
-       }
-       profiler->current_write_buffer = profiler->current_write_buffer->next;
-       profiler->current_write_position = 0;
-       profiler->full_write_buffers ++;
-}
-
-static void
-profiler_free_write_buffers (void) {
-       ProfilerFileWriteBuffer *current_buffer = profiler->write_buffers;
-       while (current_buffer != NULL) {
-               ProfilerFileWriteBuffer *next_buffer = current_buffer->next;
-               
-               //printf ("Freeing write buffer %p, next is %p\n", current_buffer, next_buffer);
-               
-               g_free (current_buffer);
-               current_buffer = next_buffer;
-       }
-}
-
-#define WRITE_BYTE(b) do {\
-       if (profiler->current_write_position >= PROFILER_FILE_WRITE_BUFFER_SIZE) {\
-               profiler_add_write_buffer ();\
-       }\
-       profiler->current_write_buffer->buffer [profiler->current_write_position] = (b);\
-       profiler->current_write_position ++;\
-} while (0)
-
-#if (DEBUG_FILE_WRITES)
-static int bytes_written = 0;
-#endif
-
-static void
-write_current_block (guint16 code) {
-       guint32 size = (profiler->full_write_buffers * PROFILER_FILE_WRITE_BUFFER_SIZE) + profiler->current_write_position;
-       ProfilerFileWriteBuffer *current_buffer = profiler->write_buffers;
-       guint64 current_counter;
-       guint32 counter_delta;
-       guint8 header [10];
-       
-       MONO_PROFILER_GET_CURRENT_COUNTER (current_counter);
-       if (profiler->last_header_counter != 0) {
-               counter_delta = current_counter - profiler->last_header_counter;
-       } else {
-               counter_delta = 0;
-       }
-       profiler->last_header_counter = current_counter;
-       
-       header [0] = code & 0xff;
-       header [1] = (code >> 8) & 0xff;
-       header [2] = size & 0xff;
-       header [3] = (size >> 8) & 0xff;
-       header [4] = (size >> 16) & 0xff;
-       header [5] = (size >> 24) & 0xff;
-       header [6] = counter_delta & 0xff;
-       header [7] = (counter_delta >> 8) & 0xff;
-       header [8] = (counter_delta >> 16) & 0xff;
-       header [9] = (counter_delta >> 24) & 0xff;
-       
-#if (DEBUG_FILE_WRITES)
-       printf ("write_current_block: writing header (code %d) at offset %d\n", code, bytes_written);
-       bytes_written += 10;
-#endif
-       WRITE_BUFFER (& (header [0]), 10);
-       
-       while ((current_buffer != NULL) && (profiler->full_write_buffers > 0)) {
-#if (DEBUG_FILE_WRITES)
-               printf ("write_current_block: writing buffer (size %d)\n", PROFILER_FILE_WRITE_BUFFER_SIZE);
-               bytes_written += PROFILER_FILE_WRITE_BUFFER_SIZE;
-#endif
-               WRITE_BUFFER (& (current_buffer->buffer [0]), PROFILER_FILE_WRITE_BUFFER_SIZE);
-               profiler->full_write_buffers --;
-               current_buffer = current_buffer->next;
-       }
-       if (profiler->current_write_position > 0) {
-#if (DEBUG_FILE_WRITES)
-               printf ("write_current_block: writing last buffer (size %d)\n", profiler->current_write_position);
-               bytes_written += profiler->current_write_position;
-#endif
-               WRITE_BUFFER (& (current_buffer->buffer [0]), profiler->current_write_position);
-       }
-       FLUSH_FILE ();
-#if (DEBUG_FILE_WRITES)
-       printf ("write_current_block: buffers flushed (file size %d)\n", bytes_written);
-#endif
-       
-       profiler->current_write_buffer = profiler->write_buffers;
-       profiler->current_write_position = 0;
-       profiler->full_write_buffers = 0;
-}
-
-
-#define SEVEN_BITS_MASK (0x7f)
-#define EIGHT_BIT_MASK (0x80)
-
-static void
-write_uint32 (guint32 value) {
-       while (value > SEVEN_BITS_MASK) {
-               WRITE_BYTE (value & SEVEN_BITS_MASK);
-               value >>= 7;
-       }
-       WRITE_BYTE (value | EIGHT_BIT_MASK);
-}
-static void
-write_uint64 (guint64 value) {
-       while (value > SEVEN_BITS_MASK) {
-               WRITE_BYTE (value & SEVEN_BITS_MASK);
-               value >>= 7;
-       }
-       WRITE_BYTE (value | EIGHT_BIT_MASK);
-}
-static void
-write_string (const char *string) {
-       while (*string != 0) {
-               WRITE_BYTE (*string);
-               string ++;
-       }
-       WRITE_BYTE (0);
-}
-
-static void write_clock_data (void);
-static void
-write_directives_block (gboolean start) {
-       write_clock_data ();
-       
-       if (start) {
-               if (profiler->action_flags.save_allocation_caller) {
-                       write_uint32 (MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_CALLER);
-               }
-               if (profiler->action_flags.save_allocation_stack || profiler->action_flags.track_calls) {
-                       write_uint32 (MONO_PROFILER_DIRECTIVE_ALLOCATIONS_HAVE_STACK);
-               }
-               if (profiler->action_flags.allocations_carry_id) {
-                       write_uint32 (MONO_PROFILER_DIRECTIVE_ALLOCATIONS_CARRY_ID);
-               }
-               write_uint32 (MONO_PROFILER_DIRECTIVE_LOADED_ELEMENTS_CARRY_ID);
-               write_uint32 (MONO_PROFILER_DIRECTIVE_CLASSES_CARRY_ASSEMBLY_ID);
-               write_uint32 (MONO_PROFILER_DIRECTIVE_METHODS_CARRY_WRAPPER_FLAG);
-       }
-       write_uint32 (MONO_PROFILER_DIRECTIVE_END);
-       
-       write_clock_data ();
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_DIRECTIVES);
-}
-
-#if DEBUG_HEAP_PROFILER
-#define WRITE_HEAP_SHOT_JOB_VALUE_MESSAGE(v,c) printf ("WRITE_HEAP_SHOT_JOB_VALUE: writing value %p at cursor %p\n", (v), (c))
-#else
-#define WRITE_HEAP_SHOT_JOB_VALUE_MESSAGE(v,c)
-#endif
-#define WRITE_HEAP_SHOT_JOB_VALUE(j,v) do {\
-       if ((j)->cursor < (j)->end) {\
-               WRITE_HEAP_SHOT_JOB_VALUE_MESSAGE ((v), ((j)->cursor));\
-               *((j)->cursor) = (v);\
-               (j)->cursor ++;\
-       } else {\
-               profiler_heap_shot_write_job_add_buffer (j, v);\
-       }\
-} while (0)
-
-
-#undef GUINT_TO_POINTER
-#undef GPOINTER_TO_UINT
-#if (SIZEOF_VOID_P == 4)
-#define GUINT_TO_POINTER(u) ((void*)(guint32)(u))
-#define GPOINTER_TO_UINT(p) ((guint32)(void*)(p))
-#elif (SIZEOF_VOID_P == 8)
-#define GUINT_TO_POINTER(u) ((void*)(guint64)(u))
-#define GPOINTER_TO_UINT(p) ((guint64)(void*)(p))
-#else
-#error Bad size of void pointer
-#endif
-
-#define WRITE_HEAP_SHOT_JOB_VALUE_WITH_CODE(j,v,c) WRITE_HEAP_SHOT_JOB_VALUE (j, GUINT_TO_POINTER (GPOINTER_TO_UINT (v)|(c)))
-
-#if DEBUG_HEAP_PROFILER
-#define UPDATE_JOB_BUFFER_CURSOR_MESSAGE() printf ("profiler_heap_shot_write_block[UPDATE_JOB_BUFFER_CURSOR]: in job %p, moving to buffer %p and cursor %p\n", job, buffer, cursor)
-#else
-#define UPDATE_JOB_BUFFER_CURSOR_MESSAGE()
-#endif
-#define UPDATE_JOB_BUFFER_CURSOR() do {\
-       cursor++;\
-       if (cursor >= end) {\
-               buffer = buffer->next;\
-               if (buffer != NULL) {\
-                       cursor = & (buffer->buffer [0]);\
-                       if (buffer->next != NULL) {\
-                               end = & (buffer->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);\
-                       } else {\
-                               end = job->cursor;\
-                       }\
-               } else {\
-                       cursor = NULL;\
-               }\
-       }\
-       UPDATE_JOB_BUFFER_CURSOR_MESSAGE ();\
-} while (0)
-
-static void
-profiler_heap_shot_write_data_block (ProfilerHeapShotWriteJob *job) {
-       ProfilerHeapShotWriteBuffer *buffer;
-       gpointer* cursor;
-       gpointer* end;
-       guint64 start_counter;
-       guint64 start_time;
-       guint64 end_counter;
-       guint64 end_time;
-       
-       write_uint64 (job->start_counter);
-       write_uint64 (job->start_time);
-       write_uint64 (job->end_counter);
-       write_uint64 (job->end_time);
-       write_uint32 (job->collection);
-       MONO_PROFILER_GET_CURRENT_COUNTER (start_counter);
-       MONO_PROFILER_GET_CURRENT_TIME (start_time);
-       write_uint64 (start_counter);
-       write_uint64 (start_time);
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_data_block: start writing job %p (start %p, end %p)...\n", job, & (job->buffers->buffer [0]), job->cursor);
-#endif
-       buffer = job->buffers;
-       cursor = & (buffer->buffer [0]);
-       if (buffer->next != NULL) {
-               end = & (buffer->buffer [PROFILER_HEAP_SHOT_WRITE_BUFFER_SIZE]);
-       } else {
-               end = job->cursor;
-       }
-       if (cursor >= end) {
-               cursor = NULL;
-       }
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_data_block: in job %p, starting at buffer %p and cursor %p\n", job, buffer, cursor);
-#endif
-       while (cursor != NULL) {
-               gpointer value = *cursor;
-               HeapProfilerJobValueCode code = GPOINTER_TO_UINT (value) & HEAP_CODE_MASK;
-#if DEBUG_HEAP_PROFILER
-               printf ("profiler_heap_shot_write_data_block: got value %p and code %d\n", value, code);
-#endif
-               
-               UPDATE_JOB_BUFFER_CURSOR ();
-               if (code == HEAP_CODE_FREE_OBJECT_CLASS) {
-                       MonoClass *klass = GUINT_TO_POINTER (GPOINTER_TO_UINT (value) & (~ (guint64) HEAP_CODE_MASK));
-                       //MonoClass *klass = GUINT_TO_POINTER (GPOINTER_TO_UINT (value) % 4);
-                       ClassIdMappingElement *class_id;
-                       guint32 size;
-                       
-                       class_id = class_id_mapping_element_get (klass);
-                       if (class_id == NULL) {
-                               printf ("profiler_heap_shot_write_data_block: unknown class %p", klass);
-                       }
-                       g_assert (class_id != NULL);
-                       write_uint32 ((class_id->id << 2) | HEAP_CODE_FREE_OBJECT_CLASS);
-                       
-                       size = GPOINTER_TO_UINT (*cursor);
-                       UPDATE_JOB_BUFFER_CURSOR ();
-                       write_uint32 (size);
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_shot_write_data_block: wrote unreachable object of class %p (id %d, size %d)\n", klass, class_id->id, size);
-#endif
-               } else if (code == HEAP_CODE_OBJECT) {
-                       MonoObject *object = GUINT_TO_POINTER (GPOINTER_TO_UINT (value) & (~ (guint64) HEAP_CODE_MASK));
-                       MonoClass *klass = mono_object_get_class (object);
-                       ClassIdMappingElement *class_id = class_id_mapping_element_get (klass);
-                       guint32 size = mono_object_get_size (object);
-                       guint32 references = GPOINTER_TO_UINT (*cursor);
-                       UPDATE_JOB_BUFFER_CURSOR ();
-                       
-                       if (class_id == NULL) {
-                               printf ("profiler_heap_shot_write_data_block: unknown class %p", klass);
-                       }
-                       g_assert (class_id != NULL);
-                       
-                       write_uint64 (GPOINTER_TO_UINT (value));
-                       write_uint32 (class_id->id);
-                       write_uint32 (size);
-                       write_uint32 (references);
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_shot_write_data_block: writing object %p (references %d)\n", value, references);
-#endif
-                       
-                       while (references > 0) {
-                               gpointer reference = *cursor;
-                               write_uint64 (GPOINTER_TO_UINT (reference));
-                               UPDATE_JOB_BUFFER_CURSOR ();
-                               references --;
-#if DEBUG_HEAP_PROFILER
-                               printf ("profiler_heap_shot_write_data_block:   inside object %p, wrote reference %p)\n", value, reference);
-#endif
-                       }
-               } else {
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_shot_write_data_block: unknown code %d in value %p\n", code, value);
-#endif
-                       g_assert_not_reached ();
-               }
-       }
-       write_uint32 (0);
-       
-       MONO_PROFILER_GET_CURRENT_COUNTER (end_counter);
-       MONO_PROFILER_GET_CURRENT_TIME (end_time);
-       write_uint64 (end_counter);
-       write_uint64 (end_time);
-       
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_HEAP_DATA);
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_data_block: writing job %p done.\n", job);
-#endif
-}
-static void
-profiler_heap_shot_write_summary_block (ProfilerHeapShotWriteJob *job) {
-       guint64 start_counter;
-       guint64 start_time;
-       guint64 end_counter;
-       guint64 end_time;
-       int id;
-       
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_summary_block: start writing job %p...\n", job);
-#endif
-       MONO_PROFILER_GET_CURRENT_COUNTER (start_counter);
-       MONO_PROFILER_GET_CURRENT_TIME (start_time);
-       write_uint64 (start_counter);
-       write_uint64 (start_time);
-       
-       write_uint32 (job->collection);
-       
-       for (id = 0; id < job->summary.capacity; id ++) {
-               if ((job->summary.per_class_data [id].reachable.instances > 0) || (job->summary.per_class_data [id].unreachable.instances > 0)) {
-                       write_uint32 (id);
-                       write_uint32 (job->summary.per_class_data [id].reachable.instances);
-                       write_uint32 (job->summary.per_class_data [id].reachable.bytes);
-                       write_uint32 (job->summary.per_class_data [id].unreachable.instances);
-                       write_uint32 (job->summary.per_class_data [id].unreachable.bytes);
-               }
-       }
-       write_uint32 (0);
-       
-       MONO_PROFILER_GET_CURRENT_COUNTER (end_counter);
-       MONO_PROFILER_GET_CURRENT_TIME (end_time);
-       write_uint64 (end_counter);
-       write_uint64 (end_time);
-       
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_HEAP_SUMMARY);
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_summary_block: writing job %p done.\n", job);
-#endif
-}
-
-static void
-profiler_heap_shot_write_block (ProfilerHeapShotWriteJob *job) {
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_block: working on job %p...\n", job);
-#endif
-       
-       if (profiler->action_flags.collection_summary == TRUE) {
-               profiler_heap_shot_write_summary_block (job);
-       }
-       
-       if ((profiler->action_flags.unreachable_objects == TRUE) || (profiler->action_flags.heap_shot == TRUE)) {
-               profiler_heap_shot_write_data_block (job);
-       }
-       
-       profiler_heap_shot_write_job_free_buffers (job);
-#if DEBUG_HEAP_PROFILER
-       printf ("profiler_heap_shot_write_block: work on job %p done.\n", job);
-#endif
-}
-
-static void
-write_element_load_block (LoadedElement *element, guint8 kind, gsize thread_id, gpointer item) {
-       WRITE_BYTE (kind);
-       write_uint64 (element->load_start_counter);
-       write_uint64 (element->load_end_counter);
-       write_uint64 (thread_id);
-       write_uint32 (element->id);
-       write_string (element->name);
-       if (kind & MONO_PROFILER_LOADED_EVENT_ASSEMBLY) {
-               MonoImage *image = mono_assembly_get_image ((MonoAssembly*) item);
-               MonoAssemblyName aname;
-               if (mono_assembly_fill_assembly_name (image, &aname)) {
-                       write_string (aname.name);
-                       write_uint32 (aname.major);
-                       write_uint32 (aname.minor);
-                       write_uint32 (aname.build);
-                       write_uint32 (aname.revision);
-                       write_string (aname.culture && *aname.culture? aname.culture: "neutral");
-                       write_string (aname.public_key_token [0] ? (char *)aname.public_key_token : "null");
-                       /* Retargetable flag */
-                       write_uint32 ((aname.flags & 0x00000100) ? 1 : 0);
-               } else {
-                       write_string ("UNKNOWN");
-                       write_uint32 (0);
-                       write_uint32 (0);
-                       write_uint32 (0);
-                       write_uint32 (0);
-                       write_string ("neutral");
-                       write_string ("null");
-                       write_uint32 (0);
-               }
-       }
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_LOADED);
-       element->load_written = TRUE;
-}
-
-static void
-write_element_unload_block (LoadedElement *element, guint8 kind, gsize thread_id) {
-       WRITE_BYTE (kind);
-       write_uint64 (element->unload_start_counter);
-       write_uint64 (element->unload_end_counter);
-       write_uint64 (thread_id);
-       write_uint32 (element->id);
-       write_string (element->name);
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_UNLOADED);
-       element->unload_written = TRUE;
-}
-
-static void
-write_clock_data (void) {
-       guint64 counter;
-       guint64 time;
-       
-       MONO_PROFILER_GET_CURRENT_COUNTER (counter);
-       MONO_PROFILER_GET_CURRENT_TIME (time);
-       
-       write_uint64 (counter);
-       write_uint64 (time);
-}
-
-static void
-write_mapping_block (gsize thread_id) {
-       ClassIdMappingElement *current_class;
-       MethodIdMappingElement *current_method;
-       
-       if ((profiler->classes->unwritten == NULL) && (profiler->methods->unwritten == NULL))
-               return;
-       
-#if (DEBUG_MAPPING_EVENTS || DEBUG_FILE_WRITES)
-       printf ("[write_mapping_block][TID %ld] START\n", thread_id);
-#endif
-       
-       write_clock_data ();
-       write_uint64 (thread_id);
-       
-       for (current_class = profiler->classes->unwritten; current_class != NULL; current_class = current_class->next_unwritten) {
-               MonoImage *image = mono_class_get_image (current_class->klass);
-               MonoAssembly *assembly = mono_image_get_assembly (image);
-               guint32 assembly_id = loaded_element_get_id (profiler->loaded_assemblies, assembly);
-               write_uint32 (current_class->id);
-               write_uint32 (assembly_id);
-               write_string (current_class->name);
-#if (DEBUG_MAPPING_EVENTS)
-               printf ("mapping CLASS (%d => %s)\n", current_class->id, current_class->name);
-#endif
-               g_free (current_class->name);
-               current_class->name = NULL;
-       }
-       write_uint32 (0);
-       profiler->classes->unwritten = NULL;
-       
-       for (current_method = profiler->methods->unwritten; current_method != NULL; current_method = current_method->next_unwritten) {
-               MonoMethod *method = current_method->method;
-               MonoClass *klass = mono_method_get_class (method);
-               ClassIdMappingElement *class_element = class_id_mapping_element_get (klass);
-               g_assert (class_element != NULL);
-               write_uint32 (current_method->id);
-               write_uint32 (class_element->id);
-               if (method->wrapper_type != 0) {
-                       write_uint32 (1);
-               } else {
-                       write_uint32 (0);
-               }
-               write_string (current_method->name);
-#if (DEBUG_MAPPING_EVENTS)
-               printf ("mapping METHOD ([%d]%d => %s)\n", class_element?class_element->id:1, current_method->id, current_method->name);
-#endif
-               g_free (current_method->name);
-               current_method->name = NULL;
-       }
-       write_uint32 (0);
-       profiler->methods->unwritten = NULL;
-       
-       write_clock_data ();
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_MAPPING);
-       
-#if (DEBUG_MAPPING_EVENTS || DEBUG_FILE_WRITES)
-       printf ("[write_mapping_block][TID %ld] END\n", thread_id);
-#endif
-}
-
-typedef enum {
-       MONO_PROFILER_PACKED_EVENT_CODE_METHOD_ENTER = 1,
-       MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EXIT_IMPLICIT = 2,
-       MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EXIT_EXPLICIT = 3,
-       MONO_PROFILER_PACKED_EVENT_CODE_CLASS_ALLOCATION = 4,
-       MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EVENT = 5,
-       MONO_PROFILER_PACKED_EVENT_CODE_CLASS_EVENT = 6,
-       MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT = 7
-} MonoProfilerPackedEventCode;
-#define MONO_PROFILER_PACKED_EVENT_CODE_BITS 3
-#define MONO_PROFILER_PACKED_EVENT_DATA_BITS (8-MONO_PROFILER_PACKED_EVENT_CODE_BITS)
-#define MONO_PROFILER_PACKED_EVENT_DATA_MASK ((1<<MONO_PROFILER_PACKED_EVENT_DATA_BITS)-1)
-
-#define MONO_PROFILER_EVENT_MAKE_PACKED_CODE(result,data,base) do {\
-       result = ((base)|((data & MONO_PROFILER_PACKED_EVENT_DATA_MASK) << MONO_PROFILER_PACKED_EVENT_CODE_BITS));\
-       data >>= MONO_PROFILER_PACKED_EVENT_DATA_BITS;\
-} while (0)
-#define MONO_PROFILER_EVENT_MAKE_FULL_CODE(result,code,kind,base) do {\
-       result = ((base)|((((kind)<<4) | (code)) << MONO_PROFILER_PACKED_EVENT_CODE_BITS));\
-} while (0)
-
-static void
-rewrite_last_written_stack (ProfilerThreadStack *stack) {
-       guint8 event_code;
-       int i = thread_stack_get_last_written_frame (stack);
-       
-       MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, MONO_PROFILER_EVENT_STACK_SECTION, 0, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-       WRITE_BYTE (event_code);
-       write_uint32 (0);
-       write_uint32 (i);
-       
-       while (i > 0) {
-               i--;
-               write_uint32 (thread_stack_written_frame_at_index (stack, i));
-       }
-}
-
-
-static ProfilerEventData*
-write_stack_section_event (ProfilerEventData *events, ProfilerPerThreadData *data) {
-       int last_saved_frame = events->data.number;
-       int saved_frames = events->value;
-       guint8 event_code;
-       int i;
-       
-       MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, MONO_PROFILER_EVENT_STACK_SECTION, 0, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-       WRITE_BYTE (event_code);
-       write_uint32 (last_saved_frame);
-       write_uint32 (saved_frames);
-       thread_stack_set_last_written_frame (&(data->stack), last_saved_frame + saved_frames);
-       events++;
-       
-       for (i = 0; i < saved_frames; i++) {
-               guint8 code = events->code;
-               guint32 jit_flag;
-               MethodIdMappingElement *method;
-               guint32 frame_value;
-               
-               if (code == MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER) {
-                       jit_flag = 0;
-               } else if (code == MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER) {
-                       jit_flag = 1;
-               } else {
-                       g_assert_not_reached ();
-                       jit_flag = 0;
-               }
-               
-               method = method_id_mapping_element_get (events->data.address);
-               g_assert (method != NULL);
-               frame_value = (method->id << 1) | jit_flag;
-               write_uint32 (frame_value);
-               thread_stack_write_frame_at_index (&(data->stack), last_saved_frame + saved_frames - (1 + i), frame_value);
-               events ++;
-       }
-       
-       return events;
-}
-
-static ProfilerEventData*
-write_event (ProfilerEventData *event, ProfilerPerThreadData *data) {
-       ProfilerEventData *next = event + 1;
-       gboolean write_event_value = TRUE;
-       guint8 event_code;
-       guint64 event_data;
-       guint64 event_value;
-       gboolean write_event_value_extension_1 = FALSE;
-       guint64 event_value_extension_1 = 0;
-       gboolean write_event_value_extension_2 = FALSE;
-       guint64 event_value_extension_2 = 0;
-
-       event_value = event->value;
-       if (event_value == MAX_EVENT_VALUE) {
-               event_value = *((guint64*)next);
-               next ++;
-       }
-       
-       if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_METHOD) {
-               MethodIdMappingElement *element = method_id_mapping_element_get (event->data.address);
-               g_assert (element != NULL);
-               event_data = element->id;
-               
-               if (event->code == MONO_PROFILER_EVENT_METHOD_CALL) {
-                       if (event->kind == MONO_PROFILER_EVENT_KIND_START) {
-                               MONO_PROFILER_EVENT_MAKE_PACKED_CODE (event_code, event_data, MONO_PROFILER_PACKED_EVENT_CODE_METHOD_ENTER);
-                       } else {
-                               MONO_PROFILER_EVENT_MAKE_PACKED_CODE (event_code, event_data, MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EXIT_EXPLICIT);
-                       }
-               } else {
-                       MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_METHOD_EVENT); 
-               }
-       } else if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_CLASS) {
-               ClassIdMappingElement *element = class_id_mapping_element_get (event->data.address);
-               g_assert (element != NULL);
-               event_data = element->id;
-               
-               if (event->code == MONO_PROFILER_EVENT_CLASS_ALLOCATION) {
-                       if ((! profiler->action_flags.save_allocation_caller) || (! (next->code == MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER))) {
-                               MONO_PROFILER_EVENT_MAKE_PACKED_CODE (event_code, event_data, MONO_PROFILER_PACKED_EVENT_CODE_CLASS_ALLOCATION);
-                       } else {
-                               MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, MONO_PROFILER_EVENT_JIT_TIME_ALLOCATION, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-                       }
-                       
-                       if (profiler->action_flags.save_allocation_caller) {
-                               MonoMethod *caller_method = next->data.address;
-                               
-                               if ((next->code != MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER) && (next->code != MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER)) {
-                                       g_assert_not_reached ();
-                               }
-                               
-                               if (caller_method != NULL) {
-                                       MethodIdMappingElement *caller = method_id_mapping_element_get (caller_method);
-                                       g_assert (caller != NULL);
-                                       event_value_extension_1 = caller->id;
-                               }
-
-                               write_event_value_extension_1 = TRUE;
-                               next ++;
-                       }
-                       
-                       if (profiler->action_flags.allocations_carry_id) {
-                               event_value_extension_2  = GPOINTER_TO_UINT (next->data.address);
-                               
-                               if (next->code != MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID) {
-                                       g_assert_not_reached ();
-                               }
-                               
-                               write_event_value_extension_2 = TRUE;
-                               next ++;
-                       }
-               } else if (event->code == MONO_PROFILER_EVENT_CLASS_MONITOR) {
-                       g_assert (next->code == MONO_PROFILER_EVENT_OBJECT_MONITOR);
-                       
-                       MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_CLASS_EVENT);
-                       event_value_extension_1 = next->value;
-                       write_event_value_extension_1 = TRUE;
-                       event_value_extension_2  = GPOINTER_TO_UINT (next->data.address);
-                       write_event_value_extension_2 = TRUE;
-                       next ++;
-               } else {
-                       MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_CLASS_EVENT);
-               }
-       } else {
-               if (event->code == MONO_PROFILER_EVENT_STACK_SECTION) {
-                       return write_stack_section_event (event, data);
-               } else {
-                       event_data = event->data.number;
-                       MONO_PROFILER_EVENT_MAKE_FULL_CODE (event_code, event->code, event->kind, MONO_PROFILER_PACKED_EVENT_CODE_OTHER_EVENT);
-               }
-       }
-       
-       /* Skip writing JIT events if the user did not ask for them */
-       if ((event->code == MONO_PROFILER_EVENT_METHOD_JIT) && ! profiler->action_flags.jit_time) {
-               return next;
-       }
-       
-#if (DEBUG_LOGGING_PROFILER)
-       EVENT_MARK ();
-       printf ("writing EVENT[%p] data_type:%d, kind:%d, code:%d (%d:%ld:%ld)\n", event,
-                       event->data_type, event->kind, event->code,
-                       event_code, event_data, event_value);
-#endif
-       
-       WRITE_BYTE (event_code);
-       write_uint64 (event_data);
-       if (write_event_value) {
-               write_uint64 (event_value);
-               if (write_event_value_extension_1) {
-                       write_uint64 (event_value_extension_1);
-               }
-               if (write_event_value_extension_2) {
-                       write_uint64 (event_value_extension_2);
-               }
-       }
-       
-       return next;
-}
-
-static void
-write_thread_data_block (ProfilerPerThreadData *data) {
-       ProfilerEventData *start = data->first_unwritten_event;
-       ProfilerEventData *end = data->first_unmapped_event;
-       
-       if (start == end)
-               return;
-#if (DEBUG_FILE_WRITES)
-       printf ("write_thread_data_block: preparing buffer for thread %ld\n", (guint64) data->thread_id);
-#endif
-       write_clock_data ();
-       write_uint64 (data->thread_id);
-       
-       write_uint64 (data->start_event_counter);
-       
-       /* If we are tracking the stack, make sure that stack sections */
-       /* can be fully reconstructed even reading only one block */
-       if (profiler->action_flags.track_stack) {
-               rewrite_last_written_stack (&(data->stack));
-       }
-       
-       while (start < end) {
-               start = write_event (start, data);
-       }
-       WRITE_BYTE (0);
-       data->first_unwritten_event = end;
-       
-       write_clock_data ();
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_EVENTS);
-#if (DEBUG_FILE_WRITES)
-       printf ("write_thread_data_block: buffer for thread %ld written\n", (guint64) data->thread_id);
-#endif
-}
-
-static ProfilerExecutableMemoryRegionData*
-profiler_executable_memory_region_new (gpointer *start, gpointer *end, guint32 file_offset, char *file_name, guint32 id) {
-       ProfilerExecutableMemoryRegionData *result = g_new (ProfilerExecutableMemoryRegionData, 1);
-       result->start = start;
-       result->end = end;
-       result->file_offset = file_offset;
-       result->file_name = g_strdup (file_name);
-       result->id = id;
-       result->is_new = TRUE;
-       
-       result->file = NULL;
-       result->file_region_reference = NULL;
-       result->symbols_capacity = id;
-       result->symbols_count = id;
-       result->symbols = NULL;
-       
-       return result;
-}
-
-static void
-executable_file_close (ProfilerExecutableMemoryRegionData *region);
-
-static void
-profiler_executable_memory_region_destroy (ProfilerExecutableMemoryRegionData *data) {
-       if (data->file != NULL) {
-               executable_file_close (data);
-               data->file = NULL;
-       }
-       if (data->symbols != NULL) {
-               g_free (data->symbols);
-               data->symbols = NULL;
-       }
-       if (data->file_name != NULL) {
-               g_free (data->file_name);
-               data->file_name = NULL;
-       }
-       g_free (data);
-}
-
-static ProfilerExecutableMemoryRegions*
-profiler_executable_memory_regions_new (int next_id, int next_unmanaged_function_id) {
-       ProfilerExecutableMemoryRegions *result = g_new (ProfilerExecutableMemoryRegions, 1);
-       result->regions = g_new0 (ProfilerExecutableMemoryRegionData*, 32);
-       result->regions_capacity = 32;
-       result->regions_count = 0;
-       result->next_id = next_id;
-       result->next_unmanaged_function_id = next_unmanaged_function_id;
-       return result;
-}
-
-static void
-profiler_executable_memory_regions_destroy (ProfilerExecutableMemoryRegions *regions) {
-       int i;
-       
-       for (i = 0; i < regions->regions_count; i++) {
-               profiler_executable_memory_region_destroy (regions->regions [i]);
-       }
-       g_free (regions->regions);
-       g_free (regions);
-}
-
-static ProfilerExecutableMemoryRegionData*
-find_address_region (ProfilerExecutableMemoryRegions *regions, gpointer address) {
-       int low_index = 0;
-       int high_index = regions->regions_count;
-       int middle_index = 0;
-       ProfilerExecutableMemoryRegionData *middle_region = regions->regions [0];
-       
-       if ((regions->regions_count == 0) || (regions->regions [low_index]->start > address) || (regions->regions [high_index - 1]->end < address)) {
-               return NULL;
-       }
-       
-       //printf ("find_address_region: Looking for address %p in %d regions (from %p to %p)\n", address, regions->regions_count, regions->regions [low_index]->start, regions->regions [high_index - 1]->end);
-       
-       while (low_index != high_index) {
-               middle_index = low_index + ((high_index - low_index) / 2);
-               middle_region = regions->regions [middle_index];
-               
-               //printf ("find_address_region: Looking for address %p, considering index %d[%p-%p] (%d-%d)\n", address, middle_index, middle_region->start, middle_region->end, low_index, high_index);
-               
-               if (middle_region->start > address) {
-                       if (middle_index > 0) {
-                               high_index = middle_index;
-                       } else {
-                               return NULL;
-                       }
-               } else if (middle_region->end < address) {
-                       if (middle_index < regions->regions_count - 1) {
-                               low_index = middle_index + 1;
-                       } else {
-                               return NULL;
-                       }
-               } else {
-                       return middle_region;
-               }
-       }
-       
-       if ((middle_region == NULL) || (middle_region->start > address) || (middle_region->end < address)) {
-               return NULL;
-       } else {
-               return middle_region;
-       }
-}
-
-static void
-append_region (ProfilerExecutableMemoryRegions *regions, gpointer *start, gpointer *end, guint32 file_offset, char *file_name) {
-       if (regions->regions_count >= regions->regions_capacity) {
-               ProfilerExecutableMemoryRegionData **new_regions = g_new0 (ProfilerExecutableMemoryRegionData*, regions->regions_capacity * 2);
-               memcpy (new_regions, regions->regions, regions->regions_capacity * sizeof (ProfilerExecutableMemoryRegionData*));
-               g_free (regions->regions);
-               regions->regions = new_regions;
-               regions->regions_capacity = regions->regions_capacity * 2;
-       }
-       regions->regions [regions->regions_count] = profiler_executable_memory_region_new (start, end, file_offset, file_name, regions->next_id);
-       regions->regions_count ++;
-       regions->next_id ++;
-}
-
-static gboolean
-regions_are_equivalent (ProfilerExecutableMemoryRegionData *region1, ProfilerExecutableMemoryRegionData *region2) {
-       if ((region1->start == region2->start) &&
-                       (region1->end == region2->end) &&
-                       (region1->file_offset == region2->file_offset) &&
-                       ! strcmp (region1->file_name, region2->file_name)) {
-               return TRUE;
-       } else {
-               return FALSE;
-       }
-}
-
-static int
-compare_regions (const void *a1, const void *a2) {
-       ProfilerExecutableMemoryRegionData *r1 = * (ProfilerExecutableMemoryRegionData**) a1;
-       ProfilerExecutableMemoryRegionData *r2 = * (ProfilerExecutableMemoryRegionData**) a2;
-       return (r1->start < r2->start)? -1 : ((r1->start > r2->start)? 1 : 0);
-}
-
-static void
-restore_old_regions (ProfilerExecutableMemoryRegions *old_regions, ProfilerExecutableMemoryRegions *new_regions) {
-       int old_i;
-       int new_i;
-       
-       for (new_i = 0; new_i < new_regions->regions_count; new_i++) {
-               ProfilerExecutableMemoryRegionData *new_region = new_regions->regions [new_i];
-               for (old_i = 0; old_i < old_regions->regions_count; old_i++) {
-                       ProfilerExecutableMemoryRegionData *old_region = old_regions->regions [old_i];
-                       if ( regions_are_equivalent (old_region, new_region)) {
-                               new_regions->regions [new_i] = old_region;
-                               old_regions->regions [old_i] = new_region;
-                               
-                               // FIXME (sanity check)
-                               g_assert (new_region->is_new && ! old_region->is_new);
-                       }
-               }
-       }
-}
-
-static void
-sort_regions (ProfilerExecutableMemoryRegions *regions) {
-       if (regions->regions_count > 1) {
-               int i;
-               
-               qsort (regions->regions, regions->regions_count, sizeof (ProfilerExecutableMemoryRegionData *), compare_regions);
-               
-               i = 1;
-               while (i < regions->regions_count) {
-                       ProfilerExecutableMemoryRegionData *current_region = regions->regions [i];
-                       ProfilerExecutableMemoryRegionData *previous_region = regions->regions [i - 1];
-                       
-                       if (regions_are_equivalent (previous_region, current_region)) {
-                               int j;
-                               
-                               if (! current_region->is_new) {
-                                       profiler_executable_memory_region_destroy (previous_region);
-                                       regions->regions [i - 1] = current_region;
-                               } else {
-                                       profiler_executable_memory_region_destroy (current_region);
-                               }
-                               
-                               for (j = i + 1; j < regions->regions_count; j++) {
-                                       regions->regions [j - 1] = regions->regions [j];
-                               }
-                               
-                               regions->regions_count --;
-                       } else {
-                               i++;
-                       }
-               }
-       }
-}
-
-static void
-fix_region_references (ProfilerExecutableMemoryRegions *regions) {
-       int i;
-       for (i = 0; i < regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-               if (region->file_region_reference != NULL) {
-                       region->file_region_reference->region = region;
-               }
-       }
-}
-
-static void
-executable_file_add_region_reference (ProfilerExecutableFile *file, ProfilerExecutableMemoryRegionData *region) {
-       guint8 *section_headers = file->data + file->header->e_shoff;
-       int section_index;
-       
-       for (section_index = 1; section_index < file->header->e_shnum; section_index ++) {
-               ElfSection *section_header = (ElfSection*) (section_headers + (file->header->e_shentsize * section_index));
-               
-               if ((section_header->sh_addr != 0) && (section_header->sh_flags & ELF_SHF_EXECINSTR) &&
-                               (region->file_offset <= section_header->sh_offset) && (region->file_offset + (((guint8*)region->end)-((guint8*)region->start)) >= (section_header->sh_offset + section_header->sh_size))) {
-                       ProfilerExecutableFileSectionRegion *section_region = & (file->section_regions [section_index]);
-                       section_region->region = region;
-                       section_region->section_address = (gpointer) section_header->sh_addr;
-                       section_region->section_offset = section_header->sh_offset;
-                       region->file_region_reference = section_region;
-               }
-       }
-}
-
-static gboolean check_elf_header (ElfHeader* header) {
-       guint16 test = 0x0102;
-       
-       if ((header->e_ident [EI_MAG0] != 0x7f) || (header->e_ident [EI_MAG1] != 'E') ||
-                       (header->e_ident [EI_MAG2] != 'L') || (header->e_ident [EI_MAG3] != 'F')) {
-               return FALSE;
-       }
-
-       if (sizeof (gsize) == 4) {
-               if (header->e_ident [EI_CLASS] != ELF_CLASS_32) {
-                       g_warning ("Class is not ELF_CLASS_32 with gsize size %d", (int) sizeof (gsize));
-                       return FALSE;
-               }
-       } else if (sizeof (gsize) == 8) {
-               if (header->e_ident [EI_CLASS] != ELF_CLASS_64) {
-                       g_warning ("Class is not ELF_CLASS_64 with gsize size %d", (int) sizeof (gsize));
-                       return FALSE;
-               }
-       } else {
-               g_warning ("Absurd gsize size %d", (int) sizeof (gsize));
-               return FALSE;
-       }
-
-       if ((*(guint8*)(&test)) == 0x01) {
-               if (header->e_ident [EI_DATA] != ELF_DATA_MSB) {
-                       g_warning ("Data is not ELF_DATA_MSB with first test byte 0x01");
-                       return FALSE;
-               }
-       } else if ((*(guint8*)(&test)) == 0x02) {
-               if (header->e_ident [EI_DATA] != ELF_DATA_LSB) {
-                       g_warning ("Data is not ELF_DATA_LSB with first test byte 0x02");
-                       return FALSE;
-               }
-       } else {
-               g_warning ("Absurd test byte value");
-               return FALSE;
-       }
-       
-       return TRUE;
-}
-
-static gboolean check_elf_file (int fd) {
-       void *header = malloc (sizeof (ElfHeader));
-       ssize_t read_result = read (fd, header, sizeof (ElfHeader));
-       gboolean result;
-       
-       if (read_result != sizeof (ElfHeader)) {
-               result = FALSE;
-       } else {
-               result = check_elf_header ((ElfHeader*) header);
-       }
-       
-       free (header);
-       return result;
-}
-
-static ProfilerExecutableFile*
-executable_file_open (ProfilerExecutableMemoryRegionData *region) {
-       ProfilerExecutableFiles *files = & (profiler->executable_files);
-       ProfilerExecutableFile *file = region->file;
-       
-       if (file == NULL) {
-               file = (ProfilerExecutableFile*) g_hash_table_lookup (files->table, region->file_name);
-               
-               if (file == NULL) {
-                       struct stat stat_buffer;
-                       int symtab_index = 0;
-                       int strtab_index = 0;
-                       int dynsym_index = 0;
-                       int dynstr_index = 0;
-                       ElfHeader *header;
-                       guint8 *section_headers;
-                       int section_index;
-                       int strings_index;
-                       
-                       file = g_new0 (ProfilerExecutableFile, 1);
-                       region->file = file;
-                       g_hash_table_insert (files->table, region->file_name, file);
-                       file->reference_count ++;
-                       file->next_new_file = files->new_files;
-                       files->new_files = file;
-                       
-                       file->fd = open (region->file_name, O_RDONLY);
-                       if (file->fd == -1) {
-                               //g_warning ("Cannot open file '%s': '%s'", region->file_name, strerror (errno));
-                               return file;
-                       } else {
-                               if (fstat (file->fd, &stat_buffer) != 0) {
-                                       //g_warning ("Cannot stat file '%s': '%s'", region->file_name, strerror (errno));
-                                       return file;
-                               } else if (! check_elf_file (file->fd)) {
-                                       return file;
-                               } else {
-                                       size_t region_length = ((guint8*)region->end) - ((guint8*)region->start);
-                                       file->length = stat_buffer.st_size;
-                                       
-                                       if (file->length == region_length) {
-                                               file->data = region->start;
-                                               close (file->fd);
-                                               file->fd = -1;
-                                       } else {
-                                               file->data = mmap (NULL, file->length, PROT_READ, MAP_PRIVATE, file->fd, 0);
-                                               
-                                               if (file->data == MAP_FAILED) {
-                                                       close (file->fd);
-                                                       //g_warning ("Cannot map file '%s': '%s'", region->file_name, strerror (errno));
-                                                       file->data = NULL;
-                                                       return file;
-                                               }
-                                       }
-                               }
-                       }
-                       
-                       /* OK, this is a usable elf file, and we mmapped it... */
-                       header = (ElfHeader*) file->data;
-                       file->header = header;
-                       section_headers = file->data + file->header->e_shoff;
-                       file->main_string_table = ((const char*) file->data) + (((ElfSection*) (section_headers + (header->e_shentsize * header->e_shstrndx)))->sh_offset);
-                       
-                       for (section_index = 0; section_index < header->e_shnum; section_index ++) {
-                               ElfSection *section_header = (ElfSection*) (section_headers + (header->e_shentsize * section_index));
-                               
-                               if (section_header->sh_type == ELF_SHT_SYMTAB) {
-                                       symtab_index = section_index;
-                               } else if (section_header->sh_type == ELF_SHT_DYNSYM) {
-                                       dynsym_index = section_index;
-                               } else if (section_header->sh_type == ELF_SHT_STRTAB) {
-                                       if (! strcmp (file->main_string_table + section_header->sh_name, ".strtab")) {
-                                               strtab_index = section_index;
-                                       } else if (! strcmp (file->main_string_table + section_header->sh_name, ".dynstr")) {
-                                               dynstr_index = section_index;
-                                       }
-                               }
-                       }
-                       
-                       if ((symtab_index != 0) && (strtab_index != 0)) {
-                               section_index = symtab_index;
-                               strings_index = strtab_index;
-                       } else if ((dynsym_index != 0) && (dynstr_index != 0)) {
-                               section_index = dynsym_index;
-                               strings_index = dynstr_index;
-                       } else {
-                               section_index = 0;
-                               strings_index = 0;
-                       }
-                       
-                       if (section_index != 0) {
-                               ElfSection *section_header = (ElfSection*) (section_headers + (header->e_shentsize * section_index));
-                               file->symbol_size = section_header->sh_entsize;
-                               file->symbols_count = (guint32) (section_header->sh_size / section_header->sh_entsize);
-                               file->symbols_start = file->data + section_header->sh_offset;
-                               file->symbols_string_table = ((const char*) file->data) + (((ElfSection*) (section_headers + (header->e_shentsize * strings_index)))->sh_offset);
-                       }
-                       
-                       file->section_regions = g_new0 (ProfilerExecutableFileSectionRegion, file->header->e_shnum);
-               } else {
-                       region->file = file;
-                       file->reference_count ++;
-               }
-       }
-       
-       if (file->header != NULL) {
-               executable_file_add_region_reference (file, region);
-       }
-       
-       return file;
-}
-
-static void
-executable_file_free (ProfilerExecutableFile* file) {
-       if (file->fd != -1) {
-               if (close (file->fd) != 0) {
-                       g_warning ("Cannot close file: '%s'", strerror (errno));
-               }
-               if (file->data != NULL) {
-                       if (munmap (file->data, file->length) != 0) {
-                               g_warning ("Cannot unmap file: '%s'", strerror (errno));
-                       }
-               }
-       }
-       if (file->section_regions != NULL) {
-               g_free (file->section_regions);
-               file->section_regions = NULL;
-       }
-       g_free (file);
-}
-
-static void
-executable_file_close (ProfilerExecutableMemoryRegionData *region) {
-       region->file->reference_count --;
-       
-       if ((region->file_region_reference != NULL) && (region->file_region_reference->region == region)) {
-               region->file_region_reference->region = NULL;
-               region->file_region_reference->section_address = 0;
-               region->file_region_reference->section_offset = 0;
-       }
-       
-       if (region->file->reference_count <= 0) {
-               ProfilerExecutableFiles *files = & (profiler->executable_files);
-               g_hash_table_remove (files->table, region->file_name);
-               executable_file_free (region->file);
-               region->file = NULL;
-       }
-}
-
-static void
-executable_file_count_symbols (ProfilerExecutableFile *file) {
-       int symbol_index;
-       
-       for (symbol_index = 0; symbol_index < file->symbols_count; symbol_index ++) {
-               ElfSymbol *symbol = (ElfSymbol*) (file->symbols_start + (symbol_index * file->symbol_size));
-               
-               if ((ELF_ST_TYPE (symbol->st_info) == ELF_STT_FUNC) &&
-                               (symbol->st_shndx > 0) &&
-                               (symbol->st_shndx < file->header->e_shnum)) {
-                       int symbol_section_index = symbol->st_shndx;
-                       ProfilerExecutableMemoryRegionData *region = file->section_regions [symbol_section_index].region;
-                       if ((region != NULL) && (region->symbols == NULL)) {
-                               region->symbols_count ++;
-                       }
-               }
-       }
-}
-
-static void
-executable_memory_regions_prepare_symbol_tables (ProfilerExecutableMemoryRegions *regions) {
-       int i;
-       for (i = 0; i < regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-               if ((region->symbols_count > 0) && (region->symbols == NULL)) {
-                       region->symbols = g_new (ProfilerUnmanagedSymbol, region->symbols_count);
-                       region->symbols_capacity = region->symbols_count;
-                       region->symbols_count = 0;
-               }
-       }
-}
-
-static const char*
-executable_region_symbol_get_name (ProfilerExecutableMemoryRegionData *region, ProfilerUnmanagedSymbol *symbol) {
-       ElfSymbol *elf_symbol = (ElfSymbol*) (region->file->symbols_start + (symbol->index * region->file->symbol_size));
-       return region->file->symbols_string_table + elf_symbol->st_name;
-}
-
-static void
-executable_file_build_symbol_tables (ProfilerExecutableFile *file) {
-       int symbol_index;
-       
-       for (symbol_index = 0; symbol_index < file->symbols_count; symbol_index ++) {
-               ElfSymbol *symbol = (ElfSymbol*) (file->symbols_start + (symbol_index * file->symbol_size));
-               
-               if ((ELF_ST_TYPE (symbol->st_info) == ELF_STT_FUNC) &&
-                               (symbol->st_shndx > 0) &&
-                               (symbol->st_shndx < file->header->e_shnum)) {
-                       int symbol_section_index = symbol->st_shndx;
-                       ProfilerExecutableFileSectionRegion *section_region = & (file->section_regions [symbol_section_index]);
-                       ProfilerExecutableMemoryRegionData *region = section_region->region;
-                       
-                       if (region != NULL) {
-                               ProfilerUnmanagedSymbol *new_symbol = & (region->symbols [region->symbols_count]);
-                               region->symbols_count ++;
-                               
-                               new_symbol->id = 0;
-                               new_symbol->index = symbol_index;
-                               new_symbol->size = symbol->st_size;
-                               new_symbol->offset = (((guint8*) symbol->st_value) - section_region->section_address) - (region->file_offset - section_region->section_offset);
-                       }
-               }
-       }
-}
-
-static int
-compare_region_symbols (const void *p1, const void *p2) {
-       const ProfilerUnmanagedSymbol *s1 = p1;
-       const ProfilerUnmanagedSymbol *s2 = p2;
-       return (s1->offset < s2->offset)? -1 : ((s1->offset > s2->offset)? 1 : 0);
-}
-
-static void
-executable_memory_regions_sort_symbol_tables (ProfilerExecutableMemoryRegions *regions) {
-       int i;
-       for (i = 0; i < regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-               if ((region->is_new) && (region->symbols != NULL)) {
-                       qsort (region->symbols, region->symbols_count, sizeof (ProfilerUnmanagedSymbol), compare_region_symbols);
-               }
-       }
-}
-
-static void
-build_symbol_tables (ProfilerExecutableMemoryRegions *regions, ProfilerExecutableFiles *files) {
-       int i;
-       ProfilerExecutableFile *file;
-       
-       for (i = 0; i < regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = regions->regions [i];
-               if ((region->is_new) && (region->file == NULL)) {
-                       executable_file_open (region);
-               }
-       }
-       
-       for (file = files->new_files; file != NULL; file = file->next_new_file) {
-               executable_file_count_symbols (file);
-       }
-       
-       executable_memory_regions_prepare_symbol_tables (regions);
-       
-       for (file = files->new_files; file != NULL; file = file->next_new_file) {
-               executable_file_build_symbol_tables (file);
-       }
-       
-       executable_memory_regions_sort_symbol_tables (regions);
-       
-       file = files->new_files;
-       while (file != NULL) {
-               ProfilerExecutableFile *next_file = file->next_new_file;
-               file->next_new_file = NULL;
-               file = next_file;
-       }
-       files->new_files = NULL;
-}
-
-static ProfilerUnmanagedSymbol*
-executable_memory_region_find_symbol (ProfilerExecutableMemoryRegionData *region, guint32 offset) {
-       if (region->symbols_count > 0) {
-               ProfilerUnmanagedSymbol *low = region->symbols;
-               ProfilerUnmanagedSymbol *high = region->symbols + (region->symbols_count - 1);
-               int step = region->symbols_count >> 1;
-               ProfilerUnmanagedSymbol *current = region->symbols + step;
-               
-               do {
-                       step = (high - low) >> 1;
-                       
-                       if (offset < current->offset) {
-                               high = current;
-                               current = high - step;
-                       } else if (offset >= current->offset) {
-                               if (offset >= (current->offset + current->size)) {
-                                       low = current;
-                                       current = low + step;
-                               } else {
-                                       return current;
-                               }
-                       }
-               } while (step > 0);
-               
-               if ((offset >= current->offset) && (offset < (current->offset + current->size))) {
-                       return current;
-               } else {
-                       return NULL;
-               }
-       } else {
-               return NULL;
-       }
-}
-
-//FIXME: make also Win32 and BSD variants
-#define MAPS_BUFFER_SIZE 4096
-#define MAPS_FILENAME_SIZE 2048
-
-static gboolean
-update_regions_buffer (int fd, char *buffer) {
-       ssize_t result = read (fd, buffer, MAPS_BUFFER_SIZE);
-       
-       if (result == MAPS_BUFFER_SIZE) {
-               return TRUE;
-       } else if (result >= 0) {
-               *(buffer + result) = 0;
-               return FALSE;
-       } else {
-               *buffer = 0;
-               return FALSE;
-       }
-}
-
-#define GOTO_NEXT_CHAR(c,b,fd) do {\
-       (c)++;\
-       if (((c) - (b) >= MAPS_BUFFER_SIZE) || ((*(c) == 0) && ((c) != (b)))) {\
-               update_regions_buffer ((fd), (b));\
-               (c) = (b);\
-       }\
-} while (0);
-
-static int hex_digit_value (char c) {
-       if ((c >= '0') && (c <= '9')) {
-               return c - '0';
-       } else if ((c >= 'a') && (c <= 'f')) {
-               return c - 'a' + 10;
-       } else if ((c >= 'A') && (c <= 'F')) {
-               return c - 'A' + 10;
-       } else {
-               return 0;
-       }
-}
-
-/*
- * Start address
- * -
- * End address
- * (space)
- * Permissions
- * Offset
- * (space)
- * Device
- * (space)
- * Inode
- * (space)
- * File
- * \n
- */
-typedef enum {
-       MAP_LINE_PARSER_STATE_INVALID,
-       MAP_LINE_PARSER_STATE_START_ADDRESS,
-       MAP_LINE_PARSER_STATE_END_ADDRESS,
-       MAP_LINE_PARSER_STATE_PERMISSIONS,
-       MAP_LINE_PARSER_STATE_OFFSET,
-       MAP_LINE_PARSER_STATE_DEVICE,
-       MAP_LINE_PARSER_STATE_INODE,
-       MAP_LINE_PARSER_STATE_BLANK_BEFORE_FILENAME,
-       MAP_LINE_PARSER_STATE_FILENAME,
-       MAP_LINE_PARSER_STATE_DONE
-} MapLineParserState;
-
-const char *map_line_parser_state [] = {
-       "INVALID",
-       "START_ADDRESS",
-       "END_ADDRESS",
-       "PERMISSIONS",
-       "OFFSET",
-       "DEVICE",
-       "INODE",
-       "BLANK_BEFORE_FILENAME",
-       "FILENAME",
-       "DONE"
-};
-
-static char*
-parse_map_line (ProfilerExecutableMemoryRegions *regions, int fd, char *buffer, char *filename, char *current) {
-       MapLineParserState state = MAP_LINE_PARSER_STATE_START_ADDRESS;
-       gsize start_address = 0;
-       gsize end_address = 0;
-       guint32 offset = 0;
-       int filename_index = 0;
-       gboolean is_executable = FALSE;
-       gboolean done = FALSE;
-       
-       char c = *current;
-       
-       while (1) {
-               switch (state) {
-               case MAP_LINE_PARSER_STATE_START_ADDRESS:
-                       if (isxdigit (c)) {
-                               start_address <<= 4;
-                               start_address |= hex_digit_value (c);
-                       } else if (c == '-') {
-                               state = MAP_LINE_PARSER_STATE_END_ADDRESS;
-                       } else {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_END_ADDRESS:
-                       if (isxdigit (c)) {
-                               end_address <<= 4;
-                               end_address |= hex_digit_value (c);
-                       } else if (isblank (c)) {
-                               state = MAP_LINE_PARSER_STATE_PERMISSIONS;
-                       } else {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_PERMISSIONS:
-                       if (c == 'x') {
-                               is_executable = TRUE;
-                       } else if (isblank (c)) {
-                               state = MAP_LINE_PARSER_STATE_OFFSET;
-                       } else if ((c != '-') && ! isalpha (c)) {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_OFFSET:
-                       if (isxdigit (c)) {
-                               offset <<= 4;
-                               offset |= hex_digit_value (c);
-                       } else if (isblank (c)) {
-                               state = MAP_LINE_PARSER_STATE_DEVICE;
-                       } else {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_DEVICE:
-                       if (isblank (c)) {
-                               state = MAP_LINE_PARSER_STATE_INODE;
-                       } else if ((c != ':') && ! isxdigit (c)) {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_INODE:
-                       if (isblank (c)) {
-                               state = MAP_LINE_PARSER_STATE_BLANK_BEFORE_FILENAME;
-                       } else if (! isdigit (c)) {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_BLANK_BEFORE_FILENAME:
-                       if ((c == '/') || (c == '[')) {
-                               state = MAP_LINE_PARSER_STATE_FILENAME;
-                               filename [filename_index] = *current;
-                               filename_index ++;
-                       } else if (! isblank (c)) {
-                               state = MAP_LINE_PARSER_STATE_INVALID;
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_FILENAME:
-                       if (filename_index < MAPS_FILENAME_SIZE) {
-                               if (c == '\n') {
-                                       state = MAP_LINE_PARSER_STATE_DONE;
-                                       done = TRUE;
-                                       filename [filename_index] = 0;
-                               } else {
-                                       filename [filename_index] = *current;
-                                       filename_index ++;
-                               }
-                       } else {
-                               filename [filename_index] = 0;
-                               g_warning ("ELF filename too long: \"%s\"...\n", filename);
-                       }
-                       break;
-               case MAP_LINE_PARSER_STATE_DONE:
-                       if (done && is_executable) {
-                               filename [filename_index] = 0;
-                               append_region (regions, (gpointer) start_address, (gpointer) end_address, offset, filename);
-                       }
-                       return current;
-               case MAP_LINE_PARSER_STATE_INVALID:
-                       if (c == '\n') {
-                               state = MAP_LINE_PARSER_STATE_DONE;
-                       }
-                       break;
-               }
-               
-               if (c == 0) {
-                       return NULL;
-               } else if (c == '\n') {
-                       state = MAP_LINE_PARSER_STATE_DONE;
-               }
-               
-               GOTO_NEXT_CHAR(current, buffer, fd);
-               c = *current;
-       }
-}
-
-static gboolean
-scan_process_regions (ProfilerExecutableMemoryRegions *regions) {
-       char *buffer;
-       char *filename;
-       char *current;
-       int fd;
-       
-       fd = open ("/proc/self/maps", O_RDONLY);
-       if (fd == -1) {
-               return FALSE;
-       }
-       
-       buffer = malloc (MAPS_BUFFER_SIZE);
-       filename = malloc (MAPS_FILENAME_SIZE);
-       update_regions_buffer (fd, buffer);
-       current = buffer;
-       while (current != NULL) {
-               current = parse_map_line (regions, fd, buffer, filename, current);
-       }
-       
-       free (buffer);
-       free (filename);
-       
-       close (fd);
-       return TRUE;
-}
-//End of Linux code
-
-typedef enum {
-       MONO_PROFILER_STATISTICAL_CODE_END = 0,
-       MONO_PROFILER_STATISTICAL_CODE_METHOD = 1,
-       MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_ID = 2,
-       MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_NEW_ID = 3,
-       MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_OFFSET_IN_REGION = 4,
-       MONO_PROFILER_STATISTICAL_CODE_CALL_CHAIN = 5,
-       MONO_PROFILER_STATISTICAL_CODE_REGIONS = 7
-} MonoProfilerStatisticalCode;
-
-static void
-refresh_memory_regions (void) {
-       ProfilerExecutableMemoryRegions *old_regions = profiler->executable_regions;
-       ProfilerExecutableMemoryRegions *new_regions = profiler_executable_memory_regions_new (old_regions->next_id, old_regions->next_unmanaged_function_id);
-       int i;
-       
-       LOG_WRITER_THREAD ("Refreshing memory regions...");
-       scan_process_regions (new_regions);
-       sort_regions (new_regions);
-       restore_old_regions (old_regions, new_regions);
-       fix_region_references (new_regions);
-       LOG_WRITER_THREAD ("Refreshed memory regions.");
-       
-       LOG_WRITER_THREAD ("Building symbol tables...");
-       build_symbol_tables (new_regions, & (profiler->executable_files));
-#if 0
-       printf ("Symbol tables done!\n");
-       printf ("Region summary...\n");
-       for (i = 0; i < new_regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = new_regions->regions [i];
-               printf ("Region %d[%d][NEW:%d] (%p-%p) at %d in file %s\n", i, region->id, region->is_new,
-                               region->start, region->end, region->file_offset, region->file_name);
-       }
-       printf ("New symbol tables dump...\n");
-       for (i = 0; i < new_regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = new_regions->regions [i];
-               
-               if (region->is_new) {
-                       int symbol_index;
-                       
-                       printf ("Region %d[%d][NEW:%d] (%p-%p) at %d in file %s\n", i, region->id, region->is_new,
-                                       region->start, region->end, region->file_offset, region->file_name);
-                       for (symbol_index = 0; symbol_index < region->symbols_count; symbol_index ++) {
-                               ProfilerUnmanagedSymbol *symbol = & (region->symbols [symbol_index]);
-                               printf ("  [%d] Symbol %s (offset %d, size %d)\n", symbol_index,
-                                               executable_region_symbol_get_name (region, symbol),
-                                               symbol->offset, symbol->size);
-                       }
-               }
-       }
-#endif
-       LOG_WRITER_THREAD ("Built symbol tables.");
-       
-       // This marks the region "sub-block"
-       write_uint32 (MONO_PROFILER_STATISTICAL_CODE_REGIONS);
-       
-       // First write the "removed" regions 
-       for (i = 0; i < old_regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = old_regions->regions [i];
-               if (! region->is_new) {
-#if DEBUG_STATISTICAL_PROFILER
-                       printf ("[refresh_memory_regions] Invalidated region %d\n", region->id);
-#endif
-                       write_uint32 (region->id);
-               }
-       }
-       write_uint32 (0);
-       
-       // Then write the new ones
-       for (i = 0; i < new_regions->regions_count; i++) {
-               ProfilerExecutableMemoryRegionData *region = new_regions->regions [i];
-               if (region->is_new) {
-                       region->is_new = FALSE;
-                       
-#if DEBUG_STATISTICAL_PROFILER
-                       printf ("[refresh_memory_regions] Wrote region %d (%p-%p[%d] '%s')\n", region->id, region->start, region->end, region->file_offset, region->file_name);
-#endif
-                       write_uint32 (region->id);
-                       write_uint64 (GPOINTER_TO_UINT (region->start));
-                       write_uint32 (GPOINTER_TO_UINT (region->end) - GPOINTER_TO_UINT (region->start));
-                       write_uint32 (region->file_offset);
-                       write_string (region->file_name);
-               }
-       }
-       write_uint32 (0);
-       
-       // Finally, free the old ones, and replace them
-       profiler_executable_memory_regions_destroy (old_regions);
-       profiler->executable_regions = new_regions;
-}
-
-static gboolean
-write_statistical_hit (gpointer address, gboolean regions_refreshed) {
-       ProfilerCodeBuffer *code_buffer = profiler_code_buffer_from_address (profiler, address);
-       
-       if ((code_buffer != NULL) && (code_buffer->info.type == MONO_PROFILER_CODE_BUFFER_METHOD)) {
-               MonoMethod *method = code_buffer->info.data.method;
-               MethodIdMappingElement *element = method_id_mapping_element_get (method);
-               
-               if (element != NULL) {
-#if DEBUG_STATISTICAL_PROFILER
-                       printf ("[write_statistical_hit] Wrote method %d\n", element->id);
-#endif
-                       write_uint32 ((element->id << 3) | MONO_PROFILER_STATISTICAL_CODE_METHOD);
-               } else {
-#if DEBUG_STATISTICAL_PROFILER
-                       printf ("[write_statistical_hit] Wrote unknown method %p\n", method);
-#endif
-                       write_uint32 (MONO_PROFILER_STATISTICAL_CODE_METHOD);
-               }
-       } else {
-               ProfilerExecutableMemoryRegionData *region = find_address_region (profiler->executable_regions, address);
-               
-               if (region == NULL && ! regions_refreshed) {
-#if DEBUG_STATISTICAL_PROFILER
-                       printf ("[write_statistical_hit] Cannot find region for address %p, refreshing...\n", address);
-#endif
-                       refresh_memory_regions ();
-                       regions_refreshed = TRUE;
-                       region = find_address_region (profiler->executable_regions, address);
-               }
-               
-               if (region != NULL) {
-                       guint32 offset = ((guint8*)address) - ((guint8*)region->start);
-                       ProfilerUnmanagedSymbol *symbol = executable_memory_region_find_symbol (region, offset);
-                       
-                       if (symbol != NULL) {
-                               if (symbol->id > 0) {
-#if DEBUG_STATISTICAL_PROFILER
-                                       printf ("[write_statistical_hit] Wrote unmanaged symbol %d\n", symbol->id);
-#endif
-                                       write_uint32 ((symbol->id << 3) | MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_ID);
-                               } else {
-                                       ProfilerExecutableMemoryRegions *regions = profiler->executable_regions;
-                                       const char *symbol_name = executable_region_symbol_get_name (region, symbol);
-                                       symbol->id = regions->next_unmanaged_function_id;
-                                       regions->next_unmanaged_function_id ++;
-#if DEBUG_STATISTICAL_PROFILER
-                                       printf ("[write_statistical_hit] Wrote new unmanaged symbol in region %d[%d]\n", region->id, offset);
-#endif
-                                       write_uint32 ((region->id << 3) | MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_NEW_ID);
-                                       write_uint32 (symbol->id);
-                                       write_string (symbol_name);
-                               }
-                       } else {
-#if DEBUG_STATISTICAL_PROFILER
-                               printf ("[write_statistical_hit] Wrote unknown unmanaged hit in region %d[%d] (address %p)\n", region->id, offset, address);
-#endif
-                               write_uint32 ((region->id << 3) | MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_OFFSET_IN_REGION);
-                               write_uint32 (offset);
-                       }
-               } else {
-#if DEBUG_STATISTICAL_PROFILER
-                       printf ("[write_statistical_hit] Wrote unknown unmanaged hit %p\n", address);
-#endif
-                       write_uint32 (MONO_PROFILER_STATISTICAL_CODE_UNMANAGED_FUNCTION_OFFSET_IN_REGION);
-                       write_uint64 (GPOINTER_TO_UINT (address));
-               }
-       }
-       
-       return regions_refreshed;
-}
-
-static void
-flush_all_mappings (void);
-
-static void
-write_statistical_data_block (ProfilerStatisticalData *data) {
-       int start_index = data->first_unwritten_index;
-       int end_index = data->next_free_index;
-       gboolean regions_refreshed = FALSE;
-       int call_chain_depth = profiler->statistical_call_chain_depth;
-       int index;
-       
-       if (end_index > data->end_index)
-               end_index = data->end_index;
-       
-       if (start_index == end_index)
-               return;
-       
-       data->first_unwritten_index = end_index;
-       
-       write_clock_data ();
-       
-#if DEBUG_STATISTICAL_PROFILER
-       printf ("[write_statistical_data_block] Starting loop at index %d\n", start_index);
-#endif
-       
-       for (index = start_index; index < end_index; index ++) {
-               int base_index = index * (call_chain_depth + 1);
-               ProfilerStatisticalHit hit = data->hits [base_index];
-               int callers_count;
-               
-               regions_refreshed = write_statistical_hit (hit.address, regions_refreshed);
-               base_index ++;
-               
-               for (callers_count = 0; callers_count < call_chain_depth; callers_count ++) {
-                       hit = data->hits [base_index + callers_count];
-                       if (hit.address == NULL) {
-                               break;
-                       }
-               }
-               
-               if (callers_count > 0) {
-                       write_uint32 ((callers_count << 3) | MONO_PROFILER_STATISTICAL_CODE_CALL_CHAIN);
-                       
-                       for (callers_count = 0; callers_count < call_chain_depth; callers_count ++) {
-                               hit = data->hits [base_index + callers_count];
-                               if (hit.address != NULL) {
-                                       regions_refreshed = write_statistical_hit (hit.address, regions_refreshed);
-                               } else {
-                                       break;
-                               }
-                       }
-               }
-       }
-       write_uint32 (MONO_PROFILER_STATISTICAL_CODE_END);
-       
-#if DEBUG_STATISTICAL_PROFILER
-       printf ("[write_statistical_data_block] Ending loop at index %d\n", end_index);
-#endif
-       write_clock_data ();
-       
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_STATISTICAL);
-}
-
-static void
-write_intro_block (void) {
-       write_uint32 (1);
-       write_string ("mono");
-       write_uint32 (profiler->flags);
-       write_uint64 (profiler->start_counter);
-       write_uint64 (profiler->start_time);
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_INTRO);
-}
-
-static void
-write_end_block (void) {
-       write_uint32 (1);
-       write_uint64 (profiler->end_counter);
-       write_uint64 (profiler->end_time);
-       write_current_block (MONO_PROFILER_FILE_BLOCK_KIND_END);
-}
-
-static void
-update_mapping (ProfilerPerThreadData *data) {
-       ProfilerEventData *start = data->first_unmapped_event;
-       ProfilerEventData *end = data->next_free_event;
-       data->first_unmapped_event = end;
-       
-#if (DEBUG_LOGGING_PROFILER)
-       printf ("[update_mapping][TID %ld] START\n", data->thread_id);
-#endif
-       while (start < end) {
-#if DEBUG_LOGGING_PROFILER
-               printf ("Examining event %p[TID %ld] looking for a new mapping...\n", start, data->thread_id);
-#endif
-               if (start->data_type == MONO_PROFILER_EVENT_DATA_TYPE_CLASS) {
-                       ClassIdMappingElement *element = class_id_mapping_element_get (start->data.address);
-                       if (element == NULL) {
-                               MonoClass *klass = start->data.address;
-                               class_id_mapping_element_new (klass);
-                       }
-               } else if (start->data_type == MONO_PROFILER_EVENT_DATA_TYPE_METHOD) {
-                       MethodIdMappingElement *element = method_id_mapping_element_get (start->data.address);
-                       if (element == NULL) {
-                               MonoMethod *method = start->data.address;
-                               if (method != NULL) {
-                                       method_id_mapping_element_new (method);
-                               }
-                       }
-               }
-               
-               if (start->value == MAX_EVENT_VALUE) {
-                       start ++;
-               }
-               start ++;
-       }
-#if (DEBUG_LOGGING_PROFILER)
-       printf ("[update_mapping][TID %ld] END\n", data->thread_id);
-#endif
-}
-
-static void
-flush_all_mappings (void) {
-       ProfilerPerThreadData *data;
-       
-       for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-               update_mapping (data);
-       }
-       for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-               write_mapping_block (data->thread_id);
-       }
-}
-
-static void
-flush_full_event_data_buffer (ProfilerPerThreadData *data) {
-       LOCK_PROFILER ();
-       
-       // We flush all mappings because some id definitions could come
-       // from other threads
-       flush_all_mappings ();
-       g_assert (data->first_unmapped_event >= data->next_free_event);
-       
-       write_thread_data_block (data);
-       
-       data->next_free_event = data->events;
-       data->next_unreserved_event = data->events;
-       data->first_unwritten_event = data->events;
-       data->first_unmapped_event = data->events;
-       MONO_PROFILER_GET_CURRENT_COUNTER (data->start_event_counter);
-       data->last_event_counter = data->start_event_counter;
-       
-       UNLOCK_PROFILER ();
-}
-
-/* The ">=" operator is intentional, to leave one spare slot for "extended values" */
-#define RESERVE_EVENTS(d,e,count) do {\
-       if ((d)->next_unreserved_event >= ((d)->end_event - (count))) {\
-               flush_full_event_data_buffer (d);\
-       }\
-       (e) = (d)->next_unreserved_event;\
-       (d)->next_unreserved_event += (count);\
-} while (0)
-#define GET_NEXT_FREE_EVENT(d,e) RESERVE_EVENTS ((d),(e),1)
-#define COMMIT_RESERVED_EVENTS(d) do {\
-       data->next_free_event = data->next_unreserved_event;\
-} while (0)
-
-static void
-flush_everything (void) {
-       ProfilerPerThreadData *data;
-       
-       flush_all_mappings ();
-       for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-               write_thread_data_block (data);
-       }
-       write_statistical_data_block (profiler->statistical_data);
-}
-
-#define RESULT_TO_LOAD_CODE(r) (((r)==MONO_PROFILE_OK)?MONO_PROFILER_LOADED_EVENT_SUCCESS:MONO_PROFILER_LOADED_EVENT_FAILURE)
-static void
-appdomain_start_load (MonoProfiler *profiler, MonoDomain *domain) {
-       LOCK_PROFILER ();
-       loaded_element_load_start (profiler->loaded_appdomains, domain);
-       UNLOCK_PROFILER ();
-}
-
-static void
-appdomain_end_load (MonoProfiler *profiler, MonoDomain *domain, int result) {
-       char *name;
-       LoadedElement *element;
-       
-       name = g_strdup_printf ("%d", mono_domain_get_id (domain));
-       LOCK_PROFILER ();
-       element = loaded_element_load_end (profiler->loaded_appdomains, domain, name);
-       write_element_load_block (element, MONO_PROFILER_LOADED_EVENT_APPDOMAIN | RESULT_TO_LOAD_CODE (result), CURRENT_THREAD_ID (), domain);
-       UNLOCK_PROFILER ();
-}
-
-static void
-appdomain_start_unload (MonoProfiler *profiler, MonoDomain *domain) {
-       LOCK_PROFILER ();
-       loaded_element_unload_start (profiler->loaded_appdomains, domain);
-       flush_everything ();
-       UNLOCK_PROFILER ();
-}
-
-static void
-appdomain_end_unload (MonoProfiler *profiler, MonoDomain *domain) {
-       LoadedElement *element;
-       
-       LOCK_PROFILER ();
-       element = loaded_element_unload_end (profiler->loaded_appdomains, domain);
-       write_element_unload_block (element, MONO_PROFILER_LOADED_EVENT_APPDOMAIN, CURRENT_THREAD_ID ());
-       UNLOCK_PROFILER ();
-}
-
-static void
-module_start_load (MonoProfiler *profiler, MonoImage *module) {
-       LOCK_PROFILER ();
-       loaded_element_load_start (profiler->loaded_modules, module);
-       UNLOCK_PROFILER ();
-}
-
-static void
-module_end_load (MonoProfiler *profiler, MonoImage *module, int result) {
-       char *name;
-       MonoAssemblyName aname;
-       LoadedElement *element;
-       
-       if (mono_assembly_fill_assembly_name (module, &aname)) {
-               name = mono_stringify_assembly_name (&aname);
-       } else {
-               name = g_strdup_printf ("Dynamic module \"%p\"", module);
-       }
-       LOCK_PROFILER ();
-       element = loaded_element_load_end (profiler->loaded_modules, module, name);
-       write_element_load_block (element, MONO_PROFILER_LOADED_EVENT_MODULE | RESULT_TO_LOAD_CODE (result), CURRENT_THREAD_ID (), module);
-       UNLOCK_PROFILER ();
-}
-
-static void
-module_start_unload (MonoProfiler *profiler, MonoImage *module) {
-       LOCK_PROFILER ();
-       loaded_element_unload_start (profiler->loaded_modules, module);
-       flush_everything ();
-       UNLOCK_PROFILER ();
-}
-
-static void
-module_end_unload (MonoProfiler *profiler, MonoImage *module) {
-       LoadedElement *element;
-       
-       LOCK_PROFILER ();
-       element = loaded_element_unload_end (profiler->loaded_modules, module);
-       write_element_unload_block (element, MONO_PROFILER_LOADED_EVENT_MODULE, CURRENT_THREAD_ID ());
-       UNLOCK_PROFILER ();
-}
-
-static void
-assembly_start_load (MonoProfiler *profiler, MonoAssembly *assembly) {
-       LOCK_PROFILER ();
-       loaded_element_load_start (profiler->loaded_assemblies, assembly);
-       UNLOCK_PROFILER ();
-}
-
-static void
-assembly_end_load (MonoProfiler *profiler, MonoAssembly *assembly, int result) {
-       char *name;
-       MonoAssemblyName aname;
-       LoadedElement *element;
-       
-       if (mono_assembly_fill_assembly_name (mono_assembly_get_image (assembly), &aname)) {
-               name = mono_stringify_assembly_name (&aname);
-       } else {
-               name = g_strdup_printf ("Dynamic assembly \"%p\"", assembly);
-       }
-       LOCK_PROFILER ();
-       element = loaded_element_load_end (profiler->loaded_assemblies, assembly, name);
-       write_element_load_block (element, MONO_PROFILER_LOADED_EVENT_ASSEMBLY | RESULT_TO_LOAD_CODE (result), CURRENT_THREAD_ID (), assembly);
-       UNLOCK_PROFILER ();
-}
-
-static void
-assembly_start_unload (MonoProfiler *profiler, MonoAssembly *assembly) {
-       LOCK_PROFILER ();
-       loaded_element_unload_start (profiler->loaded_assemblies, assembly);
-       flush_everything ();
-       UNLOCK_PROFILER ();
-}
-static void
-assembly_end_unload (MonoProfiler *profiler, MonoAssembly *assembly) {
-       LoadedElement *element;
-       
-       LOCK_PROFILER ();
-       element = loaded_element_unload_end (profiler->loaded_assemblies, assembly);
-       write_element_unload_block (element, MONO_PROFILER_LOADED_EVENT_ASSEMBLY, CURRENT_THREAD_ID ());
-       UNLOCK_PROFILER ();
-}
-
-#if (DEBUG_LOGGING_PROFILER)           
-static const char*
-class_event_code_to_string (MonoProfilerClassEvents code) {
-       switch (code) {
-       case MONO_PROFILER_EVENT_CLASS_LOAD: return "LOAD";
-       case MONO_PROFILER_EVENT_CLASS_UNLOAD: return "UNLOAD";
-       case MONO_PROFILER_EVENT_CLASS_ALLOCATION: return "ALLOCATION";
-       case MONO_PROFILER_EVENT_CLASS_EXCEPTION: return "EXCEPTION";
-       default: g_assert_not_reached (); return "";
-       }
-}
-static const char*
-method_event_code_to_string (MonoProfilerMethodEvents code) {
-       switch (code) {
-       case MONO_PROFILER_EVENT_METHOD_CALL: return "CALL";
-       case MONO_PROFILER_EVENT_METHOD_JIT: return "JIT";
-       case MONO_PROFILER_EVENT_METHOD_FREED: return "FREED";
-       case MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER: return "ALLOCATION_CALLER";
-       case MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER: return "ALLOCATION_JIT_TIME_CALLER";
-       case MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID: return "ALLOCATION_OBJECT_ID";
-       default: g_assert_not_reached (); return "";
-       }
-}
-static const char*
-number_event_code_to_string (MonoProfilerEvents code) {
-       switch (code) {
-       case MONO_PROFILER_EVENT_THREAD: return "THREAD";
-       case MONO_PROFILER_EVENT_GC_COLLECTION: return "GC_COLLECTION";
-       case MONO_PROFILER_EVENT_GC_MARK: return "GC_MARK";
-       case MONO_PROFILER_EVENT_GC_SWEEP: return "GC_SWEEP";
-       case MONO_PROFILER_EVENT_GC_RESIZE: return "GC_RESIZE";
-       case MONO_PROFILER_EVENT_GC_STOP_WORLD: return "GC_STOP_WORLD";
-       case MONO_PROFILER_EVENT_GC_START_WORLD: return "GC_START_WORLD";
-       case MONO_PROFILER_EVENT_JIT_TIME_ALLOCATION: return "JIT_TIME_ALLOCATION";
-       case MONO_PROFILER_EVENT_STACK_SECTION: return "STACK_SECTION";
-       case MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID: return "ALLOCATION_OBJECT_ID";
-       default: g_assert_not_reached (); return "";
-       }
-}
-static const char*
-event_result_to_string (MonoProfilerEventResult code) {
-       switch (code) {
-       case MONO_PROFILER_EVENT_RESULT_SUCCESS: return "SUCCESS";
-       case MONO_PROFILER_EVENT_RESULT_FAILURE: return "FAILURE";
-       default: g_assert_not_reached (); return "";
-       }
-}
-static const char*
-event_kind_to_string (MonoProfilerEventKind code) {
-       switch (code) {
-       case MONO_PROFILER_EVENT_KIND_START: return "START";
-       case MONO_PROFILER_EVENT_KIND_END: return "END";
-       default: g_assert_not_reached (); return "";
-       }
-}
-static void
-print_event_data (ProfilerPerThreadData *data, ProfilerEventData *event, guint64 value) {
-       if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_CLASS) {
-               printf ("STORE EVENT [TID %ld][EVENT %ld] CLASS[%p] %s:%s:%s[%d-%d-%d] %ld (%s.%s)\n",
-                               data->thread_id,
-                               event - data->events,
-                               event->data.address,
-                               class_event_code_to_string (event->code & ~MONO_PROFILER_EVENT_RESULT_MASK),
-                               event_result_to_string (event->code & MONO_PROFILER_EVENT_RESULT_MASK),
-                               event_kind_to_string (event->kind),
-                               event->data_type,
-                               event->kind,
-                               event->code,
-                               value,
-                               mono_class_get_namespace ((MonoClass*) event->data.address),
-                               mono_class_get_name ((MonoClass*) event->data.address));
-       } else if (event->data_type == MONO_PROFILER_EVENT_DATA_TYPE_METHOD) {
-               printf ("STORE EVENT [TID %ld][EVENT %ld]  METHOD[%p] %s:%s:%s[%d-%d-%d] %ld (%s.%s:%s (?))\n",
-                               data->thread_id,
-                               event - data->events,
-                               event->data.address,
-                               method_event_code_to_string (event->code & ~MONO_PROFILER_EVENT_RESULT_MASK),
-                               event_result_to_string (event->code & MONO_PROFILER_EVENT_RESULT_MASK),
-                               event_kind_to_string (event->kind),
-                               event->data_type,
-                               event->kind,
-                               event->code,
-                               value,
-                               (event->data.address != NULL) ? mono_class_get_namespace (mono_method_get_class ((MonoMethod*) event->data.address)) : "<NULL>",
-                               (event->data.address != NULL) ? mono_class_get_name (mono_method_get_class ((MonoMethod*) event->data.address)) : "<NULL>",
-                               (event->data.address != NULL) ? mono_method_get_name ((MonoMethod*) event->data.address) : "<NULL>");
-       } else {
-               printf ("STORE EVENT [TID %ld][EVENT %ld]  NUMBER[%ld] %s:%s[%d-%d-%d] %ld\n",
-                               data->thread_id,
-                               event - data->events,
-                               (guint64) event->data.number,
-                               number_event_code_to_string (event->code),
-                               event_kind_to_string (event->kind),
-                               event->data_type,
-                               event->kind,
-                               event->code,
-                               value);
-       }
-}
-#define LOG_EVENT(data,ev,val) print_event_data ((data),(ev),(val))
-#else
-#define LOG_EVENT(data,ev,val)
-#endif
-
-#define RESULT_TO_EVENT_CODE(r) (((r)==MONO_PROFILE_OK)?MONO_PROFILER_EVENT_RESULT_SUCCESS:MONO_PROFILER_EVENT_RESULT_FAILURE)
-
-#define STORE_EVENT_ITEM_COUNTER(event,p,i,dt,c,k) do {\
-       guint64 counter;\
-       guint64 delta;\
-       MONO_PROFILER_GET_CURRENT_COUNTER (counter);\
-       (event)->data.address = (i);\
-       (event)->data_type = (dt);\
-       (event)->code = (c);\
-       (event)->kind = (k);\
-       delta = counter - data->last_event_counter;\
-       if (delta < MAX_EVENT_VALUE) {\
-               (event)->value = delta;\
-       } else {\
-               ProfilerEventData *extension = data->next_unreserved_event;\
-               data->next_unreserved_event ++;\
-               (event)->value = MAX_EVENT_VALUE;\
-               *(guint64*)extension = delta;\
-       }\
-       data->last_event_counter = counter;\
-       LOG_EVENT (data, (event), delta);\
-} while (0);
-#define STORE_EVENT_ITEM_VALUE(event,p,i,dt,c,k,v) do {\
-       (event)->data.address = (i);\
-       (event)->data_type = (dt);\
-       (event)->code = (c);\
-       (event)->kind = (k);\
-       if ((v) < MAX_EVENT_VALUE) {\
-               (event)->value = (v);\
-       } else {\
-               ProfilerEventData *extension = data->next_unreserved_event;\
-               data->next_unreserved_event ++;\
-               (event)->value = MAX_EVENT_VALUE;\
-               *(guint64*)extension = (v);\
-       }\
-       LOG_EVENT (data, (event), (v));\
-}while (0);
-#define STORE_EVENT_NUMBER_COUNTER(event,p,n,dt,c,k) do {\
-       guint64 counter;\
-       guint64 delta;\
-       MONO_PROFILER_GET_CURRENT_COUNTER (counter);\
-       (event)->data.number = (n);\
-       (event)->data_type = (dt);\
-       (event)->code = (c);\
-       (event)->kind = (k);\
-       delta = counter - data->last_event_counter;\
-       if (delta < MAX_EVENT_VALUE) {\
-               (event)->value = delta;\
-       } else {\
-               ProfilerEventData *extension = data->next_unreserved_event;\
-               data->next_unreserved_event ++;\
-               (event)->value = MAX_EVENT_VALUE;\
-               *(guint64*)extension = delta;\
-       }\
-       data->last_event_counter = counter;\
-       LOG_EVENT (data, (event), delta);\
-}while (0);
-#define STORE_EVENT_NUMBER_VALUE(event,p,n,dt,c,k,v) do {\
-       (event)->data.number = (n);\
-       (event)->data_type = (dt);\
-       (event)->code = (c);\
-       (event)->kind = (k);\
-       if ((v) < MAX_EVENT_VALUE) {\
-               (event)->value = (v);\
-       } else {\
-               ProfilerEventData *extension = data->next_unreserved_event;\
-               data->next_unreserved_event ++;\
-               (event)->value = MAX_EVENT_VALUE;\
-               *(guint64*)extension = (v);\
-       }\
-       LOG_EVENT (data, (event), (v));\
-}while (0);
-#define INCREMENT_EVENT(event) do {\
-       if ((event)->value != MAX_EVENT_VALUE) {\
-               (event) ++;\
-       } else {\
-               (event) += 2;\
-       }\
-}while (0);
-
-static void
-class_start_load (MonoProfiler *profiler, MonoClass *klass) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_LOAD, MONO_PROFILER_EVENT_KIND_START);
-       COMMIT_RESERVED_EVENTS (data);
-}
-static void
-class_end_load (MonoProfiler *profiler, MonoClass *klass, int result) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_LOAD | RESULT_TO_EVENT_CODE (result), MONO_PROFILER_EVENT_KIND_END);
-       COMMIT_RESERVED_EVENTS (data);
-}
-static void
-class_start_unload (MonoProfiler *profiler, MonoClass *klass) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_UNLOAD, MONO_PROFILER_EVENT_KIND_START);
-       COMMIT_RESERVED_EVENTS (data);
-}
-static void
-class_end_unload (MonoProfiler *profiler, MonoClass *klass) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_UNLOAD, MONO_PROFILER_EVENT_KIND_END);
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-method_start_jit (MonoProfiler *profiler, MonoMethod *method) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       thread_stack_push_jitted_safely (&(data->stack), method, TRUE);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_JIT, MONO_PROFILER_EVENT_KIND_START);
-       COMMIT_RESERVED_EVENTS (data);
-}
-static void
-method_end_jit (MonoProfiler *profiler, MonoMethod *method, int result) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_JIT | RESULT_TO_EVENT_CODE (result), MONO_PROFILER_EVENT_KIND_END);
-       thread_stack_pop (&(data->stack));
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-#if (HAS_OPROFILE)
-static void
-method_jit_result (MonoProfiler *prof, MonoMethod *method, MonoJitInfo* jinfo, int result) {
-       if (profiler->action_flags.oprofile && (result == MONO_PROFILE_OK)) {
-               MonoClass *klass = mono_method_get_class (method);
-               char *signature = mono_signature_get_desc (mono_method_signature (method), TRUE);
-               char *name = g_strdup_printf ("%s.%s:%s (%s)", mono_class_get_namespace (klass), mono_class_get_name (klass), mono_method_get_name (method), signature);
-               gpointer code_start = mono_jit_info_get_code_start (jinfo);
-               int code_size = mono_jit_info_get_code_size (jinfo);
-               
-               if (op_write_native_code (name, code_start, code_size)) {
-                       g_warning ("Problem calling op_write_native_code\n");
-               }
-               
-               g_free (signature);
-               g_free (name);
-       }
-}
-#endif
-
-
-static void
-method_enter (MonoProfiler *profiler, MonoMethod *method) {
-       ProfilerPerThreadData *data;
-       
-       CHECK_PROFILER_ENABLED ();
-       GET_PROFILER_THREAD_DATA (data);
-       if (profiler->action_flags.track_calls) {
-               ProfilerEventData *event;
-               GET_NEXT_FREE_EVENT (data, event);
-               STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_CALL, MONO_PROFILER_EVENT_KIND_START);
-               COMMIT_RESERVED_EVENTS (data);
-       }
-       if (profiler->action_flags.track_stack) {
-               thread_stack_push_safely (&(data->stack), method);
-       }
-}
-static void
-method_leave (MonoProfiler *profiler, MonoMethod *method) {
-       ProfilerPerThreadData *data;
-       
-       CHECK_PROFILER_ENABLED ();
-       GET_PROFILER_THREAD_DATA (data);
-       if (profiler->action_flags.track_calls) {
-               ProfilerEventData *event;
-               GET_NEXT_FREE_EVENT (data, event);
-               STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_CALL, MONO_PROFILER_EVENT_KIND_END);
-               COMMIT_RESERVED_EVENTS (data);
-       }
-       if (profiler->action_flags.track_stack) {
-               thread_stack_pop (&(data->stack));
-       }
-}
-
-static void
-method_free (MonoProfiler *profiler, MonoMethod *method) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_ITEM_COUNTER (event, profiler, method, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_FREED, 0);
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-thread_start (MonoProfiler *profiler, uintptr_t tid) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_NUMBER_COUNTER (event, profiler, tid, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_THREAD, MONO_PROFILER_EVENT_KIND_START);
-       COMMIT_RESERVED_EVENTS (data);
-}
-static void
-thread_end (MonoProfiler *profiler, uintptr_t tid) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       STORE_EVENT_NUMBER_COUNTER (event, profiler, tid, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_THREAD, MONO_PROFILER_EVENT_KIND_END);
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-static ProfilerEventData*
-save_stack_delta (MonoProfiler *profiler, ProfilerPerThreadData *data, ProfilerEventData *events, int unsaved_frames) {
-       int i;
-       
-       /* In this loop it is safe to simply increment "events" because MAX_EVENT_VALUE cannot be reached. */
-       STORE_EVENT_NUMBER_VALUE (events, profiler, data->stack.last_saved_top, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_STACK_SECTION, 0, unsaved_frames);
-       events++;
-       for (i = 0; i < unsaved_frames; i++) {
-               if (! thread_stack_index_from_top_is_jitted (&(data->stack), i)) {
-                       STORE_EVENT_ITEM_VALUE (events, profiler, thread_stack_index_from_top (&(data->stack), i), MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER, 0, 0);
-               } else {
-                       STORE_EVENT_ITEM_VALUE (events, profiler, thread_stack_index_from_top (&(data->stack), i), MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER, 0, 0);
-               }
-               events ++;
-       }
-       
-       data->stack.last_saved_top = data->stack.top;
-       
-       return events;
-}
-
-static void
-object_allocated (MonoProfiler *profiler, MonoObject *obj, MonoClass *klass) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *events;
-       int unsaved_frames;
-       int event_slot_count;
-       
-       GET_PROFILER_THREAD_DATA (data);
-       event_slot_count = 1;
-       if (profiler->action_flags.save_allocation_caller) {
-               event_slot_count ++;
-       }
-       if (profiler->action_flags.allocations_carry_id) {
-               event_slot_count ++;
-       }
-       if (profiler->action_flags.save_allocation_stack) {
-               unsaved_frames = thread_stack_count_unsaved_frames (&(data->stack));
-               event_slot_count += (unsaved_frames + 1);
-       } else {
-               unsaved_frames = 0;
-       }
-       RESERVE_EVENTS (data, events, event_slot_count);
-       
-       if (profiler->action_flags.save_allocation_stack) {
-               events = save_stack_delta (profiler, data, events, unsaved_frames);
-       }
-       
-       STORE_EVENT_ITEM_VALUE (events, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_ALLOCATION, 0, (guint64) mono_object_get_size (obj));
-       if (profiler->action_flags.unreachable_objects || profiler->action_flags.heap_shot || profiler->action_flags.collection_summary) {
-               STORE_ALLOCATED_OBJECT (data, obj);
-       }
-       
-       if (profiler->action_flags.save_allocation_caller) {
-               MonoMethod *caller = thread_stack_top (&(data->stack));
-               gboolean caller_is_jitted = thread_stack_top_is_jitted (&(data->stack));
-               int index = 1;
-               /* In this loop it is safe to simply increment "events" because MAX_EVENT_VALUE cannot be reached. */
-               events ++;
-               
-               while ((caller != NULL) && (caller->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE)) {
-                       caller = thread_stack_index_from_top (&(data->stack), index);
-                       caller_is_jitted = thread_stack_index_from_top_is_jitted (&(data->stack), index);
-                       index ++;
-               }
-               if (! caller_is_jitted) {
-                       STORE_EVENT_ITEM_VALUE (events, profiler, caller, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_CALLER, 0, 0);
-               } else {
-                       STORE_EVENT_ITEM_VALUE (events, profiler, caller, MONO_PROFILER_EVENT_DATA_TYPE_METHOD, MONO_PROFILER_EVENT_METHOD_ALLOCATION_JIT_TIME_CALLER, 0, 0);
-               }
-       }
-       if (profiler->action_flags.allocations_carry_id) {
-               events ++;
-               STORE_EVENT_ITEM_VALUE (events, profiler, obj, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_ALLOCATION_OBJECT_ID, 0, 0);
-       }
-       
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-monitor_event (MonoProfiler *profiler, MonoObject *obj, MonoProfilerMonitorEvent event) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *events;
-       MonoClass *klass;
-       int unsaved_frames;
-       int event_slot_count;
-       
-       CHECK_PROFILER_ENABLED ();
-       
-       GET_PROFILER_THREAD_DATA (data);
-       klass = mono_object_get_class (obj);
-       
-       unsaved_frames = thread_stack_count_unsaved_frames (&(data->stack));
-       if (unsaved_frames > 0) {
-               event_slot_count = unsaved_frames + 3;
-       } else {
-               event_slot_count = 2;
-       }
-       
-       RESERVE_EVENTS (data, events, event_slot_count);
-       if (unsaved_frames > 0) {
-               events = save_stack_delta (profiler, data, events, unsaved_frames);
-       }
-       STORE_EVENT_ITEM_COUNTER (events, profiler, klass, MONO_PROFILER_EVENT_DATA_TYPE_CLASS, MONO_PROFILER_EVENT_CLASS_MONITOR, MONO_PROFILER_EVENT_KIND_START);
-       INCREMENT_EVENT (events);
-       STORE_EVENT_ITEM_VALUE (events, profiler, obj, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_OBJECT_MONITOR, 0, event);
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-statistical_call_chain (MonoProfiler *profiler, int call_chain_depth, guchar **ips, void *context) {
-       MonoDomain *domain = mono_domain_get ();
-       ProfilerStatisticalData *data;
-       unsigned int index;
-       
-       CHECK_PROFILER_ENABLED ();
-       do {
-               data = profiler->statistical_data;
-               index = InterlockedIncrement ((int*) &data->next_free_index);
-               
-               if (index <= data->end_index) {
-                       unsigned int base_index = (index - 1) * (profiler->statistical_call_chain_depth + 1);
-                       unsigned int call_chain_index = 0;
-                       
-                       //printf ("[statistical_call_chain] (%d)\n", call_chain_depth);
-                       while (call_chain_index < call_chain_depth) {
-                               ProfilerStatisticalHit *hit = & (data->hits [base_index + call_chain_index]);
-                               //printf ("[statistical_call_chain] [%d] = %p\n", base_index + call_chain_index, ips [call_chain_index]);
-                               hit->address = (gpointer) ips [call_chain_index];
-                               hit->domain = domain;
-                               call_chain_index ++;
-                       }
-                       while (call_chain_index <= profiler->statistical_call_chain_depth) {
-                               ProfilerStatisticalHit *hit = & (data->hits [base_index + call_chain_index]);
-                               //printf ("[statistical_call_chain] [%d] = NULL\n", base_index + call_chain_index);
-                               hit->address = NULL;
-                               hit->domain = NULL;
-                               call_chain_index ++;
-                       }
-               } else {
-                       /* Check if we are the one that must swap the buffers */
-                       if (index == data->end_index + 1) {
-                               ProfilerStatisticalData *new_data;
-
-                               /* In the *impossible* case that the writer thread has not finished yet, */
-                               /* loop waiting for it and meanwhile lose all statistical events... */
-                               do {
-                                       /* First, wait that it consumed the ready buffer */
-                                       while (profiler->statistical_data_ready != NULL);
-                                       /* Then, wait that it produced the free buffer */
-                                       new_data = profiler->statistical_data_second_buffer;
-                               } while (new_data == NULL);
-
-                               profiler->statistical_data_ready = data;
-                               profiler->statistical_data = new_data;
-                               profiler->statistical_data_second_buffer = NULL;
-                               WRITER_EVENT_RAISE ();
-                               /* Otherwise exit from the handler and drop the event... */
-                       } else {
-                               break;
-                       }
-                       
-                       /* Loop again, hoping to acquire a free slot this time (otherwise the event will be dropped) */
-                       data = NULL;
-               }
-       } while (data == NULL);
-}
-
-static void
-statistical_hit (MonoProfiler *profiler, guchar *ip, void *context) {
-       MonoDomain *domain = mono_domain_get ();
-       ProfilerStatisticalData *data;
-       unsigned int index;
-       
-       CHECK_PROFILER_ENABLED ();
-       do {
-               data = profiler->statistical_data;
-               index = InterlockedIncrement ((int*) &data->next_free_index);
-               
-               if (index <= data->end_index) {
-                       ProfilerStatisticalHit *hit = & (data->hits [index - 1]);
-                       hit->address = (gpointer) ip;
-                       hit->domain = domain;
-               } else {
-                       /* Check if we are the one that must swap the buffers */
-                       if (index == data->end_index + 1) {
-                               ProfilerStatisticalData *new_data;
-
-                               /* In the *impossible* case that the writer thread has not finished yet, */
-                               /* loop waiting for it and meanwhile lose all statistical events... */
-                               do {
-                                       /* First, wait that it consumed the ready buffer */
-                                       while (profiler->statistical_data_ready != NULL);
-                                       /* Then, wait that it produced the free buffer */
-                                       new_data = profiler->statistical_data_second_buffer;
-                               } while (new_data == NULL);
-                               
-                               profiler->statistical_data_ready = data;
-                               profiler->statistical_data = new_data;
-                               profiler->statistical_data_second_buffer = NULL;
-                               WRITER_EVENT_RAISE ();
-                       }
-                       
-                       /* Loop again, hoping to acquire a free slot this time */
-                       data = NULL;
-               }
-       } while (data == NULL);
-}
-
-static MonoProfilerEvents
-gc_event_code_from_profiler_event (MonoGCEvent event) {
-       switch (event) {
-       case MONO_GC_EVENT_START:
-       case MONO_GC_EVENT_END:
-               return MONO_PROFILER_EVENT_GC_COLLECTION;
-       case MONO_GC_EVENT_MARK_START:
-       case MONO_GC_EVENT_MARK_END:
-               return MONO_PROFILER_EVENT_GC_MARK;
-       case MONO_GC_EVENT_RECLAIM_START:
-       case MONO_GC_EVENT_RECLAIM_END:
-               return MONO_PROFILER_EVENT_GC_SWEEP;
-       case MONO_GC_EVENT_PRE_STOP_WORLD:
-       case MONO_GC_EVENT_POST_STOP_WORLD:
-               return MONO_PROFILER_EVENT_GC_STOP_WORLD;
-       case MONO_GC_EVENT_PRE_START_WORLD:
-       case MONO_GC_EVENT_POST_START_WORLD:
-               return MONO_PROFILER_EVENT_GC_START_WORLD;
-       default:
-               g_assert_not_reached ();
-               return 0;
-       }
-}
-
-static MonoProfilerEventKind
-gc_event_kind_from_profiler_event (MonoGCEvent event) {
-       switch (event) {
-       case MONO_GC_EVENT_START:
-       case MONO_GC_EVENT_MARK_START:
-       case MONO_GC_EVENT_RECLAIM_START:
-       case MONO_GC_EVENT_PRE_STOP_WORLD:
-       case MONO_GC_EVENT_PRE_START_WORLD:
-               return MONO_PROFILER_EVENT_KIND_START;
-       case MONO_GC_EVENT_END:
-       case MONO_GC_EVENT_MARK_END:
-       case MONO_GC_EVENT_RECLAIM_END:
-       case MONO_GC_EVENT_POST_START_WORLD:
-       case MONO_GC_EVENT_POST_STOP_WORLD:
-               return MONO_PROFILER_EVENT_KIND_END;
-       default:
-               g_assert_not_reached ();
-               return 0;
-       }
-}
-
-static gboolean
-dump_current_heap_snapshot (void) {
-       gboolean result;
-       
-       if (profiler->heap_shot_was_requested) {
-               result = TRUE;
-       } else {
-               if (profiler->dump_next_heap_snapshots > 0) {
-                       profiler->dump_next_heap_snapshots--;
-                       result = TRUE;
-               } else if (profiler->dump_next_heap_snapshots < 0) {
-                       result = TRUE;
-               } else {
-                       result = FALSE;
-               }
-       }
-       
-       return result;
-}
-
-static void
-profiler_heap_buffers_setup (ProfilerHeapShotHeapBuffers *heap) {
-       heap->buffers = g_new (ProfilerHeapShotHeapBuffer, 1);
-       heap->buffers->previous = NULL;
-       heap->buffers->next = NULL;
-       heap->buffers->start_slot = &(heap->buffers->buffer [0]);
-       heap->buffers->end_slot = &(heap->buffers->buffer [PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE]);
-       heap->last = heap->buffers;
-       heap->current = heap->buffers;
-       heap->first_free_slot = & (heap->buffers->buffer [0]);
-}
-static void
-profiler_heap_buffers_clear (ProfilerHeapShotHeapBuffers *heap) {
-       heap->buffers = NULL;
-       heap->last = NULL;
-       heap->current = NULL;
-       heap->first_free_slot = NULL;
-}
-static void
-profiler_heap_buffers_free (ProfilerHeapShotHeapBuffers *heap) {
-       ProfilerHeapShotHeapBuffer *current = heap->buffers;
-       while (current != NULL) {
-               ProfilerHeapShotHeapBuffer *next = current->next;
-               g_free (current);
-               current = next;
-       }
-       profiler_heap_buffers_clear (heap);
-}
-
-static int
-report_object_references (gpointer *start, ClassIdMappingElement *layout, ProfilerHeapShotWriteJob *job) {
-       int reported_references = 0;
-       int slot;
-       
-       for (slot = 0; slot < layout->data.layout.slots; slot ++) {
-               gboolean slot_has_reference;
-               if (layout->data.layout.slots <= CLASS_LAYOUT_PACKED_BITMAP_SIZE) {
-                       if (layout->data.bitmap.compact & (((guint64)1) << slot)) {
-                               slot_has_reference = TRUE;
-                       } else {
-                               slot_has_reference = FALSE;
-                       }
-               } else {
-                       if (layout->data.bitmap.extended [slot >> 3] & (1 << (slot & 7))) {
-                               slot_has_reference = TRUE;
-                       } else {
-                               slot_has_reference = FALSE;
-                       }
-               }
-               
-               if (slot_has_reference) {
-                       gpointer field = start [slot];
-                       
-                       if ((field != NULL) && mono_object_is_alive (field)) {
-                               reported_references ++;
-                               WRITE_HEAP_SHOT_JOB_VALUE (job, field);
-                       }
-               }
-       }
-       
-       return reported_references;
-}
-
-static void
-profiler_heap_report_object_reachable (ProfilerHeapShotWriteJob *job, MonoObject *obj) {
-       if (job != NULL) {
-               MonoClass *klass = mono_object_get_class (obj);
-               ClassIdMappingElement *class_id = class_id_mapping_element_get (klass);
-               if (class_id == NULL) {
-                       printf ("profiler_heap_report_object_reachable: class %p (%s.%s) has no id\n", klass, mono_class_get_namespace (klass), mono_class_get_name (klass));
-               }
-               g_assert (class_id != NULL);
-               
-               if (job->summary.capacity > 0) {
-                       guint32 id = class_id->id;
-                       g_assert (id < job->summary.capacity);
-                       
-                       job->summary.per_class_data [id].reachable.instances ++;
-                       job->summary.per_class_data [id].reachable.bytes += mono_object_get_size (obj);
-               }
-               if (profiler->action_flags.heap_shot && job->dump_heap_data) {
-                       int reference_counter = 0;
-                       gpointer *reference_counter_location;
-                       
-                       WRITE_HEAP_SHOT_JOB_VALUE_WITH_CODE (job, obj, HEAP_CODE_OBJECT);
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_report_object_reachable: reported object %p at cursor %p\n", obj, (job->cursor - 1));
-#endif
-                       WRITE_HEAP_SHOT_JOB_VALUE (job, NULL);
-                       reference_counter_location = job->cursor - 1;
-                       
-                       if (mono_class_get_rank (klass)) {
-                               MonoArray *array = (MonoArray *) obj;
-                               MonoClass *element_class = mono_class_get_element_class (klass);
-                               ClassIdMappingElement *element_id = class_id_mapping_element_get (element_class);
-                               
-                               g_assert (element_id != NULL);
-                               if (element_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-                                       class_id_mapping_element_build_layout_bitmap (element_class, element_id);
-                               }
-                               if (! mono_class_is_valuetype (element_class)) {
-                                       int length = mono_array_length (array);
-                                       int i;
-                                       for (i = 0; i < length; i++) {
-                                               MonoObject *array_element = mono_array_get (array, MonoObject*, i);
-                                               if ((array_element != NULL) && mono_object_is_alive (array_element)) {
-                                                       reference_counter ++;
-                                                       WRITE_HEAP_SHOT_JOB_VALUE (job, array_element);
-                                               }
-                                       }
-                               } else if (element_id->data.layout.references > 0) {
-                                       int length = mono_array_length (array);
-                                       int array_element_size = mono_array_element_size (klass);
-                                       int i;
-                                       for (i = 0; i < length; i++) {
-                                               gpointer array_element_address = mono_array_addr_with_size (array, array_element_size, i);
-                                               reference_counter += report_object_references (array_element_address, element_id, job);
-                                       }
-                               }
-                       } else {
-                               if (class_id->data.layout.slots == CLASS_LAYOUT_NOT_INITIALIZED) {
-                                       class_id_mapping_element_build_layout_bitmap (klass, class_id);
-                               }
-                               if (class_id->data.layout.references > 0) {
-                                       reference_counter += report_object_references ((gpointer)(((char*)obj) + sizeof (MonoObject)), class_id, job);
-                               }
-                       }
-                       
-                       *reference_counter_location = GINT_TO_POINTER (reference_counter);
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_report_object_reachable: updated reference_counter_location %p with value %d\n", reference_counter_location, reference_counter);
-#endif
-               }
-       }
-}
-static void
-profiler_heap_report_object_unreachable (ProfilerHeapShotWriteJob *job, MonoObject *obj) {
-       if (job != NULL) {
-               MonoClass *klass = mono_object_get_class (obj);
-               guint32 size = mono_object_get_size (obj);
-               
-               if (job->summary.capacity > 0) {
-                       ClassIdMappingElement *class_id = class_id_mapping_element_get (klass);
-                       guint32 id;
-                       
-                       if (class_id == NULL) {
-                               printf ("profiler_heap_report_object_reachable: class %p (%s.%s) has no id\n", klass, mono_class_get_namespace (klass), mono_class_get_name (klass));
-                       }
-                       g_assert (class_id != NULL);
-                       id = class_id->id;
-                       g_assert (id < job->summary.capacity);
-                       
-                       job->summary.per_class_data [id].unreachable.instances ++;
-                       job->summary.per_class_data [id].unreachable.bytes += size;
-               }
-               if (profiler->action_flags.unreachable_objects && job->dump_heap_data) {
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_report_object_unreachable: at job %p writing klass %p\n", job, klass);
-#endif
-                       WRITE_HEAP_SHOT_JOB_VALUE_WITH_CODE (job, klass, HEAP_CODE_FREE_OBJECT_CLASS);
-       
-#if DEBUG_HEAP_PROFILER
-                       printf ("profiler_heap_report_object_unreachable: at job %p writing size %p\n", job, GUINT_TO_POINTER (size));
-#endif
-                       WRITE_HEAP_SHOT_JOB_VALUE (job, GUINT_TO_POINTER (size));
-               }
-       }
-}
-
-static void
-profiler_heap_add_object (ProfilerHeapShotHeapBuffers *heap, ProfilerHeapShotWriteJob *job, MonoObject *obj) {
-       if (heap->first_free_slot >= heap->current->end_slot) {
-               if (heap->current->next != NULL) {
-                       heap->current = heap->current->next;
-               } else {
-                       ProfilerHeapShotHeapBuffer *buffer = g_new (ProfilerHeapShotHeapBuffer, 1);
-                       buffer->previous = heap->last;
-                       buffer->next = NULL;
-                       buffer->start_slot = &(buffer->buffer [0]);
-                       buffer->end_slot = &(buffer->buffer [PROFILER_HEAP_SHOT_HEAP_BUFFER_SIZE]);
-                       heap->current = buffer;
-                       heap->last->next = buffer;
-                       heap->last = buffer;
-               }
-               heap->first_free_slot = &(heap->current->buffer [0]);
-       }
-       
-       *(heap->first_free_slot) = obj;
-       heap->first_free_slot ++;
-       profiler_heap_report_object_reachable (job, obj);
-}
-
-static MonoObject*
-profiler_heap_pop_object_from_end (ProfilerHeapShotHeapBuffers *heap, ProfilerHeapShotWriteJob *job, MonoObject** current_slot) {
-       while (heap->first_free_slot != current_slot) {
-               MonoObject* obj;
-               
-               if (heap->first_free_slot > heap->current->start_slot) {
-                       heap->first_free_slot --;
-               } else {
-                       heap->current = heap->current->previous;
-                       g_assert (heap->current != NULL);
-                       heap->first_free_slot = heap->current->end_slot - 1;
-               }
-               
-               obj = *(heap->first_free_slot);
-               
-               if (mono_object_is_alive (obj)) {
-                       profiler_heap_report_object_reachable (job, obj);
-                       return obj;
-               } else {
-                       profiler_heap_report_object_unreachable (job, obj);
-               }
-       }
-       return NULL;
-}
-
-static void
-profiler_heap_scan (ProfilerHeapShotHeapBuffers *heap, ProfilerHeapShotWriteJob *job) {
-       ProfilerHeapShotHeapBuffer *current_buffer = heap->buffers;
-       MonoObject** current_slot = current_buffer->start_slot;
-       
-       while (current_slot != heap->first_free_slot) {
-               MonoObject *obj = *current_slot;
-               if (mono_object_is_alive (obj)) {
-                       profiler_heap_report_object_reachable (job, obj);
-               } else {
-                       profiler_heap_report_object_unreachable (job, obj);
-                       *current_slot = profiler_heap_pop_object_from_end (heap, job, current_slot);
-               }
-               
-               if (*current_slot != NULL) {
-                       current_slot ++;
-                       
-                       if (current_slot == current_buffer->end_slot) {
-                               current_buffer = current_buffer->next;
-                               g_assert (current_buffer != NULL);
-                               current_slot = current_buffer->start_slot;
-                       }
-               }
-       }
-}
-
-static inline gboolean
-heap_shot_write_job_should_be_created (gboolean dump_heap_data) {
-       return dump_heap_data || profiler->action_flags.unreachable_objects || profiler->action_flags.collection_summary;
-}
-
-static void
-process_gc_event (MonoProfiler *profiler, gboolean do_heap_profiling, MonoGCEvent ev) {
-       static gboolean dump_heap_data;
-       
-       switch (ev) {
-       case MONO_GC_EVENT_PRE_STOP_WORLD:
-               // Get the lock, so we are sure nobody is flushing events during the collection,
-               // and we can update all mappings (building the class descriptors).
-               // This is necessary also during lock profiling (even if do_heap_profiling is FALSE).
-               LOCK_PROFILER ();
-               break;
-       case MONO_GC_EVENT_POST_STOP_WORLD:
-               if (do_heap_profiling) {
-                       dump_heap_data = dump_current_heap_snapshot ();
-                       if (heap_shot_write_job_should_be_created (dump_heap_data)) {
-                               ProfilerPerThreadData *data;
-                               // Update all mappings, so that we have built all the class descriptors.
-                               flush_all_mappings ();
-                               // Also write all event buffers, so that allocations are recorded.
-                               for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-                                       write_thread_data_block (data);
-                               }
-                       }
-               } else {
-                       dump_heap_data = FALSE;
-               }
-               // Release lock...
-               UNLOCK_PROFILER ();
-               break;
-       case MONO_GC_EVENT_MARK_END: {
-               if (do_heap_profiling) {
-                       ProfilerHeapShotWriteJob *job;
-                       ProfilerPerThreadData *data;
-                       
-                       if (heap_shot_write_job_should_be_created (dump_heap_data)) {
-                               job = profiler_heap_shot_write_job_new (profiler->heap_shot_was_requested, dump_heap_data, profiler->garbage_collection_counter);
-                               profiler->heap_shot_was_requested = FALSE;
-                               MONO_PROFILER_GET_CURRENT_COUNTER (job->start_counter);
-                               MONO_PROFILER_GET_CURRENT_TIME (job->start_time);
-                       } else {
-                               job = NULL;
-                       }
-                       
-                       profiler_heap_scan (&(profiler->heap), job);
-                       
-                       for (data = profiler->per_thread_data; data != NULL; data = data->next) {
-                               ProfilerHeapShotObjectBuffer *buffer;
-                               for (buffer = data->heap_shot_object_buffers; buffer != NULL; buffer = buffer->next) {
-                                       MonoObject **cursor;
-                                       for (cursor = buffer->first_unprocessed_slot; cursor < buffer->next_free_slot; cursor ++) {
-                                               MonoObject *obj = *cursor;
-#if DEBUG_HEAP_PROFILER
-                                               printf ("gc_event: in object buffer %p(%p-%p) cursor at %p has object %p ", buffer, &(buffer->buffer [0]), buffer->end, cursor, obj);
-#endif
-                                               if (mono_object_is_alive (obj)) {
-#if DEBUG_HEAP_PROFILER
-                                                       printf ("(object is alive, adding to heap)\n");
-#endif
-                                                       profiler_heap_add_object (&(profiler->heap), job, obj);
-                                               } else {
-#if DEBUG_HEAP_PROFILER
-                                                       printf ("(object is unreachable, reporting in job)\n");
-#endif
-                                                       profiler_heap_report_object_unreachable (job, obj);
-                                               }
-                                       }
-                                       buffer->first_unprocessed_slot = cursor;
-                               }
-                       }
-                       
-                       if (job != NULL) {
-                               MONO_PROFILER_GET_CURRENT_COUNTER (job->end_counter);
-                               MONO_PROFILER_GET_CURRENT_TIME (job->end_time);
-                               
-                               profiler_add_heap_shot_write_job (job);
-                               profiler_free_heap_shot_write_jobs ();
-                               WRITER_EVENT_RAISE ();
-                       }
-               }
-               break;
-       }
-       default:
-               break;
-       }
-}
-
-static void
-gc_event (MonoProfiler *profiler, MonoGCEvent ev, int generation) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       gboolean do_heap_profiling = profiler->action_flags.unreachable_objects || profiler->action_flags.heap_shot || profiler->action_flags.collection_summary;
-       guint32 event_value;
-       
-       if (ev == MONO_GC_EVENT_START) {
-               profiler->garbage_collection_counter ++;
-       }
-       
-       event_value = (profiler->garbage_collection_counter << 8) | generation;
-       
-       if (ev == MONO_GC_EVENT_POST_STOP_WORLD) {
-               process_gc_event (profiler, do_heap_profiling, ev);
-       }
-       
-       /* Check if the gc event should be recorded. */
-       if (profiler->action_flags.report_gc_events || do_heap_profiling) {
-               GET_PROFILER_THREAD_DATA (data);
-               GET_NEXT_FREE_EVENT (data, event);
-               STORE_EVENT_NUMBER_COUNTER (event, profiler, event_value, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, gc_event_code_from_profiler_event (ev), gc_event_kind_from_profiler_event (ev));
-               COMMIT_RESERVED_EVENTS (data);
-       }
-       
-       if (ev != MONO_GC_EVENT_POST_STOP_WORLD) {
-               process_gc_event (profiler, do_heap_profiling, ev);
-       }
-}
-
-static void
-gc_resize (MonoProfiler *profiler, gint64 new_size) {
-       ProfilerPerThreadData *data;
-       ProfilerEventData *event;
-       GET_PROFILER_THREAD_DATA (data);
-       GET_NEXT_FREE_EVENT (data, event);
-       profiler->garbage_collection_counter ++;
-       STORE_EVENT_NUMBER_VALUE (event, profiler, new_size, MONO_PROFILER_EVENT_DATA_TYPE_OTHER, MONO_PROFILER_EVENT_GC_RESIZE, 0, profiler->garbage_collection_counter);
-       COMMIT_RESERVED_EVENTS (data);
-}
-
-static void
-runtime_initialized (MonoProfiler *profiler) {
-       LOG_WRITER_THREAD ("runtime_initialized: initializing internal calls.\n");
-       mono_add_internal_call ("Mono.Profiler.RuntimeControls::EnableProfiler", enable_profiler);
-       mono_add_internal_call ("Mono.Profiler.RuntimeControls::DisableProfiler", disable_profiler);
-       mono_add_internal_call ("Mono.Profiler.RuntimeControls::TakeHeapSnapshot", request_heap_snapshot);
-       LOG_WRITER_THREAD ("runtime_initialized: initialized internal calls.\n");
-}
-
-
-#define MAX_COMMAND_LENGTH (1024)
-static int server_socket;
-static int command_socket;
-
-static void
-write_user_response (const char *response) {
-       LOG_USER_THREAD ("write_user_response: writing response:");
-       LOG_USER_THREAD (response);
-       send (command_socket, response, strlen (response), 0);
-}
-
-static void
-execute_user_command (char *command) {
-       char *line_feed;
-       
-       LOG_USER_THREAD ("execute_user_command: executing command:");
-       LOG_USER_THREAD (command);
-       
-       /* Ignore leading and trailing '\r' */
-       line_feed = strchr (command, '\r');
-       if (line_feed == command) {
-               command ++;
-               line_feed = strchr (command, '\r');
-       }
-       if ((line_feed != NULL) && (* (line_feed + 1) == 0)) {
-               *line_feed = 0;
-       }
-       
-       if (strcmp (command, "enable") == 0) {
-               LOG_USER_THREAD ("execute_user_command: enabling profiler");
-               enable_profiler ();
-               write_user_response ("DONE\n");
-       } else if (strcmp (command, "disable") == 0) {
-               LOG_USER_THREAD ("execute_user_command: disabling profiler");
-               disable_profiler ();
-               write_user_response ("DONE\n");
-       } else if (strcmp (command, "heap-snapshot") == 0) {
-               LOG_USER_THREAD ("execute_user_command: taking heap snapshot");
-               profiler->heap_shot_was_requested = TRUE;
-               WRITER_EVENT_RAISE ();
-               write_user_response ("DONE\n");
-       } else if (strstr (command, "heap-snapshot-counter") == 0) {
-               char *equals; 
-               LOG_USER_THREAD ("execute_user_command: changing heap counter");
-               equals = strstr (command, "=");
-               if (equals != NULL) {
-                       equals ++;
-                       if (strcmp (equals, "all") == 0) {
-                               LOG_USER_THREAD ("execute_user_command: heap counter is \"all\"");
-                               profiler->garbage_collection_counter = -1;
-                       } else if (strcmp (equals, "none") == 0) {
-                               LOG_USER_THREAD ("execute_user_command: heap counter is \"none\"");
-                               profiler->garbage_collection_counter = 0;
-                       } else {
-                               profiler->garbage_collection_counter = atoi (equals);
-                       }
-                       write_user_response ("DONE\n");
-               } else {
-                       write_user_response ("ERROR\n");
-               }
-               profiler->heap_shot_was_requested = TRUE;
-       } else {
-               LOG_USER_THREAD ("execute_user_command: command not recognized");
-               write_user_response ("ERROR\n");
-       }
-}
-
-static gboolean
-process_user_commands (void) {
-       char *command_buffer = malloc (MAX_COMMAND_LENGTH);
-       int command_buffer_current_index = 0;
-       gboolean loop = TRUE;
-       gboolean result = TRUE;
-       
-       while (loop) {
-               int unprocessed_characters;
-               
-               LOG_USER_THREAD ("process_user_commands: reading from socket...");
-               unprocessed_characters = recv (command_socket, command_buffer + command_buffer_current_index, MAX_COMMAND_LENGTH - command_buffer_current_index, 0);
-               
-               if (unprocessed_characters > 0) {
-                       char *command_end = NULL;
-                       
-                       LOG_USER_THREAD ("process_user_commands: received characters.");
-                       
-                       do {
-                               if (command_end != NULL) {
-                                       *command_end = 0;
-                                       execute_user_command (command_buffer);
-                                       unprocessed_characters -= (((command_end - command_buffer) - command_buffer_current_index) + 1);
-                                       
-                                       if (unprocessed_characters > 0) {
-                                               memmove (command_buffer, command_end + 1, unprocessed_characters);
-                                       }
-                                       command_buffer_current_index = 0;
-                               }
-                               
-                               command_end = memchr (command_buffer, '\n', command_buffer_current_index + unprocessed_characters);
-                       } while (command_end != NULL);
-                       
-                       command_buffer_current_index += unprocessed_characters;
-                       
-               } else if (unprocessed_characters == 0) {
-                       LOG_USER_THREAD ("process_user_commands: received no character.");
-                       result = TRUE;
-                       loop = FALSE;
-               } else {
-                       LOG_USER_THREAD ("process_user_commands: received error.");
-                       result = FALSE;
-                       loop = FALSE;
-               }
-       }
-       
-       free (command_buffer);
-       return result;
-}
-
-static guint32
-user_thread (gpointer nothing) {
-       struct sockaddr_in server_address;
-       
-       server_socket = -1;
-       command_socket = -1;
-       
-       LOG_USER_THREAD ("user_thread: starting up...");
-       
-       server_socket = socket (AF_INET, SOCK_STREAM, 0);
-       if (server_socket < 0) {
-               LOG_USER_THREAD ("user_thread: error creating socket.");
-               return 0;
-       }
-       memset (& server_address, 0, sizeof (server_address));
-       
-       server_address.sin_family = AF_INET;
-       server_address.sin_addr.s_addr = INADDR_ANY;
-       if ((profiler->command_port < 1023) || (profiler->command_port > 65535)) {
-               LOG_USER_THREAD ("user_thread: invalid port number.");
-               return 0;
-       }
-       server_address.sin_port = htons (profiler->command_port);
-       
-       if (bind (server_socket, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) {
-               LOG_USER_THREAD ("user_thread: error binding socket.");
-               close (server_socket);
-               return 0;
-       }
-       
-       LOG_USER_THREAD ("user_thread: listening...\n");
-       listen (server_socket, 1);
-       command_socket = accept (server_socket, NULL, NULL);
-       if (command_socket < 0) {
-               LOG_USER_THREAD ("user_thread: error accepting socket.");
-               close (server_socket);
-               return 0;
-       }
-       
-       LOG_USER_THREAD ("user_thread: processing user commands...");
-       process_user_commands ();
-       
-       LOG_USER_THREAD ("user_thread: exiting cleanly.");
-       close (server_socket);
-       close (command_socket);
-       return 0;
-}
-
-
-/* called at the end of the program */
-static void
-profiler_shutdown (MonoProfiler *prof)
-{
-       ProfilerPerThreadData* current_thread_data;
-       ProfilerPerThreadData* next_thread_data;
-       
-       LOG_WRITER_THREAD ("profiler_shutdown: zeroing relevant flags");
-       mono_profiler_set_events (0);
-       /* During shutdown searching for MonoJitInfo is not possible... */
-       if (profiler->statistical_call_chain_strategy == MONO_PROFILER_CALL_CHAIN_MANAGED) {
-               mono_profiler_install_statistical_call_chain (NULL, 0, MONO_PROFILER_CALL_CHAIN_NONE);
-       }
-       //profiler->flags = 0;
-       //profiler->action_flags.unreachable_objects = FALSE;
-       //profiler->action_flags.heap_shot = FALSE;
-       
-       LOG_WRITER_THREAD ("profiler_shutdown: asking stats thread to exit");
-       profiler->terminate_writer_thread = TRUE;
-       WRITER_EVENT_RAISE ();
-       LOG_WRITER_THREAD ("profiler_shutdown: waiting for stats thread to exit");
-       WAIT_WRITER_THREAD ();
-       LOG_WRITER_THREAD ("profiler_shutdown: stats thread should be dead now");
-       WRITER_EVENT_DESTROY ();
-       
-       LOCK_PROFILER ();
-       flush_everything ();
-       MONO_PROFILER_GET_CURRENT_TIME (profiler->end_time);
-       MONO_PROFILER_GET_CURRENT_COUNTER (profiler->end_counter);
-       write_end_block ();
-       FLUSH_FILE ();
-       CLOSE_FILE();
-       mono_profiler_install_code_chunk_new (NULL);
-       mono_profiler_install_code_chunk_destroy (NULL);
-       mono_profiler_install_code_buffer_new (NULL);
-       profiler_code_chunks_cleanup (& (profiler->code_chunks));
-       UNLOCK_PROFILER ();
-       
-       g_free (profiler->file_name);
-       if (profiler->file_name_suffix != NULL) {
-               g_free (profiler->file_name_suffix);
-       }
-       
-       method_id_mapping_destroy (profiler->methods);
-       class_id_mapping_destroy (profiler->classes);
-       g_hash_table_destroy (profiler->loaded_assemblies);
-       g_hash_table_destroy (profiler->loaded_modules);
-       g_hash_table_destroy (profiler->loaded_appdomains);
-       
-       FREE_PROFILER_THREAD_DATA ();
-       
-       for (current_thread_data = profiler->per_thread_data; current_thread_data != NULL; current_thread_data = next_thread_data) {
-               next_thread_data = current_thread_data->next;
-               profiler_per_thread_data_destroy (current_thread_data);
-       }
-       if (profiler->statistical_data != NULL) {
-               profiler_statistical_data_destroy (profiler->statistical_data);
-       }
-       if (profiler->statistical_data_ready != NULL) {
-               profiler_statistical_data_destroy (profiler->statistical_data_ready);
-       }
-       if (profiler->statistical_data_second_buffer != NULL) {
-               profiler_statistical_data_destroy (profiler->statistical_data_second_buffer);
-       }
-       if (profiler->executable_regions != NULL) {
-               profiler_executable_memory_regions_destroy (profiler->executable_regions);
-       }
-       
-       profiler_heap_buffers_free (&(profiler->heap));
-       
-       profiler_free_write_buffers ();
-       profiler_destroy_heap_shot_write_jobs ();
-       
-       DELETE_PROFILER_MUTEX ();
-       
-#if (HAS_OPROFILE)
-       if (profiler->action_flags.oprofile) {
-               op_close_agent ();
-       }
-#endif
-       
-       g_free (profiler);
-       profiler = NULL;
-}
-
-#define FAIL_ARGUMENT_CHECK(message) do {\
-       failure_message = (message);\
-       goto failure_handling;\
-} while (0)
-#define FAIL_PARSING_VALUED_ARGUMENT FAIL_ARGUMENT_CHECK("cannot parse valued argument %s")
-#define FAIL_PARSING_FLAG_ARGUMENT FAIL_ARGUMENT_CHECK("cannot parse flag argument %s")
-#define CHECK_CONDITION(condition,message) do {\
-       gboolean result = (condition);\
-       if (result) {\
-               FAIL_ARGUMENT_CHECK (message);\
-       }\
-} while (0)
-#define FAIL_IF_HAS_MINUS CHECK_CONDITION(has_minus,"minus ('-') modifier not allowed for argument %s")
-#define TRUE_IF_NOT_MINUS ((!has_minus)?TRUE:FALSE)
-
-#define DEFAULT_ARGUMENTS "s"
-static void
-setup_user_options (const char *arguments) {
-       gchar **arguments_array, **current_argument;
-       detect_fast_timer ();
-       
-       profiler->file_name = NULL;
-       profiler->file_name_suffix = NULL;
-       profiler->per_thread_buffer_size = 10000;
-       profiler->statistical_buffer_size = 10000;
-       profiler->statistical_call_chain_depth = 0;
-       profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_NATIVE;
-       profiler->write_buffer_size = 1024;
-       profiler->dump_next_heap_snapshots = 0;
-       profiler->heap_shot_was_requested = FALSE;
-       profiler->flags = MONO_PROFILE_APPDOMAIN_EVENTS|
-                       MONO_PROFILE_ASSEMBLY_EVENTS|
-                       MONO_PROFILE_MODULE_EVENTS|
-                       MONO_PROFILE_CLASS_EVENTS|
-                       MONO_PROFILE_METHOD_EVENTS|
-                       MONO_PROFILE_JIT_COMPILATION;
-       profiler->profiler_enabled = TRUE;
-       
-       if (arguments == NULL) {
-               arguments = DEFAULT_ARGUMENTS;
-       } else if (strstr (arguments, ":")) {
-               arguments = strstr (arguments, ":") + 1;
-               if (arguments [0] == 0) {
-                       arguments = DEFAULT_ARGUMENTS;
-               }
-       }
-       
-       arguments_array = g_strsplit (arguments, ",", -1);
-       
-       for (current_argument = arguments_array; ((current_argument != NULL) && (current_argument [0] != 0)); current_argument ++) {
-               char *argument = *current_argument;
-               char *equals = strstr (argument, "=");
-               const char *failure_message = NULL;
-               gboolean has_plus;
-               gboolean has_minus;
-               
-               if (*argument == '+') {
-                       has_plus = TRUE;
-                       has_minus = FALSE;
-                       argument ++;
-               } else if (*argument == '-') {
-                       has_plus = FALSE;
-                       has_minus = TRUE;
-                       argument ++;
-               } else {
-                       has_plus = FALSE;
-                       has_minus = FALSE;
-               }
-               
-               if (equals != NULL) {
-                       int equals_position = equals - argument;
-                       
-                       if (! (strncmp (argument, "per-thread-buffer-size", equals_position) && strncmp (argument, "tbs", equals_position))) {
-                               int value = atoi (equals + 1);
-                               FAIL_IF_HAS_MINUS;
-                               if (value > 0) {
-                                       profiler->per_thread_buffer_size = value;
-                               }
-                       } else if (! (strncmp (argument, "statistical", equals_position) && strncmp (argument, "stat", equals_position) && strncmp (argument, "s", equals_position))) {
-                               int value = atoi (equals + 1);
-                               FAIL_IF_HAS_MINUS;
-                               if (value > 0) {
-                                       if (value > MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH) {
-                                               value = MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH;
-                                       }
-                                       profiler->statistical_call_chain_depth = value;
-                                       profiler->flags |= MONO_PROFILE_STATISTICAL;
-                               }
-                       } else if (! (strncmp (argument, "call-chain-strategy", equals_position) && strncmp (argument, "ccs", equals_position))) {
-                               char *parameter = equals + 1;
-                               FAIL_IF_HAS_MINUS;
-                               if (! strcmp (parameter, "native")) {
-                                       profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_NATIVE;
-                               } else if (! strcmp (parameter, "glibc")) {
-                                       profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_GLIBC;
-                               } else if (! strcmp (parameter, "managed")) {
-                                       profiler->statistical_call_chain_strategy = MONO_PROFILER_CALL_CHAIN_MANAGED;
-                               } else {
-                                       failure_message = "invalid call chain strategy in argument %s";
-                                       goto failure_handling;
-                               }
-                       } else if (! (strncmp (argument, "statistical-thread-buffer-size", equals_position) && strncmp (argument, "sbs", equals_position))) {
-                               int value = atoi (equals + 1);
-                               FAIL_IF_HAS_MINUS;
-                               if (value > 0) {
-                                       profiler->statistical_buffer_size = value;
-                               }
-                       } else if (! (strncmp (argument, "write-buffer-size", equals_position) && strncmp (argument, "wbs", equals_position))) {
-                               int value = atoi (equals + 1);
-                               FAIL_IF_HAS_MINUS;
-                               if (value > 0) {
-                                       profiler->write_buffer_size = value;
-                               }
-                       } else if (! (strncmp (argument, "output", equals_position) && strncmp (argument, "out", equals_position) && strncmp (argument, "o", equals_position) && strncmp (argument, "O", equals_position))) {
-                               FAIL_IF_HAS_MINUS;
-                               if (strlen (equals + 1) > 0) {
-                                       profiler->file_name = g_strdup (equals + 1);
-                               }
-                       } else if (! (strncmp (argument, "output-suffix", equals_position) && strncmp (argument, "suffix", equals_position) && strncmp (argument, "os", equals_position) && strncmp (argument, "OS", equals_position))) {
-                               FAIL_IF_HAS_MINUS;
-                               if (strlen (equals + 1) > 0) {
-                                       profiler->file_name_suffix = g_strdup (equals + 1);
-                               }
-                       } else if (! (strncmp (argument, "heap-shot", equals_position) && strncmp (argument, "heap", equals_position) && strncmp (argument, "h", equals_position))) {
-                               char *parameter = equals + 1;
-                               if (! strcmp (parameter, "all")) {
-                                       profiler->dump_next_heap_snapshots = -1;
-                               } else {
-                                       profiler->dump_next_heap_snapshots = atoi (parameter);
-                               }
-                               FAIL_IF_HAS_MINUS;
-                               if (! has_plus) {
-                                       profiler->action_flags.save_allocation_caller = TRUE;
-                                       profiler->action_flags.save_allocation_stack = TRUE;
-                                       profiler->action_flags.allocations_carry_id = TRUE_IF_NOT_MINUS;
-                               }
-                               profiler->action_flags.heap_shot = TRUE_IF_NOT_MINUS;
-                       } else if (! (strncmp (argument, "gc-dumps", equals_position) && strncmp (argument, "gc-d", equals_position) && strncmp (argument, "gcd", equals_position))) {
-                               FAIL_IF_HAS_MINUS;
-                               if (strlen (equals + 1) > 0) {
-                                       profiler->dump_next_heap_snapshots = atoi (equals + 1);
-                               }
-                       } else if (! (strncmp (argument, "command-port", equals_position) && strncmp (argument, "cp", equals_position))) {
-                               FAIL_IF_HAS_MINUS;
-                               if (strlen (equals + 1) > 0) {
-                                       profiler->command_port = atoi (equals + 1);
-                               }
-                       } else {
-                               FAIL_PARSING_VALUED_ARGUMENT;
-                       }
-               } else {
-                       if (! (strcmp (argument, "jit") && strcmp (argument, "j"))) {
-                               profiler->action_flags.jit_time = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "allocations") && strcmp (argument, "alloc") && strcmp (argument, "a"))) {
-                               FAIL_IF_HAS_MINUS;
-                               if (! has_plus) {
-                                       profiler->action_flags.save_allocation_caller = TRUE;
-                                       profiler->action_flags.save_allocation_stack = TRUE;
-                               }
-                               if (! has_minus) {
-                                       profiler->flags |= MONO_PROFILE_ALLOCATIONS;
-                               } else {
-                                       profiler->flags &= ~MONO_PROFILE_ALLOCATIONS;
-                               }
-                       } else if (! (strcmp (argument, "monitor") && strcmp (argument, "locks") && strcmp (argument, "lock"))) {
-                               FAIL_IF_HAS_MINUS;
-                               profiler->action_flags.track_stack = TRUE;
-                               profiler->flags |= MONO_PROFILE_MONITOR_EVENTS;
-                               profiler->flags |= MONO_PROFILE_GC;
-                       } else if (! (strcmp (argument, "gc") && strcmp (argument, "g"))) {
-                               FAIL_IF_HAS_MINUS;
-                               profiler->action_flags.report_gc_events = TRUE;
-                               profiler->flags |= MONO_PROFILE_GC;
-                       } else if (! (strcmp (argument, "allocations-summary") && strcmp (argument, "as"))) {
-                               profiler->action_flags.collection_summary = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "heap-shot") && strcmp (argument, "heap") && strcmp (argument, "h"))) {
-                               FAIL_IF_HAS_MINUS;
-                               if (! has_plus) {
-                                       profiler->action_flags.save_allocation_caller = TRUE;
-                                       profiler->action_flags.save_allocation_stack = TRUE;
-                                       profiler->action_flags.allocations_carry_id = TRUE_IF_NOT_MINUS;
-                               }
-                               profiler->action_flags.heap_shot = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "unreachable") && strcmp (argument, "free") && strcmp (argument, "f"))) {
-                               profiler->action_flags.unreachable_objects = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "threads") && strcmp (argument, "t"))) {
-                               if (! has_minus) {
-                                       profiler->flags |= MONO_PROFILE_THREADS;
-                               } else {
-                                       profiler->flags &= ~MONO_PROFILE_THREADS;
-                               }
-                       } else if (! (strcmp (argument, "enter-leave") && strcmp (argument, "calls") && strcmp (argument, "c"))) {
-                               profiler->action_flags.track_calls = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "statistical") && strcmp (argument, "stat") && strcmp (argument, "s"))) {
-                               if (! has_minus) {
-                                       profiler->flags |= MONO_PROFILE_STATISTICAL;
-                               } else {
-                                       profiler->flags &= ~MONO_PROFILE_STATISTICAL;
-                               }
-                       } else if (! (strcmp (argument, "save-allocation-caller") && strcmp (argument, "sac"))) {
-                               profiler->action_flags.save_allocation_caller = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "save-allocation-stack") && strcmp (argument, "sas"))) {
-                               profiler->action_flags.save_allocation_stack = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "allocations-carry-id") && strcmp (argument, "aci"))) {
-                               profiler->action_flags.allocations_carry_id = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "start-enabled") && strcmp (argument, "se"))) {
-                               profiler->profiler_enabled = TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "start-disabled") && strcmp (argument, "sd"))) {
-                               profiler->profiler_enabled = ! TRUE_IF_NOT_MINUS;
-                       } else if (! (strcmp (argument, "force-accurate-timer") && strcmp (argument, "fac"))) {
-                               use_fast_timer = TRUE_IF_NOT_MINUS;
-#if (HAS_OPROFILE)
-                       } else if (! (strcmp (argument, "oprofile") && strcmp (argument, "oprof"))) {
-                               profiler->flags |= MONO_PROFILE_JIT_COMPILATION;
-                               profiler->action_flags.oprofile = TRUE;
-                               if (op_open_agent ()) {
-                                       FAIL_ARGUMENT_CHECK ("problem calling op_open_agent");
-                               }
-#endif
-                       } else if (strcmp (argument, "logging")) {
-                               FAIL_PARSING_FLAG_ARGUMENT;
-                       }
-               }
-               
-failure_handling:
-               if (failure_message != NULL) {
-                       g_warning (failure_message, argument);
-                       failure_message = NULL;
-               }
-       }
-       
-       g_free (arguments_array);
-       
-       /* Ensure that the profiler flags needed to support required action flags are active */
-       if (profiler->action_flags.jit_time) {
-               profiler->flags |= MONO_PROFILE_JIT_COMPILATION;
-       }
-       if (profiler->action_flags.save_allocation_caller || profiler->action_flags.save_allocation_stack || profiler->action_flags.allocations_carry_id) {
-               profiler->flags |= MONO_PROFILE_ALLOCATIONS;
-       }
-       if (profiler->action_flags.collection_summary || profiler->action_flags.heap_shot || profiler->action_flags.unreachable_objects) {
-               profiler->flags |= MONO_PROFILE_ALLOCATIONS;
-               profiler->action_flags.report_gc_events = TRUE;
-       }
-       if (profiler->action_flags.track_calls) {
-               profiler->flags |= MONO_PROFILE_ENTER_LEAVE;
-               profiler->action_flags.jit_time = TRUE;
-       }
-       if (profiler->action_flags.save_allocation_caller || profiler->action_flags.save_allocation_stack) {
-               profiler->action_flags.track_stack = TRUE;
-               profiler->flags |= MONO_PROFILE_ENTER_LEAVE;
-       }
-       if (profiler->action_flags.track_stack) {
-               profiler->flags |= MONO_PROFILE_ENTER_LEAVE;
-       }
-       
-       /* Tracking call stacks is useless if we already emit all enter-exit events... */
-       if (profiler->action_flags.track_calls) {
-               profiler->action_flags.track_stack = FALSE;
-               profiler->action_flags.save_allocation_caller = FALSE;
-               profiler->action_flags.save_allocation_stack = FALSE;
-       }
-       
-       /* Without JIT events the stat profiler will not find method IDs... */
-       if (profiler->flags | MONO_PROFILE_STATISTICAL) {
-               profiler->flags |= MONO_PROFILE_JIT_COMPILATION;
-       }
-       /* Profiling allocations without knowing which gc we are doing is not nice... */
-       if (profiler->flags | MONO_PROFILE_ALLOCATIONS) {
-               profiler->flags |= MONO_PROFILE_GC;
-               profiler->action_flags.report_gc_events = TRUE;
-       }
-
-       
-       if (profiler->file_name == NULL) {
-               char *program_name = g_get_prgname ();
-               
-               if (program_name != NULL) {
-                       char *name_buffer = g_strdup (program_name);
-                       char *name_start = name_buffer;
-                       char *cursor;
-                       
-                       /* Jump over the last '/' */
-                       cursor = strrchr (name_buffer, '/');
-                       if (cursor == NULL) {
-                               cursor = name_buffer;
-                       } else {
-                               cursor ++;
-                       }
-                       name_start = cursor;
-                       
-                       /* Then jump over the last '\\' */
-                       cursor = strrchr (name_start, '\\');
-                       if (cursor == NULL) {
-                               cursor = name_start;
-                       } else {
-                               cursor ++;
-                       }
-                       name_start = cursor;
-                       
-                       /* Finally, find the last '.' */
-                       cursor = strrchr (name_start, '.');
-                       if (cursor != NULL) {
-                               *cursor = 0;
-                       }
-                       
-                       if (profiler->file_name_suffix == NULL) {
-                               profiler->file_name = g_strdup_printf ("%s.mprof", name_start);
-                       } else {
-                               profiler->file_name = g_strdup_printf ("%s-%s.mprof", name_start, profiler->file_name_suffix);
-                       }
-                       g_free (name_buffer);
-               } else {
-                       profiler->file_name = g_strdup_printf ("%s.mprof", "profiler-log");
-               }
-       }
-}
-
-static guint32
-data_writer_thread (gpointer nothing) {
-       for (;;) {
-               ProfilerStatisticalData *statistical_data;
-               gboolean done;
-               
-               LOG_WRITER_THREAD ("data_writer_thread: going to sleep");
-               WRITER_EVENT_WAIT ();
-               LOG_WRITER_THREAD ("data_writer_thread: just woke up");
-               
-               if (profiler->heap_shot_was_requested) {
-                       MonoDomain * root_domain = mono_get_root_domain ();
-                       
-                       if (root_domain != NULL) {
-                               MonoThread *this_thread;
-                               LOG_WRITER_THREAD ("data_writer_thread: attaching thread");
-                               this_thread = mono_thread_attach (root_domain);
-                       LOG_WRITER_THREAD ("data_writer_thread: starting requested collection");
-                       mono_gc_collect (mono_gc_max_generation ());
-                       LOG_WRITER_THREAD ("data_writer_thread: requested collection done");
-                               LOG_WRITER_THREAD ("data_writer_thread: detaching thread");
-                               mono_thread_detach (this_thread);
-                               this_thread = NULL;
-                               LOG_WRITER_THREAD ("data_writer_thread: collection sequence completed");
-                       } else {
-                               LOG_WRITER_THREAD ("data_writer_thread: cannot get root domain, collection sequence skipped");
-                       }
-                       
-               }
-               
-               statistical_data = profiler->statistical_data_ready;
-               done = (statistical_data == NULL) && (profiler->heap_shot_write_jobs == NULL);
-               
-               if (!done) {
-                       LOG_WRITER_THREAD ("data_writer_thread: acquiring lock and writing data");
-                       LOCK_PROFILER ();
-                       
-                       // This makes sure that all method ids are in place
-                       LOG_WRITER_THREAD ("data_writer_thread: writing mapping...");
-                       flush_all_mappings ();
-                       LOG_WRITER_THREAD ("data_writer_thread: wrote mapping");
-                       
-                       if (statistical_data != NULL) {
-                               LOG_WRITER_THREAD ("data_writer_thread: writing statistical data...");
-                               profiler->statistical_data_ready = NULL;
-                               write_statistical_data_block (statistical_data);
-                               statistical_data->next_free_index = 0;
-                               statistical_data->first_unwritten_index = 0;
-                               profiler->statistical_data_second_buffer = statistical_data;
-                               LOG_WRITER_THREAD ("data_writer_thread: wrote statistical data");
-                       }
-                       
-                       profiler_process_heap_shot_write_jobs ();
-                       
-                       UNLOCK_PROFILER ();
-                       LOG_WRITER_THREAD ("data_writer_thread: wrote data and released lock");
-               } else {
-                       LOG_WRITER_THREAD ("data_writer_thread: acquiring lock and flushing buffers");
-                       LOCK_PROFILER ();
-                       LOG_WRITER_THREAD ("data_writer_thread: lock acquired, flushing buffers");
-                       flush_everything ();
-                       UNLOCK_PROFILER ();
-                       LOG_WRITER_THREAD ("data_writer_thread: flushed buffers and released lock");
-               }
-               
-               if (profiler->terminate_writer_thread) {
-               LOG_WRITER_THREAD ("data_writer_thread: exiting thread");
-                       CLEANUP_WRITER_THREAD ();
-                       EXIT_THREAD ();
-               }
-       }
-       return 0;
-}
-
-void
-mono_profiler_startup (const char *desc);
-
-/* the entry point (mono_profiler_load?) */
-void
-mono_profiler_startup (const char *desc)
-{
-       profiler = g_new0 (MonoProfiler, 1);
-       
-       setup_user_options ((desc != NULL) ? desc : DEFAULT_ARGUMENTS);
-       
-       INITIALIZE_PROFILER_MUTEX ();
-       MONO_PROFILER_GET_CURRENT_TIME (profiler->start_time);
-       MONO_PROFILER_GET_CURRENT_COUNTER (profiler->start_counter);
-       profiler->last_header_counter = 0;
-       
-       profiler->methods = method_id_mapping_new ();
-       profiler->classes = class_id_mapping_new ();
-       profiler->loaded_element_next_free_id = 1;
-       profiler->loaded_assemblies = g_hash_table_new_full (g_direct_hash, NULL, NULL, loaded_element_destroy);
-       profiler->loaded_modules = g_hash_table_new_full (g_direct_hash, NULL, NULL, loaded_element_destroy);
-       profiler->loaded_appdomains = g_hash_table_new_full (g_direct_hash, NULL, NULL, loaded_element_destroy);
-       
-       profiler->statistical_data = profiler_statistical_data_new (profiler);
-       profiler->statistical_data_second_buffer = profiler_statistical_data_new (profiler);
-       
-       profiler->write_buffers = g_malloc (sizeof (ProfilerFileWriteBuffer) + PROFILER_FILE_WRITE_BUFFER_SIZE);
-       profiler->write_buffers->next = NULL;
-       profiler->current_write_buffer = profiler->write_buffers;
-       profiler->current_write_position = 0;
-       profiler->full_write_buffers = 0;
-       profiler_code_chunks_initialize (& (profiler->code_chunks));
-       
-       profiler->executable_regions = profiler_executable_memory_regions_new (1, 1);
-       
-       profiler->executable_files.table = g_hash_table_new (g_str_hash, g_str_equal); 
-       profiler->executable_files.new_files = NULL; 
-       
-       profiler->heap_shot_write_jobs = NULL;
-       if (profiler->action_flags.unreachable_objects || profiler->action_flags.heap_shot || profiler->action_flags.collection_summary) {
-               profiler_heap_buffers_setup (&(profiler->heap));
-       } else {
-               profiler_heap_buffers_clear (&(profiler->heap));
-       }
-       profiler->garbage_collection_counter = 0;
-       
-       WRITER_EVENT_INIT ();
-       LOG_WRITER_THREAD ("mono_profiler_startup: creating writer thread");
-       CREATE_WRITER_THREAD (data_writer_thread);
-       LOG_WRITER_THREAD ("mono_profiler_startup: created writer thread");
-       if ((profiler->command_port >= 1024) && (profiler->command_port <= 65535)) {
-               LOG_USER_THREAD ("mono_profiler_startup: creating user thread");
-               CREATE_USER_THREAD (user_thread);
-               LOG_USER_THREAD ("mono_profiler_startup: created user thread");
-       } else {
-               LOG_USER_THREAD ("mono_profiler_startup: skipping user thread creation");
-       }
-
-       ALLOCATE_PROFILER_THREAD_DATA ();
-       
-       OPEN_FILE ();
-       
-       write_intro_block ();
-       write_directives_block (TRUE);
-       
-       mono_profiler_install (profiler, profiler_shutdown);
-       
-       mono_profiler_install_appdomain (appdomain_start_load, appdomain_end_load,
-                       appdomain_start_unload, appdomain_end_unload);
-       mono_profiler_install_assembly (assembly_start_load, assembly_end_load,
-                       assembly_start_unload, assembly_end_unload);
-       mono_profiler_install_module (module_start_load, module_end_load,
-                       module_start_unload, module_end_unload);
-       mono_profiler_install_class (class_start_load, class_end_load,
-                       class_start_unload, class_end_unload);
-       mono_profiler_install_jit_compile (method_start_jit, method_end_jit);
-       mono_profiler_install_enter_leave (method_enter, method_leave);
-       mono_profiler_install_method_free (method_free);
-       mono_profiler_install_thread (thread_start, thread_end);
-       mono_profiler_install_allocation (object_allocated);
-       mono_profiler_install_monitor (monitor_event);
-       mono_profiler_install_statistical (statistical_hit);
-       mono_profiler_install_statistical_call_chain (statistical_call_chain, profiler->statistical_call_chain_depth, profiler->statistical_call_chain_strategy);
-       mono_profiler_install_gc (gc_event, gc_resize);
-       mono_profiler_install_runtime_initialized (runtime_initialized);
-#if (HAS_OPROFILE)
-       mono_profiler_install_jit_end (method_jit_result);
-#endif
-       if (profiler->flags | MONO_PROFILE_STATISTICAL) {
-               mono_profiler_install_code_chunk_new (profiler_code_chunk_new_callback);
-               mono_profiler_install_code_chunk_destroy (profiler_code_chunk_destroy_callback);
-               mono_profiler_install_code_buffer_new (profiler_code_buffer_new_callback);
-       }
-       
-       mono_profiler_set_events (profiler->flags);
-}
-
index 3ea6a8d23822c82e70aeb50506628832e113099f..ea3b267dab327282843b4c1432e3b789737742b1 100644 (file)
@@ -5,7 +5,7 @@
 #define LOG_HEADER_ID 0x4D505A01
 #define LOG_VERSION_MAJOR 0
 #define LOG_VERSION_MINOR 4
-#define LOG_DATA_VERSION 8
+#define LOG_DATA_VERSION 9
 /*
  * Changes in data versions:
  * version 2: added offsets in heap walk
@@ -14,6 +14,7 @@
  * version 5: added counters sampling
  * version 6: added optional backtrace in sampling info
  * version 8: added TYPE_RUNTIME and JIT helpers/trampolines
+ * version 9: added MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING
  */
 
 enum {
diff --git a/mono/sgen/.gitignore b/mono/sgen/.gitignore
new file mode 100644 (file)
index 0000000..70fc4fd
--- /dev/null
@@ -0,0 +1,8 @@
+/Makefile
+/Makefile.in
+/.libs
+/.deps
+/*.lo
+/*.la
+/*.o
+/*.a
diff --git a/mono/sgen/Makefile.am b/mono/sgen/Makefile.am
new file mode 100644 (file)
index 0000000..32673bf
--- /dev/null
@@ -0,0 +1,76 @@
+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) $(SHARED_CFLAGS)
+
+if SUPPORT_SGEN
+if DISABLE_EXECUTABLES
+shared_libraries = libmonosgen.la
+else
+if SHARED_MONO
+shared_libraries = libmonosgen.la
+endif
+endif
+libraries = $(shared_libraries) libmonosgen-static.la
+endif
+
+if DISABLE_EXECUTABLES
+noinst_LTLIBRARIES = $(shared_libraries)
+else
+noinst_LTLIBRARIES = $(libraries)
+endif
+
+monosgen_sources = \
+       gc-internal-agnostic.h \
+       sgen-alloc.c \
+       sgen-archdep.h \
+       sgen-cardtable.c \
+       sgen-cardtable.h \
+       sgen-client.h \
+       sgen-conf.h \
+       sgen-copy-object.h \
+       sgen-debug.c \
+       sgen-descriptor.c \
+       sgen-descriptor.h \
+       sgen-fin-weak-hash.c \
+       sgen-gc.c \
+       sgen-gc.h \
+       sgen-gray.c \
+       sgen-gray.h \
+       sgen-hash-table.c \
+       sgen-hash-table.h \
+       sgen-internal.c \
+       sgen-layout-stats.c \
+       sgen-layout-stats.h \
+       sgen-los.c \
+       sgen-major-copy-object.h \
+       sgen-marksweep-drain-gray-stack.h \
+       sgen-marksweep-scan-object-concurrent.h \
+       sgen-marksweep.c \
+       sgen-memory-governor.c \
+       sgen-memory-governor.h \
+       sgen-minor-copy-object.h \
+       sgen-minor-scan-object.h \
+       sgen-nursery-allocator.c \
+       sgen-pinning-stats.c \
+       sgen-pinning.c \
+       sgen-pinning.h \
+       sgen-pointer-queue.c \
+       sgen-pointer-queue.h \
+       sgen-protocol-def.h \
+       sgen-protocol.c \
+       sgen-protocol.h \
+       sgen-qsort.c \
+       sgen-qsort.h \
+       sgen-scan-object.h \
+       sgen-simple-nursery.c \
+       sgen-split-nursery.c \
+       sgen-tagged-pointer.h \
+       sgen-thread-pool.c \
+       sgen-thread-pool.h \
+       sgen-workers.c \
+       sgen-workers.h
+
+libmonosgen_la_SOURCES = $(monosgen_sources)
+libmonosgen_la_CFLAGS = $(SGEN_DEFINES)
+
+libmonosgen_static_la_SOURCES = $(libmonosgen_la_SOURCES)
+libmonosgen_static_la_CFLAGS = $(SGEN_DEFINES)
+libmonosgen_static_la_LDFLAGS = -static
diff --git a/mono/sgen/gc-internal-agnostic.h b/mono/sgen/gc-internal-agnostic.h
new file mode 100644 (file)
index 0000000..72eca3d
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * gc-internal-agnostic.h: Mono-agnostic GC interface.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_METADATA_GCINTERNALAGNOSTIC_H__
+#define __MONO_METADATA_GCINTERNALAGNOSTIC_H__
+
+#include <config.h>
+#include <glib.h>
+#include <stdio.h>
+
+#include "mono/utils/mono-compiler.h"
+#include "mono/utils/parse.h"
+#include "mono/utils/memfuncs.h"
+
+typedef struct {
+       guint minor_gc_count;
+       guint major_gc_count;
+       guint64 minor_gc_time;
+       guint64 major_gc_time;
+       guint64 major_gc_time_concurrent;
+} GCStats;
+
+extern GCStats gc_stats;
+
+/*
+ * Try to register a foreign thread with the GC, if we fail or the backend
+ * can't cope with this concept - we return FALSE.
+ */
+extern gboolean mono_gc_register_thread (void *baseptr);
+
+gboolean mono_gc_parse_environment_string_extract_number (const char *str, size_t *out);
+
+void* mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size);
+void* mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_t elem_size);
+
+/* simple interface for data structures needed in the runtime */
+void* mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits);
+
+/* Return a root descriptor for a root with all refs */
+void* mono_gc_make_root_descr_all_refs (int numbits);
+
+/* Return the bitmap encoded by a descriptor */
+gsize* mono_gc_get_bitmap_for_descr (void *descr, int *numbits);
+
+/*
+These functions must be used when it's possible that either destination is not
+word aligned or size is not a multiple of word size.
+*/
+void mono_gc_bzero_atomic (void *dest, size_t size);
+void mono_gc_bzero_aligned (void *dest, size_t size);
+void mono_gc_memmove_atomic (void *dest, const void *src, size_t size);
+void mono_gc_memmove_aligned (void *dest, const void *src, size_t size);
+
+FILE *mono_gc_get_logfile (void);
+
+#endif
diff --git a/mono/sgen/sgen-alloc.c b/mono/sgen/sgen-alloc.c
new file mode 100644 (file)
index 0000000..ac017dd
--- /dev/null
@@ -0,0 +1,569 @@
+/*
+ * sgen-alloc.c: Object allocation routines + managed allocators
+ *
+ * Author:
+ *     Paolo Molaro (lupus@ximian.com)
+ *  Rodrigo Kumpera (kumpera@gmail.com)
+ *
+ * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright 2011 Xamarin, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * ######################################################################
+ * ########  Object allocation
+ * ######################################################################
+ * This section of code deals with allocating memory for objects.
+ * There are several ways:
+ * *) allocate large objects
+ * *) allocate normal objects
+ * *) fast lock-free allocation
+ * *) allocation of pinned objects
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/utils/mono-memory-model.h"
+
+#define ALIGN_UP               SGEN_ALIGN_UP
+#define ALLOC_ALIGN            SGEN_ALLOC_ALIGN
+#define MAX_SMALL_OBJ_SIZE     SGEN_MAX_SMALL_OBJ_SIZE
+
+#ifdef HEAVY_STATISTICS
+static guint64 stat_objects_alloced = 0;
+static guint64 stat_bytes_alloced = 0;
+static guint64 stat_bytes_alloced_los = 0;
+
+#endif
+
+/*
+ * Allocation is done from a Thread Local Allocation Buffer (TLAB). TLABs are allocated
+ * from nursery fragments.
+ * tlab_next is the pointer to the space inside the TLAB where the next object will 
+ * be allocated.
+ * tlab_temp_end is the pointer to the end of the temporary space reserved for
+ * the allocation: it allows us to set the scan starts at reasonable intervals.
+ * tlab_real_end points to the end of the TLAB.
+ */
+
+/*
+ * FIXME: What is faster, a TLS variable pointing to a structure, or separate TLS 
+ * variables for next+temp_end ?
+ */
+#ifdef HAVE_KW_THREAD
+static __thread char *tlab_start;
+static __thread char *tlab_next;
+static __thread char *tlab_temp_end;
+static __thread char *tlab_real_end;
+/* Used by the managed allocator/wbarrier */
+static __thread char **tlab_next_addr MONO_ATTR_USED;
+#endif
+
+#ifdef HAVE_KW_THREAD
+#define TLAB_START     tlab_start
+#define TLAB_NEXT      tlab_next
+#define TLAB_TEMP_END  tlab_temp_end
+#define TLAB_REAL_END  tlab_real_end
+#else
+#define TLAB_START     (__thread_info__->tlab_start)
+#define TLAB_NEXT      (__thread_info__->tlab_next)
+#define TLAB_TEMP_END  (__thread_info__->tlab_temp_end)
+#define TLAB_REAL_END  (__thread_info__->tlab_real_end)
+#endif
+
+static void*
+alloc_degraded (GCVTable *vtable, size_t size, gboolean for_mature)
+{
+       void *p;
+
+       if (!for_mature) {
+               sgen_client_degraded_allocation (size);
+               SGEN_ATOMIC_ADD_P (degraded_mode, size);
+               sgen_ensure_free_space (size);
+       } else {
+               if (sgen_need_major_collection (size))
+                       sgen_perform_collection (size, GENERATION_OLD, "mature allocation failure", !for_mature);
+       }
+
+
+       p = major_collector.alloc_degraded (vtable, size);
+
+       if (!for_mature)
+               binary_protocol_alloc_degraded (p, vtable, size, sgen_client_get_provenance ());
+
+       return p;
+}
+
+static void
+zero_tlab_if_necessary (void *p, size_t size)
+{
+       if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION || nursery_clear_policy == CLEAR_AT_TLAB_CREATION_DEBUG) {
+               memset (p, 0, size);
+       } else {
+               /*
+                * This function is called for all allocations in
+                * TLABs.  TLABs originate from fragments, which are
+                * initialized to be faux arrays.  The remainder of
+                * the fragments are zeroed out at initialization for
+                * CLEAR_AT_GC, so here we just need to make sure that
+                * the array header is zeroed.  Since we don't know
+                * whether we're called for the start of a fragment or
+                * for somewhere in between, we zero in any case, just
+                * to make sure.
+                */
+               sgen_client_zero_array_fill_header (p, size);
+       }
+}
+
+/*
+ * Provide a variant that takes just the vtable for small fixed-size objects.
+ * The aligned size is already computed and stored in vt->gc_descr.
+ * Note: every SGEN_SCAN_START_SIZE or so we are given the chance to do some special
+ * processing. We can keep track of where objects start, for example,
+ * so when we scan the thread stacks for pinned objects, we can start
+ * a search for the pinned object in SGEN_SCAN_START_SIZE chunks.
+ */
+void*
+sgen_alloc_obj_nolock (GCVTable *vtable, size_t size)
+{
+       /* FIXME: handle OOM */
+       void **p;
+       char *new_next;
+       size_t real_size = size;
+       TLAB_ACCESS_INIT;
+       
+       CANARIFY_SIZE(size);
+
+       HEAVY_STAT (++stat_objects_alloced);
+       if (real_size <= SGEN_MAX_SMALL_OBJ_SIZE)
+               HEAVY_STAT (stat_bytes_alloced += size);
+       else
+               HEAVY_STAT (stat_bytes_alloced_los += size);
+
+       size = ALIGN_UP (size);
+
+       SGEN_ASSERT (6, sgen_vtable_get_descriptor (vtable), "VTable without descriptor");
+
+       if (G_UNLIKELY (has_per_allocation_action)) {
+               static int alloc_count;
+               int current_alloc = InterlockedIncrement (&alloc_count);
+
+               if (collect_before_allocs) {
+                       if (((current_alloc % collect_before_allocs) == 0) && nursery_section) {
+                               sgen_perform_collection (0, GENERATION_NURSERY, "collect-before-alloc-triggered", TRUE);
+                               if (!degraded_mode && sgen_can_alloc_size (size) && real_size <= SGEN_MAX_SMALL_OBJ_SIZE) {
+                                       // FIXME:
+                                       g_assert_not_reached ();
+                               }
+                       }
+               } else if (verify_before_allocs) {
+                       if ((current_alloc % verify_before_allocs) == 0)
+                               sgen_check_whole_heap_stw ();
+               }
+       }
+
+       /*
+        * We must already have the lock here instead of after the
+        * fast path because we might be interrupted in the fast path
+        * (after confirming that new_next < TLAB_TEMP_END) by the GC,
+        * and we'll end up allocating an object in a fragment which
+        * no longer belongs to us.
+        *
+        * The managed allocator does not do this, but it's treated
+        * specially by the world-stopping code.
+        */
+
+       if (real_size > SGEN_MAX_SMALL_OBJ_SIZE) {
+               p = sgen_los_alloc_large_inner (vtable, ALIGN_UP (real_size));
+       } else {
+               /* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
+
+               p = (void**)TLAB_NEXT;
+               /* FIXME: handle overflow */
+               new_next = (char*)p + size;
+               TLAB_NEXT = new_next;
+
+               if (G_LIKELY (new_next < TLAB_TEMP_END)) {
+                       /* Fast path */
+
+                       /* 
+                        * FIXME: We might need a memory barrier here so the change to tlab_next is 
+                        * visible before the vtable store.
+                        */
+
+                       CANARIFY_ALLOC(p,real_size);
+                       SGEN_LOG (6, "Allocated object %p, vtable: %p (%s), size: %zd", p, vtable, sgen_client_vtable_get_name (vtable), size);
+                       binary_protocol_alloc (p , vtable, size, sgen_client_get_provenance ());
+                       g_assert (*p == NULL);
+                       mono_atomic_store_seq (p, vtable);
+
+                       return p;
+               }
+
+               /* Slow path */
+
+               /* there are two cases: the object is too big or we run out of space in the TLAB */
+               /* we also reach here when the thread does its first allocation after a minor 
+                * collection, since the tlab_ variables are initialized to NULL.
+                * there can be another case (from ORP), if we cooperate with the runtime a bit:
+                * objects that need finalizers can have the high bit set in their size
+                * so the above check fails and we can readily add the object to the queue.
+                * This avoids taking again the GC lock when registering, but this is moot when
+                * doing thread-local allocation, so it may not be a good idea.
+                */
+               if (TLAB_NEXT >= TLAB_REAL_END) {
+                       int available_in_tlab;
+                       /* 
+                        * Run out of space in the TLAB. When this happens, some amount of space
+                        * remains in the TLAB, but not enough to satisfy the current allocation
+                        * request. Currently, we retire the TLAB in all cases, later we could
+                        * keep it if the remaining space is above a treshold, and satisfy the
+                        * allocation directly from the nursery.
+                        */
+                       TLAB_NEXT -= size;
+                       /* when running in degraded mode, we continue allocing that way
+                        * for a while, to decrease the number of useless nursery collections.
+                        */
+                       if (degraded_mode && degraded_mode < DEFAULT_NURSERY_SIZE)
+                               return alloc_degraded (vtable, size, FALSE);
+
+                       available_in_tlab = (int)(TLAB_REAL_END - TLAB_NEXT);//We'll never have tlabs > 2Gb
+                       if (size > tlab_size || available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
+                               /* Allocate directly from the nursery */
+                               p = sgen_nursery_alloc (size);
+                               if (!p) {
+                                       /*
+                                        * We couldn't allocate from the nursery, so we try
+                                        * collecting.  Even after the collection, we might
+                                        * still not have enough memory to allocate the
+                                        * object.  The reason will most likely be that we've
+                                        * run out of memory, but there is the theoretical
+                                        * possibility that other threads might have consumed
+                                        * the freed up memory ahead of us.
+                                        *
+                                        * What we do in this case is allocate degraded, i.e.,
+                                        * from the major heap.
+                                        *
+                                        * Ideally we'd like to detect the case of other
+                                        * threads allocating ahead of us and loop (if we
+                                        * always loop we will loop endlessly in the case of
+                                        * OOM).
+                                        */
+                                       sgen_ensure_free_space (real_size);
+                                       if (!degraded_mode)
+                                               p = sgen_nursery_alloc (size);
+                               }
+                               if (!p)
+                                       return alloc_degraded (vtable, size, FALSE);
+
+                               zero_tlab_if_necessary (p, size);
+                       } else {
+                               size_t alloc_size = 0;
+                               if (TLAB_START)
+                                       SGEN_LOG (3, "Retire TLAB: %p-%p [%ld]", TLAB_START, TLAB_REAL_END, (long)(TLAB_REAL_END - TLAB_NEXT - size));
+                               sgen_nursery_retire_region (p, available_in_tlab);
+
+                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                               if (!p) {
+                                       /* See comment above in similar case. */
+                                       sgen_ensure_free_space (tlab_size);
+                                       if (!degraded_mode)
+                                               p = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                               }
+                               if (!p)
+                                       return alloc_degraded (vtable, size, FALSE);
+
+                               /* Allocate a new TLAB from the current nursery fragment */
+                               TLAB_START = (char*)p;
+                               TLAB_NEXT = TLAB_START;
+                               TLAB_REAL_END = TLAB_START + alloc_size;
+                               TLAB_TEMP_END = TLAB_START + MIN (SGEN_SCAN_START_SIZE, alloc_size);
+
+                               zero_tlab_if_necessary (TLAB_START, alloc_size);
+
+                               /* Allocate from the TLAB */
+                               p = (void*)TLAB_NEXT;
+                               TLAB_NEXT += size;
+                               sgen_set_nursery_scan_start ((char*)p);
+                       }
+               } else {
+                       /* Reached tlab_temp_end */
+
+                       /* record the scan start so we can find pinned objects more easily */
+                       sgen_set_nursery_scan_start ((char*)p);
+                       /* we just bump tlab_temp_end as well */
+                       TLAB_TEMP_END = MIN (TLAB_REAL_END, TLAB_NEXT + SGEN_SCAN_START_SIZE);
+                       SGEN_LOG (5, "Expanding local alloc: %p-%p", TLAB_NEXT, TLAB_TEMP_END);
+               }
+               CANARIFY_ALLOC(p,real_size);
+       }
+
+       if (G_LIKELY (p)) {
+               SGEN_LOG (6, "Allocated object %p, vtable: %p (%s), size: %zd", p, vtable, sgen_client_vtable_get_name (vtable), size);
+               binary_protocol_alloc (p, vtable, size, sgen_client_get_provenance ());
+               mono_atomic_store_seq (p, vtable);
+       }
+
+       return p;
+}
+
+void*
+sgen_try_alloc_obj_nolock (GCVTable *vtable, size_t size)
+{
+       void **p;
+       char *new_next;
+       size_t real_size = size;
+       TLAB_ACCESS_INIT;
+
+       CANARIFY_SIZE(size);
+
+       size = ALIGN_UP (size);
+       SGEN_ASSERT (9, real_size >= SGEN_CLIENT_MINIMUM_OBJECT_SIZE, "Object too small");
+
+       SGEN_ASSERT (6, sgen_vtable_get_descriptor (vtable), "VTable without descriptor");
+
+       if (real_size > SGEN_MAX_SMALL_OBJ_SIZE)
+               return NULL;
+
+       if (G_UNLIKELY (size > tlab_size)) {
+               /* Allocate directly from the nursery */
+               p = sgen_nursery_alloc (size);
+               if (!p)
+                       return NULL;
+               sgen_set_nursery_scan_start ((char*)p);
+
+               /*FIXME we should use weak memory ops here. Should help specially on x86. */
+               zero_tlab_if_necessary (p, size);
+       } else {
+               int available_in_tlab;
+               char *real_end;
+               /* tlab_next and tlab_temp_end are TLS vars so accessing them might be expensive */
+
+               p = (void**)TLAB_NEXT;
+               /* FIXME: handle overflow */
+               new_next = (char*)p + size;
+
+               real_end = TLAB_REAL_END;
+               available_in_tlab = (int)(real_end - (char*)p);//We'll never have tlabs > 2Gb
+
+               if (G_LIKELY (new_next < real_end)) {
+                       TLAB_NEXT = new_next;
+
+                       /* Second case, we overflowed temp end */
+                       if (G_UNLIKELY (new_next >= TLAB_TEMP_END)) {
+                               sgen_set_nursery_scan_start (new_next);
+                               /* we just bump tlab_temp_end as well */
+                               TLAB_TEMP_END = MIN (TLAB_REAL_END, TLAB_NEXT + SGEN_SCAN_START_SIZE);
+                               SGEN_LOG (5, "Expanding local alloc: %p-%p", TLAB_NEXT, TLAB_TEMP_END);
+                       }
+               } else if (available_in_tlab > SGEN_MAX_NURSERY_WASTE) {
+                       /* Allocate directly from the nursery */
+                       p = sgen_nursery_alloc (size);
+                       if (!p)
+                               return NULL;
+
+                       zero_tlab_if_necessary (p, size);
+               } else {
+                       size_t alloc_size = 0;
+
+                       sgen_nursery_retire_region (p, available_in_tlab);
+                       new_next = sgen_nursery_alloc_range (tlab_size, size, &alloc_size);
+                       p = (void**)new_next;
+                       if (!p)
+                               return NULL;
+
+                       TLAB_START = (char*)new_next;
+                       TLAB_NEXT = new_next + size;
+                       TLAB_REAL_END = new_next + alloc_size;
+                       TLAB_TEMP_END = new_next + MIN (SGEN_SCAN_START_SIZE, alloc_size);
+                       sgen_set_nursery_scan_start ((char*)p);
+
+                       zero_tlab_if_necessary (new_next, alloc_size);
+               }
+       }
+
+       HEAVY_STAT (++stat_objects_alloced);
+       HEAVY_STAT (stat_bytes_alloced += size);
+
+       CANARIFY_ALLOC(p,real_size);
+       SGEN_LOG (6, "Allocated object %p, vtable: %p (%s), size: %zd", p, vtable, sgen_client_vtable_get_name (vtable), size);
+       binary_protocol_alloc (p, vtable, size, sgen_client_get_provenance ());
+       g_assert (*p == NULL); /* FIXME disable this in non debug builds */
+
+       mono_atomic_store_seq (p, vtable);
+
+       return p;
+}
+
+void*
+sgen_alloc_obj (GCVTable *vtable, size_t size)
+{
+       void *res;
+       TLAB_ACCESS_INIT;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return NULL;
+
+#ifndef DISABLE_CRITICAL_REGION
+
+       if (G_UNLIKELY (has_per_allocation_action)) {
+               static int alloc_count;
+               int current_alloc = InterlockedIncrement (&alloc_count);
+
+               if (verify_before_allocs) {
+                       if ((current_alloc % verify_before_allocs) == 0)
+                               sgen_check_whole_heap_stw ();
+               }
+               if (collect_before_allocs) {
+                       if (((current_alloc % collect_before_allocs) == 0) && nursery_section) {
+                               LOCK_GC;
+                               sgen_perform_collection (0, GENERATION_NURSERY, "collect-before-alloc-triggered", TRUE);
+                               UNLOCK_GC;
+                       }
+               }
+       }
+
+       ENTER_CRITICAL_REGION;
+       res = sgen_try_alloc_obj_nolock ((GCVTable*)vtable, size);
+       if (res) {
+               EXIT_CRITICAL_REGION;
+               return res;
+       }
+       EXIT_CRITICAL_REGION;
+#endif
+       LOCK_GC;
+       res = sgen_alloc_obj_nolock ((GCVTable*)vtable, size);
+       UNLOCK_GC;
+       if (G_UNLIKELY (!res))
+               sgen_client_out_of_memory (size);
+       return res;
+}
+
+/*
+ * To be used for interned strings and possibly MonoThread, reflection handles.
+ * We may want to explicitly free these objects.
+ */
+void*
+sgen_alloc_obj_pinned (GCVTable *vtable, size_t size)
+{
+       void **p;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return NULL;
+       size = ALIGN_UP (size);
+
+       LOCK_GC;
+
+       if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
+               /* large objects are always pinned anyway */
+               p = sgen_los_alloc_large_inner ((GCVTable*)vtable, size);
+       } else {
+               SGEN_ASSERT (9, sgen_client_vtable_is_inited (vtable), "class %s:%s is not initialized", sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+               p = major_collector.alloc_small_pinned_obj ((GCVTable*)vtable, size, SGEN_VTABLE_HAS_REFERENCES ((GCVTable*)vtable));
+       }
+       if (G_LIKELY (p)) {
+               SGEN_LOG (6, "Allocated pinned object %p, vtable: %p (%s), size: %zd", p, vtable, sgen_client_vtable_get_name (vtable), size);
+               binary_protocol_alloc_pinned (p, vtable, size, sgen_client_get_provenance ());
+       }
+       UNLOCK_GC;
+       return p;
+}
+
+void*
+sgen_alloc_obj_mature (GCVTable *vtable, size_t size)
+{
+       void *res;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return NULL;
+       size = ALIGN_UP (size);
+
+       LOCK_GC;
+       res = alloc_degraded ((GCVTable*)vtable, size, TRUE);
+       UNLOCK_GC;
+
+       return res;
+}
+
+void
+sgen_init_tlab_info (SgenThreadInfo* info)
+{
+#ifndef HAVE_KW_THREAD
+       SgenThreadInfo *__thread_info__ = info;
+#endif
+
+       info->tlab_start_addr = &TLAB_START;
+       info->tlab_next_addr = &TLAB_NEXT;
+       info->tlab_temp_end_addr = &TLAB_TEMP_END;
+       info->tlab_real_end_addr = &TLAB_REAL_END;
+
+#ifdef HAVE_KW_THREAD
+       tlab_next_addr = &tlab_next;
+#endif
+}
+
+/*
+ * Clear the thread local TLAB variables for all threads.
+ */
+void
+sgen_clear_tlabs (void)
+{
+       SgenThreadInfo *info;
+
+       FOREACH_THREAD (info) {
+               /* A new TLAB will be allocated when the thread does its first allocation */
+               *info->tlab_start_addr = NULL;
+               *info->tlab_next_addr = NULL;
+               *info->tlab_temp_end_addr = NULL;
+               *info->tlab_real_end_addr = NULL;
+       } END_FOREACH_THREAD
+}
+
+void
+sgen_init_allocator (void)
+{
+#if defined(HAVE_KW_THREAD) && !defined(SGEN_WITHOUT_MONO)
+       int tlab_next_addr_offset = -1;
+       int tlab_temp_end_offset = -1;
+
+
+       MONO_THREAD_VAR_OFFSET (tlab_next_addr, tlab_next_addr_offset);
+       MONO_THREAD_VAR_OFFSET (tlab_temp_end, tlab_temp_end_offset);
+
+       mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_NEXT_ADDR, tlab_next_addr_offset);
+       mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_TEMP_END, tlab_temp_end_offset);
+
+       g_assert (tlab_next_addr_offset != -1);
+       g_assert (tlab_temp_end_offset != -1);
+#endif
+
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("# objects allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_alloced);
+       mono_counters_register ("bytes allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_bytes_alloced);
+       mono_counters_register ("bytes allocated in LOS", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_bytes_alloced_los);
+#endif
+}
+
+#endif /*HAVE_SGEN_GC*/
diff --git a/mono/sgen/sgen-archdep.h b/mono/sgen/sgen-archdep.h
new file mode 100644 (file)
index 0000000..410ba6a
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * sgen-archdep.h: Architecture dependent parts of SGen.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGENARCHDEP_H__
+#define __MONO_SGENARCHDEP_H__
+
+#include <mono/utils/mono-context.h>
+
+/*
+ * Define either USE_MONO_CTX, or
+ * ARCH_SIGCTX_SP/ARCH_SIGCTX_IP/ARCH_STORE_REGS/ARCH_COPY_SIGCTX_REGS.
+ * Define ARCH_NUM_REGS to be the number of general registers in MonoContext, or the
+ * number of registers stored by ARCH_STORE_REGS.
+ */
+
+#if defined(MONO_CROSS_COMPILE)
+
+#define REDZONE_SIZE   0
+
+#define ARCH_NUM_REGS 0
+#define ARCH_STORE_REGS(ptr)
+#define ARCH_SIGCTX_SP(ctx) NULL
+#define ARCH_SIGCTX_IP(ctx) NULL
+#define ARCH_COPY_SIGCTX_REGS(a,ctx)
+
+#elif defined(TARGET_X86)
+
+#define REDZONE_SIZE   0
+
+#define ARCH_NUM_REGS 8
+
+#ifndef MONO_ARCH_HAS_MONO_CONTEXT
+#error 0
+#endif
+
+#define USE_MONO_CTX
+
+#elif defined(TARGET_AMD64)
+
+#define REDZONE_SIZE   128
+
+#define ARCH_NUM_REGS 16
+#define USE_MONO_CTX
+
+#elif defined(TARGET_POWERPC)
+
+#define REDZONE_SIZE   224
+
+#define ARCH_NUM_REGS 32
+#ifdef __APPLE__
+#define ARCH_STORE_REGS(ptr)   \
+       __asm__ __volatile__(   \
+               "stmw r0, 0(%0)\n"      \
+               :                       \
+               : "b" (ptr)             \
+       )
+#else
+#define ARCH_STORE_REGS(ptr)   \
+       __asm__ __volatile__(   \
+               "stmw 0, 0(%0)\n"       \
+               :                       \
+               : "b" (ptr)             \
+       )
+#endif
+#define ARCH_SIGCTX_SP(ctx)    (UCONTEXT_REG_Rn((ctx), 1))
+#define ARCH_SIGCTX_IP(ctx)    (UCONTEXT_REG_NIP((ctx)))
+#define ARCH_COPY_SIGCTX_REGS(a,ctx) do {      \
+       int __i;        \
+       for (__i = 0; __i < 32; ++__i)  \
+               ((a)[__i]) = (gpointer) UCONTEXT_REG_Rn((ctx), __i);    \
+       } while (0)
+
+/* MS_BLOCK_SIZE must be a multiple of the system pagesize, which for some
+   archs is 64k.  */
+#if defined(TARGET_POWERPC64) && _CALL_ELF == 2
+#define ARCH_MIN_MS_BLOCK_SIZE (64*1024)
+#define ARCH_MIN_MS_BLOCK_SIZE_SHIFT   16
+#endif
+
+#elif defined(TARGET_ARM)
+
+#define REDZONE_SIZE   0
+#define USE_MONO_CTX
+
+/* We dont store ip, sp */
+#define ARCH_NUM_REGS 14
+
+#elif defined(TARGET_ARM64)
+
+#ifdef __linux__
+#define REDZONE_SIZE    0
+#elif defined(__APPLE__)
+#define REDZONE_SIZE   128
+#else
+#error "Not implemented."
+#endif
+#define USE_MONO_CTX
+#define ARCH_NUM_REGS 31
+
+#elif defined(__mips__)
+
+#define REDZONE_SIZE   0
+
+#define USE_MONO_CTX
+#define ARCH_NUM_REGS 32
+
+#elif defined(__s390x__)
+
+#define REDZONE_SIZE   0
+
+#define USE_MONO_CTX
+#define ARCH_NUM_REGS 16       
+
+#elif defined(__sparc__)
+
+#define REDZONE_SIZE   0
+
+/* Don't bother with %g0 (%r0), it's always hard-coded to zero */
+#define ARCH_NUM_REGS 15       
+#ifdef __sparcv9
+#define ARCH_STORE_REGS(ptr)   \
+       __asm__ __volatile__(   \
+               "st %%g1,[%0]\n\t"      \
+               "st %%g2,[%0+0x08]\n\t" \
+               "st %%g3,[%0+0x10]\n\t" \
+               "st %%g4,[%0+0x18]\n\t" \
+               "st %%g5,[%0+0x20]\n\t" \
+               "st %%g6,[%0+0x28]\n\t" \
+               "st %%g7,[%0+0x30]\n\t" \
+               "st %%o0,[%0+0x38]\n\t" \
+               "st %%o1,[%0+0x40]\n\t" \
+               "st %%o2,[%0+0x48]\n\t" \
+               "st %%o3,[%0+0x50]\n\t" \
+               "st %%o4,[%0+0x58]\n\t" \
+               "st %%o5,[%0+0x60]\n\t" \
+               "st %%o6,[%0+0x68]\n\t" \
+               "st %%o7,[%0+0x70]\n\t" \
+               :                       \
+               : "r" (ptr)             \
+               : "memory"                      \
+       )
+#else
+#define ARCH_STORE_REGS(ptr)   \
+       __asm__ __volatile__(   \
+               "st %%g1,[%0]\n\t"      \
+               "st %%g2,[%0+0x04]\n\t" \
+               "st %%g3,[%0+0x08]\n\t" \
+               "st %%g4,[%0+0x0c]\n\t" \
+               "st %%g5,[%0+0x10]\n\t" \
+               "st %%g6,[%0+0x14]\n\t" \
+               "st %%g7,[%0+0x18]\n\t" \
+               "st %%o0,[%0+0x1c]\n\t" \
+               "st %%o1,[%0+0x20]\n\t" \
+               "st %%o2,[%0+0x24]\n\t" \
+               "st %%o3,[%0+0x28]\n\t" \
+               "st %%o4,[%0+0x2c]\n\t" \
+               "st %%o5,[%0+0x30]\n\t" \
+               "st %%o6,[%0+0x34]\n\t" \
+               "st %%o7,[%0+0x38]\n\t" \
+               :                       \
+               : "r" (ptr)             \
+               : "memory"                      \
+       )
+#endif
+
+#ifndef REG_SP
+#define REG_SP REG_O6
+#endif
+
+#define ARCH_SIGCTX_SP(ctx)    (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_SP])
+#define ARCH_SIGCTX_IP(ctx)    (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_PC])
+#define ARCH_COPY_SIGCTX_REGS(a,ctx) do {      \
+       (a)[0] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G1]);        \
+       (a)[1] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G2]);        \
+       (a)[2] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G3]);        \
+       (a)[3] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G4]);        \
+       (a)[4] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G5]);        \
+       (a)[5] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G6]);        \
+       (a)[6] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_G7]);        \
+       (a)[7] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O0]);        \
+       (a)[8] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O1]);        \
+       (a)[9] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O2]);        \
+       (a)[10] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O3]);       \
+       (a)[11] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O4]);       \
+       (a)[12] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O5]);       \
+       (a)[13] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O6]);       \
+       (a)[14] = (gpointer) (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_O7]);       \
+       } while (0)
+
+#endif
+
+#endif /* __MONO_SGENARCHDEP_H__ */
diff --git a/mono/sgen/sgen-cardtable.c b/mono/sgen/sgen-cardtable.c
new file mode 100644 (file)
index 0000000..7fcd0a8
--- /dev/null
@@ -0,0 +1,618 @@
+/*
+ * sgen-cardtable.c: Card table implementation for sgen
+ *
+ * Author:
+ *     Rodrigo Kumpera (rkumpera@novell.com)
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-layout-stats.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/sgen/gc-internal-agnostic.h"
+#include "mono/utils/mono-memory-model.h"
+
+//#define CARDTABLE_STATS
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#include <sys/types.h>
+
+guint8 *sgen_cardtable;
+
+static gboolean need_mod_union;
+
+#ifdef HEAVY_STATISTICS
+guint64 marked_cards;
+guint64 scanned_cards;
+guint64 scanned_objects;
+guint64 remarked_cards;
+
+static guint64 los_marked_cards;
+static guint64 large_objects;
+static guint64 bloby_objects;
+static guint64 los_array_cards;
+static guint64 los_array_remsets;
+
+#endif
+static guint64 major_card_scan_time;
+static guint64 los_card_scan_time;
+
+static guint64 last_major_scan_time;
+static guint64 last_los_scan_time;
+
+static void sgen_card_tables_collect_stats (gboolean begin);
+
+mword
+sgen_card_table_number_of_cards_in_range (mword address, mword size)
+{
+       mword end = address + MAX (1, size) - 1;
+       return (end >> CARD_BITS) - (address >> CARD_BITS) + 1;
+}
+
+static void
+sgen_card_table_wbarrier_set_field (GCObject *obj, gpointer field_ptr, GCObject* value)
+{
+       *(void**)field_ptr = value;
+       if (need_mod_union || sgen_ptr_in_nursery (value))
+               sgen_card_table_mark_address ((mword)field_ptr);
+       sgen_dummy_use (value);
+}
+
+static void
+sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
+{
+       gpointer *dest = dest_ptr;
+       gpointer *src = src_ptr;
+
+       /*overlapping that required backward copying*/
+       if (src < dest && (src + count) > dest) {
+               gpointer *start = dest;
+               dest += count - 1;
+               src += count - 1;
+
+               for (; dest >= start; --src, --dest) {
+                       gpointer value = *src;
+                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
+                       if (need_mod_union || sgen_ptr_in_nursery (value))
+                               sgen_card_table_mark_address ((mword)dest);
+                       sgen_dummy_use (value);
+               }
+       } else {
+               gpointer *end = dest + count;
+               for (; dest < end; ++src, ++dest) {
+                       gpointer value = *src;
+                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
+                       if (need_mod_union || sgen_ptr_in_nursery (value))
+                               sgen_card_table_mark_address ((mword)dest);
+                       sgen_dummy_use (value);
+               }
+       }       
+}
+
+static void
+sgen_card_table_wbarrier_value_copy (gpointer dest, gpointer src, int count, size_t element_size)
+{
+       size_t size = count * element_size;
+
+#ifdef DISABLE_CRITICAL_REGION
+       LOCK_GC;
+#else
+       TLAB_ACCESS_INIT;
+       ENTER_CRITICAL_REGION;
+#endif
+       mono_gc_memmove_atomic (dest, src, size);
+       sgen_card_table_mark_range ((mword)dest, size);
+#ifdef DISABLE_CRITICAL_REGION
+       UNLOCK_GC;
+#else
+       EXIT_CRITICAL_REGION;
+#endif
+}
+
+static void
+sgen_card_table_wbarrier_object_copy (GCObject* obj, GCObject *src)
+{
+       size_t size = sgen_client_par_object_get_size (SGEN_LOAD_VTABLE_UNCHECKED (obj), obj);
+
+#ifdef DISABLE_CRITICAL_REGION
+       LOCK_GC;
+#else
+       TLAB_ACCESS_INIT;
+       ENTER_CRITICAL_REGION;
+#endif
+       mono_gc_memmove_aligned ((char*)obj + SGEN_CLIENT_OBJECT_HEADER_SIZE, (char*)src + SGEN_CLIENT_OBJECT_HEADER_SIZE,
+                       size - SGEN_CLIENT_OBJECT_HEADER_SIZE);
+       sgen_card_table_mark_range ((mword)obj, size);
+#ifdef DISABLE_CRITICAL_REGION
+       UNLOCK_GC;
+#else
+       EXIT_CRITICAL_REGION;
+#endif 
+}
+
+static void
+sgen_card_table_wbarrier_generic_nostore (gpointer ptr)
+{
+       sgen_card_table_mark_address ((mword)ptr);      
+}
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+
+guint8 *sgen_shadow_cardtable;
+
+#define SGEN_CARDTABLE_END (sgen_cardtable + CARD_COUNT_IN_BYTES)
+
+static gboolean
+sgen_card_table_region_begin_scanning (mword start, mword size)
+{
+       mword end = start + size;
+       /*XXX this can be improved to work on words and have a single loop induction var */
+       while (start < end) {
+               if (sgen_card_table_card_begin_scanning (start))
+                       return TRUE;
+               start += CARD_SIZE_IN_BYTES;
+       }
+       return FALSE;
+}
+
+#else
+
+static gboolean
+sgen_card_table_region_begin_scanning (mword start, mword size)
+{
+       gboolean res = FALSE;
+       guint8 *card = sgen_card_table_get_card_address (start);
+       guint8 *end = card + sgen_card_table_number_of_cards_in_range (start, size);
+
+       /*XXX this can be improved to work on words and have a branchless body */
+       while (card != end) {
+               if (*card++) {
+                       res = TRUE;
+                       break;
+               }
+       }
+
+       memset (sgen_card_table_get_card_address (start), 0, size >> CARD_BITS);
+
+       return res;
+}
+
+#endif
+
+/*FIXME this assumes that major blocks are multiple of 4K which is pretty reasonable */
+gboolean
+sgen_card_table_get_card_data (guint8 *data_dest, mword address, mword cards)
+{
+       mword *start = (mword*)sgen_card_table_get_card_scan_address (address);
+       mword *dest = (mword*)data_dest;
+       mword *end = (mword*)(data_dest + cards);
+       mword mask = 0;
+
+       for (; dest < end; ++dest, ++start) {
+               mword v = *start;
+               *dest = v;
+               mask |= v;
+
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+               *start = 0;
+#endif
+       }
+
+       return mask != 0;
+}
+
+void*
+sgen_card_table_align_pointer (void *ptr)
+{
+       return (void*)((mword)ptr & ~(CARD_SIZE_IN_BYTES - 1));
+}
+
+void
+sgen_card_table_mark_range (mword address, mword size)
+{
+       mword num_cards = sgen_card_table_number_of_cards_in_range (address, size);
+       guint8 *start = sgen_card_table_get_card_address (address);
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+       /*
+        * FIXME: There's a theoretical bug here, namely that the card table is allocated so
+        * far toward the end of the address space that start + num_cards overflows.
+        */
+       guint8 *end = start + num_cards;
+       SGEN_ASSERT (0, num_cards <= CARD_COUNT_IN_BYTES, "How did we get an object larger than the card table?");
+       if (end > SGEN_CARDTABLE_END) {
+               memset (start, 1, SGEN_CARDTABLE_END - start);
+               memset (sgen_cardtable, 1, end - sgen_cardtable);
+               return;
+       }
+#endif
+
+       memset (start, 1, num_cards);
+}
+
+static gboolean
+sgen_card_table_is_range_marked (guint8 *cards, mword address, mword size)
+{
+       guint8 *end = cards + sgen_card_table_number_of_cards_in_range (address, size);
+
+       /*This is safe since this function is only called by code that only passes continuous card blocks*/
+       while (cards != end) {
+               if (*cards++)
+                       return TRUE;
+       }
+       return FALSE;
+
+}
+
+static void
+sgen_card_table_record_pointer (gpointer address)
+{
+       *sgen_card_table_get_card_address ((mword)address) = 1;
+}
+
+static gboolean
+sgen_card_table_find_address (char *addr)
+{
+       return sgen_card_table_address_is_marked ((mword)addr);
+}
+
+static gboolean
+sgen_card_table_find_address_with_cards (char *cards_start, guint8 *cards, char *addr)
+{
+       cards_start = sgen_card_table_align_pointer (cards_start);
+       return cards [(addr - cards_start) >> CARD_BITS];
+}
+
+static void
+update_mod_union (guint8 *dest, guint8 *start_card, size_t num_cards)
+{
+       int i;
+       for (i = 0; i < num_cards; ++i)
+               dest [i] |= start_card [i];
+}
+
+guint8*
+sgen_card_table_alloc_mod_union (char *obj, mword obj_size)
+{
+       size_t num_cards = sgen_card_table_number_of_cards_in_range ((mword) obj, obj_size);
+       guint8 *mod_union = sgen_alloc_internal_dynamic (num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION, TRUE);
+       memset (mod_union, 0, num_cards);
+       return mod_union;
+}
+
+void
+sgen_card_table_free_mod_union (guint8 *mod_union, char *obj, mword obj_size)
+{
+       size_t num_cards = sgen_card_table_number_of_cards_in_range ((mword) obj, obj_size);
+       sgen_free_internal_dynamic (mod_union, num_cards, INTERNAL_MEM_CARDTABLE_MOD_UNION);
+}
+
+void
+sgen_card_table_update_mod_union_from_cards (guint8 *dest, guint8 *start_card, size_t num_cards)
+{
+       SGEN_ASSERT (0, dest, "Why don't we have a mod union?");
+       update_mod_union (dest, start_card, num_cards);
+}
+
+void
+sgen_card_table_update_mod_union (guint8 *dest, char *obj, mword obj_size, size_t *out_num_cards)
+{
+       guint8 *start_card = sgen_card_table_get_card_address ((mword)obj);
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+       guint8 *end_card = sgen_card_table_get_card_address ((mword)obj + obj_size - 1) + 1;
+#endif
+       size_t num_cards;
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+       size_t rest;
+
+       rest = num_cards = sgen_card_table_number_of_cards_in_range ((mword) obj, obj_size);
+
+       while (start_card + rest > SGEN_CARDTABLE_END) {
+               size_t count = SGEN_CARDTABLE_END - start_card;
+               sgen_card_table_update_mod_union_from_cards (dest, start_card, count);
+               dest += count;
+               rest -= count;
+               start_card = sgen_cardtable;
+       }
+       num_cards = rest;
+#else
+       num_cards = end_card - start_card;
+#endif
+
+       sgen_card_table_update_mod_union_from_cards (dest, start_card, num_cards);
+
+       if (out_num_cards)
+               *out_num_cards = num_cards;
+}
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+
+static void
+move_cards_to_shadow_table (mword start, mword size)
+{
+       guint8 *from = sgen_card_table_get_card_address (start);
+       guint8 *to = sgen_card_table_get_shadow_card_address (start);
+       size_t bytes = sgen_card_table_number_of_cards_in_range (start, size);
+
+       if (bytes >= CARD_COUNT_IN_BYTES) {
+               memcpy (sgen_shadow_cardtable, sgen_cardtable, CARD_COUNT_IN_BYTES);
+       } else if (to + bytes > SGEN_SHADOW_CARDTABLE_END) {
+               size_t first_chunk = SGEN_SHADOW_CARDTABLE_END - to;
+               size_t second_chunk = MIN (CARD_COUNT_IN_BYTES, bytes) - first_chunk;
+
+               memcpy (to, from, first_chunk);
+               memcpy (sgen_shadow_cardtable, sgen_cardtable, second_chunk);
+       } else {
+               memcpy (to, from, bytes);
+       }
+}
+
+static void
+clear_cards (mword start, mword size)
+{
+       guint8 *addr = sgen_card_table_get_card_address (start);
+       size_t bytes = sgen_card_table_number_of_cards_in_range (start, size);
+
+       if (bytes >= CARD_COUNT_IN_BYTES) {
+               memset (sgen_cardtable, 0, CARD_COUNT_IN_BYTES);
+       } else if (addr + bytes > SGEN_CARDTABLE_END) {
+               size_t first_chunk = SGEN_CARDTABLE_END - addr;
+
+               memset (addr, 0, first_chunk);
+               memset (sgen_cardtable, 0, bytes - first_chunk);
+       } else {
+               memset (addr, 0, bytes);
+       }
+}
+
+
+#else
+
+static void
+clear_cards (mword start, mword size)
+{
+       memset (sgen_card_table_get_card_address (start), 0, sgen_card_table_number_of_cards_in_range (start, size));
+}
+
+
+#endif
+
+static void
+sgen_card_table_clear_cards (void)
+{
+       /*XXX we could do this in 2 ways. using mincore or iterating over all sections/los objects */
+       sgen_major_collector_iterate_live_block_ranges (clear_cards);
+       sgen_los_iterate_live_block_ranges (clear_cards);
+}
+
+static void
+sgen_card_table_finish_minor_collection (void)
+{
+       sgen_card_tables_collect_stats (FALSE);
+}
+
+static void
+sgen_card_table_scan_remsets (ScanCopyContext ctx)
+{
+       SGEN_TV_DECLARE (atv);
+       SGEN_TV_DECLARE (btv);
+
+       sgen_card_tables_collect_stats (TRUE);
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+       /*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
+       /*First we copy*/
+       sgen_major_collector_iterate_live_block_ranges (move_cards_to_shadow_table);
+       sgen_los_iterate_live_block_ranges (move_cards_to_shadow_table);
+
+       /*Then we clear*/
+       sgen_card_table_clear_cards ();
+#endif
+       SGEN_TV_GETTIME (atv);
+       sgen_get_major_collector ()->scan_card_table (FALSE, ctx);
+       SGEN_TV_GETTIME (btv);
+       last_major_scan_time = SGEN_TV_ELAPSED (atv, btv); 
+       major_card_scan_time += last_major_scan_time;
+       sgen_los_scan_card_table (FALSE, ctx);
+       SGEN_TV_GETTIME (atv);
+       last_los_scan_time = SGEN_TV_ELAPSED (btv, atv);
+       los_card_scan_time += last_los_scan_time;
+}
+
+guint8*
+sgen_get_card_table_configuration (int *shift_bits, gpointer *mask)
+{
+#ifndef MANAGED_WBARRIER
+       return NULL;
+#else
+       if (!sgen_cardtable)
+               return NULL;
+
+       *shift_bits = CARD_BITS;
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+       *mask = (gpointer)CARD_MASK;
+#else
+       *mask = NULL;
+#endif
+
+       return sgen_cardtable;
+#endif
+}
+
+#if 0
+void
+sgen_card_table_dump_obj_card (char *object, size_t size, void *dummy)
+{
+       guint8 *start = sgen_card_table_get_card_scan_address (object);
+       guint8 *end = start + sgen_card_table_number_of_cards_in_range (object, size);
+       int cnt = 0;
+       printf ("--obj %p %d cards [%p %p]--", object, size, start, end);
+       for (; start < end; ++start) {
+               if (cnt == 0)
+                       printf ("\n\t[%p] ", start);
+               printf ("%x ", *start);
+               ++cnt;
+               if (cnt == 8)
+                       cnt = 0;
+       }
+       printf ("\n");
+}
+#endif
+
+void
+sgen_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboolean mod_union, ScanCopyContext ctx)
+{
+       HEAVY_STAT (++large_objects);
+
+       if (sgen_client_cardtable_scan_object (obj, block_obj_size, cards, mod_union, ctx))
+               return;
+
+       HEAVY_STAT (++bloby_objects);
+       if (cards) {
+               if (sgen_card_table_is_range_marked (cards, (mword)obj, block_obj_size))
+                       ctx.ops->scan_object (obj, sgen_obj_get_descriptor (obj), ctx.queue);
+       } else if (sgen_card_table_region_begin_scanning ((mword)obj, block_obj_size)) {
+               ctx.ops->scan_object (obj, sgen_obj_get_descriptor (obj), ctx.queue);
+       }
+
+       binary_protocol_card_scan (obj, sgen_safe_object_get_size ((GCObject*)obj));
+}
+
+#ifdef CARDTABLE_STATS
+
+typedef struct {
+       int total, marked, remarked, gc_marked; 
+} card_stats;
+
+static card_stats major_stats, los_stats;
+static card_stats *cur_stats;
+
+static void
+count_marked_cards (mword start, mword size)
+{
+       mword end = start + size;
+       while (start <= end) {
+               guint8 card = *sgen_card_table_get_card_address (start);
+               ++cur_stats->total;
+               if (card)
+                       ++cur_stats->marked;
+               if (card == 2)
+                       ++cur_stats->gc_marked;
+               start += CARD_SIZE_IN_BYTES;
+       }
+}
+
+static void
+count_remarked_cards (mword start, mword size)
+{
+       mword end = start + size;
+       while (start <= end) {
+               if (sgen_card_table_address_is_marked (start)) {
+                       ++cur_stats->remarked;
+                       *sgen_card_table_get_card_address (start) = 2;
+               }
+               start += CARD_SIZE_IN_BYTES;
+       }
+}
+
+#endif
+
+static void
+sgen_card_tables_collect_stats (gboolean begin)
+{
+#ifdef CARDTABLE_STATS
+       if (begin) {
+               memset (&major_stats, 0, sizeof (card_stats));
+               memset (&los_stats, 0, sizeof (card_stats));
+               cur_stats = &major_stats;
+               sgen_major_collector_iterate_live_block_ranges (count_marked_cards);
+               cur_stats = &los_stats;
+               sgen_los_iterate_live_block_ranges (count_marked_cards);
+       } else {
+               cur_stats = &major_stats;
+               sgen_major_collector_iterate_live_block_ranges (count_remarked_cards);
+               cur_stats = &los_stats;
+               sgen_los_iterate_live_block_ranges (count_remarked_cards);
+               printf ("cards major (t %d m %d g %d r %d)  los (t %d m %d g %d r %d) major_scan %.2fms los_scan %.2fms\n", 
+                       major_stats.total, major_stats.marked, major_stats.gc_marked, major_stats.remarked,
+                       los_stats.total, los_stats.marked, los_stats.gc_marked, los_stats.remarked,
+                       last_major_scan_time / 10000.0f, last_los_scan_time / 10000.0f);
+       }
+#endif
+}
+
+void
+sgen_card_table_init (SgenRememberedSet *remset)
+{
+       sgen_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "card table");
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+       sgen_shadow_cardtable = sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "shadow card table");
+#endif
+
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("marked cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &marked_cards);
+       mono_counters_register ("scanned cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &scanned_cards);
+       mono_counters_register ("remarked cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &remarked_cards);
+
+       mono_counters_register ("los marked cards", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &los_marked_cards);
+       mono_counters_register ("los array cards scanned ", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &los_array_cards);
+       mono_counters_register ("los array remsets", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &los_array_remsets);
+       mono_counters_register ("cardtable scanned objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &scanned_objects);
+       mono_counters_register ("cardtable large objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &large_objects);
+       mono_counters_register ("cardtable bloby objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &bloby_objects);
+#endif
+       mono_counters_register ("cardtable major scan time", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &major_card_scan_time);
+       mono_counters_register ("cardtable los scan time", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &los_card_scan_time);
+
+
+       remset->wbarrier_set_field = sgen_card_table_wbarrier_set_field;
+       remset->wbarrier_arrayref_copy = sgen_card_table_wbarrier_arrayref_copy;
+       remset->wbarrier_value_copy = sgen_card_table_wbarrier_value_copy;
+       remset->wbarrier_object_copy = sgen_card_table_wbarrier_object_copy;
+       remset->wbarrier_generic_nostore = sgen_card_table_wbarrier_generic_nostore;
+       remset->record_pointer = sgen_card_table_record_pointer;
+
+       remset->scan_remsets = sgen_card_table_scan_remsets;
+
+       remset->finish_minor_collection = sgen_card_table_finish_minor_collection;
+       remset->clear_cards = sgen_card_table_clear_cards;
+
+       remset->find_address = sgen_card_table_find_address;
+       remset->find_address_with_cards = sgen_card_table_find_address_with_cards;
+
+       need_mod_union = sgen_get_major_collector ()->is_concurrent;
+}
+
+#endif /*HAVE_SGEN_GC*/
diff --git a/mono/sgen/sgen-cardtable.h b/mono/sgen/sgen-cardtable.h
new file mode 100644 (file)
index 0000000..85a6924
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __MONO_SGEN_CARD_TABLE_INLINES_H__
+#define __MONO_SGEN_CARD_TABLE_INLINES_H__
+
+/*WARNING: This function returns the number of cards regardless of overflow in case of overlapping cards.*/
+mword sgen_card_table_number_of_cards_in_range (mword address, mword size);
+
+void sgen_card_table_reset_region (mword start, mword end);
+void* sgen_card_table_align_pointer (void *ptr);
+void sgen_card_table_mark_range (mword address, mword size);
+void sgen_cardtable_scan_object (char *obj, mword obj_size, guint8 *cards,
+               gboolean mod_union, ScanCopyContext ctx);
+
+gboolean sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards);
+
+guint8* sgen_card_table_alloc_mod_union (char *obj, mword obj_size);
+void sgen_card_table_free_mod_union (guint8 *mod_union, char *obj, mword obj_size);
+
+void sgen_card_table_update_mod_union_from_cards (guint8 *dest, guint8 *start_card, size_t num_cards);
+void sgen_card_table_update_mod_union (guint8 *dest, char *obj, mword obj_size, size_t *out_num_cards);
+
+guint8* sgen_get_card_table_configuration (int *shift_bits, gpointer *mask);
+
+void sgen_card_table_init (SgenRememberedSet *remset);
+
+/*How many bytes a single card covers*/
+#define CARD_BITS 9
+
+/* How many bits of the address space is covered by the card table.
+ * If this value is smaller than the number of address bits, card aliasing is required.
+ */
+#define CARD_TABLE_BITS 32
+
+#define CARD_SIZE_IN_BYTES (1 << CARD_BITS)
+#define CARD_COUNT_BITS (CARD_TABLE_BITS - CARD_BITS)
+#define CARD_COUNT_IN_BYTES (1 << CARD_COUNT_BITS)
+#define CARD_MASK ((1 << CARD_COUNT_BITS) - 1)
+
+#if SIZEOF_VOID_P * 8 > CARD_TABLE_BITS
+#define SGEN_HAVE_OVERLAPPING_CARDS    1
+#endif
+
+extern guint8 *sgen_cardtable;
+
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+
+static inline guint8*
+sgen_card_table_get_card_address (mword address)
+{
+       return sgen_cardtable + ((address >> CARD_BITS) & CARD_MASK);
+}
+
+extern guint8 *sgen_shadow_cardtable;
+
+#define SGEN_SHADOW_CARDTABLE_END (sgen_shadow_cardtable + CARD_COUNT_IN_BYTES)
+
+static inline guint8*
+sgen_card_table_get_shadow_card_address (mword address)
+{
+       return sgen_shadow_cardtable + ((address >> CARD_BITS) & CARD_MASK);
+}
+
+static inline gboolean
+sgen_card_table_card_begin_scanning (mword address)
+{
+       return *sgen_card_table_get_shadow_card_address (address) != 0;
+}
+
+static inline void
+sgen_card_table_prepare_card_for_scanning (guint8 *card)
+{
+}
+
+#define sgen_card_table_get_card_scan_address sgen_card_table_get_shadow_card_address
+
+#else
+
+static inline guint8*
+sgen_card_table_get_card_address (mword address)
+{
+       return sgen_cardtable + (address >> CARD_BITS);
+}
+
+static inline gboolean
+sgen_card_table_card_begin_scanning (mword address)
+{
+       guint8 *card = sgen_card_table_get_card_address (address);
+       gboolean res = *card;
+       *card = 0;
+       return res;
+}
+
+static inline void
+sgen_card_table_prepare_card_for_scanning (guint8 *card)
+{
+       *card = 0;
+}
+
+#define sgen_card_table_get_card_scan_address sgen_card_table_get_card_address
+
+#endif
+
+static inline gboolean
+sgen_card_table_address_is_marked (mword address)
+{
+       return *sgen_card_table_get_card_address (address) != 0;
+}
+
+static inline void
+sgen_card_table_mark_address (mword address)
+{
+       *sgen_card_table_get_card_address (address) = 1;
+}
+
+static inline size_t
+sgen_card_table_get_card_offset (char *ptr, char *base)
+{
+       return (ptr - base) >> CARD_BITS;
+}
+
+#endif
diff --git a/mono/sgen/sgen-client.h b/mono/sgen/sgen-client.h
new file mode 100644 (file)
index 0000000..505edbd
--- /dev/null
@@ -0,0 +1,305 @@
+/*
+ * sgen-client.h: SGen client interface.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "mono/sgen/sgen-pointer-queue.h"
+
+/*
+ * Init whatever needs initing.  This is called relatively early in SGen initialization.
+ * Must initialized the small ID for the current thread.
+ */
+void sgen_client_init (void);
+
+/*
+ * The slow path for getting an object's size.  We're passing in the vtable because we've
+ * already fetched it.
+ */
+mword sgen_client_slow_object_get_size (GCVTable *vtable, GCObject* o);
+
+/*
+ * Fill the given range with a dummy object.  If the range is too short to be filled with an
+ * object, null it.  Return `TRUE` if the range was filled with an object, `FALSE` if it was
+ * nulled.
+ */
+gboolean sgen_client_array_fill_range (char *start, size_t size);
+
+/*
+ * This is called if the nursery clearing policy at `clear-at-gc`, which is usually only
+ * used for debugging.  If `size` is large enough for the memory to have been filled with a
+ * dummy, object, zero its header.  Note that there might not actually be a header there.
+ */
+void sgen_client_zero_array_fill_header (void *p, size_t size);
+
+/*
+ * Return whether the given object is an array fill dummy object.
+ */
+gboolean sgen_client_object_is_array_fill (GCObject *o);
+
+/*
+ * Return whether the given finalizable object's finalizer is critical, i.e., needs to run
+ * after all non-critical finalizers have run.
+ */
+gboolean sgen_client_object_has_critical_finalizer (GCObject *obj);
+
+/*
+ * Called after an object is enqueued for finalization.  This is a very low-level callback.
+ * It should almost certainly be a NOP.
+ *
+ * FIXME: Can we merge this with `sgen_client_object_has_critical_finalizer()`?
+ */
+void sgen_client_object_queued_for_finalization (GCObject *obj);
+
+/*
+ * Run the given object's finalizer.
+ */
+void sgen_client_run_finalize (GCObject *obj);
+
+/*
+ * Is called after a collection if there are objects to finalize.  The world is still
+ * stopped.  This will usually notify the finalizer thread that it needs to run.
+ */
+void sgen_client_finalize_notify (void);
+
+/*
+ * Returns TRUE if no ephemerons have been marked.  Will be called again if it returned
+ * FALSE.  If ephemerons are not supported, just return TRUE.
+ */
+gboolean sgen_client_mark_ephemerons (ScanCopyContext ctx);
+
+/*
+ * Clear ephemeron pairs with unreachable keys.
+ * We pass the copy func so we can figure out if an array was promoted or not.
+ */
+void sgen_client_clear_unreachable_ephemerons (ScanCopyContext ctx);
+
+/*
+ * This is called for objects that are larger than one card.  If it's possible to scan only
+ * parts of the object based on which cards are marked, do so and return TRUE.  Otherwise,
+ * return FALSE.
+ */
+gboolean sgen_client_cardtable_scan_object (char *obj, mword block_obj_size, guint8 *cards, gboolean mod_union, ScanCopyContext ctx);
+
+/*
+ * Called after nursery objects have been pinned.  No action is necessary.
+ */
+void sgen_client_nursery_objects_pinned (void **definitely_pinned, int count);
+
+/*
+ * Called at a semi-random point during minor collections.  No action is necessary.
+ */
+void sgen_client_collecting_minor (SgenPointerQueue *fin_ready_queue, SgenPointerQueue *critical_fin_queue);
+
+/*
+ * Called at semi-random points during major collections.  No action is necessary.
+ */
+void sgen_client_collecting_major_1 (void);
+void sgen_client_collecting_major_2 (void);
+void sgen_client_collecting_major_3 (SgenPointerQueue *fin_ready_queue, SgenPointerQueue *critical_fin_queue);
+
+/*
+ * Called after a LOS object has been pinned.  No action is necessary.
+ */
+void sgen_client_pinned_los_object (char *obj);
+
+/*
+ * Called for every degraded allocation.  No action is necessary.
+ */
+void sgen_client_degraded_allocation (size_t size);
+
+/*
+ * Called whenever the amount of memory allocated for the managed heap changes.  No action
+ * is necessary.
+ */
+void sgen_client_total_allocated_heap_changed (size_t allocated_heap_size);
+
+/*
+ * Called when an object allocation fails.  The suggested action is to abort the program.
+ *
+ * FIXME: Don't we want to return a BOOL here that indicates whether to retry the
+ * allocation?
+ */
+void sgen_client_out_of_memory (size_t size);
+
+/*
+ * If the client has registered any internal memory types, this must return a string
+ * describing the given type.  Only used for debugging.
+ */
+const char* sgen_client_description_for_internal_mem_type (int type);
+
+/*
+ * Only used for debugging.  `sgen_client_vtable_get_namespace()` may return NULL.
+ */
+gboolean sgen_client_vtable_is_inited (GCVTable *vtable);
+const char* sgen_client_vtable_get_namespace (GCVTable *vtable);
+const char* sgen_client_vtable_get_name (GCVTable *vtable);
+
+/*
+ * Called before starting collections.  The world is already stopped.  No action is
+ * necessary.
+ */
+void sgen_client_pre_collection_checks (void);
+
+/*
+ * Must set the thread's thread info to `info`.  If the thread's small ID was not already
+ * initialized in `sgen_client_init()` (for the main thread, usually), it must be done here.
+ *
+ * `stack_bottom_fallback` is the value passed through via `sgen_thread_register()`.
+ */
+void sgen_client_thread_register (SgenThreadInfo* info, void *stack_bottom_fallback);
+
+void sgen_client_thread_unregister (SgenThreadInfo *p);
+
+/*
+ * Called on each worker thread when it starts up.  Must initialize the thread's small ID.
+ */
+void sgen_client_thread_register_worker (void);
+
+/*
+ * The least this function needs to do is scan all registers and thread stacks.  To do this
+ * conservatively, use `sgen_conservatively_pin_objects_from()`.
+ */
+void sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise, ScanCopyContext ctx);
+
+/*
+ * Stop and restart the world, i.e., all threads that interact with the managed heap.  For
+ * single-threaded programs this is a nop.
+ */
+void sgen_client_stop_world (int generation);
+void sgen_client_restart_world (int generation, GGTimingInfo *timing);
+
+/*
+ * Must return FALSE.  The bridge is not supported outside of Mono.
+ */
+gboolean sgen_client_bridge_need_processing (void);
+
+/*
+ * None of these should ever be called.
+ */
+void sgen_client_bridge_reset_data (void);
+void sgen_client_bridge_processing_stw_step (void);
+void sgen_client_bridge_wait_for_processing (void);
+void sgen_client_bridge_processing_finish (int generation);
+gboolean sgen_client_bridge_is_bridge_object (GCObject *obj);
+void sgen_client_bridge_register_finalized_object (GCObject *object);
+
+/*
+ * No action is necessary.
+ */
+void sgen_client_mark_togglerefs (char *start, char *end, ScanCopyContext ctx);
+void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx);
+
+/*
+ * Called after collections, reporting the amount of time they took.  No action is
+ * necessary.
+ */
+void sgen_client_log_timing (GGTimingInfo *info, mword last_major_num_sections, mword last_los_memory_usage);
+
+/*
+ * Called to handle `MONO_GC_PARAMS` and `MONO_GC_DEBUG` options.  The `handle` functions
+ * must return TRUE if they have recognized and processed the option, FALSE otherwise.
+ */
+gboolean sgen_client_handle_gc_param (const char *opt);
+void sgen_client_print_gc_params_usage (void);
+gboolean sgen_client_handle_gc_debug (const char *opt);
+void sgen_client_print_gc_debug_usage (void);
+
+/*
+ * Called to obtain an identifier for the current location, such as a method pointer. This
+ * is used for logging the provenances of allocations with the heavy binary protocol.
+ */
+gpointer sgen_client_get_provenance (void);
+
+/*
+ * Called by the debugging infrastructure to describe pointers that have an invalid vtable.
+ * Should usually print to `stdout`.
+ */
+void sgen_client_describe_invalid_pointer (GCObject *ptr);
+
+/*
+ * These client binary protocol functions are called from the respective binary protocol
+ * functions.  No action is necessary.  We suggest implementing them as inline functions in
+ * the client header file so that no overhead is incurred if they don't actually do
+ * anything.
+ */
+
+#define TYPE_INT int
+#define TYPE_LONGLONG long long
+#define TYPE_SIZE size_t
+#define TYPE_POINTER gpointer
+#define TYPE_BOOL gboolean
+
+#define BEGIN_PROTOCOL_ENTRY0(method) \
+       void sgen_client_ ## method (void);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
+       void sgen_client_ ## method (void);
+#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
+       void sgen_client_ ## method (t1 f1);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
+       void sgen_client_ ## method (t1 f1);
+#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
+       void sgen_client_ ## method (t1 f1, t2 f2);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
+       void sgen_client_ ## method (t1 f1, t2 f2);
+#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3);
+#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4);
+#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5);
+#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6);
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6);
+
+#define FLUSH()
+
+#define DEFAULT_PRINT()
+#define CUSTOM_PRINT(_)
+
+#define IS_ALWAYS_MATCH(_)
+#define MATCH_INDEX(_)
+#define IS_VTABLE_MATCH(_)
+
+#define END_PROTOCOL_ENTRY
+#define END_PROTOCOL_ENTRY_HEAVY
+
+#include "sgen-protocol-def.h"
+
+#undef TYPE_INT
+#undef TYPE_LONGLONG
+#undef TYPE_SIZE
+#undef TYPE_POINTER
+#undef TYPE_BOOL
+
+#ifdef SGEN_WITHOUT_MONO
+/*
+ * Get the current thread's thread info.  This will only be called on managed threads.
+ */
+SgenThreadInfo* mono_thread_info_current (void);
+
+/*
+ * Get the current thread's small ID.  This will be called on managed and worker threads.
+ */
+int mono_thread_info_get_small_id (void);
+#endif
diff --git a/mono/sgen/sgen-conf.h b/mono/sgen/sgen-conf.h
new file mode 100644 (file)
index 0000000..f139a98
--- /dev/null
@@ -0,0 +1,217 @@
+/*
+ * sgen-conf.h: Tunable parameters and debugging switches.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGENCONF_H__
+#define __MONO_SGENCONF_H__
+
+#include <glib.h>
+
+/*Basic defines and static tunables */
+
+#if SIZEOF_VOID_P == 4
+typedef guint32 mword;
+#else
+typedef guint64 mword;
+#endif
+
+
+/*
+ * Turning on heavy statistics will turn off the managed allocator and
+ * the managed write barrier.
+ */
+// #define HEAVY_STATISTICS
+
+#ifdef HEAVY_STATISTICS
+#define HEAVY_STAT(x)  x
+#else
+#define HEAVY_STAT(x)
+#endif
+
+/*
+ * Define this to allow the user to change the nursery size by
+ * specifying its value in the MONO_GC_PARAMS environmental
+ * variable. See mono_gc_base_init for details.
+ */
+#define USER_CONFIG 1
+
+/*
+ * The binary protocol enables logging a lot of the GC ativity in a way that is not very
+ * intrusive and produces a compact file that can be searched using a custom tool.  This
+ * option enables very fine-grained binary protocol events, which will make the GC a tiny
+ * bit less efficient even if no binary protocol file is generated.
+ */
+//#define SGEN_HEAVY_BINARY_PROTOCOL
+
+/*
+ * This extends the heavy binary protocol to record the provenance of an object
+ * for every allocation.
+ */
+//#define SGEN_OBJECT_PROVENANCE
+
+/*
+ * This enables checks whenever objects are enqueued in gray queues.
+ * Right now the only check done is that we never enqueue nursery
+ * pointers in the concurrent collector.
+ */
+//#define SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+
+/*
+ * This keeps track of where a gray object queue section is and
+ * whether it is where it should be.
+ */
+//#define SGEN_CHECK_GRAY_OBJECT_SECTIONS
+
+/*
+ * Enable this to check every reference update for null references and whether the update is
+ * made in a worker thread.  In only a few cases do we potentially update references by
+ * writing nulls, so we assert in all the cases where it's not allowed.  The concurrent
+ * collector's worker thread is not allowed to update references at all, so we also assert
+ * that we're not in the worker thread.
+ */
+//#define SGEN_CHECK_UPDATE_REFERENCE
+
+/*
+ * Define this and use the "xdomain-checks" MONO_GC_DEBUG option to
+ * have cross-domain checks in the write barrier.
+ */
+//#define XDOMAIN_CHECKS_IN_WBARRIER
+
+/*
+ * Define this to get number of objects marked information in the
+ * concurrent GC DTrace probes.  Has a small performance impact, so
+ * it's disabled by default.
+ */
+//#define SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
+
+/*
+ * Object layout statistics gather a histogram of reference locations
+ * over all scanned objects.  We use this information to improve GC
+ * descriptors to speed up scanning.  This does not provide any
+ * troubleshooting assistance (unless you are troubled in highly
+ * unusual ways) and makes scanning slower.
+ */
+//#define SGEN_OBJECT_LAYOUT_STATISTICS
+
+#ifndef SGEN_HEAVY_BINARY_PROTOCOL
+#ifndef HEAVY_STATISTICS
+#define MANAGED_ALLOCATION
+#ifndef XDOMAIN_CHECKS_IN_WBARRIER
+#define MANAGED_WBARRIER
+#endif
+#endif
+#endif
+
+/*
+ * Maximum level of debug to enable on this build.
+ * Making this a constant enables us to put logging in a lot of places and
+ * not pay its cost on release builds.
+ */
+#define SGEN_MAX_DEBUG_LEVEL 2
+
+/*
+ * Maximum level of asserts to enable on this build.
+ * FIXME replace all magic numbers with defines.
+ */
+#define SGEN_MAX_ASSERT_LEVEL 5
+
+
+#define GC_BITS_PER_WORD (sizeof (mword) * 8)
+
+/*Size of the section used by the copying GC. */
+#define SGEN_SIZEOF_GC_MEM_SECTION     ((sizeof (GCMemSection) + 7) & ~7)
+
+/*
+ * to quickly find the head of an object pinned by a conservative
+ * address we keep track of the objects allocated for each
+ * SGEN_SCAN_START_SIZE memory chunk in the nursery or other memory
+ * sections. Larger values have less memory overhead and bigger
+ * runtime cost. 4-8 KB are reasonable values.
+ */
+#define SGEN_SCAN_START_SIZE (4096*2)
+
+/*
+ * Objects bigger then this go into the large object space.  This size has a few
+ * constraints.  At least two of them must fit into a major heap block.  It must also play
+ * well with the run length GC descriptor, which encodes the object size.
+ */
+#define SGEN_MAX_SMALL_OBJ_SIZE 8000
+
+/*
+ * This is the maximum ammount of memory we're willing to waste in order to speed up allocation.
+ * Wastage comes in thre forms:
+ *
+ * -when building the nursery fragment list, small regions are discarded;
+ * -when allocating memory from a fragment if it ends up below the threshold, we remove it from the fragment list; and
+ * -when allocating a new tlab, we discard the remaining space of the old one
+ *
+ * Increasing this value speeds up allocation but will cause more frequent nursery collections as less space will be used.
+ * Descreasing this value will cause allocation to be slower since we'll have to cycle thru more fragments.
+ * 512 annedoctally keeps wastage under control and doesn't impact allocation performance too much. 
+*/
+#define SGEN_MAX_NURSERY_WASTE 512
+
+
+/*
+ * Minimum allowance for nursery allocations, as a multiple of the size of nursery.
+ *
+ * We allow at least this much allocation to happen to the major heap from multiple
+ * minor collections before triggering a major collection.
+ *
+ * Bigger values increases throughput by allowing more garbage to sit in the major heap.
+ * Smaller values leads to better memory effiency but more frequent major collections.
+ */
+#define SGEN_DEFAULT_ALLOWANCE_NURSERY_SIZE_RATIO 4.0
+
+#define SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO 1.0
+#define SGEN_MAX_ALLOWANCE_NURSERY_SIZE_RATIO 10.0
+
+/*
+ * Default ratio of memory we want to release in a major collection in relation to the the current heap size.
+ *
+ * A major collection target is to free a given amount of memory. This amount is a ratio of the major heap size.
+ *
+ * Values above 0.5 cause the heap to agressively grow when it's small and waste memory when it's big.
+ * Lower values will produce more reasonable sized heaps when it's small, but will be suboptimal at large
+ * sizes as they will use a small fraction only.
+ *
+ */
+#define SGEN_DEFAULT_SAVE_TARGET_RATIO 0.5
+
+#define SGEN_MIN_SAVE_TARGET_RATIO 0.1
+#define SGEN_MAX_SAVE_TARGET_RATIO 2.0
+
+/*
+ * Configurable cementing parameters.
+ *
+ * If there are too many pinned nursery objects with many references
+ * from the major heap, the hash table size must be increased.
+ *
+ * The threshold is the number of references from the major heap to a
+ * pinned nursery object which triggers cementing: if there are more
+ * than that number of references, the pinned object is cemented until
+ * the next major collection.
+ */
+#define SGEN_CEMENT_HASH_SHIFT 6
+#define SGEN_CEMENT_HASH_SIZE  (1 << SGEN_CEMENT_HASH_SHIFT)
+#define SGEN_CEMENT_HASH(hv)   (((hv) ^ ((hv) >> SGEN_CEMENT_HASH_SHIFT)) & (SGEN_CEMENT_HASH_SIZE - 1))
+#define SGEN_CEMENT_THRESHOLD  1000
+
+#endif
diff --git a/mono/sgen/sgen-copy-object.h b/mono/sgen/sgen-copy-object.h
new file mode 100644 (file)
index 0000000..99fd0cc
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * sgen-copy-object.h: This is where objects are copied.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+extern guint64 stat_copy_object_called_nursery;
+extern guint64 stat_objects_copied_nursery;
+
+extern guint64 stat_nursery_copy_object_failed_from_space;
+extern guint64 stat_nursery_copy_object_failed_forwarded;
+extern guint64 stat_nursery_copy_object_failed_pinned;
+
+extern guint64 stat_slots_allocated_in_vain;
+
+/*
+ * Copies an object and enqueues it if a queue is given.
+ *
+ * This function can be used even if the vtable of obj is not valid
+ * anymore, which is the case in the parallel collector.
+ */
+static MONO_ALWAYS_INLINE void
+par_copy_object_no_checks (char *destination, GCVTable *vt, void *obj, mword objsize, SgenGrayQueue *queue)
+{
+       sgen_client_pre_copy_checks (destination, vt, obj, objsize);
+       binary_protocol_copy (obj, destination, vt, objsize);
+
+       /* FIXME: assumes object layout */
+       memcpy (destination + sizeof (mword), (char*)obj + sizeof (mword), objsize - sizeof (mword));
+
+       /* adjust array->bounds */
+       SGEN_ASSERT (9, sgen_vtable_get_descriptor (vt), "vtable %p has no gc descriptor", vt);
+
+       sgen_client_update_copied_object (destination, vt, obj, objsize);
+       obj = destination;
+       if (queue) {
+               SGEN_LOG (9, "Enqueuing gray object %p (%s)", obj, sgen_client_vtable_get_name (vt));
+               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_vtable_get_descriptor (vt));
+       }
+}
+
+/*
+ * This can return OBJ itself on OOM.
+ */
+static MONO_NEVER_INLINE void*
+copy_object_no_checks (void *obj, SgenGrayQueue *queue)
+{
+       GCVTable *vt = SGEN_LOAD_VTABLE_UNCHECKED (obj);
+       gboolean has_references = SGEN_VTABLE_HAS_REFERENCES (vt);
+       mword objsize = SGEN_ALIGN_UP (sgen_client_par_object_get_size (vt, obj));
+       /* FIXME: Does this not mark the newly allocated object? */
+       char *destination = COLLECTOR_SERIAL_ALLOC_FOR_PROMOTION (vt, obj, objsize, has_references);
+
+       if (G_UNLIKELY (!destination)) {
+               /* FIXME: Is this path ever tested? */
+               collector_pin_object (obj, queue);
+               sgen_set_pinned_from_failed_allocation (objsize);
+               return obj;
+       }
+
+       if (!has_references)
+               queue = NULL;
+
+       par_copy_object_no_checks (destination, vt, obj, objsize, queue);
+       /* FIXME: mark mod union cards if necessary */
+
+       /* set the forwarding pointer */
+       SGEN_FORWARD_OBJECT (obj, destination);
+
+       return destination;
+}
diff --git a/mono/sgen/sgen-debug.c b/mono/sgen/sgen-debug.c
new file mode 100644 (file)
index 0000000..be53b49
--- /dev/null
@@ -0,0 +1,1231 @@
+/*
+ * sgen-debug.c: Collector debugging
+ *
+ * Author:
+ *     Paolo Molaro (lupus@ximian.com)
+ *  Rodrigo Kumpera (kumpera@gmail.com)
+ *
+ * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright 2011 Xamarin, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-pinning.h"
+#include "mono/sgen/sgen-client.h"
+
+#define LOAD_VTABLE    SGEN_LOAD_VTABLE
+
+#define object_is_forwarded    SGEN_OBJECT_IS_FORWARDED
+#define object_is_pinned       SGEN_OBJECT_IS_PINNED
+#define safe_object_get_size   sgen_safe_object_get_size
+
+void describe_ptr (char *ptr);
+void check_object (char *start);
+
+/*
+ * ######################################################################
+ * ########  Collector debugging
+ * ######################################################################
+ */
+
+static const char*descriptor_types [] = {
+       "INVALID",
+       "run length",
+       "bitmap",
+       "small pointer-free",
+       "complex",
+       "vector",
+       "complex arrray",
+       "complex pointer-free"
+};
+
+static char* describe_nursery_ptr (char *ptr, gboolean need_setup);
+
+static void
+describe_pointer (char *ptr, gboolean need_setup)
+{
+       GCVTable *vtable;
+       mword desc;
+       int type;
+       char *start;
+       char *forwarded;
+       mword size;
+
+ restart:
+       if (sgen_ptr_in_nursery (ptr)) {
+               start = describe_nursery_ptr (ptr, need_setup);
+               if (!start)
+                       return;
+               ptr = start;
+               vtable = (GCVTable*)LOAD_VTABLE (ptr);
+       } else {
+               if (sgen_ptr_is_in_los (ptr, &start)) {
+                       if (ptr == start)
+                               printf ("Pointer is the start of object %p in LOS space.\n", start);
+                       else
+                               printf ("Pointer is at offset 0x%x of object %p in LOS space.\n", (int)(ptr - start), start);
+                       ptr = start;
+                       mono_sgen_los_describe_pointer (ptr);
+                       vtable = (GCVTable*)LOAD_VTABLE (ptr);
+               } else if (major_collector.ptr_is_in_non_pinned_space (ptr, &start)) {
+                       if (ptr == start)
+                               printf ("Pointer is the start of object %p in oldspace.\n", start);
+                       else if (start)
+                               printf ("Pointer is at offset 0x%x of object %p in oldspace.\n", (int)(ptr - start), start);
+                       else
+                               printf ("Pointer inside oldspace.\n");
+                       if (start)
+                               ptr = start;
+                       vtable = (GCVTable*)major_collector.describe_pointer (ptr);
+               } else if (major_collector.obj_is_from_pinned_alloc (ptr)) {
+                       // FIXME: Handle pointers to the inside of objects
+                       printf ("Pointer is inside a pinned chunk.\n");
+                       vtable = (GCVTable*)LOAD_VTABLE (ptr);
+               } else {
+                       printf ("Pointer unknown.\n");
+                       return;
+               }
+       }
+
+       if (object_is_pinned (ptr))
+               printf ("Object is pinned.\n");
+
+       if ((forwarded = object_is_forwarded (ptr))) {
+               printf ("Object is forwarded to %p:\n", forwarded);
+               ptr = forwarded;
+               goto restart;
+       }
+
+       printf ("VTable: %p\n", vtable);
+       if (vtable == NULL) {
+               printf ("VTable is invalid (empty).\n");
+               goto invalid_vtable;
+       }
+       if (sgen_ptr_in_nursery (vtable)) {
+               printf ("VTable is invalid (points inside nursery).\n");
+               goto invalid_vtable;
+       }
+       printf ("Class: %s.%s\n", sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+
+       desc = sgen_vtable_get_descriptor ((GCVTable*)vtable);
+       printf ("Descriptor: %lx\n", (long)desc);
+
+       type = desc & DESC_TYPE_MASK;
+       printf ("Descriptor type: %d (%s)\n", type, descriptor_types [type]);
+
+       size = sgen_safe_object_get_size ((GCObject*)ptr);
+       printf ("Size: %d\n", (int)size);
+
+ invalid_vtable:
+       ;
+       sgen_client_describe_invalid_pointer ((GCObject *) ptr);
+}
+
+void
+describe_ptr (char *ptr)
+{
+       describe_pointer (ptr, TRUE);
+}
+
+static gboolean missing_remsets;
+
+/*
+ * We let a missing remset slide if the target object is pinned,
+ * because the store might have happened but the remset not yet added,
+ * but in that case the target must be pinned.  We might theoretically
+ * miss some missing remsets this way, but it's very unlikely.
+ */
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {    \
+       if (*(ptr) && sgen_ptr_in_nursery ((char*)*(ptr))) { \
+               if (!sgen_get_remset ()->find_address ((char*)(ptr)) && !sgen_cement_lookup (*(ptr))) { \
+                       GCVTable *__vt = SGEN_LOAD_VTABLE ((obj));      \
+                       SGEN_LOG (0, "Oldspace->newspace reference %p at offset %zd in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), sgen_client_vtable_get_namespace (__vt), sgen_client_vtable_get_name (__vt)); \
+                       binary_protocol_missing_remset ((obj), __vt, (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
+                       if (!object_is_pinned (*(ptr)))                                                         \
+                               missing_remsets = TRUE;                                                                 \
+               }                                                                                                                               \
+       }                                                                                                                                       \
+       } while (0)
+
+/*
+ * Check that each object reference which points into the nursery can
+ * be found in the remembered sets.
+ */
+static void
+check_consistency_callback (char *start, size_t size, void *dummy)
+{
+       GCVTable *vt = (GCVTable*)LOAD_VTABLE (start);
+       mword desc = sgen_vtable_get_descriptor ((GCVTable*)vt);
+       SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", start, vt, sgen_client_vtable_get_name (vt));
+
+#include "sgen-scan-object.h"
+}
+
+/*
+ * Perform consistency check of the heap.
+ *
+ * Assumes the world is stopped.
+ */
+void
+sgen_check_consistency (void)
+{
+       // Need to add more checks
+
+       missing_remsets = FALSE;
+
+       SGEN_LOG (1, "Begin heap consistency check...");
+
+       // Check that oldspace->newspace pointers are registered with the collector
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)check_consistency_callback, NULL);
+
+       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_consistency_callback, NULL);
+
+       SGEN_LOG (1, "Heap consistency check done.");
+
+       if (!binary_protocol_is_enabled ())
+               g_assert (!missing_remsets);
+}
+
+static gboolean
+is_major_or_los_object_marked (char *obj)
+{
+       if (sgen_safe_object_get_size ((GCObject*)obj) > SGEN_MAX_SMALL_OBJ_SIZE) {
+               return sgen_los_object_is_pinned (obj);
+       } else {
+               return sgen_get_major_collector ()->is_object_live (obj);
+       }
+}
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {    \
+       if (*(ptr) && !sgen_ptr_in_nursery ((char*)*(ptr)) && !is_major_or_los_object_marked ((char*)*(ptr))) { \
+               if (!sgen_get_remset ()->find_address_with_cards (start, cards, (char*)(ptr))) { \
+                       GCVTable *__vt = SGEN_LOAD_VTABLE ((obj));      \
+                       SGEN_LOG (0, "major->major reference %p at offset %zd in object %p (%s.%s) not found in remsets.", *(ptr), (char*)(ptr) - (char*)(obj), (obj), sgen_client_vtable_get_namespace (__vt), sgen_client_vtable_get_name (__vt)); \
+                       binary_protocol_missing_remset ((obj), __vt, (int) ((char*)(ptr) - (char*)(obj)), *(ptr), (gpointer)LOAD_VTABLE(*(ptr)), object_is_pinned (*(ptr))); \
+                       missing_remsets = TRUE;                         \
+               }                                                                                                                               \
+       }                                                                                                                                       \
+       } while (0)
+
+static void
+check_mod_union_callback (char *start, size_t size, void *dummy)
+{
+       gboolean in_los = (gboolean) (size_t) dummy;
+       GCVTable *vt = (GCVTable*)LOAD_VTABLE (start);
+       mword desc = sgen_vtable_get_descriptor ((GCVTable*)vt);
+       guint8 *cards;
+       SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", start, vt, sgen_client_vtable_get_name (vt));
+
+       if (!is_major_or_los_object_marked (start))
+               return;
+
+       if (in_los)
+               cards = sgen_los_header_for_object (start)->cardtable_mod_union;
+       else
+               cards = sgen_get_major_collector ()->get_cardtable_mod_union_for_object (start);
+
+       SGEN_ASSERT (0, cards, "we must have mod union for marked major objects");
+
+#include "sgen-scan-object.h"
+}
+
+void
+sgen_check_mod_union_consistency (void)
+{
+       missing_remsets = FALSE;
+
+       major_collector.iterate_objects (ITERATE_OBJECTS_ALL, (IterateObjectCallbackFunc)check_mod_union_callback, (void*)FALSE);
+
+       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_mod_union_callback, (void*)TRUE);
+
+       if (!binary_protocol_is_enabled ())
+               g_assert (!missing_remsets);
+}
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {                                    \
+               if (*(ptr) && !LOAD_VTABLE (*(ptr)))                                            \
+                       g_error ("Could not load vtable for obj %p slot %zd (size %zd)", obj, (char*)ptr - (char*)obj, (size_t)safe_object_get_size ((GCObject*)obj)); \
+       } while (0)
+
+static void
+check_major_refs_callback (char *start, size_t size, void *dummy)
+{
+       mword desc = sgen_obj_get_descriptor (start);
+
+#include "sgen-scan-object.h"
+}
+
+void
+sgen_check_major_refs (void)
+{
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)check_major_refs_callback, NULL);
+       sgen_los_iterate_objects ((IterateObjectCallbackFunc)check_major_refs_callback, NULL);
+}
+
+/* Check that the reference is valid */
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {    \
+               if (*(ptr)) {   \
+                       g_assert (sgen_client_vtable_get_namespace (SGEN_LOAD_VTABLE_UNCHECKED (*(ptr))));      \
+               }       \
+       } while (0)
+
+/*
+ * check_object:
+ *
+ *   Perform consistency check on an object. Currently we only check that the
+ * reference fields are valid.
+ */
+void
+check_object (char *start)
+{
+       mword desc;
+
+       if (!start)
+               return;
+
+       desc = sgen_obj_get_descriptor (start);
+
+#include "sgen-scan-object.h"
+}
+
+
+static char **valid_nursery_objects;
+static int valid_nursery_object_count;
+static gboolean broken_heap;
+
+static void 
+setup_mono_sgen_scan_area_with_callback (char *object, size_t size, void *data)
+{
+       valid_nursery_objects [valid_nursery_object_count++] = object;
+}
+
+static void
+setup_valid_nursery_objects (void)
+{
+       if (!valid_nursery_objects)
+               valid_nursery_objects = sgen_alloc_os_memory (DEFAULT_NURSERY_SIZE, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging data");
+       valid_nursery_object_count = 0;
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, setup_mono_sgen_scan_area_with_callback, NULL, FALSE);
+}
+
+static gboolean
+find_object_in_nursery_dump (char *object)
+{
+       int first = 0, last = valid_nursery_object_count;
+       while (first < last) {
+               int middle = first + ((last - first) >> 1);
+               if (object == valid_nursery_objects [middle])
+                       return TRUE;
+
+               if (object < valid_nursery_objects [middle])
+                       last = middle;
+               else
+                       first = middle + 1;
+       }
+       g_assert (first == last);
+       return FALSE;
+}
+
+static void
+iterate_valid_nursery_objects (IterateObjectCallbackFunc callback, void *data)
+{
+       int i;
+       for (i = 0; i < valid_nursery_object_count; ++i) {
+               char *obj = valid_nursery_objects [i];
+               callback (obj, safe_object_get_size ((GCObject*)obj), data);
+       }
+}
+
+static char*
+describe_nursery_ptr (char *ptr, gboolean need_setup)
+{
+       int i;
+
+       if (need_setup)
+               setup_valid_nursery_objects ();
+
+       for (i = 0; i < valid_nursery_object_count - 1; ++i) {
+               if (valid_nursery_objects [i + 1] > ptr)
+                       break;
+       }
+
+       if (i >= valid_nursery_object_count || valid_nursery_objects [i] + safe_object_get_size ((GCObject *)valid_nursery_objects [i]) < ptr) {
+               SGEN_LOG (0, "nursery-ptr (unalloc'd-memory)");
+               return NULL;
+       } else {
+               char *obj = valid_nursery_objects [i];
+               if (obj == ptr)
+                       SGEN_LOG (0, "nursery-ptr %p", obj);
+               else
+                       SGEN_LOG (0, "nursery-ptr %p (interior-ptr offset %zd)", obj, ptr - obj);
+               return obj;
+       }
+}
+
+static gboolean
+is_valid_object_pointer (char *object)
+{
+       if (sgen_ptr_in_nursery (object))
+               return find_object_in_nursery_dump (object);
+       
+       if (sgen_los_is_valid_object (object))
+               return TRUE;
+
+       if (major_collector.is_valid_object (object))
+               return TRUE;
+       return FALSE;
+}
+
+static void
+bad_pointer_spew (char *obj, char **slot)
+{
+       char *ptr = *slot;
+       GCVTable *vtable = (GCVTable*)LOAD_VTABLE (obj);
+
+       SGEN_LOG (0, "Invalid object pointer %p at offset %zd in object %p (%s.%s):", ptr,
+                       (char*)slot - obj,
+                       obj, sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+       describe_pointer (ptr, FALSE);
+       broken_heap = TRUE;
+}
+
+static void
+missing_remset_spew (char *obj, char **slot)
+{
+       char *ptr = *slot;
+       GCVTable *vtable = (GCVTable*)LOAD_VTABLE (obj);
+
+       SGEN_LOG (0, "Oldspace->newspace reference %p at offset %zd in object %p (%s.%s) not found in remsets.",
+                       ptr, (char*)slot - obj, obj, 
+                       sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+
+       broken_heap = TRUE;
+}
+
+/*
+FIXME Flag missing remsets due to pinning as non fatal
+*/
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {    \
+               if (*(char**)ptr) {     \
+                       if (!is_valid_object_pointer (*(char**)ptr)) {  \
+                               bad_pointer_spew ((char*)obj, (char**)ptr);     \
+                       } else if (!sgen_ptr_in_nursery (obj) && sgen_ptr_in_nursery ((char*)*ptr)) {   \
+                               if (!sgen_get_remset ()->find_address ((char*)(ptr)) && !sgen_cement_lookup ((char*)*(ptr)) && (!allow_missing_pinned || !SGEN_OBJECT_IS_PINNED ((char*)*(ptr)))) \
+                               missing_remset_spew ((char*)obj, (char**)ptr);  \
+                       }       \
+        } \
+       } while (0)
+
+static void
+verify_object_pointers_callback (char *start, size_t size, void *data)
+{
+       gboolean allow_missing_pinned = (gboolean) (size_t) data;
+       mword desc = sgen_obj_get_descriptor (start);
+
+#include "sgen-scan-object.h"
+}
+
+/*
+FIXME:
+-This heap checker is racy regarding inlined write barriers and other JIT tricks that
+depend on OP_DUMMY_USE.
+*/
+void
+sgen_check_whole_heap (gboolean allow_missing_pinned)
+{
+       setup_valid_nursery_objects ();
+
+       broken_heap = FALSE;
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data, verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned, FALSE);
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned);
+       sgen_los_iterate_objects (verify_object_pointers_callback, (void*) (size_t) allow_missing_pinned);
+
+       g_assert (!broken_heap);
+}
+
+static gboolean
+ptr_in_heap (char *object)
+{
+       if (sgen_ptr_in_nursery (object))
+               return TRUE;
+       
+       if (sgen_los_is_valid_object (object))
+               return TRUE;
+
+       if (major_collector.is_valid_object (object))
+               return TRUE;
+       return FALSE;
+}
+
+/*
+ * sgen_check_objref:
+ *   Do consistency checks on the object reference OBJ. Assert on failure.
+ */
+void
+sgen_check_objref (char *obj)
+{
+       g_assert (ptr_in_heap (obj));
+}
+
+static void
+find_pinning_ref_from_thread (char *obj, size_t size)
+{
+#ifndef SGEN_WITHOUT_MONO
+       int j;
+       SgenThreadInfo *info;
+       char *endobj = obj + size;
+
+       FOREACH_THREAD (info) {
+               char **start = (char**)info->client_info.stack_start;
+               if (info->client_info.skip || info->client_info.gc_disabled)
+                       continue;
+               while (start < (char**)info->client_info.stack_end) {
+                       if (*start >= obj && *start < endobj)
+                               SGEN_LOG (0, "Object %p referenced in thread %p (id %p) at %p, stack: %p-%p", obj, info, (gpointer)mono_thread_info_get_tid (info), start, info->client_info.stack_start, info->client_info.stack_end);
+                       start++;
+               }
+
+               for (j = 0; j < ARCH_NUM_REGS; ++j) {
+#ifdef USE_MONO_CTX
+                       mword w = ((mword*)&info->client_info.ctx) [j];
+#else
+                       mword w = (mword)&info->client_info.regs [j];
+#endif
+
+                       if (w >= (mword)obj && w < (mword)obj + size)
+                               SGEN_LOG (0, "Object %p referenced in saved reg %d of thread %p (id %p)", obj, j, info, (gpointer)mono_thread_info_get_tid (info));
+               } END_FOREACH_THREAD
+       }
+#endif
+}
+
+/*
+ * Debugging function: find in the conservative roots where @obj is being pinned.
+ */
+static G_GNUC_UNUSED void
+find_pinning_reference (char *obj, size_t size)
+{
+       char **start;
+       RootRecord *root;
+       char *endobj = obj + size;
+
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_NORMAL], start, root) {
+               /* if desc is non-null it has precise info */
+               if (!root->root_desc) {
+                       while (start < (char**)root->end_root) {
+                               if (*start >= obj && *start < endobj) {
+                                       SGEN_LOG (0, "Object %p referenced in pinned roots %p-%p\n", obj, start, root->end_root);
+                               }
+                               start++;
+                       }
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       find_pinning_ref_from_thread (obj, size);
+}
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {                                    \
+               char* __target = *(char**)ptr;                          \
+               if (__target) {                                         \
+                       if (sgen_ptr_in_nursery (__target)) {           \
+                               g_assert (!SGEN_OBJECT_IS_FORWARDED (__target)); \
+                       } else {                                        \
+                               mword __size = sgen_safe_object_get_size ((GCObject*)__target); \
+                               if (__size <= SGEN_MAX_SMALL_OBJ_SIZE)  \
+                                       g_assert (major_collector.is_object_live (__target)); \
+                               else                                    \
+                                       g_assert (sgen_los_object_is_pinned (__target)); \
+                       }                                               \
+               }                                                       \
+       } while (0)
+
+static void
+check_marked_callback (char *start, size_t size, void *dummy)
+{
+       gboolean flag = (gboolean) (size_t) dummy;
+       mword desc;
+
+       if (sgen_ptr_in_nursery (start)) {
+               if (flag)
+                       SGEN_ASSERT (0, SGEN_OBJECT_IS_PINNED (start), "All objects remaining in the nursery must be pinned");
+       } else if (flag) {
+               if (!sgen_los_object_is_pinned (start))
+                       return;
+       } else {
+               if (!major_collector.is_object_live (start))
+                       return;
+       }
+
+       desc = sgen_obj_get_descriptor_safe (start);
+
+#include "sgen-scan-object.h"
+}
+
+void
+sgen_check_heap_marked (gboolean nursery_must_be_pinned)
+{
+       setup_valid_nursery_objects ();
+
+       iterate_valid_nursery_objects (check_marked_callback, (void*)(size_t)nursery_must_be_pinned);
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, check_marked_callback, (void*)FALSE);
+       sgen_los_iterate_objects (check_marked_callback, (void*)TRUE);
+}
+
+static void
+check_nursery_objects_pinned_callback (char *obj, size_t size, void *data /* ScanCopyContext *ctx */)
+{
+       gboolean pinned = (gboolean) (size_t) data;
+
+       g_assert (!SGEN_OBJECT_IS_FORWARDED (obj));
+       if (pinned)
+               g_assert (SGEN_OBJECT_IS_PINNED (obj));
+       else
+               g_assert (!SGEN_OBJECT_IS_PINNED (obj));
+}
+
+void
+sgen_check_nursery_objects_pinned (gboolean pinned)
+{
+       sgen_clear_nursery_fragments ();
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
+                       (IterateObjectCallbackFunc)check_nursery_objects_pinned_callback, (void*) (size_t) pinned /* (void*)&ctx */, FALSE);
+}
+
+static void
+verify_scan_starts (char *start, char *end)
+{
+       size_t i;
+
+       for (i = 0; i < nursery_section->num_scan_start; ++i) {
+               char *addr = nursery_section->scan_starts [i];
+               if (addr > start && addr < end)
+                       SGEN_LOG (0, "NFC-BAD SCAN START [%zu] %p for obj [%p %p]", i, addr, start, end);
+       }
+}
+
+void
+sgen_debug_verify_nursery (gboolean do_dump_nursery_content)
+{
+       char *start, *end, *cur, *hole_start;
+
+       if (nursery_canaries_enabled ())
+               SGEN_LOG (0, "Checking nursery canaries...");
+
+       /*This cleans up unused fragments */
+       sgen_nursery_allocator_prepare_for_pinning ();
+
+       hole_start = start = cur = sgen_get_nursery_start ();
+       end = sgen_get_nursery_end ();
+
+       while (cur < end) {
+               size_t ss, size;
+               gboolean is_array_fill;
+
+               if (!*(void**)cur) {
+                       cur += sizeof (void*);
+                       continue;
+               }
+
+               if (object_is_forwarded (cur))
+                       SGEN_LOG (0, "FORWARDED OBJ %p", cur);
+               else if (object_is_pinned (cur))
+                       SGEN_LOG (0, "PINNED OBJ %p", cur);
+
+               ss = safe_object_get_size ((GCObject*)cur);
+               size = SGEN_ALIGN_UP (ss);
+               verify_scan_starts (cur, cur + size);
+               is_array_fill = sgen_client_object_is_array_fill ((GCObject*)cur);
+               if (do_dump_nursery_content) {
+                       GCVTable *vtable = SGEN_LOAD_VTABLE (cur);
+                       if (cur > hole_start)
+                               SGEN_LOG (0, "HOLE [%p %p %d]", hole_start, cur, (int)(cur - hole_start));
+                       SGEN_LOG (0, "OBJ  [%p %p %d %d %s.%s %d]", cur, cur + size, (int)size, (int)ss,
+                                       sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable),
+                                       is_array_fill);
+               }
+               if (nursery_canaries_enabled () && !is_array_fill) {
+                       CHECK_CANARY_FOR_OBJECT (cur);
+                       CANARIFY_SIZE (size);
+               }
+               cur += size;
+               hole_start = cur;
+       }
+}
+
+/*
+ * Checks that no objects in the nursery are fowarded or pinned.  This
+ * is a precondition to restarting the mutator while doing a
+ * concurrent collection.  Note that we don't clear fragments because
+ * we depend on that having happened earlier.
+ */
+void
+sgen_debug_check_nursery_is_clean (void)
+{
+       char *end, *cur;
+
+       cur = sgen_get_nursery_start ();
+       end = sgen_get_nursery_end ();
+
+       while (cur < end) {
+               size_t size;
+
+               if (!*(void**)cur) {
+                       cur += sizeof (void*);
+                       continue;
+               }
+
+               g_assert (!object_is_forwarded (cur));
+               g_assert (!object_is_pinned (cur));
+
+               size = SGEN_ALIGN_UP (safe_object_get_size ((GCObject*)cur));
+               verify_scan_starts (cur, cur + size);
+
+               cur += size;
+       }
+}
+
+static gboolean scan_object_for_specific_ref_precise = TRUE;
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj) do {                                       \
+               if ((GCObject*)*(ptr) == key) {                         \
+                       GCVTable *vtable = SGEN_LOAD_VTABLE (*(ptr));   \
+                       g_print ("found ref to %p in object %p (%s.%s) at offset %zd\n", \
+                                       key, (obj), sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable), ((char*)(ptr) - (char*)(obj))); \
+               }                                                       \
+       } while (0)
+
+static void
+scan_object_for_specific_ref (char *start, GCObject *key)
+{
+       char *forwarded;
+
+       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (start)))
+               start = forwarded;
+
+       if (scan_object_for_specific_ref_precise) {
+               mword desc = sgen_obj_get_descriptor_safe (start);
+               #include "sgen-scan-object.h"
+       } else {
+               mword *words = (mword*)start;
+               size_t size = safe_object_get_size ((GCObject*)start);
+               int i;
+               for (i = 0; i < size / sizeof (mword); ++i) {
+                       if (words [i] == (mword)key) {
+                               GCVTable *vtable = SGEN_LOAD_VTABLE (start);
+                               g_print ("found possible ref to %p in object %p (%s.%s) at offset %zd\n",
+                                               key, start, sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable), i * sizeof (mword));
+                       }
+               }
+       }
+}
+
+static void
+scan_object_for_specific_ref_callback (char *obj, size_t size, GCObject *key)
+{
+       scan_object_for_specific_ref (obj, key);
+}
+
+static void
+check_root_obj_specific_ref (RootRecord *root, GCObject *key, GCObject *obj)
+{
+       if (key != obj)
+               return;
+       g_print ("found ref to %p in root record %p\n", key, root);
+}
+
+static GCObject *check_key = NULL;
+static RootRecord *check_root = NULL;
+
+static void
+check_root_obj_specific_ref_from_marker (void **obj, void *gc_data)
+{
+       check_root_obj_specific_ref (check_root, check_key, *obj);
+}
+
+static void
+scan_roots_for_specific_ref (GCObject *key, int root_type)
+{
+       void **start_root;
+       RootRecord *root;
+       check_key = key;
+
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+               mword desc = root->root_desc;
+
+               check_root = root;
+
+               switch (desc & ROOT_DESC_TYPE_MASK) {
+               case ROOT_DESC_BITMAP:
+                       desc >>= ROOT_DESC_TYPE_SHIFT;
+                       while (desc) {
+                               if (desc & 1)
+                                       check_root_obj_specific_ref (root, key, *start_root);
+                               desc >>= 1;
+                               start_root++;
+                       }
+                       return;
+               case ROOT_DESC_COMPLEX: {
+                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+                       int bwords = (int) ((*bitmap_data) - 1);
+                       void **start_run = start_root;
+                       bitmap_data++;
+                       while (bwords-- > 0) {
+                               gsize bmap = *bitmap_data++;
+                               void **objptr = start_run;
+                               while (bmap) {
+                                       if (bmap & 1)
+                                               check_root_obj_specific_ref (root, key, *objptr);
+                                       bmap >>= 1;
+                                       ++objptr;
+                               }
+                               start_run += GC_BITS_PER_WORD;
+                       }
+                       break;
+               }
+               case ROOT_DESC_USER: {
+                       SgenUserRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
+                       marker (start_root, check_root_obj_specific_ref_from_marker, NULL);
+                       break;
+               }
+               case ROOT_DESC_RUN_LEN:
+                       g_assert_not_reached ();
+               default:
+                       g_assert_not_reached ();
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       check_key = NULL;
+       check_root = NULL;
+}
+
+void
+mono_gc_scan_for_specific_ref (GCObject *key, gboolean precise)
+{
+       void **ptr;
+       RootRecord *root;
+
+       scan_object_for_specific_ref_precise = precise;
+
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
+                       (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key, TRUE);
+
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
+
+       sgen_los_iterate_objects ((IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
+
+       scan_roots_for_specific_ref (key, ROOT_TYPE_NORMAL);
+       scan_roots_for_specific_ref (key, ROOT_TYPE_WBARRIER);
+
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], ptr, root) {
+               while (ptr < (void**)root->end_root) {
+                       check_root_obj_specific_ref (root, *ptr, key);
+                       ++ptr;
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       if (sgen_is_world_stopped ())
+               find_pinning_ref_from_thread ((char*)key, sizeof (GCObject));
+}
+
+#ifndef SGEN_WITHOUT_MONO
+
+static MonoDomain *check_domain = NULL;
+
+static void
+check_obj_not_in_domain (MonoObject **o)
+{
+       g_assert (((*o))->vtable->domain != check_domain);
+}
+
+
+static void
+check_obj_not_in_domain_callback (void **o, void *gc_data)
+{
+       g_assert (((MonoObject*)(*o))->vtable->domain != check_domain);
+}
+
+void
+sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
+{
+       void **start_root;
+       RootRecord *root;
+       check_domain = domain;
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+               mword desc = root->root_desc;
+
+               /* The MonoDomain struct is allowed to hold
+                  references to objects in its own domain. */
+               if (start_root == (void**)domain)
+                       continue;
+
+               switch (desc & ROOT_DESC_TYPE_MASK) {
+               case ROOT_DESC_BITMAP:
+                       desc >>= ROOT_DESC_TYPE_SHIFT;
+                       while (desc) {
+                               if ((desc & 1) && *start_root)
+                                       check_obj_not_in_domain (*start_root);
+                               desc >>= 1;
+                               start_root++;
+                       }
+                       break;
+               case ROOT_DESC_COMPLEX: {
+                       gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+                       int bwords = (int)((*bitmap_data) - 1);
+                       void **start_run = start_root;
+                       bitmap_data++;
+                       while (bwords-- > 0) {
+                               gsize bmap = *bitmap_data++;
+                               void **objptr = start_run;
+                               while (bmap) {
+                                       if ((bmap & 1) && *objptr)
+                                               check_obj_not_in_domain (*objptr);
+                                       bmap >>= 1;
+                                       ++objptr;
+                               }
+                               start_run += GC_BITS_PER_WORD;
+                       }
+                       break;
+               }
+               case ROOT_DESC_USER: {
+                       SgenUserRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
+                       marker (start_root, check_obj_not_in_domain_callback, NULL);
+                       break;
+               }
+               case ROOT_DESC_RUN_LEN:
+                       g_assert_not_reached ();
+               default:
+                       g_assert_not_reached ();
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       check_domain = NULL;
+}
+
+static gboolean
+is_xdomain_ref_allowed (gpointer *ptr, char *obj, MonoDomain *domain)
+{
+       MonoObject *o = (MonoObject*)(obj);
+       MonoObject *ref = (MonoObject*)*(ptr);
+       size_t offset = (char*)(ptr) - (char*)o;
+
+       if (o->vtable->klass == mono_defaults.thread_class && offset == G_STRUCT_OFFSET (MonoThread, internal_thread))
+               return TRUE;
+       if (o->vtable->klass == mono_defaults.internal_thread_class && offset == G_STRUCT_OFFSET (MonoInternalThread, current_appcontext))
+               return TRUE;
+
+#ifndef DISABLE_REMOTING
+       if (mono_defaults.real_proxy_class->supertypes && mono_class_has_parent_fast (o->vtable->klass, mono_defaults.real_proxy_class) &&
+                       offset == G_STRUCT_OFFSET (MonoRealProxy, unwrapped_server))
+               return TRUE;
+#endif
+       /* Thread.cached_culture_info */
+       if (!strcmp (ref->vtable->klass->name_space, "System.Globalization") &&
+                       !strcmp (ref->vtable->klass->name, "CultureInfo") &&
+                       !strcmp(o->vtable->klass->name_space, "System") &&
+                       !strcmp(o->vtable->klass->name, "Object[]"))
+               return TRUE;
+       /*
+        *  at System.IO.MemoryStream.InternalConstructor (byte[],int,int,bool,bool) [0x0004d] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.IO/MemoryStream.cs:121
+        * at System.IO.MemoryStream..ctor (byte[]) [0x00017] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.IO/MemoryStream.cs:81
+        * at (wrapper remoting-invoke-with-check) System.IO.MemoryStream..ctor (byte[]) <IL 0x00020, 0xffffffff>
+        * at System.Runtime.Remoting.Messaging.CADMethodCallMessage.GetArguments () [0x0000d] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.Runtime.Remoting.Messaging/CADMessages.cs:327
+        * at System.Runtime.Remoting.Messaging.MethodCall..ctor (System.Runtime.Remoting.Messaging.CADMethodCallMessage) [0x00017] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.Runtime.Remoting.Messaging/MethodCall.cs:87
+        * at System.AppDomain.ProcessMessageInDomain (byte[],System.Runtime.Remoting.Messaging.CADMethodCallMessage,byte[]&,System.Runtime.Remoting.Messaging.CADMethodReturnMessage&) [0x00018] in /home/schani/Work/novell/trunk/mcs/class/corlib/System/AppDomain.cs:1213
+        * at (wrapper remoting-invoke-with-check) System.AppDomain.ProcessMessageInDomain (byte[],System.Runtime.Remoting.Messaging.CADMethodCallMessage,byte[]&,System.Runtime.Remoting.Messaging.CADMethodReturnMessage&) <IL 0x0003d, 0xffffffff>
+        * at System.Runtime.Remoting.Channels.CrossAppDomainSink.ProcessMessageInDomain (byte[],System.Runtime.Remoting.Messaging.CADMethodCallMessage) [0x00008] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.Runtime.Remoting.Channels/CrossAppDomainChannel.cs:198
+        * at (wrapper runtime-invoke) object.runtime_invoke_CrossAppDomainSink/ProcessMessageRes_object_object (object,intptr,intptr,intptr) <IL 0x0004c, 0xffffffff>
+        */
+       if (!strcmp (ref->vtable->klass->name_space, "System") &&
+                       !strcmp (ref->vtable->klass->name, "Byte[]") &&
+                       !strcmp (o->vtable->klass->name_space, "System.IO") &&
+                       !strcmp (o->vtable->klass->name, "MemoryStream"))
+               return TRUE;
+       return FALSE;
+}
+
+static void
+check_reference_for_xdomain (gpointer *ptr, char *obj, MonoDomain *domain)
+{
+       MonoObject *o = (MonoObject*)(obj);
+       MonoObject *ref = (MonoObject*)*(ptr);
+       size_t offset = (char*)(ptr) - (char*)o;
+       MonoClass *class;
+       MonoClassField *field;
+       char *str;
+
+       if (!ref || ref->vtable->domain == domain)
+               return;
+       if (is_xdomain_ref_allowed (ptr, obj, domain))
+               return;
+
+       field = NULL;
+       for (class = o->vtable->klass; class; class = class->parent) {
+               int i;
+
+               for (i = 0; i < class->field.count; ++i) {
+                       if (class->fields[i].offset == offset) {
+                               field = &class->fields[i];
+                               break;
+                       }
+               }
+               if (field)
+                       break;
+       }
+
+       if (ref->vtable->klass == mono_defaults.string_class)
+               str = mono_string_to_utf8 ((MonoString*)ref);
+       else
+               str = NULL;
+       g_print ("xdomain reference in %p (%s.%s) at offset %d (%s) to %p (%s.%s) (%s)  -  pointed to by:\n",
+                       o, o->vtable->klass->name_space, o->vtable->klass->name,
+                       offset, field ? field->name : "",
+                       ref, ref->vtable->klass->name_space, ref->vtable->klass->name, str ? str : "");
+       mono_gc_scan_for_specific_ref (o, TRUE);
+       if (str)
+               g_free (str);
+}
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    check_reference_for_xdomain ((ptr), (obj), domain)
+
+static void
+scan_object_for_xdomain_refs (char *start, mword size, void *data)
+{
+       MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (start);
+       MonoDomain *domain = vt->domain;
+       mword desc = sgen_vtable_get_descriptor ((GCVTable*)vt);
+
+       #include "sgen-scan-object.h"
+}
+
+void
+sgen_check_for_xdomain_refs (void)
+{
+       LOSObject *bigobj;
+
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
+                       (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL, FALSE);
+
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
+
+       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
+               scan_object_for_xdomain_refs (bigobj->data, sgen_los_object_size (bigobj), NULL);
+}
+
+#endif
+
+/* If not null, dump the heap after each collection into this file */
+static FILE *heap_dump_file = NULL;
+
+void
+sgen_dump_occupied (char *start, char *end, char *section_start)
+{
+       fprintf (heap_dump_file, "<occupied offset=\"%zd\" size=\"%zd\"/>\n", start - section_start, end - start);
+}
+
+void
+sgen_dump_section (GCMemSection *section, const char *type)
+{
+       char *start = section->data;
+       char *end = section->data + section->size;
+       char *occ_start = NULL;
+
+       fprintf (heap_dump_file, "<section type=\"%s\" size=\"%lu\">\n", type, (unsigned long)section->size);
+
+       while (start < end) {
+               guint size;
+               //GCVTable *vt;
+               //MonoClass *class;
+
+               if (!*(void**)start) {
+                       if (occ_start) {
+                               sgen_dump_occupied (occ_start, start, section->data);
+                               occ_start = NULL;
+                       }
+                       start += sizeof (void*); /* should be ALLOC_ALIGN, really */
+                       continue;
+               }
+               g_assert (start < section->next_data);
+
+               if (!occ_start)
+                       occ_start = start;
+
+               //vt = (GCVTable*)SGEN_LOAD_VTABLE (start);
+               //class = vt->klass;
+
+               size = SGEN_ALIGN_UP (safe_object_get_size ((GCObject*) start));
+
+               /*
+               fprintf (heap_dump_file, "<object offset=\"%d\" class=\"%s.%s\" size=\"%d\"/>\n",
+                               start - section->data,
+                               vt->klass->name_space, vt->klass->name,
+                               size);
+               */
+
+               start += size;
+       }
+       if (occ_start)
+               sgen_dump_occupied (occ_start, start, section->data);
+
+       fprintf (heap_dump_file, "</section>\n");
+}
+
+static void
+dump_object (GCObject *obj, gboolean dump_location)
+{
+#ifndef SGEN_WITHOUT_MONO
+       static char class_name [1024];
+
+       MonoClass *class = mono_object_class (obj);
+       int i, j;
+
+       /*
+        * Python's XML parser is too stupid to parse angle brackets
+        * in strings, so we just ignore them;
+        */
+       i = j = 0;
+       while (class->name [i] && j < sizeof (class_name) - 1) {
+               if (!strchr ("<>\"", class->name [i]))
+                       class_name [j++] = class->name [i];
+               ++i;
+       }
+       g_assert (j < sizeof (class_name));
+       class_name [j] = 0;
+
+       fprintf (heap_dump_file, "<object class=\"%s.%s\" size=\"%zd\"",
+                       class->name_space, class_name,
+                       safe_object_get_size (obj));
+       if (dump_location) {
+               const char *location;
+               if (sgen_ptr_in_nursery (obj))
+                       location = "nursery";
+               else if (safe_object_get_size (obj) <= SGEN_MAX_SMALL_OBJ_SIZE)
+                       location = "major";
+               else
+                       location = "LOS";
+               fprintf (heap_dump_file, " location=\"%s\"", location);
+       }
+       fprintf (heap_dump_file, "/>\n");
+#endif
+}
+
+void
+sgen_debug_enable_heap_dump (const char *filename)
+{
+       heap_dump_file = fopen (filename, "w");
+       if (heap_dump_file) {
+               fprintf (heap_dump_file, "<sgen-dump>\n");
+               sgen_pin_stats_enable ();
+       }
+}
+
+void
+sgen_debug_dump_heap (const char *type, int num, const char *reason)
+{
+       SgenPointerQueue *pinned_objects;
+       LOSObject *bigobj;
+       int i;
+
+       if (!heap_dump_file)
+               return;
+
+       fprintf (heap_dump_file, "<collection type=\"%s\" num=\"%d\"", type, num);
+       if (reason)
+               fprintf (heap_dump_file, " reason=\"%s\"", reason);
+       fprintf (heap_dump_file, ">\n");
+#ifndef SGEN_WITHOUT_MONO
+       fprintf (heap_dump_file, "<other-mem-usage type=\"mempools\" size=\"%ld\"/>\n", mono_mempool_get_bytes_allocated ());
+#endif
+       sgen_dump_internal_mem_usage (heap_dump_file);
+       fprintf (heap_dump_file, "<pinned type=\"stack\" bytes=\"%zu\"/>\n", sgen_pin_stats_get_pinned_byte_count (PIN_TYPE_STACK));
+       /* fprintf (heap_dump_file, "<pinned type=\"static-data\" bytes=\"%d\"/>\n", pinned_byte_counts [PIN_TYPE_STATIC_DATA]); */
+       fprintf (heap_dump_file, "<pinned type=\"other\" bytes=\"%zu\"/>\n", sgen_pin_stats_get_pinned_byte_count (PIN_TYPE_OTHER));
+
+       fprintf (heap_dump_file, "<pinned-objects>\n");
+       pinned_objects = sgen_pin_stats_get_object_list ();
+       for (i = 0; i < pinned_objects->next_slot; ++i)
+               dump_object (pinned_objects->data [i], TRUE);
+       fprintf (heap_dump_file, "</pinned-objects>\n");
+
+       sgen_dump_section (nursery_section, "nursery");
+
+       major_collector.dump_heap (heap_dump_file);
+
+       fprintf (heap_dump_file, "<los>\n");
+       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
+               dump_object ((GCObject*)bigobj->data, FALSE);
+       fprintf (heap_dump_file, "</los>\n");
+
+       fprintf (heap_dump_file, "</collection>\n");
+}
+
+static char *found_obj;
+
+static void
+find_object_for_ptr_callback (char *obj, size_t size, void *user_data)
+{
+       char *ptr = user_data;
+
+       if (ptr >= obj && ptr < obj + size) {
+               g_assert (!found_obj);
+               found_obj = obj;
+       }
+}
+
+/* for use in the debugger */
+char*
+sgen_find_object_for_ptr (char *ptr)
+{
+       if (ptr >= nursery_section->data && ptr < nursery_section->end_data) {
+               found_obj = NULL;
+               sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
+                               find_object_for_ptr_callback, ptr, TRUE);
+               if (found_obj)
+                       return found_obj;
+       }
+
+       found_obj = NULL;
+       sgen_los_iterate_objects (find_object_for_ptr_callback, ptr);
+       if (found_obj)
+               return found_obj;
+
+       /*
+        * Very inefficient, but this is debugging code, supposed to
+        * be called from gdb, so we don't care.
+        */
+       found_obj = NULL;
+       major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_ALL, find_object_for_ptr_callback, ptr);
+       return found_obj;
+}
+
+#endif /*HAVE_SGEN_GC*/
diff --git a/mono/sgen/sgen-descriptor.c b/mono/sgen/sgen-descriptor.c
new file mode 100644 (file)
index 0000000..4747c7c
--- /dev/null
@@ -0,0 +1,377 @@
+/*
+ * sgen-descriptor.c: GC descriptors describe object layout.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#ifdef HAVE_SEMAPHORE_H
+#include <semaphore.h>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#ifdef __MACH__
+#undef _XOPEN_SOURCE
+#endif
+#ifdef __MACH__
+#define _XOPEN_SOURCE
+#endif
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/gc-internal-agnostic.h"
+
+#define MAX_USER_DESCRIPTORS 16
+
+#define MAKE_ROOT_DESC(type,val) ((type) | ((val) << ROOT_DESC_TYPE_SHIFT))
+#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
+
+
+static gsize* complex_descriptors = NULL;
+static int complex_descriptors_size = 0;
+static int complex_descriptors_next = 0;
+static SgenUserRootMarkFunc user_descriptors [MAX_USER_DESCRIPTORS];
+static int user_descriptors_next = 0;
+static void *all_ref_root_descrs [32];
+
+#ifdef HEAVY_STATISTICS
+static guint64 stat_scanned_count_per_descriptor [DESC_TYPE_MAX];
+static guint64 stat_copied_count_per_descriptor [DESC_TYPE_MAX];
+#endif
+
+static int
+alloc_complex_descriptor (gsize *bitmap, int numbits)
+{
+       int nwords, res, i;
+
+       numbits = ALIGN_TO (numbits, GC_BITS_PER_WORD);
+       nwords = numbits / GC_BITS_PER_WORD + 1;
+
+       sgen_gc_lock ();
+       res = complex_descriptors_next;
+       /* linear search, so we don't have duplicates with domain load/unload
+        * this should not be performance critical or we'd have bigger issues
+        * (the number and size of complex descriptors should be small).
+        */
+       for (i = 0; i < complex_descriptors_next; ) {
+               if (complex_descriptors [i] == nwords) {
+                       int j, found = TRUE;
+                       for (j = 0; j < nwords - 1; ++j) {
+                               if (complex_descriptors [i + 1 + j] != bitmap [j]) {
+                                       found = FALSE;
+                                       break;
+                               }
+                       }
+                       if (found) {
+                               sgen_gc_unlock ();
+                               return i;
+                       }
+               }
+               i += (int)complex_descriptors [i];
+       }
+       if (complex_descriptors_next + nwords > complex_descriptors_size) {
+               int new_size = complex_descriptors_size * 2 + nwords;
+               complex_descriptors = g_realloc (complex_descriptors, new_size * sizeof (gsize));
+               complex_descriptors_size = new_size;
+       }
+       SGEN_LOG (6, "Complex descriptor %d, size: %d (total desc memory: %d)", res, nwords, complex_descriptors_size);
+       complex_descriptors_next += nwords;
+       complex_descriptors [res] = nwords;
+       for (i = 0; i < nwords - 1; ++i) {
+               complex_descriptors [res + 1 + i] = bitmap [i];
+               SGEN_LOG (6, "\tvalue: %p", (void*)complex_descriptors [res + 1 + i]);
+       }
+       sgen_gc_unlock ();
+       return res;
+}
+
+gsize*
+sgen_get_complex_descriptor (mword desc)
+{
+       return complex_descriptors + (desc >> LOW_TYPE_BITS);
+}
+
+/*
+ * Descriptor builders.
+ */
+void*
+mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size)
+{
+       int first_set = -1, num_set = 0, last_set = -1, i;
+       mword desc = 0;
+       size_t stored_size = obj_size;
+
+       stored_size += SGEN_ALLOC_ALIGN - 1;
+       stored_size &= ~(SGEN_ALLOC_ALIGN - 1);
+
+       for (i = 0; i < numbits; ++i) {
+               if (bitmap [i / GC_BITS_PER_WORD] & ((gsize)1 << (i % GC_BITS_PER_WORD))) {
+                       if (first_set < 0)
+                               first_set = i;
+                       last_set = i;
+                       num_set++;
+               }
+       }
+
+       if (first_set < 0) {
+               SGEN_LOG (6, "Ptrfree descriptor %p, size: %zd", (void*)desc, stored_size);
+               if (stored_size <= MAX_RUNLEN_OBJECT_SIZE && stored_size <= SGEN_MAX_SMALL_OBJ_SIZE)
+                       return (void*)(DESC_TYPE_SMALL_PTRFREE | stored_size);
+               return (void*)DESC_TYPE_COMPLEX_PTRFREE;
+       }
+
+       g_assert (!(stored_size & 0x7));
+
+       SGEN_ASSERT (5, stored_size == SGEN_ALIGN_UP (stored_size), "Size is not aligned");
+
+       /* we know the 2-word header is ptr-free */
+       if (last_set < BITMAP_NUM_BITS + OBJECT_HEADER_WORDS && stored_size <= SGEN_MAX_SMALL_OBJ_SIZE) {
+               desc = DESC_TYPE_BITMAP | ((*bitmap >> OBJECT_HEADER_WORDS) << LOW_TYPE_BITS);
+               SGEN_LOG (6, "Largebitmap descriptor %p, size: %zd, last set: %d", (void*)desc, stored_size, last_set);
+               return (void*) desc;
+       }
+
+       if (stored_size <= MAX_RUNLEN_OBJECT_SIZE && stored_size <= SGEN_MAX_SMALL_OBJ_SIZE) {
+               /* check run-length encoding first: one byte offset, one byte number of pointers
+                * on 64 bit archs, we can have 3 runs, just one on 32.
+                * It may be better to use nibbles.
+                */
+               if (first_set < 256 && num_set < 256 && (first_set + num_set == last_set + 1)) {
+                       desc = DESC_TYPE_RUN_LENGTH | stored_size | (first_set << 16) | (num_set << 24);
+                       SGEN_LOG (6, "Runlen descriptor %p, size: %zd, first set: %d, num set: %d", (void*)desc, stored_size, first_set, num_set);
+                       return (void*) desc;
+               }
+       }
+
+       /* it's a complex object ... */
+       desc = DESC_TYPE_COMPLEX | (alloc_complex_descriptor (bitmap, last_set + 1) << LOW_TYPE_BITS);
+       return (void*) desc;
+}
+
+/* If the array holds references, numbits == 1 and the first bit is set in elem_bitmap */
+void*
+mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_t elem_size)
+{
+       int first_set = -1, num_set = 0, last_set = -1, i;
+       mword desc = DESC_TYPE_VECTOR | (vector ? VECTOR_KIND_SZARRAY : VECTOR_KIND_ARRAY);
+       for (i = 0; i < numbits; ++i) {
+               if (elem_bitmap [i / GC_BITS_PER_WORD] & ((gsize)1 << (i % GC_BITS_PER_WORD))) {
+                       if (first_set < 0)
+                               first_set = i;
+                       last_set = i;
+                       num_set++;
+               }
+       }
+
+       if (first_set < 0) {
+               if (elem_size <= MAX_ELEMENT_SIZE)
+                       return (void*)(desc | VECTOR_SUBTYPE_PTRFREE | (elem_size << VECTOR_ELSIZE_SHIFT));
+               return (void*)DESC_TYPE_COMPLEX_PTRFREE;
+       }
+
+       if (elem_size <= MAX_ELEMENT_SIZE) {
+               desc |= elem_size << VECTOR_ELSIZE_SHIFT;
+               if (!num_set) {
+                       return (void*)(desc | VECTOR_SUBTYPE_PTRFREE);
+               }
+               /* Note: we also handle structs with just ref fields */
+               if (num_set * sizeof (gpointer) == elem_size) {
+                       return (void*)(desc | VECTOR_SUBTYPE_REFS | ((gssize)(-1) << 16));
+               }
+               /* FIXME: try run-len first */
+               /* Note: we can't skip the object header here, because it's not present */
+               if (last_set < VECTOR_BITMAP_SIZE) {
+                       return (void*)(desc | VECTOR_SUBTYPE_BITMAP | (*elem_bitmap << 16));
+               }
+       }
+       /* it's am array of complex structs ... */
+       desc = DESC_TYPE_COMPLEX_ARR;
+       desc |= alloc_complex_descriptor (elem_bitmap, last_set + 1) << LOW_TYPE_BITS;
+       return (void*) desc;
+}
+
+/* Return the bitmap encoded by a descriptor */
+gsize*
+mono_gc_get_bitmap_for_descr (void *descr, int *numbits)
+{
+       mword d = (mword)descr;
+       gsize *bitmap;
+
+       switch (d & DESC_TYPE_MASK) {
+       case DESC_TYPE_RUN_LENGTH: {            
+               int first_set = (d >> 16) & 0xff;
+               int num_set = (d >> 24) & 0xff;
+               int i;
+
+               bitmap = g_new0 (gsize, (first_set + num_set + 7) / 8);
+
+               for (i = first_set; i < first_set + num_set; ++i)
+                       bitmap [i / GC_BITS_PER_WORD] |= ((gsize)1 << (i % GC_BITS_PER_WORD));
+
+               *numbits = first_set + num_set;
+
+               return bitmap;
+       }
+
+       case DESC_TYPE_BITMAP: {
+               gsize bmap = (d >> LOW_TYPE_BITS) << OBJECT_HEADER_WORDS;
+
+               bitmap = g_new0 (gsize, 1);
+               bitmap [0] = bmap;
+               *numbits = 0;
+               while (bmap) {
+                       (*numbits) ++;
+                       bmap >>= 1;
+               }
+               return bitmap;
+       }
+
+       case DESC_TYPE_COMPLEX: {
+               gsize *bitmap_data = sgen_get_complex_descriptor (d);
+               int bwords = (int)(*bitmap_data) - 1;//Max scalar object size is 1Mb, which means up to 32k descriptor words
+               int i;
+
+               bitmap = g_new0 (gsize, bwords);
+               *numbits = bwords * GC_BITS_PER_WORD;
+
+               for (i = 0; i < bwords; ++i) {
+                       bitmap [i] = bitmap_data [i + 1];
+               }
+
+               return bitmap;
+       }
+
+       default:
+               g_assert_not_reached ();
+       }
+}
+
+void*
+mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
+{
+       if (numbits == 0) {
+               return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, 0);
+       } else if (numbits < ((sizeof (*bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) {
+               return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, bitmap [0]);
+       } else {
+               mword complex = alloc_complex_descriptor (bitmap, numbits);
+               return (void*)MAKE_ROOT_DESC (ROOT_DESC_COMPLEX, complex);
+       }
+}
+
+void*
+mono_gc_make_root_descr_all_refs (int numbits)
+{
+       gsize *gc_bitmap;
+       void *descr;
+       int num_bytes = numbits / 8;
+
+       if (numbits < 32 && all_ref_root_descrs [numbits])
+               return all_ref_root_descrs [numbits];
+
+       gc_bitmap = g_malloc0 (ALIGN_TO (ALIGN_TO (numbits, 8) + 1, sizeof (gsize)));
+       memset (gc_bitmap, 0xff, num_bytes);
+       if (numbits < ((sizeof (*gc_bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) 
+               gc_bitmap[0] = GUINT64_TO_LE(gc_bitmap[0]);
+       else if (numbits && num_bytes % (sizeof (*gc_bitmap)))
+               gc_bitmap[num_bytes / 8] = GUINT64_TO_LE(gc_bitmap [num_bytes / 8]);
+       if (numbits % 8)
+               gc_bitmap [numbits / 8] = (1 << (numbits % 8)) - 1;
+       descr = mono_gc_make_descr_from_bitmap (gc_bitmap, numbits);
+       g_free (gc_bitmap);
+
+       if (numbits < 32)
+               all_ref_root_descrs [numbits] = descr;
+
+       return descr;
+}
+
+void*
+sgen_make_user_root_descriptor (SgenUserRootMarkFunc marker)
+{
+       void *descr;
+
+       g_assert (user_descriptors_next < MAX_USER_DESCRIPTORS);
+       descr = (void*)MAKE_ROOT_DESC (ROOT_DESC_USER, (mword)user_descriptors_next);
+       user_descriptors [user_descriptors_next ++] = marker;
+
+       return descr;
+}
+
+void*
+sgen_get_complex_descriptor_bitmap (mword desc)
+{
+       return complex_descriptors + (desc >> ROOT_DESC_TYPE_SHIFT);
+}
+
+SgenUserRootMarkFunc
+sgen_get_user_descriptor_func (mword desc)
+{
+       return user_descriptors [desc >> ROOT_DESC_TYPE_SHIFT];
+}
+
+#ifdef HEAVY_STATISTICS
+void
+sgen_descriptor_count_scanned_object (mword desc)
+{
+       int type = desc & DESC_TYPE_MASK;
+       SGEN_ASSERT (0, type, "Descriptor type can't be zero");
+       ++stat_scanned_count_per_descriptor [type - 1];
+}
+
+void
+sgen_descriptor_count_copied_object (mword desc)
+{
+       int type = desc & DESC_TYPE_MASK;
+       SGEN_ASSERT (0, type, "Descriptor type can't be zero");
+       ++stat_copied_count_per_descriptor [type - 1];
+}
+#endif
+
+void
+sgen_init_descriptors (void)
+{
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("# scanned RUN_LENGTH", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_RUN_LENGTH - 1]);
+       mono_counters_register ("# scanned SMALL_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_SMALL_PTRFREE - 1]);
+       mono_counters_register ("# scanned COMPLEX", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_COMPLEX - 1]);
+       mono_counters_register ("# scanned VECTOR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_VECTOR - 1]);
+       mono_counters_register ("# scanned BITMAP", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_BITMAP - 1]);
+       mono_counters_register ("# scanned COMPLEX_ARR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_COMPLEX_ARR - 1]);
+       mono_counters_register ("# scanned COMPLEX_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scanned_count_per_descriptor [DESC_TYPE_COMPLEX_PTRFREE - 1]);
+
+       mono_counters_register ("# copied RUN_LENGTH", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_RUN_LENGTH - 1]);
+       mono_counters_register ("# copied SMALL_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_SMALL_PTRFREE - 1]);
+       mono_counters_register ("# copied COMPLEX", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_COMPLEX - 1]);
+       mono_counters_register ("# copied VECTOR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_VECTOR - 1]);
+       mono_counters_register ("# copied BITMAP", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_BITMAP - 1]);
+       mono_counters_register ("# copied COMPLEX_ARR", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_COMPLEX_ARR - 1]);
+       mono_counters_register ("# copied COMPLEX_PTRFREE", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copied_count_per_descriptor [DESC_TYPE_COMPLEX_PTRFREE - 1]);
+#endif
+}
+
+#endif
diff --git a/mono/sgen/sgen-descriptor.h b/mono/sgen/sgen-descriptor.h
new file mode 100644 (file)
index 0000000..1a9d8cc
--- /dev/null
@@ -0,0 +1,331 @@
+/*
+ * sgen-descriptor.h: GC descriptors describe object layout.
+
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ *
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGEN_DESCRIPTOR_H__
+#define __MONO_SGEN_DESCRIPTOR_H__
+
+#include <mono/sgen/sgen-conf.h>
+
+
+/*
+ * ######################################################################
+ * ########  GC descriptors
+ * ######################################################################
+ * Used to quickly get the info the GC needs about an object: size and
+ * where the references are held.
+ */
+#define OBJECT_HEADER_WORDS (SGEN_CLIENT_OBJECT_HEADER_SIZE / sizeof(gpointer))
+#define LOW_TYPE_BITS 3
+#define DESC_TYPE_MASK ((1 << LOW_TYPE_BITS) - 1)
+#define MAX_RUNLEN_OBJECT_SIZE 0xFFFF
+#define VECTOR_INFO_SHIFT 14
+#define VECTOR_KIND_SHIFT 13
+#define VECTOR_ELSIZE_SHIFT 3
+#define VECTOR_BITMAP_SHIFT 16
+#define VECTOR_BITMAP_SIZE (GC_BITS_PER_WORD - VECTOR_BITMAP_SHIFT)
+#define BITMAP_NUM_BITS (GC_BITS_PER_WORD - LOW_TYPE_BITS)
+#define MAX_ELEMENT_SIZE 0x3ff
+#define VECTOR_SUBTYPE_PTRFREE (DESC_TYPE_V_PTRFREE << VECTOR_INFO_SHIFT)
+#define VECTOR_SUBTYPE_REFS    (DESC_TYPE_V_REFS << VECTOR_INFO_SHIFT)
+#define VECTOR_SUBTYPE_BITMAP  (DESC_TYPE_V_BITMAP << VECTOR_INFO_SHIFT)
+
+#define VECTOR_KIND_SZARRAY  (DESC_TYPE_V_SZARRAY << VECTOR_KIND_SHIFT)
+#define VECTOR_KIND_ARRAY  (DESC_TYPE_V_ARRAY << VECTOR_KIND_SHIFT)
+
+/*
+ * Objects are aligned to 8 bytes boundaries.
+ *
+ * A descriptor is a pointer in GCVTable, so 32 or 64 bits of size.
+ * The low 3 bits define the type of the descriptor. The other bits
+ * depend on the type.
+ *
+ * It's important to be able to quickly identify two properties of classes from their
+ * descriptors: whether they are small enough to live in the regular major heap (size <=
+ * SGEN_MAX_SMALL_OBJ_SIZE), and whether they contain references.
+ *
+ * To that end we have three descriptor types that only apply to small classes: RUN_LENGTH,
+ * BITMAP, and SMALL_PTRFREE.  We also have the type COMPLEX_PTRFREE, which applies to
+ * classes that are either not small or of unknown size (those being strings and arrays).
+ * The lowest two bits of the SMALL_PTRFREE and COMPLEX_PTRFREE tags are the same, so we can
+ * quickly check for references.
+ *
+ * As a general rule the 13 remaining low bits define the size, either
+ * of the whole object or of the elements in the arrays. While for objects
+ * the size is already in bytes, for arrays we need to shift, because
+ * array elements might be smaller than 8 bytes. In case of arrays, we
+ * use two bits to describe what the additional high bits represents,
+ * so the default behaviour can handle element sizes less than 2048 bytes.
+ * The high 16 bits, if 0 it means the object is pointer-free.
+ * This design should make it easy and fast to skip over ptr-free data.
+ * The first 4 types should cover >95% of the objects.
+ * Note that since the size of objects is limited to 64K, larger objects
+ * will be allocated in the large object heap.
+ * If we want 4-bytes alignment, we need to put vector and small bitmap
+ * inside complex.
+ *
+ * We don't use 0 so that 0 isn't a valid GC descriptor.  No deep reason for this other than
+ * to be able to identify a non-inited descriptor for debugging.
+ */
+enum {
+       /* Keep in sync with `descriptor_types` in sgen-debug.c! */
+       DESC_TYPE_RUN_LENGTH = 1,   /* 16 bits aligned byte size | 1-3 (offset, numptr) bytes tuples */
+       DESC_TYPE_BITMAP = 2,       /* | 29-61 bitmap bits */
+       DESC_TYPE_SMALL_PTRFREE = 3,
+       DESC_TYPE_MAX_SMALL_OBJ = 3,
+       DESC_TYPE_COMPLEX = 4,      /* index for bitmap into complex_descriptors */
+       DESC_TYPE_VECTOR = 5,       /* 10 bits element size | 1 bit kind | 2 bits desc | element desc */
+       DESC_TYPE_COMPLEX_ARR = 6,  /* index for bitmap into complex_descriptors */
+       DESC_TYPE_COMPLEX_PTRFREE = 7, /* Nothing, used to encode large ptr objects and strings. */
+       DESC_TYPE_MAX = 7,
+
+       DESC_TYPE_PTRFREE_MASK = 3,
+       DESC_TYPE_PTRFREE_BITS = 3
+};
+
+/* values for array kind */
+enum {
+       DESC_TYPE_V_SZARRAY = 0, /*vector with no bounds data */
+       DESC_TYPE_V_ARRAY = 1, /* array with bounds data */
+};
+
+/* subtypes for arrays and vectors */
+enum {
+       DESC_TYPE_V_PTRFREE = 0,/* there are no refs: keep first so it has a zero value  */
+       DESC_TYPE_V_REFS,       /* all the array elements are refs */
+       DESC_TYPE_V_RUN_LEN,    /* elements are run-length encoded as DESC_TYPE_RUN_LENGTH */
+       DESC_TYPE_V_BITMAP      /* elements are as the bitmap in DESC_TYPE_SMALL_BITMAP */
+};
+
+#define SGEN_DESC_STRING       (DESC_TYPE_COMPLEX_PTRFREE | (1 << LOW_TYPE_BITS))
+
+/* Root bitmap descriptors are simpler: the lower three bits describe the type
+ * and we either have 30/62 bitmap bits or nibble-based run-length,
+ * or a complex descriptor, or a user defined marker function.
+ */
+enum {
+       ROOT_DESC_CONSERVATIVE, /* 0, so matches NULL value */
+       ROOT_DESC_BITMAP,
+       ROOT_DESC_RUN_LEN, 
+       ROOT_DESC_COMPLEX,
+       ROOT_DESC_USER,
+       ROOT_DESC_TYPE_MASK = 0x7,
+       ROOT_DESC_TYPE_SHIFT = 3,
+};
+
+typedef void (*SgenUserMarkFunc)     (void **addr, void *gc_data);
+typedef void (*SgenUserRootMarkFunc) (void *addr, SgenUserMarkFunc mark_func, void *gc_data);
+
+void* sgen_make_user_root_descriptor (SgenUserRootMarkFunc marker);
+
+gsize* sgen_get_complex_descriptor (mword desc);
+void* sgen_get_complex_descriptor_bitmap (mword desc);
+SgenUserRootMarkFunc sgen_get_user_descriptor_func (mword desc);
+
+void sgen_init_descriptors (void);
+
+#ifdef HEAVY_STATISTICS
+void sgen_descriptor_count_scanned_object (mword desc);
+void sgen_descriptor_count_copied_object (mword desc);
+#endif
+
+static inline gboolean
+sgen_gc_descr_has_references (mword desc)
+{
+       /* This covers SMALL_PTRFREE and COMPLEX_PTRFREE */
+       if ((desc & DESC_TYPE_PTRFREE_MASK) == DESC_TYPE_PTRFREE_BITS)
+               return FALSE;
+
+       /*The array is ptr-free*/
+       if ((desc & 0xC007) == (DESC_TYPE_VECTOR | VECTOR_SUBTYPE_PTRFREE))
+               return FALSE;
+
+       return TRUE;
+}
+
+#define SGEN_VTABLE_HAS_REFERENCES(vt) (sgen_gc_descr_has_references (sgen_vtable_get_descriptor ((vt))))
+#define SGEN_OBJECT_HAS_REFERENCES(o)  (SGEN_VTABLE_HAS_REFERENCES (SGEN_LOAD_VTABLE ((o))))
+
+/* helper macros to scan and traverse objects, macros because we resue them in many functions */
+#ifdef __GNUC__
+#define PREFETCH_READ(addr)    __builtin_prefetch ((addr), 0, 1)
+#define PREFETCH_WRITE(addr)   __builtin_prefetch ((addr), 1, 1)
+#else
+#define PREFETCH_READ(addr)
+#define PREFETCH_WRITE(addr)
+#endif
+
+#if defined(__GNUC__) && SIZEOF_VOID_P==4
+#define GNUC_BUILTIN_CTZ(bmap) __builtin_ctz(bmap)
+#elif defined(__GNUC__) && SIZEOF_VOID_P==8
+#define GNUC_BUILTIN_CTZ(bmap) __builtin_ctzl(bmap)
+#endif
+
+/* code using these macros must define a HANDLE_PTR(ptr) macro that does the work */
+#define OBJ_RUN_LEN_FOREACH_PTR(desc,obj)      do {    \
+               if ((desc) & 0xffff0000) {      \
+                       /* there are pointers */        \
+                       void **_objptr_end;     \
+                       void **_objptr = (void**)(obj); \
+                       _objptr += ((desc) >> 16) & 0xff;       \
+                       _objptr_end = _objptr + (((desc) >> 24) & 0xff);        \
+                       while (_objptr < _objptr_end) { \
+                               HANDLE_PTR (_objptr, (obj));    \
+                               _objptr++;      \
+                       };      \
+               }       \
+       } while (0)
+
+/* a bitmap desc means that there are pointer references or we'd have
+ * choosen run-length, instead: add an assert to check.
+ */
+#ifdef __GNUC__
+#define OBJ_BITMAP_FOREACH_PTR(desc,obj)       do {            \
+               /* there are pointers */                        \
+               void **_objptr = (void**)(obj);                 \
+               gsize _bmap = (desc) >> LOW_TYPE_BITS;          \
+               _objptr += OBJECT_HEADER_WORDS;                 \
+               do {                                            \
+                       int _index = GNUC_BUILTIN_CTZ (_bmap);  \
+                       _objptr += _index;                      \
+                       _bmap >>= (_index + 1);                 \
+                       HANDLE_PTR (_objptr, (obj));            \
+                       ++_objptr;                              \
+               } while (_bmap);                                \
+       } while (0)
+#else
+#define OBJ_BITMAP_FOREACH_PTR(desc,obj)       do {    \
+               /* there are pointers */        \
+               void **_objptr = (void**)(obj); \
+               gsize _bmap = (desc) >> LOW_TYPE_BITS;  \
+               _objptr += OBJECT_HEADER_WORDS; \
+               do {    \
+                       if ((_bmap & 1)) {      \
+                               HANDLE_PTR (_objptr, (obj));    \
+                       }       \
+                       _bmap >>= 1;    \
+                       ++_objptr;      \
+               } while (_bmap);        \
+       } while (0)
+#endif
+
+#define OBJ_COMPLEX_FOREACH_PTR(vt,obj)        do {    \
+               /* there are pointers */        \
+               void **_objptr = (void**)(obj); \
+               gsize *bitmap_data = sgen_get_complex_descriptor ((desc)); \
+               gsize bwords = (*bitmap_data) - 1;      \
+               void **start_run = _objptr;     \
+               bitmap_data++;  \
+               while (bwords-- > 0) {  \
+                       gsize _bmap = *bitmap_data++;   \
+                       _objptr = start_run;    \
+                       /*g_print ("bitmap: 0x%x/%d at %p\n", _bmap, bwords, _objptr);*/        \
+                       while (_bmap) { \
+                               if ((_bmap & 1)) {      \
+                                       HANDLE_PTR (_objptr, (obj));    \
+                               }       \
+                               _bmap >>= 1;    \
+                               ++_objptr;      \
+                       }       \
+                       start_run += GC_BITS_PER_WORD;  \
+               }       \
+       } while (0)
+
+/* this one is untested */
+#define OBJ_COMPLEX_ARR_FOREACH_PTR(desc,obj)  do {    \
+               /* there are pointers */        \
+               GCVTable *vt = (GCVTable*)SGEN_LOAD_VTABLE (obj); \
+               gsize *mbitmap_data = sgen_get_complex_descriptor ((desc)); \
+               gsize mbwords = (*mbitmap_data++) - 1;  \
+               gsize el_size = sgen_client_array_element_size (vt);    \
+               char *e_start = sgen_client_array_data_start ((GCObject*)(obj));        \
+               char *e_end = e_start + el_size * sgen_client_array_length ((GCObject*)(obj));  \
+               while (e_start < e_end) {       \
+                       void **_objptr = (void**)e_start;       \
+                       gsize *bitmap_data = mbitmap_data;      \
+                       gsize bwords = mbwords; \
+                       while (bwords-- > 0) {  \
+                               gsize _bmap = *bitmap_data++;   \
+                               void **start_run = _objptr;     \
+                               /*g_print ("bitmap: 0x%x\n", _bmap);*/  \
+                               while (_bmap) { \
+                                       if ((_bmap & 1)) {      \
+                                               HANDLE_PTR (_objptr, (obj));    \
+                                       }       \
+                                       _bmap >>= 1;    \
+                                       ++_objptr;      \
+                               }       \
+                               _objptr = start_run + GC_BITS_PER_WORD; \
+                       }       \
+                       e_start += el_size;     \
+               }       \
+       } while (0)
+
+#define OBJ_VECTOR_FOREACH_PTR(desc,obj)       do {    \
+               /* note: 0xffffc000 excludes DESC_TYPE_V_PTRFREE */     \
+               if ((desc) & 0xffffc000) {                              \
+                       int el_size = ((desc) >> 3) & MAX_ELEMENT_SIZE; \
+                       /* there are pointers */        \
+                       int etype = (desc) & 0xc000;                    \
+                       if (etype == (DESC_TYPE_V_REFS << 14)) {        \
+                               void **p = (void**)sgen_client_array_data_start ((GCObject*)(obj));     \
+                               void **end_refs = (void**)((char*)p + el_size * sgen_client_array_length ((GCObject*)(obj)));   \
+                               /* Note: this code can handle also arrays of struct with only references in them */     \
+                               while (p < end_refs) {  \
+                                       HANDLE_PTR (p, (obj));  \
+                                       ++p;    \
+                               }       \
+                       } else if (etype == DESC_TYPE_V_RUN_LEN << 14) {        \
+                               int offset = ((desc) >> 16) & 0xff;     \
+                               int num_refs = ((desc) >> 24) & 0xff;   \
+                               char *e_start = sgen_client_array_data_start ((GCObject*)(obj));        \
+                               char *e_end = e_start + el_size * sgen_client_array_length ((GCObject*)(obj));  \
+                               while (e_start < e_end) {       \
+                                       void **p = (void**)e_start;     \
+                                       int i;  \
+                                       p += offset;    \
+                                       for (i = 0; i < num_refs; ++i) {        \
+                                               HANDLE_PTR (p + i, (obj));      \
+                                       }       \
+                                       e_start += el_size;     \
+                               }       \
+                       } else if (etype == DESC_TYPE_V_BITMAP << 14) { \
+                               char *e_start = sgen_client_array_data_start ((GCObject*)(obj));        \
+                               char *e_end = e_start + el_size * sgen_client_array_length ((GCObject*)(obj));  \
+                               while (e_start < e_end) {       \
+                                       void **p = (void**)e_start;     \
+                                       gsize _bmap = (desc) >> 16;     \
+                                       /* Note: there is no object header here to skip */      \
+                                       while (_bmap) { \
+                                               if ((_bmap & 1)) {      \
+                                                       HANDLE_PTR (p, (obj));  \
+                                               }       \
+                                               _bmap >>= 1;    \
+                                               ++p;    \
+                                       }       \
+                                       e_start += el_size;     \
+                               }       \
+                       }       \
+               }       \
+       } while (0)
+
+
+#endif
diff --git a/mono/sgen/sgen-fin-weak-hash.c b/mono/sgen/sgen-fin-weak-hash.c
new file mode 100644 (file)
index 0000000..047d9a4
--- /dev/null
@@ -0,0 +1,871 @@
+/*
+ * sgen-fin-weak-hash.c: Finalizers and weak links.
+ *
+ * Author:
+ *     Paolo Molaro (lupus@ximian.com)
+ *  Rodrigo Kumpera (kumpera@gmail.com)
+ *
+ * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright 2011 Xamarin, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-gray.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-pointer-queue.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/utils/mono-membar.h"
+
+#define ptr_in_nursery sgen_ptr_in_nursery
+
+typedef SgenGrayQueue GrayQueue;
+
+static int no_finalize = 0;
+
+#define DISLINK_OBJECT(l)      (REVEAL_POINTER (*(void**)(l)))
+#define DISLINK_TRACK(l)       ((~(size_t)(*(void**)(l))) & 1)
+
+/*
+ * The finalizable hash has the object as the key, the 
+ * disappearing_link hash, has the link address as key.
+ *
+ * Copyright 2011 Xamarin Inc.
+ */
+
+#define TAG_MASK ((mword)0x1)
+
+static inline GCObject*
+tagged_object_get_object (GCObject *object)
+{
+       return (GCObject*)(((mword)object) & ~TAG_MASK);
+}
+
+static inline int
+tagged_object_get_tag (GCObject *object)
+{
+       return ((mword)object) & TAG_MASK;
+}
+
+static inline GCObject*
+tagged_object_apply (void *object, int tag_bits)
+{
+       return (GCObject*)((mword)object | (mword)tag_bits);
+}
+
+static int
+tagged_object_hash (GCObject *o)
+{
+       return sgen_aligned_addr_hash (tagged_object_get_object (o));
+}
+
+static gboolean
+tagged_object_equals (GCObject *a, GCObject *b)
+{
+       return tagged_object_get_object (a) == tagged_object_get_object (b);
+}
+
+static SgenHashTable minor_finalizable_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_FIN_TABLE, INTERNAL_MEM_FINALIZE_ENTRY, 0, (GHashFunc)tagged_object_hash, (GEqualFunc)tagged_object_equals);
+static SgenHashTable major_finalizable_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_FIN_TABLE, INTERNAL_MEM_FINALIZE_ENTRY, 0, (GHashFunc)tagged_object_hash, (GEqualFunc)tagged_object_equals);
+
+static SgenHashTable*
+get_finalize_entry_hash_table (int generation)
+{
+       switch (generation) {
+       case GENERATION_NURSERY: return &minor_finalizable_hash;
+       case GENERATION_OLD: return &major_finalizable_hash;
+       default: g_assert_not_reached ();
+       }
+}
+
+#define BRIDGE_OBJECT_MARKED 0x1
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_mark_bridge_object (GCObject *obj)
+{
+       SgenHashTable *hash_table = get_finalize_entry_hash_table (ptr_in_nursery (obj) ? GENERATION_NURSERY : GENERATION_OLD);
+
+       sgen_hash_table_set_key (hash_table, obj, tagged_object_apply (obj, BRIDGE_OBJECT_MARKED));
+}
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_collect_bridge_objects (int generation, ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       GrayQueue *queue = ctx.queue;
+       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
+       GCObject *object;
+       gpointer dummy G_GNUC_UNUSED;
+       char *copy;
+       SgenPointerQueue moved_fin_objects;
+
+       sgen_pointer_queue_init (&moved_fin_objects, INTERNAL_MEM_TEMPORARY);
+
+       if (no_finalize)
+               return;
+
+       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+               int tag = tagged_object_get_tag (object);
+               object = tagged_object_get_object (object);
+
+               /* Bridge code told us to ignore this one */
+               if (tag == BRIDGE_OBJECT_MARKED)
+                       continue;
+
+               /* Object is a bridge object and major heap says it's dead  */
+               if (major_collector.is_object_live ((char*)object))
+                       continue;
+
+               /* Nursery says the object is dead. */
+               if (!sgen_gc_is_object_ready_for_finalization (object))
+                       continue;
+
+               if (!sgen_client_bridge_is_bridge_object (object))
+                       continue;
+
+               copy = (char*)object;
+               copy_func ((void**)&copy, queue);
+
+               sgen_client_bridge_register_finalized_object ((GCObject*)copy);
+               
+               if (hash_table == &minor_finalizable_hash && !ptr_in_nursery (copy)) {
+                       /* remove from the list */
+                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+
+                       /* insert it into the major hash */
+                       sgen_hash_table_replace (&major_finalizable_hash, tagged_object_apply (copy, tag), NULL, NULL);
+
+                       SGEN_LOG (5, "Promoting finalization of object %p (%s) (was at %p) to major table", copy, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (copy)), object);
+
+                       continue;
+               } else if (copy != (char*)object) {
+                       /* update pointer */
+                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+
+                       /* register for reinsertion */
+                       sgen_pointer_queue_add (&moved_fin_objects, tagged_object_apply (copy, tag));
+
+                       SGEN_LOG (5, "Updating object for finalization: %p (%s) (was at %p)", copy, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (copy)), object);
+
+                       continue;
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       while (!sgen_pointer_queue_is_empty (&moved_fin_objects)) {
+               sgen_hash_table_replace (hash_table, sgen_pointer_queue_pop (&moved_fin_objects), NULL, NULL);
+       }
+
+       sgen_pointer_queue_free (&moved_fin_objects);
+}
+
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_finalize_in_range (int generation, ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       GrayQueue *queue = ctx.queue;
+       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
+       GCObject *object;
+       gpointer dummy G_GNUC_UNUSED;
+       SgenPointerQueue moved_fin_objects;
+
+       sgen_pointer_queue_init (&moved_fin_objects, INTERNAL_MEM_TEMPORARY);
+
+       if (no_finalize)
+               return;
+       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+               int tag = tagged_object_get_tag (object);
+               object = tagged_object_get_object (object);
+               if (!major_collector.is_object_live ((char*)object)) {
+                       gboolean is_fin_ready = sgen_gc_is_object_ready_for_finalization (object);
+                       GCObject *copy = object;
+                       copy_func ((void**)&copy, queue);
+                       if (is_fin_ready) {
+                               /* remove and put in fin_ready_list */
+                               SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+                               sgen_queue_finalization_entry (copy);
+                               /* Make it survive */
+                               SGEN_LOG (5, "Queueing object for finalization: %p (%s) (was at %p) (%d)", copy, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (copy)), object, sgen_hash_table_num_entries (hash_table));
+                               continue;
+                       } else {
+                               if (hash_table == &minor_finalizable_hash && !ptr_in_nursery (copy)) {
+                                       /* remove from the list */
+                                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+
+                                       /* insert it into the major hash */
+                                       sgen_hash_table_replace (&major_finalizable_hash, tagged_object_apply (copy, tag), NULL, NULL);
+
+                                       SGEN_LOG (5, "Promoting finalization of object %p (%s) (was at %p) to major table", copy, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (copy)), object);
+
+                                       continue;
+                               } else if (copy != object) {
+                                       /* update pointer */
+                                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+
+                                       /* register for reinsertion */
+                                       sgen_pointer_queue_add (&moved_fin_objects, tagged_object_apply (copy, tag));
+
+                                       SGEN_LOG (5, "Updating object for finalization: %p (%s) (was at %p)", copy, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (copy)), object);
+
+                                       continue;
+                               }
+                       }
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       while (!sgen_pointer_queue_is_empty (&moved_fin_objects)) {
+               sgen_hash_table_replace (hash_table, sgen_pointer_queue_pop (&moved_fin_objects), NULL, NULL);
+       }
+
+       sgen_pointer_queue_free (&moved_fin_objects);
+}
+
+/* LOCKING: requires that the GC lock is held */
+static void
+register_for_finalization (GCObject *obj, void *user_data, int generation)
+{
+       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
+
+       if (no_finalize)
+               return;
+
+       if (user_data) {
+               if (sgen_hash_table_replace (hash_table, obj, NULL, NULL)) {
+                       GCVTable *vt = SGEN_LOAD_VTABLE_UNCHECKED (obj);
+                       SGEN_LOG (5, "Added finalizer for object: %p (%s) (%d) to %s table", obj, sgen_client_vtable_get_name (vt), hash_table->num_entries, sgen_generation_name (generation));
+               }
+       } else {
+               if (sgen_hash_table_remove (hash_table, obj, NULL)) {
+                       GCVTable *vt = SGEN_LOAD_VTABLE_UNCHECKED (obj);
+                       SGEN_LOG (5, "Removed finalizer for object: %p (%s) (%d)", obj, sgen_client_vtable_get_name (vt), hash_table->num_entries);
+               }
+       }
+}
+
+/*
+ * We're using (mostly) non-locking staging queues for finalizers and weak links to speed
+ * up registering them.  Otherwise we'd have to take the GC lock.
+ *
+ * The queues are arrays of `StageEntry`, plus a `next_entry` index.  Threads add entries to
+ * the queue via `add_stage_entry()` in a linear fashion until it fills up, in which case
+ * `process_stage_entries()` is called to drain it.  A garbage collection will also drain
+ * the queues via the same function.  That implies that `add_stage_entry()`, since it
+ * doesn't take a lock, must be able to run concurrently with `process_stage_entries()`,
+ * though it doesn't have to make progress while the queue is drained.  In fact, once it
+ * detects that the queue is being drained, it blocks until the draining is done.
+ *
+ * The protocol must guarantee that entries in the queue are causally ordered, otherwise two
+ * entries for the same location might get switched, resulting in the earlier one being
+ * committed and the later one ignored.
+ *
+ * `next_entry` is the index of the next entry to be filled, or `-1` if the queue is
+ * currently being drained.  Each entry has a state:
+ *
+ * `STAGE_ENTRY_FREE`: The entry is free.  Its data fields must be `NULL`.
+ *
+ * `STAGE_ENTRY_BUSY`: The entry is currently being filled in.
+ *
+ * `STAGE_ENTRY_USED`: The entry is completely filled in and must be processed in the next
+ * draining round.
+ *
+ * `STAGE_ENTRY_INVALID`: The entry was busy during queue draining and therefore
+ * invalidated.  Entries that are `BUSY` can obviously not be processed during a drain, but
+ * we can't leave them in place because new entries might be inserted before them, including
+ * from the same thread, violating causality.  An alternative would be not to reset
+ * `next_entry` to `0` after a drain, but to the index of the last `BUSY` entry plus one,
+ * but that can potentially waste the whole queue.
+ *
+ * State transitions:
+ *
+ * | from    | to      | filler? | drainer? |
+ * +---------+---------+---------+----------+
+ * | FREE    | BUSY    | X       |          |
+ * | BUSY    | FREE    | X       |          |
+ * | BUSY    | USED    | X       |          |
+ * | BUSY    | INVALID |         | X        |
+ * | USED    | FREE    |         | X        |
+ * | INVALID | FREE    | X       |          |
+ *
+ * `next_entry` can be incremented either by the filler thread that set the corresponding
+ * entry to `BUSY`, or by another filler thread that's trying to get a `FREE` slot.  If that
+ * other thread wasn't allowed to increment, it would block on the first filler thread.
+ *
+ * An entry's state, once it's set from `FREE` to `BUSY` by a filler thread, can only be
+ * changed by that same thread or by the drained.  The drainer can only set a `BUSY` thread
+ * to `INVALID`, so it needs to be set to `FREE` again by the original filler thread.
+ */
+
+#define STAGE_ENTRY_FREE       0
+#define STAGE_ENTRY_BUSY       1
+#define STAGE_ENTRY_USED       2
+#define STAGE_ENTRY_INVALID    3
+
+typedef struct {
+       volatile gint32 state;
+       GCObject *obj;
+       void *user_data;
+} StageEntry;
+
+#define NUM_FIN_STAGE_ENTRIES  1024
+
+static volatile gint32 next_fin_stage_entry = 0;
+static StageEntry fin_stage_entries [NUM_FIN_STAGE_ENTRIES];
+
+/*
+ * This is used to lock the stage when processing is forced, i.e. when it's triggered by a
+ * garbage collection.  In that case, the world is already stopped and there's only one
+ * thread operating on the queue.
+ */
+static void
+lock_stage_for_processing (volatile gint32 *next_entry)
+{
+       *next_entry = -1;
+}
+
+/*
+ * When processing is triggered by an overflow, we don't want to take the GC lock
+ * immediately, and then set `next_index` to `-1`, because another thread might have drained
+ * the queue in the mean time.  Instead, we make sure the overflow is still there, we
+ * atomically set `next_index`, and only once that happened do we take the GC lock.
+ */
+static gboolean
+try_lock_stage_for_processing (int num_entries, volatile gint32 *next_entry)
+{
+       gint32 old = *next_entry;
+       if (old < num_entries)
+               return FALSE;
+       return InterlockedCompareExchange (next_entry, -1, old) == old;
+}
+
+/* LOCKING: requires that the GC lock is held */
+static void
+process_stage_entries (int num_entries, volatile gint32 *next_entry, StageEntry *entries, void (*process_func) (GCObject*, void*, int))
+{
+       int i;
+
+       /*
+        * This can happen if after setting `next_index` to `-1` in
+        * `try_lock_stage_for_processing()`, a GC was triggered, which then drained the
+        * queue and reset `next_entry`.
+        *
+        * We have the GC lock now, so if it's still `-1`, we can't be interrupted by a GC.
+        */
+       if (*next_entry != -1)
+               return;
+
+       for (i = 0; i < num_entries; ++i) {
+               gint32 state;
+
+       retry:
+               state = entries [i].state;
+
+               switch (state) {
+               case STAGE_ENTRY_FREE:
+               case STAGE_ENTRY_INVALID:
+                       continue;
+               case STAGE_ENTRY_BUSY:
+                       /* BUSY -> INVALID */
+                       /*
+                        * This must be done atomically, because the filler thread can set
+                        * the entry to `USED`, in which case we must process it, so we must
+                        * detect that eventuality.
+                        */
+                       if (InterlockedCompareExchange (&entries [i].state, STAGE_ENTRY_INVALID, STAGE_ENTRY_BUSY) != STAGE_ENTRY_BUSY)
+                               goto retry;
+                       continue;
+               case STAGE_ENTRY_USED:
+                       break;
+               default:
+                       SGEN_ASSERT (0, FALSE, "Invalid stage entry state");
+                       break;
+               }
+
+               /* state is USED */
+
+               process_func (entries [i].obj, entries [i].user_data, i);
+
+               entries [i].obj = NULL;
+               entries [i].user_data = NULL;
+
+               mono_memory_write_barrier ();
+
+               /* USED -> FREE */
+               /*
+                * This transition only happens here, so we don't have to do it atomically.
+                */
+               entries [i].state = STAGE_ENTRY_FREE;
+       }
+
+       mono_memory_write_barrier ();
+
+       *next_entry = 0;
+}
+
+#ifdef HEAVY_STATISTICS
+static guint64 stat_overflow_abort = 0;
+static guint64 stat_wait_for_processing = 0;
+static guint64 stat_increment_other_thread = 0;
+static guint64 stat_index_decremented = 0;
+static guint64 stat_entry_invalidated = 0;
+static guint64 stat_success = 0;
+#endif
+
+static int
+add_stage_entry (int num_entries, volatile gint32 *next_entry, StageEntry *entries, GCObject *obj, void *user_data)
+{
+       gint32 index, new_next_entry, old_next_entry;
+       gint32 previous_state;
+
+ retry:
+       for (;;) {
+               index = *next_entry;
+               if (index >= num_entries) {
+                       HEAVY_STAT (++stat_overflow_abort);
+                       return -1;
+               }
+               if (index < 0) {
+                       /*
+                        * Backed-off waiting is way more efficient than even using a
+                        * dedicated lock for this.
+                        */
+                       while ((index = *next_entry) < 0) {
+                               /*
+                                * This seems like a good value.  Determined by timing
+                                * sgen-weakref-stress.exe.
+                                */
+                               g_usleep (200);
+                               HEAVY_STAT (++stat_wait_for_processing);
+                       }
+                       continue;
+               }
+               /* FREE -> BUSY */
+               if (entries [index].state != STAGE_ENTRY_FREE ||
+                               InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_FREE) != STAGE_ENTRY_FREE) {
+                       /*
+                        * If we can't get the entry it must be because another thread got
+                        * it first.  We don't want to wait for that thread to increment
+                        * `next_entry`, so we try to do it ourselves.  Whether we succeed
+                        * or not, we start over.
+                        */
+                       if (*next_entry == index) {
+                               InterlockedCompareExchange (next_entry, index + 1, index);
+                               //g_print ("tried increment for other thread\n");
+                               HEAVY_STAT (++stat_increment_other_thread);
+                       }
+                       continue;
+               }
+               /* state is BUSY now */
+               mono_memory_write_barrier ();
+               /*
+                * Incrementing `next_entry` must happen after setting the state to `BUSY`.
+                * If it were the other way around, it would be possible that after a filler
+                * incremented the index, other threads fill up the queue, the queue is
+                * drained, the original filler finally fills in the slot, but `next_entry`
+                * ends up at the start of the queue, and new entries are written in the
+                * queue in front of, not behind, the original filler's entry.
+                *
+                * We don't actually require that the CAS succeeds, but we do require that
+                * the value of `next_entry` is not lower than our index.  Since the drainer
+                * sets it to `-1`, that also takes care of the case that the drainer is
+                * currently running.
+                */
+               old_next_entry = InterlockedCompareExchange (next_entry, index + 1, index);
+               if (old_next_entry < index) {
+                       /* BUSY -> FREE */
+                       /* INVALID -> FREE */
+                       /*
+                        * The state might still be `BUSY`, or the drainer could have set it
+                        * to `INVALID`.  In either case, there's no point in CASing.  Set
+                        * it to `FREE` and start over.
+                        */
+                       entries [index].state = STAGE_ENTRY_FREE;
+                       HEAVY_STAT (++stat_index_decremented);
+                       continue;
+               }
+               break;
+       }
+
+       SGEN_ASSERT (0, index >= 0 && index < num_entries, "Invalid index");
+
+       entries [index].obj = obj;
+       entries [index].user_data = user_data;
+
+       mono_memory_write_barrier ();
+
+       new_next_entry = *next_entry;
+       mono_memory_read_barrier ();
+       /* BUSY -> USED */
+       /*
+        * A `BUSY` entry will either still be `BUSY` or the drainer will have set it to
+        * `INVALID`.  In the former case, we set it to `USED` and we're finished.  In the
+        * latter case, we reset it to `FREE` and start over.
+        */
+       previous_state = InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_USED, STAGE_ENTRY_BUSY);
+       if (previous_state == STAGE_ENTRY_BUSY) {
+               SGEN_ASSERT (0, new_next_entry >= index || new_next_entry < 0, "Invalid next entry index - as long as we're busy, other thread can only increment or invalidate it");
+               HEAVY_STAT (++stat_success);
+               return index;
+       }
+
+       SGEN_ASSERT (0, previous_state == STAGE_ENTRY_INVALID, "Invalid state transition - other thread can only make busy state invalid");
+       entries [index].obj = NULL;
+       entries [index].user_data = NULL;
+       mono_memory_write_barrier ();
+       /* INVALID -> FREE */
+       entries [index].state = STAGE_ENTRY_FREE;
+
+       HEAVY_STAT (++stat_entry_invalidated);
+
+       goto retry;
+}
+
+/* LOCKING: requires that the GC lock is held */
+static void
+process_fin_stage_entry (GCObject *obj, void *user_data, int index)
+{
+       if (ptr_in_nursery (obj))
+               register_for_finalization (obj, user_data, GENERATION_NURSERY);
+       else
+               register_for_finalization (obj, user_data, GENERATION_OLD);
+}
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_process_fin_stage_entries (void)
+{
+       lock_stage_for_processing (&next_fin_stage_entry);
+       process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
+}
+
+void
+sgen_object_register_for_finalization (GCObject *obj, void *user_data)
+{
+       while (add_stage_entry (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, obj, user_data) == -1) {
+               if (try_lock_stage_for_processing (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry)) {
+                       LOCK_GC;
+                       process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
+                       UNLOCK_GC;
+               }
+       }
+}
+
+/* LOCKING: requires that the GC lock is held */
+static int
+finalizers_with_predicate (SgenObjectPredicateFunc predicate, void *user_data, GCObject **out_array, int out_size, SgenHashTable *hash_table)
+{
+       GCObject *object;
+       gpointer dummy G_GNUC_UNUSED;
+       int count;
+
+       if (no_finalize || !out_size || !out_array)
+               return 0;
+       count = 0;
+       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+               object = tagged_object_get_object (object);
+
+               if (predicate (object, user_data)) {
+                       /* remove and put in out_array */
+                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+                       out_array [count ++] = object;
+                       SGEN_LOG (5, "Collecting object for finalization: %p (%s) (%d)", object, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (object)), sgen_hash_table_num_entries (hash_table));
+                       if (count == out_size)
+                               return count;
+                       continue;
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+       return count;
+}
+
+/**
+ * sgen_gather_finalizers_if:
+ * @predicate: predicate function
+ * @user_data: predicate function data argument
+ * @out_array: output array
+ * @out_size: size of output array
+ *
+ * Store inside @out_array up to @out_size objects that match @predicate. Returns the number
+ * of stored items. Can be called repeteadly until it returns 0.
+ *
+ * The items are removed from the finalizer data structure, so the caller is supposed
+ * to finalize them.
+ *
+ * @out_array me be on the stack, or registered as a root, to allow the GC to know the
+ * objects are still alive.
+ */
+int
+sgen_gather_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, GCObject **out_array, int out_size)
+{
+       int result;
+
+       LOCK_GC;
+       sgen_process_fin_stage_entries ();
+       result = finalizers_with_predicate (predicate, user_data, (GCObject**)out_array, out_size, &minor_finalizable_hash);
+       if (result < out_size) {
+               result += finalizers_with_predicate (predicate, user_data, (GCObject**)out_array + result, out_size - result,
+                       &major_finalizable_hash);
+       }
+       UNLOCK_GC;
+
+       return result;
+}
+
+static SgenHashTable minor_disappearing_link_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_DISLINK_TABLE, INTERNAL_MEM_DISLINK, 0, sgen_aligned_addr_hash, NULL);
+static SgenHashTable major_disappearing_link_hash = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_DISLINK_TABLE, INTERNAL_MEM_DISLINK, 0, sgen_aligned_addr_hash, NULL);
+
+static SgenHashTable*
+get_dislink_hash_table (int generation)
+{
+       switch (generation) {
+       case GENERATION_NURSERY: return &minor_disappearing_link_hash;
+       case GENERATION_OLD: return &major_disappearing_link_hash;
+       default: g_assert_not_reached ();
+       }
+}
+
+/* LOCKING: assumes the GC lock is held */
+static void
+add_or_remove_disappearing_link (GCObject *obj, void **link, int generation)
+{
+       SgenHashTable *hash_table = get_dislink_hash_table (generation);
+
+       if (!obj) {
+               if (sgen_hash_table_remove (hash_table, link, NULL)) {
+                       SGEN_LOG (5, "Removed dislink %p (%d) from %s table",
+                                       link, hash_table->num_entries, sgen_generation_name (generation));
+               }
+               return;
+       }
+
+       sgen_hash_table_replace (hash_table, link, NULL, NULL);
+       SGEN_LOG (5, "Added dislink for object: %p (%s) at %p to %s table",
+                       obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE_UNCHECKED (obj)), link, sgen_generation_name (generation));
+}
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       GrayQueue *queue = ctx.queue;
+       void **link;
+       gpointer dummy G_GNUC_UNUSED;
+       SgenHashTable *hash = get_dislink_hash_table (generation);
+
+       SGEN_HASH_TABLE_FOREACH (hash, link, dummy) {
+               char *object;
+               gboolean track;
+
+               /*
+               We null a weak link before unregistering it, so it's possible that a thread is
+               suspended right in between setting the content to null and staging the unregister.
+
+               The rest of this code cannot handle null links as DISLINK_OBJECT (NULL) produces an invalid address.
+
+               We should simply skip the entry as the staged removal will take place during the next GC.
+               */
+               if (!*link) {
+                       SGEN_LOG (5, "Dislink %p was externally nullified", link);
+                       continue;
+               }
+
+               track = DISLINK_TRACK (link);
+               /*
+                * Tracked references are processed after
+                * finalization handling whereas standard weak
+                * references are processed before.  If an
+                * object is still not marked after finalization
+                * handling it means that it either doesn't have
+                * a finalizer or the finalizer has already run,
+                * so we must null a tracking reference.
+                */
+               if (track != before_finalization) {
+                       object = DISLINK_OBJECT (link);
+                       /*
+                       We should guard against a null object been hidden. This can sometimes happen.
+                       */
+                       if (!object) {
+                               SGEN_LOG (5, "Dislink %p with a hidden null object", link);
+                               continue;
+                       }
+
+                       if (!major_collector.is_object_live (object)) {
+                               if (sgen_gc_is_object_ready_for_finalization (object)) {
+                                       *link = NULL;
+                                       binary_protocol_dislink_update (link, NULL, 0, 0);
+                                       SGEN_LOG (5, "Dislink nullified at %p to GCed object %p", link, object);
+                                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+                                       continue;
+                               } else {
+                                       char *copy = object;
+                                       copy_func ((void**)&copy, queue);
+
+                                       /* Update pointer if it's moved.  If the object
+                                        * has been moved out of the nursery, we need to
+                                        * remove the link from the minor hash table to
+                                        * the major one.
+                                        *
+                                        * FIXME: what if an object is moved earlier?
+                                        */
+
+                                       if (hash == &minor_disappearing_link_hash && !ptr_in_nursery (copy)) {
+                                               SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+
+                                               g_assert (copy);
+                                               *link = HIDE_POINTER (copy, track);
+                                               add_or_remove_disappearing_link ((GCObject*)copy, link, GENERATION_OLD);
+                                               binary_protocol_dislink_update (link, copy, track, 0);
+
+                                               SGEN_LOG (5, "Upgraded dislink at %p to major because object %p moved to %p", link, object, copy);
+
+                                               continue;
+                                       } else {
+                                               *link = HIDE_POINTER (copy, track);
+                                               binary_protocol_dislink_update (link, copy, track, 0);
+                                               SGEN_LOG (5, "Updated dislink at %p to %p", link, DISLINK_OBJECT (link));
+                                       }
+                               }
+                       }
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+}
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_null_links_if (SgenObjectPredicateFunc predicate, void *data, int generation)
+{
+       void **link;
+       gpointer dummy G_GNUC_UNUSED;
+       SgenHashTable *hash = get_dislink_hash_table (generation);
+       SGEN_HASH_TABLE_FOREACH (hash, link, dummy) {
+               char *object = DISLINK_OBJECT (link);
+
+               if (!*link)
+                       continue;
+
+               if (predicate ((GCObject*)object, data)) {
+                       *link = NULL;
+                       binary_protocol_dislink_update (link, NULL, 0, 0);
+                       SGEN_LOG (5, "Dislink nullified by predicate at %p to GCed object %p", link, object);
+                       SGEN_HASH_TABLE_FOREACH_REMOVE (FALSE /* TRUE */);
+                       continue;
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;
+}
+
+void
+sgen_remove_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, int generation)
+{
+       SgenHashTable *hash_table = get_finalize_entry_hash_table (generation);
+       GCObject *object;
+       gpointer dummy G_GNUC_UNUSED;
+
+       SGEN_HASH_TABLE_FOREACH (hash_table, object, dummy) {
+               object = tagged_object_get_object (object);
+
+               if (predicate (object, user_data)) {
+                       SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
+                       continue;
+               }
+       } SGEN_HASH_TABLE_FOREACH_END;  
+}
+
+/* LOCKING: requires that the GC lock is held */
+static void
+process_dislink_stage_entry (GCObject *obj, void *_link, int index)
+{
+       void **link = _link;
+
+       if (index >= 0)
+               binary_protocol_dislink_process_staged (link, obj, index);
+
+       add_or_remove_disappearing_link (NULL, link, GENERATION_NURSERY);
+       add_or_remove_disappearing_link (NULL, link, GENERATION_OLD);
+       if (obj) {
+               if (ptr_in_nursery (obj))
+                       add_or_remove_disappearing_link (obj, link, GENERATION_NURSERY);
+               else
+                       add_or_remove_disappearing_link (obj, link, GENERATION_OLD);
+       }
+}
+
+#define NUM_DISLINK_STAGE_ENTRIES      1024
+
+static volatile gint32 next_dislink_stage_entry = 0;
+static StageEntry dislink_stage_entries [NUM_DISLINK_STAGE_ENTRIES];
+
+/* LOCKING: requires that the GC lock is held */
+void
+sgen_process_dislink_stage_entries (void)
+{
+       lock_stage_for_processing (&next_dislink_stage_entry);
+       process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
+}
+
+void
+sgen_register_disappearing_link (GCObject *obj, void **link, gboolean track, gboolean in_gc)
+{
+       if (obj)
+               *link = HIDE_POINTER (obj, track);
+       else
+               *link = NULL;
+
+#if 1
+       if (in_gc) {
+               binary_protocol_dislink_update (link, obj, track, 0);
+               process_dislink_stage_entry (obj, link, -1);
+       } else {
+               int index;
+               binary_protocol_dislink_update (link, obj, track, 1);
+               while ((index = add_stage_entry (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, obj, link)) == -1) {
+                       if (try_lock_stage_for_processing (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry)) {
+                               LOCK_GC;
+                               process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
+                               UNLOCK_GC;
+                       }
+               }
+               binary_protocol_dislink_update_staged (link, obj, track, index);
+       }
+#else
+       if (!in_gc)
+               LOCK_GC;
+       binary_protocol_dislink_update (link, obj, track, 0);
+       process_dislink_stage_entry (obj, link, -1);
+       if (!in_gc)
+               UNLOCK_GC;
+#endif
+}
+
+void
+sgen_init_fin_weak_hash (void)
+{
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("FinWeak Successes", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_success);
+       mono_counters_register ("FinWeak Overflow aborts", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_overflow_abort);
+       mono_counters_register ("FinWeak Wait for processing", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wait_for_processing);
+       mono_counters_register ("FinWeak Increment other thread", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_increment_other_thread);
+       mono_counters_register ("FinWeak Index decremented", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_index_decremented);
+       mono_counters_register ("FinWeak Entry invalidated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_entry_invalidated);
+#endif
+}
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/sgen/sgen-gc.c b/mono/sgen/sgen-gc.c
new file mode 100644 (file)
index 0000000..b152646
--- /dev/null
@@ -0,0 +1,3460 @@
+/*
+ * sgen-gc.c: Simple generational GC.
+ *
+ * Author:
+ *     Paolo Molaro (lupus@ximian.com)
+ *  Rodrigo Kumpera (kumpera@gmail.com)
+ *
+ * Copyright 2005-2011 Novell, Inc (http://www.novell.com)
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ *
+ * Thread start/stop adapted from Boehm's GC:
+ * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
+ * Copyright (c) 1996 by Silicon Graphics.  All rights reserved.
+ * Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
+ * Copyright (c) 2000-2004 by Hewlett-Packard Company.  All rights reserved.
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Important: allocation provides always zeroed memory, having to do
+ * a memset after allocation is deadly for performance.
+ * Memory usage at startup is currently as follows:
+ * 64 KB pinned space
+ * 64 KB internal space
+ * size of nursery
+ * We should provide a small memory config with half the sizes
+ *
+ * We currently try to make as few mono assumptions as possible:
+ * 1) 2-word header with no GC pointers in it (first vtable, second to store the
+ *    forwarding ptr)
+ * 2) gc descriptor is the second word in the vtable (first word in the class)
+ * 3) 8 byte alignment is the minimum and enough (not true for special structures (SIMD), FIXME)
+ * 4) there is a function to get an object's size and the number of
+ *    elements in an array.
+ * 5) we know the special way bounds are allocated for complex arrays
+ * 6) we know about proxies and how to treat them when domains are unloaded
+ *
+ * Always try to keep stack usage to a minimum: no recursive behaviour
+ * and no large stack allocs.
+ *
+ * General description.
+ * Objects are initially allocated in a nursery using a fast bump-pointer technique.
+ * When the nursery is full we start a nursery collection: this is performed with a
+ * copying GC.
+ * When the old generation is full we start a copying GC of the old generation as well:
+ * this will be changed to mark&sweep with copying when fragmentation becomes to severe
+ * in the future.  Maybe we'll even do both during the same collection like IMMIX.
+ *
+ * The things that complicate this description are:
+ * *) pinned objects: we can't move them so we need to keep track of them
+ * *) no precise info of the thread stacks and registers: we need to be able to
+ *    quickly find the objects that may be referenced conservatively and pin them
+ *    (this makes the first issues more important)
+ * *) large objects are too expensive to be dealt with using copying GC: we handle them
+ *    with mark/sweep during major collections
+ * *) some objects need to not move even if they are small (interned strings, Type handles):
+ *    we use mark/sweep for them, too: they are not allocated in the nursery, but inside
+ *    PinnedChunks regions
+ */
+
+/*
+ * TODO:
+
+ *) we could have a function pointer in MonoClass to implement
+  customized write barriers for value types
+
+ *) investigate the stuff needed to advance a thread to a GC-safe
+  point (single-stepping, read from unmapped memory etc) and implement it.
+  This would enable us to inline allocations and write barriers, for example,
+  or at least parts of them, like the write barrier checks.
+  We may need this also for handling precise info on stacks, even simple things
+  as having uninitialized data on the stack and having to wait for the prolog
+  to zero it. Not an issue for the last frame that we scan conservatively.
+  We could always not trust the value in the slots anyway.
+
+ *) modify the jit to save info about references in stack locations:
+  this can be done just for locals as a start, so that at least
+  part of the stack is handled precisely.
+
+ *) test/fix endianess issues
+
+ *) Implement a card table as the write barrier instead of remembered
+    sets?  Card tables are not easy to implement with our current
+    memory layout.  We have several different kinds of major heap
+    objects: Small objects in regular blocks, small objects in pinned
+    chunks and LOS objects.  If we just have a pointer we have no way
+    to tell which kind of object it points into, therefore we cannot
+    know where its card table is.  The least we have to do to make
+    this happen is to get rid of write barriers for indirect stores.
+    (See next item)
+
+ *) Get rid of write barriers for indirect stores.  We can do this by
+    telling the GC to wbarrier-register an object once we do an ldloca
+    or ldelema on it, and to unregister it once it's not used anymore
+    (it can only travel downwards on the stack).  The problem with
+    unregistering is that it needs to happen eventually no matter
+    what, even if exceptions are thrown, the thread aborts, etc.
+    Rodrigo suggested that we could do only the registering part and
+    let the collector find out (pessimistically) when it's safe to
+    unregister, namely when the stack pointer of the thread that
+    registered the object is higher than it was when the registering
+    happened.  This might make for a good first implementation to get
+    some data on performance.
+
+ *) Some sort of blacklist support?  Blacklists is a concept from the
+    Boehm GC: if during a conservative scan we find pointers to an
+    area which we might use as heap, we mark that area as unusable, so
+    pointer retention by random pinning pointers is reduced.
+
+ *) experiment with max small object size (very small right now - 2kb,
+    because it's tied to the max freelist size)
+
+  *) add an option to mmap the whole heap in one chunk: it makes for many
+     simplifications in the checks (put the nursery at the top and just use a single
+     check for inclusion/exclusion): the issue this has is that on 32 bit systems it's
+     not flexible (too much of the address space may be used by default or we can't
+     increase the heap as needed) and we'd need a race-free mechanism to return memory
+     back to the system (mprotect(PROT_NONE) will still keep the memory allocated if it
+     was written to, munmap is needed, but the following mmap may not find the same segment
+     free...)
+
+ *) memzero the major fragments after restarting the world and optionally a smaller
+    chunk at a time
+
+ *) investigate having fragment zeroing threads
+
+ *) separate locks for finalization and other minor stuff to reduce
+    lock contention
+
+ *) try a different copying order to improve memory locality
+
+ *) a thread abort after a store but before the write barrier will
+    prevent the write barrier from executing
+
+ *) specialized dynamically generated markers/copiers
+
+ *) Dynamically adjust TLAB size to the number of threads.  If we have
+    too many threads that do allocation, we might need smaller TLABs,
+    and we might get better performance with larger TLABs if we only
+    have a handful of threads.  We could sum up the space left in all
+    assigned TLABs and if that's more than some percentage of the
+    nursery size, reduce the TLAB size.
+
+ *) Explore placing unreachable objects on unused nursery memory.
+       Instead of memset'ng a region to zero, place an int[] covering it.
+       A good place to start is add_nursery_frag. The tricky thing here is
+       placing those objects atomically outside of a collection.
+
+ *) Allocation should use asymmetric Dekker synchronization:
+       http://blogs.oracle.com/dave/resource/Asymmetric-Dekker-Synchronization.txt
+       This should help weak consistency archs.
+ */
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#ifdef __MACH__
+#undef _XOPEN_SOURCE
+#define _XOPEN_SOURCE
+#define _DARWIN_C_SOURCE
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#ifdef HAVE_PTHREAD_NP_H
+#include <pthread_np.h>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#include <stdlib.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-hash-table.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-pinning.h"
+#include "mono/sgen/sgen-workers.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/sgen/sgen-pointer-queue.h"
+#include "mono/sgen/gc-internal-agnostic.h"
+#include "mono/utils/mono-proclib.h"
+#include "mono/utils/mono-memory-model.h"
+#include "mono/utils/hazard-pointer.h"
+
+#include <mono/utils/memcheck.h>
+
+#undef pthread_create
+#undef pthread_join
+#undef pthread_detach
+
+/*
+ * ######################################################################
+ * ########  Types and constants used by the GC.
+ * ######################################################################
+ */
+
+/* 0 means not initialized, 1 is initialized, -1 means in progress */
+static int gc_initialized = 0;
+/* If set, check if we need to do something every X allocations */
+gboolean has_per_allocation_action;
+/* If set, do a heap check every X allocation */
+guint32 verify_before_allocs = 0;
+/* If set, do a minor collection before every X allocation */
+guint32 collect_before_allocs = 0;
+/* If set, do a whole heap check before each collection */
+static gboolean whole_heap_check_before_collection = FALSE;
+/* If set, do a heap consistency check before each minor collection */
+static gboolean consistency_check_at_minor_collection = FALSE;
+/* If set, do a mod union consistency check before each finishing collection pause */
+static gboolean mod_union_consistency_check = FALSE;
+/* If set, check whether mark bits are consistent after major collections */
+static gboolean check_mark_bits_after_major_collection = FALSE;
+/* If set, check that all nursery objects are pinned/not pinned, depending on context */
+static gboolean check_nursery_objects_pinned = FALSE;
+/* If set, do a few checks when the concurrent collector is used */
+static gboolean do_concurrent_checks = FALSE;
+/* If set, do a plausibility check on the scan_starts before and after
+   each collection */
+static gboolean do_scan_starts_check = FALSE;
+
+/*
+ * If the major collector is concurrent and this is FALSE, we will
+ * never initiate a synchronous major collection, unless requested via
+ * GC.Collect().
+ */
+static gboolean allow_synchronous_major = TRUE;
+static gboolean disable_minor_collections = FALSE;
+static gboolean disable_major_collections = FALSE;
+static gboolean do_verify_nursery = FALSE;
+static gboolean do_dump_nursery_content = FALSE;
+static gboolean enable_nursery_canaries = FALSE;
+
+#ifdef HEAVY_STATISTICS
+guint64 stat_objects_alloced_degraded = 0;
+guint64 stat_bytes_alloced_degraded = 0;
+
+guint64 stat_copy_object_called_nursery = 0;
+guint64 stat_objects_copied_nursery = 0;
+guint64 stat_copy_object_called_major = 0;
+guint64 stat_objects_copied_major = 0;
+
+guint64 stat_scan_object_called_nursery = 0;
+guint64 stat_scan_object_called_major = 0;
+
+guint64 stat_slots_allocated_in_vain;
+
+guint64 stat_nursery_copy_object_failed_from_space = 0;
+guint64 stat_nursery_copy_object_failed_forwarded = 0;
+guint64 stat_nursery_copy_object_failed_pinned = 0;
+guint64 stat_nursery_copy_object_failed_to_space = 0;
+
+static guint64 stat_wbarrier_add_to_global_remset = 0;
+static guint64 stat_wbarrier_set_arrayref = 0;
+static guint64 stat_wbarrier_arrayref_copy = 0;
+static guint64 stat_wbarrier_generic_store = 0;
+static guint64 stat_wbarrier_generic_store_atomic = 0;
+static guint64 stat_wbarrier_set_root = 0;
+static guint64 stat_wbarrier_value_copy = 0;
+static guint64 stat_wbarrier_object_copy = 0;
+#endif
+
+static guint64 stat_pinned_objects = 0;
+
+static guint64 time_minor_pre_collection_fragment_clear = 0;
+static guint64 time_minor_pinning = 0;
+static guint64 time_minor_scan_remsets = 0;
+static guint64 time_minor_scan_pinned = 0;
+static guint64 time_minor_scan_roots = 0;
+static guint64 time_minor_finish_gray_stack = 0;
+static guint64 time_minor_fragment_creation = 0;
+
+static guint64 time_major_pre_collection_fragment_clear = 0;
+static guint64 time_major_pinning = 0;
+static guint64 time_major_scan_pinned = 0;
+static guint64 time_major_scan_roots = 0;
+static guint64 time_major_scan_mod_union = 0;
+static guint64 time_major_finish_gray_stack = 0;
+static guint64 time_major_free_bigobjs = 0;
+static guint64 time_major_los_sweep = 0;
+static guint64 time_major_sweep = 0;
+static guint64 time_major_fragment_creation = 0;
+
+static guint64 time_max = 0;
+
+static SGEN_TV_DECLARE (time_major_conc_collection_start);
+static SGEN_TV_DECLARE (time_major_conc_collection_end);
+
+static SGEN_TV_DECLARE (last_minor_collection_start_tv);
+static SGEN_TV_DECLARE (last_minor_collection_end_tv);
+
+int gc_debug_level = 0;
+FILE* gc_debug_file;
+
+/*
+void
+mono_gc_flush_info (void)
+{
+       fflush (gc_debug_file);
+}
+*/
+
+#define TV_DECLARE SGEN_TV_DECLARE
+#define TV_GETTIME SGEN_TV_GETTIME
+#define TV_ELAPSED SGEN_TV_ELAPSED
+
+static SGEN_TV_DECLARE (sgen_init_timestamp);
+
+NurseryClearPolicy nursery_clear_policy = CLEAR_AT_TLAB_CREATION;
+
+#define object_is_forwarded    SGEN_OBJECT_IS_FORWARDED
+#define object_is_pinned       SGEN_OBJECT_IS_PINNED
+#define pin_object             SGEN_PIN_OBJECT
+
+#define ptr_in_nursery sgen_ptr_in_nursery
+
+#define LOAD_VTABLE    SGEN_LOAD_VTABLE
+
+gboolean
+nursery_canaries_enabled (void)
+{
+       return enable_nursery_canaries;
+}
+
+#define safe_object_get_size   sgen_safe_object_get_size
+
+/*
+ * ######################################################################
+ * ########  Global data.
+ * ######################################################################
+ */
+LOCK_DECLARE (gc_mutex);
+gboolean sgen_try_free_some_memory;
+
+#define SCAN_START_SIZE        SGEN_SCAN_START_SIZE
+
+size_t degraded_mode = 0;
+
+static mword bytes_pinned_from_failed_allocation = 0;
+
+GCMemSection *nursery_section = NULL;
+static volatile mword lowest_heap_address = ~(mword)0;
+static volatile mword highest_heap_address = 0;
+
+LOCK_DECLARE (sgen_interruption_mutex);
+
+int current_collection_generation = -1;
+static volatile gboolean concurrent_collection_in_progress = FALSE;
+
+/* objects that are ready to be finalized */
+static SgenPointerQueue fin_ready_queue = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_FINALIZE_READY);
+static SgenPointerQueue critical_fin_queue = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_FINALIZE_READY);
+
+/* registered roots: the key to the hash is the root start address */
+/* 
+ * Different kinds of roots are kept separate to speed up pin_from_roots () for example.
+ */
+SgenHashTable roots_hash [ROOT_TYPE_NUM] = {
+       SGEN_HASH_TABLE_INIT (INTERNAL_MEM_ROOTS_TABLE, INTERNAL_MEM_ROOT_RECORD, sizeof (RootRecord), sgen_aligned_addr_hash, NULL),
+       SGEN_HASH_TABLE_INIT (INTERNAL_MEM_ROOTS_TABLE, INTERNAL_MEM_ROOT_RECORD, sizeof (RootRecord), sgen_aligned_addr_hash, NULL),
+       SGEN_HASH_TABLE_INIT (INTERNAL_MEM_ROOTS_TABLE, INTERNAL_MEM_ROOT_RECORD, sizeof (RootRecord), sgen_aligned_addr_hash, NULL)
+};
+static mword roots_size = 0; /* amount of memory in the root set */
+
+/* The size of a TLAB */
+/* The bigger the value, the less often we have to go to the slow path to allocate a new 
+ * one, but the more space is wasted by threads not allocating much memory.
+ * FIXME: Tune this.
+ * FIXME: Make this self-tuning for each thread.
+ */
+guint32 tlab_size = (1024 * 4);
+
+#define MAX_SMALL_OBJ_SIZE     SGEN_MAX_SMALL_OBJ_SIZE
+
+#define ALLOC_ALIGN            SGEN_ALLOC_ALIGN
+
+#define ALIGN_UP               SGEN_ALIGN_UP
+
+#ifdef SGEN_DEBUG_INTERNAL_ALLOC
+MonoNativeThreadId main_gc_thread = NULL;
+#endif
+
+/*Object was pinned during the current collection*/
+static mword objects_pinned;
+
+/*
+ * ######################################################################
+ * ########  Macros and function declarations.
+ * ######################################################################
+ */
+
+typedef SgenGrayQueue GrayQueue;
+
+/* forward declarations */
+static void scan_from_registered_roots (char *addr_start, char *addr_end, int root_type, ScanCopyContext ctx);
+
+static void pin_from_roots (void *start_nursery, void *end_nursery, ScanCopyContext ctx);
+static void finish_gray_stack (int generation, ScanCopyContext ctx);
+
+
+SgenMajorCollector major_collector;
+SgenMinorCollector sgen_minor_collector;
+/* FIXME: get rid of this */
+static GrayQueue gray_queue;
+
+static SgenRememberedSet remset;
+
+/* The gray queue to use from the main collection thread. */
+#define WORKERS_DISTRIBUTE_GRAY_QUEUE  (&gray_queue)
+
+/*
+ * The gray queue a worker job must use.  If we're not parallel or
+ * concurrent, we use the main gray queue.
+ */
+static SgenGrayQueue*
+sgen_workers_get_job_gray_queue (WorkerData *worker_data)
+{
+       return worker_data ? &worker_data->private_gray_queue : WORKERS_DISTRIBUTE_GRAY_QUEUE;
+}
+
+static void
+gray_queue_redirect (SgenGrayQueue *queue)
+{
+       gboolean wake = FALSE;
+
+       for (;;) {
+               GrayQueueSection *section = sgen_gray_object_dequeue_section (queue);
+               if (!section)
+                       break;
+               sgen_section_gray_queue_enqueue (queue->alloc_prepare_data, section);
+               wake = TRUE;
+       }
+
+       if (wake) {
+               g_assert (concurrent_collection_in_progress);
+               sgen_workers_ensure_awake ();
+       }
+}
+
+static void
+gray_queue_enable_redirect (SgenGrayQueue *queue)
+{
+       if (!concurrent_collection_in_progress)
+               return;
+
+       sgen_gray_queue_set_alloc_prepare (queue, gray_queue_redirect, sgen_workers_get_distribute_section_gray_queue ());
+       gray_queue_redirect (queue);
+}
+
+void
+sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags)
+{
+       while (start < end) {
+               size_t size;
+               char *obj;
+
+               if (!*(void**)start) {
+                       start += sizeof (void*); /* should be ALLOC_ALIGN, really */
+                       continue;
+               }
+
+               if (allow_flags) {
+                       if (!(obj = SGEN_OBJECT_IS_FORWARDED (start)))
+                               obj = start;
+               } else {
+                       obj = start;
+               }
+
+               if (!sgen_client_object_is_array_fill ((GCObject*)obj)) {
+                       CHECK_CANARY_FOR_OBJECT (obj);
+                       size = ALIGN_UP (safe_object_get_size ((GCObject*)obj));
+                       callback (obj, size, data);
+                       CANARIFY_SIZE (size);
+               } else {
+                       size = ALIGN_UP (safe_object_get_size ((GCObject*)obj));
+               }
+
+               start += size;
+       }
+}
+
+/*
+ * sgen_add_to_global_remset:
+ *
+ *   The global remset contains locations which point into newspace after
+ * a minor collection. This can happen if the objects they point to are pinned.
+ *
+ * LOCKING: If called from a parallel collector, the global remset
+ * lock must be held.  For serial collectors that is not necessary.
+ */
+void
+sgen_add_to_global_remset (gpointer ptr, gpointer obj)
+{
+       SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Target pointer of global remset must be in the nursery");
+
+       HEAVY_STAT (++stat_wbarrier_add_to_global_remset);
+
+       if (!major_collector.is_concurrent) {
+               SGEN_ASSERT (5, current_collection_generation != -1, "Global remsets can only be added during collections");
+       } else {
+               if (current_collection_generation == -1)
+                       SGEN_ASSERT (5, sgen_concurrent_collection_in_progress (), "Global remsets outside of collection pauses can only be added by the concurrent collector");
+       }
+
+       if (!object_is_pinned (obj))
+               SGEN_ASSERT (5, sgen_minor_collector.is_split || sgen_concurrent_collection_in_progress (), "Non-pinned objects can only remain in nursery if it is a split nursery");
+       else if (sgen_cement_lookup_or_register (obj))
+               return;
+
+       remset.record_pointer (ptr);
+
+       sgen_pin_stats_register_global_remset (obj);
+
+       SGEN_LOG (8, "Adding global remset for %p", ptr);
+       binary_protocol_global_remset (ptr, obj, (gpointer)SGEN_LOAD_VTABLE (obj));
+}
+
+/*
+ * sgen_drain_gray_stack:
+ *
+ *   Scan objects in the gray stack until the stack is empty. This should be called
+ * frequently after each object is copied, to achieve better locality and cache
+ * usage.
+ *
+ * max_objs is the maximum number of objects to scan, or -1 to scan until the stack is
+ * empty.
+ */
+gboolean
+sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx)
+{
+       ScanObjectFunc scan_func = ctx.ops->scan_object;
+       GrayQueue *queue = ctx.queue;
+
+       if (current_collection_generation == GENERATION_OLD && major_collector.drain_gray_stack)
+               return major_collector.drain_gray_stack (ctx);
+
+       do {
+               int i;
+               for (i = 0; i != max_objs; ++i) {
+                       char *obj;
+                       mword desc;
+                       GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
+                       if (!obj)
+                               return TRUE;
+                       SGEN_LOG (9, "Precise gray object scan %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
+                       scan_func (obj, desc, queue);
+               }
+       } while (max_objs < 0);
+       return FALSE;
+}
+
+/*
+ * Addresses in the pin queue are already sorted. This function finds
+ * the object header for each address and pins the object. The
+ * addresses must be inside the nursery section.  The (start of the)
+ * address array is overwritten with the addresses of the actually
+ * pinned objects.  Return the number of pinned objects.
+ */
+static int
+pin_objects_from_nursery_pin_queue (gboolean do_scan_objects, ScanCopyContext ctx)
+{
+       GCMemSection *section = nursery_section;
+       void **start =  sgen_pinning_get_entry (section->pin_queue_first_entry);
+       void **end = sgen_pinning_get_entry (section->pin_queue_last_entry);
+       void *start_nursery = section->data;
+       void *end_nursery = section->next_data;
+       void *last = NULL;
+       int count = 0;
+       void *search_start;
+       void *addr;
+       void *pinning_front = start_nursery;
+       size_t idx;
+       void **definitely_pinned = start;
+       ScanObjectFunc scan_func = ctx.ops->scan_object;
+       SgenGrayQueue *queue = ctx.queue;
+
+       sgen_nursery_allocator_prepare_for_pinning ();
+
+       while (start < end) {
+               void *obj_to_pin = NULL;
+               size_t obj_to_pin_size = 0;
+               mword desc;
+
+               addr = *start;
+
+               SGEN_ASSERT (0, addr >= start_nursery && addr < end_nursery, "Potential pinning address out of range");
+               SGEN_ASSERT (0, addr >= last, "Pin queue not sorted");
+
+               if (addr == last) {
+                       ++start;
+                       continue;
+               }
+
+               SGEN_LOG (5, "Considering pinning addr %p", addr);
+               /* We've already processed everything up to pinning_front. */
+               if (addr < pinning_front) {
+                       start++;
+                       continue;
+               }
+
+               /*
+                * Find the closest scan start <= addr.  We might search backward in the
+                * scan_starts array because entries might be NULL.  In the worst case we
+                * start at start_nursery.
+                */
+               idx = ((char*)addr - (char*)section->data) / SCAN_START_SIZE;
+               SGEN_ASSERT (0, idx < section->num_scan_start, "Scan start index out of range");
+               search_start = (void*)section->scan_starts [idx];
+               if (!search_start || search_start > addr) {
+                       while (idx) {
+                               --idx;
+                               search_start = section->scan_starts [idx];
+                               if (search_start && search_start <= addr)
+                                       break;
+                       }
+                       if (!search_start || search_start > addr)
+                               search_start = start_nursery;
+               }
+
+               /*
+                * If the pinning front is closer than the scan start we found, start
+                * searching at the front.
+                */
+               if (search_start < pinning_front)
+                       search_start = pinning_front;
+
+               /*
+                * Now addr should be in an object a short distance from search_start.
+                *
+                * search_start must point to zeroed mem or point to an object.
+                */
+               do {
+                       size_t obj_size, canarified_obj_size;
+
+                       /* Skip zeros. */
+                       if (!*(void**)search_start) {
+                               search_start = (void*)ALIGN_UP ((mword)search_start + sizeof (gpointer));
+                               /* The loop condition makes sure we don't overrun addr. */
+                               continue;
+                       }
+
+                       canarified_obj_size = obj_size = ALIGN_UP (safe_object_get_size ((GCObject*)search_start));
+
+                       /*
+                        * Filler arrays are marked by an invalid sync word.  We don't
+                        * consider them for pinning.  They are not delimited by canaries,
+                        * either.
+                        */
+                       if (!sgen_client_object_is_array_fill ((GCObject*)search_start)) {
+                               CHECK_CANARY_FOR_OBJECT (search_start);
+                               CANARIFY_SIZE (canarified_obj_size);
+
+                               if (addr >= search_start && (char*)addr < (char*)search_start + obj_size) {
+                                       /* This is the object we're looking for. */
+                                       obj_to_pin = search_start;
+                                       obj_to_pin_size = canarified_obj_size;
+                                       break;
+                               }
+                       }
+
+                       /* Skip to the next object */
+                       search_start = (void*)((char*)search_start + canarified_obj_size);
+               } while (search_start <= addr);
+
+               /* We've searched past the address we were looking for. */
+               if (!obj_to_pin) {
+                       pinning_front = search_start;
+                       goto next_pin_queue_entry;
+               }
+
+               /*
+                * We've found an object to pin.  It might still be a dummy array, but we
+                * can advance the pinning front in any case.
+                */
+               pinning_front = (char*)obj_to_pin + obj_to_pin_size;
+
+               /*
+                * If this is a dummy array marking the beginning of a nursery
+                * fragment, we don't pin it.
+                */
+               if (sgen_client_object_is_array_fill ((GCObject*)obj_to_pin))
+                       goto next_pin_queue_entry;
+
+               /*
+                * Finally - pin the object!
+                */
+               desc = sgen_obj_get_descriptor_safe (obj_to_pin);
+               if (do_scan_objects) {
+                       scan_func (obj_to_pin, desc, queue);
+               } else {
+                       SGEN_LOG (4, "Pinned object %p, vtable %p (%s), count %d\n",
+                                       obj_to_pin, *(void**)obj_to_pin, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj_to_pin)), count);
+                       binary_protocol_pin (obj_to_pin,
+                                       (gpointer)LOAD_VTABLE (obj_to_pin),
+                                       safe_object_get_size (obj_to_pin));
+
+                       pin_object (obj_to_pin);
+                       GRAY_OBJECT_ENQUEUE (queue, obj_to_pin, desc);
+                       sgen_pin_stats_register_object (obj_to_pin, obj_to_pin_size);
+                       definitely_pinned [count] = obj_to_pin;
+                       count++;
+               }
+
+       next_pin_queue_entry:
+               last = addr;
+               ++start;
+       }
+       sgen_client_nursery_objects_pinned (definitely_pinned, count);
+       stat_pinned_objects += count;
+       return count;
+}
+
+static void
+pin_objects_in_nursery (gboolean do_scan_objects, ScanCopyContext ctx)
+{
+       size_t reduced_to;
+
+       if (nursery_section->pin_queue_first_entry == nursery_section->pin_queue_last_entry)
+               return;
+
+       reduced_to = pin_objects_from_nursery_pin_queue (do_scan_objects, ctx);
+       nursery_section->pin_queue_last_entry = nursery_section->pin_queue_first_entry + reduced_to;
+}
+
+/*
+ * This function is only ever called (via `collector_pin_object()` in `sgen-copy-object.h`)
+ * when we can't promote an object because we're out of memory.
+ */
+void
+sgen_pin_object (void *object, GrayQueue *queue)
+{
+       /*
+        * All pinned objects are assumed to have been staged, so we need to stage as well.
+        * Also, the count of staged objects shows that "late pinning" happened.
+        */
+       sgen_pin_stage_ptr (object);
+
+       SGEN_PIN_OBJECT (object);
+       binary_protocol_pin (object, (gpointer)LOAD_VTABLE (object), safe_object_get_size (object));
+
+       ++objects_pinned;
+       sgen_pin_stats_register_object (object, safe_object_get_size (object));
+
+       GRAY_OBJECT_ENQUEUE (queue, object, sgen_obj_get_descriptor_safe (object));
+}
+
+/* Sort the addresses in array in increasing order.
+ * Done using a by-the book heap sort. Which has decent and stable performance, is pretty cache efficient.
+ */
+void
+sgen_sort_addresses (void **array, size_t size)
+{
+       size_t i;
+       void *tmp;
+
+       for (i = 1; i < size; ++i) {
+               size_t child = i;
+               while (child > 0) {
+                       size_t parent = (child - 1) / 2;
+
+                       if (array [parent] >= array [child])
+                               break;
+
+                       tmp = array [parent];
+                       array [parent] = array [child];
+                       array [child] = tmp;
+
+                       child = parent;
+               }
+       }
+
+       for (i = size - 1; i > 0; --i) {
+               size_t end, root;
+               tmp = array [i];
+               array [i] = array [0];
+               array [0] = tmp;
+
+               end = i - 1;
+               root = 0;
+
+               while (root * 2 + 1 <= end) {
+                       size_t child = root * 2 + 1;
+
+                       if (child < end && array [child] < array [child + 1])
+                               ++child;
+                       if (array [root] >= array [child])
+                               break;
+
+                       tmp = array [root];
+                       array [root] = array [child];
+                       array [child] = tmp;
+
+                       root = child;
+               }
+       }
+}
+
+/* 
+ * Scan the memory between start and end and queue values which could be pointers
+ * to the area between start_nursery and end_nursery for later consideration.
+ * Typically used for thread stacks.
+ */
+void
+sgen_conservatively_pin_objects_from (void **start, void **end, void *start_nursery, void *end_nursery, int pin_type)
+{
+       int count = 0;
+
+#ifdef VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE
+       VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE (start, (char*)end - (char*)start);
+#endif
+
+       while (start < end) {
+               if (*start >= start_nursery && *start < end_nursery) {
+                       /*
+                        * *start can point to the middle of an object
+                        * note: should we handle pointing at the end of an object?
+                        * pinning in C# code disallows pointing at the end of an object
+                        * but there is some small chance that an optimizing C compiler
+                        * may keep the only reference to an object by pointing
+                        * at the end of it. We ignore this small chance for now.
+                        * Pointers to the end of an object are indistinguishable
+                        * from pointers to the start of the next object in memory
+                        * so if we allow that we'd need to pin two objects...
+                        * We queue the pointer in an array, the
+                        * array will then be sorted and uniqued. This way
+                        * we can coalesce several pinning pointers and it should
+                        * be faster since we'd do a memory scan with increasing
+                        * addresses. Note: we can align the address to the allocation
+                        * alignment, so the unique process is more effective.
+                        */
+                       mword addr = (mword)*start;
+                       addr &= ~(ALLOC_ALIGN - 1);
+                       if (addr >= (mword)start_nursery && addr < (mword)end_nursery) {
+                               SGEN_LOG (6, "Pinning address %p from %p", (void*)addr, start);
+                               sgen_pin_stage_ptr ((void*)addr);
+                               binary_protocol_pin_stage (start, (void*)addr);
+                               count++;
+                       }
+
+                       /*
+                        * FIXME: It seems we're registering objects from all over the heap
+                        * (at least from the nursery and the LOS), but we're only
+                        * registering pinned addresses in the nursery.  What's up with
+                        * that?
+                        *
+                        * Also, why wouldn't we register addresses once the pinning queue
+                        * is sorted and uniqued?
+                        */
+                       if (ptr_in_nursery ((void*)addr))
+                               sgen_pin_stats_register_address ((char*)addr, pin_type);
+               }
+               start++;
+       }
+       if (count)
+               SGEN_LOG (7, "found %d potential pinned heap pointers", count);
+}
+
+/*
+ * The first thing we do in a collection is to identify pinned objects.
+ * This function considers all the areas of memory that need to be
+ * conservatively scanned.
+ */
+static void
+pin_from_roots (void *start_nursery, void *end_nursery, ScanCopyContext ctx)
+{
+       void **start_root;
+       RootRecord *root;
+       SGEN_LOG (2, "Scanning pinned roots (%d bytes, %d/%d entries)", (int)roots_size, roots_hash [ROOT_TYPE_NORMAL].num_entries, roots_hash [ROOT_TYPE_PINNED].num_entries);
+       /* objects pinned from the API are inside these roots */
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [ROOT_TYPE_PINNED], start_root, root) {
+               SGEN_LOG (6, "Pinned roots %p-%p", start_root, root->end_root);
+               sgen_conservatively_pin_objects_from (start_root, (void**)root->end_root, start_nursery, end_nursery, PIN_TYPE_OTHER);
+       } SGEN_HASH_TABLE_FOREACH_END;
+       /* now deal with the thread stacks
+        * in the future we should be able to conservatively scan only:
+        * *) the cpu registers
+        * *) the unmanaged stack frames
+        * *) the _last_ managed stack frame
+        * *) pointers slots in managed frames
+        */
+       sgen_client_scan_thread_data (start_nursery, end_nursery, FALSE, ctx);
+}
+
+static void
+unpin_objects_from_queue (SgenGrayQueue *queue)
+{
+       for (;;) {
+               char *addr;
+               mword desc;
+               GRAY_OBJECT_DEQUEUE (queue, &addr, &desc);
+               if (!addr)
+                       break;
+               g_assert (SGEN_OBJECT_IS_PINNED (addr));
+               SGEN_UNPIN_OBJECT (addr);
+       }
+}
+
+static void
+single_arg_user_copy_or_mark (void **obj, void *gc_data)
+{
+       ScanCopyContext *ctx = gc_data;
+       ctx->ops->copy_or_mark_object (obj, ctx->queue);
+}
+
+/*
+ * The memory area from start_root to end_root contains pointers to objects.
+ * Their position is precisely described by @desc (this means that the pointer
+ * can be either NULL or the pointer to the start of an object).
+ * This functions copies them to to_space updates them.
+ *
+ * This function is not thread-safe!
+ */
+static void
+precisely_scan_objects_from (void** start_root, void** end_root, char* n_start, char *n_end, mword desc, ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       SgenGrayQueue *queue = ctx.queue;
+
+       switch (desc & ROOT_DESC_TYPE_MASK) {
+       case ROOT_DESC_BITMAP:
+               desc >>= ROOT_DESC_TYPE_SHIFT;
+               while (desc) {
+                       if ((desc & 1) && *start_root) {
+                               copy_func (start_root, queue);
+                               SGEN_LOG (9, "Overwrote root at %p with %p", start_root, *start_root);
+                       }
+                       desc >>= 1;
+                       start_root++;
+               }
+               return;
+       case ROOT_DESC_COMPLEX: {
+               gsize *bitmap_data = sgen_get_complex_descriptor_bitmap (desc);
+               gsize bwords = (*bitmap_data) - 1;
+               void **start_run = start_root;
+               bitmap_data++;
+               while (bwords-- > 0) {
+                       gsize bmap = *bitmap_data++;
+                       void **objptr = start_run;
+                       while (bmap) {
+                               if ((bmap & 1) && *objptr) {
+                                       copy_func (objptr, queue);
+                                       SGEN_LOG (9, "Overwrote root at %p with %p", objptr, *objptr);
+                               }
+                               bmap >>= 1;
+                               ++objptr;
+                       }
+                       start_run += GC_BITS_PER_WORD;
+               }
+               break;
+       }
+       case ROOT_DESC_USER: {
+               SgenUserRootMarkFunc marker = sgen_get_user_descriptor_func (desc);
+               marker (start_root, single_arg_user_copy_or_mark, &ctx);
+               break;
+       }
+       case ROOT_DESC_RUN_LEN:
+               g_assert_not_reached ();
+       default:
+               g_assert_not_reached ();
+       }
+}
+
+static void
+reset_heap_boundaries (void)
+{
+       lowest_heap_address = ~(mword)0;
+       highest_heap_address = 0;
+}
+
+void
+sgen_update_heap_boundaries (mword low, mword high)
+{
+       mword old;
+
+       do {
+               old = lowest_heap_address;
+               if (low >= old)
+                       break;
+       } while (SGEN_CAS_PTR ((gpointer*)&lowest_heap_address, (gpointer)low, (gpointer)old) != (gpointer)old);
+
+       do {
+               old = highest_heap_address;
+               if (high <= old)
+                       break;
+       } while (SGEN_CAS_PTR ((gpointer*)&highest_heap_address, (gpointer)high, (gpointer)old) != (gpointer)old);
+}
+
+/*
+ * Allocate and setup the data structures needed to be able to allocate objects
+ * in the nursery. The nursery is stored in nursery_section.
+ */
+static void
+alloc_nursery (void)
+{
+       GCMemSection *section;
+       char *data;
+       size_t scan_starts;
+       size_t alloc_size;
+
+       if (nursery_section)
+               return;
+       SGEN_LOG (2, "Allocating nursery size: %zu", (size_t)sgen_nursery_size);
+       /* later we will alloc a larger area for the nursery but only activate
+        * what we need. The rest will be used as expansion if we have too many pinned
+        * objects in the existing nursery.
+        */
+       /* FIXME: handle OOM */
+       section = sgen_alloc_internal (INTERNAL_MEM_SECTION);
+
+       alloc_size = sgen_nursery_size;
+
+       /* If there isn't enough space even for the nursery we should simply abort. */
+       g_assert (sgen_memgov_try_alloc_space (alloc_size, SPACE_NURSERY));
+
+       data = major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
+       sgen_update_heap_boundaries ((mword)data, (mword)(data + sgen_nursery_size));
+       SGEN_LOG (4, "Expanding nursery size (%p-%p): %lu, total: %lu", data, data + alloc_size, (unsigned long)sgen_nursery_size, (unsigned long)sgen_gc_get_total_heap_allocation ());
+       section->data = section->next_data = data;
+       section->size = alloc_size;
+       section->end_data = data + sgen_nursery_size;
+       scan_starts = (alloc_size + SCAN_START_SIZE - 1) / SCAN_START_SIZE;
+       section->scan_starts = sgen_alloc_internal_dynamic (sizeof (char*) * scan_starts, INTERNAL_MEM_SCAN_STARTS, TRUE);
+       section->num_scan_start = scan_starts;
+
+       nursery_section = section;
+
+       sgen_nursery_allocator_set_nursery_bounds (data, data + sgen_nursery_size);
+}
+
+FILE *
+mono_gc_get_logfile (void)
+{
+       return gc_debug_file;
+}
+
+static void
+scan_finalizer_entries (SgenPointerQueue *fin_queue, ScanCopyContext ctx)
+{
+       CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
+       SgenGrayQueue *queue = ctx.queue;
+       size_t i;
+
+       for (i = 0; i < fin_queue->next_slot; ++i) {
+               void *obj = fin_queue->data [i];
+               if (!obj)
+                       continue;
+               SGEN_LOG (5, "Scan of fin ready object: %p (%s)\n", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
+               copy_func (&fin_queue->data [i], queue);
+       }
+}
+
+static const char*
+generation_name (int generation)
+{
+       switch (generation) {
+       case GENERATION_NURSERY: return "nursery";
+       case GENERATION_OLD: return "old";
+       default: g_assert_not_reached ();
+       }
+}
+
+const char*
+sgen_generation_name (int generation)
+{
+       return generation_name (generation);
+}
+
+static void
+finish_gray_stack (int generation, ScanCopyContext ctx)
+{
+       TV_DECLARE (atv);
+       TV_DECLARE (btv);
+       int done_with_ephemerons, ephemeron_rounds = 0;
+       char *start_addr = generation == GENERATION_NURSERY ? sgen_get_nursery_start () : NULL;
+       char *end_addr = generation == GENERATION_NURSERY ? sgen_get_nursery_end () : (char*)-1;
+       SgenGrayQueue *queue = ctx.queue;
+
+       /*
+        * We copied all the reachable objects. Now it's the time to copy
+        * the objects that were not referenced by the roots, but by the copied objects.
+        * we built a stack of objects pointed to by gray_start: they are
+        * additional roots and we may add more items as we go.
+        * We loop until gray_start == gray_objects which means no more objects have
+        * been added. Note this is iterative: no recursion is involved.
+        * We need to walk the LO list as well in search of marked big objects
+        * (use a flag since this is needed only on major collections). We need to loop
+        * here as well, so keep a counter of marked LO (increasing it in copy_object).
+        *   To achieve better cache locality and cache usage, we drain the gray stack 
+        * frequently, after each object is copied, and just finish the work here.
+        */
+       sgen_drain_gray_stack (-1, ctx);
+       TV_GETTIME (atv);
+       SGEN_LOG (2, "%s generation done", generation_name (generation));
+
+       /*
+       Reset bridge data, we might have lingering data from a previous collection if this is a major
+       collection trigged by minor overflow.
+
+       We must reset the gathered bridges since their original block might be evacuated due to major
+       fragmentation in the meanwhile and the bridge code should not have to deal with that.
+       */
+       if (sgen_client_bridge_need_processing ())
+               sgen_client_bridge_reset_data ();
+
+       /*
+        * Walk the ephemeron tables marking all values with reachable keys. This must be completely done
+        * before processing finalizable objects and non-tracking weak links to avoid finalizing/clearing
+        * objects that are in fact reachable.
+        */
+       done_with_ephemerons = 0;
+       do {
+               done_with_ephemerons = sgen_client_mark_ephemerons (ctx);
+               sgen_drain_gray_stack (-1, ctx);
+               ++ephemeron_rounds;
+       } while (!done_with_ephemerons);
+
+       sgen_client_mark_togglerefs (start_addr, end_addr, ctx);
+
+       if (sgen_client_bridge_need_processing ()) {
+               /*Make sure the gray stack is empty before we process bridge objects so we get liveness right*/
+               sgen_drain_gray_stack (-1, ctx);
+               sgen_collect_bridge_objects (generation, ctx);
+               if (generation == GENERATION_OLD)
+                       sgen_collect_bridge_objects (GENERATION_NURSERY, ctx);
+
+               /*
+               Do the first bridge step here, as the collector liveness state will become useless after that.
+
+               An important optimization is to only proccess the possibly dead part of the object graph and skip
+               over all live objects as we transitively know everything they point must be alive too.
+
+               The above invariant is completely wrong if we let the gray queue be drained and mark/copy everything.
+
+               This has the unfortunate side effect of making overflow collections perform the first step twice, but
+               given we now have heuristics that perform major GC in anticipation of minor overflows this should not
+               be a big deal.
+               */
+               sgen_client_bridge_processing_stw_step ();
+       }
+
+       /*
+       Make sure we drain the gray stack before processing disappearing links and finalizers.
+       If we don't make sure it is empty we might wrongly see a live object as dead.
+       */
+       sgen_drain_gray_stack (-1, ctx);
+
+       /*
+       We must clear weak links that don't track resurrection before processing object ready for
+       finalization so they can be cleared before that.
+       */
+       sgen_null_link_in_range (generation, TRUE, ctx);
+       if (generation == GENERATION_OLD)
+               sgen_null_link_in_range (GENERATION_NURSERY, TRUE, ctx);
+
+
+       /* walk the finalization queue and move also the objects that need to be
+        * finalized: use the finalized objects as new roots so the objects they depend
+        * on are also not reclaimed. As with the roots above, only objects in the nursery
+        * are marked/copied.
+        */
+       sgen_finalize_in_range (generation, ctx);
+       if (generation == GENERATION_OLD)
+               sgen_finalize_in_range (GENERATION_NURSERY, ctx);
+       /* drain the new stack that might have been created */
+       SGEN_LOG (6, "Precise scan of gray area post fin");
+       sgen_drain_gray_stack (-1, ctx);
+
+       /*
+        * This must be done again after processing finalizable objects since CWL slots are cleared only after the key is finalized.
+        */
+       done_with_ephemerons = 0;
+       do {
+               done_with_ephemerons = sgen_client_mark_ephemerons (ctx);
+               sgen_drain_gray_stack (-1, ctx);
+               ++ephemeron_rounds;
+       } while (!done_with_ephemerons);
+
+       sgen_client_clear_unreachable_ephemerons (ctx);
+
+       /*
+        * We clear togglerefs only after all possible chances of revival are done. 
+        * This is semantically more inline with what users expect and it allows for
+        * user finalizers to correctly interact with TR objects.
+       */
+       sgen_client_clear_togglerefs (start_addr, end_addr, ctx);
+
+       TV_GETTIME (btv);
+       SGEN_LOG (2, "Finalize queue handling scan for %s generation: %ld usecs %d ephemeron rounds", generation_name (generation), TV_ELAPSED (atv, btv), ephemeron_rounds);
+
+       /*
+        * handle disappearing links
+        * Note we do this after checking the finalization queue because if an object
+        * survives (at least long enough to be finalized) we don't clear the link.
+        * This also deals with a possible issue with the monitor reclamation: with the Boehm
+        * GC a finalized object my lose the monitor because it is cleared before the finalizer is
+        * called.
+        */
+       g_assert (sgen_gray_object_queue_is_empty (queue));
+       for (;;) {
+               sgen_null_link_in_range (generation, FALSE, ctx);
+               if (generation == GENERATION_OLD)
+                       sgen_null_link_in_range (GENERATION_NURSERY, FALSE, ctx);
+               if (sgen_gray_object_queue_is_empty (queue))
+                       break;
+               sgen_drain_gray_stack (-1, ctx);
+       }
+
+       g_assert (sgen_gray_object_queue_is_empty (queue));
+
+       sgen_gray_object_queue_trim_free_list (queue);
+}
+
+void
+sgen_check_section_scan_starts (GCMemSection *section)
+{
+       size_t i;
+       for (i = 0; i < section->num_scan_start; ++i) {
+               if (section->scan_starts [i]) {
+                       mword size = safe_object_get_size ((GCObject*) section->scan_starts [i]);
+                       SGEN_ASSERT (0, size >= SGEN_CLIENT_MINIMUM_OBJECT_SIZE && size <= MAX_SMALL_OBJ_SIZE, "Weird object size at scan starts.");
+               }
+       }
+}
+
+static void
+check_scan_starts (void)
+{
+       if (!do_scan_starts_check)
+               return;
+       sgen_check_section_scan_starts (nursery_section);
+       major_collector.check_scan_starts ();
+}
+
+static void
+scan_from_registered_roots (char *addr_start, char *addr_end, int root_type, ScanCopyContext ctx)
+{
+       void **start_root;
+       RootRecord *root;
+       SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
+               SGEN_LOG (6, "Precise root scan %p-%p (desc: %p)", start_root, root->end_root, (void*)root->root_desc);
+               precisely_scan_objects_from (start_root, (void**)root->end_root, addr_start, addr_end, root->root_desc, ctx);
+       } SGEN_HASH_TABLE_FOREACH_END;
+}
+
+static void
+init_stats (void)
+{
+       static gboolean inited = FALSE;
+
+       if (inited)
+               return;
+
+       mono_counters_register ("Collection max time",  MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME | MONO_COUNTER_MONOTONIC, &time_max);
+
+       mono_counters_register ("Minor fragment clear", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_pre_collection_fragment_clear);
+       mono_counters_register ("Minor pinning", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_pinning);
+       mono_counters_register ("Minor scan remembered set", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_remsets);
+       mono_counters_register ("Minor scan pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_pinned);
+       mono_counters_register ("Minor scan roots", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_scan_roots);
+       mono_counters_register ("Minor fragment creation", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_minor_fragment_creation);
+
+       mono_counters_register ("Major fragment clear", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_pre_collection_fragment_clear);
+       mono_counters_register ("Major pinning", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_pinning);
+       mono_counters_register ("Major scan pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_pinned);
+       mono_counters_register ("Major scan roots", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_roots);
+       mono_counters_register ("Major scan mod union", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_scan_mod_union);
+       mono_counters_register ("Major finish gray stack", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_finish_gray_stack);
+       mono_counters_register ("Major free big objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_free_bigobjs);
+       mono_counters_register ("Major LOS sweep", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_los_sweep);
+       mono_counters_register ("Major sweep", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_sweep);
+       mono_counters_register ("Major fragment creation", MONO_COUNTER_GC | MONO_COUNTER_ULONG | MONO_COUNTER_TIME, &time_major_fragment_creation);
+
+       mono_counters_register ("Number of pinned objects", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_pinned_objects);
+
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("WBarrier remember pointer", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_add_to_global_remset);
+       mono_counters_register ("WBarrier set arrayref", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_set_arrayref);
+       mono_counters_register ("WBarrier arrayref copy", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_arrayref_copy);
+       mono_counters_register ("WBarrier generic store called", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_generic_store);
+       mono_counters_register ("WBarrier generic atomic store called", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_generic_store_atomic);
+       mono_counters_register ("WBarrier set root", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_set_root);
+       mono_counters_register ("WBarrier value copy", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_value_copy);
+       mono_counters_register ("WBarrier object copy", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_wbarrier_object_copy);
+
+       mono_counters_register ("# objects allocated degraded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_alloced_degraded);
+       mono_counters_register ("bytes allocated degraded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_bytes_alloced_degraded);
+
+       mono_counters_register ("# copy_object() called (nursery)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copy_object_called_nursery);
+       mono_counters_register ("# objects copied (nursery)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_copied_nursery);
+       mono_counters_register ("# copy_object() called (major)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_copy_object_called_major);
+       mono_counters_register ("# objects copied (major)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_objects_copied_major);
+
+       mono_counters_register ("# scan_object() called (nursery)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scan_object_called_nursery);
+       mono_counters_register ("# scan_object() called (major)", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_scan_object_called_major);
+
+       mono_counters_register ("Slots allocated in vain", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_slots_allocated_in_vain);
+
+       mono_counters_register ("# nursery copy_object() failed from space", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_from_space);
+       mono_counters_register ("# nursery copy_object() failed forwarded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_forwarded);
+       mono_counters_register ("# nursery copy_object() failed pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_pinned);
+       mono_counters_register ("# nursery copy_object() failed to space", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_copy_object_failed_to_space);
+
+       sgen_nursery_allocator_init_heavy_stats ();
+#endif
+
+       inited = TRUE;
+}
+
+
+static void
+reset_pinned_from_failed_allocation (void)
+{
+       bytes_pinned_from_failed_allocation = 0;
+}
+
+void
+sgen_set_pinned_from_failed_allocation (mword objsize)
+{
+       bytes_pinned_from_failed_allocation += objsize;
+}
+
+gboolean
+sgen_collection_is_concurrent (void)
+{
+       switch (current_collection_generation) {
+       case GENERATION_NURSERY:
+               return FALSE;
+       case GENERATION_OLD:
+               return concurrent_collection_in_progress;
+       default:
+               g_error ("Invalid current generation %d", current_collection_generation);
+       }
+       return FALSE;
+}
+
+gboolean
+sgen_concurrent_collection_in_progress (void)
+{
+       return concurrent_collection_in_progress;
+}
+
+typedef struct {
+       SgenThreadPoolJob job;
+       SgenObjectOperations *ops;
+} ScanJob;
+
+static void
+job_remembered_set_scan (void *worker_data_untyped, SgenThreadPoolJob *job)
+{
+       WorkerData *worker_data = worker_data_untyped;
+       ScanJob *job_data = (ScanJob*)job;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
+       remset.scan_remsets (ctx);
+}
+
+typedef struct {
+       SgenThreadPoolJob job;
+       SgenObjectOperations *ops;
+       char *heap_start;
+       char *heap_end;
+       int root_type;
+} ScanFromRegisteredRootsJob;
+
+static void
+job_scan_from_registered_roots (void *worker_data_untyped, SgenThreadPoolJob *job)
+{
+       WorkerData *worker_data = worker_data_untyped;
+       ScanFromRegisteredRootsJob *job_data = (ScanFromRegisteredRootsJob*)job;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
+
+       scan_from_registered_roots (job_data->heap_start, job_data->heap_end, job_data->root_type, ctx);
+}
+
+typedef struct {
+       SgenThreadPoolJob job;
+       SgenObjectOperations *ops;
+       char *heap_start;
+       char *heap_end;
+} ScanThreadDataJob;
+
+static void
+job_scan_thread_data (void *worker_data_untyped, SgenThreadPoolJob *job)
+{
+       WorkerData *worker_data = worker_data_untyped;
+       ScanThreadDataJob *job_data = (ScanThreadDataJob*)job;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
+
+       sgen_client_scan_thread_data (job_data->heap_start, job_data->heap_end, TRUE, ctx);
+}
+
+typedef struct {
+       SgenThreadPoolJob job;
+       SgenObjectOperations *ops;
+       SgenPointerQueue *queue;
+} ScanFinalizerEntriesJob;
+
+static void
+job_scan_finalizer_entries (void *worker_data_untyped, SgenThreadPoolJob *job)
+{
+       WorkerData *worker_data = worker_data_untyped;
+       ScanFinalizerEntriesJob *job_data = (ScanFinalizerEntriesJob*)job;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
+
+       scan_finalizer_entries (job_data->queue, ctx);
+}
+
+static void
+job_scan_major_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob *job)
+{
+       WorkerData *worker_data = worker_data_untyped;
+       ScanJob *job_data = (ScanJob*)job;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
+
+       g_assert (concurrent_collection_in_progress);
+       major_collector.scan_card_table (TRUE, ctx);
+}
+
+static void
+job_scan_los_mod_union_card_table (void *worker_data_untyped, SgenThreadPoolJob *job)
+{
+       WorkerData *worker_data = worker_data_untyped;
+       ScanJob *job_data = (ScanJob*)job;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (job_data->ops, sgen_workers_get_job_gray_queue (worker_data));
+
+       g_assert (concurrent_collection_in_progress);
+       sgen_los_scan_card_table (TRUE, ctx);
+}
+
+static void
+init_gray_queue (void)
+{
+       if (sgen_collection_is_concurrent ())
+               sgen_workers_init_distribute_gray_queue ();
+       sgen_gray_object_queue_init (&gray_queue, NULL);
+}
+
+static void
+enqueue_scan_from_roots_jobs (char *heap_start, char *heap_end, SgenObjectOperations *ops)
+{
+       ScanFromRegisteredRootsJob *scrrj;
+       ScanThreadDataJob *stdj;
+       ScanFinalizerEntriesJob *sfej;
+
+       /* registered roots, this includes static fields */
+
+       scrrj = (ScanFromRegisteredRootsJob*)sgen_thread_pool_job_alloc ("scan from registered roots normal", job_scan_from_registered_roots, sizeof (ScanFromRegisteredRootsJob));
+       scrrj->ops = ops;
+       scrrj->heap_start = heap_start;
+       scrrj->heap_end = heap_end;
+       scrrj->root_type = ROOT_TYPE_NORMAL;
+       sgen_workers_enqueue_job (&scrrj->job);
+
+       scrrj = (ScanFromRegisteredRootsJob*)sgen_thread_pool_job_alloc ("scan from registered roots wbarrier", job_scan_from_registered_roots, sizeof (ScanFromRegisteredRootsJob));
+       scrrj->ops = ops;
+       scrrj->heap_start = heap_start;
+       scrrj->heap_end = heap_end;
+       scrrj->root_type = ROOT_TYPE_WBARRIER;
+       sgen_workers_enqueue_job (&scrrj->job);
+
+       /* Threads */
+
+       stdj = (ScanThreadDataJob*)sgen_thread_pool_job_alloc ("scan thread data", job_scan_thread_data, sizeof (ScanThreadDataJob));
+       stdj->heap_start = heap_start;
+       stdj->heap_end = heap_end;
+       sgen_workers_enqueue_job (&stdj->job);
+
+       /* Scan the list of objects ready for finalization. */
+
+       sfej = (ScanFinalizerEntriesJob*)sgen_thread_pool_job_alloc ("scan finalizer entries", job_scan_finalizer_entries, sizeof (ScanFinalizerEntriesJob));
+       sfej->queue = &fin_ready_queue;
+       sfej->ops = ops;
+       sgen_workers_enqueue_job (&sfej->job);
+
+       sfej = (ScanFinalizerEntriesJob*)sgen_thread_pool_job_alloc ("scan critical finalizer entries", job_scan_finalizer_entries, sizeof (ScanFinalizerEntriesJob));
+       sfej->queue = &critical_fin_queue;
+       sfej->ops = ops;
+       sgen_workers_enqueue_job (&sfej->job);
+}
+
+/*
+ * Perform a nursery collection.
+ *
+ * Return whether any objects were late-pinned due to being out of memory.
+ */
+static gboolean
+collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
+{
+       gboolean needs_major;
+       size_t max_garbage_amount;
+       char *nursery_next;
+       mword fragment_total;
+       ScanJob *sj;
+       SgenObjectOperations *object_ops = &sgen_minor_collector.serial_ops;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (object_ops, &gray_queue);
+       TV_DECLARE (atv);
+       TV_DECLARE (btv);
+
+       if (disable_minor_collections)
+               return TRUE;
+
+       TV_GETTIME (last_minor_collection_start_tv);
+       atv = last_minor_collection_start_tv;
+
+       binary_protocol_collection_begin (gc_stats.minor_gc_count, GENERATION_NURSERY);
+
+       if (do_verify_nursery || do_dump_nursery_content)
+               sgen_debug_verify_nursery (do_dump_nursery_content);
+
+       current_collection_generation = GENERATION_NURSERY;
+
+       SGEN_ASSERT (0, !sgen_collection_is_concurrent (), "Why is the nursery collection concurrent?");
+
+       reset_pinned_from_failed_allocation ();
+
+       check_scan_starts ();
+
+       sgen_nursery_alloc_prepare_for_minor ();
+
+       degraded_mode = 0;
+       objects_pinned = 0;
+       nursery_next = sgen_nursery_alloc_get_upper_alloc_bound ();
+       /* FIXME: optimize later to use the higher address where an object can be present */
+       nursery_next = MAX (nursery_next, sgen_get_nursery_end ());
+
+       SGEN_LOG (1, "Start nursery collection %d %p-%p, size: %d", gc_stats.minor_gc_count, sgen_get_nursery_start (), nursery_next, (int)(nursery_next - sgen_get_nursery_start ()));
+       max_garbage_amount = nursery_next - sgen_get_nursery_start ();
+       g_assert (nursery_section->size >= max_garbage_amount);
+
+       /* world must be stopped already */
+       TV_GETTIME (btv);
+       time_minor_pre_collection_fragment_clear += TV_ELAPSED (atv, btv);
+
+       sgen_client_pre_collection_checks ();
+
+       nursery_section->next_data = nursery_next;
+
+       major_collector.start_nursery_collection ();
+
+       sgen_memgov_minor_collection_start ();
+
+       init_gray_queue ();
+
+       gc_stats.minor_gc_count ++;
+
+       if (whole_heap_check_before_collection) {
+               sgen_clear_nursery_fragments ();
+               sgen_check_whole_heap (finish_up_concurrent_mark);
+       }
+       if (consistency_check_at_minor_collection)
+               sgen_check_consistency ();
+
+       sgen_process_fin_stage_entries ();
+       sgen_process_dislink_stage_entries ();
+
+       /* pin from pinned handles */
+       sgen_init_pinning ();
+       sgen_client_binary_protocol_mark_start (GENERATION_NURSERY);
+       pin_from_roots (sgen_get_nursery_start (), nursery_next, ctx);
+       /* pin cemented objects */
+       sgen_pin_cemented_objects ();
+       /* identify pinned objects */
+       sgen_optimize_pin_queue ();
+       sgen_pinning_setup_section (nursery_section);
+
+       pin_objects_in_nursery (FALSE, ctx);
+       sgen_pinning_trim_queue_to_section (nursery_section);
+
+       TV_GETTIME (atv);
+       time_minor_pinning += TV_ELAPSED (btv, atv);
+       SGEN_LOG (2, "Finding pinned pointers: %zd in %ld usecs", sgen_get_pinned_count (), TV_ELAPSED (btv, atv));
+       SGEN_LOG (4, "Start scan with %zd pinned objects", sgen_get_pinned_count ());
+
+       /*
+        * FIXME: When we finish a concurrent collection we do a nursery collection first,
+        * as part of which we scan the card table.  Then, later, we scan the mod union
+        * cardtable.  We should only have to do one.
+        */
+       sj = (ScanJob*)sgen_thread_pool_job_alloc ("scan remset", job_remembered_set_scan, sizeof (ScanJob));
+       sj->ops = object_ops;
+       sgen_workers_enqueue_job (&sj->job);
+
+       /* we don't have complete write barrier yet, so we scan all the old generation sections */
+       TV_GETTIME (btv);
+       time_minor_scan_remsets += TV_ELAPSED (atv, btv);
+       SGEN_LOG (2, "Old generation scan: %ld usecs", TV_ELAPSED (atv, btv));
+
+       sgen_drain_gray_stack (-1, ctx);
+
+       /* FIXME: Why do we do this at this specific, seemingly random, point? */
+       sgen_client_collecting_minor (&fin_ready_queue, &critical_fin_queue);
+
+       TV_GETTIME (atv);
+       time_minor_scan_pinned += TV_ELAPSED (btv, atv);
+
+       enqueue_scan_from_roots_jobs (sgen_get_nursery_start (), nursery_next, object_ops);
+
+       TV_GETTIME (btv);
+       time_minor_scan_roots += TV_ELAPSED (atv, btv);
+
+       finish_gray_stack (GENERATION_NURSERY, ctx);
+
+       TV_GETTIME (atv);
+       time_minor_finish_gray_stack += TV_ELAPSED (btv, atv);
+       sgen_client_binary_protocol_mark_end (GENERATION_NURSERY);
+
+       if (objects_pinned) {
+               sgen_optimize_pin_queue ();
+               sgen_pinning_setup_section (nursery_section);
+       }
+
+       /* walk the pin_queue, build up the fragment list of free memory, unmark
+        * pinned objects as we go, memzero() the empty fragments so they are ready for the
+        * next allocations.
+        */
+       sgen_client_binary_protocol_reclaim_start (GENERATION_NURSERY);
+       fragment_total = sgen_build_nursery_fragments (nursery_section, unpin_queue);
+       if (!fragment_total)
+               degraded_mode = 1;
+
+       /* Clear TLABs for all threads */
+       sgen_clear_tlabs ();
+
+       sgen_client_binary_protocol_reclaim_end (GENERATION_NURSERY);
+       TV_GETTIME (btv);
+       time_minor_fragment_creation += TV_ELAPSED (atv, btv);
+       SGEN_LOG (2, "Fragment creation: %ld usecs, %lu bytes available", TV_ELAPSED (atv, btv), (unsigned long)fragment_total);
+
+       if (consistency_check_at_minor_collection)
+               sgen_check_major_refs ();
+
+       major_collector.finish_nursery_collection ();
+
+       TV_GETTIME (last_minor_collection_end_tv);
+       gc_stats.minor_gc_time += TV_ELAPSED (last_minor_collection_start_tv, last_minor_collection_end_tv);
+
+       sgen_debug_dump_heap ("minor", gc_stats.minor_gc_count - 1, NULL);
+
+       /* prepare the pin queue for the next collection */
+       sgen_finish_pinning ();
+       if (sgen_have_pending_finalizers ()) {
+               SGEN_LOG (4, "Finalizer-thread wakeup");
+               sgen_client_finalize_notify ();
+       }
+       sgen_pin_stats_reset ();
+       /* clear cemented hash */
+       sgen_cement_clear_below_threshold ();
+
+       g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
+
+       remset.finish_minor_collection ();
+
+       check_scan_starts ();
+
+       binary_protocol_flush_buffers (FALSE);
+
+       sgen_memgov_minor_collection_end ();
+
+       /*objects are late pinned because of lack of memory, so a major is a good call*/
+       needs_major = objects_pinned > 0;
+       current_collection_generation = -1;
+       objects_pinned = 0;
+
+       binary_protocol_collection_end (gc_stats.minor_gc_count - 1, GENERATION_NURSERY, 0, 0);
+
+       if (check_nursery_objects_pinned && !sgen_minor_collector.is_split)
+               sgen_check_nursery_objects_pinned (unpin_queue != NULL);
+
+       return needs_major;
+}
+
+static void
+scan_nursery_objects_callback (char *obj, size_t size, ScanCopyContext *ctx)
+{
+       /*
+        * This is called on all objects in the nursery, including pinned ones, so we need
+        * to use sgen_obj_get_descriptor_safe(), which masks out the vtable tag bits.
+        */
+       ctx->ops->scan_object (obj, sgen_obj_get_descriptor_safe (obj), ctx->queue);
+}
+
+static void
+scan_nursery_objects (ScanCopyContext ctx)
+{
+       sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
+                       (IterateObjectCallbackFunc)scan_nursery_objects_callback, (void*)&ctx, FALSE);
+}
+
+typedef enum {
+       COPY_OR_MARK_FROM_ROOTS_SERIAL,
+       COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT,
+       COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT
+} CopyOrMarkFromRootsMode;
+
+static void
+major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMode mode, gboolean scan_whole_nursery, SgenObjectOperations *object_ops)
+{
+       LOSObject *bigobj;
+       TV_DECLARE (atv);
+       TV_DECLARE (btv);
+       /* FIXME: only use these values for the precise scan
+        * note that to_space pointers should be excluded anyway...
+        */
+       char *heap_start = NULL;
+       char *heap_end = (char*)-1;
+       ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (object_ops, WORKERS_DISTRIBUTE_GRAY_QUEUE);
+       gboolean concurrent = mode != COPY_OR_MARK_FROM_ROOTS_SERIAL;
+
+       SGEN_ASSERT (0, !!concurrent == !!concurrent_collection_in_progress, "We've been called with the wrong mode.");
+
+       if (scan_whole_nursery)
+               SGEN_ASSERT (0, mode == COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT, "Scanning whole nursery only makes sense when we're finishing a concurrent collection.");
+
+       if (concurrent) {
+               /*This cleans up unused fragments */
+               sgen_nursery_allocator_prepare_for_pinning ();
+
+               if (do_concurrent_checks)
+                       sgen_debug_check_nursery_is_clean ();
+       } else {
+               /* The concurrent collector doesn't touch the nursery. */
+               sgen_nursery_alloc_prepare_for_major ();
+       }
+
+       init_gray_queue ();
+
+       TV_GETTIME (atv);
+
+       /* Pinning depends on this */
+       sgen_clear_nursery_fragments ();
+
+       if (whole_heap_check_before_collection)
+               sgen_check_whole_heap (mode == COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT);
+
+       TV_GETTIME (btv);
+       time_major_pre_collection_fragment_clear += TV_ELAPSED (atv, btv);
+
+       if (!sgen_collection_is_concurrent ())
+               nursery_section->next_data = sgen_get_nursery_end ();
+       /* we should also coalesce scanning from sections close to each other
+        * and deal with pointers outside of the sections later.
+        */
+
+       objects_pinned = 0;
+
+       sgen_client_pre_collection_checks ();
+
+       if (!concurrent) {
+               /* Remsets are not useful for a major collection */
+               remset.clear_cards ();
+       }
+
+       sgen_process_fin_stage_entries ();
+       sgen_process_dislink_stage_entries ();
+
+       TV_GETTIME (atv);
+       sgen_init_pinning ();
+       SGEN_LOG (6, "Collecting pinned addresses");
+       pin_from_roots ((void*)lowest_heap_address, (void*)highest_heap_address, ctx);
+
+       if (mode != COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT) {
+               if (major_collector.is_concurrent) {
+                       /*
+                        * The concurrent major collector cannot evict
+                        * yet, so we need to pin cemented objects to
+                        * not break some asserts.
+                        *
+                        * FIXME: We could evict now!
+                        */
+                       sgen_pin_cemented_objects ();
+               }
+       }
+
+       sgen_optimize_pin_queue ();
+
+       sgen_client_collecting_major_1 ();
+
+       /*
+        * pin_queue now contains all candidate pointers, sorted and
+        * uniqued.  We must do two passes now to figure out which
+        * objects are pinned.
+        *
+        * The first is to find within the pin_queue the area for each
+        * section.  This requires that the pin_queue be sorted.  We
+        * also process the LOS objects and pinned chunks here.
+        *
+        * The second, destructive, pass is to reduce the section
+        * areas to pointers to the actually pinned objects.
+        */
+       SGEN_LOG (6, "Pinning from sections");
+       /* first pass for the sections */
+       sgen_find_section_pin_queue_start_end (nursery_section);
+       /* identify possible pointers to the insize of large objects */
+       SGEN_LOG (6, "Pinning from large objects");
+       for (bigobj = los_object_list; bigobj; bigobj = bigobj->next) {
+               size_t dummy;
+               if (sgen_find_optimized_pin_queue_area (bigobj->data, (char*)bigobj->data + sgen_los_object_size (bigobj), &dummy, &dummy)) {
+                       binary_protocol_pin (bigobj->data, (gpointer)LOAD_VTABLE (bigobj->data), safe_object_get_size (((GCObject*)(bigobj->data))));
+
+                       if (sgen_los_object_is_pinned (bigobj->data)) {
+                               SGEN_ASSERT (0, mode == COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT, "LOS objects can only be pinned here after concurrent marking.");
+                               continue;
+                       }
+                       sgen_los_pin_object (bigobj->data);
+                       if (SGEN_OBJECT_HAS_REFERENCES (bigobj->data))
+                               GRAY_OBJECT_ENQUEUE (WORKERS_DISTRIBUTE_GRAY_QUEUE, bigobj->data, sgen_obj_get_descriptor (bigobj->data));
+                       sgen_pin_stats_register_object ((char*) bigobj->data, safe_object_get_size ((GCObject*) bigobj->data));
+                       SGEN_LOG (6, "Marked large object %p (%s) size: %lu from roots", bigobj->data,
+                                       sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (bigobj->data)),
+                                       (unsigned long)sgen_los_object_size (bigobj));
+
+                       sgen_client_pinned_los_object (bigobj->data);
+               }
+       }
+       /* second pass for the sections */
+
+       /*
+        * Concurrent mark never follows references into the nursery.  In the start and
+        * finish pauses we must scan live nursery objects, though.
+        *
+        * In the finish pause we do this conservatively by scanning all nursery objects.
+        * Previously we would only scan pinned objects here.  We assumed that all objects
+        * that were pinned during the nursery collection immediately preceding this finish
+        * mark would be pinned again here.  Due to the way we get the stack end for the GC
+        * thread, however, that's not necessarily the case: we scan part of the stack used
+        * by the GC itself, which changes constantly, so pinning isn't entirely
+        * deterministic.
+        *
+        * The split nursery also complicates things because non-pinned objects can survive
+        * in the nursery.  That's why we need to do a full scan of the nursery for it, too.
+        *
+        * In the future we shouldn't do a preceding nursery collection at all and instead
+        * do the finish pause with promotion from the nursery.
+        *
+        * A further complication arises when we have late-pinned objects from the preceding
+        * nursery collection.  Those are the result of being out of memory when trying to
+        * evacuate objects.  They won't be found from the roots, so we just scan the whole
+        * nursery.
+        *
+        * Non-concurrent mark evacuates from the nursery, so it's
+        * sufficient to just scan pinned nursery objects.
+        */
+       if (scan_whole_nursery || mode == COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT || (concurrent && sgen_minor_collector.is_split)) {
+               scan_nursery_objects (ctx);
+       } else {
+               pin_objects_in_nursery (concurrent, ctx);
+               if (check_nursery_objects_pinned && !sgen_minor_collector.is_split)
+                       sgen_check_nursery_objects_pinned (mode != COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT);
+       }
+
+       major_collector.pin_objects (WORKERS_DISTRIBUTE_GRAY_QUEUE);
+       if (old_next_pin_slot)
+               *old_next_pin_slot = sgen_get_pinned_count ();
+
+       TV_GETTIME (btv);
+       time_major_pinning += TV_ELAPSED (atv, btv);
+       SGEN_LOG (2, "Finding pinned pointers: %zd in %ld usecs", sgen_get_pinned_count (), TV_ELAPSED (atv, btv));
+       SGEN_LOG (4, "Start scan with %zd pinned objects", sgen_get_pinned_count ());
+
+       major_collector.init_to_space ();
+
+       /*
+        * The concurrent collector doesn't move objects, neither on
+        * the major heap nor in the nursery, so we can mark even
+        * before pinning has finished.  For the non-concurrent
+        * collector we start the workers after pinning.
+        */
+       if (mode != COPY_OR_MARK_FROM_ROOTS_SERIAL) {
+               SGEN_ASSERT (0, sgen_workers_all_done (), "Why are the workers not done when we start or finish a major collection?");
+               sgen_workers_start_all_workers (object_ops);
+               gray_queue_enable_redirect (WORKERS_DISTRIBUTE_GRAY_QUEUE);
+       }
+
+#ifdef SGEN_DEBUG_INTERNAL_ALLOC
+       main_gc_thread = mono_native_thread_self ();
+#endif
+
+       sgen_client_collecting_major_2 ();
+
+       TV_GETTIME (atv);
+       time_major_scan_pinned += TV_ELAPSED (btv, atv);
+
+       sgen_client_collecting_major_3 (&fin_ready_queue, &critical_fin_queue);
+
+       /*
+        * FIXME: is this the right context?  It doesn't seem to contain a copy function
+        * unless we're concurrent.
+        */
+       enqueue_scan_from_roots_jobs (heap_start, heap_end, object_ops);
+
+       TV_GETTIME (btv);
+       time_major_scan_roots += TV_ELAPSED (atv, btv);
+
+       if (mode == COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT) {
+               ScanJob *sj;
+
+               /* Mod union card table */
+               sj = (ScanJob*)sgen_thread_pool_job_alloc ("scan mod union cardtable", job_scan_major_mod_union_card_table, sizeof (ScanJob));
+               sj->ops = object_ops;
+               sgen_workers_enqueue_job (&sj->job);
+
+               sj = (ScanJob*)sgen_thread_pool_job_alloc ("scan LOS mod union cardtable", job_scan_los_mod_union_card_table, sizeof (ScanJob));
+               sj->ops = object_ops;
+               sgen_workers_enqueue_job (&sj->job);
+
+               TV_GETTIME (atv);
+               time_major_scan_mod_union += TV_ELAPSED (btv, atv);
+       }
+}
+
+static void
+major_finish_copy_or_mark (void)
+{
+       if (!concurrent_collection_in_progress)
+               return;
+
+       /*
+        * Prepare the pin queue for the next collection.  Since pinning runs on the worker
+        * threads we must wait for the jobs to finish before we can reset it.
+        */
+       sgen_workers_wait_for_jobs_finished ();
+       sgen_finish_pinning ();
+
+       sgen_pin_stats_reset ();
+
+       if (do_concurrent_checks)
+               sgen_debug_check_nursery_is_clean ();
+}
+
+static void
+major_start_collection (gboolean concurrent, size_t *old_next_pin_slot)
+{
+       SgenObjectOperations *object_ops;
+
+       binary_protocol_collection_begin (gc_stats.major_gc_count, GENERATION_OLD);
+
+       current_collection_generation = GENERATION_OLD;
+
+       g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
+
+       sgen_cement_reset ();
+
+       if (concurrent) {
+               g_assert (major_collector.is_concurrent);
+               concurrent_collection_in_progress = TRUE;
+
+               object_ops = &major_collector.major_ops_concurrent_start;
+       } else {
+               object_ops = &major_collector.major_ops_serial;
+       }
+
+       reset_pinned_from_failed_allocation ();
+
+       sgen_memgov_major_collection_start ();
+
+       //count_ref_nonref_objs ();
+       //consistency_check ();
+
+       check_scan_starts ();
+
+       degraded_mode = 0;
+       SGEN_LOG (1, "Start major collection %d", gc_stats.major_gc_count);
+       gc_stats.major_gc_count ++;
+
+       if (major_collector.start_major_collection)
+               major_collector.start_major_collection ();
+
+       major_copy_or_mark_from_roots (old_next_pin_slot, concurrent ? COPY_OR_MARK_FROM_ROOTS_START_CONCURRENT : COPY_OR_MARK_FROM_ROOTS_SERIAL, FALSE, object_ops);
+       major_finish_copy_or_mark ();
+}
+
+static void
+major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean forced, gboolean scan_whole_nursery)
+{
+       ScannedObjectCounts counts;
+       SgenObjectOperations *object_ops;
+       TV_DECLARE (atv);
+       TV_DECLARE (btv);
+
+       TV_GETTIME (btv);
+
+       if (concurrent_collection_in_progress) {
+               object_ops = &major_collector.major_ops_concurrent_finish;
+
+               major_copy_or_mark_from_roots (NULL, COPY_OR_MARK_FROM_ROOTS_FINISH_CONCURRENT, scan_whole_nursery, object_ops);
+
+               major_finish_copy_or_mark ();
+
+               sgen_workers_join ();
+
+               SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&gray_queue), "Why is the gray queue not empty after workers have finished working?");
+
+#ifdef SGEN_DEBUG_INTERNAL_ALLOC
+               main_gc_thread = NULL;
+#endif
+
+               if (do_concurrent_checks)
+                       sgen_debug_check_nursery_is_clean ();
+       } else {
+               SGEN_ASSERT (0, !scan_whole_nursery, "scan_whole_nursery only applies to concurrent collections");
+               object_ops = &major_collector.major_ops_serial;
+       }
+
+       /*
+        * The workers have stopped so we need to finish gray queue
+        * work that might result from finalization in the main GC
+        * thread.  Redirection must therefore be turned off.
+        */
+       sgen_gray_object_queue_disable_alloc_prepare (&gray_queue);
+       g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
+
+       /* all the objects in the heap */
+       finish_gray_stack (GENERATION_OLD, CONTEXT_FROM_OBJECT_OPERATIONS (object_ops, &gray_queue));
+       TV_GETTIME (atv);
+       time_major_finish_gray_stack += TV_ELAPSED (btv, atv);
+
+       SGEN_ASSERT (0, sgen_workers_all_done (), "Can't have workers working after joining");
+
+       if (objects_pinned) {
+               g_assert (!concurrent_collection_in_progress);
+
+               /*
+                * This is slow, but we just OOM'd.
+                *
+                * See comment at `sgen_pin_queue_clear_discarded_entries` for how the pin
+                * queue is laid out at this point.
+                */
+               sgen_pin_queue_clear_discarded_entries (nursery_section, old_next_pin_slot);
+               /*
+                * We need to reestablish all pinned nursery objects in the pin queue
+                * because they're needed for fragment creation.  Unpinning happens by
+                * walking the whole queue, so it's not necessary to reestablish where major
+                * heap block pins are - all we care is that they're still in there
+                * somewhere.
+                */
+               sgen_optimize_pin_queue ();
+               sgen_find_section_pin_queue_start_end (nursery_section);
+               objects_pinned = 0;
+       }
+
+       reset_heap_boundaries ();
+       sgen_update_heap_boundaries ((mword)sgen_get_nursery_start (), (mword)sgen_get_nursery_end ());
+
+       if (!concurrent_collection_in_progress) {
+               /* walk the pin_queue, build up the fragment list of free memory, unmark
+                * pinned objects as we go, memzero() the empty fragments so they are ready for the
+                * next allocations.
+                */
+               if (!sgen_build_nursery_fragments (nursery_section, NULL))
+                       degraded_mode = 1;
+
+               /* prepare the pin queue for the next collection */
+               sgen_finish_pinning ();
+
+               /* Clear TLABs for all threads */
+               sgen_clear_tlabs ();
+
+               sgen_pin_stats_reset ();
+       }
+
+       sgen_cement_clear_below_threshold ();
+
+       if (check_mark_bits_after_major_collection)
+               sgen_check_heap_marked (concurrent_collection_in_progress);
+
+       TV_GETTIME (btv);
+       time_major_fragment_creation += TV_ELAPSED (atv, btv);
+
+       binary_protocol_sweep_begin (GENERATION_OLD, !major_collector.sweeps_lazily);
+
+       TV_GETTIME (atv);
+       time_major_free_bigobjs += TV_ELAPSED (btv, atv);
+
+       sgen_los_sweep ();
+
+       TV_GETTIME (btv);
+       time_major_los_sweep += TV_ELAPSED (atv, btv);
+
+       major_collector.sweep ();
+
+       binary_protocol_sweep_end (GENERATION_OLD, !major_collector.sweeps_lazily);
+
+       TV_GETTIME (atv);
+       time_major_sweep += TV_ELAPSED (btv, atv);
+
+       sgen_debug_dump_heap ("major", gc_stats.major_gc_count - 1, reason);
+
+       if (sgen_have_pending_finalizers ()) {
+               SGEN_LOG (4, "Finalizer-thread wakeup");
+               sgen_client_finalize_notify ();
+       }
+
+       g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
+
+       sgen_memgov_major_collection_end (forced);
+       current_collection_generation = -1;
+
+       memset (&counts, 0, sizeof (ScannedObjectCounts));
+       major_collector.finish_major_collection (&counts);
+
+       g_assert (sgen_section_gray_queue_is_empty (sgen_workers_get_distribute_section_gray_queue ()));
+
+       SGEN_ASSERT (0, sgen_workers_all_done (), "Can't have workers working after major collection has finished");
+       if (concurrent_collection_in_progress)
+               concurrent_collection_in_progress = FALSE;
+
+       check_scan_starts ();
+
+       binary_protocol_flush_buffers (FALSE);
+
+       //consistency_check ();
+
+       binary_protocol_collection_end (gc_stats.major_gc_count - 1, GENERATION_OLD, counts.num_scanned_objects, counts.num_unique_scanned_objects);
+}
+
+static gboolean
+major_do_collection (const char *reason, gboolean forced)
+{
+       TV_DECLARE (time_start);
+       TV_DECLARE (time_end);
+       size_t old_next_pin_slot;
+
+       if (disable_major_collections)
+               return FALSE;
+
+       if (major_collector.get_and_reset_num_major_objects_marked) {
+               long long num_marked = major_collector.get_and_reset_num_major_objects_marked ();
+               g_assert (!num_marked);
+       }
+
+       /* world must be stopped already */
+       TV_GETTIME (time_start);
+
+       major_start_collection (FALSE, &old_next_pin_slot);
+       major_finish_collection (reason, old_next_pin_slot, forced, FALSE);
+
+       TV_GETTIME (time_end);
+       gc_stats.major_gc_time += TV_ELAPSED (time_start, time_end);
+
+       /* FIXME: also report this to the user, preferably in gc-end. */
+       if (major_collector.get_and_reset_num_major_objects_marked)
+               major_collector.get_and_reset_num_major_objects_marked ();
+
+       return bytes_pinned_from_failed_allocation > 0;
+}
+
+static void
+major_start_concurrent_collection (const char *reason)
+{
+       TV_DECLARE (time_start);
+       TV_DECLARE (time_end);
+       long long num_objects_marked;
+
+       if (disable_major_collections)
+               return;
+
+       TV_GETTIME (time_start);
+       SGEN_TV_GETTIME (time_major_conc_collection_start);
+
+       num_objects_marked = major_collector.get_and_reset_num_major_objects_marked ();
+       g_assert (num_objects_marked == 0);
+
+       binary_protocol_concurrent_start ();
+
+       // FIXME: store reason and pass it when finishing
+       major_start_collection (TRUE, NULL);
+
+       gray_queue_redirect (&gray_queue);
+
+       num_objects_marked = major_collector.get_and_reset_num_major_objects_marked ();
+
+       TV_GETTIME (time_end);
+       gc_stats.major_gc_time += TV_ELAPSED (time_start, time_end);
+
+       current_collection_generation = -1;
+}
+
+/*
+ * Returns whether the major collection has finished.
+ */
+static gboolean
+major_should_finish_concurrent_collection (void)
+{
+       SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&gray_queue), "Why is the gray queue not empty before we have started doing anything?");
+       return sgen_workers_all_done ();
+}
+
+static void
+major_update_concurrent_collection (void)
+{
+       TV_DECLARE (total_start);
+       TV_DECLARE (total_end);
+
+       TV_GETTIME (total_start);
+
+       binary_protocol_concurrent_update ();
+
+       major_collector.update_cardtable_mod_union ();
+       sgen_los_update_cardtable_mod_union ();
+
+       TV_GETTIME (total_end);
+       gc_stats.major_gc_time += TV_ELAPSED (total_start, total_end);
+}
+
+static void
+major_finish_concurrent_collection (gboolean forced)
+{
+       TV_DECLARE (total_start);
+       TV_DECLARE (total_end);
+       gboolean late_pinned;
+       SgenGrayQueue unpin_queue;
+       memset (&unpin_queue, 0, sizeof (unpin_queue));
+
+       TV_GETTIME (total_start);
+
+       binary_protocol_concurrent_finish ();
+
+       /*
+        * The major collector can add global remsets which are processed in the finishing
+        * nursery collection, below.  That implies that the workers must have finished
+        * marking before the nursery collection is allowed to run, otherwise we might miss
+        * some remsets.
+        */
+       sgen_workers_wait ();
+
+       SGEN_TV_GETTIME (time_major_conc_collection_end);
+       gc_stats.major_gc_time_concurrent += SGEN_TV_ELAPSED (time_major_conc_collection_start, time_major_conc_collection_end);
+
+       major_collector.update_cardtable_mod_union ();
+       sgen_los_update_cardtable_mod_union ();
+
+       late_pinned = collect_nursery (&unpin_queue, TRUE);
+
+       if (mod_union_consistency_check)
+               sgen_check_mod_union_consistency ();
+
+       current_collection_generation = GENERATION_OLD;
+       major_finish_collection ("finishing", -1, forced, late_pinned);
+
+       if (whole_heap_check_before_collection)
+               sgen_check_whole_heap (FALSE);
+
+       unpin_objects_from_queue (&unpin_queue);
+       sgen_gray_object_queue_deinit (&unpin_queue);
+
+       TV_GETTIME (total_end);
+       gc_stats.major_gc_time += TV_ELAPSED (total_start, total_end) - TV_ELAPSED (last_minor_collection_start_tv, last_minor_collection_end_tv);
+
+       current_collection_generation = -1;
+}
+
+/*
+ * Ensure an allocation request for @size will succeed by freeing enough memory.
+ *
+ * LOCKING: The GC lock MUST be held.
+ */
+void
+sgen_ensure_free_space (size_t size)
+{
+       int generation_to_collect = -1;
+       const char *reason = NULL;
+
+       if (size > SGEN_MAX_SMALL_OBJ_SIZE) {
+               if (sgen_need_major_collection (size)) {
+                       reason = "LOS overflow";
+                       generation_to_collect = GENERATION_OLD;
+               }
+       } else {
+               if (degraded_mode) {
+                       if (sgen_need_major_collection (size)) {
+                               reason = "Degraded mode overflow";
+                               generation_to_collect = GENERATION_OLD;
+                       }
+               } else if (sgen_need_major_collection (size)) {
+                       reason = "Minor allowance";
+                       generation_to_collect = GENERATION_OLD;
+               } else {
+                       generation_to_collect = GENERATION_NURSERY;
+                       reason = "Nursery full";                        
+               }
+       }
+
+       if (generation_to_collect == -1) {
+               if (concurrent_collection_in_progress && sgen_workers_all_done ()) {
+                       generation_to_collect = GENERATION_OLD;
+                       reason = "Finish concurrent collection";
+               }
+       }
+
+       if (generation_to_collect == -1)
+               return;
+       sgen_perform_collection (size, generation_to_collect, reason, FALSE);
+}
+
+/*
+ * LOCKING: Assumes the GC lock is held.
+ */
+void
+sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
+{
+       TV_DECLARE (gc_start);
+       TV_DECLARE (gc_end);
+       TV_DECLARE (gc_total_start);
+       TV_DECLARE (gc_total_end);
+       GGTimingInfo infos [2];
+       int overflow_generation_to_collect = -1;
+       int oldest_generation_collected = generation_to_collect;
+       const char *overflow_reason = NULL;
+
+       binary_protocol_collection_requested (generation_to_collect, requested_size, wait_to_finish ? 1 : 0);
+
+       SGEN_ASSERT (0, generation_to_collect == GENERATION_NURSERY || generation_to_collect == GENERATION_OLD, "What generation is this?");
+
+       TV_GETTIME (gc_start);
+
+       sgen_stop_world (generation_to_collect);
+
+       TV_GETTIME (gc_total_start);
+
+       if (concurrent_collection_in_progress) {
+               /*
+                * We update the concurrent collection.  If it finished, we're done.  If
+                * not, and we've been asked to do a nursery collection, we do that.
+                */
+               gboolean finish = major_should_finish_concurrent_collection () || (wait_to_finish && generation_to_collect == GENERATION_OLD);
+
+               if (finish) {
+                       major_finish_concurrent_collection (wait_to_finish);
+                       oldest_generation_collected = GENERATION_OLD;
+               } else {
+                       sgen_workers_signal_start_nursery_collection_and_wait ();
+
+                       major_update_concurrent_collection ();
+                       if (generation_to_collect == GENERATION_NURSERY)
+                               collect_nursery (NULL, FALSE);
+
+                       sgen_workers_signal_finish_nursery_collection ();
+               }
+
+               goto done;
+       }
+
+       /*
+        * If we've been asked to do a major collection, and the major collector wants to
+        * run synchronously (to evacuate), we set the flag to do that.
+        */
+       if (generation_to_collect == GENERATION_OLD &&
+                       allow_synchronous_major &&
+                       major_collector.want_synchronous_collection &&
+                       *major_collector.want_synchronous_collection) {
+               wait_to_finish = TRUE;
+       }
+
+       SGEN_ASSERT (0, !concurrent_collection_in_progress, "Why did this not get handled above?");
+
+       /*
+        * There's no concurrent collection in progress.  Collect the generation we're asked
+        * to collect.  If the major collector is concurrent and we're not forced to wait,
+        * start a concurrent collection.
+        */
+       // FIXME: extract overflow reason
+       if (generation_to_collect == GENERATION_NURSERY) {
+               if (collect_nursery (NULL, FALSE)) {
+                       overflow_generation_to_collect = GENERATION_OLD;
+                       overflow_reason = "Minor overflow";
+               }
+       } else {
+               if (major_collector.is_concurrent && !wait_to_finish) {
+                       collect_nursery (NULL, FALSE);
+                       major_start_concurrent_collection (reason);
+                       // FIXME: set infos[0] properly
+                       goto done;
+               }
+
+               if (major_do_collection (reason, wait_to_finish)) {
+                       overflow_generation_to_collect = GENERATION_NURSERY;
+                       overflow_reason = "Excessive pinning";
+               }
+       }
+
+       TV_GETTIME (gc_end);
+
+       memset (infos, 0, sizeof (infos));
+       infos [0].generation = generation_to_collect;
+       infos [0].reason = reason;
+       infos [0].is_overflow = FALSE;
+       infos [1].generation = -1;
+       infos [0].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
+
+       SGEN_ASSERT (0, !concurrent_collection_in_progress, "Why did this not get handled above?");
+
+       if (overflow_generation_to_collect != -1) {
+               /*
+                * We need to do an overflow collection, either because we ran out of memory
+                * or the nursery is fully pinned.
+                */
+
+               infos [1].generation = overflow_generation_to_collect;
+               infos [1].reason = overflow_reason;
+               infos [1].is_overflow = TRUE;
+               gc_start = gc_end;
+
+               if (overflow_generation_to_collect == GENERATION_NURSERY)
+                       collect_nursery (NULL, FALSE);
+               else
+                       major_do_collection (overflow_reason, wait_to_finish);
+
+               TV_GETTIME (gc_end);
+               infos [1].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
+
+               oldest_generation_collected = MAX (oldest_generation_collected, overflow_generation_to_collect);
+       }
+
+       SGEN_LOG (2, "Heap size: %lu, LOS size: %lu", (unsigned long)sgen_gc_get_total_heap_allocation (), (unsigned long)los_memory_usage);
+
+       /* this also sets the proper pointers for the next allocation */
+       if (generation_to_collect == GENERATION_NURSERY && !sgen_can_alloc_size (requested_size)) {
+               /* TypeBuilder and MonoMethod are killing mcs with fragmentation */
+               SGEN_LOG (1, "nursery collection didn't find enough room for %zd alloc (%zd pinned)", requested_size, sgen_get_pinned_count ());
+               sgen_dump_pin_queue ();
+               degraded_mode = 1;
+       }
+
+ done:
+       g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
+
+       TV_GETTIME (gc_total_end);
+       time_max = MAX (time_max, TV_ELAPSED (gc_total_start, gc_total_end));
+
+       sgen_restart_world (oldest_generation_collected, infos);
+}
+
+/*
+ * ######################################################################
+ * ########  Memory allocation from the OS
+ * ######################################################################
+ * This section of code deals with getting memory from the OS and
+ * allocating memory for GC-internal data structures.
+ * Internal memory can be handled with a freelist for small objects.
+ */
+
+/*
+ * Debug reporting.
+ */
+G_GNUC_UNUSED static void
+report_internal_mem_usage (void)
+{
+       printf ("Internal memory usage:\n");
+       sgen_report_internal_mem_usage ();
+       printf ("Pinned memory usage:\n");
+       major_collector.report_pinned_memory_usage ();
+}
+
+/*
+ * ######################################################################
+ * ########  Finalization support
+ * ######################################################################
+ */
+
+/*
+ * If the object has been forwarded it means it's still referenced from a root. 
+ * If it is pinned it's still alive as well.
+ * A LOS object is only alive if we have pinned it.
+ * Return TRUE if @obj is ready to be finalized.
+ */
+static inline gboolean
+sgen_is_object_alive (void *object)
+{
+       if (ptr_in_nursery (object))
+               return sgen_nursery_is_object_alive (object);
+
+       return sgen_major_is_object_alive (object);
+}
+
+/*
+ * This function returns true if @object is either alive and belongs to the
+ * current collection - major collections are full heap, so old gen objects
+ * are never alive during a minor collection.
+ */
+static inline int
+sgen_is_object_alive_and_on_current_collection (char *object)
+{
+       if (ptr_in_nursery (object))
+               return sgen_nursery_is_object_alive (object);
+
+       if (current_collection_generation == GENERATION_NURSERY)
+               return FALSE;
+
+       return sgen_major_is_object_alive (object);
+}
+
+
+gboolean
+sgen_gc_is_object_ready_for_finalization (void *object)
+{
+       return !sgen_is_object_alive (object);
+}
+
+void
+sgen_queue_finalization_entry (GCObject *obj)
+{
+       gboolean critical = sgen_client_object_has_critical_finalizer (obj);
+
+       sgen_pointer_queue_add (critical ? &critical_fin_queue : &fin_ready_queue, obj);
+
+       sgen_client_object_queued_for_finalization (obj);
+}
+
+gboolean
+sgen_object_is_live (void *obj)
+{
+       return sgen_is_object_alive_and_on_current_collection (obj);
+}
+
+/*
+ * `System.GC.WaitForPendingFinalizers` first checks `sgen_have_pending_finalizers()` to
+ * determine whether it can exit quickly.  The latter must therefore only return FALSE if
+ * all finalizers have really finished running.
+ *
+ * `sgen_gc_invoke_finalizers()` first dequeues a finalizable object, and then finalizes it.
+ * This means that just checking whether the queues are empty leaves the possibility that an
+ * object might have been dequeued but not yet finalized.  That's why we need the additional
+ * flag `pending_unqueued_finalizer`.
+ */
+
+static volatile gboolean pending_unqueued_finalizer = FALSE;
+
+int
+sgen_gc_invoke_finalizers (void)
+{
+       int count = 0;
+
+       g_assert (!pending_unqueued_finalizer);
+
+       /* FIXME: batch to reduce lock contention */
+       while (sgen_have_pending_finalizers ()) {
+               void *obj;
+
+               LOCK_GC;
+
+               /*
+                * We need to set `pending_unqueued_finalizer` before dequeing the
+                * finalizable object.
+                */
+               if (!sgen_pointer_queue_is_empty (&fin_ready_queue)) {
+                       pending_unqueued_finalizer = TRUE;
+                       mono_memory_write_barrier ();
+                       obj = sgen_pointer_queue_pop (&fin_ready_queue);
+               } else if (!sgen_pointer_queue_is_empty (&critical_fin_queue)) {
+                       pending_unqueued_finalizer = TRUE;
+                       mono_memory_write_barrier ();
+                       obj = sgen_pointer_queue_pop (&critical_fin_queue);
+               } else {
+                       obj = NULL;
+               }
+
+               if (obj)
+                       SGEN_LOG (7, "Finalizing object %p (%s)", obj, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (obj)));
+
+               UNLOCK_GC;
+
+               if (!obj)
+                       break;
+
+               count++;
+               /* the object is on the stack so it is pinned */
+               /*g_print ("Calling finalizer for object: %p (%s)\n", obj, sgen_client_object_safe_name (obj));*/
+               sgen_client_run_finalize (obj);
+       }
+
+       if (pending_unqueued_finalizer) {
+               mono_memory_write_barrier ();
+               pending_unqueued_finalizer = FALSE;
+       }
+
+       return count;
+}
+
+gboolean
+sgen_have_pending_finalizers (void)
+{
+       return pending_unqueued_finalizer || !sgen_pointer_queue_is_empty (&fin_ready_queue) || !sgen_pointer_queue_is_empty (&critical_fin_queue);
+}
+
+/*
+ * ######################################################################
+ * ########  registered roots support
+ * ######################################################################
+ */
+
+/*
+ * We do not coalesce roots.
+ */
+int
+sgen_register_root (char *start, size_t size, void *descr, int root_type)
+{
+       RootRecord new_root;
+       int i;
+       LOCK_GC;
+       for (i = 0; i < ROOT_TYPE_NUM; ++i) {
+               RootRecord *root = sgen_hash_table_lookup (&roots_hash [i], start);
+               /* we allow changing the size and the descriptor (for thread statics etc) */
+               if (root) {
+                       size_t old_size = root->end_root - start;
+                       root->end_root = start + size;
+                       g_assert (((root->root_desc != 0) && (descr != NULL)) ||
+                                         ((root->root_desc == 0) && (descr == NULL)));
+                       root->root_desc = (mword)descr;
+                       roots_size += size;
+                       roots_size -= old_size;
+                       UNLOCK_GC;
+                       return TRUE;
+               }
+       }
+
+       new_root.end_root = start + size;
+       new_root.root_desc = (mword)descr;
+
+       sgen_hash_table_replace (&roots_hash [root_type], start, &new_root, NULL);
+       roots_size += size;
+
+       SGEN_LOG (3, "Added root for range: %p-%p, descr: %p  (%d/%d bytes)", start, new_root.end_root, descr, (int)size, (int)roots_size);
+
+       UNLOCK_GC;
+       return TRUE;
+}
+
+void
+sgen_deregister_root (char* addr)
+{
+       int root_type;
+       RootRecord root;
+
+       LOCK_GC;
+       for (root_type = 0; root_type < ROOT_TYPE_NUM; ++root_type) {
+               if (sgen_hash_table_remove (&roots_hash [root_type], addr, &root))
+                       roots_size -= (root.end_root - addr);
+       }
+       UNLOCK_GC;
+}
+
+/*
+ * ######################################################################
+ * ########  Thread handling (stop/start code)
+ * ######################################################################
+ */
+
+int
+sgen_get_current_collection_generation (void)
+{
+       return current_collection_generation;
+}
+
+void*
+sgen_thread_register (SgenThreadInfo* info, void *stack_bottom_fallback)
+{
+#ifndef HAVE_KW_THREAD
+       info->tlab_start = info->tlab_next = info->tlab_temp_end = info->tlab_real_end = NULL;
+#endif
+
+       sgen_init_tlab_info (info);
+
+       sgen_client_thread_register (info, stack_bottom_fallback);
+
+       return info;
+}
+
+void
+sgen_thread_unregister (SgenThreadInfo *p)
+{
+       sgen_client_thread_unregister (p);
+}
+
+/*
+ * ######################################################################
+ * ########  Write barriers
+ * ######################################################################
+ */
+
+/*
+ * Note: the write barriers first do the needed GC work and then do the actual store:
+ * this way the value is visible to the conservative GC scan after the write barrier
+ * itself. If a GC interrupts the barrier in the middle, value will be kept alive by
+ * the conservative scan, otherwise by the remembered set scan.
+ */
+
+void
+mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
+{
+       HEAVY_STAT (++stat_wbarrier_arrayref_copy);
+       /*This check can be done without taking a lock since dest_ptr array is pinned*/
+       if (ptr_in_nursery (dest_ptr) || count <= 0) {
+               mono_gc_memmove_aligned (dest_ptr, src_ptr, count * sizeof (gpointer));
+               return;
+       }
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       if (binary_protocol_is_heavy_enabled ()) {
+               int i;
+               for (i = 0; i < count; ++i) {
+                       gpointer dest = (gpointer*)dest_ptr + i;
+                       gpointer obj = *((gpointer*)src_ptr + i);
+                       if (obj)
+                               binary_protocol_wbarrier (dest, obj, (gpointer)LOAD_VTABLE (obj));
+               }
+       }
+#endif
+
+       remset.wbarrier_arrayref_copy (dest_ptr, src_ptr, count);
+}
+
+void
+mono_gc_wbarrier_generic_nostore (gpointer ptr)
+{
+       gpointer obj;
+
+       HEAVY_STAT (++stat_wbarrier_generic_store);
+
+       sgen_client_wbarrier_generic_nostore_check (ptr);
+
+       obj = *(gpointer*)ptr;
+       if (obj)
+               binary_protocol_wbarrier (ptr, obj, (gpointer)LOAD_VTABLE (obj));
+
+       /*
+        * We need to record old->old pointer locations for the
+        * concurrent collector.
+        */
+       if (!ptr_in_nursery (obj) && !concurrent_collection_in_progress) {
+               SGEN_LOG (8, "Skipping remset at %p", ptr);
+               return;
+       }
+
+       SGEN_LOG (8, "Adding remset at %p", ptr);
+
+       remset.wbarrier_generic_nostore (ptr);
+}
+
+void
+mono_gc_wbarrier_generic_store (gpointer ptr, GCObject* value)
+{
+       SGEN_LOG (8, "Wbarrier store at %p to %p (%s)", ptr, value, value ? sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (value)) : "null");
+       SGEN_UPDATE_REFERENCE_ALLOW_NULL (ptr, value);
+       if (ptr_in_nursery (value))
+               mono_gc_wbarrier_generic_nostore (ptr);
+       sgen_dummy_use (value);
+}
+
+/* Same as mono_gc_wbarrier_generic_store () but performs the store
+ * as an atomic operation with release semantics.
+ */
+void
+mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value)
+{
+       HEAVY_STAT (++stat_wbarrier_generic_store_atomic);
+
+       SGEN_LOG (8, "Wbarrier atomic store at %p to %p (%s)", ptr, value, value ? sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (value)) : "null");
+
+       InterlockedWritePointer (ptr, value);
+
+       if (ptr_in_nursery (value))
+               mono_gc_wbarrier_generic_nostore (ptr);
+
+       sgen_dummy_use (value);
+}
+
+void
+sgen_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
+{
+       GCObject **dest = _dest;
+       GCObject **src = _src;
+
+       while (size) {
+               if (bitmap & 0x1)
+                       mono_gc_wbarrier_generic_store (dest, *src);
+               else
+                       *dest = *src;
+               ++src;
+               ++dest;
+               size -= SIZEOF_VOID_P;
+               bitmap >>= 1;
+       }
+}
+
+/*
+ * ######################################################################
+ * ########  Other mono public interface functions.
+ * ######################################################################
+ */
+
+void
+sgen_gc_collect (int generation)
+{
+       LOCK_GC;
+       if (generation > 1)
+               generation = 1;
+       sgen_perform_collection (0, generation, "user request", TRUE);
+       UNLOCK_GC;
+}
+
+int
+sgen_gc_collection_count (int generation)
+{
+       if (generation == 0)
+               return gc_stats.minor_gc_count;
+       return gc_stats.major_gc_count;
+}
+
+size_t
+sgen_gc_get_used_size (void)
+{
+       gint64 tot = 0;
+       LOCK_GC;
+       tot = los_memory_usage;
+       tot += nursery_section->next_data - nursery_section->data;
+       tot += major_collector.get_used_size ();
+       /* FIXME: account for pinned objects */
+       UNLOCK_GC;
+       return tot;
+}
+
+GCObject*
+sgen_weak_link_get (void **link_addr)
+{
+       void * volatile *link_addr_volatile;
+       void *ptr;
+       GCObject *obj;
+ retry:
+       link_addr_volatile = link_addr;
+       ptr = (void*)*link_addr_volatile;
+       /*
+        * At this point we have a hidden pointer.  If the GC runs
+        * here, it will not recognize the hidden pointer as a
+        * reference, and if the object behind it is not referenced
+        * elsewhere, it will be freed.  Once the world is restarted
+        * we reveal the pointer, giving us a pointer to a freed
+        * object.  To make sure we don't return it, we load the
+        * hidden pointer again.  If it's still the same, we can be
+        * sure the object reference is valid.
+        */
+       if (ptr)
+               obj = (GCObject*) REVEAL_POINTER (ptr);
+       else
+               return NULL;
+
+       mono_memory_barrier ();
+
+       /*
+        * During the second bridge processing step the world is
+        * running again.  That step processes all weak links once
+        * more to null those that refer to dead objects.  Before that
+        * is completed, those links must not be followed, so we
+        * conservatively wait for bridge processing when any weak
+        * link is dereferenced.
+        */
+       sgen_client_bridge_wait_for_processing ();
+
+       if ((void*)*link_addr_volatile != ptr)
+               goto retry;
+
+       return obj;
+}
+
+gboolean
+sgen_set_allow_synchronous_major (gboolean flag)
+{
+       if (!major_collector.is_concurrent)
+               return flag;
+
+       allow_synchronous_major = flag;
+       return TRUE;
+}
+
+void
+sgen_env_var_error (const char *env_var, const char *fallback, const char *description_format, ...)
+{
+       va_list ap;
+
+       va_start (ap, description_format);
+
+       fprintf (stderr, "Warning: In environment variable `%s': ", env_var);
+       vfprintf (stderr, description_format, ap);
+       if (fallback)
+               fprintf (stderr, " - %s", fallback);
+       fprintf (stderr, "\n");
+
+       va_end (ap);
+}
+
+static gboolean
+parse_double_in_interval (const char *env_var, const char *opt_name, const char *opt, double min, double max, double *result)
+{
+       char *endptr;
+       double val = strtod (opt, &endptr);
+       if (endptr == opt) {
+               sgen_env_var_error (env_var, "Using default value.", "`%s` must be a number.", opt_name);
+               return FALSE;
+       }
+       else if (val < min || val > max) {
+               sgen_env_var_error (env_var, "Using default value.", "`%s` must be between %.2f - %.2f.", opt_name, min, max);
+               return FALSE;
+       }
+       *result = val;
+       return TRUE;
+}
+
+void
+sgen_gc_init (void)
+{
+       const char *env;
+       char **opts, **ptr;
+       char *major_collector_opt = NULL;
+       char *minor_collector_opt = NULL;
+       size_t max_heap = 0;
+       size_t soft_limit = 0;
+       int result;
+       gboolean debug_print_allowance = FALSE;
+       double allowance_ratio = 0, save_target = 0;
+       gboolean cement_enabled = TRUE;
+
+       do {
+               result = InterlockedCompareExchange (&gc_initialized, -1, 0);
+               switch (result) {
+               case 1:
+                       /* already inited */
+                       return;
+               case -1:
+                       /* being inited by another thread */
+                       g_usleep (1000);
+                       break;
+               case 0:
+                       /* we will init it */
+                       break;
+               default:
+                       g_assert_not_reached ();
+               }
+       } while (result != 0);
+
+       SGEN_TV_GETTIME (sgen_init_timestamp);
+
+#ifdef SGEN_WITHOUT_MONO
+       mono_thread_smr_init ();
+#endif
+
+       LOCK_INIT (gc_mutex);
+
+       gc_debug_file = stderr;
+
+       LOCK_INIT (sgen_interruption_mutex);
+
+       if ((env = g_getenv (MONO_GC_PARAMS_NAME))) {
+               opts = g_strsplit (env, ",", -1);
+               for (ptr = opts; *ptr; ++ptr) {
+                       char *opt = *ptr;
+                       if (g_str_has_prefix (opt, "major=")) {
+                               opt = strchr (opt, '=') + 1;
+                               major_collector_opt = g_strdup (opt);
+                       } else if (g_str_has_prefix (opt, "minor=")) {
+                               opt = strchr (opt, '=') + 1;
+                               minor_collector_opt = g_strdup (opt);
+                       }
+               }
+       } else {
+               opts = NULL;
+       }
+
+       init_stats ();
+       sgen_init_internal_allocator ();
+       sgen_init_nursery_allocator ();
+       sgen_init_fin_weak_hash ();
+       sgen_init_hash_table ();
+       sgen_init_descriptors ();
+       sgen_init_gray_queues ();
+       sgen_init_allocator ();
+
+       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_SECTION, SGEN_SIZEOF_GC_MEM_SECTION);
+       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_GRAY_QUEUE, sizeof (GrayQueueSection));
+
+       sgen_client_init ();
+
+       if (!minor_collector_opt) {
+               sgen_simple_nursery_init (&sgen_minor_collector);
+       } else {
+               if (!strcmp (minor_collector_opt, "simple")) {
+               use_simple_nursery:
+                       sgen_simple_nursery_init (&sgen_minor_collector);
+               } else if (!strcmp (minor_collector_opt, "split")) {
+                       sgen_split_nursery_init (&sgen_minor_collector);
+               } else {
+                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using `simple` instead.", "Unknown minor collector `%s'.", minor_collector_opt);
+                       goto use_simple_nursery;
+               }
+       }
+
+       if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep")) {
+       use_marksweep_major:
+               sgen_marksweep_init (&major_collector);
+       } else if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep-conc")) {
+               sgen_marksweep_conc_init (&major_collector);
+       } else {
+               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using `marksweep` instead.", "Unknown major collector `%s'.", major_collector_opt);
+               goto use_marksweep_major;
+       }
+
+       sgen_nursery_size = DEFAULT_NURSERY_SIZE;
+
+       if (major_collector.is_concurrent)
+               cement_enabled = FALSE;
+
+       if (opts) {
+               gboolean usage_printed = FALSE;
+
+               for (ptr = opts; *ptr; ++ptr) {
+                       char *opt = *ptr;
+                       if (!strcmp (opt, ""))
+                               continue;
+                       if (g_str_has_prefix (opt, "major="))
+                               continue;
+                       if (g_str_has_prefix (opt, "minor="))
+                               continue;
+                       if (g_str_has_prefix (opt, "max-heap-size=")) {
+                               size_t page_size = mono_pagesize ();
+                               size_t max_heap_candidate = 0;
+                               opt = strchr (opt, '=') + 1;
+                               if (*opt && mono_gc_parse_environment_string_extract_number (opt, &max_heap_candidate)) {
+                                       max_heap = (max_heap_candidate + page_size - 1) & ~(size_t)(page_size - 1);
+                                       if (max_heap != max_heap_candidate)
+                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Rounding up.", "`max-heap-size` size must be a multiple of %d.", page_size);
+                               } else {
+                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, NULL, "`max-heap-size` must be an integer.");
+                               }
+                               continue;
+                       }
+                       if (g_str_has_prefix (opt, "soft-heap-limit=")) {
+                               opt = strchr (opt, '=') + 1;
+                               if (*opt && mono_gc_parse_environment_string_extract_number (opt, &soft_limit)) {
+                                       if (soft_limit <= 0) {
+                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, NULL, "`soft-heap-limit` must be positive.");
+                                               soft_limit = 0;
+                                       }
+                               } else {
+                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, NULL, "`soft-heap-limit` must be an integer.");
+                               }
+                               continue;
+                       }
+
+#ifdef USER_CONFIG
+                       if (g_str_has_prefix (opt, "nursery-size=")) {
+                               size_t val;
+                               opt = strchr (opt, '=') + 1;
+                               if (*opt && mono_gc_parse_environment_string_extract_number (opt, &val)) {
+                                       if ((val & (val - 1))) {
+                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`nursery-size` must be a power of two.");
+                                               continue;
+                                       }
+
+                                       if (val < SGEN_MAX_NURSERY_WASTE) {
+                                               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.",
+                                                               "`nursery-size` must be at least %d bytes.", SGEN_MAX_NURSERY_WASTE);
+                                               continue;
+                                       }
+
+                                       sgen_nursery_size = val;
+                                       sgen_nursery_bits = 0;
+                                       while (ONE_P << (++ sgen_nursery_bits) != sgen_nursery_size)
+                                               ;
+                               } else {
+                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`nursery-size` must be an integer.");
+                                       continue;
+                               }
+                               continue;
+                       }
+#endif
+                       if (g_str_has_prefix (opt, "save-target-ratio=")) {
+                               double val;
+                               opt = strchr (opt, '=') + 1;
+                               if (parse_double_in_interval (MONO_GC_PARAMS_NAME, "save-target-ratio", opt,
+                                               SGEN_MIN_SAVE_TARGET_RATIO, SGEN_MAX_SAVE_TARGET_RATIO, &val)) {
+                                       save_target = val;
+                               }
+                               continue;
+                       }
+                       if (g_str_has_prefix (opt, "default-allowance-ratio=")) {
+                               double val;
+                               opt = strchr (opt, '=') + 1;
+                               if (parse_double_in_interval (MONO_GC_PARAMS_NAME, "default-allowance-ratio", opt,
+                                               SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO, SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO, &val)) {
+                                       allowance_ratio = val;
+                               }
+                               continue;
+                       }
+                       if (g_str_has_prefix (opt, "allow-synchronous-major=")) {
+                               if (!major_collector.is_concurrent) {
+                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "`allow-synchronous-major` is only valid for the concurrent major collector.");
+                                       continue;
+                               }
+
+                               opt = strchr (opt, '=') + 1;
+
+                               if (!strcmp (opt, "yes")) {
+                                       allow_synchronous_major = TRUE;
+                               } else if (!strcmp (opt, "no")) {
+                                       allow_synchronous_major = FALSE;
+                               } else {
+                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using default value.", "`allow-synchronous-major` must be either `yes' or `no'.");
+                                       continue;
+                               }
+                       }
+
+                       if (!strcmp (opt, "cementing")) {
+                               cement_enabled = TRUE;
+                               continue;
+                       }
+                       if (!strcmp (opt, "no-cementing")) {
+                               cement_enabled = FALSE;
+                               continue;
+                       }
+
+                       if (major_collector.handle_gc_param && major_collector.handle_gc_param (opt))
+                               continue;
+
+                       if (sgen_minor_collector.handle_gc_param && sgen_minor_collector.handle_gc_param (opt))
+                               continue;
+
+                       if (sgen_client_handle_gc_param (opt))
+                               continue;
+
+                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "Unknown option `%s`.", opt);
+
+                       if (usage_printed)
+                               continue;
+
+                       fprintf (stderr, "\n%s must be a comma-delimited list of one or more of the following:\n", MONO_GC_PARAMS_NAME);
+                       fprintf (stderr, "  max-heap-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
+                       fprintf (stderr, "  soft-heap-limit=n (where N is an integer, possibly with a k, m or a g suffix)\n");
+                       fprintf (stderr, "  nursery-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
+                       fprintf (stderr, "  major=COLLECTOR (where COLLECTOR is `marksweep', `marksweep-conc', `marksweep-par')\n");
+                       fprintf (stderr, "  minor=COLLECTOR (where COLLECTOR is `simple' or `split')\n");
+                       fprintf (stderr, "  wbarrier=WBARRIER (where WBARRIER is `remset' or `cardtable')\n");
+                       fprintf (stderr, "  [no-]cementing\n");
+                       if (major_collector.is_concurrent)
+                               fprintf (stderr, "  allow-synchronous-major=FLAG (where FLAG is `yes' or `no')\n");
+                       if (major_collector.print_gc_param_usage)
+                               major_collector.print_gc_param_usage ();
+                       if (sgen_minor_collector.print_gc_param_usage)
+                               sgen_minor_collector.print_gc_param_usage ();
+                       sgen_client_print_gc_params_usage ();
+                       fprintf (stderr, " Experimental options:\n");
+                       fprintf (stderr, "  save-target-ratio=R (where R must be between %.2f - %.2f).\n", SGEN_MIN_SAVE_TARGET_RATIO, SGEN_MAX_SAVE_TARGET_RATIO);
+                       fprintf (stderr, "  default-allowance-ratio=R (where R must be between %.2f - %.2f).\n", SGEN_MIN_ALLOWANCE_NURSERY_SIZE_RATIO, SGEN_MAX_ALLOWANCE_NURSERY_SIZE_RATIO);
+                       fprintf (stderr, "\n");
+
+                       usage_printed = TRUE;
+               }
+               g_strfreev (opts);
+       }
+
+       if (major_collector_opt)
+               g_free (major_collector_opt);
+
+       if (minor_collector_opt)
+               g_free (minor_collector_opt);
+
+       alloc_nursery ();
+
+       if (major_collector.is_concurrent && cement_enabled) {
+               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "`cementing` is not supported on concurrent major collectors.");
+               cement_enabled = FALSE;
+       }
+
+       sgen_cement_init (cement_enabled);
+
+       if ((env = g_getenv (MONO_GC_DEBUG_NAME))) {
+               gboolean usage_printed = FALSE;
+
+               opts = g_strsplit (env, ",", -1);
+               for (ptr = opts; ptr && *ptr; ptr ++) {
+                       char *opt = *ptr;
+                       if (!strcmp (opt, ""))
+                               continue;
+                       if (opt [0] >= '0' && opt [0] <= '9') {
+                               gc_debug_level = atoi (opt);
+                               opt++;
+                               if (opt [0] == ':')
+                                       opt++;
+                               if (opt [0]) {
+                                       char *rf = g_strdup_printf ("%s.%d", opt, mono_process_current_pid ());
+                                       gc_debug_file = fopen (rf, "wb");
+                                       if (!gc_debug_file)
+                                               gc_debug_file = stderr;
+                                       g_free (rf);
+                               }
+                       } else if (!strcmp (opt, "print-allowance")) {
+                               debug_print_allowance = TRUE;
+                       } else if (!strcmp (opt, "print-pinning")) {
+                               sgen_pin_stats_enable ();
+                       } else if (!strcmp (opt, "verify-before-allocs")) {
+                               verify_before_allocs = 1;
+                               has_per_allocation_action = TRUE;
+                       } else if (g_str_has_prefix (opt, "verify-before-allocs=")) {
+                               char *arg = strchr (opt, '=') + 1;
+                               verify_before_allocs = atoi (arg);
+                               has_per_allocation_action = TRUE;
+                       } else if (!strcmp (opt, "collect-before-allocs")) {
+                               collect_before_allocs = 1;
+                               has_per_allocation_action = TRUE;
+                       } else if (g_str_has_prefix (opt, "collect-before-allocs=")) {
+                               char *arg = strchr (opt, '=') + 1;
+                               has_per_allocation_action = TRUE;
+                               collect_before_allocs = atoi (arg);
+                       } else if (!strcmp (opt, "verify-before-collections")) {
+                               whole_heap_check_before_collection = TRUE;
+                       } else if (!strcmp (opt, "check-at-minor-collections")) {
+                               consistency_check_at_minor_collection = TRUE;
+                               nursery_clear_policy = CLEAR_AT_GC;
+                       } else if (!strcmp (opt, "mod-union-consistency-check")) {
+                               if (!major_collector.is_concurrent) {
+                                       sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "`mod-union-consistency-check` only works with concurrent major collector.");
+                                       continue;
+                               }
+                               mod_union_consistency_check = TRUE;
+                       } else if (!strcmp (opt, "check-mark-bits")) {
+                               check_mark_bits_after_major_collection = TRUE;
+                       } else if (!strcmp (opt, "check-nursery-pinned")) {
+                               check_nursery_objects_pinned = TRUE;
+                       } else if (!strcmp (opt, "clear-at-gc")) {
+                               nursery_clear_policy = CLEAR_AT_GC;
+                       } else if (!strcmp (opt, "clear-nursery-at-gc")) {
+                               nursery_clear_policy = CLEAR_AT_GC;
+                       } else if (!strcmp (opt, "clear-at-tlab-creation")) {
+                               nursery_clear_policy = CLEAR_AT_TLAB_CREATION;
+                       } else if (!strcmp (opt, "debug-clear-at-tlab-creation")) {
+                               nursery_clear_policy = CLEAR_AT_TLAB_CREATION_DEBUG;
+                       } else if (!strcmp (opt, "check-scan-starts")) {
+                               do_scan_starts_check = TRUE;
+                       } else if (!strcmp (opt, "verify-nursery-at-minor-gc")) {
+                               do_verify_nursery = TRUE;
+                       } else if (!strcmp (opt, "check-concurrent")) {
+                               if (!major_collector.is_concurrent) {
+                                       sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "`check-concurrent` only works with concurrent major collectors.");
+                                       continue;
+                               }
+                               do_concurrent_checks = TRUE;
+                       } else if (!strcmp (opt, "dump-nursery-at-minor-gc")) {
+                               do_dump_nursery_content = TRUE;
+                       } else if (!strcmp (opt, "disable-minor")) {
+                               disable_minor_collections = TRUE;
+                       } else if (!strcmp (opt, "disable-major")) {
+                               disable_major_collections = TRUE;
+                       } else if (g_str_has_prefix (opt, "heap-dump=")) {
+                               char *filename = strchr (opt, '=') + 1;
+                               nursery_clear_policy = CLEAR_AT_GC;
+                               sgen_debug_enable_heap_dump (filename);
+                       } else if (g_str_has_prefix (opt, "binary-protocol=")) {
+                               char *filename = strchr (opt, '=') + 1;
+                               char *colon = strrchr (filename, ':');
+                               size_t limit = -1;
+                               if (colon) {
+                                       if (!mono_gc_parse_environment_string_extract_number (colon + 1, &limit)) {
+                                               sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring limit.", "Binary protocol file size limit must be an integer.");
+                                               limit = -1;
+                                       }
+                                       *colon = '\0';
+                               }
+                               binary_protocol_init (filename, (long long)limit);
+                       } else if (!strcmp (opt, "nursery-canaries")) {
+                               do_verify_nursery = TRUE;
+                               enable_nursery_canaries = TRUE;
+                       } else if (!sgen_client_handle_gc_debug (opt)) {
+                               sgen_env_var_error (MONO_GC_DEBUG_NAME, "Ignoring.", "Unknown option `%s`.", opt);
+
+                               if (usage_printed)
+                                       continue;
+
+                               fprintf (stderr, "\n%s must be of the format [<l>[:<filename>]|<option>]+ where <l> is a debug level 0-9.\n", MONO_GC_DEBUG_NAME);
+                               fprintf (stderr, "Valid <option>s are:\n");
+                               fprintf (stderr, "  collect-before-allocs[=<n>]\n");
+                               fprintf (stderr, "  verify-before-allocs[=<n>]\n");
+                               fprintf (stderr, "  check-at-minor-collections\n");
+                               fprintf (stderr, "  check-mark-bits\n");
+                               fprintf (stderr, "  check-nursery-pinned\n");
+                               fprintf (stderr, "  verify-before-collections\n");
+                               fprintf (stderr, "  verify-nursery-at-minor-gc\n");
+                               fprintf (stderr, "  dump-nursery-at-minor-gc\n");
+                               fprintf (stderr, "  disable-minor\n");
+                               fprintf (stderr, "  disable-major\n");
+                               fprintf (stderr, "  check-concurrent\n");
+                               fprintf (stderr, "  clear-[nursery-]at-gc\n");
+                               fprintf (stderr, "  clear-at-tlab-creation\n");
+                               fprintf (stderr, "  debug-clear-at-tlab-creation\n");
+                               fprintf (stderr, "  check-scan-starts\n");
+                               fprintf (stderr, "  print-allowance\n");
+                               fprintf (stderr, "  print-pinning\n");
+                               fprintf (stderr, "  heap-dump=<filename>\n");
+                               fprintf (stderr, "  binary-protocol=<filename>[:<file-size-limit>]\n");
+                               fprintf (stderr, "  nursery-canaries\n");
+                               sgen_client_print_gc_debug_usage ();
+                               fprintf (stderr, "\n");
+
+                               usage_printed = TRUE;
+                       }
+               }
+               g_strfreev (opts);
+       }
+
+       if (check_mark_bits_after_major_collection)
+               nursery_clear_policy = CLEAR_AT_GC;
+
+       if (major_collector.post_param_init)
+               major_collector.post_param_init (&major_collector);
+
+       if (major_collector.needs_thread_pool)
+               sgen_workers_init (1);
+
+       sgen_memgov_init (max_heap, soft_limit, debug_print_allowance, allowance_ratio, save_target);
+
+       memset (&remset, 0, sizeof (remset));
+
+       sgen_card_table_init (&remset);
+
+       gc_initialized = 1;
+}
+
+NurseryClearPolicy
+sgen_get_nursery_clear_policy (void)
+{
+       return nursery_clear_policy;
+}
+
+void
+sgen_gc_lock (void)
+{
+       LOCK_GC;
+}
+
+void
+sgen_gc_unlock (void)
+{
+       gboolean try_free = sgen_try_free_some_memory;
+       sgen_try_free_some_memory = FALSE;
+       mono_mutex_unlock (&gc_mutex);
+       if (try_free)
+               mono_thread_hazardous_try_free_some ();
+}
+
+void
+sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
+{
+       major_collector.iterate_live_block_ranges (callback);
+}
+
+SgenMajorCollector*
+sgen_get_major_collector (void)
+{
+       return &major_collector;
+}
+
+SgenRememberedSet*
+sgen_get_remset (void)
+{
+       return &remset;
+}
+
+static void
+count_cards (long long *major_total, long long *major_marked, long long *los_total, long long *los_marked)
+{
+       sgen_get_major_collector ()->count_cards (major_total, major_marked);
+       sgen_los_count_cards (los_total, los_marked);
+}
+
+static gboolean world_is_stopped = FALSE;
+
+/* LOCKING: assumes the GC lock is held */
+void
+sgen_stop_world (int generation)
+{
+       long long major_total = -1, major_marked = -1, los_total = -1, los_marked = -1;
+
+       SGEN_ASSERT (0, !world_is_stopped, "Why are we stopping a stopped world?");
+
+       binary_protocol_world_stopping (generation, sgen_timestamp (), (gpointer)mono_native_thread_id_get ());
+
+       sgen_client_stop_world (generation);
+
+       world_is_stopped = TRUE;
+
+       if (binary_protocol_is_heavy_enabled ())
+               count_cards (&major_total, &major_marked, &los_total, &los_marked);
+       binary_protocol_world_stopped (generation, sgen_timestamp (), major_total, major_marked, los_total, los_marked);
+}
+
+/* LOCKING: assumes the GC lock is held */
+void
+sgen_restart_world (int generation, GGTimingInfo *timing)
+{
+       long long major_total = -1, major_marked = -1, los_total = -1, los_marked = -1;
+
+       SGEN_ASSERT (0, world_is_stopped, "Why are we restarting a running world?");
+
+       if (binary_protocol_is_heavy_enabled ())
+               count_cards (&major_total, &major_marked, &los_total, &los_marked);
+       binary_protocol_world_restarting (generation, sgen_timestamp (), major_total, major_marked, los_total, los_marked);
+
+       sgen_client_restart_world (generation, timing);
+
+       world_is_stopped = FALSE;
+
+       binary_protocol_world_restarted (generation, sgen_timestamp ());
+
+       sgen_try_free_some_memory = TRUE;
+
+       if (sgen_client_bridge_need_processing ())
+               sgen_client_bridge_processing_finish (generation);
+
+       sgen_memgov_collection_end (generation, timing, timing ? 2 : 0);
+}
+
+gboolean
+sgen_is_world_stopped (void)
+{
+       return world_is_stopped;
+}
+
+void
+sgen_check_whole_heap_stw (void)
+{
+       sgen_stop_world (0);
+       sgen_clear_nursery_fragments ();
+       sgen_check_whole_heap (FALSE);
+       sgen_restart_world (0, NULL);
+}
+
+gint64
+sgen_timestamp (void)
+{
+       SGEN_TV_DECLARE (timestamp);
+       SGEN_TV_GETTIME (timestamp);
+       return SGEN_TV_ELAPSED (sgen_init_timestamp, timestamp);
+}
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/sgen/sgen-gc.h b/mono/sgen/sgen-gc.h
new file mode 100644 (file)
index 0000000..35d4cfe
--- /dev/null
@@ -0,0 +1,1071 @@
+/*
+ * sgen-gc.c: Simple generational GC.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGENGC_H__
+#define __MONO_SGENGC_H__
+
+/* pthread impl */
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+typedef struct _SgenThreadInfo SgenThreadInfo;
+#undef THREAD_INFO_TYPE
+#define THREAD_INFO_TYPE SgenThreadInfo
+
+#include <glib.h>
+#include <stdio.h>
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#include <stdint.h>
+#include "mono/utils/mono-compiler.h"
+#include "mono/utils/atomic.h"
+#include "mono/utils/mono-mutex.h"
+#include "mono/sgen/sgen-conf.h"
+#include "mono/sgen/sgen-descriptor.h"
+#include "mono/sgen/sgen-gray.h"
+#include "mono/sgen/sgen-hash-table.h"
+#include "mono/sgen/sgen-protocol.h"
+
+/* The method used to clear the nursery */
+/* Clearing at nursery collections is the safest, but has bad interactions with caches.
+ * Clearing at TLAB creation is much faster, but more complex and it might expose hard
+ * to find bugs.
+ */
+typedef enum {
+       CLEAR_AT_GC,
+       CLEAR_AT_TLAB_CREATION,
+       CLEAR_AT_TLAB_CREATION_DEBUG
+} NurseryClearPolicy;
+
+NurseryClearPolicy sgen_get_nursery_clear_policy (void);
+
+#if !defined(__MACH__) && !MONO_MACH_ARCH_SUPPORTED && defined(HAVE_PTHREAD_KILL)
+#define SGEN_POSIX_STW 1
+#endif
+
+/*
+ * The nursery section uses this struct.
+ */
+typedef struct _GCMemSection GCMemSection;
+struct _GCMemSection {
+       char *data;
+       mword size;
+       /* pointer where more data could be allocated if it fits */
+       char *next_data;
+       char *end_data;
+       /*
+        * scan starts is an array of pointers to objects equally spaced in the allocation area
+        * They let use quickly find pinned objects from pinning pointers.
+        */
+       char **scan_starts;
+       /* in major collections indexes in the pin_queue for objects that pin this section */
+       size_t pin_queue_first_entry;
+       size_t pin_queue_last_entry;
+       size_t num_scan_start;
+};
+
+/*
+ * Recursion is not allowed for the thread lock.
+ */
+#define LOCK_DECLARE(name) mono_mutex_t name
+/* if changing LOCK_INIT to something that isn't idempotent, look at
+   its use in mono_gc_base_init in sgen-gc.c */
+#define LOCK_INIT(name)        mono_mutex_init (&(name))
+#define LOCK_GC do {                                           \
+               MONO_TRY_BLOCKING       \
+               mono_mutex_lock (&gc_mutex);                    \
+               MONO_FINISH_TRY_BLOCKING        \
+       } while (0)
+#define UNLOCK_GC do { sgen_gc_unlock (); } while (0)
+
+extern LOCK_DECLARE (sgen_interruption_mutex);
+
+#define LOCK_INTERRUPTION mono_mutex_lock (&sgen_interruption_mutex)
+#define UNLOCK_INTERRUPTION mono_mutex_unlock (&sgen_interruption_mutex)
+
+/* FIXME: Use InterlockedAdd & InterlockedAdd64 to reduce the CAS cost. */
+#define SGEN_CAS       InterlockedCompareExchange
+#define SGEN_CAS_PTR   InterlockedCompareExchangePointer
+#define SGEN_ATOMIC_ADD(x,i)   do {                                    \
+               int __old_x;                                            \
+               do {                                                    \
+                       __old_x = (x);                                  \
+               } while (InterlockedCompareExchange (&(x), __old_x + (i), __old_x) != __old_x); \
+       } while (0)
+#define SGEN_ATOMIC_ADD_P(x,i) do { \
+               size_t __old_x;                                            \
+               do {                                                    \
+                       __old_x = (x);                                  \
+               } while (InterlockedCompareExchangePointer ((void**)&(x), (void*)(__old_x + (i)), (void*)__old_x) != (void*)__old_x); \
+       } while (0)
+
+
+#ifndef HOST_WIN32
+/* we intercept pthread_create calls to know which threads exist */
+#define USE_PTHREAD_INTERCEPT 1
+#endif
+
+#ifdef HEAVY_STATISTICS
+extern guint64 stat_objects_alloced_degraded;
+extern guint64 stat_bytes_alloced_degraded;
+extern guint64 stat_copy_object_called_major;
+extern guint64 stat_objects_copied_major;
+#endif
+
+#define SGEN_ASSERT(level, a, ...) do {        \
+       if (G_UNLIKELY ((level) <= SGEN_MAX_ASSERT_LEVEL && !(a))) {    \
+               g_error (__VA_ARGS__);  \
+} } while (0)
+
+
+#define SGEN_LOG(level, format, ...) do {      \
+       if (G_UNLIKELY ((level) <= SGEN_MAX_DEBUG_LEVEL && (level) <= gc_debug_level)) {        \
+               mono_gc_printf (gc_debug_file, format, ##__VA_ARGS__);  \
+} } while (0)
+
+#define SGEN_COND_LOG(level, cond, format, ...) do {   \
+       if (G_UNLIKELY ((level) <= SGEN_MAX_DEBUG_LEVEL && (level) <= gc_debug_level)) {        \
+               if (cond)       \
+                       mono_gc_printf (gc_debug_file, format, ##__VA_ARGS__);  \
+} } while (0)
+
+extern int gc_debug_level;
+extern FILE* gc_debug_file;
+
+extern int current_collection_generation;
+
+extern unsigned int sgen_global_stop_count;
+
+#define SGEN_ALLOC_ALIGN               8
+#define SGEN_ALLOC_ALIGN_BITS  3
+
+/* s must be non-negative */
+#define SGEN_CAN_ALIGN_UP(s)           ((s) <= SIZE_MAX - (SGEN_ALLOC_ALIGN - 1))
+#define SGEN_ALIGN_UP(s)               (((s)+(SGEN_ALLOC_ALIGN-1)) & ~(SGEN_ALLOC_ALIGN-1))
+
+#if SIZEOF_VOID_P == 4
+#define ONE_P 1
+#else
+#define ONE_P 1ll
+#endif
+
+static inline guint
+sgen_aligned_addr_hash (gconstpointer ptr)
+{
+       return GPOINTER_TO_UINT (ptr) >> 3;
+}
+
+/*
+ * The link pointer is hidden by negating each bit.  We use the lowest
+ * bit of the link (before negation) to store whether it needs
+ * resurrection tracking.
+ */
+#define HIDE_POINTER(p,t)      ((gpointer)(~((size_t)(p)|((t)?1:0))))
+#define REVEAL_POINTER(p)      ((gpointer)((~(size_t)(p))&~3L))
+
+#define SGEN_PTR_IN_NURSERY(p,bits,start,end)  (((mword)(p) & ~((1 << (bits)) - 1)) == (mword)(start))
+
+#ifdef USER_CONFIG
+
+/* good sizes are 512KB-1MB: larger ones increase a lot memzeroing time */
+#define DEFAULT_NURSERY_SIZE (sgen_nursery_size)
+extern size_t sgen_nursery_size;
+/* The number of trailing 0 bits in DEFAULT_NURSERY_SIZE */
+#define DEFAULT_NURSERY_BITS (sgen_nursery_bits)
+extern int sgen_nursery_bits;
+
+#else
+
+#define DEFAULT_NURSERY_SIZE (4*1024*1024)
+#define DEFAULT_NURSERY_BITS 22
+
+#endif
+
+extern char *sgen_nursery_start;
+extern char *sgen_nursery_end;
+
+static inline MONO_ALWAYS_INLINE gboolean
+sgen_ptr_in_nursery (void *p)
+{
+       return SGEN_PTR_IN_NURSERY ((p), DEFAULT_NURSERY_BITS, sgen_nursery_start, sgen_nursery_end);
+}
+
+static inline MONO_ALWAYS_INLINE char*
+sgen_get_nursery_start (void)
+{
+       return sgen_nursery_start;
+}
+
+static inline MONO_ALWAYS_INLINE char*
+sgen_get_nursery_end (void)
+{
+       return sgen_nursery_end;
+}
+
+/*
+ * We use the lowest three bits in the vtable pointer of objects to tag whether they're
+ * forwarded, pinned, and/or cemented.  These are the valid states:
+ *
+ * | State            | bits |
+ * |------------------+------+
+ * | default          |  000 |
+ * | forwarded        |  001 |
+ * | pinned           |  010 |
+ * | pinned, cemented |  110 |
+ *
+ * We store them in the vtable slot because the bits are used in the sync block for other
+ * purposes: if we merge them and alloc the sync blocks aligned to 8 bytes, we can change
+ * this and use bit 3 in the syncblock (with the lower two bits both set for forwarded, that
+ * would be an invalid combination for the monitor and hash code).
+ */
+
+#include "sgen-tagged-pointer.h"
+
+#define SGEN_VTABLE_BITS_MASK  SGEN_TAGGED_POINTER_MASK
+
+#define SGEN_POINTER_IS_TAGGED_FORWARDED(p)    SGEN_POINTER_IS_TAGGED_1((p))
+#define SGEN_POINTER_TAG_FORWARDED(p)          SGEN_POINTER_TAG_1((p))
+
+#define SGEN_POINTER_IS_TAGGED_PINNED(p)       SGEN_POINTER_IS_TAGGED_2((p))
+#define SGEN_POINTER_TAG_PINNED(p)             SGEN_POINTER_TAG_2((p))
+
+#define SGEN_POINTER_IS_TAGGED_CEMENTED(p)     SGEN_POINTER_IS_TAGGED_4((p))
+#define SGEN_POINTER_TAG_CEMENTED(p)           SGEN_POINTER_TAG_4((p))
+
+#define SGEN_POINTER_UNTAG_VTABLE(p)           SGEN_POINTER_UNTAG_ALL((p))
+
+/* returns NULL if not forwarded, or the forwarded address */
+#define SGEN_VTABLE_IS_FORWARDED(vtable) (SGEN_POINTER_IS_TAGGED_FORWARDED ((vtable)) ? SGEN_POINTER_UNTAG_VTABLE ((vtable)) : NULL)
+#define SGEN_OBJECT_IS_FORWARDED(obj) (SGEN_VTABLE_IS_FORWARDED (((mword*)(obj))[0]))
+
+#define SGEN_VTABLE_IS_PINNED(vtable) SGEN_POINTER_IS_TAGGED_PINNED ((vtable))
+#define SGEN_OBJECT_IS_PINNED(obj) (SGEN_VTABLE_IS_PINNED (((mword*)(obj))[0]))
+
+#define SGEN_OBJECT_IS_CEMENTED(obj) (SGEN_POINTER_IS_TAGGED_CEMENTED (((mword*)(obj))[0]))
+
+/* set the forwarded address fw_addr for object obj */
+#define SGEN_FORWARD_OBJECT(obj,fw_addr) do {                          \
+               *(void**)(obj) = SGEN_POINTER_TAG_FORWARDED ((fw_addr));        \
+       } while (0)
+#define SGEN_PIN_OBJECT(obj) do {      \
+               *(void**)(obj) = SGEN_POINTER_TAG_PINNED (*(void**)(obj)); \
+       } while (0)
+#define SGEN_CEMENT_OBJECT(obj) do {   \
+               *(void**)(obj) = SGEN_POINTER_TAG_CEMENTED (*(void**)(obj)); \
+       } while (0)
+/* Unpins and uncements */
+#define SGEN_UNPIN_OBJECT(obj) do {    \
+               *(void**)(obj) = SGEN_POINTER_UNTAG_VTABLE (*(void**)(obj)); \
+       } while (0)
+
+/*
+ * Since we set bits in the vtable, use the macro to load it from the pointer to
+ * an object that is potentially pinned.
+ */
+#define SGEN_LOAD_VTABLE(obj)          SGEN_POINTER_UNTAG_ALL (SGEN_LOAD_VTABLE_UNCHECKED ((obj)))
+
+/*
+List of what each bit on of the vtable gc bits means. 
+*/
+enum {
+       SGEN_GC_BIT_BRIDGE_OBJECT = 1,
+       SGEN_GC_BIT_BRIDGE_OPAQUE_OBJECT = 2,
+       SGEN_GC_BIT_FINALIZER_AWARE = 4,
+};
+
+/* the runtime can register areas of memory as roots: we keep two lists of roots,
+ * a pinned root set for conservatively scanned roots and a normal one for
+ * precisely scanned roots (currently implemented as a single list).
+ */
+typedef struct _RootRecord RootRecord;
+struct _RootRecord {
+       char *end_root;
+       mword root_desc;
+};
+
+enum {
+       ROOT_TYPE_NORMAL = 0, /* "normal" roots */
+       ROOT_TYPE_PINNED = 1, /* roots without a GC descriptor */
+       ROOT_TYPE_WBARRIER = 2, /* roots with a write barrier */
+       ROOT_TYPE_NUM
+};
+
+extern SgenHashTable roots_hash [ROOT_TYPE_NUM];
+
+int sgen_register_root (char *start, size_t size, void *descr, int root_type);
+void sgen_deregister_root (char* addr);
+
+typedef void (*IterateObjectCallbackFunc) (char*, size_t, void*);
+
+void sgen_gc_init (void);
+
+void sgen_os_init (void);
+
+void sgen_update_heap_boundaries (mword low, mword high);
+
+void sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags);
+void sgen_check_section_scan_starts (GCMemSection *section);
+
+void sgen_conservatively_pin_objects_from (void **start, void **end, void *start_nursery, void *end_nursery, int pin_type);
+
+/* Keep in sync with description_for_type() in sgen-internal.c! */
+enum {
+       INTERNAL_MEM_PIN_QUEUE,
+       INTERNAL_MEM_FRAGMENT,
+       INTERNAL_MEM_SECTION,
+       INTERNAL_MEM_SCAN_STARTS,
+       INTERNAL_MEM_FIN_TABLE,
+       INTERNAL_MEM_FINALIZE_ENTRY,
+       INTERNAL_MEM_FINALIZE_READY,
+       INTERNAL_MEM_DISLINK_TABLE,
+       INTERNAL_MEM_DISLINK,
+       INTERNAL_MEM_ROOTS_TABLE,
+       INTERNAL_MEM_ROOT_RECORD,
+       INTERNAL_MEM_STATISTICS,
+       INTERNAL_MEM_STAT_PINNED_CLASS,
+       INTERNAL_MEM_STAT_REMSET_CLASS,
+       INTERNAL_MEM_GRAY_QUEUE,
+       INTERNAL_MEM_MS_TABLES,
+       INTERNAL_MEM_MS_BLOCK_INFO,
+       INTERNAL_MEM_MS_BLOCK_INFO_SORT,
+       INTERNAL_MEM_WORKER_DATA,
+       INTERNAL_MEM_THREAD_POOL_JOB,
+       INTERNAL_MEM_BRIDGE_DATA,
+       INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE,
+       INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE_ENTRY,
+       INTERNAL_MEM_BRIDGE_HASH_TABLE,
+       INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY,
+       INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE,
+       INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE_ENTRY,
+       INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE,
+       INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE_ENTRY,
+       INTERNAL_MEM_TARJAN_OBJ_BUCKET,
+       INTERNAL_MEM_BRIDGE_DEBUG,
+       INTERNAL_MEM_TOGGLEREF_DATA,
+       INTERNAL_MEM_CARDTABLE_MOD_UNION,
+       INTERNAL_MEM_BINARY_PROTOCOL,
+       INTERNAL_MEM_TEMPORARY,
+       INTERNAL_MEM_FIRST_CLIENT
+};
+
+enum {
+       GENERATION_NURSERY,
+       GENERATION_OLD,
+       GENERATION_MAX
+};
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+#define BINARY_PROTOCOL_ARG(x) ,x
+#else
+#define BINARY_PROTOCOL_ARG(x)
+#endif
+
+void sgen_init_internal_allocator (void);
+
+#define SGEN_DEFINE_OBJECT_VTABLE
+#ifdef SGEN_CLIENT_HEADER
+#include SGEN_CLIENT_HEADER
+#else
+#include "metadata/sgen-client-mono.h"
+#endif
+#undef SGEN_DEFINE_OBJECT_VTABLE
+
+/* eventually share with MonoThread? */
+/*
+ * This structure extends the MonoThreadInfo structure.
+ */
+struct _SgenThreadInfo {
+       SgenClientThreadInfo client_info;
+
+       char **tlab_next_addr;
+       char **tlab_start_addr;
+       char **tlab_temp_end_addr;
+       char **tlab_real_end_addr;
+
+#ifndef HAVE_KW_THREAD
+       char *tlab_start;
+       char *tlab_next;
+       char *tlab_temp_end;
+       char *tlab_real_end;
+#endif
+};
+
+gboolean sgen_is_worker_thread (MonoNativeThreadId thread);
+
+typedef void (*CopyOrMarkObjectFunc) (void**, SgenGrayQueue*);
+typedef void (*ScanObjectFunc) (char *obj, mword desc, SgenGrayQueue*);
+typedef void (*ScanVTypeFunc) (char *full_object, char *start, mword desc, SgenGrayQueue* BINARY_PROTOCOL_ARG (size_t size));
+
+typedef struct {
+       CopyOrMarkObjectFunc copy_or_mark_object;
+       ScanObjectFunc scan_object;
+       ScanVTypeFunc scan_vtype;
+       /*FIXME add allocation function? */
+} SgenObjectOperations;
+
+typedef struct
+{
+       SgenObjectOperations *ops;
+       SgenGrayQueue *queue;
+} ScanCopyContext;
+
+#define CONTEXT_FROM_OBJECT_OPERATIONS(ops, queue) ((ScanCopyContext) { (ops), (queue) })
+
+void sgen_report_internal_mem_usage (void);
+void sgen_dump_internal_mem_usage (FILE *heap_dump_file);
+void sgen_dump_section (GCMemSection *section, const char *type);
+void sgen_dump_occupied (char *start, char *end, char *section_start);
+
+void sgen_register_fixed_internal_mem_type (int type, size_t size);
+
+void* sgen_alloc_internal (int type);
+void sgen_free_internal (void *addr, int type);
+
+void* sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure);
+void sgen_free_internal_dynamic (void *addr, size_t size, int type);
+
+void sgen_pin_stats_enable (void);
+void sgen_pin_stats_register_object (char *obj, size_t size);
+void sgen_pin_stats_register_global_remset (char *obj);
+void sgen_pin_stats_print_class_stats (void);
+
+void sgen_sort_addresses (void **array, size_t size);
+void sgen_add_to_global_remset (gpointer ptr, gpointer obj);
+
+int sgen_get_current_collection_generation (void);
+gboolean sgen_collection_is_concurrent (void);
+gboolean sgen_concurrent_collection_in_progress (void);
+
+typedef struct _SgenFragment SgenFragment;
+
+struct _SgenFragment {
+       SgenFragment *next;
+       char *fragment_start;
+       char *fragment_next; /* the current soft limit for allocation */
+       char *fragment_end;
+       SgenFragment *next_in_order; /* We use a different entry for all active fragments so we can avoid SMR. */
+};
+
+typedef struct {
+       SgenFragment *alloc_head; /* List head to be used when allocating memory. Walk with fragment_next. */
+       SgenFragment *region_head; /* List head of the region used by this allocator. Walk with next_in_order. */
+} SgenFragmentAllocator;
+
+void sgen_fragment_allocator_add (SgenFragmentAllocator *allocator, char *start, char *end);
+void sgen_fragment_allocator_release (SgenFragmentAllocator *allocator);
+void* sgen_fragment_allocator_serial_alloc (SgenFragmentAllocator *allocator, size_t size);
+void* sgen_fragment_allocator_par_alloc (SgenFragmentAllocator *allocator, size_t size);
+void* sgen_fragment_allocator_serial_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size);
+void* sgen_fragment_allocator_par_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size);
+SgenFragment* sgen_fragment_allocator_alloc (void);
+void sgen_clear_allocator_fragments (SgenFragmentAllocator *allocator);
+void sgen_clear_range (char *start, char *end);
+
+
+/*
+This is a space/speed compromise as we need to make sure the from/to space check is both O(1)
+and only hit cache hot memory. On a 4Mb nursery it requires 1024 bytes, or 3% of your average
+L1 cache. On small configs with a 512kb nursery, this goes to 0.4%.
+
+Experimental results on how much space we waste with a 4Mb nursery:
+
+Note that the wastage applies to the half nursery, or 2Mb:
+
+Test 1 (compiling corlib):
+9: avg: 3.1k
+8: avg: 1.6k
+
+*/
+#define SGEN_TO_SPACE_GRANULE_BITS 9
+#define SGEN_TO_SPACE_GRANULE_IN_BYTES (1 << SGEN_TO_SPACE_GRANULE_BITS)
+
+extern char *sgen_space_bitmap;
+extern size_t sgen_space_bitmap_size;
+
+static inline gboolean
+sgen_nursery_is_to_space (char *object)
+{
+       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       size_t byte = idx >> 3;
+       size_t bit = idx & 0x7;
+
+       SGEN_ASSERT (4, sgen_ptr_in_nursery (object), "object %p is not in nursery [%p - %p]", object, sgen_get_nursery_start (), sgen_get_nursery_end ());
+       SGEN_ASSERT (4, byte < sgen_space_bitmap_size, "byte index %zd out of range (%zd)", byte, sgen_space_bitmap_size);
+
+       return (sgen_space_bitmap [byte] & (1 << bit)) != 0;
+}
+
+static inline gboolean
+sgen_nursery_is_from_space (char *object)
+{
+       return !sgen_nursery_is_to_space (object);
+}
+
+static inline gboolean
+sgen_nursery_is_object_alive (char *obj)
+{
+       /* FIXME put this asserts under a non default level */
+       g_assert (sgen_ptr_in_nursery (obj));
+
+       if (sgen_nursery_is_to_space (obj))
+               return TRUE;
+
+       if (SGEN_OBJECT_IS_PINNED (obj) || SGEN_OBJECT_IS_FORWARDED (obj))
+               return TRUE;
+
+       return FALSE;
+}
+
+typedef struct {
+       gboolean is_split;
+
+       char* (*alloc_for_promotion) (GCVTable *vtable, char *obj, size_t objsize, gboolean has_references);
+
+       SgenObjectOperations serial_ops;
+
+       void (*prepare_to_space) (char *to_space_bitmap, size_t space_bitmap_size);
+       void (*clear_fragments) (void);
+       SgenFragment* (*build_fragments_get_exclude_head) (void);
+       void (*build_fragments_release_exclude_head) (void);
+       void (*build_fragments_finish) (SgenFragmentAllocator *allocator);
+       void (*init_nursery) (SgenFragmentAllocator *allocator, char *start, char *end);
+
+       gboolean (*handle_gc_param) (const char *opt); /* Optional */
+       void (*print_gc_param_usage) (void); /* Optional */
+} SgenMinorCollector;
+
+extern SgenMinorCollector sgen_minor_collector;
+
+void sgen_simple_nursery_init (SgenMinorCollector *collector);
+void sgen_split_nursery_init (SgenMinorCollector *collector);
+
+/* Updating references */
+
+#ifdef SGEN_CHECK_UPDATE_REFERENCE
+gboolean sgen_thread_pool_is_thread_pool_thread (MonoNativeThreadId some_thread) MONO_INTERNAL;
+static inline void
+sgen_update_reference (void **p, void *o, gboolean allow_null)
+{
+       if (!allow_null)
+               SGEN_ASSERT (0, o, "Cannot update a reference with a NULL pointer");
+       SGEN_ASSERT (0, !sgen_thread_pool_is_thread_pool_thread (mono_native_thread_id_get ()), "Can't update a reference in the worker thread");
+       *p = o;
+}
+
+#define SGEN_UPDATE_REFERENCE_ALLOW_NULL(p,o)  sgen_update_reference ((void**)(p), (void*)(o), TRUE)
+#define SGEN_UPDATE_REFERENCE(p,o)             sgen_update_reference ((void**)(p), (void*)(o), FALSE)
+#else
+#define SGEN_UPDATE_REFERENCE_ALLOW_NULL(p,o)  (*(void**)(p) = (void*)(o))
+#define SGEN_UPDATE_REFERENCE(p,o)             SGEN_UPDATE_REFERENCE_ALLOW_NULL ((p), (o))
+#endif
+
+/* Major collector */
+
+typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
+void sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
+
+typedef enum {
+       ITERATE_OBJECTS_SWEEP = 1,
+       ITERATE_OBJECTS_NON_PINNED = 2,
+       ITERATE_OBJECTS_PINNED = 4,
+       ITERATE_OBJECTS_ALL = ITERATE_OBJECTS_NON_PINNED | ITERATE_OBJECTS_PINNED,
+       ITERATE_OBJECTS_SWEEP_NON_PINNED = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_NON_PINNED,
+       ITERATE_OBJECTS_SWEEP_PINNED = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_PINNED,
+       ITERATE_OBJECTS_SWEEP_ALL = ITERATE_OBJECTS_SWEEP | ITERATE_OBJECTS_NON_PINNED | ITERATE_OBJECTS_PINNED
+} IterateObjectsFlags;
+
+typedef struct
+{
+       size_t num_scanned_objects;
+       size_t num_unique_scanned_objects;
+} ScannedObjectCounts;
+
+typedef struct _SgenMajorCollector SgenMajorCollector;
+struct _SgenMajorCollector {
+       size_t section_size;
+       gboolean is_concurrent;
+       gboolean needs_thread_pool;
+       gboolean supports_cardtable;
+       gboolean sweeps_lazily;
+
+       /*
+        * This is set to TRUE by the sweep if the next major
+        * collection should be synchronous (for evacuation).  For
+        * non-concurrent collectors, this should be NULL.
+        */
+       gboolean *want_synchronous_collection;
+
+       void* (*alloc_heap) (mword nursery_size, mword nursery_align, int nursery_bits);
+       gboolean (*is_object_live) (char *obj);
+       void* (*alloc_small_pinned_obj) (GCVTable *vtable, size_t size, gboolean has_references);
+       void* (*alloc_degraded) (GCVTable *vtable, size_t size);
+
+       SgenObjectOperations major_ops_serial;
+       SgenObjectOperations major_ops_concurrent_start;
+       SgenObjectOperations major_ops_concurrent;
+       SgenObjectOperations major_ops_concurrent_finish;
+
+       void* (*alloc_object) (GCVTable *vtable, size_t size, gboolean has_references);
+       void (*free_pinned_object) (char *obj, size_t size);
+
+       /*
+        * This is used for domain unloading, heap walking from the logging profiler, and
+        * debugging.  Can assume the world is stopped.
+        */
+       void (*iterate_objects) (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data);
+
+       void (*free_non_pinned_object) (char *obj, size_t size);
+       void (*pin_objects) (SgenGrayQueue *queue);
+       void (*pin_major_object) (char *obj, SgenGrayQueue *queue);
+       void (*scan_card_table) (gboolean mod_union, ScanCopyContext ctx);
+       void (*iterate_live_block_ranges) (sgen_cardtable_block_callback callback);
+       void (*update_cardtable_mod_union) (void);
+       void (*init_to_space) (void);
+       void (*sweep) (void);
+       gboolean (*have_swept) (void);
+       void (*finish_sweeping) (void);
+       void (*free_swept_blocks) (size_t allowance);
+       void (*check_scan_starts) (void);
+       void (*dump_heap) (FILE *heap_dump_file);
+       gint64 (*get_used_size) (void);
+       void (*start_nursery_collection) (void);
+       void (*finish_nursery_collection) (void);
+       void (*start_major_collection) (void);
+       void (*finish_major_collection) (ScannedObjectCounts *counts);
+       gboolean (*drain_gray_stack) (ScanCopyContext ctx);
+       gboolean (*ptr_is_in_non_pinned_space) (char *ptr, char **start);
+       gboolean (*obj_is_from_pinned_alloc) (char *obj);
+       void (*report_pinned_memory_usage) (void);
+       size_t (*get_num_major_sections) (void);
+       size_t (*get_bytes_survived_last_sweep) (void);
+       gboolean (*handle_gc_param) (const char *opt);
+       void (*print_gc_param_usage) (void);
+       void (*post_param_init) (SgenMajorCollector *collector);
+       gboolean (*is_valid_object) (char *object);
+       GCVTable* (*describe_pointer) (char *pointer);
+       guint8* (*get_cardtable_mod_union_for_object) (char *object);
+       long long (*get_and_reset_num_major_objects_marked) (void);
+       void (*count_cards) (long long *num_total_cards, long long *num_marked_cards);
+};
+
+extern SgenMajorCollector major_collector;
+
+void sgen_marksweep_init (SgenMajorCollector *collector);
+void sgen_marksweep_fixed_init (SgenMajorCollector *collector);
+void sgen_marksweep_par_init (SgenMajorCollector *collector);
+void sgen_marksweep_fixed_par_init (SgenMajorCollector *collector);
+void sgen_marksweep_conc_init (SgenMajorCollector *collector);
+SgenMajorCollector* sgen_get_major_collector (void);
+
+
+typedef struct _SgenRememberedSet {
+       void (*wbarrier_set_field) (GCObject *obj, gpointer field_ptr, GCObject* value);
+       void (*wbarrier_arrayref_copy) (gpointer dest_ptr, gpointer src_ptr, int count);
+       void (*wbarrier_value_copy) (gpointer dest, gpointer src, int count, size_t element_size);
+       void (*wbarrier_object_copy) (GCObject* obj, GCObject *src);
+       void (*wbarrier_generic_nostore) (gpointer ptr);
+       void (*record_pointer) (gpointer ptr);
+
+       void (*scan_remsets) (ScanCopyContext ctx);
+
+       void (*clear_cards) (void);
+
+       void (*finish_minor_collection) (void);
+       gboolean (*find_address) (char *addr);
+       gboolean (*find_address_with_cards) (char *cards_start, guint8 *cards, char *addr);
+} SgenRememberedSet;
+
+SgenRememberedSet *sgen_get_remset (void);
+
+/*
+ * These must be kept in sync with object.h.  They're here for using SGen independently of
+ * Mono.
+ */
+void mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count);
+void mono_gc_wbarrier_generic_nostore (gpointer ptr);
+void mono_gc_wbarrier_generic_store (gpointer ptr, GCObject* value);
+void mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value);
+
+void sgen_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap);
+
+static inline mword
+sgen_obj_get_descriptor (char *obj)
+{
+       GCVTable *vtable = SGEN_LOAD_VTABLE_UNCHECKED (obj);
+       SGEN_ASSERT (9, !SGEN_POINTER_IS_TAGGED_ANY (vtable), "Object can't be tagged");
+       return sgen_vtable_get_descriptor (vtable);
+}
+
+static inline mword
+sgen_obj_get_descriptor_safe (char *obj)
+{
+       GCVTable *vtable = (GCVTable*)SGEN_LOAD_VTABLE (obj);
+       return sgen_vtable_get_descriptor (vtable);
+}
+
+static inline mword
+sgen_safe_object_get_size (GCObject *obj)
+{
+       char *forwarded;
+
+       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj)))
+               obj = (GCObject*)forwarded;
+
+       return sgen_client_par_object_get_size ((GCVTable*)SGEN_LOAD_VTABLE (obj), obj);
+}
+
+static inline gboolean
+sgen_safe_object_is_small (GCObject *obj, int type)
+{
+       if (type <= DESC_TYPE_MAX_SMALL_OBJ)
+               return TRUE;
+       return SGEN_ALIGN_UP (sgen_safe_object_get_size ((GCObject*)obj)) <= SGEN_MAX_SMALL_OBJ_SIZE;
+}
+
+/*
+ * This variant guarantees to return the exact size of the object
+ * before alignment. Needed for canary support.
+ */
+static inline guint
+sgen_safe_object_get_size_unaligned (GCObject *obj)
+{
+       char *forwarded;
+
+       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
+               obj = (GCObject*)forwarded;
+       }
+
+       return sgen_client_slow_object_get_size ((GCVTable*)SGEN_LOAD_VTABLE (obj), obj);
+}
+
+#ifdef SGEN_CLIENT_HEADER
+#include SGEN_CLIENT_HEADER
+#else
+#include "metadata/sgen-client-mono.h"
+#endif
+
+gboolean sgen_object_is_live (void *obj);
+
+void  sgen_init_fin_weak_hash (void);
+
+/* FIXME: move the toggleref stuff out of here */
+void sgen_mark_togglerefs (char *start, char *end, ScanCopyContext ctx);
+void sgen_clear_togglerefs (char *start, char *end, ScanCopyContext ctx);
+
+void sgen_process_togglerefs (void);
+void sgen_register_test_toggleref_callback (void);
+
+void sgen_mark_bridge_object (GCObject *obj);
+void sgen_collect_bridge_objects (int generation, ScanCopyContext ctx);
+
+typedef gboolean (*SgenObjectPredicateFunc) (GCObject *obj, void *user_data);
+
+void sgen_null_links_if (SgenObjectPredicateFunc predicate, void *data, int generation);
+
+gboolean sgen_gc_is_object_ready_for_finalization (void *object);
+void sgen_gc_lock (void);
+void sgen_gc_unlock (void);
+
+void sgen_queue_finalization_entry (GCObject *obj);
+const char* sgen_generation_name (int generation);
+
+void sgen_finalize_in_range (int generation, ScanCopyContext ctx);
+void sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyContext ctx);
+void sgen_process_fin_stage_entries (void);
+gboolean sgen_have_pending_finalizers (void);
+void sgen_object_register_for_finalization (GCObject *obj, void *user_data);
+
+int sgen_gather_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, GCObject **out_array, int out_size);
+void sgen_remove_finalizers_if (SgenObjectPredicateFunc predicate, void *user_data, int generation);
+
+void sgen_process_dislink_stage_entries (void);
+void sgen_register_disappearing_link (GCObject *obj, void **link, gboolean track, gboolean in_gc);
+
+GCObject* sgen_weak_link_get (void **link_addr);
+
+gboolean sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx);
+
+enum {
+       SPACE_NURSERY,
+       SPACE_MAJOR,
+       SPACE_LOS
+};
+
+void sgen_pin_object (void *object, SgenGrayQueue *queue);
+void sgen_set_pinned_from_failed_allocation (mword objsize);
+
+void sgen_ensure_free_space (size_t size);
+void sgen_gc_collect (int generation);
+void sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish);
+
+int sgen_gc_collection_count (int generation);
+/* FIXME: what exactly does this return? */
+size_t sgen_gc_get_used_size (void);
+size_t sgen_gc_get_total_heap_allocation (void);
+
+/* STW */
+
+typedef struct {
+       int generation;
+       const char *reason;
+       gboolean is_overflow;
+       gint64 total_time;
+       gint64 stw_time;
+       gint64 bridge_time;
+} GGTimingInfo;
+
+void sgen_stop_world (int generation);
+void sgen_restart_world (int generation, GGTimingInfo *timing);
+gboolean sgen_is_world_stopped (void);
+
+gboolean sgen_set_allow_synchronous_major (gboolean flag);
+
+/* LOS */
+
+typedef struct _LOSObject LOSObject;
+struct _LOSObject {
+       LOSObject *next;
+       mword size; /* this is the object size, lowest bit used for pin/mark */
+       guint8 * volatile cardtable_mod_union; /* only used by the concurrent collector */
+#if SIZEOF_VOID_P < 8
+       mword dummy;            /* to align object to sizeof (double) */
+#endif
+       char data [MONO_ZERO_LEN_ARRAY];
+};
+
+extern LOSObject *los_object_list;
+extern mword los_memory_usage;
+
+void sgen_los_free_object (LOSObject *obj);
+void* sgen_los_alloc_large_inner (GCVTable *vtable, size_t size);
+void sgen_los_sweep (void);
+gboolean sgen_ptr_is_in_los (char *ptr, char **start);
+void sgen_los_iterate_objects (IterateObjectCallbackFunc cb, void *user_data);
+void sgen_los_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
+void sgen_los_scan_card_table (gboolean mod_union, ScanCopyContext ctx);
+void sgen_los_update_cardtable_mod_union (void);
+void sgen_los_count_cards (long long *num_total_cards, long long *num_marked_cards);
+gboolean sgen_los_is_valid_object (char *object);
+gboolean mono_sgen_los_describe_pointer (char *ptr);
+LOSObject* sgen_los_header_for_object (char *data);
+mword sgen_los_object_size (LOSObject *obj);
+void sgen_los_pin_object (char *obj);
+gboolean sgen_los_object_is_pinned (char *obj);
+void sgen_los_mark_mod_union_card (GCObject *mono_obj, void **ptr);
+
+
+/* nursery allocator */
+
+void sgen_clear_nursery_fragments (void);
+void sgen_nursery_allocator_prepare_for_pinning (void);
+void sgen_nursery_allocator_set_nursery_bounds (char *nursery_start, char *nursery_end);
+mword sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpin_queue);
+void sgen_init_nursery_allocator (void);
+void sgen_nursery_allocator_init_heavy_stats (void);
+void sgen_init_allocator (void);
+char* sgen_nursery_alloc_get_upper_alloc_bound (void);
+void* sgen_nursery_alloc (size_t size);
+void* sgen_nursery_alloc_range (size_t size, size_t min_size, size_t *out_alloc_size);
+gboolean sgen_can_alloc_size (size_t size);
+void sgen_nursery_retire_region (void *address, ptrdiff_t size);
+
+void sgen_nursery_alloc_prepare_for_minor (void);
+void sgen_nursery_alloc_prepare_for_major (void);
+
+char* sgen_alloc_for_promotion (char *obj, size_t objsize, gboolean has_references);
+
+void* sgen_alloc_obj_nolock (GCVTable *vtable, size_t size);
+void* sgen_try_alloc_obj_nolock (GCVTable *vtable, size_t size);
+
+/* Threads */
+
+void* sgen_thread_register (SgenThreadInfo* info, void *addr);
+void sgen_thread_unregister (SgenThreadInfo *p);
+
+/* Finalization/ephemeron support */
+
+static inline gboolean
+sgen_major_is_object_alive (void *object)
+{
+       mword objsize;
+
+       /* Oldgen objects can be pinned and forwarded too */
+       if (SGEN_OBJECT_IS_PINNED (object) || SGEN_OBJECT_IS_FORWARDED (object))
+               return TRUE;
+
+       /*
+        * FIXME: major_collector.is_object_live() also calculates the
+        * size.  Avoid the double calculation.
+        */
+       objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size ((GCObject*)object));
+       if (objsize > SGEN_MAX_SMALL_OBJ_SIZE)
+               return sgen_los_object_is_pinned (object);
+
+       return major_collector.is_object_live (object);
+}
+
+/*
+ * This function returns true if @object is either alive or it belongs to the old gen
+ * and we're currently doing a minor collection.
+ */
+static inline int
+sgen_is_object_alive_for_current_gen (char *object)
+{
+       if (sgen_ptr_in_nursery (object))
+               return sgen_nursery_is_object_alive (object);
+
+       if (current_collection_generation == GENERATION_NURSERY)
+               return TRUE;
+
+       return sgen_major_is_object_alive (object);
+}
+
+int sgen_gc_invoke_finalizers (void);
+
+/* Other globals */
+
+extern GCMemSection *nursery_section;
+extern guint32 collect_before_allocs;
+extern guint32 verify_before_allocs;
+extern gboolean has_per_allocation_action;
+extern size_t degraded_mode;
+extern int default_nursery_size;
+extern guint32 tlab_size;
+extern NurseryClearPolicy nursery_clear_policy;
+extern gboolean sgen_try_free_some_memory;
+
+extern LOCK_DECLARE (gc_mutex);
+
+/* Nursery helpers. */
+
+static inline void
+sgen_set_nursery_scan_start (char *p)
+{
+       size_t idx = (p - (char*)nursery_section->data) / SGEN_SCAN_START_SIZE;
+       char *old = nursery_section->scan_starts [idx];
+       if (!old || old > p)
+               nursery_section->scan_starts [idx] = p;
+}
+
+
+/* Object Allocation */
+
+typedef enum {
+       ATYPE_NORMAL,
+       ATYPE_VECTOR,
+       ATYPE_SMALL,
+       ATYPE_STRING,
+       ATYPE_NUM
+} SgenAllocatorType;
+
+void sgen_init_tlab_info (SgenThreadInfo* info);
+void sgen_clear_tlabs (void);
+
+void* sgen_alloc_obj (GCVTable *vtable, size_t size);
+void* sgen_alloc_obj_pinned (GCVTable *vtable, size_t size);
+void* sgen_alloc_obj_mature (GCVTable *vtable, size_t size);
+
+/* Debug support */
+
+void sgen_check_consistency (void);
+void sgen_check_mod_union_consistency (void);
+void sgen_check_major_refs (void);
+void sgen_check_whole_heap (gboolean allow_missing_pinning);
+void sgen_check_whole_heap_stw (void);
+void sgen_check_objref (char *obj);
+void sgen_check_heap_marked (gboolean nursery_must_be_pinned);
+void sgen_check_nursery_objects_pinned (gboolean pinned);
+void sgen_check_for_xdomain_refs (void);
+char* sgen_find_object_for_ptr (char *ptr);
+
+void mono_gc_scan_for_specific_ref (GCObject *key, gboolean precise);
+
+void sgen_debug_enable_heap_dump (const char *filename);
+void sgen_debug_dump_heap (const char *type, int num, const char *reason);
+
+void sgen_debug_verify_nursery (gboolean do_dump_nursery_content);
+void sgen_debug_check_nursery_is_clean (void);
+
+/* Write barrier support */
+
+/*
+ * This causes the compile to extend the liveness of 'v' till the call to dummy_use
+ */
+static inline void
+sgen_dummy_use (gpointer v) {
+#if defined(__GNUC__)
+       __asm__ volatile ("" : "=r"(v) : "r"(v));
+#elif defined(_MSC_VER)
+       static volatile gpointer ptr;
+       ptr = v;
+#else
+#error "Implement sgen_dummy_use for your compiler"
+#endif
+}
+
+/* Environment variable parsing */
+
+#define MONO_GC_PARAMS_NAME    "MONO_GC_PARAMS"
+#define MONO_GC_DEBUG_NAME     "MONO_GC_DEBUG"
+
+void sgen_env_var_error (const char *env_var, const char *fallback, const char *description_format, ...);
+
+/* Utilities */
+
+void sgen_qsort (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*));
+gint64 sgen_timestamp (void);
+
+/*
+ * Canary (guard word) support
+ * Notes:
+ * - CANARY_SIZE must be multiple of word size in bytes
+ * - Canary space is not included on checks against SGEN_MAX_SMALL_OBJ_SIZE
+ */
+gboolean nursery_canaries_enabled (void);
+
+#define CANARY_SIZE 8
+#define CANARY_STRING  "koupepia"
+
+#define CANARIFY_SIZE(size) if (nursery_canaries_enabled ()) { \
+                       size = size + CANARY_SIZE;      \
+               }
+
+#define CANARIFY_ALLOC(addr,size) if (nursery_canaries_enabled ()) {   \
+                               memcpy ((char*) (addr) + (size), CANARY_STRING, CANARY_SIZE);   \
+                       }
+
+#define CANARY_VALID(addr) (strncmp ((char*) (addr), CANARY_STRING, CANARY_SIZE) == 0)
+
+#define CHECK_CANARY_FOR_OBJECT(addr) if (nursery_canaries_enabled ()) {       \
+                               char* canary_ptr = (char*) (addr) + sgen_safe_object_get_size_unaligned ((GCObject *) (addr));  \
+                               if (!CANARY_VALID(canary_ptr)) {        \
+                                       char canary_copy[CANARY_SIZE +1];       \
+                                       strncpy (canary_copy, canary_ptr, CANARY_SIZE); \
+                                       canary_copy[CANARY_SIZE] = 0;   \
+                                       g_error ("CORRUPT CANARY:\naddr->%p\ntype->%s\nexcepted->'%s'\nfound->'%s'\n", (char*) addr, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE ((addr))), CANARY_STRING, canary_copy);      \
+                               } }
+
+#endif /* HAVE_SGEN_GC */
+
+#endif /* __MONO_SGENGC_H__ */
diff --git a/mono/sgen/sgen-gray.c b/mono/sgen/sgen-gray.c
new file mode 100644 (file)
index 0000000..331484a
--- /dev/null
@@ -0,0 +1,383 @@
+/*
+ * sgen-gray.c: Gray queue management.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-protocol.h"
+
+#ifdef HEAVY_STATISTICS
+guint64 stat_gray_queue_section_alloc;
+guint64 stat_gray_queue_section_free;
+guint64 stat_gray_queue_enqueue_fast_path;
+guint64 stat_gray_queue_dequeue_fast_path;
+guint64 stat_gray_queue_enqueue_slow_path;
+guint64 stat_gray_queue_dequeue_slow_path;
+#endif
+
+#define GRAY_QUEUE_LENGTH_LIMIT        64
+
+#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
+#define STATE_TRANSITION(s,o,n)        do {                                    \
+               int __old = (o);                                        \
+               if (InterlockedCompareExchange ((volatile int*)&(s)->state, (n), __old) != __old) \
+                       g_assert_not_reached ();                        \
+       } while (0)
+#define STATE_SET(s,v)         (s)->state = (v)
+#define STATE_ASSERT(s,v)      g_assert ((s)->state == (v))
+#else
+#define STATE_TRANSITION(s,o,n)
+#define STATE_SET(s,v)
+#define STATE_ASSERT(s,v)
+#endif
+
+void
+sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue)
+{
+       GrayQueueSection *section;
+
+       HEAVY_STAT (stat_gray_queue_section_alloc ++);
+
+       if (queue->alloc_prepare_func)
+               queue->alloc_prepare_func (queue);
+
+       if (queue->free_list) {
+               /* Use the previously allocated queue sections if possible */
+               section = queue->free_list;
+               queue->free_list = section->next;
+               STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
+       } else {
+               /* Allocate a new section */
+               section = sgen_alloc_internal (INTERNAL_MEM_GRAY_QUEUE);
+               STATE_SET (section, GRAY_QUEUE_SECTION_STATE_FLOATING);
+       }
+
+       section->size = SGEN_GRAY_QUEUE_SECTION_SIZE;
+
+       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
+
+       /* Link it with the others */
+       section->next = queue->first;
+       queue->first = section;
+       queue->cursor = section->entries - 1;
+}
+
+void
+sgen_gray_object_free_queue_section (GrayQueueSection *section)
+{
+       HEAVY_STAT (stat_gray_queue_section_free ++);
+
+       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_FREED);
+       sgen_free_internal (section, INTERNAL_MEM_GRAY_QUEUE);
+}
+
+/*
+ * The following two functions are called in the inner loops of the
+ * collector, so they need to be as fast as possible.  We have macros
+ * for them in sgen-gc.h.
+ */
+
+void
+sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj, mword desc)
+{
+       GrayQueueEntry entry = SGEN_GRAY_QUEUE_ENTRY (obj, desc);
+
+       HEAVY_STAT (stat_gray_queue_enqueue_slow_path ++);
+
+       SGEN_ASSERT (9, obj, "enqueueing a null object");
+       //sgen_check_objref (obj);
+
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       if (queue->enqueue_check_func)
+               queue->enqueue_check_func (obj);
+#endif
+
+       if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) {
+               if (queue->first) {
+                       /* Set the current section size back to default, might have been changed by sgen_gray_object_dequeue_section */
+                       queue->first->size = SGEN_GRAY_QUEUE_SECTION_SIZE;
+               }
+
+               sgen_gray_object_alloc_queue_section (queue);
+       }
+       STATE_ASSERT (queue->first, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
+       SGEN_ASSERT (9, queue->cursor <= GRAY_LAST_CURSOR_POSITION (queue->first), "gray queue %p overflow, first %p, cursor %p", queue, queue->first, queue->cursor);
+       *++queue->cursor = entry;
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       binary_protocol_gray_enqueue (queue, queue->cursor, obj);
+#endif
+}
+
+GrayQueueEntry
+sgen_gray_object_dequeue (SgenGrayQueue *queue)
+{
+       GrayQueueEntry entry;
+
+       HEAVY_STAT (stat_gray_queue_dequeue_slow_path ++);
+
+       if (sgen_gray_object_queue_is_empty (queue)) {
+               entry.obj = NULL;
+               return entry;
+       }
+
+       STATE_ASSERT (queue->first, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
+       SGEN_ASSERT (9, queue->cursor >= GRAY_FIRST_CURSOR_POSITION (queue->first), "gray queue %p underflow", queue);
+
+       entry = *queue->cursor--;
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       binary_protocol_gray_dequeue (queue, queue->cursor + 1, entry.obj);
+#endif
+
+       if (G_UNLIKELY (queue->cursor < GRAY_FIRST_CURSOR_POSITION (queue->first))) {
+               GrayQueueSection *section = queue->first;
+               queue->first = section->next;
+               section->next = queue->free_list;
+
+               STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FREE_LIST);
+
+               queue->free_list = section;
+               queue->cursor = queue->first ? queue->first->entries + queue->first->size - 1 : NULL;
+       }
+
+       return entry;
+}
+
+GrayQueueSection*
+sgen_gray_object_dequeue_section (SgenGrayQueue *queue)
+{
+       GrayQueueSection *section;
+
+       if (!queue->first)
+               return NULL;
+
+       section = queue->first;
+       queue->first = section->next;
+
+       section->next = NULL;
+       section->size = queue->cursor - section->entries + 1;
+
+       queue->cursor = queue->first ? queue->first->entries + queue->first->size - 1 : NULL;
+
+       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FLOATING);
+
+       return section;
+}
+
+void
+sgen_gray_object_enqueue_section (SgenGrayQueue *queue, GrayQueueSection *section)
+{
+       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
+
+       if (queue->first)
+               queue->first->size = queue->cursor - queue->first->entries + 1;
+
+       section->next = queue->first;
+       queue->first = section;
+       queue->cursor = queue->first->entries + queue->first->size - 1;
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       if (queue->enqueue_check_func) {
+               int i;
+               for (i = 0; i < section->size; ++i)
+                       queue->enqueue_check_func (section->entries [i].obj);
+       }
+#endif
+}
+
+void
+sgen_gray_object_queue_trim_free_list (SgenGrayQueue *queue)
+{
+       GrayQueueSection *section, *next;
+       int i = 0;
+       for (section = queue->free_list; section && i < GRAY_QUEUE_LENGTH_LIMIT - 1; section = section->next) {
+               STATE_ASSERT (section, GRAY_QUEUE_SECTION_STATE_FREE_LIST);
+               i ++;
+       }
+       if (!section)
+               return;
+       while (section->next) {
+               next = section->next;
+               section->next = next->next;
+               STATE_TRANSITION (next, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
+               sgen_gray_object_free_queue_section (next);
+       }
+}
+
+void
+sgen_gray_object_queue_init (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func)
+{
+       g_assert (sgen_gray_object_queue_is_empty (queue));
+
+       queue->alloc_prepare_func = NULL;
+       queue->alloc_prepare_data = NULL;
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       queue->enqueue_check_func = enqueue_check_func;
+#endif
+
+       /* Free the extra sections allocated during the last collection */
+       sgen_gray_object_queue_trim_free_list (queue);
+}
+
+static void
+invalid_prepare_func (SgenGrayQueue *queue)
+{
+       g_assert_not_reached ();
+}
+
+void
+sgen_gray_object_queue_init_invalid (SgenGrayQueue *queue)
+{
+       sgen_gray_object_queue_init (queue, NULL);
+       queue->alloc_prepare_func = invalid_prepare_func;
+       queue->alloc_prepare_data = NULL;
+}
+
+void
+sgen_gray_queue_set_alloc_prepare (SgenGrayQueue *queue, GrayQueueAllocPrepareFunc alloc_prepare_func, void *data)
+{
+       SGEN_ASSERT (0, !queue->alloc_prepare_func && !queue->alloc_prepare_data, "Can't set gray queue alloc-prepare twice");
+       queue->alloc_prepare_func = alloc_prepare_func;
+       queue->alloc_prepare_data = data;
+}
+
+void
+sgen_gray_object_queue_init_with_alloc_prepare (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func,
+               GrayQueueAllocPrepareFunc alloc_prepare_func, void *data)
+{
+       sgen_gray_object_queue_init (queue, enqueue_check_func);
+       sgen_gray_queue_set_alloc_prepare (queue, alloc_prepare_func, data);
+}
+
+void
+sgen_gray_object_queue_deinit (SgenGrayQueue *queue)
+{
+       g_assert (!queue->first);
+       while (queue->free_list) {
+               GrayQueueSection *next = queue->free_list->next;
+               STATE_TRANSITION (queue->free_list, GRAY_QUEUE_SECTION_STATE_FREE_LIST, GRAY_QUEUE_SECTION_STATE_FLOATING);
+               sgen_gray_object_free_queue_section (queue->free_list);
+               queue->free_list = next;
+       }
+}
+
+void
+sgen_gray_object_queue_disable_alloc_prepare (SgenGrayQueue *queue)
+{
+       queue->alloc_prepare_func = NULL;
+       queue->alloc_prepare_data = NULL;
+}
+
+static void
+lock_section_queue (SgenSectionGrayQueue *queue)
+{
+       if (!queue->locked)
+               return;
+
+       mono_mutex_lock (&queue->lock);
+}
+
+static void
+unlock_section_queue (SgenSectionGrayQueue *queue)
+{
+       if (!queue->locked)
+               return;
+
+       mono_mutex_unlock (&queue->lock);
+}
+
+void
+sgen_section_gray_queue_init (SgenSectionGrayQueue *queue, gboolean locked, GrayQueueEnqueueCheckFunc enqueue_check_func)
+{
+       g_assert (sgen_section_gray_queue_is_empty (queue));
+
+       queue->locked = locked;
+       if (locked) {
+               mono_mutex_init_recursive (&queue->lock);
+       }
+
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       queue->enqueue_check_func = enqueue_check_func;
+#endif
+}
+
+gboolean
+sgen_section_gray_queue_is_empty (SgenSectionGrayQueue *queue)
+{
+       return !queue->first;
+}
+
+GrayQueueSection*
+sgen_section_gray_queue_dequeue (SgenSectionGrayQueue *queue)
+{
+       GrayQueueSection *section;
+
+       lock_section_queue (queue);
+
+       if (queue->first) {
+               section = queue->first;
+               queue->first = section->next;
+
+               STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_ENQUEUED, GRAY_QUEUE_SECTION_STATE_FLOATING);
+
+               section->next = NULL;
+       } else {
+               section = NULL;
+       }
+
+       unlock_section_queue (queue);
+
+       return section;
+}
+
+void
+sgen_section_gray_queue_enqueue (SgenSectionGrayQueue *queue, GrayQueueSection *section)
+{
+       STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED);
+
+       lock_section_queue (queue);
+
+       section->next = queue->first;
+       queue->first = section;
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       if (queue->enqueue_check_func) {
+               int i;
+               for (i = 0; i < section->size; ++i)
+                       queue->enqueue_check_func (section->entries [i].obj);
+       }
+#endif
+
+       unlock_section_queue (queue);
+}
+
+void
+sgen_init_gray_queues (void)
+{
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("Gray Queue alloc section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_section_alloc);
+       mono_counters_register ("Gray Queue free section", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_section_free);
+       mono_counters_register ("Gray Queue enqueue fast path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_enqueue_fast_path);
+       mono_counters_register ("Gray Queue dequeue fast path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_dequeue_fast_path);
+       mono_counters_register ("Gray Queue enqueue slow path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_enqueue_slow_path);
+       mono_counters_register ("Gray Queue dequeue slow path", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_gray_queue_dequeue_slow_path);
+#endif
+}
+#endif
diff --git a/mono/sgen/sgen-gray.h b/mono/sgen/sgen-gray.h
new file mode 100644 (file)
index 0000000..966a377
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * sgen-gray.h: Gray queue management.
+ *
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGEN_GRAY_H__
+#define __MONO_SGEN_GRAY_H__
+
+#include "mono/sgen/sgen-protocol.h"
+
+/*
+ * This gray queue has to be as optimized as possible, because it is in the core of
+ * the mark/copy phase of the garbage collector. The memory access has then to be as
+ * cache friendly as possible. That's why we use a cursor based implementation.
+ * 
+ * This simply consist in maintaining a pointer to the current element in the
+ * queue. In addition to using this cursor, we use a simple linked list of arrays,
+ * called sections, so that we have the cache friendliness of arrays without having
+ * the cost of memory reallocation of a dynaic array, not the cost of memory
+ * indirection of a linked list.
+ * 
+ * This implementation also allows the dequeuing of a whole section at a time. This is
+ * for example used in the parallel GC because it would be too costly to take one element 
+ * at a time. This imply the main constraint that, because we don't carry the cursor
+ * with the section, we still have to store the index of the last element. This is done 
+ * through the 'size' field on the section, which default value is it's maximum value
+ * SGEN_GRAY_QUEUE_SECTION_SIZE. This field is updated in multiple cases :
+ *  - section allocation : default value
+ *  - object push : default value if we fill the current queue first
+ *  - section dequeue : position of the cursor in the dequeued section
+ *  - section enqueue : position of the cursor in the previously first section in the queue
+ * 
+ * The previous implementation was an index based access where we would store the index
+ * of the last element in the section. This was less efficient because we would have
+ * to make 1 memory access for the index value, 1 for the base address of the objects
+ * array and another 1 for the actual value in the array.
+ */
+
+/* SGEN_GRAY_QUEUE_HEADER_SIZE is number of machine words */
+#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
+#define SGEN_GRAY_QUEUE_HEADER_SIZE    4
+#else
+#define SGEN_GRAY_QUEUE_HEADER_SIZE    2
+#endif
+
+#define SGEN_GRAY_QUEUE_SECTION_SIZE   (128 - SGEN_GRAY_QUEUE_HEADER_SIZE)
+
+#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
+typedef enum {
+       GRAY_QUEUE_SECTION_STATE_FLOATING,
+       GRAY_QUEUE_SECTION_STATE_ENQUEUED,
+       GRAY_QUEUE_SECTION_STATE_FREE_LIST,
+       GRAY_QUEUE_SECTION_STATE_FREED
+} GrayQueueSectionState;
+#endif
+
+typedef struct _GrayQueueEntry GrayQueueEntry;
+struct _GrayQueueEntry {
+       char *obj;
+       mword desc;
+};
+
+#define SGEN_GRAY_QUEUE_ENTRY(obj,desc)        { (obj), (desc) }
+
+/*
+ * This is a stack now instead of a queue, so the most recently added items are removed
+ * first, improving cache locality, and keeping the stack size manageable.
+ */
+typedef struct _GrayQueueSection GrayQueueSection;
+struct _GrayQueueSection {
+#ifdef SGEN_CHECK_GRAY_OBJECT_SECTIONS
+       /*
+        * The dummy is here so that the state doesn't get overwritten
+        * by the internal allocator once the section is freed.
+        */
+       int dummy;
+       GrayQueueSectionState state;
+#endif
+       int size;
+       GrayQueueSection *next;
+       GrayQueueEntry entries [SGEN_GRAY_QUEUE_SECTION_SIZE];
+};
+
+typedef struct _SgenGrayQueue SgenGrayQueue;
+
+typedef void (*GrayQueueAllocPrepareFunc) (SgenGrayQueue*);
+typedef void (*GrayQueueEnqueueCheckFunc) (char*);
+
+struct _SgenGrayQueue {
+       GrayQueueEntry *cursor;
+       GrayQueueSection *first;
+       GrayQueueSection *free_list;
+       GrayQueueAllocPrepareFunc alloc_prepare_func;
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       GrayQueueEnqueueCheckFunc enqueue_check_func;
+#endif
+       void *alloc_prepare_data;
+};
+
+typedef struct _SgenSectionGrayQueue SgenSectionGrayQueue;
+
+struct _SgenSectionGrayQueue {
+       GrayQueueSection *first;
+       gboolean locked;
+       mono_mutex_t lock;
+#ifdef SGEN_CHECK_GRAY_OBJECT_ENQUEUE
+       GrayQueueEnqueueCheckFunc enqueue_check_func;
+#endif
+};
+
+#define GRAY_LAST_CURSOR_POSITION(s) ((s)->entries + SGEN_GRAY_QUEUE_SECTION_SIZE - 1)
+#define GRAY_FIRST_CURSOR_POSITION(s) ((s)->entries)
+
+#ifdef HEAVY_STATISTICS
+extern guint64 stat_gray_queue_section_alloc;
+extern guint64 stat_gray_queue_section_free;
+extern guint64 stat_gray_queue_enqueue_fast_path;
+extern guint64 stat_gray_queue_dequeue_fast_path;
+extern guint64 stat_gray_queue_enqueue_slow_path;
+extern guint64 stat_gray_queue_dequeue_slow_path;
+#endif
+
+void sgen_init_gray_queues (void);
+
+void sgen_gray_object_enqueue (SgenGrayQueue *queue, char *obj, mword desc);
+GrayQueueEntry sgen_gray_object_dequeue (SgenGrayQueue *queue);
+GrayQueueSection* sgen_gray_object_dequeue_section (SgenGrayQueue *queue);
+void sgen_gray_object_enqueue_section (SgenGrayQueue *queue, GrayQueueSection *section);
+void sgen_gray_object_queue_trim_free_list (SgenGrayQueue *queue);
+void sgen_gray_object_queue_init (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func);
+void sgen_gray_object_queue_init_invalid (SgenGrayQueue *queue);
+void sgen_gray_queue_set_alloc_prepare (SgenGrayQueue *queue, GrayQueueAllocPrepareFunc alloc_prepare_func, void *data);
+void sgen_gray_object_queue_init_with_alloc_prepare (SgenGrayQueue *queue, GrayQueueEnqueueCheckFunc enqueue_check_func,
+               GrayQueueAllocPrepareFunc func, void *data);
+void sgen_gray_object_queue_deinit (SgenGrayQueue *queue);
+void sgen_gray_object_queue_disable_alloc_prepare (SgenGrayQueue *queue);
+void sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue);
+void sgen_gray_object_free_queue_section (GrayQueueSection *section);
+
+void sgen_section_gray_queue_init (SgenSectionGrayQueue *queue, gboolean locked,
+               GrayQueueEnqueueCheckFunc enqueue_check_func);
+gboolean sgen_section_gray_queue_is_empty (SgenSectionGrayQueue *queue);
+GrayQueueSection* sgen_section_gray_queue_dequeue (SgenSectionGrayQueue *queue);
+void sgen_section_gray_queue_enqueue (SgenSectionGrayQueue *queue, GrayQueueSection *section);
+
+gboolean sgen_gray_object_fill_prefetch (SgenGrayQueue *queue);
+
+static inline gboolean
+sgen_gray_object_queue_is_empty (SgenGrayQueue *queue)
+{
+       return queue->first == NULL;
+}
+
+static inline MONO_ALWAYS_INLINE void
+GRAY_OBJECT_ENQUEUE (SgenGrayQueue *queue, char* obj, mword desc)
+{
+#if SGEN_MAX_DEBUG_LEVEL >= 9
+       sgen_gray_object_enqueue (queue, obj, desc);
+#else
+       if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) {
+               sgen_gray_object_enqueue (queue, obj, desc);
+       } else {
+               GrayQueueEntry entry = SGEN_GRAY_QUEUE_ENTRY (obj, desc);
+
+               HEAVY_STAT (stat_gray_queue_enqueue_fast_path ++);
+
+               *++queue->cursor = entry;
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+               binary_protocol_gray_enqueue (queue, queue->cursor, obj);
+#endif
+       }
+#endif
+}
+
+static inline MONO_ALWAYS_INLINE void
+GRAY_OBJECT_DEQUEUE (SgenGrayQueue *queue, char** obj, mword *desc)
+{
+       GrayQueueEntry entry;
+#if SGEN_MAX_DEBUG_LEVEL >= 9
+       entry = sgen_gray_object_dequeue (queue);
+       *obj = entry.obj;
+       *desc = entry.desc;
+#else
+       if (!queue->first) {
+               HEAVY_STAT (stat_gray_queue_dequeue_fast_path ++);
+
+               *obj = NULL;
+       } else if (G_UNLIKELY (queue->cursor == GRAY_FIRST_CURSOR_POSITION (queue->first))) {
+               entry = sgen_gray_object_dequeue (queue);
+               *obj = entry.obj;
+               *desc = entry.desc;
+       } else {
+               HEAVY_STAT (stat_gray_queue_dequeue_fast_path ++);
+
+               entry = *queue->cursor--;
+               *obj = entry.obj;
+               *desc = entry.desc;
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+               binary_protocol_gray_dequeue (queue, queue->cursor + 1, *obj);
+#endif
+       }
+#endif
+}
+
+#endif
diff --git a/mono/sgen/sgen-hash-table.c b/mono/sgen/sgen-hash-table.c
new file mode 100644 (file)
index 0000000..61c78e9
--- /dev/null
@@ -0,0 +1,251 @@
+/*
+ * sgen-hash-table.c
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include <mono/sgen/sgen-gc.h>
+#include <mono/sgen/sgen-hash-table.h>
+
+#ifdef HEAVY_STATISTICS
+static guint64 stat_lookups;
+static guint64 stat_lookup_iterations;
+static guint64 stat_lookup_max_iterations;
+#endif
+
+static void
+rehash (SgenHashTable *hash_table)
+{
+       SgenHashTableEntry **old_hash = hash_table->table;
+       guint old_hash_size = hash_table->size;
+       guint i, hash, new_size;
+       SgenHashTableEntry **new_hash;
+       SgenHashTableEntry *entry, *next;
+
+       if (!old_hash) {
+               sgen_register_fixed_internal_mem_type (hash_table->entry_mem_type,
+                               sizeof (SgenHashTableEntry*) + sizeof (gpointer) + hash_table->data_size);
+               new_size = 13;
+       } else {
+               new_size = g_spaced_primes_closest (hash_table->num_entries);
+       }
+
+       new_hash = sgen_alloc_internal_dynamic (new_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type, TRUE);
+       for (i = 0; i < old_hash_size; ++i) {
+               for (entry = old_hash [i]; entry; entry = next) {
+                       hash = hash_table->hash_func (entry->key) % new_size;
+                       next = entry->next;
+                       entry->next = new_hash [hash];
+                       new_hash [hash] = entry;
+               }
+       }
+       sgen_free_internal_dynamic (old_hash, old_hash_size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type);
+       hash_table->table = new_hash;
+       hash_table->size = new_size;
+}
+
+static void
+rehash_if_necessary (SgenHashTable *hash_table)
+{
+       if (hash_table->num_entries >= hash_table->size * 2)
+               rehash (hash_table);
+
+       SGEN_ASSERT (1, hash_table->size, "rehash guarantees size > 0");
+}
+
+static SgenHashTableEntry*
+lookup (SgenHashTable *hash_table, gpointer key, guint *_hash)
+{
+       SgenHashTableEntry *entry;
+       guint hash;
+       GEqualFunc equal = hash_table->equal_func;
+#ifdef HEAVY_STATISTICS
+       guint64 iterations = 0;
+       ++stat_lookups;
+#endif
+
+       if (!hash_table->size)
+               return NULL;
+
+       hash = hash_table->hash_func (key) % hash_table->size;
+       if (_hash)
+               *_hash = hash;
+
+       for (entry = hash_table->table [hash]; entry; entry = entry->next) {
+#ifdef HEAVY_STATISTICS
+               ++stat_lookup_iterations;
+               ++iterations;
+               if (iterations > stat_lookup_max_iterations)
+                       stat_lookup_max_iterations = iterations;
+#endif
+               if ((equal && equal (entry->key, key)) || (!equal && entry->key == key))
+                       return entry;
+       }
+       return NULL;
+}
+
+gpointer
+sgen_hash_table_lookup (SgenHashTable *hash_table, gpointer key)
+{
+       SgenHashTableEntry *entry = lookup (hash_table, key, NULL);
+       if (!entry)
+               return NULL;
+       return entry->data;
+}
+
+gboolean
+sgen_hash_table_replace (SgenHashTable *hash_table, gpointer key, gpointer new_value, gpointer old_value)
+{
+       guint hash;
+       SgenHashTableEntry *entry;
+
+       rehash_if_necessary (hash_table);
+       entry = lookup (hash_table, key, &hash);
+
+       if (entry) {
+               if (old_value)
+                       memcpy (old_value, entry->data, hash_table->data_size); 
+               memcpy (entry->data, new_value, hash_table->data_size);
+               return FALSE;
+       }
+
+       entry = sgen_alloc_internal (hash_table->entry_mem_type);
+       entry->key = key;
+       memcpy (entry->data, new_value, hash_table->data_size);
+
+       entry->next = hash_table->table [hash];
+       hash_table->table [hash] = entry;
+
+       hash_table->num_entries++;
+
+       return TRUE;
+}
+
+gboolean
+sgen_hash_table_set_value (SgenHashTable *hash_table, gpointer key, gpointer new_value, gpointer old_value)
+{
+       guint hash;
+       SgenHashTableEntry *entry;
+
+       entry = lookup (hash_table, key, &hash);
+
+       if (entry) {
+               if (old_value)
+                       memcpy (old_value, entry->data, hash_table->data_size);
+               memcpy (entry->data, new_value, hash_table->data_size);
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+gboolean
+sgen_hash_table_set_key (SgenHashTable *hash_table, gpointer old_key, gpointer new_key)
+{
+       guint hash;
+       SgenHashTableEntry *entry;
+
+       entry = lookup (hash_table, old_key, &hash);
+
+       if (entry) {
+               entry->key = new_key;
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+gboolean
+sgen_hash_table_remove (SgenHashTable *hash_table, gpointer key, gpointer data_return)
+{
+       SgenHashTableEntry *entry, *prev;
+       guint hash;
+       GEqualFunc equal = hash_table->equal_func;
+
+       rehash_if_necessary (hash_table);
+       hash = hash_table->hash_func (key) % hash_table->size;
+
+       prev = NULL;
+       for (entry = hash_table->table [hash]; entry; entry = entry->next) {
+               if ((equal && equal (entry->key, key)) || (!equal && entry->key == key)) {
+                       if (prev)
+                               prev->next = entry->next;
+                       else
+                               hash_table->table [hash] = entry->next;
+
+                       hash_table->num_entries--;
+
+                       if (data_return)
+                               memcpy (data_return, entry->data, hash_table->data_size);
+
+                       sgen_free_internal (entry, hash_table->entry_mem_type);
+
+                       return TRUE;
+               }
+               prev = entry;
+       }
+
+       return FALSE;
+}
+
+void
+sgen_hash_table_clean (SgenHashTable *hash_table)
+{
+       guint i;
+
+       if (!hash_table->size) {
+               SGEN_ASSERT (1, !hash_table->table, "clean should reset hash_table->table");
+               SGEN_ASSERT (1, !hash_table->num_entries, "clean should reset hash_table->num_entries");
+               return;
+       }
+
+       for (i = 0; i < hash_table->size; ++i) {
+               SgenHashTableEntry *entry = hash_table->table [i];
+               while (entry) {
+                       SgenHashTableEntry *next = entry->next;
+                       sgen_free_internal (entry, hash_table->entry_mem_type);
+                       entry = next;
+               }
+       }
+
+       sgen_free_internal_dynamic (hash_table->table, hash_table->size * sizeof (SgenHashTableEntry*), hash_table->table_mem_type);
+
+       hash_table->table = NULL;
+       hash_table->size = 0;
+       hash_table->num_entries = 0;
+}
+
+void
+sgen_init_hash_table (void)
+{
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("Hash table lookups", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_lookups);
+       mono_counters_register ("Hash table lookup iterations", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_lookup_iterations);
+       mono_counters_register ("Hash table lookup max iterations", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_lookup_max_iterations);
+#endif
+}
+
+#endif
diff --git a/mono/sgen/sgen-hash-table.h b/mono/sgen/sgen-hash-table.h
new file mode 100644 (file)
index 0000000..e6cfe43
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef __MONO_SGENHASHTABLE_H__
+#define __MONO_SGENHASHTABLE_H__
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include <glib.h>
+
+/* hash tables */
+
+typedef struct _SgenHashTableEntry SgenHashTableEntry;
+struct _SgenHashTableEntry {
+       SgenHashTableEntry *next;
+       gpointer key;
+       char data [MONO_ZERO_LEN_ARRAY]; /* data is pointer-aligned */
+};
+
+typedef struct {
+       int table_mem_type;
+       int entry_mem_type;
+       size_t data_size;
+       GHashFunc hash_func;
+       GEqualFunc equal_func;
+       SgenHashTableEntry **table;
+       guint size;
+       guint num_entries;
+} SgenHashTable;
+
+#define SGEN_HASH_TABLE_INIT(table_type,entry_type,data_size,hash_func,equal_func)     { (table_type), (entry_type), (data_size), (hash_func), (equal_func), NULL, 0, 0 }
+#define SGEN_HASH_TABLE_ENTRY_SIZE(data_size)                  ((data_size) + sizeof (SgenHashTableEntry*) + sizeof (gpointer))
+
+gpointer sgen_hash_table_lookup (SgenHashTable *table, gpointer key);
+gboolean sgen_hash_table_replace (SgenHashTable *table, gpointer key, gpointer new_value, gpointer old_value);
+gboolean sgen_hash_table_set_value (SgenHashTable *table, gpointer key, gpointer new_value, gpointer old_value);
+gboolean sgen_hash_table_set_key (SgenHashTable *hash_table, gpointer old_key, gpointer new_key);
+gboolean sgen_hash_table_remove (SgenHashTable *table, gpointer key, gpointer data_return);
+
+void sgen_hash_table_clean (SgenHashTable *table);
+
+void sgen_init_hash_table (void);
+
+#define sgen_hash_table_num_entries(h) ((h)->num_entries)
+
+#define sgen_hash_table_key_for_value_pointer(v)       (((SgenHashTableEntry*)((char*)(v) - G_STRUCT_OFFSET (SgenHashTableEntry, data)))->key)
+
+#define SGEN_HASH_TABLE_FOREACH(h,k,v) do {                            \
+               SgenHashTable *__hash_table = (h);                      \
+               SgenHashTableEntry **__table = __hash_table->table;     \
+               guint __i;                                              \
+               for (__i = 0; __i < (h)->size; ++__i) {                 \
+                       SgenHashTableEntry **__iter, **__next;                  \
+                       for (__iter = &__table [__i]; *__iter; __iter = __next) {       \
+                               SgenHashTableEntry *__entry = *__iter;  \
+                               __next = &__entry->next;        \
+                               (k) = __entry->key;                     \
+                               (v) = (gpointer)__entry->data;
+
+/* The loop must be continue'd after using this! */
+#define SGEN_HASH_TABLE_FOREACH_REMOVE(free)   do {                    \
+               *__iter = *__next;      \
+               __next = __iter;        \
+               --__hash_table->num_entries;                            \
+               if ((free))                                             \
+                       sgen_free_internal (__entry, __hash_table->entry_mem_type); \
+       } while (0)
+
+#define SGEN_HASH_TABLE_FOREACH_SET_KEY(k)     ((__entry)->key = (k))
+
+#define SGEN_HASH_TABLE_FOREACH_END                                    \
+                       }                                               \
+               }                                                       \
+       } while (0)
+
+#endif
+
+#endif
diff --git a/mono/sgen/sgen-internal.c b/mono/sgen/sgen-internal.c
new file mode 100644 (file)
index 0000000..4ccff74
--- /dev/null
@@ -0,0 +1,284 @@
+/*
+ * sgen-internal.c: Internal lock-free memory allocator.
+ *
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/utils/lock-free-alloc.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-client.h"
+
+/* keep each size a multiple of ALLOC_ALIGN */
+#if SIZEOF_VOID_P == 4
+static const int allocator_sizes [] = {
+          8,   16,   24,   32,   40,   48,   64,   80,
+         96,  128,  160,  192,  224,  248,  296,  320,
+        384,  448,  504,  528,  584,  680,  816, 1088,
+       1360, 2044, 2336, 2728, 3272, 4092, 5456, 8188 };
+#else
+static const int allocator_sizes [] = {
+          8,   16,   24,   32,   40,   48,   64,   80,
+         96,  128,  160,  192,  224,  248,  320,  328,
+        384,  448,  528,  584,  680,  816, 1016, 1088,
+       1360, 2040, 2336, 2728, 3272, 4088, 5456, 8184 };
+#endif
+
+#define NUM_ALLOCATORS (sizeof (allocator_sizes) / sizeof (int))
+
+static int allocator_block_sizes [NUM_ALLOCATORS];
+
+static MonoLockFreeAllocSizeClass size_classes [NUM_ALLOCATORS];
+static MonoLockFreeAllocator allocators [NUM_ALLOCATORS];
+
+#ifdef HEAVY_STATISTICS
+static int allocator_sizes_stats [NUM_ALLOCATORS];
+#endif
+
+static size_t
+block_size (size_t slot_size)
+{
+       static int pagesize = -1;
+
+       int size;
+
+       if (pagesize == -1)
+               pagesize = mono_pagesize ();
+
+       for (size = pagesize; size < LOCK_FREE_ALLOC_SB_MAX_SIZE; size <<= 1) {
+               if (slot_size * 2 <= LOCK_FREE_ALLOC_SB_USABLE_SIZE (size))
+                       return size;
+       }
+       return LOCK_FREE_ALLOC_SB_MAX_SIZE;
+}
+
+/*
+ * Find the allocator index for memory chunks that can contain @size
+ * objects.
+ */
+static int
+index_for_size (size_t size)
+{
+       int slot;
+       /* do a binary search or lookup table later. */
+       for (slot = 0; slot < NUM_ALLOCATORS; ++slot) {
+               if (allocator_sizes [slot] >= size)
+                       return slot;
+       }
+       g_assert_not_reached ();
+       return -1;
+}
+
+/*
+ * Allocator indexes for the fixed INTERNAL_MEM_XXX types.  -1 if that
+ * type is dynamic.
+ */
+static int fixed_type_allocator_indexes [INTERNAL_MEM_MAX];
+
+void
+sgen_register_fixed_internal_mem_type (int type, size_t size)
+{
+       int slot;
+
+       g_assert (type >= 0 && type < INTERNAL_MEM_MAX);
+       g_assert (size <= allocator_sizes [NUM_ALLOCATORS - 1]);
+
+       slot = index_for_size (size);
+       g_assert (slot >= 0);
+
+       if (fixed_type_allocator_indexes [type] == -1)
+               fixed_type_allocator_indexes [type] = slot;
+       else
+               g_assert (fixed_type_allocator_indexes [type] == slot);
+}
+
+static const char*
+description_for_type (int type)
+{
+       switch (type) {
+       case INTERNAL_MEM_PIN_QUEUE: return "pin-queue";
+       case INTERNAL_MEM_FRAGMENT: return "fragment";
+       case INTERNAL_MEM_SECTION: return "section";
+       case INTERNAL_MEM_SCAN_STARTS: return "scan-starts";
+       case INTERNAL_MEM_FIN_TABLE: return "fin-table";
+       case INTERNAL_MEM_FINALIZE_ENTRY: return "finalize-entry";
+       case INTERNAL_MEM_FINALIZE_READY: return "finalize-ready";
+       case INTERNAL_MEM_DISLINK_TABLE: return "dislink-table";
+       case INTERNAL_MEM_DISLINK: return "dislink";
+       case INTERNAL_MEM_ROOTS_TABLE: return "roots-table";
+       case INTERNAL_MEM_ROOT_RECORD: return "root-record";
+       case INTERNAL_MEM_STATISTICS: return "statistics";
+       case INTERNAL_MEM_STAT_PINNED_CLASS: return "pinned-class";
+       case INTERNAL_MEM_STAT_REMSET_CLASS: return "remset-class";
+       case INTERNAL_MEM_GRAY_QUEUE: return "gray-queue";
+       case INTERNAL_MEM_MS_TABLES: return "marksweep-tables";
+       case INTERNAL_MEM_MS_BLOCK_INFO: return "marksweep-block-info";
+       case INTERNAL_MEM_MS_BLOCK_INFO_SORT: return "marksweep-block-info-sort";
+       case INTERNAL_MEM_WORKER_DATA: return "worker-data";
+       case INTERNAL_MEM_THREAD_POOL_JOB: return "thread-pool-job";
+       case INTERNAL_MEM_BRIDGE_DATA: return "bridge-data";
+       case INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE: return "old-bridge-hash-table";
+       case INTERNAL_MEM_OLD_BRIDGE_HASH_TABLE_ENTRY: return "old-bridge-hash-table-entry";
+       case INTERNAL_MEM_BRIDGE_HASH_TABLE: return "bridge-hash-table";
+       case INTERNAL_MEM_BRIDGE_HASH_TABLE_ENTRY: return "bridge-hash-table-entry";
+       case INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE: return "tarjan-bridge-hash-table";
+       case INTERNAL_MEM_TARJAN_BRIDGE_HASH_TABLE_ENTRY: return "tarjan-bridge-hash-table-entry";
+       case INTERNAL_MEM_TARJAN_OBJ_BUCKET: return "tarjan-bridge-object-buckets";
+       case INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE: return "bridge-alive-hash-table";
+       case INTERNAL_MEM_BRIDGE_ALIVE_HASH_TABLE_ENTRY: return "bridge-alive-hash-table-entry";
+       case INTERNAL_MEM_BRIDGE_DEBUG: return "bridge-debug";
+       case INTERNAL_MEM_TOGGLEREF_DATA: return "toggleref-data";
+       case INTERNAL_MEM_CARDTABLE_MOD_UNION: return "cardtable-mod-union";
+       case INTERNAL_MEM_BINARY_PROTOCOL: return "binary-protocol";
+       case INTERNAL_MEM_TEMPORARY: return "temporary";
+       default: {
+               const char *description = sgen_client_description_for_internal_mem_type (type);
+               SGEN_ASSERT (0, description, "Unknown internal mem type");
+               return description;
+       }
+       }
+}
+
+void*
+sgen_alloc_internal_dynamic (size_t size, int type, gboolean assert_on_failure)
+{
+       int index;
+       void *p;
+
+       if (size > allocator_sizes [NUM_ALLOCATORS - 1]) {
+               p = sgen_alloc_os_memory (size, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, NULL);
+               if (!p)
+                       sgen_assert_memory_alloc (NULL, size, description_for_type (type));
+       } else {
+               index = index_for_size (size);
+
+#ifdef HEAVY_STATISTICS
+               ++ allocator_sizes_stats [index];
+#endif
+
+               p = mono_lock_free_alloc (&allocators [index]);
+               if (!p)
+                       sgen_assert_memory_alloc (NULL, size, description_for_type (type));
+               memset (p, 0, size);
+       }
+       return p;
+}
+
+void
+sgen_free_internal_dynamic (void *addr, size_t size, int type)
+{
+       if (!addr)
+               return;
+
+       if (size > allocator_sizes [NUM_ALLOCATORS - 1])
+               sgen_free_os_memory (addr, size, SGEN_ALLOC_INTERNAL);
+       else
+               mono_lock_free_free (addr, block_size (size));
+}
+
+void*
+sgen_alloc_internal (int type)
+{
+       int index, size;
+       void *p;
+
+       index = fixed_type_allocator_indexes [type];
+       g_assert (index >= 0 && index < NUM_ALLOCATORS);
+
+#ifdef HEAVY_STATISTICS
+       ++ allocator_sizes_stats [index];
+#endif
+
+       size = allocator_sizes [index];
+
+       p = mono_lock_free_alloc (&allocators [index]);
+       memset (p, 0, size);
+
+       return p;
+}
+
+void
+sgen_free_internal (void *addr, int type)
+{
+       int index;
+
+       if (!addr)
+               return;
+
+       index = fixed_type_allocator_indexes [type];
+       g_assert (index >= 0 && index < NUM_ALLOCATORS);
+
+       mono_lock_free_free (addr, allocator_block_sizes [index]);
+}
+
+void
+sgen_dump_internal_mem_usage (FILE *heap_dump_file)
+{
+       /*
+       int i;
+
+       fprintf (heap_dump_file, "<other-mem-usage type=\"large-internal\" size=\"%lld\"/>\n", large_internal_bytes_alloced);
+       fprintf (heap_dump_file, "<other-mem-usage type=\"pinned-chunks\" size=\"%lld\"/>\n", pinned_chunk_bytes_alloced);
+       for (i = 0; i < INTERNAL_MEM_MAX; ++i) {
+               fprintf (heap_dump_file, "<other-mem-usage type=\"%s\" size=\"%ld\"/>\n",
+                               description_for_type (i), unmanaged_allocator.small_internal_mem_bytes [i]);
+       }
+       */
+}
+
+void
+sgen_report_internal_mem_usage (void)
+{
+       int i G_GNUC_UNUSED;
+#ifdef HEAVY_STATISTICS
+       printf ("size -> # allocations\n");
+       for (i = 0; i < NUM_ALLOCATORS; ++i)
+               printf ("%d -> %d\n", allocator_sizes [i], allocator_sizes_stats [i]);
+#endif
+}
+
+void
+sgen_init_internal_allocator (void)
+{
+       int i, size;
+
+       for (i = 0; i < INTERNAL_MEM_MAX; ++i)
+               fixed_type_allocator_indexes [i] = -1;
+
+       for (i = 0; i < NUM_ALLOCATORS; ++i) {
+               allocator_block_sizes [i] = block_size (allocator_sizes [i]);
+               mono_lock_free_allocator_init_size_class (&size_classes [i], allocator_sizes [i], allocator_block_sizes [i]);
+               mono_lock_free_allocator_init_allocator (&allocators [i], &size_classes [i]);
+       }
+
+       for (size = mono_pagesize (); size <= LOCK_FREE_ALLOC_SB_MAX_SIZE; size <<= 1) {
+               int max_size = LOCK_FREE_ALLOC_SB_USABLE_SIZE (size) / 2;
+               /*
+                * we assert that allocator_sizes contains the biggest possible object size
+                * per block (4K => 4080 / 2 = 2040, 8k => 8176 / 2 = 4088, 16k => 16368 / 2 = 8184 on 64bits),
+                * so that we do not get different block sizes for sizes that should go to the same one
+                */
+               g_assert (allocator_sizes [index_for_size (max_size)] == max_size);
+       }
+}
+
+#endif
diff --git a/mono/sgen/sgen-layout-stats.c b/mono/sgen/sgen-layout-stats.c
new file mode 100644 (file)
index 0000000..2f9ca11
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Copyright Xamarin Inc (http://www.xamarin.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include "sgen/sgen-gc.h"
+#include "sgen/sgen-layout-stats.h"
+
+#ifdef SGEN_OBJECT_LAYOUT_STATISTICS
+
+#define NUM_HISTOGRAM_ENTRIES  (1 << SGEN_OBJECT_LAYOUT_BITMAP_BITS)
+
+static unsigned long histogram [NUM_HISTOGRAM_ENTRIES];
+static unsigned long count_bitmap_overflow;
+static unsigned long count_ref_array;
+static unsigned long count_vtype_array;
+
+void
+sgen_object_layout_scanned_bitmap (unsigned int bitmap)
+{
+       g_assert (!(bitmap >> SGEN_OBJECT_LAYOUT_BITMAP_BITS));
+       ++histogram [bitmap];
+}
+
+void
+sgen_object_layout_scanned_bitmap_overflow (void)
+{
+       ++count_bitmap_overflow;
+}
+
+void
+sgen_object_layout_scanned_ref_array (void)
+{
+       ++count_ref_array;
+}
+
+void
+sgen_object_layout_scanned_vtype_array (void)
+{
+       ++count_vtype_array;
+}
+
+void
+sgen_object_layout_dump (FILE *out)
+{
+       int i;
+
+       for (i = 0; i < NUM_HISTOGRAM_ENTRIES; ++i) {
+               if (!histogram [i])
+                       continue;
+               fprintf (out, "%d %lu\n", i, histogram [i]);
+       }
+       fprintf (out, "bitmap-overflow %lu\n", count_bitmap_overflow);
+       fprintf (out, "ref-array %lu\n", count_ref_array);
+       fprintf (out, "vtype-array %lu\n", count_vtype_array);
+}
+
+#endif
+#endif
diff --git a/mono/sgen/sgen-layout-stats.h b/mono/sgen/sgen-layout-stats.h
new file mode 100644 (file)
index 0000000..3853d34
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright Xamarin Inc (http://www.xamarin.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __MONO_SGEN_LAYOUT_STATS_H__
+#define __MONO_SGEN_LAYOUT_STATS_H__
+
+#ifdef SGEN_OBJECT_LAYOUT_STATISTICS
+
+#define SGEN_OBJECT_LAYOUT_BITMAP_BITS 16
+
+void sgen_object_layout_scanned_bitmap (unsigned int bitmap);
+void sgen_object_layout_scanned_bitmap_overflow (void);
+void sgen_object_layout_scanned_ref_array (void);
+void sgen_object_layout_scanned_vtype_array (void);
+
+void sgen_object_layout_dump (FILE *out);
+
+#define SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP   unsigned int __object_layout_bitmap = 0
+#define SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP(o,p) do {            \
+               int __index = ((void**)(p)) - ((void**)(((char*)(o)) + SGEN_CLIENT_OBJECT_HEADER_SIZE)); \
+               if (__index >= SGEN_OBJECT_LAYOUT_BITMAP_BITS)          \
+                       __object_layout_bitmap = (unsigned int)-1;      \
+               else if (__object_layout_bitmap != (unsigned int)-1)    \
+                       __object_layout_bitmap |= (1 << __index);       \
+       } while (0)
+#define SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP do {               \
+               if (__object_layout_bitmap == (unsigned int)-1)         \
+                       sgen_object_layout_scanned_bitmap_overflow ();  \
+               else                                                    \
+                       sgen_object_layout_scanned_bitmap (__object_layout_bitmap); \
+       } while (0)
+
+#else
+
+#define sgen_object_layout_scanned_bitmap(bitmap)
+#define sgen_object_layout_scanned_bitmap_overflow()
+#define sgen_object_layout_scanned_ref_array()
+#define sgen_object_layout_scanned_vtype_array()
+
+#define sgen_object_layout_dump(out)
+
+#define SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP
+#define SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP(o,p)
+#define SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP
+
+#endif
+
+#endif
diff --git a/mono/sgen/sgen-los.c b/mono/sgen/sgen-los.c
new file mode 100644 (file)
index 0000000..dcc742a
--- /dev/null
@@ -0,0 +1,711 @@
+/*
+ * sgen-los.c: Large objects space.
+ *
+ * Author:
+ *     Paolo Molaro (lupus@ximian.com)
+ *
+ * Copyright 2005-2010 Novell, Inc (http://www.novell.com)
+ *
+ * Thread start/stop adapted from Boehm's GC:
+ * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
+ * Copyright (c) 1996 by Silicon Graphics.  All rights reserved.
+ * Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
+ * Copyright (c) 2000-2004 by Hewlett-Packard Company.  All rights reserved.
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-client.h"
+
+#define LOS_SECTION_SIZE       (1024 * 1024)
+
+/*
+ * This shouldn't be much smaller or larger than MAX_SMALL_OBJ_SIZE.
+ * Must be at least sizeof (LOSSection).
+ */
+#define LOS_CHUNK_SIZE         4096
+#define LOS_CHUNK_BITS         12
+
+/* Largest object that can be allocated in a section. */
+#define LOS_SECTION_OBJECT_LIMIT       (LOS_SECTION_SIZE - LOS_CHUNK_SIZE - sizeof (LOSObject))
+//#define LOS_SECTION_OBJECT_LIMIT     0
+#define LOS_SECTION_NUM_CHUNKS         ((LOS_SECTION_SIZE >> LOS_CHUNK_BITS) - 1)
+
+#define LOS_SECTION_FOR_OBJ(obj)       ((LOSSection*)((mword)(obj) & ~(mword)(LOS_SECTION_SIZE - 1)))
+#define LOS_CHUNK_INDEX(obj,section)   (((char*)(obj) - (char*)(section)) >> LOS_CHUNK_BITS)
+
+#define LOS_NUM_FAST_SIZES             32
+
+typedef struct _LOSFreeChunks LOSFreeChunks;
+struct _LOSFreeChunks {
+       LOSFreeChunks *next_size;
+       size_t size;
+};
+
+typedef struct _LOSSection LOSSection;
+struct _LOSSection {
+       LOSSection *next;
+       size_t num_free_chunks;
+       unsigned char *free_chunk_map;
+};
+
+LOSObject *los_object_list = NULL;
+mword los_memory_usage = 0;
+
+static LOSSection *los_sections = NULL;
+static LOSFreeChunks *los_fast_free_lists [LOS_NUM_FAST_SIZES]; /* 0 is for larger sizes */
+static mword los_num_objects = 0;
+static int los_num_sections = 0;
+
+//#define USE_MALLOC
+//#define LOS_CONSISTENCY_CHECK
+//#define LOS_DUMMY
+
+#ifdef LOS_DUMMY
+#define LOS_SEGMENT_SIZE       (4096 * 1024)
+
+static char *los_segment = NULL;
+static int los_segment_index = 0;
+#endif
+
+#ifdef LOS_CONSISTENCY_CHECK
+static void
+los_consistency_check (void)
+{
+       LOSSection *section;
+       LOSObject *obj;
+       int i;
+       mword memory_usage = 0;
+
+       for (obj = los_object_list; obj; obj = obj->next) {
+               char *end = obj->data + obj->size;
+               int start_index, num_chunks;
+
+               memory_usage += obj->size;
+
+               if (obj->size > LOS_SECTION_OBJECT_LIMIT)
+                       continue;
+
+               section = LOS_SECTION_FOR_OBJ (obj);
+
+               g_assert (end <= (char*)section + LOS_SECTION_SIZE);
+
+               start_index = LOS_CHUNK_INDEX (obj, section);
+               num_chunks = (obj->size + sizeof (LOSObject) + LOS_CHUNK_SIZE - 1) >> LOS_CHUNK_BITS;
+               for (i = start_index; i < start_index + num_chunks; ++i)
+                       g_assert (!section->free_chunk_map [i]);
+       }
+
+       for (i = 0; i < LOS_NUM_FAST_SIZES; ++i) {
+               LOSFreeChunks *size_chunks;
+               for (size_chunks = los_fast_free_lists [i]; size_chunks; size_chunks = size_chunks->next_size) {
+                       LOSSection *section = LOS_SECTION_FOR_OBJ (size_chunks);
+                       int j, num_chunks, start_index;
+
+                       if (i == 0)
+                               g_assert (size_chunks->size >= LOS_NUM_FAST_SIZES * LOS_CHUNK_SIZE);
+                       else
+                               g_assert (size_chunks->size == i * LOS_CHUNK_SIZE);
+
+                       num_chunks = size_chunks->size >> LOS_CHUNK_BITS;
+                       start_index = LOS_CHUNK_INDEX (size_chunks, section);
+                       for (j = start_index; j < start_index + num_chunks; ++j)
+                               g_assert (section->free_chunk_map [j]);
+               }
+       }
+
+       g_assert (los_memory_usage == memory_usage);
+}
+#endif
+
+static void
+add_free_chunk (LOSFreeChunks *free_chunks, size_t size)
+{
+       size_t num_chunks = size >> LOS_CHUNK_BITS;
+
+       free_chunks->size = size;
+
+       if (num_chunks >= LOS_NUM_FAST_SIZES)
+               num_chunks = 0;
+       free_chunks->next_size = los_fast_free_lists [num_chunks];
+       los_fast_free_lists [num_chunks] = free_chunks;
+}
+
+static LOSFreeChunks*
+get_from_size_list (LOSFreeChunks **list, size_t size)
+{
+       LOSFreeChunks *free_chunks = NULL;
+       LOSSection *section;
+       size_t i, num_chunks, start_index;
+
+
+       g_assert ((size & (LOS_CHUNK_SIZE - 1)) == 0);
+
+       while (*list) {
+               free_chunks = *list;
+               if (free_chunks->size >= size)
+                       break;
+               list = &(*list)->next_size;
+       }
+
+       if (!*list)
+               return NULL;
+
+       *list = free_chunks->next_size;
+
+       if (free_chunks->size > size)
+               add_free_chunk ((LOSFreeChunks*)((char*)free_chunks + size), free_chunks->size - size);
+
+       num_chunks = size >> LOS_CHUNK_BITS;
+
+       section = LOS_SECTION_FOR_OBJ (free_chunks);
+
+       start_index = LOS_CHUNK_INDEX (free_chunks, section);
+       for (i = start_index; i < start_index + num_chunks; ++i) {
+               g_assert (section->free_chunk_map [i]);
+               section->free_chunk_map [i] = 0;
+       }
+
+       section->num_free_chunks -= size >> LOS_CHUNK_BITS;
+       g_assert (section->num_free_chunks >= 0);
+
+       return free_chunks;
+}
+
+static LOSObject*
+get_los_section_memory (size_t size)
+{
+       LOSSection *section;
+       LOSFreeChunks *free_chunks;
+       size_t num_chunks;
+
+       size += LOS_CHUNK_SIZE - 1;
+       size &= ~(LOS_CHUNK_SIZE - 1);
+
+       num_chunks = size >> LOS_CHUNK_BITS;
+
+       g_assert (size > 0 && size - sizeof (LOSObject) <= LOS_SECTION_OBJECT_LIMIT);
+       g_assert (num_chunks > 0);
+
+ retry:
+       if (num_chunks >= LOS_NUM_FAST_SIZES) {
+               free_chunks = get_from_size_list (&los_fast_free_lists [0], size);
+       } else {
+               size_t i;
+               for (i = num_chunks; i < LOS_NUM_FAST_SIZES; ++i) {
+                       free_chunks = get_from_size_list (&los_fast_free_lists [i], size);
+                       if (free_chunks)
+                               break;
+               }
+               if (!free_chunks)
+                       free_chunks = get_from_size_list (&los_fast_free_lists [0], size);
+       }
+
+       if (free_chunks)
+               return (LOSObject*)free_chunks;
+
+       if (!sgen_memgov_try_alloc_space (LOS_SECTION_SIZE, SPACE_LOS))
+               return NULL;
+
+       section = sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+
+       if (!section)
+               return NULL;
+
+       free_chunks = (LOSFreeChunks*)((char*)section + LOS_CHUNK_SIZE);
+       free_chunks->size = LOS_SECTION_SIZE - LOS_CHUNK_SIZE;
+       free_chunks->next_size = los_fast_free_lists [0];
+       los_fast_free_lists [0] = free_chunks;
+
+       section->num_free_chunks = LOS_SECTION_NUM_CHUNKS;
+
+       section->free_chunk_map = (unsigned char*)section + sizeof (LOSSection);
+       g_assert (sizeof (LOSSection) + LOS_SECTION_NUM_CHUNKS + 1 <= LOS_CHUNK_SIZE);
+       section->free_chunk_map [0] = 0;
+       memset (section->free_chunk_map + 1, 1, LOS_SECTION_NUM_CHUNKS);
+
+       section->next = los_sections;
+       los_sections = section;
+
+       ++los_num_sections;
+
+       goto retry;
+}
+
+static void
+free_los_section_memory (LOSObject *obj, size_t size)
+{
+       LOSSection *section = LOS_SECTION_FOR_OBJ (obj);
+       size_t num_chunks, i, start_index;
+
+       size += LOS_CHUNK_SIZE - 1;
+       size &= ~(LOS_CHUNK_SIZE - 1);
+
+       num_chunks = size >> LOS_CHUNK_BITS;
+
+       g_assert (size > 0 && size - sizeof (LOSObject) <= LOS_SECTION_OBJECT_LIMIT);
+       g_assert (num_chunks > 0);
+
+       section->num_free_chunks += num_chunks;
+       g_assert (section->num_free_chunks <= LOS_SECTION_NUM_CHUNKS);
+
+       /*
+        * We could free the LOS section here if it's empty, but we
+        * can't unless we also remove its free chunks from the fast
+        * free lists.  Instead, we do it in los_sweep().
+        */
+
+       start_index = LOS_CHUNK_INDEX (obj, section);
+       for (i = start_index; i < start_index + num_chunks; ++i) {
+               g_assert (!section->free_chunk_map [i]);
+               section->free_chunk_map [i] = 1;
+       }
+
+       add_free_chunk ((LOSFreeChunks*)obj, size);
+}
+
+static int pagesize;
+
+void
+sgen_los_free_object (LOSObject *obj)
+{
+       SGEN_ASSERT (0, !obj->cardtable_mod_union, "We should never free a LOS object with a mod-union table.");
+
+#ifndef LOS_DUMMY
+       size_t size = obj->size;
+       SGEN_LOG (4, "Freed large object %p, size %lu", obj->data, (unsigned long)obj->size);
+       binary_protocol_empty (obj->data, obj->size);
+
+       los_memory_usage -= size;
+       los_num_objects--;
+
+#ifdef USE_MALLOC
+       free (obj);
+#else
+       if (size > LOS_SECTION_OBJECT_LIMIT) {
+               if (!pagesize)
+                       pagesize = mono_pagesize ();
+               size += sizeof (LOSObject);
+               size += pagesize - 1;
+               size &= ~(pagesize - 1);
+               sgen_free_os_memory (obj, size, SGEN_ALLOC_HEAP);
+               sgen_memgov_release_space (size, SPACE_LOS);
+       } else {
+               free_los_section_memory (obj, size + sizeof (LOSObject));
+#ifdef LOS_CONSISTENCY_CHECKS
+               los_consistency_check ();
+#endif
+       }
+#endif
+#endif
+}
+
+/*
+ * Objects with size >= MAX_SMALL_SIZE are allocated in the large object space.
+ * They are currently kept track of with a linked list.
+ * They don't move, so there is no need to pin them during collection
+ * and we avoid the memcpy overhead.
+ */
+void*
+sgen_los_alloc_large_inner (GCVTable *vtable, size_t size)
+{
+       LOSObject *obj = NULL;
+       void **vtslot;
+
+       g_assert (size > SGEN_MAX_SMALL_OBJ_SIZE);
+       g_assert ((size & 1) == 0);
+
+       /*
+        * size + sizeof (LOSObject) <= SSIZE_MAX - (mono_pagesize () - 1)
+        *
+        * therefore:
+        *
+        * size <= SSIZE_MAX - (mono_pagesize () - 1) - sizeof (LOSObject)
+        */
+       if (size > SSIZE_MAX - (mono_pagesize () - 1) - sizeof (LOSObject))
+               return NULL;
+
+#ifdef LOS_DUMMY
+       if (!los_segment)
+               los_segment = sgen_alloc_os_memory (LOS_SEGMENT_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+       los_segment_index = ALIGN_UP (los_segment_index);
+
+       obj = (LOSObject*)(los_segment + los_segment_index);
+       los_segment_index += size + sizeof (LOSObject);
+       g_assert (los_segment_index <= LOS_SEGMENT_SIZE);
+#else
+       sgen_ensure_free_space (size);
+
+#ifdef USE_MALLOC
+       obj = malloc (size + sizeof (LOSObject));
+       memset (obj, 0, size + sizeof (LOSObject));
+#else
+       if (size > LOS_SECTION_OBJECT_LIMIT) {
+               size_t alloc_size = size;
+               if (!pagesize)
+                       pagesize = mono_pagesize ();
+               alloc_size += sizeof (LOSObject);
+               alloc_size += pagesize - 1;
+               alloc_size &= ~(pagesize - 1);
+               if (sgen_memgov_try_alloc_space (alloc_size, SPACE_LOS)) {
+                       obj = sgen_alloc_os_memory (alloc_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, NULL);
+               }
+       } else {
+               obj = get_los_section_memory (size + sizeof (LOSObject));
+               if (obj)
+                       memset (obj, 0, size + sizeof (LOSObject));
+       }
+#endif
+#endif
+       if (!obj)
+               return NULL;
+       g_assert (!((mword)obj->data & (SGEN_ALLOC_ALIGN - 1)));
+       obj->size = size;
+       vtslot = (void**)obj->data;
+       *vtslot = vtable;
+       sgen_update_heap_boundaries ((mword)obj->data, (mword)obj->data + size);
+       obj->next = los_object_list;
+       los_object_list = obj;
+       los_memory_usage += size;
+       los_num_objects++;
+       SGEN_LOG (4, "Allocated large object %p, vtable: %p (%s), size: %zd", obj->data, vtable, sgen_client_vtable_get_name (vtable), size);
+       binary_protocol_alloc (obj->data, vtable, size, sgen_client_get_provenance ());
+
+#ifdef LOS_CONSISTENCY_CHECK
+       los_consistency_check ();
+#endif
+
+       return obj->data;
+}
+
+static void sgen_los_unpin_object (char *data);
+
+void
+sgen_los_sweep (void)
+{
+       LOSObject *bigobj, *prevbo;
+       LOSSection *section, *prev;
+       int i;
+       int num_sections = 0;
+
+       /* sweep the big objects list */
+       prevbo = NULL;
+       for (bigobj = los_object_list; bigobj;) {
+               SGEN_ASSERT (0, !SGEN_OBJECT_IS_PINNED (bigobj->data), "Who pinned a LOS object?");
+
+               if (bigobj->cardtable_mod_union) {
+                       sgen_card_table_free_mod_union (bigobj->cardtable_mod_union, bigobj->data, bigobj->size);
+                       bigobj->cardtable_mod_union = NULL;
+               }
+
+               if (sgen_los_object_is_pinned (bigobj->data)) {
+                       sgen_los_unpin_object (bigobj->data);
+                       sgen_update_heap_boundaries ((mword)bigobj->data, (mword)bigobj->data + sgen_los_object_size (bigobj));
+               } else {
+                       LOSObject *to_free;
+                       /* not referenced anywhere, so we can free it */
+                       if (prevbo)
+                               prevbo->next = bigobj->next;
+                       else
+                               los_object_list = bigobj->next;
+                       to_free = bigobj;
+                       bigobj = bigobj->next;
+                       sgen_los_free_object (to_free);
+                       continue;
+               }
+               prevbo = bigobj;
+               bigobj = bigobj->next;
+       }
+
+       /* Try to free memory */
+       for (i = 0; i < LOS_NUM_FAST_SIZES; ++i)
+               los_fast_free_lists [i] = NULL;
+
+       prev = NULL;
+       section = los_sections;
+       while (section) {
+               if (section->num_free_chunks == LOS_SECTION_NUM_CHUNKS) {
+                       LOSSection *next = section->next;
+                       if (prev)
+                               prev->next = next;
+                       else
+                               los_sections = next;
+                       sgen_free_os_memory (section, LOS_SECTION_SIZE, SGEN_ALLOC_HEAP);
+                       sgen_memgov_release_space (LOS_SECTION_SIZE, SPACE_LOS);
+                       section = next;
+                       --los_num_sections;
+                       continue;
+               }
+
+               for (i = 0; i <= LOS_SECTION_NUM_CHUNKS; ++i) {
+                       if (section->free_chunk_map [i]) {
+                               int j;
+                               for (j = i + 1; j <= LOS_SECTION_NUM_CHUNKS && section->free_chunk_map [j]; ++j)
+                                       ;
+                               add_free_chunk ((LOSFreeChunks*)((char*)section + (i << LOS_CHUNK_BITS)), (j - i) << LOS_CHUNK_BITS);
+                               i = j - 1;
+                       }
+               }
+
+               prev = section;
+               section = section->next;
+
+               ++num_sections;
+       }
+
+#ifdef LOS_CONSISTENCY_CHECK
+       los_consistency_check ();
+#endif
+
+       /*
+       g_print ("LOS sections: %d  objects: %d  usage: %d\n", num_sections, los_num_objects, los_memory_usage);
+       for (i = 0; i < LOS_NUM_FAST_SIZES; ++i) {
+               int num_chunks = 0;
+               LOSFreeChunks *free_chunks;
+               for (free_chunks = los_fast_free_lists [i]; free_chunks; free_chunks = free_chunks->next_size)
+                       ++num_chunks;
+               g_print ("  %d: %d\n", i, num_chunks);
+       }
+       */
+
+       g_assert (los_num_sections == num_sections);
+}
+
+gboolean
+sgen_ptr_is_in_los (char *ptr, char **start)
+{
+       LOSObject *obj;
+
+       *start = NULL;
+       for (obj = los_object_list; obj; obj = obj->next) {
+               char *end = obj->data + obj->size;
+
+               if (ptr >= obj->data && ptr < end) {
+                       *start = obj->data;
+                       return TRUE;
+               }
+       }
+       return FALSE;
+}
+
+void
+sgen_los_iterate_objects (IterateObjectCallbackFunc cb, void *user_data)
+{
+       LOSObject *obj;
+
+       for (obj = los_object_list; obj; obj = obj->next)
+               cb (obj->data, obj->size, user_data);
+}
+
+gboolean
+sgen_los_is_valid_object (char *object)
+{
+       LOSObject *obj;
+
+       for (obj = los_object_list; obj; obj = obj->next) {
+               if (obj->data == object)
+                       return TRUE;
+       }
+       return FALSE;
+}
+
+gboolean
+mono_sgen_los_describe_pointer (char *ptr)
+{
+       LOSObject *obj;
+
+       for (obj = los_object_list; obj; obj = obj->next) {
+               const char *los_kind;
+               mword size;
+               gboolean pinned;
+
+               if (obj->data > ptr || obj->data + obj->size <= ptr)
+                       continue;
+
+               size = sgen_los_object_size (obj);
+               pinned = sgen_los_object_is_pinned (obj->data);
+
+               if (size > LOS_SECTION_OBJECT_LIMIT)
+                       los_kind = "huge-los-ptr";
+               else
+                       los_kind = "los-ptr";
+
+               if (obj->data == ptr) {
+                       SGEN_LOG (0, "%s (size %d pin %d)\n", los_kind, (int)size, pinned ? 1 : 0);
+               } else {
+                       SGEN_LOG (0, "%s (interior-ptr offset %zd size %d pin %d)",
+                                         los_kind, ptr - obj->data, (int)size, pinned ? 1 : 0);
+               }
+
+               return TRUE;
+       }
+       return FALSE;
+}
+
+void
+sgen_los_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
+{
+       LOSObject *obj;
+       for (obj = los_object_list; obj; obj = obj->next) {
+               GCVTable *vt = (GCVTable*)SGEN_LOAD_VTABLE (obj->data);
+               if (SGEN_VTABLE_HAS_REFERENCES (vt))
+                       callback ((mword)obj->data, (mword)obj->size);
+       }
+}
+
+static guint8*
+get_cardtable_mod_union_for_object (LOSObject *obj)
+{
+       guint8 *mod_union = obj->cardtable_mod_union;
+       guint8 *other;
+       if (mod_union)
+               return mod_union;
+       mod_union = sgen_card_table_alloc_mod_union (obj->data, obj->size);
+       other = SGEN_CAS_PTR ((gpointer*)&obj->cardtable_mod_union, mod_union, NULL);
+       if (!other) {
+               SGEN_ASSERT (0, obj->cardtable_mod_union == mod_union, "Why did CAS not replace?");
+               return mod_union;
+       }
+       sgen_card_table_free_mod_union (mod_union, obj->data, obj->size);
+       return other;
+}
+
+void
+sgen_los_scan_card_table (gboolean mod_union, ScanCopyContext ctx)
+{
+       LOSObject *obj;
+
+       for (obj = los_object_list; obj; obj = obj->next) {
+               guint8 *cards;
+
+               if (!SGEN_OBJECT_HAS_REFERENCES (obj->data))
+                       continue;
+
+               if (mod_union) {
+                       if (!sgen_los_object_is_pinned (obj->data))
+                               continue;
+
+                       cards = get_cardtable_mod_union_for_object (obj);
+                       g_assert (cards);
+               } else {
+                       cards = NULL;
+               }
+
+               sgen_cardtable_scan_object (obj->data, obj->size, cards, mod_union, ctx);
+       }
+}
+
+void
+sgen_los_count_cards (long long *num_total_cards, long long *num_marked_cards)
+{
+       LOSObject *obj;
+       long long total_cards = 0;
+       long long marked_cards = 0;
+
+       for (obj = los_object_list; obj; obj = obj->next) {
+               int i;
+               guint8 *cards = sgen_card_table_get_card_scan_address ((mword) obj->data);
+               guint8 *cards_end = sgen_card_table_get_card_scan_address ((mword) obj->data + obj->size - 1);
+               mword num_cards = (cards_end - cards) + 1;
+
+               if (!SGEN_OBJECT_HAS_REFERENCES (obj->data))
+                       continue;
+
+               total_cards += num_cards;
+               for (i = 0; i < num_cards; ++i) {
+                       if (cards [i])
+                               ++marked_cards;
+               }
+       }
+
+       *num_total_cards = total_cards;
+       *num_marked_cards = marked_cards;
+}
+
+void
+sgen_los_update_cardtable_mod_union (void)
+{
+       LOSObject *obj;
+
+       for (obj = los_object_list; obj; obj = obj->next) {
+               if (!SGEN_OBJECT_HAS_REFERENCES (obj->data))
+                       continue;
+               sgen_card_table_update_mod_union (get_cardtable_mod_union_for_object (obj),
+                               obj->data, obj->size, NULL);
+       }
+}
+
+mword
+sgen_los_object_size (LOSObject *obj)
+{
+       return obj->size & ~1L;
+}
+
+LOSObject*
+sgen_los_header_for_object (char *data)
+{
+#if _MSC_VER
+       return (LOSObject*)(data - (int)(&(((LOSObject*)0)->data)));
+#else
+       return (LOSObject*)(data - sizeof (LOSObject));
+#endif
+}
+
+void
+sgen_los_pin_object (char *data)
+{
+       LOSObject *obj = sgen_los_header_for_object (data);
+       obj->size = obj->size | 1;
+       binary_protocol_pin (data, (gpointer)SGEN_LOAD_VTABLE (data), sgen_safe_object_get_size ((GCObject*)data));
+}
+
+static void
+sgen_los_unpin_object (char *data)
+{
+       LOSObject *obj = sgen_los_header_for_object (data);
+       obj->size = sgen_los_object_size (obj);
+}
+
+gboolean
+sgen_los_object_is_pinned (char *data)
+{
+       LOSObject *obj = sgen_los_header_for_object (data);
+       return obj->size & 1;
+}
+
+void
+sgen_los_mark_mod_union_card (GCObject *mono_obj, void **ptr)
+{
+       LOSObject *obj = sgen_los_header_for_object ((char*)mono_obj);
+       guint8 *mod_union = get_cardtable_mod_union_for_object (obj);
+       size_t offset = sgen_card_table_get_card_offset ((char*)ptr, (char*)sgen_card_table_align_pointer ((char*)obj));
+       SGEN_ASSERT (0, mod_union, "FIXME: optionally allocate the mod union if it's not here and CAS it in.");
+       SGEN_ASSERT (0, (char*)obj == (char*)sgen_card_table_align_pointer ((char*)obj), "Why are LOS objects not card aligned?");
+       mod_union [offset] = 1;
+}
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/sgen/sgen-major-copy-object.h b/mono/sgen/sgen-major-copy-object.h
new file mode 100644 (file)
index 0000000..a4b10ff
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * sgen-major-copy-object.h: Object copying in the major collectors.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#define collector_pin_object(obj, queue) do { \
+       if (sgen_ptr_in_nursery (obj)) {        \
+               sgen_pin_object (obj, queue);   \
+       } else {        \
+               g_assert (objsize <= SGEN_MAX_SMALL_OBJ_SIZE);  \
+               pin_major_object (obj, queue);  \
+       }       \
+} while (0)
+
+#define COLLECTOR_SERIAL_ALLOC_FOR_PROMOTION sgen_minor_collector.alloc_for_promotion
+
+#include "sgen-copy-object.h"
diff --git a/mono/sgen/sgen-marksweep-drain-gray-stack.h b/mono/sgen/sgen-marksweep-drain-gray-stack.h
new file mode 100644 (file)
index 0000000..ebfb250
--- /dev/null
@@ -0,0 +1,254 @@
+/*
+ * sgen-marksweep-drain-gray-stack.h: The copy/mark and gray stack
+ *     draining functions of the M&S major collector.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * COPY_OR_MARK_FUNCTION_NAME must be defined to be the function name of the copy/mark
+ * function.
+ *
+ * SCAN_OBJECT_FUNCTION_NAME must be defined to be the function name of the object scanning
+ * function.
+ *
+ * DRAIN_GRAY_STACK_FUNCTION_NAME must be defined to be the function name of the gray stack
+ * draining function.
+ *
+ * Define COPY_OR_MARK_WITH_EVACUATION to support evacuation.
+ */
+
+/* Returns whether the object is still in the nursery. */
+static inline MONO_ALWAYS_INLINE gboolean
+COPY_OR_MARK_FUNCTION_NAME (void **ptr, void *obj, SgenGrayQueue *queue)
+{
+       MSBlockInfo *block;
+
+#ifdef HEAVY_STATISTICS
+       ++stat_optimized_copy;
+       {
+               char *forwarded;
+               mword desc;
+               if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj)))
+                       desc = sgen_obj_get_descriptor_safe (forwarded);
+               else
+                       desc = sgen_obj_get_descriptor_safe (obj);
+
+               sgen_descriptor_count_copied_object (desc);
+       }
+#endif
+
+       SGEN_ASSERT (9, obj, "null object from pointer %p", ptr);
+       SGEN_ASSERT (9, current_collection_generation == GENERATION_OLD, "old gen parallel allocator called from a %d collection", current_collection_generation);
+
+       if (sgen_ptr_in_nursery (obj)) {
+               int word, bit;
+               char *forwarded, *old_obj;
+               mword vtable_word = *(mword*)obj;
+
+               HEAVY_STAT (++stat_optimized_copy_nursery);
+
+#if SGEN_MAX_DEBUG_LEVEL >= 9
+               if (sgen_nursery_is_to_space (obj))
+                       SGEN_ASSERT (9, !SGEN_VTABLE_IS_PINNED (vtable_word) && !SGEN_VTABLE_IS_FORWARDED (vtable_word), "To-space object can't be pinned or forwarded.");
+#endif
+
+               if (SGEN_VTABLE_IS_PINNED (vtable_word)) {
+                       SGEN_ASSERT (9, !SGEN_VTABLE_IS_FORWARDED (vtable_word), "Cannot be both pinned and forwarded.");
+                       HEAVY_STAT (++stat_optimized_copy_nursery_pinned);
+                       return TRUE;
+               }
+               if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
+                       HEAVY_STAT (++stat_optimized_copy_nursery_forwarded);
+                       SGEN_UPDATE_REFERENCE (ptr, forwarded);
+                       return sgen_ptr_in_nursery (forwarded);
+               }
+
+               /* An object in the nursery To Space has already been copied and grayed. Nothing to do. */
+               if (sgen_nursery_is_to_space (obj))
+                       return TRUE;
+
+#ifdef COPY_OR_MARK_WITH_EVACUATION
+       do_copy_object:
+#endif
+               old_obj = obj;
+               obj = copy_object_no_checks (obj, queue);
+               if (G_UNLIKELY (old_obj == obj)) {
+                       /*
+                        * If we fail to evacuate an object we just stop doing it for a
+                        * given block size as all other will surely fail too.
+                        */
+                       /* FIXME: test this case somehow. */
+                       if (!sgen_ptr_in_nursery (obj)) {
+                               int size_index;
+                               block = MS_BLOCK_FOR_OBJ (obj);
+                               size_index = block->obj_size_index;
+                               evacuate_block_obj_sizes [size_index] = FALSE;
+                               MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
+                               return FALSE;
+                       }
+                       return TRUE;
+               }
+               HEAVY_STAT (++stat_objects_copied_major);
+               SGEN_UPDATE_REFERENCE (ptr, obj);
+
+               if (sgen_ptr_in_nursery (obj))
+                       return TRUE;
+
+               /*
+                * FIXME: See comment for copy_object_no_checks().  If
+                * we have that, we can let the allocation function
+                * give us the block info, too, and we won't have to
+                * re-fetch it.
+                *
+                * FIXME (2): We should rework this to avoid all those nursery checks.
+                */
+               /*
+                * For the split nursery allocator the object might
+                * still be in the nursery despite having being
+                * promoted, in which case we can't mark it.
+                */
+               block = MS_BLOCK_FOR_OBJ (obj);
+               MS_CALC_MARK_BIT (word, bit, obj);
+               SGEN_ASSERT (9, !MS_MARK_BIT (block, word, bit), "object %p already marked", obj);
+               MS_SET_MARK_BIT (block, word, bit);
+               binary_protocol_mark (obj, (gpointer)LOAD_VTABLE (obj), sgen_safe_object_get_size ((GCObject*)obj));
+
+               return FALSE;
+       } else {
+               mword vtable_word = *(mword*)obj;
+               mword desc;
+               int type;
+
+               HEAVY_STAT (++stat_optimized_copy_major);
+
+#ifdef COPY_OR_MARK_WITH_EVACUATION
+               {
+                       char *forwarded;
+                       if ((forwarded = SGEN_VTABLE_IS_FORWARDED (vtable_word))) {
+                               HEAVY_STAT (++stat_optimized_copy_major_forwarded);
+                               SGEN_UPDATE_REFERENCE (ptr, forwarded);
+                               SGEN_ASSERT (9, !sgen_ptr_in_nursery (forwarded), "Cannot be forwarded to nursery.");
+                               return FALSE;
+                       }
+               }
+#endif
+
+               SGEN_ASSERT (9, !SGEN_VTABLE_IS_PINNED (vtable_word), "Pinned object in non-pinned block?");
+
+               desc = sgen_vtable_get_descriptor ((GCVTable*)vtable_word);
+               type = desc & DESC_TYPE_MASK;
+
+               if (sgen_safe_object_is_small ((GCObject*)obj, type)) {
+#ifdef HEAVY_STATISTICS
+                       if (type <= DESC_TYPE_MAX_SMALL_OBJ)
+                               ++stat_optimized_copy_major_small_fast;
+                       else
+                               ++stat_optimized_copy_major_small_slow;
+#endif
+
+                       block = MS_BLOCK_FOR_OBJ (obj);
+
+#ifdef COPY_OR_MARK_WITH_EVACUATION
+                       {
+                               int size_index = block->obj_size_index;
+
+                               if (evacuate_block_obj_sizes [size_index] && !block->has_pinned) {
+                                       HEAVY_STAT (++stat_optimized_copy_major_small_evacuate);
+                                       if (block->is_to_space)
+                                               return FALSE;
+                                       goto do_copy_object;
+                               }
+                       }
+#endif
+
+                       MS_MARK_OBJECT_AND_ENQUEUE (obj, desc, block, queue);
+               } else {
+                       HEAVY_STAT (++stat_optimized_copy_major_large);
+
+                       if (sgen_los_object_is_pinned (obj))
+                               return FALSE;
+                       binary_protocol_pin (obj, (gpointer)SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size ((GCObject*)obj));
+
+                       sgen_los_pin_object (obj);
+                       if (SGEN_OBJECT_HAS_REFERENCES (obj))
+                               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_obj_get_descriptor (obj));
+               }
+               return FALSE;
+       }
+       SGEN_ASSERT (0, FALSE, "How is this happening?");
+       return FALSE;
+}
+
+static void
+SCAN_OBJECT_FUNCTION_NAME (char *obj, mword desc, SgenGrayQueue *queue)
+{
+       char *start = obj;
+
+#ifdef HEAVY_STATISTICS
+       ++stat_optimized_major_scan;
+       if (!sgen_gc_descr_has_references (desc))
+               ++stat_optimized_major_scan_no_refs;
+       sgen_descriptor_count_scanned_object (desc);
+#endif
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       add_scanned_object (start);
+#endif
+
+       /* Now scan the object. */
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {                                    \
+               void *__old = *(ptr);                                   \
+               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
+               if (__old) {                                            \
+                       gboolean __still_in_nursery = COPY_OR_MARK_FUNCTION_NAME ((ptr), __old, queue); \
+                       if (G_UNLIKELY (__still_in_nursery && !sgen_ptr_in_nursery ((ptr)) && !SGEN_OBJECT_IS_CEMENTED (*(ptr)))) { \
+                               void *__copy = *(ptr);                  \
+                               sgen_add_to_global_remset ((ptr), __copy); \
+                       }                                               \
+               }                                                       \
+       } while (0)
+
+#define SCAN_OBJECT_PROTOCOL
+#include "sgen-scan-object.h"
+}
+
+static gboolean
+DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
+{
+       SgenGrayQueue *queue = ctx.queue;
+
+       SGEN_ASSERT (0, ctx.ops->scan_object == major_scan_object_with_evacuation, "Wrong scan function");
+
+       for (;;) {
+               char *obj;
+               mword desc;
+
+               HEAVY_STAT (++stat_drain_loops);
+
+               GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
+               if (!obj)
+                       return TRUE;
+
+               SCAN_OBJECT_FUNCTION_NAME (obj, desc, ctx.queue);
+       }
+}
+
+#undef COPY_OR_MARK_FUNCTION_NAME
+#undef COPY_OR_MARK_WITH_EVACUATION
+#undef SCAN_OBJECT_FUNCTION_NAME
+#undef DRAIN_GRAY_STACK_FUNCTION_NAME
diff --git a/mono/sgen/sgen-marksweep-scan-object-concurrent.h b/mono/sgen/sgen-marksweep-scan-object-concurrent.h
new file mode 100644 (file)
index 0000000..bdad973
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * sgen-major-scan-object.h: Object scanning in the major collectors.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+extern guint64 stat_scan_object_called_major;
+
+/*
+ * FIXME: We use the same scanning function in the concurrent collector whether we scan
+ * during the starting/finishing collection pause (with the world stopped) or from the
+ * concurrent worker thread.
+ *
+ * As long as the world is stopped, we should just follow pointers into the nursery and
+ * evict if possible.  In that case we also don't need the ALWAYS_ADD_TO_GLOBAL_REMSET case,
+ * which only seems to make sense for when the world is stopped, in which case we only need
+ * it because we don't follow into the nursery.
+ */
+
+#undef HANDLE_PTR
+#define HANDLE_PTR(ptr,obj)    do {                                    \
+               void *__old = *(ptr);                                   \
+               SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP ((obj), (ptr)); \
+               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
+               if (__old && !sgen_ptr_in_nursery (__old)) {            \
+                       PREFETCH_READ (__old);                  \
+                       major_copy_or_mark_object_concurrent ((ptr), __old, queue); \
+               } else {                                                \
+                       if (G_UNLIKELY (sgen_ptr_in_nursery (__old) && !sgen_ptr_in_nursery ((ptr)))) \
+                               ADD_TO_GLOBAL_REMSET ((GCObject*)(full_object), (ptr), __old); \
+               }                                                       \
+       } while (0)
+
+/* FIXME: Unify this with optimized code in sgen-marksweep.c. */
+
+#undef ADD_TO_GLOBAL_REMSET
+#define ADD_TO_GLOBAL_REMSET(object,ptr,target)        mark_mod_union_card ((object), (ptr))
+
+static void
+major_scan_object_no_mark_concurrent_anywhere (char *full_object, mword desc, SgenGrayQueue *queue)
+{
+       char *start = full_object;
+
+       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
+
+#ifdef HEAVY_STATISTICS
+       sgen_descriptor_count_scanned_object (desc);
+#endif
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       add_scanned_object (start);
+#endif
+
+#define SCAN_OBJECT_PROTOCOL
+#include "sgen-scan-object.h"
+
+       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
+       HEAVY_STAT (++stat_scan_object_called_major);
+}
+
+static void
+major_scan_object_no_mark_concurrent_start (char *start, mword desc, SgenGrayQueue *queue)
+{
+       major_scan_object_no_mark_concurrent_anywhere (start, desc, queue);
+}
+
+static void
+major_scan_object_no_mark_concurrent (char *start, mword desc, SgenGrayQueue *queue)
+{
+       SGEN_ASSERT (0, !sgen_ptr_in_nursery (start), "Why are we scanning nursery objects in the concurrent collector?");
+       major_scan_object_no_mark_concurrent_anywhere (start, desc, queue);
+}
+
+#undef ADD_TO_GLOBAL_REMSET
+#define ADD_TO_GLOBAL_REMSET(object,ptr,target)        sgen_add_to_global_remset ((ptr), (target))
+
+static void
+major_scan_vtype_concurrent_finish (char *full_object, char *start, mword desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
+{
+       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
+
+#ifdef HEAVY_STATISTICS
+       /* FIXME: We're half scanning this object.  How do we account for that? */
+       //add_scanned_object (start);
+#endif
+
+       /* The descriptors include info about the object header as well */
+       start -= SGEN_CLIENT_OBJECT_HEADER_SIZE;
+
+#define SCAN_OBJECT_NOVTABLE
+#define SCAN_OBJECT_PROTOCOL
+#include "sgen-scan-object.h"
+
+       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
+}
diff --git a/mono/sgen/sgen-marksweep.c b/mono/sgen/sgen-marksweep.c
new file mode 100644 (file)
index 0000000..8ad7c5a
--- /dev/null
@@ -0,0 +1,2548 @@
+/*
+ * sgen-marksweep.c: The Mark & Sweep major collector.
+ *
+ * Author:
+ *     Mark Probst <mark.probst@gmail.com>
+ *
+ * Copyright 2009-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include <math.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-layout-stats.h"
+#include "mono/sgen/sgen-pointer-queue.h"
+#include "mono/sgen/sgen-pinning.h"
+#include "mono/sgen/sgen-workers.h"
+#include "mono/sgen/sgen-thread-pool.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/utils/mono-membar.h"
+
+#if defined(ARCH_MIN_MS_BLOCK_SIZE) && defined(ARCH_MIN_MS_BLOCK_SIZE_SHIFT)
+#define MS_BLOCK_SIZE  ARCH_MIN_MS_BLOCK_SIZE
+#define MS_BLOCK_SIZE_SHIFT    ARCH_MIN_MS_BLOCK_SIZE_SHIFT
+#else
+#define MS_BLOCK_SIZE_SHIFT     14      /* INT FASTENABLE */
+#define MS_BLOCK_SIZE           (1 << MS_BLOCK_SIZE_SHIFT)
+#endif
+#define MAJOR_SECTION_SIZE     MS_BLOCK_SIZE
+#define CARDS_PER_BLOCK (MS_BLOCK_SIZE / CARD_SIZE_IN_BYTES)
+
+/*
+ * Don't allocate single blocks, but alloc a contingent of this many
+ * blocks in one swoop.  This must be a power of two.
+ */
+#define MS_BLOCK_ALLOC_NUM     32
+
+/*
+ * Number of bytes before the first object in a block.  At the start
+ * of a block is the MSBlockHeader, then opional padding, then come
+ * the objects, so this must be >= sizeof (MSBlockHeader).
+ */
+#define MS_BLOCK_SKIP  ((sizeof (MSBlockHeader) + 15) & ~15)
+
+#define MS_BLOCK_FREE  (MS_BLOCK_SIZE - MS_BLOCK_SKIP)
+
+#define MS_NUM_MARK_WORDS      ((MS_BLOCK_SIZE / SGEN_ALLOC_ALIGN + sizeof (mword) * 8 - 1) / (sizeof (mword) * 8))
+
+/*
+ * Blocks progress from one state to the next:
+ *
+ * SWEPT           The block is fully swept.  It might or might not be in
+ *                 a free list.
+ *
+ * MARKING         The block might or might not contain live objects.  If
+ *                 we're in between an initial collection pause and the
+ *                 finishing pause, the block might or might not be in a
+ *                 free list.
+ *
+ * CHECKING        The sweep thread is investigating the block to determine
+ *                 whether or not it contains live objects.  The block is
+ *                 not in a free list.
+ *
+ * NEED_SWEEPING   The block contains live objects but has not yet been
+ *                 swept.  It also contains free slots.  It is in a block
+ *                 free list.
+ *
+ * SWEEPING        The block is being swept.  It might be in a free list.
+ */
+
+enum {
+       BLOCK_STATE_SWEPT,
+       BLOCK_STATE_MARKING,
+       BLOCK_STATE_CHECKING,
+       BLOCK_STATE_NEED_SWEEPING,
+       BLOCK_STATE_SWEEPING
+};
+
+typedef struct _MSBlockInfo MSBlockInfo;
+struct _MSBlockInfo {
+       guint16 obj_size;
+       /*
+        * FIXME: Do we even need this? It's only used during sweep and might be worth
+        * recalculating to save the space.
+        */
+       guint16 obj_size_index;
+       /* FIXME: Reduce this - it only needs a byte. */
+       volatile gint32 state;
+       unsigned int pinned : 1;
+       unsigned int has_references : 1;
+       unsigned int has_pinned : 1;    /* means cannot evacuate */
+       unsigned int is_to_space : 1;
+       void ** volatile free_list;
+       MSBlockInfo * volatile next_free;
+       guint8 * volatile cardtable_mod_union;
+       mword mark_words [MS_NUM_MARK_WORDS];
+};
+
+#define MS_BLOCK_FOR_BLOCK_INFO(b)     ((char*)(b))
+
+#define MS_BLOCK_OBJ(b,i)              (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (b)->obj_size * (i))
+#define MS_BLOCK_OBJ_FOR_SIZE(b,i,obj_size)            (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP + (obj_size) * (i))
+#define MS_BLOCK_DATA_FOR_OBJ(o)       ((char*)((mword)(o) & ~(mword)(MS_BLOCK_SIZE - 1)))
+
+typedef struct {
+       MSBlockInfo info;
+} MSBlockHeader;
+
+#define MS_BLOCK_FOR_OBJ(o)            (&((MSBlockHeader*)MS_BLOCK_DATA_FOR_OBJ ((o)))->info)
+
+/* object index will always be small */
+#define MS_BLOCK_OBJ_INDEX(o,b)        ((int)(((char*)(o) - (MS_BLOCK_FOR_BLOCK_INFO(b) + MS_BLOCK_SKIP)) / (b)->obj_size))
+
+//casting to int is fine since blocks are 32k
+#define MS_CALC_MARK_BIT(w,b,o)        do {                            \
+               int i = ((int)((char*)(o) - MS_BLOCK_DATA_FOR_OBJ ((o)))) >> SGEN_ALLOC_ALIGN_BITS; \
+               if (sizeof (mword) == 4) {                              \
+                       (w) = i >> 5;                                   \
+                       (b) = i & 31;                                   \
+               } else {                                                \
+                       (w) = i >> 6;                                   \
+                       (b) = i & 63;                                   \
+               }                                                       \
+       } while (0)
+
+#define MS_MARK_BIT(bl,w,b)    ((bl)->mark_words [(w)] & (ONE_P << (b)))
+#define MS_SET_MARK_BIT(bl,w,b)        ((bl)->mark_words [(w)] |= (ONE_P << (b)))
+
+#define MS_OBJ_ALLOCED(o,b)    (*(void**)(o) && (*(char**)(o) < MS_BLOCK_FOR_BLOCK_INFO (b) || *(char**)(o) >= MS_BLOCK_FOR_BLOCK_INFO (b) + MS_BLOCK_SIZE))
+
+#define MS_BLOCK_OBJ_SIZE_FACTOR       (pow (2.0, 1.0 / 3))
+
+/*
+ * This way we can lookup block object size indexes for sizes up to
+ * 256 bytes with a single load.
+ */
+#define MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES     32
+
+static int *block_obj_sizes;
+static int num_block_obj_sizes;
+static int fast_block_obj_size_indexes [MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES];
+
+#define MS_BLOCK_FLAG_PINNED   1
+#define MS_BLOCK_FLAG_REFS     2
+
+#define MS_BLOCK_TYPE_MAX      4
+
+static gboolean *evacuate_block_obj_sizes;
+static float evacuation_threshold = 0.666f;
+static float concurrent_evacuation_threshold = 0.666f;
+static gboolean want_evacuation = FALSE;
+
+static gboolean lazy_sweep = FALSE;
+
+enum {
+       SWEEP_STATE_SWEPT,
+       SWEEP_STATE_NEED_SWEEPING,
+       SWEEP_STATE_SWEEPING,
+       SWEEP_STATE_SWEEPING_AND_ITERATING,
+       SWEEP_STATE_COMPACTING
+};
+
+static volatile int sweep_state = SWEEP_STATE_SWEPT;
+
+static gboolean concurrent_mark;
+static gboolean concurrent_sweep = TRUE;
+
+#define BLOCK_IS_TAGGED_HAS_REFERENCES(bl)     SGEN_POINTER_IS_TAGGED_1 ((bl))
+#define BLOCK_TAG_HAS_REFERENCES(bl)           SGEN_POINTER_TAG_1 ((bl))
+
+#define BLOCK_IS_TAGGED_CHECKING(bl)           SGEN_POINTER_IS_TAGGED_2 ((bl))
+#define BLOCK_TAG_CHECKING(bl)                 SGEN_POINTER_TAG_2 ((bl))
+
+#define BLOCK_UNTAG(bl)                                SGEN_POINTER_UNTAG_12 ((bl))
+
+#define BLOCK_TAG(bl)                          ((bl)->has_references ? BLOCK_TAG_HAS_REFERENCES ((bl)) : (bl))
+
+/* all allocated blocks in the system */
+static SgenPointerQueue allocated_blocks;
+
+/* non-allocated block free-list */
+static void *empty_blocks = NULL;
+static size_t num_empty_blocks = 0;
+
+#define FOREACH_BLOCK_NO_LOCK_CONDITION(cond,bl) {                     \
+       size_t __index;                                                 \
+       SGEN_ASSERT (0, (cond) && !sweep_in_progress (), "Can't iterate blocks while the world is running or sweep is in progress."); \
+       for (__index = 0; __index < allocated_blocks.next_slot; ++__index) { \
+               (bl) = BLOCK_UNTAG (allocated_blocks.data [__index]);
+#define FOREACH_BLOCK_NO_LOCK(bl)                                      \
+       FOREACH_BLOCK_NO_LOCK_CONDITION(sgen_is_world_stopped (), bl)
+#define FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK(bl,hr) {                  \
+       size_t __index;                                                 \
+       SGEN_ASSERT (0, sgen_is_world_stopped () && !sweep_in_progress (), "Can't iterate blocks while the world is running or sweep is in progress."); \
+       for (__index = 0; __index < allocated_blocks.next_slot; ++__index) { \
+               (bl) = allocated_blocks.data [__index];                 \
+               (hr) = BLOCK_IS_TAGGED_HAS_REFERENCES ((bl));           \
+               (bl) = BLOCK_UNTAG ((bl));
+#define END_FOREACH_BLOCK_NO_LOCK      } }
+
+static volatile size_t num_major_sections = 0;
+/*
+ * One free block list for each block object size.  We add and remove blocks from these
+ * lists lock-free via CAS.
+ *
+ * Blocks accessed/removed from `free_block_lists`:
+ *   from the mutator (with GC lock held)
+ *   in nursery collections
+ *   in non-concurrent major collections
+ *   in the finishing pause of concurrent major collections (whole list is cleared)
+ *
+ * Blocks added to `free_block_lists`:
+ *   in the sweeping thread
+ *   during nursery collections
+ *   from domain clearing (with the world stopped and no sweeping happening)
+ *
+ * The only item of those that doesn't require the GC lock is the sweep thread.  The sweep
+ * thread only ever adds blocks to the free list, so the ABA problem can't occur.
+ */
+static MSBlockInfo * volatile *free_block_lists [MS_BLOCK_TYPE_MAX];
+
+static guint64 stat_major_blocks_alloced = 0;
+static guint64 stat_major_blocks_freed = 0;
+static guint64 stat_major_blocks_lazy_swept = 0;
+static guint64 stat_major_objects_evacuated = 0;
+
+#if SIZEOF_VOID_P != 8
+static guint64 stat_major_blocks_freed_ideal = 0;
+static guint64 stat_major_blocks_freed_less_ideal = 0;
+static guint64 stat_major_blocks_freed_individual = 0;
+static guint64 stat_major_blocks_alloced_less_ideal = 0;
+#endif
+
+#ifdef SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
+static guint64 num_major_objects_marked = 0;
+#define INC_NUM_MAJOR_OBJECTS_MARKED() (++num_major_objects_marked)
+#else
+#define INC_NUM_MAJOR_OBJECTS_MARKED()
+#endif
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+static mono_mutex_t scanned_objects_list_lock;
+static SgenPointerQueue scanned_objects_list;
+
+static void
+add_scanned_object (void *ptr)
+{
+       if (!binary_protocol_is_enabled ())
+               return;
+
+       mono_mutex_lock (&scanned_objects_list_lock);
+       sgen_pointer_queue_add (&scanned_objects_list, ptr);
+       mono_mutex_unlock (&scanned_objects_list_lock);
+}
+#endif
+
+static gboolean sweep_block (MSBlockInfo *block);
+
+static int
+ms_find_block_obj_size_index (size_t size)
+{
+       int i;
+       SGEN_ASSERT (9, size <= SGEN_MAX_SMALL_OBJ_SIZE, "size %zd is bigger than max small object size %d", size, SGEN_MAX_SMALL_OBJ_SIZE);
+       for (i = 0; i < num_block_obj_sizes; ++i)
+               if (block_obj_sizes [i] >= size)
+                       return i;
+       g_error ("no object of size %zd\n", size);
+       return -1;
+}
+
+#define FREE_BLOCKS_FROM(lists,p,r)    (lists [((p) ? MS_BLOCK_FLAG_PINNED : 0) | ((r) ? MS_BLOCK_FLAG_REFS : 0)])
+#define FREE_BLOCKS(p,r)               (FREE_BLOCKS_FROM (free_block_lists, (p), (r)))
+
+#define MS_BLOCK_OBJ_SIZE_INDEX(s)                             \
+       (((s)+7)>>3 < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES ?      \
+        fast_block_obj_size_indexes [((s)+7)>>3] :             \
+        ms_find_block_obj_size_index ((s)))
+
+static void*
+major_alloc_heap (mword nursery_size, mword nursery_align, int the_nursery_bits)
+{
+       char *start;
+       if (nursery_align)
+               start = sgen_alloc_os_memory_aligned (nursery_size, nursery_align, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
+       else
+               start = sgen_alloc_os_memory (nursery_size, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE, "nursery");
+
+       return start;
+}
+
+static void
+update_heap_boundaries_for_block (MSBlockInfo *block)
+{
+       sgen_update_heap_boundaries ((mword)MS_BLOCK_FOR_BLOCK_INFO (block), (mword)MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE);
+}
+
+/*
+ * Thread safe
+ */
+static void*
+ms_get_empty_block (void)
+{
+       char *p;
+       int i;
+       void *block, *empty, *next;
+
+ retry:
+       if (!empty_blocks) {
+               /*
+                * We try allocating MS_BLOCK_ALLOC_NUM blocks first.  If that's
+                * unsuccessful, we halve the number of blocks and try again, until we're at
+                * 1.  If that doesn't work, either, we assert.
+                */
+               int alloc_num = MS_BLOCK_ALLOC_NUM;
+               for (;;) {
+                       p = sgen_alloc_os_memory_aligned (MS_BLOCK_SIZE * alloc_num, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE,
+                                       alloc_num == 1 ? "major heap section" : NULL);
+                       if (p)
+                               break;
+                       alloc_num >>= 1;
+               }
+
+               for (i = 0; i < alloc_num; ++i) {
+                       block = p;
+                       /*
+                        * We do the free list update one after the
+                        * other so that other threads can use the new
+                        * blocks as quickly as possible.
+                        */
+                       do {
+                               empty = empty_blocks;
+                               *(void**)block = empty;
+                       } while (SGEN_CAS_PTR ((gpointer*)&empty_blocks, block, empty) != empty);
+                       p += MS_BLOCK_SIZE;
+               }
+
+               SGEN_ATOMIC_ADD_P (num_empty_blocks, alloc_num);
+
+               stat_major_blocks_alloced += alloc_num;
+#if SIZEOF_VOID_P != 8
+               if (alloc_num != MS_BLOCK_ALLOC_NUM)
+                       stat_major_blocks_alloced_less_ideal += alloc_num;
+#endif
+       }
+
+       do {
+               empty = empty_blocks;
+               if (!empty)
+                       goto retry;
+               block = empty;
+               next = *(void**)block;
+       } while (SGEN_CAS_PTR (&empty_blocks, next, empty) != empty);
+
+       SGEN_ATOMIC_ADD_P (num_empty_blocks, -1);
+
+       *(void**)block = NULL;
+
+       g_assert (!((mword)block & (MS_BLOCK_SIZE - 1)));
+
+       return block;
+}
+
+/*
+ * This doesn't actually free a block immediately, but enqueues it into the `empty_blocks`
+ * list, where it will either be freed later on, or reused in nursery collections.
+ */
+static void
+ms_free_block (void *block)
+{
+       void *empty;
+
+       sgen_memgov_release_space (MS_BLOCK_SIZE, SPACE_MAJOR);
+       memset (block, 0, MS_BLOCK_SIZE);
+
+       do {
+               empty = empty_blocks;
+               *(void**)block = empty;
+       } while (SGEN_CAS_PTR (&empty_blocks, block, empty) != empty);
+
+       SGEN_ATOMIC_ADD_P (num_empty_blocks, 1);
+
+       binary_protocol_block_free (block, MS_BLOCK_SIZE);
+}
+
+static gboolean
+sweep_in_progress (void)
+{
+       int state = sweep_state;
+       return state == SWEEP_STATE_SWEEPING ||
+               state == SWEEP_STATE_SWEEPING_AND_ITERATING ||
+               state == SWEEP_STATE_COMPACTING;
+}
+
+static inline gboolean
+block_is_swept_or_marking (MSBlockInfo *block)
+{
+       gint32 state = block->state;
+       return state == BLOCK_STATE_SWEPT || state == BLOCK_STATE_MARKING;
+}
+
+//#define MARKSWEEP_CONSISTENCY_CHECK
+
+#ifdef MARKSWEEP_CONSISTENCY_CHECK
+static void
+check_block_free_list (MSBlockInfo *block, int size, gboolean pinned)
+{
+       SGEN_ASSERT (0, !sweep_in_progress (), "Can't examine allocated blocks during sweep");
+       for (; block; block = block->next_free) {
+               SGEN_ASSERT (0, block->state != BLOCK_STATE_CHECKING, "Can't have a block we're checking in a free list.");
+               g_assert (block->obj_size == size);
+               g_assert ((pinned && block->pinned) || (!pinned && !block->pinned));
+
+               /* blocks in the free lists must have at least
+                  one free slot */
+               g_assert (block->free_list);
+
+               /* the block must be in the allocated_blocks array */
+               g_assert (sgen_pointer_queue_find (&allocated_blocks, BLOCK_TAG (block)) != (size_t)-1);
+       }
+}
+
+static void
+check_empty_blocks (void)
+{
+       void *p;
+       size_t i = 0;
+       for (p = empty_blocks; p; p = *(void**)p)
+               ++i;
+       g_assert (i == num_empty_blocks);
+}
+
+static void
+consistency_check (void)
+{
+       MSBlockInfo *block;
+       int i;
+
+       /* check all blocks */
+       FOREACH_BLOCK_NO_LOCK (block) {
+               int count = MS_BLOCK_FREE / block->obj_size;
+               int num_free = 0;
+               void **free;
+
+               /* count number of free slots */
+               for (i = 0; i < count; ++i) {
+                       void **obj = (void**) MS_BLOCK_OBJ (block, i);
+                       if (!MS_OBJ_ALLOCED (obj, block))
+                               ++num_free;
+               }
+
+               /* check free list */
+               for (free = block->free_list; free; free = (void**)*free) {
+                       g_assert (MS_BLOCK_FOR_OBJ (free) == block);
+                       --num_free;
+               }
+               g_assert (num_free == 0);
+
+               /* check all mark words are zero */
+               if (!sgen_concurrent_collection_in_progress () && block_is_swept_or_marking (block)) {
+                       for (i = 0; i < MS_NUM_MARK_WORDS; ++i)
+                               g_assert (block->mark_words [i] == 0);
+               }
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       /* check free blocks */
+       for (i = 0; i < num_block_obj_sizes; ++i) {
+               int j;
+               for (j = 0; j < MS_BLOCK_TYPE_MAX; ++j)
+                       check_block_free_list (free_block_lists [j][i], block_obj_sizes [i], j & MS_BLOCK_FLAG_PINNED);
+       }
+
+       check_empty_blocks ();
+}
+#endif
+
+static void
+add_free_block (MSBlockInfo * volatile *free_blocks, int size_index, MSBlockInfo *block)
+{
+       MSBlockInfo *old;
+       do {
+               block->next_free = old = free_blocks [size_index];
+       } while (SGEN_CAS_PTR ((gpointer)&free_blocks [size_index], block, old) != old);
+}
+
+static void major_finish_sweep_checking (void);
+
+static gboolean
+ms_alloc_block (int size_index, gboolean pinned, gboolean has_references)
+{
+       int size = block_obj_sizes [size_index];
+       int count = MS_BLOCK_FREE / size;
+       MSBlockInfo *info;
+       MSBlockInfo * volatile * free_blocks = FREE_BLOCKS (pinned, has_references);
+       char *obj_start;
+       int i;
+
+       if (!sgen_memgov_try_alloc_space (MS_BLOCK_SIZE, SPACE_MAJOR))
+               return FALSE;
+
+       info = (MSBlockInfo*)ms_get_empty_block ();
+
+       SGEN_ASSERT (9, count >= 2, "block with %d objects, it must hold at least 2", count);
+
+       info->obj_size = size;
+       info->obj_size_index = size_index;
+       info->pinned = pinned;
+       info->has_references = has_references;
+       info->has_pinned = pinned;
+       /*
+        * Blocks that are to-space are not evacuated from.  During an major collection
+        * blocks are allocated for two reasons: evacuating objects from the nursery and
+        * evacuating them from major blocks marked for evacuation.  In both cases we don't
+        * want further evacuation.
+        */
+       info->is_to_space = (sgen_get_current_collection_generation () == GENERATION_OLD);
+       info->state = (info->is_to_space || sgen_concurrent_collection_in_progress ()) ? BLOCK_STATE_MARKING : BLOCK_STATE_SWEPT;
+       SGEN_ASSERT (6, !sweep_in_progress () || info->state == BLOCK_STATE_SWEPT, "How do we add a new block to be swept while sweeping?");
+       info->cardtable_mod_union = NULL;
+
+       update_heap_boundaries_for_block (info);
+
+       binary_protocol_block_alloc (info, MS_BLOCK_SIZE);
+
+       /* build free list */
+       obj_start = MS_BLOCK_FOR_BLOCK_INFO (info) + MS_BLOCK_SKIP;
+       info->free_list = (void**)obj_start;
+       /* we're skipping the last one - it must be nulled */
+       for (i = 0; i < count - 1; ++i) {
+               char *next_obj_start = obj_start + size;
+               *(void**)obj_start = next_obj_start;
+               obj_start = next_obj_start;
+       }
+       /* the last one */
+       *(void**)obj_start = NULL;
+
+       add_free_block (free_blocks, size_index, info);
+
+       /*
+        * This is the only place where the `allocated_blocks` array can potentially grow.
+        * We need to make sure concurrent sweep isn't running when that happens, so in that
+        * specific case we just wait for sweep to finish.
+        */
+       if (sgen_pointer_queue_will_grow (&allocated_blocks))
+               major_finish_sweep_checking ();
+
+       sgen_pointer_queue_add (&allocated_blocks, BLOCK_TAG (info));
+
+       SGEN_ATOMIC_ADD_P (num_major_sections, 1);
+       return TRUE;
+}
+
+static gboolean
+obj_is_from_pinned_alloc (char *ptr)
+{
+       MSBlockInfo *block;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               if (ptr >= MS_BLOCK_FOR_BLOCK_INFO (block) && ptr <= MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE)
+                       return block->pinned;
+       } END_FOREACH_BLOCK_NO_LOCK;
+       return FALSE;
+}
+
+static void
+ensure_can_access_block_free_list (MSBlockInfo *block)
+{
+ retry:
+       for (;;) {
+               switch (block->state) {
+               case BLOCK_STATE_SWEPT:
+               case BLOCK_STATE_MARKING:
+                       return;
+               case BLOCK_STATE_CHECKING:
+                       SGEN_ASSERT (0, FALSE, "How did we get a block that's being checked from a free list?");
+                       break;
+               case BLOCK_STATE_NEED_SWEEPING:
+                       if (sweep_block (block))
+                               ++stat_major_blocks_lazy_swept;
+                       break;
+               case BLOCK_STATE_SWEEPING:
+                       /* FIXME: do this more elegantly */
+                       g_usleep (100);
+                       goto retry;
+               default:
+                       SGEN_ASSERT (0, FALSE, "Illegal block state");
+                       break;
+               }
+       }
+}
+
+static void*
+unlink_slot_from_free_list_uncontested (MSBlockInfo * volatile *free_blocks, int size_index)
+{
+       MSBlockInfo *block, *next_free_block;
+       void *obj, *next_free_slot;
+
+ retry:
+       block = free_blocks [size_index];
+       SGEN_ASSERT (9, block, "no free block to unlink from free_blocks %p size_index %d", free_blocks, size_index);
+
+       ensure_can_access_block_free_list (block);
+
+       obj = block->free_list;
+       SGEN_ASSERT (6, obj, "block %p in free list had no available object to alloc from", block);
+
+       next_free_slot = *(void**)obj;
+       if (next_free_slot) {
+               block->free_list = next_free_slot;
+               return obj;
+       }
+
+       next_free_block = block->next_free;
+       if (SGEN_CAS_PTR ((gpointer)&free_blocks [size_index], next_free_block, block) != block)
+               goto retry;
+
+       block->free_list = NULL;
+       block->next_free = NULL;
+
+       return obj;
+}
+
+static void*
+alloc_obj (GCVTable *vtable, size_t size, gboolean pinned, gboolean has_references)
+{
+       int size_index = MS_BLOCK_OBJ_SIZE_INDEX (size);
+       MSBlockInfo * volatile * free_blocks = FREE_BLOCKS (pinned, has_references);
+       void *obj;
+
+       if (!free_blocks [size_index]) {
+               if (G_UNLIKELY (!ms_alloc_block (size_index, pinned, has_references)))
+                       return NULL;
+       }
+
+       obj = unlink_slot_from_free_list_uncontested (free_blocks, size_index);
+
+       *(GCVTable**)obj = vtable;
+
+       return obj;
+}
+
+static void*
+major_alloc_object (GCVTable *vtable, size_t size, gboolean has_references)
+{
+       return alloc_obj (vtable, size, FALSE, has_references);
+}
+
+/*
+ * We're not freeing the block if it's empty.  We leave that work for
+ * the next major collection.
+ *
+ * This is just called from the domain clearing code, which runs in a
+ * single thread and has the GC lock, so we don't need an extra lock.
+ */
+static void
+free_object (char *obj, size_t size, gboolean pinned)
+{
+       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
+       int word, bit;
+       gboolean in_free_list;
+
+       SGEN_ASSERT (9, sweep_state == SWEEP_STATE_SWEPT, "Should have waited for sweep to free objects.");
+
+       ensure_can_access_block_free_list (block);
+       SGEN_ASSERT (9, (pinned && block->pinned) || (!pinned && !block->pinned), "free-object pinning mixup object %p pinned %d block %p pinned %d", obj, pinned, block, block->pinned);
+       SGEN_ASSERT (9, MS_OBJ_ALLOCED (obj, block), "object %p is already free", obj);
+       MS_CALC_MARK_BIT (word, bit, obj);
+       SGEN_ASSERT (9, !MS_MARK_BIT (block, word, bit), "object %p has mark bit set", obj);
+
+       memset (obj, 0, size);
+
+       in_free_list = !!block->free_list;
+       *(void**)obj = block->free_list;
+       block->free_list = (void**)obj;
+
+       if (!in_free_list) {
+               MSBlockInfo * volatile *free_blocks = FREE_BLOCKS (pinned, block->has_references);
+               int size_index = MS_BLOCK_OBJ_SIZE_INDEX (size);
+               SGEN_ASSERT (9, !block->next_free, "block %p doesn't have a free-list of object but belongs to a free-list of blocks", block);
+               add_free_block (free_blocks, size_index, block);
+       }
+}
+
+static void
+major_free_non_pinned_object (char *obj, size_t size)
+{
+       free_object (obj, size, FALSE);
+}
+
+/* size is a multiple of SGEN_ALLOC_ALIGN */
+static void*
+major_alloc_small_pinned_obj (GCVTable *vtable, size_t size, gboolean has_references)
+{
+       void *res;
+
+       res = alloc_obj (vtable, size, TRUE, has_references);
+        /*If we failed to alloc memory, we better try releasing memory
+         *as pinned alloc is requested by the runtime.
+         */
+        if (!res) {
+               sgen_perform_collection (0, GENERATION_OLD, "pinned alloc failure", TRUE);
+               res = alloc_obj (vtable, size, TRUE, has_references);
+        }
+        return res;
+}
+
+static void
+free_pinned_object (char *obj, size_t size)
+{
+       free_object (obj, size, TRUE);
+}
+
+/*
+ * size is already rounded up and we hold the GC lock.
+ */
+static void*
+major_alloc_degraded (GCVTable *vtable, size_t size)
+{
+       void *obj = alloc_obj (vtable, size, FALSE, SGEN_VTABLE_HAS_REFERENCES (vtable));
+       if (G_LIKELY (obj)) {
+               HEAVY_STAT (++stat_objects_alloced_degraded);
+               HEAVY_STAT (stat_bytes_alloced_degraded += size);
+       }
+       return obj;
+}
+
+/*
+ * obj is some object.  If it's not in the major heap (i.e. if it's in
+ * the nursery or LOS), return FALSE.  Otherwise return whether it's
+ * been marked or copied.
+ */
+static gboolean
+major_is_object_live (char *obj)
+{
+       MSBlockInfo *block;
+       int word, bit;
+       mword objsize;
+
+       if (sgen_ptr_in_nursery (obj))
+               return FALSE;
+
+       objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size ((GCObject*)obj));
+
+       /* LOS */
+       if (objsize > SGEN_MAX_SMALL_OBJ_SIZE)
+               return FALSE;
+
+       /* now we know it's in a major block */
+       block = MS_BLOCK_FOR_OBJ (obj);
+       SGEN_ASSERT (9, !block->pinned, "block %p is pinned, BTW why is this bad?", block);
+       MS_CALC_MARK_BIT (word, bit, obj);
+       return MS_MARK_BIT (block, word, bit) ? TRUE : FALSE;
+}
+
+static gboolean
+major_ptr_is_in_non_pinned_space (char *ptr, char **start)
+{
+       MSBlockInfo *block;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               if (ptr >= MS_BLOCK_FOR_BLOCK_INFO (block) && ptr <= MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE) {
+                       int count = MS_BLOCK_FREE / block->obj_size;
+                       int i;
+
+                       *start = NULL;
+                       for (i = 0; i <= count; ++i) {
+                               if (ptr >= MS_BLOCK_OBJ (block, i) && ptr < MS_BLOCK_OBJ (block, i + 1)) {
+                                       *start = MS_BLOCK_OBJ (block, i);
+                                       break;
+                               }
+                       }
+                       return !block->pinned;
+               }
+       } END_FOREACH_BLOCK_NO_LOCK;
+       return FALSE;
+}
+
+static gboolean
+try_set_sweep_state (int new, int expected)
+{
+       int old = SGEN_CAS (&sweep_state, new, expected);
+       return old == expected;
+}
+
+static void
+set_sweep_state (int new, int expected)
+{
+       gboolean success = try_set_sweep_state (new, expected);
+       SGEN_ASSERT (0, success, "Could not set sweep state.");
+}
+
+static gboolean ensure_block_is_checked_for_sweeping (int block_index, gboolean wait, gboolean *have_checked);
+
+static SgenThreadPoolJob * volatile sweep_job;
+
+static void
+major_finish_sweep_checking (void)
+{
+       int block_index;
+       SgenThreadPoolJob *job;
+
+ retry:
+       switch (sweep_state) {
+       case SWEEP_STATE_SWEPT:
+       case SWEEP_STATE_NEED_SWEEPING:
+               return;
+       case SWEEP_STATE_SWEEPING:
+               if (try_set_sweep_state (SWEEP_STATE_SWEEPING_AND_ITERATING, SWEEP_STATE_SWEEPING))
+                       break;
+               goto retry;
+       case SWEEP_STATE_SWEEPING_AND_ITERATING:
+               SGEN_ASSERT (0, FALSE, "Is there another minor collection running?");
+               goto retry;
+       case SWEEP_STATE_COMPACTING:
+               goto wait;
+       default:
+               SGEN_ASSERT (0, FALSE, "Invalid sweep state.");
+               break;
+       }
+
+       /*
+        * We're running with the world stopped and the only other thread doing work is the
+        * sweep thread, which doesn't add blocks to the array, so we can safely access
+        * `next_slot`.
+        */
+       for (block_index = 0; block_index < allocated_blocks.next_slot; ++block_index)
+               ensure_block_is_checked_for_sweeping (block_index, FALSE, NULL);
+
+       set_sweep_state (SWEEP_STATE_SWEEPING, SWEEP_STATE_SWEEPING_AND_ITERATING);
+
+ wait:
+       job = sweep_job;
+       if (job)
+               sgen_thread_pool_job_wait (job);
+       SGEN_ASSERT (0, !sweep_job, "Why did the sweep job not null itself?");
+       SGEN_ASSERT (0, sweep_state == SWEEP_STATE_SWEPT, "How is the sweep job done but we're not swept?");
+}
+
+static void
+major_iterate_objects (IterateObjectsFlags flags, IterateObjectCallbackFunc callback, void *data)
+{
+       gboolean sweep = flags & ITERATE_OBJECTS_SWEEP;
+       gboolean non_pinned = flags & ITERATE_OBJECTS_NON_PINNED;
+       gboolean pinned = flags & ITERATE_OBJECTS_PINNED;
+       MSBlockInfo *block;
+
+       major_finish_sweep_checking ();
+       FOREACH_BLOCK_NO_LOCK (block) {
+               int count = MS_BLOCK_FREE / block->obj_size;
+               int i;
+
+               if (block->pinned && !pinned)
+                       continue;
+               if (!block->pinned && !non_pinned)
+                       continue;
+               if (sweep && lazy_sweep) {
+                       sweep_block (block);
+                       SGEN_ASSERT (6, block->state == BLOCK_STATE_SWEPT, "Block must be swept after sweeping");
+               }
+
+               for (i = 0; i < count; ++i) {
+                       void **obj = (void**) MS_BLOCK_OBJ (block, i);
+                       /*
+                        * We've finished sweep checking, but if we're sweeping lazily and
+                        * the flags don't require us to sweep, the block might still need
+                        * sweeping.  In that case, we need to consult the mark bits to tell
+                        * us whether an object slot is live.
+                        */
+                       if (!block_is_swept_or_marking (block)) {
+                               int word, bit;
+                               SGEN_ASSERT (6, !sweep && block->state == BLOCK_STATE_NEED_SWEEPING, "Has sweeping not finished?");
+                               MS_CALC_MARK_BIT (word, bit, obj);
+                               if (!MS_MARK_BIT (block, word, bit))
+                                       continue;
+                       }
+                       if (MS_OBJ_ALLOCED (obj, block))
+                               callback ((char*)obj, block->obj_size, data);
+               }
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
+static gboolean
+major_is_valid_object (char *object)
+{
+       MSBlockInfo *block;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               int idx;
+               char *obj;
+
+               if ((MS_BLOCK_FOR_BLOCK_INFO (block) > object) || ((MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE) <= object))
+                       continue;
+
+               idx = MS_BLOCK_OBJ_INDEX (object, block);
+               obj = (char*)MS_BLOCK_OBJ (block, idx);
+               if (obj != object)
+                       return FALSE;
+               return MS_OBJ_ALLOCED (obj, block);
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       return FALSE;
+}
+
+
+static GCVTable*
+major_describe_pointer (char *ptr)
+{
+       MSBlockInfo *block;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               int idx;
+               char *obj;
+               gboolean live;
+               GCVTable *vtable;
+               int w, b;
+               gboolean marked;
+
+               if ((MS_BLOCK_FOR_BLOCK_INFO (block) > ptr) || ((MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE) <= ptr))
+                       continue;
+
+               SGEN_LOG (0, "major-ptr (block %p sz %d pin %d ref %d)\n",
+                       MS_BLOCK_FOR_BLOCK_INFO (block), block->obj_size, block->pinned, block->has_references);
+
+               idx = MS_BLOCK_OBJ_INDEX (ptr, block);
+               obj = (char*)MS_BLOCK_OBJ (block, idx);
+               live = MS_OBJ_ALLOCED (obj, block);
+               vtable = live ? (GCVTable*)SGEN_LOAD_VTABLE (obj) : NULL;
+
+               MS_CALC_MARK_BIT (w, b, obj);
+               marked = MS_MARK_BIT (block, w, b);
+
+               if (obj == ptr) {
+                       SGEN_LOG (0, "\t(");
+                       if (live)
+                               SGEN_LOG (0, "object");
+                       else
+                               SGEN_LOG (0, "dead-object");
+               } else {
+                       if (live)
+                               SGEN_LOG (0, "interior-ptr offset %zd", ptr - obj);
+                       else
+                               SGEN_LOG (0, "dead-interior-ptr offset %zd", ptr - obj);
+               }
+
+               SGEN_LOG (0, " marked %d)\n", marked ? 1 : 0);
+
+               return vtable;
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       return NULL;
+}
+
+static void
+major_check_scan_starts (void)
+{
+}
+
+static void
+major_dump_heap (FILE *heap_dump_file)
+{
+       MSBlockInfo *block;
+       int *slots_available = alloca (sizeof (int) * num_block_obj_sizes);
+       int *slots_used = alloca (sizeof (int) * num_block_obj_sizes);
+       int i;
+
+       for (i = 0; i < num_block_obj_sizes; ++i)
+               slots_available [i] = slots_used [i] = 0;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               int index = ms_find_block_obj_size_index (block->obj_size);
+               int count = MS_BLOCK_FREE / block->obj_size;
+
+               slots_available [index] += count;
+               for (i = 0; i < count; ++i) {
+                       if (MS_OBJ_ALLOCED (MS_BLOCK_OBJ (block, i), block))
+                               ++slots_used [index];
+               }
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       fprintf (heap_dump_file, "<occupancies>\n");
+       for (i = 0; i < num_block_obj_sizes; ++i) {
+               fprintf (heap_dump_file, "<occupancy size=\"%d\" available=\"%d\" used=\"%d\" />\n",
+                               block_obj_sizes [i], slots_available [i], slots_used [i]);
+       }
+       fprintf (heap_dump_file, "</occupancies>\n");
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               int count = MS_BLOCK_FREE / block->obj_size;
+               int i;
+               int start = -1;
+
+               fprintf (heap_dump_file, "<section type=\"%s\" size=\"%zu\">\n", "old", (size_t)MS_BLOCK_FREE);
+
+               for (i = 0; i <= count; ++i) {
+                       if ((i < count) && MS_OBJ_ALLOCED (MS_BLOCK_OBJ (block, i), block)) {
+                               if (start < 0)
+                                       start = i;
+                       } else {
+                               if (start >= 0) {
+                                       sgen_dump_occupied (MS_BLOCK_OBJ (block, start), MS_BLOCK_OBJ (block, i), MS_BLOCK_FOR_BLOCK_INFO (block));
+                                       start = -1;
+                               }
+                       }
+               }
+
+               fprintf (heap_dump_file, "</section>\n");
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
+static guint8*
+get_cardtable_mod_union_for_block (MSBlockInfo *block, gboolean allocate)
+{
+       guint8 *mod_union = block->cardtable_mod_union;
+       guint8 *other;
+       if (mod_union)
+               return mod_union;
+       else if (!allocate)
+               return NULL;
+       mod_union = sgen_card_table_alloc_mod_union (MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
+       other = SGEN_CAS_PTR ((gpointer*)&block->cardtable_mod_union, mod_union, NULL);
+       if (!other) {
+               SGEN_ASSERT (0, block->cardtable_mod_union == mod_union, "Why did CAS not replace?");
+               return mod_union;
+       }
+       sgen_card_table_free_mod_union (mod_union, MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
+       return other;
+}
+
+static inline guint8*
+major_get_cardtable_mod_union_for_reference (char *ptr)
+{
+       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (ptr);
+       size_t offset = sgen_card_table_get_card_offset (ptr, (char*)sgen_card_table_align_pointer (MS_BLOCK_FOR_BLOCK_INFO (block)));
+       guint8 *mod_union = get_cardtable_mod_union_for_block (block, TRUE);
+       SGEN_ASSERT (0, mod_union, "FIXME: optionally allocate the mod union if it's not here and CAS it in.");
+       return &mod_union [offset];
+}
+
+/*
+ * Mark the mod-union card for `ptr`, which must be a reference within the object `obj`.
+ */
+static void
+mark_mod_union_card (GCObject *obj, void **ptr)
+{
+       int type = sgen_obj_get_descriptor ((char*)obj) & DESC_TYPE_MASK;
+       if (sgen_safe_object_is_small (obj, type)) {
+               guint8 *card_byte = major_get_cardtable_mod_union_for_reference ((char*)ptr);
+               SGEN_ASSERT (0, MS_BLOCK_FOR_OBJ (obj) == MS_BLOCK_FOR_OBJ (ptr), "How can an object and a reference inside it not be in the same block?");
+               *card_byte = 1;
+       } else {
+               sgen_los_mark_mod_union_card (obj, ptr);
+       }
+}
+
+#define LOAD_VTABLE    SGEN_LOAD_VTABLE
+
+#define MS_MARK_OBJECT_AND_ENQUEUE_CHECKED(obj,desc,block,queue) do {  \
+               int __word, __bit;                                      \
+               MS_CALC_MARK_BIT (__word, __bit, (obj));                \
+               if (!MS_MARK_BIT ((block), __word, __bit) && MS_OBJ_ALLOCED ((obj), (block))) { \
+                       MS_SET_MARK_BIT ((block), __word, __bit);       \
+                       if (sgen_gc_descr_has_references (desc))                        \
+                               GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
+                       binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((GCObject*)(obj))); \
+                       INC_NUM_MAJOR_OBJECTS_MARKED ();                \
+               }                                                       \
+       } while (0)
+#define MS_MARK_OBJECT_AND_ENQUEUE(obj,desc,block,queue) do {          \
+               int __word, __bit;                                      \
+               MS_CALC_MARK_BIT (__word, __bit, (obj));                \
+               SGEN_ASSERT (9, MS_OBJ_ALLOCED ((obj), (block)), "object %p not allocated", obj); \
+               if (!MS_MARK_BIT ((block), __word, __bit)) {            \
+                       MS_SET_MARK_BIT ((block), __word, __bit);       \
+                       if (sgen_gc_descr_has_references (desc))                        \
+                               GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
+                       binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((GCObject*)(obj))); \
+                       INC_NUM_MAJOR_OBJECTS_MARKED ();                \
+               }                                                       \
+       } while (0)
+
+static void
+pin_major_object (char *obj, SgenGrayQueue *queue)
+{
+       MSBlockInfo *block;
+
+       if (concurrent_mark)
+               g_assert_not_reached ();
+
+       block = MS_BLOCK_FOR_OBJ (obj);
+       block->has_pinned = TRUE;
+       MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
+}
+
+#include "sgen-major-copy-object.h"
+
+static void
+major_copy_or_mark_object_concurrent (void **ptr, void *obj, SgenGrayQueue *queue)
+{
+       SGEN_ASSERT (9, sgen_concurrent_collection_in_progress (), "Why are we scanning concurrently when there's no concurrent collection on?");
+       SGEN_ASSERT (9, !sgen_workers_are_working () || sgen_thread_pool_is_thread_pool_thread (mono_native_thread_id_get ()), "We must not scan from two threads at the same time!");
+
+       g_assert (!SGEN_OBJECT_IS_FORWARDED (obj));
+
+       if (!sgen_ptr_in_nursery (obj)) {
+               mword objsize;
+
+               objsize = SGEN_ALIGN_UP (sgen_safe_object_get_size ((GCObject*)obj));
+
+               if (objsize <= SGEN_MAX_SMALL_OBJ_SIZE) {
+                       MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
+                       MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
+               } else {
+                       if (sgen_los_object_is_pinned (obj))
+                               return;
+
+                       binary_protocol_mark (obj, SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
+
+                       sgen_los_pin_object (obj);
+                       if (SGEN_OBJECT_HAS_REFERENCES (obj))
+                               GRAY_OBJECT_ENQUEUE (queue, obj, sgen_obj_get_descriptor (obj));
+                       INC_NUM_MAJOR_OBJECTS_MARKED ();
+               }
+       }
+}
+
+static long long
+major_get_and_reset_num_major_objects_marked (void)
+{
+#ifdef SGEN_COUNT_NUMBER_OF_MAJOR_OBJECTS_MARKED
+       long long num = num_major_objects_marked;
+       num_major_objects_marked = 0;
+       return num;
+#else
+       return 0;
+#endif
+}
+
+#define PREFETCH_CARDS         1       /* BOOL FASTENABLE */
+#if !PREFETCH_CARDS
+#undef PREFETCH_CARDS
+#endif
+
+/* gcc 4.2.1 from xcode4 crashes on sgen_card_table_get_card_address () when this is enabled */
+#if defined(PLATFORM_MACOSX)
+#define GCC_VERSION (__GNUC__ * 10000 \
+                               + __GNUC_MINOR__ * 100 \
+                               + __GNUC_PATCHLEVEL__)
+#if GCC_VERSION <= 40300
+#undef PREFETCH_CARDS
+#endif
+#endif
+
+#ifdef HEAVY_STATISTICS
+static guint64 stat_optimized_copy;
+static guint64 stat_optimized_copy_nursery;
+static guint64 stat_optimized_copy_nursery_forwarded;
+static guint64 stat_optimized_copy_nursery_pinned;
+static guint64 stat_optimized_copy_major;
+static guint64 stat_optimized_copy_major_small_fast;
+static guint64 stat_optimized_copy_major_small_slow;
+static guint64 stat_optimized_copy_major_large;
+static guint64 stat_optimized_copy_major_forwarded;
+static guint64 stat_optimized_copy_major_small_evacuate;
+static guint64 stat_optimized_major_scan;
+static guint64 stat_optimized_major_scan_no_refs;
+
+static guint64 stat_drain_prefetch_fills;
+static guint64 stat_drain_prefetch_fill_failures;
+static guint64 stat_drain_loops;
+#endif
+
+static void major_scan_object_with_evacuation (char *start, mword desc, SgenGrayQueue *queue);
+
+#define COPY_OR_MARK_FUNCTION_NAME     major_copy_or_mark_object_no_evacuation
+#define SCAN_OBJECT_FUNCTION_NAME      major_scan_object_no_evacuation
+#define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_no_evacuation
+#include "sgen-marksweep-drain-gray-stack.h"
+
+#define COPY_OR_MARK_WITH_EVACUATION
+#define COPY_OR_MARK_FUNCTION_NAME     major_copy_or_mark_object_with_evacuation
+#define SCAN_OBJECT_FUNCTION_NAME      major_scan_object_with_evacuation
+#define DRAIN_GRAY_STACK_FUNCTION_NAME drain_gray_stack_with_evacuation
+#include "sgen-marksweep-drain-gray-stack.h"
+
+static gboolean
+drain_gray_stack (ScanCopyContext ctx)
+{
+       gboolean evacuation = FALSE;
+       int i;
+       for (i = 0; i < num_block_obj_sizes; ++i) {
+               if (evacuate_block_obj_sizes [i]) {
+                       evacuation = TRUE;
+                       break;
+               }
+       }
+
+       if (evacuation)
+               return drain_gray_stack_with_evacuation (ctx);
+       else
+               return drain_gray_stack_no_evacuation (ctx);
+}
+
+#include "sgen-marksweep-scan-object-concurrent.h"
+
+static void
+major_copy_or_mark_object_canonical (void **ptr, SgenGrayQueue *queue)
+{
+       major_copy_or_mark_object_with_evacuation (ptr, *ptr, queue);
+}
+
+static void
+major_copy_or_mark_object_concurrent_canonical (void **ptr, SgenGrayQueue *queue)
+{
+       major_copy_or_mark_object_concurrent (ptr, *ptr, queue);
+}
+
+static void
+major_copy_or_mark_object_concurrent_finish_canonical (void **ptr, SgenGrayQueue *queue)
+{
+       major_copy_or_mark_object_no_evacuation (ptr, *ptr, queue);
+}
+
+static void
+mark_pinned_objects_in_block (MSBlockInfo *block, size_t first_entry, size_t last_entry, SgenGrayQueue *queue)
+{
+       void **entry, **end;
+       int last_index = -1;
+
+       if (first_entry == last_entry)
+               return;
+
+       block->has_pinned = TRUE;
+
+       entry = sgen_pinning_get_entry (first_entry);
+       end = sgen_pinning_get_entry (last_entry);
+
+       for (; entry < end; ++entry) {
+               int index = MS_BLOCK_OBJ_INDEX (*entry, block);
+               char *obj;
+               SGEN_ASSERT (9, index >= 0 && index < MS_BLOCK_FREE / block->obj_size, "invalid object %p index %d max-index %d", *entry, index, (int)(MS_BLOCK_FREE / block->obj_size));
+               if (index == last_index)
+                       continue;
+               obj = MS_BLOCK_OBJ (block, index);
+               MS_MARK_OBJECT_AND_ENQUEUE_CHECKED (obj, sgen_obj_get_descriptor (obj), block, queue);
+               last_index = index;
+       }
+}
+
+static inline void
+sweep_block_for_size (MSBlockInfo *block, int count, int obj_size)
+{
+       int obj_index;
+
+       for (obj_index = 0; obj_index < count; ++obj_index) {
+               int word, bit;
+               void *obj = MS_BLOCK_OBJ_FOR_SIZE (block, obj_index, obj_size);
+
+               MS_CALC_MARK_BIT (word, bit, obj);
+               if (MS_MARK_BIT (block, word, bit)) {
+                       SGEN_ASSERT (9, MS_OBJ_ALLOCED (obj, block), "object %p not allocated", obj);
+               } else {
+                       /* an unmarked object */
+                       if (MS_OBJ_ALLOCED (obj, block)) {
+                               /*
+                                * FIXME: Merge consecutive
+                                * slots for lower reporting
+                                * overhead.  Maybe memset
+                                * will also benefit?
+                                */
+                               binary_protocol_empty (obj, obj_size);
+                               memset (obj, 0, obj_size);
+                       }
+                       *(void**)obj = block->free_list;
+                       block->free_list = obj;
+               }
+       }
+}
+
+static inline gboolean
+try_set_block_state (MSBlockInfo *block, gint32 new_state, gint32 expected_state)
+{
+       gint32 old_state = SGEN_CAS (&block->state, new_state, expected_state);
+       gboolean success = old_state == expected_state;
+       if (success)
+               binary_protocol_block_set_state (block, MS_BLOCK_SIZE, old_state, new_state);
+       return success;
+}
+
+static inline void
+set_block_state (MSBlockInfo *block, gint32 new_state, gint32 expected_state)
+{
+       SGEN_ASSERT (6, block->state == expected_state, "Block state incorrect before set");
+       block->state = new_state;
+}
+
+/*
+ * If `block` needs sweeping, sweep it and return TRUE.  Otherwise return FALSE.
+ *
+ * Sweeping means iterating through the block's slots and building the free-list from the
+ * unmarked ones.  They will also be zeroed.  The mark bits will be reset.
+ */
+static gboolean
+sweep_block (MSBlockInfo *block)
+{
+       int count;
+       void *reversed = NULL;
+
+ retry:
+       switch (block->state) {
+       case BLOCK_STATE_SWEPT:
+               return FALSE;
+       case BLOCK_STATE_MARKING:
+       case BLOCK_STATE_CHECKING:
+               SGEN_ASSERT (0, FALSE, "How did we get to sweep a block that's being marked or being checked?");
+               goto retry;
+       case BLOCK_STATE_SWEEPING:
+               /* FIXME: Do this more elegantly */
+               g_usleep (100);
+               goto retry;
+       case BLOCK_STATE_NEED_SWEEPING:
+               if (!try_set_block_state (block, BLOCK_STATE_SWEEPING, BLOCK_STATE_NEED_SWEEPING))
+                       goto retry;
+               break;
+       default:
+               SGEN_ASSERT (0, FALSE, "Illegal block state");
+       }
+
+       SGEN_ASSERT (6, block->state == BLOCK_STATE_SWEEPING, "How did we get here without setting state to sweeping?");
+
+       count = MS_BLOCK_FREE / block->obj_size;
+
+       block->free_list = NULL;
+
+       /* Use inline instances specialized to constant sizes, this allows the compiler to replace the memset calls with inline code */
+       // FIXME: Add more sizes
+       switch (block->obj_size) {
+       case 16:
+               sweep_block_for_size (block, count, 16);
+               break;
+       default:
+               sweep_block_for_size (block, count, block->obj_size);
+               break;
+       }
+
+       /* reset mark bits */
+       memset (block->mark_words, 0, sizeof (mword) * MS_NUM_MARK_WORDS);
+
+       /* Reverse free list so that it's in address order */
+       reversed = NULL;
+       while (block->free_list) {
+               void *next = *(void**)block->free_list;
+               *(void**)block->free_list = reversed;
+               reversed = block->free_list;
+               block->free_list = next;
+       }
+       block->free_list = reversed;
+
+       mono_memory_write_barrier ();
+
+       set_block_state (block, BLOCK_STATE_SWEPT, BLOCK_STATE_SWEEPING);
+
+       return TRUE;
+}
+
+static inline int
+bitcount (mword d)
+{
+       int count = 0;
+
+#ifdef __GNUC__
+       if (sizeof (mword) == sizeof (unsigned long))
+               count += __builtin_popcountl (d);
+       else
+               count += __builtin_popcount (d);
+#else
+       while (d) {
+               count ++;
+               d &= (d - 1);
+       }
+#endif
+       return count;
+}
+
+/* statistics for evacuation */
+static size_t *sweep_slots_available;
+static size_t *sweep_slots_used;
+static size_t *sweep_num_blocks;
+
+static volatile size_t num_major_sections_before_sweep;
+static volatile size_t num_major_sections_freed_in_sweep;
+
+static void
+sweep_start (void)
+{
+       int i;
+
+       for (i = 0; i < num_block_obj_sizes; ++i)
+               sweep_slots_available [i] = sweep_slots_used [i] = sweep_num_blocks [i] = 0;
+
+       /* clear all the free lists */
+       for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i) {
+               MSBlockInfo * volatile *free_blocks = free_block_lists [i];
+               int j;
+               for (j = 0; j < num_block_obj_sizes; ++j)
+                       free_blocks [j] = NULL;
+       }
+}
+
+static void sweep_finish (void);
+
+/*
+ * If `wait` is TRUE and the block is currently being checked, this function will wait until
+ * the checking has finished.
+ *
+ * Returns whether the block is still there.  If `wait` is FALSE, the return value will not
+ * be correct, i.e. must not be used.
+ */
+static gboolean
+ensure_block_is_checked_for_sweeping (int block_index, gboolean wait, gboolean *have_checked)
+{
+       int count;
+       gboolean have_live = FALSE;
+       gboolean have_free = FALSE;
+       int nused = 0;
+       int block_state;
+       int i;
+       void *tagged_block;
+       MSBlockInfo *block;
+
+       SGEN_ASSERT (6, sweep_in_progress (), "Why do we call this function if there's no sweep in progress?");
+
+       if (have_checked)
+               *have_checked = FALSE;
+
+ retry:
+       tagged_block = *(void * volatile *)&allocated_blocks.data [block_index];
+       if (!tagged_block)
+               return FALSE;
+
+       if (BLOCK_IS_TAGGED_CHECKING (tagged_block)) {
+               if (!wait)
+                       return FALSE;
+               /* FIXME: do this more elegantly */
+               g_usleep (100);
+               goto retry;
+       }
+
+       if (SGEN_CAS_PTR (&allocated_blocks.data [block_index], BLOCK_TAG_CHECKING (tagged_block), tagged_block) != tagged_block)
+               goto retry;
+
+       block = BLOCK_UNTAG (tagged_block);
+       block_state = block->state;
+
+       if (!sweep_in_progress ()) {
+               SGEN_ASSERT (6, block_state != BLOCK_STATE_SWEEPING && block_state != BLOCK_STATE_CHECKING, "Invalid block state.");
+               if (!lazy_sweep)
+                       SGEN_ASSERT (6, block_state != BLOCK_STATE_NEED_SWEEPING, "Invalid block state.");
+       }
+
+       switch (block_state) {
+       case BLOCK_STATE_SWEPT:
+       case BLOCK_STATE_NEED_SWEEPING:
+       case BLOCK_STATE_SWEEPING:
+               goto done;
+       case BLOCK_STATE_MARKING:
+               break;
+       case BLOCK_STATE_CHECKING:
+               SGEN_ASSERT (0, FALSE, "We set the CHECKING bit - how can the stage be CHECKING?");
+               goto done;
+       default:
+               SGEN_ASSERT (0, FALSE, "Illegal block state");
+               break;
+       }
+
+       SGEN_ASSERT (6, block->state == BLOCK_STATE_MARKING, "When we sweep all blocks must start out marking.");
+       set_block_state (block, BLOCK_STATE_CHECKING, BLOCK_STATE_MARKING);
+
+       if (have_checked)
+               *have_checked = TRUE;
+
+       block->has_pinned = block->pinned;
+
+       block->is_to_space = FALSE;
+
+       count = MS_BLOCK_FREE / block->obj_size;
+
+       if (block->cardtable_mod_union) {
+               sgen_card_table_free_mod_union (block->cardtable_mod_union, MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
+               block->cardtable_mod_union = NULL;
+       }
+
+       /* Count marked objects in the block */
+       for (i = 0; i < MS_NUM_MARK_WORDS; ++i)
+               nused += bitcount (block->mark_words [i]);
+
+       if (nused)
+               have_live = TRUE;
+       if (nused < count)
+               have_free = TRUE;
+
+       if (have_live) {
+               int obj_size_index = block->obj_size_index;
+               gboolean has_pinned = block->has_pinned;
+
+               set_block_state (block, BLOCK_STATE_NEED_SWEEPING, BLOCK_STATE_CHECKING);
+
+               /*
+                * FIXME: Go straight to SWEPT if there are no free slots.  We need
+                * to set the free slot list to NULL, though, and maybe update some
+                * statistics.
+                */
+               if (!lazy_sweep)
+                       sweep_block (block);
+
+               if (!has_pinned) {
+                       ++sweep_num_blocks [obj_size_index];
+                       sweep_slots_used [obj_size_index] += nused;
+                       sweep_slots_available [obj_size_index] += count;
+               }
+
+               /*
+                * If there are free slots in the block, add
+                * the block to the corresponding free list.
+                */
+               if (have_free) {
+                       MSBlockInfo * volatile *free_blocks = FREE_BLOCKS (block->pinned, block->has_references);
+
+                       if (!lazy_sweep)
+                               SGEN_ASSERT (6, block->free_list, "How do we not have a free list when there are free slots?");
+
+                       add_free_block (free_blocks, obj_size_index, block);
+               }
+
+               /* FIXME: Do we need the heap boundaries while we do nursery collections? */
+               update_heap_boundaries_for_block (block);
+       } else {
+               /*
+                * Blocks without live objects are removed from the
+                * block list and freed.
+                */
+               SGEN_ASSERT (6, block_index < allocated_blocks.next_slot, "How did the number of blocks shrink?");
+               SGEN_ASSERT (6, allocated_blocks.data [block_index] == BLOCK_TAG_CHECKING (tagged_block), "How did the block move?");
+
+               binary_protocol_empty (MS_BLOCK_OBJ (block, 0), (char*)MS_BLOCK_OBJ (block, count) - (char*)MS_BLOCK_OBJ (block, 0));
+               ms_free_block (block);
+
+               SGEN_ATOMIC_ADD_P (num_major_sections, -1);
+
+               tagged_block = NULL;
+       }
+
+ done:
+       allocated_blocks.data [block_index] = tagged_block;
+       return !!tagged_block;
+}
+
+static void
+sweep_job_func (void *thread_data_untyped, SgenThreadPoolJob *job)
+{
+       int block_index;
+       int num_blocks = num_major_sections_before_sweep;
+
+       SGEN_ASSERT (0, sweep_in_progress (), "Sweep thread called with wrong state");
+       SGEN_ASSERT (0, num_blocks <= allocated_blocks.next_slot, "How did we lose blocks?");
+
+       /*
+        * We traverse the block array from high to low.  Nursery collections will have to
+        * cooperate with the sweep thread to finish sweeping, and they will traverse from
+        * low to high, to avoid constantly colliding on the same blocks.
+        */
+       for (block_index = num_blocks - 1; block_index >= 0; --block_index) {
+               gboolean have_checked;
+
+               /*
+                * The block might have been freed by another thread doing some checking
+                * work.
+                */
+               if (!ensure_block_is_checked_for_sweeping (block_index, TRUE, &have_checked))
+                       ++num_major_sections_freed_in_sweep;
+       }
+
+       while (!try_set_sweep_state (SWEEP_STATE_COMPACTING, SWEEP_STATE_SWEEPING)) {
+               /*
+                * The main GC thread is currently iterating over the block array to help us
+                * finish the sweep.  We have already finished, but we don't want to mess up
+                * that iteration, so we just wait for it.
+                */
+               g_usleep (100);
+       }
+
+       if (SGEN_MAX_ASSERT_LEVEL >= 6) {
+               for (block_index = num_blocks; block_index < allocated_blocks.next_slot; ++block_index) {
+                       MSBlockInfo *block = BLOCK_UNTAG (allocated_blocks.data [block_index]);
+                       SGEN_ASSERT (6, block && block->state == BLOCK_STATE_SWEPT, "How did a new block to be swept get added while swept?");
+               }
+       }
+
+       sgen_pointer_queue_remove_nulls (&allocated_blocks);
+
+       sweep_finish ();
+
+       sweep_job = NULL;
+}
+
+static void
+sweep_finish (void)
+{
+       mword total_evacuate_heap = 0;
+       mword total_evacuate_saved = 0;
+       int i;
+
+       for (i = 0; i < num_block_obj_sizes; ++i) {
+               float usage = (float)sweep_slots_used [i] / (float)sweep_slots_available [i];
+               if (sweep_num_blocks [i] > 5 && usage < evacuation_threshold) {
+                       evacuate_block_obj_sizes [i] = TRUE;
+                       /*
+                       g_print ("slot size %d - %d of %d used\n",
+                                       block_obj_sizes [i], slots_used [i], slots_available [i]);
+                       */
+               } else {
+                       evacuate_block_obj_sizes [i] = FALSE;
+               }
+               {
+                       mword total_bytes = block_obj_sizes [i] * sweep_slots_available [i];
+                       total_evacuate_heap += total_bytes;
+                       if (evacuate_block_obj_sizes [i])
+                               total_evacuate_saved += total_bytes - block_obj_sizes [i] * sweep_slots_used [i];
+               }
+       }
+
+       want_evacuation = (float)total_evacuate_saved / (float)total_evacuate_heap > (1 - concurrent_evacuation_threshold);
+
+       set_sweep_state (SWEEP_STATE_SWEPT, SWEEP_STATE_COMPACTING);
+}
+
+static void
+major_sweep (void)
+{
+       set_sweep_state (SWEEP_STATE_SWEEPING, SWEEP_STATE_NEED_SWEEPING);
+
+       sweep_start ();
+
+       SGEN_ASSERT (0, num_major_sections == allocated_blocks.next_slot, "We don't know how many blocks we have?");
+
+       num_major_sections_before_sweep = num_major_sections;
+       num_major_sections_freed_in_sweep = 0;
+
+       SGEN_ASSERT (0, !sweep_job, "We haven't finished the last sweep?");
+       if (concurrent_sweep) {
+               sweep_job = sgen_thread_pool_job_alloc ("sweep", sweep_job_func, sizeof (SgenThreadPoolJob));
+               sgen_thread_pool_job_enqueue (sweep_job);
+       } else {
+               sweep_job_func (NULL, NULL);
+       }
+}
+
+static gboolean
+major_have_swept (void)
+{
+       return sweep_state == SWEEP_STATE_SWEPT;
+}
+
+static int count_pinned_ref;
+static int count_pinned_nonref;
+static int count_nonpinned_ref;
+static int count_nonpinned_nonref;
+
+static void
+count_nonpinned_callback (char *obj, size_t size, void *data)
+{
+       GCVTable *vtable = (GCVTable*)LOAD_VTABLE (obj);
+
+       if (SGEN_VTABLE_HAS_REFERENCES (vtable))
+               ++count_nonpinned_ref;
+       else
+               ++count_nonpinned_nonref;
+}
+
+static void
+count_pinned_callback (char *obj, size_t size, void *data)
+{
+       GCVTable *vtable = (GCVTable*)LOAD_VTABLE (obj);
+
+       if (SGEN_VTABLE_HAS_REFERENCES (vtable))
+               ++count_pinned_ref;
+       else
+               ++count_pinned_nonref;
+}
+
+static G_GNUC_UNUSED void
+count_ref_nonref_objs (void)
+{
+       int total;
+
+       count_pinned_ref = 0;
+       count_pinned_nonref = 0;
+       count_nonpinned_ref = 0;
+       count_nonpinned_nonref = 0;
+
+       major_iterate_objects (ITERATE_OBJECTS_SWEEP_NON_PINNED, count_nonpinned_callback, NULL);
+       major_iterate_objects (ITERATE_OBJECTS_SWEEP_PINNED, count_pinned_callback, NULL);
+
+       total = count_pinned_nonref + count_nonpinned_nonref + count_pinned_ref + count_nonpinned_ref;
+
+       g_print ("ref: %d pinned %d non-pinned   non-ref: %d pinned %d non-pinned  --  %.1f\n",
+                       count_pinned_ref, count_nonpinned_ref,
+                       count_pinned_nonref, count_nonpinned_nonref,
+                       (count_pinned_nonref + count_nonpinned_nonref) * 100.0 / total);
+}
+
+static int
+ms_calculate_block_obj_sizes (double factor, int *arr)
+{
+       double target_size;
+       int num_sizes = 0;
+       int last_size = 0;
+
+       /*
+        * Have every possible slot size starting with the minimal
+        * object size up to and including four times that size.  Then
+        * proceed by increasing geometrically with the given factor.
+        */
+
+       for (int size = SGEN_CLIENT_MINIMUM_OBJECT_SIZE; size <= 4 * SGEN_CLIENT_MINIMUM_OBJECT_SIZE; size += SGEN_ALLOC_ALIGN) {
+               if (arr)
+                       arr [num_sizes] = size;
+               ++num_sizes;
+               last_size = size;
+       }
+       target_size = (double)last_size;
+
+       do {
+               int target_count = (int)floor (MS_BLOCK_FREE / target_size);
+               int size = MIN ((MS_BLOCK_FREE / target_count) & ~(SGEN_ALLOC_ALIGN - 1), SGEN_MAX_SMALL_OBJ_SIZE);
+
+               if (size != last_size) {
+                       if (arr)
+                               arr [num_sizes] = size;
+                       ++num_sizes;
+                       last_size = size;
+               }
+
+               target_size *= factor;
+       } while (last_size < SGEN_MAX_SMALL_OBJ_SIZE);
+
+       return num_sizes;
+}
+
+/* only valid during minor collections */
+static mword old_num_major_sections;
+
+static void
+major_start_nursery_collection (void)
+{
+#ifdef MARKSWEEP_CONSISTENCY_CHECK
+       consistency_check ();
+#endif
+
+       old_num_major_sections = num_major_sections;
+}
+
+static void
+major_finish_nursery_collection (void)
+{
+#ifdef MARKSWEEP_CONSISTENCY_CHECK
+       consistency_check ();
+#endif
+}
+
+static void
+major_start_major_collection (void)
+{
+       MSBlockInfo *block;
+       int i;
+
+       major_finish_sweep_checking ();
+
+       /*
+        * Clear the free lists for block sizes where we do evacuation.  For those block
+        * sizes we will have to allocate new blocks.
+        */
+       for (i = 0; i < num_block_obj_sizes; ++i) {
+               if (!evacuate_block_obj_sizes [i])
+                       continue;
+
+               free_block_lists [0][i] = NULL;
+               free_block_lists [MS_BLOCK_FLAG_REFS][i] = NULL;
+       }
+
+       if (lazy_sweep)
+               binary_protocol_sweep_begin (GENERATION_OLD, TRUE);
+
+       /* Sweep all unswept blocks and set them to MARKING */
+       FOREACH_BLOCK_NO_LOCK (block) {
+               if (lazy_sweep)
+                       sweep_block (block);
+               SGEN_ASSERT (0, block->state == BLOCK_STATE_SWEPT, "All blocks must be swept when we're pinning.");
+               set_block_state (block, BLOCK_STATE_MARKING, BLOCK_STATE_SWEPT);
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       if (lazy_sweep)
+               binary_protocol_sweep_end (GENERATION_OLD, TRUE);
+
+       set_sweep_state (SWEEP_STATE_NEED_SWEEPING, SWEEP_STATE_SWEPT);
+}
+
+static void
+major_finish_major_collection (ScannedObjectCounts *counts)
+{
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       if (binary_protocol_is_enabled ()) {
+               counts->num_scanned_objects = scanned_objects_list.next_slot;
+
+               sgen_pointer_queue_sort_uniq (&scanned_objects_list);
+               counts->num_unique_scanned_objects = scanned_objects_list.next_slot;
+
+               sgen_pointer_queue_clear (&scanned_objects_list);
+       }
+#endif
+}
+
+#if SIZEOF_VOID_P != 8
+static int
+compare_pointers (const void *va, const void *vb) {
+       char *a = *(char**)va, *b = *(char**)vb;
+       if (a < b)
+               return -1;
+       if (a > b)
+               return 1;
+       return 0;
+}
+#endif
+
+/*
+ * This is called with sweep completed and the world stopped.
+ */
+static void
+major_free_swept_blocks (size_t allowance)
+{
+       /* FIXME: This is probably too much.  It's assuming all objects are small. */
+       size_t section_reserve = allowance / MS_BLOCK_SIZE;
+
+       SGEN_ASSERT (0, sweep_state == SWEEP_STATE_SWEPT, "Sweeping must have finished before freeing blocks");
+
+#if SIZEOF_VOID_P != 8
+       {
+               int i, num_empty_blocks_orig, num_blocks, arr_length;
+               void *block;
+               void **empty_block_arr;
+               void **rebuild_next;
+
+#ifdef TARGET_WIN32
+               /*
+                * sgen_free_os_memory () asserts in mono_vfree () because windows doesn't like freeing the middle of
+                * a VirtualAlloc ()-ed block.
+                */
+               return;
+#endif
+
+               if (num_empty_blocks <= section_reserve)
+                       return;
+               SGEN_ASSERT (0, num_empty_blocks > 0, "section reserve can't be negative");
+
+               num_empty_blocks_orig = num_empty_blocks;
+               empty_block_arr = (void**)sgen_alloc_internal_dynamic (sizeof (void*) * num_empty_blocks_orig,
+                               INTERNAL_MEM_MS_BLOCK_INFO_SORT, FALSE);
+               if (!empty_block_arr)
+                       goto fallback;
+
+               i = 0;
+               for (block = empty_blocks; block; block = *(void**)block)
+                       empty_block_arr [i++] = block;
+               SGEN_ASSERT (0, i == num_empty_blocks, "empty block count wrong");
+
+               sgen_qsort (empty_block_arr, num_empty_blocks, sizeof (void*), compare_pointers);
+
+               /*
+                * We iterate over the free blocks, trying to find MS_BLOCK_ALLOC_NUM
+                * contiguous ones.  If we do, we free them.  If that's not enough to get to
+                * section_reserve, we halve the number of contiguous blocks we're looking
+                * for and have another go, until we're done with looking for pairs of
+                * blocks, at which point we give up and go to the fallback.
+                */
+               arr_length = num_empty_blocks_orig;
+               num_blocks = MS_BLOCK_ALLOC_NUM;
+               while (num_empty_blocks > section_reserve && num_blocks > 1) {
+                       int first = -1;
+                       int dest = 0;
+
+                       dest = 0;
+                       for (i = 0; i < arr_length; ++i) {
+                               int d = dest;
+                               void *block = empty_block_arr [i];
+                               SGEN_ASSERT (6, block, "we're not shifting correctly");
+                               if (i != dest) {
+                                       empty_block_arr [dest] = block;
+                                       /*
+                                        * This is not strictly necessary, but we're
+                                        * cautious.
+                                        */
+                                       empty_block_arr [i] = NULL;
+                               }
+                               ++dest;
+
+                               if (first < 0) {
+                                       first = d;
+                                       continue;
+                               }
+
+                               SGEN_ASSERT (6, first >= 0 && d > first, "algorithm is wrong");
+
+                               if ((char*)block != ((char*)empty_block_arr [d-1]) + MS_BLOCK_SIZE) {
+                                       first = d;
+                                       continue;
+                               }
+
+                               if (d + 1 - first == num_blocks) {
+                                       /*
+                                        * We found num_blocks contiguous blocks.  Free them
+                                        * and null their array entries.  As an optimization
+                                        * we could, instead of nulling the entries, shift
+                                        * the following entries over to the left, while
+                                        * we're iterating.
+                                        */
+                                       int j;
+                                       sgen_free_os_memory (empty_block_arr [first], MS_BLOCK_SIZE * num_blocks, SGEN_ALLOC_HEAP);
+                                       for (j = first; j <= d; ++j)
+                                               empty_block_arr [j] = NULL;
+                                       dest = first;
+                                       first = -1;
+
+                                       num_empty_blocks -= num_blocks;
+
+                                       stat_major_blocks_freed += num_blocks;
+                                       if (num_blocks == MS_BLOCK_ALLOC_NUM)
+                                               stat_major_blocks_freed_ideal += num_blocks;
+                                       else
+                                               stat_major_blocks_freed_less_ideal += num_blocks;
+
+                               }
+                       }
+
+                       SGEN_ASSERT (6, dest <= i && dest <= arr_length, "array length is off");
+                       arr_length = dest;
+                       SGEN_ASSERT (6, arr_length == num_empty_blocks, "array length is off");
+
+                       num_blocks >>= 1;
+               }
+
+               /* rebuild empty_blocks free list */
+               rebuild_next = (void**)&empty_blocks;
+               for (i = 0; i < arr_length; ++i) {
+                       void *block = empty_block_arr [i];
+                       SGEN_ASSERT (6, block, "we're missing blocks");
+                       *rebuild_next = block;
+                       rebuild_next = (void**)block;
+               }
+               *rebuild_next = NULL;
+
+               /* free array */
+               sgen_free_internal_dynamic (empty_block_arr, sizeof (void*) * num_empty_blocks_orig, INTERNAL_MEM_MS_BLOCK_INFO_SORT);
+       }
+
+       SGEN_ASSERT (0, num_empty_blocks >= 0, "we freed more blocks than we had in the first place?");
+
+ fallback:
+       /*
+        * This is our threshold.  If there's not more empty than used blocks, we won't
+        * release uncontiguous blocks, in fear of fragmenting the address space.
+        */
+       if (num_empty_blocks <= num_major_sections)
+               return;
+#endif
+
+       while (num_empty_blocks > section_reserve) {
+               void *next = *(void**)empty_blocks;
+               sgen_free_os_memory (empty_blocks, MS_BLOCK_SIZE, SGEN_ALLOC_HEAP);
+               empty_blocks = next;
+               /*
+                * Needs not be atomic because this is running
+                * single-threaded.
+                */
+               --num_empty_blocks;
+
+               ++stat_major_blocks_freed;
+#if SIZEOF_VOID_P != 8
+               ++stat_major_blocks_freed_individual;
+#endif
+       }
+}
+
+static void
+major_pin_objects (SgenGrayQueue *queue)
+{
+       MSBlockInfo *block;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               size_t first_entry, last_entry;
+               SGEN_ASSERT (6, block_is_swept_or_marking (block), "All blocks must be swept when we're pinning.");
+               sgen_find_optimized_pin_queue_area (MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SKIP, MS_BLOCK_FOR_BLOCK_INFO (block) + MS_BLOCK_SIZE,
+                               &first_entry, &last_entry);
+               mark_pinned_objects_in_block (block, first_entry, last_entry, queue);
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
+static void
+major_init_to_space (void)
+{
+}
+
+static void
+major_report_pinned_memory_usage (void)
+{
+       g_assert_not_reached ();
+}
+
+static gint64
+major_get_used_size (void)
+{
+       gint64 size = 0;
+       MSBlockInfo *block;
+
+       /*
+        * We're holding the GC lock, but the sweep thread might be running.  Make sure it's
+        * finished, then we can iterate over the block array.
+        */
+       major_finish_sweep_checking ();
+
+       FOREACH_BLOCK_NO_LOCK_CONDITION (TRUE, block) {
+               int count = MS_BLOCK_FREE / block->obj_size;
+               void **iter;
+               size += count * block->obj_size;
+               for (iter = block->free_list; iter; iter = (void**)*iter)
+                       size -= block->obj_size;
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       return size;
+}
+
+/* FIXME: return number of bytes, not of sections */
+static size_t
+get_num_major_sections (void)
+{
+       return num_major_sections;
+}
+
+/*
+ * Returns the number of bytes in blocks that were present when the last sweep was
+ * initiated, and were not freed during the sweep.  They are the basis for calculating the
+ * allowance.
+ */
+static size_t
+get_bytes_survived_last_sweep (void)
+{
+       SGEN_ASSERT (0, sweep_state == SWEEP_STATE_SWEPT, "Can only query unswept sections after sweep");
+       return (num_major_sections_before_sweep - num_major_sections_freed_in_sweep) * MS_BLOCK_SIZE;
+}
+
+static gboolean
+major_handle_gc_param (const char *opt)
+{
+       if (g_str_has_prefix (opt, "evacuation-threshold=")) {
+               const char *arg = strchr (opt, '=') + 1;
+               int percentage = atoi (arg);
+               if (percentage < 0 || percentage > 100) {
+                       fprintf (stderr, "evacuation-threshold must be an integer in the range 0-100.\n");
+                       exit (1);
+               }
+               evacuation_threshold = (float)percentage / 100.0f;
+               return TRUE;
+       } else if (!strcmp (opt, "lazy-sweep")) {
+               lazy_sweep = TRUE;
+               return TRUE;
+       } else if (!strcmp (opt, "no-lazy-sweep")) {
+               lazy_sweep = FALSE;
+               return TRUE;
+       } else if (!strcmp (opt, "concurrent-sweep")) {
+               concurrent_sweep = TRUE;
+               return TRUE;
+       } else if (!strcmp (opt, "no-concurrent-sweep")) {
+               concurrent_sweep = FALSE;
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+static void
+major_print_gc_param_usage (void)
+{
+       fprintf (stderr,
+                       ""
+                       "  evacuation-threshold=P (where P is a percentage, an integer in 0-100)\n"
+                       "  (no-)lazy-sweep\n"
+                       "  (no-)concurrent-sweep\n"
+                       );
+}
+
+/*
+ * This callback is used to clear cards, move cards to the shadow table and do counting.
+ */
+static void
+major_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
+{
+       MSBlockInfo *block;
+       gboolean has_references;
+
+       major_finish_sweep_checking ();
+       FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
+               if (has_references)
+                       callback ((mword)MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
+#ifdef HEAVY_STATISTICS
+extern guint64 marked_cards;
+extern guint64 scanned_cards;
+extern guint64 scanned_objects;
+extern guint64 remarked_cards;
+#endif
+
+#define CARD_WORDS_PER_BLOCK (CARDS_PER_BLOCK / SIZEOF_VOID_P)
+/*
+ * MS blocks are 16K aligned.
+ * Cardtables are 4K aligned, at least.
+ * This means that the cardtable of a given block is 32 bytes aligned.
+ */
+static guint8*
+initial_skip_card (guint8 *card_data)
+{
+       mword *cards = (mword*)card_data;
+       mword card;
+       int i;
+       for (i = 0; i < CARD_WORDS_PER_BLOCK; ++i) {
+               card = cards [i];
+               if (card)
+                       break;
+       }
+
+       if (i == CARD_WORDS_PER_BLOCK)
+               return card_data + CARDS_PER_BLOCK;
+
+#if defined(__i386__) && defined(__GNUC__)
+       return card_data + i * 4 +  (__builtin_ffs (card) - 1) / 8;
+#elif defined(__x86_64__) && defined(__GNUC__)
+       return card_data + i * 8 +  (__builtin_ffsll (card) - 1) / 8;
+#elif defined(__s390x__) && defined(__GNUC__)
+       return card_data + i * 8 +  (__builtin_ffsll (GUINT64_TO_LE(card)) - 1) / 8;
+#else
+       for (i = i * SIZEOF_VOID_P; i < CARDS_PER_BLOCK; ++i) {
+               if (card_data [i])
+                       return &card_data [i];
+       }
+       return card_data;
+#endif
+}
+
+#define MS_BLOCK_OBJ_INDEX_FAST(o,b,os)        (((char*)(o) - ((b) + MS_BLOCK_SKIP)) / (os))
+#define MS_BLOCK_OBJ_FAST(b,os,i)                      ((b) + MS_BLOCK_SKIP + (os) * (i))
+#define MS_OBJ_ALLOCED_FAST(o,b)               (*(void**)(o) && (*(char**)(o) < (b) || *(char**)(o) >= (b) + MS_BLOCK_SIZE))
+
+static void
+scan_card_table_for_block (MSBlockInfo *block, gboolean mod_union, ScanCopyContext ctx)
+{
+       SgenGrayQueue *queue = ctx.queue;
+       ScanObjectFunc scan_func = ctx.ops->scan_object;
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+       guint8 cards_copy [CARDS_PER_BLOCK];
+#endif
+       gboolean small_objects;
+       int block_obj_size;
+       char *block_start;
+       guint8 *card_data, *card_base;
+       guint8 *card_data_end;
+       char *scan_front = NULL;
+
+       block_obj_size = block->obj_size;
+       small_objects = block_obj_size < CARD_SIZE_IN_BYTES;
+
+       block_start = MS_BLOCK_FOR_BLOCK_INFO (block);
+
+       /*
+        * This is safe in face of card aliasing for the following reason:
+        *
+        * Major blocks are 16k aligned, or 32 cards aligned.
+        * Cards aliasing happens in powers of two, so as long as major blocks are aligned to their
+        * sizes, they won't overflow the cardtable overlap modulus.
+        */
+       if (mod_union) {
+               card_data = card_base = block->cardtable_mod_union;
+               /*
+                * This happens when the nursery collection that precedes finishing
+                * the concurrent collection allocates new major blocks.
+                */
+               if (!card_data)
+                       return;
+       } else {
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+               card_data = card_base = sgen_card_table_get_card_scan_address ((mword)block_start);
+#else
+               if (!sgen_card_table_get_card_data (cards_copy, (mword)block_start, CARDS_PER_BLOCK))
+                       return;
+               card_data = card_base = cards_copy;
+#endif
+       }
+       card_data_end = card_data + CARDS_PER_BLOCK;
+
+       card_data += MS_BLOCK_SKIP >> CARD_BITS;
+
+       card_data = initial_skip_card (card_data);
+       while (card_data < card_data_end) {
+               size_t card_index, first_object_index;
+               char *start;
+               char *end;
+               char *first_obj, *obj;
+
+               HEAVY_STAT (++scanned_cards);
+
+               if (!*card_data) {
+                       ++card_data;
+                       continue;
+               }
+
+               card_index = card_data - card_base;
+               start = (char*)(block_start + card_index * CARD_SIZE_IN_BYTES);
+               end = start + CARD_SIZE_IN_BYTES;
+
+               if (!block_is_swept_or_marking (block))
+                       sweep_block (block);
+
+               HEAVY_STAT (++marked_cards);
+
+               if (small_objects)
+                       sgen_card_table_prepare_card_for_scanning (card_data);
+
+               /*
+                * If the card we're looking at starts at or in the block header, we
+                * must start at the first object in the block, without calculating
+                * the index of the object we're hypothetically starting at, because
+                * it would be negative.
+                */
+               if (card_index <= (MS_BLOCK_SKIP >> CARD_BITS))
+                       first_object_index = 0;
+               else
+                       first_object_index = MS_BLOCK_OBJ_INDEX_FAST (start, block_start, block_obj_size);
+
+               obj = first_obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, first_object_index);
+
+               binary_protocol_card_scan (first_obj, end - first_obj);
+
+               while (obj < end) {
+                       if (obj < scan_front || !MS_OBJ_ALLOCED_FAST (obj, block_start))
+                               goto next_object;
+
+                       if (mod_union) {
+                               /* FIXME: do this more efficiently */
+                               int w, b;
+                               MS_CALC_MARK_BIT (w, b, obj);
+                               if (!MS_MARK_BIT (block, w, b))
+                                       goto next_object;
+                       }
+
+                       if (small_objects) {
+                               HEAVY_STAT (++scanned_objects);
+                               scan_func (obj, sgen_obj_get_descriptor (obj), queue);
+                       } else {
+                               size_t offset = sgen_card_table_get_card_offset (obj, block_start);
+                               sgen_cardtable_scan_object (obj, block_obj_size, card_base + offset, mod_union, ctx);
+                       }
+               next_object:
+                       obj += block_obj_size;
+                       g_assert (scan_front <= obj);
+                       scan_front = obj;
+               }
+
+               HEAVY_STAT (if (*card_data) ++remarked_cards);
+
+               if (small_objects)
+                       ++card_data;
+               else
+                       card_data = card_base + sgen_card_table_get_card_offset (obj, block_start);
+       }
+}
+
+static void
+major_scan_card_table (gboolean mod_union, ScanCopyContext ctx)
+{
+       MSBlockInfo *block;
+       gboolean has_references;
+
+       if (!concurrent_mark)
+               g_assert (!mod_union);
+
+       major_finish_sweep_checking ();
+       FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
+#ifdef PREFETCH_CARDS
+               int prefetch_index = __index + 6;
+               if (prefetch_index < allocated_blocks.next_slot) {
+                       MSBlockInfo *prefetch_block = BLOCK_UNTAG (allocated_blocks.data [prefetch_index]);
+                       guint8 *prefetch_cards = sgen_card_table_get_card_scan_address ((mword)MS_BLOCK_FOR_BLOCK_INFO (prefetch_block));
+                       PREFETCH_READ (prefetch_block);
+                       PREFETCH_WRITE (prefetch_cards);
+                       PREFETCH_WRITE (prefetch_cards + 32);
+                }
+#endif
+
+               if (!has_references)
+                       continue;
+
+               scan_card_table_for_block (block, mod_union, ctx);
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
+static void
+major_count_cards (long long *num_total_cards, long long *num_marked_cards)
+{
+       MSBlockInfo *block;
+       gboolean has_references;
+       long long total_cards = 0;
+       long long marked_cards = 0;
+
+       if (sweep_in_progress ()) {
+               *num_total_cards = -1;
+               *num_marked_cards = -1;
+               return;
+       }
+
+       FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
+               guint8 *cards = sgen_card_table_get_card_scan_address ((mword) MS_BLOCK_FOR_BLOCK_INFO (block));
+               int i;
+
+               if (!has_references)
+                       continue;
+
+               total_cards += CARDS_PER_BLOCK;
+               for (i = 0; i < CARDS_PER_BLOCK; ++i) {
+                       if (cards [i])
+                               ++marked_cards;
+               }
+       } END_FOREACH_BLOCK_NO_LOCK;
+
+       *num_total_cards = total_cards;
+       *num_marked_cards = marked_cards;
+}
+
+static void
+update_cardtable_mod_union (void)
+{
+       MSBlockInfo *block;
+
+       FOREACH_BLOCK_NO_LOCK (block) {
+               size_t num_cards;
+               guint8 *mod_union = get_cardtable_mod_union_for_block (block, TRUE);
+               sgen_card_table_update_mod_union (mod_union, MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE, &num_cards);
+               SGEN_ASSERT (6, num_cards == CARDS_PER_BLOCK, "Number of cards calculation is wrong");
+       } END_FOREACH_BLOCK_NO_LOCK;
+}
+
+#undef pthread_create
+
+static void
+post_param_init (SgenMajorCollector *collector)
+{
+       collector->sweeps_lazily = lazy_sweep;
+       collector->needs_thread_pool = concurrent_mark || concurrent_sweep;
+}
+
+static void
+sgen_marksweep_init_internal (SgenMajorCollector *collector, gboolean is_concurrent)
+{
+       int i;
+
+       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_MS_BLOCK_INFO, sizeof (MSBlockInfo));
+
+       num_block_obj_sizes = ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, NULL);
+       block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (int) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       ms_calculate_block_obj_sizes (MS_BLOCK_OBJ_SIZE_FACTOR, block_obj_sizes);
+
+       evacuate_block_obj_sizes = sgen_alloc_internal_dynamic (sizeof (gboolean) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       for (i = 0; i < num_block_obj_sizes; ++i)
+               evacuate_block_obj_sizes [i] = FALSE;
+
+       sweep_slots_available = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_slots_used = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+       sweep_num_blocks = sgen_alloc_internal_dynamic (sizeof (size_t) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+
+       /*
+       {
+               int i;
+               g_print ("block object sizes:\n");
+               for (i = 0; i < num_block_obj_sizes; ++i)
+                       g_print ("%d\n", block_obj_sizes [i]);
+       }
+       */
+
+       for (i = 0; i < MS_BLOCK_TYPE_MAX; ++i)
+               free_block_lists [i] = sgen_alloc_internal_dynamic (sizeof (MSBlockInfo*) * num_block_obj_sizes, INTERNAL_MEM_MS_TABLES, TRUE);
+
+       for (i = 0; i < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES; ++i)
+               fast_block_obj_size_indexes [i] = ms_find_block_obj_size_index (i * 8);
+       for (i = 0; i < MS_NUM_FAST_BLOCK_OBJ_SIZE_INDEXES * 8; ++i)
+               g_assert (MS_BLOCK_OBJ_SIZE_INDEX (i) == ms_find_block_obj_size_index (i));
+
+       mono_counters_register ("# major blocks allocated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_alloced);
+       mono_counters_register ("# major blocks freed", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed);
+       mono_counters_register ("# major blocks lazy swept", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_lazy_swept);
+       mono_counters_register ("# major objects evacuated", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_objects_evacuated);
+#if SIZEOF_VOID_P != 8
+       mono_counters_register ("# major blocks freed ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_ideal);
+       mono_counters_register ("# major blocks freed less ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_less_ideal);
+       mono_counters_register ("# major blocks freed individually", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_freed_individual);
+       mono_counters_register ("# major blocks allocated less ideally", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_major_blocks_alloced_less_ideal);
+#endif
+
+       collector->section_size = MAJOR_SECTION_SIZE;
+
+       concurrent_mark = is_concurrent;
+       collector->is_concurrent = is_concurrent;
+       collector->needs_thread_pool = is_concurrent || concurrent_sweep;
+       if (is_concurrent)
+               collector->want_synchronous_collection = &want_evacuation;
+       else
+               collector->want_synchronous_collection = NULL;
+       collector->get_and_reset_num_major_objects_marked = major_get_and_reset_num_major_objects_marked;
+       collector->supports_cardtable = TRUE;
+
+       collector->alloc_heap = major_alloc_heap;
+       collector->is_object_live = major_is_object_live;
+       collector->alloc_small_pinned_obj = major_alloc_small_pinned_obj;
+       collector->alloc_degraded = major_alloc_degraded;
+
+       collector->alloc_object = major_alloc_object;
+       collector->free_pinned_object = free_pinned_object;
+       collector->iterate_objects = major_iterate_objects;
+       collector->free_non_pinned_object = major_free_non_pinned_object;
+       collector->pin_objects = major_pin_objects;
+       collector->pin_major_object = pin_major_object;
+       collector->scan_card_table = major_scan_card_table;
+       collector->iterate_live_block_ranges = (void*)(void*) major_iterate_live_block_ranges;
+       if (is_concurrent) {
+               collector->update_cardtable_mod_union = update_cardtable_mod_union;
+               collector->get_cardtable_mod_union_for_object = major_get_cardtable_mod_union_for_reference;
+       }
+       collector->init_to_space = major_init_to_space;
+       collector->sweep = major_sweep;
+       collector->have_swept = major_have_swept;
+       collector->finish_sweeping = major_finish_sweep_checking;
+       collector->free_swept_blocks = major_free_swept_blocks;
+       collector->check_scan_starts = major_check_scan_starts;
+       collector->dump_heap = major_dump_heap;
+       collector->get_used_size = major_get_used_size;
+       collector->start_nursery_collection = major_start_nursery_collection;
+       collector->finish_nursery_collection = major_finish_nursery_collection;
+       collector->start_major_collection = major_start_major_collection;
+       collector->finish_major_collection = major_finish_major_collection;
+       collector->ptr_is_in_non_pinned_space = major_ptr_is_in_non_pinned_space;
+       collector->obj_is_from_pinned_alloc = obj_is_from_pinned_alloc;
+       collector->report_pinned_memory_usage = major_report_pinned_memory_usage;
+       collector->get_num_major_sections = get_num_major_sections;
+       collector->get_bytes_survived_last_sweep = get_bytes_survived_last_sweep;
+       collector->handle_gc_param = major_handle_gc_param;
+       collector->print_gc_param_usage = major_print_gc_param_usage;
+       collector->post_param_init = post_param_init;
+       collector->is_valid_object = major_is_valid_object;
+       collector->describe_pointer = major_describe_pointer;
+       collector->count_cards = major_count_cards;
+
+       collector->major_ops_serial.copy_or_mark_object = major_copy_or_mark_object_canonical;
+       collector->major_ops_serial.scan_object = major_scan_object_with_evacuation;
+       if (is_concurrent) {
+               collector->major_ops_concurrent_start.copy_or_mark_object = major_copy_or_mark_object_concurrent_canonical;
+               collector->major_ops_concurrent_start.scan_object = major_scan_object_no_mark_concurrent_start;
+
+               collector->major_ops_concurrent.copy_or_mark_object = major_copy_or_mark_object_concurrent_canonical;
+               collector->major_ops_concurrent.scan_object = major_scan_object_no_mark_concurrent;
+
+               collector->major_ops_concurrent_finish.copy_or_mark_object = major_copy_or_mark_object_concurrent_finish_canonical;
+               collector->major_ops_concurrent_finish.scan_object = major_scan_object_no_evacuation;
+               collector->major_ops_concurrent_finish.scan_vtype = major_scan_vtype_concurrent_finish;
+       }
+
+#if !defined (FIXED_HEAP) && !defined (SGEN_PARALLEL_MARK)
+       if (!is_concurrent)
+               collector->drain_gray_stack = drain_gray_stack;
+
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("Optimized copy", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy);
+       mono_counters_register ("Optimized copy nursery", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery);
+       mono_counters_register ("Optimized copy nursery forwarded", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery_forwarded);
+       mono_counters_register ("Optimized copy nursery pinned", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_nursery_pinned);
+       mono_counters_register ("Optimized copy major", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major);
+       mono_counters_register ("Optimized copy major small fast", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_fast);
+       mono_counters_register ("Optimized copy major small slow", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_small_slow);
+       mono_counters_register ("Optimized copy major large", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_copy_major_large);
+       mono_counters_register ("Optimized major scan", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_major_scan);
+       mono_counters_register ("Optimized major scan no refs", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_optimized_major_scan_no_refs);
+
+       mono_counters_register ("Gray stack drain loops", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_loops);
+       mono_counters_register ("Gray stack prefetch fills", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_prefetch_fills);
+       mono_counters_register ("Gray stack prefetch failures", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_drain_prefetch_fill_failures);
+#endif
+#endif
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+       mono_mutex_init (&scanned_objects_list_lock);
+#endif
+
+       SGEN_ASSERT (0, SGEN_MAX_SMALL_OBJ_SIZE <= MS_BLOCK_FREE / 2, "MAX_SMALL_OBJ_SIZE must be at most MS_BLOCK_FREE / 2");
+
+       /*cardtable requires major pages to be 8 cards aligned*/
+       g_assert ((MS_BLOCK_SIZE % (8 * CARD_SIZE_IN_BYTES)) == 0);
+}
+
+void
+sgen_marksweep_init (SgenMajorCollector *collector)
+{
+       sgen_marksweep_init_internal (collector, FALSE);
+}
+
+void
+sgen_marksweep_conc_init (SgenMajorCollector *collector)
+{
+       sgen_marksweep_init_internal (collector, TRUE);
+}
+
+#endif
diff --git a/mono/sgen/sgen-memory-governor.c b/mono/sgen/sgen-memory-governor.c
new file mode 100644 (file)
index 0000000..6144417
--- /dev/null
@@ -0,0 +1,326 @@
+/*
+ * sgen-memory-governor.c: When to schedule collections based on
+ * memory usage.
+ *
+ * Author:
+ *     Rodrigo Kumpera (rkumpera@novell.com)
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <stdlib.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-thread-pool.h"
+#include "mono/sgen/sgen-client.h"
+
+#define MIN_MINOR_COLLECTION_ALLOWANCE ((mword)(DEFAULT_NURSERY_SIZE * default_allowance_nursery_size_ratio))
+
+/*Heap limits and allocation knobs*/
+static mword max_heap_size = ((mword)0)- ((mword)1);
+static mword soft_heap_limit = ((mword)0) - ((mword)1);
+
+static double default_allowance_nursery_size_ratio = SGEN_DEFAULT_ALLOWANCE_NURSERY_SIZE_RATIO;
+static double save_target_ratio = SGEN_DEFAULT_SAVE_TARGET_RATIO;
+
+/**/
+static mword allocated_heap;
+static mword total_alloc = 0;
+static mword total_alloc_max = 0;
+
+/* GC triggers. */
+
+static gboolean debug_print_allowance = FALSE;
+
+
+/* use this to tune when to do a major/minor collection */
+static mword major_collection_trigger_size;
+
+static mword last_major_num_sections = 0;
+static mword last_los_memory_usage = 0;
+
+static gboolean need_calculate_minor_collection_allowance;
+
+/* The size of the LOS after the last major collection, after sweeping. */
+static mword last_collection_los_memory_usage = 0;
+
+static mword sgen_memgov_available_free_space (void);
+
+
+/* GC trigger heuristics. */
+
+static void
+sgen_memgov_calculate_minor_collection_allowance (void)
+{
+       size_t new_major, new_heap_size, allowance_target, allowance;
+
+       if (!need_calculate_minor_collection_allowance)
+               return;
+
+       SGEN_ASSERT (0, major_collector.have_swept (), "Can only calculate allowance if heap is swept");
+
+       new_major = major_collector.get_bytes_survived_last_sweep ();
+       new_heap_size = new_major + last_collection_los_memory_usage;
+
+       /*
+        * We allow the heap to grow by one third its current size before we start the next
+        * major collection.
+        */
+       allowance_target = new_heap_size / 3;
+
+       allowance = MAX (allowance_target, MIN_MINOR_COLLECTION_ALLOWANCE);
+
+       if (new_heap_size + allowance > soft_heap_limit) {
+               if (new_heap_size > soft_heap_limit)
+                       allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
+               else
+                       allowance = MAX (soft_heap_limit - new_heap_size, MIN_MINOR_COLLECTION_ALLOWANCE);
+       }
+
+       /* FIXME: Why is this here? */
+       if (major_collector.free_swept_blocks)
+               major_collector.free_swept_blocks (allowance);
+
+       major_collection_trigger_size = new_heap_size + allowance;
+
+       need_calculate_minor_collection_allowance = FALSE;
+
+       if (debug_print_allowance) {
+               SGEN_LOG (0, "Surviving sweep: %ld bytes (%ld major, %ld LOS)", (long)new_heap_size, (long)new_major, (long)last_collection_los_memory_usage);
+               SGEN_LOG (0, "Allowance: %ld bytes", (long)allowance);
+               SGEN_LOG (0, "Trigger size: %ld bytes", (long)major_collection_trigger_size);
+       }
+}
+
+gboolean
+sgen_need_major_collection (mword space_needed)
+{
+       size_t heap_size;
+
+       if (sgen_concurrent_collection_in_progress ())
+               return FALSE;
+
+       /* FIXME: This is a cop-out.  We should have some way of figuring this out. */
+       if (!major_collector.have_swept ())
+               return FALSE;
+
+       if (space_needed > sgen_memgov_available_free_space ())
+               return TRUE;
+
+       sgen_memgov_calculate_minor_collection_allowance ();
+
+       heap_size = major_collector.get_num_major_sections () * major_collector.section_size + los_memory_usage;
+
+       return heap_size > major_collection_trigger_size;
+}
+
+void
+sgen_memgov_minor_collection_start (void)
+{
+}
+
+void
+sgen_memgov_minor_collection_end (void)
+{
+}
+
+void
+sgen_memgov_major_collection_start (void)
+{
+       need_calculate_minor_collection_allowance = TRUE;
+
+       if (debug_print_allowance) {
+               SGEN_LOG (0, "Starting collection with heap size %ld bytes", (long)(major_collector.get_num_major_sections () * major_collector.section_size + los_memory_usage));
+       }
+}
+
+void
+sgen_memgov_major_collection_end (gboolean forced)
+{
+       last_collection_los_memory_usage = los_memory_usage;
+
+       if (forced) {
+               sgen_get_major_collector ()->finish_sweeping ();
+               sgen_memgov_calculate_minor_collection_allowance ();
+       }
+}
+
+void
+sgen_memgov_collection_start (int generation)
+{
+}
+
+void
+sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count)
+{
+       int i;
+       for (i = 0; i < info_count; ++i) {
+               if (info[i].generation != -1)
+                       sgen_client_log_timing (&info [i], last_major_num_sections, last_los_memory_usage);
+       }
+}
+
+/*
+Global GC memory tracking.
+This tracks the total usage of memory by the GC. This includes
+managed and unmanaged memory.
+*/
+
+static unsigned long
+prot_flags_for_activate (int activate)
+{
+       unsigned long prot_flags = activate? MONO_MMAP_READ|MONO_MMAP_WRITE: MONO_MMAP_NONE;
+       return prot_flags | MONO_MMAP_PRIVATE | MONO_MMAP_ANON;
+}
+
+void
+sgen_assert_memory_alloc (void *ptr, size_t requested_size, const char *assert_description)
+{
+       if (ptr || !assert_description)
+               return;
+       fprintf (stderr, "Error: Garbage collector could not allocate %zu bytes of memory for %s.\n", requested_size, assert_description);
+       exit (1);
+}
+
+/*
+ * Allocate a big chunk of memory from the OS (usually 64KB to several megabytes).
+ * This must not require any lock.
+ */
+void*
+sgen_alloc_os_memory (size_t size, SgenAllocFlags flags, const char *assert_description)
+{
+       void *ptr;
+
+       g_assert (!(flags & ~(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE)));
+
+       ptr = mono_valloc (0, size, prot_flags_for_activate (flags & SGEN_ALLOC_ACTIVATE));
+       sgen_assert_memory_alloc (ptr, size, assert_description);
+       if (ptr) {
+               SGEN_ATOMIC_ADD_P (total_alloc, size);
+               total_alloc_max = MAX (total_alloc_max, total_alloc);
+       }
+       return ptr;
+}
+
+/* size must be a power of 2 */
+void*
+sgen_alloc_os_memory_aligned (size_t size, mword alignment, SgenAllocFlags flags, const char *assert_description)
+{
+       void *ptr;
+
+       g_assert (!(flags & ~(SGEN_ALLOC_HEAP | SGEN_ALLOC_ACTIVATE)));
+
+       ptr = mono_valloc_aligned (size, alignment, prot_flags_for_activate (flags & SGEN_ALLOC_ACTIVATE));
+       sgen_assert_memory_alloc (ptr, size, assert_description);
+       if (ptr) {
+               SGEN_ATOMIC_ADD_P (total_alloc, size);
+               total_alloc_max = MAX (total_alloc_max, total_alloc);
+       }
+       return ptr;
+}
+
+/*
+ * Free the memory returned by sgen_alloc_os_memory (), returning it to the OS.
+ */
+void
+sgen_free_os_memory (void *addr, size_t size, SgenAllocFlags flags)
+{
+       g_assert (!(flags & ~SGEN_ALLOC_HEAP));
+
+       mono_vfree (addr, size);
+       SGEN_ATOMIC_ADD_P (total_alloc, -(gssize)size);
+       total_alloc_max = MAX (total_alloc_max, total_alloc);
+}
+
+size_t
+sgen_gc_get_total_heap_allocation (void)
+{
+       return total_alloc;
+}
+
+
+/*
+Heap Sizing limits.
+This limit the max size of the heap. It takes into account
+only memory actively in use to hold heap objects and not
+for other parts of the GC.
+ */
+static mword
+sgen_memgov_available_free_space (void)
+{
+       return max_heap_size - MIN (allocated_heap, max_heap_size);
+}
+
+void
+sgen_memgov_release_space (mword size, int space)
+{
+       SGEN_ATOMIC_ADD_P (allocated_heap, -(gssize)size);
+}
+
+gboolean
+sgen_memgov_try_alloc_space (mword size, int space)
+{
+       if (sgen_memgov_available_free_space () < size) {
+               SGEN_ASSERT (4, !sgen_thread_pool_is_thread_pool_thread (mono_native_thread_id_get ()), "Memory shouldn't run out in worker thread");
+               return FALSE;
+       }
+
+       SGEN_ATOMIC_ADD_P (allocated_heap, size);
+       sgen_client_total_allocated_heap_changed (allocated_heap);
+       return TRUE;
+}
+
+void
+sgen_memgov_init (size_t max_heap, size_t soft_limit, gboolean debug_allowance, double allowance_ratio, double save_target)
+{
+       if (soft_limit)
+               soft_heap_limit = soft_limit;
+
+       debug_print_allowance = debug_allowance;
+       major_collection_trigger_size = MIN_MINOR_COLLECTION_ALLOWANCE;
+
+       mono_counters_register ("Memgov alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_VARIABLE, &total_alloc);
+       mono_counters_register ("Memgov max alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_MONOTONIC, &total_alloc_max);
+
+       if (max_heap == 0)
+               return;
+
+       if (max_heap < soft_limit) {
+               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Setting to minimum.", "`max-heap-size` must be at least as large as `soft-heap-limit`.");
+               max_heap = soft_limit;
+       }
+
+       if (max_heap < sgen_nursery_size * 4) {
+               sgen_env_var_error (MONO_GC_PARAMS_NAME, "Setting to minimum.", "`max-heap-size` must be at least 4 times as large as `nursery size`.");
+               max_heap = sgen_nursery_size * 4;
+       }
+       max_heap_size = max_heap - sgen_nursery_size;
+
+       if (allowance_ratio)
+               default_allowance_nursery_size_ratio = allowance_ratio;
+
+       if (save_target)
+               save_target_ratio = save_target;
+}
+
+#endif
diff --git a/mono/sgen/sgen-memory-governor.h b/mono/sgen/sgen-memory-governor.h
new file mode 100644 (file)
index 0000000..0115ec6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __MONO_SGEN_MEMORY_GOVERNOR_H__
+#define __MONO_SGEN_MEMORY_GOVERNOR_H__
+
+/* Heap limits */
+void sgen_memgov_init (size_t max_heap, size_t soft_limit, gboolean debug_allowance, double min_allowance_ratio, double save_target);
+void sgen_memgov_release_space (mword size, int space);
+gboolean sgen_memgov_try_alloc_space (mword size, int space);
+
+/* GC trigger heuristics */
+void sgen_memgov_minor_collection_start (void);
+void sgen_memgov_minor_collection_end (void);
+
+void sgen_memgov_major_collection_start (void);
+void sgen_memgov_major_collection_end (gboolean forced);
+
+void sgen_memgov_collection_start (int generation);
+void sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count);
+
+gboolean sgen_need_major_collection (mword space_needed);
+
+
+typedef enum {
+       SGEN_ALLOC_INTERNAL = 0,
+       SGEN_ALLOC_HEAP = 1,
+       SGEN_ALLOC_ACTIVATE = 2
+} SgenAllocFlags;
+
+/* OS memory allocation */
+void* sgen_alloc_os_memory (size_t size, SgenAllocFlags flags, const char *assert_description);
+void* sgen_alloc_os_memory_aligned (size_t size, mword alignment, SgenAllocFlags flags, const char *assert_description);
+void sgen_free_os_memory (void *addr, size_t size, SgenAllocFlags flags);
+
+/* Error handling */
+void sgen_assert_memory_alloc (void *ptr, size_t requested_size, const char *assert_description);
+
+#endif
+
diff --git a/mono/sgen/sgen-minor-copy-object.h b/mono/sgen/sgen-minor-copy-object.h
new file mode 100644 (file)
index 0000000..e323218
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+ * sgen-minor-copy-object.h: Copy functions for nursery collections.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#define collector_pin_object(obj, queue) sgen_pin_object (obj, queue);
+#define COLLECTOR_SERIAL_ALLOC_FOR_PROMOTION alloc_for_promotion
+
+extern guint64 stat_nursery_copy_object_failed_to_space; /* from sgen-gc.c */
+
+#include "sgen-copy-object.h"
+
+/*
+ * This is how the copying happens from the nursery to the old generation.
+ * We assume that at this time all the pinned objects have been identified and
+ * marked as such.
+ * We run scan_object() for each pinned object so that each referenced
+ * objects if possible are copied. The new gray objects created can have
+ * scan_object() run on them right away, too.
+ * Then we run copy_object() for the precisely tracked roots. At this point
+ * all the roots are either gray or black. We run scan_object() on the gray
+ * objects until no more gray objects are created.
+ * At the end of the process we walk again the pinned list and we unmark
+ * the pinned flag. As we go we also create the list of free space for use
+ * in the next allocation runs.
+ *
+ * We need to remember objects from the old generation that point to the new one
+ * (or just addresses?).
+ *
+ * copy_object could be made into a macro once debugged (use inline for now).
+ */
+
+static MONO_ALWAYS_INLINE void
+SERIAL_COPY_OBJECT (void **obj_slot, SgenGrayQueue *queue) 
+{
+       char *forwarded;
+       char *copy;
+       char *obj = *obj_slot;
+
+       SGEN_ASSERT (9, current_collection_generation == GENERATION_NURSERY, "calling minor-serial-copy from a %d generation collection", current_collection_generation);
+
+       HEAVY_STAT (++stat_copy_object_called_nursery);
+
+       if (!sgen_ptr_in_nursery (obj)) {
+               HEAVY_STAT (++stat_nursery_copy_object_failed_from_space);
+               return;
+       }
+
+       SGEN_LOG (9, "Precise copy of %p from %p", obj, obj_slot);
+
+       /*
+        * Before we can copy the object we must make sure that we are
+        * allowed to, i.e. that the object not pinned, not already
+        * forwarded or belongs to the nursery To Space.
+        */
+
+       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
+               SGEN_ASSERT (9, sgen_obj_get_descriptor (forwarded),  "forwarded object %p has no gc descriptor", forwarded);
+               SGEN_LOG (9, " (already forwarded to %p)", forwarded);
+               HEAVY_STAT (++stat_nursery_copy_object_failed_forwarded);
+               SGEN_UPDATE_REFERENCE (obj_slot, forwarded);
+               return;
+       }
+       if (G_UNLIKELY (SGEN_OBJECT_IS_PINNED (obj))) {
+               SGEN_ASSERT (9, sgen_vtable_get_descriptor ((GCVTable*)SGEN_LOAD_VTABLE(obj)), "pinned object %p has no gc descriptor", obj);
+               SGEN_LOG (9, " (pinned, no change)");
+               HEAVY_STAT (++stat_nursery_copy_object_failed_pinned);
+               return;
+       }
+
+#ifndef SGEN_SIMPLE_NURSERY
+       if (sgen_nursery_is_to_space (obj)) {
+               SGEN_ASSERT (9, sgen_vtable_get_descriptor ((GCVTable*)SGEN_LOAD_VTABLE(obj)), "to space object %p has no gc descriptor", obj);
+               SGEN_LOG (9, " (tospace, no change)");
+               HEAVY_STAT (++stat_nursery_copy_object_failed_to_space);                
+               return;
+       }
+#endif
+
+       HEAVY_STAT (++stat_objects_copied_nursery);
+
+       copy = copy_object_no_checks (obj, queue);
+       SGEN_UPDATE_REFERENCE (obj_slot, copy);
+}
+
+/*
+ * SERIAL_COPY_OBJECT_FROM_OBJ:
+ *
+ *   Similar to SERIAL_COPY_OBJECT, but assumes that OBJ_SLOT is part of an object, so it handles global remsets as well.
+ */
+static MONO_ALWAYS_INLINE void
+SERIAL_COPY_OBJECT_FROM_OBJ (void **obj_slot, SgenGrayQueue *queue) 
+{
+       char *forwarded;
+       char *obj = *obj_slot;
+       void *copy;
+
+       SGEN_ASSERT (9, current_collection_generation == GENERATION_NURSERY, "calling minor-serial-copy-from-obj from a %d generation collection", current_collection_generation);
+
+       HEAVY_STAT (++stat_copy_object_called_nursery);
+
+       if (!sgen_ptr_in_nursery (obj)) {
+               HEAVY_STAT (++stat_nursery_copy_object_failed_from_space);
+               return;
+       }
+
+       SGEN_LOG (9, "Precise copy of %p from %p", obj, obj_slot);
+
+       /*
+        * Before we can copy the object we must make sure that we are
+        * allowed to, i.e. that the object not pinned, not already
+        * forwarded or belongs to the nursery To Space.
+        */
+
+       if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj))) {
+               SGEN_ASSERT (9, sgen_obj_get_descriptor (forwarded),  "forwarded object %p has no gc descriptor", forwarded);
+               SGEN_LOG (9, " (already forwarded to %p)", forwarded);
+               HEAVY_STAT (++stat_nursery_copy_object_failed_forwarded);
+               SGEN_UPDATE_REFERENCE (obj_slot, forwarded);
+#ifndef SGEN_SIMPLE_NURSERY
+               if (G_UNLIKELY (sgen_ptr_in_nursery (forwarded) && !sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (forwarded)))
+                       sgen_add_to_global_remset (obj_slot, forwarded);
+#endif
+               return;
+       }
+       if (G_UNLIKELY (SGEN_OBJECT_IS_PINNED (obj))) {
+               SGEN_ASSERT (9, sgen_vtable_get_descriptor ((GCVTable*)SGEN_LOAD_VTABLE(obj)), "pinned object %p has no gc descriptor", obj);
+               SGEN_LOG (9, " (pinned, no change)");
+               HEAVY_STAT (++stat_nursery_copy_object_failed_pinned);
+               if (!sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (obj))
+                       sgen_add_to_global_remset (obj_slot, obj);
+               return;
+       }
+
+#ifndef SGEN_SIMPLE_NURSERY
+       if (sgen_nursery_is_to_space (obj)) {
+               /* FIXME: all of these could just use `sgen_obj_get_descriptor_safe()` */
+               SGEN_ASSERT (9, sgen_vtable_get_descriptor ((GCVTable*)SGEN_LOAD_VTABLE(obj)), "to space object %p has no gc descriptor", obj);
+               SGEN_LOG (9, " (tospace, no change)");
+               HEAVY_STAT (++stat_nursery_copy_object_failed_to_space);                
+
+               /*
+                * FIXME:
+                *
+                * The card table scanning code sometimes clears cards
+                * that have just been set for a global remset.  In
+                * the split nursery the following situation can
+                * occur:
+                *
+                * Let's say object A starts in card C but continues
+                * into C+1.  Within A, at offset O there's a
+                * reference to a new nursery object X.  A+O is in
+                * card C+1.  Now card C is scanned, and as part of
+                * it, object A.  The reference at A+O is processed by
+                * copying X into nursery to-space at Y.  Since it's
+                * still in the nursery, a global remset must be added
+                * for A+O, so card C+1 is marked.  Now, however, card
+                * C+1 is scanned, which means that it's cleared
+                * first.  This wouldn't be terribly bad if reference
+                * A+O were re-scanned and the global remset re-added,
+                * but since the reference points to to-space, that
+                * doesn't happen, and C+1 remains cleared: the remset
+                * is lost.
+                *
+                * There's at least two ways to fix this.  The easy
+                * one is to re-add the remset on the re-scan.  This
+                * is that - the following two lines of code.
+                *
+                * The proper solution appears to be to first make a
+                * copy of the cards before scanning a block, then to
+                * clear all the cards and scan from the copy, so no
+                * remsets will be overwritten.  Scanning objects at
+                * most once would be the icing on the cake.
+                */
+               if (!sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (obj))
+                       sgen_add_to_global_remset (obj_slot, obj);
+
+               return;
+       }
+#endif
+
+       HEAVY_STAT (++stat_objects_copied_nursery);
+
+       copy = copy_object_no_checks (obj, queue);
+       SGEN_UPDATE_REFERENCE (obj_slot, copy);
+#ifndef SGEN_SIMPLE_NURSERY
+       if (G_UNLIKELY (sgen_ptr_in_nursery (copy) && !sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (copy)))
+               sgen_add_to_global_remset (obj_slot, copy);
+#else
+       /* copy_object_no_checks () can return obj on OOM */
+       if (G_UNLIKELY (obj == copy)) {
+               if (G_UNLIKELY (sgen_ptr_in_nursery (copy) && !sgen_ptr_in_nursery (obj_slot) && !SGEN_OBJECT_IS_CEMENTED (copy)))
+                       sgen_add_to_global_remset (obj_slot, copy);
+       }
+#endif
+}
+
+#define FILL_MINOR_COLLECTOR_COPY_OBJECT(collector)    do {                    \
+               (collector)->serial_ops.copy_or_mark_object = SERIAL_COPY_OBJECT;                       \
+       } while (0)
diff --git a/mono/sgen/sgen-minor-scan-object.h b/mono/sgen/sgen-minor-scan-object.h
new file mode 100644 (file)
index 0000000..efe782f
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * sgen-minor-scan-object.h: Object scanning in the nursery collectors.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+extern guint64 stat_scan_object_called_nursery;
+
+#if defined(SGEN_SIMPLE_NURSERY)
+#define SERIAL_SCAN_OBJECT simple_nursery_serial_scan_object
+#define SERIAL_SCAN_VTYPE simple_nursery_serial_scan_vtype
+
+#elif defined (SGEN_SPLIT_NURSERY)
+#define SERIAL_SCAN_OBJECT split_nursery_serial_scan_object
+#define SERIAL_SCAN_VTYPE split_nursery_serial_scan_vtype
+
+#else
+#error "Please define GC_CONF_NAME"
+#endif
+
+#undef HANDLE_PTR
+/* Global remsets are handled in SERIAL_COPY_OBJECT_FROM_OBJ */
+#define HANDLE_PTR(ptr,obj)    do {    \
+               void *__old = *(ptr);   \
+               SGEN_OBJECT_LAYOUT_STATISTICS_MARK_BITMAP ((obj), (ptr)); \
+               binary_protocol_scan_process_reference ((obj), (ptr), __old); \
+               if (__old) {    \
+                       SERIAL_COPY_OBJECT_FROM_OBJ ((ptr), queue);     \
+                       SGEN_COND_LOG (9, __old != *(ptr), "Overwrote field at %p with %p (was: %p)", (ptr), *(ptr), __old); \
+               }       \
+       } while (0)
+
+static void
+SERIAL_SCAN_OBJECT (char *start, mword desc, SgenGrayQueue *queue)
+{
+       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
+
+#ifdef HEAVY_STATISTICS
+       sgen_descriptor_count_scanned_object (desc);
+#endif
+
+       SGEN_ASSERT (9, sgen_get_current_collection_generation () == GENERATION_NURSERY, "Must not use minor scan during major collection.");
+
+#define SCAN_OBJECT_PROTOCOL
+#include "sgen-scan-object.h"
+
+       SGEN_OBJECT_LAYOUT_STATISTICS_COMMIT_BITMAP;
+       HEAVY_STAT (++stat_scan_object_called_nursery);
+}
+
+static void
+SERIAL_SCAN_VTYPE (char *full_object, char *start, mword desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
+{
+       SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
+
+       SGEN_ASSERT (9, sgen_get_current_collection_generation () == GENERATION_NURSERY, "Must not use minor scan during major collection.");
+
+       /* The descriptors include info about the MonoObject header as well */
+       start -= SGEN_CLIENT_OBJECT_HEADER_SIZE;
+
+#define SCAN_OBJECT_NOVTABLE
+#define SCAN_OBJECT_PROTOCOL
+#include "sgen-scan-object.h"
+}
+
+#define FILL_MINOR_COLLECTOR_SCAN_OBJECT(collector)    do {                    \
+               (collector)->serial_ops.scan_object = SERIAL_SCAN_OBJECT;       \
+               (collector)->serial_ops.scan_vtype = SERIAL_SCAN_VTYPE; \
+       } while (0)
diff --git a/mono/sgen/sgen-nursery-allocator.c b/mono/sgen/sgen-nursery-allocator.c
new file mode 100644 (file)
index 0000000..ab12803
--- /dev/null
@@ -0,0 +1,927 @@
+/*
+ * sgen-nursery-allocator.c: Nursery allocation code.
+ *
+ * Copyright 2009-2010 Novell, Inc.
+ *           2011 Rodrigo Kumpera
+ * 
+ * Copyright 2011 Xamarin Inc  (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * The young generation is divided into fragments. This is because
+ * we can hand one fragments to a thread for lock-less fast alloc and
+ * because the young generation ends up fragmented anyway by pinned objects.
+ * Once a collection is done, a list of fragments is created. When doing
+ * thread local alloc we use smallish nurseries so we allow new threads to
+ * allocate memory from gen0 without triggering a collection. Threads that
+ * are found to allocate lots of memory are given bigger fragments. This
+ * should make the finalizer thread use little nursery memory after a while.
+ * We should start assigning threads very small fragments: if there are many
+ * threads the nursery will be full of reserved space that the threads may not
+ * use at all, slowing down allocation speed.
+ * Thread local allocation is done from areas of memory Hotspot calls Thread Local 
+ * Allocation Buffers (TLABs).
+ */
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+#ifdef HAVE_SEMAPHORE_H
+#include <semaphore.h>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#ifdef __MACH__
+#undef _XOPEN_SOURCE
+#endif
+#ifdef __MACH__
+#define _XOPEN_SOURCE
+#endif
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-cardtable.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-memory-governor.h"
+#include "mono/sgen/sgen-pinning.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/utils/mono-membar.h"
+
+/* Enable it so nursery allocation diagnostic data is collected */
+//#define NALLOC_DEBUG 1
+
+/* The mutator allocs from here. */
+static SgenFragmentAllocator mutator_allocator;
+
+/* freeelist of fragment structures */
+static SgenFragment *fragment_freelist = NULL;
+
+/* Allocator cursors */
+static char *nursery_last_pinned_end = NULL;
+
+char *sgen_nursery_start;
+char *sgen_nursery_end;
+
+#ifdef USER_CONFIG
+size_t sgen_nursery_size = (1 << 22);
+int sgen_nursery_bits = 22;
+#endif
+
+char *sgen_space_bitmap;
+size_t sgen_space_bitmap_size;
+
+#ifdef HEAVY_STATISTICS
+
+static mword stat_wasted_bytes_trailer = 0;
+static mword stat_wasted_bytes_small_areas = 0;
+static mword stat_wasted_bytes_discarded_fragments = 0;
+static guint64 stat_nursery_alloc_requests = 0;
+static guint64 stat_alloc_iterations = 0;
+static guint64 stat_alloc_retries = 0;
+
+static guint64 stat_nursery_alloc_range_requests = 0;
+static guint64 stat_alloc_range_iterations = 0;
+static guint64 stat_alloc_range_retries = 0;
+
+#endif
+
+/************************************Nursery allocation debugging *********************************************/
+
+#ifdef NALLOC_DEBUG
+
+enum {
+       FIXED_ALLOC = 1,
+       RANGE_ALLOC,
+       PINNING,
+       BLOCK_ZEROING,
+       CLEAR_NURSERY_FRAGS
+};
+
+typedef struct {
+       char *address;
+       size_t size;
+       int reason;
+       int seq;
+       MonoNativeThreadId tid;
+} AllocRecord;
+
+#define ALLOC_RECORD_COUNT 128000
+
+
+static AllocRecord *alloc_records;
+static volatile int next_record;
+static volatile int alloc_count;
+
+void dump_alloc_records (void);
+void verify_alloc_records (void);
+
+static const char*
+get_reason_name (AllocRecord *rec)
+{
+       switch (rec->reason) {
+       case FIXED_ALLOC: return "fixed-alloc";
+       case RANGE_ALLOC: return "range-alloc";
+       case PINNING: return "pinning";
+       case BLOCK_ZEROING: return "block-zeroing";
+       case CLEAR_NURSERY_FRAGS: return "clear-nursery-frag";
+       default: return "invalid";
+       }
+}
+
+static void
+reset_alloc_records (void)
+{
+       next_record = 0;
+       alloc_count = 0;
+}
+
+static void
+add_alloc_record (char *addr, size_t size, int reason)
+{
+       int idx = InterlockedIncrement (&next_record) - 1;
+       alloc_records [idx].address = addr;
+       alloc_records [idx].size = size;
+       alloc_records [idx].reason = reason;
+       alloc_records [idx].seq = idx;
+       alloc_records [idx].tid = mono_native_thread_id_get ();
+}
+
+static int
+comp_alloc_record (const void *_a, const void *_b)
+{
+       const AllocRecord *a = _a;
+       const AllocRecord *b = _b;
+       if (a->address == b->address)
+               return a->seq - b->seq;
+       return a->address - b->address;
+}
+
+#define rec_end(REC) ((REC)->address + (REC)->size)
+
+void
+dump_alloc_records (void)
+{
+       int i;
+       sgen_qsort (alloc_records, next_record, sizeof (AllocRecord), comp_alloc_record);
+
+       printf ("------------------------------------DUMP RECORDS----------------------------\n");
+       for (i = 0; i < next_record; ++i) {
+               AllocRecord *rec = alloc_records + i;
+               printf ("obj [%p, %p] size %d reason %s seq %d tid %x\n", rec->address, rec_end (rec), (int)rec->size, get_reason_name (rec), rec->seq, (size_t)rec->tid);
+       }
+}
+
+void
+verify_alloc_records (void)
+{
+       int i;
+       int total = 0;
+       int holes = 0;
+       int max_hole = 0;
+       AllocRecord *prev = NULL;
+
+       sgen_qsort (alloc_records, next_record, sizeof (AllocRecord), comp_alloc_record);
+       printf ("------------------------------------DUMP RECORDS- %d %d---------------------------\n", next_record, alloc_count);
+       for (i = 0; i < next_record; ++i) {
+               AllocRecord *rec = alloc_records + i;
+               int hole_size = 0;
+               total += rec->size;
+               if (prev) {
+                       if (rec_end (prev) > rec->address)
+                               printf ("WE GOT OVERLAPPING objects %p and %p\n", prev->address, rec->address);
+                       if ((rec->address - rec_end (prev)) >= 8)
+                               ++holes;
+                       hole_size = rec->address - rec_end (prev);
+                       max_hole = MAX (max_hole, hole_size);
+               }
+               printf ("obj [%p, %p] size %d hole to prev %d reason %s seq %d tid %zx\n", rec->address, rec_end (rec), (int)rec->size, hole_size, get_reason_name (rec), rec->seq, (size_t)rec->tid);
+               prev = rec;
+       }
+       printf ("SUMMARY total alloc'd %d holes %d max_hole %d\n", total, holes, max_hole);
+}
+
+#endif
+
+/*********************************************************************************/
+
+
+static inline gpointer
+mask (gpointer n, uintptr_t bit)
+{
+       return (gpointer)(((uintptr_t)n) | bit);
+}
+
+static inline gpointer
+unmask (gpointer p)
+{
+       return (gpointer)((uintptr_t)p & ~(uintptr_t)0x3);
+}
+
+static inline uintptr_t
+get_mark (gpointer n)
+{
+       return (uintptr_t)n & 0x1;
+}
+
+/*MUST be called with world stopped*/
+SgenFragment*
+sgen_fragment_allocator_alloc (void)
+{
+       SgenFragment *frag = fragment_freelist;
+       if (frag) {
+               fragment_freelist = frag->next_in_order;
+               frag->next = frag->next_in_order = NULL;
+               return frag;
+       }
+       frag = sgen_alloc_internal (INTERNAL_MEM_FRAGMENT);
+       frag->next = frag->next_in_order = NULL;
+       return frag;
+}
+
+void
+sgen_fragment_allocator_add (SgenFragmentAllocator *allocator, char *start, char *end)
+{
+       SgenFragment *fragment;
+
+       fragment = sgen_fragment_allocator_alloc ();
+       fragment->fragment_start = start;
+       fragment->fragment_next = start;
+       fragment->fragment_end = end;
+       fragment->next_in_order = fragment->next = unmask (allocator->region_head);
+
+       allocator->region_head = allocator->alloc_head = fragment;
+       g_assert (fragment->fragment_end > fragment->fragment_start);
+}
+
+void
+sgen_fragment_allocator_release (SgenFragmentAllocator *allocator)
+{
+       SgenFragment *last = allocator->region_head;
+       if (!last)
+               return;
+
+       /* Find the last fragment in insert order */
+       for (; last->next_in_order; last = last->next_in_order) ;
+
+       last->next_in_order = fragment_freelist;
+       fragment_freelist = allocator->region_head;
+       allocator->alloc_head = allocator->region_head = NULL;
+}
+
+static SgenFragment**
+find_previous_pointer_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag)
+{
+       SgenFragment **prev;
+       SgenFragment *cur, *next;
+#ifdef NALLOC_DEBUG
+       int count = 0;
+#endif
+
+try_again:
+       prev = &allocator->alloc_head;
+#ifdef NALLOC_DEBUG
+       if (count++ > 5)
+               printf ("retry count for fppf is %d\n", count);
+#endif
+
+       cur = unmask (*prev);
+
+       while (1) {
+               if (cur == NULL)
+                       return NULL;
+               next = cur->next;
+
+               /*
+                * We need to make sure that we dereference prev below
+                * after reading cur->next above, so we need a read
+                * barrier.
+                */
+               mono_memory_read_barrier ();
+
+               if (*prev != cur)
+                       goto try_again;
+
+               if (!get_mark (next)) {
+                       if (cur == frag)
+                               return prev;
+                       prev = &cur->next;
+               } else {
+                       next = unmask (next);
+                       if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) != cur)
+                               goto try_again;
+                       /*we must make sure that the next from cur->next happens after*/
+                       mono_memory_write_barrier ();
+               }
+
+               cur = unmask (next);
+       }
+       return NULL;
+}
+
+static gboolean
+claim_remaining_size (SgenFragment *frag, char *alloc_end)
+{
+       /* All space used, nothing to claim. */
+       if (frag->fragment_end <= alloc_end)
+               return FALSE;
+
+       /* Try to alloc all the remaining space. */
+       return InterlockedCompareExchangePointer ((volatile gpointer*)&frag->fragment_next, frag->fragment_end, alloc_end) == alloc_end;
+}
+
+static void*
+par_alloc_from_fragment (SgenFragmentAllocator *allocator, SgenFragment *frag, size_t size)
+{
+       char *p = frag->fragment_next;
+       char *end = p + size;
+
+       if (end > frag->fragment_end)
+               return NULL;
+
+       /* p = frag->fragment_next must happen before */
+       mono_memory_barrier ();
+
+       if (InterlockedCompareExchangePointer ((volatile gpointer*)&frag->fragment_next, end, p) != p)
+               return NULL;
+
+       if (frag->fragment_end - end < SGEN_MAX_NURSERY_WASTE) {
+               SgenFragment *next, **prev_ptr;
+               
+               /*
+                * Before we clean the remaining nursery, we must claim the remaining space
+                * as it could end up been used by the range allocator since it can end up
+                * allocating from this dying fragment as it doesn't respect SGEN_MAX_NURSERY_WASTE
+                * when doing second chance allocation.
+                */
+               if ((sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION || sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION_DEBUG) && claim_remaining_size (frag, end)) {
+                       sgen_clear_range (end, frag->fragment_end);
+                       HEAVY_STAT (InterlockedExchangeAdd (&stat_wasted_bytes_trailer, frag->fragment_end - end));
+#ifdef NALLOC_DEBUG
+                       add_alloc_record (end, frag->fragment_end - end, BLOCK_ZEROING);
+#endif
+               }
+
+               prev_ptr = find_previous_pointer_fragment (allocator, frag);
+
+               /*Use Michaels linked list remove*/
+
+               /*prev_ptr will be null if the fragment was removed concurrently */
+               while (prev_ptr) {
+                       next = frag->next;
+
+                       /*already deleted*/
+                       if (!get_mark (next)) {
+                               /*frag->next read must happen before the first CAS*/
+                               mono_memory_write_barrier ();
+
+                               /*Fail if the next node is removed concurrently and its CAS wins */
+                               if (InterlockedCompareExchangePointer ((volatile gpointer*)&frag->next, mask (next, 1), next) != next) {
+                                       continue;
+                               }
+                       }
+
+                       /* The second CAS must happen after the first CAS or frag->next. */
+                       mono_memory_write_barrier ();
+
+                       /* Fail if the previous node was deleted and its CAS wins */
+                       if (InterlockedCompareExchangePointer ((volatile gpointer*)prev_ptr, unmask (next), frag) != frag) {
+                               prev_ptr = find_previous_pointer_fragment (allocator, frag);
+                               continue;
+                       }
+                       break;
+               }
+       }
+
+       return p;
+}
+
+static void*
+serial_alloc_from_fragment (SgenFragment **previous, SgenFragment *frag, size_t size)
+{
+       char *p = frag->fragment_next;
+       char *end = p + size;
+
+       if (end > frag->fragment_end)
+               return NULL;
+
+       frag->fragment_next = end;
+
+       if (frag->fragment_end - end < SGEN_MAX_NURSERY_WASTE) {
+               *previous = frag->next;
+               
+               /* Clear the remaining space, pinning depends on this. FIXME move this to use phony arrays */
+               memset (end, 0, frag->fragment_end - end);
+
+               *previous = frag->next;
+       }
+
+       return p;
+}
+
+void*
+sgen_fragment_allocator_par_alloc (SgenFragmentAllocator *allocator, size_t size)
+{
+       SgenFragment *frag;
+
+#ifdef NALLOC_DEBUG
+       InterlockedIncrement (&alloc_count);
+#endif
+
+restart:
+       for (frag = unmask (allocator->alloc_head); unmask (frag); frag = unmask (frag->next)) {
+               HEAVY_STAT (InterlockedIncrement (&stat_alloc_iterations));
+
+               if (size <= (size_t)(frag->fragment_end - frag->fragment_next)) {
+                       void *p = par_alloc_from_fragment (allocator, frag, size);
+                       if (!p) {
+                               HEAVY_STAT (InterlockedIncrement (&stat_alloc_retries));
+                               goto restart;
+                       }
+#ifdef NALLOC_DEBUG
+                       add_alloc_record (p, size, FIXED_ALLOC);
+#endif
+                       return p;
+               }
+       }
+       return NULL;
+}
+
+void*
+sgen_fragment_allocator_serial_alloc (SgenFragmentAllocator *allocator, size_t size)
+{
+       SgenFragment *frag;
+       SgenFragment **previous;
+#ifdef NALLOC_DEBUG
+       InterlockedIncrement (&alloc_count);
+#endif
+
+       previous = &allocator->alloc_head;
+
+       for (frag = *previous; frag; frag = *previous) {
+               char *p = serial_alloc_from_fragment (previous, frag, size);
+
+               HEAVY_STAT (InterlockedIncrement (&stat_alloc_iterations));
+
+               if (p) {
+#ifdef NALLOC_DEBUG
+                       add_alloc_record (p, size, FIXED_ALLOC);
+#endif
+                       return p;
+               }
+               previous = &frag->next;
+       }
+       return NULL;
+}
+
+void*
+sgen_fragment_allocator_serial_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size)
+{
+       SgenFragment *frag, **previous, *min_frag = NULL, **prev_min_frag = NULL;
+       size_t current_minimum = minimum_size;
+
+#ifdef NALLOC_DEBUG
+       InterlockedIncrement (&alloc_count);
+#endif
+
+       previous = &allocator->alloc_head;
+
+       for (frag = *previous; frag; frag = *previous) {
+               size_t frag_size = frag->fragment_end - frag->fragment_next;
+
+               HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_iterations));
+
+               if (desired_size <= frag_size) {
+                       void *p;
+                       *out_alloc_size = desired_size;
+
+                       p = serial_alloc_from_fragment (previous, frag, desired_size);
+#ifdef NALLOC_DEBUG
+                       add_alloc_record (p, desired_size, RANGE_ALLOC);
+#endif
+                       return p;
+               }
+               if (current_minimum <= frag_size) {
+                       min_frag = frag;
+                       prev_min_frag = previous;
+                       current_minimum = frag_size;
+               }
+               previous = &frag->next;
+       }
+
+       if (min_frag) {
+               void *p;
+               size_t frag_size = min_frag->fragment_end - min_frag->fragment_next;
+               *out_alloc_size = frag_size;
+
+               p = serial_alloc_from_fragment (prev_min_frag, min_frag, frag_size);
+
+#ifdef NALLOC_DEBUG
+               add_alloc_record (p, frag_size, RANGE_ALLOC);
+#endif
+               return p;
+       }
+
+       return NULL;
+}
+
+void*
+sgen_fragment_allocator_par_range_alloc (SgenFragmentAllocator *allocator, size_t desired_size, size_t minimum_size, size_t *out_alloc_size)
+{
+       SgenFragment *frag, *min_frag;
+       size_t current_minimum;
+
+restart:
+       min_frag = NULL;
+       current_minimum = minimum_size;
+
+#ifdef NALLOC_DEBUG
+       InterlockedIncrement (&alloc_count);
+#endif
+
+       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+               size_t frag_size = frag->fragment_end - frag->fragment_next;
+
+               HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_iterations));
+
+               if (desired_size <= frag_size) {
+                       void *p;
+                       *out_alloc_size = desired_size;
+
+                       p = par_alloc_from_fragment (allocator, frag, desired_size);
+                       if (!p) {
+                               HEAVY_STAT (InterlockedIncrement (&stat_alloc_range_retries));
+                               goto restart;
+                       }
+#ifdef NALLOC_DEBUG
+                       add_alloc_record (p, desired_size, RANGE_ALLOC);
+#endif
+                       return p;
+               }
+               if (current_minimum <= frag_size) {
+                       min_frag = frag;
+                       current_minimum = frag_size;
+               }
+       }
+
+       /* The second fragment_next read should be ordered in respect to the first code block */
+       mono_memory_barrier ();
+
+       if (min_frag) {
+               void *p;
+               size_t frag_size;
+
+               frag_size = min_frag->fragment_end - min_frag->fragment_next;
+               if (frag_size < minimum_size)
+                       goto restart;
+
+               *out_alloc_size = frag_size;
+
+               mono_memory_barrier ();
+               p = par_alloc_from_fragment (allocator, min_frag, frag_size);
+
+               /*XXX restarting here is quite dubious given this is already second chance allocation. */
+               if (!p) {
+                       HEAVY_STAT (InterlockedIncrement (&stat_alloc_retries));
+                       goto restart;
+               }
+#ifdef NALLOC_DEBUG
+               add_alloc_record (p, frag_size, RANGE_ALLOC);
+#endif
+               return p;
+       }
+
+       return NULL;
+}
+
+void
+sgen_clear_allocator_fragments (SgenFragmentAllocator *allocator)
+{
+       SgenFragment *frag;
+
+       for (frag = unmask (allocator->alloc_head); frag; frag = unmask (frag->next)) {
+               SGEN_LOG (4, "Clear nursery frag %p-%p", frag->fragment_next, frag->fragment_end);
+               sgen_clear_range (frag->fragment_next, frag->fragment_end);
+#ifdef NALLOC_DEBUG
+               add_alloc_record (frag->fragment_next, frag->fragment_end - frag->fragment_next, CLEAR_NURSERY_FRAGS);
+#endif
+       }       
+}
+
+/* Clear all remaining nursery fragments */
+void
+sgen_clear_nursery_fragments (void)
+{
+       if (sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION || sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION_DEBUG) {
+               sgen_clear_allocator_fragments (&mutator_allocator);
+               sgen_minor_collector.clear_fragments ();
+       }
+}
+
+/*
+ * Mark a given range of memory as invalid.
+ *
+ * This can be done either by zeroing memory or by placing
+ * a phony byte[] array. This keeps the heap forward walkable.
+ *
+ * This function ignores calls with a zero range, even if
+ * both start and end are NULL.
+ */
+void
+sgen_clear_range (char *start, char *end)
+{
+       size_t size = end - start;
+
+       if ((start && !end) || (start > end))
+               g_error ("Invalid range [%p %p]", start, end);
+
+       if (sgen_client_array_fill_range (start, size)) {
+               sgen_set_nursery_scan_start (start);
+               SGEN_ASSERT (0, start + sgen_safe_object_get_size ((GCObject*)start) == end, "Array fill produced wrong size");
+       }
+}
+
+void
+sgen_nursery_allocator_prepare_for_pinning (void)
+{
+       sgen_clear_allocator_fragments (&mutator_allocator);
+       sgen_minor_collector.clear_fragments ();
+}
+
+static mword fragment_total = 0;
+/*
+ * We found a fragment of free memory in the nursery: memzero it and if
+ * it is big enough, add it to the list of fragments that can be used for
+ * allocation.
+ */
+static void
+add_nursery_frag (SgenFragmentAllocator *allocator, size_t frag_size, char* frag_start, char* frag_end)
+{
+       SGEN_LOG (4, "Found empty fragment: %p-%p, size: %zd", frag_start, frag_end, frag_size);
+       binary_protocol_empty (frag_start, frag_size);
+       /* Not worth dealing with smaller fragments: need to tune */
+       if (frag_size >= SGEN_MAX_NURSERY_WASTE) {
+               /* memsetting just the first chunk start is bound to provide better cache locality */
+               if (sgen_get_nursery_clear_policy () == CLEAR_AT_GC)
+                       memset (frag_start, 0, frag_size);
+               else if (sgen_get_nursery_clear_policy () == CLEAR_AT_TLAB_CREATION_DEBUG)
+                       memset (frag_start, 0xff, frag_size);
+
+#ifdef NALLOC_DEBUG
+               /* XXX convert this into a flight record entry
+               printf ("\tfragment [%p %p] size %zd\n", frag_start, frag_end, frag_size);
+               */
+#endif
+               sgen_fragment_allocator_add (allocator, frag_start, frag_end);
+               fragment_total += frag_size;
+       } else {
+               /* Clear unused fragments, pinning depends on this */
+               sgen_clear_range (frag_start, frag_end);
+               HEAVY_STAT (InterlockedExchangeAdd (&stat_wasted_bytes_small_areas, frag_size));
+       }
+}
+
+static void
+fragment_list_reverse (SgenFragmentAllocator *allocator)
+{
+       SgenFragment *prev = NULL, *list = allocator->region_head;
+       while (list) {
+               SgenFragment *next = list->next;
+               list->next = prev;
+               list->next_in_order = prev;
+               prev = list;
+               list = next;
+       }
+
+       allocator->region_head = allocator->alloc_head = prev;
+}
+
+mword
+sgen_build_nursery_fragments (GCMemSection *nursery_section, SgenGrayQueue *unpin_queue)
+{
+       char *frag_start, *frag_end;
+       size_t frag_size;
+       SgenFragment *frags_ranges;
+       void **pin_start, **pin_entry, **pin_end;
+
+#ifdef NALLOC_DEBUG
+       reset_alloc_records ();
+#endif
+       /*The mutator fragments are done. We no longer need them. */
+       sgen_fragment_allocator_release (&mutator_allocator);
+
+       frag_start = sgen_nursery_start;
+       fragment_total = 0;
+
+       /* The current nursery might give us a fragment list to exclude [start, next[*/
+       frags_ranges = sgen_minor_collector.build_fragments_get_exclude_head ();
+
+       /* clear scan starts */
+       memset (nursery_section->scan_starts, 0, nursery_section->num_scan_start * sizeof (gpointer));
+
+       pin_start = pin_entry = sgen_pinning_get_entry (nursery_section->pin_queue_first_entry);
+       pin_end = sgen_pinning_get_entry (nursery_section->pin_queue_last_entry);
+
+       while (pin_entry < pin_end || frags_ranges) {
+               char *addr0, *addr1;
+               size_t size;
+
+               addr0 = addr1 = sgen_nursery_end;
+               if (pin_entry < pin_end)
+                       addr0 = *pin_entry;
+               if (frags_ranges)
+                       addr1 = frags_ranges->fragment_start;
+
+               if (addr0 < addr1) {
+                       if (unpin_queue)
+                               GRAY_OBJECT_ENQUEUE (unpin_queue, addr0, sgen_obj_get_descriptor_safe (addr0));
+                       else
+                               SGEN_UNPIN_OBJECT (addr0);
+                       size = SGEN_ALIGN_UP (sgen_safe_object_get_size ((GCObject*)addr0));
+                       CANARIFY_SIZE (size);
+                       sgen_set_nursery_scan_start (addr0);
+                       frag_end = addr0;
+                       ++pin_entry;
+               } else {
+                       frag_end = addr1;
+                       size = frags_ranges->fragment_next - addr1;
+                       frags_ranges = frags_ranges->next_in_order;
+               }
+
+               frag_size = frag_end - frag_start;
+
+               if (size == 0)
+                       continue;
+
+               g_assert (frag_size >= 0);
+               g_assert (size > 0);
+               if (frag_size && size)
+                       add_nursery_frag (&mutator_allocator, frag_size, frag_start, frag_end); 
+
+               frag_size = size;
+#ifdef NALLOC_DEBUG
+               add_alloc_record (*pin_entry, frag_size, PINNING);
+#endif
+               frag_start = frag_end + frag_size;
+       }
+
+       nursery_last_pinned_end = frag_start;
+       frag_end = sgen_nursery_end;
+       frag_size = frag_end - frag_start;
+       if (frag_size)
+               add_nursery_frag (&mutator_allocator, frag_size, frag_start, frag_end);
+
+       /* Now it's safe to release the fragments exclude list. */
+       sgen_minor_collector.build_fragments_release_exclude_head ();
+
+       /* First we reorder the fragment list to be in ascending address order. This makes H/W prefetchers happier. */
+       fragment_list_reverse (&mutator_allocator);
+
+       /*The collector might want to do something with the final nursery fragment list.*/
+       sgen_minor_collector.build_fragments_finish (&mutator_allocator);
+
+       if (!unmask (mutator_allocator.alloc_head)) {
+               SGEN_LOG (1, "Nursery fully pinned");
+               for (pin_entry = pin_start; pin_entry < pin_end; ++pin_entry) {
+                       void *p = *pin_entry;
+                       SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", p, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (p)), sgen_safe_object_get_size (p));
+               }
+       }
+       return fragment_total;
+}
+
+char *
+sgen_nursery_alloc_get_upper_alloc_bound (void)
+{
+       /*FIXME we need to calculate the collector upper bound as well, but this must be done in the previous GC. */
+       return sgen_nursery_end;
+}
+
+/*** Nursery memory allocation ***/
+void
+sgen_nursery_retire_region (void *address, ptrdiff_t size)
+{
+       HEAVY_STAT (InterlockedExchangeAdd (&stat_wasted_bytes_discarded_fragments, size));
+}
+
+gboolean
+sgen_can_alloc_size (size_t size)
+{
+       SgenFragment *frag;
+
+       if (!SGEN_CAN_ALIGN_UP (size))
+               return FALSE;
+
+       size = SGEN_ALIGN_UP (size);
+
+       for (frag = unmask (mutator_allocator.alloc_head); frag; frag = unmask (frag->next)) {
+               if ((size_t)(frag->fragment_end - frag->fragment_next) >= size)
+                       return TRUE;
+       }
+       return FALSE;
+}
+
+void*
+sgen_nursery_alloc (size_t size)
+{
+       SGEN_ASSERT (1, size >= (SGEN_CLIENT_MINIMUM_OBJECT_SIZE + CANARY_SIZE) && size <= (SGEN_MAX_SMALL_OBJ_SIZE + CANARY_SIZE), "Invalid nursery object size");
+
+       SGEN_LOG (4, "Searching nursery for size: %zd", size);
+       size = SGEN_ALIGN_UP (size);
+
+       HEAVY_STAT (InterlockedIncrement (&stat_nursery_alloc_requests));
+
+       return sgen_fragment_allocator_par_alloc (&mutator_allocator, size);
+}
+
+void*
+sgen_nursery_alloc_range (size_t desired_size, size_t minimum_size, size_t *out_alloc_size)
+{
+       SGEN_LOG (4, "Searching for byte range desired size: %zd minimum size %zd", desired_size, minimum_size);
+
+       HEAVY_STAT (InterlockedIncrement (&stat_nursery_alloc_range_requests));
+
+       return sgen_fragment_allocator_par_range_alloc (&mutator_allocator, desired_size, minimum_size, out_alloc_size);
+}
+
+/*** Initialization ***/
+
+#ifdef HEAVY_STATISTICS
+
+void
+sgen_nursery_allocator_init_heavy_stats (void)
+{
+       mono_counters_register ("bytes wasted trailer fragments", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES, &stat_wasted_bytes_trailer);
+       mono_counters_register ("bytes wasted small areas", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES, &stat_wasted_bytes_small_areas);
+       mono_counters_register ("bytes wasted discarded fragments", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES, &stat_wasted_bytes_discarded_fragments);
+
+       mono_counters_register ("# nursery alloc requests", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_alloc_requests);
+       mono_counters_register ("# nursery alloc iterations", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_alloc_iterations);
+       mono_counters_register ("# nursery alloc retries", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_alloc_retries);
+
+       mono_counters_register ("# nursery alloc range requests", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_nursery_alloc_range_requests);
+       mono_counters_register ("# nursery alloc range iterations", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_alloc_range_iterations);
+       mono_counters_register ("# nursery alloc range restries", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_alloc_range_retries);
+}
+
+#endif
+
+void
+sgen_init_nursery_allocator (void)
+{
+       sgen_register_fixed_internal_mem_type (INTERNAL_MEM_FRAGMENT, sizeof (SgenFragment));
+#ifdef NALLOC_DEBUG
+       alloc_records = sgen_alloc_os_memory (sizeof (AllocRecord) * ALLOC_RECORD_COUNT, SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging memory");
+#endif
+}
+
+void
+sgen_nursery_alloc_prepare_for_minor (void)
+{
+       sgen_minor_collector.prepare_to_space (sgen_space_bitmap, sgen_space_bitmap_size);
+}
+
+void
+sgen_nursery_alloc_prepare_for_major (void)
+{
+       sgen_minor_collector.prepare_to_space (sgen_space_bitmap, sgen_space_bitmap_size);
+}
+
+void
+sgen_nursery_allocator_set_nursery_bounds (char *start, char *end)
+{
+       sgen_nursery_start = start;
+       sgen_nursery_end = end;
+
+       /*
+        * This will not divide evenly for tiny nurseries (<4kb), so we make sure to be on
+        * the right side of things and round up.  We could just do a MIN(1,x) instead,
+        * since the nursery size must be a power of 2.
+        */
+       sgen_space_bitmap_size = (end - start + SGEN_TO_SPACE_GRANULE_IN_BYTES * 8 - 1) / (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8);
+       sgen_space_bitmap = g_malloc0 (sgen_space_bitmap_size);
+
+       /* Setup the single first large fragment */
+       sgen_minor_collector.init_nursery (&mutator_allocator, start, end);
+}
+
+#endif
diff --git a/mono/sgen/sgen-pinning-stats.c b/mono/sgen/sgen-pinning-stats.c
new file mode 100644 (file)
index 0000000..3137283
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-pinning.h"
+#include "mono/sgen/sgen-hash-table.h"
+#include "mono/sgen/sgen-client.h"
+
+typedef struct _PinStatAddress PinStatAddress;
+struct _PinStatAddress {
+       char *addr;
+       int pin_types;
+       PinStatAddress *left;
+       PinStatAddress *right;
+};
+
+typedef struct {
+       size_t num_pins [PIN_TYPE_MAX];
+} PinnedClassEntry;
+
+typedef struct {
+       gulong num_remsets;
+} GlobalRemsetClassEntry;
+
+static gboolean do_pin_stats = FALSE;
+
+static PinStatAddress *pin_stat_addresses = NULL;
+static size_t pinned_byte_counts [PIN_TYPE_MAX];
+
+static SgenPointerQueue pinned_objects = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_STATISTICS);
+
+static SgenHashTable pinned_class_hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_STATISTICS, INTERNAL_MEM_STAT_PINNED_CLASS, sizeof (PinnedClassEntry), g_str_hash, g_str_equal);
+static SgenHashTable global_remset_class_hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_STATISTICS, INTERNAL_MEM_STAT_REMSET_CLASS, sizeof (GlobalRemsetClassEntry), g_str_hash, g_str_equal);
+
+void
+sgen_pin_stats_enable (void)
+{
+       do_pin_stats = TRUE;
+}
+
+static void
+pin_stats_tree_free (PinStatAddress *node)
+{
+       if (!node)
+               return;
+       pin_stats_tree_free (node->left);
+       pin_stats_tree_free (node->right);
+       sgen_free_internal_dynamic (node, sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS);
+}
+
+void
+sgen_pin_stats_reset (void)
+{
+       int i;
+       pin_stats_tree_free (pin_stat_addresses);
+       pin_stat_addresses = NULL;
+       for (i = 0; i < PIN_TYPE_MAX; ++i)
+               pinned_byte_counts [i] = 0;
+       sgen_pointer_queue_clear (&pinned_objects);
+}
+
+void
+sgen_pin_stats_register_address (char *addr, int pin_type)
+{
+       PinStatAddress **node_ptr = &pin_stat_addresses;
+       PinStatAddress *node;
+       int pin_type_bit = 1 << pin_type;
+
+       while (*node_ptr) {
+               node = *node_ptr;
+               if (addr == node->addr) {
+                       node->pin_types |= pin_type_bit;
+                       return;
+               }
+               if (addr < node->addr)
+                       node_ptr = &node->left;
+               else
+                       node_ptr = &node->right;
+       }
+
+       node = sgen_alloc_internal_dynamic (sizeof (PinStatAddress), INTERNAL_MEM_STATISTICS, TRUE);
+       node->addr = addr;
+       node->pin_types = pin_type_bit;
+       node->left = node->right = NULL;
+
+       *node_ptr = node;
+}
+
+static void
+pin_stats_count_object_from_tree (char *obj, size_t size, PinStatAddress *node, int *pin_types)
+{
+       if (!node)
+               return;
+       if (node->addr >= obj && node->addr < obj + size) {
+               int i;
+               for (i = 0; i < PIN_TYPE_MAX; ++i) {
+                       int pin_bit = 1 << i;
+                       if (!(*pin_types & pin_bit) && (node->pin_types & pin_bit)) {
+                               pinned_byte_counts [i] += size;
+                               *pin_types |= pin_bit;
+                       }
+               }
+       }
+       if (obj < node->addr)
+               pin_stats_count_object_from_tree (obj, size, node->left, pin_types);
+       if (obj + size - 1 > node->addr)
+               pin_stats_count_object_from_tree (obj, size, node->right, pin_types);
+}
+
+static gpointer
+lookup_vtable_entry (SgenHashTable *hash_table, GCVTable *vtable, gpointer empty_entry)
+{
+       char *name = g_strdup_printf ("%s.%s", sgen_client_vtable_get_namespace (vtable), sgen_client_vtable_get_name (vtable));
+       gpointer entry = sgen_hash_table_lookup (hash_table, name);
+
+       if (entry) {
+               g_free (name);
+       } else {
+               sgen_hash_table_replace (hash_table, name, empty_entry, NULL);
+               entry = sgen_hash_table_lookup (hash_table, name);
+       }
+
+       return entry;
+}
+
+static void
+register_vtable (GCVTable *vtable, int pin_types)
+{
+       PinnedClassEntry empty_entry;
+       PinnedClassEntry *entry;
+       int i;
+
+       memset (&empty_entry, 0, sizeof (PinnedClassEntry));
+       entry = lookup_vtable_entry (&pinned_class_hash_table, vtable, &empty_entry);
+
+       for (i = 0; i < PIN_TYPE_MAX; ++i) {
+               if (pin_types & (1 << i))
+                       ++entry->num_pins [i];
+       }
+}
+
+void
+sgen_pin_stats_register_object (char *obj, size_t size)
+{
+       int pin_types = 0;
+
+       if (!do_pin_stats)
+               return;
+
+       pin_stats_count_object_from_tree (obj, size, pin_stat_addresses, &pin_types);
+       sgen_pointer_queue_add (&pinned_objects, obj);
+
+       if (pin_types)
+               register_vtable ((GCVTable*)SGEN_LOAD_VTABLE (obj), pin_types);
+}
+
+void
+sgen_pin_stats_register_global_remset (char *obj)
+{
+       GlobalRemsetClassEntry empty_entry;
+       GlobalRemsetClassEntry *entry;
+
+       if (!do_pin_stats)
+               return;
+
+       memset (&empty_entry, 0, sizeof (GlobalRemsetClassEntry));
+       entry = lookup_vtable_entry (&global_remset_class_hash_table, (GCVTable*)SGEN_LOAD_VTABLE (obj), &empty_entry);
+
+       ++entry->num_remsets;
+}
+
+void
+sgen_pin_stats_print_class_stats (void)
+{
+       char *name;
+       PinnedClassEntry *pinned_entry;
+       GlobalRemsetClassEntry *remset_entry;
+
+       if (!do_pin_stats)
+               return;
+
+       g_print ("\n%-50s  %10s  %10s  %10s\n", "Class", "Stack", "Static", "Other");
+       SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, name, pinned_entry) {
+               int i;
+               g_print ("%-50s", name);
+               for (i = 0; i < PIN_TYPE_MAX; ++i)
+                       g_print ("  %10ld", pinned_entry->num_pins [i]);
+               g_print ("\n");
+       } SGEN_HASH_TABLE_FOREACH_END;
+
+       g_print ("\n%-50s  %10s\n", "Class", "#Remsets");
+       SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, name, remset_entry) {
+               g_print ("%-50s  %10ld\n", name, remset_entry->num_remsets);
+       } SGEN_HASH_TABLE_FOREACH_END;
+}
+
+size_t
+sgen_pin_stats_get_pinned_byte_count (int pin_type)
+{
+       return pinned_byte_counts [pin_type];
+}
+
+SgenPointerQueue*
+sgen_pin_stats_get_object_list (void)
+{
+       return &pinned_objects;
+}
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/sgen/sgen-pinning.c b/mono/sgen/sgen-pinning.c
new file mode 100644 (file)
index 0000000..6d122f8
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+ * sgen-pinning.c: The pin queue.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-pinning.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-pointer-queue.h"
+#include "mono/sgen/sgen-client.h"
+
+static SgenPointerQueue pin_queue;
+static size_t last_num_pinned = 0;
+
+#define PIN_HASH_SIZE 1024
+static void *pin_hash_filter [PIN_HASH_SIZE];
+
+void
+sgen_init_pinning (void)
+{
+       memset (pin_hash_filter, 0, sizeof (pin_hash_filter));
+       pin_queue.mem_type = INTERNAL_MEM_PIN_QUEUE;
+}
+
+void
+sgen_finish_pinning (void)
+{
+       last_num_pinned = pin_queue.next_slot;
+       sgen_pointer_queue_clear (&pin_queue);
+}
+
+void
+sgen_pin_stage_ptr (void *ptr)
+{
+       /*very simple multiplicative hash function, tons better than simple and'ng */ 
+       int hash_idx = ((mword)ptr * 1737350767) & (PIN_HASH_SIZE - 1);
+       if (pin_hash_filter [hash_idx] == ptr)
+               return;
+
+       pin_hash_filter [hash_idx] = ptr;
+
+       sgen_pointer_queue_add (&pin_queue, ptr);
+}
+
+gboolean
+sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *first_out, size_t *last_out)
+{
+       size_t first = sgen_pointer_queue_search (&pin_queue, start);
+       size_t last = sgen_pointer_queue_search (&pin_queue, end);
+       SGEN_ASSERT (0, last == pin_queue.next_slot || pin_queue.data [last] >= end, "Pin queue search gone awry");
+       *first_out = first;
+       *last_out = last;
+       return first != last;
+}
+
+void**
+sgen_pinning_get_entry (size_t index)
+{
+       SGEN_ASSERT (0, index <= pin_queue.next_slot, "Pin queue entry out of range");
+       return &pin_queue.data [index];
+}
+
+void
+sgen_find_section_pin_queue_start_end (GCMemSection *section)
+{
+       SGEN_LOG (6, "Pinning from section %p (%p-%p)", section, section->data, section->end_data);
+
+       sgen_find_optimized_pin_queue_area (section->data, section->end_data,
+                       &section->pin_queue_first_entry, &section->pin_queue_last_entry);
+
+       SGEN_LOG (6, "Found %zd pinning addresses in section %p",
+                       section->pin_queue_last_entry - section->pin_queue_first_entry, section);
+}
+
+/*This will setup the given section for the while pin queue. */
+void
+sgen_pinning_setup_section (GCMemSection *section)
+{
+       section->pin_queue_first_entry = 0;
+       section->pin_queue_last_entry = pin_queue.next_slot;
+}
+
+void
+sgen_pinning_trim_queue_to_section (GCMemSection *section)
+{
+       SGEN_ASSERT (0, section->pin_queue_first_entry == 0, "Pin queue trimming assumes the whole pin queue is used by the nursery");
+       pin_queue.next_slot = section->pin_queue_last_entry;
+}
+
+/*
+ * This is called when we've run out of memory during a major collection.
+ *
+ * After collecting potential pin entries and sorting the array, this is what it looks like:
+ *
+ * +--------------------+---------------------------------------------+--------------------+
+ * | major heap entries |               nursery entries               | major heap entries |
+ * +--------------------+---------------------------------------------+--------------------+
+ *
+ * Of course there might not be major heap entries before and/or after the nursery entries,
+ * depending on where the major heap sections are in the address space, and whether there
+ * were any potential pointers there.
+ *
+ * When we pin nursery objects, we compact the nursery part of the pin array, which leaves
+ * discarded entries after the ones that actually pointed to nursery objects:
+ *
+ * +--------------------+-----------------+---------------------------+--------------------+
+ * | major heap entries | nursery entries | discarded nursery entries | major heap entries |
+ * +--------------------+-----------------+---------------------------+--------------------+
+ *
+ * When, due to being out of memory, we late pin more objects, the pin array looks like
+ * this:
+ *
+ * +--------------------+-----------------+---------------------------+--------------------+--------------+
+ * | major heap entries | nursery entries | discarded nursery entries | major heap entries | late entries |
+ * +--------------------+-----------------+---------------------------+--------------------+--------------+
+ *
+ * This function gets rid of the discarded nursery entries by nulling them out.  Note that
+ * we can late pin objects not only in the nursery but also in the major heap, which happens
+ * when evacuation fails.
+ */
+void
+sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot)
+{
+       void **start = sgen_pinning_get_entry (section->pin_queue_last_entry);
+       void **end = sgen_pinning_get_entry (max_pin_slot);
+       void *addr;
+
+       for (; start < end; ++start) {
+               addr = *start;
+               if ((char*)addr < section->data || (char*)addr > section->end_data)
+                       break;
+               *start = NULL;
+       }
+}
+
+/* reduce the info in the pin queue, removing duplicate pointers and sorting them */
+void
+sgen_optimize_pin_queue (void)
+{
+       sgen_pointer_queue_sort_uniq (&pin_queue);
+}
+
+size_t
+sgen_get_pinned_count (void)
+{
+       return pin_queue.next_slot;
+}
+
+void
+sgen_dump_pin_queue (void)
+{
+       int i;
+
+       for (i = 0; i < last_num_pinned; ++i) {
+               void *ptr = pin_queue.data [i];
+               SGEN_LOG (3, "Bastard pinning obj %p (%s), size: %zd", ptr, sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (ptr)), sgen_safe_object_get_size (ptr));
+       }
+}
+
+typedef struct _CementHashEntry CementHashEntry;
+struct _CementHashEntry {
+       char *obj;
+       unsigned int count;
+};
+
+static CementHashEntry cement_hash [SGEN_CEMENT_HASH_SIZE];
+
+static gboolean cement_enabled = TRUE;
+
+void
+sgen_cement_init (gboolean enabled)
+{
+       cement_enabled = enabled;
+}
+
+void
+sgen_cement_reset (void)
+{
+       memset (cement_hash, 0, sizeof (cement_hash));
+       binary_protocol_cement_reset ();
+}
+
+gboolean
+sgen_cement_lookup (char *obj)
+{
+       guint hv = sgen_aligned_addr_hash (obj);
+       int i = SGEN_CEMENT_HASH (hv);
+
+       SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Looking up cementing for non-nursery objects makes no sense");
+
+       if (!cement_enabled)
+               return FALSE;
+
+       if (!cement_hash [i].obj)
+               return FALSE;
+       if (cement_hash [i].obj != obj)
+               return FALSE;
+
+       return cement_hash [i].count >= SGEN_CEMENT_THRESHOLD;
+}
+
+gboolean
+sgen_cement_lookup_or_register (char *obj)
+{
+       guint hv;
+       int i;
+       CementHashEntry *hash = cement_hash;
+
+       if (!cement_enabled)
+               return FALSE;
+
+       hv = sgen_aligned_addr_hash (obj);
+       i = SGEN_CEMENT_HASH (hv);
+
+       SGEN_ASSERT (5, sgen_ptr_in_nursery (obj), "Can only cement pointers to nursery objects");
+
+       if (!hash [i].obj) {
+               SGEN_ASSERT (5, !hash [i].count, "Cementing hash inconsistent");
+               hash [i].obj = obj;
+       } else if (hash [i].obj != obj) {
+               return FALSE;
+       }
+
+       if (hash [i].count >= SGEN_CEMENT_THRESHOLD)
+               return TRUE;
+
+       ++hash [i].count;
+       if (hash [i].count == SGEN_CEMENT_THRESHOLD) {
+               SGEN_ASSERT (9, sgen_get_current_collection_generation () >= 0, "We can only cement objects when we're in a collection pause.");
+               SGEN_ASSERT (9, SGEN_OBJECT_IS_PINNED (obj), "Can only cement pinned objects");
+               SGEN_CEMENT_OBJECT (obj);
+
+               binary_protocol_cement (obj, (gpointer)SGEN_LOAD_VTABLE (obj),
+                               (int)sgen_safe_object_get_size ((GCObject*)obj));
+       }
+
+       return FALSE;
+}
+
+static void
+pin_from_hash (CementHashEntry *hash, gboolean has_been_reset)
+{
+       int i;
+       for (i = 0; i < SGEN_CEMENT_HASH_SIZE; ++i) {
+               if (!hash [i].count)
+                       continue;
+
+               if (has_been_reset)
+                       SGEN_ASSERT (5, hash [i].count >= SGEN_CEMENT_THRESHOLD, "Cementing hash inconsistent");
+
+               sgen_pin_stage_ptr (hash [i].obj);
+               binary_protocol_cement_stage (hash [i].obj);
+               /* FIXME: do pin stats if enabled */
+
+               SGEN_CEMENT_OBJECT (hash [i].obj);
+       }
+}
+
+void
+sgen_pin_cemented_objects (void)
+{
+       pin_from_hash (cement_hash, TRUE);
+}
+
+void
+sgen_cement_clear_below_threshold (void)
+{
+       int i;
+       for (i = 0; i < SGEN_CEMENT_HASH_SIZE; ++i) {
+               if (cement_hash [i].count < SGEN_CEMENT_THRESHOLD) {
+                       cement_hash [i].obj = NULL;
+                       cement_hash [i].count = 0;
+               }
+       }
+}
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/sgen/sgen-pinning.h b/mono/sgen/sgen-pinning.h
new file mode 100644 (file)
index 0000000..dd8051f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * sgen-pinning.h: All about pinning objects.
+ *
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGEN_PINNING_H__
+#define __MONO_SGEN_PINNING_H__
+
+#include "mono/sgen/sgen-pointer-queue.h"
+
+enum {
+       PIN_TYPE_STACK,
+       PIN_TYPE_STATIC_DATA,
+       PIN_TYPE_OTHER,
+       PIN_TYPE_MAX
+};
+
+void sgen_pin_stage_ptr (void *ptr);
+void sgen_optimize_pin_queue (void);
+void sgen_init_pinning (void);
+void sgen_finish_pinning (void);
+void sgen_pin_queue_clear_discarded_entries (GCMemSection *section, size_t max_pin_slot);
+size_t sgen_get_pinned_count (void);
+void sgen_pinning_setup_section (GCMemSection *section);
+void sgen_pinning_trim_queue_to_section (GCMemSection *section);
+
+void sgen_dump_pin_queue (void);
+
+gboolean sgen_find_optimized_pin_queue_area (void *start, void *end, size_t *first_out, size_t *last_out);
+void sgen_find_section_pin_queue_start_end (GCMemSection *section);
+void** sgen_pinning_get_entry (size_t index);
+void sgen_pin_objects_in_section (GCMemSection *section, ScanCopyContext ctx);
+
+/* Pinning stats */
+
+void sgen_pin_stats_register_address (char *addr, int pin_type);
+size_t sgen_pin_stats_get_pinned_byte_count (int pin_type);
+SgenPointerQueue *sgen_pin_stats_get_object_list (void);
+void sgen_pin_stats_reset (void);
+
+/* Perpetual pinning, aka cementing */
+
+void sgen_cement_init (gboolean enabled);
+void sgen_cement_reset (void);
+gboolean sgen_cement_lookup (char *obj);
+gboolean sgen_cement_lookup_or_register (char *obj);
+void sgen_pin_cemented_objects (void);
+void sgen_cement_clear_below_threshold (void);
+
+#endif
diff --git a/mono/sgen/sgen-pointer-queue.c b/mono/sgen/sgen-pointer-queue.c
new file mode 100644 (file)
index 0000000..0e3fea6
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ * sgen-pointer-queue.c: A pointer queue that can be sorted.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-pointer-queue.h"
+
+void
+sgen_pointer_queue_clear (SgenPointerQueue *queue)
+{
+       queue->next_slot = 0;
+}
+
+void
+sgen_pointer_queue_init (SgenPointerQueue *queue, int mem_type)
+{
+       queue->next_slot = 0;
+       queue->size = 0;
+       queue->data = NULL;
+       queue->mem_type = mem_type;
+}
+
+static void
+realloc_queue (SgenPointerQueue *queue)
+{
+       size_t new_size = queue->size ? queue->size + queue->size/2 : 1024;
+       void **new_data = sgen_alloc_internal_dynamic (sizeof (void*) * new_size, queue->mem_type, TRUE);
+
+       memcpy (new_data, queue->data, sizeof (void*) * queue->next_slot);
+       sgen_free_internal_dynamic (queue->data, sizeof (void*) * queue->size, queue->mem_type);
+       queue->data = new_data;
+       queue->size = new_size;
+       SGEN_LOG (4, "Reallocated pointer queue to size: %lu", new_size);
+}
+
+gboolean
+sgen_pointer_queue_will_grow (SgenPointerQueue *queue)
+{
+       return queue->next_slot >= queue->size;
+}
+
+void
+sgen_pointer_queue_add (SgenPointerQueue *queue, void *ptr)
+{
+       if (sgen_pointer_queue_will_grow (queue))
+               realloc_queue (queue);
+
+       queue->data [queue->next_slot++] = ptr;
+}
+
+void*
+sgen_pointer_queue_pop (SgenPointerQueue *queue)
+{
+       g_assert (queue->next_slot);
+
+       return queue->data [--queue->next_slot];
+}
+
+size_t
+sgen_pointer_queue_search (SgenPointerQueue *queue, void *addr)
+{
+       size_t first = 0, last = queue->next_slot;
+       while (first < last) {
+               size_t middle = first + ((last - first) >> 1);
+               if (addr <= queue->data [middle])
+                       last = middle;
+               else
+                       first = middle + 1;
+       }
+       g_assert (first == last);
+       return first;
+}
+
+/*
+ * Removes all NULL pointers from the queue.
+ */
+void
+sgen_pointer_queue_remove_nulls (SgenPointerQueue *queue)
+{
+       void **start, **cur, **end;
+       start = cur = queue->data;
+       end = queue->data + queue->next_slot;
+       while (cur < end) {
+               if (*cur)
+                       *start++ = *cur++;
+               else
+                       ++cur;
+       }
+       queue->next_slot = start - queue->data;
+}
+
+/*
+ * Sorts the pointers in the queue, then removes duplicates.
+ */
+void
+sgen_pointer_queue_sort_uniq (SgenPointerQueue *queue)
+{
+       void **start, **cur, **end;
+       /* sort and uniq pin_queue: we just sort and we let the rest discard multiple values */
+       /* it may be better to keep ranges of pinned memory instead of individually pinning objects */
+       SGEN_LOG (5, "Sorting pointer queue, size: %lu", queue->next_slot);
+       if (queue->next_slot > 1)
+               sgen_sort_addresses (queue->data, queue->next_slot);
+       start = cur = queue->data;
+       end = queue->data + queue->next_slot;
+       while (cur < end) {
+               *start = *cur++;
+               while (cur < end && *start == *cur)
+                       cur++;
+               start++;
+       };
+       queue->next_slot = start - queue->data;
+       SGEN_LOG (5, "Pointer queue reduced to size: %lu", queue->next_slot);
+}
+
+/*
+ * Does a linear search through the pointer queue to find `ptr`.  Returns the index if
+ * found, otherwise (size_t)-1.
+ */
+size_t
+sgen_pointer_queue_find (SgenPointerQueue *queue, void *ptr)
+{
+       size_t i;
+       for (i = 0; i < queue->next_slot; ++i)
+               if (queue->data [i] == ptr)
+                       return i;
+       return (size_t)-1;
+}
+
+gboolean
+sgen_pointer_queue_is_empty (SgenPointerQueue *queue)
+{
+       return !queue->next_slot;
+}
+
+void
+sgen_pointer_queue_free (SgenPointerQueue *queue)
+{
+       sgen_free_internal_dynamic (queue->data, sizeof (void*) * queue->size, queue->mem_type);
+}
+
+#endif
diff --git a/mono/sgen/sgen-pointer-queue.h b/mono/sgen/sgen-pointer-queue.h
new file mode 100644 (file)
index 0000000..3352dab
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * sgen-pointer-queue.h: A pointer queue that can be sorted.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGEN_POINTER_QUEUE_H__
+#define __MONO_SGEN_POINTER_QUEUE_H__
+
+#include <glib.h>
+
+typedef struct {
+       void **data;
+       size_t size;
+       size_t next_slot;
+       int mem_type;
+} SgenPointerQueue;
+
+#define SGEN_POINTER_QUEUE_INIT(mem_type)      { NULL, 0, 0, (mem_type) }
+
+void sgen_pointer_queue_add (SgenPointerQueue *queue, void *ptr);
+void sgen_pointer_queue_clear (SgenPointerQueue *queue);
+void sgen_pointer_queue_remove_nulls (SgenPointerQueue *queue);
+void sgen_pointer_queue_sort_uniq (SgenPointerQueue *queue);
+size_t sgen_pointer_queue_search (SgenPointerQueue *queue, void *addr);
+size_t sgen_pointer_queue_find (SgenPointerQueue *queue, void *ptr);
+void sgen_pointer_queue_init (SgenPointerQueue *queue, int mem_type);
+void* sgen_pointer_queue_pop (SgenPointerQueue *queue);
+gboolean sgen_pointer_queue_is_empty (SgenPointerQueue *queue);
+void sgen_pointer_queue_free (SgenPointerQueue *queue);
+gboolean sgen_pointer_queue_will_grow (SgenPointerQueue *queue);
+
+#endif
diff --git a/mono/sgen/sgen-protocol-def.h b/mono/sgen/sgen-protocol-def.h
new file mode 100644 (file)
index 0000000..c546bac
--- /dev/null
@@ -0,0 +1,386 @@
+BEGIN_PROTOCOL_ENTRY3 (binary_protocol_collection_requested, TYPE_INT, generation, TYPE_SIZE, requested_size, TYPE_BOOL, force)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY2 (binary_protocol_collection_begin, TYPE_INT, index, TYPE_INT, generation)
+FLUSH ()
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY4 (binary_protocol_collection_end, TYPE_INT, index, TYPE_INT, generation, TYPE_LONGLONG, num_scanned_objects, TYPE_LONGLONG, num_unique_scanned_objects)
+FLUSH()
+CUSTOM_PRINT (printf ("%d generation %d scanned %lld unique %lld %0.2f%%", entry->index, entry->generation, entry->num_scanned_objects, entry->num_unique_scanned_objects, entry->num_unique_scanned_objects ? (100.0 * (double) entry->num_scanned_objects / (double) entry->num_unique_scanned_objects) : 0.0))
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_start)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_update)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_finish)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY2 (binary_protocol_sweep_begin, TYPE_INT, generation, TYPE_BOOL, full_sweep)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY2 (binary_protocol_sweep_end, TYPE_INT, generation, TYPE_BOOL, full_sweep)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY3 (binary_protocol_world_stopping, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_POINTER, thread)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (ptr == entry->thread ? 2 : BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY6 (binary_protocol_world_stopped, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_LONGLONG, total_major_cards, TYPE_LONGLONG, marked_major_cards, TYPE_LONGLONG, total_los_cards, TYPE_LONGLONG, marked_los_cards)
+CUSTOM_PRINT (printf ("generation %d timestamp %lld total %lld marked %lld %0.2f%%", entry->generation, entry->timestamp, entry->total_major_cards + entry->total_los_cards, entry->marked_major_cards + entry->marked_los_cards, 100.0 * (double) (entry->marked_major_cards + entry->marked_los_cards) / (double) (entry->total_major_cards + entry->total_los_cards)))
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY6 (binary_protocol_world_restarting, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_LONGLONG, total_major_cards, TYPE_LONGLONG, marked_major_cards, TYPE_LONGLONG, total_los_cards, TYPE_LONGLONG, marked_los_cards)
+CUSTOM_PRINT (printf ("generation %d timestamp %lld total %lld marked %lld %0.2f%%", entry->generation, entry->timestamp, entry->total_major_cards + entry->total_los_cards, entry->marked_major_cards + entry->marked_los_cards, 100.0 * (double) (entry->marked_major_cards + entry->marked_los_cards) / (double) (entry->total_major_cards + entry->total_los_cards)))
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY2 (binary_protocol_world_restarted, TYPE_INT, generation, TYPE_LONGLONG, timestamp)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_block_alloc, TYPE_POINTER, addr, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_block_free, TYPE_POINTER, addr, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state, TYPE_POINTER, addr, TYPE_SIZE, size, TYPE_INT, old, TYPE_INT, new)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_mark_start, TYPE_INT, generation)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_mark_end, TYPE_INT, generation)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+/* FIXME: unify sweep and reclaim */
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_reclaim_start, TYPE_INT, generation)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_reclaim_end, TYPE_INT, generation)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size, TYPE_POINTER, provenance)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_copy, TYPE_POINTER, from, TYPE_POINTER, to, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->from, entry->size) ? 0 : matches_interval (ptr, entry->to, entry->size) ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_pin_stage, TYPE_POINTER, addr_ptr, TYPE_POINTER, addr)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->addr_ptr ? 0 : ptr == entry->addr ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY1 (binary_protocol_cement_stage, TYPE_POINTER, addr)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->addr ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_pin, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_mark, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_begin, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_scan_vtype_begin, TYPE_POINTER, obj, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_process_reference, TYPE_POINTER, obj, TYPE_POINTER, ptr, TYPE_POINTER, value)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->ptr ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_scan_stack, TYPE_POINTER, thread, TYPE_POINTER, stack_start, TYPE_POINTER, stack_end, TYPE_INT, skip_reason)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->thread ? 0 : (ptr >= entry->stack_start && ptr < entry->stack_end) ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_wbarrier, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->ptr ? 0 : ptr == entry->value ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->value_vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_global_remset, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->ptr ? 0 : ptr == entry->value ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->value_vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY5 (binary_protocol_ptr_update, TYPE_POINTER, ptr, TYPE_POINTER, old_value, TYPE_POINTER, new_value, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->ptr ? 0 : matches_interval (ptr, entry->old_value, entry->size) ? 1 : matches_interval (ptr, entry->new_value, entry->size) ? 2 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_cleanup, TYPE_POINTER, ptr, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->ptr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_empty, TYPE_POINTER, start, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->start, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY2 (binary_protocol_thread_suspend, TYPE_POINTER, thread, TYPE_POINTER, stopped_ip)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_restart, TYPE_POINTER, thread)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_register, TYPE_POINTER, thread)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_unregister, TYPE_POINTER, thread)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY6 (binary_protocol_missing_remset, TYPE_POINTER, obj, TYPE_POINTER, obj_vtable, TYPE_INT, offset, TYPE_POINTER, value, TYPE_POINTER, value_vtable, TYPE_BOOL, value_pinned)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->value ? 3 : ptr == (char*)entry->obj + entry->offset ? BINARY_PROTOCOL_MATCH : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->obj_vtable || ptr == entry->value_vtable)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc_pinned, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size, TYPE_POINTER, provenance)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc_degraded, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size, TYPE_POINTER, provenance)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_card_scan, TYPE_POINTER, start, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->start, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY3 (binary_protocol_cement, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (ptr == entry->vtable)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY0 (binary_protocol_cement_reset)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_dislink_update, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_BOOL, track, TYPE_BOOL, staged)
+CUSTOM_PRINT(entry->obj ? printf ("link %p obj %p staged %d track %d", entry->link, entry->obj, entry->staged, entry->track) : printf ("link %p obj %p staged %d", entry->link, entry->obj, entry->staged))
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_dislink_update_staged, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_BOOL, track, TYPE_INT, index)
+CUSTOM_PRINT(entry->obj ? printf ("link %p obj %p index %d track %d", entry->link, entry->obj, entry->index, entry->track) : printf ("link %p obj %p index %d", entry->link, entry->obj, entry->index))
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_dislink_process_staged, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_INT, index)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_begin, TYPE_POINTER, domain)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_end, TYPE_POINTER, domain)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_enqueue, TYPE_POINTER, queue, TYPE_POINTER, cursor, TYPE_POINTER, value)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_dequeue, TYPE_POINTER, queue, TYPE_POINTER, cursor, TYPE_POINTER, value)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (FALSE)
+MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY_HEAVY
+
+#undef BEGIN_PROTOCOL_ENTRY0
+#undef BEGIN_PROTOCOL_ENTRY1
+#undef BEGIN_PROTOCOL_ENTRY2
+#undef BEGIN_PROTOCOL_ENTRY3
+#undef BEGIN_PROTOCOL_ENTRY4
+#undef BEGIN_PROTOCOL_ENTRY5
+#undef BEGIN_PROTOCOL_ENTRY6
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY0
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY1
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY2
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY3
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY4
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY5
+#undef BEGIN_PROTOCOL_ENTRY_HEAVY6
+
+#undef FLUSH
+
+#undef DEFAULT_PRINT
+#undef CUSTOM_PRINT
+
+#undef IS_ALWAYS_MATCH
+#undef MATCH_INDEX
+#undef IS_VTABLE_MATCH
+
+#undef END_PROTOCOL_ENTRY
+#undef END_PROTOCOL_ENTRY_HEAVY
diff --git a/mono/sgen/sgen-protocol.c b/mono/sgen/sgen-protocol.c
new file mode 100644 (file)
index 0000000..cb512fe
--- /dev/null
@@ -0,0 +1,441 @@
+/*
+ * sgen-protocol.c: Binary protocol of internal activity, to aid
+ * debugging.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifdef HAVE_SGEN_GC
+
+#include "config.h"
+#include "sgen-conf.h"
+#include "sgen-gc.h"
+#include "sgen-protocol.h"
+#include "sgen-memory-governor.h"
+#include "sgen-thread-pool.h"
+#include "sgen-client.h"
+#include "mono/utils/mono-membar.h"
+
+#include <errno.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#include <fcntl.h>
+#endif
+
+/* FIXME Implement binary protocol IO on systems that don't have unistd */
+#ifdef HAVE_UNISTD_H
+/* If valid, dump binary protocol to this file */
+static int binary_protocol_file = -1;
+
+/* We set this to -1 to indicate an exclusive lock */
+static volatile int binary_protocol_use_count = 0;
+
+#define BINARY_PROTOCOL_BUFFER_SIZE    (65536 - 2 * 8)
+
+typedef struct _BinaryProtocolBuffer BinaryProtocolBuffer;
+struct _BinaryProtocolBuffer {
+       BinaryProtocolBuffer * volatile next;
+       volatile int index;
+       unsigned char buffer [BINARY_PROTOCOL_BUFFER_SIZE];
+};
+
+static BinaryProtocolBuffer * volatile binary_protocol_buffers = NULL;
+
+static char* filename_or_prefix = NULL;
+static int current_file_index = 0;
+static long long current_file_size = 0;
+static long long file_size_limit;
+
+static char*
+filename_for_index (int index)
+{
+       char *filename;
+
+       SGEN_ASSERT (0, file_size_limit > 0, "Indexed binary protocol filename must only be used with file size limit");
+
+       filename = sgen_alloc_internal_dynamic (strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       sprintf (filename, "%s.%d", filename_or_prefix, index);
+
+       return filename;
+}
+
+static void
+free_filename (char *filename)
+{
+       SGEN_ASSERT (0, file_size_limit > 0, "Indexed binary protocol filename must only be used with file size limit");
+
+       sgen_free_internal_dynamic (filename, strlen (filename_or_prefix) + 32, INTERNAL_MEM_BINARY_PROTOCOL);
+}
+
+static void
+binary_protocol_open_file (void)
+{
+       char *filename;
+
+       if (file_size_limit > 0)
+               filename = filename_for_index (current_file_index);
+       else
+               filename = filename_or_prefix;
+
+       do {
+               binary_protocol_file = open (filename, O_CREAT|O_WRONLY|O_TRUNC, 0644);
+               if (binary_protocol_file == -1 && errno != EINTR)
+                       break; /* Failed */
+       } while (binary_protocol_file == -1);
+
+       if (file_size_limit > 0)
+               free_filename (filename);
+}
+#endif
+
+void
+binary_protocol_init (const char *filename, long long limit)
+{
+#ifdef HAVE_UNISTD_H
+       filename_or_prefix = sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       strcpy (filename_or_prefix, filename);
+
+       file_size_limit = limit;
+
+       binary_protocol_open_file ();
+#endif
+}
+
+gboolean
+binary_protocol_is_enabled (void)
+{
+#ifdef HAVE_UNISTD_H
+       return binary_protocol_file != -1;
+#else
+       return FALSE;
+#endif
+}
+
+#ifdef HAVE_UNISTD_H
+
+static void
+close_binary_protocol_file (void)
+{
+       while (close (binary_protocol_file) == -1 && errno == EINTR)
+               ;
+       binary_protocol_file = -1;
+}
+
+static gboolean
+try_lock_exclusive (void)
+{
+       do {
+               if (binary_protocol_use_count)
+                       return FALSE;
+       } while (InterlockedCompareExchange (&binary_protocol_use_count, -1, 0) != 0);
+       mono_memory_barrier ();
+       return TRUE;
+}
+
+static void
+unlock_exclusive (void)
+{
+       mono_memory_barrier ();
+       SGEN_ASSERT (0, binary_protocol_use_count == -1, "Exclusively locked count must be -1");
+       if (InterlockedCompareExchange (&binary_protocol_use_count, 0, -1) != -1)
+               SGEN_ASSERT (0, FALSE, "Somebody messed with the exclusive lock");
+}
+
+static void
+lock_recursive (void)
+{
+       int old_count;
+       do {
+       retry:
+               old_count = binary_protocol_use_count;
+               if (old_count < 0) {
+                       /* Exclusively locked - retry */
+                       /* FIXME: short back-off */
+                       goto retry;
+               }
+       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count + 1, old_count) != old_count);
+       mono_memory_barrier ();
+}
+
+static void
+unlock_recursive (void)
+{
+       int old_count;
+       mono_memory_barrier ();
+       do {
+               old_count = binary_protocol_use_count;
+               SGEN_ASSERT (0, old_count > 0, "Locked use count must be at least 1");
+       } while (InterlockedCompareExchange (&binary_protocol_use_count, old_count - 1, old_count) != old_count);
+}
+
+static void
+binary_protocol_flush_buffer (BinaryProtocolBuffer *buffer)
+{
+       ssize_t ret;
+       size_t to_write = buffer->index;
+       size_t written = 0;
+       g_assert (buffer->index > 0);
+
+       while (written < to_write) {
+               ret = write (binary_protocol_file, buffer->buffer + written, to_write - written);
+               if (ret >= 0)
+                       written += ret;
+               else if (errno == EINTR)
+                       continue;
+               else
+                       close_binary_protocol_file ();
+       }
+
+       current_file_size += buffer->index;
+
+       sgen_free_os_memory (buffer, sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL);
+}
+
+static void
+binary_protocol_check_file_overflow (void)
+{
+       if (file_size_limit <= 0 || current_file_size < file_size_limit)
+               return;
+
+       close_binary_protocol_file ();
+
+       if (current_file_index > 0) {
+               char *filename = filename_for_index (current_file_index - 1);
+               unlink (filename);
+               free_filename (filename);
+       }
+
+       ++current_file_index;
+       current_file_size = 0;
+
+       binary_protocol_open_file ();
+}
+#endif
+
+/*
+ * Flushing buffers takes an exclusive lock, so it must only be done when the world is
+ * stopped, otherwise we might end up with a deadlock because a stopped thread owns the
+ * lock.
+ *
+ * The protocol entries that do flush have `FLUSH()` in their definition.
+ */
+void
+binary_protocol_flush_buffers (gboolean force)
+{
+#ifdef HAVE_UNISTD_H
+       int num_buffers = 0, i;
+       BinaryProtocolBuffer *buf;
+       BinaryProtocolBuffer **bufs;
+
+       if (binary_protocol_file == -1)
+               return;
+
+       if (!force && !try_lock_exclusive ())
+               return;
+
+       for (buf = binary_protocol_buffers; buf != NULL; buf = buf->next)
+               ++num_buffers;
+       bufs = sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       for (buf = binary_protocol_buffers, i = 0; buf != NULL; buf = buf->next, i++)
+               bufs [i] = buf;
+       SGEN_ASSERT (0, i == num_buffers, "Binary protocol buffer count error");
+
+       binary_protocol_buffers = NULL;
+
+       for (i = num_buffers - 1; i >= 0; --i) {
+               binary_protocol_flush_buffer (bufs [i]);
+               binary_protocol_check_file_overflow ();
+       }
+
+       sgen_free_internal_dynamic (buf, num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL);
+
+       if (!force)
+               unlock_exclusive ();
+#endif
+}
+
+#ifdef HAVE_UNISTD_H
+static BinaryProtocolBuffer*
+binary_protocol_get_buffer (int length)
+{
+       BinaryProtocolBuffer *buffer, *new_buffer;
+ retry:
+       buffer = binary_protocol_buffers;
+       if (buffer && buffer->index + length <= BINARY_PROTOCOL_BUFFER_SIZE)
+               return buffer;
+
+       new_buffer = sgen_alloc_os_memory (sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE, "debugging memory");
+       new_buffer->next = buffer;
+       new_buffer->index = 0;
+
+       if (InterlockedCompareExchangePointer ((void**)&binary_protocol_buffers, new_buffer, buffer) != buffer) {
+               sgen_free_os_memory (new_buffer, sizeof (BinaryProtocolBuffer), SGEN_ALLOC_INTERNAL);
+               goto retry;
+       }
+
+       return new_buffer;
+}
+#endif
+
+static void
+protocol_entry (unsigned char type, gpointer data, int size)
+{
+#ifdef HAVE_UNISTD_H
+       int index;
+       BinaryProtocolBuffer *buffer;
+
+       if (binary_protocol_file == -1)
+               return;
+
+       if (sgen_thread_pool_is_thread_pool_thread (mono_native_thread_id_get ()))
+               type |= 0x80;
+
+       lock_recursive ();
+
+ retry:
+       buffer = binary_protocol_get_buffer (size + 1);
+ retry_same_buffer:
+       index = buffer->index;
+       if (index + 1 + size > BINARY_PROTOCOL_BUFFER_SIZE)
+               goto retry;
+
+       if (InterlockedCompareExchange (&buffer->index, index + 1 + size, index) != index)
+               goto retry_same_buffer;
+
+       /* FIXME: if we're interrupted at this point, we have a buffer
+          entry that contains random data. */
+
+       buffer->buffer [index++] = type;
+       memcpy (buffer->buffer + index, data, size);
+       index += size;
+
+       g_assert (index <= BINARY_PROTOCOL_BUFFER_SIZE);
+
+       unlock_recursive ();
+#endif
+}
+
+#define TYPE_INT int
+#define TYPE_LONGLONG long long
+#define TYPE_SIZE size_t
+#define TYPE_POINTER gpointer
+#define TYPE_BOOL gboolean
+
+#define BEGIN_PROTOCOL_ENTRY0(method) \
+       void method (void) { \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = NULL; \
+               int __size = 0; \
+               CLIENT_PROTOCOL_NAME (method) ();
+#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
+       void method (t1 f1) { \
+               PROTOCOL_STRUCT(method) __entry = { f1 }; \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = &__entry; \
+               int __size = sizeof (PROTOCOL_STRUCT(method)); \
+               CLIENT_PROTOCOL_NAME (method) (f1);
+#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
+       void method (t1 f1, t2 f2) { \
+               PROTOCOL_STRUCT(method) __entry = { f1, f2 }; \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = &__entry; \
+               int __size = sizeof (PROTOCOL_STRUCT(method)); \
+               CLIENT_PROTOCOL_NAME (method) (f1, f2);
+#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
+       void method (t1 f1, t2 f2, t3 f3) { \
+               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3 }; \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = &__entry; \
+               int __size = sizeof (PROTOCOL_STRUCT(method)); \
+               CLIENT_PROTOCOL_NAME (method) (f1, f2, f3);
+#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       void method (t1 f1, t2 f2, t3 f3, t4 f4) { \
+               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3, f4 }; \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = &__entry; \
+               int __size = sizeof (PROTOCOL_STRUCT(method)); \
+               CLIENT_PROTOCOL_NAME (method) (f1, f2, f3, f4);
+#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5) { \
+               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3, f4, f5 }; \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = &__entry; \
+               int __size = sizeof (PROTOCOL_STRUCT(method)); \
+               CLIENT_PROTOCOL_NAME (method) (f1, f2, f3, f4, f5);
+#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6) { \
+               PROTOCOL_STRUCT(method) __entry = { f1, f2, f3, f4, f5, f6 }; \
+               int __type = PROTOCOL_ID(method); \
+               gpointer __data = &__entry; \
+               int __size = sizeof (PROTOCOL_STRUCT(method)); \
+               CLIENT_PROTOCOL_NAME (method) (f1, f2, f3, f4, f5, f6);
+
+#define FLUSH() \
+               binary_protocol_flush_buffers (FALSE);
+
+#define DEFAULT_PRINT()
+#define CUSTOM_PRINT(_)
+
+#define IS_ALWAYS_MATCH(_)
+#define MATCH_INDEX(_)
+#define IS_VTABLE_MATCH(_)
+
+#define END_PROTOCOL_ENTRY \
+               protocol_entry (__type, __data, __size); \
+       }
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
+       BEGIN_PROTOCOL_ENTRY0 (method)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
+       BEGIN_PROTOCOL_ENTRY1 (method,t1,f1)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
+       BEGIN_PROTOCOL_ENTRY2 (method,t1,f1,t2,f2)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
+       BEGIN_PROTOCOL_ENTRY3 (method,t1,f1,t2,f2,t3,f3)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       BEGIN_PROTOCOL_ENTRY4 (method,t1,f1,t2,f2,t3,f3,t4,f4)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       BEGIN_PROTOCOL_ENTRY5 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
+
+#define END_PROTOCOL_ENTRY_HEAVY \
+       END_PROTOCOL_ENTRY
+#else
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
+
+#define END_PROTOCOL_ENTRY_HEAVY
+#endif
+
+#include "sgen-protocol-def.h"
+
+#undef TYPE_INT
+#undef TYPE_LONGLONG
+#undef TYPE_SIZE
+#undef TYPE_POINTER
+#undef TYPE_BOOL
+
+#endif /* HAVE_SGEN_GC */
diff --git a/mono/sgen/sgen-protocol.h b/mono/sgen/sgen-protocol.h
new file mode 100644 (file)
index 0000000..2b7176e
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * sgen-protocol.h: Binary protocol of internal activity, to aid
+ * debugging.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGENPROTOCOL_H__
+#define __MONO_SGENPROTOCOL_H__
+
+#include "sgen-gc.h"
+
+/* Special indices returned by MATCH_INDEX. */
+#define BINARY_PROTOCOL_NO_MATCH (-1)
+#define BINARY_PROTOCOL_MATCH (-2)
+
+#define PROTOCOL_ID(method) method ## _id
+#define PROTOCOL_STRUCT(method) method ## _struct
+#define CLIENT_PROTOCOL_NAME(method) sgen_client_ ## method
+
+#define TYPE_INT int
+#define TYPE_LONGLONG long long
+#define TYPE_SIZE size_t
+#define TYPE_POINTER gpointer
+#define TYPE_BOOL gboolean
+
+enum {
+#define BEGIN_PROTOCOL_ENTRY0(method) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) PROTOCOL_ID(method),
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) PROTOCOL_ID(method),
+
+#define FLUSH()
+
+#define DEFAULT_PRINT()
+#define CUSTOM_PRINT(_)
+
+#define IS_ALWAYS_MATCH(_)
+#define MATCH_INDEX(_)
+#define IS_VTABLE_MATCH(_)
+
+#define END_PROTOCOL_ENTRY
+#define END_PROTOCOL_ENTRY_HEAVY
+
+#include "sgen-protocol-def.h"
+};
+
+#define BEGIN_PROTOCOL_ENTRY0(method)
+#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
+       typedef struct { \
+               t1 f1; \
+       } PROTOCOL_STRUCT(method);
+#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
+       typedef struct { \
+               t1 f1; \
+               t2 f2; \
+       } PROTOCOL_STRUCT(method);
+#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
+       typedef struct { \
+               t1 f1; \
+               t2 f2; \
+               t3 f3; \
+       } PROTOCOL_STRUCT(method);
+#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       typedef struct { \
+               t1 f1; \
+               t2 f2; \
+               t3 f3; \
+               t4 f4; \
+       } PROTOCOL_STRUCT(method);
+#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       typedef struct { \
+               t1 f1; \
+               t2 f2; \
+               t3 f3; \
+               t4 f4; \
+               t5 f5; \
+       } PROTOCOL_STRUCT(method);
+#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       typedef struct { \
+               t1 f1; \
+               t2 f2; \
+               t3 f3; \
+               t4 f4; \
+               t5 f5; \
+               t6 f6; \
+       } PROTOCOL_STRUCT(method);
+
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
+       BEGIN_PROTOCOL_ENTRY0 (method)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
+       BEGIN_PROTOCOL_ENTRY1 (method,t1,f1)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
+       BEGIN_PROTOCOL_ENTRY2 (method,t1,f1,t2,f2)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
+       BEGIN_PROTOCOL_ENTRY3 (method,t1,f1,t2,f2,t3,f3)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       BEGIN_PROTOCOL_ENTRY4 (method,t1,f1,t2,f2,t3,f3,t4,f4)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       BEGIN_PROTOCOL_ENTRY5 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
+
+#define FLUSH()
+
+#define DEFAULT_PRINT()
+#define CUSTOM_PRINT(_)
+
+#define IS_ALWAYS_MATCH(_)
+#define MATCH_INDEX(_)
+#define IS_VTABLE_MATCH(_)
+
+#define END_PROTOCOL_ENTRY
+#define END_PROTOCOL_ENTRY_HEAVY
+
+#include "sgen-protocol-def.h"
+
+/* missing: finalizers, roots, non-store wbarriers */
+
+void binary_protocol_init (const char *filename, long long limit);
+gboolean binary_protocol_is_enabled (void);
+
+void binary_protocol_flush_buffers (gboolean force);
+
+#define BEGIN_PROTOCOL_ENTRY0(method) \
+       void method (void);
+#define BEGIN_PROTOCOL_ENTRY1(method,t1,f1) \
+       void method (t1 f1);
+#define BEGIN_PROTOCOL_ENTRY2(method,t1,f1,t2,f2) \
+       void method (t1 f1, t2 f2);
+#define BEGIN_PROTOCOL_ENTRY3(method,t1,f1,t2,f2,t3,f3) \
+       void method (t1 f1, t2 f2, t3 f3);
+#define BEGIN_PROTOCOL_ENTRY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       void method (t1 f1, t2 f2, t3 f3, t4 f4);
+#define BEGIN_PROTOCOL_ENTRY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5);
+#define BEGIN_PROTOCOL_ENTRY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6);
+
+#ifdef SGEN_HEAVY_BINARY_PROTOCOL
+#define binary_protocol_is_heavy_enabled()     binary_protocol_is_enabled ()
+
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
+       BEGIN_PROTOCOL_ENTRY0 (method)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
+       BEGIN_PROTOCOL_ENTRY1 (method,t1,f1)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
+       BEGIN_PROTOCOL_ENTRY2 (method,t1,f1,t2,f2)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
+       BEGIN_PROTOCOL_ENTRY3 (method,t1,f1,t2,f2,t3,f3)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       BEGIN_PROTOCOL_ENTRY4 (method,t1,f1,t2,f2,t3,f3,t4,f4)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       BEGIN_PROTOCOL_ENTRY5 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5)
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6)
+#else
+#define binary_protocol_is_heavy_enabled()     FALSE
+
+#define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \
+       static inline void method (void) {}
+#define BEGIN_PROTOCOL_ENTRY_HEAVY1(method,t1,f1) \
+       static inline void method (t1 f1) {}
+#define BEGIN_PROTOCOL_ENTRY_HEAVY2(method,t1,f1,t2,f2) \
+       static inline void method (t1 f1, t2 f2) {}
+#define BEGIN_PROTOCOL_ENTRY_HEAVY3(method,t1,f1,t2,f2,t3,f3) \
+       static inline void method (t1 f1, t2 f2, t3 f3) {}
+#define BEGIN_PROTOCOL_ENTRY_HEAVY4(method,t1,f1,t2,f2,t3,f3,t4,f4) \
+       static inline void method (t1 f1, t2 f2, t3 f3, t4 f4) {}
+#define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) \
+       static inline void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5) {}
+#define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \
+       static inline void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6) {}
+#endif
+
+#define FLUSH()
+
+#define DEFAULT_PRINT()
+#define CUSTOM_PRINT(_)
+
+#define IS_ALWAYS_MATCH(_)
+#define MATCH_INDEX(_)
+#define IS_VTABLE_MATCH(_)
+
+#define END_PROTOCOL_ENTRY
+#define END_PROTOCOL_ENTRY_HEAVY
+
+#include "sgen-protocol-def.h"
+
+#undef TYPE_INT
+#undef TYPE_LONGLONG
+#undef TYPE_SIZE
+#undef TYPE_POINTER
+#undef TYPE_BOOL
+
+#endif
diff --git a/mono/sgen/sgen-qsort.c b/mono/sgen/sgen-qsort.c
new file mode 100644 (file)
index 0000000..7566bdd
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * sgen-qsort.c: Quicksort.
+ *
+ * Copyright (C) 2013 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+
+#ifdef HAVE_SGEN_GC
+
+#include "sgen/sgen-gc.h"
+
+#define ELEM(i)                (((unsigned char*)base) + ((i) * width))
+#define SWAP(i,j)      do {                                    \
+               size_t __i = (i), __j = (j);                    \
+               if (__i != __j) {                               \
+                       memcpy (swap_tmp, ELEM (__i), width);   \
+                       memcpy (ELEM (__i), ELEM (__j), width); \
+                       memcpy (ELEM (__j), swap_tmp, width);   \
+               }                                               \
+       } while (0)
+
+static size_t
+partition (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*), unsigned char *pivot_tmp, unsigned char *swap_tmp)
+{
+       size_t pivot_idx = nel >> 1;
+       size_t s, i;
+
+       memcpy (pivot_tmp, ELEM (pivot_idx), width);
+       SWAP (pivot_idx, nel - 1);
+       s = 0;
+       for (i = 0; i < nel - 1; ++i) {
+               if (compar (ELEM (i), pivot_tmp) <= 0) {
+                       SWAP (i, s);
+                       ++s;
+               }
+       }
+       SWAP (s, nel - 1);
+       return s;
+}
+
+static void
+qsort_rec (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*), unsigned char *pivot_tmp, unsigned char *swap_tmp)
+{
+       size_t pivot_idx;
+
+       if (nel <= 1)
+               return;
+
+       pivot_idx = partition (base, nel, width, compar, pivot_tmp, swap_tmp);
+       qsort_rec (base, pivot_idx, width, compar, pivot_tmp, swap_tmp);
+       if (pivot_idx < nel)
+               qsort_rec (ELEM (pivot_idx + 1), nel - pivot_idx - 1, width, compar, pivot_tmp, swap_tmp);
+}
+
+void
+sgen_qsort (void *base, size_t nel, size_t width, int (*compar) (const void*, const void*))
+{
+#ifndef _MSC_VER
+       unsigned char pivot_tmp [width];
+       unsigned char swap_tmp [width];
+#else
+       unsigned char* pivot_tmp = (unsigned char*) alloca(width);
+       unsigned char* swap_tmp = (unsigned char*) alloca(width);
+#endif
+
+       qsort_rec (base, nel, width, compar, pivot_tmp, swap_tmp);
+}
+
+#endif
diff --git a/mono/sgen/sgen-qsort.h b/mono/sgen/sgen-qsort.h
new file mode 100644 (file)
index 0000000..75577e5
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * sgen-qsort.h: Fast inline sorting
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef __MONO_SGENQSORT_H__
+#define __MONO_SGENQSORT_H__
+
+#define DEF_QSORT_INLINE(NAME,ARRAY_TYPE,COMPARE_FUN)  \
+static size_t partition_##NAME (ARRAY_TYPE base[], size_t nel) {       \
+       size_t pivot_idx = nel >> 1;    \
+       size_t s, i;    \
+       ARRAY_TYPE pivot = base [pivot_idx];    \
+       { ARRAY_TYPE tmp = base [pivot_idx]; base [pivot_idx] = base [nel - 1]; base [nel - 1] = tmp; } \
+       s = 0;  \
+       for (i = 0; i < nel - 1; ++i) { \
+               if (COMPARE_FUN (base [i], pivot) <= 0) {       \
+                       { ARRAY_TYPE tmp = base [i]; base [i] = base [s]; base [s] = tmp; }     \
+                       ++s;    \
+               }       \
+       }       \
+       { ARRAY_TYPE tmp = base [s]; base [s] = base [nel - 1]; base [nel - 1] = tmp; } \
+       return s;       \
+}      \
+static void rec_##NAME (ARRAY_TYPE base[], size_t nel) {       \
+       size_t pivot_idx;       \
+       if (nel <= 1)   \
+               return; \
+       pivot_idx = partition_##NAME (base, nel); \
+       rec_##NAME (base, pivot_idx);   \
+       if (pivot_idx < nel)    \
+               rec_##NAME (&base[pivot_idx + 1], nel - pivot_idx - 1); \
+}      \
+static void qsort_##NAME (ARRAY_TYPE base[], size_t nel) {     \
+       rec_##NAME (base, nel); \
+}      \
+
+
+#endif
diff --git a/mono/sgen/sgen-scan-object.h b/mono/sgen/sgen-scan-object.h
new file mode 100644 (file)
index 0000000..9d1611c
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * sgen-scan-object.h: Generic object scan.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2013 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * Scans one object, using the OBJ_XXX macros.  The start of the
+ * object must be given in the variable "char* start".  Afterwards,
+ * "start" will point to the start of the next object, if the scanned
+ * object contained references.  If not, the value of "start" should
+ * be considered undefined after executing this code.  The object's
+ * GC descriptor must be in the variable "mword desc".
+ *
+ * The macro `HANDLE_PTR` will be invoked for every reference encountered while scanning the
+ * object.  It is called with two parameters: The pointer to the reference (not the
+ * reference itself!) as well as the pointer to the scanned object.
+ *
+ * Modifiers (automatically undefined):
+ *
+ * SCAN_OBJECT_NOSCAN - if defined, don't actually scan the object,
+ * i.e. don't invoke the OBJ_XXX macros.
+ *
+ * SCAN_OBJECT_NOVTABLE - desc is provided by the includer, instead of
+ * vt.  Complex arrays cannot not be scanned.
+ *
+ * SCAN_OBJECT_PROTOCOL - if defined, binary protocol the scan.
+ * Should only be used for scanning that's done for the actual
+ * collection, not for debugging scans.
+ */
+
+{
+#ifndef SCAN_OBJECT_NOVTABLE
+#if defined(SGEN_HEAVY_BINARY_PROTOCOL) && defined(SCAN_OBJECT_PROTOCOL)
+       binary_protocol_scan_begin (start, SGEN_LOAD_VTABLE (start), sgen_safe_object_get_size ((GCObject*)start));
+#endif
+#else
+#if defined(SGEN_HEAVY_BINARY_PROTOCOL) && defined(SCAN_OBJECT_PROTOCOL)
+       binary_protocol_scan_vtype_begin (start + SGEN_CLIENT_OBJECT_HEADER_SIZE, size);
+#endif
+#endif
+       switch (desc & DESC_TYPE_MASK) {
+       case DESC_TYPE_RUN_LENGTH:
+#define SCAN OBJ_RUN_LEN_FOREACH_PTR (desc, start)
+#ifndef SCAN_OBJECT_NOSCAN
+               SCAN;
+#endif
+#undef SCAN
+               break;
+       case DESC_TYPE_VECTOR:
+#define SCAN OBJ_VECTOR_FOREACH_PTR (desc, start)
+#ifndef SCAN_OBJECT_NOSCAN
+               SCAN;
+#endif
+#undef SCAN
+               break;
+       case DESC_TYPE_BITMAP:
+#define SCAN OBJ_BITMAP_FOREACH_PTR (desc, start)
+#ifndef SCAN_OBJECT_NOSCAN
+               SCAN;
+#endif
+#undef SCAN
+               break;
+       case DESC_TYPE_COMPLEX:
+               /* this is a complex object */
+#define SCAN OBJ_COMPLEX_FOREACH_PTR (desc, start)
+#ifndef SCAN_OBJECT_NOSCAN
+               SCAN;
+#endif
+#undef SCAN
+               break;
+#ifndef SCAN_OBJECT_NOVTABLE
+       case DESC_TYPE_COMPLEX_ARR:
+               /* this is an array of complex structs */
+#define SCAN OBJ_COMPLEX_ARR_FOREACH_PTR (desc, start)
+#ifndef SCAN_OBJECT_NOSCAN
+               SCAN;
+#endif
+#undef SCAN
+               break;
+#endif
+       case DESC_TYPE_SMALL_PTRFREE:
+       case DESC_TYPE_COMPLEX_PTRFREE:
+               /*Nothing to do*/
+               break;
+       default:
+               g_assert_not_reached ();
+       }
+}
+
+#undef SCAN_OBJECT_NOSCAN
+#undef SCAN_OBJECT_NOVTABLE
+#undef SCAN_OBJECT_PROTOCOL
diff --git a/mono/sgen/sgen-simple-nursery.c b/mono/sgen/sgen-simple-nursery.c
new file mode 100644 (file)
index 0000000..5488775
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * sgen-simple-nursery.c: Simple always promote nursery.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-layout-stats.h"
+#include "mono/sgen/sgen-client.h"
+
+static inline char*
+alloc_for_promotion (GCVTable *vtable, char *obj, size_t objsize, gboolean has_references)
+{
+       return major_collector.alloc_object (vtable, objsize, has_references);
+}
+
+static SgenFragment*
+build_fragments_get_exclude_head (void)
+{
+       return NULL;
+}
+
+static void
+build_fragments_release_exclude_head (void)
+{
+}
+
+static void
+build_fragments_finish (SgenFragmentAllocator *allocator)
+{
+}
+
+static void
+prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
+{
+}
+
+static void
+clear_fragments (void)
+{      
+}
+
+static void
+init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
+{
+       sgen_fragment_allocator_add (allocator, start, end);
+}
+
+
+/******************************************Copy/Scan functins ************************************************/
+
+#define SGEN_SIMPLE_NURSERY
+
+#define SERIAL_COPY_OBJECT simple_nursery_serial_copy_object
+#define SERIAL_COPY_OBJECT_FROM_OBJ simple_nursery_serial_copy_object_from_obj
+
+#include "sgen-minor-copy-object.h"
+#include "sgen-minor-scan-object.h"
+
+void
+sgen_simple_nursery_init (SgenMinorCollector *collector)
+{
+       collector->is_split = FALSE;
+
+       collector->alloc_for_promotion = alloc_for_promotion;
+
+       collector->prepare_to_space = prepare_to_space;
+       collector->clear_fragments = clear_fragments;
+       collector->build_fragments_get_exclude_head = build_fragments_get_exclude_head;
+       collector->build_fragments_release_exclude_head = build_fragments_release_exclude_head;
+       collector->build_fragments_finish = build_fragments_finish;
+       collector->init_nursery = init_nursery;
+
+       FILL_MINOR_COLLECTOR_COPY_OBJECT (collector);
+       FILL_MINOR_COLLECTOR_SCAN_OBJECT (collector);
+}
+
+
+#endif
diff --git a/mono/sgen/sgen-split-nursery.c b/mono/sgen/sgen-split-nursery.c
new file mode 100644 (file)
index 0000000..96d765f
--- /dev/null
@@ -0,0 +1,457 @@
+/*
+ * sgen-splliy-nursery.c: 3-space based nursery collector.
+ *
+ * Author:
+ *     Rodrigo Kumpera Kumpera <kumpera@gmail.com>
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright 2011-2012 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-protocol.h"
+#include "mono/sgen/sgen-layout-stats.h"
+#include "mono/sgen/sgen-client.h"
+#include "mono/utils/mono-memory-model.h"
+
+/*
+The nursery is logically divided into 3 spaces: Allocator space and two Survivor spaces.
+
+Objects are born (allocated by the mutator) in the Allocator Space.
+
+The Survivor spaces are divided in a copying collector style From and To spaces.
+The hole of each space switch on each collection.
+
+On each collection we process objects from the nursery this way:
+Objects from the Allocator Space are evacuated into the To Space.
+Objects from the Survivor From Space are evacuated into the old generation.
+
+
+The nursery is physically divided in two parts, set by the promotion barrier.
+
+The Allocator Space takes the botton part of the nursery.
+
+The Survivor spaces are intermingled in the top part of the nursery. It's done
+this way since the required size for the To Space depends on the survivor rate
+of objects from the Allocator Space. 
+
+During a collection when the object scan function see a nursery object it must
+determine if the object needs to be evacuated or left in place. Originally, this
+check was done by checking if a forwarding pointer is installed, but now an object
+can be in the To Space, it won't have a forwarding pointer and it must be left in place.
+
+In order to solve that we classify nursery memory been either in the From Space or in
+the To Space. Since the Allocator Space has the same behavior as the Survivor From Space
+they are unified for this purpoise - a bit confusing at first.
+
+This from/to classification is done on a larger granule than object to make the check efficient
+and, due to that, we must make sure that all fragemnts used to allocate memory from the To Space
+are naturally aligned in both ends to that granule to avoid wronly classifying a From Space object.
+
+TODO:
+-The promotion barrier is statically defined to 50% of the nursery, it should be dinamically adjusted based
+on survival rates;
+-We apply the same promotion policy to all objects, finalizable ones should age longer in the nursery;
+-We apply the same promotion policy to all stages of a collection, maybe we should promote more aggressively
+objects from non-stack roots, specially those found in the remembered set;
+-Fix our major collection trigger to happen before we do a minor GC and collect the nursery only once.
+-Make the serial fragment allocator fast path inlineable
+-Make aging threshold be based on survival rates and survivor occupancy;
+-Change promotion barrier to be size and not address based;
+-Pre allocate memory for young ages to make sure that on overflow only the older suffer;
+-Get rid of par_alloc_buffer_refill_mutex so to the parallel collection of the nursery doesn't suck;
+*/
+
+/*FIXME Move this to a separate header. */
+#define _toi(ptr) ((size_t)ptr)
+#define make_ptr_mask(bits) ((1 << bits) - 1)
+#define align_down(ptr, bits) ((void*)(_toi(ptr) & ~make_ptr_mask (bits)))
+#define align_up(ptr, bits) ((void*) ((_toi(ptr) + make_ptr_mask (bits)) & ~make_ptr_mask (bits)))
+
+/*
+Even though the effective max age is 255, aging that much doesn't make sense.
+It might even make sense to use nimbles for age recording.
+*/
+#define MAX_AGE 15
+
+/*
+ * Each age has its allocation buffer.  Whenever an object is to be
+ * aged we try to fit it into its new age's allocation buffer.  If
+ * that is not possible we get new space from the fragment allocator
+ * and set the allocation buffer to that space (minus the space
+ * required for the object).
+ */
+
+typedef struct {
+       char *next;
+       char *end;
+} AgeAllocationBuffer;
+
+/* Limits the ammount of memory the mutator can have. */
+static char *promotion_barrier;
+
+/*
+Promotion age and alloc ratio are the two nursery knobs to control
+how much effort we want to spend on young objects.
+
+Allocation ratio should be the inverse of the expected survivor rate.
+The more objects surviver, the smaller the alloc ratio much be so we can
+age all objects.
+
+Promote age depends on how much effort we want to spend aging objects before
+we promote them to the old generation. If addional ages don't somewhat improve
+mortality, it's better avoid as they increase the cost of minor collections.
+
+*/
+
+
+/*
+If we're evacuating an object with this age or more, promote it.
+Age is the number of surviving collections of an object.
+*/
+static int promote_age = 2;
+
+/*
+Initial ratio of allocation and survivor spaces.
+This should be read as the fraction of the whole nursery dedicated
+for the allocator space.
+*/
+static float alloc_ratio = 60.f/100.f;
+
+
+static char *region_age;
+static size_t region_age_size;
+static AgeAllocationBuffer age_alloc_buffers [MAX_AGE];
+
+/* The collector allocs from here. */
+static SgenFragmentAllocator collector_allocator;
+
+static inline int
+get_object_age (char *object)
+{
+       size_t idx = (object - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       return region_age [idx];
+}
+
+static void
+set_age_in_range (char *start, char *end, int age)
+{
+       char *region_start;
+       size_t region_idx, length;
+       region_idx = (start - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       region_start = &region_age [region_idx];
+       length = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       memset (region_start, age, length);
+}
+
+static inline void
+mark_bit (char *space_bitmap, char *pos)
+{
+       size_t idx = (pos - sgen_nursery_start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       size_t byte = idx / 8;
+       int bit = idx & 0x7;
+
+       g_assert (byte < sgen_space_bitmap_size);
+       space_bitmap [byte] |= 1 << bit;
+}
+
+static void
+mark_bits_in_range (char *space_bitmap, char *start, char *end)
+{
+       start = align_down (start, SGEN_TO_SPACE_GRANULE_BITS);
+       end = align_up (end, SGEN_TO_SPACE_GRANULE_BITS);
+
+       for (;start < end; start += SGEN_TO_SPACE_GRANULE_IN_BYTES)
+               mark_bit (space_bitmap, start);
+}
+
+/*
+ * This splits the fragments at the point of the promotion barrier.
+ * Two allocator are actually involved here: The mutator allocator and
+ * the collector allocator.  This function is called with the
+ * collector, but it's a copy of the mutator allocator and contains
+ * all the fragments in the nursery.  The fragments below the
+ * promotion barrier are left with the mutator allocator and the ones
+ * above are put into the collector allocator.
+ */
+static void
+fragment_list_split (SgenFragmentAllocator *allocator)
+{
+       SgenFragment *prev = NULL, *list = allocator->region_head;
+
+       while (list) {
+               if (list->fragment_end > promotion_barrier) {
+                       if (list->fragment_start < promotion_barrier) {
+                               SgenFragment *res = sgen_fragment_allocator_alloc ();
+
+                               res->fragment_start = promotion_barrier;
+                               res->fragment_next = promotion_barrier;
+                               res->fragment_end = list->fragment_end;
+                               res->next = list->next;
+                               res->next_in_order = list->next_in_order;
+                               g_assert (res->fragment_end > res->fragment_start);
+
+                               list->fragment_end = promotion_barrier;
+                               list->next = list->next_in_order = NULL;
+                               set_age_in_range (list->fragment_start, list->fragment_end, 0);
+
+                               allocator->region_head = allocator->alloc_head = res;
+                               return;
+                       } else {
+                               if (prev)
+                                       prev->next = prev->next_in_order = NULL;
+                               allocator->region_head = allocator->alloc_head = list;
+                               return;
+                       }
+               }
+               set_age_in_range (list->fragment_start, list->fragment_end, 0);
+               prev = list;
+               list = list->next;
+       }
+       allocator->region_head = allocator->alloc_head = NULL;
+}
+
+/******************************************Minor Collector API ************************************************/
+
+#define AGE_ALLOC_BUFFER_MIN_SIZE SGEN_TO_SPACE_GRANULE_IN_BYTES
+#define AGE_ALLOC_BUFFER_DESIRED_SIZE (SGEN_TO_SPACE_GRANULE_IN_BYTES * 8)
+
+static char*
+alloc_for_promotion_slow_path (int age, size_t objsize)
+{
+       char *p;
+       size_t allocated_size;
+       size_t aligned_objsize = (size_t)align_up (objsize, SGEN_TO_SPACE_GRANULE_BITS);
+
+       p = sgen_fragment_allocator_serial_range_alloc (
+               &collector_allocator,
+               MAX (aligned_objsize, AGE_ALLOC_BUFFER_DESIRED_SIZE),
+               MAX (aligned_objsize, AGE_ALLOC_BUFFER_MIN_SIZE),
+               &allocated_size);
+       if (p) {
+               set_age_in_range (p, p + allocated_size, age);
+               sgen_clear_range (age_alloc_buffers [age].next, age_alloc_buffers [age].end);
+               age_alloc_buffers [age].next = p + objsize;
+               age_alloc_buffers [age].end = p + allocated_size;
+       }
+       return p;
+}
+
+static inline char*
+alloc_for_promotion (GCVTable *vtable, char *obj, size_t objsize, gboolean has_references)
+{
+       char *p = NULL;
+       int age;
+
+       age = get_object_age (obj);
+       if (age >= promote_age)
+               return major_collector.alloc_object (vtable, objsize, has_references);
+
+       /* Promote! */
+       ++age;
+
+       p = age_alloc_buffers [age].next;
+       if (G_LIKELY (p + objsize <= age_alloc_buffers [age].end)) {
+        age_alloc_buffers [age].next += objsize;
+       } else {
+               p = alloc_for_promotion_slow_path (age, objsize);
+               if (!p)
+                       return major_collector.alloc_object (vtable, objsize, has_references);
+       }
+
+       /* FIXME: assumes object layout */
+       *(GCVTable**)p = vtable;
+
+       return p;
+}
+
+static char*
+minor_alloc_for_promotion (GCVTable *vtable, char *obj, size_t objsize, gboolean has_references)
+{
+       /*
+       We only need to check for a non-nursery object if we're doing a major collection.
+       */
+       if (!sgen_ptr_in_nursery (obj))
+               return major_collector.alloc_object (vtable, objsize, has_references);
+
+       return alloc_for_promotion (vtable, obj, objsize, has_references);
+}
+
+static SgenFragment*
+build_fragments_get_exclude_head (void)
+{
+       int i;
+       for (i = 0; i < MAX_AGE; ++i) {
+               /*If we OOM'd on the last collection ->end might be null while ->next not.*/
+               if (age_alloc_buffers [i].end)
+                       sgen_clear_range (age_alloc_buffers [i].next, age_alloc_buffers [i].end);
+       }
+
+       return collector_allocator.region_head;
+}
+
+static void
+build_fragments_release_exclude_head (void)
+{
+       sgen_fragment_allocator_release (&collector_allocator);
+}
+
+static void
+build_fragments_finish (SgenFragmentAllocator *allocator)
+{
+       /* We split the fragment list based on the promotion barrier. */
+       collector_allocator = *allocator;
+       fragment_list_split (&collector_allocator);
+}
+
+static void
+prepare_to_space (char *to_space_bitmap, size_t space_bitmap_size)
+{
+       SgenFragment **previous, *frag;
+
+       memset (to_space_bitmap, 0, space_bitmap_size);
+       memset (age_alloc_buffers, 0, sizeof (age_alloc_buffers));
+
+       previous = &collector_allocator.alloc_head;
+
+       for (frag = *previous; frag; frag = *previous) {
+               char *start = align_up (frag->fragment_next, SGEN_TO_SPACE_GRANULE_BITS);
+               char *end = align_down (frag->fragment_end, SGEN_TO_SPACE_GRANULE_BITS);
+
+               /* Fragment is too small to be usable. */
+               if ((end - start) < SGEN_MAX_NURSERY_WASTE) {
+                       sgen_clear_range (frag->fragment_next, frag->fragment_end);
+                       frag->fragment_next = frag->fragment_end = frag->fragment_start;
+                       *previous = frag->next;
+                       continue;
+               }
+
+               /*
+               We need to insert 3 phony objects so the fragments build step can correctly
+               walk the nursery.
+               */
+
+               /* Clean the fragment range. */
+               sgen_clear_range (start, end);
+               /* We need a phony object in between the original fragment start and the effective one. */
+               if (start != frag->fragment_next)
+                       sgen_clear_range (frag->fragment_next, start);
+               /* We need an phony object in between the new fragment end and the original fragment end. */
+               if (end != frag->fragment_end)
+                       sgen_clear_range (end, frag->fragment_end);
+
+               frag->fragment_start = frag->fragment_next = start;
+               frag->fragment_end = end;
+               mark_bits_in_range (to_space_bitmap, start, end);
+               previous = &frag->next;
+       }
+}
+
+static void
+clear_fragments (void)
+{
+       sgen_clear_allocator_fragments (&collector_allocator);
+}
+
+static void
+init_nursery (SgenFragmentAllocator *allocator, char *start, char *end)
+{
+       int alloc_quote = (int)((end - start) * alloc_ratio);
+       promotion_barrier = align_down (start + alloc_quote, 3);
+       sgen_fragment_allocator_add (allocator, start, promotion_barrier);
+       sgen_fragment_allocator_add (&collector_allocator, promotion_barrier, end);
+
+       region_age_size = (end - start) >> SGEN_TO_SPACE_GRANULE_BITS;
+       region_age = g_malloc0 (region_age_size);
+}
+
+static gboolean
+handle_gc_param (const char *opt)
+{
+       if (g_str_has_prefix (opt, "alloc-ratio=")) {
+               const char *arg = strchr (opt, '=') + 1;
+               int percentage = atoi (arg);
+               if (percentage < 1 || percentage > 100) {
+                       fprintf (stderr, "alloc-ratio must be an integer in the range 1-100.\n");
+                       exit (1);
+               }
+               alloc_ratio = (float)percentage / 100.0f;
+               return TRUE;
+       }
+
+       if (g_str_has_prefix (opt, "promotion-age=")) {
+               const char *arg = strchr (opt, '=') + 1;
+               promote_age = atoi (arg);
+               if (promote_age < 1 || promote_age >= MAX_AGE) {
+                       fprintf (stderr, "promotion-age must be an integer in the range 1-%d.\n", MAX_AGE - 1);
+                       exit (1);
+               }
+               return TRUE;
+       }
+       return FALSE;
+}
+
+static void
+print_gc_param_usage (void)
+{
+       fprintf (stderr,
+                       ""
+                       "  alloc-ratio=P (where P is a percentage, an integer in 1-100)\n"
+                       "  promotion-age=P (where P is a number, an integer in 1-%d)\n",
+                       MAX_AGE - 1
+                       );
+}
+
+/******************************************Copy/Scan functins ************************************************/
+
+#define SGEN_SPLIT_NURSERY
+
+#define SERIAL_COPY_OBJECT split_nursery_serial_copy_object
+#define SERIAL_COPY_OBJECT_FROM_OBJ split_nursery_serial_copy_object_from_obj
+
+#include "sgen-minor-copy-object.h"
+#include "sgen-minor-scan-object.h"
+
+void
+sgen_split_nursery_init (SgenMinorCollector *collector)
+{
+       collector->is_split = TRUE;
+
+       collector->alloc_for_promotion = minor_alloc_for_promotion;
+
+       collector->prepare_to_space = prepare_to_space;
+       collector->clear_fragments = clear_fragments;
+       collector->build_fragments_get_exclude_head = build_fragments_get_exclude_head;
+       collector->build_fragments_release_exclude_head = build_fragments_release_exclude_head;
+       collector->build_fragments_finish = build_fragments_finish;
+       collector->init_nursery = init_nursery;
+       collector->handle_gc_param = handle_gc_param;
+       collector->print_gc_param_usage = print_gc_param_usage;
+
+       FILL_MINOR_COLLECTOR_COPY_OBJECT (collector);
+       FILL_MINOR_COLLECTOR_SCAN_OBJECT (collector);
+}
+
+
+#endif
diff --git a/mono/sgen/sgen-tagged-pointer.h b/mono/sgen/sgen-tagged-pointer.h
new file mode 100644 (file)
index 0000000..2d55abb
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * sgen-tagged-pointer.h: Macros for tagging and untagging pointers.
+ *
+ * Copyright (C) 2014 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGEN_TAGGED_POINTER_H__
+#define __MONO_SGEN_TAGGED_POINTER_H__
+
+#define SGEN_TAGGED_POINTER_MASK       7
+
+#define SGEN_POINTER_IS_TAGGED_1(p)    ((mword)(p) & 1)
+#define SGEN_POINTER_TAG_1(p)          ((void*)((mword)(p) | 1))
+#define SGEN_POINTER_UNTAG_1(p)                ((void*)((mword)(p) & ~1))
+
+#define SGEN_POINTER_IS_TAGGED_2(p)    ((mword)(p) & 2)
+#define SGEN_POINTER_TAG_2(p)          ((void*)((mword)(p) | 2))
+#define SGEN_POINTER_UNTAG_2(p)                ((void*)((mword)(p) & ~2))
+
+#define SGEN_POINTER_TAG_12(p)         ((mword)(p) & 3)
+#define SGEN_POINTER_SET_TAG_12(p,t)   ((void*)(((mword)(p) & ~3) | (t)))
+
+#define SGEN_POINTER_IS_TAGGED_4(p)    ((mword)(p) & 4)
+#define SGEN_POINTER_TAG_4(p)          ((void*)((mword)(p) | 4))
+#define SGEN_POINTER_UNTAG_4(p)                ((void*)((mword)(p) & ~4))
+
+#define SGEN_POINTER_UNTAG_12(p)       ((void*)((mword)(p) & ~3))
+#define SGEN_POINTER_UNTAG_24(p)       ((void*)((mword)(p) & ~6))
+
+#define SGEN_POINTER_IS_TAGGED_ANY(p)  ((mword)(p) & SGEN_TAGGED_POINTER_MASK)
+#define SGEN_POINTER_UNTAG_ALL(p)      ((void*)((mword)(p) & ~SGEN_TAGGED_POINTER_MASK))
+
+#endif
diff --git a/mono/sgen/sgen-thread-pool.c b/mono/sgen/sgen-thread-pool.c
new file mode 100644 (file)
index 0000000..298eab9
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * sgen-thread-pool.c: Threadpool for all concurrent GC work.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-thread-pool.h"
+#include "mono/sgen/sgen-pointer-queue.h"
+#include "mono/utils/mono-mutex.h"
+#ifndef SGEN_WITHOUT_MONO
+#include "mono/utils/mono-threads.h"
+#endif
+
+static mono_mutex_t lock;
+static mono_cond_t work_cond;
+static mono_cond_t done_cond;
+
+static MonoNativeThreadId thread;
+
+/* Only accessed with the lock held. */
+static SgenPointerQueue job_queue;
+
+static SgenThreadPoolThreadInitFunc thread_init_func;
+static SgenThreadPoolIdleJobFunc idle_job_func;
+static SgenThreadPoolContinueIdleJobFunc continue_idle_job_func;
+
+enum {
+       STATE_WAITING,
+       STATE_IN_PROGRESS,
+       STATE_DONE
+};
+
+/* Assumes that the lock is held. */
+static SgenThreadPoolJob*
+get_job_and_set_in_progress (void)
+{
+       for (size_t i = 0; i < job_queue.next_slot; ++i) {
+               SgenThreadPoolJob *job = job_queue.data [i];
+               if (job->state == STATE_WAITING) {
+                       job->state = STATE_IN_PROGRESS;
+                       return job;
+               }
+       }
+       return NULL;
+}
+
+/* Assumes that the lock is held. */
+static ssize_t
+find_job_in_queue (SgenThreadPoolJob *job)
+{
+       for (ssize_t i = 0; i < job_queue.next_slot; ++i) {
+               if (job_queue.data [i] == job)
+                       return i;
+       }
+       return -1;
+}
+
+/* Assumes that the lock is held. */
+static void
+remove_job (SgenThreadPoolJob *job)
+{
+       ssize_t index;
+       SGEN_ASSERT (0, job->state == STATE_DONE, "Why are we removing a job that's not done?");
+       index = find_job_in_queue (job);
+       SGEN_ASSERT (0, index >= 0, "Why is the job we're trying to remove not in the queue?");
+       job_queue.data [index] = NULL;
+       sgen_pointer_queue_remove_nulls (&job_queue);
+       sgen_thread_pool_job_free (job);
+}
+
+static gboolean
+continue_idle_job (void)
+{
+       if (!continue_idle_job_func)
+               return FALSE;
+       return continue_idle_job_func ();
+}
+
+static mono_native_thread_return_t
+thread_func (void *thread_data)
+{
+       thread_init_func (thread_data);
+
+       mono_mutex_lock (&lock);
+       for (;;) {
+               /*
+                * It's important that we check the continue idle flag with the lock held.
+                * Suppose we didn't check with the lock held, and the result is FALSE.  The
+                * main thread might then set continue idle and signal us before we can take
+                * the lock, and we'd lose the signal.
+                */
+               gboolean do_idle = continue_idle_job ();
+               SgenThreadPoolJob *job = get_job_and_set_in_progress ();
+
+               if (!job && !do_idle) {
+                       /*
+                        * pthread_cond_wait() can return successfully despite the condition
+                        * not being signalled, so we have to run this in a loop until we
+                        * really have work to do.
+                        */
+                       mono_cond_wait (&work_cond, &lock);
+                       continue;
+               }
+
+               mono_mutex_unlock (&lock);
+
+               if (job) {
+                       job->func (thread_data, job);
+
+                       mono_mutex_lock (&lock);
+
+                       SGEN_ASSERT (0, job->state == STATE_IN_PROGRESS, "The job should still be in progress.");
+                       job->state = STATE_DONE;
+                       remove_job (job);
+                       /*
+                        * Only the main GC thread will ever wait on the done condition, so we don't
+                        * have to broadcast.
+                        */
+                       mono_cond_signal (&done_cond);
+               } else {
+                       SGEN_ASSERT (0, do_idle, "Why did we unlock if we still have to wait for idle?");
+                       SGEN_ASSERT (0, idle_job_func, "Why do we have idle work when there's no idle job function?");
+                       do {
+                               idle_job_func (thread_data);
+                               do_idle = continue_idle_job ();
+                       } while (do_idle && !job_queue.next_slot);
+
+                       mono_mutex_lock (&lock);
+
+                       if (!do_idle)
+                               mono_cond_signal (&done_cond);
+               }
+       }
+
+       return (mono_native_thread_return_t)0;
+}
+
+void
+sgen_thread_pool_init (int num_threads, SgenThreadPoolThreadInitFunc init_func, SgenThreadPoolIdleJobFunc idle_func, SgenThreadPoolContinueIdleJobFunc continue_idle_func, void **thread_datas)
+{
+       SGEN_ASSERT (0, num_threads == 1, "We only support 1 thread pool thread for now.");
+
+       mono_mutex_init (&lock);
+       mono_cond_init (&work_cond, NULL);
+       mono_cond_init (&done_cond, NULL);
+
+       thread_init_func = init_func;
+       idle_job_func = idle_func;
+       continue_idle_job_func = continue_idle_func;
+
+       mono_native_thread_create (&thread, thread_func, thread_datas ? thread_datas [0] : NULL);
+}
+
+SgenThreadPoolJob*
+sgen_thread_pool_job_alloc (const char *name, SgenThreadPoolJobFunc func, size_t size)
+{
+       SgenThreadPoolJob *job = sgen_alloc_internal_dynamic (size, INTERNAL_MEM_THREAD_POOL_JOB, TRUE);
+       job->name = name;
+       job->size = size;
+       job->state = STATE_WAITING;
+       job->func = func;
+       return job;
+}
+
+void
+sgen_thread_pool_job_free (SgenThreadPoolJob *job)
+{
+       sgen_free_internal_dynamic (job, job->size, INTERNAL_MEM_THREAD_POOL_JOB);
+}
+
+void
+sgen_thread_pool_job_enqueue (SgenThreadPoolJob *job)
+{
+       mono_mutex_lock (&lock);
+
+       sgen_pointer_queue_add (&job_queue, job);
+       /*
+        * FIXME: We could check whether there is a job in progress.  If there is, there's
+        * no need to signal the condition, at least as long as we have only one thread.
+        */
+       mono_cond_signal (&work_cond);
+
+       mono_mutex_unlock (&lock);
+}
+
+void
+sgen_thread_pool_job_wait (SgenThreadPoolJob *job)
+{
+       SGEN_ASSERT (0, job, "Where's the job?");
+
+       mono_mutex_lock (&lock);
+
+       while (find_job_in_queue (job) >= 0)
+               mono_cond_wait (&done_cond, &lock);
+
+       mono_mutex_unlock (&lock);
+}
+
+void
+sgen_thread_pool_idle_signal (void)
+{
+       SGEN_ASSERT (0, idle_job_func, "Why are we signaling idle without an idle function?");
+
+       mono_mutex_lock (&lock);
+
+       if (continue_idle_job_func ())
+               mono_cond_signal (&work_cond);
+
+       mono_mutex_unlock (&lock);
+}
+
+void
+sgen_thread_pool_idle_wait (void)
+{
+       SGEN_ASSERT (0, idle_job_func, "Why are we waiting for idle without an idle function?");
+
+       mono_mutex_lock (&lock);
+
+       while (continue_idle_job_func ())
+               mono_cond_wait (&done_cond, &lock);
+
+       mono_mutex_unlock (&lock);
+}
+
+void
+sgen_thread_pool_wait_for_all_jobs (void)
+{
+       mono_mutex_lock (&lock);
+
+       while (!sgen_pointer_queue_is_empty (&job_queue))
+               mono_cond_wait (&done_cond, &lock);
+
+       mono_mutex_unlock (&lock);
+}
+
+gboolean
+sgen_thread_pool_is_thread_pool_thread (MonoNativeThreadId some_thread)
+{
+       return some_thread == thread;
+}
+
+#endif
diff --git a/mono/sgen/sgen-thread-pool.h b/mono/sgen/sgen-thread-pool.h
new file mode 100644 (file)
index 0000000..4dcb3a9
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * sgen-thread-pool.h: Threadpool for all concurrent GC work.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGEN_THREAD_POOL_H__
+#define __MONO_SGEN_THREAD_POOL_H__
+
+typedef struct _SgenThreadPoolJob SgenThreadPoolJob;
+
+typedef void (*SgenThreadPoolJobFunc) (void *thread_data, SgenThreadPoolJob *job);
+
+struct _SgenThreadPoolJob {
+       const char *name;
+       SgenThreadPoolJobFunc func;
+       size_t size;
+       volatile gint32 state;
+};
+
+typedef void (*SgenThreadPoolThreadInitFunc) (void*);
+typedef void (*SgenThreadPoolIdleJobFunc) (void*);
+typedef gboolean (*SgenThreadPoolContinueIdleJobFunc) (void);
+
+void sgen_thread_pool_init (int num_threads, SgenThreadPoolThreadInitFunc init_func, SgenThreadPoolIdleJobFunc idle_func, SgenThreadPoolContinueIdleJobFunc continue_idle_func, void **thread_datas);
+
+SgenThreadPoolJob* sgen_thread_pool_job_alloc (const char *name, SgenThreadPoolJobFunc func, size_t size);
+/* This only needs to be called on jobs that are not enqueued. */
+void sgen_thread_pool_job_free (SgenThreadPoolJob *job);
+
+void sgen_thread_pool_job_enqueue (SgenThreadPoolJob *job);
+/* This must only be called after the job has been enqueued. */
+void sgen_thread_pool_job_wait (SgenThreadPoolJob *job);
+
+void sgen_thread_pool_idle_signal (void);
+void sgen_thread_pool_idle_wait (void);
+
+void sgen_thread_pool_wait_for_all_jobs (void);
+
+gboolean sgen_thread_pool_is_thread_pool_thread (MonoNativeThreadId thread);
+
+#endif
diff --git a/mono/sgen/sgen-workers.c b/mono/sgen/sgen-workers.c
new file mode 100644 (file)
index 0000000..e7a003b
--- /dev/null
@@ -0,0 +1,400 @@
+/*
+ * sgen-workers.c: Worker threads for parallel and concurrent GC.
+ *
+ * Copyright 2001-2003 Ximian, Inc
+ * Copyright 2003-2010 Novell, Inc.
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+#ifdef HAVE_SGEN_GC
+
+#include <string.h>
+
+#include "mono/sgen/sgen-gc.h"
+#include "mono/sgen/sgen-workers.h"
+#include "mono/sgen/sgen-thread-pool.h"
+#include "mono/utils/mono-membar.h"
+#include "mono/sgen/sgen-client.h"
+
+static int workers_num;
+static WorkerData *workers_data;
+
+static SgenSectionGrayQueue workers_distribute_gray_queue;
+static gboolean workers_distribute_gray_queue_inited;
+
+/*
+ * Allowed transitions:
+ *
+ * | from \ to          | NOT WORKING | WORKING | WORK ENQUEUED | NURSERY COLLECTION |
+ * |--------------------+-------------+---------+---------------+--------------------|
+ * | NOT WORKING        | -           | -       | main          | main               |
+ * | WORKING            | worker      | -       | main          | main               |
+ * | WORK ENQUEUED      | -           | worker  | -             | main               |
+ * | NURSERY COLLECTION | -           | -       | main          | -                  |
+ *
+ * The WORK ENQUEUED state guarantees that the worker thread will inspect the queue again at
+ * least once.  Only after looking at the queue will it go back to WORKING, and then,
+ * eventually, to NOT WORKING.  After enqueuing work the main thread transitions the state
+ * to WORK ENQUEUED.  Signalling the worker thread to wake up is only necessary if the old
+ * state was NOT WORKING.
+ */
+
+enum {
+       STATE_NOT_WORKING,
+       STATE_WORKING,
+       STATE_WORK_ENQUEUED,
+       STATE_NURSERY_COLLECTION
+};
+
+typedef gint32 State;
+
+static volatile State workers_state;
+
+static SgenObjectOperations * volatile idle_func_object_ops;
+
+static guint64 stat_workers_num_finished;
+
+static gboolean
+set_state (State old_state, State new_state)
+{
+       SGEN_ASSERT (0, old_state != new_state, "Why are we transitioning to the same state?");
+       if (new_state == STATE_NOT_WORKING)
+               SGEN_ASSERT (0, old_state == STATE_WORKING, "We can only transition to NOT WORKING from WORKING");
+       else if (new_state == STATE_WORKING)
+               SGEN_ASSERT (0, old_state == STATE_WORK_ENQUEUED, "We can only transition to WORKING from WORK ENQUEUED");
+       if (new_state == STATE_NOT_WORKING || new_state == STATE_WORKING)
+               SGEN_ASSERT (6, sgen_thread_pool_is_thread_pool_thread (mono_native_thread_id_get ()), "Only the worker thread is allowed to transition to NOT_WORKING or WORKING");
+
+       return InterlockedCompareExchange (&workers_state, new_state, old_state) == old_state;
+}
+
+static void
+assert_nursery_collection (State state)
+{
+       SGEN_ASSERT (0, state == STATE_NURSERY_COLLECTION, "Must be in the nursery collection state");
+}
+
+static gboolean
+state_is_working_or_enqueued (State state)
+{
+       return state == STATE_WORKING || state == STATE_WORK_ENQUEUED;
+}
+
+static void
+workers_signal_enqueue_work (gboolean from_nursery_collection)
+{
+       State old_state;
+       gboolean did_set_state;
+
+       do {
+               old_state = workers_state;
+
+               if (from_nursery_collection)
+                       assert_nursery_collection (old_state);
+               else
+                       SGEN_ASSERT (0, old_state != STATE_NURSERY_COLLECTION, "If we're not in a nursery collection, how come the state is NURSERY COLLECTION?");
+
+               if (old_state == STATE_WORK_ENQUEUED)
+                       break;
+
+               did_set_state = set_state (old_state, STATE_WORK_ENQUEUED);
+               if (from_nursery_collection)
+                       SGEN_ASSERT (0, did_set_state, "Nobody else should be mutating the state");
+       } while (!did_set_state);
+
+       if (!state_is_working_or_enqueued (old_state))
+               sgen_thread_pool_idle_signal ();
+}
+
+void
+sgen_workers_ensure_awake (void)
+{
+       SGEN_ASSERT (0, workers_state != STATE_NURSERY_COLLECTION, "Can't wake workers during nursery collection");
+       workers_signal_enqueue_work (FALSE);
+}
+
+static void
+worker_try_finish (void)
+{
+       State old_state;
+
+       ++stat_workers_num_finished;
+
+       do {
+               old_state = workers_state;
+
+               SGEN_ASSERT (0, old_state != STATE_NOT_WORKING, "How did we get from doing idle work to NOT WORKING without setting it ourselves?");
+               if (old_state == STATE_NURSERY_COLLECTION)
+                       return;
+               if (old_state == STATE_WORK_ENQUEUED)
+                       return;
+               SGEN_ASSERT (0, old_state == STATE_WORKING, "What other possibility is there?");
+
+               /* We are the last thread to go to sleep. */
+       } while (!set_state (old_state, STATE_NOT_WORKING));
+}
+
+static gboolean
+collection_needs_workers (void)
+{
+       return sgen_collection_is_concurrent ();
+}
+
+void
+sgen_workers_enqueue_job (SgenThreadPoolJob *job)
+{
+       if (!collection_needs_workers ()) {
+               job->func (NULL, job);
+               sgen_thread_pool_job_free (job);
+               return;
+       }
+
+       sgen_thread_pool_job_enqueue (job);
+}
+
+void
+sgen_workers_wait_for_jobs_finished (void)
+{
+       sgen_thread_pool_wait_for_all_jobs ();
+       /*
+        * If the idle task was never triggered or it finished before the last job did and
+        * then didn't get triggered again, we might end up in the situation of having
+        * something in the gray queue yet the idle task not working.  The easiest way to
+        * make sure this doesn't stay that way is to just trigger it again after all jobs
+        * have finished.
+        */
+       sgen_workers_ensure_awake ();
+}
+
+void
+sgen_workers_signal_start_nursery_collection_and_wait (void)
+{
+       State old_state;
+
+       do {
+               old_state = workers_state;
+
+               if (old_state != STATE_NOT_WORKING)
+                       SGEN_ASSERT (0, old_state != STATE_NURSERY_COLLECTION, "Why are we transitioning to NURSERY COLLECTION when we're already there?");
+       } while (!set_state (old_state, STATE_NURSERY_COLLECTION));
+
+       sgen_thread_pool_idle_wait ();
+
+       assert_nursery_collection (workers_state);
+}
+
+void
+sgen_workers_signal_finish_nursery_collection (void)
+{
+       assert_nursery_collection (workers_state);
+       workers_signal_enqueue_work (TRUE);
+}
+
+static gboolean
+workers_get_work (WorkerData *data)
+{
+       SgenMajorCollector *major;
+
+       g_assert (sgen_gray_object_queue_is_empty (&data->private_gray_queue));
+
+       /* If we're concurrent, steal from the workers distribute gray queue. */
+       major = sgen_get_major_collector ();
+       if (major->is_concurrent) {
+               GrayQueueSection *section = sgen_section_gray_queue_dequeue (&workers_distribute_gray_queue);
+               if (section) {
+                       sgen_gray_object_enqueue_section (&data->private_gray_queue, section);
+                       return TRUE;
+               }
+       }
+
+       /* Nobody to steal from */
+       g_assert (sgen_gray_object_queue_is_empty (&data->private_gray_queue));
+       return FALSE;
+}
+
+static void
+concurrent_enqueue_check (char *obj)
+{
+       g_assert (sgen_concurrent_collection_in_progress ());
+       g_assert (!sgen_ptr_in_nursery (obj));
+       g_assert (SGEN_LOAD_VTABLE (obj));
+}
+
+static void
+init_private_gray_queue (WorkerData *data)
+{
+       sgen_gray_object_queue_init (&data->private_gray_queue,
+                       sgen_get_major_collector ()->is_concurrent ? concurrent_enqueue_check : NULL);
+}
+
+static void
+thread_pool_init_func (void *data_untyped)
+{
+       WorkerData *data = data_untyped;
+       SgenMajorCollector *major = sgen_get_major_collector ();
+
+       sgen_client_thread_register_worker ();
+
+       if (!major->is_concurrent)
+               return;
+
+       init_private_gray_queue (data);
+}
+
+static gboolean
+continue_idle_func (void)
+{
+       return state_is_working_or_enqueued (workers_state);
+}
+
+static void
+marker_idle_func (void *data_untyped)
+{
+       WorkerData *data = data_untyped;
+
+       if (!continue_idle_func ())
+               return;
+
+       SGEN_ASSERT (0, sgen_concurrent_collection_in_progress (), "The worker should only mark in concurrent collections.");
+       SGEN_ASSERT (0, sgen_get_current_collection_generation () != GENERATION_NURSERY, "Why are we doing work while there's a nursery collection happening?");
+
+       if (workers_state == STATE_WORK_ENQUEUED) {
+               set_state (STATE_WORK_ENQUEUED, STATE_WORKING);
+               SGEN_ASSERT (0, workers_state != STATE_NOT_WORKING, "How did we get from WORK ENQUEUED to NOT WORKING?");
+       }
+
+       if (!sgen_gray_object_queue_is_empty (&data->private_gray_queue) || workers_get_work (data)) {
+               ScanCopyContext ctx = CONTEXT_FROM_OBJECT_OPERATIONS (idle_func_object_ops, &data->private_gray_queue);
+
+               SGEN_ASSERT (0, !sgen_gray_object_queue_is_empty (&data->private_gray_queue), "How is our gray queue empty if we just got work?");
+
+               sgen_drain_gray_stack (32, ctx);
+       } else {
+               worker_try_finish ();
+       }
+}
+
+static void
+init_distribute_gray_queue (void)
+{
+       if (workers_distribute_gray_queue_inited) {
+               g_assert (sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue));
+               g_assert (workers_distribute_gray_queue.locked);
+               return;
+       }
+
+       sgen_section_gray_queue_init (&workers_distribute_gray_queue, TRUE,
+                       sgen_get_major_collector ()->is_concurrent ? concurrent_enqueue_check : NULL);
+       workers_distribute_gray_queue_inited = TRUE;
+}
+
+void
+sgen_workers_init_distribute_gray_queue (void)
+{
+       SGEN_ASSERT (0, sgen_get_major_collector ()->is_concurrent && collection_needs_workers (),
+                       "Why should we init the distribute gray queue if we don't need it?");
+       init_distribute_gray_queue ();
+}
+
+void
+sgen_workers_init (int num_workers)
+{
+       int i;
+       void *workers_data_ptrs [num_workers];
+
+       if (!sgen_get_major_collector ()->is_concurrent) {
+               sgen_thread_pool_init (num_workers, thread_pool_init_func, NULL, NULL, NULL);
+               return;
+       }
+
+       //g_print ("initing %d workers\n", num_workers);
+
+       workers_num = num_workers;
+
+       workers_data = sgen_alloc_internal_dynamic (sizeof (WorkerData) * num_workers, INTERNAL_MEM_WORKER_DATA, TRUE);
+       memset (workers_data, 0, sizeof (WorkerData) * num_workers);
+
+       init_distribute_gray_queue ();
+
+       for (i = 0; i < workers_num; ++i)
+               workers_data_ptrs [i] = &workers_data [i];
+
+       sgen_thread_pool_init (num_workers, thread_pool_init_func, marker_idle_func, continue_idle_func, workers_data_ptrs);
+
+       mono_counters_register ("# workers finished", MONO_COUNTER_GC | MONO_COUNTER_ULONG, &stat_workers_num_finished);
+}
+
+void
+sgen_workers_start_all_workers (SgenObjectOperations *object_ops)
+{
+       if (!collection_needs_workers ())
+               return;
+
+       idle_func_object_ops = object_ops;
+       mono_memory_write_barrier ();
+
+       workers_signal_enqueue_work (FALSE);
+}
+
+void
+sgen_workers_join (void)
+{
+       int i;
+
+       SGEN_ASSERT (0, workers_state != STATE_NURSERY_COLLECTION, "Can't be in nursery collection when joining");
+
+       if (!collection_needs_workers ())
+               return;
+
+       sgen_thread_pool_wait_for_all_jobs ();
+       sgen_thread_pool_idle_wait ();
+       SGEN_ASSERT (0, workers_state == STATE_NOT_WORKING, "Can only signal enqueue work when in no work state");
+
+       /* At this point all the workers have stopped. */
+
+       SGEN_ASSERT (0, sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue), "Why is there still work left to do?");
+       for (i = 0; i < workers_num; ++i)
+               SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&workers_data [i].private_gray_queue), "Why is there still work left to do?");
+}
+
+gboolean
+sgen_workers_all_done (void)
+{
+       return workers_state == STATE_NOT_WORKING;
+}
+
+/* Must only be used for debugging */
+gboolean
+sgen_workers_are_working (void)
+{
+       return state_is_working_or_enqueued (workers_state);
+}
+
+void
+sgen_workers_wait (void)
+{
+       sgen_thread_pool_idle_wait ();
+       SGEN_ASSERT (0, sgen_workers_all_done (), "Why are the workers not done after we wait for them?");
+}
+
+SgenSectionGrayQueue*
+sgen_workers_get_distribute_section_gray_queue (void)
+{
+       return &workers_distribute_gray_queue;
+}
+
+#endif
diff --git a/mono/sgen/sgen-workers.h b/mono/sgen/sgen-workers.h
new file mode 100644 (file)
index 0000000..82cf26d
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * sgen-workers.c: Worker threads for parallel and concurrent GC.
+ *
+ * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright (C) 2012 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_SGEN_WORKER_H__
+#define __MONO_SGEN_WORKER_H__
+
+#include "mono/sgen/sgen-thread-pool.h"
+
+typedef struct _WorkerData WorkerData;
+struct _WorkerData {
+       SgenGrayQueue private_gray_queue; /* only read/written by worker thread */
+};
+
+void sgen_workers_init (int num_workers);
+void sgen_workers_start_all_workers (SgenObjectOperations *object_ops);
+void sgen_workers_ensure_awake (void);
+void sgen_workers_init_distribute_gray_queue (void);
+void sgen_workers_enqueue_job (SgenThreadPoolJob *job);
+void sgen_workers_wait_for_jobs_finished (void);
+void sgen_workers_distribute_gray_queue_sections (void);
+void sgen_workers_reset_data (void);
+void sgen_workers_join (void);
+gboolean sgen_workers_all_done (void);
+gboolean sgen_workers_are_working (void);
+void sgen_workers_wait (void);
+SgenSectionGrayQueue* sgen_workers_get_distribute_section_gray_queue (void);
+
+void sgen_workers_signal_start_nursery_collection_and_wait (void);
+void sgen_workers_signal_finish_nursery_collection (void);
+
+#endif
index 64931531a347c4ca2777077281e2266b3b8b716f..7d2e1acde3927d18df8577cd5817208a22cd9e02 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIRS = cas assemblyresolve gc-descriptors
+SUBDIRS = assemblyresolve gc-descriptors
 
 check-local: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test-cattr-type-load test-reflection-load-with-context test_platform test-process-exit test-messages rm-empty-logs
 check-full: test-sgen check-local
@@ -179,6 +179,8 @@ BASE_TEST_CS_SRC=           \
        delegate7.cs            \
        delegate8.cs            \
        delegate9.cs            \
+       delegate10.cs           \
+       delegate11.cs           \
        remoting1.cs            \
        remoting2.cs            \
        remoting3.cs            \
@@ -308,6 +310,7 @@ BASE_TEST_CS_SRC=           \
        generic-typedef.2.cs    \
        generic-marshalbyref.2.cs       \
        generic-xdomain.2.cs    \
+       dynamic-generic-size.cs \
        bug-431413.2.cs \
        bug-459285.2.cs \
        generic-virtual-invoke.2.cs     \
@@ -1290,7 +1293,7 @@ if NACL_CODEGEN
 test-generic-sharing:
 else
 test-generic-sharing:
-       @if test x$(M) != x; then $(MAKE) test-generic-sharing-managed; else $(MAKE) test-generic-sharing-normal; fi
+       @if test x$(M) != x0; then $(MAKE) test-generic-sharing-managed; else $(MAKE) test-generic-sharing-normal; fi
 endif
 
 EXTRA_DIST += async-exceptions.cs
diff --git a/mono/tests/cas/.gitignore b/mono/tests/cas/.gitignore
deleted file mode 100644 (file)
index b336cc7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/Makefile
-/Makefile.in
diff --git a/mono/tests/cas/ChangeLog b/mono/tests/cas/ChangeLog
deleted file mode 100644 (file)
index 02d0242..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-2009-10-03  Zoltan Varga  <vargaz@gmail.com>
-
-       * */Makefile.am: Get rid of net 1.1 stuff.
-
-2008-11-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * */Makefile.am: Dont compile with --security as this fails under
-       Win32 and this is *not* what we want to test here anyway
-
-2008-10-10  Zoltan Varga  <vargaz@gmail.com>
-
-       * */Makefile.am: Use 'net_1_1' instead of 'default'.
-
-2008-10-08  Zoltan Varga  <vargaz@gmail.com>
-
-       * Makefile.am: Use 'net_1_1' instead of 'default'.
-
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Remove 'check-local' target so these tests don't get
-       run as part of 'make check' (the runtime tests)
-
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Rename 'all' target so tests aren't compiled at build time.
-       Remove 'clean' target so that clean gets propogated to SUBDIRS.
-
-2006-06-22  Wade Berrier <wberrier@novell.com>
-
-       * svn:ignore: Ignore Makefile and Makefile.in for this and 
-       each subdir
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Updated Makefile to add the CAS tests to the tarball
-       and enable them to be more broadly tested;
-       * Makefile: Removed and replaced by Makefile.am
-
-2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile: Added tests from demand directory to execution.
-
-2005-03-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile: This makefiles calls all CAS tests (in subdirectories) 
-       that shouldn't fail in SVN. It can be called to see if any regressions
-       occured that affects the security manager.
diff --git a/mono/tests/cas/Makefile.am b/mono/tests/cas/Makefile.am
deleted file mode 100644 (file)
index 8c610b7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
-
-RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug --security
-
-CSCOMPILE = gmcs -debug
-PROFILE = net_2_0
-
-SUBDIRS = assembly linkdemand inheritance demand threads
-
-# Uncomment this for these tests to be for for 'make check'
-#check-local: test
-
-test:
-       @failed=0;      \
-       passed=0;       \
-       for i in $(SUBDIRS); do \
-               cd $$i; \
-               $(MAKE) test;   \
-               if [ "$$?" != "0" ]; then       \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} $$i"; \
-               fi;     \
-               cd ..;  \
-       done;   \
-       if [ "$${failed}" == "0" ]; then        \
-               echo -e "Perfect score :-)";    \
-       else    \
-               echo -e "Failure(s) in category:";      \
-               for i in $${failed_tests};      \
-                       do echo -e "\t$${i}";   \
-               done;   \
-               exit 1; \
-       fi
diff --git a/mono/tests/cas/appdomain/ChangeLog b/mono/tests/cas/appdomain/ChangeLog
deleted file mode 100644 (file)
index 5fb0f06..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-2005-06-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile: Added quota. Removed XML files generation.
-       * quota.cs: New. Test if the restricted appdomain allows the # Kb of 
-       IsolatedStorage.
-       * README: Updated informations (quota and default policies).
-       * sandbox.cs: Updated to support the "default" named permissions set
-       (now) included with Mono. Support for loading XML policy files is 
-       still available (but somewhat buggy at the moment).
-
-2005-05-17  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile: Fixed (and more useful).
-
-2005-05-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ChangeLog: New. Track changes.
-       * Makefile: New. Build sandboxes and tests.
-       * makepol.cs: New.
-       * README: New. Instruction about the sandboxes and tests.
-       * sandbox.cs: New. Creates a policy (XML) restricted sandbox to 
-       execute assemblies.
-       * whoami.cs: New. Sample to run under a sandbox.
diff --git a/mono/tests/cas/appdomain/Makefile b/mono/tests/cas/appdomain/Makefile
deleted file mode 100644 (file)
index f937987..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# Postprocessed with patch-quiet.sh
-RUNTIME = mono --debug
-CAS_RUNTIME = $(RUNTIME) --security
-CSCOMPILE = gmcs -debug
-PROFILE = net_2_0
-
-all:   sandbox.exe whoami.exe quota.exe
-
-aot:   sandbox.exe.so whoami.exe.so quota.exe.so
-
-TEST_FILES = whoami.exe sandbox.exe "sandbox.exe whoami.exe"
-TEST_POLICIES = @Fulltrust @LocalIntranet @Internet @SkipVerification @Execution @Nothing @Everything
-
-run: all
-       @for p in $(TEST_POLICIES); do  \
-               for i in $(TEST_FILES); do      \
-                       echo -e "TESTING: $(RUNTIME) sandbox.exe $$p $$i";      \
-                       $(CAS_RUNTIME) sandbox.exe $$p $$i;     \
-               done; \
-       done;
-
-test: run
-# todo
-
-clean:
-       rm -f *.exe* *.dll* *.snk
-
-%.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@
-
-makepol.exe: makepol.cs
-       $(CSCOMPILE) $^ /out:$@ -r:System.dll -r:System.Drawing.dll
-
-%.exe.so: %.exe
-       $(RUNTIME) --aot $^
diff --git a/mono/tests/cas/appdomain/README b/mono/tests/cas/appdomain/README
deleted file mode 100644 (file)
index 699fa77..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-AppDomain sandboxes
-
-
-* makepol.cs:  Create some XML policy files to be used with the sandboxes.
-               DEPRECATED as Mono now creates the default sets itself.
-* sandbox.cs:  Create a policy-restricted appdomain to execute assemblies.
-
-
-Samples
-
-* whoami.cs:   Sample code that can be executed under a sandbox.
-* quota.cs:    Sample code to test for a isolated storage quota permission.
-
-
-More informations:
-
-* http://blogs.msdn.com/shawnfa/archive/2004/10/25/247379.aspx
-* http://blogs.msdn.com/shawnfa/archive/2004/10/22/246549.aspx 
-
-
-Expected Results
-
-               FullTrust       Intranet        Internet        Execution       Nothing
-sandbox                ok              ok              ok              ok              fail [1]
-whoami         ok              ok              fail            fail            fail [1]
-sandbox whoami ok              fail            fail            fail            fail [1]
-
-
-
-Notes
-
-[1]    This should be a "PolicyException: Execution permission cannot be 
-       acquired." but it's a SecurityException on Mono (atm).
diff --git a/mono/tests/cas/appdomain/makepol.cs b/mono/tests/cas/appdomain/makepol.cs
deleted file mode 100644 (file)
index 6a67c44..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Drawing.Printing;
-using System.Net;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Policy;
-
-class Program {
-
-       static PermissionSet CreatePermissionSet (string name)
-       {
-               return new NamedPermissionSet (name, PermissionState.None);
-       }
-
-       static void Save (string filename, PermissionSet ps)
-       {
-               using (StreamWriter sw = new StreamWriter (filename)) {
-                       sw.WriteLine (ps.ToXml ().ToString ());
-                       sw.Close ();
-               }
-       }
-
-       public static void FullTrust ()
-       {
-               PermissionSet ps = new NamedPermissionSet ("FullTrust", PermissionState.Unrestricted);
-               Save ("fulltrust.xml", ps);
-       }
-
-       public static void LocalIntranet ()
-       {
-               PermissionSet ps = CreatePermissionSet ("LocalIntranet");
-
-               ps.AddPermission (new EnvironmentPermission (EnvironmentPermissionAccess.Read, "USERNAME;USER"));
-
-               ps.AddPermission (new FileDialogPermission (PermissionState.Unrestricted));
-
-               IsolatedStorageFilePermission isfp = new IsolatedStorageFilePermission (PermissionState.None);
-               isfp.UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser;
-               isfp.UserQuota = Int64.MaxValue;
-               ps.AddPermission (isfp);
-
-               ps.AddPermission (new ReflectionPermission (ReflectionPermissionFlag.ReflectionEmit));
-
-               SecurityPermissionFlag spf = SecurityPermissionFlag.Execution | SecurityPermissionFlag.Assertion;
-               ps.AddPermission (new SecurityPermission (spf));
-
-               ps.AddPermission (new UIPermission (PermissionState.Unrestricted));
-
-               ps.AddPermission (new DnsPermission (PermissionState.Unrestricted));
-
-               ps.AddPermission (new PrintingPermission (PrintingPermissionLevel.DefaultPrinting));
-
-               ps.AddPermission (new EventLogPermission (EventLogPermissionAccess.Instrument, "."));
-
-               Save ("intranet.xml", ps);
-       }
-
-       public static void Internet ()
-       {
-               PermissionSet ps = CreatePermissionSet ("Internet");
-
-               ps.AddPermission (new FileDialogPermission (FileDialogPermissionAccess.Open));
-
-               IsolatedStorageFilePermission isfp = new IsolatedStorageFilePermission (PermissionState.None);
-               isfp.UsageAllowed = IsolatedStorageContainment.DomainIsolationByUser;
-               isfp.UserQuota = 10240;
-               ps.AddPermission (isfp);
-
-               ps.AddPermission (new SecurityPermission (SecurityPermissionFlag.Execution));
-
-               ps.AddPermission (new UIPermission (UIPermissionWindow.SafeTopLevelWindows, UIPermissionClipboard.OwnClipboard));
-
-               ps.AddPermission (new PrintingPermission (PrintingPermissionLevel.SafePrinting));
-
-               Save ("internet.xml", ps);
-       }
-
-       public static void Execution ()
-       {
-               PermissionSet ps = CreatePermissionSet ("Execution");
-
-               ps.AddPermission (new SecurityPermission (SecurityPermissionFlag.Execution));
-
-               Save ("execution.xml", ps);
-       }
-
-       public static void Nothing ()
-       {
-               PermissionSet ps = CreatePermissionSet ("Nothing");
-               Save ("nothing.xml", ps);
-       }
-
-       static int Main (string[] args)
-       {
-               Console.WriteLine ("NOTE: All files are for test purposes only!");
-               Console.WriteLine ("Creating the FullTrust default permissions file...");
-               FullTrust ();
-               Console.WriteLine ("Creating the Local Intranet default permissions file...");
-               LocalIntranet ();
-               Console.WriteLine ("Creating the Internet default permissions file...");
-               Internet ();
-               Console.WriteLine ("Creating the Execution default permissions file...");
-               Execution ();
-               Console.WriteLine ("Creating the Nothing default permissions file...");
-               Nothing ();
-               Console.WriteLine ("Completed.");
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/appdomain/quota.cs b/mono/tests/cas/appdomain/quota.cs
deleted file mode 100644 (file)
index e36e862..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-class Program {
-
-       static void Main (string[] args) 
-       {
-               long quota = 0;
-               if (args.Length > 0)
-                       quota = Convert.ToInt64 (args [0]);
-
-               IsolatedStorageFilePermission isfp = new IsolatedStorageFilePermission (PermissionState.None);
-               isfp.UserQuota = quota;
-               try {
-                       isfp.Demand ();
-                       Console.WriteLine ("Quota accepted for {0}.", quota);
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("Quota refused for {0}\n{1}", quota, se);
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("Error checking quota for {0}\n{1}", quota, e);
-               }
-       }
-}
diff --git a/mono/tests/cas/appdomain/sandbox.cs b/mono/tests/cas/appdomain/sandbox.cs
deleted file mode 100644 (file)
index 756bb1f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-using System;
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Policy;
-
-class Program {
-
-       // note: you cannot load a file directly into a PermissionSet
-       // but we can hack around this by using PermissionSetAttribute ;-)
-       static PermissionSet LoadFromFile (string filename)
-       {
-               // the SecurityAction is meaningless here
-               PermissionSetAttribute psa = new PermissionSetAttribute (SecurityAction.Demand);
-               psa.File = filename;
-               return psa.CreatePermissionSet ();
-       }
-
-       // source: http://blogs.msdn.com/shawnfa/archive/2004/10/22/246549.aspx 
-       static PermissionSet GetNamedPermissionSet (string name)
-       {
-               bool foundName = false;
-               PermissionSet pset = new PermissionSet (PermissionState.Unrestricted);
-
-               IEnumerator e = SecurityManager.PolicyHierarchy ();
-               while (e.MoveNext ()) {
-                       PolicyLevel pl = e.Current as PolicyLevel;
-
-                       PermissionSet levelpset = pl.GetNamedPermissionSet (name);
-                       if ((levelpset != null) && (pset != null)) {
-                               foundName = true;
-                               pset = pset.Intersect (levelpset);
-                       }
-               }
-
-               if (pset == null || !foundName)
-                       return new PermissionSet (PermissionState.None);
-
-               return new NamedPermissionSet (name, pset);
-       }
-
-       // source: http://blogs.msdn.com/shawnfa/archive/2004/10/25/247379.aspx
-       static AppDomain CreateRestrictedDomain (string filename)
-       {
-               PermissionSet emptySet = new PermissionSet (PermissionState.None);
-               PolicyStatement emptyPolicy = new PolicyStatement (emptySet);
-               UnionCodeGroup root = new UnionCodeGroup (new AllMembershipCondition (), emptyPolicy);
-
-               PermissionSet userSet = null;
-               if (filename [0] == '@')
-                       userSet = GetNamedPermissionSet (filename.Substring (1));
-               else
-                       userSet = LoadFromFile (filename);
-
-               PolicyStatement userPolicy = new PolicyStatement (userSet);
-               root.AddChild (new UnionCodeGroup (new AllMembershipCondition (), userPolicy));
-
-               PolicyLevel pl = PolicyLevel.CreateAppDomainLevel ();
-               pl.RootCodeGroup = root;
-
-               AppDomain ad = AppDomain.CreateDomain ("Restricted");
-               ad.SetAppDomainPolicy (pl);
-               return ad;
-       }
-
-       static int Main (string[] args)
-       {
-               switch (args.Length) {
-               case 0:
-                       Console.WriteLine ("Create a restricted sandbox to execute an assembly.");
-                       Console.WriteLine ("Usage: mono sandbox.exe [@namedpermissionset | permissionset.xml] assembly.exe [parameters ...]");
-                       return 0;
-               case 1:
-                       Console.WriteLine ("Using default (current) appdomain to load '{0}'...", args [0]);
-                       return AppDomain.CurrentDomain.ExecuteAssembly (args [0]);
-               case 2:
-                       AppDomain ad = CreateRestrictedDomain (args [0]);
-                       return ad.ExecuteAssembly (args [1]);
-               default:
-                       ad = CreateRestrictedDomain (args [0]);
-                       string[] newargs = new string [args.Length - 2];
-                       for (int i=2; i < args.Length; i++)
-                               newargs [i-2] = args [i];
-                       return ad.ExecuteAssembly (args [1], null, newargs);
-               }
-       }
-}
diff --git a/mono/tests/cas/appdomain/whoami.cs b/mono/tests/cas/appdomain/whoami.cs
deleted file mode 100644 (file)
index a89489c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Security;
-
-class Program {
-
-       static int Main (string[] args)
-       {
-               try {
-                       Console.WriteLine (Environment.UserName);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("---{0}{1}{0}---", Environment.NewLine, se);
-                       return 1;
-               }
-       }
-}
diff --git a/mono/tests/cas/assembly/.gitattributes b/mono/tests/cas/assembly/.gitattributes
deleted file mode 100644 (file)
index 69bbc58..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/all.cs -crlf
-/min.cs -crlf
-/none.cs -crlf
-/opt.cs -crlf
-/ref.cs -crlf
diff --git a/mono/tests/cas/assembly/.gitignore b/mono/tests/cas/assembly/.gitignore
deleted file mode 100644 (file)
index cf8aa26..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/Makefile.in
-/Makefile
-/*.exe
-/*.mdb
-/*.tmp
diff --git a/mono/tests/cas/assembly/ChangeLog b/mono/tests/cas/assembly/ChangeLog
deleted file mode 100644 (file)
index 14265da..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-2007-08-01  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * all.net_1_1.txt, min.net_1_1.txt, none.net_1_1.txt, opt.net_1_1.txt,
-       ref.net_1_1.txt: Update expected results for the newer version of 
-       permview
-
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Use mcs and permview from the mcs tree instead of
-       what's in the path.  Rename targets so tests are not compiled at
-       build time.
-
-2006-06-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Use mono-wrapper (and not the installed mono).
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Include the reference templates in the tarball.
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Updated Makefile to add the CAS tests to the tarball
-       and enable them to be more broadly tested;
-       * Makefile: Removed and replaced by Makefile.am
-
-2005-02-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * all.cs: New. Test file with attributes for RequestMinimum, 
-       RequestOptional and RequestRefuse.
-       * all.net_1_1.txt: New. Expected output when "make test" is used in
-       the NET_1_1 profile.
-       * Makefile: New. Makefile to build and execute tests.
-       * min.cs: New. Test file with attribute for RequestMinimum (only).
-       * min.net_1_1.txt: New. Expected output when "make test" is used in
-       the NET_1_1 profile.
-       * none.cs: New. Test file with no security declarative attribute on
-       assembly.
-       * none.net_1_1.txt: New. Expected output when "make test" is used in
-       the NET_1_1 profile.
-       * opt.cs: New. Test file with attribute for RequestOptional (only).
-       * opt.net_1_1.txt: New. Expected output when "make test" is used in
-       the NET_1_1 profile.
-       * README: Instruction and details about the tests.
-       * ref.cs: New. Test file with attribute for RequestRefuse (only).
-       * ref.net_1_1.txt: New. Expected output when "make test" is used in
-       the NET_1_1 profile.
diff --git a/mono/tests/cas/assembly/Makefile.am b/mono/tests/cas/assembly/Makefile.am
deleted file mode 100644 (file)
index 76bb0c4..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
-
-RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug
-
-CAS_RUNTIME = $(RUNTIME) --security
-
-CSCOMPILE = $(RUNTIME) $(mcs_topdir)/class/lib/basic/mcs.exe -debug
-PERMVIEW = $(RUNTIME) $(mcs_topdir)/tools/security/permview.exe
-PROFILE = net_2_0
-
-tests: all.exe min.exe opt.exe ref.exe none.exe
-
-aot: all.exe.so min.exe.so opt.exe.so ref.exe.so none.exe.so
-
-TEST_FILES = all min opt ref none
-EXTRA_DIST=all.cs min.cs opt.cs ref.cs none.cs \
-       all.net_1_1.txt min.net_1_1.txt opt.net_1_1.txt ref.net_1_1.txt none.net_1_1.txt
-
-# Only make sense on a 2.0 runtime
-run: all
-       @for i in $(TEST_FILES); do     \
-               $(CAS_RUNTIME) $$i.exe; \
-       done;
-
-# Templates are checked into SVN, for each profile, to detect regressions
-# That's why they aren't removed by "make clean"
-templates: all
-       @for i in $(TEST_FILES); do     \
-               $(PERMVIEW) /output $$i.$(PROFILE).txt $$i.exe > /dev/null;     \
-       done;
-
-test: tests
-       @failed=0; \
-       passed=0; \
-       for i in $(TEST_FILES); do      \
-               $(PERMVIEW) /output $$i.$(PROFILE).tmp $$i.exe > /dev/null;     \
-               cmp -s $$i.$(PROFILE).tmp $$i.$(PROFILE).txt;   \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "$$i\tpass";    \
-                       passed=`expr $${passed} + 1`; \
-               else    \
-                       echo -e "$$i\tFAIL ($$?)";      \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} $$i"; \
-               fi;     \
-       done;   \
-       echo -e "\n$${passed} test(s) passed. $${failed} test(s) failed."; \
-       if [ "$${failed}" != "0" ]; then        \
-               echo -e "Failed tests are:";    \
-               for i in $${failed_tests};      \
-                       do echo -e "\t$${i}";   \
-               done;   \
-               exit 1; \
-       fi
-
-clean:
-       rm -f *.exe* *.tmp
-
-%.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@
-
-%.exe.so: %.exe
-       $(RUNTIME) --aot $^
diff --git a/mono/tests/cas/assembly/README b/mono/tests/cas/assembly/README
deleted file mode 100644 (file)
index e55d67f..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Tests for assembly-level security actions. The assembly request* actions can
-only be used declaratively.
-
-all.exe
-* test for SecurityAction.RequestMinimum
-* test for SecurityAction.RequestOptional
-* test for SecurityAction.RequestRefuse
-
-min.exe
-* test for SecurityAction.RequestMinimum
-
-opt.exe
-* test for SecurityAction.RequestOptional
-
-ref.exe
-* test for SecurityAction.RequestRefuse
-
-none.exe
-* test that all three requests are empty.
-
-
-Each file can be executed but no results will be visible (unless running on
-Fx 2.0 later than beta1). Testing the files can be done using the Makefile
-which use the security tool permview.
diff --git a/mono/tests/cas/assembly/all.cs b/mono/tests/cas/assembly/all.cs
deleted file mode 100644 (file)
index 2e89f3a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestMinimum, Execution=true)]
-//[assembly: PermissionSet (SecurityAction.RequestOptional, Unrestricted=true)]
-[assembly: SecurityPermission (SecurityAction.RequestOptional, Flags=SecurityPermissionFlag.AllFlags)]
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification=true)]
-
-public class Program {
-
-       static public int Main (string[] args)
-       {
-               object[] attrs = Assembly.GetExecutingAssembly ().GetCustomAttributes (false);
-               for (int i = 0; i < attrs.Length; i++) {
-                       if (attrs [i] is PermissionSetAttribute) {\r
-                               PermissionSetAttribute psa = (attrs [i] as PermissionSetAttribute);\r
-                               Console.WriteLine ("{0} - {1}", psa.Action, psa.CreatePermissionSet ());\r
-                       } else if (attrs [i] is SecurityAttribute) {\r
-                               SecurityAttribute sa = (attrs [i] as SecurityAttribute);\r
-                               IPermission p = sa.CreatePermission ();\r
-                               PermissionSet ps = new PermissionSet (PermissionState.None);\r
-                               ps.AddPermission (p);\r
-                               Console.WriteLine ("{0} - {1}", sa.Action, ps);\r
-                       } else {
-                               Console.WriteLine (attrs [i]);
-                       }
-               }
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/assembly/all.net_1_1.txt b/mono/tests/cas/assembly/all.net_1_1.txt
deleted file mode 100644 (file)
index 2c1d247..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Minimal Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1">
-   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                version="1"
-                Flags="Execution"/>
-</PermissionSet>
-
-Optional Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1">
-   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                version="1"
-                Unrestricted="true"/>
-</PermissionSet>
-
-Refused Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1">
-   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                version="1"
-                Flags="SkipVerification"/>
-</PermissionSet>
-
diff --git a/mono/tests/cas/assembly/min.cs b/mono/tests/cas/assembly/min.cs
deleted file mode 100644 (file)
index f867f3e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestMinimum, Execution=true)]
-
-public class Program {
-
-       static public int Main (string[] args)
-       {
-               object[] attrs = Assembly.GetExecutingAssembly ().GetCustomAttributes (false);
-               for (int i = 0; i < attrs.Length; i++) {
-                       if (attrs [i] is PermissionSetAttribute) {\r
-                               PermissionSetAttribute psa = (attrs [i] as PermissionSetAttribute);\r
-                               Console.WriteLine ("{0} - {1}", psa.Action, psa.CreatePermissionSet ());\r
-                       } else if (attrs [i] is SecurityAttribute) {\r
-                               SecurityAttribute sa = (attrs [i] as SecurityAttribute);\r
-                               IPermission p = sa.CreatePermission ();\r
-                               PermissionSet ps = new PermissionSet (PermissionState.None);\r
-                               ps.AddPermission (p);\r
-                               Console.WriteLine ("{0} - {1}", sa.Action, ps);\r
-                       } else {
-                               Console.WriteLine (attrs [i]);
-                       }
-               }
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/assembly/min.net_1_1.txt b/mono/tests/cas/assembly/min.net_1_1.txt
deleted file mode 100644 (file)
index aa452a4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Minimal Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1">
-   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                version="1"
-                Flags="Execution"/>
-</PermissionSet>
-
-Optional Permission Set:
-       Not specified.
-
-Refused Permission Set:
-       Not specified.
-
diff --git a/mono/tests/cas/assembly/none.cs b/mono/tests/cas/assembly/none.cs
deleted file mode 100644 (file)
index 13ad3b1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification=true)]
-
-public class Program {
-
-       static public int Main (string[] args)
-       {
-               object[] attrs = Assembly.GetExecutingAssembly ().GetCustomAttributes (false);
-               for (int i = 0; i < attrs.Length; i++) {
-                       if (attrs [i] is PermissionSetAttribute) {\r
-                               PermissionSetAttribute psa = (attrs [i] as PermissionSetAttribute);\r
-                               Console.WriteLine ("{0} - {1}", psa.Action, psa.CreatePermissionSet ());\r
-                       } else if (attrs [i] is SecurityAttribute) {\r
-                               SecurityAttribute sa = (attrs [i] as SecurityAttribute);\r
-                               IPermission p = sa.CreatePermission ();\r
-                               PermissionSet ps = new PermissionSet (PermissionState.None);\r
-                               ps.AddPermission (p);\r
-                               Console.WriteLine ("{0} - {1}", sa.Action, ps);\r
-                       } else {
-                               Console.WriteLine (attrs [i]);
-                       }
-               }
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/assembly/none.net_1_1.txt b/mono/tests/cas/assembly/none.net_1_1.txt
deleted file mode 100644 (file)
index b58905e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Minimal Permission Set:
-       Not specified.
-
-Optional Permission Set:
-       Not specified.
-
-Refused Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1">
-   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                version="1"
-                Flags="SkipVerification"/>
-</PermissionSet>
-
diff --git a/mono/tests/cas/assembly/opt.cs b/mono/tests/cas/assembly/opt.cs
deleted file mode 100644 (file)
index 72826d4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: PermissionSet (SecurityAction.RequestOptional, Unrestricted=true)]
-
-public class Program {
-
-       static public int Main (string[] args)
-       {
-               object[] attrs = Assembly.GetExecutingAssembly ().GetCustomAttributes (false);
-               for (int i = 0; i < attrs.Length; i++) {
-                       if (attrs [i] is PermissionSetAttribute) {\r
-                               PermissionSetAttribute psa = (attrs [i] as PermissionSetAttribute);\r
-                               Console.WriteLine ("{0} - {1}", psa.Action, psa.CreatePermissionSet ());\r
-                       } else if (attrs [i] is SecurityAttribute) {\r
-                               SecurityAttribute sa = (attrs [i] as SecurityAttribute);\r
-                               IPermission p = sa.CreatePermission ();\r
-                               PermissionSet ps = new PermissionSet (PermissionState.None);\r
-                               ps.AddPermission (p);\r
-                               Console.WriteLine ("{0} - {1}", sa.Action, ps);\r
-                       } else {
-                               Console.WriteLine (attrs [i]);
-                       }
-               }
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/assembly/opt.net_1_1.txt b/mono/tests/cas/assembly/opt.net_1_1.txt
deleted file mode 100644 (file)
index 014fd7f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Minimal Permission Set:
-       Not specified.
-
-Optional Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1"
-               Unrestricted="true"/>
-
-Refused Permission Set:
-       Not specified.
-
diff --git a/mono/tests/cas/assembly/ref.cs b/mono/tests/cas/assembly/ref.cs
deleted file mode 100644 (file)
index 13ad3b1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification=true)]
-
-public class Program {
-
-       static public int Main (string[] args)
-       {
-               object[] attrs = Assembly.GetExecutingAssembly ().GetCustomAttributes (false);
-               for (int i = 0; i < attrs.Length; i++) {
-                       if (attrs [i] is PermissionSetAttribute) {\r
-                               PermissionSetAttribute psa = (attrs [i] as PermissionSetAttribute);\r
-                               Console.WriteLine ("{0} - {1}", psa.Action, psa.CreatePermissionSet ());\r
-                       } else if (attrs [i] is SecurityAttribute) {\r
-                               SecurityAttribute sa = (attrs [i] as SecurityAttribute);\r
-                               IPermission p = sa.CreatePermission ();\r
-                               PermissionSet ps = new PermissionSet (PermissionState.None);\r
-                               ps.AddPermission (p);\r
-                               Console.WriteLine ("{0} - {1}", sa.Action, ps);\r
-                       } else {
-                               Console.WriteLine (attrs [i]);
-                       }
-               }
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/assembly/ref.net_1_1.txt b/mono/tests/cas/assembly/ref.net_1_1.txt
deleted file mode 100644 (file)
index b58905e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Minimal Permission Set:
-       Not specified.
-
-Optional Permission Set:
-       Not specified.
-
-Refused Permission Set:
-<PermissionSet class="System.Security.PermissionSet"
-               version="1">
-   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                version="1"
-                Flags="SkipVerification"/>
-</PermissionSet>
-
diff --git a/mono/tests/cas/demand/.gitignore b/mono/tests/cas/demand/.gitignore
deleted file mode 100644 (file)
index 263a09f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/Makefile.in
-/Makefile
-/*.mdb
-/*.exe
diff --git a/mono/tests/cas/demand/ChangeLog b/mono/tests/cas/demand/ChangeLog
deleted file mode 100644 (file)
index 8402dea..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Use mcs from the mcs tree instead of
-       what's in the path.  Rename targets so tests are not compiled at
-       build time.
-
-2006-06-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Use mono-wrapper (and not the installed mono).
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Updated Makefile to add the CAS tests to the tarball
-       and enable them to be more broadly tested;
-       * Makefile: Removed and replaced by Makefile.am
-
-2005-05-09  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * pinvoke1-3.cs: Fixed RunningOnWindows to run under NET_2_0.
-       * Makefile: Changed --debug for -debug to avoid compiler warning.
-
-2005-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * pinvoke1-3.cs: Changed RunningOnMono for RunningOnWindows as it's an
-       OS issue not a runtime issue being tested.
-
-2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * pinvoke1-3.cs: New. Tests that P/Invoking unmanaged methods provoke
-       a stack walk (Demand) for SecurityPermissionFlag.UnmanagedCode.
-       * sucs1-4.cs: New. Tests that [SuppressUnmanagedCodeSecurity] removes
-       the stack walk when present on either the p/invoked definition or on
-       it's class.
-       * Makefile: New. Build/execute new tests.
-       * README: New. Instruction and details about the tests.
diff --git a/mono/tests/cas/demand/Makefile.am b/mono/tests/cas/demand/Makefile.am
deleted file mode 100644 (file)
index 9321b1d..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
-
-RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug
-
-CAS_RUNTIME = $(RUNTIME) --security
-
-CSCOMPILE = $(RUNTIME) $(mcs_topdir)/class/lib/basic/mcs.exe -debug
-PROFILE = net_2_0
-
-EXTRA_DIST = pinvoke1.cs pinvoke2.cs pinvoke3.cs \
-       sucs1.cs sucs2.cs sucs3.cs sucs4.cs \
-       selfassert.cs selfdeny.cs selfpermit.cs
-
-tests: pinvoke1.exe pinvoke2.exe pinvoke3.exe \
-       sucs1.exe sucs2.exe sucs3.exe sucs4.exe \
-       selfassert.exe selfdeny.exe selfpermit.exe
-
-aot:   pinvoke1.exe.so pinvoke2.exe.so pinvoke3.exe.so \
-       sucs1.exe.so sucs2.exe.so sucs3.exe.so sucs4.exe.so \
-       selfassert.exe.so selfdeny.exe.so selfpermit.exe.so
-
-FULLTRUST_TEST_FILES = pinvoke1 pinvoke2 pinvoke3 \
-       sucs1 sucs2 sucs3 sucs4 \
-       selfassert selfdeny selfpermit
-
-UNHANDLED_TEST_FILES = 
-
-run: tests
-       @for i in $(FULLTRUST_TEST_FILES); do   \
-               $(CAS_RUNTIME) $$i.exe; \
-       done;
-       @for i in $(INTERNET_TEST_FILES); do    \
-               MONO_CAS_ZONE=Internet $(CAS_RUNTIME) $$i.exe;  \
-       done;
-
-test: tests
-       @failed=0; \
-       passed=0; \
-       for i in $(FULLTRUST_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "fulltrust-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               else    \
-                       echo -e "fulltrust-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} fulltrust-$$i"; \
-               fi;     \
-       done;   \
-       for i in $(UNHANDLED_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "unhandled-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} unhandled-$$i"; \
-               else    \
-                       echo -e "unhandled-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               fi;     \
-       done;   \
-       echo -e "\n$${passed} test(s) passed. $${failed} test(s) failed."; \
-       if [ "$${failed}" != "0" ]; then        \
-               echo -e "Failed tests are:";    \
-               for i in $${failed_tests};      \
-                       do echo -e "\t$${i}";   \
-               done;   \
-               exit 1; \
-       fi
-
-clean:
-       rm -f *.exe* *.dll* *.snk
-
-%.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@
-
-%.exe.so: %.exe
-       $(RUNTIME) --aot $^
diff --git a/mono/tests/cas/demand/README b/mono/tests/cas/demand/README
deleted file mode 100644 (file)
index 0a389f2..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-* Demand
-
-** P/Invoke
-
-pinvoke1.cs    Successful p/invoke
-pinvoke2.cs    p/invoke denied (Deny) at class level
-pinvoke3.cs    p/invoke denied (Deny) at method level
-
-Notes
-- We do not try to refuse UnmanagedCode (RequestRefused) at assembly level
-  because this would fail at the LinkDemand level (which is tested elsewhere)
-- With Mono runtime the native function getuid is called in libc
-- With MS runtime the native function GetTickCount is called in kernel32.dll
-
-
-** [SuppressUnmanagedCodeSecurity] a.k.a. SUCS
-
-Test the automatic demand generated for P/Invoking when 
-[SuppressUnmanagedCodeSecurity] is being used to suppress it.
-
-sucs1.cs       Call native code without any [SUCS] attribute (fails).
-sucs2.cs       Call native code with a [SUCS] attribute at class level.
-sucs3.cs       Call native code with a [SUCS] attribute at method level.
-sucs4.cs       Call native code with [SUCS] attributes at both class and 
-               method level.
-
-Notes
-- With Mono runtime the native function getuid is called in libc
-- With MS runtime the native function GetTickCount is called in kernel32.dll
-
-
-** Self
-
-Stack walk starts at the caller frame - i.e. the current frame is ignored. The
-self*.cs tests ensure that the walk starts at the right frame (or at least 
-that it ignore the caller frame).
-
-selfassert.cs  Deny on caller, Assert and Demand on callee. Assert is 
-               ignored, Demand is executed and fail on caller's Deny.
-selfdeny.cs    Deny and Demand on the same frame. Deny is ignored. Demand is
-               executed (stack walk).
-selfpermit.cs  PermitOnly Unmanaged, Demand ControlAppDomain. PermitOnly is
-               ignored and Demand (for ControlAppDomain) succeed.
diff --git a/mono/tests/cas/demand/pinvoke1.cs b/mono/tests/cas/demand/pinvoke1.cs
deleted file mode 100644 (file)
index 0508d11..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnWindows ()
-       {
-               int p = (int) Environment.OSVersion.Platform;
-               bool win = ((p != 4) && (p != 128));
-               Console.WriteLine ("Running on {0}...", Environment.OSVersion);
-               return win;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnWindows () ? GetTickCount () : getuid ());
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/pinvoke2.cs b/mono/tests/cas/demand/pinvoke2.cs
deleted file mode 100644 (file)
index 6e2823e..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-[SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnWindows ()
-       {
-               int p = (int) Environment.OSVersion.Platform;
-               bool win = ((p != 4) && (p != 128));
-               Console.WriteLine ("Running on {0}...", Environment.OSVersion);
-               return win;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnWindows () ? GetTickCount () : getuid ());
-                       Console.WriteLine ("*1* P/Invoke: {0}", u);
-                       return 1;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/pinvoke3.cs b/mono/tests/cas/demand/pinvoke3.cs
deleted file mode 100644 (file)
index 4825551..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnWindows ()
-       {
-               int p = (int) Environment.OSVersion.Platform;
-               bool win = ((p != 4) && (p != 128));
-               Console.WriteLine ("Running on {0}...", Environment.OSVersion);
-               return win;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnWindows () ? GetTickCount () : getuid ());
-                       Console.WriteLine ("*1* P/Invoke: {0}", u);
-                       return 1;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/selfassert.cs b/mono/tests/cas/demand/selfassert.cs
deleted file mode 100644 (file)
index 740ebe0..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.Assert, UnmanagedCode=true)]
-       [SecurityPermission (SecurityAction.Demand, UnmanagedCode=true)]
-       static int Test ()
-       {
-               return 1;
-       }
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       static int Main ()
-       {
-               int result = 2;
-               try {
-                       result = Test ();
-                       Console.WriteLine ("*1* Unexpected call to Test");
-               }
-               catch (SecurityException se) {
-                       result = 0;
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-               }
-               return result;
-       }
-}
diff --git a/mono/tests/cas/demand/selfdeny.cs b/mono/tests/cas/demand/selfdeny.cs
deleted file mode 100644 (file)
index 98fc405..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       [SecurityPermission (SecurityAction.Demand, UnmanagedCode=true)]
-       static int Test ()
-       {
-               Console.WriteLine ("*0* Expected call to Test()");
-               return 0;
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/selfpermit.cs b/mono/tests/cas/demand/selfpermit.cs
deleted file mode 100644 (file)
index 5ee50e7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.PermitOnly, UnmanagedCode=true)]
-       [SecurityPermission (SecurityAction.Demand, ControlAppDomain=true)]
-       static int Test ()
-       {
-               Console.WriteLine ("*0* Expected call to Test()");
-               return 0;
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/sucs1.cs b/mono/tests/cas/demand/sucs1.cs
deleted file mode 100644 (file)
index 40bd783..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*1* P/Invoke: {0}", u);
-                       return 1;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/sucs2.cs b/mono/tests/cas/demand/sucs2.cs
deleted file mode 100644 (file)
index ba3109c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-[SuppressUnmanagedCodeSecurity]
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/sucs3.cs b/mono/tests/cas/demand/sucs3.cs
deleted file mode 100644 (file)
index c8aaec2..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       [SuppressUnmanagedCodeSecurity]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       [SuppressUnmanagedCodeSecurity]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/demand/sucs4.cs b/mono/tests/cas/demand/sucs4.cs
deleted file mode 100644 (file)
index bb147f6..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-[SuppressUnmanagedCodeSecurity]
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       [SuppressUnmanagedCodeSecurity]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       [SuppressUnmanagedCodeSecurity]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/inheritance/.gitignore b/mono/tests/cas/inheritance/.gitignore
deleted file mode 100644 (file)
index 6542b5b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/Makefile
-/Makefile.in
-/*.mdb
-/*.exe
-/*.dll
diff --git a/mono/tests/cas/inheritance/ChangeLog b/mono/tests/cas/inheritance/ChangeLog
deleted file mode 100644 (file)
index 468fffd..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Use mcs from the mcs tree instead of
-       what's in the path.  Rename targets so tests are not compiled at
-       build time.
-
-2006-06-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Use mono-wrapper (and not the installed mono).
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Updated Makefile to add the CAS tests to the tarball
-       and enable them to be more broadly tested;
-       * Makefile: Removed and replaced by Makefile.am
-
-2006-06-06  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * notused.cs, reftype1-4.cs: Fix compiler warnings.
-
-2005-08-30  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * reftype1.cs: More detailled ouput.
-       * reftype3.cs: More detailled ouput.
-       * Makefile: Use -debug instead of --debug to suppress warnings
-
-2005-02-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * cas1.cs: New. StrongNameIdentityPermission at class level;
-       * cas2.cs: New. StrongNameIdentityPermission on virtual method;
-       * cas3.cs: New. StrongNameIdentityPermission on interface method;
-       * cas.snk: New. StrongName keypair to sign cas#.cs test cases.
-       * Makefile: New. Makefile to build and execute tests.
-       * noncas1.cs: New. PrincipalPermission on class level (work);
-       * noncas2.cs: New. PrincipalPermission on class level (fail);
-       * noncas3.cs: New. PrincipalPermission at method level (work);
-       * noncas4.cs: New. PrincipalPermission at method level (fail);
-       * notused.cs: New. Inheritance demands on non-used class/methods and
-       to non-applicable targets (work).
-       * README: New. Instruction and details about the tests.
diff --git a/mono/tests/cas/inheritance/Makefile.am b/mono/tests/cas/inheritance/Makefile.am
deleted file mode 100644 (file)
index ead054e..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
-
-RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug
-
-CAS_RUNTIME = $(RUNTIME) --security
-
-CSCOMPILE = $(RUNTIME) $(mcs_topdir)/class/lib/basic/mcs.exe -debug
-PROFILE = net_2_0
-
-EXTRA_DIST = notused.cs cas1.cs cas2.cs cas3.cs \
-       noncas1.cs noncas2.cs noncas3.cs noncas4.cs \
-       refload1.cs refload2.cs refload3.cs refload4.cs \
-       reftype1.cs reftype2.cs reftype3.cs reftype4.cs \
-       library1.cs library2.cs cas.snk
-
-tests: notused.exe cas1a.exe cas2a.exe cas3a.exe \
-       cas1b.exe cas2b.exe cas3b.exe \
-       noncas1.exe noncas2.exe noncas3.exe noncas4.exe \
-       refload1.exe refload2.exe refload3.exe refload4.exe \
-       reftype1.exe reftype2.exe reftype3.exe reftype4.exe \
-       library1a.dll library1b.dll library2a.dll library2b.dll
-
-aot:   notused.exe.so cas1a.exe.so cas2a.exe.so cas3a.exe.so \
-       cas1b.exe.so cas2b.exe.so cas3b.exe.so \
-       noncas1.exe.so noncas2.exe.so noncas3.exe.so noncas4.exe.so \
-       refload1.exe.so refload2.exe.so refload3.exe.so refload4.exe.so \
-       reftype1.exe.so reftype2.exe.so reftype3.exe.so reftype4.exe.so \
-       library1a.dll.so library1b.dll.so library2a.dll.so library2b.dll.so
-
-FULLTRUST_TEST_FILES = notused cas1b cas2b cas3b noncas2 noncas4 \
-       refload1 refload2 refload3 refload4 \
-       reftype1 reftype2 reftype3 reftype4
-
-UNHANDLED_TEST_FILES = cas1a cas2a cas3a noncas1 noncas3
-
-INTERNET_TEST_FILES = 
-
-run: tests
-       @for i in $(FULLTRUST_TEST_FILES); do   \
-               $(CAS_RUNTIME) $$i.exe; \
-       done;
-       @for i in $(INTERNET_TEST_FILES); do    \
-               MONO_CAS_ZONE=Internet $(CAS_RUNTIME) $$i.exe;  \
-       done;
-
-test: tests
-       @failed=0; \
-       passed=0; \
-       for i in $(FULLTRUST_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "fulltrust-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               else    \
-                       echo -e "fulltrust-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} fulltrust-$$i"; \
-               fi;     \
-       done;   \
-       for i in $(UNHANDLED_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "unhandled-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} unhandled-$$i"; \
-               else    \
-                       echo -e "unhandled-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               fi;     \
-       done;   \
-       echo -e "\n$${passed} test(s) passed. $${failed} test(s) failed."; \
-       if [ "$${failed}" != "0" ]; then        \
-               echo -e "Failed tests are:";    \
-               for i in $${failed_tests};      \
-                       do echo -e "\t$${i}";   \
-               done;   \
-               exit 1; \
-       fi
-
-clean:
-       rm -f *.exe* *.dll*
-
-%.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@
-
-%a.dll: %.cs
-       $(CSCOMPILE) /target:library $< /out:$@
-
-%b.dll: %.cs 
-       $(CSCOMPILE) /target:library $< /out:$@ /keyfile:$</../cas.snk
-
-%a.exe: %.cs 
-       $(CSCOMPILE) $< /out:$@
-
-%b.exe: %.cs
-       $(CSCOMPILE) $< /out:$@ /keyfile:$</../cas.snk
-
-%.exe.so: %.exe
-       $(RUNTIME) --aot $^
diff --git a/mono/tests/cas/inheritance/README b/mono/tests/cas/inheritance/README
deleted file mode 100644 (file)
index 21e8aaa..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-* InheritanceDemand
-
-notused.cs     StrongNameIdentityPermission on unused class, members ...
-
-cas1.cs                StrongNameIdentityPermission on abstract class
-cas2.cs                StrongNameIdentityPermission on virtual method
-cas3.cs                StrongNameIdentityPermission on interface member
-
-The cas#.cs tests are compiled two times. The first time (a) they aren't 
-strongnamed (and not even delay-signed) using the cas.snk keypair. The second
-time (b) they are strongnamed using cas.snk.
-
-noncas1.cs     Non CAS (PrincipalPermission) on class (failure)
-noncas2.cs     Non CAS (PrincipalPermission) on class (success)
-noncas3.cs     Non CAS (PrincipalPermission) on method (failure)
-noncas4.cs     Non CAS (PrincipalPermission) on method (success)
-
-refload1.cs    Load assembly library1a (success)
-refload2.cs    Load assembly library1b (success)
-refload3.cs    Load assembly library2a (success)
-refload4.cs    Load assembly library2b (success)
-reftype1.cs    Load assembly library1a and access it's types
-reftype2.cs    Load assembly library1b and access it's types
-reftype3.cs    Load assembly library2a and access it's types
-reftype4.cs    Load assembly library2b and access it's types
-library1.cs    Inheritance (StrongName) on a class
-library2.cs    Inheritance (StrongName) on a method
-
-The library#.cs assemblies are compiled two times. The first time (a) they 
-aren't strongnamed (and not even delay-signed) using the cas.snk keypair. The
-second time (b) it is strongnamed using cas.snk.
-
-
-Notes
-
-* Inheritance checks are done at load time so SecurityException are mostly
-  uncatchable (unhandled) - except when reflection is being used.
-
-* Changing SecurityManager.SecurityEnabled has _NO_ effect on 
-  InheritanceDemand, even for classes that aren't yet loaded.
diff --git a/mono/tests/cas/inheritance/cas.snk b/mono/tests/cas/inheritance/cas.snk
deleted file mode 100644 (file)
index e928afd..0000000
Binary files a/mono/tests/cas/inheritance/cas.snk and /dev/null differ
diff --git a/mono/tests/cas/inheritance/cas1.cs b/mono/tests/cas/inheritance/cas1.cs
deleted file mode 100644 (file)
index d23cd37..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-public abstract class AbstractProgram {
-
-       int rc;
-
-       internal static bool IsSigned ()
-       {
-               AssemblyName an = Assembly.GetExecutingAssembly ().GetName ();
-               byte[] pk = an.GetPublicKey ();
-               return ((pk != null) && (pk.Length > 0));
-       }
-
-       public AbstractProgram ()
-       {
-               rc = IsSigned () ? 0 : 1;
-               Console.WriteLine ("*{0}* AbstractProgram", rc);
-       }
-
-       public int InstanceTest ()
-       {
-               return rc;
-       }
-}
-
-public class Program : AbstractProgram {
-
-       static int Test ()
-       {
-               return new Program ().InstanceTest ();
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       // if unsigned the SecurityException will be unhandled
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/cas2.cs b/mono/tests/cas/inheritance/cas2.cs
deleted file mode 100644 (file)
index 5b67636..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public abstract class AbstractProgram {
-
-       protected int rc;
-
-       internal static bool IsSigned ()
-       {
-               AssemblyName an = Assembly.GetExecutingAssembly ().GetName ();
-               byte[] pk = an.GetPublicKey ();
-               return ((pk != null) && (pk.Length > 0));
-       }
-
-       public AbstractProgram ()
-       {
-               rc = IsSigned () ? 0 : 1;
-               Console.WriteLine ("*{0}* AbstractProgram", rc);
-       }
-
-       [StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-       public virtual int InstanceTest ()
-       {
-               return rc;
-       }
-}
-
-public class Program : AbstractProgram {
-
-       public override int InstanceTest ()
-       {
-               // exception even if base class isn't called
-               return rc;
-       }
-
-       static int Main ()
-       {
-               try {
-                       return new Program ().InstanceTest ();
-               }
-               catch (SecurityException se) {
-                       // if unsigned the SecurityException will be unhandled
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/cas3.cs b/mono/tests/cas/inheritance/cas3.cs
deleted file mode 100644 (file)
index 775774f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public interface IProgram {
-
-       [StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-       int InstanceTest ();
-}
-
-public class Program : IProgram {
-
-       static bool IsSigned ()
-       {
-               AssemblyName an = Assembly.GetExecutingAssembly ().GetName ();
-               return (an.GetPublicKey () != null);
-       }
-
-       int rc;
-
-       public Program ()
-       {
-               rc = IsSigned () ? 0 : 1;
-               Console.WriteLine ("*{0}* AbstractProgram", rc);
-       }
-
-       public int InstanceTest ()
-       {
-               return rc;
-       }
-
-       static int Test ()
-       {
-               return new Program ().InstanceTest ();
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       // if unsigned the SecurityException will be unhandled
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/library1.cs b/mono/tests/cas/inheritance/library1.cs
deleted file mode 100644 (file)
index 85cfde0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Security.Permissions;
-using System.Security.Principal;
-
-[StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-public abstract class BaseInheritanceDemand {
-
-       public virtual int Test () 
-       {
-               return 1;
-       }
-}
-
-public class InheritanceDemand : BaseInheritanceDemand {
-
-       public override int Test ()
-       {
-               Console.WriteLine ("*1* [this should NOT print]");
-               return base.Test ();
-       }
-}
-
-public class NoSecurity {
-
-       public int Test ()
-       {
-               Console.WriteLine ("*0* [this should print]");
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/inheritance/library2.cs b/mono/tests/cas/inheritance/library2.cs
deleted file mode 100644 (file)
index a22299e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Security.Permissions;
-using System.Security.Principal;
-
-public abstract class BaseInheritanceDemand {
-
-       [StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-       public virtual int Test () 
-       {
-               return 1;
-       }
-}
-
-public class InheritanceDemand : BaseInheritanceDemand {
-
-       public override int Test ()
-       {
-               Console.WriteLine ("*1* [this should NOT print]");
-               return base.Test ();
-       }
-}
-
-public class NoSecurity {
-
-       public int Test ()
-       {
-               Console.WriteLine ("*0* [this should print]");
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/inheritance/noncas1.cs b/mono/tests/cas/inheritance/noncas1.cs
deleted file mode 100644 (file)
index 8e96dc2..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-
-[PrincipalPermission (SecurityAction.InheritanceDemand, Name="me", Role="mono hacker")]
-class BaseInheritanceDemand {
-
-       public void Test () 
-       {
-               Console.WriteLine ("*1* [this should NOT print]");
-       }
-}
-
-class InheritanceDemand : BaseInheritanceDemand {
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       new InheritanceDemand ().Test ();
-                       // this makes unhandled fails in the Makefile
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       // actually we'll get an unhandled exception unless the
-                       // user is called "me" and part of the "mono hacker" group
-                       Console.WriteLine ("*2* Unexpected SecurityException\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/noncas2.cs b/mono/tests/cas/inheritance/noncas2.cs
deleted file mode 100644 (file)
index cbabf65..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-
-[PrincipalPermission (SecurityAction.InheritanceDemand, Authenticated=false)]
-class BaseInheritanceDemand {
-
-       public void Test () 
-       {
-               Console.WriteLine ("*0* [this should print]");
-       }
-}
-
-class InheritanceDemand : BaseInheritanceDemand {
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       new InheritanceDemand ().Test ();
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/noncas3.cs b/mono/tests/cas/inheritance/noncas3.cs
deleted file mode 100644 (file)
index ed6b1fe..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-
-class BaseInheritanceDemand {
-
-       [PrincipalPermission (SecurityAction.InheritanceDemand, Name="me", Role="mono hacker")]
-       public virtual void Test () 
-       {
-               Console.WriteLine ("*1* BaseInheritanceDemand.Test [this should NOT print]");
-       }
-}
-
-class InheritanceDemand : BaseInheritanceDemand {
-
-       public override void Test () 
-       {
-               base.Test ();
-       }
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       new InheritanceDemand ().Test ();
-                       // this makes unhandled fails in the Makefile
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       // actually we'll get an unhandled exception unless the
-                       // user is called "me" and part of the "mono hacker" group
-                       Console.WriteLine ("*2* Unexpected SecurityException\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/noncas4.cs b/mono/tests/cas/inheritance/noncas4.cs
deleted file mode 100644 (file)
index 178d87d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-
-class BaseInheritanceDemand {
-
-       [PrincipalPermission (SecurityAction.InheritanceDemand, Authenticated=false)]
-       public virtual void Test () 
-       {
-               Console.WriteLine ("*0* BaseInheritanceDemand.Test [this should print]");
-       }
-}
-
-class InheritanceDemand : BaseInheritanceDemand {
-
-       public override void Test () 
-       {
-               base.Test ();
-       }
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       new InheritanceDemand ().Test ();
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/notused.cs b/mono/tests/cas/inheritance/notused.cs
deleted file mode 100644 (file)
index 72b0a21..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[PrincipalPermission (SecurityAction.InheritanceDemand, Name="me", Role="mono hacker")]
-public class NotUsedAbstractClass {
-
-       [StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-       public virtual int Test ()
-       {
-               return 1;
-       }
-
-       [StrongNameIdentityPermission (SecurityAction.InheritanceDemand, PublicKey="0024000004800000940000000602000000240000525341310004000011000000db294bcb78b7361ed6eb5656b612ce266fc81da8c8c6cb04116fc29b5e1d09a02f6c0f387f6d97a1ce9bdbbeb2d874832ae2d2971e70144ea039c710dccab5fb0a36cb14268a83c9b435c1e7318e7915518b68c8ed056b104e76166d6cabe9b77383f26bcf6a0a0b09d04f37b2a407b47d39421a34f2fbc6e6701a1d5c2e8cbb")]
-       static public void Show ()
-       {
-               Console.WriteLine ("1");
-       }
-}
-
-public class NotUsedClass : NotUsedAbstractClass {
-
-       public override int Test ()
-       {
-               return 0;
-       }
-}
-
-public class Program {
-
-       static int Main ()
-       {
-               Console.WriteLine ("*0* InheritanceDemand are ignored on unused class/methods.");
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/inheritance/refload1.cs b/mono/tests/cas/inheritance/refload1.cs
deleted file mode 100644 (file)
index ea58486..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       static int Main (string[] args)
-       {
-               try {
-                       string filename = "library1a";
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*1* Couldn't load assembly '{0}'.", filename);
-                               return 1;
-                       } else {
-                               Console.WriteLine ("*0* Assembly '{0}' loaded.", filename);
-                               return 0;
-                       }
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*2* Unexpected SecurityException\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/refload2.cs b/mono/tests/cas/inheritance/refload2.cs
deleted file mode 100644 (file)
index 60f63ae..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       static int Main (string[] args)
-       {
-               try {
-                       string filename = "library1b";
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*1* Couldn't load assembly '{0}'.", filename);
-                               return 1;
-                       } else {
-                               Console.WriteLine ("*0* Assembly '{0}' loaded.", filename);
-                               return 0;
-                       }
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*2* Unexpected SecurityException\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/refload3.cs b/mono/tests/cas/inheritance/refload3.cs
deleted file mode 100644 (file)
index 7e29c9b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       static int Main (string[] args)
-       {
-               try {
-                       string filename = "library2a";
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*1* Couldn't load assembly '{0}'.", filename);
-                               return 1;
-                       } else {
-                               Console.WriteLine ("*0* Assembly '{0}' loaded.", filename);
-                               return 0;
-                       }
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*2* Unexpected SecurityException\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/refload4.cs b/mono/tests/cas/inheritance/refload4.cs
deleted file mode 100644 (file)
index 8f111dd..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       static int Main (string[] args)
-       {
-               try {
-                       string filename = "library2b";
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*1* Couldn't load assembly '{0}'.", filename);
-                               return 1;
-                       } else {
-                               Console.WriteLine ("*0* Assembly '{0}' loaded.", filename);
-                               return 0;
-                       }
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*2* Unexpected SecurityException\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/reftype1.cs b/mono/tests/cas/inheritance/reftype1.cs
deleted file mode 100644 (file)
index 56aa5ec..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       private const string filename = "library1a";
-
-       static int GetTypeFalse (Assembly a)
-       {
-               string typename = "InheritanceDemand";
-               Type t = a.GetType (typename, false);
-               if (t == null) {
-                       Console.WriteLine ("*0* Get null for type '{0}' with security.", typename);
-                       return 0;
-               } else {
-                       Console.WriteLine ("*1* Can get type '{0}' with security (false).", typename);
-                       return 1;
-               }
-       }
-
-       static int GetTypeTrue (Assembly a)
-       {
-               try {
-                       string typename = "InheritanceDemand";
-                       Type t = a.GetType (typename, true);
-                       Console.WriteLine ("*1* Can get type '{0}' with security (true).", t);
-                       return 1;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-       }
-
-       static int GetTypes (Assembly a)
-       {
-               try {
-                       Type[] ts = a.GetTypes ();
-                       Console.WriteLine ("*1* Can get all types from assembly '{0}' loaded. {1} types present.", filename, ts.Length);
-                       return 1;
-               }
-               catch (ReflectionTypeLoadException rtle) {
-                       Console.WriteLine ("*0* Expected ReflectionTypeLoadException\n{0}", rtle);
-                       Console.WriteLine ("Types ({0}):", rtle.Types.Length);
-                       for (int i=0; i < rtle.Types.Length; i++) {
-                               Console.WriteLine ("\t{0}", rtle.Types [i]);
-                       }
-                       Console.WriteLine ("LoaderExceptions ({0}):", rtle.LoaderExceptions.Length);
-                       for (int i=0; i < rtle.LoaderExceptions.Length; i++) {
-                               Console.WriteLine ("\t{0}", rtle.LoaderExceptions [i]);
-                       }
-                       return 0;
-               }
-       }
-
-       static int Main ()
-       {
-               try {
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*2* Couldn't load assembly '{0}'.", filename);
-                               return 2;
-                       }
-
-                       string typename = "NoSecurity";
-                       Type t = a.GetType (typename);
-                       if (t == null) {
-                               Console.WriteLine ("*3* Cannot get type '{0}' without security.", typename);
-                               return 3;
-                       }
-
-                       int err = GetTypeFalse (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypeTrue (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypes (a);
-                       return err;
-               }
-               catch (ReflectionTypeLoadException rtle) {
-                       Console.WriteLine ("*4* Expected ReflectionTypeLoadException\n{0}", rtle);
-                       return 4;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*5* Unexpected SecurityException\n{0}", se);
-                       return 5;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*6* Unexpected Exception\n{0}", e);
-                       return 6;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/reftype2.cs b/mono/tests/cas/inheritance/reftype2.cs
deleted file mode 100644 (file)
index 1d703ff..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       private const string filename = "library1b";
-
-       static int GetTypeFalse (Assembly a)
-       {
-               string typename = "InheritanceDemand";
-               Type t = a.GetType (typename, false);
-               if (t == null) {
-                       Console.WriteLine ("*1* Get null for type '{0}' with security.", typename);
-                       return 1;
-               } else {
-                       Console.WriteLine ("*0* Can get type '{0}' with security.", typename);
-                       return 0;
-               }
-       }
-
-       static int GetTypeTrue (Assembly a)
-       {
-               string typename = "InheritanceDemand";
-               Type t = a.GetType (typename, true);
-               Console.WriteLine ("*0* Can get type '{0}' with security.", t);
-               return 0;
-       }
-
-       static int GetTypes (Assembly a)
-       {
-               Type[] ts = a.GetTypes ();
-               Console.WriteLine ("*0* Can get all types from assembly '{0}' loaded. {1} types present.", filename, ts.Length);
-               return 0;
-       }
-
-       static int Main ()
-       {
-               try {
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*2* Couldn't load assembly '{0}'.", filename);
-                               return 2;
-                       }
-
-                       string typename = "NoSecurity";
-                       Type t = a.GetType (typename);
-                       if (t == null) {
-                               Console.WriteLine ("*3* Cannot get type '{0}' without security.", typename);
-                               return 3;
-                       }
-
-                       int err = GetTypeFalse (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypeTrue (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypes (a);
-                       return err;
-               }
-               catch (ReflectionTypeLoadException rtle) {
-                       Console.WriteLine ("*4* Expected ReflectionTypeLoadException\n{0}", rtle);
-                       return 4;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*5* Unexpected SecurityException\n{0}", se);
-                       return 5;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*6* Unexpected Exception\n{0}", e);
-                       return 6;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/reftype3.cs b/mono/tests/cas/inheritance/reftype3.cs
deleted file mode 100644 (file)
index 5bd39c8..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       private const string filename = "library2a";
-
-       static int GetTypeFalse (Assembly a)
-       {
-               string typename = "InheritanceDemand";
-               Type t = a.GetType (typename, false);
-               if (t == null) {
-                       Console.WriteLine ("*0* Get null for type '{0}' with security.", typename);
-                       return 0;
-               } else {
-                       Console.WriteLine ("*1* Can get type '{0}' with security (false).", typename);
-                       return 1;
-               }
-       }
-
-       static int GetTypeTrue (Assembly a)
-       {
-               try {
-                       string typename = "InheritanceDemand";
-                       Type t = a.GetType (typename, true);
-                       Console.WriteLine ("*1* Can get type '{0}' with security (true).", t);
-                       return 1;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-       }
-
-       static int GetTypes (Assembly a)
-       {
-               try {
-                       Type[] ts = a.GetTypes ();
-                       Console.WriteLine ("*1* Can get all types from assembly '{0}' loaded. {1} types present.", filename, ts.Length);
-                       return 1;
-               }
-               catch (ReflectionTypeLoadException rtle) {
-                       Console.WriteLine ("*0* Expected ReflectionTypeLoadException\n{0}", rtle);
-                       Console.WriteLine ("Types ({0}):", rtle.Types.Length);
-                       for (int i=0; i < rtle.Types.Length; i++) {
-                               Console.WriteLine ("\t{0}", rtle.Types [i]);
-                       }
-                       Console.WriteLine ("LoaderExceptions ({0}):", rtle.LoaderExceptions.Length);
-                       for (int i=0; i < rtle.LoaderExceptions.Length; i++) {
-                               Console.WriteLine ("\t{0}", rtle.LoaderExceptions [i]);
-                       }
-                       return 0;
-               }
-       }
-
-       static int Main ()
-       {
-               try {
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*2* Couldn't load assembly '{0}'.", filename);
-                               return 2;
-                       }
-
-                       string typename = "NoSecurity";
-                       Type t = a.GetType (typename);
-                       if (t == null) {
-                               Console.WriteLine ("*3* Cannot get type '{0}' without security.", typename);
-                               return 3;
-                       }
-
-                       int err = GetTypeFalse (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypeTrue (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypes (a);
-                       return err;
-               }
-               catch (ReflectionTypeLoadException rtle) {
-                       Console.WriteLine ("*4* Expected ReflectionTypeLoadException\n{0}", rtle);
-                       return 4;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*5* Unexpected SecurityException\n{0}", se);
-                       return 5;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*6* Unexpected Exception\n{0}", e);
-                       return 6;
-               }
-       }
-}
diff --git a/mono/tests/cas/inheritance/reftype4.cs b/mono/tests/cas/inheritance/reftype4.cs
deleted file mode 100644 (file)
index 5bd4765..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       private const string filename = "library2b";
-
-       static int GetTypeFalse (Assembly a)
-       {
-               string typename = "InheritanceDemand";
-               Type t = a.GetType (typename, false);
-               if (t == null) {
-                       Console.WriteLine ("*1* Get null for type '{0}' with security.", typename);
-                       return 1;
-               } else {
-                       Console.WriteLine ("*0* Can get type '{0}' with security.", typename);
-                       return 0;
-               }
-       }
-
-       static int GetTypeTrue (Assembly a)
-       {
-               string typename = "InheritanceDemand";
-               Type t = a.GetType (typename, true);
-               Console.WriteLine ("*0* Can get type '{0}' with security.", t);
-               return 0;
-       }
-
-       static int GetTypes (Assembly a)
-       {
-               Type[] ts = a.GetTypes ();
-               Console.WriteLine ("*0* Can get all types from assembly '{0}' loaded. {1} types present.", filename, ts.Length);
-               return 0;
-       }
-
-       static int Main ()
-       {
-               try {
-                       Assembly a = Assembly.Load (filename);
-                       if (a == null) {
-                               Console.WriteLine ("*2* Couldn't load assembly '{0}'.", filename);
-                               return 2;
-                       }
-
-                       string typename = "NoSecurity";
-                       Type t = a.GetType (typename);
-                       if (t == null) {
-                               Console.WriteLine ("*3* Cannot get type '{0}' without security.", typename);
-                               return 3;
-                       }
-
-                       int err = GetTypeFalse (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypeTrue (a);
-                       if (err != 0)
-                               return err;
-
-                       err = GetTypes (a);
-                       return err;
-               }
-               catch (ReflectionTypeLoadException rtle) {
-                       Console.WriteLine ("*4* Expected ReflectionTypeLoadException\n{0}", rtle);
-                       return 4;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*5* Unexpected SecurityException\n{0}", se);
-                       return 5;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*6* Unexpected Exception\n{0}", e);
-                       return 6;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/.gitignore b/mono/tests/cas/linkdemand/.gitignore
deleted file mode 100644 (file)
index 7d2317e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/Makefile
-/Makefile.in
-/*.mdb
-/*.exe
-/*.snk
-/*.dll
diff --git a/mono/tests/cas/linkdemand/ChangeLog b/mono/tests/cas/linkdemand/ChangeLog
deleted file mode 100644 (file)
index 37ff0a0..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-2008-09-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Don't use --security to execute SN (since it's not
-       part of the tests and fails verification due to other issues).
-       <kumpera> spouliot: the issue is that, for some reason, M.M.BinInteger
-       is been treated a code not under full trust (so no unsafe code)
-
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Use mcs and sn from the mcs tree instead of
-       what's in the path.  Rename targets so tests are not compiled at
-       build time.
-
-2006-06-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Use mono-wrapper (and not the installed mono).
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Updated Makefile to add the CAS tests to the tarball
-       and enable them to be more broadly tested;
-       * Makefile: Removed and replaced by Makefile.am
-
-2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * aptc1.cs: Add a RequestRefuse for SkipVerification when RESTRICT is
-       defined.
-       * aptc2.cs: Add a RequestRefuse for SkipVerification when RESTRICT is
-       defined. Change IsSigned() for IsRestricted().
-       * icall1.cs: Fix typos.
-       * Makefile: Changed compilation for aptc*.cs. Removed icall5.cs from 
-       testing (until I figure out exactly the rules being used).
-       * README: Updated informations about the APTC tests.
-
-2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * icall1.cs: Fixed test to work on NET_2_0. We're now accepting the
-       2.0 behaviour when dealing with icalls (as we do not keep their
-       pblic status in the runtime).
-       * icall2.cs: Fixed test to work on NET_2_0 as the icall has changed
-       it's return value from bool to void. 
-       * Makefile: Allow to build the tests with either NET_1_1 or NET_2_0.
-
-2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * cas4-5.cs: Removed. Replaced by new refcas#.cs tests.
-       * refcas1-5.cs: New. CAS test cases for reflection.
-       * Makefile: Update to build/execute new tests.
-       * README: Updated with new tests descriptions.
-
-2005-02-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * cas6-9.cs: New. CAS tests cases for NEWOBK (constructor), LDFTN
-       (delegate) and LDVIRTFNT (delegate using a virtual method).
-       * cas10.cs|.il: New. CAS test case for JMP. Not part of "make test"
-       until #66033 is fixed (ILASM doesn't support decl security attrs).
-       * Makefile: Updated makefile for new test cases.
-       * README: Updated informations of new CAS tests.
-
-2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * noncas1-4.cs: New. Non-CAS permission tests (derived from test cases
-       in #52693).
-       * Makefile: Updated makefile for noncas test and removed unused crap.
-       * README: Updated informations of non CAS tests.
-
-2005-02-09  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * cas1.cs: Changed for an easier to test case.
-       * cas2-5: New. "Normal" LinkDemand test cases.
-       * icall1.cs, icall2.cs: Updated to work on both Mono and MS runtime.
-       * icall2-6.cs: New. More internal call test cases.
-       * Makefile: Updated makefile.
-       * pinvoke1-2.cs: Updated to work on both Mono and MS runtime.
-       * pinvoke3-4.cs: New. More P/Invoke test cases.
-       * README: Updated informations.
-
-2005-02-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * aptc1.cs: New. Partial trust test case.
-       * aptc2.cs: New. Partial trust test case.
-       * aptclib.cs: Library for partial trust test case.
-       * cas1.cs: New. New. "Normal" LinkDemand test case.
-       * ecma.pub: New. The ECMA "key" to test icalls.
-       * icall1.cs: New. Internal call test case.
-       * icall2.cs: New. Internal call test case (reflection).
-       * Makefile: New. Makefile to build and execute tests.
-       * pinvoke1.cs: New. P/Invoke test case.
-       * pinvoke2.cs: New. P/Invoke test case.
-       * README: New. Instruction and details about the tests.
diff --git a/mono/tests/cas/linkdemand/Makefile.am b/mono/tests/cas/linkdemand/Makefile.am
deleted file mode 100644 (file)
index bb8c517..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
-
-RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug
-
-CAS_RUNTIME = $(RUNTIME) --security
-
-PROFILE = net_2_0
-
-compiler_defines = -d:NET_2_0
-
-CSCOMPILE = $(RUNTIME) $(mcs_topdir)/class/lib/basic/mcs.exe -debug
-SN = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug $(mcs_topdir)/tools/security/sn.exe
-
-EXTRA_DIST = icall1.cs icall2.cs icall3.cs icall4.cs icall5.cs icall6.cs \
-       aptc1.cs aptc2.cs aptclib.cs \
-       pinvoke1.cs pinvoke2.cs pinvoke3.cs pinvoke4.cs \
-       cas1.cs cas2.cs cas3.cs cas6.cs cas7.cs cas8.cs cas9.cs \
-       refcas1.cs refcas2.cs refcas3.cs refcas4.cs refcas5.cs \
-       noncas1.cs noncas2.cs noncas3.cs noncas4.cs
-
-tests: icall1.exe icall2.exe icall3.exe icall4.exe icall5.exe icall6.exe \
-       aptc1a.exe aptc1b.exe aptc2a.exe aptc2b.exe aptclib.dll \
-       pinvoke1.exe pinvoke2.exe pinvoke3.exe pinvoke4.exe \
-       cas1.exe cas2.exe cas3.exe cas6.exe cas7.exe cas8.exe cas9.exe \
-       refcas1.exe refcas2.exe refcas3.exe refcas4.exe refcas5.exe \
-       noncas1.exe noncas2.exe noncas3.exe noncas4.exe
-
-aot:   icall1.exe.so icall2.exe.so icall3.exe.so icall4.exe.so icall5.exe.so icall6.exe.so \
-       aptc1a.exe.so aptc1b.exe.so aptc2a.exe.so aptc2b.exe.so aptclib.dll.so \
-       pinvoke1.exe.so pinvoke2.exe.so pinvoke3.exe.so pinvoke4.exe.so \
-       cas1.exe.so cas2.exe.so cas3.exe.so cas6.exe.so \
-       cas7.exe.so cas8.exe.so cas8.exe.so cas9.exe.so \
-       refcas1.exe.so refcas2.exe.so refcas3.exe.so refcas4.exe.so refcas5.exe.so \
-       noncas1.exe.so noncas2.exe.so noncas3.exe.so noncas4.exe.so
-
-FULLTRUST_TEST_FILES = icall1 icall2 icall3 icall4 icall6 \
-       aptc1a aptc1b aptc2a \
-       pinvoke1 pinvoke2 pinvoke4 \
-       cas1 cas3 cas6 cas7 cas8 cas9 \
-       refcas1 refcas2 refcas3 refcas4 \
-       noncas1 noncas2 noncas3 noncas4
-
-UNHANDLED_TEST_FILES = aptc2b cas2 pinvoke3 
-
-run: tests
-       @for i in $(FULLTRUST_TEST_FILES); do   \
-               $(CAS_RUNTIME) $$i.exe; \
-       done;
-
-test: tests
-       @failed=0; \
-       passed=0; \
-       for i in $(FULLTRUST_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "fulltrust-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               else    \
-                       echo -e "fulltrust-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} fulltrust-$$i"; \
-               fi;     \
-       done;   \
-       for i in $(UNHANDLED_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "unhandled-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} unhandled-$$i"; \
-               else    \
-                       echo -e "unhandled-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               fi;     \
-       done;   \
-       echo -e "\n$${passed} test(s) passed. $${failed} test(s) failed."; \
-       if [ "$${failed}" != "0" ]; then        \
-               echo -e "Failed tests are:";    \
-               for i in $${failed_tests};      \
-                       do echo -e "\t$${i}";   \
-               done;   \
-               exit 1; \
-       fi
-
-clean:
-       rm -f *.exe* *.dll* *.snk
-
-aptc.snk:
-       $(SN) -k aptc.snk
-
-%a.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@ $(compiler_defines)
-
-%b.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@ /keyfile:ecma.pub /delaysign+ $(compiler_defines)
-
-aptc1b.exe: aptc1.cs aptc.snk
-       $(CSCOMPILE) $< /out:$@ /d:RESTRICT $(compiler_defines)
-
-aptc2a.exe: aptc2.cs aptclib.dll
-       $(CSCOMPILE) $< /out:$@ /r:aptclib.dll $(compiler_defines)
-
-aptc2b.exe: aptc2.cs aptclib.dll
-       $(CSCOMPILE) $< /out:$@ /d:RESTRICT /r:aptclib.dll $(compiler_defines)
-
-aptclib.dll: aptclib.cs aptc.snk
-       $(CSCOMPILE) $< /out:$@ /target:library /keyfile:aptc.snk $(compiler_defines)
-
-%.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@ $(compiler_defines)
-
-%.exe.so: %.exe
-       $(RUNTIME) --aot $^
diff --git a/mono/tests/cas/linkdemand/README b/mono/tests/cas/linkdemand/README
deleted file mode 100644 (file)
index ac79806..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-* LinkDemand
-
-cas1.cs                LinkDemand on Main (entrypoint) is ignored
-cas2.cs                LinkDemand restricted by RequestRefuse -> Unhandled
-cas3.cs                Partial execution before (handled) exception
-cas6.cs                LinkDemand on constructor (newobj)
-cas7.cs                Instance method used via delegate (ldftn)
-cas8.cs                Instance virtual method used via delegate (ldvirtftn)
-cas9.cs                Static method used via delegate (ldftn)
-cas10.cs       Original source code JMP sample (can't be used directly)
-cas10.il       Modified source to use JMP - not assembled ATM -
-               see source file (cas10.cs) for details
-
-refcas1.cs     Reflection on a method protected by LinkDemand (granted)
-refcas2.cs     Reflection on a method protected by LinkDemand (failure).
-               GetMethod returns null because of assembly RequestRefuse.
-refcas3.cs     Reflection on a method protected by LinkDemand (failure).
-               GetMethod returns non-null because the LinkDemand doesn't go 
-               up enough the stack.
-refcas4.cs     Based on refcas3.cs. Getting the MethodInfo is allowed but
-               invoking it later is restricted.
-refcas5.cs     Based on refcas5.cs. Test that invokation requires a Demand
-               and not a LinkDemand when reflection is used.
-
-noncas1.cs     Non CAS (PrincipalPermission) on class (success)
-noncas2.cs     Non CAS (PrincipalPermission) on class (failure)
-noncas3.cs     Non CAS (PrincipalPermission) on method (success)
-noncas4.cs     Non CAS (PrincipalPermission) on method (failure)
-
-Those are the "common" case for LinkDemand (i.e. using user supplied 
-declarative security attributes).
-
-
-and now the special cases...
-
-
-* InternalCall
-
-icall1.cs      Define an (existing) private icall and try to execute it.
-icall2.cs      Use reflection to execute an private icall.
-icall3.cs      Define an (existing) public icall and try to execute it.
-icall4.cs      Like icall3.cs but use reflection to execute the public icall.
-icall5.cs      Like icall3.cs but RequestRefuse UnmanagedCode permission.
-icall6.cs      Like icall4.cs but RequestRefuse UnmanagedCode permission.
-
-- Private icalls cannot be called by re-defining them (exact rule unknown,
-  it may be ECMA key related but I'm not 100% sure anymore). Trying to do so
-  throws a (catch-able) SecurityException.
-- UnmanagedCode permission has _no_ effect on executing icalls.
-- Reflection can be used to call internal calls (even when private).
-
-
-* P/Invoke
-
-pinvoke1.cs    Call native code in a class with [SUCS] attribute
-pinvoke2.cs    Call native code in a method with [SUCS] attribute
-pinvoke3.cs    Call native code RequestRefuse UnmanagedCode permission 
-               which results in an unhandled SecurityException
-pinvoke4.cs    Call native code RequestRefuse UnmanagedCode permission
-               which results in an SecurityException
-
-A little know fact is that P/Invoke does a LinkDemand (JIT time) and not
-only a Demand (runtime). The JIT time check isn't subject to be cancelled
-by the [SuppressUnmanagedCodeSecurity] attribute.
-
-- With Mono runtime the native function getuid is called in libc
-- With MS runtime the native function GetTickCount is called in kernel32.dll
-
-
-* [AllowPartiallyTustedCallers] a.k.a. APTC
-
-aptc1.cs       Calling a strongnamed with APTC (corlib) method [1].
-aptc2.cs       Calling a strongnamed without APTC (aptclib) method.
-aptclib.cs     The strongnamed, but without APTC, test library.
-
-The files aptc1.cs and aptc2.cs are compiled twice. 
-
-The first time the files are compiled without restrictions (e.g. they have
-FullTrust by default). The second time SkipVerification is refused at the
-asssembly level (i.e. resulting in less than FullTrust). This means that the
-security manager (if active) will allow the call to succeed _only if_
-
-       (a) the calling assembly has FullTrust;
-       (b) the called assembly has a [AllowPartiallyTustedCallers] attribute
-
-[1] For example an unsigned assembly can calls System.Console.WriteLine only
-because mscorlib.dll contains the [AllowPartiallyTustedCallers].
diff --git a/mono/tests/cas/linkdemand/aptc1.cs b/mono/tests/cas/linkdemand/aptc1.cs
deleted file mode 100644 (file)
index 84c4dc4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-#if RESTRICT
-// this ensure we don't have FullTrust
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification = true)]
-#endif
-
-public class Program {
-
-       static int Main ()
-       {
-               try {
-                       // mscorlib is strongnamed and has [AllowPartiallyTrustedCallers]
-                       // so this call will work even if this assembly isn't strongnamed
-                       Console.WriteLine ("*0* Hellp World");
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Expected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/aptc2.cs b/mono/tests/cas/linkdemand/aptc2.cs
deleted file mode 100644 (file)
index 38a677d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-using Mono.Test;
-
-#if RESTRICT
-// this ensure we don't have FullTrust
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification = true)]
-#endif
-
-public class Program {
-
-       static bool IsRestricted ()
-       {
-#if RESTRICT
-               return true;
-#else
-               return false;
-#endif
-       }
-
-       static int Main ()
-       {
-               try {
-                       // aptclib.dll is strongnamed and DOESN'T have [AllowPartiallyTrustedCallers]
-                       // so this call will work ONLY IF this assembly IS strongnamed
-                       string s = AptcLibrary.Hello ("World");
-                       int ec = IsRestricted () ? 1 : 0;
-                       Console.WriteLine ("*{0}* AptcLibrary: {1}", ec, s);
-                       return ec;
-               }
-               catch (SecurityException se) {
-                       int ec = IsRestricted () ? 0 : 1;
-                       Console.WriteLine ("*{0}* Expected SecurityException\n{1}", ec, se);
-                       return ec;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/aptclib.cs b/mono/tests/cas/linkdemand/aptclib.cs
deleted file mode 100644 (file)
index f84519b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-using System;
-
-namespace Mono.Test {
-
-       public class AptcLibrary {
-
-               static public string Hello (string message)
-               {
-                       return "Hello " + message;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas1.cs b/mono/tests/cas/linkdemand/cas1.cs
deleted file mode 100644 (file)
index 4f0dce5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-namespace System {
-
-       public class Program {
-
-               [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-               static int Main ()
-               {
-                       Console.WriteLine ("*0* LinkDemand is ignored on entrypoint.");
-                       return 0;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas10.cs b/mono/tests/cas/linkdemand/cas10.cs
deleted file mode 100644 (file)
index dcd635e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// Because
-// a. MCS never generate JMP instructions (good thing);
-// b. Presently Mono's ILASM doesn't support declarative security attributes
-//    (bad thing ;-) http://bugzilla.ximian.com/show_bug.cgi?id=66033
-//
-// we cannot test the JMP instruction without outside help.
-//
-// Instructions:
-// 1. Compile this source file with MCS (or CSC)
-// 2. Decompile this using monodis (or ildasm)
-// 3. Change the "call" from Test to InnerTest by a "jmp"
-//
-//     from something like:
-//             .method private static hidebysig default int32 Test (int32 rc) cil managed
-//             {
-//                     .maxstack 8
-//                     IL_0000:  ldarg.0
-//                     IL_0001:  call int32 class Program::InnerTest(int32)
-//                     IL_0006:  ret
-//             }
-//     to:
-//             .method private static hidebysig default int32 Test (int32 rc) cil managed 
-//             {
-//                     .maxstack 8
-//                     jmp int32 class Program::InnerTest(int32)
-//             }
-//
-// 4. Re-assemble with *MS* ilasm (until 660033 is fixed)
-// 5. Execute the re-assembled assembly
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       static public int InnerTest (int rc)
-       {
-               // so the caller is in *this* assembly (so RequestRefuse applies)
-               Console.WriteLine ("*1* Library call expected to fail!");
-               return rc;
-       }
-
-       static int Test (int rc)
-       {
-               return InnerTest (rc);
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test (1);
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas10.il b/mono/tests/cas/linkdemand/cas10.il
deleted file mode 100644 (file)
index a1f892f..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-// original source is cas10.cs modified to use JMP
-
-.assembly 'cas10'
-{
-       .permissionset reqrefuse = (
-       3C 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00  // <.P.e.r.m.i.s.s.
-       69 00 6F 00 6E 00 53 00 65 00 74 00 20 00 63 00  // i.o.n.S.e.t. .c.
-       6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00  // l.a.s.s.=.".S.y.
-       73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00  // s.t.e.m...S.e.c.
-       75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00  // u.r.i.t.y...P.e.
-       72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00  // r.m.i.s.s.i.o.n.
-       53 00 65 00 74 00 22 00 0A 00 20 00 20 00 20 00  // S.e.t."... . . .
-       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-       20 00 20 00 20 00 20 00 76 00 65 00 72 00 73 00  // . . . .v.e.r.s.
-       69 00 6F 00 6E 00 3D 00 22 00 31 00 22 00 3E 00  // i.o.n.=.".1.".>.
-       0A 00 20 00 20 00 20 00 3C 00 49 00 50 00 65 00  // .. . . .<.I.P.e.
-       72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00  // r.m.i.s.s.i.o.n.
-       20 00 63 00 6C 00 61 00 73 00 73 00 3D 00 22 00  // .c.l.a.s.s.=.".
-       53 00 79 00 73 00 74 00 65 00 6D 00 2E 00 53 00  // S.y.s.t.e.m...S.
-       65 00 63 00 75 00 72 00 69 00 74 00 79 00 2E 00  // e.c.u.r.i.t.y...
-       50 00 65 00 72 00 6D 00 69 00 73 00 73 00 69 00  // P.e.r.m.i.s.s.i.
-       6F 00 6E 00 73 00 2E 00 53 00 65 00 63 00 75 00  // o.n.s...S.e.c.u.
-       72 00 69 00 74 00 79 00 50 00 65 00 72 00 6D 00  // r.i.t.y.P.e.r.m.
-       69 00 73 00 73 00 69 00 6F 00 6E 00 2C 00 20 00  // i.s.s.i.o.n.,. .
-       6D 00 73 00 63 00 6F 00 72 00 6C 00 69 00 62 00  // m.s.c.o.r.l.i.b.
-       2C 00 20 00 56 00 65 00 72 00 73 00 69 00 6F 00  // ,. .V.e.r.s.i.o.
-       6E 00 3D 00 31 00 2E 00 30 00 2E 00 35 00 30 00  // n.=.1...0...5.0.
-       30 00 30 00 2E 00 30 00 2C 00 20 00 43 00 75 00  // 0.0...0.,. .C.u.
-       6C 00 74 00 75 00 72 00 65 00 3D 00 6E 00 65 00  // l.t.u.r.e.=.n.e.
-       75 00 74 00 72 00 61 00 6C 00 2C 00 20 00 50 00  // u.t.r.a.l.,. .P.
-       75 00 62 00 6C 00 69 00 63 00 4B 00 65 00 79 00  // u.b.l.i.c.K.e.y.
-       54 00 6F 00 6B 00 65 00 6E 00 3D 00 62 00 37 00  // T.o.k.e.n.=.b.7.
-       37 00 61 00 35 00 63 00 35 00 36 00 31 00 39 00  // 7.a.5.c.5.6.1.9.
-       33 00 34 00 65 00 30 00 38 00 39 00 22 00 0A 00  // 3.4.e.0.8.9."...
-       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-       76 00 65 00 72 00 73 00 69 00 6F 00 6E 00 3D 00  // v.e.r.s.i.o.n.=.
-       22 00 31 00 22 00 0A 00 20 00 20 00 20 00 20 00  // ".1."... . . . .
-       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-       20 00 20 00 20 00 20 00 46 00 6C 00 61 00 67 00  // . . . .F.l.a.g.
-       73 00 3D 00 22 00 43 00 6F 00 6E 00 74 00 72 00  // s.=.".C.o.n.t.r.
-       6F 00 6C 00 50 00 72 00 69 00 6E 00 63 00 69 00  // o.l.P.r.i.n.c.i.
-       70 00 61 00 6C 00 22 00 2F 00 3E 00 0A 00 3C 00  // p.a.l."./.>...<.
-       2F 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00  // /.P.e.r.m.i.s.s.
-       69 00 6F 00 6E 00 53 00 65 00 74 00 3E 00 0A 00) // i.o.n.S.e.t.>...
-}
-
-.class public auto ansi beforefieldinit Program extends [mscorlib]System.Object
-{
-       .method public static hidebysig default int32 InnerTest (int32 rc) cil managed 
-       {
-               .permissionset linkcheck = (
-                       3C 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00  // <.P.e.r.m.i.s.s.
-                       69 00 6F 00 6E 00 53 00 65 00 74 00 20 00 63 00  // i.o.n.S.e.t. .c.
-                       6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00  // l.a.s.s.=.".S.y.
-                       73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00  // s.t.e.m...S.e.c.
-                       75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00  // u.r.i.t.y...P.e.
-                       72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00  // r.m.i.s.s.i.o.n.
-                       53 00 65 00 74 00 22 00 0A 00 20 00 20 00 20 00  // S.e.t."... . . .
-                       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-                       20 00 20 00 20 00 20 00 76 00 65 00 72 00 73 00  // . . . .v.e.r.s.
-                       69 00 6F 00 6E 00 3D 00 22 00 31 00 22 00 3E 00  // i.o.n.=.".1.".>.
-                       0A 00 20 00 20 00 20 00 3C 00 49 00 50 00 65 00  // .. . . .<.I.P.e.
-                       72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00  // r.m.i.s.s.i.o.n.
-                       20 00 63 00 6C 00 61 00 73 00 73 00 3D 00 22 00  // .c.l.a.s.s.=.".
-                       53 00 79 00 73 00 74 00 65 00 6D 00 2E 00 53 00  // S.y.s.t.e.m...S.
-                       65 00 63 00 75 00 72 00 69 00 74 00 79 00 2E 00  // e.c.u.r.i.t.y...
-                       50 00 65 00 72 00 6D 00 69 00 73 00 73 00 69 00  // P.e.r.m.i.s.s.i.
-                       6F 00 6E 00 73 00 2E 00 53 00 65 00 63 00 75 00  // o.n.s...S.e.c.u.
-                       72 00 69 00 74 00 79 00 50 00 65 00 72 00 6D 00  // r.i.t.y.P.e.r.m.
-                       69 00 73 00 73 00 69 00 6F 00 6E 00 2C 00 20 00  // i.s.s.i.o.n.,. .
-                       6D 00 73 00 63 00 6F 00 72 00 6C 00 69 00 62 00  // m.s.c.o.r.l.i.b.
-                       2C 00 20 00 56 00 65 00 72 00 73 00 69 00 6F 00  // ,. .V.e.r.s.i.o.
-                       6E 00 3D 00 31 00 2E 00 30 00 2E 00 35 00 30 00  // n.=.1...0...5.0.
-                       30 00 30 00 2E 00 30 00 2C 00 20 00 43 00 75 00  // 0.0...0.,. .C.u.
-                       6C 00 74 00 75 00 72 00 65 00 3D 00 6E 00 65 00  // l.t.u.r.e.=.n.e.
-                       75 00 74 00 72 00 61 00 6C 00 2C 00 20 00 50 00  // u.t.r.a.l.,. .P.
-                       75 00 62 00 6C 00 69 00 63 00 4B 00 65 00 79 00  // u.b.l.i.c.K.e.y.
-                       54 00 6F 00 6B 00 65 00 6E 00 3D 00 62 00 37 00  // T.o.k.e.n.=.b.7.
-                       37 00 61 00 35 00 63 00 35 00 36 00 31 00 39 00  // 7.a.5.c.5.6.1.9.
-                       33 00 34 00 65 00 30 00 38 00 39 00 22 00 0A 00  // 3.4.e.0.8.9."...
-                       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-                       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-                       76 00 65 00 72 00 73 00 69 00 6F 00 6E 00 3D 00  // v.e.r.s.i.o.n.=.
-                       22 00 31 00 22 00 0A 00 20 00 20 00 20 00 20 00  // ".1."... . . . .
-                       20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00  // . . . . . . . .
-                       20 00 20 00 20 00 20 00 46 00 6C 00 61 00 67 00  // . . . .F.l.a.g.
-                       73 00 3D 00 22 00 43 00 6F 00 6E 00 74 00 72 00  // s.=.".C.o.n.t.r.
-                       6F 00 6C 00 50 00 72 00 69 00 6E 00 63 00 69 00  // o.l.P.r.i.n.c.i.
-                       70 00 61 00 6C 00 22 00 2F 00 3E 00 0A 00 3C 00  // p.a.l."./.>...<.
-                       2F 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00  // /.P.e.r.m.i.s.s.
-                       69 00 6F 00 6E 00 53 00 65 00 74 00 3E 00 0A 00) // i.o.n.S.e.t.>...
-               .maxstack 8
-               ldstr "*1* Library call expected to fail!"
-               call void class [mscorlib]System.Console::WriteLine(string)
-               ldarg.0 
-               ret 
-       }
-
-       .method private static hidebysig default int32 Test (int32 rc) cil managed 
-       {
-               .maxstack 8
-               jmp int32 class Program::InnerTest(int32)
-       }
-
-       .method private static hidebysig default int32 Main () cil managed 
-       {
-               .entrypoint
-               .maxstack 3
-               .locals init (
-                       class [mscorlib]System.Security.SecurityException V_0,
-                       class [mscorlib]System.Exception V_1,
-                       int32 V_2)
-
-               .try {
-                       .try {
-                               ldc.i4.1 
-                               call int32 class Program::Test(int32)
-                               stloc.2 
-                               leave BYEBYE
-                       }
-                       catch [mscorlib]System.Security.SecurityException {
-                               stloc.0 
-                               ldstr "*0* Expected SecurityException\n{0}"
-                               ldloc.0 
-                               call void class [mscorlib]System.Console::WriteLine(string, object)
-                               ldc.i4.0 
-                               stloc.2 
-                               leave BYEBYE
-                       }
-                       catch [mscorlib]System.Exception {
-                               stloc.1 
-                               ldstr "*2* Unexpected Exception\n{0}"
-                               ldloc.1 
-                               call void class [mscorlib]System.Console::WriteLine(string, object)
-                               ldc.i4.2 
-                               stloc.2 
-                               leave BYEBYE
-                       }
-               }
-               finally {
-                       endfinally 
-               }
-
-BYEBYE:                ldloc.2 
-               ret 
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas2.cs b/mono/tests/cas/linkdemand/cas2.cs
deleted file mode 100644 (file)
index cfa3313..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 0;
-       }
-
-       static int Main ()
-       {
-               // this isn't catchable as the exception occurs when compiling Main
-               try {
-                       Test ();
-                       Console.WriteLine ("*0* Expected Unhandled SecurityException.");
-                       return 0;
-               }
-               catch (SecurityException) {
-                       Console.WriteLine ("*0* This SecurityException shouldn't be catched.");
-                       return 0;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas3.cs b/mono/tests/cas/linkdemand/cas3.cs
deleted file mode 100644 (file)
index bdfe0ed..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 0;
-       }
-
-       // we throw as soon as we try to compile this
-       static void DeepTest ()
-       {
-               Test ();
-       }
-
-       // no problem compiling Test as linking to DeepTest is possible
-       static void Test (int i)
-       {
-               if (i == 200) {
-                       DeepTest ();
-               }
-       }
-
-       static int Main ()
-       {
-               int err = 2;
-               int i = 0;
-               try {
-                       for (i=0; i < 256; i++) {
-                               Test (i);
-                       }
-                       Console.WriteLine ("*{0}* Iteration Completed", err);
-               }
-               catch (SecurityException) {
-                       err = (i == 200) ? 0 : 1;
-                       Console.WriteLine ("*{0}* Iteration Count: {1}", err, i);
-               }
-               return err;
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas6.cs b/mono/tests/cas/linkdemand/cas6.cs
deleted file mode 100644 (file)
index 56a0509..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       int rc;
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public Program ()
-       {
-               Console.WriteLine ("*1* Constructor call expected to fail!");
-               rc = 1;
-       }
-
-       public int InstanceTest ()
-       {
-               return rc;
-       }
-
-       static int Test ()
-       {
-               return new Program ().InstanceTest ();
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas7.cs b/mono/tests/cas/linkdemand/cas7.cs
deleted file mode 100644 (file)
index 4bdd66e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public delegate int MyReturnCode (int rc);
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public int InstanceTest (int rc)
-       {
-               Console.WriteLine ("*1* Instance delegate call expected to fail!");
-               return rc;
-       }
-
-       static int Test ()
-       {
-               Program p = new Program ();
-               MyReturnCode rc = new MyReturnCode (p.InstanceTest);
-               return rc (1);
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas8.cs b/mono/tests/cas/linkdemand/cas8.cs
deleted file mode 100644 (file)
index 76e9ad0..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public delegate int MyReturnCode (int rc);
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public virtual int InstanceTest (int rc)
-       {
-               Console.WriteLine ("*1* Instance delegate call expected to fail!");
-               return rc;
-       }
-
-       static int Test ()
-       {
-               Program p = new Program ();
-               MyReturnCode rc = new MyReturnCode (p.InstanceTest);
-               return rc (1);
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/cas9.cs b/mono/tests/cas/linkdemand/cas9.cs
deleted file mode 100644 (file)
index ed9ce21..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public delegate int MyReturnCode (int rc);
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       static public int StaticTest (int rc)
-       {
-               Console.WriteLine ("*1* Static delegate call expected to fail!");
-               return rc;
-       }
-
-       static int Test ()
-       {
-               MyReturnCode rc = new MyReturnCode (StaticTest);
-               return rc (1);
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/ecma.pub b/mono/tests/cas/linkdemand/ecma.pub
deleted file mode 100755 (executable)
index efafe92..0000000
Binary files a/mono/tests/cas/linkdemand/ecma.pub and /dev/null differ
diff --git a/mono/tests/cas/linkdemand/icall1.cs b/mono/tests/cas/linkdemand/icall1.cs
deleted file mode 100644 (file)
index 8344a3d..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-using System;
-using System.Runtime.CompilerServices;
-using System.Security;
-
-namespace System {
-
-       // private internal call for Mono runtime
-       public class Environment {
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public extern static string internalGetGacPath ();
-       }
-
-       // private internal call for MS runtime
-       // http://msdn.microsoft.com/msdnmag/issues/04/11/NETMatters/
-       public class Guid {
-
-               public Guid ()
-               {
-               }
-
-               [MethodImpl (MethodImplOptions.InternalCall)]
-#if NET_2_0
-               public extern void CompleteGuid ();
-#else
-               public extern bool CompleteGuid ();
-#endif
-       }
-}
-
-public class Program {
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Main ()
-       {
-               try {
-                       string result = null;
-                       if (RunningOnMono ()) {
-                               result = Environment.internalGetGacPath ();
-                       } else {
-                               System.Guid g = new System.Guid ();
-#if NET_2_0
-                               g.CompleteGuid ();
-                               result = "completed";
-#else
-                               result = g.CompleteGuid ().ToString ();
-#endif
-                       }
-#if NET_2_0
-                       Console.WriteLine ("*0* Expected internal call: {0}", result);
-#else
-                       Console.WriteLine ("*0* Unexpected (1.x) but accepted (like 2.x) internal call: {0}", result);
-#endif
-                       return 0;
-               }
-               catch (SecurityException se) {
-#if NET_2_0
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-#else
-                       Console.WriteLine ("*0* Expected (1.x) SecurityException\n{0}", se);
-                       return 0;
-#endif
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/icall2.cs b/mono/tests/cas/linkdemand/icall2.cs
deleted file mode 100644 (file)
index 0613062..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-
-public class Program {
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Main ()
-       {
-               string icall = null;
-               MethodInfo mi = null;
-               bool mono = RunningOnMono ();
-
-               if (mono) {
-                       icall = "internalGetGacPath";
-                       mi = typeof (System.Environment).GetMethod (icall, BindingFlags.Static | BindingFlags.NonPublic);
-               } else {
-                       // private internal call for MS runtime
-                       // http://msdn.microsoft.com/msdnmag/issues/04/11/NETMatters/
-                       icall = "CompleteGuid";
-                       mi = typeof (System.Guid).GetMethod (icall, BindingFlags.Instance | BindingFlags.NonPublic);
-               }
-
-               if (mi == null) {
-                       Console.WriteLine ("*3* Couldn't reflect on internalcall {0}", icall);
-                               return 3;
-               }
-
-               try {
-                       string result = null;
-                       if (mono) {
-                               result = (string) mi.Invoke (null, null);
-                       } else {
-                               System.Guid g = new System.Guid ();
-#if NET_2_0
-                               mi.Invoke (g, null);
-                               result = "completed";
-#else
-                               result = ((bool) mi.Invoke (g, null)).ToString ();
-#endif
-                       }
-                       Console.WriteLine ("*0* [Reflected]{0}: {1}", icall, result);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/icall3.cs b/mono/tests/cas/linkdemand/icall3.cs
deleted file mode 100644 (file)
index 95cd5b8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Runtime.CompilerServices;
-using System.Security;
-
-namespace System {
-
-       // this is a "public" internal call for both Mono and Microsoft
-       // http://groups.google.ca/groups?q=MethodImplAttribute+InternalCall&hl=en&lr=&selm=udngxsETCHA.1468%40tkmsftngp11&rnum=10
-       public class Math {
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public static extern double Sin (double a);
-       }
-}
-
-public class Program {
-
-       static int TestICall ()
-       {
-               return (int) System.Math.Sin (0);
-       }
-
-       static int Main ()
-       {
-               try {
-                       Console.WriteLine ("*0* System.Math.Sin(0) == {0}", TestICall ());
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/icall4.cs b/mono/tests/cas/linkdemand/icall4.cs
deleted file mode 100644 (file)
index a462375..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-
-public class Program {
-
-       // Math.Sin is a "public" internal call for both Mono and Microsoft
-       private const string icall = "Sin";
-
-       static int TestReflectedICall ()
-       {
-               MethodInfo mi = typeof (System.Math).GetMethod (icall);
-               if (mi == null) {
-                       Console.WriteLine ("*3* Couldn't reflect on internalcall {0}", icall);
-                       return 3;
-               }
-
-               return (int) (double) mi.Invoke (null, new object [1] { 0.0 });
-       }
-
-       static int Main ()
-       {
-               try {
-                       int result = TestReflectedICall ();
-                       Console.WriteLine ("*{0}* [Reflected]System.Math.Sin(0) == {0}", result);
-                       return result;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/icall5.cs b/mono/tests/cas/linkdemand/icall5.cs
deleted file mode 100644 (file)
index ef19069..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-using System;
-using System.Runtime.CompilerServices;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, UnmanagedCode=true)]
-
-namespace System {
-
-       // this is a "public" internal call for both Mono and Microsoft
-       // http://groups.google.ca/groups?q=MethodImplAttribute+InternalCall&hl=en&lr=&selm=udngxsETCHA.1468%40tkmsftngp11&rnum=10
-       public class Math {
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               public static extern double Sin (double a);
-       }
-}
-
-public class Program {
-
-       static int TestICall ()
-       {
-               return (int) System.Math.Sin (0);
-       }
-
-       static int Main ()
-       {
-               try {
-                       Console.WriteLine ("*0* System.Math.Sin(0) == {0}", TestICall ());
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/icall6.cs b/mono/tests/cas/linkdemand/icall6.cs
deleted file mode 100644 (file)
index c812e8b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, UnmanagedCode=true)]
-
-public class Program {
-
-       // Math.Sin is a "public" internal call for both Mono and Microsoft
-       private const string icall = "Sin";
-
-       static int TestReflectedICall ()
-       {
-               MethodInfo mi = typeof (System.Math).GetMethod (icall);
-               if (mi == null) {
-                       Console.WriteLine ("*3* Couldn't reflect on internalcall {0}", icall);
-                       return 3;
-               }
-
-               return (int) (double) mi.Invoke (null, new object [1] { 0.0 });
-       }
-
-       static int Main ()
-       {
-               try {
-                       int result = TestReflectedICall ();
-                       Console.WriteLine ("*{0}* [Reflected]System.Math.Sin(0) == {0}", result);
-                       return result;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/noncas1.cs b/mono/tests/cas/linkdemand/noncas1.cs
deleted file mode 100644 (file)
index 88ece92..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-using System.Threading;
-
-[PrincipalPermission (SecurityAction.LinkDemand, Authenticated=false)]
-public class LinkDemand {
-
-       static public int Test () 
-       {
-               Console.WriteLine ("*0* [this should print]");
-               return 0;
-       }
-}
-
-class LinkDemandTest {
-
-       static int Test ()
-       {
-               GenericIdentity identity = new GenericIdentity ("me");
-               string[] roles = new string [1] { "mono hacker" };
-               Thread.CurrentPrincipal = new GenericPrincipal (identity, roles);
-
-               return LinkDemand.Test ();
-       }
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
-
diff --git a/mono/tests/cas/linkdemand/noncas2.cs b/mono/tests/cas/linkdemand/noncas2.cs
deleted file mode 100644 (file)
index 48756d9..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-using System.Threading;
-
-// Note: this should also fail if you replace "me" with your username
-
-[PrincipalPermission (SecurityAction.LinkDemand, Name="me")]
-public class LinkDemand {
-
-       static public int Test () 
-       {
-               Console.WriteLine ("*1* [this should not print]");
-               return 1;
-       }
-}
-
-class LinkDemandTest {
-
-       static int Test ()
-       {
-               Console.WriteLine ("[this should not print - as JIT will reject the LinkDemand]");
-
-               GenericIdentity identity = new GenericIdentity ("me");
-               string[] roles = new string [1] { "mono hacker" };
-               Thread.CurrentPrincipal = new GenericPrincipal (identity, roles);
-
-               // Note: if the next line is commented then no exception will 
-               // be thrown as the JIT will never reach the LinkDemand class
-               return LinkDemand.Test ();
-       }
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/noncas3.cs b/mono/tests/cas/linkdemand/noncas3.cs
deleted file mode 100644 (file)
index 4df3094..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-using System.Threading;
-
-class LinkDemandTest {
-
-       [PrincipalPermission (SecurityAction.LinkDemand, Authenticated=false)]
-       static int LinkDemand () 
-       {
-               Console.WriteLine ("*0* [this should print]");
-               return 0;
-       }
-
-       static int Test ()
-       {
-               Console.WriteLine ("[this should print - as JIT will accept the unauthenticated LinkDemand]");
-
-               GenericIdentity identity = new GenericIdentity ("me");
-               string[] roles = new string [1] { "mono hacker" };
-               Thread.CurrentPrincipal = new GenericPrincipal (identity, roles);
-
-               return LinkDemand ();
-       }
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
-
diff --git a/mono/tests/cas/linkdemand/noncas4.cs b/mono/tests/cas/linkdemand/noncas4.cs
deleted file mode 100644 (file)
index 60f75a3..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Security.Principal;
-using System.Threading;
-
-class LinkDemandTest {
-
-       // Note: this should also fail if you replace "me" with your username
-
-       [PrincipalPermission (SecurityAction.LinkDemand, Name="me")]
-       static int LinkDemand () 
-       {
-               Console.WriteLine ("*1* [this should not print]");
-               return 1;
-       }
-
-       static int Test ()
-       {
-               Console.WriteLine ("[this should not print - as JIT will reject the LinkDemand]");
-
-               GenericIdentity identity = new GenericIdentity ("me");
-               string[] roles = new string [1] { "mono hacker" };
-               Thread.CurrentPrincipal = new GenericPrincipal (identity, roles);
-
-               return LinkDemand ();
-       }
-
-       [STAThread]
-       static int Main (string[] args)
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* Expected SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected Exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
-
diff --git a/mono/tests/cas/linkdemand/pinvoke1.cs b/mono/tests/cas/linkdemand/pinvoke1.cs
deleted file mode 100644 (file)
index f35b838..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-// this attribute has NO effect on LinkDemand!
-[SuppressUnmanagedCodeSecurity]
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/linkdemand/pinvoke2.cs b/mono/tests/cas/linkdemand/pinvoke2.cs
deleted file mode 100644 (file)
index bc2ba71..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       // this attribute has NO effect on LinkDemand!
-       [SuppressUnmanagedCodeSecurity]
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/linkdemand/pinvoke3.cs b/mono/tests/cas/linkdemand/pinvoke3.cs
deleted file mode 100644 (file)
index 33928e7..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, UnmanagedCode=true)]
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               try {
-                       uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-                       Console.WriteLine ("*0* P/Invoke: {0}", u);
-                       return 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*1* Unexpected SecurityException\n{0}", se);
-                       return 1;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-
-       static int Main ()
-       {
-               return Test ();
-       }
-}
diff --git a/mono/tests/cas/linkdemand/pinvoke4.cs b/mono/tests/cas/linkdemand/pinvoke4.cs
deleted file mode 100644 (file)
index 709b73c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, UnmanagedCode=true)]
-
-public class Program {
-
-       // for Mono
-       [DllImport ("libc", SetLastError=true)]
-       public static extern uint getuid ();
-
-       // for Microsoft
-       [DllImport ("kernel32.dll", SetLastError=true)]
-       public static extern uint GetTickCount ();
-
-       static bool RunningOnMono ()
-       {
-               bool mono = (Type.GetType ("Mono.Math.BigInteger") != null); 
-               Console.WriteLine ("Running on {0} runtime...", mono ? "Mono" : "Microsoft");
-               return mono;
-       }
-
-       static int Test ()
-       {
-               uint u = (RunningOnMono ()) ? getuid () : GetTickCount ();
-               Console.WriteLine ("*1* Unexpected P/Invoke success: {0}", u);
-               return 1;
-       }
-
-       static int Main ()
-       {
-               try {
-                       return Test ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*0* SecurityException\n{0}", se);
-                       return 0;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*2* Unexpected exception\n{0}", e);
-                       return 2;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/refcas1.cs b/mono/tests/cas/linkdemand/refcas1.cs
deleted file mode 100644 (file)
index 5f1a797..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 0;
-       }
-
-       static int TestReflectedCall ()
-       {
-               MethodInfo mi = typeof (Program).GetMethod ("Test", BindingFlags.Static | BindingFlags.Public);
-               if (mi == null) {
-                       Console.WriteLine ("*1* Couldn't reflect on call Test");
-                       return 1;
-               }
-               return (int) mi.Invoke (null, null);
-       }
-
-       static int Main ()
-       {
-               try {
-                       int result = TestReflectedCall ();
-                       if (result == 0)
-                               Console.WriteLine ("*0* Could reflection on method (normal).");
-                       return result;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*2* Unexpected SecurityException.\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception.\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/refcas2.cs b/mono/tests/cas/linkdemand/refcas2.cs
deleted file mode 100644 (file)
index ba5c2bb..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-[assembly: SecurityPermission (SecurityAction.RequestRefuse, ControlPrincipal=true)]
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 2;
-       }
-
-       static int TestReflectedCall ()
-       {
-               MethodInfo mi = typeof (Program).GetMethod ("Test", BindingFlags.Static | BindingFlags.Public);
-               if (mi == null) {
-                       Console.WriteLine ("*0* Couldn't reflect on call Test (normal).");
-                       return 0;
-               } else {
-                       Console.WriteLine ("*1* Reflected on call Test (abnormal).");
-                       return 1;
-               }
-       }
-
-       static int Main ()
-       {
-               try {
-                       int result = TestReflectedCall ();
-                       if (result == 2)
-                               Console.WriteLine ("*{0}* Unexpected calling thru reflection.", result);
-                       return result;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*3* Unexpected SecurityException.\n{0}", se);
-                       return 3;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*4* Unexpected Exception.\n{0}", e);
-                       return 4;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/refcas3.cs b/mono/tests/cas/linkdemand/refcas3.cs
deleted file mode 100644 (file)
index c4a0b6e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 3;
-       }
-
-       [SecurityPermission (SecurityAction.Deny, ControlPrincipal=true)]
-       static int TestReflectedCall ()
-       {
-               MethodInfo mi = typeof (Program).GetMethod ("Test", BindingFlags.Static | BindingFlags.Public);
-               if (mi == null) {
-                       Console.WriteLine ("*1* Couldn't reflect on call Test (abnormal).");
-                       return 1;
-               }
-               Console.WriteLine ("*0* Reflected on call Test (normal).");
-               // but invoking would throw a SecurityException!
-               return 0;
-       }
-
-       [SecurityPermission (SecurityAction.Deny, ControlPrincipal=true)]
-       static int Main ()
-       {
-               try {
-                       return TestReflectedCall ();
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("*2* Unexpected SecurityException.\n{0}", se);
-                       return 2;
-               }
-               catch (Exception e) {
-                       Console.WriteLine ("*3* Unexpected Exception.\n{0}", e);
-                       return 3;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/refcas4.cs b/mono/tests/cas/linkdemand/refcas4.cs
deleted file mode 100644 (file)
index a59f7cf..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 1;
-       }
-
-       static MethodInfo GetReflectedCall ()
-       {
-               return typeof (Program).GetMethod ("Test", BindingFlags.Static | BindingFlags.Public);
-       }
-
-       [SecurityPermission (SecurityAction.Deny, ControlPrincipal=true)]
-       static int CallReflectedCall (MethodInfo mi)
-       {
-               return (int) mi.Invoke (null, null);
-       }
-
-       static int Main ()
-       {
-               try {
-                       MethodInfo mi = GetReflectedCall ();
-                       if (mi == null) {
-                               Console.WriteLine ("*2* Couldn't reflect on call Test (failure).");
-                               return 2;
-                       } else {
-                               int result = CallReflectedCall (mi);
-                               if (result == 1)
-                                       Console.WriteLine ("*{0}* Unexpected calling thru reflection.", result);
-                               else
-                                       Console.WriteLine ("*{0}* Unexpected return value from reflection.", result);
-
-                               return result;
-                       }
-               }
-               catch (SecurityException) {
-                       Console.WriteLine ("*0* Expected SecurityException.");
-                       return 0;
-               }
-       }
-}
diff --git a/mono/tests/cas/linkdemand/refcas5.cs b/mono/tests/cas/linkdemand/refcas5.cs
deleted file mode 100644 (file)
index ed264b4..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-public class Program {
-
-       [SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
-       public static int Test ()
-       {
-               return 1;
-       }
-
-       static MethodInfo GetReflectedCall ()
-       {
-               return typeof (Program).GetMethod ("Test", BindingFlags.Static | BindingFlags.Public);
-       }
-
-       static int LinkReflectedCall (MethodInfo mi)
-       {
-               // if a LinkDemand is enforced this will succeed;
-               // if a full Demand is enforced (stack walk) then it will fail
-               return (int) mi.Invoke (null, null);
-       }
-
-       [SecurityPermission (SecurityAction.Deny, ControlPrincipal=true)]
-       static int CallReflectedCall (MethodInfo mi)
-       {
-               return LinkReflectedCall (mi);
-       }
-
-       static int Main ()
-       {
-               try {
-                       MethodInfo mi = GetReflectedCall ();
-                       if (mi == null) {
-                               Console.WriteLine ("*2* Couldn't reflect on call Test (failure).");
-                               return 2;
-                       } else {
-                               int result = CallReflectedCall (mi);
-                               if (result == 1)
-                                       Console.WriteLine ("*{0}* Unexpected calling thru reflection.", result);
-                               else
-                                       Console.WriteLine ("*{0}* Unexpected return value from reflection.", result);
-
-                               return result;
-                       }
-               }
-               catch (SecurityException) {
-                       Console.WriteLine ("*0* Expected SecurityException.");
-                       return 0;
-               }
-       }
-}
diff --git a/mono/tests/cas/threads/.gitignore b/mono/tests/cas/threads/.gitignore
deleted file mode 100644 (file)
index 263a09f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/Makefile.in
-/Makefile
-/*.mdb
-/*.exe
diff --git a/mono/tests/cas/threads/ChangeLog b/mono/tests/cas/threads/ChangeLog
deleted file mode 100644 (file)
index e828d56..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-2006-06-27  Wade Berrier <wberrier@novell.com>
-
-       * Makefile.am: Use mcs from the mcs tree instead of
-       what's in the path.  Rename targets so tests are not compiled at
-       build time.
-
-2006-06-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Use mono-wrapper (and not the installed mono). Remove
-       SWF tests from execution.
-
-2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Makefile.am: Updated Makefile to add the CAS tests to the tarball
-       and enable them to be more broadly tested;
-       * Makefile: Removed and replaced by Makefile.am
-
-2005-05-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * tpool1-2.cs: New. ThreadPool based tests.
-
-2005-05-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * delegate1-2.cs: Updated to use ControlEvidence.
-       * swf-timer3.cs: Updated to execute the SWF message loop.
-       * README: fixed typos.
-
-2005-05-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * delegate1-2.cs: New. Delegate based tests.
-       * Makefile: Updated for new tests.
-       * README: Updated for new tests.
-       * swf-control1.cs: New. Control.BeginInvoke test.
-       * swf-timer3-4.cs: New. Timer tests requiring SWF.
-       * timer1-2.cs: Changed to use ControlEvidence.
-
-2005-04-21  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ChangeLog: New. Track changes in the tests.
-       * Makefile: New. Build and execute tests.
-       * README: Informations about the tests.
-       * thread1.cs: New. Deny unmanaged code before creating the thread 
-       object.
-       * thread2.cs: New. Deny unmanaged code after creating the thread 
-       object but before calling Start.
-       * thread3.cs: New. Deny unmanaged code after creating the thread 
-       object and calling Start.
-       * timer1.cs: New. Use System.Threading.Timer (Thread.Start) to test 
-       stack propagation.
-       * timer2.cs: New. Use System.Timers.Timer (ThreadPool.
-       QueueUserWorkItem) to test stack propagation.
diff --git a/mono/tests/cas/threads/Makefile.am b/mono/tests/cas/threads/Makefile.am
deleted file mode 100644 (file)
index 9658d29..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_2_0
-
-RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper --debug
-
-CAS_RUNTIME = $(RUNTIME) --security
-
-CSCOMPILE = $(RUNTIME) $(mcs_topdir)/class/lib/basic/mcs.exe -debug
-PROFILE = net_2_0
-
-EXTRA_DIST = thread1.cs thread2.cs thread3.cs \
-       tpool1.cs tpool2.cs \
-       timer1.cs timer2.cs swf-timer3.cs swf-timer4.cs \
-       delegate1.cs delegate2.cs \
-       swf-control1.cs
-
-tests: thread1.exe thread2.exe thread3.exe \
-       tpool1.exe tpool2.exe delegate1.exe delegate2.exe \
-       timer1.exe timer2.exe
-#      swf-timer3.exe swf-timer4.exe swf-control1.exe
-
-aot:   thread1.exe.so thread2.exe.so thread3.exe.so \
-       tpool1.exe.so tpool2.exe.so \
-       timer1.exe.so timer2.exe.so swf-timer3.exe.so swf-timer4.exe.so \
-       delegate1.exe.so delegate2.exe.so \
-       swf-control1.exe.so
-
-FULLTRUST_TEST_FILES = thread1 thread2 thread3 \
-       tpool1 tpool2 \
-       timer1 timer2 \
-       delegate1 delegate2
-
-UNHANDLED_TEST_FILES = 
-
-run: tests
-       @for i in $(FULLTRUST_TEST_FILES); do   \
-               $(CAS_RUNTIME) $$i.exe x;       \
-       done;
-       @for i in $(INTERNET_TEST_FILES); do    \
-               MONO_CAS_ZONE=Internet $(CAS_RUNTIME) $$i.exe;  \
-       done;
-
-test: tests
-       @failed=0; \
-       passed=0; \
-       for i in $(FULLTRUST_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "fulltrust-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               else    \
-                       echo -e "fulltrust-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} fulltrust-$$i"; \
-               fi;     \
-       done;   \
-       for i in $(UNHANDLED_TEST_FILES); do    \
-               $(CAS_RUNTIME) $$i.exe > /dev/null;     \
-               if [ "$$?" = "0" ]; then        \
-                       echo -e "unhandled-$$i\tFAIL ($$?)";    \
-                       failed=`expr $${failed} + 1`; \
-                       failed_tests="$${failed_tests} unhandled-$$i"; \
-               else    \
-                       echo -e "unhandled-$$i\tpass";  \
-                       passed=`expr $${passed} + 1`; \
-               fi;     \
-       done;   \
-       echo -e "\n$${passed} test(s) passed. $${failed} test(s) failed."; \
-       if [ "$${failed}" != "0" ]; then        \
-               echo -e "Failed tests are:";    \
-               for i in $${failed_tests};      \
-                       do echo -e "\t$${i}";   \
-               done;   \
-               exit 1; \
-       fi
-
-clean:
-       rm -f *.exe* *.dll* *.snk
-
-swf-%.exe: swf-%.cs
-       $(CSCOMPILE) $^ /out:$@ /r:System.Windows.Forms.dll /r:System.Drawing.dll
-
-%.exe: %.cs
-       $(CSCOMPILE) $^ /out:$@
-
-%.exe.so: %.exe
-       $(RUNTIME) --aot $^
diff --git a/mono/tests/cas/threads/README b/mono/tests/cas/threads/README
deleted file mode 100644 (file)
index 83a46ee..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-The basic idea of the tests are to try to exit the running process by calling
-Environment.Exit(int). The entry point, Main, denies UnmanagedCode from being
-executed. UnmanagedCode is required to call Environment.Exit(int). Then we try
-to call Environment.Exit(int) from other threads which "should" have inherited
-the restriction from the "main" (i.e. original) thread.
-
-This security stack "inheritance" is called "stack propagation".
-
-* delegate1.cs Use a static delegate to test stack propagation.
-* delegate2.cs Use an instance delegate to test stack propagation.
-
-* thread1.cs   Deny unmanaged code before creating the thread object.
-* thread2.cs   Deny unmanaged code after creating the thread object but 
-               before calling Start.
-* thread3.cs   Deny unmanaged code after creating the thread object and 
-               calling Start. 
-
-* timer1.cs:   Use System.Threading.Timer (Thread.Start) to test stack 
-               propagation.
-* timer2.cs:   Use System.Timers.Timer (ThreadPool.QueueUserWorkItem) to test
-               stack propagation.
-
-* swf-timer3.cs: Use System.Timers.Timer (ThreadPool.QueueUserWorkItem) with a 
-               SynchonizingObject (like required for SWF) to test stack 
-               propagation.
-* swf-timer4.cs: Use System.Windows.Forms.Timer to test stack propagation.
-
-* swf-control1.cs: Use Control.BeginInvoke to test stack propagation.
-
-* tpool1.cs:   Use ThreadPool.QueueUserWorkItem to test stack propagation.
-* tpool2.cs:   Use ThreadPool.UnsafeQueueUserWorkItem to test non-propagation
-               of the stack.
-
-Notes:
-
-* swf-*.cs test cases requires SWF (and it's dependancies) to be installed 
-(and functional) to succeed.
diff --git a/mono/tests/cas/threads/delegate1.cs b/mono/tests/cas/threads/delegate1.cs
deleted file mode 100644 (file)
index a428ffd..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-public class Program {
-
-       delegate void Test ();
-       
-       public static void TestStatic ()
-       {
-               if (debug) {
-                       string name = Thread.CurrentThread.Name;
-                       if (name == null)
-                               name = "[unnamed]";
-
-                       Console.WriteLine ("\tDelegate running on thread: {0} (from pool: {1})\n{2}", name, 
-                               Thread.CurrentThread.IsThreadPoolThread, Environment.StackTrace);
-               }
-
-               try {
-                       Console.WriteLine (Assembly.GetExecutingAssembly ().Evidence.Count);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-       }
-
-       static bool debug;
-       static int result;
-
-       // this Deny will prevent the Assembly.Evidence property from working
-       [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
-       public static int Main (string[] args)
-       {
-               result = 0;
-               debug = (args.Length > 0);
-               if (debug) {
-                       Thread.CurrentThread.Name = "Main";
-                       Console.WriteLine (">Thread.Name: {0}", Thread.CurrentThread.Name);
-               }
-
-               Test t = new Test (TestStatic);
-               IAsyncResult ar = t.BeginInvoke (null, null);
-               t.EndInvoke (ar);
-
-               if (debug)
-                       Console.WriteLine ("<Thread.Name: {0}", Thread.CurrentThread.Name);
-               
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/delegate2.cs b/mono/tests/cas/threads/delegate2.cs
deleted file mode 100644 (file)
index 9b5b16c..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-public class Program {
-
-       delegate void Test ();
-       
-       public void TestInstance ()
-       {
-               if (debug) {
-                       string name = Thread.CurrentThread.Name;
-                       if (name == null)
-                               name = "[unnamed]";
-
-                       Console.WriteLine ("\tDelegate running on thread: {0} (from pool: {1})\n{2}", name, 
-                               Thread.CurrentThread.IsThreadPoolThread, Environment.StackTrace);
-               }
-
-               try {
-                       Console.WriteLine (Assembly.GetExecutingAssembly ().Evidence.Count);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-       }
-
-       static bool debug;
-       static int result;
-
-       // this Deny will prevent the Assembly.Evidence property from working
-       [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
-       public static int Main (string[] args)
-       {
-               result = 0;
-               debug = (args.Length > 0);
-               if (debug) {
-                       Thread.CurrentThread.Name = "Main";
-                       Console.WriteLine (">Thread.Name: {0}", Thread.CurrentThread.Name);
-               }
-
-               Program p = new Program ();
-               Test t = new Test (p.TestInstance);
-               IAsyncResult ar = t.BeginInvoke (null, null);
-
-               if (debug)
-                       Console.WriteLine ("\tIAsyncResult type is {0}", ar.GetType ());
-
-               t.EndInvoke (ar);
-
-               if (debug)
-                       Console.WriteLine ("<Thread.Name: {0}", Thread.CurrentThread.Name);
-               
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/swf-control1.cs b/mono/tests/cas/threads/swf-control1.cs
deleted file mode 100644 (file)
index 4cd7905..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// swf-control1.cs (based on swf-begininvoke.cs)
-//
-// Authors:
-//     Jackson Harper (jackson@ximian.com)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright (c) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-
-using System;
-using System.Diagnostics;
-using System.Drawing;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-using System.Windows.Forms;
-
-namespace System.Windows.Forms {
-
-       public class BeginInvokeDemo : Form {
-
-               private Label label;
-
-               public BeginInvokeDemo ()
-               {
-                       label = new Label ();
-                       label.Dock = DockStyle.Fill;
-                       label.TextAlign = ContentAlignment.MiddleCenter;
-                       Controls.Add (label);
-               }
-
-               private void InfoUpdaterAllow ()
-               {
-                       string s = String.Format ("SecurityManager.SecurityEnabled: {0}{1}{2}{1}",
-                               SecurityManager.SecurityEnabled, Environment.NewLine, DateTime.Now.ToLongTimeString ());
-                       try {
-                               s += String.Format ("Wake up {0}!", Environment.UserName);
-                       }
-                       catch (SecurityException) {
-                               s += "SecurityException";
-                       }
-                       label.Text = s;
-                       label.Refresh ();
-
-                       if (debug)
-                               Console.WriteLine ("Delegate: {0}\n{1}", Thread.CurrentThread.Name, new StackTrace ().ToString ());
-               }
-
-               private delegate void updater ();
-
-               private void InfoUpdaterDeny ()
-               {
-                       InfoUpdaterAllow ();
-               }
-
-               private void UpdateLabelAllow ()
-               {
-                       if (debug)
-                               Console.WriteLine ("Allow: {0}", Thread.CurrentThread.Name);
-
-                       while (counter++ < 10) {
-                               lock (this) {
-                                       label.BeginInvoke (new updater (InfoUpdaterAllow));
-                               }
-                               Thread.Sleep (500);
-                       }
-
-                       if (debug)
-                               Console.WriteLine ("Application.Exit ();");
-                       Application.Exit ();
-               }
-
-               [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
-               private void UpdateLabelDeny ()
-               {
-                       if (debug)
-                               Console.WriteLine ("Deny: {0}", Thread.CurrentThread.Name);
-
-                       while (counter++ < 10) {
-                               lock (this) {
-                                       label.BeginInvoke (new updater (InfoUpdaterDeny));
-                               }
-                               Thread.Sleep (500);
-                       }
-
-                       if (debug)
-                               Console.WriteLine ("Application.Exit ();");
-                       Application.Exit ();
-               }
-
-               static bool debug = false;
-               static int counter = 0;
-
-               public static void Main (string[] args)
-               {
-                       Thread.CurrentThread.Name = "Main";
-                       BeginInvokeDemo demo = new BeginInvokeDemo ();
-                       demo.CreateHandle ();
-
-                       ThreadStart thread_start = new ThreadStart (demo.UpdateLabelDeny);
-                       if (args.Length > 0) {
-                               debug = true;
-                               if (args [0] == "allow") {
-                                       thread_start = new ThreadStart (demo.UpdateLabelAllow);
-                               }
-                       }
-                       Thread worker = new Thread (thread_start);
-                       worker.Name = "Updater";
-                       worker.IsBackground = true;
-                       worker.Start ();
-
-                       Application.Run (demo);
-               }
-       }
-}
diff --git a/mono/tests/cas/threads/swf-timer3.cs b/mono/tests/cas/threads/swf-timer3.cs
deleted file mode 100644 (file)
index a892478..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-using System.Timers;
-using System.Windows.Forms;
-
-class Program {
-
-       static void ShowStackTrace (object o, ElapsedEventArgs e)
-       {
-               if (debug)
-                       Console.WriteLine ("{0}: {1}", counter, Environment.StackTrace);
-
-               try {
-                       Console.WriteLine (Assembly.GetExecutingAssembly ().Evidence.Count);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-
-               if (counter++ > 5) {
-                       t.AutoReset = false;
-                       t.Enabled = false;
-               }
-       }
-
-       static bool debug;
-       static int counter = 0;
-       static int result = 0;
-       static System.Timers.Timer t;
-
-       // this Deny will prevent the Assembly.Evidence property from working
-       [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               if (debug) {
-                       SecurityManager.SecurityEnabled = (args [0] != "off");
-               }
-
-               if (SecurityManager.SecurityEnabled) {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: true");
-                       ShowStackTrace (null, null);
-               } else {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: false");
-               }
-
-               Label label = new Label ();
-
-               t = new System.Timers.Timer (500);
-               t.SynchronizingObject = label;
-               t.Elapsed += new ElapsedEventHandler (ShowStackTrace);
-               t.AutoReset = true;
-               t.Enabled = true;
-
-               // Mono SWF async support requires the message loop in action           
-               while (counter <= 5)
-                       Application.DoEvents ();
-
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/swf-timer4.cs b/mono/tests/cas/threads/swf-timer4.cs
deleted file mode 100644 (file)
index dcabf81..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-using System.Windows.Forms;
-
-class Program {
-
-       static void ShowStackTrace (object o, EventArgs e)
-       {
-               if (debug)
-                       Console.WriteLine ("{0}: {1}", counter, Environment.StackTrace);
-
-               try {
-                       Console.WriteLine (Assembly.GetExecutingAssembly ().Evidence.Count);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-
-               counter++;
-       }
-
-       static bool debug;
-       static int counter;
-       static int result = 0;
-
-       // this Deny will prevent the Assembly.Evidence property from working
-       [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               if (debug) {
-                       SecurityManager.SecurityEnabled = (args [0] != "off");
-               }
-
-               if (SecurityManager.SecurityEnabled) {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: true");
-                       ShowStackTrace (null, null);
-               } else {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: false");
-               }
-
-               Timer t = new Timer ();
-               t.Tick += new EventHandler (ShowStackTrace);
-               t.Interval = 1000;
-               t.Start ();
-               
-               while (counter <= 5)
-                       Application.DoEvents ();
-
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/thread1.cs b/mono/tests/cas/threads/thread1.cs
deleted file mode 100644 (file)
index 61d37de..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-class Program {
-
-       static void ThreadProc ()
-       {
-               if (debug)
-                       Console.WriteLine (Environment.StackTrace);
-
-               try {
-                       Environment.Exit (1);
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-       }
-
-       static bool debug;
-
-       // this Deny will prevent Environment.Exit from working
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               Thread t = new Thread (new ThreadStart (ThreadProc));
-               t.Start ();
-               Thread.Sleep (1000);
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/threads/thread2.cs b/mono/tests/cas/threads/thread2.cs
deleted file mode 100644 (file)
index 0679436..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-class Program {
-
-       static void ThreadProc ()
-       {
-               if (debug)
-                       Console.WriteLine (Environment.StackTrace);
-
-               try {
-                       Environment.Exit (1);
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-       }
-
-       static bool debug;
-
-       // this Deny will prevent Environment.Exit from working
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
-       static void Start (Thread t)
-       {
-               t.Start ();
-       }
-
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               Thread t = new Thread (new ThreadStart (ThreadProc));
-               Start (t);
-               Thread.Sleep (1000);
-               return 0;
-       }
-}
diff --git a/mono/tests/cas/threads/thread3.cs b/mono/tests/cas/threads/thread3.cs
deleted file mode 100644 (file)
index c064887..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-class Program {
-
-       static void ThreadProc ()
-       {
-               if (debug)
-                       Console.WriteLine (Environment.StackTrace);
-
-               Thread.Sleep (1000);
-               try {
-                       // this will work
-                       Environment.Exit (0);
-                       Console.WriteLine ("UNEXPECTED execution");
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("UNEXPECTED SecurityException {0}", se);
-               }
-       }
-
-       static bool debug;
-
-       // this Deny _WONT_ prevent Environment.Exit from working
-       // even if the Deny is executed prior to the call
-       [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
-       static int End ()
-       {
-               Thread.Sleep (2000);
-               return 1;
-       }
-
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               Thread t = new Thread (new ThreadStart (ThreadProc));
-               t.Start ();
-
-               return End ();
-       }
-}
diff --git a/mono/tests/cas/threads/timer1.cs b/mono/tests/cas/threads/timer1.cs
deleted file mode 100644 (file)
index fa60e19..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-class Program {
-
-       static void ShowStackTrace (object o)
-       {
-               if (debug)
-                       Console.WriteLine ("{0}: {1}", counter, Environment.StackTrace);
-
-               try {
-                       Console.WriteLine (Assembly.GetExecutingAssembly ().Evidence.Count);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-
-               if (counter++ > 5) {
-                       t.Dispose ();
-               }
-       }
-
-       static bool debug;
-       static int counter = 0;
-       static int result = 0;
-       static Timer t;
-
-       // this Deny will prevent the Assembly.Evidence property from working
-       [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               if (debug) {
-                       SecurityManager.SecurityEnabled = (args [0] != "off");
-               }
-
-               ShowStackTrace (null);
-
-               TimerCallback cb = new TimerCallback (ShowStackTrace);
-               t = new Timer (cb, null, 500, 1000);
-
-               Thread.Sleep (5000);
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/timer2.cs b/mono/tests/cas/threads/timer2.cs
deleted file mode 100644 (file)
index 558527a..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-using System;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-using System.Timers;
-
-class Program {
-
-       static void ShowStackTrace (object o, ElapsedEventArgs e)
-       {
-               if (debug)
-                       Console.WriteLine ("{0}: {1}", counter, Environment.StackTrace);
-
-               try {
-                       Console.WriteLine (Assembly.GetExecutingAssembly ().Evidence.Count);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-
-               if (counter++ > 5) {
-                       t.AutoReset = false;
-                       t.Enabled = false;
-               }
-       }
-
-       static bool debug;
-       static int counter = 0;
-       static int result = 0;
-       static Timer t;
-
-       // this Deny will prevent the Assembly.Evidence property from working
-       [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               if (debug) {
-                       SecurityManager.SecurityEnabled = (args [0] != "off");
-               }
-
-               if (SecurityManager.SecurityEnabled) {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: true");
-                       ShowStackTrace (null, null);
-               } else {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: false");
-               }
-
-               t = new Timer (500);
-               t.Elapsed += new ElapsedEventHandler (ShowStackTrace);
-               t.AutoReset = true;
-               t.Enabled = true;
-               
-               System.Threading.Thread.Sleep (5000);
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/tpool1.cs b/mono/tests/cas/threads/tpool1.cs
deleted file mode 100644 (file)
index 4a373ab..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-class Program {
-
-       static void ShowStackTrace (object o)
-       {
-               if (debug)
-                       Console.WriteLine ((int)o);
-
-               try {
-                       Console.WriteLine (Environment.UserName);
-                       result = 1;
-               }
-               catch (SecurityException se) {
-                       if (debug)
-                               Console.WriteLine ("EXPECTED SecurityException {0}", se);
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-       }
-
-       static bool debug;
-       static int result = 0;
-
-       // this Deny will prevent the Environment.UserName property from working
-       [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               if (debug) {
-                       SecurityManager.SecurityEnabled = (args [0] != "off");
-               }
-
-               if (SecurityManager.SecurityEnabled) {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: true");
-                       ShowStackTrace ((object)-1);
-               } else {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: false");
-               }
-
-               result = 0;
-               for (int i=0; i < 5; i++)
-                       ThreadPool.QueueUserWorkItem (new WaitCallback (ShowStackTrace), i);
-               
-               System.Threading.Thread.Sleep (5000);
-               return result;
-       }
-}
diff --git a/mono/tests/cas/threads/tpool2.cs b/mono/tests/cas/threads/tpool2.cs
deleted file mode 100644 (file)
index db0be54..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Threading;
-
-class Program {
-
-       static void ShowStackTrace (object o)
-       {
-               if (debug)
-                       Console.WriteLine ((int)o);
-
-               try {
-                       Console.WriteLine (Environment.UserName);
-                       result = 0;
-               }
-               catch (SecurityException se) {
-                       Console.WriteLine ("UNEXPECTED SecurityException {0}", se);
-                       result = 1;
-               }
-               catch (Exception ex) {
-                       Console.WriteLine ("UNEXPECTED {0}", ex);
-                       result = 1;
-               }
-       }
-
-       static bool debug;
-       static int result = 0;
-
-       // this Deny will *NOT* prevent the Environment.UserName property from working
-       // as the UnsafeQueueUserWorkItem method *DOESN'T* propagate the stack
-       [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
-       static int Main (string[] args)
-       {
-               debug = (args.Length > 0);
-               if (debug) {
-                       SecurityManager.SecurityEnabled = (args [0] != "off");
-               }
-
-               if (SecurityManager.SecurityEnabled) {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: true");
-                       ShowStackTrace ((object)-1);
-               } else {
-                       Console.WriteLine ("SecurityManager.SecurityEnabled: false");
-               }
-
-               result = 0;
-               for (int i=0; i < 5; i++)
-                       ThreadPool.UnsafeQueueUserWorkItem (new WaitCallback (ShowStackTrace), i);
-               
-               System.Threading.Thread.Sleep (5000);
-               return result;
-       }
-}
diff --git a/mono/tests/delegate10.cs b/mono/tests/delegate10.cs
new file mode 100644 (file)
index 0000000..86f988d
--- /dev/null
@@ -0,0 +1,23 @@
+using System;
+using System.Reflection;
+
+public class Tests
+{
+       public struct Test {
+               public string MyProp {get; set;}
+       }
+
+       delegate string GetterDelegate (ref Test arg);
+
+       public static int Main (String[] args) {
+               var m = typeof (Tests.Test).GetProperty ("MyProp").GetMethod;
+
+               var d = (GetterDelegate)m.CreateDelegate (typeof (GetterDelegate));
+
+               var s = new Test () { MyProp = "A" };
+               if (d (ref s) == "A")
+                       return 0;
+               else
+                       return 1;
+       }
+}
diff --git a/mono/tests/delegate11.cs b/mono/tests/delegate11.cs
new file mode 100644 (file)
index 0000000..5365c8a
--- /dev/null
@@ -0,0 +1,57 @@
+using System;
+
+public static class Driver
+{
+       delegate void SimpleDelegate ();
+
+       static int error = 0;
+
+       class VirtualDelegate0
+       {
+               public virtual void OnEvent ()
+               {
+                       Console.WriteLine ("VirtualDelegate0.OnEvent (error!)");
+                       error = 1;
+               }
+       }
+
+       class VirtualDelegate1 : VirtualDelegate0
+       {
+               public override void OnEvent ()
+               {
+                       Console.WriteLine ("VirtualDelegate1.OnEvent");
+               }
+       }
+
+       class NonVirtualDelegate
+       {
+               public void OnEvent ()
+               {
+                       Console.WriteLine ("NonVirtualDelegate.OnEvent");
+               }
+       }
+
+       static bool check (SimpleDelegate d)
+       {
+               error = 0;
+               d ();
+               return error == 0;
+       }
+
+       public static int Main ()
+       {
+               SimpleDelegate dv = new SimpleDelegate (new VirtualDelegate1 ().OnEvent);
+               SimpleDelegate dnv = new SimpleDelegate (new NonVirtualDelegate ().OnEvent);
+
+               if (!check (dv + dv))
+                       return 1;
+               if (!check (dnv + dv))
+                       return 2;
+               if (!check (dv + dnv))
+                       return 3;
+               if (!check (dnv + dnv))
+                       return 4;
+
+               return 0;
+       }
+}
index 6e1fe94e17ae896af4f52d07276956143371704f..a89657a4ba28fdc6b22479091a4683150a152b51 100644 (file)
@@ -4,8 +4,6 @@ using System.Runtime.InteropServices;
 class Tests {
        delegate void SimpleDelegate ();
 
-       public static int v = 0;
-       
        static void F1 () {
                v += 1;
                Console.WriteLine ("Test.F1");
@@ -14,45 +12,114 @@ class Tests {
                v += 2;
                Console.WriteLine ("Test.F2");
        }
-       static void F3 () {
+       static void F4 () {
                v += 4;
-               Console.WriteLine ("Test.F3");
+               Console.WriteLine ("Test.F4");
        }
 
        public static int Main () {
                return TestDriver.RunTests (typeof (Tests));
        }
 
+       static int v = 0;
+       static bool check_is_expected_v (SimpleDelegate d, int expected_v)
+       {
+               v = 0;
+               d ();
+               return v == expected_v;
+       }
+
        static public int test_0_test () {
-               SimpleDelegate t;
                SimpleDelegate d1 = new SimpleDelegate (F1);
                SimpleDelegate d2 = new SimpleDelegate (F2);
-               SimpleDelegate d3 = new SimpleDelegate (F3);
+               SimpleDelegate d4 = new SimpleDelegate (F4);
+
+               if (d1 - d1 != null)
+                       return 1;
+               if (!check_is_expected_v (d1 - d2, 1))
+                       return 2;
+               if (!check_is_expected_v (d1 - d4, 1))
+                       return 3;
+
+               if (!check_is_expected_v (d2 - d1, 2))
+                       return 4;
+               if (d2 - d2 != null)
+                       return 5;
+               if (!check_is_expected_v (d2 - d4, 2))
+                       return 6;
+
+               if (!check_is_expected_v (d4 - d1, 4))
+                       return 7;
+               if (!check_is_expected_v (d4 - d2, 4))
+                       return 8;
+               if (d4 - d4 != null)
+                       return 9;
 
                SimpleDelegate d12 = d1 + d2;
-               SimpleDelegate d13 = d1 + d3;
-               SimpleDelegate d23 = d2 + d3;
-               SimpleDelegate d123 = d1 + d2 + d3;
+               SimpleDelegate d14 = d1 + d4;
+               SimpleDelegate d24 = d2 + d4;
+
+               if (!check_is_expected_v (d12 - d1, 2))
+                       return 11;
+               if (!check_is_expected_v (d12 - d2, 1))
+                       return 12;
+               if (!check_is_expected_v (d12 - d4, 3))
+                       return 13;
+
+               if (!check_is_expected_v (d14 - d1, 4))
+                       return 14;
+               if (!check_is_expected_v (d14 - d2, 5))
+                       return 15;
+               if (!check_is_expected_v (d14 - d4, 1))
+                       return 16;
+
+               if (!check_is_expected_v (d14 - d1, 4))
+                       return 17;
+               if (!check_is_expected_v (d14 - d2, 5))
+                       return 18;
+               if (!check_is_expected_v (d14 - d4, 1))
+                       return 19;
+
+               if (d12 - d12 != null)
+                       return 21;
+               if (!check_is_expected_v (d12 - d14, 2))
+                       return 22;
+               if (!check_is_expected_v (d12 - d24, 1))
+                       return 23;
+
+               if (!check_is_expected_v (d14 - d12, 4))
+                       return 24;
+               if (d14 - d14 != null)
+                       return 25;
+               if (!check_is_expected_v (d14 - d24, 1))
+                       return 26;
+
+               if (!check_is_expected_v (d24 - d12, 4))
+                       return 27;
+               if (!check_is_expected_v (d24 - d14, 2))
+                       return 28;
+               if (d24 - d24 != null)
+                       return 29;
+
+               SimpleDelegate d124 = d1 + d2 + d4;
+
+               if (!check_is_expected_v (d124 - d1, 6))
+                       return 31;
+               if (!check_is_expected_v (d124 - d2, 5))
+                       return 32;
+               if (!check_is_expected_v (d124 - d4, 3))
+                       return 33;
+
+               if (!check_is_expected_v (d124 - d12, 4))
+                       return 34;
+               if (!check_is_expected_v (d124 - d14, 2))
+                       return 35;
+               if (!check_is_expected_v (d124 - d24, 1))
+                       return 36;
+
+               if (d124 - d124 != null)
+                       return 37;
 
-               v = 0;
-               t = d123 - d13;
-               t ();
-               if (v != 7)
-                       return 1;
-               
-               v = 0;
-               t = d123 - d12;
-               t ();
-               if (v != 4)
-                       return 1;
-               
-               v = 0;
-               t = d123 - d23;
-               t ();
-               if (v != 1)
-                       return 1;
-               
-               
                return 0;
        }
 
diff --git a/mono/tests/dynamic-generic-size.cs b/mono/tests/dynamic-generic-size.cs
new file mode 100644 (file)
index 0000000..3a26f72
--- /dev/null
@@ -0,0 +1,61 @@
+using System;
+using System.Threading;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Collections.Generic;
+
+namespace GenericSize
+{
+    class GenericSize 
+    {
+    static int Iterations = 10000;
+               static AssemblyBuilder assembly;
+               static ModuleBuilder module;
+               static string ASSEMBLY_NAME = "MonoTests.System.Reflection.Emit.TypeBuilderTest";
+
+               static void SetUp ()
+               {
+                       AssemblyName assemblyName = new AssemblyName ();
+                       assemblyName.Name = ASSEMBLY_NAME;
+
+                       assembly =
+                               Thread.GetDomain ().DefineDynamicAssembly (assemblyName, AssemblyBuilderAccess.Run);
+
+                       module = assembly.DefineDynamicModule ("module1");
+               }
+
+               static int Main()
+               {
+                       SetUp ();
+
+                       TypeBuilder tb = module.DefineType ("Test", TypeAttributes.Public);
+                       tb.DefineGenericParameters ("T");
+                       var tb_ctor = tb.DefineDefaultConstructor (MethodAttributes.Public);
+
+                       var tb2 = module.DefineType ("Test2", TypeAttributes.Public);
+                       var g0 = tb2.DefineGenericParameters ("T");
+
+                       var mb = tb2.DefineMethod ("Foo", MethodAttributes.Public | MethodAttributes.Static, typeof (object), new Type [0]);
+
+                       var il = mb.GetILGenerator();
+                       il.Emit(OpCodes.Newobj, TypeBuilder.GetConstructor (tb.MakeGenericType (g0), tb_ctor));
+                       il.Emit(OpCodes.Ret);
+
+                       var t1 = tb.CreateType ();
+                       var t2 = tb2.CreateType ();
+
+                       var ginst = t2.MakeGenericType (typeof (string));
+                       var method = ginst.GetMethod ("Foo", BindingFlags.Public | BindingFlags.Static);
+
+                       var lst = new List<Object>();
+
+                       for (int i = 0; i < GenericSize.Iterations; i++) {
+                               lst.Add (method.Invoke (null, null));
+                               if (i % 15 == 0)
+                                       GC.Collect();
+                       }
+
+                       return 0;
+               }
+       }
+}
index 624feae80cd7822e0dfaddd6ae60013655f43385..a9f727f9296a779de712399b25b78862aecd9dc2 100644 (file)
@@ -249,4 +249,20 @@ class Tests
                        return 2;
                return 0;
        }
+
+       public static int test_0_multi_dim_array_ctor () {
+        var type1 = Type.GetType ("System.Char[,]").GetTypeInfo ();
+
+               ConstructorInfo ci = null;
+               foreach (var c in type1.DeclaredConstructors) {
+                       if (c.GetParameters ().Length == 4)
+                               ci = c;
+               }
+        var res = ci.Invoke (new object[] { 1, 5, -10, 7 });
+               var a = (Array)res;
+               if (a.GetLength (0) != 5 || a.GetLowerBound (0) != 1 || a.GetLength (1) != 7 || a.GetLowerBound (1) != -10)
+                       return 1;
+               return 0;
+       }
+
 }
index aee3344f537e96931d4d2aca00ed611b773af01a..ce9958e5946a0b393e375257ecea4a24e9596c25 100644 (file)
@@ -5,7 +5,7 @@
 /*.la
 /*.lo
 /*.trs
-/test-gc-memfuncs
+/test-memfuncs
 /test-mono-linked-list-set
 /test-sgen-qsort
 /test-conc-hashtable
index 50cec63f24ea8fd10d72f34c9dcf08e8bc8ccd04..8ff5eef6684851b2e7e30b3fac8c652339d87e93 100644 (file)
@@ -1,7 +1,7 @@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) -DMONO_BINDIR=\"$(bindir)/\" -DMONO_ASSEMBLIES=\"$(assembliesdir)\" -DMONO_CFG_DIR=\"$(confdir)\"
 
 test_cflags = $(AM_CFLAGS) $(SGEN_DEFINES)
-test_ldadd = ../metadata/libmonoruntimesgen.la ../io-layer/libwapi.la ../utils/libmonoutils.la \
+test_ldadd = ../metadata/libmonoruntimesgen.la ../sgen/libmonosgen.la ../io-layer/libwapi.la ../utils/libmonoutils.la \
        $(LIBGC_LIBS) $(GLIB_LIBS) -lm $(LIBICONV)
 if PLATFORM_DARWIN
 test_ldflags = -framework CoreFoundation -framework Foundation
@@ -18,10 +18,10 @@ test_sgen_qsort_CFLAGS = $(test_cflags)
 test_sgen_qsort_LDADD = $(test_ldadd)
 test_sgen_qsort_LDFLAGS = $(test_ldflags)
 
-test_gc_memfuncs_SOURCES = test-gc-memfuncs.c
-test_gc_memfuncs_CFLAGS = $(test_cflags)
-test_gc_memfuncs_LDADD = $(test_ldadd)
-test_gc_memfuncs_LDFLAGS = $(test_ldflags)
+test_memfuncs_SOURCES = test-memfuncs.c
+test_memfuncs_CFLAGS = $(test_cflags)
+test_memfuncs_LDADD = $(test_ldadd)
+test_memfuncs_LDFLAGS = $(test_ldflags)
 
 test_mono_linked_list_set_SOURCES = test-mono-linked-list-set.c
 test_mono_linked_list_set_CFLAGS = $(test_cflags)
@@ -33,9 +33,9 @@ test_conc_hashtable_CFLAGS = $(test_cflags)
 test_conc_hashtable_LDADD = $(test_ldadd)
 test_conc_hashtable_LDFLAGS = $(test_ldflags)
 
-noinst_PROGRAMS = test-sgen-qsort test-gc-memfuncs test-mono-linked-list-set test-conc-hashtable
+noinst_PROGRAMS = test-sgen-qsort test-memfuncs test-mono-linked-list-set test-conc-hashtable
 
-TESTS = test-sgen-qsort test-gc-memfuncs test-mono-linked-list-set test-conc-hashtable
+TESTS = test-sgen-qsort test-memfuncs test-mono-linked-list-set test-conc-hashtable
 
 endif !PLATFORM_GNU
 endif SUPPORT_BOEHM
diff --git a/mono/unit-tests/test-gc-memfuncs.c b/mono/unit-tests/test-gc-memfuncs.c
deleted file mode 100644 (file)
index 37c6c26..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * test-sgen-qsort.c: Unit test for our own bzero/memmove.
- *
- * Copyright (C) 2013 Xamarin Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License 2.0 as published by the Free Software Foundation;
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License 2.0 along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#include "metadata/gc-internal.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <assert.h>
-
-#define POOL_SIZE      2048
-#define START_OFFSET   128
-
-#define BZERO_OFFSETS  64
-#define BZERO_SIZES    256
-
-#define MEMMOVE_SRC_OFFSETS            32
-#define MEMMOVE_DEST_OFFSETS           32
-#define MEMMOVE_SIZES                  256
-#define MEMMOVE_NONOVERLAP_START       1024
-
-int
-main (void)
-{
-       unsigned char *random_mem = malloc (POOL_SIZE);
-       unsigned char *reference = malloc (POOL_SIZE);
-       unsigned char *playground = malloc (POOL_SIZE);
-       long *long_random_mem;
-       int i, offset, size, src_offset, dest_offset;
-
-       srandom (time (NULL));
-
-       /* init random memory */
-       long_random_mem = (long*)random_mem;
-       for (i = 0; i < POOL_SIZE / sizeof (long); ++i)
-               long_random_mem [i] = random ();
-
-       /* test bzero */
-       for (offset = 0; offset <= BZERO_OFFSETS; ++offset) {
-               for (size = 0; size <= BZERO_SIZES; ++size) {
-                       memcpy (reference, random_mem, POOL_SIZE);
-                       memcpy (playground, random_mem, POOL_SIZE);
-
-                       memset (reference + START_OFFSET + offset, 0, size);
-                       mono_gc_bzero_atomic (playground + START_OFFSET + offset, size);
-
-                       assert (!memcmp (reference, playground, POOL_SIZE));
-               }
-       }
-
-       /* test memmove */
-       for (src_offset = -MEMMOVE_SRC_OFFSETS; src_offset <= MEMMOVE_SRC_OFFSETS; ++src_offset) {
-               for (dest_offset = -MEMMOVE_DEST_OFFSETS; dest_offset <= MEMMOVE_DEST_OFFSETS; ++dest_offset) {
-                       for (size = 0; size <= MEMMOVE_SIZES; ++size) {
-                               /* overlapping */
-                               memcpy (reference, random_mem, POOL_SIZE);
-                               memcpy (playground, random_mem, POOL_SIZE);
-
-                               memmove (reference + START_OFFSET + dest_offset, reference + START_OFFSET + src_offset, size);
-                               mono_gc_memmove_atomic (playground + START_OFFSET + dest_offset, playground + START_OFFSET + src_offset, size);
-
-                               assert (!memcmp (reference, playground, POOL_SIZE));
-
-                               /* non-overlapping with dest < src */
-                               memcpy (reference, random_mem, POOL_SIZE);
-                               memcpy (playground, random_mem, POOL_SIZE);
-
-                               memmove (reference + START_OFFSET + dest_offset, reference + MEMMOVE_NONOVERLAP_START + src_offset, size);
-                               mono_gc_memmove_atomic (playground + START_OFFSET + dest_offset, playground + MEMMOVE_NONOVERLAP_START + src_offset, size);
-
-                               assert (!memcmp (reference, playground, POOL_SIZE));
-
-                               /* non-overlapping with dest > src */
-                               memcpy (reference, random_mem, POOL_SIZE);
-                               memcpy (playground, random_mem, POOL_SIZE);
-
-                               memmove (reference + MEMMOVE_NONOVERLAP_START + dest_offset, reference + START_OFFSET + src_offset, size);
-                               mono_gc_memmove_atomic (playground + MEMMOVE_NONOVERLAP_START + dest_offset, playground + START_OFFSET + src_offset, size);
-
-                               assert (!memcmp (reference, playground, POOL_SIZE));
-                       }
-               }
-       }
-
-       return 0;
-}
diff --git a/mono/unit-tests/test-memfuncs.c b/mono/unit-tests/test-memfuncs.c
new file mode 100644 (file)
index 0000000..a2b86bb
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * test-sgen-qsort.c: Unit test for our own bzero/memmove.
+ *
+ * Copyright (C) 2013 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "config.h"
+
+#include "utils/memfuncs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+
+#define POOL_SIZE      2048
+#define START_OFFSET   128
+
+#define BZERO_OFFSETS  64
+#define BZERO_SIZES    256
+
+#define MEMMOVE_SRC_OFFSETS            32
+#define MEMMOVE_DEST_OFFSETS           32
+#define MEMMOVE_SIZES                  256
+#define MEMMOVE_NONOVERLAP_START       1024
+
+int
+main (void)
+{
+       unsigned char *random_mem = malloc (POOL_SIZE);
+       unsigned char *reference = malloc (POOL_SIZE);
+       unsigned char *playground = malloc (POOL_SIZE);
+       long *long_random_mem;
+       int i, offset, size, src_offset, dest_offset;
+
+       srandom (time (NULL));
+
+       /* init random memory */
+       long_random_mem = (long*)random_mem;
+       for (i = 0; i < POOL_SIZE / sizeof (long); ++i)
+               long_random_mem [i] = random ();
+
+       /* test bzero */
+       for (offset = 0; offset <= BZERO_OFFSETS; ++offset) {
+               for (size = 0; size <= BZERO_SIZES; ++size) {
+                       memcpy (reference, random_mem, POOL_SIZE);
+                       memcpy (playground, random_mem, POOL_SIZE);
+
+                       memset (reference + START_OFFSET + offset, 0, size);
+                       mono_gc_bzero_atomic (playground + START_OFFSET + offset, size);
+
+                       assert (!memcmp (reference, playground, POOL_SIZE));
+               }
+       }
+
+       /* test memmove */
+       for (src_offset = -MEMMOVE_SRC_OFFSETS; src_offset <= MEMMOVE_SRC_OFFSETS; ++src_offset) {
+               for (dest_offset = -MEMMOVE_DEST_OFFSETS; dest_offset <= MEMMOVE_DEST_OFFSETS; ++dest_offset) {
+                       for (size = 0; size <= MEMMOVE_SIZES; ++size) {
+                               /* overlapping */
+                               memcpy (reference, random_mem, POOL_SIZE);
+                               memcpy (playground, random_mem, POOL_SIZE);
+
+                               memmove (reference + START_OFFSET + dest_offset, reference + START_OFFSET + src_offset, size);
+                               mono_gc_memmove_atomic (playground + START_OFFSET + dest_offset, playground + START_OFFSET + src_offset, size);
+
+                               assert (!memcmp (reference, playground, POOL_SIZE));
+
+                               /* non-overlapping with dest < src */
+                               memcpy (reference, random_mem, POOL_SIZE);
+                               memcpy (playground, random_mem, POOL_SIZE);
+
+                               memmove (reference + START_OFFSET + dest_offset, reference + MEMMOVE_NONOVERLAP_START + src_offset, size);
+                               mono_gc_memmove_atomic (playground + START_OFFSET + dest_offset, playground + MEMMOVE_NONOVERLAP_START + src_offset, size);
+
+                               assert (!memcmp (reference, playground, POOL_SIZE));
+
+                               /* non-overlapping with dest > src */
+                               memcpy (reference, random_mem, POOL_SIZE);
+                               memcpy (playground, random_mem, POOL_SIZE);
+
+                               memmove (reference + MEMMOVE_NONOVERLAP_START + dest_offset, reference + START_OFFSET + src_offset, size);
+                               mono_gc_memmove_atomic (playground + MEMMOVE_NONOVERLAP_START + dest_offset, playground + START_OFFSET + src_offset, size);
+
+                               assert (!memcmp (reference, playground, POOL_SIZE));
+                       }
+               }
+       }
+
+       return 0;
+}
index 2ee1afa95c9e755aba6715a69e9f08c942c9da78..40ca64cb01f1d64db54abc270b47d5c2f652aa07 100644 (file)
@@ -19,8 +19,8 @@
 
 #include "config.h"
 
-#include <metadata/sgen-gc.h>
-#include <metadata/sgen-qsort.h>
+#include <sgen/sgen-gc.h>
+#include <sgen/sgen-qsort.h>
 
 #include <stdlib.h>
 #include <string.h>
index f5cb440f46861bcf9bffcebc96dadff9c66d4707..f0a09cb3868151620006a3de3543f6b31c0b48bf 100644 (file)
@@ -135,7 +135,11 @@ monoutils_sources = \
        networking-windows.c    \
        networking.h    \
        mono-rand.c     \
-       mono-rand.h
+       mono-rand.h \
+       memfuncs.c \
+       memfuncs.h \
+       parse.c \
+       parse.h
 
 arch_sources = 
 
index f83272f88e651859ccdb4cedcf19bdfbf1eeb1e2..2ce2a6ea95e4afb928e2bb91d7bd0df263c936ae 100644 (file)
@@ -1164,7 +1164,7 @@ int mspace_mallopt(int, int);
 
 /*------------------------------ internal #includes ---------------------- */
 
-#ifdef WIN32
+#ifdef _MSC_VER
 #pragma warning( disable : 4146 ) /* no "unsigned" warnings */
 #endif /* WIN32 */
 
index 4e242ba10e07027afb2be3993c2fcb3b3ef229fd..c5c153bbca925462dd90b5958272916f6148af9c 100644 (file)
 #define MONO_GC_REQUESTED_ENABLED()    (0)
 
 
-#define MONO_GC_CHECKPOINT_1(generation)
-#define MONO_GC_CHECKPOINT_1_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_2(generation)
-#define MONO_GC_CHECKPOINT_2_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_3(generation)
-#define MONO_GC_CHECKPOINT_3_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_4(generation)
-#define MONO_GC_CHECKPOINT_4_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_5(generation)
-#define MONO_GC_CHECKPOINT_5_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_6(generation)
-#define MONO_GC_CHECKPOINT_6_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_7(generation)
-#define MONO_GC_CHECKPOINT_7_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_8(generation)
-#define MONO_GC_CHECKPOINT_8_ENABLED() (0)
-
-#define MONO_GC_CHECKPOINT_9(generation)
-#define MONO_GC_CHECKPOINT_9_ENABLED() (0)
-
-
 #define MONO_GC_CONCURRENT_START_BEGIN(generation)
 #define MONO_GC_CONCURRENT_START_BEGIN_ENABLED()       (0)
 
-#define MONO_GC_CONCURRENT_START_END(generation,num_major_objects_marked)
-#define MONO_GC_CONCURRENT_START_END_ENABLED() (0)
-
 #define MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN(generation,num_major_objects_marked)
 #define MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN_ENABLED()       (0)
 
-#define MONO_GC_CONCURRENT_UPDATE_END(generation,num_major_objects_marked)
-#define MONO_GC_CONCURRENT_UPDATE_END_ENABLED()        (0)
-
-#define MONO_GC_CONCURRENT_FINISH_END(generation,num_major_objects_marked)
-#define MONO_GC_CONCURRENT_FINISH_END_ENABLED()        (0)
-
-
 #define MONO_GC_SWEEP_BEGIN(generation,full_sweep)
 #define MONO_GC_SWEEP_BEGIN_ENABLED()  (0)
 
 #define MONO_GC_WORLD_RESTART_END_ENABLED()    (0)
 
 
-#define MONO_GC_HEAP_ALLOC(addr,size)
-#define MONO_GC_HEAP_ALLOC_ENABLED()   (0)
-
-#define MONO_GC_HEAP_FREE(addr,size)
-#define MONO_GC_HEAP_FREE_ENABLED()    (0)
-
-
-#define MONO_GC_LOCKED()
-#define MONO_GC_LOCKED_ENABLED() (0)
-
-#define MONO_GC_UNLOCKED()
-#define MONO_GC_UNLOCKED_ENABLED() (0)
-
-
 #define MONO_GC_NURSERY_TLAB_ALLOC(addr,len)
 #define MONO_GC_NURSERY_TLAB_ALLOC_ENABLED()   (0)
 
 #define MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED(addr,size,ns_name,class_name)
 #define MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED_ENABLED()     (0)
 
-#define MONO_GC_MAJOR_OBJ_ALLOC_MATURE(addr,size,ns_name,class_name)
-#define MONO_GC_MAJOR_OBJ_ALLOC_MATURE_ENABLED()       (0)
-
 
 #define MONO_GC_OBJ_MOVED(dest,src,dest_gen,src_gen,size,ns_name,class_name)
 #define MONO_GC_OBJ_MOVED_ENABLED()    (0)
 #define MONO_GC_FINALIZE_INVOKE_ENABLED()      (0)
 
 
-#define MONO_GC_WEAK_UPDATE(ref_addr,old_addr,new_addr,size,ns_name,class_name,track)
+#define MONO_GC_WEAK_UPDATE(ref_addr,new_addr,size,ns_name,class_name,track)
 #define MONO_GC_WEAK_UPDATE_ENABLED()  (0)
 
 
 #define MONO_GC_OBJ_CEMENTED(addr,size,ns_name,class_name)
 #define MONO_GC_OBJ_CEMENTED_ENABLED() (0)
 
-
-#define MONO_GC_INTERNAL_ALLOC(addr,size,type)
-#define MONO_GC_INTERNAL_ALLOC_ENABLED()       (0)
-
-#define MONO_GC_INTERNAL_DEALLOC(addr,size,type)
-#define MONO_GC_INTERNAL_DEALLOC_ENABLED()     (0)
-
 #endif
 
 #endif
index a662261270d47b94cce659c7f1ad317a89df065b..0d7d37ac736c04065cf200e8be8a0ae10ab9a925 100644 (file)
@@ -6,16 +6,24 @@
 
 #include <config.h>
 
+#include <string.h>
+
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-memory-model.h>
-#include <mono/utils/mono-mmap.h>
 #include <mono/utils/monobitset.h>
-#include <mono/utils/mono-threads.h>
 #include <mono/utils/lock-free-array-queue.h>
-#include <mono/utils/mono-counters.h>
 #include <mono/utils/atomic.h>
+#include <mono/utils/mono-mutex.h>
+#ifdef SGEN_WITHOUT_MONO
+#include <mono/sgen/sgen-gc.h>
+#include <mono/sgen/sgen-client.h>
+#else
+#include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-threads.h>
+#include <mono/utils/mono-counters.h>
 #include <mono/io-layer/io-layer.h>
+#endif
 
 typedef struct {
        gpointer p;
@@ -101,7 +109,7 @@ mono_thread_small_id_alloc (void)
                int num_pages = (hazard_table_size * sizeof (MonoThreadHazardPointers) + pagesize - 1) / pagesize;
 
                if (hazard_table == NULL) {
-                       hazard_table = mono_valloc (NULL,
+                       hazard_table = (MonoThreadHazardPointers *volatile) mono_valloc (NULL,
                                sizeof (MonoThreadHazardPointers) * HAZARD_TABLE_MAX_SIZE,
                                MONO_MMAP_NONE);
                }
index 4de3e9f5cdda6dc7007f81edacff0f4fbbcb5990..2ca9ec247457aa5490ec14587282698366ab081c 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <mono/utils/json.h>
 
-void json_writer_init (JsonWriter* writer)
+void mono_json_writer_init (JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
 
@@ -17,25 +17,25 @@ void json_writer_init (JsonWriter* writer)
        writer->indent = 0;
 }
 
-void json_writer_destroy (JsonWriter* writer)
+void mono_json_writer_destroy (JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
        g_string_free (writer->text, /*free_segment=*/TRUE);
 }
 
-void json_writer_indent_push(JsonWriter* writer)
+void mono_json_writer_indent_push(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
        writer->indent += JSON_INDENT_VALUE;
 }
 
-void json_writer_indent_pop(JsonWriter* writer)
+void mono_json_writer_indent_pop(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
        writer->indent -= JSON_INDENT_VALUE;
 }
 
-void json_writer_indent(JsonWriter* writer)
+void mono_json_writer_indent(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
 
@@ -44,13 +44,13 @@ void json_writer_indent(JsonWriter* writer)
                g_string_append_c (writer->text, ' ');
 }
 
-void json_writer_vprintf(JsonWriter* writer, const gchar *format, va_list args)
+void mono_json_writer_vprintf(JsonWriter* writer, const gchar *format, va_list args)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
        g_string_append_vprintf (writer->text, format, args);
 }
 
-void json_writer_printf(JsonWriter* writer, const gchar *format, ...)
+void mono_json_writer_printf(JsonWriter* writer, const gchar *format, ...)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
 
@@ -62,34 +62,34 @@ void json_writer_printf(JsonWriter* writer, const gchar *format, ...)
        va_end (args);
 }
 
-void json_writer_array_begin(JsonWriter* writer)
+void mono_json_writer_array_begin(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
        g_string_append_printf (writer->text, "[\n");
        writer->indent += JSON_INDENT_VALUE;
 }
 
-void json_writer_array_end(JsonWriter* writer)
+void mono_json_writer_array_end(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
        g_string_append_printf (writer->text, "]");
        writer->indent -= JSON_INDENT_VALUE;
 }
 
-void json_writer_object_begin(JsonWriter* writer)
+void mono_json_writer_object_begin(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
-       json_writer_printf (writer, "{\n");
+       mono_json_writer_printf (writer, "{\n");
        writer->indent += JSON_INDENT_VALUE;
 }
 
-void json_writer_object_end(JsonWriter* writer)
+void mono_json_writer_object_end(JsonWriter* writer)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
-       json_writer_printf (writer, "}");
+       mono_json_writer_printf (writer, "}");
 }
 
-void json_writer_object_key(JsonWriter* writer, const gchar* format, ...)
+void mono_json_writer_object_key(JsonWriter* writer, const gchar* format, ...)
 {
        g_assert (writer && "Expected a valid JSON writer instance");
 
@@ -97,7 +97,7 @@ void json_writer_object_key(JsonWriter* writer, const gchar* format, ...)
        va_start (args, format);
 
        g_string_append_printf (writer->text, "\"");
-       json_writer_vprintf (writer, format, args);
+       mono_json_writer_vprintf (writer, format, args);
        g_string_append_printf (writer->text, "\" : ");
 
        va_end (args);
index 5e5a06ae7765f86710489d000a5680723987a6a5..cee9c8905dcfa9ea200a8bc63b07b11037a35c8e 100644 (file)
@@ -19,17 +19,17 @@ typedef struct JsonWriter {
        int indent;
 } JsonWriter;
 
-void json_writer_init (JsonWriter* writer);
-void json_writer_destroy (JsonWriter* writer);
-void json_writer_indent(JsonWriter* writer);
-void json_writer_indent_push(JsonWriter* writer);
-void json_writer_indent_pop(JsonWriter* writer);
-void json_writer_vprintf(JsonWriter* writer, const gchar *format, va_list args);
-void json_writer_printf(JsonWriter* writer, const gchar *format, ...);
-void json_writer_array_begin(JsonWriter* writer);
-void json_writer_array_end(JsonWriter* writer);
-void json_writer_object_begin(JsonWriter* writer);
-void json_writer_object_end(JsonWriter* writer);
-void json_writer_object_key(JsonWriter* writer, const gchar* format, ...);
+void mono_json_writer_init (JsonWriter* writer);
+void mono_json_writer_destroy (JsonWriter* writer);
+void mono_json_writer_indent(JsonWriter* writer);
+void mono_json_writer_indent_push(JsonWriter* writer);
+void mono_json_writer_indent_pop(JsonWriter* writer);
+void mono_json_writer_vprintf(JsonWriter* writer, const gchar *format, va_list args);
+void mono_json_writer_printf(JsonWriter* writer, const gchar *format, ...);
+void mono_json_writer_array_begin(JsonWriter* writer);
+void mono_json_writer_array_end(JsonWriter* writer);
+void mono_json_writer_object_begin(JsonWriter* writer);
+void mono_json_writer_object_end(JsonWriter* writer);
+void mono_json_writer_object_key(JsonWriter* writer, const gchar* format, ...);
 
 #endif
index 33fed096ea4a159f6dadc96386fce36f8ba96986..308ab12dda8037eed792642c24d7b6fafccb56a2 100644 (file)
 #include <stdlib.h>
 
 #include <mono/utils/atomic.h>
+#ifdef SGEN_WITHOUT_MONO
+#include <mono/sgen/sgen-gc.h>
+#include <mono/sgen/sgen-client.h>
+#else
 #include <mono/utils/mono-mmap.h>
+#endif
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/lock-free-queue.h>
@@ -150,7 +155,7 @@ alloc_sb (Descriptor *desc)
                pagesize = mono_pagesize ();
 
        sb_header = desc->block_size == pagesize ?
-               mono_valloc (0, desc->block_size, prot_flags_for_activate (TRUE)) :
+               mono_valloc (NULL, desc->block_size, prot_flags_for_activate (TRUE)) :
                mono_valloc_aligned (desc->block_size, desc->block_size, prot_flags_for_activate (TRUE));
 
        g_assert (sb_header == sb_header_for_addr (sb_header, desc->block_size));
@@ -182,7 +187,7 @@ desc_alloc (void)
        for (;;) {
                gboolean success;
 
-               desc = get_hazardous_pointer ((gpointer * volatile)&desc_avail, hp, 1);
+               desc = (Descriptor *) get_hazardous_pointer ((gpointer * volatile)&desc_avail, hp, 1);
                if (desc) {
                        Descriptor *next = desc->next;
                        success = (InterlockedCompareExchangePointer ((gpointer * volatile)&desc_avail, next, desc) == desc);
@@ -191,7 +196,7 @@ desc_alloc (void)
                        Descriptor *d;
                        int i;
 
-                       desc = mono_valloc (0, desc_size * NUM_DESC_BATCH, prot_flags_for_activate (TRUE));
+                       desc = (Descriptor *) mono_valloc (NULL, desc_size * NUM_DESC_BATCH, prot_flags_for_activate (TRUE));
 
                        /* Organize into linked list. */
                        d = desc;
@@ -225,7 +230,7 @@ desc_alloc (void)
 static void
 desc_enqueue_avail (gpointer _desc)
 {
-       Descriptor *desc = _desc;
+       Descriptor *desc = (Descriptor *) _desc;
        Descriptor *old_head;
 
        g_assert (desc->anchor.data.state == STATE_EMPTY);
@@ -285,7 +290,7 @@ list_get_partial (MonoLockFreeAllocSizeClass *sc)
 static void
 desc_put_partial (gpointer _desc)
 {
-       Descriptor *desc = _desc;
+       Descriptor *desc = (Descriptor *) _desc;
 
        g_assert (desc->anchor.data.state != STATE_FULL);
 
@@ -366,7 +371,6 @@ alloc_from_active_or_partial (MonoLockFreeAllocator *heap)
 
        do {
                unsigned int next;
-
                new_anchor = old_anchor = *(volatile Anchor*)&desc->anchor.value;
                if (old_anchor.data.state == STATE_EMPTY) {
                        /* We must free it because we own it. */
index be343caeb3e1b0246260f86a4680cdb47facd351..98a3f31745a67bbc88d0a21ceae14c29d3b3b365 100644 (file)
  * entry data, and then sets the state to USED or FREE.
  */
 
+#include <string.h>
+
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-membar.h>
+#ifdef SGEN_WITHOUT_MONO
+#include <mono/sgen/sgen-gc.h>
+#include <mono/sgen/sgen-client.h>
+#else
 #include <mono/utils/mono-mmap.h>
+#endif
 
 #include <mono/utils/lock-free-array-queue.h>
 
@@ -37,7 +44,7 @@ alloc_chunk (MonoLockFreeArray *arr)
 {
        int size = mono_pagesize ();
        int num_entries = (size - (sizeof (Chunk) - arr->entry_size * MONO_ZERO_LEN_ARRAY)) / arr->entry_size;
-       Chunk *chunk = mono_valloc (0, size, MONO_MMAP_READ | MONO_MMAP_WRITE);
+       Chunk *chunk = (Chunk *) mono_valloc (NULL, size, MONO_MMAP_READ | MONO_MMAP_WRITE);
        g_assert (chunk);
        chunk->num_entries = num_entries;
        return chunk;
@@ -137,7 +144,7 @@ mono_lock_free_array_queue_push (MonoLockFreeArrayQueue *q, gpointer entry_data_
 
        do {
                index = InterlockedIncrement (&q->num_used_entries) - 1;
-               entry = mono_lock_free_array_nth (&q->array, index);
+               entry = (Entry *) mono_lock_free_array_nth (&q->array, index);
        } while (InterlockedCompareExchange (&entry->state, STATE_BUSY, STATE_FREE) != STATE_FREE);
 
        mono_memory_write_barrier ();
@@ -172,7 +179,7 @@ mono_lock_free_array_queue_pop (MonoLockFreeArrayQueue *q, gpointer entry_data_p
                                return FALSE;
                } while (InterlockedCompareExchange (&q->num_used_entries, index - 1, index) != index);
 
-               entry = mono_lock_free_array_nth (&q->array, index - 1);
+               entry = (Entry *) mono_lock_free_array_nth (&q->array, index - 1);
        } while (InterlockedCompareExchange (&entry->state, STATE_BUSY, STATE_USED) != STATE_USED);
 
        /* Reading the item must happen before CASing the state. */
index 9a84edfedf8809c442d1562a6ee3a9bfe46e4441..99cc8aaaf1622607d854923ca80a87e71218b663 100644 (file)
@@ -57,9 +57,9 @@
 
 #include <mono/utils/lock-free-queue.h>
 
-#define INVALID_NEXT   ((void*)-1)
-#define END_MARKER     ((void*)-2)
-#define FREE_NEXT      ((void*)-3)
+#define INVALID_NEXT   ((MonoLockFreeQueueNode *volatile)-1)
+#define END_MARKER     ((MonoLockFreeQueueNode *volatile)-2)
+#define FREE_NEXT      ((MonoLockFreeQueueNode *volatile)-3)
 
 void
 mono_lock_free_queue_init (MonoLockFreeQueue *q)
@@ -113,7 +113,7 @@ mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node)
        for (;;) {
                MonoLockFreeQueueNode *next;
 
-               tail = get_hazardous_pointer ((gpointer volatile*)&q->tail, hp, 0);
+               tail = (MonoLockFreeQueueNode *) get_hazardous_pointer ((gpointer volatile*)&q->tail, hp, 0);
                mono_memory_read_barrier ();
                /*
                 * We never dereference next so we don't need a
@@ -157,7 +157,7 @@ mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node)
 static void
 free_dummy (gpointer _dummy)
 {
-       MonoLockFreeQueueDummy *dummy = _dummy;
+       MonoLockFreeQueueDummy *dummy = (MonoLockFreeQueueDummy *) _dummy;
        mono_lock_free_queue_node_free (&dummy->node);
        g_assert (dummy->in_use);
        mono_memory_write_barrier ();
@@ -218,7 +218,7 @@ mono_lock_free_queue_dequeue (MonoLockFreeQueue *q)
        for (;;) {
                MonoLockFreeQueueNode *tail, *next;
 
-               head = get_hazardous_pointer ((gpointer volatile*)&q->head, hp, 0);
+               head = (MonoLockFreeQueueNode *) get_hazardous_pointer ((gpointer volatile*)&q->head, hp, 0);
                tail = (MonoLockFreeQueueNode*)q->tail;
                mono_memory_read_barrier ();
                next = head->next;
index 2dd4948b78e2be75c5b140c7348a214f9a5f42de..6ae52471e5b4967467b88eb319fabf67944216f9 100644 (file)
@@ -29,6 +29,7 @@
 #define __MONO_LOCKFREEQUEUE_H__
 
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
 //#define QUEUE_DEBUG  1
 
@@ -55,13 +56,13 @@ typedef struct {
        volatile gint32 has_dummy;
 } MonoLockFreeQueue;
 
-void mono_lock_free_queue_init (MonoLockFreeQueue *q);
+MONO_API void mono_lock_free_queue_init (MonoLockFreeQueue *q);
 
-void mono_lock_free_queue_node_init (MonoLockFreeQueueNode *node, gboolean to_be_freed);
-void mono_lock_free_queue_node_free (MonoLockFreeQueueNode *node);
+MONO_API void mono_lock_free_queue_node_init (MonoLockFreeQueueNode *node, gboolean to_be_freed);
+MONO_API void mono_lock_free_queue_node_free (MonoLockFreeQueueNode *node);
 
-void mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node);
+MONO_API void mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node);
 
-MonoLockFreeQueueNode* mono_lock_free_queue_dequeue (MonoLockFreeQueue *q);
+MONO_API MonoLockFreeQueueNode* mono_lock_free_queue_dequeue (MonoLockFreeQueue *q);
 
 #endif
diff --git a/mono/utils/memfuncs.c b/mono/utils/memfuncs.c
new file mode 100644 (file)
index 0000000..c2a39d2
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * memfuncs.c: Our own bzero/memmove.
+ *
+ * Copyright (C) 2013-2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * SGen cannot deal with invalid pointers on the heap or in registered roots.  Sometimes we
+ * need to copy or zero out memory in code that might be interrupted by collections.  To
+ * guarantee that those operations will not result in invalid pointers, we must do it
+ * word-atomically.
+ *
+ * libc's bzero() and memcpy()/memmove() functions do not guarantee word-atomicity, even in
+ * cases where one would assume so.  For instance, some implementations (like Darwin's on
+ * x86) have variants of memcpy() using vector instructions.  Those may copy bytewise for
+ * the region preceding the first vector-aligned address.  That region could be
+ * word-aligned, but it would still be copied byte-wise.
+ *
+ * All our memory writes here are to "volatile" locations.  This is so that C compilers
+ * don't "optimize" our code back to calls to bzero()/memmove().  LLVM, specifically, will
+ * do that.
+ */
+
+#include <config.h>
+#include <glib.h>
+#include <string.h>
+
+#include "memfuncs.h"
+
+#define ptr_mask ((sizeof (void*) - 1))
+#define _toi(ptr) ((size_t)ptr)
+#define unaligned_bytes(ptr) (_toi(ptr) & ptr_mask)
+#define align_down(ptr) ((void*)(_toi(ptr) & ~ptr_mask))
+#define align_up(ptr) ((void*) ((_toi(ptr) + ptr_mask) & ~ptr_mask))
+#if SIZEOF_VOID_P == 4
+#define bytes_to_words(n)      ((size_t)(n) >> 2)
+#elif SIZEOF_VOID_P == 8
+#define bytes_to_words(n)      ((size_t)(n) >> 3)
+#else
+#error We only support 32 and 64 bit architectures.
+#endif
+
+#define BZERO_WORDS(dest,words) do {                   \
+               void * volatile *__d = (void* volatile*)(dest);         \
+               int __n = (words);                      \
+               int __i;                                \
+               for (__i = 0; __i < __n; ++__i)         \
+                       __d [__i] = NULL;               \
+       } while (0)
+
+
+/**
+ * mono_gc_bzero_aligned:
+ * @dest: address to start to clear
+ * @size: size of the region to clear
+ *
+ * Zero @size bytes starting at @dest.
+ * The address of @dest MUST be aligned to word boundaries
+ *
+ * FIXME borrow faster code from some BSD libc or bionic
+ */
+void
+mono_gc_bzero_aligned (void *dest, size_t size)
+{
+       volatile char *d = (char*)dest;
+       size_t tail_bytes, word_bytes;
+
+       g_assert (unaligned_bytes (dest) == 0);
+
+       /* copy all words with memmove */
+       word_bytes = (size_t)align_down (size);
+       switch (word_bytes) {
+       case sizeof (void*) * 1:
+               BZERO_WORDS (d, 1);
+               break;
+       case sizeof (void*) * 2:
+               BZERO_WORDS (d, 2);
+               break;
+       case sizeof (void*) * 3:
+               BZERO_WORDS (d, 3);
+               break;
+       case sizeof (void*) * 4:
+               BZERO_WORDS (d, 4);
+               break;
+       default:
+               BZERO_WORDS (d, bytes_to_words (word_bytes));
+       }
+
+       tail_bytes = unaligned_bytes (size);
+       if (tail_bytes) {
+               d += word_bytes;
+               do {
+                       *d++ = 0;
+               } while (--tail_bytes);
+       }
+}
+
+/**
+ * mono_gc_bzero_atomic:
+ * @dest: address to start to clear
+ * @size: size of the region to clear
+ *
+ * Zero @size bytes starting at @dest.
+ *
+ * Use this to zero memory without word tearing when dest is aligned.
+ */
+void
+mono_gc_bzero_atomic (void *dest, size_t size)
+{
+       if (unaligned_bytes (dest))
+               memset (dest, 0, size);
+       else
+               mono_gc_bzero_aligned (dest, size);
+}
+
+#define MEMMOVE_WORDS_UPWARD(dest,src,words) do {      \
+               void * volatile *__d = (void* volatile*)(dest);         \
+               void **__s = (void**)(src);             \
+               int __n = (int)(words);                 \
+               int __i;                                \
+               for (__i = 0; __i < __n; ++__i)         \
+                       __d [__i] = __s [__i];          \
+       } while (0)
+
+#define MEMMOVE_WORDS_DOWNWARD(dest,src,words) do {    \
+               void * volatile *__d = (void* volatile*)(dest);         \
+               void **__s = (void**)(src);             \
+               int __n = (int)(words);                 \
+               int __i;                                \
+               for (__i = __n - 1; __i >= 0; --__i)    \
+                       __d [__i] = __s [__i];          \
+       } while (0)
+
+
+/**
+ * mono_gc_memmove_aligned:
+ * @dest: destination of the move
+ * @src: source
+ * @size: size of the block to move
+ *
+ * Move @size bytes from @src to @dest.
+ *
+ * Use this to copy memory without word tearing when both pointers are aligned
+ */void
+mono_gc_memmove_aligned (void *dest, const void *src, size_t size)
+{
+       g_assert (unaligned_bytes (dest) == 0);
+       g_assert (unaligned_bytes (src) == 0);
+
+       /*
+       If we're copying less than a word we don't need to worry about word tearing
+       so we bailout to memmove early.
+       */
+       if (size < sizeof(void*)) {
+               memmove (dest, src, size);
+               return;
+       }
+
+       /*
+        * A bit of explanation on why we align only dest before doing word copies.
+        * Pointers to managed objects must always be stored in word aligned addresses, so
+        * even if dest is misaligned, src will be by the same amount - this ensure proper atomicity of reads.
+        *
+        * We don't need to case when source and destination have different alignments since we only do word stores
+        * using memmove, which must handle it.
+        */
+       if (dest > src && ((size_t)((char*)dest - (char*)src) < size)) { /*backward copy*/
+                       volatile char *p = (char*)dest + size;
+                       char *s = (char*)src + size;
+                       char *start = (char*)dest;
+                       char *align_end = MAX((char*)dest, (char*)align_down (p));
+                       char *word_start;
+                       size_t bytes_to_memmove;
+
+                       while (p > align_end)
+                               *--p = *--s;
+
+                       word_start = align_up (start);
+                       bytes_to_memmove = p - word_start;
+                       p -= bytes_to_memmove;
+                       s -= bytes_to_memmove;
+                       MEMMOVE_WORDS_DOWNWARD (p, s, bytes_to_words (bytes_to_memmove));
+       } else {
+               volatile char *d = (char*)dest;
+               const char *s = (const char*)src;
+               size_t tail_bytes;
+
+               /* copy all words with memmove */
+               MEMMOVE_WORDS_UPWARD (d, s, bytes_to_words (align_down (size)));
+
+               tail_bytes = unaligned_bytes (size);
+               if (tail_bytes) {
+                       d += (size_t)align_down (size);
+                       s += (size_t)align_down (size);
+                       do {
+                               *d++ = *s++;
+                       } while (--tail_bytes);
+               }
+       }
+}
+
+/**
+ * mono_gc_memmove_atomic:
+ * @dest: destination of the move
+ * @src: source
+ * @size: size of the block to move
+ *
+ * Move @size bytes from @src to @dest.
+ *
+ * Use this to copy memory without word tearing when both pointers are aligned
+ */
+void
+mono_gc_memmove_atomic (void *dest, const void *src, size_t size)
+{
+       if (unaligned_bytes (_toi (dest) | _toi (src)))
+               memmove (dest, src, size);
+       else
+               mono_gc_memmove_aligned (dest, src, size);
+}
diff --git a/mono/utils/memfuncs.h b/mono/utils/memfuncs.h
new file mode 100644 (file)
index 0000000..51a3618
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * memfuncs.h: Our own bzero/memmove.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_UTILS_MEMFUNCS_H__
+#define __MONO_UTILS_MEMFUNCS_H__
+
+#include <stdlib.h>
+
+/*
+These functions must be used when it's possible that either destination is not
+word aligned or size is not a multiple of word size.
+*/
+void mono_gc_bzero_atomic (void *dest, size_t size);
+void mono_gc_bzero_aligned (void *dest, size_t size);
+void mono_gc_memmove_atomic (void *dest, const void *src, size_t size);
+void mono_gc_memmove_aligned (void *dest, const void *src, size_t size);
+
+#endif
index 5c2a83b118965861560e3b60e89874c61c96e2e4..30416858d9f0b868ffba274c587a7791558164eb 100644 (file)
@@ -251,7 +251,7 @@ codechunk_valloc (void *preferred, guint32 size)
         * Keep a small freelist of memory blocks to decrease pressure on the kernel memory subsystem to avoid #3321.
         */
        mono_mutex_lock (&valloc_mutex);
-       freelist = g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
+       freelist = (GSList *) g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
        if (freelist) {
                ptr = freelist->data;
                memset (ptr, 0, size);
@@ -272,7 +272,7 @@ codechunk_vfree (void *ptr, guint32 size)
        GSList *freelist;
 
        mono_mutex_lock (&valloc_mutex);
-       freelist = g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
+       freelist = (GSList *) g_hash_table_lookup (valloc_freelists, GUINT_TO_POINTER (size));
        if (!freelist || g_slist_length (freelist) < VALLOC_FREELIST_SIZE) {
                freelist = g_slist_prepend (freelist, ptr);
                g_hash_table_insert (valloc_freelists, GUINT_TO_POINTER (size), freelist);
@@ -292,7 +292,7 @@ codechunk_cleanup (void)
                return;
        g_hash_table_iter_init (&iter, valloc_freelists);
        while (g_hash_table_iter_next (&iter, &key, &value)) {
-               GSList *freelist = value;
+               GSList *freelist = (GSList *) value;
                GSList *l;
 
                for (l = freelist; l; l = l->next) {
@@ -331,7 +331,7 @@ mono_code_manager_cleanup (void)
 MonoCodeManager* 
 mono_code_manager_new (void)
 {
-       MonoCodeManager *cman = g_malloc0 (sizeof (MonoCodeManager));
+       MonoCodeManager *cman = (MonoCodeManager *) g_malloc0 (sizeof (MonoCodeManager));
        if (!cman)
                return NULL;
 #if defined(__native_client_codegen__) && defined(__native_client__)
@@ -488,11 +488,8 @@ mono_code_manager_foreach (MonoCodeManager *cman, MonoCodeManagerFunc func, void
 #if defined(__ppc__) || defined(__powerpc__)
 #define BIND_ROOM 4
 #endif
-#if defined(__arm__)
-#define BIND_ROOM 8
-#endif
 #if defined(TARGET_ARM64)
-#define BIND_ROOM 8
+#define BIND_ROOM 4
 #endif
 
 static CodeChunk*
@@ -529,15 +526,21 @@ new_codechunk (CodeChunk *last, int dynamic, int size)
                }
        }
 #ifdef BIND_ROOM
-       bsize = chunk_size / BIND_ROOM;
+       if (dynamic)
+               /* Reserve more space since there are no other chunks we might use if this one gets full */
+               bsize = (chunk_size * 2) / BIND_ROOM;
+       else
+               bsize = chunk_size / BIND_ROOM;
        if (bsize < MIN_BSIZE)
                bsize = MIN_BSIZE;
        bsize += MIN_ALIGN -1;
        bsize &= ~ (MIN_ALIGN - 1);
        if (chunk_size - size < bsize) {
                chunk_size = size + bsize;
-               chunk_size += pagesize - 1;
-               chunk_size &= ~ (pagesize - 1);
+               if (!dynamic) {
+                       chunk_size += pagesize - 1;
+                       chunk_size &= ~ (pagesize - 1);
+               }
        }
 #endif
 
@@ -563,7 +566,7 @@ new_codechunk (CodeChunk *last, int dynamic, int size)
 #endif
        }
 
-       chunk = malloc (sizeof (CodeChunk));
+       chunk = (CodeChunk *) malloc (sizeof (CodeChunk));
        if (!chunk) {
                if (flags == CODE_FLAG_MALLOC)
                        dlfree (ptr);
@@ -573,7 +576,7 @@ new_codechunk (CodeChunk *last, int dynamic, int size)
        }
        chunk->next = NULL;
        chunk->size = chunk_size;
-       chunk->data = ptr;
+       chunk->data = (char *) ptr;
        chunk->flags = flags;
        chunk->pos = bsize;
        chunk->bsize = bsize;
index 6a90ff0fbd641848e895e2889a3b796d005064c3..e6094b7e32c2dc7372a839da346750a57e710b33 100644 (file)
 #ifndef __MONO_CONCURRENT_HASHTABLE_H__
 #define __MONO_CONCURRENT_HASHTABLE_H__
 
+#include <mono/utils/mono-publib.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-mutex.h>
 #include <glib.h>
 
 typedef struct _MonoConcurrentHashTable MonoConcurrentHashTable;
 
-MonoConcurrentHashTable* mono_conc_hashtable_new (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func);
-MonoConcurrentHashTable* mono_conc_hashtable_new_full (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func);
-void mono_conc_hashtable_destroy (MonoConcurrentHashTable *hash_table);
-gpointer mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key);
-gpointer mono_conc_hashtable_insert (MonoConcurrentHashTable *hash_table, gpointer key, gpointer value);
-gpointer mono_conc_hashtable_remove (MonoConcurrentHashTable *hash_table, gpointer key);
+MONO_API MonoConcurrentHashTable* mono_conc_hashtable_new (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func);
+MONO_API MonoConcurrentHashTable* mono_conc_hashtable_new_full (mono_mutex_t *mutex, GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func);
+MONO_API void mono_conc_hashtable_destroy (MonoConcurrentHashTable *hash_table);
+MONO_API gpointer mono_conc_hashtable_lookup (MonoConcurrentHashTable *hash_table, gpointer key);
+MONO_API gpointer mono_conc_hashtable_insert (MonoConcurrentHashTable *hash_table, gpointer key, gpointer value);
+MONO_API gpointer mono_conc_hashtable_remove (MonoConcurrentHashTable *hash_table, gpointer key);
 
 #endif
 
index effc17c84f44ccc10353bfbc522eeeeb9be4d656..2c7dd19eb9fdbe645bd24c523eff158f5fa05048 100644 (file)
@@ -165,7 +165,7 @@ register_internal (const char *name, int type, void *addr, int size)
                }
        }
 
-       counter = malloc (sizeof (MonoCounter));
+       counter = (MonoCounter *) malloc (sizeof (MonoCounter));
        if (!counter) {
                mono_mutex_unlock (&counters_mutex);
                return;
@@ -292,7 +292,7 @@ mono_counters_on_register (MonoCounterRegisterCallback callback)
        }
 
        mono_mutex_lock (&counters_mutex);
-       register_callbacks = g_slist_append (register_callbacks, callback);
+       register_callbacks = g_slist_append (register_callbacks, (gpointer) callback);
        mono_mutex_unlock (&counters_mutex);
 }
 
@@ -406,16 +406,16 @@ cpu_load_15min (void)
 static void
 initialize_system_counters (void)
 {
-       register_internal ("User Time", SYSCOUNTER_TIME, &user_time, sizeof (gint64));
-       register_internal ("System Time", SYSCOUNTER_TIME, &system_time, sizeof (gint64));
-       register_internal ("Total Time", SYSCOUNTER_TIME, &total_time, sizeof (gint64));
-       register_internal ("Working Set", SYSCOUNTER_BYTES, &working_set, sizeof (gint64));
-       register_internal ("Private Bytes", SYSCOUNTER_BYTES, &private_bytes, sizeof (gint64));
-       register_internal ("Virtual Bytes", SYSCOUNTER_BYTES, &virtual_bytes, sizeof (gint64));
-       register_internal ("Page Faults", SYSCOUNTER_COUNT, &page_faults, sizeof (gint64));
-       register_internal ("CPU Load Average - 1min", SYSCOUNTER_LOAD, &cpu_load_1min, sizeof (double));
-       register_internal ("CPU Load Average - 5min", SYSCOUNTER_LOAD, &cpu_load_5min, sizeof (double));
-       register_internal ("CPU Load Average - 15min", SYSCOUNTER_LOAD, &cpu_load_15min, sizeof (double));
+       register_internal ("User Time", SYSCOUNTER_TIME, (gpointer) &user_time, sizeof (gint64));
+       register_internal ("System Time", SYSCOUNTER_TIME, (gpointer) &system_time, sizeof (gint64));
+       register_internal ("Total Time", SYSCOUNTER_TIME, (gpointer) &total_time, sizeof (gint64));
+       register_internal ("Working Set", SYSCOUNTER_BYTES, (gpointer) &working_set, sizeof (gint64));
+       register_internal ("Private Bytes", SYSCOUNTER_BYTES, (gpointer) &private_bytes, sizeof (gint64));
+       register_internal ("Virtual Bytes", SYSCOUNTER_BYTES, (gpointer) &virtual_bytes, sizeof (gint64));
+       register_internal ("Page Faults", SYSCOUNTER_COUNT, (gpointer) &page_faults, sizeof (gint64));
+       register_internal ("CPU Load Average - 1min", SYSCOUNTER_LOAD, (gpointer) &cpu_load_1min, sizeof (double));
+       register_internal ("CPU Load Average - 5min", SYSCOUNTER_LOAD, (gpointer) &cpu_load_5min, sizeof (double));
+       register_internal ("CPU Load Average - 15min", SYSCOUNTER_LOAD, (gpointer) &cpu_load_15min, sizeof (double));
 }
 
 /**
@@ -497,7 +497,7 @@ sample_internal (MonoCounter *counter, void *buffer, int buffer_size)
                                size = 0;
                        } else {
                                size = counter->size;
-                               strncpy (buffer, strval, size - 1);
+                               strncpy ((char *) buffer, strval, size - 1);
                                ((char*)buffer)[size - 1] = '\0';
                        }
                }
index 7adfa9dec798cd1e73288c04ad7f9e17aaa694ce..aa57e04a50ec92185fc5d54a045e518f4be98458 100644 (file)
@@ -55,7 +55,7 @@ read_string (char *p, FILE *file)
                if (!endp)
                        return NULL;
                *endp = 0;
-               return g_memdup (startp, (endp - startp) + 1);
+               return (char *) g_memdup (startp, (endp - startp) + 1);
        }
        if (*p == 0)
                return NULL;
@@ -63,7 +63,7 @@ read_string (char *p, FILE *file)
        while (*p && !isspace (*p))
                ++p;
        *p = 0;
-       return g_memdup (startp, (p - startp) + 1);
+       return (char *) g_memdup (startp, (p - startp) + 1);
 }
 
 /*
@@ -139,7 +139,7 @@ mono_dl_open (const char *name, int flags, char **error_msg)
        if (error_msg)
                *error_msg = NULL;
 
-       module = malloc (sizeof (MonoDl));
+       module = (MonoDl *) malloc (sizeof (MonoDl));
        if (!module) {
                if (error_msg)
                        *error_msg = g_strdup ("Out of memory");
index 8e168c8e7eed21e2ecd1b248df9eca9968da006c..b96cd54d2c7a8512454161d5c1da22e05b6278db 100644 (file)
@@ -23,6 +23,9 @@ typedef struct {
     char message [128];
 } MonoErrorInternal;
 
+void
+mono_error_assert_ok (MonoError *error);
+
 void
 mono_error_dup_strings (MonoError *error, gboolean dup_strings);
 
index eade8cadd1b43de0ee34eb821a685616068d4b30..841a354afaff6f61ea232b97a6a82be54d4af8d8 100644 (file)
@@ -100,6 +100,15 @@ mono_error_ok (MonoError *error)
        return error->error_code == MONO_ERROR_NONE;
 }
 
+void
+mono_error_assert_ok (MonoError *error)
+{
+       if (mono_error_ok (error))
+               return;
+
+       g_error ("%s\n", mono_error_get_message (error));
+}
+
 unsigned short
 mono_error_get_error_code (MonoError *error)
 {
@@ -330,10 +339,6 @@ mono_error_set_from_loader_error (MonoError *oerror)
        case MONO_EXCEPTION_NONE:
                mono_error_set_generic_error (oerror, "System", "ExecutionEngineException", "Runtime tried to produce a mono-error from a non-error loader-error");
                break;
-       case MONO_EXCEPTION_SECURITY_LINKDEMAND:
-       case MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND:
-               mono_error_set_generic_error (oerror, "System.Security", "SecurityException", "Failed for unknown reasons.");
-               break;
 
        case MONO_EXCEPTION_INVALID_PROGRAM:
                mono_error_set_generic_error (oerror, "System", "InvalidProgramException", "Failed for unknown reasons.");
index 36c7fd6df93abbdec09fb325c2957bad9dbe1e61..c559ad3185dddd98572144b757fe31e93459db52 100644 (file)
@@ -35,7 +35,10 @@ mono_file_map_open (const char* name)
        g_free (wname);
        return result;
 #else
-       return (MonoFileMap *)fopen (name, "rb");
+       int fd = open (name, O_RDONLY);
+       if (fd < 0)
+               return NULL;
+       return (MonoFileMap *)(size_t)fd;
 #endif
 }
 
@@ -43,7 +46,7 @@ guint64
 mono_file_map_size (MonoFileMap *fmap)
 {
        struct stat stat_buf;
-       if (fstat (fileno ((FILE*)fmap), &stat_buf) < 0)
+       if (fstat (mono_file_map_fd (fmap), &stat_buf) < 0)
                return 0;
        return stat_buf.st_size;
 }
@@ -51,13 +54,21 @@ mono_file_map_size (MonoFileMap *fmap)
 int
 mono_file_map_fd (MonoFileMap *fmap)
 {
+#ifdef WIN32
        return fileno ((FILE*)fmap);
+#else
+       return (int)(size_t)fmap;
+#endif
 }
 
 int 
 mono_file_map_close (MonoFileMap *fmap)
 {
+#ifdef WIN32
        return fclose ((FILE*)fmap);
+#else
+       return close (mono_file_map_fd (fmap));
+#endif
 }
 
 #if !defined (HOST_WIN32)
index 4304851c11dff8d901d42515452c3932dac9461d..740db4c7543cb72bc2b8f1d6c68775849bb35cbd 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <dirent.h>
 
-int __mono_io_portability_helpers = PORTABILITY_UNKNOWN;
+int mono_io_portability_helpers = PORTABILITY_UNKNOWN;
 
 static inline gchar *mono_portability_find_file_internal (GString **report, const gchar *pathname, gboolean last_exists);
 
@@ -20,10 +20,10 @@ void mono_portability_helpers_init (void)
 {
         const gchar *env;
 
-       if (__mono_io_portability_helpers != PORTABILITY_UNKNOWN)
+       if (mono_io_portability_helpers != PORTABILITY_UNKNOWN)
                return;
        
-        __mono_io_portability_helpers = PORTABILITY_NONE;
+        mono_io_portability_helpers = PORTABILITY_NONE;
        
         env = g_getenv ("MONO_IOMAP");
         if (env != NULL) {
@@ -44,11 +44,11 @@ void mono_portability_helpers_init (void)
                                    options[i]);
 #endif
                         if (!strncasecmp (options[i], "drive", 5)) {
-                                __mono_io_portability_helpers |= PORTABILITY_DRIVE;
+                                mono_io_portability_helpers |= PORTABILITY_DRIVE;
                         } else if (!strncasecmp (options[i], "case", 4)) {
-                                __mono_io_portability_helpers |= PORTABILITY_CASE;
+                                mono_io_portability_helpers |= PORTABILITY_CASE;
                         } else if (!strncasecmp (options[i], "all", 3)) {
-                                __mono_io_portability_helpers |= (PORTABILITY_DRIVE | PORTABILITY_CASE);
+                                mono_io_portability_helpers |= (PORTABILITY_DRIVE | PORTABILITY_CASE);
                        }
                 }
        }
index b2cee59bfe28773185c78023700c063269821595..4451aa2e30cb79c9afee0eca055ff1508d76b4ed 100644 (file)
@@ -28,13 +28,13 @@ enum {
 void mono_portability_helpers_init (void);
 gchar *mono_portability_find_file (const gchar *pathname, gboolean last_exists);
 
-extern int __mono_io_portability_helpers;
+extern int mono_io_portability_helpers;
 
-#define IS_PORTABILITY_NONE (__mono_io_portability_helpers & PORTABILITY_NONE)
-#define IS_PORTABILITY_UNKNOWN (__mono_io_portability_helpers & PORTABILITY_UNKNOWN)
-#define IS_PORTABILITY_DRIVE (__mono_io_portability_helpers & PORTABILITY_DRIVE)
-#define IS_PORTABILITY_CASE (__mono_io_portability_helpers & PORTABILITY_CASE)
-#define IS_PORTABILITY_SET (__mono_io_portability_helpers > 0)
+#define IS_PORTABILITY_NONE (mono_io_portability_helpers & PORTABILITY_NONE)
+#define IS_PORTABILITY_UNKNOWN (mono_io_portability_helpers & PORTABILITY_UNKNOWN)
+#define IS_PORTABILITY_DRIVE (mono_io_portability_helpers & PORTABILITY_DRIVE)
+#define IS_PORTABILITY_CASE (mono_io_portability_helpers & PORTABILITY_CASE)
+#define IS_PORTABILITY_SET (mono_io_portability_helpers > 0)
 
 #endif
 
index b7391962eaae5d35ab1e704801f7d36e533224aa..95b3cad57b28cdc32a5e64d81293c91d98d592ce 100644 (file)
@@ -94,12 +94,12 @@ try_again:
         */
        mono_hazard_pointer_set (hp, 2, prev);
 
-       cur = get_hazardous_pointer_with_mask ((gpointer*)prev, hp, 1);
+       cur = (MonoLinkedListSetNode *) get_hazardous_pointer_with_mask ((gpointer*)prev, hp, 1);
 
        while (1) {
                if (cur == NULL)
                        return FALSE;
-               next = get_hazardous_pointer_with_mask ((gpointer*)&cur->next, hp, 0);
+               next = (MonoLinkedListSetNode *) get_hazardous_pointer_with_mask ((gpointer*)&cur->next, hp, 0);
                cur_key = cur->key;
 
                /*
@@ -119,7 +119,7 @@ try_again:
                        prev = &cur->next;
                        mono_hazard_pointer_set (hp, 2, cur);
                } else {
-                       next = mono_lls_pointer_unmask (next);
+                       next = (MonoLinkedListSetNode *) mono_lls_pointer_unmask (next);
                        if (InterlockedCompareExchangePointer ((volatile gpointer*)prev, next, cur) == cur) {
                                /* The hazard pointer must be cleared after the CAS. */
                                mono_memory_write_barrier ();
@@ -129,7 +129,7 @@ try_again:
                        } else
                                goto try_again;
                }
-               cur = mono_lls_pointer_unmask (next);
+               cur = (MonoLinkedListSetNode *) mono_lls_pointer_unmask (next);
                mono_hazard_pointer_set (hp, 1, cur);
        }
 }
@@ -152,8 +152,8 @@ mono_lls_insert (MonoLinkedListSet *list, MonoThreadHazardPointers *hp, MonoLink
        while (1) {
                if (mono_lls_find (list, hp, value->key))
                        return FALSE;
-               cur = mono_hazard_pointer_get_val (hp, 1);
-               prev = mono_hazard_pointer_get_val (hp, 2);
+               cur = (MonoLinkedListSetNode *) mono_hazard_pointer_get_val (hp, 1);
+               prev = (MonoLinkedListSetNode **) mono_hazard_pointer_get_val (hp, 2);
 
                value->next = cur;
                mono_hazard_pointer_set (hp, 0, value);
@@ -178,9 +178,9 @@ mono_lls_remove (MonoLinkedListSet *list, MonoThreadHazardPointers *hp, MonoLink
                if (!mono_lls_find (list, hp, value->key))
                        return FALSE;
 
-               next = mono_hazard_pointer_get_val (hp, 0);
-               cur = mono_hazard_pointer_get_val (hp, 1);
-               prev = mono_hazard_pointer_get_val (hp, 2);
+               next = (MonoLinkedListSetNode *) mono_hazard_pointer_get_val (hp, 0);
+               cur = (MonoLinkedListSetNode *) mono_hazard_pointer_get_val (hp, 1);
+               prev = (MonoLinkedListSetNode **) mono_hazard_pointer_get_val (hp, 2);
 
                g_assert (cur == value);
 
index c1d6d7a014a9bc1eac0c02db9d4070494964fce9..8f609d0e44d4e618e927e6b253902cd29a86449e 100644 (file)
@@ -81,7 +81,7 @@ Requires the world to be stoped
 static inline MonoLinkedListSetNode*
 mono_lls_info_step (MonoLinkedListSetNode *val, MonoThreadHazardPointers *hp)
 {
-       val = mono_lls_pointer_unmask (val);
+       val = (MonoLinkedListSetNode *) mono_lls_pointer_unmask (val);
        mono_hazard_pointer_set (hp, 1, val);
        return val;
 }
@@ -92,20 +92,20 @@ Provides snapshot iteration
 #define MONO_LLS_FOREACH_SAFE(list, element, type) {\
        MonoThreadHazardPointers *__hp = mono_hazard_pointer_get ();    \
        MonoLinkedListSetNode *__cur, *__next;  \
-       for (__cur = mono_lls_pointer_unmask (get_hazardous_pointer ((gpointer volatile*)&(list)->head, __hp, 1)); \
+       for (__cur = (MonoLinkedListSetNode *) mono_lls_pointer_unmask (get_hazardous_pointer ((gpointer volatile*)&(list)->head, __hp, 1)); \
                __cur;  \
-               __cur = mono_lls_info_step (__next, __hp)) {    \
-               __next = get_hazardous_pointer_with_mask ((gpointer volatile*)&__cur->next, __hp, 0);   \
+               __cur = (MonoLinkedListSetNode *) mono_lls_info_step (__next, __hp)) {  \
+               __next = (MonoLinkedListSetNode *) get_hazardous_pointer_with_mask ((gpointer volatile*)&__cur->next, __hp, 0); \
                if (!mono_lls_pointer_get_mark (__next)) {      \
                        (element) = (type)__cur;
 
 #define MONO_LLS_FOREACH_FILTERED_SAFE(list, element, filter_func, type) {\
        MonoThreadHazardPointers *__hp = mono_hazard_pointer_get ();    \
        MonoLinkedListSetNode *__cur, *__next;  \
-       for (__cur = mono_lls_pointer_unmask (get_hazardous_pointer ((gpointer volatile*)&(list)->head, __hp, 1)); \
+       for (__cur = (MonoLinkedListSetNode *) mono_lls_pointer_unmask (get_hazardous_pointer ((gpointer volatile*)&(list)->head, __hp, 1)); \
                __cur;  \
-               __cur = mono_lls_info_step (__next, __hp)) {    \
-               __next = get_hazardous_pointer_with_mask ((gpointer volatile*)&__cur->next, __hp, 0);   \
+               __cur = (MonoLinkedListSetNode *) mono_lls_info_step (__next, __hp)) {  \
+               __next = (MonoLinkedListSetNode *) get_hazardous_pointer_with_mask ((gpointer volatile*)&__cur->next, __hp, 0); \
                if (!mono_lls_pointer_get_mark (__next)) {      \
                        (element) = (type)__cur;        \
                        if (!filter_func (element)) continue;
index a6be2717e5832dd07bf50c881218d5c1b20def75..73c54f17993fee0e5cb6eb43300d85474c304ac0 100644 (file)
@@ -145,7 +145,7 @@ mono_trace_push (GLogLevelFlags level, MonoTraceMask mask)
        if(level_stack == NULL)
                g_error("%s: cannot use mono_trace_push without calling mono_trace_init first.", __func__);
        else {
-               MonoLogLevelEntry *entry = g_malloc(sizeof(MonoLogLevelEntry));
+               MonoLogLevelEntry *entry = (MonoLogLevelEntry *) g_malloc(sizeof(MonoLogLevelEntry));
                entry->level    = current_level;
                entry->mask             = current_mask;
 
@@ -242,7 +242,7 @@ mono_trace_set_mask_string (const char *value)
                }
        }
 
-       mono_trace_set_mask (flags);
+       mono_trace_set_mask ((MonoTraceMask) flags);
 }
 
 /*
index 799506684adf8a2c7a44def47e2e8fe33bcd7051..bc574bfe750a3e7854449da96ec774ba8908a076 100644 (file)
@@ -56,7 +56,7 @@ static void*
 malloc_shared_area (int pid)
 {
        int size = mono_pagesize ();
-       SAreaHeader *sarea = g_malloc0 (size);
+       SAreaHeader *sarea = (SAreaHeader *) g_malloc0 (size);
        sarea->size = size;
        sarea->pid = pid;
        sarea->stats_start = sizeof (SAreaHeader);
@@ -605,7 +605,7 @@ mono_shared_area (void)
        }
        /* we don't need the file descriptor anymore */
        close (fd);
-       header = res;
+       header = (SAreaHeader *) res;
        header->size = size;
        header->pid = pid;
        header->stats_start = sizeof (SAreaHeader);
@@ -716,7 +716,7 @@ void*
 mono_valloc_aligned (size_t size, size_t alignment, int flags)
 {
        /* Allocate twice the memory to be able to put the block on an aligned address */
-       char *mem = mono_valloc (NULL, size + alignment, flags);
+       char *mem = (char *) mono_valloc (NULL, size + alignment, flags);
        char *aligned;
 
        if (!mem)
@@ -741,13 +741,17 @@ mono_pages_not_faulted (void *addr, size_t size)
        gint64 count;
        int pagesize = mono_pagesize ();
        int npages = (size + pagesize - 1) / pagesize;
-       char *faulted = g_malloc0 (sizeof (char*) * npages);
+       char *faulted = (char *) g_malloc0 (sizeof (char*) * npages);
 
        /*
         * We cast `faulted` to void* because Linux wants an unsigned
         * char* while BSD wants a char*.
         */
-       if (mincore (addr, size, (void*)faulted) != 0) {
+#ifdef __linux__
+       if (mincore (addr, size, (unsigned char *)faulted) != 0) {
+#else
+       if (mincore (addr, size, (char *)faulted) != 0) {
+#endif
                count = -1;
        } else {
                count = 0;
index 6abad5756b0a8fea1204a675ec34425ded02cdb5..51dee2339d12ba29999c1f8ff1499530c66eb2e6 100644 (file)
@@ -18,7 +18,7 @@
 #include <assert.h>
 #include <mono/utils/mono-memory-model.h>
 
-#ifndef HOST_WIN32
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
 
@@ -140,7 +140,7 @@ mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
        static int (*setpolicy_np) (pthread_mutexattr_t *, int);
 
        if (!inited) {
-               setpolicy_np = dlsym (RTLD_NEXT, "pthread_mutexattr_setpolicy_np");
+               setpolicy_np = (int (*) (pthread_mutexattr_t *, int)) dlsym (RTLD_NEXT, "pthread_mutexattr_setpolicy_np");
                mono_atomic_store_release (&inited, TRUE);
        }
 
@@ -156,3 +156,31 @@ mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
        return mono_mutex_init (mutex);
 #endif
 }
+
+#ifndef HOST_WIN32
+int
+mono_cond_timedwait_ms (mono_cond_t *cond, mono_mutex_t *mutex, int timeout_ms)
+{
+       struct timeval tv;
+       struct timespec ts;
+       gint64 usecs;
+       int res;
+
+       /* ms = 10^-3, us = 10^-6, ns = 10^-9 */
+
+       gettimeofday (&tv, NULL);
+       tv.tv_sec += timeout_ms / 1000;
+       usecs = tv.tv_usec + ((timeout_ms % 1000) * 1000);
+       if (usecs >= 1000000) {
+               usecs -= 1000000;
+               tv.tv_sec ++;
+       }
+       ts.tv_sec = tv.tv_sec;
+       ts.tv_nsec = usecs * 1000;
+
+       res = pthread_cond_timedwait (cond, mutex, &ts);
+       g_assert (res != EINVAL);
+       return res;
+}
+
+#endif
index 7a104bb782f742dc6b916af7ac436f05dfbe42ab..ecfe73adeb6cf381926b2e91aa9265880a523d31 100644 (file)
@@ -7,7 +7,6 @@
  * Copyright 2002 Ximian, Inc. (www.ximian.com)
  */
 
-
 #ifndef __MONO_MUTEX_H__
 #define __MONO_MUTEX_H__
 
@@ -54,6 +53,11 @@ typedef pthread_cond_t mono_cond_t;
 #define mono_cond_broadcast(cond) pthread_cond_broadcast (cond)
 #define mono_cond_destroy(cond)
 
+/*
+ * This should be used instead of mono_cond_timedwait, since that function is not implemented on windows.
+ */
+int mono_cond_timedwait_ms (mono_cond_t *cond, mono_mutex_t *mutex, int timeout_ms);
+
 /* This is a function so it can be passed to pthread_cleanup_push -
  * that is a macro and giving it a macro as a parameter breaks.
  */
@@ -81,7 +85,7 @@ mono_mutex_init_recursive (mono_mutex_t *mutex)
 #else
 
 typedef CRITICAL_SECTION mono_mutex_t;
-typedef HANDLE mono_cond_t;
+typedef CONDITION_VARIABLE mono_cond_t;
 
 #define mono_mutex_init(mutex) (InitializeCriticalSection((mutex)), 0)
 #define mono_mutex_init_recursive(mutex) (InitializeCriticalSection((mutex)), 0)
@@ -90,13 +94,62 @@ typedef HANDLE mono_cond_t;
 #define mono_mutex_unlock(mutex)  LeaveCriticalSection((mutex))
 #define mono_mutex_destroy(mutex) DeleteCriticalSection((mutex))
 
+static inline int
+mono_cond_init (mono_cond_t *cond, int attr)
+{
+       InitializeConditionVariable (cond);
+}
+
+static inline int
+mono_cond_wait (mono_cond_t *cond, mono_mutex_t *mutex)
+{
+       int res;
+
+       res = SleepConditionVariableCS (cond, mutex, INFINITE);
+       if (res)
+               /* Success */
+               return 0;
+       else
+               return 1;
+}
+
+static inline int
+mono_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, struct timespec *timeout)
+{
+       // FIXME:
+       g_assert_not_reached ();
+       return 0;
+}
+
+static inline int
+mono_cond_signal (mono_cond_t *cond)
+{
+       WakeConditionVariable (cond);
+}
 
-#define mono_cond_init(cond,attr) do{*(cond) = CreateEvent(NULL,FALSE,FALSE,NULL); } while (0)
-#define mono_cond_wait(cond,mutex) WaitForSingleObject(*(cond),INFINITE)
-#define mono_cond_timedwait(cond,mutex,timeout) WaitForSingleObject(*(cond),timeout)
-#define mono_cond_signal(cond) SetEvent(*(cond))
-#define mono_cond_broadcast(cond) (!SetEvent(*(cond)))
-#define mono_cond_destroy(cond) CloseHandle(*(cond))
+static inline int
+mono_cond_broadcast (mono_cond_t *cond)
+{
+       WakeAllConditionVariable (cond);
+}
+
+static inline int
+mono_cond_destroy (mono_cond_t *cond)
+{
+}
+
+static inline int
+mono_cond_timedwait_ms (mono_cond_t *cond, mono_mutex_t *mutex, int timeout_ms)
+{
+       int res;
+
+       res = SleepConditionVariableCS (cond, mutex, timeout_ms);
+       if (res)
+               /* Success */
+               return 0;
+       else
+               return 1;
+}
 
 #endif
 
index da0f5de0046b9f12372474057a0cfd01003a6b6b..d253bd07b4a60b38f14f149a5f6ca77fde423154 100644 (file)
@@ -46,7 +46,7 @@ mono_networkinterface_list (int *size)
                                count *= 2;
                }
 
-               nilist = g_realloc (nilist, count * sizeof (void*));
+               nilist = (void **) g_realloc (nilist, count * sizeof (void*));
                nilist [i++] = g_strdup (name);
        }
 
@@ -56,7 +56,7 @@ mono_networkinterface_list (int *size)
                *size = i;
 
        if (!nilist)
-               nilist = g_malloc (sizeof (void*));
+               nilist = (void **) g_malloc (sizeof (void*));
        nilist [i] = NULL;
        return nilist;
 }
index 0a443aa41f76c1a977ac108b5e0a4a635651ae6e..f87c9f39bb3ea0764d1493166e5d9598d75a11ee 100644 (file)
@@ -95,7 +95,7 @@ mono_path_canonicalize (const char *path)
         * result */
        if (strchr (abspath, G_DIR_SEPARATOR) == NULL) {
                int len = strlen (abspath);
-               abspath = g_realloc (abspath, len + 2);
+               abspath = (gchar *) g_realloc (abspath, len + 2);
                abspath [len] = G_DIR_SEPARATOR;
                abspath [len+1] = 0;
        }
index 5e5adfe2f0009e64f32907f1750abc671ce1376a..74d39ced0c0292f1c365af67aa5ad8fc8351e9a0 100755 (executable)
@@ -1,3 +1,10 @@
+#include <config.h>
+
+#ifdef HOST_WIN32
+/* For select */
+#include <winsock2.h>
+#endif
+
 #include "mono-poll.h"
 #include <errno.h>
 
@@ -20,11 +27,6 @@ mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
 }
 #else
 
-#ifdef HOST_WIN32
-/* For select */
-#include <winsock2.h>
-#endif
-
 int
 mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
 {
index 38dea0d5111190982f9e94f21d38772a33436e3c..dea168417927c9934afc12fa1439459c8aaa4faa 100644 (file)
@@ -106,7 +106,7 @@ mono_process_list (int *size)
                res = sysctl (mib, 4, NULL, &data_len, NULL, 0);
                if (res)
                        return NULL;
-               processes = malloc (data_len);
+               processes = (struct kinfo_proc *) malloc (data_len);
                res = sysctl (mib, 4, processes, &data_len, NULL, 0);
                if (res < 0) {
                        free (processes);
@@ -124,7 +124,7 @@ mono_process_list (int *size)
 #else
        res = data_len/sizeof (struct kinfo_proc);
 #endif /* KERN_PROC2 */
-       buf = g_realloc (buf, res * sizeof (void*));
+       buf = (void **) g_realloc (buf, res * sizeof (void*));
        for (i = 0; i < res; ++i)
                buf [i] = GINT_TO_POINTER (processes [i].kinfo_pid_member);
        free (processes);
@@ -207,57 +207,67 @@ get_pid_status_item_buf (int pid, const char *item, char *rbuf, int blen, MonoPr
        return NULL;
 }
 
-/**
- * mono_process_get_name:
- * @pid: pid of the process
- * @buf: byte buffer where to store the name of the prcoess
- * @len: size of the buffer @buf
- *
- * Return the name of the process identified by @pid, storing it
- * inside @buf for a maximum of len bytes (including the terminating 0).
- */
-char*
-mono_process_get_name (gpointer pid, char *buf, int len)
-{
 #if USE_SYSCTL
-       int res;
+
 #ifdef KERN_PROC2
-       int mib [6];
-       size_t data_len = sizeof (struct kinfo_proc2);
-       struct kinfo_proc2 processi;
+#define KINFO_PROC struct kinfo_proc2
 #else
-       int mib [4];
-       size_t data_len = sizeof (struct kinfo_proc);
-       struct kinfo_proc processi;
-#endif /* KERN_PROC2 */
+#define KINFO_PROC struct kinfo_proc
+#endif
 
-       memset (buf, 0, len);
+static gboolean
+sysctl_kinfo_proc (gpointer pid, KINFO_PROC* processi)
+{
+       int res;
+       size_t data_len = sizeof (KINFO_PROC);
 
 #ifdef KERN_PROC2
+       int mib [6];
        mib [0] = CTL_KERN;
        mib [1] = KERN_PROC2;
        mib [2] = KERN_PROC_PID;
        mib [3] = GPOINTER_TO_UINT (pid);
-       mib [4] = sizeof(struct kinfo_proc2);
+       mib [4] = sizeof(KINFO_PROC);
        mib [5] = 400; /* XXX */
 
-       res = sysctl (mib, 6, &processi, &data_len, NULL, 0);
-
-       if (res < 0 || data_len != sizeof (struct kinfo_proc2)) {
-               return buf;
-       }
+       res = sysctl (mib, 6, processi, &data_len, NULL, 0);
 #else
+       int mib [4];
        mib [0] = CTL_KERN;
        mib [1] = KERN_PROC;
        mib [2] = KERN_PROC_PID;
        mib [3] = GPOINTER_TO_UINT (pid);
-       
-       res = sysctl (mib, 4, &processi, &data_len, NULL, 0);
-       if (res < 0 || data_len != sizeof (struct kinfo_proc)) {
-               return buf;
-       }
+
+       res = sysctl (mib, 4, processi, &data_len, NULL, 0);
 #endif /* KERN_PROC2 */
-       strncpy (buf, processi.kinfo_name_member, len - 1);
+
+       if (res < 0 || data_len != sizeof (KINFO_PROC))
+               return FALSE;
+
+       return TRUE;
+}
+#endif /* USE_SYSCTL */
+
+/**
+ * mono_process_get_name:
+ * @pid: pid of the process
+ * @buf: byte buffer where to store the name of the prcoess
+ * @len: size of the buffer @buf
+ *
+ * Return the name of the process identified by @pid, storing it
+ * inside @buf for a maximum of len bytes (including the terminating 0).
+ */
+char*
+mono_process_get_name (gpointer pid, char *buf, int len)
+{
+#if USE_SYSCTL
+       KINFO_PROC processi;
+
+       memset (buf, 0, len);
+
+       if (sysctl_kinfo_proc (pid, &processi))
+               strncpy (buf, processi.kinfo_name_member, len - 1);
+
        return buf;
 #else
        char fname [128];
@@ -282,11 +292,42 @@ mono_process_get_name (gpointer pid, char *buf, int len)
 #endif
 }
 
+void
+mono_process_get_times (gpointer pid, gint64 *start_time, gint64 *user_time, gint64 *kernel_time)
+{
+       if (user_time)
+               *user_time = mono_process_get_data (pid, MONO_PROCESS_USER_TIME);
+
+       if (kernel_time)
+               *kernel_time = mono_process_get_data (pid, MONO_PROCESS_SYSTEM_TIME);
+
+       if (start_time) {
+               *start_time = 0;
+
+#if USE_SYSCTL
+               {
+                       KINFO_PROC processi;
+
+                       if (sysctl_kinfo_proc (pid, &processi))
+                               *start_time = mono_100ns_datetime_from_timeval (processi.kp_proc.p_starttime);
+               }
+#endif
+
+               if (*start_time == 0) {
+                       static guint64 boot_time = 0;
+                       if (!boot_time)
+                               boot_time = mono_100ns_datetime () - ((guint64)mono_msec_ticks ()) * 10000;
+
+                       *start_time = boot_time + mono_process_get_data (pid, MONO_PROCESS_ELAPSED);
+               }
+       }
+}
+
 /*
  * /proc/pid/stat format:
  * pid (cmdname) S 
  *     [0] ppid pgid sid tty_nr tty_pgrp flags min_flt cmin_flt maj_flt cmaj_flt
- *     [10] utime stime cutime cstime prio nice threads 0 start_time vsize rss
+ *     [10] utime stime cutime cstime prio nice threads 0 start_time vsize
  *     [20] rss rsslim start_code end_code start_stack esp eip pending blocked sigign
  *     [30] sigcatch wchan 0 0 exit_signal cpu rt_prio policy
  */
@@ -307,16 +348,23 @@ get_process_stat_item (int pid, int pos, int sum, MonoProcessError *error)
        thread_array_t th_array;
        size_t i;
 
-       if (task_for_pid(mach_task_self(), pid, &task) != KERN_SUCCESS)
-               RET_ERROR (MONO_PROCESS_ERROR_NOT_FOUND);
+       if (pid == getpid ()) {
+               /* task_for_pid () doesn't work on ios, even for the current process */
+               task = mach_task_self ();
+       } else {
+               if (task_for_pid (mach_task_self (), pid, &task) != KERN_SUCCESS)
+                       RET_ERROR (MONO_PROCESS_ERROR_NOT_FOUND);
+       }
 
-       if (task_info(task, TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count) != KERN_SUCCESS) {
-               mach_port_deallocate (mach_task_self (), task);
+       if (task_info (task, TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count) != KERN_SUCCESS) {
+               if (pid != getpid ())
+                       mach_port_deallocate (mach_task_self (), task);
                RET_ERROR (MONO_PROCESS_ERROR_OTHER);
        }
        
        if (task_threads(task, &th_array, &th_count) != KERN_SUCCESS) {
-               mach_port_deallocate (mach_task_self (), task);
+               if (pid != getpid ())
+                       mach_port_deallocate (mach_task_self (), task);
                RET_ERROR (MONO_PROCESS_ERROR_OTHER);
        }
                
@@ -339,7 +387,8 @@ get_process_stat_item (int pid, int pos, int sum, MonoProcessError *error)
        for (i = 0; i < th_count; i++)
                mach_port_deallocate(task, th_array[i]);
 
-       mach_port_deallocate (mach_task_self (), task);
+       if (pid != getpid ())
+               mach_port_deallocate (mach_task_self (), task);
 
        process_user_time += t_info.user_time.seconds + t_info.user_time.microseconds / 1e6;
        process_system_time += t_info.system_time.seconds + t_info.system_time.microseconds / 1e6;
@@ -521,7 +570,7 @@ mono_process_get_data_with_error (gpointer pid, MonoProcessData data, MonoProces
        case MONO_PROCESS_FAULTS:
                return get_process_stat_item (rpid, 6, TRUE, error);
        case MONO_PROCESS_ELAPSED:
-               return get_process_stat_item (rpid, 18, FALSE, error) / get_user_hz ();
+               return get_process_stat_time (rpid, 18, FALSE, error);
        case MONO_PROCESS_PPID:
                return get_process_stat_time (rpid, 0, FALSE, error);
        case MONO_PROCESS_PAGED_BYTES:
@@ -561,6 +610,11 @@ mono_process_current_pid ()
 int
 mono_cpu_count (void)
 {
+#ifdef HOST_WIN32
+       SYSTEM_INFO info;
+       GetSystemInfo (&info);
+       return info.dwNumberOfProcessors;
+#else
        int count = 0;
 #ifdef PLATFORM_ANDROID
        /* Android tries really hard to save power by powering off CPUs on SMP phones which
@@ -581,8 +635,8 @@ mono_cpu_count (void)
        if (count > 0)
                return count + 1;
 #endif
-#ifdef _SC_NPROCESSORS_ONLN
-       count = sysconf (_SC_NPROCESSORS_ONLN);
+#ifdef _SC_NPROCESSORS_CONF
+       count = sysconf (_SC_NPROCESSORS_CONF);
        if (count > 0)
                return count;
 #endif
@@ -596,12 +650,6 @@ mono_cpu_count (void)
                        return count;
        }
 #endif
-#ifdef HOST_WIN32
-       {
-               SYSTEM_INFO info;
-               GetSystemInfo (&info);
-               return info.dwNumberOfProcessors;
-       }
 #endif
        /* FIXME: warn */
        return 1;
index 48144a00613e3348b59be04b61b36b35cf31a4b5..67db3f3f31715e57ab0ca97e4dc5364a2d202e3a 100644 (file)
@@ -58,6 +58,8 @@ struct _MonoCpuUsageState {
 
 gpointer* mono_process_list     (int *size);
 
+void      mono_process_get_times (gpointer pid, gint64 *start_time, gint64 *user_time, gint64 *kernel_time);
+
 char*     mono_process_get_name (gpointer pid, char *buf, int len);
 
 gint64    mono_process_get_data (gpointer pid, MonoProcessData data);
index 04318f46894801d8265c97dcd091e83c2c5bdf29..0eaadf795758a2371b9f5eac026d75771ea7b3f3 100644 (file)
@@ -47,7 +47,7 @@ mono_property_hash_insert (MonoPropertyHash *hash, gpointer object, guint32 prop
 {
        GHashTable *prop_hash;
 
-       prop_hash = g_hash_table_lookup (hash->hashes, GUINT_TO_POINTER (property));
+       prop_hash = (GHashTable *) g_hash_table_lookup (hash->hashes, GUINT_TO_POINTER (property));
        if (!prop_hash) {
                // FIXME: Maybe use aligned_hash
                prop_hash = g_hash_table_new (NULL, NULL);
@@ -76,7 +76,7 @@ mono_property_hash_lookup (MonoPropertyHash *hash, gpointer object, guint32 prop
 {
        GHashTable *prop_hash;
 
-       prop_hash = g_hash_table_lookup (hash->hashes, GUINT_TO_POINTER (property));
+       prop_hash = (GHashTable *) g_hash_table_lookup (hash->hashes, GUINT_TO_POINTER (property));
        if (!prop_hash)
                return NULL;
        return g_hash_table_lookup (prop_hash, object);
index e8d193357592867831ae6602c8537f814aec04b8..71be40b92bf7fc5abc22553512baf33f3c7c835a 100644 (file)
@@ -16,7 +16,9 @@
 #include <glib.h>
 #include <config.h>
 
+#include "atomic.h"
 #include "mono-rand.h"
+#include "mono-threads.h"
 #include "metadata/exception.h"
 #include "metadata/object.h"
 
@@ -188,8 +190,12 @@ get_entropy_from_egd (const char *path, guchar *buffer, int buffer_size)
 gboolean
 mono_rand_open (void)
 {
-       if (use_egd || (file >= 0))
+       static gint32 status = 0;
+       if (status != 0 || InterlockedCompareExchange (&status, 1, 0) != 0) {
+               while (status != 2)
+                       mono_thread_info_yield ();
                return TRUE;
+       }
 
 #ifdef NAME_DEV_URANDOM
        file = open (NAME_DEV_URANDOM, O_RDONLY);
@@ -201,6 +207,8 @@ mono_rand_open (void)
        if (file < 0)
                use_egd = g_getenv("MONO_EGD_SOCKET") != NULL;
 
+       status = 2;
+
        return TRUE;
 }
 
@@ -257,7 +265,17 @@ mono_rand_close (gpointer provider)
 gboolean
 mono_rand_open (void)
 {
+       static gint32 status = 0;
+       if (status != 0 || InterlockedCompareExchange (&status, 1, 0) != 0) {
+               while (status != 2)
+                       mono_thread_info_yield ();
+               return TRUE;
+       }
+
        srand (time (NULL));
+
+       status = 2;
+
        return TRUE;
 }
 
index 29a3527711f5eb12df1d52832db8c89b8d4201f3..b44719109ffc277ad377942a4b219b21a92d8408 100644 (file)
@@ -19,6 +19,7 @@
 
 #ifdef USE_COOP_BACKEND
 
+volatile size_t mono_polling_required;
 
 void
 mono_threads_state_poll (void)
@@ -151,6 +152,41 @@ mono_threads_reset_blocking_end (void *cookie)
        mono_threads_prepare_blocking ();
 }
 
+void*
+mono_threads_try_prepare_blocking (void)
+{
+       MonoThreadInfo *info;
+
+       info = mono_thread_info_current_unchecked ();
+       /* If the thread is not attached, it doesn't make sense prepare for suspend. */
+       if (!info || !mono_thread_info_is_live (info) || mono_thread_info_current_state (info) == STATE_BLOCKING) {
+               THREADS_SUSPEND_DEBUG ("PREPARE-TRY-BLOCKING failed %p\n", mono_thread_info_get_tid (info));
+               return NULL;
+       }
+
+retry:
+       /*The JIT might not be able to save*/
+       if (!mono_threads_get_runtime_callbacks ()->thread_state_init_from_sigctx (&info->thread_saved_state [SELF_SUSPEND_STATE_INDEX], NULL)) {
+               THREADS_SUSPEND_DEBUG ("PREPARE-TRY-BLOCKING failed %p to save thread state\n", mono_thread_info_get_tid (info));
+               return NULL;
+       }
+
+       switch (mono_threads_transition_do_blocking (info)) {
+       case DoBlockingContinue:
+               break;
+       case DoBlockingPollAndRetry:
+               mono_threads_state_poll ();
+               goto retry;
+       }
+
+       return info;
+}
+
+void
+mono_threads_finish_try_blocking (void* cookie)
+{
+       mono_threads_finish_blocking (cookie);
+}
 
 void
 mono_threads_core_abort_syscall (MonoThreadInfo *info)
@@ -214,5 +250,17 @@ mono_threads_platform_register (MonoThreadInfo *info)
        //See the above for what's wrong here.
 }
 
+void
+mono_threads_core_begin_global_suspend (void)
+{
+       mono_polling_required = 1;
+}
+
+void
+mono_threads_core_end_global_suspend (void)
+{
+       mono_polling_required = 0;
+}
+
 
 #endif
\ No newline at end of file
index 6d90c2af1e080758344e03eb640e7a9967fed8c5..6eca0266dcfb897f4fbef80bdfd1bc58f9ecdb01 100644 (file)
 #define MONO_FINISH_RESET_BLOCKING \
        mono_threads_reset_blocking_end (__reset_cookie);       \
 }
+
+#define MONO_TRY_BLOCKING      \
+{      \
+       void *__try_block_cookie = mono_threads_try_prepare_blocking ();
+
+#define MONO_FINISH_TRY_BLOCKING \
+       mono_threads_finish_try_blocking (__try_block_cookie);  \
+}
+
 /* Internal API */
 
 extern volatile size_t mono_threads_polling_required;
@@ -46,6 +55,12 @@ void mono_threads_finish_blocking (void* cookie);
 void* mono_threads_reset_blocking_start (void);
 void mono_threads_reset_blocking_end (void* cookie);
 
+void* mono_threads_try_prepare_blocking (void);
+void mono_threads_finish_try_blocking (void* cookie);
+
+/* JIT specific interface */
+extern volatile size_t mono_polling_required ;
+
 #else
 
 #define MONO_SUSPEND_CHECK do {        } while (0);
@@ -53,6 +68,8 @@ void mono_threads_reset_blocking_end (void* cookie);
 #define MONO_FINISH_BLOCKING }
 #define MONO_PREPARE_RESET_BLOCKING {
 #define MONO_FINISH_RESET_BLOCKING }
+#define MONO_TRY_BLOCKING {
+#define MONO_FINISH_TRY_BLOCKING }
 
 #endif /* USE_COOP_GC */
 
index 14db1cc9550ab00c2e32ffda88c5f60ee64ec32d..fc884e7a05584787d813ff2b241012da9a61eaa1 100644 (file)
@@ -122,7 +122,8 @@ mono_threads_core_begin_async_resume (MonoThreadInfo *info)
                mcontext_t mctx;
 
                mono_threads_get_runtime_callbacks ()->setup_async_callback (&tmp, info->async_target, info->user_data);
-               info->async_target = info->user_data = NULL;
+               info->user_data = NULL;
+               info->async_target = (void (*)(void *)) info->user_data;
 
                state = (thread_state_t) alloca (mono_mach_arch_get_thread_state_size ());
                mctx = (mcontext_t) alloca (mono_mach_arch_get_mcontext_size ());
@@ -165,6 +166,16 @@ mono_threads_platform_free (MonoThreadInfo *info)
        mach_port_deallocate (current_task (), info->native_handle);
 }
 
+void
+mono_threads_core_begin_global_suspend (void)
+{
+}
+
+void
+mono_threads_core_end_global_suspend (void)
+{
+}
+
 #endif /* USE_MACH_BACKEND */
 
 #ifdef __MACH__
index 5fd929cfe3b33fa698fdbb1edda14f7fe58b612e..b74bf6448705c17ba613ecc7cd151ffe9c8ea52c 100644 (file)
@@ -51,7 +51,7 @@ typedef struct {
 static void*
 inner_start_thread (void *arg)
 {
-       StartInfo *start_info = arg;
+       StartInfo *start_info = (StartInfo *) arg;
        void *t_arg = start_info->arg;
        int res;
        void *(*start_func)(void*) = start_info->start_routine;
@@ -146,7 +146,7 @@ mono_threads_core_create_thread (LPTHREAD_START_ROUTINE start_routine, gpointer
 #endif
 
        memset (&start_info, 0, sizeof (StartInfo));
-       start_info.start_routine = (gpointer)start_routine;
+       start_info.start_routine = (void *(*)(void *)) start_routine;
        start_info.arg = arg;
        start_info.flags = creation_flags;
        MONO_SEM_INIT (&(start_info.registered), 0);
@@ -312,7 +312,7 @@ mono_native_thread_id_equals (MonoNativeThreadId id1, MonoNativeThreadId id2)
 gboolean
 mono_native_thread_create (MonoNativeThreadId *tid, gpointer func, gpointer arg)
 {
-       return pthread_create (tid, NULL, func, arg) == 0;
+       return pthread_create (tid, NULL, (void *(*)(void *)) func, arg) == 0;
 }
 
 void
@@ -452,6 +452,7 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
        if (current->syscall_break_signal) {
                current->syscall_break_signal = FALSE;
                THREADS_SUSPEND_DEBUG ("\tsyscall break for %p\n", current);
+               mono_threads_notify_initiator_of_abort (current);
                goto done;
        }
 
@@ -582,7 +583,8 @@ mono_threads_core_abort_syscall (MonoThreadInfo *info)
        This signal should not be interpreted as a suspend request.
        */
        info->syscall_break_signal = TRUE;
-       mono_threads_pthread_kill (info, abort_signal_num);
+       if (!mono_threads_pthread_kill (info, abort_signal_num))
+               mono_threads_add_to_pending_operation_set (info);
 }
 
 gboolean
@@ -635,6 +637,16 @@ mono_threads_platform_free (MonoThreadInfo *info)
 {
 }
 
+void
+mono_threads_core_begin_global_suspend (void)
+{
+}
+
+void
+mono_threads_core_end_global_suspend (void)
+{
+}
+
 #endif /*defined (USE_POSIX_BACKEND)*/
 
 #endif
index c82ad1f9b195aaccd80a66986edda28cc8a580da..9f5792c1d9c1d1d6c9da640b2807920440729006 100644 (file)
@@ -250,7 +250,7 @@ STATE_ASYNC_SUSPEND_REQUESTED: Since there can only be one async suspend in prog
        default:
                g_error ("Cannot transition thread %p from %s with ASYNC_SUSPEND_REQUESTED", info, state_name (cur_state));
        }
-       return FALSE;
+       return (MonoRequestAsyncSuspendResult) FALSE;
 }
 
 /*
@@ -685,3 +685,9 @@ mono_thread_info_suspend_count (MonoThreadInfo *info)
 {
        return get_thread_suspend_count (info->thread_state);
 }
+
+int
+mono_thread_info_current_state (MonoThreadInfo *info)
+{
+       return get_thread_state (info->thread_state);
+}
index af7bee62097b4ba6b11f870e81fdf6ee41c251fb..9f3581e9a3907848b62de857f26aaa6546f60570 100755 (executable)
@@ -152,6 +152,16 @@ mono_threads_platform_free (MonoThreadInfo *info)
 {
 }
 
+void
+mono_threads_core_begin_global_suspend (void)
+{
+}
+
+void
+mono_threads_core_end_global_suspend (void)
+{
+}
+
 #endif
 
 #if defined (HOST_WIN32)
index bdbd4b7f8f83f8411ac48894c21ad8445ec1c311..71ad6fd95f3e12a64da029d8dc44d53044b80412 100644 (file)
@@ -51,7 +51,6 @@ static __thread guint32 tls_small_id MONO_TLS_FAST;
 static MonoNativeTlsKey small_id_key;
 #endif
 static MonoLinkedListSet thread_list;
-static gboolean disable_new_interrupt = FALSE;
 static gboolean mono_threads_inited = FALSE;
 
 static MonoSemType suspend_semaphore;
@@ -65,7 +64,15 @@ static gboolean unified_suspend_enabled;
 /*abort at 1 sec*/
 #define SLEEP_DURATION_BEFORE_ABORT 200
 
-static int suspend_posts, resume_posts, waits_done, pending_ops;
+static int suspend_posts, resume_posts, abort_posts, waits_done, pending_ops;
+
+void
+mono_threads_notify_initiator_of_abort (MonoThreadInfo* info)
+{
+       THREADS_SUSPEND_DEBUG ("[INITIATOR-NOTIFY-ABORT] %p\n", mono_thread_info_get_tid (info));
+       MONO_SEM_POST (&suspend_semaphore);
+       InterlockedIncrement (&abort_posts);
+}
 
 void
 mono_threads_notify_initiator_of_suspend (MonoThreadInfo* info)
@@ -122,14 +129,18 @@ void
 mono_threads_begin_global_suspend (void)
 {
        g_assert (pending_suspends == 0);
-       THREADS_SUSPEND_DEBUG ("------ BEGIN GLOBAL OP sp %d rp %d wd %d po %d\n", suspend_posts, resume_posts, waits_done, pending_ops);
+       THREADS_SUSPEND_DEBUG ("------ BEGIN GLOBAL OP sp %d rp %d ap %d wd %d po %d\n", suspend_posts, resume_posts,
+               abort_posts, waits_done, pending_ops);
+       mono_threads_core_begin_global_suspend ();
 }
 
 void
 mono_threads_end_global_suspend (void) 
 {
        g_assert (pending_suspends == 0);
-       THREADS_SUSPEND_DEBUG ("------ END GLOBAL OP sp %d rp %d wd %d po %d\n", suspend_posts, resume_posts, waits_done, pending_ops);
+       THREADS_SUSPEND_DEBUG ("------ END GLOBAL OP sp %d rp %d ap %d wd %d po %d\n", suspend_posts, resume_posts,
+               abort_posts, waits_done, pending_ops);
+       mono_threads_core_end_global_suspend ();
 }
 
 static void
@@ -150,7 +161,7 @@ dump_threads (void)
        MOSTLY_ASYNC_SAFE_PRINTF ("\t0x?08\t- blocking with pending suspend (GOOD)\n");
 
        FOREACH_THREAD_SAFE (info) {
-               MOSTLY_ASYNC_SAFE_PRINTF ("--thread %p id %p [%p] state %x  %s\n", info, mono_thread_info_get_tid (info), (void*)(size_t)info->native_handle, info->thread_state, info == cur ? "GC INITIATOR" : "" );
+               MOSTLY_ASYNC_SAFE_PRINTF ("--thread %p id %p [%p] state %x  %s\n", info, (void *) mono_thread_info_get_tid (info), (void*)(size_t)info->native_handle, info->thread_state, info == cur ? "GC INITIATOR" : "" );
        } END_FOREACH_THREAD_SAFE
 }
 
@@ -217,7 +228,7 @@ mono_thread_info_lookup (MonoNativeThreadId id)
        } 
 
        mono_hazard_pointer_clear_all (hp, 1);
-       return mono_hazard_pointer_get_val (hp, 1);
+       return (MonoThreadInfo *) mono_hazard_pointer_get_val (hp, 1);
 }
 
 static gboolean
@@ -249,7 +260,7 @@ mono_thread_info_remove (MonoThreadInfo *info)
 static void
 free_thread_info (gpointer mem)
 {
-       MonoThreadInfo *info = mem;
+       MonoThreadInfo *info = (MonoThreadInfo *) mem;
 
        MONO_SEM_DESTROY (&info->resume_semaphore);
        mono_threads_platform_free (info);
@@ -320,7 +331,7 @@ register_thread (MonoThreadInfo *info, gpointer baseptr)
 static void
 unregister_thread (void *arg)
 {
-       MonoThreadInfo *info = arg;
+       MonoThreadInfo *info = (MonoThreadInfo *) arg;
        int small_id = info->small_id;
        g_assert (info);
 
@@ -346,7 +357,14 @@ unregister_thread (void *arg)
        if (threads_callbacks.thread_detach)
                threads_callbacks.thread_detach (info);
 
+       /*
+       Since the thread info lock is taken from within blocking sections, we can't check from there, so it must be done here.
+       This ensures that we won't lose any suspend requests as a suspend initiator must hold the lock.
+       Once we're holding the suspend lock, no threads can suspend us and once we unregister, no thread can find us. 
+       */
+       MONO_PREPARE_BLOCKING
        mono_thread_info_suspend_lock ();
+       MONO_FINISH_BLOCKING
 
        /*
        Now perform the callback that must be done under locks.
@@ -474,8 +492,14 @@ mono_threads_attach_tools_thread (void)
 
        /* Must only be called once */
        g_assert (!mono_native_tls_get_value (thread_info_key));
+       
+       while (!mono_threads_inited) { 
+               g_usleep (10);
+       }
 
        info = mono_thread_info_attach (&dummy);
+       g_assert (info);
+
        info->tools_thread = TRUE;
 }
 
@@ -485,14 +509,18 @@ mono_thread_info_attach (void *baseptr)
        MonoThreadInfo *info;
        if (!mono_threads_inited)
        {
+#ifdef HOST_WIN32
                /* This can happen from DllMain(DLL_THREAD_ATTACH) on Windows, if a
                 * thread is created before an embedding API user initialized Mono. */
                THREADS_DEBUG ("mono_thread_info_attach called before mono_threads_init\n");
                return NULL;
+#else
+               g_assert (mono_threads_inited);
+#endif
        }
-       info = mono_native_tls_get_value (thread_info_key);
+       info = (MonoThreadInfo *) mono_native_tls_get_value (thread_info_key);
        if (!info) {
-               info = g_malloc0 (thread_info_size);
+               info = (MonoThreadInfo *) g_malloc0 (thread_info_size);
                THREADS_DEBUG ("attaching %p\n", info);
                if (!register_thread (info, baseptr))
                        return NULL;
@@ -513,7 +541,7 @@ mono_thread_info_detach (void)
                THREADS_DEBUG ("mono_thread_info_detach called before mono_threads_init\n");
                return;
        }
-       info = mono_native_tls_get_value (thread_info_key);
+       info = (MonoThreadInfo *) mono_native_tls_get_value (thread_info_key);
        if (info) {
                THREADS_DEBUG ("detaching %p\n", info);
                unregister_thread (info);
@@ -547,8 +575,8 @@ mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size)
        res = mono_native_tls_alloc (&thread_info_key, NULL);
        res = mono_native_tls_alloc (&thread_exited_key, NULL);
 #else
-       res = mono_native_tls_alloc (&thread_info_key, unregister_thread);
-       res = mono_native_tls_alloc (&thread_exited_key, thread_exited_dtor);
+       res = mono_native_tls_alloc (&thread_info_key, (void *) unregister_thread);
+       res = mono_native_tls_alloc (&thread_exited_key, (void *) thread_exited_dtor);
 #endif
        g_assert (res);
 
@@ -798,8 +826,8 @@ is_thread_in_critical_region (MonoThreadInfo *info)
                return TRUE;
 
        ji = mono_jit_info_table_find (
-               state->unwind_data [MONO_UNWIND_DATA_DOMAIN],
-               MONO_CONTEXT_GET_IP (&state->ctx));
+               (MonoDomain *) state->unwind_data [MONO_UNWIND_DATA_DOMAIN],
+               (char *) MONO_CONTEXT_GET_IP (&state->ctx));
 
        if (!ji)
                return FALSE;
@@ -959,12 +987,6 @@ mono_thread_info_suspend_unlock (void)
        MONO_SEM_POST (&global_suspend_semaphore);
 }
 
-void
-mono_thread_info_disable_new_interrupt (gboolean disable)
-{
-       disable_new_interrupt = disable;
-}
-
 /*
  * This is a very specific function whose only purpose is to
  * break a given thread from socket syscalls.
@@ -995,10 +1017,14 @@ mono_thread_info_abort_socket_syscall_for_close (MonoNativeThreadId tid)
        }
 
        mono_thread_info_suspend_lock ();
+       mono_threads_begin_global_suspend ();
 
        mono_threads_core_abort_syscall (info);
+       mono_threads_wait_pending_operations ();
 
        mono_hazard_pointer_clear (hp, 1);
+
+       mono_threads_end_global_suspend ();
        mono_thread_info_suspend_unlock ();
 }
 
@@ -1008,30 +1034,6 @@ mono_thread_info_unified_management_enabled (void)
        return unified_suspend_enabled;
 }
 
-/*
-Disabled by default for now.
-To enable this we need mini to implement the callbacks by MonoThreadInfoRuntimeCallbacks
-which means mono-context and setup_async_callback, and we need a mono-threads backend.
-*/
-gboolean
-mono_thread_info_new_interrupt_enabled (void)
-{
-       /*We need STW gc events to work correctly*/
-#if defined (HAVE_BOEHM_GC) && !defined (USE_INCLUDED_LIBGC)
-       return FALSE;
-#endif
-#if defined(HOST_WIN32)
-       return !disable_new_interrupt;
-#endif
-#if defined (__i386__) || defined(__x86_64__)
-       return !disable_new_interrupt;
-#endif
-#if defined(__arm__) || defined(__aarch64__)
-       return !disable_new_interrupt;
-#endif
-       return FALSE;
-}
-
 /*
  * mono_thread_info_set_is_async_context:
  *
@@ -1205,7 +1207,7 @@ mono_threads_add_async_job (MonoThreadInfo *info, MonoAsyncJob job)
 {
        MonoAsyncJob old_job;
        do {
-               old_job = info->service_requests;
+               old_job = (MonoAsyncJob) info->service_requests;
                if (old_job & job)
                        return FALSE;
        } while (InterlockedCompareExchange (&info->service_requests, old_job | job, old_job) != old_job);
@@ -1218,7 +1220,7 @@ mono_threads_consume_async_jobs (void)
        MonoThreadInfo *info = (MonoThreadInfo*)mono_native_tls_get_value (thread_info_key);
 
        if (!info)
-               return 0;
+               return (MonoAsyncJob) 0;
 
-       return InterlockedExchange (&info->service_requests, 0);
+       return (MonoAsyncJob) InterlockedExchange (&info->service_requests, 0);
 }
index 17541149d623bc8771d56c67eb893acac7c93c0e..54f3e8b63d458c80d39374e85c4a59ab54397062 100644 (file)
@@ -369,9 +369,6 @@ mono_thread_info_end_self_suspend (void);
 
 //END of new API
 
-gboolean
-mono_thread_info_new_interrupt_enabled (void);
-
 gboolean
 mono_thread_info_unified_management_enabled (void);
 
@@ -384,9 +381,6 @@ mono_thread_info_suspend_lock (void);
 void
 mono_thread_info_suspend_unlock (void);
 
-void
-mono_thread_info_disable_new_interrupt (gboolean disable);
-
 void
 mono_thread_info_abort_socket_syscall_for_close (MonoNativeThreadId tid);
 
@@ -483,6 +477,9 @@ HANDLE mono_threads_core_open_handle (void);
 HANDLE mono_threads_core_open_thread_handle (HANDLE handle, MonoNativeThreadId tid);
 void mono_threads_core_set_name (MonoNativeThreadId tid, const char *name);
 
+void mono_threads_core_begin_global_suspend (void);
+void mono_threads_core_end_global_suspend (void);
+
 /* Internal API between mono-threads and its backends. */
 
 /* Backend functions - a backend must implement all of the following */
@@ -559,6 +556,11 @@ This tells the resume initiator that we completed resume duties and will return
 */
 void mono_threads_notify_initiator_of_resume (THREAD_INFO_TYPE* info);
 
+/*
+This tells the resume initiator that we completed abort duties and will return to previous state.
+*/
+void mono_threads_notify_initiator_of_abort (THREAD_INFO_TYPE* info);
+
 /* Thread state machine functions */
 
 typedef enum {
@@ -621,6 +623,8 @@ void mono_thread_info_wait_for_resume (THREAD_INFO_TYPE *info);
 gboolean mono_thread_info_is_running (THREAD_INFO_TYPE *info);
 gboolean mono_thread_info_is_live (THREAD_INFO_TYPE *info);
 int mono_thread_info_suspend_count (THREAD_INFO_TYPE *info);
+int mono_thread_info_current_state (THREAD_INFO_TYPE *info);
+
 gboolean mono_thread_info_in_critical_location (THREAD_INFO_TYPE *info);
 gboolean mono_thread_info_begin_suspend (THREAD_INFO_TYPE *info, gboolean interrupt_kernel);
 gboolean mono_thread_info_begin_resume (THREAD_INFO_TYPE *info);
index cd347546c207d8b6e72590fcec8060960cd522fd..3c940e73ddfb85b82607dafd526cad6b388219aa 100644 (file)
@@ -4,10 +4,17 @@
  * Copyright (C) 2008 Novell, Inc.
  */
 
-#include <utils/mono-time.h>
+#include <config.h>
 #include <stdlib.h>
 #include <stdio.h>
 
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#include <utils/mono-time.h>
+
+
 #define MTICKS_PER_SEC 10000000
 
 #ifdef HOST_WIN32
@@ -56,9 +63,6 @@ mono_100ns_datetime (void)
 
 #else
 
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
 
 #if defined (HAVE_SYS_PARAM_H)
 #include <sys/param.h>
@@ -168,9 +172,15 @@ mono_100ns_datetime (void)
 {
        struct timeval tv;
        if (gettimeofday (&tv, NULL) == 0)
-               return (((gint64)tv.tv_sec + EPOCH_ADJUST) * 1000000 + tv.tv_usec) * 10;
+               return mono_100ns_datetime_from_timeval (tv);
        return 0;
 }
 
+gint64
+mono_100ns_datetime_from_timeval (struct timeval tv)
+{
+       return (((gint64)tv.tv_sec + EPOCH_ADJUST) * 1000000 + tv.tv_usec) * 10;
+}
+
 #endif
 
index 6961306c2906f07ddc7c41a26981d27e88994f89..95bda8e530979b740b5b7fa06a99b300031e7ede 100644 (file)
@@ -4,15 +4,23 @@
 #include <mono/utils/mono-compiler.h>
 #include <glib.h>
 
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
 /* Returns the number of milliseconds from boot time: this should be monotonic */
 guint32 mono_msec_ticks      (void);
 
 /* Returns the number of 100ns ticks from unspecified time: this should be monotonic */
 gint64  mono_100ns_ticks     (void);
 
-/* Returns the number of 100ns ticks since 1/1/1, UTC timezone */
+/* Returns the number of 100ns ticks since 1/1/1601, UTC timezone */
 gint64  mono_100ns_datetime  (void);
 
+#ifndef HOST_WIN32
+gint64 mono_100ns_datetime_from_timeval (struct timeval tv);
+#endif
+
 /* Stopwatch class for internal runtime use */
 typedef struct {
        gint64 start, stop;
index 485aea76f3a0f3e13bad9b2fb19e579c8e96dc27..0b6cd5a1a1c65ca11233639be85ac86b13c95715 100644 (file)
@@ -49,7 +49,7 @@ typedef enum {
 static inline int
 mono_native_tls_alloc (MonoNativeTlsKey *key, void *destructor)
 {
-       return pthread_key_create (key, destructor) == 0;
+       return pthread_key_create (key, (void (*)(void*)) destructor) == 0;
 }
 
 static inline void
index e113260d4a8dde077d498fdea9fd6d3d1cb2b7a1..b86ab331dbf7e2cab2180e69cef51ae5060c10a4 100644 (file)
@@ -35,7 +35,7 @@ mono_bitset_new (guint32 max_size, guint32 flags) {
        guint32 real_size = (max_size + BITS_PER_CHUNK - 1) / BITS_PER_CHUNK;
        MonoBitSet *result;
 
-       result = g_malloc0 (sizeof (MonoBitSet) + sizeof (gsize) * (real_size - MONO_ZERO_LEN_ARRAY));
+       result = (MonoBitSet *) g_malloc0 (sizeof (MonoBitSet) + sizeof (gsize) * (real_size - MONO_ZERO_LEN_ARRAY));
        result->size = real_size * BITS_PER_CHUNK;
        result->flags = flags;
        return result;
@@ -54,7 +54,7 @@ mono_bitset_new (guint32 max_size, guint32 flags) {
 MonoBitSet *
 mono_bitset_mem_new (gpointer mem, guint32 max_size, guint32 flags) {
        guint32 real_size = (max_size + BITS_PER_CHUNK - 1) / BITS_PER_CHUNK;
-       MonoBitSet *result = mem;
+       MonoBitSet *result = (MonoBitSet *) mem;
 
        result->size = real_size * BITS_PER_CHUNK;
        result->flags = flags | MONO_BITSET_DONT_FREE;
index 5bea9278394d1e7dd1a2f033c71cb2a47517807b..8abe83907ceeb5cbdb419f03c0a12bc92c0365e2 100644 (file)
@@ -2,7 +2,12 @@
 #define __MONO_BITSET_H__
 
 #include <glib.h>
+#ifdef SGEN_WITHOUT_MONO
+#include "mono/utils/mono-compiler.h"
+#define MONO_API
+#else
 #include <mono/utils/mono-publib.h>
+#endif
 
 /*
  * When embedding, you have to define MONO_ZERO_LEN_ARRAY before including any
@@ -33,13 +38,28 @@ enum {
 
 /* Fast access to bits which depends on the implementation of the bitset */
 #define mono_bitset_test_fast(set,n) ((set)->data [(n)/MONO_BITSET_BITS_PER_CHUNK] & ((gsize)1 << ((n) % MONO_BITSET_BITS_PER_CHUNK)))
-#define mono_bitset_test_fast(set,n) ((set)->data [(n)/MONO_BITSET_BITS_PER_CHUNK] & ((gsize)1 << ((n) % MONO_BITSET_BITS_PER_CHUNK)))
 #define mono_bitset_set_fast(set,n) do { (set)->data [(n)/MONO_BITSET_BITS_PER_CHUNK] |= ((gsize)1 << ((n) % MONO_BITSET_BITS_PER_CHUNK)); } while (0)
 #define mono_bitset_clear_fast(set,n) do { (set)->data [(n)/MONO_BITSET_BITS_PER_CHUNK] &= ~((gsize)1 << ((n) % MONO_BITSET_BITS_PER_CHUNK)); } while (0)
 #define mono_bitset_get_fast(set,n) ((set)->data[(n)])
 
 #define mono_bitset_copyto_fast(src,dest) do { memcpy (&(dest)->data, &(src)->data, (dest)->size / 8); } while (0)
 
+#define MONO_BITSET_FOREACH(set,idx,/*stmt*/...) \
+       do \
+       { \
+               MonoBitSet *set__ = (set); \
+               for (int i__ = 0; i__ < set__->size / MONO_BITSET_BITS_PER_CHUNK; i__++) { \
+                       if (set__->data [i__]) { \
+                               for (int j__ = 0; j__ < MONO_BITSET_BITS_PER_CHUNK; j__++) { \
+                                       if (set__->data [i__] & ((gsize) 1 << j__)) { \
+                                               guint idx = j__ + i__ * MONO_BITSET_BITS_PER_CHUNK; \
+                                               __VA_ARGS__; \
+                                       } \
+                               } \
+                       } \
+               } \
+       } while (0)
+
 #define mono_bitset_union_fast(dest,src) do { \
     MonoBitSet *tmp_src = (src); \
     MonoBitSet *tmp_dest = (dest); \
diff --git a/mono/utils/parse.c b/mono/utils/parse.c
new file mode 100644 (file)
index 0000000..0c44c3f
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * parse.c: Parsing for GC options.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <glib.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include "parse.h"
+
+/**
+ * mono_gc_parse_environment_string_extract_number:
+ *
+ * @str: points to the first digit of the number
+ * @out: pointer to the variable that will receive the value
+ *
+ * Tries to extract a number from the passed string, taking in to account m, k
+ * and g suffixes
+ *
+ * Returns true if passing was successful
+ */
+gboolean
+mono_gc_parse_environment_string_extract_number (const char *str, size_t *out)
+{
+       char *endptr;
+       int len = strlen (str), shift = 0;
+       size_t val;
+       gboolean is_suffix = FALSE;
+       char suffix;
+
+       if (!len)
+               return FALSE;
+
+       suffix = str [len - 1];
+
+       switch (suffix) {
+               case 'g':
+               case 'G':
+                       shift += 10;
+               case 'm':
+               case 'M':
+                       shift += 10;
+               case 'k':
+               case 'K':
+                       shift += 10;
+                       is_suffix = TRUE;
+                       break;
+               default:
+                       if (!isdigit (suffix))
+                               return FALSE;
+                       break;
+       }
+
+       errno = 0;
+       val = strtol (str, &endptr, 10);
+
+       if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
+                       || (errno != 0 && val == 0) || (endptr == str))
+               return FALSE;
+
+       if (is_suffix) {
+               size_t unshifted;
+
+               if (*(endptr + 1)) /* Invalid string. */
+                       return FALSE;
+
+               unshifted = (size_t)val;
+               val <<= shift;
+               if (((size_t)val >> shift) != unshifted) /* value too large */
+                       return FALSE;
+       }
+
+       *out = val;
+       return TRUE;
+}
diff --git a/mono/utils/parse.h b/mono/utils/parse.h
new file mode 100644 (file)
index 0000000..a899908
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * parse.h: Parsing for GC options.
+ *
+ * Copyright (C) 2015 Xamarin Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License 2.0 as published by the Free Software Foundation;
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License 2.0 along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __MONO_UTILS_PARSE_H__
+#define __MONO_UTILS_PARSE_H__
+
+#include <glib.h>
+#include <stdlib.h>
+
+gboolean mono_gc_parse_environment_string_extract_number (const char *str, size_t *out);
+
+#endif
index 7dec326b2ec0922120a5c34fdcad90d9257f7eba..5263738fbb44431afc6cb705d40782d277d40840 100644 (file)
@@ -52,7 +52,7 @@ typedef union {
  * Hash a single 512-bit block. This is the core of the algorithm.
  */
 void
-SHA1Transform(guint32 state[5], const guint8 buffer[SHA1_BLOCK_LENGTH])
+mono_SHA1Transform(guint32 state[5], const guint8 buffer[SHA1_BLOCK_LENGTH])
 {
        guint32 a, b, c, d, e;
        guint8 workspace[SHA1_BLOCK_LENGTH];
@@ -105,7 +105,7 @@ SHA1Transform(guint32 state[5], const guint8 buffer[SHA1_BLOCK_LENGTH])
  * SHA1Init - Initialize new context
  */
 void
-SHA1Init(SHA1_CTX *context)
+mono_SHA1Init(SHA1_CTX *context)
 {
 
        /* SHA1 initialization constants */
@@ -122,7 +122,7 @@ SHA1Init(SHA1_CTX *context)
  * Run your data through this.
  */
 void
-SHA1Update(SHA1_CTX *context, const guint8 *data, size_t len)
+mono_SHA1Update(SHA1_CTX *context, const guint8 *data, size_t len)
 {
        size_t i, j;
 
@@ -130,9 +130,9 @@ SHA1Update(SHA1_CTX *context, const guint8 *data, size_t len)
        context->count += (len << 3);
        if ((j + len) > 63) {
                (void)memcpy(&context->buffer[j], data, (i = 64-j));
-               SHA1Transform(context->state, context->buffer);
+               mono_SHA1Transform(context->state, context->buffer);
                for ( ; i + 63 < len; i += 64)
-                       SHA1Transform(context->state, (guint8 *)&data[i]);
+                       mono_SHA1Transform(context->state, (guint8 *)&data[i]);
                j = 0;
        } else {
                i = 0;
@@ -145,7 +145,7 @@ SHA1Update(SHA1_CTX *context, const guint8 *data, size_t len)
  * Add padding and return the message digest.
  */
 void
-SHA1Pad(SHA1_CTX *context)
+mono_SHA1Pad(SHA1_CTX *context)
 {
        guint8 finalcount[8];
        guint i;
@@ -154,18 +154,18 @@ SHA1Pad(SHA1_CTX *context)
                finalcount[i] = (guint8)((context->count >>
                    ((7 - (i & 7)) * 8)) & 255);        /* Endian independent */
        }
-       SHA1Update(context, (guint8 *)"\200", 1);
+       mono_SHA1Update(context, (guint8 *)"\200", 1);
        while ((context->count & 504) != 448)
-               SHA1Update(context, (guint8 *)"\0", 1);
-       SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
+               mono_SHA1Update(context, (guint8 *)"\0", 1);
+       mono_SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
 }
 
 void
-SHA1Final(guint8 digest[SHA1_DIGEST_LENGTH], SHA1_CTX *context)
+mono_SHA1Final(guint8 digest[SHA1_DIGEST_LENGTH], SHA1_CTX *context)
 {
        guint i;
 
-       SHA1Pad(context);
+       mono_SHA1Pad(context);
        if (digest) {
                for (i = 0; i < SHA1_DIGEST_LENGTH; i++) {
                        digest[i] = (guint8)
index 588518266cab0ebbf29a629b8f38c2dcbfb06730..a3782aaed7b069123ce682f61d1789cd7e4d52b7 100644 (file)
@@ -22,15 +22,12 @@ typedef struct {
 } SHA1_CTX;
 
 G_BEGIN_DECLS
-void SHA1Init(SHA1_CTX *);
-void SHA1Pad(SHA1_CTX *);
-void SHA1Transform(guint32 [5], const guint8 [SHA1_BLOCK_LENGTH]);
-void SHA1Update(SHA1_CTX *, const guint8 *, size_t);
-void SHA1Final(guint8 [SHA1_DIGEST_LENGTH], SHA1_CTX *);
-char *SHA1End(SHA1_CTX *, char *);
-char *SHA1File(const char *, char *);
-char *SHA1FileChunk(const char *, char *, off_t, off_t);
-char *SHA1Data(const guint8 *, size_t, char *);
+void mono_SHA1Init(SHA1_CTX *);
+void mono_SHA1Pad(SHA1_CTX *);
+void mono_SHA1Transform(guint32 [5], const guint8 [SHA1_BLOCK_LENGTH]);
+void mono_SHA1Update(SHA1_CTX *, const guint8 *, size_t);
+void mono_SHA1Final(guint8 [SHA1_DIGEST_LENGTH], SHA1_CTX *);
+char *mono_SHA1End(SHA1_CTX *, char *);
 G_END_DECLS
 
 #define HTONDIGEST(x) do {                                              \
index 8f53741c5d7a0b5f138db978a163ecb7eaf1022c..55617d03c8c950de7433d1fc1b251725fe8286b8 100644 (file)
@@ -3,6 +3,14 @@
 
 #include "mono-compiler.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 double mono_strtod (const char *s00, char **se);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/mono/wrapper/.gitattributes b/mono/wrapper/.gitattributes
deleted file mode 100644 (file)
index 4e3fa7c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/build-dll -crlf
-/libmonowrapper.rc -crlf
diff --git a/mono/wrapper/.gitignore b/mono/wrapper/.gitignore
deleted file mode 100644 (file)
index e9b0e3e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/Makefile
-/Makefile.in
-/.deps
-/.libs
-/wrapper.h
-/*.lo
-/*.la
-/Wrapper.cs
-/libmonowrapper.def
diff --git a/mono/wrapper/ChangeLog b/mono/wrapper/ChangeLog
deleted file mode 100644 (file)
index 00fbfbc..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-2002-02-20  Dick Porter  <dick@ximian.com>
-
-       * Makefile.am:
-       * wrapper.c: Windows portability fixes (sometimes just ifdeffing
-       problem code out for now).
-
-2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
-
-       * wrapper.c (mono_wrapper_fstat): The MonoWrapperStat namespace is
-       mst_ now, so update this code. Also fix a copy/paste-o that
-       assigned st.st_ctime to buf->mst_mtime.
-       (mono_wrapper_stat): Same here.
-
-       * genwrapper.pl: Solaris does some nasty macro hadckery action for
-       st_[a,c,m]time and so lets namespace our wrapper members as
-       mst_[a,c,m]time to avoid namespace problems.
-
-Sun Feb 10 14:18:50 CET 2002 Paolo Molaro <lupus@ximian.com>
-
-       * genwrapper.pl: use pkg-config instead of glib-config (pointed out by
-       Eric Molitor <eric@brainfood.com>).
-
-2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
-
-       * wrapper.c (mono_wrapper_readdir): ugly hack - we must return a String
-       instead of a char* 
-
-Thu Jan 24 17:41:06 CET 2002 Paolo Molaro <lupus@ximian.com>
-
-       * glob.c: fix typo.
-
-2002-01-23  Miguel de Icaza  <miguel@ximian.com>
-
-       * glob.c (mono_glob_compile): Make the glob expression contain ^
-       and $ at the beginning and end respectively.
-
-       * genwrapper.pl: Added wrappers for the mono_glob functions.
-
-       * glob.c: New file, with globing functions used by the Directory
-       code. 
-
-       * wrapper.c: Changed things so that we can propagate ERRNO back. 
-
-       Include stdio.h and unistd.h to remove a couple of warnings.
-
-       * genwrapper.pl: Added support for flagging non-CLS compliant
-       classes and structs with CLSCompliant(false).
-
-       Added mkdir, rmdir and rename wrappers.
-
-2001-09-20  Dietmar Maurer  <dietmar@ximian.com>
-
-       * wrapper.c: added declaration of environ
-
-2001-09-07  Nick Drochak  <ndrochak@gol.com>
-
-       * Makefile.am: Use '=' to set CLEANFILES instead of '+=' since 
-               it's the first assignment.
-       
-       * ChangeLog: added this file.
-
diff --git a/mono/wrapper/Makefile.am b/mono/wrapper/Makefile.am
deleted file mode 100644 (file)
index 49bba17..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-lib_LTLIBRARIES = libmonowrapper.la
-
-AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
-
-if HOST_WIN32
-# glob.c doesnt build under windows
-SRC=                   \
-       wrapper.c       \
-       #
-else
-SRC=                   \
-       glob.c          \
-       wrapper.c       \
-       #
-endif
-
-libmonowrapper_la_SOURCES = $(SRC)
-
-libmonowrapperincludedir = $(includedir)/mono/wrapper
-
-libmonowrapperinclude_HEADERS = 
-       wrapper.h       
-
-noinst_HEADERS = 
-
-libmonowrapper.def: genwrapper.pl
-       $(srcdir)/genwrapper.pl -d >libmonowrapper.def
-
-Wrapper.cs: genwrapper.pl
-       $(srcdir)/genwrapper.pl -c >Wrapper.cs
-
-libmonowrapper.dll: $(libmonowrapper_la_OBJECTS) libmonowrapper.rc libmonowrapper.def
-       ./build-dll libmonowrapper 0.1
-
-
-wrapper.h: genwrapper.pl
-       $(srcdir)/genwrapper.pl >wrapper.h
-
-BUILT_SOURCES = wrapper.h Wrapper.cs libmonowrapper.def
-
-CLEANFILES = $(BUILT_SOURCES) lib*.a lib*.dll
-
-EXTRA_DIST = genwrapper.pl
-
diff --git a/mono/wrapper/build-dll b/mono/wrapper/build-dll
deleted file mode 100755 (executable)
index ac223d1..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash\r
-\r
-# Temporary hack until building dlls is easier with gcc -mno-cygwin\r
-# ("mingw32").\r
-\r
-# This is usable with cygwin 1.1.x and gcc-2.95.2 for mingw as\r
-# distributed by Mumit Khan. For other combinations, no idea.\r
-\r
-GCC="gcc"\r
-DLLTOOL="dlltool"\r
-AS=as\r
-\r
-library=$1; shift\r
-version=$1; shift;\r
-def=$1; shift\r
-ldargs="$*"\r
-\r
-defswitch=""\r
-[ -n "$def" -a "$def" != '-' ] && defswitch="--def $def"\r
-\r
-libname=$library\r
-[ $version != '-' ] && libname=$library-$version\r
-dllfile=$libname.dll\r
-\r
-for F in $ldargs; do\r
-    case $F in\r
-       *.[ao]) objs="$objs $F";;\r
-    esac\r
-done\r
-\r
-# Check if we have a resource file for this DLL.\r
-resfile=""\r
-if [ -f $library.rc ]; then\r
-    resfile=$library-win32res.o\r
-    objs="$objs $resfile"\r
-    ldargs="$ldargs $resfile"\r
-\r
-    # Check if we have a build number stamp file.\r
-    if [ -f $library-build.stamp ]; then\r
-       read number <$library-build.stamp\r
-       buildnumber=$[number+1]\r
-       echo Build number is $buildnumber\r
-       echo $buildnumber >$library-build.stamp\r
-    else\r
-       echo Using zero as build number\r
-        buildnumber=0\r
-    fi\r
-\r
-    m4 -DBUILDNUMBER=$buildnumber <$library.rc >$library-win32res.rc\r
-    windres $library-win32res.rc $library-win32res.o\r
-    rm $library-win32res.rc\r
-fi\r
-\r
-# Build the DLL.\r
-\r
-$GCC -mdll -mno-cygwin -Wl,--base-file,$library.base -o $dllfile $ldargs &&\r
-$DLLTOOL --as=$AS --dllname $dllfile $defswitch --base-file $library.base --output-exp $library.exp $objs &&\r
-$GCC -mdll -mno-cygwin -Wl,--base-file,$library.base,$library.exp -o $dllfile $ldargs &&\r
-$DLLTOOL --as=$AS --dllname $dllfile $defswitch --base-file $library.base --output-exp $library.exp $objs &&\r
-$GCC -mdll -mno-cygwin -Wl,$library.exp -o $dllfile $ldargs &&\r
-$DLLTOOL --as=$AS --dllname $dllfile $defswitch --output-lib lib$libname.a $objs\r
-\r
-# Finally, also build import libraries for the Microsoft linker. You\r
-# will either need to have some decent version of MSVC, or get lib.exe\r
-# (and link.exe) from the (freely downloadable) Microsoft Platform SDK.\r
-\r
-if type -p lib.exe && [ -n "$def" -a "$def" != '-' ]; then\r
-    lib -name:$libname.dll -def:$def -out:$libname.lib\r
-fi\r
-\r
-rm $library.base $library.exp 2>/dev/null\r
diff --git a/mono/wrapper/genwrapper.pl b/mono/wrapper/genwrapper.pl
deleted file mode 100755 (executable)
index 15641aa..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-#!/usr/bin/perl
-
-# Author:
-#      Dietmar Maurer (dietmar@ximian.com)
-#
-# (C) 2001 Ximian, Inc.
-
-use Getopt::Long;
-init();
-
-if ($ENV{"OSTYPE"} eq "cygwin") {
-@includes = ("sys/types.h", "sys/stat.h", "unistd.h", "fcntl.h", "glib.h",
-            "errno.h");
-} else {
-@includes = ("sys/types.h", "sys/stat.h", "unistd.h", "fcntl.h", "glib.h",
-            "errno.h");
-}
-
-$cflags = `pkg-config --cflags glib-2.0`;
-$cflags =~ s/\n//;
-
-$lib = "monowrapper";
-
-if ($csmode){
-   $res_struct .= "[CLSCompliant(false)]\n";
-}
-create_struct ("MonoWrapperStat", "stat",
-              "uint", "mst_dev",
-              "uint", "mst_mode",
-              "uint", "mst_nlink",
-              "uint", "mst_uid",
-              "uint", "mst_gid",
-              "long", "mst_size",
-              "uint", "mst_atime",
-              "uint", "mst_mtime",
-              "uint", "mst_ctime",
-              );
-
-create_func ($lib, "", "seek", "long", 
-            "IntPtr", "fd",
-            "long", "offset",
-            "int", "whence");
-
-create_func ($lib, "", "mkdir", "int",
-            "string", "path",
-            "int",    "mode");
-
-create_func ($lib, "", "rmdir", "int",
-            "string", "path");
-
-create_func ($lib, "", "read", "int",
-            "IntPtr", "fd",
-            "void *", "buf",
-            "int", "count");
-
-create_func ($lib, "", "write", "int",
-            "IntPtr", "fd",
-            "void *", "buf",
-            "int", "count");
-
-create_func ($lib, "", "fstat", "int",
-            "IntPtr", "fd",
-            "stat *", "buf");
-
-create_func ($lib, "", "ftruncate", "int",
-            "IntPtr", "fd",
-            "long", "length");
-
-create_func ($lib, "", "open", "IntPtr",
-            "string", "path",
-            "int", "flags",
-            "int", "mode");
-
-create_func ($lib, "", "close", "int",
-            "IntPtr", "fd");
-
-create_func ($lib, "", "stat", "int",
-            "string", "path",
-            "stat *", "buf");
-
-create_func ($lib, "", "unlink", "int",
-            "string", "path");
-
-create_func ($lib, "", "opendir", "IntPtr",
-            "string", "path");
-
-create_func ($lib, "", "readdir", "string",
-            "IntPtr", "dir");
-
-create_func ($lib, "", "closedir", "int",
-            "IntPtr", "dir");
-
-create_func ($lib, "", "getenv", "IntPtr",
-            "string", "variable");
-
-create_func ($lib, "", "environ", "IntPtr");
-
-create_func ($lib, "", "rename", "int",
-            "string", "source",
-            "string", "target");
-
-create_func ($lib, "", "utime",  "int",
-             "string", "path",
-            "int",    "atime",
-            "int",    "mtime");
-
-create_func ($lib, "mono_glob_compile", "mono_glob_compile", "IntPtr",
-            "string", "glob");
-
-create_func ($lib, "mono_glob_match", "mono_glob_match", "int",
-            "IntPtr", "handle",
-            "string", "str");
-
-create_func ($lib, "mono_glob_dispose", "mono_glob_dispose", "void",
-            "IntPtr", "handle");
-
-map_const ("int", "%d", "SEEK_SET",
-          "int", "%d", "SEEK_CUR",
-          "int", "%d", "SEEK_END",
-
-          "int", "0x%08x", "O_RDONLY",
-          "int", "0x%08x", "O_WRONLY",
-          "int", "0x%08x", "O_RDWR",
-          "int", "0x%08x", "O_CREAT",
-          "int", "0x%08x", "O_EXCL",
-          "int", "0x%08x", "O_NOCTTY",
-          "int", "0x%08x", "O_TRUNC",
-          "int", "0x%08x", "O_SYNC",
-          "int", "0x%08x", "O_APPEND",
-
-          "int", "0x%08x", "STDIN_FILENO",
-          "int", "0x%08x", "STDOUT_FILENO",
-          "int", "0x%08x", "STDERR_FILENO",
-
-          "int", "0x%08x", "S_IFMT",
-          "int", "0x%08x", "S_IFSOCK",
-          "int", "0x%08x", "S_IFLNK",
-          "int", "0x%08x", "S_IFREG",
-          "int", "0x%08x", "S_IFBLK",
-          "int", "0x%08x", "S_IFDIR",
-          "int", "0x%08x", "S_IFCHR",
-          "int", "0x%08x", "S_IFIFO",
-          "int", "0x%08x", "S_ISUID",
-          "int", "0x%08x", "S_ISGID",
-          "int", "0x%08x", "S_ISVTX",
-          "int", "0x%08x", "S_IRWXU",
-          "int", "0x%08x", "S_IRUSR",
-          "int", "0x%08x", "S_IWUSR",
-          "int", "0x%08x", "S_IXUSR",
-          "int", "0x%08x", "S_IRWXG",
-          "int", "0x%08x", "S_IRGRP",
-          "int", "0x%08x", "S_IWGRP",
-          "int", "0x%08x", "S_IXGRP",
-          "int", "0x%08x", "S_IRWXO",
-          "int", "0x%08x", "S_IROTH",
-          "int", "0x%08x", "S_IWOTH",
-          "int", "0x%08x", "S_IXOTH",
-
-          "int", "%d", "EPERM",
-          "int", "%d", "ENOENT",
-          "int", "%d", "ESRCH",
-          "int", "%d", "EINTR",
-          "int", "%d", "EIO",
-          "int", "%d", "ENXIO",
-          "int", "%d", "E2BIG",
-          "int", "%d", "ENOEXEC",
-          "int", "%d", "EBADF",
-          "int", "%d", "ECHILD",
-          "int", "%d", "EAGAIN",
-          "int", "%d", "ENOMEM",
-          "int", "%d", "EACCES",
-          "int", "%d", "EFAULT",
-          "int", "%d", "ENOTBLK",
-          "int", "%d", "EBUSY",
-          "int", "%d", "EEXIST",
-          "int", "%d", "EXDEV",
-          "int", "%d", "ENODEV",
-          "int", "%d", "EISDIR",
-          "int", "%d", "EINVAL",
-          "int", "%d", "ENFILE",
-          "int", "%d", "EMFILE",
-          "int", "%d", "ENOTTY",
-          "int", "%d", "ETXTBSY",
-          "int", "%d", "EFBIG",
-          "int", "%d", "ENOSPC",
-          "int", "%d", "ESPIPE",
-          "int", "%d", "EROFS",
-          "int", "%d", "EMLINK",
-          "int", "%d", "EPIPE",
-          "int", "%d", "EDOM",
-          "int", "%d", "ERANGE",
-          "int", "%d", "EDEADLK",
-          "int", "%d", "ENAMETOOLONG",
-          "int", "%d", "ENOLCK",
-          "int", "%d", "ENOSYS",
-          "int", "%d", "ENOTEMPTY",
-          "int", "%d", "ELOOP",
-          "int", "%d", "EWOULDBLOCK",
-          "int", "%d", "ENOMSG",
-          "int", "%d", "EIDRM",
-          "int", "%d", "ECHRNG",
-          "int", "%d", "EL2NSYNC",
-          "int", "%d", "EL3HLT",
-          "int", "%d", "EL3RST",
-          "int", "%d", "ELNRNG",
-          "int", "%d", "EUNATCH",
-          "int", "%d", "ENOCSI",
-          "int", "%d", "EL2HLT",
-          "int", "%d", "EBADE",
-          "int", "%d", "EBADR",
-          "int", "%d", "EXFULL",
-          "int", "%d", "ENOANO",
-          "int", "%d", "EBADRQC",
-          "int", "%d", "EBADSLT",
-          "int", "%d", "EDEADLOCK",
-          "int", "%d", "EBFONT",
-          "int", "%d", "ENOSTR",
-          "int", "%d", "ENODATA",
-          "int", "%d", "ETIME",
-          "int", "%d", "ENOSR",
-          "int", "%d", "ENONET",
-          "int", "%d", "ENOPKG",
-          "int", "%d", "EREMOTE",
-          "int", "%d", "ENOLINK",
-          "int", "%d", "EADV",
-          "int", "%d", "ESRMNT",
-          "int", "%d", "ECOMM",
-          "int", "%d", "EPROTO",
-          "int", "%d", "EMULTIHOP",
-          "int", "%d", "EDOTDOT",
-          "int", "%d", "EBADMSG",
-          "int", "%d", "ENOTUNIQ",
-          "int", "%d", "EBADFD",
-          "int", "%d", "EREMCHG",
-          "int", "%d", "ELIBACC",
-          "int", "%d", "ELIBBAD",
-          "int", "%d", "ELIBSCN",
-          "int", "%d", "ELIBMAX",
-          "int", "%d", "ELIBEXEC",
-          "int", "%d", "EUSERS",
-          "int", "%d", "ENOTSOCK",
-          "int", "%d", "EDESTADDRREQ",
-          "int", "%d", "EMSGSIZE",
-          "int", "%d", "EPROTOTYPE",
-          "int", "%d", "ENOPROTOOPT",
-          "int", "%d", "EPROTONOSUPPORT",
-          "int", "%d", "ESOCKTNOSUPPORT",
-          "int", "%d", "EOPNOTSUPP",
-          "int", "%d", "EPFNOSUPPORT",
-          "int", "%d", "EAFNOSUPPORT",
-          "int", "%d", "EADDRINUSE",
-          "int", "%d", "EADDRNOTAVAIL",
-          "int", "%d", "ENETDOWN",
-          "int", "%d", "ENETUNREACH",
-          "int", "%d", "ENETRESET",
-          "int", "%d", "ECONNABORTED",
-          "int", "%d", "ECONNRESET",
-          "int", "%d", "ENOBUFS",
-          "int", "%d", "EISCONN",
-          "int", "%d", "ENOTCONN",
-          "int", "%d", "ESHUTDOWN",
-          "int", "%d", "ETOOMANYREFS",
-          "int", "%d", "ETIMEDOUT",
-          "int", "%d", "ECONNREFUSED",
-          "int", "%d", "EHOSTDOWN",
-          "int", "%d", "EHOSTUNREACH",
-          "int", "%d", "EALREADY",
-          "int", "%d", "EINPROGRESS",
-          "int", "%d", "ESTALE",
-          "int", "%d", "EDQUOT",
-          "int", "%d", "ENOMEDIUM",
-          "int", "%d", "ENOTDIR",
-          );
-
-sub init {
-
-    $csmode = 0;
-    $defmode = 0;
-
-    GetOptions ("c|csharp" => \$csmode,
-               "d|defmode" => \$defmode) or die "cant parse options";
-
-    $CC = $env{"CC"};
-
-    if (!$CC) {
-       $CC = "gcc";
-    }
-
-
-    %tmap = ("void" => "void",
-            "IntPtr" => "gpointer",
-            "sbyte" => "gint8",
-            "byte" => "guint8",
-            "short" => "gint16",
-            "ushort" => "guint16",
-            "int" => "gint32",
-            "uint" => "guint32",
-            "long" => "gint64",
-            "ulong" => "guint64",
-            "string" => "const char *",
-            );
-}
-
-sub t {
-    my ($name) = @_;
-    my ($rname) = $name;
-
-    if ($name =~ m/(.*)\*\s*$/) {
-       $rname = $1;
-       $rname =~ s/\s+$//; # remove trailing spaces
-       $rval = $tmap{$rname} || die "unable to map type \"$name\"";
-       return "$rval*";
-    }
-
-    $rval = $tmap{$name} || die "unable to map type \"$name\"";
-
-}
-
-sub create_func {
-    my (@func) = @_;
-    my ($i) = 0;
-    my ($res) = "";
-    my ($cls) = 1;
-    my ($j) = 4;
-    while ($j <= $#func){
-       if ($func[$j] =~ /\*/){
-               $cls = 0;
-       }
-       $j+=2;
-    }
-
-    if ($func[1] eq "") {
-       $func[1] = "mono_wrapper_$func[2]";
-    }
-
-    if ($defmode) {
-       $dlldef .= "\t$func[1]\n";
-    }
-
-    if ($csmode) {
-
-       $res = "\t[DllImport(\"$func[0]\", EntryPoint=\"$func[1]\", CharSet=CharSet.Ansi)]\n";
-       if ($cls == 0){
-          $res .= "\t[CLSCompliant(false)]\n";
-        }
-       $res .= "\tpublic unsafe static extern $func[3] $func[2] (";
-       $i +=4;
-       while ($i <= $#func) {
-           if ($i>4) {
-               $res .= ", ";
-           }
-           $res .= "$func[$i] $func[$i+1]";
-           
-           $i+=2;
-       }
-       $res .= ");\n\n";
-
-       $res_func .= $res;
-
-    } else  {
-       
-       $res = t($func[3]) . "\n$func[1] (";
-       
-       $i +=4;
-       while ($i <= $#func) {
-           if ($i>4) {
-               $res .= ", ";
-           }
-           $res .= t($func[$i]) . " $func[$i+1]";
-           
-           $i+=2;
-       }
-       $res .= ");\n\n";
-
-       $res_func .= $res;
-    }
-}
-
-sub create_struct {
-    my (@str) = @_;
-    my ($i) = 0;
-    my ($res) = "";
-
-    if ($csmode) {
-       $res = "public struct $str[1] {\n";
-       $i +=2;
-       while ($i <= $#str) {
-           $res .= "\tpublic $str[$i] $str[$i+1];\n";
-           $i+=2;
-       }
-       $res .= "};\n\n";
-    } else {
-       $res = "typedef struct {\n";
-       $i += 2;
-       while ($i <= $#str) {
-           $res .= "\t" . t($str[$i]) . " $str[$i+1];\n";
-           $i+=2;
-       }
-       $res .= "} $str[0];\n\n";
-    }
-
-    $tmap{"$str[1]"} = "$str[0]";
-
-    $res_struct .= $res;
-}
-
-sub map_const {
-    my (@co) = @_;
-    my ($res) = "";
-    my ($l);
-    my ($space);
-
-    if (!$csmode) {
-       return;
-    }
-
-    my ($tfn) = "/tmp/etypes$$.c";
-
-    open (TFN, ">$tfn") || die (0);
-
-    for ($i = 0; $i <= $#includes; $i++) {
-       print TFN "#include \"$includes[$i]\"\n";
-    }
-    
-    print TFN "\nint main () {\n"; 
-    for ($i = 0; $i <= $#co; $i+=3) {
-
-       $l = 20 - length($co[$i+2]);
-
-       $space = "";
-       for (my ($j) = 0; $j < $l; $j++) {
-           $space = $space . " ";
-       }
-
-       print TFN "printf (\"\\tpublic const %s %s $space= $co[$i+1];\\n\",".
-           " \"$co[$i]\", \"$co[$i+2]\", $co[$i+2]);\n";
-
-    }
-    print TFN "exit (-1);\n";
-    print TFN "}\n";
-
-    close (TFN);
-
-    system ("$CC $cflags $tfn -o conftest.exe") == 0
-       or die "calling c compiler failed";
-
-    system ("rm $tfn");
-
-    $res = `./conftest.exe`;
-
-    if (!$res) {
-       die "calling a.out failde";
-    }
-
-    $res_const = $res_const . $res;
-
-    system ("rm ./conftest.exe");      
-}
-
-sub etypes_end {
-
-    @ae = split (/\./, $__class);
-
-    print $res_struct;
-
-    print "public class $ae[$#ae] {\n\n";
-
-    if ($res_const) {
-       print "$res_const\n\n";
-    }
-
-    print "$res_func";
-
-    printf "} // class $ae[$#ae]\n\n";
-
-    for ($i = $#ae - 1; $i >= 0; $i--) {
-       print "} // namescape $ae[$i]\n";
-    }
-
-}
-
-print "/*\n * Generated automatically: do not edit this file.\n */\n\n";
-
-
-if ($csmode) {
-
-    print "using System;\n";
-    print "using System.Runtime.InteropServices;\n\n";
-
-    print "namespace System.Private {\n\n";
-
-    print $res_struct;
-
-    print "public class Wrapper {\n\n";
-
-    if ($res_const) {
-       print "$res_const\n\n";
-    }
-
-    print "$res_func";
-
-    print "}\n";
-
-    print "}\n";
-    
-} elsif ($defmode) {
-       
-    print "LIBRARY libmonowrapper\n";
-    print "EXPORTS\n";
-    print "\tDllMain\n";
-    print $dlldef;
-
-} else {
-
-    print "#ifndef _MONO_WRAPPER_H_\n#define _MONO_WRAPPER_H_ 1\n\n";
-
-    for ($i = 0; $i <= $#includes; $i++) {
-       print "#include <$includes[$i]>\n";
-    }
-
-    print "\n";
-
-    print $res_struct;
-
-    print $res_func;
-
-    print "#endif\n";
-}
diff --git a/mono/wrapper/glob.c b/mono/wrapper/glob.c
deleted file mode 100644 (file)
index 90aabe0..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * glob.c: Simple glob support for the class libraries
- *
- * Author:
- *   Miguel de Icaza (miguel@ximian.com).
- *
- * (C) 2002 Ximian, Inc.
- */
-#include <sys/types.h>
-#include <glib.h>
-#include <config.h>
-#include <regex.h>
-#include "wrapper.h"
-
-gpointer
-mono_glob_compile (const char *glob)
-{
-       regex_t *compiled = g_new (regex_t, 1);
-       GString *str = g_string_new ("^");
-       const char *p;
-       
-       for (p = glob; *p; p++){
-               switch (*p){
-               case '?':
-                       g_string_append_c (str, '.');
-                       break;
-               case '*':
-                       g_string_append (str, ".*");
-                       break;
-                       
-               case '[': case ']': case '\\': case '(': case ')':
-               case '^': case '$': case '.':
-                       g_string_append_c (str, '\\');
-                       /* fall */
-               default:
-                       g_string_append_c (str, *p);
-               }
-       }
-       g_string_append_c (str, '$');
-       regcomp (compiled, str->str, 0);
-
-       return compiled;
-}
-
-int
-mono_glob_match (gpointer handle, const char *str)
-{
-       regex_t *compiled = (regex_t *) handle;
-
-       return regexec (compiled, str, 0, NULL, 0) == 0;
-}
-
-void
-mono_glob_dispose (gpointer handle)
-{
-       regfree ((regex_t *) handle);
-}
diff --git a/mono/wrapper/libmonowrapper.rc b/mono/wrapper/libmonowrapper.rc
deleted file mode 100644 (file)
index ac32d32..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 0,6,0,1\r
- PRODUCTVERSION 0,6,0,1\r
- FILEFLAGSMASK 0x3fL\r
- FILEFLAGS 0x0L\r
- FILEOS 0x40004L\r
- FILETYPE 0x2L\r
- FILESUBTYPE 0x0L\r
-BEGIN\r
-    BLOCK "StringFileInfo"\r
-    BEGIN\r
-        BLOCK "040904b0"\r
-        BEGIN\r
-            VALUE "Comments", "TODO: Put something here\0"\r
-            VALUE "CompanyName", "TODO: Put something here\0"\r
-            VALUE "FileDescription", "libmono\0"\r
-            VALUE "FileVersion", "0, 6, 0, 1\0"\r
-            VALUE "InternalName", "libmono\0"\r
-            VALUE "LegalCopyright", "Copyright Â© 2001\0"\r
-            VALUE "LegalTrademarks", "\0"\r
-            VALUE "OriginalFilename", "libmono.dll\0"\r
-            VALUE "PrivateBuild", "\0"\r
-            VALUE "ProductName", "  libmono\0"\r
-            VALUE "ProductVersion", "0, 6, 0, 1\0"\r
-            VALUE "SpecialBuild", "\0"\r
-        END\r
-    END\r
-    BLOCK "VarFileInfo"\r
-    BEGIN\r
-        VALUE "Translation", 0x409, 1200\r
-    END\r
-END\r
diff --git a/mono/wrapper/wrapper.c b/mono/wrapper/wrapper.c
deleted file mode 100644 (file)
index 41885c5..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-#include <config.h>
-#include <limits.h>
-#include <dirent.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-#include "wrapper.h"
-
-extern char **environ;
-
-gint64
-mono_wrapper_seek (gpointer fd, gint64 offset, gint32 whence)
-{
-       off_t code;
-
-       if (offset > INT_MAX || offset < INT_MIN)
-               return -EINVAL;
-
-       code = lseek ((int)fd, offset, whence);
-       if (code == -1)
-               return -errno;
-       else
-               return code;
-}
-
-gint32
-mono_wrapper_read (gpointer fd, void* buf, gint32 count)
-{
-       int n = read ((int)fd, buf, count);
-
-       if (n == -1)
-               return -errno;
-       return n;
-}
-
-gint32
-mono_wrapper_write (gpointer fd, void* buf, gint32 count)
-{
-       int n = write ((int)fd, buf, count);
-
-       if (n == -1)
-               return -errno;
-       return n;
-}
-
-gint32
-mono_wrapper_fstat (gpointer fd, MonoWrapperStat* buf)
-{
-       struct stat fs;
-
-       if (fstat ((int)fd, &fs) == -1)
-               return -errno;
-
-       buf->mst_dev = fs.st_dev;
-       buf->mst_mode = fs.st_mode;
-       buf->mst_nlink = fs.st_nlink;
-       buf->mst_uid = fs.st_uid;
-       buf->mst_gid = fs.st_gid;
-       buf->mst_size = fs.st_size;
-       buf->mst_atime = fs.st_atime;
-       buf->mst_mtime = fs.st_mtime;
-       buf->mst_ctime = fs.st_ctime;
-
-       return 0;
-}
-
-gint32
-mono_wrapper_ftruncate (gpointer fd, gint64 length) 
-{
-       int code;
-
-       if (length > INT_MAX || length < INT_MIN)
-               return -1;
-
-       code = ftruncate ((int)fd, length);
-       if (code == -1)
-               return -errno;
-       return code;
-}
-
-gpointer
-mono_wrapper_open (const char * path, gint32 flags, gint32 mode)
-{
-       return (gpointer) open (path, flags, mode);
-}
-
-gint32
-mono_wrapper_close (gpointer fd)
-{
-       return close ((int)fd);
-}
-
-gint32
-mono_wrapper_stat (const char * path, MonoWrapperStat* buf)
-{
-       struct stat fs;
-
-       if (stat (path, &fs) != 0)
-               return errno;
-
-       buf->mst_dev = fs.st_dev;
-       buf->mst_mode = fs.st_mode;
-       buf->mst_nlink = fs.st_nlink;
-       buf->mst_uid = fs.st_uid;
-       buf->mst_gid = fs.st_gid;
-       buf->mst_size = fs.st_size;
-       buf->mst_atime = fs.st_atime;
-       buf->mst_mtime = fs.st_mtime;
-       buf->mst_ctime = fs.st_ctime;
-
-       return 0;
-}
-
-gint32
-mono_wrapper_unlink (const char * path)
-{
-       if (unlink(path) == -1)
-               return -errno;
-       return 0;
-}
-
-gpointer
-mono_wrapper_opendir (const char * path)
-{
-       return (gpointer)opendir(path);
-}
-
-const char *
-mono_wrapper_readdir (gpointer dir)
-{
-       struct dirent* p;
-
-       p = readdir((DIR*)dir);
-
-       return p != NULL ? p->d_name : NULL;
-}
-
-gint32
-mono_wrapper_closedir (gpointer dir)
-{
-       return closedir((DIR*)dir);
-}
-
-gpointer
-mono_wrapper_getenv (const char * variable)
-{
-       return (gpointer)getenv(variable);
-}
-
-gpointer
-mono_wrapper_environ ()
-{
-       return (gpointer)environ;
-}
-
-int
-mono_wrapper_mkdir (const char *path, int mode)
-{
-#ifndef HOST_WIN32
-       if (mkdir (path, mode) == -1)
-               return -errno;
-#endif
-       return 0;
-}
-
-int
-mono_wrapper_rmdir (const char *path)
-{
-       if (rmdir (path) == -1)
-               return -errno;
-       return 0;
-}
-
-int
-mono_wrapper_rename (const char *src, const char *dst)
-{
-       if (rename (src, dst) == -1)
-               return -errno;
-       return 0;
-}
-
-int
-mono_wrapper_utime (const char *path, int atime, int mtime)
-{
-#ifndef HOST_WIN32
-       struct utimbuf buf;
-
-       buf.actime = atime;
-       buf.modtime = mtime;
-
-       if (utime (path, &buf) == -1)
-               return -errno;
-#endif
-       return 0;
-}
-
index d6307f81d275e661953f90d5fd754f6f1079ef42..b1692556f80b275d93911a9097be4e230f06f122 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 5bdd6618567fb47884174f410c63e93aa6105b48..4b2af22d19036e17be43016de27653b2d5f04976 100644 (file)
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MinSpace</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MinSpace</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
index 8d07921336eec702d2db4de755b57751343de728..d3dd9ffd2fa8c2687bcf7a2b92fc9837c9e27871 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <BufferSecurityCheck>true</BufferSecurityCheck>\r
       <PrecompiledHeader>\r
     <ClCompile>\r
       <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <BufferSecurityCheck>true</BufferSecurityCheck>\r
       <PrecompiledHeader>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <BufferSecurityCheck>true</BufferSecurityCheck>\r
       <PrecompiledHeader>\r
     <ClCompile>\r
       <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <BufferSecurityCheck>true</BufferSecurityCheck>\r
       <PrecompiledHeader>\r
index d413ca42adaa7c40cef63106b1f4866b12722547..e602b28bca6498aff066fdd8e4a513026f4cf5b9 100644 (file)
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 488a1fa1c3035757518bac6bbacf34b8760641eb..5643e9344471623a80f96341911133e6b91221cb 100644 (file)
@@ -53,7 +53,6 @@
     <ClCompile Include="..\mono\metadata\file-io.c" />\r
     <ClCompile Include="..\mono\metadata\file-mmap-windows.c" />\r
     <ClCompile Include="..\mono\metadata\filewatcher.c" />\r
-    <ClCompile Include="..\mono\metadata\gc-memfuncs.c" />\r
     <ClCompile Include="..\mono\metadata\gc.c" />\r
     <ClCompile Include="..\mono\metadata\icall.c" />\r
     <ClCompile Include="..\mono\metadata\image.c" />\r
     <ClCompile Include="..\mono\metadata\security-core-clr.c" />\r
     <ClCompile Include="..\mono\metadata\security-manager.c" />\r
     <ClCompile Include="..\mono\metadata\mono-security.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-alloc.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-alloc.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-bridge.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-cardtable.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-debug.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-descriptor.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-gc.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-gray.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-hash-table.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-internal.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-los.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-marksweep.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-memory-governor.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-cardtable.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-debug.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-descriptor.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-gc.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-gray.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-hash-table.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-internal.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-los.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-marksweep.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-memory-governor.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-new-bridge.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-nursery-allocator.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-nursery-allocator.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-old-bridge.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-mach.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-posix.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-os-win32.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-pinning-stats.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-pinning.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-pointer-queue.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-protocol.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-qsort.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-simple-nursery.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-split-nursery.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-pinning-stats.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-pinning.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-pointer-queue.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-protocol.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-qsort.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-simple-nursery.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-split-nursery.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-tarjan-bridge.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-workers.c" />\r
-    <ClCompile Include="..\mono\metadata\sgen-fin-weak-hash.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-workers.c" />\r
+    <ClCompile Include="..\mono\sgen\sgen-fin-weak-hash.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-stw.c" />\r
     <ClCompile Include="..\mono\metadata\socket-io.c" />\r
     <ClCompile Include="..\mono\metadata\string-icalls.c" />\r
     <ClInclude Include="..\mono\metadata\file-io.h" />\r
     <ClInclude Include="..\mono\metadata\filewatcher.h" />\r
     <ClInclude Include="..\mono\metadata\gc-internal.h" />\r
+    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h" />\r
     <ClInclude Include="..\mono\metadata\icall-def.h" />\r
     <ClInclude Include="..\mono\metadata\image.h" />\r
     <ClInclude Include="..\mono\metadata\loader.h" />\r
     <ClInclude Include="..\mono\metadata\security-core-clr.h" />\r
     <ClInclude Include="..\mono\metadata\security-manager.h" />\r
     <ClInclude Include="..\mono\metadata\security.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-archdep.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-archdep.h" />\r
     <ClInclude Include="..\mono\metadata\sgen-bridge.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-cardtable.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-conf.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-copy-object.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-descriptor.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-gc.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-gray.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-major-copy-object.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-major-scan-object.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-memory-governor.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-minor-copy-object.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-minor-scan-object.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-pinning.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-protocol.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-scan-object.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-cardtable.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-conf.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-copy-object.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-descriptor.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-gc.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-gray.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-major-copy-object.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-major-scan-object.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-memory-governor.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-minor-copy-object.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-minor-scan-object.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-pinning.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-protocol.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-qsort.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-scan-object.h" />\r
     <ClInclude Include="..\mono\metadata\sgen-toggleref.h" />\r
-    <ClInclude Include="..\mono\metadata\sgen-workers.h" />\r
+    <ClInclude Include="..\mono\sgen\sgen-workers.h" />\r
     <ClInclude Include="..\mono\metadata\socket-io.h" />\r
     <ClInclude Include="..\mono\metadata\string-icalls.h" />\r
     <ClInclude Include="..\mono\metadata\sysmath.h" />\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>
\ No newline at end of file
+</Project>\r
index 71fc515d5af293a0bab3c3de5bbd28d337a73c01..dee2de94794651ce5188c5375cf96c6559377f4d 100644 (file)
@@ -74,6 +74,8 @@
     <ClCompile Include="..\mono\utils\mono-hwcap.c" />\r
     <ClCompile Include="..\mono\utils\mono-hwcap-x86.c" />\r
     <ClCompile Include="..\mono\utils\bsearch.c" />\r
+    <ClCompile Include="..\mono\utils\memfuncs.c" />\r
+    <ClCompile Include="..\mono\utils\parse.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\mono\utils\dlmalloc.h" />\r
     <ClInclude Include="..\mono\utils\mono-hwcap.h" />\r
     <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />\r
     <ClInclude Include="..\mono\utils\bsearch.h" />\r
+    <ClInclude Include="..\mono\utils\memfuncs.h" />\r
+    <ClInclude Include="..\mono\utils\parse.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <MASM Include="..\mono\utils\win64.asm">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 7fd3128bf96589db61f696fb234bbe297caaaaa1..49eba7f2e5abc997d7cd0d422a214c77e0080a9f 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 90a6636494e416463ff0cf7ebcc6ba4ac8cd0998..768932cc0ca1e9f01fe069696ecd83e6fe242b84 100644 (file)
@@ -329,15 +329,11 @@ mono_g_hash_table_replace
 mono_g_hash_table_size
 mono_gc_collect
 mono_gc_collection_count
-mono_gc_enable_events
 mono_gc_get_generation
 mono_gc_get_heap_size
 mono_gc_get_used_size
 mono_gc_invoke_finalizers
-mono_gc_is_finalizer_thread
-mono_gc_make_root_descr_user
 mono_gc_max_generation
-mono_gc_out_of_memory
 mono_gc_reference_queue_add
 mono_gc_reference_queue_free
 mono_gc_reference_queue_new
@@ -651,7 +647,6 @@ mono_object_get_domain
 mono_object_get_size
 mono_object_get_virtual_method
 mono_object_hash
-mono_object_is_alive
 mono_object_isinst
 mono_object_isinst_mbyref
 mono_object_isinst_with_cache
index ffec2840f23ee0878d6a57ec5fde78c3de470b9d..85e839475afd0dc5348b140da63696088fdc07fc 100644 (file)
@@ -9,7 +9,7 @@
   </PropertyGroup>
   <ItemDefinitionGroup>
     <ClCompile>
-      <PreprocessorDefinitions>__default_codegen__;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H;GC_NOT_DLL;WIN32_THREADS;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;_UNICODE;UNICODE;WIN32_THREADS;FD_SETSIZE=1024;$(PreprocessorDefinitions);_WINSOCKAPI_</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__default_codegen__;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H;GC_NOT_DLL;WIN32_THREADS;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;_UNICODE;UNICODE;WIN32_THREADS;FD_SETSIZE=1024;$(PreprocessorDefinitions);_WINSOCKAPI_</PreprocessorDefinitions>
          <DisableSpecificWarnings>4273;4005</DisableSpecificWarnings>
     </ClCompile>
     <Link>
index f74a298cc29457eced8326e3637b802fc5bcae99..3ecf25bff1e7ea2cac166a736f947f6a5ce88391 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 7774ec06053cde7f79c7d9e6e11c0e4442b06d44..b4b2c4e5d80ff5c1a97820c2774a9a6a27eabadc 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 563f7f942bb5a7083f0faeb96624d41a98872c26..b9cae332c8e15b2f6857590b2f797d5dc4381b44 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index e5def020aa4a72443069451d1b9e6459443c7bb1..f77df6ffae81890739e5eadd50d0029204d392c4 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 2195770f31eb0408c5f4e375075e4d46082c955f..8fd2d718c9090383136ee828abc03868c31fd7b1 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
@@ -83,7 +83,7 @@
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;_WIN32_WINNT=0x0502;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;_WIN32_WINNT=0x0502;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;_WIN32_WINNT=0x0502;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
     <ClCompile>\r
       <Optimization>MinSpace</Optimization>\r
       <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;_WIN32_WINNT=0x0502;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <PrecompiledHeader>\r
       </PrecompiledHeader>\r
index f9fc33738d2935fb30db5e5aee689277c546a182..59a81adb2b2ac7f665254937978febc1706c4870 100644 (file)
@@ -329,15 +329,11 @@ mono_g_hash_table_replace
 mono_g_hash_table_size
 mono_gc_collect
 mono_gc_collection_count
-mono_gc_enable_events
 mono_gc_get_generation
 mono_gc_get_heap_size
 mono_gc_get_used_size
 mono_gc_invoke_finalizers
-mono_gc_is_finalizer_thread
-mono_gc_make_root_descr_user
 mono_gc_max_generation
-mono_gc_out_of_memory
 mono_gc_reference_queue_add
 mono_gc_reference_queue_free
 mono_gc_reference_queue_new
@@ -653,7 +649,6 @@ mono_object_get_domain
 mono_object_get_size
 mono_object_get_virtual_method
 mono_object_hash
-mono_object_is_alive
 mono_object_isinst
 mono_object_isinst_mbyref
 mono_object_isinst_with_cache
index d1c62a89b70eecfd3d9b2c8bcdbe7fbe8ab6fb94..f77f0192e9a61d7257317420a053fd9e6e2ab874 100644 (file)
@@ -313,15 +313,11 @@ mono_g_hash_table_replace
 mono_g_hash_table_size
 mono_gc_collect
 mono_gc_collection_count
-mono_gc_enable_events
 mono_gc_get_generation
 mono_gc_get_heap_size
 mono_gc_get_used_size
 mono_gc_invoke_finalizers
-mono_gc_is_finalizer_thread
-mono_gc_make_root_descr_user
 mono_gc_max_generation
-mono_gc_out_of_memory
 mono_gc_reference_queue_add
 mono_gc_reference_queue_free
 mono_gc_reference_queue_new
@@ -633,7 +629,6 @@ mono_object_get_domain
 mono_object_get_size
 mono_object_get_virtual_method
 mono_object_hash
-mono_object_is_alive
 mono_object_isinst
 mono_object_isinst_mbyref
 mono_object_isinst_with_cache
index 911f00bb3eb678860a15e9dc0405855b100ae6e9..5e57c01b5dd91ad006d1752bfd865ecd40daa186 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index d99fc3d31bff06dfd27959841c587d4cfcf36004..d9d013ce515de9a5e2d235fdef6b1284ceb186ec 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 44c43b8415d721edc82e090acc0ebfc39a0df92e..da7aaa3e67d3ac38c1f6ad4a5b463f4c52b5fd44 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 29b1ce2623aeec8469f86dbb701c349db32393b5..9ec7432b0e81a14d5a4d2b73e4bb34b85846c491 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0502;_WIN32_WINNT=0x0502;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <PrecompiledHeader>\r
index 1fcc46903870efa7761fcce4bedb4f9dff53e6b9..dcdb2ba64855620ad1a170e0fb8b434fff1430a8 100644 (file)
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v120_xp</PlatformToolset>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
diff --git a/notes/cil b/notes/cil
deleted file mode 100644 (file)
index 458aca5..0000000
--- a/notes/cil
+++ /dev/null
@@ -1,13 +0,0 @@
-Random collection of notes
-
-       * What is the point of having the InlineVar argument to
-         opcodes be a signed integer instead of unsigned?
-
-
-Storage
-
-       The CIL metadata is a very compressed file format, even the 
-       sizes of blobs and strings are recorded in a compressed form.
-       Still, all strings are encoded using 16-bit chars, instead of the
-       more efficient UTF-8.
-
index b021efeec4d64a4a7b2337f5821a281a0f68b0bc..415c21b1cb35101af9673996f481659e99eebdde 100644 (file)
@@ -34,7 +34,7 @@ else
 build_profiles = 
 
 if INSTALL_4_5
-build_profiles += net_4_0 net_4_5 xbuild_12 xbuild_14
+build_profiles += binary_reference_assemblies net_4_5 xbuild_12 xbuild_14
 al_profile = net_4_5
 endif
 
@@ -108,11 +108,11 @@ endif
 
 # Compile all assemblies with the verifier turned on. Code must be valid but not verifiable.
 # TODO it would be nice to split assemblies without unsafe code to use the verifier with verifiable mode.
-# Skip net 4.0 assemblies because they contain metadata only
+# Skip binary_reference_assemblies because they contain metadata only
 mcs-compileall: mono-wrapper etc/mono/config
        save_MONO_PATH=$$MONO_PATH; mcs_topdir=`cd $(mcs_topdir) && $(cur_dir_cmd)`; ok=:; \
        for profile in $(test_profiles); do \
-         if [ "net_4_0" = "$$profile" ]; then \
+         if [ "binary_reference_assemblies" = "$$profile" ]; then \
           continue; \
       fi; \
          if [ "xbuild_12" = "$$profile" ]; then \
index 49af781a55a1001be19f135c4a7e8bf24192f597..45c46da07d983742adb54409ac23b3aeea64e873 100644 (file)
@@ -2,10 +2,15 @@
 
 /*
  * Bare bones profiler. Compile with:
- * gcc -shared -o mono-profiler-sample.so sample.c `pkg-config --cflags --libs mono`
- * Install the binary where the dynamic loader can find it.
+ * 
+ * linux : gcc -shared -o mono-profiler-sample.so sample.c `pkg-config --cflags --libs mono`
+ * mac : gcc sample.c -o mono-profiler-sample.dylib -Dmono_free=free -lz `pkg-config --cflags mono-2` -undefined suppress -flat_namespace  
+ *
+ * Install the binary where the dynamic loader can find it. eg /usr/lib etc
  * Then run mono with:
  * mono --profile=sample your_application.exe
+ *
+ * Note if you name a profiler with more than 8 characters (eg sample6789) appears to not work
  */
 
 struct _MonoProfiler {
index c9210060c26e83fd628c11705e0147b8d2c02913..155690d75adad1c75ec255675b443167bc94089f 100644 (file)
@@ -33,7 +33,7 @@ fi
 # set LD_LIBRARY_PATH to ensure that libmono is found
 export LD_LIBRARY_PATH=$libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
 # and set MONO_PATH to ensure that mscorlib.dll can be found
-export MONO_PATH=$prefix/lib/mono/2.0
+export MONO_PATH=$prefix/lib/mono/4.5
 
 for i in "${monolist[@]}"; do
         ($bindir/monodis --assembly $i | awk '
index f0ad60bb8a2955b4b87e3433ae08fa0e470b196e..d7b6a325bc32e17394b502c8ec800400359442e1 100644 (file)
@@ -50,7 +50,7 @@ esac
 # set LD_LIBRARY_PATH to ensure that libmono is found
 export LD_LIBRARY_PATH=$libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
 # and set MONO_PATH to ensure that mscorlib.dll can be found
-export MONO_PATH=$prefix/lib/mono/2.0
+export MONO_PATH=$prefix/lib/mono/4.5
 
 REQUIRES=$(
        for i in "${monolist[@]}"; do
index 83455413b3647915ae8cc3cd0ac8e025cf5823be..38696260a092fb4b509f7eabc7f9fef96032b2b8 100644 (file)
@@ -90,6 +90,8 @@ CreateZStream (gint compress, guchar gzip, read_write_func func, void *gchandle)
        result->gchandle = gchandle;
        result->compress = compress;
        result->buffer = g_new (guchar, BUFFER_SIZE);
+       result->stream->next_out = result->buffer;
+       result->stream->avail_out = BUFFER_SIZE;
        return result;
 }
 
@@ -148,7 +150,7 @@ flush_internal (ZStream *stream, gboolean is_final)
        if (!stream->compress)
                return 0;
 
-       if (!is_final) {
+       if (!is_final && stream->stream->avail_in != 0) {
                status = deflate (stream->stream, Z_PARTIAL_FLUSH);
                if (status != Z_OK && status != Z_STREAM_END)
                        return status;
diff --git a/tools/checker/Makefile b/tools/checker/Makefile
new file mode 100644 (file)
index 0000000..f16a8b7
--- /dev/null
@@ -0,0 +1,36 @@
+CPPSHARP_DIR = CppSharp
+
+CPPSHARP_REFS = -r:$(CPPSHARP_DIR)/CppSharp.dll \
+       -r:$(CPPSHARP_DIR)/CppSharp.AST.dll \
+       -r:$(CPPSHARP_DIR)/CppSharp.Parser.CSharp.dll \
+       -r:$(CPPSHARP_DIR)/CppSharp.Generator.dll
+
+NEWTONSOFT_DIR = Newtonsoft.Json.6.0.8/lib/net45
+DEPS_REFS = -r:$(NEWTONSOFT_DIR)/Newtonsoft.Json.dll
+
+SRC_ROOT = ../..
+
+.stamp-clone:
+       @if [ ! -d $(CPPSHARP_DIR) ]; then \
+               git clone git@github.com:tritao/CppSharpBinaries.git $(CPPSHARP_DIR); \
+               touch $@; \
+       fi
+
+.stamp-deps:
+       nuget install Newtonsoft.Json
+       touch $@;
+
+MonoChecker.exe: .stamp-clone .stamp-deps MonoChecker.cs 
+       mcs MonoChecker.cs $(CPPSHARP_REFS) $(DEPS_REFS)
+       cp $(NEWTONSOFT_DIR)/*.dll .
+
+check: MonoChecker.exe 
+       MONO_PATH=$(CPPSHARP_DIR) mono MonoChecker.exe
+
+gen-proj:
+       $(CPPSHARP_DIR)/premake5 vs2012
+
+clean:
+       rm MonoChecker.exe
+
+all: MonoChecker.exe
\ No newline at end of file
diff --git a/tools/checker/MonoChecker.cs b/tools/checker/MonoChecker.cs
new file mode 100644 (file)
index 0000000..da70e70
--- /dev/null
@@ -0,0 +1,200 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text.RegularExpressions;
+using CppSharp.AST;
+using CppSharp.AST.Extensions;
+using CppSharp.Parser;
+using Newtonsoft.Json;
+
+namespace CppSharp
+{
+    /**
+     * This tool reads the AST of a Mono source checkout.
+     */
+    static class MonoChecker
+    {
+        static string CompilationDatabasePath = @"";
+
+        public static void Main(string[] args)
+        {
+            ParseCommandLineArgs(args);
+
+            Console.WriteLine();
+            Console.WriteLine("Parsing Mono's source code...");
+
+            var options = new DriverOptions();
+
+            var log = new TextDiagnosticPrinter();
+            var driver = new Driver(options, log);
+
+            Setup(driver);
+            driver.Setup();
+
+            BuildParseOptions(driver);
+            if (!driver.ParseCode())
+                return;
+
+            Check(driver.ASTContext);
+        }
+
+        static void ParseCommandLineArgs(string[] args)
+        {
+            var needsArgs = string.IsNullOrWhiteSpace(CompilationDatabasePath);
+
+            if (!needsArgs)
+                return;
+
+            if (args.Length >= 1)
+                CompilationDatabasePath = Path.GetFullPath(args[0]);
+            else
+                CompilationDatabasePath = "compile_commands.json";
+
+            if (!File.Exists(CompilationDatabasePath)) {
+                Console.WriteLine("Could not find JSON compilation database '{0}'",
+                    CompilationDatabasePath);
+                Environment.Exit(0);
+            }
+        }
+
+        static string GetXcodeToolchainPath()
+        {
+            var toolchains = Directory.EnumerateDirectories("/Applications", "Xcode*")
+                .ToList();
+            toolchains.Sort();
+
+            var toolchainPath = toolchains.LastOrDefault();
+            if (toolchainPath == null)
+                throw new Exception("Could not find a valid Xcode SDK");
+
+            return toolchainPath;
+        }
+
+        static string GetXcodeBuiltinIncludesFolder()
+        {
+            var toolchainPath = GetXcodeToolchainPath();
+
+            var toolchains = Directory.EnumerateDirectories(Path.Combine(toolchainPath,
+                "Contents/Developer/Toolchains")).ToList();
+            toolchains.Sort();
+
+            toolchainPath = toolchains.LastOrDefault();
+            if (toolchainPath == null)
+                throw new Exception("Could not find a valid Xcode toolchain");
+
+            var includePaths = Directory.EnumerateDirectories(Path.Combine(toolchainPath,
+                "usr/lib/clang")).ToList();
+            var includePath = includePaths.LastOrDefault();
+
+            if (includePath == null)
+                throw new Exception("Could not find a valid Clang include folder");
+
+            return Path.Combine(includePath, "include");
+        }
+
+        static void SetupXcode(Driver driver)
+        {
+            var options = driver.Options;
+
+            var builtinsPath = GetXcodeBuiltinIncludesFolder();
+            options.addSystemIncludeDirs(builtinsPath);
+
+            var includePath = "/usr/include";
+            options.addSystemIncludeDirs(includePath);
+
+            options.NoBuiltinIncludes = true;
+            options.NoStandardIncludes = true;
+        }        
+
+        static void Setup(Driver driver)
+        {
+            var options = driver.Options;
+            options.DryRun = true;
+            options.Verbose = false;
+            options.LibraryName = "Mono";
+            options.MicrosoftMode = false;
+            options.addArguments("-xc");
+            options.addArguments("-std=gnu99");
+
+            SetupXcode(driver);
+        }
+
+        struct CompileUnit
+        {
+            public string directory;
+            public string command;
+            public string file;
+        }
+
+        static List<CompileUnit> CleanCompileUnits(List<CompileUnit> database)
+        {
+            // The compilation database we get from Bear has duplicated entries
+            // for the same files, so clean it up before passing it down to
+            // further processing.
+            var units = new List<CompileUnit>();
+
+            foreach (var unit in database) {
+                // Ignore compile units compiled with PIC (Position-independent code)
+                if (unit.command.EndsWith("-fPIC -DPIC"))
+                    continue;
+
+                // Ignore compile units that are compiled with gcc since in OSX
+                //  it's a wrapper for the real compiler (clang) for which there'll
+                //  be another entry.
+                if (unit.command.Contains("gcc"))
+                    continue;
+
+                // Ignore the static runtime build.
+                if (unit.command.Contains("_static_la"))
+                    continue;
+
+                // Ignore the Boehm runtime build.
+                if (unit.command.Contains("libmonoruntime_la"))
+                    continue;                    
+
+                units.Add(unit);
+            }
+
+            return units;
+        }
+
+        static void BuildParseOptions(Driver driver)
+        {
+            var json = File.ReadAllText(CompilationDatabasePath);
+            var compileUnits = JsonConvert.DeserializeObject<List<CompileUnit>>(json);
+
+            compileUnits = CleanCompileUnits(compileUnits);
+            compileUnits = compileUnits.OrderBy(unit => unit.file).ToList();
+
+            foreach (var unit in compileUnits) {
+                var source = driver.Project.AddFile(unit.file);
+                source.Options = driver.BuildParseOptions(source);
+
+                var args = unit.command.Split(new char[] {' '}).Skip(1);
+                foreach (var arg in args) {
+                    // Skip some arguments that Clang complains about...
+                    var arguments = new List<string> {
+                        "-no-cpp-precomp",
+                        "-Qunused-arguments",
+                        "-fno-strict-aliasing",
+                        "-Qunused-arguments",
+                        "-MD",
+                        "-MF",
+                        "-c"
+                    };
+
+                    if (arguments.Contains(arg))
+                        continue;
+
+                    source.Options.addArguments(arg);
+                }
+            }
+        }
+
+        static void Check(ASTContext context)
+        {
+            // TODO: Implement checking here
+        }
+    }
+}
diff --git a/tools/checker/README.md b/tools/checker/README.md
new file mode 100644 (file)
index 0000000..a9327fe
--- /dev/null
@@ -0,0 +1,43 @@
+This directory contains supporting code and tools for Mono AST checker analysis.
+
+This tool uses [CppSharp](https://github.com/mono/CppSharp) to read the source code of Mono
+into an AST. It is a work-in-progress and in development.
+
+Right now the tool is OSX-specific but should easily work on other OS's provided you
+compile the dependencies for your platform. Contact @tritao if you need assistance.
+
+It relies on the presence of a compile_commands.json file which is a JSON compilation
+database. I have provided a sample database generated by using [Bear](https://github.com/rizsotto/Bear)
+on my machine.
+
+## Building
+
+First you'll need to build the tool by running `make`.
+
+It will first clone the needed CppSharp binaries from the [CppSharpBinaries](https://github.com/tritao/CppSharpBinaries)
+repository and then build the tool which should look like this:
+
+```
+mac:mono joao$ make
+mcs MonoChecker.cs -r:CppSharp/CppSharp.dll -r:CppSharp/CppSharp.AST.dll -r:CppSharp/CppSharp.Parser.CSharp.dll -r:CppSharp/CppSharp.Generator.dll -r:Newtonsoft.Json.6.0.8/lib/net45/Newtonsoft.Json.dll
+```
+
+## Debugging
+
+For easier debugging we can generate a Xamarin Studio project by running `make gen-proj`.
+
+If everything works correctly, you should get an output like:
+
+```
+mac:aot joao$ make gen-proj
+CppSharp/premake5 vs2012
+Building configurations...
+Running action 'vs2012'...
+Generating MonoChecker.sln...
+Generating MonoChecker.csproj...
+Generating MonoChecker.csproj.user...
+Done.
+```
+
+Then just load the solution in Xamarin Studio and you should be able to put breakpoints
+and debug the code.
\ No newline at end of file
diff --git a/tools/checker/compile_commands.json b/tools/checker/compile_commands.json
new file mode 100644 (file)
index 0000000..7fe17c8
--- /dev/null
@@ -0,0 +1,18379 @@
+[
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-md5.lo -MD -MP -MF .deps/mono-md5.Tpo -c -o .libs/mono-md5.o mono-md5.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-md5.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-logger.lo -MD -MP -MF .deps/mono-logger.Tpo -c -o .libs/mono-logger.o mono-logger.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-logger.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-sha1.lo -MD -MP -MF .deps/mono-sha1.Tpo -c -o .libs/mono-sha1.o mono-sha1.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-md5.lo -MD -MP -MF .deps/mono-md5.Tpo -c -o .libs/mono-md5.o mono-md5.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-md5.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-logger.lo -MD -MP -MF .deps/mono-logger.Tpo -c -o .libs/mono-logger.o mono-logger.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-logger.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-sha1.lo -MD -MP -MF .deps/mono-sha1.Tpo -c -o .libs/mono-sha1.o mono-sha1.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-sha1.lo -MD -MP -MF .deps/mono-sha1.Tpo -c -o .libs/mono-sha1.o mono-sha1.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-md5.lo -MD -MP -MF .deps/mono-md5.Tpo -c -o .libs/mono-md5.o mono-md5.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-md5.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-logger.lo -MD -MP -MF .deps/mono-logger.Tpo -c -o .libs/mono-logger.o mono-logger.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-logger.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-codeman.lo -MD -MP -MF .deps/mono-codeman.Tpo -c -o .libs/mono-codeman.o mono-codeman.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-codeman.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dlmalloc.lo -MD -MP -MF .deps/dlmalloc.Tpo -c -o .libs/dlmalloc.o dlmalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/dlmalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-codeman.lo -MD -MP -MF .deps/mono-codeman.Tpo -c -o .libs/mono-codeman.o mono-codeman.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-codeman.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl.lo -MD -MP -MF .deps/mono-dl.Tpo -c -o .libs/mono-dl.o mono-dl.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-counters.lo -MD -MP -MF .deps/mono-counters.Tpo -c -o .libs/mono-counters.o mono-counters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-counters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-windows.lo -MD -MP -MF .deps/mono-dl-windows.Tpo -c -o .libs/mono-dl-windows.o mono-dl-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dlmalloc.lo -MD -MP -MF .deps/dlmalloc.Tpo -c -o .libs/dlmalloc.o dlmalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/dlmalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl.lo -MD -MP -MF .deps/mono-dl.Tpo -c -o .libs/mono-dl.o mono-dl.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-counters.lo -MD -MP -MF .deps/mono-counters.Tpo -c -o .libs/mono-counters.o mono-counters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-counters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-windows.lo -MD -MP -MF .deps/mono-dl-windows.Tpo -c -o .libs/mono-dl-windows.o mono-dl-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-codeman.lo -MD -MP -MF .deps/mono-codeman.Tpo -c -o .libs/mono-codeman.o mono-codeman.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-codeman.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dlmalloc.lo -MD -MP -MF .deps/dlmalloc.Tpo -c -o .libs/dlmalloc.o dlmalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/dlmalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-counters.lo -MD -MP -MF .deps/mono-counters.Tpo -c -o .libs/mono-counters.o mono-counters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-counters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl.lo -MD -MP -MF .deps/mono-dl.Tpo -c -o .libs/mono-dl.o mono-dl.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-windows.lo -MD -MP -MF .deps/mono-dl-windows.Tpo -c -o .libs/mono-dl-windows.o mono-dl-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-windows.lo -MD -MP -MF .deps/mono-dl-windows.Tpo -c -o mono-dl-windows.o mono-dl-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-windows.lo -MD -MP -MF .deps/mono-dl-windows.Tpo -c -o mono-dl-windows.o mono-dl-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-windows.lo -MD -MP -MF .deps/mono-dl-windows.Tpo -c -o mono-dl-windows.o mono-dl-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-md5.lo -MD -MP -MF .deps/mono-md5.Tpo -c -o mono-md5.o mono-md5.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-md5.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-sha1.lo -MD -MP -MF .deps/mono-sha1.Tpo -c -o mono-sha1.o mono-sha1.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-md5.lo -MD -MP -MF .deps/mono-md5.Tpo -c -o mono-md5.o mono-md5.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-md5.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-sha1.lo -MD -MP -MF .deps/mono-sha1.Tpo -c -o mono-sha1.o mono-sha1.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-md5.lo -MD -MP -MF .deps/mono-md5.Tpo -c -o mono-md5.o mono-md5.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-md5.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-sha1.lo -MD -MP -MF .deps/mono-sha1.Tpo -c -o mono-sha1.o mono-sha1.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-darwin.lo -MD -MP -MF .deps/mono-dl-darwin.Tpo -c -o .libs/mono-dl-darwin.o mono-dl-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-darwin.lo -MD -MP -MF .deps/mono-dl-darwin.Tpo -c -o .libs/mono-dl-darwin.o mono-dl-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-darwin.lo -MD -MP -MF .deps/mono-dl-darwin.Tpo -c -o .libs/mono-dl-darwin.o mono-dl-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl.lo -MD -MP -MF .deps/mono-dl.Tpo -c -o mono-dl.o mono-dl.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl.lo -MD -MP -MF .deps/mono-dl.Tpo -c -o mono-dl.o mono-dl.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl.lo -MD -MP -MF .deps/mono-dl.Tpo -c -o mono-dl.o mono-dl.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-logger.lo -MD -MP -MF .deps/mono-logger.Tpo -c -o mono-logger.o mono-logger.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-logger.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-logger.lo -MD -MP -MF .deps/mono-logger.Tpo -c -o mono-logger.o mono-logger.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-logger.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-counters.lo -MD -MP -MF .deps/mono-counters.Tpo -c -o mono-counters.o mono-counters.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-counters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-logger.lo -MD -MP -MF .deps/mono-logger.Tpo -c -o mono-logger.o mono-logger.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-logger.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-counters.lo -MD -MP -MF .deps/mono-counters.Tpo -c -o mono-counters.o mono-counters.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-counters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-posix.lo -MD -MP -MF .deps/mono-dl-posix.Tpo -c -o .libs/mono-dl-posix.o mono-dl-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-posix.lo -MD -MP -MF .deps/mono-dl-posix.Tpo -c -o .libs/mono-dl-posix.o mono-dl-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-darwin.lo -MD -MP -MF .deps/mono-dl-darwin.Tpo -c -o mono-dl-darwin.o mono-dl-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-internal-hash.lo -MD -MP -MF .deps/mono-internal-hash.Tpo -c -o .libs/mono-internal-hash.o mono-internal-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-internal-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-counters.lo -MD -MP -MF .deps/mono-counters.Tpo -c -o mono-counters.o mono-counters.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-counters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-darwin.lo -MD -MP -MF .deps/mono-dl-darwin.Tpo -c -o mono-dl-darwin.o mono-dl-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-internal-hash.lo -MD -MP -MF .deps/mono-internal-hash.Tpo -c -o .libs/mono-internal-hash.o mono-internal-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-internal-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-posix.lo -MD -MP -MF .deps/mono-dl-posix.Tpo -c -o .libs/mono-dl-posix.o mono-dl-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-darwin.lo -MD -MP -MF .deps/mono-dl-darwin.Tpo -c -o mono-dl-darwin.o mono-dl-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-internal-hash.lo -MD -MP -MF .deps/mono-internal-hash.Tpo -c -o .libs/mono-internal-hash.o mono-internal-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-internal-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-codeman.lo -MD -MP -MF .deps/mono-codeman.Tpo -c -o mono-codeman.o mono-codeman.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-codeman.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-codeman.lo -MD -MP -MF .deps/mono-codeman.Tpo -c -o mono-codeman.o mono-codeman.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-codeman.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-posix.lo -MD -MP -MF .deps/mono-dl-posix.Tpo -c -o mono-dl-posix.o mono-dl-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-codeman.lo -MD -MP -MF .deps/mono-codeman.Tpo -c -o mono-codeman.o mono-codeman.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-codeman.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-posix.lo -MD -MP -MF .deps/mono-dl-posix.Tpo -c -o mono-dl-posix.o mono-dl-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-internal-hash.lo -MD -MP -MF .deps/mono-internal-hash.Tpo -c -o mono-internal-hash.o mono-internal-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-internal-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-dl-posix.lo -MD -MP -MF .deps/mono-dl-posix.Tpo -c -o mono-dl-posix.o mono-dl-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-dl-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-internal-hash.lo -MD -MP -MF .deps/mono-internal-hash.Tpo -c -o mono-internal-hash.o mono-internal-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-internal-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-internal-hash.lo -MD -MP -MF .deps/mono-internal-hash.Tpo -c -o mono-internal-hash.o mono-internal-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-internal-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-io-portability.lo -MD -MP -MF .deps/mono-io-portability.Tpo -c -o .libs/mono-io-portability.o mono-io-portability.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-io-portability.lo -MD -MP -MF .deps/mono-io-portability.Tpo -c -o .libs/mono-io-portability.o mono-io-portability.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT monobitset.lo -MD -MP -MF .deps/monobitset.Tpo -c -o .libs/monobitset.o monobitset.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/monobitset.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT monobitset.lo -MD -MP -MF .deps/monobitset.Tpo -c -o .libs/monobitset.o monobitset.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/monobitset.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-io-portability.lo -MD -MP -MF .deps/mono-io-portability.Tpo -c -o .libs/mono-io-portability.o mono-io-portability.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT monobitset.lo -MD -MP -MF .deps/monobitset.Tpo -c -o .libs/monobitset.o monobitset.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/monobitset.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-filemap.lo -MD -MP -MF .deps/mono-filemap.Tpo -c -o .libs/mono-filemap.o mono-filemap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-filemap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-filemap.lo -MD -MP -MF .deps/mono-filemap.Tpo -c -o .libs/mono-filemap.o mono-filemap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-filemap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-filemap.lo -MD -MP -MF .deps/mono-filemap.Tpo -c -o .libs/mono-filemap.o mono-filemap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-filemap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mmap.lo -MD -MP -MF .deps/mono-mmap.Tpo -c -o .libs/mono-mmap.o mono-mmap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mmap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mmap.lo -MD -MP -MF .deps/mono-mmap.Tpo -c -o .libs/mono-mmap.o mono-mmap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mmap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mmap.lo -MD -MP -MF .deps/mono-mmap.Tpo -c -o .libs/mono-mmap.o mono-mmap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mmap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mutex.lo -MD -MP -MF .deps/mono-mutex.Tpo -c -o .libs/mono-mutex.o mono-mutex.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mutex.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mutex.lo -MD -MP -MF .deps/mono-mutex.Tpo -c -o .libs/mono-mutex.o mono-mutex.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mutex.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-filemap.lo -MD -MP -MF .deps/mono-filemap.Tpo -c -o mono-filemap.o mono-filemap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-filemap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-filemap.lo -MD -MP -MF .deps/mono-filemap.Tpo -c -o mono-filemap.o mono-filemap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-filemap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mutex.lo -MD -MP -MF .deps/mono-mutex.Tpo -c -o .libs/mono-mutex.o mono-mutex.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mutex.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-filemap.lo -MD -MP -MF .deps/mono-filemap.Tpo -c -o mono-filemap.o mono-filemap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-filemap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-networkinterfaces.lo -MD -MP -MF .deps/mono-networkinterfaces.Tpo -c -o .libs/mono-networkinterfaces.o mono-networkinterfaces.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-networkinterfaces.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-networkinterfaces.lo -MD -MP -MF .deps/mono-networkinterfaces.Tpo -c -o .libs/mono-networkinterfaces.o mono-networkinterfaces.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-networkinterfaces.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-networkinterfaces.lo -MD -MP -MF .deps/mono-networkinterfaces.Tpo -c -o .libs/mono-networkinterfaces.o mono-networkinterfaces.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-networkinterfaces.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-proclib.lo -MD -MP -MF .deps/mono-proclib.Tpo -c -o .libs/mono-proclib.o mono-proclib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-proclib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-proclib.lo -MD -MP -MF .deps/mono-proclib.Tpo -c -o .libs/mono-proclib.o mono-proclib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-proclib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mutex.lo -MD -MP -MF .deps/mono-mutex.Tpo -c -o mono-mutex.o mono-mutex.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mutex.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-proclib.lo -MD -MP -MF .deps/mono-proclib.Tpo -c -o .libs/mono-proclib.o mono-proclib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-proclib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mutex.lo -MD -MP -MF .deps/mono-mutex.Tpo -c -o mono-mutex.o mono-mutex.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mutex.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mmap.lo -MD -MP -MF .deps/mono-mmap.Tpo -c -o mono-mmap.o mono-mmap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mmap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mmap.lo -MD -MP -MF .deps/mono-mmap.Tpo -c -o mono-mmap.o mono-mmap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mmap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mutex.lo -MD -MP -MF .deps/mono-mutex.Tpo -c -o mono-mutex.o mono-mutex.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mutex.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-mmap.lo -MD -MP -MF .deps/mono-mmap.Tpo -c -o mono-mmap.o mono-mmap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-mmap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-networkinterfaces.lo -MD -MP -MF .deps/mono-networkinterfaces.Tpo -c -o mono-networkinterfaces.o mono-networkinterfaces.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-networkinterfaces.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-io-portability.lo -MD -MP -MF .deps/mono-io-portability.Tpo -c -o mono-io-portability.o mono-io-portability.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-networkinterfaces.lo -MD -MP -MF .deps/mono-networkinterfaces.Tpo -c -o mono-networkinterfaces.o mono-networkinterfaces.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-networkinterfaces.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-publib.lo -MD -MP -MF .deps/mono-publib.Tpo -c -o .libs/mono-publib.o mono-publib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-publib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-io-portability.lo -MD -MP -MF .deps/mono-io-portability.Tpo -c -o mono-io-portability.o mono-io-portability.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-publib.lo -MD -MP -MF .deps/mono-publib.Tpo -c -o .libs/mono-publib.o mono-publib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-publib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-networkinterfaces.lo -MD -MP -MF .deps/mono-networkinterfaces.Tpo -c -o mono-networkinterfaces.o mono-networkinterfaces.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-networkinterfaces.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-io-portability.lo -MD -MP -MF .deps/mono-io-portability.Tpo -c -o mono-io-portability.o mono-io-portability.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-publib.lo -MD -MP -MF .deps/mono-publib.Tpo -c -o .libs/mono-publib.o mono-publib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-publib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-publib.lo -MD -MP -MF .deps/mono-publib.Tpo -c -o mono-publib.o mono-publib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-publib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-publib.lo -MD -MP -MF .deps/mono-publib.Tpo -c -o mono-publib.o mono-publib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-publib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-publib.lo -MD -MP -MF .deps/mono-publib.Tpo -c -o mono-publib.o mono-publib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-publib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-time.lo -MD -MP -MF .deps/mono-time.Tpo -c -o .libs/mono-time.o mono-time.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-time.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-time.lo -MD -MP -MF .deps/mono-time.Tpo -c -o .libs/mono-time.o mono-time.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-time.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-time.lo -MD -MP -MF .deps/mono-time.Tpo -c -o .libs/mono-time.o mono-time.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-time.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strtod.lo -MD -MP -MF .deps/strtod.Tpo -c -o .libs/strtod.o strtod.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strtod.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strtod.lo -MD -MP -MF .deps/strtod.Tpo -c -o .libs/strtod.o strtod.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strtod.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strtod.lo -MD -MP -MF .deps/strtod.Tpo -c -o .libs/strtod.o strtod.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strtod.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT monobitset.lo -MD -MP -MF .deps/monobitset.Tpo -c -o monobitset.o monobitset.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/monobitset.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT monobitset.lo -MD -MP -MF .deps/monobitset.Tpo -c -o monobitset.o monobitset.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/monobitset.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT monobitset.lo -MD -MP -MF .deps/monobitset.Tpo -c -o monobitset.o monobitset.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/monobitset.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strenc.lo -MD -MP -MF .deps/strenc.Tpo -c -o .libs/strenc.o strenc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strenc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strenc.lo -MD -MP -MF .deps/strenc.Tpo -c -o .libs/strenc.o strenc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strenc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strenc.lo -MD -MP -MF .deps/strenc.Tpo -c -o .libs/strenc.o strenc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strenc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-time.lo -MD -MP -MF .deps/mono-time.Tpo -c -o mono-time.o mono-time.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-time.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-time.lo -MD -MP -MF .deps/mono-time.Tpo -c -o mono-time.o mono-time.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-time.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-time.lo -MD -MP -MF .deps/mono-time.Tpo -c -o mono-time.o mono-time.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-time.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-uri.lo -MD -MP -MF .deps/mono-uri.Tpo -c -o .libs/mono-uri.o mono-uri.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-uri.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-uri.lo -MD -MP -MF .deps/mono-uri.Tpo -c -o .libs/mono-uri.o mono-uri.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-uri.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-poll.lo -MD -MP -MF .deps/mono-poll.Tpo -c -o .libs/mono-poll.o mono-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-poll.lo -MD -MP -MF .deps/mono-poll.Tpo -c -o .libs/mono-poll.o mono-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-uri.lo -MD -MP -MF .deps/mono-uri.Tpo -c -o .libs/mono-uri.o mono-uri.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-uri.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strenc.lo -MD -MP -MF .deps/strenc.Tpo -c -o strenc.o strenc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strenc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-poll.lo -MD -MP -MF .deps/mono-poll.Tpo -c -o .libs/mono-poll.o mono-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strenc.lo -MD -MP -MF .deps/strenc.Tpo -c -o strenc.o strenc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strenc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strenc.lo -MD -MP -MF .deps/strenc.Tpo -c -o strenc.o strenc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strenc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-uri.lo -MD -MP -MF .deps/mono-uri.Tpo -c -o mono-uri.o mono-uri.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-uri.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-uri.lo -MD -MP -MF .deps/mono-uri.Tpo -c -o mono-uri.o mono-uri.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-uri.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-poll.lo -MD -MP -MF .deps/mono-poll.Tpo -c -o mono-poll.o mono-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-poll.lo -MD -MP -MF .deps/mono-poll.Tpo -c -o mono-poll.o mono-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-uri.lo -MD -MP -MF .deps/mono-uri.Tpo -c -o mono-uri.o mono-uri.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-uri.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-path.lo -MD -MP -MF .deps/mono-path.Tpo -c -o .libs/mono-path.o mono-path.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-path.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-proclib.lo -MD -MP -MF .deps/mono-proclib.Tpo -c -o mono-proclib.o mono-proclib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-proclib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-poll.lo -MD -MP -MF .deps/mono-poll.Tpo -c -o mono-poll.o mono-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-path.lo -MD -MP -MF .deps/mono-path.Tpo -c -o .libs/mono-path.o mono-path.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-path.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-proclib.lo -MD -MP -MF .deps/mono-proclib.Tpo -c -o mono-proclib.o mono-proclib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-proclib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-path.lo -MD -MP -MF .deps/mono-path.Tpo -c -o .libs/mono-path.o mono-path.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-path.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-proclib.lo -MD -MP -MF .deps/mono-proclib.Tpo -c -o mono-proclib.o mono-proclib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-proclib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-semaphore.lo -MD -MP -MF .deps/mono-semaphore.Tpo -c -o .libs/mono-semaphore.o mono-semaphore.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-semaphore.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-semaphore.lo -MD -MP -MF .deps/mono-semaphore.Tpo -c -o .libs/mono-semaphore.o mono-semaphore.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-semaphore.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-stdlib.lo -MD -MP -MF .deps/mono-stdlib.Tpo -c -o .libs/mono-stdlib.o mono-stdlib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-stdlib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-property-hash.lo -MD -MP -MF .deps/mono-property-hash.Tpo -c -o .libs/mono-property-hash.o mono-property-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-property-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-stdlib.lo -MD -MP -MF .deps/mono-stdlib.Tpo -c -o .libs/mono-stdlib.o mono-stdlib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-stdlib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-semaphore.lo -MD -MP -MF .deps/mono-semaphore.Tpo -c -o .libs/mono-semaphore.o mono-semaphore.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-semaphore.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-property-hash.lo -MD -MP -MF .deps/mono-property-hash.Tpo -c -o .libs/mono-property-hash.o mono-property-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-property-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-path.lo -MD -MP -MF .deps/mono-path.Tpo -c -o mono-path.o mono-path.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-path.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-stdlib.lo -MD -MP -MF .deps/mono-stdlib.Tpo -c -o .libs/mono-stdlib.o mono-stdlib.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-stdlib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-value-hash.lo -MD -MP -MF .deps/mono-value-hash.Tpo -c -o .libs/mono-value-hash.o mono-value-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-value-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-path.lo -MD -MP -MF .deps/mono-path.Tpo -c -o mono-path.o mono-path.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-path.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-property-hash.lo -MD -MP -MF .deps/mono-property-hash.Tpo -c -o .libs/mono-property-hash.o mono-property-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-property-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-value-hash.lo -MD -MP -MF .deps/mono-value-hash.Tpo -c -o .libs/mono-value-hash.o mono-value-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-value-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-value-hash.lo -MD -MP -MF .deps/mono-value-hash.Tpo -c -o .libs/mono-value-hash.o mono-value-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-value-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-path.lo -MD -MP -MF .deps/mono-path.Tpo -c -o mono-path.o mono-path.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-path.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-stdlib.lo -MD -MP -MF .deps/mono-stdlib.Tpo -c -o mono-stdlib.o mono-stdlib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-stdlib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-stdlib.lo -MD -MP -MF .deps/mono-stdlib.Tpo -c -o mono-stdlib.o mono-stdlib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-stdlib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-property-hash.lo -MD -MP -MF .deps/mono-property-hash.Tpo -c -o mono-property-hash.o mono-property-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-property-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-property-hash.lo -MD -MP -MF .deps/mono-property-hash.Tpo -c -o mono-property-hash.o mono-property-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-property-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-stdlib.lo -MD -MP -MF .deps/mono-stdlib.Tpo -c -o mono-stdlib.o mono-stdlib.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-stdlib.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-semaphore.lo -MD -MP -MF .deps/mono-semaphore.Tpo -c -o mono-semaphore.o mono-semaphore.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-semaphore.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-property-hash.lo -MD -MP -MF .deps/mono-property-hash.Tpo -c -o mono-property-hash.o mono-property-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-property-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-semaphore.lo -MD -MP -MF .deps/mono-semaphore.Tpo -c -o mono-semaphore.o mono-semaphore.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-semaphore.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-semaphore.lo -MD -MP -MF .deps/mono-semaphore.Tpo -c -o mono-semaphore.o mono-semaphore.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-semaphore.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-error.lo -MD -MP -MF .deps/mono-error.Tpo -c -o .libs/mono-error.o mono-error.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-error.lo -MD -MP -MF .deps/mono-error.Tpo -c -o .libs/mono-error.o mono-error.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support.lo -MD -MP -MF .deps/mach-support.Tpo -c -o .libs/mach-support.o mach-support.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support.lo -MD -MP -MF .deps/mach-support.Tpo -c -o .libs/mach-support.o mach-support.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-value-hash.lo -MD -MP -MF .deps/mono-value-hash.Tpo -c -o mono-value-hash.o mono-value-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-value-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-error.lo -MD -MP -MF .deps/mono-error.Tpo -c -o .libs/mono-error.o mono-error.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-context.lo -MD -MP -MF .deps/mono-context.Tpo -c -o .libs/mono-context.o mono-context.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-value-hash.lo -MD -MP -MF .deps/mono-value-hash.Tpo -c -o mono-value-hash.o mono-value-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-value-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support.lo -MD -MP -MF .deps/mach-support.Tpo -c -o .libs/mach-support.o mach-support.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-context.lo -MD -MP -MF .deps/mono-context.Tpo -c -o .libs/mono-context.o mono-context.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-value-hash.lo -MD -MP -MF .deps/mono-value-hash.Tpo -c -o mono-value-hash.o mono-value-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-value-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-context.lo -MD -MP -MF .deps/mono-context.Tpo -c -o .libs/mono-context.o mono-context.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT hazard-pointer.lo -MD -MP -MF .deps/hazard-pointer.Tpo -c -o .libs/hazard-pointer.o hazard-pointer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/hazard-pointer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT hazard-pointer.lo -MD -MP -MF .deps/hazard-pointer.Tpo -c -o .libs/hazard-pointer.o hazard-pointer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/hazard-pointer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT hazard-pointer.lo -MD -MP -MF .deps/hazard-pointer.Tpo -c -o .libs/hazard-pointer.o hazard-pointer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/hazard-pointer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-context.lo -MD -MP -MF .deps/mono-context.Tpo -c -o mono-context.o mono-context.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-context.lo -MD -MP -MF .deps/mono-context.Tpo -c -o mono-context.o mono-context.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support.lo -MD -MP -MF .deps/mach-support.Tpo -c -o mach-support.o mach-support.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-context.lo -MD -MP -MF .deps/mono-context.Tpo -c -o mono-context.o mono-context.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support.lo -MD -MP -MF .deps/mach-support.Tpo -c -o mach-support.o mach-support.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support.lo -MD -MP -MF .deps/mach-support.Tpo -c -o mach-support.o mach-support.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dlmalloc.lo -MD -MP -MF .deps/dlmalloc.Tpo -c -o dlmalloc.o dlmalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/dlmalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dlmalloc.lo -MD -MP -MF .deps/dlmalloc.Tpo -c -o dlmalloc.o dlmalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/dlmalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dlmalloc.lo -MD -MP -MF .deps/dlmalloc.Tpo -c -o dlmalloc.o dlmalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/dlmalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-queue.lo -MD -MP -MF .deps/lock-free-queue.Tpo -c -o .libs/lock-free-queue.o lock-free-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-queue.lo -MD -MP -MF .deps/lock-free-queue.Tpo -c -o .libs/lock-free-queue.o lock-free-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-alloc.lo -MD -MP -MF .deps/lock-free-alloc.Tpo -c -o .libs/lock-free-alloc.o lock-free-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-alloc.lo -MD -MP -MF .deps/lock-free-alloc.Tpo -c -o .libs/lock-free-alloc.o lock-free-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-queue.lo -MD -MP -MF .deps/lock-free-queue.Tpo -c -o .libs/lock-free-queue.o lock-free-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-array-queue.lo -MD -MP -MF .deps/lock-free-array-queue.Tpo -c -o .libs/lock-free-array-queue.o lock-free-array-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-array-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-array-queue.lo -MD -MP -MF .deps/lock-free-array-queue.Tpo -c -o .libs/lock-free-array-queue.o lock-free-array-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-array-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-alloc.lo -MD -MP -MF .deps/lock-free-alloc.Tpo -c -o .libs/lock-free-alloc.o lock-free-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-array-queue.lo -MD -MP -MF .deps/lock-free-array-queue.Tpo -c -o .libs/lock-free-array-queue.o lock-free-array-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-array-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-linked-list-set.lo -MD -MP -MF .deps/mono-linked-list-set.Tpo -c -o .libs/mono-linked-list-set.o mono-linked-list-set.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-linked-list-set.lo -MD -MP -MF .deps/mono-linked-list-set.Tpo -c -o .libs/mono-linked-list-set.o mono-linked-list-set.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-linked-list-set.lo -MD -MP -MF .deps/mono-linked-list-set.Tpo -c -o .libs/mono-linked-list-set.o mono-linked-list-set.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-queue.lo -MD -MP -MF .deps/lock-free-queue.Tpo -c -o lock-free-queue.o lock-free-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-queue.lo -MD -MP -MF .deps/lock-free-queue.Tpo -c -o lock-free-queue.o lock-free-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-array-queue.lo -MD -MP -MF .deps/lock-free-array-queue.Tpo -c -o lock-free-array-queue.o lock-free-array-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-array-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-queue.lo -MD -MP -MF .deps/lock-free-queue.Tpo -c -o lock-free-queue.o lock-free-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-array-queue.lo -MD -MP -MF .deps/lock-free-array-queue.Tpo -c -o lock-free-array-queue.o lock-free-array-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-array-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-array-queue.lo -MD -MP -MF .deps/lock-free-array-queue.Tpo -c -o lock-free-array-queue.o lock-free-array-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-array-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-linked-list-set.lo -MD -MP -MF .deps/mono-linked-list-set.Tpo -c -o mono-linked-list-set.o mono-linked-list-set.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-linked-list-set.lo -MD -MP -MF .deps/mono-linked-list-set.Tpo -c -o mono-linked-list-set.o mono-linked-list-set.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strtod.lo -MD -MP -MF .deps/strtod.Tpo -c -o strtod.o strtod.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strtod.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strtod.lo -MD -MP -MF .deps/strtod.Tpo -c -o strtod.o strtod.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strtod.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-linked-list-set.lo -MD -MP -MF .deps/mono-linked-list-set.Tpo -c -o mono-linked-list-set.o mono-linked-list-set.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT strtod.lo -MD -MP -MF .deps/strtod.Tpo -c -o strtod.o strtod.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/strtod.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT hazard-pointer.lo -MD -MP -MF .deps/hazard-pointer.Tpo -c -o hazard-pointer.o hazard-pointer.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/hazard-pointer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT hazard-pointer.lo -MD -MP -MF .deps/hazard-pointer.Tpo -c -o hazard-pointer.o hazard-pointer.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/hazard-pointer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT hazard-pointer.lo -MD -MP -MF .deps/hazard-pointer.Tpo -c -o hazard-pointer.o hazard-pointer.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/hazard-pointer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-alloc.lo -MD -MP -MF .deps/lock-free-alloc.Tpo -c -o lock-free-alloc.o lock-free-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-alloc.lo -MD -MP -MF .deps/lock-free-alloc.Tpo -c -o lock-free-alloc.o lock-free-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads.lo -MD -MP -MF .deps/mono-threads.Tpo -c -o .libs/mono-threads.o mono-threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads.lo -MD -MP -MF .deps/mono-threads.Tpo -c -o .libs/mono-threads.o mono-threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT lock-free-alloc.lo -MD -MP -MF .deps/lock-free-alloc.Tpo -c -o lock-free-alloc.o lock-free-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/lock-free-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-state-machine.lo -MD -MP -MF .deps/mono-threads-state-machine.Tpo -c -o .libs/mono-threads-state-machine.o mono-threads-state-machine.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-state-machine.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads.lo -MD -MP -MF .deps/mono-threads.Tpo -c -o .libs/mono-threads.o mono-threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-state-machine.lo -MD -MP -MF .deps/mono-threads-state-machine.Tpo -c -o .libs/mono-threads-state-machine.o mono-threads-state-machine.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-state-machine.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-state-machine.lo -MD -MP -MF .deps/mono-threads-state-machine.Tpo -c -o .libs/mono-threads-state-machine.o mono-threads-state-machine.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-state-machine.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-posix.lo -MD -MP -MF .deps/mono-threads-posix.Tpo -c -o .libs/mono-threads-posix.o mono-threads-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-posix.lo -MD -MP -MF .deps/mono-threads-posix.Tpo -c -o .libs/mono-threads-posix.o mono-threads-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-posix.lo -MD -MP -MF .deps/mono-threads-posix.Tpo -c -o .libs/mono-threads-posix.o mono-threads-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-error.lo -MD -MP -MF .deps/mono-error.Tpo -c -o mono-error.o mono-error.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-error.lo -MD -MP -MF .deps/mono-error.Tpo -c -o mono-error.o mono-error.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-posix.lo -MD -MP -MF .deps/mono-threads-posix.Tpo -c -o mono-threads-posix.o mono-threads-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-error.lo -MD -MP -MF .deps/mono-error.Tpo -c -o mono-error.o mono-error.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach.lo -MD -MP -MF .deps/mono-threads-mach.Tpo -c -o .libs/mono-threads-mach.o mono-threads-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-posix.lo -MD -MP -MF .deps/mono-threads-posix.Tpo -c -o mono-threads-posix.o mono-threads-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach.lo -MD -MP -MF .deps/mono-threads-mach.Tpo -c -o .libs/mono-threads-mach.o mono-threads-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-posix.lo -MD -MP -MF .deps/mono-threads-posix.Tpo -c -o mono-threads-posix.o mono-threads-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach-helper.lo -MD -MP -MF .deps/mono-threads-mach-helper.Tpo -c -o .libs/mono-threads-mach-helper.o mono-threads-mach-helper.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach-helper.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach.lo -MD -MP -MF .deps/mono-threads-mach.Tpo -c -o .libs/mono-threads-mach.o mono-threads-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach-helper.lo -MD -MP -MF .deps/mono-threads-mach-helper.Tpo -c -o .libs/mono-threads-mach-helper.o mono-threads-mach-helper.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach-helper.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach-helper.lo -MD -MP -MF .deps/mono-threads-mach-helper.Tpo -c -o .libs/mono-threads-mach-helper.o mono-threads-mach-helper.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach-helper.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach-helper.lo -MD -MP -MF .deps/mono-threads-mach-helper.Tpo -c -o mono-threads-mach-helper.o mono-threads-mach-helper.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach-helper.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach-helper.lo -MD -MP -MF .deps/mono-threads-mach-helper.Tpo -c -o mono-threads-mach-helper.o mono-threads-mach-helper.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach-helper.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach-helper.lo -MD -MP -MF .deps/mono-threads-mach-helper.Tpo -c -o mono-threads-mach-helper.o mono-threads-mach-helper.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach-helper.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach.lo -MD -MP -MF .deps/mono-threads-mach.Tpo -c -o mono-threads-mach.o mono-threads-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach.lo -MD -MP -MF .deps/mono-threads-mach.Tpo -c -o mono-threads-mach.o mono-threads-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-mach.lo -MD -MP -MF .deps/mono-threads-mach.Tpo -c -o mono-threads-mach.o mono-threads-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-windows.lo -MD -MP -MF .deps/mono-threads-windows.Tpo -c -o .libs/mono-threads-windows.o mono-threads-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-state-machine.lo -MD -MP -MF .deps/mono-threads-state-machine.Tpo -c -o mono-threads-state-machine.o mono-threads-state-machine.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-state-machine.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-windows.lo -MD -MP -MF .deps/mono-threads-windows.Tpo -c -o .libs/mono-threads-windows.o mono-threads-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-state-machine.lo -MD -MP -MF .deps/mono-threads-state-machine.Tpo -c -o mono-threads-state-machine.o mono-threads-state-machine.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-state-machine.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-linux.lo -MD -MP -MF .deps/mono-threads-linux.Tpo -c -o .libs/mono-threads-linux.o mono-threads-linux.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-linux.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-windows.lo -MD -MP -MF .deps/mono-threads-windows.Tpo -c -o .libs/mono-threads-windows.o mono-threads-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-linux.lo -MD -MP -MF .deps/mono-threads-linux.Tpo -c -o .libs/mono-threads-linux.o mono-threads-linux.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-linux.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-state-machine.lo -MD -MP -MF .deps/mono-threads-state-machine.Tpo -c -o mono-threads-state-machine.o mono-threads-state-machine.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-state-machine.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-linux.lo -MD -MP -MF .deps/mono-threads-linux.Tpo -c -o .libs/mono-threads-linux.o mono-threads-linux.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-linux.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads.lo -MD -MP -MF .deps/mono-threads.Tpo -c -o mono-threads.o mono-threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads.lo -MD -MP -MF .deps/mono-threads.Tpo -c -o mono-threads.o mono-threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads.lo -MD -MP -MF .deps/mono-threads.Tpo -c -o mono-threads.o mono-threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-linux.lo -MD -MP -MF .deps/mono-threads-linux.Tpo -c -o mono-threads-linux.o mono-threads-linux.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-linux.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-linux.lo -MD -MP -MF .deps/mono-threads-linux.Tpo -c -o mono-threads-linux.o mono-threads-linux.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-linux.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-linux.lo -MD -MP -MF .deps/mono-threads-linux.Tpo -c -o mono-threads-linux.o mono-threads-linux.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-linux.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-windows.lo -MD -MP -MF .deps/mono-threads-windows.Tpo -c -o mono-threads-windows.o mono-threads-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-windows.lo -MD -MP -MF .deps/mono-threads-windows.Tpo -c -o mono-threads-windows.o mono-threads-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-windows.lo -MD -MP -MF .deps/mono-threads-windows.Tpo -c -o mono-threads-windows.o mono-threads-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-freebsd.lo -MD -MP -MF .deps/mono-threads-freebsd.Tpo -c -o .libs/mono-threads-freebsd.o mono-threads-freebsd.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-freebsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-freebsd.lo -MD -MP -MF .deps/mono-threads-freebsd.Tpo -c -o .libs/mono-threads-freebsd.o mono-threads-freebsd.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-freebsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-freebsd.lo -MD -MP -MF .deps/mono-threads-freebsd.Tpo -c -o .libs/mono-threads-freebsd.o mono-threads-freebsd.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-freebsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-openbsd.lo -MD -MP -MF .deps/mono-threads-openbsd.Tpo -c -o .libs/mono-threads-openbsd.o mono-threads-openbsd.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-openbsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-openbsd.lo -MD -MP -MF .deps/mono-threads-openbsd.Tpo -c -o .libs/mono-threads-openbsd.o mono-threads-openbsd.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-openbsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-openbsd.lo -MD -MP -MF .deps/mono-threads-openbsd.Tpo -c -o .libs/mono-threads-openbsd.o mono-threads-openbsd.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-openbsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-freebsd.lo -MD -MP -MF .deps/mono-threads-freebsd.Tpo -c -o mono-threads-freebsd.o mono-threads-freebsd.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-freebsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-android.lo -MD -MP -MF .deps/mono-threads-android.Tpo -c -o .libs/mono-threads-android.o mono-threads-android.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-android.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-freebsd.lo -MD -MP -MF .deps/mono-threads-freebsd.Tpo -c -o mono-threads-freebsd.o mono-threads-freebsd.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-freebsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-android.lo -MD -MP -MF .deps/mono-threads-android.Tpo -c -o .libs/mono-threads-android.o mono-threads-android.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-android.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-freebsd.lo -MD -MP -MF .deps/mono-threads-freebsd.Tpo -c -o mono-threads-freebsd.o mono-threads-freebsd.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-freebsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-openbsd.lo -MD -MP -MF .deps/mono-threads-openbsd.Tpo -c -o mono-threads-openbsd.o mono-threads-openbsd.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-openbsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-android.lo -MD -MP -MF .deps/mono-threads-android.Tpo -c -o .libs/mono-threads-android.o mono-threads-android.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-android.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-openbsd.lo -MD -MP -MF .deps/mono-threads-openbsd.Tpo -c -o mono-threads-openbsd.o mono-threads-openbsd.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-openbsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-openbsd.lo -MD -MP -MF .deps/mono-threads-openbsd.Tpo -c -o mono-threads-openbsd.o mono-threads-openbsd.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-openbsd.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-android.lo -MD -MP -MF .deps/mono-threads-android.Tpo -c -o mono-threads-android.o mono-threads-android.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-android.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-android.lo -MD -MP -MF .deps/mono-threads-android.Tpo -c -o mono-threads-android.o mono-threads-android.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-android.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-coop.lo -MD -MP -MF .deps/mono-threads-coop.Tpo -c -o .libs/mono-threads-coop.o mono-threads-coop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-coop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-android.lo -MD -MP -MF .deps/mono-threads-android.Tpo -c -o mono-threads-android.o mono-threads-android.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-android.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-coop.lo -MD -MP -MF .deps/mono-threads-coop.Tpo -c -o .libs/mono-threads-coop.o mono-threads-coop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-coop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-tls.lo -MD -MP -MF .deps/mono-tls.Tpo -c -o .libs/mono-tls.o mono-tls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-tls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-tls.lo -MD -MP -MF .deps/mono-tls.Tpo -c -o .libs/mono-tls.o mono-tls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-tls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-coop.lo -MD -MP -MF .deps/mono-threads-coop.Tpo -c -o .libs/mono-threads-coop.o mono-threads-coop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-coop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-tls.lo -MD -MP -MF .deps/mono-tls.Tpo -c -o .libs/mono-tls.o mono-tls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-tls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT atomic.lo -MD -MP -MF .deps/atomic.Tpo -c -o .libs/atomic.o atomic.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/atomic.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT atomic.lo -MD -MP -MF .deps/atomic.Tpo -c -o .libs/atomic.o atomic.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/atomic.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT atomic.lo -MD -MP -MF .deps/atomic.Tpo -c -o .libs/atomic.o atomic.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/atomic.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap.lo -MD -MP -MF .deps/mono-hwcap.Tpo -c -o .libs/mono-hwcap.o mono-hwcap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap.lo -MD -MP -MF .deps/mono-hwcap.Tpo -c -o .libs/mono-hwcap.o mono-hwcap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-tls.lo -MD -MP -MF .deps/mono-tls.Tpo -c -o mono-tls.o mono-tls.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-tls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-tls.lo -MD -MP -MF .deps/mono-tls.Tpo -c -o mono-tls.o mono-tls.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-tls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT bsearch.lo -MD -MP -MF .deps/bsearch.Tpo -c -o .libs/bsearch.o bsearch.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/bsearch.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap.lo -MD -MP -MF .deps/mono-hwcap.Tpo -c -o .libs/mono-hwcap.o mono-hwcap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT bsearch.lo -MD -MP -MF .deps/bsearch.Tpo -c -o .libs/bsearch.o bsearch.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/bsearch.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-tls.lo -MD -MP -MF .deps/mono-tls.Tpo -c -o mono-tls.o mono-tls.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-tls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT atomic.lo -MD -MP -MF .deps/atomic.Tpo -c -o atomic.o atomic.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/atomic.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT bsearch.lo -MD -MP -MF .deps/bsearch.Tpo -c -o .libs/bsearch.o bsearch.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/bsearch.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-coop.lo -MD -MP -MF .deps/mono-threads-coop.Tpo -c -o mono-threads-coop.o mono-threads-coop.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-coop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT atomic.lo -MD -MP -MF .deps/atomic.Tpo -c -o atomic.o atomic.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/atomic.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-coop.lo -MD -MP -MF .deps/mono-threads-coop.Tpo -c -o mono-threads-coop.o mono-threads-coop.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-coop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT atomic.lo -MD -MP -MF .deps/atomic.Tpo -c -o atomic.o atomic.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/atomic.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-threads-coop.lo -MD -MP -MF .deps/mono-threads-coop.Tpo -c -o mono-threads-coop.o mono-threads-coop.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-threads-coop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap.lo -MD -MP -MF .deps/mono-hwcap.Tpo -c -o mono-hwcap.o mono-hwcap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap.lo -MD -MP -MF .deps/mono-hwcap.Tpo -c -o mono-hwcap.o mono-hwcap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT bsearch.lo -MD -MP -MF .deps/bsearch.Tpo -c -o bsearch.o bsearch.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/bsearch.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT bsearch.lo -MD -MP -MF .deps/bsearch.Tpo -c -o bsearch.o bsearch.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/bsearch.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap.lo -MD -MP -MF .deps/mono-hwcap.Tpo -c -o mono-hwcap.o mono-hwcap.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT bsearch.lo -MD -MP -MF .deps/bsearch.Tpo -c -o bsearch.o bsearch.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/bsearch.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-conc-hashtable.lo -MD -MP -MF .deps/mono-conc-hashtable.Tpo -c -o .libs/mono-conc-hashtable.o mono-conc-hashtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-conc-hashtable.lo -MD -MP -MF .deps/mono-conc-hashtable.Tpo -c -o .libs/mono-conc-hashtable.o mono-conc-hashtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-conc-hashtable.lo -MD -MP -MF .deps/mono-conc-hashtable.Tpo -c -o .libs/mono-conc-hashtable.o mono-conc-hashtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sha1.lo -MD -MP -MF .deps/sha1.Tpo -c -o .libs/sha1.o sha1.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sha1.lo -MD -MP -MF .deps/sha1.Tpo -c -o .libs/sha1.o sha1.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sha1.lo -MD -MP -MF .deps/sha1.Tpo -c -o .libs/sha1.o sha1.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT json.lo -MD -MP -MF .deps/json.Tpo -c -o .libs/json.o json.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/json.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT json.lo -MD -MP -MF .deps/json.Tpo -c -o .libs/json.o json.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/json.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking.lo -MD -MP -MF .deps/networking.Tpo -c -o .libs/networking.o networking.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking.lo -MD -MP -MF .deps/networking.Tpo -c -o .libs/networking.o networking.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT json.lo -MD -MP -MF .deps/json.Tpo -c -o .libs/json.o json.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/json.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-posix.lo -MD -MP -MF .deps/networking-posix.Tpo -c -o .libs/networking-posix.o networking-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking.lo -MD -MP -MF .deps/networking.Tpo -c -o .libs/networking.o networking.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-posix.lo -MD -MP -MF .deps/networking-posix.Tpo -c -o .libs/networking-posix.o networking-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-posix.lo -MD -MP -MF .deps/networking-posix.Tpo -c -o .libs/networking-posix.o networking-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-fallback.lo -MD -MP -MF .deps/networking-fallback.Tpo -c -o .libs/networking-fallback.o networking-fallback.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-fallback.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-fallback.lo -MD -MP -MF .deps/networking-fallback.Tpo -c -o .libs/networking-fallback.o networking-fallback.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-fallback.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-conc-hashtable.lo -MD -MP -MF .deps/mono-conc-hashtable.Tpo -c -o mono-conc-hashtable.o mono-conc-hashtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-conc-hashtable.lo -MD -MP -MF .deps/mono-conc-hashtable.Tpo -c -o mono-conc-hashtable.o mono-conc-hashtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-fallback.lo -MD -MP -MF .deps/networking-fallback.Tpo -c -o .libs/networking-fallback.o networking-fallback.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-fallback.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-missing.lo -MD -MP -MF .deps/networking-missing.Tpo -c -o .libs/networking-missing.o networking-missing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-missing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT json.lo -MD -MP -MF .deps/json.Tpo -c -o json.o json.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/json.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-conc-hashtable.lo -MD -MP -MF .deps/mono-conc-hashtable.Tpo -c -o mono-conc-hashtable.o mono-conc-hashtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-missing.lo -MD -MP -MF .deps/networking-missing.Tpo -c -o .libs/networking-missing.o networking-missing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-missing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking.lo -MD -MP -MF .deps/networking.Tpo -c -o networking.o networking.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT json.lo -MD -MP -MF .deps/json.Tpo -c -o json.o json.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/json.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking.lo -MD -MP -MF .deps/networking.Tpo -c -o networking.o networking.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-missing.lo -MD -MP -MF .deps/networking-missing.Tpo -c -o .libs/networking-missing.o networking-missing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-missing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT json.lo -MD -MP -MF .deps/json.Tpo -c -o json.o json.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/json.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking.lo -MD -MP -MF .deps/networking.Tpo -c -o networking.o networking.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-fallback.lo -MD -MP -MF .deps/networking-fallback.Tpo -c -o networking-fallback.o networking-fallback.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-fallback.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-fallback.lo -MD -MP -MF .deps/networking-fallback.Tpo -c -o networking-fallback.o networking-fallback.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-fallback.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-fallback.lo -MD -MP -MF .deps/networking-fallback.Tpo -c -o networking-fallback.o networking-fallback.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-fallback.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-missing.lo -MD -MP -MF .deps/networking-missing.Tpo -c -o networking-missing.o networking-missing.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-missing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-missing.lo -MD -MP -MF .deps/networking-missing.Tpo -c -o networking-missing.o networking-missing.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-missing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-posix.lo -MD -MP -MF .deps/networking-posix.Tpo -c -o networking-posix.o networking-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-missing.lo -MD -MP -MF .deps/networking-missing.Tpo -c -o networking-missing.o networking-missing.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-missing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-posix.lo -MD -MP -MF .deps/networking-posix.Tpo -c -o networking-posix.o networking-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-posix.lo -MD -MP -MF .deps/networking-posix.Tpo -c -o networking-posix.o networking-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-windows.lo -MD -MP -MF .deps/networking-windows.Tpo -c -o .libs/networking-windows.o networking-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-rand.lo -MD -MP -MF .deps/mono-rand.Tpo -c -o .libs/mono-rand.o mono-rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-windows.lo -MD -MP -MF .deps/networking-windows.Tpo -c -o .libs/networking-windows.o networking-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-rand.lo -MD -MP -MF .deps/mono-rand.Tpo -c -o .libs/mono-rand.o mono-rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support-amd64.lo -MD -MP -MF .deps/mach-support-amd64.Tpo -c -o .libs/mach-support-amd64.o mach-support-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-windows.lo -MD -MP -MF .deps/networking-windows.Tpo -c -o .libs/networking-windows.o networking-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-rand.lo -MD -MP -MF .deps/mono-rand.Tpo -c -o .libs/mono-rand.o mono-rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support-amd64.lo -MD -MP -MF .deps/mach-support-amd64.Tpo -c -o .libs/mach-support-amd64.o mach-support-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support-amd64.lo -MD -MP -MF .deps/mach-support-amd64.Tpo -c -o .libs/mach-support-amd64.o mach-support-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap-x86.lo -MD -MP -MF .deps/mono-hwcap-x86.Tpo -c -o .libs/mono-hwcap-x86.o mono-hwcap-x86.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap-x86.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap-x86.lo -MD -MP -MF .deps/mono-hwcap-x86.Tpo -c -o .libs/mono-hwcap-x86.o mono-hwcap-x86.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap-x86.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap-x86.lo -MD -MP -MF .deps/mono-hwcap-x86.Tpo -c -o .libs/mono-hwcap-x86.o mono-hwcap-x86.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap-x86.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-windows.lo -MD -MP -MF .deps/networking-windows.Tpo -c -o networking-windows.o networking-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-windows.lo -MD -MP -MF .deps/networking-windows.Tpo -c -o networking-windows.o networking-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT networking-windows.lo -MD -MP -MF .deps/networking-windows.Tpo -c -o networking-windows.o networking-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/networking-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-rand.lo -MD -MP -MF .deps/mono-rand.Tpo -c -o mono-rand.o mono-rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-rand.lo -MD -MP -MF .deps/mono-rand.Tpo -c -o mono-rand.o mono-rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap-x86.lo -MD -MP -MF .deps/mono-hwcap-x86.Tpo -c -o mono-hwcap-x86.o mono-hwcap-x86.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap-x86.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support-amd64.lo -MD -MP -MF .deps/mach-support-amd64.Tpo -c -o mach-support-amd64.o mach-support-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-rand.lo -MD -MP -MF .deps/mono-rand.Tpo -c -o mono-rand.o mono-rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap-x86.lo -MD -MP -MF .deps/mono-hwcap-x86.Tpo -c -o mono-hwcap-x86.o mono-hwcap-x86.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap-x86.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support-amd64.lo -MD -MP -MF .deps/mach-support-amd64.Tpo -c -o mach-support-amd64.o mach-support-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-hwcap-x86.lo -MD -MP -MF .deps/mono-hwcap-x86.Tpo -c -o mono-hwcap-x86.o mono-hwcap-x86.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mono-hwcap-x86.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mach-support-amd64.lo -MD -MP -MF .deps/mach-support-amd64.Tpo -c -o mach-support-amd64.o mach-support-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/mach-support-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sha1.lo -MD -MP -MF .deps/sha1.Tpo -c -o sha1.o sha1.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sha1.lo -MD -MP -MF .deps/sha1.Tpo -c -o sha1.o sha1.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/utils",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sha1.lo -MD -MP -MF .deps/sha1.Tpo -c -o sha1.o sha1.c",
+  "file": "/Users/joao/Dev/mono3/mono/utils/sha1.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT collection.lo -MD -MP -MF .deps/collection.Tpo -c -o .libs/collection.o collection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/collection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT context.lo -MD -MP -MF .deps/context.Tpo -c -o .libs/context.o context.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o .libs/error.o error.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT events.lo -MD -MP -MF .deps/events.Tpo -c -o .libs/events.o events.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/events.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT collection.lo -MD -MP -MF .deps/collection.Tpo -c -o .libs/collection.o collection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/collection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT context.lo -MD -MP -MF .deps/context.Tpo -c -o .libs/context.o context.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o .libs/error.o error.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT events.lo -MD -MP -MF .deps/events.Tpo -c -o .libs/events.o events.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/events.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT handles.lo -MD -MP -MF .deps/handles.Tpo -c -o .libs/handles.o handles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/handles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io-portability.lo -MD -MP -MF .deps/io-portability.Tpo -c -o .libs/io-portability.o io-portability.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io.lo -MD -MP -MF .deps/io.Tpo -c -o .libs/io.o io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT handles.lo -MD -MP -MF .deps/handles.Tpo -c -o .libs/handles.o handles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/handles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io-portability.lo -MD -MP -MF .deps/io-portability.Tpo -c -o .libs/io-portability.o io-portability.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT context.lo -MD -MP -MF .deps/context.Tpo -c -o .libs/context.o context.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT collection.lo -MD -MP -MF .deps/collection.Tpo -c -o .libs/collection.o collection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/collection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT events.lo -MD -MP -MF .deps/events.Tpo -c -o .libs/events.o events.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/events.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io.lo -MD -MP -MF .deps/io.Tpo -c -o .libs/io.o io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT locking.lo -MD -MP -MF .deps/locking.Tpo -c -o .libs/locking.o locking.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/locking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT handles.lo -MD -MP -MF .deps/handles.Tpo -c -o .libs/handles.o handles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/handles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io-portability.lo -MD -MP -MF .deps/io-portability.Tpo -c -o .libs/io-portability.o io-portability.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT locking.lo -MD -MP -MF .deps/locking.Tpo -c -o .libs/locking.o locking.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/locking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o .libs/error.o error.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io.lo -MD -MP -MF .deps/io.Tpo -c -o .libs/io.o io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT locking.lo -MD -MP -MF .deps/locking.Tpo -c -o .libs/locking.o locking.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/locking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT context.lo -MD -MP -MF .deps/context.Tpo -c -o context.o context.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT context.lo -MD -MP -MF .deps/context.Tpo -c -o context.o context.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT context.lo -MD -MP -MF .deps/context.Tpo -c -o context.o context.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/context.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o error.o error.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o error.o error.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o error.o error.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/error.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT collection.lo -MD -MP -MF .deps/collection.Tpo -c -o collection.o collection.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/collection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT collection.lo -MD -MP -MF .deps/collection.Tpo -c -o collection.o collection.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/collection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT locking.lo -MD -MP -MF .deps/locking.Tpo -c -o locking.o locking.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/locking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT locking.lo -MD -MP -MF .deps/locking.Tpo -c -o locking.o locking.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/locking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT collection.lo -MD -MP -MF .deps/collection.Tpo -c -o collection.o collection.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/collection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT locking.lo -MD -MP -MF .deps/locking.Tpo -c -o locking.o locking.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/locking.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT messages.lo -MD -MP -MF .deps/messages.Tpo -c -o .libs/messages.o messages.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/messages.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT messages.lo -MD -MP -MF .deps/messages.Tpo -c -o .libs/messages.o messages.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/messages.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT messages.lo -MD -MP -MF .deps/messages.Tpo -c -o .libs/messages.o messages.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/messages.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io-portability.lo -MD -MP -MF .deps/io-portability.Tpo -c -o io-portability.o io-portability.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io-portability.lo -MD -MP -MF .deps/io-portability.Tpo -c -o io-portability.o io-portability.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT misc.lo -MD -MP -MF .deps/misc.Tpo -c -o .libs/misc.o misc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/misc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io-portability.lo -MD -MP -MF .deps/io-portability.Tpo -c -o io-portability.o io-portability.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io-portability.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mutexes.lo -MD -MP -MF .deps/mutexes.Tpo -c -o .libs/mutexes.o mutexes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/mutexes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT misc.lo -MD -MP -MF .deps/misc.Tpo -c -o .libs/misc.o misc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/misc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mutexes.lo -MD -MP -MF .deps/mutexes.Tpo -c -o .libs/mutexes.o mutexes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/mutexes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT misc.lo -MD -MP -MF .deps/misc.Tpo -c -o .libs/misc.o misc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/misc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mutexes.lo -MD -MP -MF .deps/mutexes.Tpo -c -o .libs/mutexes.o mutexes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/mutexes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT posix.lo -MD -MP -MF .deps/posix.Tpo -c -o .libs/posix.o posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT posix.lo -MD -MP -MF .deps/posix.Tpo -c -o .libs/posix.o posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT posix.lo -MD -MP -MF .deps/posix.Tpo -c -o .libs/posix.o posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT misc.lo -MD -MP -MF .deps/misc.Tpo -c -o misc.o misc.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/misc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT misc.lo -MD -MP -MF .deps/misc.Tpo -c -o misc.o misc.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/misc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT misc.lo -MD -MP -MF .deps/misc.Tpo -c -o misc.o misc.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/misc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT posix.lo -MD -MP -MF .deps/posix.Tpo -c -o posix.o posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT posix.lo -MD -MP -MF .deps/posix.Tpo -c -o posix.o posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT posix.lo -MD -MP -MF .deps/posix.Tpo -c -o posix.o posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT processes.lo -MD -MP -MF .deps/processes.Tpo -c -o .libs/processes.o processes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/processes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT messages.lo -MD -MP -MF .deps/messages.Tpo -c -o messages.o messages.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/messages.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT processes.lo -MD -MP -MF .deps/processes.Tpo -c -o .libs/processes.o processes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/processes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT events.lo -MD -MP -MF .deps/events.Tpo -c -o events.o events.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/events.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT messages.lo -MD -MP -MF .deps/messages.Tpo -c -o messages.o messages.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/messages.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT events.lo -MD -MP -MF .deps/events.Tpo -c -o events.o events.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/events.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT processes.lo -MD -MP -MF .deps/processes.Tpo -c -o .libs/processes.o processes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/processes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT security.lo -MD -MP -MF .deps/security.Tpo -c -o .libs/security.o security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT messages.lo -MD -MP -MF .deps/messages.Tpo -c -o messages.o messages.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/messages.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT events.lo -MD -MP -MF .deps/events.Tpo -c -o events.o events.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/events.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT security.lo -MD -MP -MF .deps/security.Tpo -c -o .libs/security.o security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT security.lo -MD -MP -MF .deps/security.Tpo -c -o .libs/security.o security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT security.lo -MD -MP -MF .deps/security.Tpo -c -o security.o security.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT security.lo -MD -MP -MF .deps/security.Tpo -c -o security.o security.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT security.lo -MD -MP -MF .deps/security.Tpo -c -o security.o security.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT semaphores.lo -MD -MP -MF .deps/semaphores.Tpo -c -o .libs/semaphores.o semaphores.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/semaphores.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT semaphores.lo -MD -MP -MF .deps/semaphores.Tpo -c -o .libs/semaphores.o semaphores.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/semaphores.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT semaphores.lo -MD -MP -MF .deps/semaphores.Tpo -c -o .libs/semaphores.o semaphores.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/semaphores.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mutexes.lo -MD -MP -MF .deps/mutexes.Tpo -c -o mutexes.o mutexes.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/mutexes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mutexes.lo -MD -MP -MF .deps/mutexes.Tpo -c -o mutexes.o mutexes.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/mutexes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mutexes.lo -MD -MP -MF .deps/mutexes.Tpo -c -o mutexes.o mutexes.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/mutexes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT shared.lo -MD -MP -MF .deps/shared.Tpo -c -o .libs/shared.o shared.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/shared.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT shared.lo -MD -MP -MF .deps/shared.Tpo -c -o .libs/shared.o shared.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/shared.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT shared.lo -MD -MP -MF .deps/shared.Tpo -c -o .libs/shared.o shared.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/shared.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sockets.lo -MD -MP -MF .deps/sockets.Tpo -c -o .libs/sockets.o sockets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/sockets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sockets.lo -MD -MP -MF .deps/sockets.Tpo -c -o .libs/sockets.o sockets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/sockets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sockets.lo -MD -MP -MF .deps/sockets.Tpo -c -o .libs/sockets.o sockets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/sockets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT semaphores.lo -MD -MP -MF .deps/semaphores.Tpo -c -o semaphores.o semaphores.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/semaphores.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT handles.lo -MD -MP -MF .deps/handles.Tpo -c -o handles.o handles.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/handles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT semaphores.lo -MD -MP -MF .deps/semaphores.Tpo -c -o semaphores.o semaphores.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/semaphores.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT handles.lo -MD -MP -MF .deps/handles.Tpo -c -o handles.o handles.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/handles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT semaphores.lo -MD -MP -MF .deps/semaphores.Tpo -c -o semaphores.o semaphores.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/semaphores.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT handles.lo -MD -MP -MF .deps/handles.Tpo -c -o handles.o handles.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/handles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT timefuncs.lo -MD -MP -MF .deps/timefuncs.Tpo -c -o .libs/timefuncs.o timefuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/timefuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT timefuncs.lo -MD -MP -MF .deps/timefuncs.Tpo -c -o .libs/timefuncs.o timefuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/timefuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT timefuncs.lo -MD -MP -MF .deps/timefuncs.Tpo -c -o .libs/timefuncs.o timefuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/timefuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT timefuncs.lo -MD -MP -MF .deps/timefuncs.Tpo -c -o timefuncs.o timefuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/timefuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT timefuncs.lo -MD -MP -MF .deps/timefuncs.Tpo -c -o timefuncs.o timefuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/timefuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT versioninfo.lo -MD -MP -MF .deps/versioninfo.Tpo -c -o .libs/versioninfo.o versioninfo.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/versioninfo.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT timefuncs.lo -MD -MP -MF .deps/timefuncs.Tpo -c -o timefuncs.o timefuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/timefuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT versioninfo.lo -MD -MP -MF .deps/versioninfo.Tpo -c -o .libs/versioninfo.o versioninfo.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/versioninfo.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT versioninfo.lo -MD -MP -MF .deps/versioninfo.Tpo -c -o .libs/versioninfo.o versioninfo.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/versioninfo.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT shared.lo -MD -MP -MF .deps/shared.Tpo -c -o shared.o shared.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/shared.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT shared.lo -MD -MP -MF .deps/shared.Tpo -c -o shared.o shared.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/shared.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT shared.lo -MD -MP -MF .deps/shared.Tpo -c -o shared.o shared.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/shared.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wait.lo -MD -MP -MF .deps/wait.Tpo -c -o .libs/wait.o wait.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wait.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io.lo -MD -MP -MF .deps/io.Tpo -c -o io.o io.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wait.lo -MD -MP -MF .deps/wait.Tpo -c -o .libs/wait.o wait.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wait.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io.lo -MD -MP -MF .deps/io.Tpo -c -o io.o io.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wait.lo -MD -MP -MF .deps/wait.Tpo -c -o .libs/wait.o wait.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wait.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT io.lo -MD -MP -MF .deps/io.Tpo -c -o io.o io.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wapi_glob.lo -MD -MP -MF .deps/wapi_glob.Tpo -c -o .libs/wapi_glob.o wapi_glob.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wapi_glob.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wapi_glob.lo -MD -MP -MF .deps/wapi_glob.Tpo -c -o .libs/wapi_glob.o wapi_glob.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wapi_glob.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wapi_glob.lo -MD -MP -MF .deps/wapi_glob.Tpo -c -o .libs/wapi_glob.o wapi_glob.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wapi_glob.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sockets.lo -MD -MP -MF .deps/sockets.Tpo -c -o sockets.o sockets.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/sockets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wapi_glob.lo -MD -MP -MF .deps/wapi_glob.Tpo -c -o wapi_glob.o wapi_glob.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wapi_glob.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sockets.lo -MD -MP -MF .deps/sockets.Tpo -c -o sockets.o sockets.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/sockets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wapi_glob.lo -MD -MP -MF .deps/wapi_glob.Tpo -c -o wapi_glob.o wapi_glob.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wapi_glob.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT sockets.lo -MD -MP -MF .deps/sockets.Tpo -c -o sockets.o sockets.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/sockets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wthreads.lo -MD -MP -MF .deps/wthreads.Tpo -c -o .libs/wthreads.o wthreads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wthreads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wapi_glob.lo -MD -MP -MF .deps/wapi_glob.Tpo -c -o wapi_glob.o wapi_glob.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wapi_glob.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wthreads.lo -MD -MP -MF .deps/wthreads.Tpo -c -o .libs/wthreads.o wthreads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wthreads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wthreads.lo -MD -MP -MF .deps/wthreads.Tpo -c -o .libs/wthreads.o wthreads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wthreads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wait.lo -MD -MP -MF .deps/wait.Tpo -c -o wait.o wait.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wait.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wait.lo -MD -MP -MF .deps/wait.Tpo -c -o wait.o wait.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wait.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT processes.lo -MD -MP -MF .deps/processes.Tpo -c -o processes.o processes.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/processes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wait.lo -MD -MP -MF .deps/wait.Tpo -c -o wait.o wait.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wait.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT processes.lo -MD -MP -MF .deps/processes.Tpo -c -o processes.o processes.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/processes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT processes.lo -MD -MP -MF .deps/processes.Tpo -c -o processes.o processes.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/processes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT versioninfo.lo -MD -MP -MF .deps/versioninfo.Tpo -c -o versioninfo.o versioninfo.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/versioninfo.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT versioninfo.lo -MD -MP -MF .deps/versioninfo.Tpo -c -o versioninfo.o versioninfo.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/versioninfo.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT versioninfo.lo -MD -MP -MF .deps/versioninfo.Tpo -c -o versioninfo.o versioninfo.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/versioninfo.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wthreads.lo -MD -MP -MF .deps/wthreads.Tpo -c -o wthreads.o wthreads.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wthreads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wthreads.lo -MD -MP -MF .deps/wthreads.Tpo -c -o wthreads.o wthreads.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wthreads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/io-layer",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../libgc/include -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin\\\" -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT wthreads.lo -MD -MP -MF .deps/wthreads.Tpo -c -o wthreads.o wthreads.c",
+  "file": "/Users/joao/Dev/mono3/mono/io-layer/wthreads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"/Users/joao/Dev/mono3/build/lib\\\" -DMONO_CFG_DIR=\\\"/Users/joao/Dev/mono3/build/etc\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_config_la-mono-config-dirs.lo -MD -MP -MF .deps/libmonoruntime_config_la-mono-config-dirs.Tpo -c -o .libs/libmonoruntime_config_la-mono-config-dirs.o mono-config-dirs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config-dirs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"/Users/joao/Dev/mono3/build/lib\\\" -DMONO_CFG_DIR=\\\"/Users/joao/Dev/mono3/build/etc\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_config_la-mono-config-dirs.lo -MD -MP -MF .deps/libmonoruntime_config_la-mono-config-dirs.Tpo -c -o .libs/libmonoruntime_config_la-mono-config-dirs.o mono-config-dirs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config-dirs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"/Users/joao/Dev/mono3/build/lib\\\" -DMONO_CFG_DIR=\\\"/Users/joao/Dev/mono3/build/etc\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_config_la-mono-config-dirs.lo -MD -MP -MF .deps/libmonoruntime_config_la-mono-config-dirs.Tpo -c -o .libs/libmonoruntime_config_la-mono-config-dirs.o mono-config-dirs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config-dirs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_la-console-unix.Tpo -c -o .libs/libmonoruntime_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_la-assembly.Tpo -c -o .libs/libmonoruntime_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-attach.lo -MD -MP -MF .deps/libmonoruntime_la-attach.Tpo -c -o .libs/libmonoruntime_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_la-console-unix.Tpo -c -o .libs/libmonoruntime_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_la-assembly.Tpo -c -o .libs/libmonoruntime_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-attach.lo -MD -MP -MF .deps/libmonoruntime_la-attach.Tpo -c -o .libs/libmonoruntime_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-class.lo -MD -MP -MF .deps/libmonoruntime_la-class.Tpo -c -o .libs/libmonoruntime_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_la-cominterop.Tpo -c -o .libs/libmonoruntime_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-coree.lo -MD -MP -MF .deps/libmonoruntime_la-coree.Tpo -c -o .libs/libmonoruntime_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-debug-helpers.Tpo -c -o .libs/libmonoruntime_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-class.lo -MD -MP -MF .deps/libmonoruntime_la-class.Tpo -c -o .libs/libmonoruntime_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_la-console-unix.Tpo -c -o .libs/libmonoruntime_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_la-cominterop.Tpo -c -o .libs/libmonoruntime_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_la-assembly.Tpo -c -o .libs/libmonoruntime_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-coree.lo -MD -MP -MF .deps/libmonoruntime_la-coree.Tpo -c -o .libs/libmonoruntime_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-attach.lo -MD -MP -MF .deps/libmonoruntime_la-attach.Tpo -c -o .libs/libmonoruntime_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"/Users/joao/Dev/mono3/build/lib\\\" -DMONO_CFG_DIR=\\\"/Users/joao/Dev/mono3/build/etc\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_config_la-mono-config-dirs.lo -MD -MP -MF .deps/libmonoruntime_config_la-mono-config-dirs.Tpo -c -o libmonoruntime_config_la-mono-config-dirs.o mono-config-dirs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config-dirs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-debug-helpers.Tpo -c -o .libs/libmonoruntime_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-class.lo -MD -MP -MF .deps/libmonoruntime_la-class.Tpo -c -o .libs/libmonoruntime_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_la-cominterop.Tpo -c -o .libs/libmonoruntime_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-coree.lo -MD -MP -MF .deps/libmonoruntime_la-coree.Tpo -c -o .libs/libmonoruntime_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"/Users/joao/Dev/mono3/build/lib\\\" -DMONO_CFG_DIR=\\\"/Users/joao/Dev/mono3/build/etc\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_config_la-mono-config-dirs.lo -MD -MP -MF .deps/libmonoruntime_config_la-mono-config-dirs.Tpo -c -o libmonoruntime_config_la-mono-config-dirs.o mono-config-dirs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config-dirs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"/Users/joao/Dev/mono3/build/lib\\\" -DMONO_CFG_DIR=\\\"/Users/joao/Dev/mono3/build/etc\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_config_la-mono-config-dirs.lo -MD -MP -MF .deps/libmonoruntime_config_la-mono-config-dirs.Tpo -c -o libmonoruntime_config_la-mono-config-dirs.o mono-config-dirs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config-dirs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-coree.lo -MD -MP -MF .deps/libmonoruntime_la-coree.Tpo -c -o libmonoruntime_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-coree.lo -MD -MP -MF .deps/libmonoruntime_la-coree.Tpo -c -o libmonoruntime_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-debug-helpers.Tpo -c -o .libs/libmonoruntime_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-coree.lo -MD -MP -MF .deps/libmonoruntime_la-coree.Tpo -c -o libmonoruntime_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntime_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntime_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_la-decimal-ms.Tpo -c -o .libs/libmonoruntime_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntime_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_la-decimal-ms.Tpo -c -o .libs/libmonoruntime_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_la-decimal-ms.Tpo -c -o .libs/libmonoruntime_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_la-console-unix.Tpo -c -o libmonoruntime_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_la-console-unix.Tpo -c -o libmonoruntime_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-attach.lo -MD -MP -MF .deps/libmonoruntime_la-attach.Tpo -c -o libmonoruntime_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-attach.lo -MD -MP -MF .deps/libmonoruntime_la-attach.Tpo -c -o libmonoruntime_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_la-console-unix.Tpo -c -o libmonoruntime_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-attach.lo -MD -MP -MF .deps/libmonoruntime_la-attach.Tpo -c -o libmonoruntime_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-debug-helpers.Tpo -c -o libmonoruntime_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-debug-helpers.Tpo -c -o libmonoruntime_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_la-debug-mono-symfile.Tpo -c -o libmonoruntime_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_la-debug-mono-symfile.Tpo -c -o libmonoruntime_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-debug-helpers.Tpo -c -o libmonoruntime_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_la-debug-mono-symfile.Tpo -c -o libmonoruntime_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-environment.lo -MD -MP -MF .deps/libmonoruntime_la-environment.Tpo -c -o .libs/libmonoruntime_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-environment.lo -MD -MP -MF .deps/libmonoruntime_la-environment.Tpo -c -o .libs/libmonoruntime_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-environment.lo -MD -MP -MF .deps/libmonoruntime_la-environment.Tpo -c -o .libs/libmonoruntime_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-exception.lo -MD -MP -MF .deps/libmonoruntime_la-exception.Tpo -c -o .libs/libmonoruntime_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-exception.lo -MD -MP -MF .deps/libmonoruntime_la-exception.Tpo -c -o .libs/libmonoruntime_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-exception.lo -MD -MP -MF .deps/libmonoruntime_la-exception.Tpo -c -o .libs/libmonoruntime_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-environment.lo -MD -MP -MF .deps/libmonoruntime_la-environment.Tpo -c -o libmonoruntime_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-environment.lo -MD -MP -MF .deps/libmonoruntime_la-environment.Tpo -c -o libmonoruntime_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-environment.lo -MD -MP -MF .deps/libmonoruntime_la-environment.Tpo -c -o libmonoruntime_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_la-file-io.Tpo -c -o .libs/libmonoruntime_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_la-file-io.Tpo -c -o .libs/libmonoruntime_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_la-file-io.Tpo -c -o .libs/libmonoruntime_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-exception.lo -MD -MP -MF .deps/libmonoruntime_la-exception.Tpo -c -o libmonoruntime_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-exception.lo -MD -MP -MF .deps/libmonoruntime_la-exception.Tpo -c -o libmonoruntime_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-exception.lo -MD -MP -MF .deps/libmonoruntime_la-exception.Tpo -c -o libmonoruntime_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_la-filewatcher.Tpo -c -o .libs/libmonoruntime_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntime_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_la-filewatcher.Tpo -c -o .libs/libmonoruntime_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntime_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_la-filewatcher.Tpo -c -o .libs/libmonoruntime_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntime_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_la-filewatcher.Tpo -c -o libmonoruntime_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_la-filewatcher.Tpo -c -o libmonoruntime_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_la-filewatcher.Tpo -c -o libmonoruntime_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_la-gc-memfuncs.Tpo -c -o libmonoruntime_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_la-gc-memfuncs.Tpo -c -o libmonoruntime_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_la-gc-memfuncs.Tpo -c -o libmonoruntime_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_la-decimal-ms.Tpo -c -o libmonoruntime_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_la-decimal-ms.Tpo -c -o libmonoruntime_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_la-decimal-ms.Tpo -c -o libmonoruntime_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-icall.lo -MD -MP -MF .deps/libmonoruntime_la-icall.Tpo -c -o .libs/libmonoruntime_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_la-file-io.Tpo -c -o libmonoruntime_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-icall.lo -MD -MP -MF .deps/libmonoruntime_la-icall.Tpo -c -o .libs/libmonoruntime_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_la-file-io.Tpo -c -o libmonoruntime_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-icall.lo -MD -MP -MF .deps/libmonoruntime_la-icall.Tpo -c -o .libs/libmonoruntime_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_la-file-io.Tpo -c -o libmonoruntime_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-image.lo -MD -MP -MF .deps/libmonoruntime_la-image.Tpo -c -o .libs/libmonoruntime_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-image.lo -MD -MP -MF .deps/libmonoruntime_la-image.Tpo -c -o .libs/libmonoruntime_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-image.lo -MD -MP -MF .deps/libmonoruntime_la-image.Tpo -c -o .libs/libmonoruntime_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_la-jit-info.Tpo -c -o .libs/libmonoruntime_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_la-jit-info.Tpo -c -o .libs/libmonoruntime_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_la-jit-info.Tpo -c -o .libs/libmonoruntime_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_la-cominterop.Tpo -c -o libmonoruntime_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_la-cominterop.Tpo -c -o libmonoruntime_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_la-cominterop.Tpo -c -o libmonoruntime_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_la-assembly.Tpo -c -o libmonoruntime_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_la-assembly.Tpo -c -o libmonoruntime_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_la-assembly.Tpo -c -o libmonoruntime_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-loader.lo -MD -MP -MF .deps/libmonoruntime_la-loader.Tpo -c -o .libs/libmonoruntime_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-loader.lo -MD -MP -MF .deps/libmonoruntime_la-loader.Tpo -c -o .libs/libmonoruntime_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-loader.lo -MD -MP -MF .deps/libmonoruntime_la-loader.Tpo -c -o .libs/libmonoruntime_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_la-jit-info.Tpo -c -o libmonoruntime_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_la-jit-info.Tpo -c -o libmonoruntime_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_la-jit-info.Tpo -c -o libmonoruntime_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-image.lo -MD -MP -MF .deps/libmonoruntime_la-image.Tpo -c -o libmonoruntime_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-image.lo -MD -MP -MF .deps/libmonoruntime_la-image.Tpo -c -o libmonoruntime_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-image.lo -MD -MP -MF .deps/libmonoruntime_la-image.Tpo -c -o libmonoruntime_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-locales.lo -MD -MP -MF .deps/libmonoruntime_la-locales.Tpo -c -o .libs/libmonoruntime_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-locales.lo -MD -MP -MF .deps/libmonoruntime_la-locales.Tpo -c -o .libs/libmonoruntime_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-locales.lo -MD -MP -MF .deps/libmonoruntime_la-locales.Tpo -c -o .libs/libmonoruntime_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_la-lock-tracer.Tpo -c -o .libs/libmonoruntime_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_la-lock-tracer.Tpo -c -o .libs/libmonoruntime_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_la-lock-tracer.Tpo -c -o .libs/libmonoruntime_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_la-lock-tracer.Tpo -c -o libmonoruntime_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_la-lock-tracer.Tpo -c -o libmonoruntime_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_la-lock-tracer.Tpo -c -o libmonoruntime_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_la-marshal.Tpo -c -o .libs/libmonoruntime_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_la-mempool.Tpo -c -o .libs/libmonoruntime_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_la-marshal.Tpo -c -o .libs/libmonoruntime_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_la-mempool.Tpo -c -o .libs/libmonoruntime_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_la-marshal.Tpo -c -o .libs/libmonoruntime_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_la-mempool.Tpo -c -o .libs/libmonoruntime_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_la-mempool.Tpo -c -o libmonoruntime_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_la-mempool.Tpo -c -o libmonoruntime_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_la-mempool.Tpo -c -o libmonoruntime_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-loader.lo -MD -MP -MF .deps/libmonoruntime_la-loader.Tpo -c -o libmonoruntime_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-loader.lo -MD -MP -MF .deps/libmonoruntime_la-loader.Tpo -c -o libmonoruntime_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-loader.lo -MD -MP -MF .deps/libmonoruntime_la-loader.Tpo -c -o libmonoruntime_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_la-metadata.Tpo -c -o .libs/libmonoruntime_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_la-metadata.Tpo -c -o .libs/libmonoruntime_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_la-metadata.Tpo -c -o .libs/libmonoruntime_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-verify.Tpo -c -o .libs/libmonoruntime_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_la-method-builder.Tpo -c -o .libs/libmonoruntime_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-verify.Tpo -c -o .libs/libmonoruntime_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_la-method-builder.Tpo -c -o .libs/libmonoruntime_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-verify.Tpo -c -o .libs/libmonoruntime_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_la-method-builder.Tpo -c -o .libs/libmonoruntime_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_la-method-builder.Tpo -c -o libmonoruntime_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_la-method-builder.Tpo -c -o libmonoruntime_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_la-method-builder.Tpo -c -o libmonoruntime_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-locales.lo -MD -MP -MF .deps/libmonoruntime_la-locales.Tpo -c -o libmonoruntime_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-locales.lo -MD -MP -MF .deps/libmonoruntime_la-locales.Tpo -c -o libmonoruntime_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-locales.lo -MD -MP -MF .deps/libmonoruntime_la-locales.Tpo -c -o libmonoruntime_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_la-mono-basic-block.Tpo -c -o .libs/libmonoruntime_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_la-mono-basic-block.Tpo -c -o .libs/libmonoruntime_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_la-mono-basic-block.Tpo -c -o .libs/libmonoruntime_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_la-mono-config.Tpo -c -o .libs/libmonoruntime_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_la-mono-config.Tpo -c -o .libs/libmonoruntime_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_la-mono-config.Tpo -c -o .libs/libmonoruntime_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_la-mono-basic-block.Tpo -c -o libmonoruntime_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_la-mono-basic-block.Tpo -c -o libmonoruntime_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_la-mono-basic-block.Tpo -c -o libmonoruntime_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_la-mono-config.Tpo -c -o libmonoruntime_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_la-mono-config.Tpo -c -o libmonoruntime_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_la-mono-config.Tpo -c -o libmonoruntime_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-cq.Tpo -c -o .libs/libmonoruntime_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-cq.Tpo -c -o .libs/libmonoruntime_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-cq.Tpo -c -o .libs/libmonoruntime_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-cq.Tpo -c -o libmonoruntime_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-cq.Tpo -c -o libmonoruntime_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_la-mono-debug.Tpo -c -o .libs/libmonoruntime_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-cq.Tpo -c -o libmonoruntime_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_la-mono-debug.Tpo -c -o .libs/libmonoruntime_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_la-mono-debug.Tpo -c -o .libs/libmonoruntime_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_la-mono-endian.Tpo -c -o .libs/libmonoruntime_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_la-mono-endian.Tpo -c -o .libs/libmonoruntime_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-icall.lo -MD -MP -MF .deps/libmonoruntime_la-icall.Tpo -c -o libmonoruntime_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-icall.lo -MD -MP -MF .deps/libmonoruntime_la-icall.Tpo -c -o libmonoruntime_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_la-mono-endian.Tpo -c -o .libs/libmonoruntime_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-icall.lo -MD -MP -MF .deps/libmonoruntime_la-icall.Tpo -c -o libmonoruntime_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_la-mono-endian.Tpo -c -o libmonoruntime_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_la-mono-mlist.Tpo -c -o .libs/libmonoruntime_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_la-mono-mlist.Tpo -c -o .libs/libmonoruntime_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_la-mono-endian.Tpo -c -o libmonoruntime_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_la-mono-mlist.Tpo -c -o .libs/libmonoruntime_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_la-mono-endian.Tpo -c -o libmonoruntime_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntime_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_la-mono-mlist.Tpo -c -o libmonoruntime_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntime_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_la-mono-mlist.Tpo -c -o libmonoruntime_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntime_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_la-mono-mlist.Tpo -c -o libmonoruntime_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-class.lo -MD -MP -MF .deps/libmonoruntime_la-class.Tpo -c -o libmonoruntime_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-class.lo -MD -MP -MF .deps/libmonoruntime_la-class.Tpo -c -o libmonoruntime_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-class.lo -MD -MP -MF .deps/libmonoruntime_la-class.Tpo -c -o libmonoruntime_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_la-mono-debug.Tpo -c -o libmonoruntime_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_la-mono-debug.Tpo -c -o libmonoruntime_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_la-mono-debug.Tpo -c -o libmonoruntime_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_la-mono-route.Tpo -c -o .libs/libmonoruntime_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_la-mono-route.Tpo -c -o .libs/libmonoruntime_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_la-mono-route.Tpo -c -o .libs/libmonoruntime_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_la-mono-route.Tpo -c -o libmonoruntime_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_la-mono-route.Tpo -c -o libmonoruntime_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_la-metadata.Tpo -c -o libmonoruntime_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_la-metadata.Tpo -c -o libmonoruntime_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_la-mono-route.Tpo -c -o libmonoruntime_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_la-metadata.Tpo -c -o libmonoruntime_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-wsq.Tpo -c -o .libs/libmonoruntime_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-wsq.Tpo -c -o .libs/libmonoruntime_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-wsq.Tpo -c -o .libs/libmonoruntime_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_la-opcodes.Tpo -c -o .libs/libmonoruntime_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_la-opcodes.Tpo -c -o .libs/libmonoruntime_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_la-opcodes.Tpo -c -o .libs/libmonoruntime_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_la-opcodes.Tpo -c -o libmonoruntime_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_la-opcodes.Tpo -c -o libmonoruntime_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-wsq.Tpo -c -o libmonoruntime_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-wsq.Tpo -c -o libmonoruntime_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_la-opcodes.Tpo -c -o libmonoruntime_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_la-mono-wsq.Tpo -c -o libmonoruntime_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_la-mono-perfcounters.Tpo -c -o libmonoruntime_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_la-mono-perfcounters.Tpo -c -o libmonoruntime_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_la-mono-perfcounters.Tpo -c -o libmonoruntime_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_la-socket-io.Tpo -c -o .libs/libmonoruntime_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_la-socket-io.Tpo -c -o .libs/libmonoruntime_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_la-socket-io.Tpo -c -o .libs/libmonoruntime_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-process.lo -MD -MP -MF .deps/libmonoruntime_la-process.Tpo -c -o .libs/libmonoruntime_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-process.lo -MD -MP -MF .deps/libmonoruntime_la-process.Tpo -c -o .libs/libmonoruntime_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-process.lo -MD -MP -MF .deps/libmonoruntime_la-process.Tpo -c -o .libs/libmonoruntime_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-process.lo -MD -MP -MF .deps/libmonoruntime_la-process.Tpo -c -o libmonoruntime_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-process.lo -MD -MP -MF .deps/libmonoruntime_la-process.Tpo -c -o libmonoruntime_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-process.lo -MD -MP -MF .deps/libmonoruntime_la-process.Tpo -c -o libmonoruntime_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_la-socket-io.Tpo -c -o libmonoruntime_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_la-socket-io.Tpo -c -o libmonoruntime_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_la-socket-io.Tpo -c -o libmonoruntime_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_la-profiler.Tpo -c -o .libs/libmonoruntime_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_la-profiler.Tpo -c -o .libs/libmonoruntime_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_la-profiler.Tpo -c -o .libs/libmonoruntime_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-rand.lo -MD -MP -MF .deps/libmonoruntime_la-rand.Tpo -c -o .libs/libmonoruntime_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-rand.lo -MD -MP -MF .deps/libmonoruntime_la-rand.Tpo -c -o .libs/libmonoruntime_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-rand.lo -MD -MP -MF .deps/libmonoruntime_la-rand.Tpo -c -o .libs/libmonoruntime_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-rand.lo -MD -MP -MF .deps/libmonoruntime_la-rand.Tpo -c -o libmonoruntime_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-rand.lo -MD -MP -MF .deps/libmonoruntime_la-rand.Tpo -c -o libmonoruntime_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-rand.lo -MD -MP -MF .deps/libmonoruntime_la-rand.Tpo -c -o libmonoruntime_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_la-marshal.Tpo -c -o libmonoruntime_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_la-marshal.Tpo -c -o libmonoruntime_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_la-marshal.Tpo -c -o libmonoruntime_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_la-remoting.Tpo -c -o .libs/libmonoruntime_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_la-remoting.Tpo -c -o .libs/libmonoruntime_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_la-remoting.Tpo -c -o .libs/libmonoruntime_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_la-profiler.Tpo -c -o libmonoruntime_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_la-profiler.Tpo -c -o libmonoruntime_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_la-profiler.Tpo -c -o libmonoruntime_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_la-runtime.Tpo -c -o .libs/libmonoruntime_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_la-runtime.Tpo -c -o .libs/libmonoruntime_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_la-runtime.Tpo -c -o .libs/libmonoruntime_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_la-runtime.Tpo -c -o libmonoruntime_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_la-runtime.Tpo -c -o libmonoruntime_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_la-runtime.Tpo -c -o libmonoruntime_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_la-mono-security.Tpo -c -o .libs/libmonoruntime_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_la-mono-security.Tpo -c -o .libs/libmonoruntime_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_la-mono-security.Tpo -c -o .libs/libmonoruntime_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_la-remoting.Tpo -c -o libmonoruntime_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_la-remoting.Tpo -c -o libmonoruntime_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_la-remoting.Tpo -c -o libmonoruntime_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_la-security-core-clr.Tpo -c -o .libs/libmonoruntime_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_la-security-manager.Tpo -c -o .libs/libmonoruntime_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_la-security-core-clr.Tpo -c -o .libs/libmonoruntime_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_la-security-manager.Tpo -c -o .libs/libmonoruntime_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_la-security-core-clr.Tpo -c -o .libs/libmonoruntime_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_la-security-manager.Tpo -c -o .libs/libmonoruntime_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_la-mono-security.Tpo -c -o libmonoruntime_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_la-mono-security.Tpo -c -o libmonoruntime_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_la-mono-security.Tpo -c -o libmonoruntime_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_la-security-manager.Tpo -c -o libmonoruntime_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_la-security-manager.Tpo -c -o libmonoruntime_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_la-security-manager.Tpo -c -o libmonoruntime_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_la-string-icalls.Tpo -c -o .libs/libmonoruntime_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_la-string-icalls.Tpo -c -o .libs/libmonoruntime_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_la-string-icalls.Tpo -c -o .libs/libmonoruntime_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_la-security-core-clr.Tpo -c -o libmonoruntime_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_la-security-core-clr.Tpo -c -o libmonoruntime_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_la-security-core-clr.Tpo -c -o libmonoruntime_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-verify.Tpo -c -o libmonoruntime_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-verify.Tpo -c -o libmonoruntime_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-verify.Tpo -c -o libmonoruntime_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_la-sysmath.Tpo -c -o .libs/libmonoruntime_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_la-sysmath.Tpo -c -o .libs/libmonoruntime_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_la-sysmath.Tpo -c -o .libs/libmonoruntime_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_la-string-icalls.Tpo -c -o libmonoruntime_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_la-string-icalls.Tpo -c -o libmonoruntime_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_la-string-icalls.Tpo -c -o libmonoruntime_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_la-sysmath.Tpo -c -o libmonoruntime_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_la-sysmath.Tpo -c -o libmonoruntime_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_la-sysmath.Tpo -c -o libmonoruntime_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threads.lo -MD -MP -MF .deps/libmonoruntime_la-threads.Tpo -c -o .libs/libmonoruntime_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool.Tpo -c -o .libs/libmonoruntime_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threads.lo -MD -MP -MF .deps/libmonoruntime_la-threads.Tpo -c -o .libs/libmonoruntime_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms.Tpo -c -o .libs/libmonoruntime_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool.Tpo -c -o .libs/libmonoruntime_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms.Tpo -c -o .libs/libmonoruntime_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threads.lo -MD -MP -MF .deps/libmonoruntime_la-threads.Tpo -c -o .libs/libmonoruntime_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool.Tpo -c -o .libs/libmonoruntime_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms.Tpo -c -o .libs/libmonoruntime_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntime_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntime_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntime_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_la-tpool-poll.Tpo -c -o .libs/libmonoruntime_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_la-tpool-poll.Tpo -c -o .libs/libmonoruntime_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_la-tpool-poll.Tpo -c -o .libs/libmonoruntime_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms-io.Tpo -c -o libmonoruntime_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms-io.Tpo -c -o libmonoruntime_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_la-tpool-poll.Tpo -c -o libmonoruntime_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms-io.Tpo -c -o libmonoruntime_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_la-tpool-poll.Tpo -c -o libmonoruntime_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_la-tpool-poll.Tpo -c -o libmonoruntime_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool.Tpo -c -o libmonoruntime_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool.Tpo -c -o libmonoruntime_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-verify.lo -MD -MP -MF .deps/libmonoruntime_la-verify.Tpo -c -o .libs/libmonoruntime_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-verify.lo -MD -MP -MF .deps/libmonoruntime_la-verify.Tpo -c -o .libs/libmonoruntime_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool.Tpo -c -o libmonoruntime_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-verify.lo -MD -MP -MF .deps/libmonoruntime_la-verify.Tpo -c -o .libs/libmonoruntime_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms.Tpo -c -o libmonoruntime_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms.Tpo -c -o libmonoruntime_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_la-threadpool-ms.Tpo -c -o libmonoruntime_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntime_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntime_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntime_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-posix.Tpo -c -o libmonoruntime_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-posix.Tpo -c -o libmonoruntime_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-posix.Tpo -c -o libmonoruntime_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntime_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntime_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntime_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-windows.Tpo -c -o libmonoruntime_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-windows.Tpo -c -o libmonoruntime_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_la-file-mmap-windows.Tpo -c -o libmonoruntime_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntime_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_la-seq-points-data.Tpo -c -o .libs/libmonoruntime_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntime_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_la-seq-points-data.Tpo -c -o .libs/libmonoruntime_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntime_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_la-appdomain.Tpo -c -o .libs/libmonoruntime_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_la-seq-points-data.Tpo -c -o .libs/libmonoruntime_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_la-appdomain.Tpo -c -o .libs/libmonoruntime_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-cross-helpers.Tpo -c -o libmonoruntime_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_la-appdomain.Tpo -c -o .libs/libmonoruntime_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-cross-helpers.Tpo -c -o libmonoruntime_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_la-metadata-cross-helpers.Tpo -c -o libmonoruntime_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threads.lo -MD -MP -MF .deps/libmonoruntime_la-threads.Tpo -c -o libmonoruntime_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threads.lo -MD -MP -MF .deps/libmonoruntime_la-threads.Tpo -c -o libmonoruntime_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-threads.lo -MD -MP -MF .deps/libmonoruntime_la-threads.Tpo -c -o libmonoruntime_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-domain.lo -MD -MP -MF .deps/libmonoruntime_la-domain.Tpo -c -o .libs/libmonoruntime_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-domain.lo -MD -MP -MF .deps/libmonoruntime_la-domain.Tpo -c -o .libs/libmonoruntime_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-domain.lo -MD -MP -MF .deps/libmonoruntime_la-domain.Tpo -c -o .libs/libmonoruntime_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_la-seq-points-data.Tpo -c -o libmonoruntime_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_la-seq-points-data.Tpo -c -o libmonoruntime_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_la-seq-points-data.Tpo -c -o libmonoruntime_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc.lo -MD -MP -MF .deps/libmonoruntime_la-gc.Tpo -c -o .libs/libmonoruntime_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc.lo -MD -MP -MF .deps/libmonoruntime_la-gc.Tpo -c -o .libs/libmonoruntime_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc.lo -MD -MP -MF .deps/libmonoruntime_la-gc.Tpo -c -o .libs/libmonoruntime_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_la-monitor.Tpo -c -o .libs/libmonoruntime_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_la-monitor.Tpo -c -o .libs/libmonoruntime_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_la-monitor.Tpo -c -o .libs/libmonoruntime_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc.lo -MD -MP -MF .deps/libmonoruntime_la-gc.Tpo -c -o libmonoruntime_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc.lo -MD -MP -MF .deps/libmonoruntime_la-gc.Tpo -c -o libmonoruntime_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-gc.lo -MD -MP -MF .deps/libmonoruntime_la-gc.Tpo -c -o libmonoruntime_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-domain.lo -MD -MP -MF .deps/libmonoruntime_la-domain.Tpo -c -o libmonoruntime_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-domain.lo -MD -MP -MF .deps/libmonoruntime_la-domain.Tpo -c -o libmonoruntime_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-domain.lo -MD -MP -MF .deps/libmonoruntime_la-domain.Tpo -c -o libmonoruntime_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_la-monitor.Tpo -c -o libmonoruntime_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_la-monitor.Tpo -c -o libmonoruntime_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_la-monitor.Tpo -c -o libmonoruntime_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_la-appdomain.Tpo -c -o libmonoruntime_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_la-appdomain.Tpo -c -o libmonoruntime_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_la-appdomain.Tpo -c -o libmonoruntime_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_la-mono-hash.Tpo -c -o .libs/libmonoruntime_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_la-mono-hash.Tpo -c -o .libs/libmonoruntime_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_la-mono-hash.Tpo -c -o .libs/libmonoruntime_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-object.lo -MD -MP -MF .deps/libmonoruntime_la-object.Tpo -c -o .libs/libmonoruntime_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-object.lo -MD -MP -MF .deps/libmonoruntime_la-object.Tpo -c -o .libs/libmonoruntime_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-object.lo -MD -MP -MF .deps/libmonoruntime_la-object.Tpo -c -o .libs/libmonoruntime_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_la-mono-hash.Tpo -c -o libmonoruntime_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_la-mono-hash.Tpo -c -o libmonoruntime_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_la-mono-hash.Tpo -c -o libmonoruntime_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_la-reflection.Tpo -c -o .libs/libmonoruntime_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_la-reflection.Tpo -c -o .libs/libmonoruntime_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_la-reflection.Tpo -c -o .libs/libmonoruntime_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_la-null-gc.Tpo -c -o .libs/libmonoruntime_la-null-gc.o null-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_la-null-gc.Tpo -c -o .libs/libmonoruntime_la-null-gc.o null-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_la-boehm-gc.Tpo -c -o .libs/libmonoruntime_la-boehm-gc.o boehm-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_la-null-gc.Tpo -c -o .libs/libmonoruntime_la-null-gc.o null-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_la-boehm-gc.Tpo -c -o .libs/libmonoruntime_la-boehm-gc.o boehm-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_la-boehm-gc.Tpo -c -o .libs/libmonoruntime_la-boehm-gc.o boehm-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_la-null-gc.Tpo -c -o libmonoruntime_la-null-gc.o null-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_la-null-gc.Tpo -c -o libmonoruntime_la-null-gc.o null-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_static_la-console-unix.Tpo -c -o .libs/libmonoruntime_static_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_static_la-console-unix.Tpo -c -o .libs/libmonoruntime_static_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_la-null-gc.Tpo -c -o libmonoruntime_la-null-gc.o null-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_static_la-console-unix.Tpo -c -o .libs/libmonoruntime_static_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_static_la-assembly.Tpo -c -o .libs/libmonoruntime_static_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_static_la-assembly.Tpo -c -o .libs/libmonoruntime_static_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_static_la-assembly.Tpo -c -o .libs/libmonoruntime_static_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-attach.lo -MD -MP -MF .deps/libmonoruntime_static_la-attach.Tpo -c -o .libs/libmonoruntime_static_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-attach.lo -MD -MP -MF .deps/libmonoruntime_static_la-attach.Tpo -c -o .libs/libmonoruntime_static_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-attach.lo -MD -MP -MF .deps/libmonoruntime_static_la-attach.Tpo -c -o .libs/libmonoruntime_static_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_static_la-console-unix.Tpo -c -o libmonoruntime_static_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_la-boehm-gc.Tpo -c -o libmonoruntime_la-boehm-gc.o boehm-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_static_la-console-unix.Tpo -c -o libmonoruntime_static_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_la-boehm-gc.Tpo -c -o libmonoruntime_la-boehm-gc.o boehm-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntime_static_la-console-unix.Tpo -c -o libmonoruntime_static_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_la-boehm-gc.Tpo -c -o libmonoruntime_la-boehm-gc.o boehm-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-attach.lo -MD -MP -MF .deps/libmonoruntime_static_la-attach.Tpo -c -o libmonoruntime_static_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-attach.lo -MD -MP -MF .deps/libmonoruntime_static_la-attach.Tpo -c -o libmonoruntime_static_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-attach.lo -MD -MP -MF .deps/libmonoruntime_static_la-attach.Tpo -c -o libmonoruntime_static_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-class.lo -MD -MP -MF .deps/libmonoruntime_static_la-class.Tpo -c -o .libs/libmonoruntime_static_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-class.lo -MD -MP -MF .deps/libmonoruntime_static_la-class.Tpo -c -o .libs/libmonoruntime_static_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-class.lo -MD -MP -MF .deps/libmonoruntime_static_la-class.Tpo -c -o .libs/libmonoruntime_static_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_static_la-cominterop.Tpo -c -o .libs/libmonoruntime_static_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_static_la-cominterop.Tpo -c -o .libs/libmonoruntime_static_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_static_la-cominterop.Tpo -c -o .libs/libmonoruntime_static_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-coree.lo -MD -MP -MF .deps/libmonoruntime_static_la-coree.Tpo -c -o .libs/libmonoruntime_static_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-coree.lo -MD -MP -MF .deps/libmonoruntime_static_la-coree.Tpo -c -o .libs/libmonoruntime_static_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-coree.lo -MD -MP -MF .deps/libmonoruntime_static_la-coree.Tpo -c -o .libs/libmonoruntime_static_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-coree.lo -MD -MP -MF .deps/libmonoruntime_static_la-coree.Tpo -c -o libmonoruntime_static_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-coree.lo -MD -MP -MF .deps/libmonoruntime_static_la-coree.Tpo -c -o libmonoruntime_static_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-coree.lo -MD -MP -MF .deps/libmonoruntime_static_la-coree.Tpo -c -o libmonoruntime_static_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-helpers.Tpo -c -o .libs/libmonoruntime_static_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-helpers.Tpo -c -o .libs/libmonoruntime_static_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-helpers.Tpo -c -o .libs/libmonoruntime_static_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-helpers.Tpo -c -o libmonoruntime_static_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-helpers.Tpo -c -o libmonoruntime_static_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-helpers.Tpo -c -o libmonoruntime_static_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_static_la-assembly.Tpo -c -o libmonoruntime_static_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_static_la-assembly.Tpo -c -o libmonoruntime_static_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntime_static_la-assembly.Tpo -c -o libmonoruntime_static_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntime_static_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntime_static_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntime_static_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_static_la-cominterop.Tpo -c -o libmonoruntime_static_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_static_la-cominterop.Tpo -c -o libmonoruntime_static_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntime_static_la-cominterop.Tpo -c -o libmonoruntime_static_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-object.lo -MD -MP -MF .deps/libmonoruntime_la-object.Tpo -c -o libmonoruntime_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-object.lo -MD -MP -MF .deps/libmonoruntime_la-object.Tpo -c -o libmonoruntime_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-object.lo -MD -MP -MF .deps/libmonoruntime_la-object.Tpo -c -o libmonoruntime_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-decimal-ms.Tpo -c -o .libs/libmonoruntime_static_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-decimal-ms.Tpo -c -o .libs/libmonoruntime_static_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-decimal-ms.Tpo -c -o .libs/libmonoruntime_static_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-mono-symfile.Tpo -c -o libmonoruntime_static_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-mono-symfile.Tpo -c -o libmonoruntime_static_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntime_static_la-debug-mono-symfile.Tpo -c -o libmonoruntime_static_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-environment.lo -MD -MP -MF .deps/libmonoruntime_static_la-environment.Tpo -c -o .libs/libmonoruntime_static_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-environment.lo -MD -MP -MF .deps/libmonoruntime_static_la-environment.Tpo -c -o .libs/libmonoruntime_static_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-environment.lo -MD -MP -MF .deps/libmonoruntime_static_la-environment.Tpo -c -o .libs/libmonoruntime_static_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-environment.lo -MD -MP -MF .deps/libmonoruntime_static_la-environment.Tpo -c -o libmonoruntime_static_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-environment.lo -MD -MP -MF .deps/libmonoruntime_static_la-environment.Tpo -c -o libmonoruntime_static_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-environment.lo -MD -MP -MF .deps/libmonoruntime_static_la-environment.Tpo -c -o libmonoruntime_static_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-exception.lo -MD -MP -MF .deps/libmonoruntime_static_la-exception.Tpo -c -o .libs/libmonoruntime_static_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-exception.lo -MD -MP -MF .deps/libmonoruntime_static_la-exception.Tpo -c -o .libs/libmonoruntime_static_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-exception.lo -MD -MP -MF .deps/libmonoruntime_static_la-exception.Tpo -c -o .libs/libmonoruntime_static_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-decimal-ms.Tpo -c -o libmonoruntime_static_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-decimal-ms.Tpo -c -o libmonoruntime_static_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-decimal-ms.Tpo -c -o libmonoruntime_static_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-io.Tpo -c -o .libs/libmonoruntime_static_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_static_la-filewatcher.Tpo -c -o .libs/libmonoruntime_static_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-io.Tpo -c -o .libs/libmonoruntime_static_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_static_la-filewatcher.Tpo -c -o .libs/libmonoruntime_static_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-io.Tpo -c -o .libs/libmonoruntime_static_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_static_la-filewatcher.Tpo -c -o .libs/libmonoruntime_static_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_static_la-filewatcher.Tpo -c -o libmonoruntime_static_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_static_la-filewatcher.Tpo -c -o libmonoruntime_static_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntime_static_la-filewatcher.Tpo -c -o libmonoruntime_static_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-exception.lo -MD -MP -MF .deps/libmonoruntime_static_la-exception.Tpo -c -o libmonoruntime_static_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-exception.lo -MD -MP -MF .deps/libmonoruntime_static_la-exception.Tpo -c -o libmonoruntime_static_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-exception.lo -MD -MP -MF .deps/libmonoruntime_static_la-exception.Tpo -c -o libmonoruntime_static_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-io.Tpo -c -o libmonoruntime_static_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-io.Tpo -c -o libmonoruntime_static_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-io.Tpo -c -o libmonoruntime_static_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntime_static_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntime_static_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntime_static_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc-memfuncs.Tpo -c -o libmonoruntime_static_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc-memfuncs.Tpo -c -o libmonoruntime_static_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-icall.lo -MD -MP -MF .deps/libmonoruntime_static_la-icall.Tpo -c -o .libs/libmonoruntime_static_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc-memfuncs.Tpo -c -o libmonoruntime_static_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-icall.lo -MD -MP -MF .deps/libmonoruntime_static_la-icall.Tpo -c -o .libs/libmonoruntime_static_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-icall.lo -MD -MP -MF .deps/libmonoruntime_static_la-icall.Tpo -c -o .libs/libmonoruntime_static_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-image.lo -MD -MP -MF .deps/libmonoruntime_static_la-image.Tpo -c -o .libs/libmonoruntime_static_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-image.lo -MD -MP -MF .deps/libmonoruntime_static_la-image.Tpo -c -o .libs/libmonoruntime_static_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_static_la-jit-info.Tpo -c -o .libs/libmonoruntime_static_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-image.lo -MD -MP -MF .deps/libmonoruntime_static_la-image.Tpo -c -o .libs/libmonoruntime_static_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_static_la-jit-info.Tpo -c -o .libs/libmonoruntime_static_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_static_la-jit-info.Tpo -c -o .libs/libmonoruntime_static_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-loader.lo -MD -MP -MF .deps/libmonoruntime_static_la-loader.Tpo -c -o .libs/libmonoruntime_static_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-loader.lo -MD -MP -MF .deps/libmonoruntime_static_la-loader.Tpo -c -o .libs/libmonoruntime_static_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-loader.lo -MD -MP -MF .deps/libmonoruntime_static_la-loader.Tpo -c -o .libs/libmonoruntime_static_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_static_la-jit-info.Tpo -c -o libmonoruntime_static_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_static_la-jit-info.Tpo -c -o libmonoruntime_static_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntime_static_la-jit-info.Tpo -c -o libmonoruntime_static_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-image.lo -MD -MP -MF .deps/libmonoruntime_static_la-image.Tpo -c -o libmonoruntime_static_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-locales.lo -MD -MP -MF .deps/libmonoruntime_static_la-locales.Tpo -c -o .libs/libmonoruntime_static_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-image.lo -MD -MP -MF .deps/libmonoruntime_static_la-image.Tpo -c -o libmonoruntime_static_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-locales.lo -MD -MP -MF .deps/libmonoruntime_static_la-locales.Tpo -c -o .libs/libmonoruntime_static_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-image.lo -MD -MP -MF .deps/libmonoruntime_static_la-image.Tpo -c -o libmonoruntime_static_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-locales.lo -MD -MP -MF .deps/libmonoruntime_static_la-locales.Tpo -c -o .libs/libmonoruntime_static_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-verify.lo -MD -MP -MF .deps/libmonoruntime_la-verify.Tpo -c -o libmonoruntime_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-verify.lo -MD -MP -MF .deps/libmonoruntime_la-verify.Tpo -c -o libmonoruntime_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-verify.lo -MD -MP -MF .deps/libmonoruntime_la-verify.Tpo -c -o libmonoruntime_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_static_la-lock-tracer.Tpo -c -o .libs/libmonoruntime_static_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_static_la-lock-tracer.Tpo -c -o .libs/libmonoruntime_static_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_static_la-lock-tracer.Tpo -c -o .libs/libmonoruntime_static_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_static_la-lock-tracer.Tpo -c -o libmonoruntime_static_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_static_la-lock-tracer.Tpo -c -o libmonoruntime_static_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntime_static_la-lock-tracer.Tpo -c -o libmonoruntime_static_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_static_la-marshal.Tpo -c -o .libs/libmonoruntime_static_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_static_la-marshal.Tpo -c -o .libs/libmonoruntime_static_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_static_la-marshal.Tpo -c -o .libs/libmonoruntime_static_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-loader.lo -MD -MP -MF .deps/libmonoruntime_static_la-loader.Tpo -c -o libmonoruntime_static_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-loader.lo -MD -MP -MF .deps/libmonoruntime_static_la-loader.Tpo -c -o libmonoruntime_static_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-loader.lo -MD -MP -MF .deps/libmonoruntime_static_la-loader.Tpo -c -o libmonoruntime_static_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_static_la-mempool.Tpo -c -o .libs/libmonoruntime_static_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_static_la-mempool.Tpo -c -o .libs/libmonoruntime_static_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_static_la-mempool.Tpo -c -o .libs/libmonoruntime_static_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_static_la-mempool.Tpo -c -o libmonoruntime_static_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_static_la-mempool.Tpo -c -o libmonoruntime_static_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-class.lo -MD -MP -MF .deps/libmonoruntime_static_la-class.Tpo -c -o libmonoruntime_static_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntime_static_la-mempool.Tpo -c -o libmonoruntime_static_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-class.lo -MD -MP -MF .deps/libmonoruntime_static_la-class.Tpo -c -o libmonoruntime_static_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-class.lo -MD -MP -MF .deps/libmonoruntime_static_la-class.Tpo -c -o libmonoruntime_static_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata.Tpo -c -o .libs/libmonoruntime_static_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata.Tpo -c -o .libs/libmonoruntime_static_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata.Tpo -c -o .libs/libmonoruntime_static_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-locales.lo -MD -MP -MF .deps/libmonoruntime_static_la-locales.Tpo -c -o libmonoruntime_static_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-locales.lo -MD -MP -MF .deps/libmonoruntime_static_la-locales.Tpo -c -o libmonoruntime_static_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-locales.lo -MD -MP -MF .deps/libmonoruntime_static_la-locales.Tpo -c -o libmonoruntime_static_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-verify.Tpo -c -o .libs/libmonoruntime_static_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-verify.Tpo -c -o .libs/libmonoruntime_static_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-verify.Tpo -c -o .libs/libmonoruntime_static_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-icall.lo -MD -MP -MF .deps/libmonoruntime_static_la-icall.Tpo -c -o libmonoruntime_static_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-icall.lo -MD -MP -MF .deps/libmonoruntime_static_la-icall.Tpo -c -o libmonoruntime_static_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-icall.lo -MD -MP -MF .deps/libmonoruntime_static_la-icall.Tpo -c -o libmonoruntime_static_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_static_la-method-builder.Tpo -c -o .libs/libmonoruntime_static_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_static_la-method-builder.Tpo -c -o .libs/libmonoruntime_static_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_static_la-method-builder.Tpo -c -o .libs/libmonoruntime_static_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_la-reflection.Tpo -c -o libmonoruntime_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_la-reflection.Tpo -c -o libmonoruntime_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_la-reflection.Tpo -c -o libmonoruntime_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_static_la-method-builder.Tpo -c -o libmonoruntime_static_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_static_la-method-builder.Tpo -c -o libmonoruntime_static_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntime_static_la-method-builder.Tpo -c -o libmonoruntime_static_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-basic-block.Tpo -c -o .libs/libmonoruntime_static_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-basic-block.Tpo -c -o .libs/libmonoruntime_static_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-basic-block.Tpo -c -o .libs/libmonoruntime_static_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata.Tpo -c -o libmonoruntime_static_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata.Tpo -c -o libmonoruntime_static_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata.Tpo -c -o libmonoruntime_static_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-basic-block.Tpo -c -o libmonoruntime_static_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-basic-block.Tpo -c -o libmonoruntime_static_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-basic-block.Tpo -c -o libmonoruntime_static_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-config.Tpo -c -o .libs/libmonoruntime_static_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-config.Tpo -c -o .libs/libmonoruntime_static_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-config.Tpo -c -o .libs/libmonoruntime_static_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-config.Tpo -c -o libmonoruntime_static_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-config.Tpo -c -o libmonoruntime_static_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-config.Tpo -c -o libmonoruntime_static_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_static_la-marshal.Tpo -c -o libmonoruntime_static_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-cq.Tpo -c -o .libs/libmonoruntime_static_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_static_la-marshal.Tpo -c -o libmonoruntime_static_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-cq.Tpo -c -o .libs/libmonoruntime_static_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntime_static_la-marshal.Tpo -c -o libmonoruntime_static_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-cq.Tpo -c -o .libs/libmonoruntime_static_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-cq.Tpo -c -o libmonoruntime_static_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-cq.Tpo -c -o libmonoruntime_static_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-cq.Tpo -c -o libmonoruntime_static_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-debug.Tpo -c -o .libs/libmonoruntime_static_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-debug.Tpo -c -o .libs/libmonoruntime_static_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-debug.Tpo -c -o .libs/libmonoruntime_static_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-debug.Tpo -c -o libmonoruntime_static_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-debug.Tpo -c -o libmonoruntime_static_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-debug.Tpo -c -o libmonoruntime_static_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-endian.Tpo -c -o .libs/libmonoruntime_static_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-endian.Tpo -c -o .libs/libmonoruntime_static_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-endian.Tpo -c -o .libs/libmonoruntime_static_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-endian.Tpo -c -o libmonoruntime_static_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-endian.Tpo -c -o libmonoruntime_static_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-endian.Tpo -c -o libmonoruntime_static_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-mlist.Tpo -c -o .libs/libmonoruntime_static_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-mlist.Tpo -c -o .libs/libmonoruntime_static_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-mlist.Tpo -c -o .libs/libmonoruntime_static_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntime_static_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntime_static_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-route.Tpo -c -o .libs/libmonoruntime_static_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntime_static_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-route.Tpo -c -o .libs/libmonoruntime_static_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-route.Tpo -c -o .libs/libmonoruntime_static_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-mlist.Tpo -c -o libmonoruntime_static_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-mlist.Tpo -c -o libmonoruntime_static_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-mlist.Tpo -c -o libmonoruntime_static_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-wsq.Tpo -c -o .libs/libmonoruntime_static_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-wsq.Tpo -c -o .libs/libmonoruntime_static_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-route.Tpo -c -o libmonoruntime_static_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-route.Tpo -c -o libmonoruntime_static_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-wsq.Tpo -c -o .libs/libmonoruntime_static_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-route.Tpo -c -o libmonoruntime_static_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_static_la-opcodes.Tpo -c -o .libs/libmonoruntime_static_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_static_la-opcodes.Tpo -c -o .libs/libmonoruntime_static_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_static_la-opcodes.Tpo -c -o .libs/libmonoruntime_static_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-wsq.Tpo -c -o libmonoruntime_static_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_static_la-opcodes.Tpo -c -o libmonoruntime_static_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-wsq.Tpo -c -o libmonoruntime_static_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_static_la-opcodes.Tpo -c -o libmonoruntime_static_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-wsq.Tpo -c -o libmonoruntime_static_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntime_static_la-opcodes.Tpo -c -o libmonoruntime_static_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-socket-io.Tpo -c -o .libs/libmonoruntime_static_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-socket-io.Tpo -c -o .libs/libmonoruntime_static_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-socket-io.Tpo -c -o .libs/libmonoruntime_static_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-process.lo -MD -MP -MF .deps/libmonoruntime_static_la-process.Tpo -c -o .libs/libmonoruntime_static_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-process.lo -MD -MP -MF .deps/libmonoruntime_static_la-process.Tpo -c -o .libs/libmonoruntime_static_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-process.lo -MD -MP -MF .deps/libmonoruntime_static_la-process.Tpo -c -o .libs/libmonoruntime_static_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_static_la-profiler.Tpo -c -o .libs/libmonoruntime_static_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_static_la-profiler.Tpo -c -o .libs/libmonoruntime_static_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_static_la-profiler.Tpo -c -o .libs/libmonoruntime_static_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-perfcounters.Tpo -c -o libmonoruntime_static_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-perfcounters.Tpo -c -o libmonoruntime_static_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-process.lo -MD -MP -MF .deps/libmonoruntime_static_la-process.Tpo -c -o libmonoruntime_static_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-process.lo -MD -MP -MF .deps/libmonoruntime_static_la-process.Tpo -c -o libmonoruntime_static_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-perfcounters.Tpo -c -o libmonoruntime_static_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-process.lo -MD -MP -MF .deps/libmonoruntime_static_la-process.Tpo -c -o libmonoruntime_static_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-verify.Tpo -c -o libmonoruntime_static_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-verify.Tpo -c -o libmonoruntime_static_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-verify.Tpo -c -o libmonoruntime_static_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-rand.lo -MD -MP -MF .deps/libmonoruntime_static_la-rand.Tpo -c -o .libs/libmonoruntime_static_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-rand.lo -MD -MP -MF .deps/libmonoruntime_static_la-rand.Tpo -c -o .libs/libmonoruntime_static_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-rand.lo -MD -MP -MF .deps/libmonoruntime_static_la-rand.Tpo -c -o .libs/libmonoruntime_static_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-rand.lo -MD -MP -MF .deps/libmonoruntime_static_la-rand.Tpo -c -o libmonoruntime_static_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-rand.lo -MD -MP -MF .deps/libmonoruntime_static_la-rand.Tpo -c -o libmonoruntime_static_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-rand.lo -MD -MP -MF .deps/libmonoruntime_static_la-rand.Tpo -c -o libmonoruntime_static_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_static_la-profiler.Tpo -c -o libmonoruntime_static_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_static_la-profiler.Tpo -c -o libmonoruntime_static_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntime_static_la-profiler.Tpo -c -o libmonoruntime_static_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_static_la-remoting.Tpo -c -o .libs/libmonoruntime_static_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_static_la-remoting.Tpo -c -o .libs/libmonoruntime_static_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_static_la-remoting.Tpo -c -o .libs/libmonoruntime_static_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-socket-io.Tpo -c -o libmonoruntime_static_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-socket-io.Tpo -c -o libmonoruntime_static_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-socket-io.Tpo -c -o libmonoruntime_static_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_static_la-runtime.Tpo -c -o .libs/libmonoruntime_static_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_static_la-runtime.Tpo -c -o .libs/libmonoruntime_static_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_static_la-runtime.Tpo -c -o .libs/libmonoruntime_static_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_static_la-runtime.Tpo -c -o libmonoruntime_static_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_static_la-runtime.Tpo -c -o libmonoruntime_static_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntime_static_la-runtime.Tpo -c -o libmonoruntime_static_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-security.Tpo -c -o .libs/libmonoruntime_static_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-security.Tpo -c -o .libs/libmonoruntime_static_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-security.Tpo -c -o .libs/libmonoruntime_static_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-core-clr.Tpo -c -o .libs/libmonoruntime_static_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-core-clr.Tpo -c -o .libs/libmonoruntime_static_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-core-clr.Tpo -c -o .libs/libmonoruntime_static_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-manager.Tpo -c -o .libs/libmonoruntime_static_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-manager.Tpo -c -o .libs/libmonoruntime_static_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-manager.Tpo -c -o .libs/libmonoruntime_static_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-security.Tpo -c -o libmonoruntime_static_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-security.Tpo -c -o libmonoruntime_static_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_static_la-remoting.Tpo -c -o libmonoruntime_static_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-security.Tpo -c -o libmonoruntime_static_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_static_la-remoting.Tpo -c -o libmonoruntime_static_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntime_static_la-remoting.Tpo -c -o libmonoruntime_static_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-manager.Tpo -c -o libmonoruntime_static_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-manager.Tpo -c -o libmonoruntime_static_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-manager.Tpo -c -o libmonoruntime_static_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-core-clr.Tpo -c -o libmonoruntime_static_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-core-clr.Tpo -c -o libmonoruntime_static_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntime_static_la-security-core-clr.Tpo -c -o libmonoruntime_static_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_static_la-string-icalls.Tpo -c -o .libs/libmonoruntime_static_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_static_la-sysmath.Tpo -c -o .libs/libmonoruntime_static_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_static_la-string-icalls.Tpo -c -o .libs/libmonoruntime_static_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_static_la-sysmath.Tpo -c -o .libs/libmonoruntime_static_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_static_la-string-icalls.Tpo -c -o .libs/libmonoruntime_static_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_static_la-sysmath.Tpo -c -o .libs/libmonoruntime_static_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_static_la-sysmath.Tpo -c -o libmonoruntime_static_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_static_la-sysmath.Tpo -c -o libmonoruntime_static_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntime_static_la-sysmath.Tpo -c -o libmonoruntime_static_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_static_la-string-icalls.Tpo -c -o libmonoruntime_static_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threads.lo -MD -MP -MF .deps/libmonoruntime_static_la-threads.Tpo -c -o .libs/libmonoruntime_static_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_static_la-string-icalls.Tpo -c -o libmonoruntime_static_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threads.lo -MD -MP -MF .deps/libmonoruntime_static_la-threads.Tpo -c -o .libs/libmonoruntime_static_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threads.lo -MD -MP -MF .deps/libmonoruntime_static_la-threads.Tpo -c -o .libs/libmonoruntime_static_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntime_static_la-string-icalls.Tpo -c -o libmonoruntime_static_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool.Tpo -c -o .libs/libmonoruntime_static_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool.Tpo -c -o .libs/libmonoruntime_static_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool.Tpo -c -o .libs/libmonoruntime_static_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms.Tpo -c -o .libs/libmonoruntime_static_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms.Tpo -c -o .libs/libmonoruntime_static_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms.Tpo -c -o .libs/libmonoruntime_static_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntime_static_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntime_static_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntime_static_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_static_la-tpool-poll.Tpo -c -o .libs/libmonoruntime_static_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_static_la-tpool-poll.Tpo -c -o .libs/libmonoruntime_static_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_static_la-tpool-poll.Tpo -c -o .libs/libmonoruntime_static_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_static_la-tpool-poll.Tpo -c -o libmonoruntime_static_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_static_la-tpool-poll.Tpo -c -o libmonoruntime_static_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntime_static_la-tpool-poll.Tpo -c -o libmonoruntime_static_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms-io.Tpo -c -o libmonoruntime_static_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms-io.Tpo -c -o libmonoruntime_static_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms-io.Tpo -c -o libmonoruntime_static_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool.Tpo -c -o libmonoruntime_static_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool.Tpo -c -o libmonoruntime_static_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool.Tpo -c -o libmonoruntime_static_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-verify.Tpo -c -o .libs/libmonoruntime_static_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-verify.Tpo -c -o .libs/libmonoruntime_static_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-verify.Tpo -c -o .libs/libmonoruntime_static_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms.Tpo -c -o libmonoruntime_static_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms.Tpo -c -o libmonoruntime_static_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntime_static_la-threadpool-ms.Tpo -c -o libmonoruntime_static_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntime_static_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntime_static_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntime_static_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntime_static_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntime_static_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntime_static_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-posix.Tpo -c -o libmonoruntime_static_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-windows.Tpo -c -o libmonoruntime_static_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-posix.Tpo -c -o libmonoruntime_static_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-windows.Tpo -c -o libmonoruntime_static_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-posix.Tpo -c -o libmonoruntime_static_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntime_static_la-file-mmap-windows.Tpo -c -o libmonoruntime_static_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntime_static_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntime_static_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntime_static_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-cross-helpers.Tpo -c -o libmonoruntime_static_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-cross-helpers.Tpo -c -o libmonoruntime_static_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntime_static_la-metadata-cross-helpers.Tpo -c -o libmonoruntime_static_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_static_la-seq-points-data.Tpo -c -o .libs/libmonoruntime_static_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_static_la-appdomain.Tpo -c -o .libs/libmonoruntime_static_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_static_la-seq-points-data.Tpo -c -o .libs/libmonoruntime_static_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_static_la-appdomain.Tpo -c -o .libs/libmonoruntime_static_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_static_la-seq-points-data.Tpo -c -o .libs/libmonoruntime_static_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_static_la-appdomain.Tpo -c -o .libs/libmonoruntime_static_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-domain.lo -MD -MP -MF .deps/libmonoruntime_static_la-domain.Tpo -c -o .libs/libmonoruntime_static_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-domain.lo -MD -MP -MF .deps/libmonoruntime_static_la-domain.Tpo -c -o .libs/libmonoruntime_static_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threads.lo -MD -MP -MF .deps/libmonoruntime_static_la-threads.Tpo -c -o libmonoruntime_static_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-domain.lo -MD -MP -MF .deps/libmonoruntime_static_la-domain.Tpo -c -o .libs/libmonoruntime_static_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threads.lo -MD -MP -MF .deps/libmonoruntime_static_la-threads.Tpo -c -o libmonoruntime_static_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-threads.lo -MD -MP -MF .deps/libmonoruntime_static_la-threads.Tpo -c -o libmonoruntime_static_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc.Tpo -c -o .libs/libmonoruntime_static_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc.Tpo -c -o .libs/libmonoruntime_static_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc.Tpo -c -o .libs/libmonoruntime_static_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_static_la-seq-points-data.Tpo -c -o libmonoruntime_static_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_static_la-seq-points-data.Tpo -c -o libmonoruntime_static_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntime_static_la-seq-points-data.Tpo -c -o libmonoruntime_static_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_static_la-monitor.Tpo -c -o .libs/libmonoruntime_static_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_static_la-monitor.Tpo -c -o .libs/libmonoruntime_static_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_static_la-monitor.Tpo -c -o .libs/libmonoruntime_static_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc.Tpo -c -o libmonoruntime_static_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc.Tpo -c -o libmonoruntime_static_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-gc.Tpo -c -o libmonoruntime_static_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-hash.Tpo -c -o .libs/libmonoruntime_static_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-hash.Tpo -c -o .libs/libmonoruntime_static_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-hash.Tpo -c -o .libs/libmonoruntime_static_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-domain.lo -MD -MP -MF .deps/libmonoruntime_static_la-domain.Tpo -c -o libmonoruntime_static_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-domain.lo -MD -MP -MF .deps/libmonoruntime_static_la-domain.Tpo -c -o libmonoruntime_static_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-domain.lo -MD -MP -MF .deps/libmonoruntime_static_la-domain.Tpo -c -o libmonoruntime_static_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_static_la-appdomain.Tpo -c -o libmonoruntime_static_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_static_la-monitor.Tpo -c -o libmonoruntime_static_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_static_la-appdomain.Tpo -c -o libmonoruntime_static_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_static_la-monitor.Tpo -c -o libmonoruntime_static_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntime_static_la-appdomain.Tpo -c -o libmonoruntime_static_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntime_static_la-monitor.Tpo -c -o libmonoruntime_static_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-hash.Tpo -c -o libmonoruntime_static_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-hash.Tpo -c -o libmonoruntime_static_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntime_static_la-mono-hash.Tpo -c -o libmonoruntime_static_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-object.lo -MD -MP -MF .deps/libmonoruntime_static_la-object.Tpo -c -o .libs/libmonoruntime_static_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-object.lo -MD -MP -MF .deps/libmonoruntime_static_la-object.Tpo -c -o .libs/libmonoruntime_static_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-object.lo -MD -MP -MF .deps/libmonoruntime_static_la-object.Tpo -c -o .libs/libmonoruntime_static_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_static_la-reflection.Tpo -c -o .libs/libmonoruntime_static_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-null-gc.Tpo -c -o .libs/libmonoruntime_static_la-null-gc.o null-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_static_la-reflection.Tpo -c -o .libs/libmonoruntime_static_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-null-gc.Tpo -c -o .libs/libmonoruntime_static_la-null-gc.o null-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_static_la-reflection.Tpo -c -o .libs/libmonoruntime_static_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-null-gc.Tpo -c -o .libs/libmonoruntime_static_la-null-gc.o null-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-null-gc.Tpo -c -o libmonoruntime_static_la-null-gc.o null-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-null-gc.Tpo -c -o libmonoruntime_static_la-null-gc.o null-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-null-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-null-gc.Tpo -c -o libmonoruntime_static_la-null-gc.o null-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/null-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-boehm-gc.Tpo -c -o .libs/libmonoruntime_static_la-boehm-gc.o boehm-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-boehm-gc.Tpo -c -o .libs/libmonoruntime_static_la-boehm-gc.o boehm-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-boehm-gc.Tpo -c -o .libs/libmonoruntime_static_la-boehm-gc.o boehm-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-console-unix.Tpo -c -o .libs/libmonoruntimesgen_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-console-unix.Tpo -c -o .libs/libmonoruntimesgen_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-console-unix.Tpo -c -o .libs/libmonoruntimesgen_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_la-assembly.Tpo -c -o .libs/libmonoruntimesgen_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_la-assembly.Tpo -c -o .libs/libmonoruntimesgen_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_la-assembly.Tpo -c -o .libs/libmonoruntimesgen_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-console-unix.Tpo -c -o libmonoruntimesgen_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-console-unix.Tpo -c -o libmonoruntimesgen_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-attach.Tpo -c -o .libs/libmonoruntimesgen_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-console-unix.Tpo -c -o libmonoruntimesgen_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-attach.Tpo -c -o .libs/libmonoruntimesgen_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-attach.Tpo -c -o .libs/libmonoruntimesgen_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-boehm-gc.Tpo -c -o libmonoruntime_static_la-boehm-gc.o boehm-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-boehm-gc.Tpo -c -o libmonoruntime_static_la-boehm-gc.o boehm-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-boehm-gc.lo -MD -MP -MF .deps/libmonoruntime_static_la-boehm-gc.Tpo -c -o libmonoruntime_static_la-boehm-gc.o boehm-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/boehm-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-attach.Tpo -c -o libmonoruntimesgen_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-attach.Tpo -c -o libmonoruntimesgen_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-attach.Tpo -c -o libmonoruntimesgen_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_la-class.Tpo -c -o .libs/libmonoruntimesgen_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_la-class.Tpo -c -o .libs/libmonoruntimesgen_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_la-class.Tpo -c -o .libs/libmonoruntimesgen_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_la-cominterop.Tpo -c -o .libs/libmonoruntimesgen_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_la-cominterop.Tpo -c -o .libs/libmonoruntimesgen_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_la-cominterop.Tpo -c -o .libs/libmonoruntimesgen_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_la-coree.Tpo -c -o .libs/libmonoruntimesgen_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_la-coree.Tpo -c -o .libs/libmonoruntimesgen_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_la-coree.Tpo -c -o .libs/libmonoruntimesgen_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_la-coree.Tpo -c -o libmonoruntimesgen_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_la-coree.Tpo -c -o libmonoruntimesgen_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_la-coree.Tpo -c -o libmonoruntimesgen_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-helpers.Tpo -c -o .libs/libmonoruntimesgen_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-helpers.Tpo -c -o .libs/libmonoruntimesgen_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-helpers.Tpo -c -o .libs/libmonoruntimesgen_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntimesgen_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntimesgen_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntimesgen_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-helpers.Tpo -c -o libmonoruntimesgen_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-helpers.Tpo -c -o libmonoruntimesgen_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-helpers.Tpo -c -o libmonoruntimesgen_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-mono-symfile.Tpo -c -o libmonoruntimesgen_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-mono-symfile.Tpo -c -o libmonoruntimesgen_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_la-debug-mono-symfile.Tpo -c -o libmonoruntimesgen_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_la-assembly.Tpo -c -o libmonoruntimesgen_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_la-assembly.Tpo -c -o libmonoruntimesgen_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_la-assembly.Tpo -c -o libmonoruntimesgen_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-decimal-ms.Tpo -c -o .libs/libmonoruntimesgen_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-decimal-ms.Tpo -c -o .libs/libmonoruntimesgen_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-decimal-ms.Tpo -c -o .libs/libmonoruntimesgen_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_la-environment.Tpo -c -o .libs/libmonoruntimesgen_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_la-environment.Tpo -c -o .libs/libmonoruntimesgen_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_la-environment.Tpo -c -o .libs/libmonoruntimesgen_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_la-cominterop.Tpo -c -o libmonoruntimesgen_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_la-cominterop.Tpo -c -o libmonoruntimesgen_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_la-cominterop.Tpo -c -o libmonoruntimesgen_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_la-environment.Tpo -c -o libmonoruntimesgen_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_la-environment.Tpo -c -o libmonoruntimesgen_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_la-environment.Tpo -c -o libmonoruntimesgen_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-object.lo -MD -MP -MF .deps/libmonoruntime_static_la-object.Tpo -c -o libmonoruntime_static_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-object.lo -MD -MP -MF .deps/libmonoruntime_static_la-object.Tpo -c -o libmonoruntime_static_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-object.lo -MD -MP -MF .deps/libmonoruntime_static_la-object.Tpo -c -o libmonoruntime_static_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_la-exception.Tpo -c -o .libs/libmonoruntimesgen_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_la-exception.Tpo -c -o .libs/libmonoruntimesgen_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_la-exception.Tpo -c -o .libs/libmonoruntimesgen_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_la-exception.Tpo -c -o libmonoruntimesgen_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_la-exception.Tpo -c -o libmonoruntimesgen_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_la-exception.Tpo -c -o libmonoruntimesgen_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-decimal-ms.Tpo -c -o libmonoruntimesgen_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-decimal-ms.Tpo -c -o libmonoruntimesgen_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-decimal-ms.Tpo -c -o libmonoruntimesgen_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-io.Tpo -c -o .libs/libmonoruntimesgen_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-io.Tpo -c -o .libs/libmonoruntimesgen_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-io.Tpo -c -o .libs/libmonoruntimesgen_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_la-filewatcher.Tpo -c -o .libs/libmonoruntimesgen_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_la-filewatcher.Tpo -c -o .libs/libmonoruntimesgen_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_la-filewatcher.Tpo -c -o .libs/libmonoruntimesgen_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_la-filewatcher.Tpo -c -o libmonoruntimesgen_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_la-filewatcher.Tpo -c -o libmonoruntimesgen_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_la-filewatcher.Tpo -c -o libmonoruntimesgen_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-io.Tpo -c -o libmonoruntimesgen_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-io.Tpo -c -o libmonoruntimesgen_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntimesgen_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-io.Tpo -c -o libmonoruntimesgen_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntimesgen_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntimesgen_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_la-icall.Tpo -c -o .libs/libmonoruntimesgen_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_la-icall.Tpo -c -o .libs/libmonoruntimesgen_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_la-icall.Tpo -c -o .libs/libmonoruntimesgen_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc-memfuncs.Tpo -c -o libmonoruntimesgen_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc-memfuncs.Tpo -c -o libmonoruntimesgen_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc-memfuncs.Tpo -c -o libmonoruntimesgen_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_la-image.Tpo -c -o .libs/libmonoruntimesgen_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_la-image.Tpo -c -o .libs/libmonoruntimesgen_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_la-image.Tpo -c -o .libs/libmonoruntimesgen_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_la-jit-info.Tpo -c -o .libs/libmonoruntimesgen_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_la-jit-info.Tpo -c -o .libs/libmonoruntimesgen_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_la-jit-info.Tpo -c -o .libs/libmonoruntimesgen_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_la-loader.Tpo -c -o .libs/libmonoruntimesgen_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_la-loader.Tpo -c -o .libs/libmonoruntimesgen_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_la-loader.Tpo -c -o .libs/libmonoruntimesgen_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_la-jit-info.Tpo -c -o libmonoruntimesgen_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_la-jit-info.Tpo -c -o libmonoruntimesgen_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_la-jit-info.Tpo -c -o libmonoruntimesgen_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_la-image.Tpo -c -o libmonoruntimesgen_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_la-image.Tpo -c -o libmonoruntimesgen_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_la-image.Tpo -c -o libmonoruntimesgen_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_la-locales.Tpo -c -o .libs/libmonoruntimesgen_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_la-locales.Tpo -c -o .libs/libmonoruntimesgen_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_la-locales.Tpo -c -o .libs/libmonoruntimesgen_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_la-lock-tracer.Tpo -c -o .libs/libmonoruntimesgen_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_la-lock-tracer.Tpo -c -o .libs/libmonoruntimesgen_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_la-lock-tracer.Tpo -c -o .libs/libmonoruntimesgen_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_la-lock-tracer.Tpo -c -o libmonoruntimesgen_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_la-lock-tracer.Tpo -c -o libmonoruntimesgen_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_la-lock-tracer.Tpo -c -o libmonoruntimesgen_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_la-loader.Tpo -c -o libmonoruntimesgen_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-verify.Tpo -c -o libmonoruntime_static_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_la-loader.Tpo -c -o libmonoruntimesgen_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-verify.Tpo -c -o libmonoruntime_static_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_la-loader.Tpo -c -o libmonoruntimesgen_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-verify.lo -MD -MP -MF .deps/libmonoruntime_static_la-verify.Tpo -c -o libmonoruntime_static_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-marshal.Tpo -c -o .libs/libmonoruntimesgen_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-marshal.Tpo -c -o .libs/libmonoruntimesgen_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-marshal.Tpo -c -o .libs/libmonoruntimesgen_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mempool.Tpo -c -o .libs/libmonoruntimesgen_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mempool.Tpo -c -o .libs/libmonoruntimesgen_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mempool.Tpo -c -o .libs/libmonoruntimesgen_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mempool.Tpo -c -o libmonoruntimesgen_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mempool.Tpo -c -o libmonoruntimesgen_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mempool.Tpo -c -o libmonoruntimesgen_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_la-class.Tpo -c -o libmonoruntimesgen_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_la-class.Tpo -c -o libmonoruntimesgen_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_la-class.Tpo -c -o libmonoruntimesgen_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata.Tpo -c -o .libs/libmonoruntimesgen_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata.Tpo -c -o .libs/libmonoruntimesgen_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata.Tpo -c -o .libs/libmonoruntimesgen_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_la-locales.Tpo -c -o libmonoruntimesgen_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_la-locales.Tpo -c -o libmonoruntimesgen_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_la-locales.Tpo -c -o libmonoruntimesgen_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-verify.Tpo -c -o .libs/libmonoruntimesgen_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-verify.Tpo -c -o .libs/libmonoruntimesgen_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-verify.Tpo -c -o .libs/libmonoruntimesgen_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_la-icall.Tpo -c -o libmonoruntimesgen_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_la-icall.Tpo -c -o libmonoruntimesgen_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_la-icall.Tpo -c -o libmonoruntimesgen_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_la-method-builder.Tpo -c -o .libs/libmonoruntimesgen_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_la-method-builder.Tpo -c -o .libs/libmonoruntimesgen_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_la-method-builder.Tpo -c -o .libs/libmonoruntimesgen_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_static_la-reflection.Tpo -c -o libmonoruntime_static_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_static_la-reflection.Tpo -c -o libmonoruntime_static_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntime_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntime_static_la-reflection.Tpo -c -o libmonoruntime_static_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_la-method-builder.Tpo -c -o libmonoruntimesgen_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_la-method-builder.Tpo -c -o libmonoruntimesgen_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_la-method-builder.Tpo -c -o libmonoruntimesgen_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata.Tpo -c -o libmonoruntimesgen_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata.Tpo -c -o libmonoruntimesgen_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata.Tpo -c -o libmonoruntimesgen_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-basic-block.Tpo -c -o .libs/libmonoruntimesgen_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-basic-block.Tpo -c -o .libs/libmonoruntimesgen_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-basic-block.Tpo -c -o .libs/libmonoruntimesgen_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-basic-block.Tpo -c -o libmonoruntimesgen_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-basic-block.Tpo -c -o libmonoruntimesgen_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-basic-block.Tpo -c -o libmonoruntimesgen_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-config.Tpo -c -o .libs/libmonoruntimesgen_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-config.Tpo -c -o .libs/libmonoruntimesgen_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-config.Tpo -c -o .libs/libmonoruntimesgen_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-config.Tpo -c -o libmonoruntimesgen_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-config.Tpo -c -o libmonoruntimesgen_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-config.Tpo -c -o libmonoruntimesgen_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-marshal.Tpo -c -o libmonoruntimesgen_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-marshal.Tpo -c -o libmonoruntimesgen_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-marshal.Tpo -c -o libmonoruntimesgen_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-cq.Tpo -c -o .libs/libmonoruntimesgen_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-cq.Tpo -c -o .libs/libmonoruntimesgen_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-cq.Tpo -c -o .libs/libmonoruntimesgen_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-cq.Tpo -c -o libmonoruntimesgen_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-cq.Tpo -c -o libmonoruntimesgen_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-cq.Tpo -c -o libmonoruntimesgen_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-debug.Tpo -c -o .libs/libmonoruntimesgen_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-debug.Tpo -c -o .libs/libmonoruntimesgen_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-debug.Tpo -c -o .libs/libmonoruntimesgen_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-endian.Tpo -c -o .libs/libmonoruntimesgen_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-endian.Tpo -c -o .libs/libmonoruntimesgen_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-endian.Tpo -c -o .libs/libmonoruntimesgen_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-mlist.Tpo -c -o .libs/libmonoruntimesgen_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntimesgen_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-mlist.Tpo -c -o .libs/libmonoruntimesgen_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntimesgen_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-endian.Tpo -c -o libmonoruntimesgen_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-mlist.Tpo -c -o .libs/libmonoruntimesgen_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-endian.Tpo -c -o libmonoruntimesgen_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntimesgen_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-endian.Tpo -c -o libmonoruntimesgen_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-mlist.Tpo -c -o libmonoruntimesgen_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-mlist.Tpo -c -o libmonoruntimesgen_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-route.Tpo -c -o .libs/libmonoruntimesgen_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-debug.Tpo -c -o libmonoruntimesgen_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-route.Tpo -c -o .libs/libmonoruntimesgen_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-debug.Tpo -c -o libmonoruntimesgen_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-mlist.Tpo -c -o libmonoruntimesgen_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-route.Tpo -c -o .libs/libmonoruntimesgen_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-debug.Tpo -c -o libmonoruntimesgen_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-wsq.Tpo -c -o .libs/libmonoruntimesgen_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-route.Tpo -c -o libmonoruntimesgen_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-wsq.Tpo -c -o .libs/libmonoruntimesgen_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-route.Tpo -c -o libmonoruntimesgen_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-wsq.Tpo -c -o .libs/libmonoruntimesgen_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-route.Tpo -c -o libmonoruntimesgen_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-wsq.Tpo -c -o libmonoruntimesgen_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-wsq.Tpo -c -o libmonoruntimesgen_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-wsq.Tpo -c -o libmonoruntimesgen_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_la-opcodes.Tpo -c -o .libs/libmonoruntimesgen_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_la-opcodes.Tpo -c -o .libs/libmonoruntimesgen_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_la-opcodes.Tpo -c -o .libs/libmonoruntimesgen_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-socket-io.Tpo -c -o .libs/libmonoruntimesgen_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-socket-io.Tpo -c -o .libs/libmonoruntimesgen_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_la-opcodes.Tpo -c -o libmonoruntimesgen_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-socket-io.Tpo -c -o .libs/libmonoruntimesgen_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_la-opcodes.Tpo -c -o libmonoruntimesgen_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_la-opcodes.Tpo -c -o libmonoruntimesgen_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_la-process.Tpo -c -o .libs/libmonoruntimesgen_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_la-process.Tpo -c -o .libs/libmonoruntimesgen_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_la-profiler.Tpo -c -o .libs/libmonoruntimesgen_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_la-process.Tpo -c -o .libs/libmonoruntimesgen_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_la-profiler.Tpo -c -o .libs/libmonoruntimesgen_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_la-profiler.Tpo -c -o .libs/libmonoruntimesgen_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-perfcounters.Tpo -c -o libmonoruntimesgen_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-perfcounters.Tpo -c -o libmonoruntimesgen_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-perfcounters.Tpo -c -o libmonoruntimesgen_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-verify.Tpo -c -o libmonoruntimesgen_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-verify.Tpo -c -o libmonoruntimesgen_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-verify.Tpo -c -o libmonoruntimesgen_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_la-process.Tpo -c -o libmonoruntimesgen_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_la-process.Tpo -c -o libmonoruntimesgen_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_la-process.Tpo -c -o libmonoruntimesgen_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_la-profiler.Tpo -c -o libmonoruntimesgen_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_la-profiler.Tpo -c -o libmonoruntimesgen_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_la-profiler.Tpo -c -o libmonoruntimesgen_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-socket-io.Tpo -c -o libmonoruntimesgen_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-socket-io.Tpo -c -o libmonoruntimesgen_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-socket-io.Tpo -c -o libmonoruntimesgen_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_la-rand.Tpo -c -o .libs/libmonoruntimesgen_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_la-rand.Tpo -c -o .libs/libmonoruntimesgen_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_la-rand.Tpo -c -o .libs/libmonoruntimesgen_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_la-rand.Tpo -c -o libmonoruntimesgen_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_la-rand.Tpo -c -o libmonoruntimesgen_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_la-rand.Tpo -c -o libmonoruntimesgen_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_la-remoting.Tpo -c -o .libs/libmonoruntimesgen_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_la-remoting.Tpo -c -o .libs/libmonoruntimesgen_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_la-remoting.Tpo -c -o .libs/libmonoruntimesgen_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_la-runtime.Tpo -c -o .libs/libmonoruntimesgen_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_la-runtime.Tpo -c -o .libs/libmonoruntimesgen_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_la-runtime.Tpo -c -o .libs/libmonoruntimesgen_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-security.Tpo -c -o .libs/libmonoruntimesgen_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-security.Tpo -c -o .libs/libmonoruntimesgen_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-security.Tpo -c -o .libs/libmonoruntimesgen_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-core-clr.Tpo -c -o .libs/libmonoruntimesgen_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-core-clr.Tpo -c -o .libs/libmonoruntimesgen_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-core-clr.Tpo -c -o .libs/libmonoruntimesgen_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_la-runtime.Tpo -c -o libmonoruntimesgen_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_la-runtime.Tpo -c -o libmonoruntimesgen_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_la-runtime.Tpo -c -o libmonoruntimesgen_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-security.Tpo -c -o libmonoruntimesgen_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-security.Tpo -c -o libmonoruntimesgen_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-security.Tpo -c -o libmonoruntimesgen_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-manager.Tpo -c -o .libs/libmonoruntimesgen_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-manager.Tpo -c -o .libs/libmonoruntimesgen_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-manager.Tpo -c -o .libs/libmonoruntimesgen_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-core-clr.Tpo -c -o libmonoruntimesgen_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-core-clr.Tpo -c -o libmonoruntimesgen_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-core-clr.Tpo -c -o libmonoruntimesgen_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_la-string-icalls.Tpo -c -o .libs/libmonoruntimesgen_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_la-string-icalls.Tpo -c -o .libs/libmonoruntimesgen_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_la-string-icalls.Tpo -c -o .libs/libmonoruntimesgen_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sysmath.Tpo -c -o .libs/libmonoruntimesgen_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sysmath.Tpo -c -o .libs/libmonoruntimesgen_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sysmath.Tpo -c -o .libs/libmonoruntimesgen_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-manager.Tpo -c -o libmonoruntimesgen_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-manager.Tpo -c -o libmonoruntimesgen_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_la-security-manager.Tpo -c -o libmonoruntimesgen_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_la-string-icalls.Tpo -c -o libmonoruntimesgen_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_la-string-icalls.Tpo -c -o libmonoruntimesgen_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_la-string-icalls.Tpo -c -o libmonoruntimesgen_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sysmath.Tpo -c -o libmonoruntimesgen_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sysmath.Tpo -c -o libmonoruntimesgen_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sysmath.Tpo -c -o libmonoruntimesgen_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_la-remoting.Tpo -c -o libmonoruntimesgen_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_la-remoting.Tpo -c -o libmonoruntimesgen_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_la-remoting.Tpo -c -o libmonoruntimesgen_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threads.Tpo -c -o .libs/libmonoruntimesgen_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threads.Tpo -c -o .libs/libmonoruntimesgen_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threads.Tpo -c -o .libs/libmonoruntimesgen_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntimesgen_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms-io.Tpo -c -o libmonoruntimesgen_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms-io.Tpo -c -o libmonoruntimesgen_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms-io.Tpo -c -o libmonoruntimesgen_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_la-tpool-poll.Tpo -c -o .libs/libmonoruntimesgen_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_la-tpool-poll.Tpo -c -o .libs/libmonoruntimesgen_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_la-tpool-poll.Tpo -c -o .libs/libmonoruntimesgen_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool.Tpo -c -o libmonoruntimesgen_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool.Tpo -c -o libmonoruntimesgen_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool.Tpo -c -o libmonoruntimesgen_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms.Tpo -c -o libmonoruntimesgen_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms.Tpo -c -o libmonoruntimesgen_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threadpool-ms.Tpo -c -o libmonoruntimesgen_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_la-tpool-poll.Tpo -c -o libmonoruntimesgen_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-verify.Tpo -c -o .libs/libmonoruntimesgen_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_la-tpool-poll.Tpo -c -o libmonoruntimesgen_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-verify.Tpo -c -o .libs/libmonoruntimesgen_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_la-tpool-poll.Tpo -c -o libmonoruntimesgen_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-verify.Tpo -c -o .libs/libmonoruntimesgen_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntimesgen_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntimesgen_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntimesgen_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntimesgen_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntimesgen_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntimesgen_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-windows.Tpo -c -o libmonoruntimesgen_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-windows.Tpo -c -o libmonoruntimesgen_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-windows.Tpo -c -o libmonoruntimesgen_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntimesgen_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntimesgen_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntimesgen_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-posix.Tpo -c -o libmonoruntimesgen_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-posix.Tpo -c -o libmonoruntimesgen_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-file-mmap-posix.Tpo -c -o libmonoruntimesgen_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-cross-helpers.Tpo -c -o libmonoruntimesgen_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-cross-helpers.Tpo -c -o libmonoruntimesgen_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-metadata-cross-helpers.Tpo -c -o libmonoruntimesgen_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_la-seq-points-data.Tpo -c -o .libs/libmonoruntimesgen_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_la-seq-points-data.Tpo -c -o .libs/libmonoruntimesgen_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_la-seq-points-data.Tpo -c -o .libs/libmonoruntimesgen_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-appdomain.Tpo -c -o .libs/libmonoruntimesgen_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-appdomain.Tpo -c -o .libs/libmonoruntimesgen_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-appdomain.Tpo -c -o .libs/libmonoruntimesgen_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-domain.Tpo -c -o .libs/libmonoruntimesgen_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_la-seq-points-data.Tpo -c -o libmonoruntimesgen_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-domain.Tpo -c -o .libs/libmonoruntimesgen_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_la-seq-points-data.Tpo -c -o libmonoruntimesgen_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-domain.Tpo -c -o .libs/libmonoruntimesgen_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_la-seq-points-data.Tpo -c -o libmonoruntimesgen_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc.Tpo -c -o .libs/libmonoruntimesgen_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc.Tpo -c -o .libs/libmonoruntimesgen_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc.Tpo -c -o .libs/libmonoruntimesgen_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threads.Tpo -c -o libmonoruntimesgen_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threads.Tpo -c -o libmonoruntimesgen_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_la-threads.Tpo -c -o libmonoruntimesgen_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-monitor.Tpo -c -o .libs/libmonoruntimesgen_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-monitor.Tpo -c -o .libs/libmonoruntimesgen_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-monitor.Tpo -c -o .libs/libmonoruntimesgen_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc.Tpo -c -o libmonoruntimesgen_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc.Tpo -c -o libmonoruntimesgen_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-gc.Tpo -c -o libmonoruntimesgen_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-monitor.Tpo -c -o libmonoruntimesgen_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-monitor.Tpo -c -o libmonoruntimesgen_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-monitor.Tpo -c -o libmonoruntimesgen_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-hash.Tpo -c -o .libs/libmonoruntimesgen_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-hash.Tpo -c -o .libs/libmonoruntimesgen_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-domain.Tpo -c -o libmonoruntimesgen_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-domain.Tpo -c -o libmonoruntimesgen_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-hash.Tpo -c -o .libs/libmonoruntimesgen_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-domain.Tpo -c -o libmonoruntimesgen_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-hash.Tpo -c -o libmonoruntimesgen_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-hash.Tpo -c -o libmonoruntimesgen_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-appdomain.Tpo -c -o libmonoruntimesgen_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-mono-hash.Tpo -c -o libmonoruntimesgen_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-appdomain.Tpo -c -o libmonoruntimesgen_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_la-object.Tpo -c -o .libs/libmonoruntimesgen_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_la-appdomain.Tpo -c -o libmonoruntimesgen_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_la-object.Tpo -c -o .libs/libmonoruntimesgen_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_la-object.Tpo -c -o .libs/libmonoruntimesgen_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_la-reflection.Tpo -c -o .libs/libmonoruntimesgen_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_la-reflection.Tpo -c -o .libs/libmonoruntimesgen_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_la-reflection.Tpo -c -o .libs/libmonoruntimesgen_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-posix.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-posix.o sgen-os-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-posix.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-posix.o sgen-os-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-posix.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-posix.o sgen-os-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-posix.Tpo -c -o libmonoruntimesgen_la-sgen-os-posix.o sgen-os-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-posix.Tpo -c -o libmonoruntimesgen_la-sgen-os-posix.o sgen-os-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-posix.Tpo -c -o libmonoruntimesgen_la-sgen-os-posix.o sgen-os-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-mach.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-mach.o sgen-os-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-mach.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-mach.o sgen-os-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-mach.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-mach.o sgen-os-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-win32.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-win32.o sgen-os-win32.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-win32.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-win32.o sgen-os-win32.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-win32.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-os-win32.o sgen-os-win32.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-win32.Tpo -c -o libmonoruntimesgen_la-sgen-os-win32.o sgen-os-win32.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-win32.Tpo -c -o libmonoruntimesgen_la-sgen-os-win32.o sgen-os-win32.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-win32.Tpo -c -o libmonoruntimesgen_la-sgen-os-win32.o sgen-os-win32.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-mach.Tpo -c -o libmonoruntimesgen_la-sgen-os-mach.o sgen-os-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-mach.Tpo -c -o libmonoruntimesgen_la-sgen-os-mach.o sgen-os-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gc.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-gc.o sgen-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-os-mach.Tpo -c -o libmonoruntimesgen_la-sgen-os-mach.o sgen-os-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gc.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-gc.o sgen-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gc.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-gc.o sgen-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-internal.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-internal.o sgen-internal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-internal.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-internal.o sgen-internal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-internal.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-internal.o sgen-internal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-marksweep.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-marksweep.o sgen-marksweep.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-marksweep.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-marksweep.o sgen-marksweep.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-marksweep.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-marksweep.o sgen-marksweep.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-los.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-los.o sgen-los.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-los.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-los.o sgen-los.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-los.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-los.o sgen-los.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-internal.Tpo -c -o libmonoruntimesgen_la-sgen-internal.o sgen-internal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-internal.Tpo -c -o libmonoruntimesgen_la-sgen-internal.o sgen-internal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-internal.Tpo -c -o libmonoruntimesgen_la-sgen-internal.o sgen-internal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-protocol.o sgen-protocol.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-protocol.o sgen-protocol.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-los.Tpo -c -o libmonoruntimesgen_la-sgen-los.o sgen-los.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-protocol.o sgen-protocol.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-los.Tpo -c -o libmonoruntimesgen_la-sgen-los.o sgen-los.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-los.Tpo -c -o libmonoruntimesgen_la-sgen-los.o sgen-los.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_la-sgen-protocol.o sgen-protocol.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-bridge.o sgen-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_la-sgen-protocol.o sgen-protocol.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-bridge.o sgen-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_la-sgen-protocol.o sgen-protocol.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-bridge.o sgen-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-old-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-old-bridge.o sgen-old-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-old-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-old-bridge.o sgen-old-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-old-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-old-bridge.o sgen-old-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-bridge.o sgen-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-bridge.o sgen-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-new-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-new-bridge.o sgen-new-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-bridge.o sgen-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-new-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-new-bridge.o sgen-new-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-new-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-new-bridge.o sgen-new-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-tarjan-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-tarjan-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-tarjan-bridge.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_la-object.Tpo -c -o libmonoruntimesgen_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_la-object.Tpo -c -o libmonoruntimesgen_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_la-object.Tpo -c -o libmonoruntimesgen_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-old-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-old-bridge.o sgen-old-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-old-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-old-bridge.o sgen-old-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-old-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-old-bridge.o sgen-old-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-tarjan-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-tarjan-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-tarjan-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gc.Tpo -c -o libmonoruntimesgen_la-sgen-gc.o sgen-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gc.Tpo -c -o libmonoruntimesgen_la-sgen-gc.o sgen-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gc.Tpo -c -o libmonoruntimesgen_la-sgen-gc.o sgen-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-new-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-new-bridge.o sgen-new-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-new-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-new-bridge.o sgen-new-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-new-bridge.Tpo -c -o libmonoruntimesgen_la-sgen-new-bridge.o sgen-new-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-marksweep.Tpo -c -o libmonoruntimesgen_la-sgen-marksweep.o sgen-marksweep.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-marksweep.Tpo -c -o libmonoruntimesgen_la-sgen-marksweep.o sgen-marksweep.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-marksweep.Tpo -c -o libmonoruntimesgen_la-sgen-marksweep.o sgen-marksweep.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-toggleref.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-toggleref.o sgen-toggleref.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-toggleref.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-toggleref.o sgen-toggleref.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-toggleref.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-toggleref.o sgen-toggleref.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-cardtable.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-cardtable.o sgen-cardtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-cardtable.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-cardtable.o sgen-cardtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-cardtable.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-cardtable.o sgen-cardtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-toggleref.Tpo -c -o libmonoruntimesgen_la-sgen-toggleref.o sgen-toggleref.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-toggleref.Tpo -c -o libmonoruntimesgen_la-sgen-toggleref.o sgen-toggleref.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-toggleref.Tpo -c -o libmonoruntimesgen_la-sgen-toggleref.o sgen-toggleref.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pointer-queue.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pointer-queue.o sgen-pointer-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pointer-queue.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pointer-queue.o sgen-pointer-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pointer-queue.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pointer-queue.o sgen-pointer-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-cardtable.Tpo -c -o libmonoruntimesgen_la-sgen-cardtable.o sgen-cardtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-cardtable.Tpo -c -o libmonoruntimesgen_la-sgen-cardtable.o sgen-cardtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-cardtable.Tpo -c -o libmonoruntimesgen_la-sgen-cardtable.o sgen-cardtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pointer-queue.Tpo -c -o libmonoruntimesgen_la-sgen-pointer-queue.o sgen-pointer-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pointer-queue.Tpo -c -o libmonoruntimesgen_la-sgen-pointer-queue.o sgen-pointer-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pointer-queue.Tpo -c -o libmonoruntimesgen_la-sgen-pointer-queue.o sgen-pointer-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pinning.o sgen-pinning.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pinning.o sgen-pinning.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pinning.o sgen-pinning.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning-stats.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pinning-stats.o sgen-pinning-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning-stats.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pinning-stats.o sgen-pinning-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning-stats.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-pinning-stats.o sgen-pinning-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-workers.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-workers.o sgen-workers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning.Tpo -c -o libmonoruntimesgen_la-sgen-pinning.o sgen-pinning.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-workers.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-workers.o sgen-workers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning.Tpo -c -o libmonoruntimesgen_la-sgen-pinning.o sgen-pinning.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-workers.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-workers.o sgen-workers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning.Tpo -c -o libmonoruntimesgen_la-sgen-pinning.o sgen-pinning.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning-stats.Tpo -c -o libmonoruntimesgen_la-sgen-pinning-stats.o sgen-pinning-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning-stats.Tpo -c -o libmonoruntimesgen_la-sgen-pinning-stats.o sgen-pinning-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-pinning-stats.Tpo -c -o libmonoruntimesgen_la-sgen-pinning-stats.o sgen-pinning-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-workers.Tpo -c -o libmonoruntimesgen_la-sgen-workers.o sgen-workers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gray.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-gray.o sgen-gray.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-workers.Tpo -c -o libmonoruntimesgen_la-sgen-workers.o sgen-workers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gray.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-gray.o sgen-gray.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-workers.Tpo -c -o libmonoruntimesgen_la-sgen-workers.o sgen-workers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gray.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-gray.o sgen-gray.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-nursery-allocator.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-nursery-allocator.o sgen-nursery-allocator.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-nursery-allocator.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-nursery-allocator.o sgen-nursery-allocator.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-nursery-allocator.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-nursery-allocator.o sgen-nursery-allocator.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gray.Tpo -c -o libmonoruntimesgen_la-sgen-gray.o sgen-gray.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gray.Tpo -c -o libmonoruntimesgen_la-sgen-gray.o sgen-gray.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-hash-table.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-hash-table.o sgen-hash-table.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-gray.Tpo -c -o libmonoruntimesgen_la-sgen-gray.o sgen-gray.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-hash-table.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-hash-table.o sgen-hash-table.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-hash-table.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-hash-table.o sgen-hash-table.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-descriptor.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-descriptor.o sgen-descriptor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-descriptor.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-descriptor.o sgen-descriptor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-descriptor.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-descriptor.o sgen-descriptor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-hash-table.Tpo -c -o libmonoruntimesgen_la-sgen-hash-table.o sgen-hash-table.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-hash-table.Tpo -c -o libmonoruntimesgen_la-sgen-hash-table.o sgen-hash-table.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-hash-table.Tpo -c -o libmonoruntimesgen_la-sgen-hash-table.o sgen-hash-table.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-alloc.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-alloc.o sgen-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-alloc.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-alloc.o sgen-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-alloc.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-alloc.o sgen-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-descriptor.Tpo -c -o libmonoruntimesgen_la-sgen-descriptor.o sgen-descriptor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-nursery-allocator.Tpo -c -o libmonoruntimesgen_la-sgen-nursery-allocator.o sgen-nursery-allocator.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-descriptor.Tpo -c -o libmonoruntimesgen_la-sgen-descriptor.o sgen-descriptor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-nursery-allocator.Tpo -c -o libmonoruntimesgen_la-sgen-nursery-allocator.o sgen-nursery-allocator.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-descriptor.Tpo -c -o libmonoruntimesgen_la-sgen-descriptor.o sgen-descriptor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-nursery-allocator.Tpo -c -o libmonoruntimesgen_la-sgen-nursery-allocator.o sgen-nursery-allocator.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-verify.Tpo -c -o libmonoruntimesgen_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-verify.Tpo -c -o libmonoruntimesgen_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_la-verify.Tpo -c -o libmonoruntimesgen_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-debug.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-debug.o sgen-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-debug.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-debug.o sgen-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-debug.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-debug.o sgen-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-simple-nursery.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-simple-nursery.o sgen-simple-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-split-nursery.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-split-nursery.o sgen-split-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-simple-nursery.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-simple-nursery.o sgen-simple-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-split-nursery.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-split-nursery.o sgen-split-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-simple-nursery.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-simple-nursery.o sgen-simple-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-split-nursery.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-split-nursery.o sgen-split-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-memory-governor.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-memory-governor.o sgen-memory-governor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-memory-governor.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-memory-governor.o sgen-memory-governor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-memory-governor.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-memory-governor.o sgen-memory-governor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-stw.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-stw.o sgen-stw.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-alloc.Tpo -c -o libmonoruntimesgen_la-sgen-alloc.o sgen-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-stw.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-stw.o sgen-stw.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-alloc.Tpo -c -o libmonoruntimesgen_la-sgen-alloc.o sgen-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-stw.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-stw.o sgen-stw.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-alloc.Tpo -c -o libmonoruntimesgen_la-sgen-alloc.o sgen-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-memory-governor.Tpo -c -o libmonoruntimesgen_la-sgen-memory-governor.o sgen-memory-governor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-memory-governor.Tpo -c -o libmonoruntimesgen_la-sgen-memory-governor.o sgen-memory-governor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-memory-governor.Tpo -c -o libmonoruntimesgen_la-sgen-memory-governor.o sgen-memory-governor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-simple-nursery.Tpo -c -o libmonoruntimesgen_la-sgen-simple-nursery.o sgen-simple-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-simple-nursery.Tpo -c -o libmonoruntimesgen_la-sgen-simple-nursery.o sgen-simple-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-simple-nursery.Tpo -c -o libmonoruntimesgen_la-sgen-simple-nursery.o sgen-simple-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-stw.Tpo -c -o libmonoruntimesgen_la-sgen-stw.o sgen-stw.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-stw.Tpo -c -o libmonoruntimesgen_la-sgen-stw.o sgen-stw.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-stw.Tpo -c -o libmonoruntimesgen_la-sgen-stw.o sgen-stw.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-fin-weak-hash.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-fin-weak-hash.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-fin-weak-hash.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-split-nursery.Tpo -c -o libmonoruntimesgen_la-sgen-split-nursery.o sgen-split-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-split-nursery.Tpo -c -o libmonoruntimesgen_la-sgen-split-nursery.o sgen-split-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-split-nursery.Tpo -c -o libmonoruntimesgen_la-sgen-split-nursery.o sgen-split-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-layout-stats.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-layout-stats.o sgen-layout-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-layout-stats.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-layout-stats.o sgen-layout-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-layout-stats.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-layout-stats.o sgen-layout-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-layout-stats.Tpo -c -o libmonoruntimesgen_la-sgen-layout-stats.o sgen-layout-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-layout-stats.Tpo -c -o libmonoruntimesgen_la-sgen-layout-stats.o sgen-layout-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-layout-stats.Tpo -c -o libmonoruntimesgen_la-sgen-layout-stats.o sgen-layout-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-qsort.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-qsort.o sgen-qsort.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-thread-pool.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-thread-pool.o sgen-thread-pool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-qsort.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-qsort.o sgen-qsort.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-thread-pool.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-thread-pool.o sgen-thread-pool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-qsort.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-qsort.o sgen-qsort.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-thread-pool.Tpo -c -o .libs/libmonoruntimesgen_la-sgen-thread-pool.o sgen-thread-pool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-console-unix.Tpo -c -o .libs/libmonoruntimesgen_static_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-console-unix.Tpo -c -o .libs/libmonoruntimesgen_static_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-fin-weak-hash.Tpo -c -o libmonoruntimesgen_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-console-unix.Tpo -c -o .libs/libmonoruntimesgen_static_la-console-unix.o console-unix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-fin-weak-hash.Tpo -c -o libmonoruntimesgen_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-fin-weak-hash.Tpo -c -o libmonoruntimesgen_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-qsort.Tpo -c -o libmonoruntimesgen_la-sgen-qsort.o sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-qsort.Tpo -c -o libmonoruntimesgen_la-sgen-qsort.o sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-qsort.Tpo -c -o libmonoruntimesgen_la-sgen-qsort.o sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-thread-pool.Tpo -c -o libmonoruntimesgen_la-sgen-thread-pool.o sgen-thread-pool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-thread-pool.Tpo -c -o libmonoruntimesgen_la-sgen-thread-pool.o sgen-thread-pool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-thread-pool.Tpo -c -o libmonoruntimesgen_la-sgen-thread-pool.o sgen-thread-pool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-console-unix.Tpo -c -o libmonoruntimesgen_static_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-console-unix.Tpo -c -o libmonoruntimesgen_static_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-assembly.Tpo -c -o .libs/libmonoruntimesgen_static_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-console-unix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-console-unix.Tpo -c -o libmonoruntimesgen_static_la-console-unix.o console-unix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/console-unix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-debug.Tpo -c -o libmonoruntimesgen_la-sgen-debug.o sgen-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-assembly.Tpo -c -o .libs/libmonoruntimesgen_static_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-debug.Tpo -c -o libmonoruntimesgen_la-sgen-debug.o sgen-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-attach.Tpo -c -o .libs/libmonoruntimesgen_static_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-assembly.Tpo -c -o .libs/libmonoruntimesgen_static_la-assembly.o assembly.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-attach.Tpo -c -o .libs/libmonoruntimesgen_static_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_la-sgen-debug.Tpo -c -o libmonoruntimesgen_la-sgen-debug.o sgen-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-attach.Tpo -c -o .libs/libmonoruntimesgen_static_la-attach.o attach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-class.Tpo -c -o .libs/libmonoruntimesgen_static_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-class.Tpo -c -o .libs/libmonoruntimesgen_static_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-class.Tpo -c -o .libs/libmonoruntimesgen_static_la-class.o class.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-cominterop.Tpo -c -o .libs/libmonoruntimesgen_static_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-cominterop.Tpo -c -o .libs/libmonoruntimesgen_static_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-cominterop.Tpo -c -o .libs/libmonoruntimesgen_static_la-cominterop.o cominterop.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-attach.Tpo -c -o libmonoruntimesgen_static_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-attach.Tpo -c -o libmonoruntimesgen_static_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-attach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-attach.Tpo -c -o libmonoruntimesgen_static_la-attach.o attach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/attach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-coree.Tpo -c -o .libs/libmonoruntimesgen_static_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-coree.Tpo -c -o .libs/libmonoruntimesgen_static_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-coree.Tpo -c -o .libs/libmonoruntimesgen_static_la-coree.o coree.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-coree.Tpo -c -o libmonoruntimesgen_static_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-coree.Tpo -c -o libmonoruntimesgen_static_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-coree.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-coree.Tpo -c -o libmonoruntimesgen_static_la-coree.o coree.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/coree.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-helpers.Tpo -c -o .libs/libmonoruntimesgen_static_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-helpers.Tpo -c -o .libs/libmonoruntimesgen_static_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-helpers.Tpo -c -o .libs/libmonoruntimesgen_static_la-debug-helpers.o debug-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntimesgen_static_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntimesgen_static_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-mono-symfile.Tpo -c -o .libs/libmonoruntimesgen_static_la-debug-mono-symfile.o debug-mono-symfile.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-helpers.Tpo -c -o libmonoruntimesgen_static_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-helpers.Tpo -c -o libmonoruntimesgen_static_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-helpers.Tpo -c -o libmonoruntimesgen_static_la-debug-helpers.o debug-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_la-reflection.Tpo -c -o libmonoruntimesgen_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_la-reflection.Tpo -c -o libmonoruntimesgen_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_la-reflection.Tpo -c -o libmonoruntimesgen_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-mono-symfile.Tpo -c -o libmonoruntimesgen_static_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-mono-symfile.Tpo -c -o libmonoruntimesgen_static_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-debug-mono-symfile.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-debug-mono-symfile.Tpo -c -o libmonoruntimesgen_static_la-debug-mono-symfile.o debug-mono-symfile.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/debug-mono-symfile.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-decimal-ms.Tpo -c -o .libs/libmonoruntimesgen_static_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-decimal-ms.Tpo -c -o .libs/libmonoruntimesgen_static_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-decimal-ms.Tpo -c -o .libs/libmonoruntimesgen_static_la-decimal-ms.o decimal-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-assembly.Tpo -c -o libmonoruntimesgen_static_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-assembly.Tpo -c -o libmonoruntimesgen_static_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-assembly.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-assembly.Tpo -c -o libmonoruntimesgen_static_la-assembly.o assembly.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/assembly.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-environment.Tpo -c -o .libs/libmonoruntimesgen_static_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-environment.Tpo -c -o .libs/libmonoruntimesgen_static_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-environment.Tpo -c -o .libs/libmonoruntimesgen_static_la-environment.o environment.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-exception.Tpo -c -o .libs/libmonoruntimesgen_static_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-exception.Tpo -c -o .libs/libmonoruntimesgen_static_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-exception.Tpo -c -o .libs/libmonoruntimesgen_static_la-exception.o exception.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-environment.Tpo -c -o libmonoruntimesgen_static_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-environment.Tpo -c -o libmonoruntimesgen_static_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-environment.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-environment.Tpo -c -o libmonoruntimesgen_static_la-environment.o environment.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/environment.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-cominterop.Tpo -c -o libmonoruntimesgen_static_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-cominterop.Tpo -c -o libmonoruntimesgen_static_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-cominterop.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-cominterop.Tpo -c -o libmonoruntimesgen_static_la-cominterop.o cominterop.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/cominterop.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-io.o file-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-exception.Tpo -c -o libmonoruntimesgen_static_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-exception.Tpo -c -o libmonoruntimesgen_static_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-exception.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-exception.Tpo -c -o libmonoruntimesgen_static_la-exception.o exception.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/exception.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-io.Tpo -c -o libmonoruntimesgen_static_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-io.Tpo -c -o libmonoruntimesgen_static_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-io.Tpo -c -o libmonoruntimesgen_static_la-file-io.o file-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-filewatcher.Tpo -c -o .libs/libmonoruntimesgen_static_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-decimal-ms.Tpo -c -o libmonoruntimesgen_static_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-filewatcher.Tpo -c -o .libs/libmonoruntimesgen_static_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-decimal-ms.Tpo -c -o libmonoruntimesgen_static_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-filewatcher.Tpo -c -o .libs/libmonoruntimesgen_static_la-filewatcher.o filewatcher.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-decimal-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-decimal-ms.Tpo -c -o libmonoruntimesgen_static_la-decimal-ms.o decimal-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/decimal-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-filewatcher.Tpo -c -o libmonoruntimesgen_static_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-filewatcher.Tpo -c -o libmonoruntimesgen_static_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-filewatcher.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-filewatcher.Tpo -c -o libmonoruntimesgen_static_la-filewatcher.o filewatcher.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/filewatcher.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntimesgen_static_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-icall.Tpo -c -o .libs/libmonoruntimesgen_static_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntimesgen_static_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-icall.Tpo -c -o .libs/libmonoruntimesgen_static_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc-memfuncs.Tpo -c -o .libs/libmonoruntimesgen_static_la-gc-memfuncs.o gc-memfuncs.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-icall.Tpo -c -o .libs/libmonoruntimesgen_static_la-icall.o icall.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc-memfuncs.Tpo -c -o libmonoruntimesgen_static_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc-memfuncs.Tpo -c -o libmonoruntimesgen_static_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc-memfuncs.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc-memfuncs.Tpo -c -o libmonoruntimesgen_static_la-gc-memfuncs.o gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-image.Tpo -c -o .libs/libmonoruntimesgen_static_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-jit-info.Tpo -c -o .libs/libmonoruntimesgen_static_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-image.Tpo -c -o .libs/libmonoruntimesgen_static_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-jit-info.Tpo -c -o .libs/libmonoruntimesgen_static_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-image.Tpo -c -o .libs/libmonoruntimesgen_static_la-image.o image.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-jit-info.Tpo -c -o .libs/libmonoruntimesgen_static_la-jit-info.o jit-info.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-loader.Tpo -c -o .libs/libmonoruntimesgen_static_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-loader.Tpo -c -o .libs/libmonoruntimesgen_static_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-loader.Tpo -c -o .libs/libmonoruntimesgen_static_la-loader.o loader.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-locales.Tpo -c -o .libs/libmonoruntimesgen_static_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-locales.Tpo -c -o .libs/libmonoruntimesgen_static_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-locales.Tpo -c -o .libs/libmonoruntimesgen_static_la-locales.o locales.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-jit-info.Tpo -c -o libmonoruntimesgen_static_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-jit-info.Tpo -c -o libmonoruntimesgen_static_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-jit-info.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-jit-info.Tpo -c -o libmonoruntimesgen_static_la-jit-info.o jit-info.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/jit-info.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-image.Tpo -c -o libmonoruntimesgen_static_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-image.Tpo -c -o libmonoruntimesgen_static_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-image.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-image.Tpo -c -o libmonoruntimesgen_static_la-image.o image.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/image.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-lock-tracer.Tpo -c -o .libs/libmonoruntimesgen_static_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-lock-tracer.Tpo -c -o .libs/libmonoruntimesgen_static_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-lock-tracer.Tpo -c -o .libs/libmonoruntimesgen_static_la-lock-tracer.o lock-tracer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-lock-tracer.Tpo -c -o libmonoruntimesgen_static_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-lock-tracer.Tpo -c -o libmonoruntimesgen_static_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-lock-tracer.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-lock-tracer.Tpo -c -o libmonoruntimesgen_static_la-lock-tracer.o lock-tracer.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/lock-tracer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-loader.Tpo -c -o libmonoruntimesgen_static_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-loader.Tpo -c -o libmonoruntimesgen_static_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-loader.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-loader.Tpo -c -o libmonoruntimesgen_static_la-loader.o loader.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/loader.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-marshal.Tpo -c -o .libs/libmonoruntimesgen_static_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-marshal.Tpo -c -o .libs/libmonoruntimesgen_static_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-marshal.Tpo -c -o .libs/libmonoruntimesgen_static_la-marshal.o marshal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-locales.Tpo -c -o libmonoruntimesgen_static_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mempool.Tpo -c -o .libs/libmonoruntimesgen_static_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-locales.Tpo -c -o libmonoruntimesgen_static_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mempool.Tpo -c -o .libs/libmonoruntimesgen_static_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-locales.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-locales.Tpo -c -o libmonoruntimesgen_static_la-locales.o locales.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/locales.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mempool.Tpo -c -o .libs/libmonoruntimesgen_static_la-mempool.o mempool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mempool.Tpo -c -o libmonoruntimesgen_static_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mempool.Tpo -c -o libmonoruntimesgen_static_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mempool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mempool.Tpo -c -o libmonoruntimesgen_static_la-mempool.o mempool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mempool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata.o metadata.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-class.Tpo -c -o libmonoruntimesgen_static_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-class.Tpo -c -o libmonoruntimesgen_static_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-class.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-class.Tpo -c -o libmonoruntimesgen_static_la-class.o class.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/class.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-verify.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-verify.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-method-builder.Tpo -c -o .libs/libmonoruntimesgen_static_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-verify.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata-verify.o metadata-verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-method-builder.Tpo -c -o .libs/libmonoruntimesgen_static_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-method-builder.Tpo -c -o .libs/libmonoruntimesgen_static_la-method-builder.o method-builder.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-method-builder.Tpo -c -o libmonoruntimesgen_static_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-method-builder.Tpo -c -o libmonoruntimesgen_static_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-method-builder.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-method-builder.Tpo -c -o libmonoruntimesgen_static_la-method-builder.o method-builder.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/method-builder.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-basic-block.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-basic-block.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-basic-block.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-basic-block.o mono-basic-block.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-icall.Tpo -c -o libmonoruntimesgen_static_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-icall.Tpo -c -o libmonoruntimesgen_static_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-config.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-icall.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-icall.Tpo -c -o libmonoruntimesgen_static_la-icall.o icall.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/icall.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-config.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-config.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-config.o mono-config.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-basic-block.Tpo -c -o libmonoruntimesgen_static_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-basic-block.Tpo -c -o libmonoruntimesgen_static_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-basic-block.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-basic-block.Tpo -c -o libmonoruntimesgen_static_la-mono-basic-block.o mono-basic-block.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-basic-block.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-config.Tpo -c -o libmonoruntimesgen_static_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-config.Tpo -c -o libmonoruntimesgen_static_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-config.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-config.Tpo -c -o libmonoruntimesgen_static_la-mono-config.o mono-config.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-config.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-cq.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-cq.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-cq.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-cq.o mono-cq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-cq.Tpo -c -o libmonoruntimesgen_static_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-cq.Tpo -c -o libmonoruntimesgen_static_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-cq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-cq.Tpo -c -o libmonoruntimesgen_static_la-mono-cq.o mono-cq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-cq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-debug.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-debug.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-debug.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-debug.o mono-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-endian.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-endian.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-endian.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-endian.o mono-endian.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-endian.Tpo -c -o libmonoruntimesgen_static_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-endian.Tpo -c -o libmonoruntimesgen_static_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-endian.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-endian.Tpo -c -o libmonoruntimesgen_static_la-mono-endian.o mono-endian.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-endian.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-mlist.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-mlist.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-mlist.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-mlist.o mono-mlist.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata.Tpo -c -o libmonoruntimesgen_static_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata.Tpo -c -o libmonoruntimesgen_static_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-debug.Tpo -c -o libmonoruntimesgen_static_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata.Tpo -c -o libmonoruntimesgen_static_la-metadata.o metadata.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-debug.Tpo -c -o libmonoruntimesgen_static_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-debug.Tpo -c -o libmonoruntimesgen_static_la-mono-debug.o mono-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-mlist.Tpo -c -o libmonoruntimesgen_static_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-mlist.Tpo -c -o libmonoruntimesgen_static_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-mlist.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-mlist.Tpo -c -o libmonoruntimesgen_static_la-mono-mlist.o mono-mlist.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-mlist.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-perfcounters.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-perfcounters.o mono-perfcounters.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-route.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-route.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-route.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-route.o mono-route.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-route.Tpo -c -o libmonoruntimesgen_static_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-route.Tpo -c -o libmonoruntimesgen_static_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-route.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-route.Tpo -c -o libmonoruntimesgen_static_la-mono-route.o mono-route.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-route.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-perfcounters.Tpo -c -o libmonoruntimesgen_static_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-perfcounters.Tpo -c -o libmonoruntimesgen_static_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-wsq.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-perfcounters.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-perfcounters.Tpo -c -o libmonoruntimesgen_static_la-mono-perfcounters.o mono-perfcounters.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-perfcounters.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-wsq.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-wsq.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-wsq.o mono-wsq.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-marshal.Tpo -c -o libmonoruntimesgen_static_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-marshal.Tpo -c -o libmonoruntimesgen_static_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-marshal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-marshal.Tpo -c -o libmonoruntimesgen_static_la-marshal.o marshal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/marshal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-wsq.Tpo -c -o libmonoruntimesgen_static_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-wsq.Tpo -c -o libmonoruntimesgen_static_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-wsq.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-wsq.Tpo -c -o libmonoruntimesgen_static_la-mono-wsq.o mono-wsq.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-wsq.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-opcodes.Tpo -c -o .libs/libmonoruntimesgen_static_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-opcodes.Tpo -c -o .libs/libmonoruntimesgen_static_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-socket-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-opcodes.Tpo -c -o .libs/libmonoruntimesgen_static_la-opcodes.o opcodes.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-socket-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-socket-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-socket-io.o socket-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-opcodes.Tpo -c -o libmonoruntimesgen_static_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-opcodes.Tpo -c -o libmonoruntimesgen_static_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-opcodes.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-opcodes.Tpo -c -o libmonoruntimesgen_static_la-opcodes.o opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-process.Tpo -c -o .libs/libmonoruntimesgen_static_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-process.Tpo -c -o .libs/libmonoruntimesgen_static_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-process.Tpo -c -o .libs/libmonoruntimesgen_static_la-process.o process.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-profiler.Tpo -c -o .libs/libmonoruntimesgen_static_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-profiler.Tpo -c -o .libs/libmonoruntimesgen_static_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-profiler.Tpo -c -o .libs/libmonoruntimesgen_static_la-profiler.o profiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-process.Tpo -c -o libmonoruntimesgen_static_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-process.Tpo -c -o libmonoruntimesgen_static_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-process.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-process.Tpo -c -o libmonoruntimesgen_static_la-process.o process.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/process.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-socket-io.Tpo -c -o libmonoruntimesgen_static_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-socket-io.Tpo -c -o libmonoruntimesgen_static_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-socket-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-socket-io.Tpo -c -o libmonoruntimesgen_static_la-socket-io.o socket-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/socket-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-profiler.Tpo -c -o libmonoruntimesgen_static_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-profiler.Tpo -c -o libmonoruntimesgen_static_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-profiler.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-profiler.Tpo -c -o libmonoruntimesgen_static_la-profiler.o profiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/profiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-rand.Tpo -c -o .libs/libmonoruntimesgen_static_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-rand.Tpo -c -o .libs/libmonoruntimesgen_static_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-rand.Tpo -c -o .libs/libmonoruntimesgen_static_la-rand.o rand.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-rand.Tpo -c -o libmonoruntimesgen_static_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-rand.Tpo -c -o libmonoruntimesgen_static_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-remoting.Tpo -c -o .libs/libmonoruntimesgen_static_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-remoting.Tpo -c -o .libs/libmonoruntimesgen_static_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-rand.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-rand.Tpo -c -o libmonoruntimesgen_static_la-rand.o rand.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/rand.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-remoting.Tpo -c -o .libs/libmonoruntimesgen_static_la-remoting.o remoting.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-runtime.Tpo -c -o .libs/libmonoruntimesgen_static_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-runtime.Tpo -c -o .libs/libmonoruntimesgen_static_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-runtime.Tpo -c -o .libs/libmonoruntimesgen_static_la-runtime.o runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-security.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-security.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-security.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-security.o mono-security.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-runtime.Tpo -c -o libmonoruntimesgen_static_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-runtime.Tpo -c -o libmonoruntimesgen_static_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-runtime.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-runtime.Tpo -c -o libmonoruntimesgen_static_la-runtime.o runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-core-clr.Tpo -c -o .libs/libmonoruntimesgen_static_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-core-clr.Tpo -c -o .libs/libmonoruntimesgen_static_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-core-clr.Tpo -c -o .libs/libmonoruntimesgen_static_la-security-core-clr.o security-core-clr.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-security.Tpo -c -o libmonoruntimesgen_static_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-security.Tpo -c -o libmonoruntimesgen_static_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-security.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-security.Tpo -c -o libmonoruntimesgen_static_la-mono-security.o mono-security.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-security.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-manager.Tpo -c -o .libs/libmonoruntimesgen_static_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-manager.Tpo -c -o .libs/libmonoruntimesgen_static_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o .libs/libmonoruntimesgen_static_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-manager.Tpo -c -o .libs/libmonoruntimesgen_static_la-security-manager.o security-manager.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o .libs/libmonoruntimesgen_static_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o .libs/libmonoruntimesgen_static_la-string-icalls.o string-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o libmonoruntimesgen_static_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o libmonoruntimesgen_static_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-manager.Tpo -c -o libmonoruntimesgen_static_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-manager.Tpo -c -o libmonoruntimesgen_static_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-string-icalls.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-string-icalls.Tpo -c -o libmonoruntimesgen_static_la-string-icalls.o string-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/string-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sysmath.Tpo -c -o .libs/libmonoruntimesgen_static_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sysmath.Tpo -c -o .libs/libmonoruntimesgen_static_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-manager.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-manager.Tpo -c -o libmonoruntimesgen_static_la-security-manager.o security-manager.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-manager.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sysmath.Tpo -c -o .libs/libmonoruntimesgen_static_la-sysmath.o sysmath.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sysmath.Tpo -c -o libmonoruntimesgen_static_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sysmath.Tpo -c -o libmonoruntimesgen_static_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sysmath.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sysmath.Tpo -c -o libmonoruntimesgen_static_la-sysmath.o sysmath.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sysmath.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threads.Tpo -c -o .libs/libmonoruntimesgen_static_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threads.Tpo -c -o .libs/libmonoruntimesgen_static_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threads.Tpo -c -o .libs/libmonoruntimesgen_static_la-threads.o threads.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-core-clr.Tpo -c -o libmonoruntimesgen_static_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool.o threadpool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-core-clr.Tpo -c -o libmonoruntimesgen_static_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-security-core-clr.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-security-core-clr.Tpo -c -o libmonoruntimesgen_static_la-security-core-clr.o security-core-clr.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/security-core-clr.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool-ms.o threadpool-ms.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms-io.Tpo -c -o .libs/libmonoruntimesgen_static_la-threadpool-ms-io.o threadpool-ms-io.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-remoting.Tpo -c -o libmonoruntimesgen_static_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-verify.Tpo -c -o libmonoruntimesgen_static_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-remoting.Tpo -c -o libmonoruntimesgen_static_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-verify.Tpo -c -o libmonoruntimesgen_static_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-remoting.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-remoting.Tpo -c -o libmonoruntimesgen_static_la-remoting.o remoting.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/remoting.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-verify.Tpo -c -o libmonoruntimesgen_static_la-metadata-verify.o metadata-verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms-io.Tpo -c -o libmonoruntimesgen_static_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-tpool-poll.Tpo -c -o .libs/libmonoruntimesgen_static_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms-io.Tpo -c -o libmonoruntimesgen_static_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-tpool-poll.Tpo -c -o .libs/libmonoruntimesgen_static_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms-io.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms-io.Tpo -c -o libmonoruntimesgen_static_la-threadpool-ms-io.o threadpool-ms-io.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms-io.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-tpool-poll.Tpo -c -o .libs/libmonoruntimesgen_static_la-tpool-poll.o tpool-poll.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-tpool-poll.Tpo -c -o libmonoruntimesgen_static_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-tpool-poll.Tpo -c -o libmonoruntimesgen_static_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-tpool-poll.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-tpool-poll.Tpo -c -o libmonoruntimesgen_static_la-tpool-poll.o tpool-poll.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/tpool-poll.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool.Tpo -c -o libmonoruntimesgen_static_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool.Tpo -c -o libmonoruntimesgen_static_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool.Tpo -c -o libmonoruntimesgen_static_la-threadpool.o threadpool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms.Tpo -c -o libmonoruntimesgen_static_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms.Tpo -c -o libmonoruntimesgen_static_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threadpool-ms.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threadpool-ms.Tpo -c -o libmonoruntimesgen_static_la-threadpool-ms.o threadpool-ms.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threadpool-ms.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-verify.Tpo -c -o .libs/libmonoruntimesgen_static_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-verify.Tpo -c -o .libs/libmonoruntimesgen_static_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-verify.Tpo -c -o .libs/libmonoruntimesgen_static_la-verify.o verify.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-posix.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-mmap-posix.o file-mmap-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-windows.Tpo -c -o .libs/libmonoruntimesgen_static_la-file-mmap-windows.o file-mmap-windows.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-windows.Tpo -c -o libmonoruntimesgen_static_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-windows.Tpo -c -o libmonoruntimesgen_static_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-windows.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-windows.Tpo -c -o libmonoruntimesgen_static_la-file-mmap-windows.o file-mmap-windows.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-windows.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-cross-helpers.Tpo -c -o .libs/libmonoruntimesgen_static_la-metadata-cross-helpers.o metadata-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-cross-helpers.Tpo -c -o libmonoruntimesgen_static_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-cross-helpers.Tpo -c -o libmonoruntimesgen_static_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-metadata-cross-helpers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-metadata-cross-helpers.Tpo -c -o libmonoruntimesgen_static_la-metadata-cross-helpers.o metadata-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/metadata-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-posix.Tpo -c -o libmonoruntimesgen_static_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-posix.Tpo -c -o libmonoruntimesgen_static_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-file-mmap-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-file-mmap-posix.Tpo -c -o libmonoruntimesgen_static_la-file-mmap-posix.o file-mmap-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/file-mmap-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-seq-points-data.Tpo -c -o .libs/libmonoruntimesgen_static_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-seq-points-data.Tpo -c -o .libs/libmonoruntimesgen_static_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-seq-points-data.Tpo -c -o .libs/libmonoruntimesgen_static_la-seq-points-data.o seq-points-data.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-appdomain.Tpo -c -o .libs/libmonoruntimesgen_static_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-appdomain.Tpo -c -o .libs/libmonoruntimesgen_static_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-appdomain.Tpo -c -o .libs/libmonoruntimesgen_static_la-appdomain.o appdomain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-seq-points-data.Tpo -c -o libmonoruntimesgen_static_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-seq-points-data.Tpo -c -o libmonoruntimesgen_static_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-seq-points-data.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-seq-points-data.Tpo -c -o libmonoruntimesgen_static_la-seq-points-data.o seq-points-data.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/seq-points-data.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-domain.Tpo -c -o .libs/libmonoruntimesgen_static_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-domain.Tpo -c -o .libs/libmonoruntimesgen_static_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc.Tpo -c -o .libs/libmonoruntimesgen_static_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-domain.Tpo -c -o .libs/libmonoruntimesgen_static_la-domain.o domain.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc.Tpo -c -o .libs/libmonoruntimesgen_static_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc.Tpo -c -o .libs/libmonoruntimesgen_static_la-gc.o gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threads.Tpo -c -o libmonoruntimesgen_static_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threads.Tpo -c -o libmonoruntimesgen_static_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-threads.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-threads.Tpo -c -o libmonoruntimesgen_static_la-threads.o threads.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/threads.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-monitor.Tpo -c -o .libs/libmonoruntimesgen_static_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-monitor.Tpo -c -o .libs/libmonoruntimesgen_static_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-monitor.Tpo -c -o .libs/libmonoruntimesgen_static_la-monitor.o monitor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc.Tpo -c -o libmonoruntimesgen_static_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc.Tpo -c -o libmonoruntimesgen_static_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-gc.Tpo -c -o libmonoruntimesgen_static_la-gc.o gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-monitor.Tpo -c -o libmonoruntimesgen_static_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-monitor.Tpo -c -o libmonoruntimesgen_static_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-monitor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-monitor.Tpo -c -o libmonoruntimesgen_static_la-monitor.o monitor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/monitor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-domain.Tpo -c -o libmonoruntimesgen_static_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-domain.Tpo -c -o libmonoruntimesgen_static_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-domain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-domain.Tpo -c -o libmonoruntimesgen_static_la-domain.o domain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/domain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-appdomain.Tpo -c -o libmonoruntimesgen_static_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-appdomain.Tpo -c -o libmonoruntimesgen_static_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-appdomain.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-appdomain.Tpo -c -o libmonoruntimesgen_static_la-appdomain.o appdomain.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/appdomain.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-hash.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-hash.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-hash.Tpo -c -o .libs/libmonoruntimesgen_static_la-mono-hash.o mono-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-object.Tpo -c -o .libs/libmonoruntimesgen_static_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-object.Tpo -c -o .libs/libmonoruntimesgen_static_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-object.Tpo -c -o .libs/libmonoruntimesgen_static_la-object.o object.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-reflection.Tpo -c -o .libs/libmonoruntimesgen_static_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-reflection.Tpo -c -o .libs/libmonoruntimesgen_static_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-reflection.Tpo -c -o .libs/libmonoruntimesgen_static_la-reflection.o reflection.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-hash.Tpo -c -o libmonoruntimesgen_static_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-hash.Tpo -c -o libmonoruntimesgen_static_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-mono-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-mono-hash.Tpo -c -o libmonoruntimesgen_static_la-mono-hash.o mono-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/mono-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-posix.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-posix.o sgen-os-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-mach.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-mach.o sgen-os-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-posix.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-posix.o sgen-os-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-mach.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-mach.o sgen-os-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-posix.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-posix.o sgen-os-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-mach.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-mach.o sgen-os-mach.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-posix.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-posix.o sgen-os-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-posix.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-posix.o sgen-os-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-posix.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-posix.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-posix.o sgen-os-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-win32.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-win32.o sgen-os-win32.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-win32.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-win32.o sgen-os-win32.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-win32.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-os-win32.o sgen-os-win32.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-mach.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-mach.o sgen-os-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-mach.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-mach.o sgen-os-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-win32.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-win32.o sgen-os-win32.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-win32.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-win32.o sgen-os-win32.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-mach.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-mach.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-mach.o sgen-os-mach.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-mach.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-os-win32.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-os-win32.Tpo -c -o libmonoruntimesgen_static_la-sgen-os-win32.o sgen-os-win32.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-os-win32.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gc.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-gc.o sgen-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gc.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-gc.o sgen-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-internal.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-internal.o sgen-internal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-marksweep.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-marksweep.o sgen-marksweep.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-internal.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-internal.o sgen-internal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gc.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-gc.o sgen-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-marksweep.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-marksweep.o sgen-marksweep.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-internal.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-internal.o sgen-internal.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-marksweep.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-marksweep.o sgen-marksweep.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-los.o sgen-los.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-los.o sgen-los.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-los.o sgen-los.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-internal.Tpo -c -o libmonoruntimesgen_static_la-sgen-internal.o sgen-internal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-internal.Tpo -c -o libmonoruntimesgen_static_la-sgen-internal.o sgen-internal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-internal.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-internal.Tpo -c -o libmonoruntimesgen_static_la-sgen-internal.o sgen-internal.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-internal.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-protocol.o sgen-protocol.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-protocol.o sgen-protocol.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-protocol.o sgen-protocol.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o libmonoruntimesgen_static_la-sgen-los.o sgen-los.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o libmonoruntimesgen_static_la-sgen-los.o sgen-los.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-los.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-los.Tpo -c -o libmonoruntimesgen_static_la-sgen-los.o sgen-los.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-los.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_static_la-sgen-protocol.o sgen-protocol.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_static_la-sgen-protocol.o sgen-protocol.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-protocol.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-protocol.Tpo -c -o libmonoruntimesgen_static_la-sgen-protocol.o sgen-protocol.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-protocol.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-bridge.o sgen-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-bridge.o sgen-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-bridge.o sgen-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-old-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-old-bridge.o sgen-old-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-old-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-old-bridge.o sgen-old-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-old-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-old-bridge.o sgen-old-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-bridge.o sgen-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-bridge.o sgen-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-bridge.o sgen-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-new-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-new-bridge.o sgen-new-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-new-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-new-bridge.o sgen-new-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-new-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-new-bridge.o sgen-new-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-object.Tpo -c -o libmonoruntimesgen_static_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-object.Tpo -c -o libmonoruntimesgen_static_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-object.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-object.Tpo -c -o libmonoruntimesgen_static_la-object.o object.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/object.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-old-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-old-bridge.o sgen-old-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-old-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-old-bridge.o sgen-old-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-old-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-old-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-old-bridge.o sgen-old-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-old-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-tarjan-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-tarjan-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-tarjan-bridge.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-marksweep.Tpo -c -o libmonoruntimesgen_static_la-sgen-marksweep.o sgen-marksweep.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-marksweep.Tpo -c -o libmonoruntimesgen_static_la-sgen-marksweep.o sgen-marksweep.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-marksweep.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-marksweep.Tpo -c -o libmonoruntimesgen_static_la-sgen-marksweep.o sgen-marksweep.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-marksweep.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gc.Tpo -c -o libmonoruntimesgen_static_la-sgen-gc.o sgen-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gc.Tpo -c -o libmonoruntimesgen_static_la-sgen-gc.o sgen-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gc.Tpo -c -o libmonoruntimesgen_static_la-sgen-gc.o sgen-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-toggleref.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-toggleref.o sgen-toggleref.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-toggleref.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-toggleref.o sgen-toggleref.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-toggleref.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-toggleref.o sgen-toggleref.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-new-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-new-bridge.o sgen-new-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-new-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-new-bridge.o sgen-new-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-new-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-new-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-new-bridge.o sgen-new-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-new-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-tarjan-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-tarjan-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-tarjan-bridge.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-tarjan-bridge.Tpo -c -o libmonoruntimesgen_static_la-sgen-tarjan-bridge.o sgen-tarjan-bridge.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-tarjan-bridge.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-toggleref.Tpo -c -o libmonoruntimesgen_static_la-sgen-toggleref.o sgen-toggleref.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-toggleref.Tpo -c -o libmonoruntimesgen_static_la-sgen-toggleref.o sgen-toggleref.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-toggleref.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-toggleref.Tpo -c -o libmonoruntimesgen_static_la-sgen-toggleref.o sgen-toggleref.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-toggleref.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-cardtable.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-cardtable.o sgen-cardtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-cardtable.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-cardtable.o sgen-cardtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-cardtable.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-cardtable.o sgen-cardtable.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-cardtable.Tpo -c -o libmonoruntimesgen_static_la-sgen-cardtable.o sgen-cardtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-cardtable.Tpo -c -o libmonoruntimesgen_static_la-sgen-cardtable.o sgen-cardtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-cardtable.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-cardtable.Tpo -c -o libmonoruntimesgen_static_la-sgen-cardtable.o sgen-cardtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-cardtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pointer-queue.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pointer-queue.o sgen-pointer-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pointer-queue.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pointer-queue.o sgen-pointer-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pointer-queue.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pointer-queue.o sgen-pointer-queue.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pointer-queue.Tpo -c -o libmonoruntimesgen_static_la-sgen-pointer-queue.o sgen-pointer-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pointer-queue.Tpo -c -o libmonoruntimesgen_static_la-sgen-pointer-queue.o sgen-pointer-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pointer-queue.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pointer-queue.Tpo -c -o libmonoruntimesgen_static_la-sgen-pointer-queue.o sgen-pointer-queue.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pointer-queue.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pinning.o sgen-pinning.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pinning.o sgen-pinning.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pinning.o sgen-pinning.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning-stats.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pinning-stats.o sgen-pinning-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning-stats.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pinning-stats.o sgen-pinning-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning-stats.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-pinning-stats.o sgen-pinning-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-workers.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-workers.o sgen-workers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-workers.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-workers.o sgen-workers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-workers.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-workers.o sgen-workers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning.Tpo -c -o libmonoruntimesgen_static_la-sgen-pinning.o sgen-pinning.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning.Tpo -c -o libmonoruntimesgen_static_la-sgen-pinning.o sgen-pinning.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning.Tpo -c -o libmonoruntimesgen_static_la-sgen-pinning.o sgen-pinning.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning-stats.Tpo -c -o libmonoruntimesgen_static_la-sgen-pinning-stats.o sgen-pinning-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning-stats.Tpo -c -o libmonoruntimesgen_static_la-sgen-pinning-stats.o sgen-pinning-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-pinning-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-pinning-stats.Tpo -c -o libmonoruntimesgen_static_la-sgen-pinning-stats.o sgen-pinning-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-pinning-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gray.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-gray.o sgen-gray.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gray.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-gray.o sgen-gray.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gray.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-gray.o sgen-gray.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-nursery-allocator.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-nursery-allocator.o sgen-nursery-allocator.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-nursery-allocator.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-nursery-allocator.o sgen-nursery-allocator.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-workers.Tpo -c -o libmonoruntimesgen_static_la-sgen-workers.o sgen-workers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-workers.Tpo -c -o libmonoruntimesgen_static_la-sgen-workers.o sgen-workers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-nursery-allocator.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-nursery-allocator.o sgen-nursery-allocator.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-hash-table.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-hash-table.o sgen-hash-table.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-workers.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-workers.Tpo -c -o libmonoruntimesgen_static_la-sgen-workers.o sgen-workers.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-workers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-hash-table.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-hash-table.o sgen-hash-table.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-hash-table.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-hash-table.o sgen-hash-table.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gray.Tpo -c -o libmonoruntimesgen_static_la-sgen-gray.o sgen-gray.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gray.Tpo -c -o libmonoruntimesgen_static_la-sgen-gray.o sgen-gray.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-gray.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-gray.Tpo -c -o libmonoruntimesgen_static_la-sgen-gray.o sgen-gray.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-gray.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-hash-table.Tpo -c -o libmonoruntimesgen_static_la-sgen-hash-table.o sgen-hash-table.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-verify.Tpo -c -o libmonoruntimesgen_static_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-hash-table.Tpo -c -o libmonoruntimesgen_static_la-sgen-hash-table.o sgen-hash-table.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-verify.Tpo -c -o libmonoruntimesgen_static_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-hash-table.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-hash-table.Tpo -c -o libmonoruntimesgen_static_la-sgen-hash-table.o sgen-hash-table.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-hash-table.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-verify.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-verify.Tpo -c -o libmonoruntimesgen_static_la-verify.o verify.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/verify.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-descriptor.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-descriptor.o sgen-descriptor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-descriptor.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-descriptor.o sgen-descriptor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-alloc.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-alloc.o sgen-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-descriptor.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-descriptor.o sgen-descriptor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-debug.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-debug.o sgen-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-alloc.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-alloc.o sgen-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-debug.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-debug.o sgen-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-alloc.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-alloc.o sgen-alloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-debug.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-debug.o sgen-debug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-nursery-allocator.Tpo -c -o libmonoruntimesgen_static_la-sgen-nursery-allocator.o sgen-nursery-allocator.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-nursery-allocator.Tpo -c -o libmonoruntimesgen_static_la-sgen-nursery-allocator.o sgen-nursery-allocator.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-simple-nursery.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-simple-nursery.o sgen-simple-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-nursery-allocator.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-nursery-allocator.Tpo -c -o libmonoruntimesgen_static_la-sgen-nursery-allocator.o sgen-nursery-allocator.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-nursery-allocator.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-simple-nursery.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-simple-nursery.o sgen-simple-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-simple-nursery.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-simple-nursery.o sgen-simple-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-descriptor.Tpo -c -o libmonoruntimesgen_static_la-sgen-descriptor.o sgen-descriptor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-descriptor.Tpo -c -o libmonoruntimesgen_static_la-sgen-descriptor.o sgen-descriptor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-descriptor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-descriptor.Tpo -c -o libmonoruntimesgen_static_la-sgen-descriptor.o sgen-descriptor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-descriptor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-split-nursery.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-split-nursery.o sgen-split-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-split-nursery.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-split-nursery.o sgen-split-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-split-nursery.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-split-nursery.o sgen-split-nursery.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-alloc.Tpo -c -o libmonoruntimesgen_static_la-sgen-alloc.o sgen-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-memory-governor.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-memory-governor.o sgen-memory-governor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-alloc.Tpo -c -o libmonoruntimesgen_static_la-sgen-alloc.o sgen-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-memory-governor.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-memory-governor.o sgen-memory-governor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-alloc.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-alloc.Tpo -c -o libmonoruntimesgen_static_la-sgen-alloc.o sgen-alloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-alloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-memory-governor.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-memory-governor.o sgen-memory-governor.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-simple-nursery.Tpo -c -o libmonoruntimesgen_static_la-sgen-simple-nursery.o sgen-simple-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-stw.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-stw.o sgen-stw.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-simple-nursery.Tpo -c -o libmonoruntimesgen_static_la-sgen-simple-nursery.o sgen-simple-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-stw.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-stw.o sgen-stw.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-simple-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-simple-nursery.Tpo -c -o libmonoruntimesgen_static_la-sgen-simple-nursery.o sgen-simple-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-simple-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-stw.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-stw.o sgen-stw.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-memory-governor.Tpo -c -o libmonoruntimesgen_static_la-sgen-memory-governor.o sgen-memory-governor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-memory-governor.Tpo -c -o libmonoruntimesgen_static_la-sgen-memory-governor.o sgen-memory-governor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-memory-governor.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-memory-governor.Tpo -c -o libmonoruntimesgen_static_la-sgen-memory-governor.o sgen-memory-governor.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-memory-governor.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-stw.Tpo -c -o libmonoruntimesgen_static_la-sgen-stw.o sgen-stw.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-stw.Tpo -c -o libmonoruntimesgen_static_la-sgen-stw.o sgen-stw.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-stw.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-stw.Tpo -c -o libmonoruntimesgen_static_la-sgen-stw.o sgen-stw.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-stw.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-split-nursery.Tpo -c -o libmonoruntimesgen_static_la-sgen-split-nursery.o sgen-split-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-split-nursery.Tpo -c -o libmonoruntimesgen_static_la-sgen-split-nursery.o sgen-split-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-split-nursery.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-split-nursery.Tpo -c -o libmonoruntimesgen_static_la-sgen-split-nursery.o sgen-split-nursery.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-split-nursery.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-fin-weak-hash.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-layout-stats.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-layout-stats.o sgen-layout-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-qsort.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-qsort.o sgen-qsort.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-fin-weak-hash.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-layout-stats.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-layout-stats.o sgen-layout-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-qsort.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-qsort.o sgen-qsort.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-fin-weak-hash.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-layout-stats.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-layout-stats.o sgen-layout-stats.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-qsort.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-qsort.o sgen-qsort.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-layout-stats.Tpo -c -o libmonoruntimesgen_static_la-sgen-layout-stats.o sgen-layout-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-layout-stats.Tpo -c -o libmonoruntimesgen_static_la-sgen-layout-stats.o sgen-layout-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-qsort.Tpo -c -o libmonoruntimesgen_static_la-sgen-qsort.o sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-layout-stats.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-layout-stats.Tpo -c -o libmonoruntimesgen_static_la-sgen-layout-stats.o sgen-layout-stats.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-layout-stats.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-qsort.Tpo -c -o libmonoruntimesgen_static_la-sgen-qsort.o sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-qsort.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-qsort.Tpo -c -o libmonoruntimesgen_static_la-sgen-qsort.o sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-thread-pool.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-thread-pool.o sgen-thread-pool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-thread-pool.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-thread-pool.o sgen-thread-pool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-thread-pool.Tpo -c -o .libs/libmonoruntimesgen_static_la-sgen-thread-pool.o sgen-thread-pool.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT pedump.o -MD -MP -MF .deps/pedump.Tpo -c -o pedump.o pedump.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/pedump.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT pedump.o -MD -MP -MF .deps/pedump.Tpo -c -o pedump.o pedump.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/pedump.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT pedump.o -MD -MP -MF .deps/pedump.Tpo -c -o pedump.o pedump.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/pedump.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-fin-weak-hash.Tpo -c -o libmonoruntimesgen_static_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-fin-weak-hash.Tpo -c -o libmonoruntimesgen_static_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-debug.Tpo -c -o libmonoruntimesgen_static_la-sgen-debug.o sgen-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-thread-pool.Tpo -c -o libmonoruntimesgen_static_la-sgen-thread-pool.o sgen-thread-pool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-fin-weak-hash.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-fin-weak-hash.Tpo -c -o libmonoruntimesgen_static_la-sgen-fin-weak-hash.o sgen-fin-weak-hash.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-fin-weak-hash.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-debug.Tpo -c -o libmonoruntimesgen_static_la-sgen-debug.o sgen-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-thread-pool.Tpo -c -o libmonoruntimesgen_static_la-sgen-thread-pool.o sgen-thread-pool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-debug.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-debug.Tpo -c -o libmonoruntimesgen_static_la-sgen-debug.o sgen-debug.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-debug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-sgen-thread-pool.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-sgen-thread-pool.Tpo -c -o libmonoruntimesgen_static_la-sgen-thread-pool.o sgen-thread-pool.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/sgen-thread-pool.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-reflection.Tpo -c -o libmonoruntimesgen_static_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-reflection.Tpo -c -o libmonoruntimesgen_static_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/metadata",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmonoruntimesgen_static_la-reflection.lo -MD -MP -MF .deps/libmonoruntimesgen_static_la-reflection.Tpo -c -o libmonoruntimesgen_static_la-reflection.o reflection.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/reflection.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT genmdesc-genmdesc.o -MD -MP -MF .deps/genmdesc-genmdesc.Tpo -c -o genmdesc-genmdesc.o genmdesc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/genmdesc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT genmdesc-helpers.o -MD -MP -MF .deps/genmdesc-helpers.Tpo -c -o genmdesc-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT ../metadata/genmdesc-opcodes.o -MD -MP -MF ../metadata/.deps/genmdesc-opcodes.Tpo -c -o ../metadata/genmdesc-opcodes.o ../metadata/opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT genmdesc-genmdesc.o -MD -MP -MF .deps/genmdesc-genmdesc.Tpo -c -o genmdesc-genmdesc.o genmdesc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/genmdesc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT genmdesc-helpers.o -MD -MP -MF .deps/genmdesc-helpers.Tpo -c -o genmdesc-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT ../metadata/genmdesc-opcodes.o -MD -MP -MF ../metadata/.deps/genmdesc-opcodes.Tpo -c -o ../metadata/genmdesc-opcodes.o ../metadata/opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT genmdesc-helpers.o -MD -MP -MF .deps/genmdesc-helpers.Tpo -c -o genmdesc-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT genmdesc-genmdesc.o -MD -MP -MF .deps/genmdesc-genmdesc.Tpo -c -o genmdesc-genmdesc.o genmdesc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/genmdesc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT ../metadata/genmdesc-opcodes.o -MD -MP -MF ../metadata/.deps/genmdesc-opcodes.Tpo -c -o ../metadata/genmdesc-opcodes.o ../metadata/opcodes.c",
+  "file": "/Users/joao/Dev/mono3/mono/metadata/opcodes.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-runtime.lo -MD -MP -MF .deps/libmini_la-mini-runtime.Tpo -c -o .libs/libmini_la-mini-runtime.o mini-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini.lo -MD -MP -MF .deps/libmini_la-mini.Tpo -c -o .libs/libmini_la-mini.o mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-seq-points.lo -MD -MP -MF .deps/libmini_la-seq-points.Tpo -c -o .libs/libmini_la-seq-points.o seq-points.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-method-to-ir.lo -MD -MP -MF .deps/libmini_la-method-to-ir.Tpo -c -o .libs/libmini_la-method-to-ir.o method-to-ir.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-decompose.lo -MD -MP -MF .deps/libmini_la-decompose.Tpo -c -o .libs/libmini_la-decompose.o decompose.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-runtime.lo -MD -MP -MF .deps/libmini_la-mini-runtime.Tpo -c -o .libs/libmini_la-mini-runtime.o mini-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-jit-icalls.lo -MD -MP -MF .deps/libmini_la-jit-icalls.Tpo -c -o .libs/libmini_la-jit-icalls.o jit-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-seq-points.lo -MD -MP -MF .deps/libmini_la-seq-points.Tpo -c -o .libs/libmini_la-seq-points.o seq-points.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini.lo -MD -MP -MF .deps/libmini_la-mini.Tpo -c -o .libs/libmini_la-mini.o mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-trace.lo -MD -MP -MF .deps/libmini_la-trace.Tpo -c -o .libs/libmini_la-trace.o trace.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dominators.lo -MD -MP -MF .deps/libmini_la-dominators.Tpo -c -o .libs/libmini_la-dominators.o dominators.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-method-to-ir.lo -MD -MP -MF .deps/libmini_la-method-to-ir.Tpo -c -o .libs/libmini_la-method-to-ir.o method-to-ir.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-decompose.lo -MD -MP -MF .deps/libmini_la-decompose.Tpo -c -o .libs/libmini_la-decompose.o decompose.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-jit-icalls.lo -MD -MP -MF .deps/libmini_la-jit-icalls.Tpo -c -o .libs/libmini_la-jit-icalls.o jit-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-trace.lo -MD -MP -MF .deps/libmini_la-trace.Tpo -c -o .libs/libmini_la-trace.o trace.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dominators.lo -MD -MP -MF .deps/libmini_la-dominators.Tpo -c -o .libs/libmini_la-dominators.o dominators.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-runtime.lo -MD -MP -MF .deps/libmini_la-mini-runtime.Tpo -c -o .libs/libmini_la-mini-runtime.o mini-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini.lo -MD -MP -MF .deps/libmini_la-mini.Tpo -c -o .libs/libmini_la-mini.o mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-seq-points.lo -MD -MP -MF .deps/libmini_la-seq-points.Tpo -c -o .libs/libmini_la-seq-points.o seq-points.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-method-to-ir.lo -MD -MP -MF .deps/libmini_la-method-to-ir.Tpo -c -o .libs/libmini_la-method-to-ir.o method-to-ir.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-decompose.lo -MD -MP -MF .deps/libmini_la-decompose.Tpo -c -o .libs/libmini_la-decompose.o decompose.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-jit-icalls.lo -MD -MP -MF .deps/libmini_la-jit-icalls.Tpo -c -o .libs/libmini_la-jit-icalls.o jit-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-trace.lo -MD -MP -MF .deps/libmini_la-trace.Tpo -c -o .libs/libmini_la-trace.o trace.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dominators.lo -MD -MP -MF .deps/libmini_la-dominators.Tpo -c -o .libs/libmini_la-dominators.o dominators.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-seq-points.lo -MD -MP -MF .deps/libmini_la-seq-points.Tpo -c -o libmini_la-seq-points.o seq-points.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-seq-points.lo -MD -MP -MF .deps/libmini_la-seq-points.Tpo -c -o libmini_la-seq-points.o seq-points.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-seq-points.lo -MD -MP -MF .deps/libmini_la-seq-points.Tpo -c -o libmini_la-seq-points.o seq-points.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-jit-icalls.lo -MD -MP -MF .deps/libmini_la-jit-icalls.Tpo -c -o libmini_la-jit-icalls.o jit-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-jit-icalls.lo -MD -MP -MF .deps/libmini_la-jit-icalls.Tpo -c -o libmini_la-jit-icalls.o jit-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-jit-icalls.lo -MD -MP -MF .deps/libmini_la-jit-icalls.Tpo -c -o libmini_la-jit-icalls.o jit-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-trace.lo -MD -MP -MF .deps/libmini_la-trace.Tpo -c -o libmini_la-trace.o trace.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dominators.lo -MD -MP -MF .deps/libmini_la-dominators.Tpo -c -o libmini_la-dominators.o dominators.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-trace.lo -MD -MP -MF .deps/libmini_la-trace.Tpo -c -o libmini_la-trace.o trace.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dominators.lo -MD -MP -MF .deps/libmini_la-dominators.Tpo -c -o libmini_la-dominators.o dominators.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dominators.lo -MD -MP -MF .deps/libmini_la-dominators.Tpo -c -o libmini_la-dominators.o dominators.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-trace.lo -MD -MP -MF .deps/libmini_la-trace.Tpo -c -o libmini_la-trace.o trace.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-cfold.lo -MD -MP -MF .deps/libmini_la-cfold.Tpo -c -o .libs/libmini_la-cfold.o cfold.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-cfold.lo -MD -MP -MF .deps/libmini_la-cfold.Tpo -c -o .libs/libmini_la-cfold.o cfold.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-cfold.lo -MD -MP -MF .deps/libmini_la-cfold.Tpo -c -o .libs/libmini_la-cfold.o cfold.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc.lo -MD -MP -MF .deps/libmini_la-regalloc.Tpo -c -o .libs/libmini_la-regalloc.o regalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc.lo -MD -MP -MF .deps/libmini_la-regalloc.Tpo -c -o .libs/libmini_la-regalloc.o regalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc.lo -MD -MP -MF .deps/libmini_la-regalloc.Tpo -c -o .libs/libmini_la-regalloc.o regalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-helpers.lo -MD -MP -MF .deps/libmini_la-helpers.Tpo -c -o .libs/libmini_la-helpers.o helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-helpers.lo -MD -MP -MF .deps/libmini_la-helpers.Tpo -c -o .libs/libmini_la-helpers.o helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-liveness.lo -MD -MP -MF .deps/libmini_la-liveness.Tpo -c -o .libs/libmini_la-liveness.o liveness.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-helpers.lo -MD -MP -MF .deps/libmini_la-helpers.Tpo -c -o .libs/libmini_la-helpers.o helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-liveness.lo -MD -MP -MF .deps/libmini_la-liveness.Tpo -c -o .libs/libmini_la-liveness.o liveness.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-liveness.lo -MD -MP -MF .deps/libmini_la-liveness.Tpo -c -o .libs/libmini_la-liveness.o liveness.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc.lo -MD -MP -MF .deps/libmini_la-regalloc.Tpo -c -o libmini_la-regalloc.o regalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc.lo -MD -MP -MF .deps/libmini_la-regalloc.Tpo -c -o libmini_la-regalloc.o regalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc.lo -MD -MP -MF .deps/libmini_la-regalloc.Tpo -c -o libmini_la-regalloc.o regalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-cfold.lo -MD -MP -MF .deps/libmini_la-cfold.Tpo -c -o libmini_la-cfold.o cfold.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-cfold.lo -MD -MP -MF .deps/libmini_la-cfold.Tpo -c -o libmini_la-cfold.o cfold.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-cfold.lo -MD -MP -MF .deps/libmini_la-cfold.Tpo -c -o libmini_la-cfold.o cfold.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssa.lo -MD -MP -MF .deps/libmini_la-ssa.Tpo -c -o .libs/libmini_la-ssa.o ssa.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-helpers.lo -MD -MP -MF .deps/libmini_la-helpers.Tpo -c -o libmini_la-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssa.lo -MD -MP -MF .deps/libmini_la-ssa.Tpo -c -o .libs/libmini_la-ssa.o ssa.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-helpers.lo -MD -MP -MF .deps/libmini_la-helpers.Tpo -c -o libmini_la-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssa.lo -MD -MP -MF .deps/libmini_la-ssa.Tpo -c -o .libs/libmini_la-ssa.o ssa.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-helpers.lo -MD -MP -MF .deps/libmini_la-helpers.Tpo -c -o libmini_la-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-runtime.lo -MD -MP -MF .deps/libmini_la-mini-runtime.Tpo -c -o libmini_la-mini-runtime.o mini-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-runtime.lo -MD -MP -MF .deps/libmini_la-mini-runtime.Tpo -c -o libmini_la-mini-runtime.o mini-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-runtime.lo -MD -MP -MF .deps/libmini_la-mini-runtime.Tpo -c -o libmini_la-mini-runtime.o mini-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-abcremoval.lo -MD -MP -MF .deps/libmini_la-abcremoval.Tpo -c -o .libs/libmini_la-abcremoval.o abcremoval.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-abcremoval.lo -MD -MP -MF .deps/libmini_la-abcremoval.Tpo -c -o .libs/libmini_la-abcremoval.o abcremoval.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-abcremoval.lo -MD -MP -MF .deps/libmini_la-abcremoval.Tpo -c -o .libs/libmini_la-abcremoval.o abcremoval.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssapre.lo -MD -MP -MF .deps/libmini_la-ssapre.Tpo -c -o .libs/libmini_la-ssapre.o ssapre.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssapre.lo -MD -MP -MF .deps/libmini_la-ssapre.Tpo -c -o .libs/libmini_la-ssapre.o ssapre.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssapre.lo -MD -MP -MF .deps/libmini_la-ssapre.Tpo -c -o .libs/libmini_la-ssapre.o ssapre.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-decompose.lo -MD -MP -MF .deps/libmini_la-decompose.Tpo -c -o libmini_la-decompose.o decompose.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-decompose.lo -MD -MP -MF .deps/libmini_la-decompose.Tpo -c -o libmini_la-decompose.o decompose.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-decompose.lo -MD -MP -MF .deps/libmini_la-decompose.Tpo -c -o libmini_la-decompose.o decompose.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssapre.lo -MD -MP -MF .deps/libmini_la-ssapre.Tpo -c -o libmini_la-ssapre.o ssapre.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssapre.lo -MD -MP -MF .deps/libmini_la-ssapre.Tpo -c -o libmini_la-ssapre.o ssapre.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssapre.lo -MD -MP -MF .deps/libmini_la-ssapre.Tpo -c -o libmini_la-ssapre.o ssapre.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini.lo -MD -MP -MF .deps/libmini_la-mini.Tpo -c -o libmini_la-mini.o mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-liveness.lo -MD -MP -MF .deps/libmini_la-liveness.Tpo -c -o libmini_la-liveness.o liveness.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini.lo -MD -MP -MF .deps/libmini_la-mini.Tpo -c -o libmini_la-mini.o mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-liveness.lo -MD -MP -MF .deps/libmini_la-liveness.Tpo -c -o libmini_la-liveness.o liveness.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini.lo -MD -MP -MF .deps/libmini_la-mini.Tpo -c -o libmini_la-mini.o mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-liveness.lo -MD -MP -MF .deps/libmini_la-liveness.Tpo -c -o libmini_la-liveness.o liveness.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-local-propagation.lo -MD -MP -MF .deps/libmini_la-local-propagation.Tpo -c -o .libs/libmini_la-local-propagation.o local-propagation.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-local-propagation.lo -MD -MP -MF .deps/libmini_la-local-propagation.Tpo -c -o .libs/libmini_la-local-propagation.o local-propagation.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-local-propagation.lo -MD -MP -MF .deps/libmini_la-local-propagation.Tpo -c -o .libs/libmini_la-local-propagation.o local-propagation.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-abcremoval.lo -MD -MP -MF .deps/libmini_la-abcremoval.Tpo -c -o libmini_la-abcremoval.o abcremoval.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-abcremoval.lo -MD -MP -MF .deps/libmini_la-abcremoval.Tpo -c -o libmini_la-abcremoval.o abcremoval.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-abcremoval.lo -MD -MP -MF .deps/libmini_la-abcremoval.Tpo -c -o libmini_la-abcremoval.o abcremoval.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssa.lo -MD -MP -MF .deps/libmini_la-ssa.Tpo -c -o libmini_la-ssa.o ssa.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssa.lo -MD -MP -MF .deps/libmini_la-ssa.Tpo -c -o libmini_la-ssa.o ssa.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-ssa.lo -MD -MP -MF .deps/libmini_la-ssa.Tpo -c -o libmini_la-ssa.o ssa.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-local-propagation.lo -MD -MP -MF .deps/libmini_la-local-propagation.Tpo -c -o libmini_la-local-propagation.o local-propagation.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-local-propagation.lo -MD -MP -MF .deps/libmini_la-local-propagation.Tpo -c -o libmini_la-local-propagation.o local-propagation.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-local-propagation.lo -MD -MP -MF .deps/libmini_la-local-propagation.Tpo -c -o libmini_la-local-propagation.o local-propagation.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-driver.lo -MD -MP -MF .deps/libmini_la-driver.Tpo -c -o .libs/libmini_la-driver.o driver.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debug-mini.lo -MD -MP -MF .deps/libmini_la-debug-mini.Tpo -c -o .libs/libmini_la-debug-mini.o debug-mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-driver.lo -MD -MP -MF .deps/libmini_la-driver.Tpo -c -o .libs/libmini_la-driver.o driver.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debug-mini.lo -MD -MP -MF .deps/libmini_la-debug-mini.Tpo -c -o .libs/libmini_la-debug-mini.o debug-mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-driver.lo -MD -MP -MF .deps/libmini_la-driver.Tpo -c -o .libs/libmini_la-driver.o driver.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debug-mini.lo -MD -MP -MF .deps/libmini_la-debug-mini.Tpo -c -o .libs/libmini_la-debug-mini.o debug-mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-linear-scan.lo -MD -MP -MF .deps/libmini_la-linear-scan.Tpo -c -o .libs/libmini_la-linear-scan.o linear-scan.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-linear-scan.lo -MD -MP -MF .deps/libmini_la-linear-scan.Tpo -c -o .libs/libmini_la-linear-scan.o linear-scan.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-linear-scan.lo -MD -MP -MF .deps/libmini_la-linear-scan.Tpo -c -o .libs/libmini_la-linear-scan.o linear-scan.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-compiler.lo -MD -MP -MF .deps/libmini_la-aot-compiler.Tpo -c -o .libs/libmini_la-aot-compiler.o aot-compiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-compiler.lo -MD -MP -MF .deps/libmini_la-aot-compiler.Tpo -c -o .libs/libmini_la-aot-compiler.o aot-compiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-compiler.lo -MD -MP -MF .deps/libmini_la-aot-compiler.Tpo -c -o .libs/libmini_la-aot-compiler.o aot-compiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-runtime.lo -MD -MP -MF .deps/libmini_la-aot-runtime.Tpo -c -o .libs/libmini_la-aot-runtime.o aot-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-runtime.lo -MD -MP -MF .deps/libmini_la-aot-runtime.Tpo -c -o .libs/libmini_la-aot-runtime.o aot-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-runtime.lo -MD -MP -MF .deps/libmini_la-aot-runtime.Tpo -c -o .libs/libmini_la-aot-runtime.o aot-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debug-mini.lo -MD -MP -MF .deps/libmini_la-debug-mini.Tpo -c -o libmini_la-debug-mini.o debug-mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debug-mini.lo -MD -MP -MF .deps/libmini_la-debug-mini.Tpo -c -o libmini_la-debug-mini.o debug-mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-linear-scan.lo -MD -MP -MF .deps/libmini_la-linear-scan.Tpo -c -o libmini_la-linear-scan.o linear-scan.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debug-mini.lo -MD -MP -MF .deps/libmini_la-debug-mini.Tpo -c -o libmini_la-debug-mini.o debug-mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-linear-scan.lo -MD -MP -MF .deps/libmini_la-linear-scan.Tpo -c -o libmini_la-linear-scan.o linear-scan.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-linear-scan.lo -MD -MP -MF .deps/libmini_la-linear-scan.Tpo -c -o libmini_la-linear-scan.o linear-scan.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-graph.lo -MD -MP -MF .deps/libmini_la-graph.Tpo -c -o .libs/libmini_la-graph.o graph.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-graph.lo -MD -MP -MF .deps/libmini_la-graph.Tpo -c -o .libs/libmini_la-graph.o graph.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-driver.lo -MD -MP -MF .deps/libmini_la-driver.Tpo -c -o libmini_la-driver.o driver.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-graph.lo -MD -MP -MF .deps/libmini_la-graph.Tpo -c -o .libs/libmini_la-graph.o graph.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-driver.lo -MD -MP -MF .deps/libmini_la-driver.Tpo -c -o libmini_la-driver.o driver.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-driver.lo -MD -MP -MF .deps/libmini_la-driver.Tpo -c -o libmini_la-driver.o driver.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-codegen.lo -MD -MP -MF .deps/libmini_la-mini-codegen.Tpo -c -o .libs/libmini_la-mini-codegen.o mini-codegen.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-codegen.lo -MD -MP -MF .deps/libmini_la-mini-codegen.Tpo -c -o .libs/libmini_la-mini-codegen.o mini-codegen.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-codegen.lo -MD -MP -MF .deps/libmini_la-mini-codegen.Tpo -c -o .libs/libmini_la-mini-codegen.o mini-codegen.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_la-mini-exceptions.Tpo -c -o .libs/libmini_la-mini-exceptions.o mini-exceptions.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_la-mini-exceptions.Tpo -c -o .libs/libmini_la-mini-exceptions.o mini-exceptions.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_la-mini-exceptions.Tpo -c -o .libs/libmini_la-mini-exceptions.o mini-exceptions.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-graph.lo -MD -MP -MF .deps/libmini_la-graph.Tpo -c -o libmini_la-graph.o graph.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-graph.lo -MD -MP -MF .deps/libmini_la-graph.Tpo -c -o libmini_la-graph.o graph.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-graph.lo -MD -MP -MF .deps/libmini_la-graph.Tpo -c -o libmini_la-graph.o graph.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_la-mini-trampolines.Tpo -c -o .libs/libmini_la-mini-trampolines.o mini-trampolines.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_la-mini-trampolines.Tpo -c -o .libs/libmini_la-mini-trampolines.o mini-trampolines.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_la-mini-trampolines.Tpo -c -o .libs/libmini_la-mini-trampolines.o mini-trampolines.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-declsec.lo -MD -MP -MF .deps/libmini_la-declsec.Tpo -c -o .libs/libmini_la-declsec.o declsec.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-declsec.lo -MD -MP -MF .deps/libmini_la-declsec.Tpo -c -o .libs/libmini_la-declsec.o declsec.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-declsec.lo -MD -MP -MF .deps/libmini_la-declsec.Tpo -c -o .libs/libmini_la-declsec.o declsec.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-declsec.lo -MD -MP -MF .deps/libmini_la-declsec.Tpo -c -o libmini_la-declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-declsec.lo -MD -MP -MF .deps/libmini_la-declsec.Tpo -c -o libmini_la-declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-declsec.lo -MD -MP -MF .deps/libmini_la-declsec.Tpo -c -o libmini_la-declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-wapihandles.lo -MD -MP -MF .deps/libmini_la-wapihandles.Tpo -c -o .libs/libmini_la-wapihandles.o wapihandles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-wapihandles.lo -MD -MP -MF .deps/libmini_la-wapihandles.Tpo -c -o .libs/libmini_la-wapihandles.o wapihandles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-wapihandles.lo -MD -MP -MF .deps/libmini_la-wapihandles.Tpo -c -o .libs/libmini_la-wapihandles.o wapihandles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-branch-opts.lo -MD -MP -MF .deps/libmini_la-branch-opts.Tpo -c -o .libs/libmini_la-branch-opts.o branch-opts.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-branch-opts.lo -MD -MP -MF .deps/libmini_la-branch-opts.Tpo -c -o .libs/libmini_la-branch-opts.o branch-opts.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-branch-opts.lo -MD -MP -MF .deps/libmini_la-branch-opts.Tpo -c -o .libs/libmini_la-branch-opts.o branch-opts.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-wapihandles.lo -MD -MP -MF .deps/libmini_la-wapihandles.Tpo -c -o libmini_la-wapihandles.o wapihandles.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-wapihandles.lo -MD -MP -MF .deps/libmini_la-wapihandles.Tpo -c -o libmini_la-wapihandles.o wapihandles.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-wapihandles.lo -MD -MP -MF .deps/libmini_la-wapihandles.Tpo -c -o libmini_la-wapihandles.o wapihandles.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_la-mini-trampolines.Tpo -c -o libmini_la-mini-trampolines.o mini-trampolines.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_la-mini-trampolines.Tpo -c -o libmini_la-mini-trampolines.o mini-trampolines.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_la-mini-trampolines.Tpo -c -o libmini_la-mini-trampolines.o mini-trampolines.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_la-mini-exceptions.Tpo -c -o libmini_la-mini-exceptions.o mini-exceptions.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_la-mini-exceptions.Tpo -c -o libmini_la-mini-exceptions.o mini-exceptions.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_la-mini-exceptions.Tpo -c -o libmini_la-mini-exceptions.o mini-exceptions.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_la-mini-generic-sharing.Tpo -c -o .libs/libmini_la-mini-generic-sharing.o mini-generic-sharing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_la-mini-generic-sharing.Tpo -c -o .libs/libmini_la-mini-generic-sharing.o mini-generic-sharing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_la-mini-generic-sharing.Tpo -c -o .libs/libmini_la-mini-generic-sharing.o mini-generic-sharing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc2.lo -MD -MP -MF .deps/libmini_la-regalloc2.Tpo -c -o .libs/libmini_la-regalloc2.o regalloc2.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc2.lo -MD -MP -MF .deps/libmini_la-regalloc2.Tpo -c -o .libs/libmini_la-regalloc2.o regalloc2.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc2.lo -MD -MP -MF .deps/libmini_la-regalloc2.Tpo -c -o .libs/libmini_la-regalloc2.o regalloc2.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc2.lo -MD -MP -MF .deps/libmini_la-regalloc2.Tpo -c -o libmini_la-regalloc2.o regalloc2.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-branch-opts.lo -MD -MP -MF .deps/libmini_la-branch-opts.Tpo -c -o libmini_la-branch-opts.o branch-opts.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc2.lo -MD -MP -MF .deps/libmini_la-regalloc2.Tpo -c -o libmini_la-regalloc2.o regalloc2.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-branch-opts.lo -MD -MP -MF .deps/libmini_la-branch-opts.Tpo -c -o libmini_la-branch-opts.o branch-opts.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-regalloc2.lo -MD -MP -MF .deps/libmini_la-regalloc2.Tpo -c -o libmini_la-regalloc2.o regalloc2.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-branch-opts.lo -MD -MP -MF .deps/libmini_la-branch-opts.Tpo -c -o libmini_la-branch-opts.o branch-opts.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-codegen.lo -MD -MP -MF .deps/libmini_la-mini-codegen.Tpo -c -o libmini_la-mini-codegen.o mini-codegen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-codegen.lo -MD -MP -MF .deps/libmini_la-mini-codegen.Tpo -c -o libmini_la-mini-codegen.o mini-codegen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-codegen.lo -MD -MP -MF .deps/libmini_la-mini-codegen.Tpo -c -o libmini_la-mini-codegen.o mini-codegen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tasklets.lo -MD -MP -MF .deps/libmini_la-tasklets.Tpo -c -o .libs/libmini_la-tasklets.o tasklets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tasklets.lo -MD -MP -MF .deps/libmini_la-tasklets.Tpo -c -o .libs/libmini_la-tasklets.o tasklets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tasklets.lo -MD -MP -MF .deps/libmini_la-tasklets.Tpo -c -o .libs/libmini_la-tasklets.o tasklets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_la-mini-generic-sharing.Tpo -c -o libmini_la-mini-generic-sharing.o mini-generic-sharing.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_la-mini-generic-sharing.Tpo -c -o libmini_la-mini-generic-sharing.o mini-generic-sharing.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_la-mini-generic-sharing.Tpo -c -o libmini_la-mini-generic-sharing.o mini-generic-sharing.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tasklets.lo -MD -MP -MF .deps/libmini_la-tasklets.Tpo -c -o libmini_la-tasklets.o tasklets.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tasklets.lo -MD -MP -MF .deps/libmini_la-tasklets.Tpo -c -o libmini_la-tasklets.o tasklets.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_la-simd-intrinsics.Tpo -c -o .libs/libmini_la-simd-intrinsics.o simd-intrinsics.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_la-simd-intrinsics.Tpo -c -o .libs/libmini_la-simd-intrinsics.o simd-intrinsics.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tasklets.lo -MD -MP -MF .deps/libmini_la-tasklets.Tpo -c -o libmini_la-tasklets.o tasklets.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_la-simd-intrinsics.Tpo -c -o .libs/libmini_la-simd-intrinsics.o simd-intrinsics.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-runtime.lo -MD -MP -MF .deps/libmini_la-aot-runtime.Tpo -c -o libmini_la-aot-runtime.o aot-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-runtime.lo -MD -MP -MF .deps/libmini_la-aot-runtime.Tpo -c -o libmini_la-aot-runtime.o aot-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-runtime.lo -MD -MP -MF .deps/libmini_la-aot-runtime.Tpo -c -o libmini_la-aot-runtime.o aot-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-native-types.lo -MD -MP -MF .deps/libmini_la-mini-native-types.Tpo -c -o .libs/libmini_la-mini-native-types.o mini-native-types.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-native-types.lo -MD -MP -MF .deps/libmini_la-mini-native-types.Tpo -c -o .libs/libmini_la-mini-native-types.o mini-native-types.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-native-types.lo -MD -MP -MF .deps/libmini_la-mini-native-types.Tpo -c -o .libs/libmini_la-mini-native-types.o mini-native-types.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-native-types.lo -MD -MP -MF .deps/libmini_la-mini-native-types.Tpo -c -o libmini_la-mini-native-types.o mini-native-types.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-native-types.lo -MD -MP -MF .deps/libmini_la-mini-native-types.Tpo -c -o libmini_la-mini-native-types.o mini-native-types.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-native-types.lo -MD -MP -MF .deps/libmini_la-mini-native-types.Tpo -c -o libmini_la-mini-native-types.o mini-native-types.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-unwind.lo -MD -MP -MF .deps/libmini_la-unwind.Tpo -c -o .libs/libmini_la-unwind.o unwind.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-unwind.lo -MD -MP -MF .deps/libmini_la-unwind.Tpo -c -o .libs/libmini_la-unwind.o unwind.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-unwind.lo -MD -MP -MF .deps/libmini_la-unwind.Tpo -c -o .libs/libmini_la-unwind.o unwind.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-image-writer.lo -MD -MP -MF .deps/libmini_la-image-writer.Tpo -c -o .libs/libmini_la-image-writer.o image-writer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-image-writer.lo -MD -MP -MF .deps/libmini_la-image-writer.Tpo -c -o .libs/libmini_la-image-writer.o image-writer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-image-writer.lo -MD -MP -MF .deps/libmini_la-image-writer.Tpo -c -o .libs/libmini_la-image-writer.o image-writer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_la-dwarfwriter.Tpo -c -o .libs/libmini_la-dwarfwriter.o dwarfwriter.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_la-simd-intrinsics.Tpo -c -o libmini_la-simd-intrinsics.o simd-intrinsics.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_la-dwarfwriter.Tpo -c -o .libs/libmini_la-dwarfwriter.o dwarfwriter.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_la-simd-intrinsics.Tpo -c -o libmini_la-simd-intrinsics.o simd-intrinsics.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-image-writer.lo -MD -MP -MF .deps/libmini_la-image-writer.Tpo -c -o libmini_la-image-writer.o image-writer.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-image-writer.lo -MD -MP -MF .deps/libmini_la-image-writer.Tpo -c -o libmini_la-image-writer.o image-writer.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_la-dwarfwriter.Tpo -c -o .libs/libmini_la-dwarfwriter.o dwarfwriter.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_la-simd-intrinsics.Tpo -c -o libmini_la-simd-intrinsics.o simd-intrinsics.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-image-writer.lo -MD -MP -MF .deps/libmini_la-image-writer.Tpo -c -o libmini_la-image-writer.o image-writer.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-unwind.lo -MD -MP -MF .deps/libmini_la-unwind.Tpo -c -o libmini_la-unwind.o unwind.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-unwind.lo -MD -MP -MF .deps/libmini_la-unwind.Tpo -c -o libmini_la-unwind.o unwind.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-unwind.lo -MD -MP -MF .deps/libmini_la-unwind.Tpo -c -o libmini_la-unwind.o unwind.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-gc.lo -MD -MP -MF .deps/libmini_la-mini-gc.Tpo -c -o .libs/libmini_la-mini-gc.o mini-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-gc.lo -MD -MP -MF .deps/libmini_la-mini-gc.Tpo -c -o .libs/libmini_la-mini-gc.o mini-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-gc.lo -MD -MP -MF .deps/libmini_la-mini-gc.Tpo -c -o .libs/libmini_la-mini-gc.o mini-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-gc.lo -MD -MP -MF .deps/libmini_la-mini-gc.Tpo -c -o libmini_la-mini-gc.o mini-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-gc.lo -MD -MP -MF .deps/libmini_la-mini-gc.Tpo -c -o libmini_la-mini-gc.o mini-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-gc.lo -MD -MP -MF .deps/libmini_la-mini-gc.Tpo -c -o libmini_la-mini-gc.o mini-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debugger-agent.lo -MD -MP -MF .deps/libmini_la-debugger-agent.Tpo -c -o .libs/libmini_la-debugger-agent.o debugger-agent.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debugger-agent.lo -MD -MP -MF .deps/libmini_la-debugger-agent.Tpo -c -o .libs/libmini_la-debugger-agent.o debugger-agent.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debugger-agent.lo -MD -MP -MF .deps/libmini_la-debugger-agent.Tpo -c -o .libs/libmini_la-debugger-agent.o debugger-agent.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-xdebug.lo -MD -MP -MF .deps/libmini_la-xdebug.Tpo -c -o .libs/libmini_la-xdebug.o xdebug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-xdebug.lo -MD -MP -MF .deps/libmini_la-xdebug.Tpo -c -o .libs/libmini_la-xdebug.o xdebug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-xdebug.lo -MD -MP -MF .deps/libmini_la-xdebug.Tpo -c -o .libs/libmini_la-xdebug.o xdebug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-alias-analysis.lo -MD -MP -MF .deps/libmini_la-alias-analysis.Tpo -c -o .libs/libmini_la-alias-analysis.o alias-analysis.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-alias-analysis.lo -MD -MP -MF .deps/libmini_la-alias-analysis.Tpo -c -o .libs/libmini_la-alias-analysis.o alias-analysis.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-alias-analysis.lo -MD -MP -MF .deps/libmini_la-alias-analysis.Tpo -c -o .libs/libmini_la-alias-analysis.o alias-analysis.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_la-dwarfwriter.Tpo -c -o libmini_la-dwarfwriter.o dwarfwriter.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_la-dwarfwriter.Tpo -c -o libmini_la-dwarfwriter.o dwarfwriter.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_la-dwarfwriter.Tpo -c -o libmini_la-dwarfwriter.o dwarfwriter.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_la-mini-cross-helpers.Tpo -c -o .libs/libmini_la-mini-cross-helpers.o mini-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_la-mini-cross-helpers.Tpo -c -o .libs/libmini_la-mini-cross-helpers.o mini-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_la-mini-cross-helpers.Tpo -c -o .libs/libmini_la-mini-cross-helpers.o mini-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-xdebug.lo -MD -MP -MF .deps/libmini_la-xdebug.Tpo -c -o libmini_la-xdebug.o xdebug.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-xdebug.lo -MD -MP -MF .deps/libmini_la-xdebug.Tpo -c -o libmini_la-xdebug.o xdebug.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_la-mini-cross-helpers.Tpo -c -o libmini_la-mini-cross-helpers.o mini-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-xdebug.lo -MD -MP -MF .deps/libmini_la-xdebug.Tpo -c -o libmini_la-xdebug.o xdebug.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_la-mini-cross-helpers.Tpo -c -o libmini_la-mini-cross-helpers.o mini-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_la-mini-cross-helpers.Tpo -c -o libmini_la-mini-cross-helpers.o mini-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-amd64.lo -MD -MP -MF .deps/libmini_la-mini-amd64.Tpo -c -o .libs/libmini_la-mini-amd64.o mini-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-alias-analysis.lo -MD -MP -MF .deps/libmini_la-alias-analysis.Tpo -c -o libmini_la-alias-analysis.o alias-analysis.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-amd64.lo -MD -MP -MF .deps/libmini_la-mini-amd64.Tpo -c -o .libs/libmini_la-mini-amd64.o mini-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-alias-analysis.lo -MD -MP -MF .deps/libmini_la-alias-analysis.Tpo -c -o libmini_la-alias-analysis.o alias-analysis.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-amd64.lo -MD -MP -MF .deps/libmini_la-mini-amd64.Tpo -c -o .libs/libmini_la-mini-amd64.o mini-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-alias-analysis.lo -MD -MP -MF .deps/libmini_la-alias-analysis.Tpo -c -o libmini_la-alias-analysis.o alias-analysis.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_la-exceptions-amd64.Tpo -c -o .libs/libmini_la-exceptions-amd64.o exceptions-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_la-exceptions-amd64.Tpo -c -o .libs/libmini_la-exceptions-amd64.o exceptions-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_la-exceptions-amd64.Tpo -c -o .libs/libmini_la-exceptions-amd64.o exceptions-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_la-tramp-amd64.Tpo -c -o .libs/libmini_la-tramp-amd64.o tramp-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_la-tramp-amd64.Tpo -c -o .libs/libmini_la-tramp-amd64.o tramp-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_la-tramp-amd64.Tpo -c -o .libs/libmini_la-tramp-amd64.o tramp-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_la-exceptions-amd64.Tpo -c -o libmini_la-exceptions-amd64.o exceptions-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_la-exceptions-amd64.Tpo -c -o libmini_la-exceptions-amd64.o exceptions-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_la-exceptions-amd64.Tpo -c -o libmini_la-exceptions-amd64.o exceptions-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-darwin.lo -MD -MP -MF .deps/libmini_la-mini-darwin.Tpo -c -o .libs/libmini_la-mini-darwin.o mini-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-darwin.lo -MD -MP -MF .deps/libmini_la-mini-darwin.Tpo -c -o .libs/libmini_la-mini-darwin.o mini-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-darwin.lo -MD -MP -MF .deps/libmini_la-mini-darwin.Tpo -c -o .libs/libmini_la-mini-darwin.o mini-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-posix.lo -MD -MP -MF .deps/libmini_la-mini-posix.Tpo -c -o .libs/libmini_la-mini-posix.o mini-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-darwin.lo -MD -MP -MF .deps/libmini_la-mini-darwin.Tpo -c -o libmini_la-mini-darwin.o mini-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-posix.lo -MD -MP -MF .deps/libmini_la-mini-posix.Tpo -c -o .libs/libmini_la-mini-posix.o mini-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-darwin.lo -MD -MP -MF .deps/libmini_la-mini-darwin.Tpo -c -o libmini_la-mini-darwin.o mini-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-posix.lo -MD -MP -MF .deps/libmini_la-mini-posix.Tpo -c -o .libs/libmini_la-mini-posix.o mini-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-darwin.lo -MD -MP -MF .deps/libmini_la-mini-darwin.Tpo -c -o libmini_la-mini-darwin.o mini-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-compiler.lo -MD -MP -MF .deps/libmini_la-aot-compiler.Tpo -c -o libmini_la-aot-compiler.o aot-compiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-compiler.lo -MD -MP -MF .deps/libmini_la-aot-compiler.Tpo -c -o libmini_la-aot-compiler.o aot-compiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-aot-compiler.lo -MD -MP -MF .deps/libmini_la-aot-compiler.Tpo -c -o libmini_la-aot-compiler.o aot-compiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini.lo -MD -MP -MF .deps/libmini_static_la-mini.Tpo -c -o .libs/libmini_static_la-mini.o mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini.lo -MD -MP -MF .deps/libmini_static_la-mini.Tpo -c -o .libs/libmini_static_la-mini.o mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini.lo -MD -MP -MF .deps/libmini_static_la-mini.Tpo -c -o .libs/libmini_static_la-mini.o mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-posix.lo -MD -MP -MF .deps/libmini_la-mini-posix.Tpo -c -o libmini_la-mini-posix.o mini-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-posix.lo -MD -MP -MF .deps/libmini_la-mini-posix.Tpo -c -o libmini_la-mini-posix.o mini-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-posix.lo -MD -MP -MF .deps/libmini_la-mini-posix.Tpo -c -o libmini_la-mini-posix.o mini-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-runtime.lo -MD -MP -MF .deps/libmini_static_la-mini-runtime.Tpo -c -o .libs/libmini_static_la-mini-runtime.o mini-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-runtime.lo -MD -MP -MF .deps/libmini_static_la-mini-runtime.Tpo -c -o .libs/libmini_static_la-mini-runtime.o mini-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-runtime.lo -MD -MP -MF .deps/libmini_static_la-mini-runtime.Tpo -c -o .libs/libmini_static_la-mini-runtime.o mini-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-seq-points.lo -MD -MP -MF .deps/libmini_static_la-seq-points.Tpo -c -o .libs/libmini_static_la-seq-points.o seq-points.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-seq-points.lo -MD -MP -MF .deps/libmini_static_la-seq-points.Tpo -c -o .libs/libmini_static_la-seq-points.o seq-points.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-seq-points.lo -MD -MP -MF .deps/libmini_static_la-seq-points.Tpo -c -o .libs/libmini_static_la-seq-points.o seq-points.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-seq-points.lo -MD -MP -MF .deps/libmini_static_la-seq-points.Tpo -c -o libmini_static_la-seq-points.o seq-points.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-seq-points.lo -MD -MP -MF .deps/libmini_static_la-seq-points.Tpo -c -o libmini_static_la-seq-points.o seq-points.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_la-tramp-amd64.Tpo -c -o libmini_la-tramp-amd64.o tramp-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-seq-points.lo -MD -MP -MF .deps/libmini_static_la-seq-points.Tpo -c -o libmini_static_la-seq-points.o seq-points.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/seq-points.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_la-tramp-amd64.Tpo -c -o libmini_la-tramp-amd64.o tramp-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_la-tramp-amd64.Tpo -c -o libmini_la-tramp-amd64.o tramp-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-method-to-ir.lo -MD -MP -MF .deps/libmini_static_la-method-to-ir.Tpo -c -o .libs/libmini_static_la-method-to-ir.o method-to-ir.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-method-to-ir.lo -MD -MP -MF .deps/libmini_static_la-method-to-ir.Tpo -c -o .libs/libmini_static_la-method-to-ir.o method-to-ir.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-method-to-ir.lo -MD -MP -MF .deps/libmini_static_la-method-to-ir.Tpo -c -o .libs/libmini_static_la-method-to-ir.o method-to-ir.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-runtime.lo -MD -MP -MF .deps/libmini_static_la-mini-runtime.Tpo -c -o libmini_static_la-mini-runtime.o mini-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-runtime.lo -MD -MP -MF .deps/libmini_static_la-mini-runtime.Tpo -c -o libmini_static_la-mini-runtime.o mini-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-runtime.lo -MD -MP -MF .deps/libmini_static_la-mini-runtime.Tpo -c -o libmini_static_la-mini-runtime.o mini-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini.lo -MD -MP -MF .deps/libmini_static_la-mini.Tpo -c -o libmini_static_la-mini.o mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini.lo -MD -MP -MF .deps/libmini_static_la-mini.Tpo -c -o libmini_static_la-mini.o mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini.lo -MD -MP -MF .deps/libmini_static_la-mini.Tpo -c -o libmini_static_la-mini.o mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-decompose.lo -MD -MP -MF .deps/libmini_static_la-decompose.Tpo -c -o .libs/libmini_static_la-decompose.o decompose.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-decompose.lo -MD -MP -MF .deps/libmini_static_la-decompose.Tpo -c -o .libs/libmini_static_la-decompose.o decompose.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-decompose.lo -MD -MP -MF .deps/libmini_static_la-decompose.Tpo -c -o .libs/libmini_static_la-decompose.o decompose.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-jit-icalls.lo -MD -MP -MF .deps/libmini_static_la-jit-icalls.Tpo -c -o .libs/libmini_static_la-jit-icalls.o jit-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-jit-icalls.lo -MD -MP -MF .deps/libmini_static_la-jit-icalls.Tpo -c -o .libs/libmini_static_la-jit-icalls.o jit-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-jit-icalls.lo -MD -MP -MF .deps/libmini_static_la-jit-icalls.Tpo -c -o .libs/libmini_static_la-jit-icalls.o jit-icalls.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-jit-icalls.lo -MD -MP -MF .deps/libmini_static_la-jit-icalls.Tpo -c -o libmini_static_la-jit-icalls.o jit-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-jit-icalls.lo -MD -MP -MF .deps/libmini_static_la-jit-icalls.Tpo -c -o libmini_static_la-jit-icalls.o jit-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-jit-icalls.lo -MD -MP -MF .deps/libmini_static_la-jit-icalls.Tpo -c -o libmini_static_la-jit-icalls.o jit-icalls.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/jit-icalls.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-trace.lo -MD -MP -MF .deps/libmini_static_la-trace.Tpo -c -o .libs/libmini_static_la-trace.o trace.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-trace.lo -MD -MP -MF .deps/libmini_static_la-trace.Tpo -c -o .libs/libmini_static_la-trace.o trace.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-trace.lo -MD -MP -MF .deps/libmini_static_la-trace.Tpo -c -o .libs/libmini_static_la-trace.o trace.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dominators.lo -MD -MP -MF .deps/libmini_static_la-dominators.Tpo -c -o .libs/libmini_static_la-dominators.o dominators.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dominators.lo -MD -MP -MF .deps/libmini_static_la-dominators.Tpo -c -o .libs/libmini_static_la-dominators.o dominators.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dominators.lo -MD -MP -MF .deps/libmini_static_la-dominators.Tpo -c -o .libs/libmini_static_la-dominators.o dominators.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-trace.lo -MD -MP -MF .deps/libmini_static_la-trace.Tpo -c -o libmini_static_la-trace.o trace.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-trace.lo -MD -MP -MF .deps/libmini_static_la-trace.Tpo -c -o libmini_static_la-trace.o trace.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-trace.lo -MD -MP -MF .deps/libmini_static_la-trace.Tpo -c -o libmini_static_la-trace.o trace.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/trace.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-decompose.lo -MD -MP -MF .deps/libmini_static_la-decompose.Tpo -c -o libmini_static_la-decompose.o decompose.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-decompose.lo -MD -MP -MF .deps/libmini_static_la-decompose.Tpo -c -o libmini_static_la-decompose.o decompose.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-decompose.lo -MD -MP -MF .deps/libmini_static_la-decompose.Tpo -c -o libmini_static_la-decompose.o decompose.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/decompose.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dominators.lo -MD -MP -MF .deps/libmini_static_la-dominators.Tpo -c -o libmini_static_la-dominators.o dominators.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dominators.lo -MD -MP -MF .deps/libmini_static_la-dominators.Tpo -c -o libmini_static_la-dominators.o dominators.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dominators.lo -MD -MP -MF .deps/libmini_static_la-dominators.Tpo -c -o libmini_static_la-dominators.o dominators.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dominators.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-cfold.lo -MD -MP -MF .deps/libmini_static_la-cfold.Tpo -c -o .libs/libmini_static_la-cfold.o cfold.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-cfold.lo -MD -MP -MF .deps/libmini_static_la-cfold.Tpo -c -o .libs/libmini_static_la-cfold.o cfold.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-cfold.lo -MD -MP -MF .deps/libmini_static_la-cfold.Tpo -c -o .libs/libmini_static_la-cfold.o cfold.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc.lo -MD -MP -MF .deps/libmini_static_la-regalloc.Tpo -c -o .libs/libmini_static_la-regalloc.o regalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc.lo -MD -MP -MF .deps/libmini_static_la-regalloc.Tpo -c -o .libs/libmini_static_la-regalloc.o regalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc.lo -MD -MP -MF .deps/libmini_static_la-regalloc.Tpo -c -o .libs/libmini_static_la-regalloc.o regalloc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-cfold.lo -MD -MP -MF .deps/libmini_static_la-cfold.Tpo -c -o libmini_static_la-cfold.o cfold.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-cfold.lo -MD -MP -MF .deps/libmini_static_la-cfold.Tpo -c -o libmini_static_la-cfold.o cfold.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-cfold.lo -MD -MP -MF .deps/libmini_static_la-cfold.Tpo -c -o libmini_static_la-cfold.o cfold.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/cfold.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc.lo -MD -MP -MF .deps/libmini_static_la-regalloc.Tpo -c -o libmini_static_la-regalloc.o regalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc.lo -MD -MP -MF .deps/libmini_static_la-regalloc.Tpo -c -o libmini_static_la-regalloc.o regalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc.lo -MD -MP -MF .deps/libmini_static_la-regalloc.Tpo -c -o libmini_static_la-regalloc.o regalloc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-helpers.lo -MD -MP -MF .deps/libmini_static_la-helpers.Tpo -c -o .libs/libmini_static_la-helpers.o helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-helpers.lo -MD -MP -MF .deps/libmini_static_la-helpers.Tpo -c -o .libs/libmini_static_la-helpers.o helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-helpers.lo -MD -MP -MF .deps/libmini_static_la-helpers.Tpo -c -o .libs/libmini_static_la-helpers.o helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-liveness.lo -MD -MP -MF .deps/libmini_static_la-liveness.Tpo -c -o .libs/libmini_static_la-liveness.o liveness.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-liveness.lo -MD -MP -MF .deps/libmini_static_la-liveness.Tpo -c -o .libs/libmini_static_la-liveness.o liveness.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-liveness.lo -MD -MP -MF .deps/libmini_static_la-liveness.Tpo -c -o .libs/libmini_static_la-liveness.o liveness.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-helpers.lo -MD -MP -MF .deps/libmini_static_la-helpers.Tpo -c -o libmini_static_la-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-helpers.lo -MD -MP -MF .deps/libmini_static_la-helpers.Tpo -c -o libmini_static_la-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-helpers.lo -MD -MP -MF .deps/libmini_static_la-helpers.Tpo -c -o libmini_static_la-helpers.o helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssa.lo -MD -MP -MF .deps/libmini_static_la-ssa.Tpo -c -o .libs/libmini_static_la-ssa.o ssa.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssa.lo -MD -MP -MF .deps/libmini_static_la-ssa.Tpo -c -o .libs/libmini_static_la-ssa.o ssa.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssa.lo -MD -MP -MF .deps/libmini_static_la-ssa.Tpo -c -o .libs/libmini_static_la-ssa.o ssa.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-abcremoval.lo -MD -MP -MF .deps/libmini_static_la-abcremoval.Tpo -c -o .libs/libmini_static_la-abcremoval.o abcremoval.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-abcremoval.lo -MD -MP -MF .deps/libmini_static_la-abcremoval.Tpo -c -o .libs/libmini_static_la-abcremoval.o abcremoval.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-abcremoval.lo -MD -MP -MF .deps/libmini_static_la-abcremoval.Tpo -c -o .libs/libmini_static_la-abcremoval.o abcremoval.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-liveness.lo -MD -MP -MF .deps/libmini_static_la-liveness.Tpo -c -o libmini_static_la-liveness.o liveness.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-liveness.lo -MD -MP -MF .deps/libmini_static_la-liveness.Tpo -c -o libmini_static_la-liveness.o liveness.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-liveness.lo -MD -MP -MF .deps/libmini_static_la-liveness.Tpo -c -o libmini_static_la-liveness.o liveness.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/liveness.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssapre.lo -MD -MP -MF .deps/libmini_static_la-ssapre.Tpo -c -o .libs/libmini_static_la-ssapre.o ssapre.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssapre.lo -MD -MP -MF .deps/libmini_static_la-ssapre.Tpo -c -o .libs/libmini_static_la-ssapre.o ssapre.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssapre.lo -MD -MP -MF .deps/libmini_static_la-ssapre.Tpo -c -o .libs/libmini_static_la-ssapre.o ssapre.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-abcremoval.lo -MD -MP -MF .deps/libmini_static_la-abcremoval.Tpo -c -o libmini_static_la-abcremoval.o abcremoval.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-abcremoval.lo -MD -MP -MF .deps/libmini_static_la-abcremoval.Tpo -c -o libmini_static_la-abcremoval.o abcremoval.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-abcremoval.lo -MD -MP -MF .deps/libmini_static_la-abcremoval.Tpo -c -o libmini_static_la-abcremoval.o abcremoval.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/abcremoval.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debugger-agent.lo -MD -MP -MF .deps/libmini_la-debugger-agent.Tpo -c -o libmini_la-debugger-agent.o debugger-agent.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debugger-agent.lo -MD -MP -MF .deps/libmini_la-debugger-agent.Tpo -c -o libmini_la-debugger-agent.o debugger-agent.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-debugger-agent.lo -MD -MP -MF .deps/libmini_la-debugger-agent.Tpo -c -o libmini_la-debugger-agent.o debugger-agent.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssapre.lo -MD -MP -MF .deps/libmini_static_la-ssapre.Tpo -c -o libmini_static_la-ssapre.o ssapre.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssapre.lo -MD -MP -MF .deps/libmini_static_la-ssapre.Tpo -c -o libmini_static_la-ssapre.o ssapre.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssapre.lo -MD -MP -MF .deps/libmini_static_la-ssapre.Tpo -c -o libmini_static_la-ssapre.o ssapre.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssapre.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-local-propagation.lo -MD -MP -MF .deps/libmini_static_la-local-propagation.Tpo -c -o .libs/libmini_static_la-local-propagation.o local-propagation.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-local-propagation.lo -MD -MP -MF .deps/libmini_static_la-local-propagation.Tpo -c -o .libs/libmini_static_la-local-propagation.o local-propagation.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-local-propagation.lo -MD -MP -MF .deps/libmini_static_la-local-propagation.Tpo -c -o .libs/libmini_static_la-local-propagation.o local-propagation.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssa.lo -MD -MP -MF .deps/libmini_static_la-ssa.Tpo -c -o libmini_static_la-ssa.o ssa.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssa.lo -MD -MP -MF .deps/libmini_static_la-ssa.Tpo -c -o libmini_static_la-ssa.o ssa.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-ssa.lo -MD -MP -MF .deps/libmini_static_la-ssa.Tpo -c -o libmini_static_la-ssa.o ssa.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/ssa.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-driver.lo -MD -MP -MF .deps/libmini_static_la-driver.Tpo -c -o .libs/libmini_static_la-driver.o driver.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-driver.lo -MD -MP -MF .deps/libmini_static_la-driver.Tpo -c -o .libs/libmini_static_la-driver.o driver.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-driver.lo -MD -MP -MF .deps/libmini_static_la-driver.Tpo -c -o .libs/libmini_static_la-driver.o driver.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debug-mini.lo -MD -MP -MF .deps/libmini_static_la-debug-mini.Tpo -c -o .libs/libmini_static_la-debug-mini.o debug-mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debug-mini.lo -MD -MP -MF .deps/libmini_static_la-debug-mini.Tpo -c -o .libs/libmini_static_la-debug-mini.o debug-mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debug-mini.lo -MD -MP -MF .deps/libmini_static_la-debug-mini.Tpo -c -o .libs/libmini_static_la-debug-mini.o debug-mini.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-local-propagation.lo -MD -MP -MF .deps/libmini_static_la-local-propagation.Tpo -c -o libmini_static_la-local-propagation.o local-propagation.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-local-propagation.lo -MD -MP -MF .deps/libmini_static_la-local-propagation.Tpo -c -o libmini_static_la-local-propagation.o local-propagation.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-local-propagation.lo -MD -MP -MF .deps/libmini_static_la-local-propagation.Tpo -c -o libmini_static_la-local-propagation.o local-propagation.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/local-propagation.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debug-mini.lo -MD -MP -MF .deps/libmini_static_la-debug-mini.Tpo -c -o libmini_static_la-debug-mini.o debug-mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debug-mini.lo -MD -MP -MF .deps/libmini_static_la-debug-mini.Tpo -c -o libmini_static_la-debug-mini.o debug-mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-driver.lo -MD -MP -MF .deps/libmini_static_la-driver.Tpo -c -o libmini_static_la-driver.o driver.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-driver.lo -MD -MP -MF .deps/libmini_static_la-driver.Tpo -c -o libmini_static_la-driver.o driver.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debug-mini.lo -MD -MP -MF .deps/libmini_static_la-debug-mini.Tpo -c -o libmini_static_la-debug-mini.o debug-mini.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debug-mini.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-driver.lo -MD -MP -MF .deps/libmini_static_la-driver.Tpo -c -o libmini_static_la-driver.o driver.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/driver.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-linear-scan.lo -MD -MP -MF .deps/libmini_static_la-linear-scan.Tpo -c -o .libs/libmini_static_la-linear-scan.o linear-scan.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-linear-scan.lo -MD -MP -MF .deps/libmini_static_la-linear-scan.Tpo -c -o .libs/libmini_static_la-linear-scan.o linear-scan.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-linear-scan.lo -MD -MP -MF .deps/libmini_static_la-linear-scan.Tpo -c -o .libs/libmini_static_la-linear-scan.o linear-scan.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-compiler.lo -MD -MP -MF .deps/libmini_static_la-aot-compiler.Tpo -c -o .libs/libmini_static_la-aot-compiler.o aot-compiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-compiler.lo -MD -MP -MF .deps/libmini_static_la-aot-compiler.Tpo -c -o .libs/libmini_static_la-aot-compiler.o aot-compiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-compiler.lo -MD -MP -MF .deps/libmini_static_la-aot-compiler.Tpo -c -o .libs/libmini_static_la-aot-compiler.o aot-compiler.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-linear-scan.lo -MD -MP -MF .deps/libmini_static_la-linear-scan.Tpo -c -o libmini_static_la-linear-scan.o linear-scan.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-linear-scan.lo -MD -MP -MF .deps/libmini_static_la-linear-scan.Tpo -c -o libmini_static_la-linear-scan.o linear-scan.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-linear-scan.lo -MD -MP -MF .deps/libmini_static_la-linear-scan.Tpo -c -o libmini_static_la-linear-scan.o linear-scan.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/linear-scan.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-runtime.lo -MD -MP -MF .deps/libmini_static_la-aot-runtime.Tpo -c -o .libs/libmini_static_la-aot-runtime.o aot-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-runtime.lo -MD -MP -MF .deps/libmini_static_la-aot-runtime.Tpo -c -o .libs/libmini_static_la-aot-runtime.o aot-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-runtime.lo -MD -MP -MF .deps/libmini_static_la-aot-runtime.Tpo -c -o .libs/libmini_static_la-aot-runtime.o aot-runtime.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-graph.lo -MD -MP -MF .deps/libmini_static_la-graph.Tpo -c -o .libs/libmini_static_la-graph.o graph.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-graph.lo -MD -MP -MF .deps/libmini_static_la-graph.Tpo -c -o .libs/libmini_static_la-graph.o graph.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-codegen.lo -MD -MP -MF .deps/libmini_static_la-mini-codegen.Tpo -c -o .libs/libmini_static_la-mini-codegen.o mini-codegen.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-graph.lo -MD -MP -MF .deps/libmini_static_la-graph.Tpo -c -o .libs/libmini_static_la-graph.o graph.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-codegen.lo -MD -MP -MF .deps/libmini_static_la-mini-codegen.Tpo -c -o .libs/libmini_static_la-mini-codegen.o mini-codegen.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-codegen.lo -MD -MP -MF .deps/libmini_static_la-mini-codegen.Tpo -c -o .libs/libmini_static_la-mini-codegen.o mini-codegen.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-graph.lo -MD -MP -MF .deps/libmini_static_la-graph.Tpo -c -o libmini_static_la-graph.o graph.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-graph.lo -MD -MP -MF .deps/libmini_static_la-graph.Tpo -c -o libmini_static_la-graph.o graph.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-graph.lo -MD -MP -MF .deps/libmini_static_la-graph.Tpo -c -o libmini_static_la-graph.o graph.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/graph.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_static_la-mini-exceptions.Tpo -c -o .libs/libmini_static_la-mini-exceptions.o mini-exceptions.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_static_la-mini-exceptions.Tpo -c -o .libs/libmini_static_la-mini-exceptions.o mini-exceptions.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_static_la-mini-exceptions.Tpo -c -o .libs/libmini_static_la-mini-exceptions.o mini-exceptions.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_static_la-mini-exceptions.Tpo -c -o libmini_static_la-mini-exceptions.o mini-exceptions.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_static_la-mini-exceptions.Tpo -c -o libmini_static_la-mini-exceptions.o mini-exceptions.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-exceptions.lo -MD -MP -MF .deps/libmini_static_la-mini-exceptions.Tpo -c -o libmini_static_la-mini-exceptions.o mini-exceptions.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-exceptions.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-codegen.lo -MD -MP -MF .deps/libmini_static_la-mini-codegen.Tpo -c -o libmini_static_la-mini-codegen.o mini-codegen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-codegen.lo -MD -MP -MF .deps/libmini_static_la-mini-codegen.Tpo -c -o libmini_static_la-mini-codegen.o mini-codegen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-codegen.lo -MD -MP -MF .deps/libmini_static_la-mini-codegen.Tpo -c -o libmini_static_la-mini-codegen.o mini-codegen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-codegen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-runtime.lo -MD -MP -MF .deps/libmini_static_la-aot-runtime.Tpo -c -o libmini_static_la-aot-runtime.o aot-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-runtime.lo -MD -MP -MF .deps/libmini_static_la-aot-runtime.Tpo -c -o libmini_static_la-aot-runtime.o aot-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-runtime.lo -MD -MP -MF .deps/libmini_static_la-aot-runtime.Tpo -c -o libmini_static_la-aot-runtime.o aot-runtime.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-runtime.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_static_la-mini-trampolines.Tpo -c -o .libs/libmini_static_la-mini-trampolines.o mini-trampolines.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_static_la-mini-trampolines.Tpo -c -o .libs/libmini_static_la-mini-trampolines.o mini-trampolines.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_static_la-mini-trampolines.Tpo -c -o .libs/libmini_static_la-mini-trampolines.o mini-trampolines.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_static_la-mini-trampolines.Tpo -c -o libmini_static_la-mini-trampolines.o mini-trampolines.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_static_la-mini-trampolines.Tpo -c -o libmini_static_la-mini-trampolines.o mini-trampolines.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-trampolines.lo -MD -MP -MF .deps/libmini_static_la-mini-trampolines.Tpo -c -o libmini_static_la-mini-trampolines.o mini-trampolines.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-trampolines.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-declsec.lo -MD -MP -MF .deps/libmini_static_la-declsec.Tpo -c -o .libs/libmini_static_la-declsec.o declsec.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-declsec.lo -MD -MP -MF .deps/libmini_static_la-declsec.Tpo -c -o .libs/libmini_static_la-declsec.o declsec.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-declsec.lo -MD -MP -MF .deps/libmini_static_la-declsec.Tpo -c -o .libs/libmini_static_la-declsec.o declsec.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-wapihandles.lo -MD -MP -MF .deps/libmini_static_la-wapihandles.Tpo -c -o .libs/libmini_static_la-wapihandles.o wapihandles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-wapihandles.lo -MD -MP -MF .deps/libmini_static_la-wapihandles.Tpo -c -o .libs/libmini_static_la-wapihandles.o wapihandles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-wapihandles.lo -MD -MP -MF .deps/libmini_static_la-wapihandles.Tpo -c -o .libs/libmini_static_la-wapihandles.o wapihandles.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-declsec.lo -MD -MP -MF .deps/libmini_static_la-declsec.Tpo -c -o libmini_static_la-declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-declsec.lo -MD -MP -MF .deps/libmini_static_la-declsec.Tpo -c -o libmini_static_la-declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-declsec.lo -MD -MP -MF .deps/libmini_static_la-declsec.Tpo -c -o libmini_static_la-declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-wapihandles.lo -MD -MP -MF .deps/libmini_static_la-wapihandles.Tpo -c -o libmini_static_la-wapihandles.o wapihandles.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-wapihandles.lo -MD -MP -MF .deps/libmini_static_la-wapihandles.Tpo -c -o libmini_static_la-wapihandles.o wapihandles.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-wapihandles.lo -MD -MP -MF .deps/libmini_static_la-wapihandles.Tpo -c -o libmini_static_la-wapihandles.o wapihandles.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/wapihandles.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-branch-opts.lo -MD -MP -MF .deps/libmini_static_la-branch-opts.Tpo -c -o .libs/libmini_static_la-branch-opts.o branch-opts.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-branch-opts.lo -MD -MP -MF .deps/libmini_static_la-branch-opts.Tpo -c -o .libs/libmini_static_la-branch-opts.o branch-opts.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_static_la-mini-generic-sharing.Tpo -c -o .libs/libmini_static_la-mini-generic-sharing.o mini-generic-sharing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-branch-opts.lo -MD -MP -MF .deps/libmini_static_la-branch-opts.Tpo -c -o .libs/libmini_static_la-branch-opts.o branch-opts.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_static_la-mini-generic-sharing.Tpo -c -o .libs/libmini_static_la-mini-generic-sharing.o mini-generic-sharing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_static_la-mini-generic-sharing.Tpo -c -o .libs/libmini_static_la-mini-generic-sharing.o mini-generic-sharing.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-compiler.lo -MD -MP -MF .deps/libmini_static_la-aot-compiler.Tpo -c -o libmini_static_la-aot-compiler.o aot-compiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-compiler.lo -MD -MP -MF .deps/libmini_static_la-aot-compiler.Tpo -c -o libmini_static_la-aot-compiler.o aot-compiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-aot-compiler.lo -MD -MP -MF .deps/libmini_static_la-aot-compiler.Tpo -c -o libmini_static_la-aot-compiler.o aot-compiler.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/aot-compiler.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-branch-opts.lo -MD -MP -MF .deps/libmini_static_la-branch-opts.Tpo -c -o libmini_static_la-branch-opts.o branch-opts.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-branch-opts.lo -MD -MP -MF .deps/libmini_static_la-branch-opts.Tpo -c -o libmini_static_la-branch-opts.o branch-opts.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc2.lo -MD -MP -MF .deps/libmini_static_la-regalloc2.Tpo -c -o .libs/libmini_static_la-regalloc2.o regalloc2.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc2.lo -MD -MP -MF .deps/libmini_static_la-regalloc2.Tpo -c -o .libs/libmini_static_la-regalloc2.o regalloc2.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-branch-opts.lo -MD -MP -MF .deps/libmini_static_la-branch-opts.Tpo -c -o libmini_static_la-branch-opts.o branch-opts.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/branch-opts.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc2.lo -MD -MP -MF .deps/libmini_static_la-regalloc2.Tpo -c -o .libs/libmini_static_la-regalloc2.o regalloc2.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tasklets.lo -MD -MP -MF .deps/libmini_static_la-tasklets.Tpo -c -o .libs/libmini_static_la-tasklets.o tasklets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tasklets.lo -MD -MP -MF .deps/libmini_static_la-tasklets.Tpo -c -o .libs/libmini_static_la-tasklets.o tasklets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tasklets.lo -MD -MP -MF .deps/libmini_static_la-tasklets.Tpo -c -o .libs/libmini_static_la-tasklets.o tasklets.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_static_la-mini-generic-sharing.Tpo -c -o libmini_static_la-mini-generic-sharing.o mini-generic-sharing.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_static_la-mini-generic-sharing.Tpo -c -o libmini_static_la-mini-generic-sharing.o mini-generic-sharing.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-generic-sharing.lo -MD -MP -MF .deps/libmini_static_la-mini-generic-sharing.Tpo -c -o libmini_static_la-mini-generic-sharing.o mini-generic-sharing.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-generic-sharing.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc2.lo -MD -MP -MF .deps/libmini_static_la-regalloc2.Tpo -c -o libmini_static_la-regalloc2.o regalloc2.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc2.lo -MD -MP -MF .deps/libmini_static_la-regalloc2.Tpo -c -o libmini_static_la-regalloc2.o regalloc2.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-regalloc2.lo -MD -MP -MF .deps/libmini_static_la-regalloc2.Tpo -c -o libmini_static_la-regalloc2.o regalloc2.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/regalloc2.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tasklets.lo -MD -MP -MF .deps/libmini_static_la-tasklets.Tpo -c -o libmini_static_la-tasklets.o tasklets.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tasklets.lo -MD -MP -MF .deps/libmini_static_la-tasklets.Tpo -c -o libmini_static_la-tasklets.o tasklets.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tasklets.lo -MD -MP -MF .deps/libmini_static_la-tasklets.Tpo -c -o libmini_static_la-tasklets.o tasklets.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tasklets.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_static_la-simd-intrinsics.Tpo -c -o .libs/libmini_static_la-simd-intrinsics.o simd-intrinsics.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_static_la-simd-intrinsics.Tpo -c -o .libs/libmini_static_la-simd-intrinsics.o simd-intrinsics.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_static_la-simd-intrinsics.Tpo -c -o .libs/libmini_static_la-simd-intrinsics.o simd-intrinsics.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-native-types.lo -MD -MP -MF .deps/libmini_static_la-mini-native-types.Tpo -c -o .libs/libmini_static_la-mini-native-types.o mini-native-types.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-native-types.lo -MD -MP -MF .deps/libmini_static_la-mini-native-types.Tpo -c -o .libs/libmini_static_la-mini-native-types.o mini-native-types.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-native-types.lo -MD -MP -MF .deps/libmini_static_la-mini-native-types.Tpo -c -o .libs/libmini_static_la-mini-native-types.o mini-native-types.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-native-types.lo -MD -MP -MF .deps/libmini_static_la-mini-native-types.Tpo -c -o libmini_static_la-mini-native-types.o mini-native-types.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-native-types.lo -MD -MP -MF .deps/libmini_static_la-mini-native-types.Tpo -c -o libmini_static_la-mini-native-types.o mini-native-types.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-native-types.lo -MD -MP -MF .deps/libmini_static_la-mini-native-types.Tpo -c -o libmini_static_la-mini-native-types.o mini-native-types.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-native-types.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-unwind.lo -MD -MP -MF .deps/libmini_static_la-unwind.Tpo -c -o .libs/libmini_static_la-unwind.o unwind.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-unwind.lo -MD -MP -MF .deps/libmini_static_la-unwind.Tpo -c -o .libs/libmini_static_la-unwind.o unwind.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-unwind.lo -MD -MP -MF .deps/libmini_static_la-unwind.Tpo -c -o .libs/libmini_static_la-unwind.o unwind.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-image-writer.lo -MD -MP -MF .deps/libmini_static_la-image-writer.Tpo -c -o .libs/libmini_static_la-image-writer.o image-writer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-image-writer.lo -MD -MP -MF .deps/libmini_static_la-image-writer.Tpo -c -o .libs/libmini_static_la-image-writer.o image-writer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-image-writer.lo -MD -MP -MF .deps/libmini_static_la-image-writer.Tpo -c -o .libs/libmini_static_la-image-writer.o image-writer.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_static_la-dwarfwriter.Tpo -c -o .libs/libmini_static_la-dwarfwriter.o dwarfwriter.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_static_la-dwarfwriter.Tpo -c -o .libs/libmini_static_la-dwarfwriter.o dwarfwriter.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_static_la-dwarfwriter.Tpo -c -o .libs/libmini_static_la-dwarfwriter.o dwarfwriter.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-image-writer.lo -MD -MP -MF .deps/libmini_static_la-image-writer.Tpo -c -o libmini_static_la-image-writer.o image-writer.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-image-writer.lo -MD -MP -MF .deps/libmini_static_la-image-writer.Tpo -c -o libmini_static_la-image-writer.o image-writer.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_static_la-simd-intrinsics.Tpo -c -o libmini_static_la-simd-intrinsics.o simd-intrinsics.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_static_la-simd-intrinsics.Tpo -c -o libmini_static_la-simd-intrinsics.o simd-intrinsics.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-image-writer.lo -MD -MP -MF .deps/libmini_static_la-image-writer.Tpo -c -o libmini_static_la-image-writer.o image-writer.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/image-writer.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-simd-intrinsics.lo -MD -MP -MF .deps/libmini_static_la-simd-intrinsics.Tpo -c -o libmini_static_la-simd-intrinsics.o simd-intrinsics.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/simd-intrinsics.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-unwind.lo -MD -MP -MF .deps/libmini_static_la-unwind.Tpo -c -o libmini_static_la-unwind.o unwind.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-unwind.lo -MD -MP -MF .deps/libmini_static_la-unwind.Tpo -c -o libmini_static_la-unwind.o unwind.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-unwind.lo -MD -MP -MF .deps/libmini_static_la-unwind.Tpo -c -o libmini_static_la-unwind.o unwind.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/unwind.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-gc.lo -MD -MP -MF .deps/libmini_static_la-mini-gc.Tpo -c -o .libs/libmini_static_la-mini-gc.o mini-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-gc.lo -MD -MP -MF .deps/libmini_static_la-mini-gc.Tpo -c -o .libs/libmini_static_la-mini-gc.o mini-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-gc.lo -MD -MP -MF .deps/libmini_static_la-mini-gc.Tpo -c -o .libs/libmini_static_la-mini-gc.o mini-gc.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-gc.lo -MD -MP -MF .deps/libmini_static_la-mini-gc.Tpo -c -o libmini_static_la-mini-gc.o mini-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-gc.lo -MD -MP -MF .deps/libmini_static_la-mini-gc.Tpo -c -o libmini_static_la-mini-gc.o mini-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-gc.lo -MD -MP -MF .deps/libmini_static_la-mini-gc.Tpo -c -o libmini_static_la-mini-gc.o mini-gc.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-gc.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debugger-agent.lo -MD -MP -MF .deps/libmini_static_la-debugger-agent.Tpo -c -o .libs/libmini_static_la-debugger-agent.o debugger-agent.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debugger-agent.lo -MD -MP -MF .deps/libmini_static_la-debugger-agent.Tpo -c -o .libs/libmini_static_la-debugger-agent.o debugger-agent.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debugger-agent.lo -MD -MP -MF .deps/libmini_static_la-debugger-agent.Tpo -c -o .libs/libmini_static_la-debugger-agent.o debugger-agent.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-xdebug.lo -MD -MP -MF .deps/libmini_static_la-xdebug.Tpo -c -o .libs/libmini_static_la-xdebug.o xdebug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-xdebug.lo -MD -MP -MF .deps/libmini_static_la-xdebug.Tpo -c -o .libs/libmini_static_la-xdebug.o xdebug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-xdebug.lo -MD -MP -MF .deps/libmini_static_la-xdebug.Tpo -c -o .libs/libmini_static_la-xdebug.o xdebug.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_static_la-dwarfwriter.Tpo -c -o libmini_static_la-dwarfwriter.o dwarfwriter.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_static_la-dwarfwriter.Tpo -c -o libmini_static_la-dwarfwriter.o dwarfwriter.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-dwarfwriter.lo -MD -MP -MF .deps/libmini_static_la-dwarfwriter.Tpo -c -o libmini_static_la-dwarfwriter.o dwarfwriter.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/dwarfwriter.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-xdebug.lo -MD -MP -MF .deps/libmini_static_la-xdebug.Tpo -c -o libmini_static_la-xdebug.o xdebug.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-alias-analysis.lo -MD -MP -MF .deps/libmini_static_la-alias-analysis.Tpo -c -o .libs/libmini_static_la-alias-analysis.o alias-analysis.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-xdebug.lo -MD -MP -MF .deps/libmini_static_la-xdebug.Tpo -c -o libmini_static_la-xdebug.o xdebug.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-alias-analysis.lo -MD -MP -MF .deps/libmini_static_la-alias-analysis.Tpo -c -o .libs/libmini_static_la-alias-analysis.o alias-analysis.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-xdebug.lo -MD -MP -MF .deps/libmini_static_la-xdebug.Tpo -c -o libmini_static_la-xdebug.o xdebug.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/xdebug.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-alias-analysis.lo -MD -MP -MF .deps/libmini_static_la-alias-analysis.Tpo -c -o .libs/libmini_static_la-alias-analysis.o alias-analysis.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_static_la-mini-cross-helpers.Tpo -c -o .libs/libmini_static_la-mini-cross-helpers.o mini-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_static_la-mini-cross-helpers.Tpo -c -o .libs/libmini_static_la-mini-cross-helpers.o mini-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-alias-analysis.lo -MD -MP -MF .deps/libmini_static_la-alias-analysis.Tpo -c -o libmini_static_la-alias-analysis.o alias-analysis.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-alias-analysis.lo -MD -MP -MF .deps/libmini_static_la-alias-analysis.Tpo -c -o libmini_static_la-alias-analysis.o alias-analysis.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_static_la-mini-cross-helpers.Tpo -c -o .libs/libmini_static_la-mini-cross-helpers.o mini-cross-helpers.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-alias-analysis.lo -MD -MP -MF .deps/libmini_static_la-alias-analysis.Tpo -c -o libmini_static_la-alias-analysis.o alias-analysis.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/alias-analysis.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_static_la-mini-cross-helpers.Tpo -c -o libmini_static_la-mini-cross-helpers.o mini-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_static_la-mini-cross-helpers.Tpo -c -o libmini_static_la-mini-cross-helpers.o mini-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-cross-helpers.lo -MD -MP -MF .deps/libmini_static_la-mini-cross-helpers.Tpo -c -o libmini_static_la-mini-cross-helpers.o mini-cross-helpers.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-cross-helpers.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-amd64.lo -MD -MP -MF .deps/libmini_static_la-mini-amd64.Tpo -c -o .libs/libmini_static_la-mini-amd64.o mini-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-amd64.lo -MD -MP -MF .deps/libmini_static_la-mini-amd64.Tpo -c -o .libs/libmini_static_la-mini-amd64.o mini-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-amd64.lo -MD -MP -MF .deps/libmini_static_la-mini-amd64.Tpo -c -o .libs/libmini_static_la-mini-amd64.o mini-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_static_la-exceptions-amd64.Tpo -c -o .libs/libmini_static_la-exceptions-amd64.o exceptions-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_static_la-exceptions-amd64.Tpo -c -o .libs/libmini_static_la-exceptions-amd64.o exceptions-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_static_la-exceptions-amd64.Tpo -c -o .libs/libmini_static_la-exceptions-amd64.o exceptions-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_static_la-tramp-amd64.Tpo -c -o .libs/libmini_static_la-tramp-amd64.o tramp-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_static_la-tramp-amd64.Tpo -c -o .libs/libmini_static_la-tramp-amd64.o tramp-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_static_la-tramp-amd64.Tpo -c -o .libs/libmini_static_la-tramp-amd64.o tramp-amd64.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_static_la-exceptions-amd64.Tpo -c -o libmini_static_la-exceptions-amd64.o exceptions-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_static_la-exceptions-amd64.Tpo -c -o libmini_static_la-exceptions-amd64.o exceptions-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-exceptions-amd64.lo -MD -MP -MF .deps/libmini_static_la-exceptions-amd64.Tpo -c -o libmini_static_la-exceptions-amd64.o exceptions-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/exceptions-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-darwin.lo -MD -MP -MF .deps/libmini_static_la-mini-darwin.Tpo -c -o .libs/libmini_static_la-mini-darwin.o mini-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-darwin.lo -MD -MP -MF .deps/libmini_static_la-mini-darwin.Tpo -c -o .libs/libmini_static_la-mini-darwin.o mini-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-darwin.lo -MD -MP -MF .deps/libmini_static_la-mini-darwin.Tpo -c -o .libs/libmini_static_la-mini-darwin.o mini-darwin.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-darwin.lo -MD -MP -MF .deps/libmini_static_la-mini-darwin.Tpo -c -o libmini_static_la-mini-darwin.o mini-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-darwin.lo -MD -MP -MF .deps/libmini_static_la-mini-darwin.Tpo -c -o libmini_static_la-mini-darwin.o mini-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-darwin.lo -MD -MP -MF .deps/libmini_static_la-mini-darwin.Tpo -c -o libmini_static_la-mini-darwin.o mini-darwin.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-darwin.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_static_la-tramp-amd64.Tpo -c -o libmini_static_la-tramp-amd64.o tramp-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_static_la-tramp-amd64.Tpo -c -o libmini_static_la-tramp-amd64.o tramp-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-tramp-amd64.lo -MD -MP -MF .deps/libmini_static_la-tramp-amd64.Tpo -c -o libmini_static_la-tramp-amd64.o tramp-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/tramp-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-posix.lo -MD -MP -MF .deps/libmini_static_la-mini-posix.Tpo -c -o .libs/libmini_static_la-mini-posix.o mini-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-posix.lo -MD -MP -MF .deps/libmini_static_la-mini-posix.Tpo -c -o .libs/libmini_static_la-mini-posix.o mini-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-posix.lo -MD -MP -MF .deps/libmini_static_la-mini-posix.Tpo -c -o .libs/libmini_static_la-mini-posix.o mini-posix.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-posix.lo -MD -MP -MF .deps/libmini_static_la-mini-posix.Tpo -c -o libmini_static_la-mini-posix.o mini-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-posix.lo -MD -MP -MF .deps/libmini_static_la-mini-posix.Tpo -c -o libmini_static_la-mini-posix.o mini-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-posix.lo -MD -MP -MF .deps/libmini_static_la-mini-posix.Tpo -c -o libmini_static_la-mini-posix.o mini-posix.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-posix.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-amd64.lo -MD -MP -MF .deps/libmini_la-mini-amd64.Tpo -c -o libmini_la-mini-amd64.o mini-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-amd64.lo -MD -MP -MF .deps/libmini_la-mini-amd64.Tpo -c -o libmini_la-mini-amd64.o mini-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-mini-amd64.lo -MD -MP -MF .deps/libmini_la-mini-amd64.Tpo -c -o libmini_la-mini-amd64.o mini-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debugger-agent.lo -MD -MP -MF .deps/libmini_static_la-debugger-agent.Tpo -c -o libmini_static_la-debugger-agent.o debugger-agent.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debugger-agent.lo -MD -MP -MF .deps/libmini_static_la-debugger-agent.Tpo -c -o libmini_static_la-debugger-agent.o debugger-agent.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-debugger-agent.lo -MD -MP -MF .deps/libmini_static_la-debugger-agent.Tpo -c -o libmini_static_la-debugger-agent.o debugger-agent.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/debugger-agent.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-method-to-ir.lo -MD -MP -MF .deps/libmini_la-method-to-ir.Tpo -c -o libmini_la-method-to-ir.o method-to-ir.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-method-to-ir.lo -MD -MP -MF .deps/libmini_la-method-to-ir.Tpo -c -o libmini_la-method-to-ir.o method-to-ir.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_la-method-to-ir.lo -MD -MP -MF .deps/libmini_la-method-to-ir.Tpo -c -o libmini_la-method-to-ir.o method-to-ir.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-method-to-ir.lo -MD -MP -MF .deps/libmini_static_la-method-to-ir.Tpo -c -o libmini_static_la-method-to-ir.o method-to-ir.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-method-to-ir.lo -MD -MP -MF .deps/libmini_static_la-method-to-ir.Tpo -c -o libmini_static_la-method-to-ir.o method-to-ir.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-method-to-ir.lo -MD -MP -MF .deps/libmini_static_la-method-to-ir.Tpo -c -o libmini_static_la-method-to-ir.o method-to-ir.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/method-to-ir.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-amd64.lo -MD -MP -MF .deps/libmini_static_la-mini-amd64.Tpo -c -o libmini_static_la-mini-amd64.o mini-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-amd64.lo -MD -MP -MF .deps/libmini_static_la-mini-amd64.Tpo -c -o libmini_static_la-mini-amd64.o mini-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libmini_static_la-mini-amd64.lo -MD -MP -MF .deps/libmini_static_la-mini-amd64.Tpo -c -o libmini_static_la-mini-amd64.o mini-amd64.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/mini-amd64.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono_boehm-main.o -MD -MP -MF .deps/mono_boehm-main.Tpo -c -o mono_boehm-main.o main.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/main.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono_sgen-main-sgen.o -MD -MP -MF .deps/mono_sgen-main-sgen.Tpo -c -o mono_sgen-main-sgen.o main-sgen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/main-sgen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono_boehm-main.o -MD -MP -MF .deps/mono_boehm-main.Tpo -c -o mono_boehm-main.o main.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/main.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono_sgen-main-sgen.o -MD -MP -MF .deps/mono_sgen-main-sgen.Tpo -c -o mono_sgen-main-sgen.o main-sgen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/main-sgen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono_boehm-main.o -MD -MP -MF .deps/mono_boehm-main.Tpo -c -o mono_boehm-main.o main.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/main.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/mini",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../libgc/include -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -I../.. -I../../eglib/src -I../../eglib/src -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono_sgen-main-sgen.o -MD -MP -MF .deps/mono_sgen-main-sgen.Tpo -c -o mono_sgen-main-sgen.o main-sgen.c",
+  "file": "/Users/joao/Dev/mono3/mono/mini/main-sgen.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT get.o -MD -MP -MF .deps/get.Tpo -c -o get.o get.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/get.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dis-cil.o -MD -MP -MF .deps/dis-cil.Tpo -c -o dis-cil.o dis-cil.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/dis-cil.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT util.o -MD -MP -MF .deps/util.Tpo -c -o util.o util.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/util.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dump.o -MD -MP -MF .deps/dump.Tpo -c -o dump.o dump.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/dump.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/main.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT get.o -MD -MP -MF .deps/get.Tpo -c -o get.o get.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/get.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT declsec.o -MD -MP -MF .deps/declsec.Tpo -c -o declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dis-cil.o -MD -MP -MF .deps/dis-cil.Tpo -c -o dis-cil.o dis-cil.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/dis-cil.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT util.o -MD -MP -MF .deps/util.Tpo -c -o util.o util.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/util.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dump.o -MD -MP -MF .deps/dump.Tpo -c -o dump.o dump.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/dump.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/main.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT declsec.o -MD -MP -MF .deps/declsec.Tpo -c -o declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT get.o -MD -MP -MF .deps/get.Tpo -c -o get.o get.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/get.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dis-cil.o -MD -MP -MF .deps/dis-cil.Tpo -c -o dis-cil.o dis-cil.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/dis-cil.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT util.o -MD -MP -MF .deps/util.Tpo -c -o util.o util.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/util.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT dump.o -MD -MP -MF .deps/dump.Tpo -c -o dump.o dump.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/dump.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/main.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/dis",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../.. -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT declsec.o -MD -MP -MF .deps/declsec.Tpo -c -o declsec.o declsec.c",
+  "file": "/Users/joao/Dev/mono3/mono/dis/declsec.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/tests",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libtest_la-libtest.lo -MD -MP -MF .deps/libtest_la-libtest.Tpo -c -o .libs/libtest_la-libtest.o libtest.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/tests/libtest.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libtest_la-libtest.lo -MD -MP -MF .deps/libtest_la-libtest.Tpo -c -o .libs/libtest_la-libtest.o libtest.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/tests/libtest.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libtest_la-libtest.lo -MD -MP -MF .deps/libtest_la-libtest.Tpo -c -o .libs/libtest_la-libtest.o libtest.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/tests/libtest.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/tests",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libtest_la-libtest.lo -MD -MP -MF .deps/libtest_la-libtest.Tpo -c -o libtest_la-libtest.o libtest.c",
+  "file": "/Users/joao/Dev/mono3/mono/tests/libtest.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libtest_la-libtest.lo -MD -MP -MF .deps/libtest_la-libtest.Tpo -c -o libtest_la-libtest.o libtest.c",
+  "file": "/Users/joao/Dev/mono3/mono/tests/libtest.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../../eglib/src -I../../eglib/src -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT libtest_la-libtest.lo -MD -MP -MF .deps/libtest_la-libtest.Tpo -c -o libtest_la-libtest.o libtest.c",
+  "file": "/Users/joao/Dev/mono3/mono/tests/libtest.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_sgen_qsort-test-sgen-qsort.o -MD -MP -MF .deps/test_sgen_qsort-test-sgen-qsort.Tpo -c -o test_sgen_qsort-test-sgen-qsort.o test-sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_gc_memfuncs-test-gc-memfuncs.o -MD -MP -MF .deps/test_gc_memfuncs-test-gc-memfuncs.Tpo -c -o test_gc_memfuncs-test-gc-memfuncs.o test-gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_mono_linked_list_set-test-mono-linked-list-set.o -MD -MP -MF .deps/test_mono_linked_list_set-test-mono-linked-list-set.Tpo -c -o test_mono_linked_list_set-test-mono-linked-list-set.o test-mono-linked-list-set.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_conc_hashtable-test-conc-hashtable.o -MD -MP -MF .deps/test_conc_hashtable-test-conc-hashtable.Tpo -c -o test_conc_hashtable-test-conc-hashtable.o test-conc-hashtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_sgen_qsort-test-sgen-qsort.o -MD -MP -MF .deps/test_sgen_qsort-test-sgen-qsort.Tpo -c -o test_sgen_qsort-test-sgen-qsort.o test-sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_gc_memfuncs-test-gc-memfuncs.o -MD -MP -MF .deps/test_gc_memfuncs-test-gc-memfuncs.Tpo -c -o test_gc_memfuncs-test-gc-memfuncs.o test-gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_mono_linked_list_set-test-mono-linked-list-set.o -MD -MP -MF .deps/test_mono_linked_list_set-test-mono-linked-list-set.Tpo -c -o test_mono_linked_list_set-test-mono-linked-list-set.o test-mono-linked-list-set.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_conc_hashtable-test-conc-hashtable.o -MD -MP -MF .deps/test_conc_hashtable-test-conc-hashtable.Tpo -c -o test_conc_hashtable-test-conc-hashtable.o test-conc-hashtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_gc_memfuncs-test-gc-memfuncs.o -MD -MP -MF .deps/test_gc_memfuncs-test-gc-memfuncs.Tpo -c -o test_gc_memfuncs-test-gc-memfuncs.o test-gc-memfuncs.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-gc-memfuncs.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_mono_linked_list_set-test-mono-linked-list-set.o -MD -MP -MF .deps/test_mono_linked_list_set-test-mono-linked-list-set.Tpo -c -o test_mono_linked_list_set-test-mono-linked-list-set.o test-mono-linked-list-set.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-mono-linked-list-set.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_sgen_qsort-test-sgen-qsort.o -MD -MP -MF .deps/test_sgen_qsort-test-sgen-qsort.Tpo -c -o test_sgen_qsort-test-sgen-qsort.o test-sgen-qsort.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-sgen-qsort.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/unit-tests",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mono -I../../libgc/include -I../../eglib/src -I../../eglib/src -DMONO_BINDIR=\\\"/Users/joao/Dev/mono3/build/bin/\\\" -DMONO_ASSEMBLIES=\\\"\\\" -DMONO_CFG_DIR=\\\"\\\" -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT test_conc_hashtable-test-conc-hashtable.o -MD -MP -MF .deps/test_conc_hashtable-test-conc-hashtable.Tpo -c -o test_conc_hashtable-test-conc-hashtable.o test-conc-hashtable.c",
+  "file": "/Users/joao/Dev/mono3/mono/unit-tests/test-conc-hashtable.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-aot.lo -MD -MP -MF .deps/mono-profiler-aot.Tpo -c -o .libs/mono-profiler-aot.o mono-profiler-aot.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-aot.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT decode.o -MD -MP -MF .deps/decode.Tpo -c -o decode.o decode.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/decode.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-aot.lo -MD -MP -MF .deps/mono-profiler-aot.Tpo -c -o .libs/mono-profiler-aot.o mono-profiler-aot.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-aot.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-iomap.lo -MD -MP -MF .deps/mono-profiler-iomap.Tpo -c -o .libs/mono-profiler-iomap.o mono-profiler-iomap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-iomap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT decode.o -MD -MP -MF .deps/decode.Tpo -c -o decode.o decode.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/decode.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-iomap.lo -MD -MP -MF .deps/mono-profiler-iomap.Tpo -c -o .libs/mono-profiler-iomap.o mono-profiler-iomap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-iomap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT proflog.lo -MD -MP -MF .deps/proflog.Tpo -c -o .libs/proflog.o proflog.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/proflog.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-aot.lo -MD -MP -MF .deps/mono-profiler-aot.Tpo -c -o .libs/mono-profiler-aot.o mono-profiler-aot.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-aot.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT proflog.lo -MD -MP -MF .deps/proflog.Tpo -c -o .libs/proflog.o proflog.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/proflog.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT decode.o -MD -MP -MF .deps/decode.Tpo -c -o decode.o decode.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/decode.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-iomap.lo -MD -MP -MF .deps/mono-profiler-iomap.Tpo -c -o .libs/mono-profiler-iomap.o mono-profiler-iomap.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-iomap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT proflog.lo -MD -MP -MF .deps/proflog.Tpo -c -o .libs/proflog.o proflog.c -fPIC -DPIC",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/proflog.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-aot.lo -MD -MP -MF .deps/mono-profiler-aot.Tpo -c -o mono-profiler-aot.o mono-profiler-aot.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-aot.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-aot.lo -MD -MP -MF .deps/mono-profiler-aot.Tpo -c -o mono-profiler-aot.o mono-profiler-aot.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-aot.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-aot.lo -MD -MP -MF .deps/mono-profiler-aot.Tpo -c -o mono-profiler-aot.o mono-profiler-aot.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-aot.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-iomap.lo -MD -MP -MF .deps/mono-profiler-iomap.Tpo -c -o mono-profiler-iomap.o mono-profiler-iomap.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-iomap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-iomap.lo -MD -MP -MF .deps/mono-profiler-iomap.Tpo -c -o mono-profiler-iomap.o mono-profiler-iomap.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-iomap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT mono-profiler-iomap.lo -MD -MP -MF .deps/mono-profiler-iomap.Tpo -c -o mono-profiler-iomap.o mono-profiler-iomap.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/mono-profiler-iomap.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT proflog.lo -MD -MP -MF .deps/proflog.Tpo -c -o proflog.o proflog.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/proflog.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/usr/bin/gcc -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT proflog.lo -MD -MP -MF .deps/proflog.Tpo -c -o proflog.o proflog.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/proflog.c"
+}
+,
+{
+  "directory": "/Users/joao/Dev/mono3/mono/profiler",
+  "command": "/Applications/Xcode61.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -DHAVE_CONFIG_H -I. -I../.. -fexceptions -DMONO_USE_EXC_TABLES -I../.. -I../../eglib/src -I../../eglib/src -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -g -O2 -std=gnu99 -fno-strict-aliasing -fwrapv -DMONO_DLL_EXPORT -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value -Qunused-arguments -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Werror-implicit-function-declaration -MT proflog.lo -MD -MP -MF .deps/proflog.Tpo -c -o proflog.o proflog.c",
+  "file": "/Users/joao/Dev/mono3/mono/profiler/proflog.c"
+}
+]
diff --git a/tools/checker/premake5.lua b/tools/checker/premake5.lua
new file mode 100644 (file)
index 0000000..9b826c9
--- /dev/null
@@ -0,0 +1,23 @@
+local CPPSHARP_DIR = "CppSharp/"
+local NEWTONSOFT_DIR = "Newtonsoft.Json.6.0.8/lib/net45/",
+
+solution "MonoChecker"
+
+  configurations { "Debug", "Release" }
+  platforms { "x32", "x64" }
+  flags { "Symbols" }
+
+  project "MonoChecker"
+
+    kind  "ConsoleApp"
+    language "C#"
+
+    files { "*.cs" }
+    links
+    {
+      CPPSHARP_DIR .. "CppSharp",
+      CPPSHARP_DIR .. "CppSharp.AST",
+      CPPSHARP_DIR .. "CppSharp.Parser.CSharp",
+      CPPSHARP_DIR .. "CppSharp.Generator",
+      NEWTONSOFT_DIR .. "Newtonsoft.Json.dll"
+    }
index ae3b4227979f47da5725d936d1018ff8738123e0..761b695c61b128f595ab309bb0e69adfdfeb872d 100644 (file)
@@ -8,7 +8,7 @@
 #define SGEN_BINARY_PROTOCOL
 #define MONO_INTERNAL
 
-#include <mono/metadata/sgen-protocol.h>
+#include <mono/sgen/sgen-protocol.h>
 
 #define SGEN_PROTOCOL_EOF      255
 
@@ -122,7 +122,7 @@ read_entry (EntryStream *stream, void *data)
 #define END_PROTOCOL_ENTRY
 #define END_PROTOCOL_ENTRY_HEAVY
 
-#include <mono/metadata/sgen-protocol-def.h>
+#include <mono/sgen/sgen-protocol-def.h>
 
        default: assert (0);
        }
@@ -182,7 +182,7 @@ is_always_match (int type)
 #define END_PROTOCOL_ENTRY
 #define END_PROTOCOL_ENTRY_HEAVY
 
-#include <mono/metadata/sgen-protocol-def.h>
+#include <mono/sgen/sgen-protocol-def.h>
 
        default: assert (0);
        }
@@ -207,6 +207,7 @@ typedef struct {
 #define TYPE_LONGLONG 1
 #define TYPE_SIZE 2
 #define TYPE_POINTER 3
+#define TYPE_BOOL 4
 
 static void
 print_entry_content (int entries_size, PrintEntry *entries, gboolean color_output)
@@ -230,6 +231,9 @@ print_entry_content (int entries_size, PrintEntry *entries, gboolean color_outpu
                case TYPE_POINTER:
                        printf ("%p", *(gpointer*) entries [i].data);
                        break;
+               case TYPE_BOOL:
+                       printf ("%s", *(gboolean*) entries [i].data ? "true" : "false");
+                       break;
                default:
                        assert (0);
                }
@@ -416,7 +420,7 @@ print_entry (int type, void *data, int num_nums, int *match_indices, gboolean co
 #define END_PROTOCOL_ENTRY_HEAVY \
        END_PROTOCOL_ENTRY
 
-#include <mono/metadata/sgen-protocol-def.h>
+#include <mono/sgen/sgen-protocol-def.h>
 
        default: assert (0);
        }
@@ -499,7 +503,7 @@ match_index (gpointer ptr, int type, void *data)
 #define END_PROTOCOL_ENTRY_HEAVY \
        END_PROTOCOL_ENTRY
 
-#include <mono/metadata/sgen-protocol-def.h>
+#include <mono/sgen/sgen-protocol-def.h>
 
        default: assert (0);
        }
@@ -562,7 +566,7 @@ is_vtable_match (gpointer ptr, int type, void *data)
 #define END_PROTOCOL_ENTRY_HEAVY \
        END_PROTOCOL_ENTRY
 
-#include <mono/metadata/sgen-protocol-def.h>
+#include <mono/sgen/sgen-protocol-def.h>
 
        default: assert (0);
        }
@@ -615,6 +619,29 @@ main (int argc, char *argv[])
                } else if (!strcmp (arg, "-i") || !strcmp (arg, "--input")) {
                        input_path = next_arg;
                        ++i;
+               } else if (!strcmp (arg, "--help")) {
+                       printf (
+                               "\n"
+                               "Usage:\n"
+                               "\n"
+                               "\tsgen-grep-binprot [options] [pointer...]\n"
+                               "\n"
+                               "Examples:\n"
+                               "\n"
+                               "\tsgen-grep-binprot --all </tmp/binprot\n"
+                               "\tsgen-grep-binprot --input /tmp/binprot --color 0xdeadbeef\n"
+                               "\n"
+                               "Options:\n"
+                               "\n"
+                               "\t--all                    Print all entries.\n"
+                               "\t--color, -c              Highlight matches in color.\n"
+                               "\t--help                   You're looking at it.\n"
+                               "\t--input FILE, -i FILE    Read input from FILE instead of standard input.\n"
+                               "\t--pause-times            Print GC pause times.\n"
+                               "\t--start-at N, -s N       Begin filtering at the Nth entry.\n"
+                               "\t--vtable PTR, -v PTR     Search for vtable pointer PTR.\n"
+                               "\n");
+                       return 0;
                } else {
                        nums [num_nums++] = strtoul (arg, NULL, 16);
                }
index f57e57b76ac0cae6e6c5bd6234ce03caaceab44c..1b3d494ebf663081cc845031560afa56ff892066 100644 (file)
@@ -16,9 +16,9 @@
 #error Unknown architecture
 #endif
 
-#if _WIN32_WINNT < 0x0502
-#error "Mono requires WinXP SP2 or later"
-#endif /* _WIN32_WINNT < 0x0502 */
+#if _WIN32_WINNT < 0x0600
+#error "Mono requires Windows Vista or later"
+#endif /* _WIN32_WINNT < 0x0600 */
 
 /*
  * Features that are not required in the Windows port
 /* #undef HAVE_INET_ATON */
 
 /* Define to 1 if you have the `inet_pton' function. */
-/* #undef HAVE_INET_PTON */
+#define HAVE_INET_PTON 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #define HAVE_INTTYPES_H 1